From b6d4e95ec9573857bc3a936a1ab86e2d4c5e3c83 Mon Sep 17 00:00:00 2001 From: George Paton Date: Sat, 1 Feb 2025 19:35:46 +1100 Subject: [PATCH 01/64] bedrock ore grade filters! --- .../com/hbm/inventory/gui/GUIAutocrafter.java | 12 ++------ .../hbm/inventory/gui/GUICounterTorch.java | 12 ++------ .../hbm/inventory/gui/GUICraneExtractor.java | 12 ++------ .../hbm/inventory/gui/GUICraneGrabber.java | 12 ++------ .../com/hbm/inventory/gui/GUICraneRouter.java | 11 +------ .../hbm/inventory/gui/GUIDroneRequester.java | 12 ++------ .../hbm/inventory/gui/GUIMachineCustom.java | 12 ++------ .../com/hbm/module/ModulePatternMatcher.java | 29 +++++++++++++++++-- 8 files changed, 40 insertions(+), 72 deletions(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java b/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java index 49ed13445..cc26020ab 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAutocrafter.java @@ -7,6 +7,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.interfaces.NotableComments; import com.hbm.inventory.container.ContainerAutocrafter; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.machine.TileEntityMachineAutocrafter; import net.minecraft.client.Minecraft; @@ -41,16 +42,7 @@ public class GUIAutocrafter extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && diFurnace.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(diFurnace.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + diFurnace.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(diFurnace.matcher.modes[i]) }), x, y - 30); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java index 6a066a684..8a27e27cf 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java +++ b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java @@ -7,6 +7,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCounterTorch; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityRadioTorchCounter; @@ -72,16 +73,7 @@ public class GUICounterTorch extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && counter.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(counter.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + counter.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(counter.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java index 7e8f74ab0..18cd12019 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java @@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneExtractor; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneExtractor; @@ -41,16 +42,7 @@ public class GUICraneExtractor extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && ejector.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(ejector.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + ejector.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(ejector.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java index 6bff412fc..641f7eba9 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java @@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerCraneGrabber; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toserver.NBTControlPacket; import com.hbm.tileentity.network.TileEntityCraneGrabber; @@ -41,16 +42,7 @@ public class GUICraneGrabber extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && grabber.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(grabber.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + grabber.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(grabber.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java index 77798355b..55b2648b5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java @@ -83,16 +83,7 @@ public class GUICraneRouter extends GuiInfoContainer { int index = i % 5; if(this.isMouseOverSlot(slot, x, y) && matcher.modes[index] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(matcher.modes[index]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + matcher.modes[index]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label}), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(matcher.modes[i])}), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java index 4fec012e5..9010e1ce6 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java +++ b/src/main/java/com/hbm/inventory/gui/GUIDroneRequester.java @@ -6,6 +6,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerDroneRequester; import com.hbm.lib.RefStrings; +import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.network.TileEntityDroneRequester; import net.minecraft.client.Minecraft; @@ -37,16 +38,7 @@ public class GUIDroneRequester extends GuiInfoContainer { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); if(this.isMouseOverSlot(slot, x, y) && diFurnace.matcher.modes[i] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(diFurnace.matcher.modes[i]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + diFurnace.matcher.modes[i]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(diFurnace.matcher.modes[i]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java index 2a02cd763..d106f3717 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java @@ -10,6 +10,7 @@ import com.hbm.inventory.SlotPattern; import com.hbm.inventory.container.ContainerMachineCustom; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; +import com.hbm.module.ModulePatternMatcher; import com.hbm.tileentity.machine.TileEntityCustomMachine; import net.minecraft.client.Minecraft; @@ -44,16 +45,7 @@ public class GUIMachineCustom extends GuiInfoContainer { int tileIndex = slot.getSlotIndex(); if(this.isMouseOverSlot(slot, x, y) && slot instanceof SlotPattern && custom.matcher.modes[tileIndex - 10] != null) { - - String label = EnumChatFormatting.YELLOW + ""; - - switch(custom.matcher.modes[tileIndex - 10]) { - case "exact": label += "Item and meta match"; break; - case "wildcard": label += "Item matches"; break; - default: label += "Ore dict key matches: " + custom.matcher.modes[tileIndex - 10]; break; - } - - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", label }), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(custom.matcher.modes[tileIndex - 10]) }), x, y - 30); } } } diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index 279a2c1e9..61c7e245c 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -2,18 +2,21 @@ package com.hbm.module; import java.util.List; +import com.hbm.items.special.ItemBedrockOreNew; import com.hbm.util.BufferUtil; import com.hbm.util.ItemStackUtil; import io.netty.buffer.ByteBuf; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class ModulePatternMatcher { public static final String MODE_EXACT = "exact"; public static final String MODE_WILDCARD = "wildcard"; + public static final String MODE_BEDROCK = "bedrock"; public String[] modes; public ModulePatternMatcher() { @@ -68,8 +71,10 @@ public class ModulePatternMatcher { modes[i] = null; return; } - - if(stack.getHasSubtypes()) { + + if(stack.getItem() instanceof ItemBedrockOreNew) { + modes[i] = MODE_BEDROCK; + } else if(stack.getHasSubtypes()) { modes[i] = MODE_EXACT; } else { modes[i] = MODE_WILDCARD; @@ -88,6 +93,12 @@ public class ModulePatternMatcher { if(modes[i] == null) { modes[i] = MODE_EXACT; } else if(MODE_EXACT.equals(modes[i])) { + if(pattern.getItem() instanceof ItemBedrockOreNew) { + modes[i] = MODE_BEDROCK; + } else { + modes[i] = MODE_WILDCARD; + } + } else if(MODE_BEDROCK.equals(modes[i])) { modes[i] = MODE_WILDCARD; } else if(MODE_WILDCARD.equals(modes[i])) { @@ -128,6 +139,10 @@ public class ModulePatternMatcher { switch(mode) { case MODE_EXACT: return input.isItemEqual(filter) && ItemStack.areItemStackTagsEqual(input, filter); case MODE_WILDCARD: return input.getItem() == filter.getItem() && ItemStack.areItemStackTagsEqual(input, filter); + case MODE_BEDROCK: + if(input.getItem() != filter.getItem()) return false; + if(!(input.getItem() instanceof ItemBedrockOreNew)) return false; + return ((ItemBedrockOreNew)input.getItem()).getGrade(input.getItemDamage()) == ((ItemBedrockOreNew)filter.getItem()).getGrade(filter.getItemDamage()); default: List keys = ItemStackUtil.getOreDictNames(input); return keys.contains(mode); @@ -165,4 +180,14 @@ public class ModulePatternMatcher { modes[i] = BufferUtil.readString(buf); } } + + public static String getLabel(String mode) { + switch(mode) { + case MODE_EXACT: return EnumChatFormatting.YELLOW + "Item and meta match"; + case MODE_WILDCARD: return EnumChatFormatting.YELLOW + "Item matches"; + case MODE_BEDROCK: return EnumChatFormatting.YELLOW + "Item and bedrock grade match"; + default: return EnumChatFormatting.YELLOW + "Ore dict key matches: " + mode; + } + } + } From c4e973dc0301b1d2097216cfb35195560007ee9a Mon Sep 17 00:00:00 2001 From: George Paton Date: Sat, 1 Feb 2025 20:00:24 +1100 Subject: [PATCH 02/64] oops: fix sorter filter crash --- src/main/java/com/hbm/inventory/gui/GUICraneRouter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java index 55b2648b5..657a09736 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneRouter.java @@ -83,7 +83,7 @@ public class GUICraneRouter extends GuiInfoContainer { int index = i % 5; if(this.isMouseOverSlot(slot, x, y) && matcher.modes[index] != null) { - this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(matcher.modes[i])}), x, y - 30); + this.func_146283_a(Arrays.asList(new String[] { EnumChatFormatting.RED + "Right click to change", ModulePatternMatcher.getLabel(matcher.modes[index])}), x, y - 30); } } } From 6d920ce91dbeae01921bcd9ae8d84f8fc0ba0e36 Mon Sep 17 00:00:00 2001 From: George Paton Date: Sat, 1 Feb 2025 20:02:21 +1100 Subject: [PATCH 03/64] sorters default to bedrock sorting now too --- src/main/java/com/hbm/module/ModulePatternMatcher.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/module/ModulePatternMatcher.java b/src/main/java/com/hbm/module/ModulePatternMatcher.java index 61c7e245c..ecde925fa 100644 --- a/src/main/java/com/hbm/module/ModulePatternMatcher.java +++ b/src/main/java/com/hbm/module/ModulePatternMatcher.java @@ -44,7 +44,9 @@ public class ModulePatternMatcher { if(iterateAndCheck(names, i ,"nugget")) return; if(iterateAndCheck(names, i ,"plate")) return; - if(stack.getHasSubtypes()) { + if(stack.getItem() instanceof ItemBedrockOreNew) { + modes[i] = MODE_BEDROCK; + } else if(stack.getHasSubtypes()) { modes[i] = MODE_EXACT; } else { modes[i] = MODE_WILDCARD; From 18af9680735259c29d286c9dd1895b7a452a9402 Mon Sep 17 00:00:00 2001 From: George Paton Date: Sat, 1 Feb 2025 20:21:46 +1100 Subject: [PATCH 04/64] updated boble --- .../com/hbm/blocks/generic/BlockBobble.java | 2 +- .../hbm/render/tileentity/RenderBobble.java | 21 ++++++++++++------ .../models/trinkets/mellowrpg8_glow.png | Bin 0 -> 14747 bytes 3 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/trinkets/mellowrpg8_glow.png diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index 5e5226e6f..df5d158ea 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -200,7 +200,7 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), MICROWAVE( "Microwave", "Microwave", "OC Compatibility and massive RBMK/packet optimizations", "they call me the food heater$john optimization", true, ScrapType.BOARD_CONVERTER), PEEP( "Peep", "LePeeperSauvage", "Coilgun, Leadburster and Congo Lake models, BDCL QC", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CARD_BOARD), - MELLOW( "MELLOWARPEGGIATION", "Mellow", "Industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR); + MELLOW( "MELLOWARPEGGIATION", "Mellow", "NBT Structures, industrial lighting, animation tools", "Make something cool now, ask for permission later.", true, ScrapType.CARD_PROCESSOR); public String name; //the title of the tooltip public String label; //the name engraved in the socket diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index d5039e39b..08dfa1283 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -49,9 +49,14 @@ public class RenderBobble extends TileEntitySpecialRenderer { public static final ResourceLocation bobble_microwave = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/microwave.png"); public static final ResourceLocation bobble_peep = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/peep.png"); public static final ResourceLocation bobble_mellow = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/mellowrpg8.png"); + public static final ResourceLocation bobble_mellow_glow = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/mellowrpg8_glow.png"); + + private long time; @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { + time = System.currentTimeMillis(); + GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); @@ -288,8 +293,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(0, 1.75, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed) * amplitude, 1, 0, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); + GL11.glRotated(Math.sin(time * speed) * amplitude, 1, 0, 0); + GL11.glRotated(Math.sin(time * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); GL11.glRotated(rotHead[0], 1, 0, 0); GL11.glRotated(rotHead[1], 0, 1, 0); @@ -342,7 +347,7 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glAlphaFunc(GL11.GL_GREATER, 0); OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float) Math.sin(System.currentTimeMillis() * 0.001D) * 0.05F); + GL11.glColor4f(1.0F, 1.0F, 0.0F, 0.1F + (float) Math.sin(time * 0.001D) * 0.05F); bobble.renderPart("PelletShine"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -365,8 +370,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glTranslated(0, 0.75, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed) * amplitude, 1, 0, 0); - GL11.glRotated(Math.sin(System.currentTimeMillis() * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); + GL11.glRotated(Math.sin(time * speed) * amplitude, 1, 0, 0); + GL11.glRotated(Math.sin(time * speed + (Math.PI * 0.5)) * amplitude, 0, 0, 1); GL11.glTranslated(0, -0.75, 0); GL11.glDisable(GL11.GL_CULL_FACE); @@ -452,11 +457,13 @@ public class RenderBobble extends TileEntitySpecialRenderer { //shotgun.renderDud(0.0625F); break; case MELLOW: + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + bindTexture(bobble_mellow_glow); + renderGuy(type); GL11.glEnable(GL11.GL_BLEND); GL11.glAlphaFunc(GL11.GL_GREATER, 0); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); - GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); - OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); this.bindTexture(lamp); bobble.renderPart("Fluoro"); this.bindTexture(glow); diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/mellowrpg8_glow.png b/src/main/resources/assets/hbm/textures/models/trinkets/mellowrpg8_glow.png new file mode 100644 index 0000000000000000000000000000000000000000..84a06adcf3a4d212c961a9546487bee719b017ff GIT binary patch literal 14747 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 PCxE=Pid3b9+1vjEzlDNY literal 0 HcmV?d00001 From a581cb74d0b6ba6eda7ce8aa62fdc9f3cf1ede09 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 3 Feb 2025 10:38:47 +1100 Subject: [PATCH 05/64] Refueling Station! Refuels armor, attached armor mods, and any held items! Now Black Mesa themed! --- src/main/java/com/hbm/blocks/ModBlocks.java | 3 + .../com/hbm/blocks/machine/BlockRefueler.java | 101 ++ src/main/java/com/hbm/main/ClientProxy.java | 17 + .../java/com/hbm/main/CraftingManager.java | 2 + .../java/com/hbm/main/ResourceManager.java | 2 + .../hbm/render/tileentity/RenderRefueler.java | 103 ++ .../java/com/hbm/tileentity/TileMappings.java | 1 + .../machine/TileEntityRefueler.java | 157 +++ src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/models/blocks/refueler.obj | 1100 +++++++++++++++++ .../hbm/textures/models/machines/refueler.png | Bin 0 -> 4920 bytes 11 files changed, 1487 insertions(+) create mode 100644 src/main/java/com/hbm/blocks/machine/BlockRefueler.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderRefueler.java create mode 100644 src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java create mode 100644 src/main/resources/assets/hbm/models/blocks/refueler.obj create mode 100644 src/main/resources/assets/hbm/textures/models/machines/refueler.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c428d8ae0..c80573666 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -603,6 +603,7 @@ public class ModBlocks { public static Block spikes; public static Block charger; + public static Block refueler; public static Block tesla; @@ -2068,6 +2069,7 @@ public class ModBlocks { spikes = new Spikes(Material.iron).setBlockName("spikes").setHardness(2.5F).setResistance(5.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":spikes"); charger = new Charger(Material.iron).setBlockName("charger").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + refueler = new BlockRefueler(Material.iron).setBlockName("refueler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); @@ -2709,6 +2711,7 @@ public class ModBlocks { //Charger GameRegistry.registerBlock(charger, charger.getUnlocalizedName()); + GameRegistry.registerBlock(refueler, refueler.getUnlocalizedName()); //GameRegistry.registerBlock(floodlight, floodlight.getUnlocalizedName()); //Decoration Blocks diff --git a/src/main/java/com/hbm/blocks/machine/BlockRefueler.java b/src/main/java/com/hbm/blocks/machine/BlockRefueler.java new file mode 100644 index 000000000..543e8963d --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockRefueler.java @@ -0,0 +1,101 @@ +package com.hbm.blocks.machine; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityRefueler; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockRefueler extends BlockContainer { + + public BlockRefueler(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRefueler(); + } + + @Override + public int getRenderType() { + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + if(!world.isRemote && !player.isSneaking()) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof IItemFluidIdentifier) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityRefueler)) + return false; + + TileEntityRefueler refueler = (TileEntityRefueler) te; + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, x, y, z, player.getHeldItem()); + refueler.tank.setTankType(type); + refueler.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation(type.getConditionalName())).appendSibling(new ChatComponentText("!"))); + + return true; + } + + return false; + } else { + return true; + } + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + float f = 0.0625F; + + switch(world.getBlockMetadata(x, y, z)) { + case 2: this.setBlockBounds(0F, 0F, 12 * f, 1F, 1F, 1F); break; + case 3: this.setBlockBounds(0F, 0F, 0F, 1F, 1F, 4 * f); break; + case 4: this.setBlockBounds(12 * f, 0F, 0F, 1F, 1F, 1F); break; + case 5: this.setBlockBounds(0F, 0F, 0F, 4 * f, 1F, 1F); break; + default: this.setBlockBounds(0F, 0F, 0F, 1F, 1F, 1F); break; + } + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBoundsBasedOnState(world, x, y, z); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 04feaf810..95534ecbc 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -376,6 +376,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySubstation.class, new RenderSubstation()); //chargers ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCharger.class, new RenderCharger()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRefueler.class, new RenderRefueler()); //DecoContainer ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFileCabinet.class, new RenderFileCabinet()); //multiblocks @@ -1725,6 +1726,22 @@ public class ClientProxy extends ServerProxy { } } + if("fluidfill".equals(type)) { + double mX = data.getDouble("mX"); + double mY = data.getDouble("mY"); + double mZ = data.getDouble("mZ"); + + EntityFX fx = new net.minecraft.client.particle.EntityCritFX(world, x, y, z, mX, mY, mZ); + fx.nextTextureIndexX(); + + if(data.hasKey("color")) { + Color color = new Color(data.getInteger("color")); + fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + } + + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + } + if("deadleaf".equals(type)) { if(particleSetting == 0 || (particleSetting == 1 && rand.nextBoolean())) Minecraft.getMinecraft().effectRenderer.addEffect(new ParticleDeadLeaf(man, world, x, y, z)); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 7b59c3c46..aec7ef876 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -11,6 +11,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.crafting.*; import com.hbm.crafting.handlers.*; import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; @@ -913,6 +914,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.charger), new Object[] { "G", "S", "C", 'G', Items.glowstone_dust, 'S', STEEL.ingot(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModBlocks.charger, 16), new Object[] { "G", "S", "C", 'G', Blocks.glowstone, 'S', STEEL.block(), 'C', ModItems.coil_copper_torus }); + addRecipeAuto(new ItemStack(ModBlocks.refueler), new Object[] { "SS", "HC", "SS", 'S', TI.plate(), 'H', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_HYDRAULIC), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC) }); addRecipeAuto(new ItemStack(ModBlocks.press_preheater), new Object[] { "CCC", "SLS", "TST", 'C', CU.plate(), 'S', Blocks.stone, 'L', Fluids.LAVA.getDict(1000), 'T', W.ingot() }); addRecipeAuto(new ItemStack(ModItems.fluid_identifier_multi), new Object[] { "D", "C", "P", 'D', "dye", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ANALOG), 'P', IRON.plate() }); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 010e5e9bf..f21340455 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -391,6 +391,7 @@ public class ResourceManager { //Charging Station public static final IModelCustom charger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/charger.obj")); + public static final IModelCustom refueler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/blocks/refueler.obj")); //DecoContainer (File Cabinet for now) public static final IModelCustom file_cabinet = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/file_cabinet.obj")); @@ -805,6 +806,7 @@ public class ResourceManager { //Charger public static final ResourceLocation charger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/charger.png"); + public static final ResourceLocation refueler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/refueler.png"); //DecoContainer public static final ResourceLocation file_cabinet_tex = new ResourceLocation(RefStrings.MODID, "textures/models/file_cabinet.png"); diff --git a/src/main/java/com/hbm/render/tileentity/RenderRefueler.java b/src/main/java/com/hbm/render/tileentity/RenderRefueler.java new file mode 100644 index 000000000..b8c30a352 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderRefueler.java @@ -0,0 +1,103 @@ +package com.hbm.render.tileentity; + +import java.awt.Color; +import java.nio.DoubleBuffer; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityRefueler; + +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderRefueler extends TileEntitySpecialRenderer implements IItemRendererProvider { + + private static DoubleBuffer clip = null; + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + TileEntityRefueler refueler = (TileEntityRefueler) tile; + + GL11.glPushMatrix(); + { + + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glRotatef(90, 0F, 1F, 0F); + switch(tile.getBlockMetadata()) { + case 4: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + + bindTexture(ResourceManager.refueler_tex); + ResourceManager.refueler.renderPart("Fueler"); + + + if(clip == null) { + clip = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer(); + clip.put(new double[] {0, 1, 0, -0.125 }); + clip.rewind(); + } + + GL11.glEnable(GL11.GL_CLIP_PLANE0); + GL11.glClipPlane(GL11.GL_CLIP_PLANE0, clip); + + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + + double fillLevel = refueler.prevFillLevel + (refueler.fillLevel - refueler.prevFillLevel) * interp; + GL11.glTranslated(0, (1 - fillLevel) * -0.625, 0); + + Color color = new Color(refueler.tank.getTankType().getColor()); + GL11.glColor4f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 0.75F); + ResourceManager.refueler.renderPart("Fluid"); + GL11.glColor4f(1, 1, 1, 1); + + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + + GL11.glDisable(GL11.GL_CLIP_PLANE0); + + GL11.glShadeModel(GL11.GL_FLAT); + + } + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.refueler); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(6, 6, 6); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + GL11.glTranslated(0.5, 0, 0); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.refueler_tex); + ResourceManager.refueler.renderPart("Fueler"); + GL11.glShadeModel(GL11.GL_FLAT); + } + }; + } + +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index f2c4a50c0..12257b52e 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -217,6 +217,7 @@ public class TileMappings { put(TileEntityDoorGeneric.class, "tileentity_ntm_door"); put(TileEntityCharger.class, "tileentity_ntm_charger"); + put(TileEntityRefueler.class, "tileentity_ntm_refueler"); put(TileEntityFileCabinet.class, "tileentity_file_cabinet"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java new file mode 100644 index 000000000..54b131657 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRefueler.java @@ -0,0 +1,157 @@ +package com.hbm.tileentity.machine; + +import java.util.List; +import java.util.Random; + +import com.hbm.handler.ArmorModHandler; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BobMathUtil; + +import api.hbm.fluid.IFillableItem; +import api.hbm.fluid.IFluidStandardReceiver; +import io.netty.buffer.ByteBuf; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemArmor; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityRefueler extends TileEntityLoadedBase implements IFluidStandardReceiver { + + public double fillLevel; + public double prevFillLevel; + + private boolean isOperating = false; + private int operatingTime; + + public FluidTank tank; + + public TileEntityRefueler() { + super(); + tank = new FluidTank(Fluids.KEROSENE, 100); + } + + @SuppressWarnings("unchecked") + @Override + public void updateEntity() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(!worldObj.isRemote) { + trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ, dir); + + isOperating = false; + + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(0.5, 0.0, 0.5)); + + for(EntityPlayer player : players) { + for(int i = 0; i < 5; i++) { + + ItemStack stack = player.getEquipmentInSlot(i); + if(stack == null) continue; + + if(fillFillable(stack)) { + isOperating = true; + } + + if(stack.getItem() instanceof ItemArmor && ArmorModHandler.hasMods(stack)) { + for(ItemStack mod : ArmorModHandler.pryMods(stack)) { + if(mod == null) continue; + + if(fillFillable(mod)) { + ArmorModHandler.applyMod(stack, mod); + isOperating = true; + } + } + } + } + } + + if(isOperating) { + if(operatingTime % 20 == 0) + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, "random.fizz", 0.2F, 0.5F); + + operatingTime++; + } else { + operatingTime = 0; + } + + networkPackNT(150); + } else { + if(isOperating) { + Random rand = worldObj.rand; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "fluidfill"); + data.setInteger("color", tank.getTankType().getColor()); + data.setDouble("posX", xCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetX * 0.5 + rot.offsetX * 0.25); + data.setDouble("posZ", zCoord + 0.5 + rand.nextDouble() * 0.0625 + dir.offsetZ * 0.5 + rot.offsetZ * 0.25); + data.setDouble("posY", yCoord + 0.375); + data.setDouble("mX", -dir.offsetX + rand.nextGaussian() * 0.1); + data.setDouble("mZ", -dir.offsetZ + rand.nextGaussian() * 0.1); + data.setDouble("mY", 0D); + + MainRegistry.proxy.effectNT(data); + } + + prevFillLevel = fillLevel; + + double targetFill = (double)tank.getFill() / (double)tank.getMaxFill(); + fillLevel = BobMathUtil.interp(fillLevel, targetFill, targetFill > fillLevel || !isOperating ? 0.1F : 0.01F); + } + + + } + + private boolean fillFillable(ItemStack stack) { + if(stack.getItem() instanceof IFillableItem) { + IFillableItem fillable = (IFillableItem) stack.getItem(); + if(fillable.acceptsFluid(tank.getTankType(), stack)) { + int prevFill = tank.getFill(); + tank.setFill(fillable.tryFill(tank.getTankType(), tank.getFill(), stack)); + return tank.getFill() < prevFill; + } + } + + return false; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeBoolean(isOperating); + tank.serialize(buf); + } + + @Override + public void deserialize(ByteBuf buf) { + isOperating = buf.readBoolean(); + tank.deserialize(buf); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + tank.readFromNBT(nbt, "t"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + tank.writeToNBT(nbt, "t"); + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] { tank }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { tank }; + } + +} diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index efdcb62a9..076371b8a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5979,6 +5979,7 @@ tile.red_pylon_medium_steel_transformer.name=Medium Steel Electricity Pylon with tile.red_pylon_medium_wood.name=Medium Wooden Electricity Pylon tile.red_pylon_medium_wood_transformer.name=Medium Wooden Electricity Pylon with Transformer tile.red_wire_coated.name=Coated Red Copper Cable +tile.refueler.name=Refueling Station tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs tile.reinforced_ducrete.name=Reinforced Ducrete diff --git a/src/main/resources/assets/hbm/models/blocks/refueler.obj b/src/main/resources/assets/hbm/models/blocks/refueler.obj new file mode 100644 index 000000000..25218d14e --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/refueler.obj @@ -0,0 +1,1100 @@ +# Blender 4.0.1 +# www.blender.org +o Fluid +v -0.437500 0.120000 -0.095000 +v -0.437500 0.821132 -0.095000 +v -0.318750 0.120000 -0.063181 +v -0.318750 0.821132 -0.063181 +v -0.231819 0.120000 0.023750 +v -0.231819 0.821132 0.023750 +v -0.200000 0.120000 0.142500 +v -0.200000 0.821132 0.142500 +v -0.231819 0.120000 0.261250 +v -0.231819 0.821132 0.261250 +v -0.318750 0.120000 0.348181 +v -0.318750 0.821132 0.348181 +v -0.437500 0.120000 0.380000 +v -0.437500 0.821132 0.380000 +vn 0.2588 -0.0000 -0.9659 +vn 0.7071 -0.0000 -0.7071 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.0000 0.2588 +vn 0.7071 -0.0000 0.7071 +vn 0.2588 -0.0000 0.9659 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vt 0.553982 0.742726 +vt 0.546523 0.663764 +vt 0.553982 0.663764 +vt 0.546523 0.742726 +vt 0.539064 0.663764 +vt 0.539064 0.742726 +vt 0.531606 0.663764 +vt 0.531606 0.742726 +vt 0.524147 0.663764 +vt 0.524147 0.742726 +vt 0.516688 0.663764 +vt 0.516688 0.742726 +vt 0.509229 0.663764 +vt 0.509229 0.742726 +s 0 +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 5/5/2 3/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 9/9/4 7/7/4 +f 10/10/5 11/11/5 9/9/5 +f 12/12/6 13/13/6 11/11/6 +f 3/2/7 7/7/7 11/11/7 +f 2/1/8 12/12/8 8/8/8 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 10/10/4 9/9/4 +f 10/10/5 12/12/5 11/11/5 +f 12/12/6 14/14/6 13/13/6 +f 13/13/7 1/3/7 3/2/7 +f 3/2/7 5/5/7 7/7/7 +f 7/7/7 9/9/7 11/11/7 +f 11/11/7 13/13/7 3/2/7 +f 6/6/8 4/4/8 2/1/8 +f 2/1/8 14/14/8 12/12/8 +f 12/12/8 10/10/8 8/8/8 +f 8/8/8 6/6/8 2/1/8 +o Fueler +v -0.437500 0.295000 -0.129375 +v -0.437500 0.495000 -0.129375 +v -0.437500 0.295000 -0.410625 +v -0.437500 0.495000 -0.410625 +v -0.312500 0.295000 -0.129375 +v -0.312500 0.495000 -0.129375 +v -0.312500 0.295000 -0.410625 +v -0.312500 0.495000 -0.410625 +v -0.413151 0.393750 -0.250217 +v -0.312500 0.393750 -0.250217 +v -0.413151 0.358241 -0.235509 +v -0.312500 0.358241 -0.235509 +v -0.413151 0.343533 -0.200000 +v -0.312500 0.343533 -0.200000 +v -0.413151 0.358241 -0.164491 +v -0.312500 0.358241 -0.164491 +v -0.413151 0.393750 -0.149783 +v -0.312500 0.393750 -0.149783 +v -0.413151 0.429259 -0.164491 +v -0.312500 0.429259 -0.164491 +v -0.413151 0.443967 -0.200000 +v -0.312500 0.443967 -0.200000 +v -0.413151 0.429259 -0.235509 +v -0.312500 0.429259 -0.235509 +v -0.413151 0.393750 -0.390217 +v -0.312500 0.393750 -0.390217 +v -0.413151 0.358241 -0.375509 +v -0.312500 0.358241 -0.375509 +v -0.413151 0.343533 -0.340000 +v -0.312500 0.343533 -0.340000 +v -0.413151 0.358241 -0.304491 +v -0.312500 0.358241 -0.304491 +v -0.413151 0.393750 -0.289783 +v -0.312500 0.393750 -0.289783 +v -0.413151 0.429259 -0.304491 +v -0.312500 0.429259 -0.304491 +v -0.413151 0.443967 -0.340000 +v -0.312500 0.443967 -0.340000 +v -0.413151 0.429259 -0.375509 +v -0.312500 0.429259 -0.375509 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 -0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.375000 0.062500 0.437500 +v -0.375000 0.937500 0.437500 +v -0.375000 0.062500 -0.437500 +v -0.375000 0.937500 -0.437500 +v -0.437500 0.937500 -0.437500 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v -0.437500 0.937500 0.437500 +v -0.437500 0.100000 -0.100000 +v -0.437500 0.900000 -0.100000 +v -0.312500 0.100000 -0.066506 +v -0.312500 0.900000 -0.066506 +v -0.220994 0.100000 0.025000 +v -0.220994 0.900000 0.025000 +v -0.187500 0.100000 0.150000 +v -0.187500 0.900000 0.150000 +v -0.220994 0.100000 0.275000 +v -0.220994 0.900000 0.275000 +v -0.312500 0.100000 0.366506 +v -0.312500 0.900000 0.366506 +v -0.437500 0.100000 0.400000 +v -0.437500 0.900000 0.400000 +v -0.437500 0.100000 -0.100000 +v -0.437500 0.900000 -0.100000 +v -0.312500 0.100000 -0.066506 +v -0.312500 0.900000 -0.066506 +v -0.220994 0.100000 0.025000 +v -0.220994 0.900000 0.025000 +v -0.187500 0.100000 0.150000 +v -0.187500 0.900000 0.150000 +v -0.220994 0.100000 0.275000 +v -0.220994 0.900000 0.275000 +v -0.312500 0.100000 0.366506 +v -0.312500 0.900000 0.366506 +v -0.437500 0.100000 0.400000 +v -0.437500 0.900000 0.400000 +v -0.437500 0.695646 -0.233146 +v -0.437500 0.709375 -0.200000 +v -0.437500 0.695646 -0.166854 +v -0.437500 0.662500 -0.153125 +v -0.437500 0.629354 -0.166854 +v -0.437500 0.615625 -0.200000 +v -0.437500 0.629354 -0.233146 +v -0.437500 0.662500 -0.246875 +v -0.433174 0.695362 -0.233146 +v -0.431382 0.708974 -0.200000 +v -0.433174 0.695362 -0.166854 +v -0.437500 0.662500 -0.153125 +v -0.441826 0.629638 -0.166854 +v -0.443618 0.616026 -0.200000 +v -0.441826 0.629638 -0.233146 +v -0.437500 0.662500 -0.246875 +v -0.389677 0.682832 -0.233146 +v -0.382812 0.694722 -0.200000 +v -0.389677 0.682832 -0.166854 +v -0.406250 0.654127 -0.153125 +v -0.422823 0.625422 -0.166854 +v -0.429688 0.613532 -0.200000 +v -0.422823 0.625422 -0.233146 +v -0.406250 0.654127 -0.246875 +v -0.354668 0.647823 -0.233146 +v -0.342778 0.654688 -0.200000 +v -0.354668 0.647823 -0.166854 +v -0.383373 0.631250 -0.153125 +v -0.412078 0.614677 -0.166854 +v -0.423968 0.607813 -0.200000 +v -0.412078 0.614677 -0.233146 +v -0.383373 0.631250 -0.246875 +v -0.342138 0.604326 -0.233146 +v -0.328526 0.606118 -0.200000 +v -0.342138 0.604326 -0.166854 +v -0.375000 0.600000 -0.153125 +v -0.407862 0.595674 -0.166854 +v -0.421474 0.593882 -0.200000 +v -0.407862 0.595674 -0.233146 +v -0.375000 0.600000 -0.246875 +v -0.341854 0.475000 -0.233146 +v -0.328125 0.475000 -0.200000 +v -0.341854 0.475000 -0.166854 +v -0.375000 0.475000 -0.153125 +v -0.408146 0.475000 -0.166854 +v -0.421875 0.475000 -0.200000 +v -0.408146 0.475000 -0.233146 +v -0.375000 0.475000 -0.246875 +v -0.437500 0.695646 -0.306854 +v -0.437500 0.709375 -0.340000 +v -0.437500 0.695646 -0.373146 +v -0.437500 0.662500 -0.386875 +v -0.437500 0.629354 -0.373146 +v -0.437500 0.615625 -0.340000 +v -0.437500 0.629354 -0.306854 +v -0.437500 0.662500 -0.293125 +v -0.433174 0.695362 -0.306854 +v -0.431382 0.708974 -0.340000 +v -0.433174 0.695362 -0.373146 +v -0.437500 0.662500 -0.386875 +v -0.441826 0.629638 -0.373146 +v -0.443618 0.616026 -0.340000 +v -0.441826 0.629638 -0.306854 +v -0.437500 0.662500 -0.293125 +v -0.389677 0.682832 -0.306854 +v -0.382812 0.694722 -0.340000 +v -0.389677 0.682832 -0.373146 +v -0.406250 0.654127 -0.386875 +v -0.422823 0.625422 -0.373146 +v -0.429688 0.613532 -0.340000 +v -0.422823 0.625422 -0.306854 +v -0.406250 0.654127 -0.293125 +v -0.354668 0.647823 -0.306854 +v -0.342778 0.654688 -0.340000 +v -0.354668 0.647823 -0.373146 +v -0.383373 0.631250 -0.386875 +v -0.412078 0.614677 -0.373146 +v -0.423968 0.607813 -0.340000 +v -0.412078 0.614677 -0.306854 +v -0.383373 0.631250 -0.293125 +v -0.342138 0.604326 -0.306854 +v -0.328526 0.606118 -0.340000 +v -0.342138 0.604326 -0.373146 +v -0.375000 0.600000 -0.386875 +v -0.407862 0.595674 -0.373146 +v -0.421474 0.593882 -0.340000 +v -0.407862 0.595674 -0.306854 +v -0.375000 0.600000 -0.293125 +v -0.341854 0.475000 -0.306854 +v -0.328125 0.475000 -0.340000 +v -0.341854 0.475000 -0.373146 +v -0.375000 0.475000 -0.386875 +v -0.408146 0.475000 -0.373146 +v -0.421875 0.475000 -0.340000 +v -0.408146 0.475000 -0.306854 +v -0.375000 0.475000 -0.293125 +v -0.437500 0.092354 -0.233146 +v -0.437500 0.078625 -0.200000 +v -0.437500 0.092354 -0.166854 +v -0.437500 0.125500 -0.153125 +v -0.437500 0.158646 -0.166854 +v -0.437500 0.172375 -0.200000 +v -0.437500 0.158646 -0.233146 +v -0.437500 0.125500 -0.246875 +v -0.433174 0.092638 -0.233146 +v -0.431382 0.079026 -0.200000 +v -0.433174 0.092638 -0.166854 +v -0.437500 0.125500 -0.153125 +v -0.441826 0.158362 -0.166854 +v -0.443618 0.171974 -0.200000 +v -0.441826 0.158362 -0.233146 +v -0.437500 0.125500 -0.246875 +v -0.389677 0.105168 -0.233146 +v -0.382812 0.093278 -0.200000 +v -0.389677 0.105168 -0.166854 +v -0.406250 0.133873 -0.153125 +v -0.422823 0.162578 -0.166854 +v -0.429688 0.174468 -0.200000 +v -0.422823 0.162578 -0.233146 +v -0.406250 0.133873 -0.246875 +v -0.354668 0.140177 -0.233146 +v -0.342778 0.133313 -0.200000 +v -0.354668 0.140177 -0.166854 +v -0.383373 0.156750 -0.153125 +v -0.412078 0.173323 -0.166854 +v -0.423968 0.180188 -0.200000 +v -0.412078 0.173323 -0.233146 +v -0.383373 0.156750 -0.246875 +v -0.342138 0.183674 -0.233146 +v -0.328526 0.181882 -0.200000 +v -0.342138 0.183674 -0.166854 +v -0.375000 0.188000 -0.153125 +v -0.407862 0.192326 -0.166854 +v -0.421474 0.194118 -0.200000 +v -0.407862 0.192326 -0.233146 +v -0.375000 0.188000 -0.246875 +v -0.341854 0.313000 -0.233146 +v -0.328125 0.313000 -0.200000 +v -0.341854 0.313000 -0.166854 +v -0.375000 0.313000 -0.153125 +v -0.408146 0.313000 -0.166854 +v -0.421875 0.313000 -0.200000 +v -0.408146 0.313000 -0.233146 +v -0.375000 0.313000 -0.246875 +v -0.437500 0.092354 -0.306854 +v -0.437500 0.078625 -0.340000 +v -0.437500 0.092354 -0.373146 +v -0.437500 0.125500 -0.386875 +v -0.437500 0.158646 -0.373146 +v -0.437500 0.172375 -0.340000 +v -0.437500 0.158646 -0.306854 +v -0.437500 0.125500 -0.293125 +v -0.433174 0.092638 -0.306854 +v -0.431382 0.079026 -0.340000 +v -0.433174 0.092638 -0.373146 +v -0.437500 0.125500 -0.386875 +v -0.441826 0.158362 -0.373146 +v -0.443618 0.171974 -0.340000 +v -0.441826 0.158362 -0.306854 +v -0.437500 0.125500 -0.293125 +v -0.389677 0.105168 -0.306854 +v -0.382812 0.093278 -0.340000 +v -0.389677 0.105168 -0.373146 +v -0.406250 0.133873 -0.386875 +v -0.422823 0.162578 -0.373146 +v -0.429688 0.174468 -0.340000 +v -0.422823 0.162578 -0.306854 +v -0.406250 0.133873 -0.293125 +v -0.354668 0.140177 -0.306854 +v -0.342778 0.133313 -0.340000 +v -0.354668 0.140177 -0.373146 +v -0.383373 0.156750 -0.386875 +v -0.412078 0.173323 -0.373146 +v -0.423968 0.180188 -0.340000 +v -0.412078 0.173323 -0.306854 +v -0.383373 0.156750 -0.293125 +v -0.342138 0.183674 -0.306854 +v -0.328526 0.181882 -0.340000 +v -0.342138 0.183674 -0.373146 +v -0.375000 0.188000 -0.386875 +v -0.407862 0.192326 -0.373146 +v -0.421474 0.194118 -0.340000 +v -0.407862 0.192326 -0.306854 +v -0.375000 0.188000 -0.293125 +v -0.341854 0.313000 -0.306854 +v -0.328125 0.313000 -0.340000 +v -0.341854 0.313000 -0.373146 +v -0.375000 0.313000 -0.386875 +v -0.408146 0.313000 -0.373146 +v -0.421875 0.313000 -0.340000 +v -0.408146 0.313000 -0.306854 +v -0.375000 0.313000 -0.293125 +v -0.427500 0.925000 -0.145000 +v -0.427500 0.675000 -0.145000 +v -0.427500 0.925000 -0.395000 +v -0.427500 0.675000 -0.395000 +v -0.500000 0.312500 0.187500 +v -0.500000 0.687500 0.187500 +v -0.500000 0.312500 -0.187500 +v -0.500000 0.687500 -0.187500 +v -0.437500 0.312500 0.187500 +v -0.437500 0.687500 0.187500 +v -0.437500 0.312500 -0.187500 +v -0.437500 0.687500 -0.187500 +v -0.447500 0.750000 -0.250000 +v -0.447500 0.250000 -0.250000 +v -0.447500 0.750000 0.250000 +v -0.447500 0.250000 0.250000 +v -0.500000 0.250000 0.250000 +v -0.500000 0.750000 0.250000 +v -0.500000 0.250000 -0.250000 +v -0.500000 0.750000 -0.250000 +v -0.437500 0.250000 0.250000 +v -0.437500 0.750000 0.250000 +v -0.437500 0.250000 -0.250000 +v -0.437500 0.750000 -0.250000 +vn -0.0000 -0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 0.3827 0.9239 +vn -0.0000 0.9239 0.3827 +vn -0.0000 0.9239 -0.3827 +vn -0.0000 0.3827 -0.9239 +vn -0.0000 -0.3827 -0.9239 +vn -0.0000 -0.9239 -0.3827 +vn -0.0000 -0.9239 0.3827 +vn -0.0000 -0.3827 0.9239 +vn 1.0000 -0.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn 0.4472 -0.0000 -0.8944 +vn 0.4472 -0.0000 0.8944 +vn 0.4472 -0.8944 -0.0000 +vn 0.4472 0.8944 -0.0000 +vn 0.2588 -0.0000 -0.9659 +vn 0.7071 -0.0000 -0.7071 +vn 0.9659 -0.0000 -0.2588 +vn 0.9659 -0.0000 0.2588 +vn 0.7071 -0.0000 0.7071 +vn 0.2588 -0.0000 0.9659 +vn -0.0001 1.0000 -0.0000 +vn -0.0000 1.0000 -0.0001 +vn 0.0604 0.9222 -0.3820 +vn 0.0605 0.9222 0.3820 +vn 0.0251 0.3825 0.9236 +vn 0.0251 0.3826 -0.9236 +vn 0.0251 0.3826 0.9236 +vn 0.0998 0.3724 -0.9227 +vn 0.2562 0.8892 -0.3790 +vn 0.2562 0.8892 0.3790 +vn 0.0998 0.3724 0.9227 +vn -0.0832 -0.3748 0.9234 +vn -0.1628 -0.9096 0.3823 +vn -0.1628 -0.9096 -0.3823 +vn -0.0832 -0.3748 -0.9234 +vn 0.2787 0.2787 -0.9191 +vn 0.6565 0.6565 -0.3715 +vn 0.6565 0.6565 0.3715 +vn 0.2787 0.2787 0.9191 +vn -0.2787 -0.2787 0.9191 +vn -0.6565 -0.6565 0.3715 +vn -0.6565 -0.6565 -0.3715 +vn -0.2787 -0.2787 -0.9191 +vn 0.3772 0.1086 -0.9198 +vn 0.8901 0.2612 -0.3734 +vn 0.8901 0.2612 0.3734 +vn 0.3772 0.1086 0.9197 +vn -0.3807 -0.1020 0.9191 +vn -0.9080 -0.2014 0.3674 +vn -0.9080 -0.2014 -0.3674 +vn -0.3807 -0.1020 -0.9191 +vn 0.3854 0.0008 -0.9228 +vn 0.9250 0.0028 -0.3800 +vn 0.9250 0.0028 0.3800 +vn 0.3854 0.0008 0.9228 +vn -0.3855 -0.0000 0.9227 +vn -0.9251 0.0022 0.3798 +vn -0.9251 0.0022 -0.3798 +vn -0.3855 -0.0000 -0.9227 +vn 0.0604 0.9222 0.3820 +vn 0.0605 0.9222 -0.3820 +vn 0.0001 1.0000 -0.0000 +vn -0.0001 1.0000 0.0001 +vn 0.1086 0.3772 0.9197 +vn 0.2612 0.8901 0.3734 +vn -0.2014 -0.9080 0.3674 +vn -0.1020 -0.3807 0.9191 +vn -0.6565 -0.6566 -0.3714 +vn 0.8892 0.2562 -0.3790 +vn 0.3724 0.0998 -0.9227 +vn -0.3748 -0.0832 -0.9234 +vn -0.9096 -0.1628 -0.3823 +vn 0.9239 0.0020 -0.3827 +vn 0.3827 -0.0000 -0.9239 +vn -0.3827 0.0009 -0.9239 +vn -0.9239 0.0031 -0.3827 +vn 0.0251 -0.3826 -0.9236 +vn 0.0604 -0.9222 -0.3820 +vn 0.0605 -0.9222 0.3820 +vn -0.0000 -1.0000 0.0001 +vn 0.0251 -0.3825 -0.9236 +vn 0.1086 -0.3772 -0.9197 +vn 0.2612 -0.8901 -0.3734 +vn 0.2562 -0.8892 0.3790 +vn 0.0998 -0.3724 0.9227 +vn -0.0832 0.3748 0.9234 +vn -0.1628 0.9096 0.3823 +vn -0.2014 0.9080 -0.3674 +vn -0.1020 0.3807 -0.9191 +vn 0.2787 -0.2787 -0.9191 +vn 0.6565 -0.6565 -0.3715 +vn 0.6565 -0.6565 0.3715 +vn 0.2787 -0.2787 0.9191 +vn -0.2787 0.2787 0.9191 +vn -0.6565 0.6565 0.3715 +vn -0.6565 0.6565 -0.3715 +vn -0.2787 0.2787 -0.9191 +vn 0.3772 -0.1086 -0.9198 +vn 0.8901 -0.2612 -0.3734 +vn 0.8892 -0.2562 0.3790 +vn 0.3724 -0.0998 0.9227 +vn -0.3748 0.0832 0.9234 +vn -0.9096 0.1628 0.3823 +vn -0.9080 0.2014 -0.3674 +vn -0.3807 0.1020 -0.9191 +vn 0.3854 -0.0008 -0.9228 +vn 0.9250 -0.0028 -0.3800 +vn 0.9239 -0.0020 0.3827 +vn 0.3827 -0.0000 0.9239 +vn -0.3827 -0.0009 0.9239 +vn -0.9239 -0.0031 0.3827 +vn -0.9251 -0.0022 -0.3798 +vn 0.0604 -0.9222 0.3820 +vn -0.0000 1.0000 0.0001 +vn 0.0003 1.0000 -0.0000 +vn 0.0605 -0.9222 -0.3820 +vn 0.2562 -0.8892 -0.3790 +vn 0.0998 -0.3724 -0.9227 +vn -0.0832 0.3748 -0.9234 +vn -0.1628 0.9096 -0.3823 +vn 0.3772 -0.1086 0.9197 +vn 0.8901 -0.2612 0.3734 +vn -0.9080 0.2014 0.3674 +vn -0.3807 0.1020 0.9191 +vn 0.3854 -0.0008 0.9228 +vn 0.9250 -0.0028 0.3800 +vn -0.9251 -0.0022 0.3798 +vn 0.0602 0.9222 -0.3820 +vn -0.9945 0.1050 0.0001 +vn -0.9945 0.1050 -0.0000 +vn 0.0001 1.0000 -0.0001 +vn 0.1086 0.3772 -0.9197 +vn 0.2612 0.8901 -0.3734 +vn -0.2014 -0.9080 -0.3674 +vn -0.1020 -0.3807 -0.9191 +vn -0.6565 -0.6566 0.3714 +vn 0.8892 0.2562 0.3790 +vn 0.3724 0.0998 0.9227 +vn -0.3748 -0.0832 0.9234 +vn -0.9096 -0.1628 0.3823 +vn 0.9239 0.0020 0.3827 +vn -0.3827 0.0009 0.9239 +vn -0.9239 0.0031 0.3827 +vn 0.0602 0.9222 0.3820 +vn 0.0251 0.3825 -0.9236 +vn 0.0003 1.0000 -0.0001 +vn 0.1086 0.3772 -0.9198 +vn 0.3772 0.1086 -0.9197 +vn 0.0602 -0.9222 -0.3820 +vn 0.0251 -0.3825 0.9236 +vn -0.9923 -0.1240 -0.0000 +vn -0.9923 -0.1240 0.0001 +vn 0.0251 -0.3826 0.9236 +vn 0.2612 -0.8901 0.3734 +vn 0.1086 -0.3772 0.9197 +vn -0.1020 0.3807 0.9191 +vn -0.2014 0.9080 0.3674 +vn 0.3724 -0.0998 -0.9227 +vn 0.8892 -0.2562 -0.3790 +vn -0.9096 0.1628 -0.3823 +vn -0.3748 0.0832 -0.9234 +vn 0.9239 -0.0020 -0.3827 +vn -0.9239 -0.0031 -0.3827 +vn -0.3827 -0.0009 -0.9239 +vn 0.0602 -0.9222 0.3820 +vn 0.1087 -0.3772 0.9197 +vn 0.1086 -0.3772 -0.9198 +vt 0.750000 0.531250 +vt 0.562500 0.593750 +vt 0.562500 0.531250 +vt 0.750000 0.593750 +vt 0.562500 0.656250 +vt 0.656250 0.531250 +vt 0.656250 0.656250 +vt 0.512204 0.569751 +vt 0.557287 0.558480 +vt 0.512204 0.558480 +vt 0.512204 0.581021 +vt 0.557287 0.569751 +vt 0.557287 0.581021 +vt 0.512204 0.592292 +vt 0.512204 0.603563 +vt 0.557287 0.592292 +vt 0.512204 0.614833 +vt 0.557287 0.603563 +vt 0.557287 0.614833 +vt 0.512204 0.626104 +vt 0.518170 0.606754 +vt 0.518170 0.575012 +vt 0.549912 0.575012 +vt 0.674236 0.594454 +vt 0.632365 0.572293 +vt 0.683416 0.572293 +vt 0.632365 0.616616 +vt 0.683416 0.616616 +vt 0.610203 0.625796 +vt 0.750000 0.656250 +vt 0.578862 0.594454 +vt 0.588042 0.616616 +vt 0.736919 0.594454 +vt 0.727739 0.572293 +vt 0.610203 0.563113 +vt 0.500000 1.000000 +vt 0.000000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 -0.000000 +vt 0.031250 0.062500 +vt 0.000000 0.000000 +vt 0.468750 0.031250 +vt 0.468750 0.062500 +vt 0.437500 0.500000 +vt -0.000000 0.062500 +vt 0.437500 0.062500 +vt 0.937500 1.000000 +vt 0.875000 0.562500 +vt 0.937500 0.562500 +vt 0.875000 1.000000 +vt 0.812500 0.562500 +vt 0.812500 1.000000 +vt 0.750000 0.562500 +vt 0.579890 0.704562 +vt 0.659043 0.659099 +vt 0.738196 0.704562 +vt 0.749970 0.750025 +vt 0.704507 0.670872 +vt 0.613580 0.670872 +vt 0.568117 0.750025 +vt 0.812500 0.500000 +vt 0.750000 0.500000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.937500 0.500000 +vt 1.000000 0.562500 +vt 0.343750 0.656250 +vt 0.156250 0.687500 +vt 0.156250 0.656250 +vt 0.343750 0.812500 +vt 0.156250 0.843750 +vt 0.156250 0.812500 +vt 0.187500 0.656250 +vt 0.312500 0.843750 +vt 0.312500 0.656250 +vt 0.500000 0.750000 +vt 0.750000 1.000000 +vt 0.500000 0.781250 +vt 0.750000 0.750000 +vt 0.750000 0.968750 +vt 0.500000 0.968750 +vt 0.531250 0.750000 +vt 0.718750 1.000000 +vt 0.718750 0.750000 +vt 0.557287 0.626104 +vt 0.556486 0.590883 +vt 0.549912 0.606754 +vt 0.534041 0.613328 +vt 0.511596 0.590883 +vt 0.534041 0.568438 +vt 0.641545 0.594454 +vt 0.705577 0.625796 +vt 0.588042 0.572293 +vt 0.727739 0.616616 +vt 0.705577 0.563113 +vt 0.000000 1.000000 +vt 0.031250 0.031250 +vt 1.000000 0.000000 +vt 0.343750 0.687500 +vt 0.343750 0.843750 +vt 0.187500 0.843750 +vt 0.750000 0.781250 +vt 0.531250 1.000000 +s 0 +f 18/15/9 21/16/9 17/17/9 +f 20/18/10 15/19/10 19/16/10 +f 21/20/11 15/19/11 17/17/11 +f 18/15/12 20/21/12 22/20/12 +f 25/22/13 24/23/13 23/24/13 +f 27/25/14 26/26/14 25/22/14 +f 29/25/15 28/27/15 27/25/15 +f 31/28/16 30/27/16 29/25/16 +f 33/29/17 32/30/17 31/28/17 +f 35/31/18 34/32/18 33/29/18 +f 37/31/19 36/33/19 35/31/19 +f 23/34/20 38/33/20 37/31/20 +f 33/35/21 29/36/21 25/37/21 +f 41/22/13 40/23/13 39/24/13 +f 43/25/14 42/26/14 41/22/14 +f 45/25/15 44/27/15 43/25/15 +f 47/28/16 46/27/16 45/25/16 +f 49/29/17 48/30/17 47/28/17 +f 51/31/18 50/32/18 49/29/18 +f 53/31/19 52/33/19 51/31/19 +f 39/34/20 54/33/20 53/31/20 +f 49/35/21 45/36/21 41/37/21 +f 24/38/21 50/39/21 38/40/21 +f 46/41/21 24/38/21 26/42/21 +f 44/43/21 26/42/21 19/44/21 +f 40/45/21 42/46/21 21/19/21 +f 32/47/21 34/48/21 20/15/21 +f 20/15/21 38/40/21 52/49/21 +f 56/50/22 57/51/22 55/52/22 +f 58/53/23 61/54/23 57/55/23 +f 60/54/11 63/56/11 62/57/11 +f 60/54/24 55/53/24 59/57/24 +f 61/57/25 55/55/25 57/53/25 +f 58/55/26 60/57/26 62/54/26 +f 63/58/21 65/59/21 64/60/21 +f 62/54/10 64/56/10 61/57/10 +f 59/54/9 66/56/9 60/57/9 +f 61/54/12 65/56/12 59/57/12 +f 68/61/27 69/62/27 67/63/27 +f 70/64/28 71/65/28 69/62/28 +f 72/66/29 73/67/29 71/65/29 +f 74/61/30 75/62/30 73/63/30 +f 76/64/31 77/65/31 75/62/31 +f 78/66/32 79/67/32 77/65/32 +f 69/68/11 73/69/11 77/70/11 +f 68/71/12 78/68/12 74/69/12 +f 93/71/12 89/72/12 85/73/12 +f 86/72/11 90/73/11 94/74/11 +f 95/67/33 110/75/9 102/76/34 +f 104/65/35 95/76/35 96/67/35 +f 105/65/36 96/76/36 97/67/36 +f 98/67/37 105/75/37 97/76/37 +f 107/65/38 98/76/38 99/67/38 +f 108/65/35 99/76/35 100/67/35 +f 102/67/39 109/75/39 101/76/39 +f 103/65/40 118/77/40 110/75/40 +f 104/65/41 111/77/41 103/75/41 +f 113/62/42 104/75/42 105/65/42 +f 114/62/43 105/75/43 106/65/43 +f 115/62/44 106/75/44 107/65/44 +f 116/62/45 107/75/45 108/65/45 +f 109/65/46 116/77/46 108/75/46 +f 110/65/47 117/77/47 109/75/47 +f 111/63/48 126/78/48 118/79/48 +f 120/80/49 111/79/49 112/63/49 +f 121/80/50 112/79/50 113/63/50 +f 122/80/51 113/79/51 114/63/51 +f 123/80/52 114/79/52 115/63/52 +f 116/63/53 123/78/53 115/79/53 +f 125/80/54 116/79/54 117/63/54 +f 126/80/55 117/79/55 118/63/55 +f 127/63/56 126/77/56 119/62/56 +f 128/63/57 119/77/57 120/62/57 +f 121/62/58 128/79/58 120/77/58 +f 122/62/59 129/79/59 121/77/59 +f 123/62/60 130/79/60 122/77/60 +f 124/62/61 131/79/61 123/77/61 +f 133/63/62 124/77/62 125/62/62 +f 134/63/63 125/77/63 126/62/63 +f 135/62/64 134/76/64 127/67/64 +f 136/62/65 127/76/65 128/67/65 +f 129/67/66 136/77/66 128/76/66 +f 130/67/67 137/77/67 129/76/67 +f 131/67/68 138/77/68 130/76/68 +f 132/67/69 139/77/69 131/76/69 +f 141/62/70 132/76/70 133/67/70 +f 142/62/71 133/76/71 134/67/71 +f 100/76/72 109/65/72 108/75/72 +f 143/67/39 158/75/39 151/65/39 +f 143/76/72 152/65/72 144/67/72 +f 144/76/73 153/65/73 145/67/73 +f 146/67/34 153/75/12 154/65/9 +f 147/67/39 154/75/39 155/65/39 +f 147/76/72 156/65/72 148/67/72 +f 150/67/74 157/75/75 158/65/10 +f 151/65/76 166/77/76 159/62/76 +f 152/65/77 159/77/77 160/62/77 +f 152/75/41 161/62/41 153/65/41 +f 153/75/40 162/62/40 154/65/40 +f 154/75/47 163/62/47 155/65/47 +f 155/75/46 164/62/46 156/65/46 +f 157/65/78 164/77/78 165/62/78 +f 158/65/79 165/77/79 166/62/79 +f 159/63/51 174/78/51 167/80/51 +f 159/79/50 168/80/50 160/63/50 +f 160/79/49 169/80/49 161/63/49 +f 161/79/48 170/80/48 162/63/48 +f 162/79/55 171/80/55 163/63/55 +f 164/63/80 171/78/80 172/80/80 +f 164/79/53 173/80/53 165/63/53 +f 165/79/52 174/80/52 166/63/52 +f 174/77/59 175/63/59 167/62/59 +f 167/77/58 176/63/58 168/62/58 +f 169/62/81 176/79/81 177/63/81 +f 170/62/82 177/79/82 178/63/82 +f 171/62/83 178/79/83 179/63/83 +f 172/62/84 179/79/84 180/63/84 +f 172/77/61 181/63/61 173/62/61 +f 173/77/60 182/63/60 174/62/60 +f 182/76/67 183/62/67 175/67/67 +f 175/76/66 184/62/66 176/67/66 +f 177/67/85 184/77/85 185/62/85 +f 178/67/86 185/77/86 186/62/86 +f 179/67/87 186/77/87 187/62/87 +f 180/67/88 187/77/88 188/62/88 +f 180/76/69 189/62/69 181/67/69 +f 181/76/68 190/62/68 182/67/68 +f 157/65/35 148/76/35 156/75/35 +f 191/67/89 206/75/89 199/65/89 +f 191/76/90 200/65/90 192/67/90 +f 192/76/91 201/65/91 193/67/91 +f 194/67/11 201/75/92 202/65/10 +f 194/76/93 203/65/93 195/67/93 +f 196/67/90 203/75/90 204/65/90 +f 198/67/34 205/75/12 206/65/9 +f 199/65/94 214/77/94 207/62/94 +f 200/65/95 207/77/95 208/62/95 +f 200/75/96 209/62/96 201/65/96 +f 201/75/97 210/62/97 202/65/97 +f 202/75/98 211/62/98 203/65/98 +f 203/75/99 212/62/99 204/65/99 +f 205/65/100 212/77/100 213/62/100 +f 206/65/101 213/77/101 214/62/101 +f 214/79/102 215/80/102 207/63/102 +f 207/79/103 216/80/103 208/63/103 +f 208/79/104 217/80/104 209/63/104 +f 210/63/105 217/78/105 218/80/105 +f 211/63/106 218/78/106 219/80/106 +f 211/79/107 220/80/107 212/63/107 +f 213/63/108 220/78/108 221/80/108 +f 213/79/109 222/80/109 214/63/109 +f 222/77/110 223/63/110 215/62/110 +f 215/77/111 224/63/111 216/62/111 +f 217/62/112 224/79/112 225/63/112 +f 218/62/113 225/79/113 226/63/113 +f 219/62/114 226/79/114 227/63/114 +f 220/62/115 227/79/115 228/63/115 +f 220/77/116 229/63/116 221/62/116 +f 221/77/117 230/63/117 222/62/117 +f 230/76/118 231/62/118 223/67/118 +f 223/76/119 232/62/119 224/67/119 +f 225/67/120 232/77/120 233/62/120 +f 226/67/121 233/77/121 234/62/121 +f 227/67/122 234/77/122 235/62/122 +f 228/67/123 235/77/123 236/62/123 +f 228/76/124 237/62/124 229/67/124 +f 229/76/71 238/62/71 230/67/71 +f 205/65/125 196/76/125 204/75/125 +f 239/67/126 254/75/10 246/76/127 +f 248/65/91 239/76/91 240/67/91 +f 249/65/128 240/76/128 241/67/128 +f 242/67/93 249/75/93 241/76/93 +f 243/67/127 250/75/9 242/76/34 +f 252/65/125 243/76/125 244/67/125 +f 246/67/89 253/75/89 245/76/89 +f 247/65/97 262/77/97 254/75/97 +f 248/65/96 255/77/96 247/75/96 +f 257/62/129 248/75/129 249/65/129 +f 258/62/130 249/75/130 250/65/130 +f 259/62/131 250/75/131 251/65/131 +f 260/62/132 251/75/132 252/65/132 +f 253/65/99 260/77/99 252/75/99 +f 254/65/98 261/77/98 253/75/98 +f 263/80/105 262/79/105 255/63/105 +f 256/63/104 263/78/104 255/79/104 +f 265/80/103 256/79/103 257/63/103 +f 266/80/102 257/79/102 258/63/102 +f 259/63/109 266/78/109 258/79/109 +f 268/80/108 259/79/108 260/63/108 +f 261/63/107 268/78/107 260/79/107 +f 270/80/106 261/79/106 262/63/106 +f 271/63/133 270/77/133 263/62/133 +f 272/63/134 263/77/134 264/62/134 +f 265/62/111 272/79/111 264/77/111 +f 266/62/110 273/79/110 265/77/110 +f 267/62/117 274/79/117 266/77/117 +f 268/62/116 275/79/116 267/77/116 +f 277/63/135 268/77/135 269/62/135 +f 278/63/136 269/77/136 270/62/136 +f 279/62/137 278/76/137 271/67/137 +f 280/62/138 271/76/138 272/67/138 +f 273/67/119 280/77/119 272/76/119 +f 274/67/118 281/77/118 273/76/118 +f 275/67/71 282/77/71 274/76/71 +f 276/67/124 283/77/124 275/76/124 +f 285/62/139 276/76/139 277/67/139 +f 286/62/68 277/76/68 278/67/68 +f 244/76/90 253/65/90 252/75/90 +f 288/53/21 289/78/21 287/52/21 +f 294/81/9 297/82/9 293/83/9 +f 296/84/10 291/85/10 295/86/10 +f 297/87/11 291/85/11 293/83/11 +f 294/81/12 296/88/12 298/89/12 +f 299/90/22 302/91/22 301/50/22 +f 309/92/10 306/93/10 305/90/10 +f 303/50/9 308/94/9 307/95/9 +f 303/50/12 309/96/12 305/90/12 +f 308/97/11 306/93/11 310/98/11 +f 18/15/9 22/18/9 21/16/9 +f 20/18/10 16/44/10 15/19/10 +f 21/20/11 19/21/11 15/19/11 +f 18/15/12 16/44/12 20/21/12 +f 25/22/13 26/26/13 24/23/13 +f 27/25/14 28/27/14 26/26/14 +f 29/25/15 30/27/15 28/27/15 +f 31/28/16 32/30/16 30/27/16 +f 33/29/17 34/32/17 32/30/17 +f 35/31/18 36/33/18 34/32/18 +f 37/31/19 38/33/19 36/33/19 +f 23/34/20 24/99/20 38/33/20 +f 25/37/21 23/100/21 37/101/21 +f 37/101/21 35/102/21 33/35/21 +f 33/35/21 31/103/21 29/36/21 +f 29/36/21 27/104/21 25/37/21 +f 25/37/21 37/101/21 33/35/21 +f 41/22/13 42/26/13 40/23/13 +f 43/25/14 44/27/14 42/26/14 +f 45/25/15 46/27/15 44/27/15 +f 47/28/16 48/30/16 46/27/16 +f 49/29/17 50/32/17 48/30/17 +f 51/31/18 52/33/18 50/32/18 +f 53/31/19 54/33/19 52/33/19 +f 39/34/20 40/99/20 54/33/20 +f 41/37/21 39/100/21 53/101/21 +f 53/101/21 51/102/21 49/35/21 +f 49/35/21 47/103/21 45/36/21 +f 45/36/21 43/104/21 41/37/21 +f 41/37/21 53/101/21 49/35/21 +f 24/38/21 48/105/21 50/39/21 +f 46/41/21 48/105/21 24/38/21 +f 19/44/21 21/19/21 44/43/21 +f 44/43/21 46/41/21 26/42/21 +f 26/42/21 28/106/21 19/44/21 +f 22/17/21 52/49/21 54/107/21 +f 22/17/21 54/107/21 40/45/21 +f 42/46/21 44/43/21 21/19/21 +f 21/19/21 22/17/21 40/45/21 +f 19/44/21 28/106/21 30/108/21 +f 19/44/21 30/108/21 32/47/21 +f 34/48/21 36/109/21 20/15/21 +f 20/15/21 19/44/21 32/47/21 +f 52/49/21 22/17/21 20/15/21 +f 20/15/21 36/109/21 38/40/21 +f 38/40/21 50/39/21 52/49/21 +f 56/50/22 58/110/22 57/51/22 +f 58/53/23 62/57/23 61/54/23 +f 60/54/11 66/111/11 63/56/11 +f 60/54/24 56/55/24 55/53/24 +f 61/57/25 59/54/25 55/55/25 +f 58/55/26 56/53/26 60/57/26 +f 63/58/21 66/51/21 65/59/21 +f 62/54/10 63/111/10 64/56/10 +f 59/54/9 65/111/9 66/56/9 +f 61/54/12 64/111/12 65/56/12 +f 68/61/27 70/64/27 69/62/27 +f 70/64/28 72/66/28 71/65/28 +f 72/66/29 74/91/29 73/67/29 +f 74/61/30 76/64/30 75/62/30 +f 76/64/31 78/66/31 77/65/31 +f 78/66/32 80/91/32 79/67/32 +f 79/71/11 67/74/11 69/68/11 +f 69/68/11 71/73/11 73/69/11 +f 73/69/11 75/72/11 77/70/11 +f 77/70/11 79/71/11 69/68/11 +f 72/72/12 70/70/12 68/71/12 +f 68/71/12 80/74/12 78/68/12 +f 78/68/12 76/73/12 74/69/12 +f 74/69/12 72/72/12 68/71/12 +f 83/68/12 81/74/12 93/71/12 +f 93/71/12 91/70/12 89/72/12 +f 89/72/12 87/69/12 85/73/12 +f 85/73/12 83/68/12 93/71/12 +f 82/71/11 84/70/11 86/72/11 +f 86/72/11 88/69/11 90/73/11 +f 90/73/11 92/68/11 94/74/11 +f 94/74/11 82/71/11 86/72/11 +f 95/67/38 103/65/38 110/75/38 +f 104/65/140 103/75/140 95/76/140 +f 105/65/72 104/75/72 96/76/72 +f 98/67/10 106/65/12 105/75/126 +f 107/65/141 106/75/10 98/76/142 +f 108/65/140 107/75/140 99/76/140 +f 102/67/9 110/65/143 109/75/33 +f 103/65/144 111/62/144 118/77/144 +f 104/65/145 112/62/145 111/77/145 +f 113/62/77 112/77/77 104/75/77 +f 114/62/76 113/77/76 105/75/76 +f 115/62/79 114/77/79 106/75/79 +f 116/62/78 115/77/78 107/75/78 +f 109/65/146 117/62/146 116/77/146 +f 110/65/147 118/62/147 117/77/147 +f 111/63/48 119/80/48 126/78/48 +f 120/80/49 119/78/49 111/79/49 +f 121/80/50 120/78/50 112/79/50 +f 122/80/51 121/78/51 113/79/51 +f 123/80/52 122/78/52 114/79/52 +f 116/63/148 124/80/148 123/78/148 +f 125/80/80 124/78/80 116/79/80 +f 126/80/55 125/78/55 117/79/55 +f 127/63/82 134/79/82 126/77/82 +f 128/63/81 127/79/81 119/77/81 +f 121/62/149 129/63/149 128/79/149 +f 122/62/150 130/63/150 129/79/150 +f 123/62/151 131/63/151 130/79/151 +f 124/62/152 132/63/152 131/79/152 +f 133/63/84 132/79/84 124/77/84 +f 134/63/83 133/79/83 125/77/83 +f 135/62/86 142/77/86 134/76/86 +f 136/62/85 135/77/85 127/76/85 +f 129/67/153 137/62/153 136/77/153 +f 130/67/121 138/62/121 137/77/121 +f 131/67/154 139/62/154 138/77/154 +f 132/67/155 140/62/155 139/77/155 +f 141/62/88 140/77/88 132/76/88 +f 142/62/87 141/77/87 133/76/87 +f 100/76/156 101/67/156 109/65/156 +f 143/67/75 150/76/10 158/75/12 +f 143/76/36 151/75/36 152/65/36 +f 144/76/35 152/75/35 153/65/35 +f 146/67/157 145/76/157 153/75/157 +f 147/67/12 146/76/9 154/75/158 +f 147/76/156 155/75/156 156/65/156 +f 150/67/38 149/76/38 157/75/38 +f 151/65/43 158/75/43 166/77/43 +f 152/65/42 151/75/42 159/77/42 +f 152/75/145 160/77/145 161/62/145 +f 153/75/159 161/77/159 162/62/159 +f 154/75/147 162/77/147 163/62/147 +f 155/75/146 163/77/146 164/62/146 +f 157/65/45 156/75/45 164/77/45 +f 158/65/44 157/75/44 165/77/44 +f 159/63/51 166/79/51 174/78/51 +f 159/79/50 167/78/50 168/80/50 +f 160/79/49 168/78/49 169/80/49 +f 161/79/48 169/78/48 170/80/48 +f 162/79/55 170/78/55 171/80/55 +f 164/63/54 163/79/54 171/78/54 +f 164/79/148 172/78/148 173/80/148 +f 165/79/52 173/78/52 174/80/52 +f 174/77/150 182/79/150 175/63/150 +f 167/77/149 175/79/149 176/63/149 +f 169/62/57 168/77/57 176/79/57 +f 170/62/160 169/77/160 177/79/160 +f 171/62/63 170/77/63 178/79/63 +f 172/62/62 171/77/62 179/79/62 +f 172/77/152 180/79/152 181/63/152 +f 173/77/151 181/79/151 182/63/151 +f 182/76/121 190/77/121 183/62/121 +f 175/76/153 183/77/153 184/62/153 +f 177/67/65 176/76/65 184/77/65 +f 178/67/64 177/76/64 185/77/64 +f 179/67/71 178/76/71 186/77/71 +f 180/67/70 179/76/70 187/77/70 +f 180/76/155 188/77/155 189/62/155 +f 181/76/154 189/77/154 190/62/154 +f 157/65/73 149/67/73 148/76/73 +f 191/67/12 198/76/9 206/75/158 +f 191/76/161 199/75/161 200/65/161 +f 192/76/125 200/75/125 201/65/125 +f 194/67/162 193/76/162 201/75/162 +f 194/76/10 202/75/163 203/65/164 +f 196/67/128 195/76/128 203/75/128 +f 198/67/165 197/76/165 205/75/165 +f 199/65/130 206/75/130 214/77/130 +f 200/65/129 199/75/129 207/77/129 +f 200/75/166 208/77/166 209/62/166 +f 201/75/167 209/77/167 210/62/167 +f 202/75/168 210/77/168 211/62/168 +f 203/75/169 211/77/169 212/62/169 +f 205/65/132 204/75/132 212/77/132 +f 206/65/131 205/75/131 213/77/131 +f 214/79/102 222/78/102 215/80/102 +f 207/79/103 215/78/103 216/80/103 +f 208/79/104 216/78/104 217/80/104 +f 210/63/105 209/79/105 217/78/105 +f 211/63/106 210/79/106 218/78/106 +f 211/79/107 219/78/107 220/80/107 +f 213/63/108 212/79/108 220/78/108 +f 213/79/109 221/78/109 222/80/109 +f 222/77/170 230/79/170 223/63/170 +f 215/77/171 223/79/171 224/63/171 +f 217/62/134 216/77/134 224/79/134 +f 218/62/133 217/77/133 225/79/133 +f 219/62/136 218/77/136 226/79/136 +f 220/62/135 219/77/135 227/79/135 +f 220/77/172 228/79/172 229/63/172 +f 221/77/173 229/79/173 230/63/173 +f 230/76/86 238/77/86 231/62/86 +f 223/76/174 231/77/174 232/62/174 +f 225/67/138 224/76/138 232/77/138 +f 226/67/137 225/76/137 233/77/137 +f 227/67/68 226/76/68 234/77/68 +f 228/67/139 227/76/139 235/77/139 +f 228/76/175 236/77/175 237/62/175 +f 229/76/176 237/77/176 238/62/176 +f 205/65/91 197/67/91 196/76/91 +f 239/67/165 247/65/165 254/75/165 +f 248/65/177 247/75/177 239/76/177 +f 249/65/90 248/75/90 240/76/90 +f 242/67/9 250/65/34 249/75/74 +f 243/67/162 251/65/162 250/75/162 +f 252/65/177 251/75/177 243/76/177 +f 246/67/10 254/65/12 253/75/126 +f 247/65/178 255/62/178 262/77/178 +f 248/65/166 256/62/166 255/77/166 +f 257/62/95 256/77/95 248/75/95 +f 258/62/179 257/77/179 249/75/179 +f 259/62/101 258/77/101 250/75/101 +f 260/62/100 259/77/100 251/75/100 +f 253/65/169 261/62/169 260/77/169 +f 254/65/168 262/62/168 261/77/168 +f 263/80/105 270/78/105 262/79/105 +f 256/63/104 264/80/104 263/78/104 +f 265/80/103 264/78/103 256/79/103 +f 266/80/102 265/78/102 257/79/102 +f 259/63/109 267/80/109 266/78/109 +f 268/80/108 267/78/108 259/79/108 +f 261/63/107 269/80/107 268/78/107 +f 270/80/106 269/78/106 261/79/106 +f 271/63/113 278/79/113 270/77/113 +f 272/63/112 271/79/112 263/77/112 +f 265/62/171 273/63/171 272/79/171 +f 266/62/170 274/63/170 273/79/170 +f 267/62/173 275/63/173 274/79/173 +f 268/62/172 276/63/172 275/79/172 +f 277/63/115 276/79/115 268/77/115 +f 278/63/114 277/79/114 269/77/114 +f 279/62/121 286/77/121 278/76/121 +f 280/62/120 279/77/120 271/76/120 +f 273/67/174 281/62/174 280/77/174 +f 274/67/86 282/62/86 281/77/86 +f 275/67/176 283/62/176 282/77/176 +f 276/67/175 284/62/175 283/77/175 +f 285/62/123 284/77/123 276/76/123 +f 286/62/122 285/77/122 277/76/122 +f 244/76/128 245/67/128 253/65/128 +f 288/53/21 290/112/21 289/78/21 +f 294/81/9 298/113/9 297/82/9 +f 296/84/10 292/114/10 291/85/10 +f 297/87/11 295/115/11 291/85/11 +f 294/81/12 292/114/12 296/88/12 +f 299/90/22 300/93/22 302/91/22 +f 309/92/10 310/116/10 306/93/10 +f 303/50/9 304/91/9 308/94/9 +f 303/50/12 307/117/12 309/96/12 +f 308/97/11 304/91/11 306/93/11 diff --git a/src/main/resources/assets/hbm/textures/models/machines/refueler.png b/src/main/resources/assets/hbm/textures/models/machines/refueler.png new file mode 100644 index 0000000000000000000000000000000000000000..856793f732077be43fcb81bca3da571fdcc86e16 GIT binary patch literal 4920 zcmeHKX;f3!7QO@p3>9&Bg1%N`a01P6Gmzwx2$CQ~jfO!9KB-*py@4xaAh{#~(blmd z;)IGKf&&kg0?!G>u_&UbT|Q@RohWTZk>Xqwq`s4Yi0gH&w_NM>pIPfp`+WO5dw*x| zvvM-kQ$l;w2h$-4>a7e@M1Uv5e!01TyE#4m1$b1YM`@@C)XFfL3|caoU{GmBfsU;O0Ak`fMU(TY&9tkb zai#K@oHOUbB;QlR-u_NO$FCjIw3DYt&>+ZZF)5d;m2&yJTtEi-b63m4s)M|j+$)|K z;^#52Z%VCtb5mWPdd-YIZUZO&W9u~6oJnuDDCKMF>ql1({QON!DN-qZ)L7@|wjhwv zydY;=*4kIG5s7_&{^E@6Xv;B<^`2AkzH?FgM$vcX5k>uBICs|Hod4yS=z-DaWo}I8 z?c1=p;nm@9Rz9}&E%-IIrNLWGAL*RIOj-MINyyRh(u3r~{FY34=~&-W4X1KkVpqLd z{b=ubL;fTWcPSsoucXv_?$I>HAIggPL7kb9S-q?z{P-$!%uh#aV#=<^v=zKrd}6_Y zH9sL`@bKM>hDUe~+rENcvfFcOtWS+1?*caDkMJ{v%-qT4bZ^N(^+NjDrwiYnczidn zW+N%`^>$95mE4AX?$$&rTcZ1F=q<~m9!~y6vTEB>9*3gNq=&x@)~4C97xYf4>dZAoqU z?OvYc?L259$5iG%JXZpW&O(CX(x@gQm_f%zaYH=8w&{$Z>L5rOXfvW%5>5}zk#3o}p zcoFb!H*=T_2ZTzJF*PbRLvAn;3;|of=CVR;q=m;EM`uV)xE6^}Oz5NlUovJQMHvwe z$7;2*t$en@l)!-{5($UPCHZNiVhA1Va80Pks=LxhMg0QH>6TB zCKHS^-o>Xgs#IO{dUK}=Ko5=$HF97!m!s2hx_g+Z5DOsb4Cqfi%u%36IT3`}kZQt+ z5DTHFe7aNMSeL&s)s*Z=2gf)>GNA)dGnf_rV9HRXO5NpQmmq=E8693g><^F>seLcj z2eH{l9O-lq1h{wcet>?Ly8{eRDixwIV5#=-lnNQsK0ksRFcL=`ue^9MpTPXNEFmVs zSOPxAWl4Bkf0h^%!&-j{K|QipS!GA{-FF1SVt&Bq*TL`U_bSEf1Dx zVSn78D{@fb7&5_N(xG5ENgbL%aE$r{$ADdMWV~7_WAfM?fjcbfWR%hZ2hang9yeIc z@4-=|j)%GJ{&Qv%*|9U*H(AFAM_G0n(!ON(BTC zJIDr+n+TLLn4%1ZWEs;Q0>kdvHLL;+g`*UzKq&%{a(P08%R{*QD3}ZG2oD|u!^nH( z5tRWawQ2tgZEqijv}4i3NHdr}&0*^3sYoKFq8pN%h@acg!dB&qTN?2#z$$YYjP(|?T-#vQfSaVSm5D_eYWg0 z7Y?4etaid+VZZ)&N-{I!?hI(}#g1w1FDPB=mG`R8qAit|G|f>9 zlrCGJ#?H-&e*XLylO(f89WN=NnYVB3`2h0~xx(0(I`3_3CK0o>EPto_;AzdnfPcM5dI5_rv+qOCPTdjNdlj+N^6f2|J zQdb3iaZ##S6h583E^JdV$2e!gN&2P4LQ`Jx>k`?vT{CtUe!0P2`)!WubgENTRZyVP zvXI&%J6UqiHO`p0;qj(T%V$YLD_VE>eq-A!IBk4XaAGTZkG(W!`GV>gtUJ&n)x%p!?Xj2RYgP`0d)?;od$Y z)Q<|sDUeF{FxttfGY=JuX?*DJ(YZq#SIvEM@nBwmPGRo6`;CL1#(J)wU){sQ<+A`$ z{h9JcKbv=Ci}XRxs)CDSvU^&LHQ#BD)w+Cb`pRjVUqv~s^4qr7>|2e6Nn38! gWfvMA`kcKwi#BFT*{GZDckDf)44I-R4~|>#A7{r!QUCw| literal 0 HcmV?d00001 From b462b30156d5e309e0615a1eeaeb4e4e3fc44116 Mon Sep 17 00:00:00 2001 From: Toshayo Date: Fri, 7 Feb 2025 12:47:43 +0100 Subject: [PATCH 06/64] Night vision toggling with HUD --- changelog | 3 ++- .../hbm/items/armor/ItemModNightVision.java | 22 ++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/changelog b/changelog index cd7bbd560..a610946d0 100644 --- a/changelog +++ b/changelog @@ -1,7 +1,8 @@ ## Changed * Particle detectors now print an error for when the recipe could not be completed +* Night Vision Goggles toggles with armor HUD ## Fixed * Fixed items being annihilated when shift clicking them into the particle source * Fixed packet optimization not allowing packets to be sent when the day night cycle is halted -* Fixed particle detectors not always using power when they should \ No newline at end of file +* Fixed particle detectors not always using power when they should diff --git a/src/main/java/com/hbm/items/armor/ItemModNightVision.java b/src/main/java/com/hbm/items/armor/ItemModNightVision.java index 6418a88bc..305819aaf 100644 --- a/src/main/java/com/hbm/items/armor/ItemModNightVision.java +++ b/src/main/java/com/hbm/items/armor/ItemModNightVision.java @@ -1,10 +1,12 @@ package com.hbm.items.armor; +import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; import net.minecraft.client.resources.I18n; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; @@ -12,6 +14,8 @@ import net.minecraft.util.EnumChatFormatting; import java.util.List; public class ItemModNightVision extends ItemArmorMod { + private static final String NIGHT_VISION_ACTIVE_NBT_KEY = "ITEM_MOD_NV_ACTIVE"; + public ItemModNightVision() { super(ArmorModHandler.helmet_only, true, false, false, false); } @@ -31,10 +35,22 @@ public class ItemModNightVision extends ItemArmorMod { @Override public void modUpdate(EntityLivingBase entity, ItemStack armor) { if(!entity.worldObj.isRemote && entity instanceof EntityPlayer && armor.getItem() instanceof ArmorFSBPowered && ArmorFSBPowered.hasFSBArmor((EntityPlayer) entity)) { - entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + if(HbmPlayerProps.getData(((EntityPlayer) entity)).enableHUD) { + // 15 seconds to make less flickering if the client lags + entity.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + if(!armor.hasTagCompound()) { + armor.setTagCompound(new NBTTagCompound()); + } + if(!armor.getTagCompound().hasKey(NIGHT_VISION_ACTIVE_NBT_KEY)) { + armor.getTagCompound().setBoolean(NIGHT_VISION_ACTIVE_NBT_KEY, true); // Value does not matter, it's just a flag + } - if(entity.getRNG().nextInt(100) == 0) { - armor.damageItem(1, entity); + if (entity.getRNG().nextInt(100) == 0) { + armor.damageItem(1, entity); + } + } else if(armor.hasTagCompound() && armor.getTagCompound().hasKey(NIGHT_VISION_ACTIVE_NBT_KEY)) { // Disable night vision if it was the armor mod that applied it to avoid removing other night vision sources. + entity.removePotionEffect(Potion.nightVision.id); + armor.getTagCompound().removeTag(NIGHT_VISION_ACTIVE_NBT_KEY); } } } From 4a95dc1240d59d87f000fad521023281765549cd Mon Sep 17 00:00:00 2001 From: darkalit Date: Fri, 7 Feb 2025 23:57:28 +0200 Subject: [PATCH 07/64] Return OC integration with Energy storage block --- .../tileentity/machine/storage/TileEntityMachineBattery.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 41681df6e..543e7205f 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -25,6 +25,7 @@ import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -34,7 +35,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) -public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyConductorMK2, IEnergyProviderMK2, IEnergyReceiverMK2, IPersistentNBT, SimpleComponent, IGUIProvider, IInfoProviderEC, CompatHandler.OCComponent { public long[] log = new long[20]; public long delta = 0; From 3dbe648ebebd07256504b12d7ab7e4644050853b Mon Sep 17 00:00:00 2001 From: George Paton Date: Sun, 9 Feb 2025 18:39:15 +1100 Subject: [PATCH 08/64] bring NBTStructures to NTMain! --- .../java/com/hbm/blocks/BlockDummyable.java | 52 +- .../com/hbm/blocks/IBlockSideRotation.java | 23 + src/main/java/com/hbm/blocks/ModBlocks.java | 18 +- .../com/hbm/blocks/generic/BlockBobble.java | 17 +- .../com/hbm/blocks/generic/BlockDecoCRT.java | 23 +- .../hbm/blocks/generic/BlockDecoModel.java | 60 +- .../hbm/blocks/generic/BlockDecoToaster.java | 23 +- .../com/hbm/blocks/generic/BlockPipe.java | 17 +- .../com/hbm/blocks/generic/BlockWand.java | 51 + .../hbm/blocks/generic/BlockWandJigsaw.java | 387 ++++++ .../com/hbm/blocks/generic/BlockWandLoot.java | 338 +++++ .../com/hbm/blocks/generic/DecoBlock.java | 38 +- .../generic/DecoPoleSatelliteReceiver.java | 20 +- .../hbm/blocks/generic/DecoTapeRecorder.java | 23 +- .../com/hbm/blocks/machine/Spotlight.java | 46 +- .../java/com/hbm/config/StructureConfig.java | 24 +- .../crafting/handlers/MKUCraftingHandler.java | 74 +- .../java/com/hbm/items/tool/ItemWandS.java | 153 ++- src/main/java/com/hbm/lib/HbmWorld.java | 13 +- src/main/java/com/hbm/lib/HbmWorldGen.java | 31 - src/main/java/com/hbm/main/ClientProxy.java | 8 +- .../java/com/hbm/main/StructureManager.java | 63 + .../com/hbm/render/block/RenderBlockWand.java | 37 + .../java/com/hbm/tileentity/TileMappings.java | 47 +- src/main/java/com/hbm/util/LootGenerator.java | 56 +- .../gen/INBTTileEntityTransformable.java | 14 + .../com/hbm/world/gen/INBTTransformable.java | 161 +++ .../java/com/hbm/world/gen/NBTStructure.java | 1155 +++++++++++++++++ .../com/hbm/world/gen/NTMWorldGenerator.java | 222 ++-- .../hbm/world/gen/component/Component.java | 459 ++++--- src/main/resources/assets/hbm/lang/en_US.lang | 4 + .../hbm/structures/crashed-vertibird.nbt | Bin 0 -> 1664 bytes .../meteor/loot3x3/meteor-3-bale.nbt | Bin 0 -> 313 bytes .../meteor/loot3x3/meteor-3-blank.nbt | Bin 0 -> 251 bytes .../meteor/loot3x3/meteor-3-block.nbt | Bin 0 -> 312 bytes .../meteor/loot3x3/meteor-3-book.nbt | Bin 0 -> 383 bytes .../meteor/loot3x3/meteor-3-crab-tesla.nbt | Bin 0 -> 367 bytes .../meteor/loot3x3/meteor-3-crab.nbt | Bin 0 -> 308 bytes .../meteor/loot3x3/meteor-3-crate.nbt | Bin 0 -> 319 bytes .../meteor/loot3x3/meteor-3-dirt.nbt | Bin 0 -> 313 bytes .../meteor/loot3x3/meteor-3-lead.nbt | Bin 0 -> 361 bytes .../meteor/loot3x3/meteor-3-mku.nbt | Bin 0 -> 378 bytes .../meteor/loot3x3/meteor-3-ooze.nbt | Bin 0 -> 302 bytes .../meteor/loot3x3/meteor-3-pillar.nbt | Bin 0 -> 288 bytes .../meteor/loot3x3/meteor-3-star.nbt | Bin 0 -> 313 bytes .../meteor/loot3x3/meteor-3-statue.nbt | Bin 0 -> 330 bytes .../meteor/loot3x3/meteor-3-tesla.nbt | Bin 0 -> 338 bytes .../hbm/structures/meteor/meteor-core.nbt | Bin 0 -> 2734 bytes .../hbm/structures/meteor/meteor-corner.nbt | Bin 0 -> 1498 bytes .../hbm/structures/meteor/meteor-fallback.nbt | Bin 0 -> 315 bytes .../hbm/structures/meteor/meteor-spike.nbt | Bin 0 -> 433 bytes .../hbm/structures/meteor/meteor-stairs.nbt | Bin 0 -> 2074 bytes .../assets/hbm/structures/meteor/meteor-t.nbt | Bin 0 -> 1905 bytes .../meteor/room10/headloot/loot-chest.nbt | Bin 0 -> 829 bytes .../room10/headloot/loot-crate-crab.nbt | Bin 0 -> 787 bytes .../meteor/room10/headloot/loot-tesla.nbt | Bin 0 -> 886 bytes .../meteor/room10/headloot/loot-trap.nbt | Bin 0 -> 1038 bytes .../structures/meteor/room10/room-balcony.nbt | Bin 0 -> 2751 bytes .../meteor/room10/room-base-end.nbt | Bin 0 -> 1675 bytes .../meteor/room10/room-base-thru.nbt | Bin 0 -> 1613 bytes .../structures/meteor/room10/room-basic.nbt | Bin 0 -> 1092 bytes .../structures/meteor/room10/room-dragon.nbt | Bin 0 -> 3765 bytes .../meteor/room10/room-fallback.nbt | Bin 0 -> 449 bytes .../structures/meteor/room10/room-ladder.nbt | Bin 0 -> 2173 bytes .../structures/meteor/room10/room-ooze.nbt | Bin 0 -> 2211 bytes .../structures/meteor/room10/room-split.nbt | Bin 0 -> 2786 bytes .../structures/meteor/room10/room-stairs.nbt | Bin 0 -> 1797 bytes .../structures/meteor/room10/room-triple.nbt | Bin 0 -> 2339 bytes .../hbm/structures/test-jigsaw-core.nbt | Bin 0 -> 479 bytes .../hbm/structures/test-jigsaw-hall.nbt | Bin 0 -> 555 bytes .../assets/hbm/structures/test-jigsaw.nbt | Bin 0 -> 470 bytes .../assets/hbm/structures/test-rot.nbt | Bin 0 -> 4860 bytes .../assets/hbm/structures/vertibird.nbt | Bin 0 -> 1918 bytes .../assets/hbm/textures/blocks/wand_air.png | Bin 0 -> 653 bytes .../hbm/textures/blocks/wand_jigsaw.png | Bin 0 -> 5180 bytes .../hbm/textures/blocks/wand_jigsaw_back.png | Bin 0 -> 599 bytes .../hbm/textures/blocks/wand_jigsaw_side.png | Bin 0 -> 629 bytes .../hbm/textures/blocks/wand_jigsaw_top.png | Bin 0 -> 625 bytes .../assets/hbm/textures/blocks/wand_loot.png | Bin 0 -> 595 bytes .../hbm/textures/blocks/wand_loot_top.png | Bin 0 -> 4264 bytes 80 files changed, 3189 insertions(+), 468 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/generic/BlockWand.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java create mode 100644 src/main/java/com/hbm/blocks/generic/BlockWandLoot.java create mode 100644 src/main/java/com/hbm/main/StructureManager.java create mode 100644 src/main/java/com/hbm/render/block/RenderBlockWand.java create mode 100644 src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java create mode 100644 src/main/java/com/hbm/world/gen/INBTTransformable.java create mode 100644 src/main/java/com/hbm/world/gen/NBTStructure.java create mode 100644 src/main/resources/assets/hbm/structures/crashed-vertibird.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-bale.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-blank.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-block.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-book.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab-tesla.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crate.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-dirt.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-lead.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-mku.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-ooze.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-pillar.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-star.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-statue.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-tesla.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/meteor-core.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/meteor-corner.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/meteor-fallback.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/meteor-spike.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/meteor-stairs.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/meteor-t.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-chest.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-crate-crab.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-tesla.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-trap.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-balcony.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-base-end.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-base-thru.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-basic.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-dragon.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-fallback.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-ladder.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-ooze.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-split.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/room-triple.nbt create mode 100644 src/main/resources/assets/hbm/structures/test-jigsaw-core.nbt create mode 100644 src/main/resources/assets/hbm/structures/test-jigsaw-hall.nbt create mode 100644 src/main/resources/assets/hbm/structures/test-jigsaw.nbt create mode 100644 src/main/resources/assets/hbm/structures/test-rot.nbt create mode 100644 src/main/resources/assets/hbm/structures/vertibird.nbt create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_air.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_jigsaw.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_back.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_side.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_top.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_loot.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/wand_loot_top.png diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index cfedf6246..75dd39c2f 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -5,12 +5,15 @@ import com.hbm.handler.ThreeInts; import com.hbm.interfaces.ICopiable; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; +import com.hbm.world.gen.INBTTransformable; + import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.RenderGlobal; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; @@ -32,7 +35,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable { +public abstract class BlockDummyable extends BlockContainer implements ICustomBlockHighlight, ICopiable, INBTTransformable { public BlockDummyable(Material mat) { super(mat); @@ -116,7 +119,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return findCoreRec(world, x, y, z); } - List positions = new ArrayList(); + List positions = new ArrayList<>(); public int[] findCoreRec(World world, int x, int y, int z) { @@ -216,11 +219,6 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl super.onBlockPlacedBy(world, x, y, z, player, itemStack); } - /*@Override - public void onBlockAdded(World world, int x, int y, int z) { - lastBlockSet = new BlockPos(x, y, z); - }*/ - /** * A bit more advanced than the dir modifier, but it is important that the resulting direction meta is in the core range. * Using the "extra" metas is technically possible but requires a bit of tinkering, e.g. preventing a recursive loop @@ -267,9 +265,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return; // world.setBlockMetadataWithNotify(x, y, z, meta + extra, 3); - this.safeRem = true; + safeRem = true; world.setBlock(x, y, z, this, meta + extra, 3); - this.safeRem = false; + safeRem = false; } public void removeExtra(World world, int x, int y, int z) { @@ -283,9 +281,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return; // world.setBlockMetadataWithNotify(x, y, z, meta + extra, 3); - this.safeRem = true; + safeRem = true; world.setBlock(x, y, z, this, meta - extra, 3); - this.safeRem = false; + safeRem = false; } // checks if the dummy metadata is within the extra range @@ -423,8 +421,9 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return !bounding.isEmpty(); } - public List bounding = new ArrayList(); + public List bounding = new ArrayList<>(); + @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB entityBounding, List list, Entity entity) { @@ -443,7 +442,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl z = pos[2]; for(AxisAlignedBB aabb :this.bounding) { - AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - this.offset).getRotation(ForgeDirection.UP)); + AxisAlignedBB boxlet = getAABBRotationOffset(aabb, x + 0.5, y, z + 0.5, ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z) - offset).getRotation(ForgeDirection.UP)); if(entityBounding.intersectsWith(boxlet)) { list.add(boxlet); @@ -504,7 +503,7 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl int meta = world.getBlockMetadata(x, y, z); ICustomBlockHighlight.setup(); - for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); + for(AxisAlignedBB aabb : this.bounding) RenderGlobal.drawOutlinedBoundingBox(getAABBRotationOffset(aabb.expand(exp, exp, exp), 0, 0, 0, ForgeDirection.getOrientation(meta - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } @@ -534,4 +533,27 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl return ((ICopiable) tile).infoForDisplay(world, x, y, z); return null; } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + boolean isOffset = meta >= 12; // squishing causes issues + boolean isExtra = !isOffset && meta >= extra; + + if(isOffset) { + meta -= offset; + } else if(isExtra) { + meta -= extra; + } + + meta = INBTTransformable.transformMetaDeco(meta, coordBaseMode); + + if(isOffset) { + meta += offset; + } else if(isExtra) { + meta += extra; + } + + return meta; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/IBlockSideRotation.java b/src/main/java/com/hbm/blocks/IBlockSideRotation.java index d24282cce..a8769a139 100644 --- a/src/main/java/com/hbm/blocks/IBlockSideRotation.java +++ b/src/main/java/com/hbm/blocks/IBlockSideRotation.java @@ -11,4 +11,27 @@ public interface IBlockSideRotation { public static int getRenderType() { return renderID; } + + // 0 1 3 2 becomes 0 2 3 1 + // I want to smoke that swedish kush because it clearly makes you fucking stupid + public static int topToBottom(int topRotation) { + switch(topRotation) { + case 1: return 2; + case 2: return 1; + default: return topRotation; + } + } + + public static boolean isOpposite(int from, int to) { + switch(from) { + case 0: return to == 1; + case 1: return to == 0; + case 2: return to == 3; + case 3: return to == 2; + case 4: return to == 5; + case 5: return to == 4; + default: return false; + } + } + } diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c80573666..6cf108b50 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -35,6 +35,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; @@ -1228,6 +1229,11 @@ public class ModBlocks { public static Block pink_double_slab; public static Block pink_stairs; + // NBT Structure wand blocks + public static Block wand_air; + public static Block wand_loot; + public static Block wand_jigsaw; + public static Material materialGas = new MaterialGas(); private static void initializeBlock() { @@ -1654,7 +1660,7 @@ public class ModBlocks { plant_dead = new BlockDeadPlant().setBlockName("plant_dead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); reeds = new BlockReeds().setBlockName("plant_reeds").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); vine_phosphor = new BlockHangingVine(thick_foliage).setBlockName("vine_phosphor").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.5F); - + waste_earth = new WasteEarth(Material.ground, true).setBlockName("waste_earth").setStepSound(Block.soundTypeGrass).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_earth"); waste_mycelium = new WasteEarth(Material.ground, true).setBlockName("waste_mycelium").setStepSound(Block.soundTypeGrass).setLightLevel(1F).setCreativeTab(MainRegistry.blockTab).setHardness(0.6F).setBlockTextureName(RefStrings.MODID + ":waste_mycelium_side"); waste_trinitite = new BlockOre(Material.sand).noFortune().setBlockName("waste_trinitite").setStepSound(Block.soundTypeSand).setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.5F).setBlockTextureName(RefStrings.MODID + ":waste_trinitite"); @@ -1836,7 +1842,7 @@ public class ModBlocks { pa_quadrupole = new BlockPAQuadrupole().setStepSound(Block.soundTypeMetal).setBlockName("pa_quadrupole").setHardness(5.0F).setResistance(10.0F); pa_dipole = new BlockPADipole().setStepSound(Block.soundTypeMetal).setBlockName("pa_dipole").setHardness(5.0F).setResistance(10.0F); pa_detector = new BlockPADetector().setStepSound(Block.soundTypeMetal).setBlockName("pa_detector").setHardness(5.0F).setResistance(10.0F); - + machine_electric_furnace_off = new MachineElectricFurnace(false).setBlockName("machine_electric_furnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_electric_furnace_on = new MachineElectricFurnace(true).setBlockName("machine_electric_furnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); machine_arc_furnace_off = new MachineArcFurnace(false).setBlockName("machine_arc_furnace_off").setHardness(5.0F).setResistance(10.0F); @@ -2354,6 +2360,10 @@ public class ModBlocks { pink_slab = new BlockPinkSlab(false, Material.wood).setBlockName("pink_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_double_slab = new BlockPinkSlab(true, Material.wood).setBlockName("pink_double_slab").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); pink_stairs = new BlockGenericStairs(pink_planks, 0).setBlockName("pink_stairs").setStepSound(Block.soundTypeWood).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pink_planks"); + + wand_air = new BlockWand(Blocks.air).setBlockName("wand_air").setBlockTextureName(RefStrings.MODID + ":wand_air"); + wand_loot = new BlockWandLoot().setBlockName("wand_loot").setBlockTextureName(RefStrings.MODID + ":wand_loot"); + wand_jigsaw = new BlockWandJigsaw().setBlockName("wand_jigsaw").setBlockTextureName(RefStrings.MODID + ":wand_jigsaw"); } private static void registerBlock() { @@ -3475,6 +3485,10 @@ public class ModBlocks { GameRegistry.registerBlock(pink_slab, pink_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_double_slab, pink_double_slab.getUnlocalizedName()); GameRegistry.registerBlock(pink_stairs, pink_stairs.getUnlocalizedName()); + + register(wand_air); + register(wand_loot); + register(wand_jigsaw); } private static void register(Block b) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index df5d158ea..da175541c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -4,6 +4,9 @@ import com.hbm.inventory.gui.GUIScreenBobble; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.world.gen.INBTTileEntityTransformable; +import com.hbm.world.gen.INBTTransformable; + import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +34,7 @@ import net.minecraft.world.World; import java.util.List; import java.util.Random; -public class BlockBobble extends BlockContainer implements IGUIProvider { +public class BlockBobble extends BlockContainer implements IGUIProvider, INBTTransformable { public BlockBobble() { super(Material.iron); @@ -136,12 +139,17 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + @Override + public int transformMeta(int meta, int coordBaseMode) { + return (meta + coordBaseMode * 4) % 16; + } + @Override public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityBobble(); } - public static class TileEntityBobble extends TileEntity { + public static class TileEntityBobble extends TileEntity implements INBTTileEntityTransformable { public BobbleType type = BobbleType.NONE; @@ -173,6 +181,11 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { super.writeToNBT(nbt); nbt.setByte("type", (byte) type.ordinal()); } + + @Override + public void transformTE(World world, int coordBaseMode) { + type = BobbleType.values()[world.rand.nextInt(BobbleType.values().length - 1) + 1]; + } } public static enum BobbleType { diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java b/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java index 724912ed3..b1ede562a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoCRT.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockMulti; import com.hbm.lib.RefStrings; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -14,7 +15,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class BlockDecoCRT extends BlockMulti { +public class BlockDecoCRT extends BlockMulti implements INBTTransformable { protected String[] variants = new String[] {"crt_clean", "crt_broken", "crt_blinking", "crt_bsod"}; @SideOnly(Side.CLIENT) protected IIcon[] icons; @@ -24,17 +25,17 @@ public class BlockDecoCRT extends BlockMulti { } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; @@ -45,12 +46,12 @@ public class BlockDecoCRT extends BlockMulti { public void registerBlockIcons(IIconRegister reg) { super.registerBlockIcons(reg); this.icons = new IIcon[variants.length]; - + for(int i = 0; i < variants.length; i++) { this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + variants[i]); } } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -61,7 +62,7 @@ public class BlockDecoCRT extends BlockMulti { public int damageDropped(int meta) { return (Math.abs(meta) % 16) / 4; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; @@ -73,4 +74,10 @@ public class BlockDecoCRT extends BlockMulti { public int getSubCount() { return 4; } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDecoModel(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java b/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java index d70fd5fe4..f10edc069 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoModel.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockEnumMulti; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.material.Material; @@ -11,14 +12,14 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockDecoModel extends BlockEnumMulti { - +public class BlockDecoModel extends BlockEnumMulti implements INBTTransformable { + public BlockDecoModel(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { super(mat, theEnum, multiName, multiTexture); } - + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType() { return renderID; @@ -33,18 +34,18 @@ public class BlockDecoModel extends BlockEnumMulti { public boolean renderAsNormalBlock() { return false; } - + //Did somebody say - pain? //Alright fuckers, looks like 2/b010 = North, 3/b011 = South, 4/b100 = West, 5/b101 = East for sides. //I'll just opt for something similar (0/b00 North, 1/b01 South, 2/b10 West, 3/b11 East) - + //Assumes meta is using the third and fourth bits. @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + int meta; - + if((i & 1) != 1) meta = i >> 1; //For North(b00>b00) and South(b10>b01), shift bits right by one else { @@ -53,15 +54,15 @@ public class BlockDecoModel extends BlockEnumMulti { else meta = 3; //For East(b01>b11), just set to 3 } - + world.setBlockMetadataWithNotify(x, y, z, (meta << 2) | stack.getItemDamage(), 2); } - + @Override public int damageDropped(int meta) { return meta & 3; } - + //These are separate because they have to be constant private float mnX = 0.0F; //min private float mnY = 0.0F; @@ -69,7 +70,7 @@ public class BlockDecoModel extends BlockEnumMulti { private float mxX = 1.0F; //max private float mxY = 1.0F; private float mxZ = 1.0F; - + public BlockDecoModel setBlockBoundsTo(float minX, float minY, float minZ, float maxX, float maxY, float maxZ) { mnX = minX; mnY = minY; @@ -77,10 +78,10 @@ public class BlockDecoModel extends BlockEnumMulti { mxX = maxX; mxY = maxY; mxZ = maxZ; - + return this; } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { switch(world.getBlockMetadata(x, y, z) >> 2) { @@ -98,10 +99,39 @@ public class BlockDecoModel extends BlockEnumMulti { break; } } - + @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } + + @Override + public int transformMeta(int meta, int coordBaseMode) { + //N: 0b00, S: 0b01, W: 0b10, E: 0b11 + int rot = meta >> 2; + int type = meta & 3; + + switch(coordBaseMode) { + default: //South + break; + case 1: //West + if((rot & 3) < 2) //N & S can just have bits toggled + rot = rot ^ 3; + else //W & E can just have first bit set to 0 + rot = rot ^ 2; + break; + case 2: //North + rot = rot ^ 1; //N, W, E & S can just have first bit toggled + break; + case 3: //East + if((rot & 3) < 2)//N & S can just have second bit set to 1 + rot = rot ^ 2; + else //W & E can just have bits toggled + rot = rot ^ 3; + break; + } + //genuinely like. why did i do that + return (rot << 2) | type; //To accommodate for BlockDecoModel's shift in the rotation bits; otherwise, simply bit-shift right and or any non-rotation meta after + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java b/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java index a11061fa0..c35dd1d3b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDecoToaster.java @@ -2,6 +2,7 @@ package com.hbm.blocks.generic; import com.hbm.blocks.BlockMulti; import com.hbm.lib.RefStrings; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -16,7 +17,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class BlockDecoToaster extends BlockMulti { +public class BlockDecoToaster extends BlockMulti implements INBTTransformable { protected String[] variants = new String[] {"toaster_iron", "toaster_steel", "toaster_wood"}; @SideOnly(Side.CLIENT) protected IIcon[] icons; @@ -26,17 +27,17 @@ public class BlockDecoToaster extends BlockMulti { } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; @@ -47,12 +48,12 @@ public class BlockDecoToaster extends BlockMulti { public void registerBlockIcons(IIconRegister reg) { super.registerBlockIcons(reg); this.icons = new IIcon[variants.length]; - + for(int i = 0; i < variants.length; i++) { this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + variants[i]); } } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { @@ -63,7 +64,7 @@ public class BlockDecoToaster extends BlockMulti { public int damageDropped(int meta) { return (Math.abs(meta) % 12) / 4; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; @@ -90,4 +91,10 @@ public class BlockDecoToaster extends BlockMulti { this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDecoModel(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockPipe.java b/src/main/java/com/hbm/blocks/generic/BlockPipe.java index a41d6cfdf..27eaf3b27 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPipe.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPipe.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.blocks.ITooltipProvider; import com.hbm.lib.RefStrings; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -16,7 +17,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; -public class BlockPipe extends Block implements ITooltipProvider { +public class BlockPipe extends Block implements ITooltipProvider, INBTTransformable { @SideOnly(Side.CLIENT) private IIcon sideIcon; @@ -24,7 +25,7 @@ public class BlockPipe extends Block implements ITooltipProvider { public IIcon frameIcon; @SideOnly(Side.CLIENT) public IIcon meshIcon; - + private String sideString; public int rType = 0; //because registering either new renderer classes or making new block classes is a pain in the ass @@ -33,7 +34,7 @@ public class BlockPipe extends Block implements ITooltipProvider { this.sideString = tex; this.rType = rType; } - + @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { @@ -42,7 +43,7 @@ public class BlockPipe extends Block implements ITooltipProvider { this.frameIcon = iconRegister.registerIcon(RefStrings.MODID + ":pipe_frame"); this.meshIcon = iconRegister.registerIcon(RefStrings.MODID + ":pipe_mesh"); } - + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int metadata) { @@ -92,4 +93,10 @@ public class BlockPipe extends Block implements ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { list.add("Purely decorative"); } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaPillar(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockWand.java b/src/main/java/com/hbm/blocks/generic/BlockWand.java new file mode 100644 index 000000000..c25c390eb --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockWand.java @@ -0,0 +1,51 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class BlockWand extends Block { + + public final Block exportAs; + + public BlockWand(Block exportAs) { + super(Material.glass); + this.exportAs = exportAs; + setBlockBounds(1F/16F, 1F/16F, 1F/16F, 15F/16F, 15F/16F, 15F/16F); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side) { + Block block = world.getBlock(x, y, z); + + return block != this; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java b/src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java new file mode 100644 index 000000000..a8a44a55e --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockWandJigsaw.java @@ -0,0 +1,387 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.IBlockSideRotation; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toserver.NBTControlPacket; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BufferUtil; +import com.hbm.util.I18nUtil; +import com.hbm.world.gen.INBTTransformable; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.gui.GuiButton; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockWandJigsaw extends BlockContainer implements IBlockSideRotation, INBTTransformable, IGUIProvider, ILookOverlay { + + private IIcon iconTop; + private IIcon iconSide; + private IIcon iconBack; + + public BlockWandJigsaw() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityWandJigsaw(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw_top"); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw_side"); + this.iconBack = iconRegister.registerIcon(RefStrings.MODID + ":wand_jigsaw_back"); + } + + @Override + public IIcon getIcon(int side, int meta) { + if(side == meta) return blockIcon; + if(IBlockSideRotation.isOpposite(side, meta)) return iconBack; + if(side <= 1) return iconTop; + if(side > 3 && meta <= 1) return iconTop; + return iconSide; + } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + if(side == 0) return IBlockSideRotation.topToBottom(getRotationFromSide(world, x, y, z, 1)); + + int meta = world.getBlockMetadata(x, y, z); + if(side == meta || IBlockSideRotation.isOpposite(side, meta)) return 0; + + // downwards facing has no changes, upwards flips anything not handled already + if(meta == 0) return 0; + if(meta == 1) return 3; + + // top (and bottom) is rotated fairly normally + if(side == 1) { + switch(meta) { + case 2: return 3; + case 3: return 0; + case 4: return 1; + case 5: return 2; + } + } + + // you know what I aint explaining further, it's a fucking mess here + if(meta == 2) return side == 4 ? 2 : 1; + if(meta == 3) return side == 4 ? 1 : 2; + if(meta == 4) return side == 2 ? 1 : 2; + if(meta == 5) return side == 2 ? 2 : 1; + + return 0; + } + + @Override + public int getRenderType() { + return IBlockSideRotation.getRenderType(); + } + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandJigsaw)) return false; + + TileEntityWandJigsaw jigsaw = (TileEntityWandJigsaw) te; + + if(!player.isSneaking()) { + Block block = getBlock(world, player.getHeldItem()); + if(block == ModBlocks.wand_air) block = Blocks.air; + + if(block != null && block != ModBlocks.wand_jigsaw && block != ModBlocks.wand_loot) { + jigsaw.replaceBlock = block; + jigsaw.replaceMeta = player.getHeldItem().getItemDamage(); + + return true; + } + + if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + + return true; + } + + return false; + } + + private Block getBlock(World world, ItemStack stack) { + if(stack == null) return null; + if(!(stack.getItem() instanceof ItemBlock)) return null; + + return ((ItemBlock) stack.getItem()).field_150939_a; + } + + @Override + @SideOnly(Side.CLIENT) + public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GuiWandJigsaw((TileEntityWandJigsaw) world.getTileEntity(x, y, z)); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return null; + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + if(!(te instanceof TileEntityWandJigsaw)) return; + TileEntityWandJigsaw jigsaw = (TileEntityWandJigsaw) te; + + List text = new ArrayList(); + + text.add(EnumChatFormatting.GRAY + "Target pool: " + EnumChatFormatting.RESET + jigsaw.pool); + text.add(EnumChatFormatting.GRAY + "Name: " + EnumChatFormatting.RESET + jigsaw.name); + text.add(EnumChatFormatting.GRAY + "Target name: " + EnumChatFormatting.RESET + jigsaw.target); + text.add(EnumChatFormatting.GRAY + "Turns into: " + EnumChatFormatting.RESET + GameRegistry.findUniqueIdentifierFor(jigsaw.replaceBlock).toString()); + text.add(EnumChatFormatting.GRAY + " with meta: " + EnumChatFormatting.RESET + jigsaw.replaceMeta); + text.add(EnumChatFormatting.GRAY + "Selection/Placement priority: " + EnumChatFormatting.RESET + jigsaw.selectionPriority + "/" + jigsaw.placementPriority); + text.add(EnumChatFormatting.GRAY + "Joint type: " + EnumChatFormatting.RESET + (jigsaw.isRollable ? "Rollable" : "Aligned")); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + + public static class TileEntityWandJigsaw extends TileEntityLoadedBase implements IControlReceiver { + + private int selectionPriority = 0; // higher priority = this jigsaw block is selected first for generation + private int placementPriority = 0; // higher priority = children of this jigsaw block are checked for jigsaw blocks of their own and selected first + private String pool = "default"; + private String name = "default"; + private String target = "default"; + private Block replaceBlock = Blocks.air; + private int replaceMeta = 0; + private boolean isRollable = true; // sets joint type, rollable joints can be placed in any orientation for vertical jigsaw connections + + @Override + public void updateEntity() { + if(!worldObj.isRemote) { + networkPackNT(15); + } + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(selectionPriority); + buf.writeInt(placementPriority); + BufferUtil.writeString(buf, pool); + BufferUtil.writeString(buf, name); + BufferUtil.writeString(buf, target); + buf.writeInt(Block.getIdFromBlock(replaceBlock)); + buf.writeInt(replaceMeta); + buf.writeBoolean(isRollable); + } + + @Override + public void deserialize(ByteBuf buf) { + selectionPriority = buf.readInt(); + placementPriority = buf.readInt(); + pool = BufferUtil.readString(buf); + name = BufferUtil.readString(buf); + target = BufferUtil.readString(buf); + replaceBlock = Block.getBlockById(buf.readInt()); + replaceMeta = buf.readInt(); + isRollable = buf.readBoolean(); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("direction", this.getBlockMetadata()); + + nbt.setInteger("selection", selectionPriority); + nbt.setInteger("placement", placementPriority); + nbt.setString("pool", pool); + nbt.setString("name", name); + nbt.setString("target", target); + nbt.setString("block", GameRegistry.findUniqueIdentifierFor(replaceBlock).toString()); + nbt.setInteger("meta", replaceMeta); + nbt.setBoolean("roll", isRollable); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + selectionPriority = nbt.getInteger("selection"); + placementPriority = nbt.getInteger("placement"); + pool = nbt.getString("pool"); + name = nbt.getString("name"); + target = nbt.getString("target"); + replaceBlock = Block.getBlockFromName(nbt.getString("block")); + replaceMeta = nbt.getInteger("meta"); + isRollable = nbt.getBoolean("roll"); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return true; + } + + @Override + public void receiveControl(NBTTagCompound nbt) { + readFromNBT(nbt); + markDirty(); + } + + } + + public static class GuiWandJigsaw extends GuiScreen { + + private final TileEntityWandJigsaw jigsaw; + + private GuiTextField textPool; + private GuiTextField textName; + private GuiTextField textTarget; + + private GuiTextField textSelectionPriority; + private GuiTextField textPlacementPriority; + + private GuiButton jointToggle; + + public GuiWandJigsaw(TileEntityWandJigsaw jigsaw) { + this.jigsaw = jigsaw; + } + + @Override + public void initGui() { + Keyboard.enableRepeatEvents(true); + + textPool = new GuiTextField(fontRendererObj, this.width / 2 - 150, 50, 300, 20); + textPool.setText(jigsaw.pool); + + textName = new GuiTextField(fontRendererObj, this.width / 2 - 150, 100, 140, 20); + textName.setText(jigsaw.name); + + textTarget = new GuiTextField(fontRendererObj, this.width / 2 + 10, 100, 140, 20); + textTarget.setText(jigsaw.target); + + textSelectionPriority = new GuiTextField(fontRendererObj, this.width / 2 - 150, 150, 90, 20); + textSelectionPriority.setText("" + jigsaw.selectionPriority); + + textPlacementPriority = new GuiTextField(fontRendererObj, this.width / 2 - 40, 150, 90, 20); + textPlacementPriority.setText("" + jigsaw.placementPriority); + + jointToggle = new GuiButton(0, this.width / 2 + 60, 150, 90, 20, jigsaw.isRollable ? "Rollable" : "Aligned"); + } + + @Override + public void drawScreen(int mouseX, int mouseY, float partialTicks) { + drawDefaultBackground(); + + drawString(fontRendererObj, "Target pool:", this.width / 2 - 150, 37, 0xA0A0A0); + textPool.drawTextBox(); + + drawString(fontRendererObj, "Name:", this.width / 2 - 150, 87, 0xA0A0A0); + textName.drawTextBox(); + + drawString(fontRendererObj, "Target name:", this.width / 2 + 10, 87, 0xA0A0A0); + textTarget.drawTextBox(); + + drawString(fontRendererObj, "Selection priority:", this.width / 2 - 150, 137, 0xA0A0A0); + textSelectionPriority.drawTextBox(); + + drawString(fontRendererObj, "Placement priority:", this.width / 2 - 40, 137, 0xA0A0A0); + textPlacementPriority.drawTextBox(); + + drawString(fontRendererObj, "Joint type:", this.width / 2 + 60, 137, 0xA0A0A0); + jointToggle.drawButton(mc, mouseX, mouseY); + + super.drawScreen(mouseX, mouseY, partialTicks); + } + + @Override + public void onGuiClosed() { + Keyboard.enableRepeatEvents(false); + + NBTTagCompound data = new NBTTagCompound(); + jigsaw.writeToNBT(data); + + data.setString("pool", textPool.getText()); + data.setString("name", textName.getText()); + data.setString("target", textTarget.getText()); + + try { data.setInteger("selection", Integer.parseInt(textSelectionPriority.getText())); } catch(Exception ex) {} + try { data.setInteger("placement", Integer.parseInt(textPlacementPriority.getText())); } catch(Exception ex) {} + + data.setBoolean("roll", jointToggle.displayString == "Rollable"); + + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, jigsaw.xCoord, jigsaw.yCoord, jigsaw.zCoord)); + } + + @Override + protected void keyTyped(char typedChar, int keyCode) { + super.keyTyped(typedChar, keyCode); + textPool.textboxKeyTyped(typedChar, keyCode); + textName.textboxKeyTyped(typedChar, keyCode); + textTarget.textboxKeyTyped(typedChar, keyCode); + textSelectionPriority.textboxKeyTyped(typedChar, keyCode); + textPlacementPriority.textboxKeyTyped(typedChar, keyCode); + } + + @Override + protected void mouseClicked(int mouseX, int mouseY, int mouseButton) { + super.mouseClicked(mouseX, mouseY, mouseButton); + textPool.mouseClicked(mouseX, mouseY, mouseButton); + textName.mouseClicked(mouseX, mouseY, mouseButton); + textTarget.mouseClicked(mouseX, mouseY, mouseButton); + textSelectionPriority.mouseClicked(mouseX, mouseY, mouseButton); + textPlacementPriority.mouseClicked(mouseX, mouseY, mouseButton); + + if(jointToggle.mousePressed(mc, mouseX, mouseY)) { + System.out.println("displayString: " + jointToggle.displayString); + jointToggle.displayString = jointToggle.displayString == "Rollable" ? "Aligned" : "Rollable"; + } + } + + } + +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java b/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java new file mode 100644 index 000000000..80b1f3b92 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockWandLoot.java @@ -0,0 +1,338 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +import com.hbm.blocks.IBlockSideRotation; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.StructureConfig; +import com.hbm.itempool.ItemPool; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BufferUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.LootGenerator; +import com.hbm.world.gen.INBTTileEntityTransformable; +import com.mojang.authlib.GameProfile; + +import api.hbm.block.IToolable; +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +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.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.WeightedRandomChestContent; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.FakePlayer; +import net.minecraftforge.common.util.FakePlayerFactory; + +public class BlockWandLoot extends BlockContainer implements ILookOverlay, IToolable, ITooltipProvider, IBlockSideRotation { + + @SideOnly(Side.CLIENT) protected IIcon iconTop; + + public BlockWandLoot() { + super(Material.iron); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":wand_loot"); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":wand_loot_top"); + } + + @Override + public IIcon getIcon(int side, int meta) { + return (side <= 1) ? iconTop : blockIcon; + } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + if(side == 0) return IBlockSideRotation.topToBottom(world.getBlockMetadata(x, y, z)); + if(side == 1) return world.getBlockMetadata(x, y, z); + return 0; + } + + @Override + public int getRenderType() { + return IBlockSideRotation.getRenderType(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 0, 2); + if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 1, 2); + + TileEntity te = world.getTileEntity(x, y, z); + if(!(te instanceof TileEntityWandLoot)) return; + ((TileEntityWandLoot) te).placedRotation = player.rotationYaw; + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandLoot)) return; + + TileEntityWandLoot loot = (TileEntityWandLoot) te; + + List text = new ArrayList(); + text.add("Will replace with: " + loot.replaceBlock.getUnlocalizedName()); + text.add(" meta: " + loot.replaceMeta); + text.add("Loot pool: " + loot.poolName); + if(loot.replaceBlock != ModBlocks.deco_loot) { + text.add("Minimum items: " + loot.minItems); + text.add("Maximum items: " + loot.maxItems); + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add("Define loot crates/piles in .nbt structures"); + list.add(EnumChatFormatting.GOLD + "Use screwdriver to increase/decrease minimum loot"); + list.add(EnumChatFormatting.GOLD + "Use hand drill to increase/decrease maximum loot"); + list.add(EnumChatFormatting.GOLD + "Use defuser to cycle loot types"); + list.add(EnumChatFormatting.GOLD + "Use container block to set the block that spawns with loot inside"); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandLoot)) return false; + + TileEntityWandLoot loot = (TileEntityWandLoot) te; + + if(!player.isSneaking()) { + + Block block = getLootableBlock(world, player.getHeldItem()); + + if(block != null) { + loot.replaceBlock = block; + loot.replaceMeta = player.getHeldItem().getItemDamage(); + + List poolNames = loot.getPoolNames(block == ModBlocks.deco_loot); + if(!poolNames.contains(loot.poolName)) { + loot.poolName = poolNames.get(0); + } + + return true; + } + } + + return false; + } + + private Block getLootableBlock(World world, ItemStack stack) { + if(stack == null) return null; + + if(stack.getItem() instanceof ItemBlock) { + Block block = ((ItemBlock) stack.getItem()).field_150939_a; + + if(block == ModBlocks.deco_loot) return block; + + if(block instanceof ITileEntityProvider) { + TileEntity te = ((ITileEntityProvider) block).createNewTileEntity(world, 12); + if(te instanceof IInventory) return block; + } + } + + return null; + } + + @Override + public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityWandLoot)) return false; + + TileEntityWandLoot loot = (TileEntityWandLoot) te; + + switch(tool) { + case SCREWDRIVER: + if(player.isSneaking()) { + loot.minItems--; + if(loot.minItems < 0) loot.minItems = 0; + } else { + loot.minItems++; + loot.maxItems = Math.max(loot.minItems, loot.maxItems); + } + + return true; + + case HAND_DRILL: + if(player.isSneaking()) { + loot.maxItems--; + if(loot.maxItems < 0) loot.maxItems = 0; + loot.minItems = Math.min(loot.minItems, loot.maxItems); + } else { + loot.maxItems++; + } + + return true; + + case DEFUSER: + List poolNames = loot.getPoolNames(loot.replaceBlock == ModBlocks.deco_loot); + int index = poolNames.indexOf(loot.poolName); + + index += player.isSneaking() ? -1 : 1; + index = MathHelper.clamp_int(index, 0, poolNames.size() - 1); + + loot.poolName = poolNames.get(index); + + return true; + + default: return false; + } + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityWandLoot(); + } + + public static class TileEntityWandLoot extends TileEntityLoadedBase implements INBTTileEntityTransformable { + + private boolean triggerReplace; + + private Block replaceBlock = ModBlocks.deco_loot; + private int replaceMeta; + + private String poolName = LootGenerator.LOOT_BOOKLET; + private int minItems; + private int maxItems = 1; + + private float placedRotation; + + private static final GameProfile FAKE_PROFILE = new GameProfile(UUID.fromString("839eb18c-50bc-400c-8291-9383f09763e7"), "[NTM]"); + private static FakePlayer fakePlayer; + + @Override + public void updateEntity() { + if(!worldObj.isRemote) { + if(triggerReplace) { + // On the first tick of this TE, replace with intended block and fill with loot + replace(); + } else { + networkPackNT(15); + } + } + } + + private void replace() { + WeightedRandomChestContent[] pool = ItemPool.getPool(poolName); + + worldObj.setBlock(xCoord, yCoord, zCoord, replaceBlock, replaceMeta, 2); + + TileEntity te = worldObj.getTileEntity(xCoord, yCoord, zCoord); + + if(te instanceof IInventory) { + int count = minItems; + if(maxItems - minItems > 0) count += worldObj.rand.nextInt(maxItems - minItems); + WeightedRandomChestContent.generateChestContents(worldObj.rand, pool, (IInventory) te, count); + } else if(te instanceof BlockLoot.TileEntityLoot) { + LootGenerator.applyLoot(worldObj, xCoord, yCoord, zCoord, poolName); + } + + // Shouldn't happen but let's guard anyway, if it fails we just don't rotate the chest block correctly + if(!(worldObj instanceof WorldServer)) return; + + if(fakePlayer == null || fakePlayer.worldObj != worldObj) { + fakePlayer = FakePlayerFactory.get((WorldServer)worldObj, FAKE_PROFILE); + } + + fakePlayer.rotationYaw = fakePlayer.rotationYawHead = placedRotation; + + ItemStack fakeStack = new ItemStack(replaceBlock, 1, replaceMeta); + + replaceBlock.onBlockPlacedBy(worldObj, xCoord, yCoord, zCoord, fakePlayer, fakeStack); + } + + private List getPoolNames(boolean loot) { + if(loot) return Arrays.asList(LootGenerator.getLootNames()); + + List names = new ArrayList<>(); + names.addAll(ItemPool.pools.keySet()); + return names; + } + + @Override + public void transformTE(World world, int coordBaseMode) { + triggerReplace = !StructureConfig.debugStructures; + placedRotation = MathHelper.wrapAngleTo180_float(placedRotation + coordBaseMode * 90); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + Block writeBlock = replaceBlock == null ? ModBlocks.deco_loot : replaceBlock; + nbt.setString("block", GameRegistry.findUniqueIdentifierFor(writeBlock).toString()); + nbt.setInteger("meta", replaceMeta); + nbt.setInteger("min", minItems); + nbt.setInteger("max", maxItems); + nbt.setString("pool", poolName); + nbt.setFloat("rot", placedRotation); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + replaceBlock = Block.getBlockFromName(nbt.getString("block")); + replaceMeta = nbt.getInteger("meta"); + minItems = nbt.getInteger("min"); + maxItems = nbt.getInteger("max"); + poolName = nbt.getString("pool"); + placedRotation = nbt.getFloat("rot"); + + if(replaceBlock == null) replaceBlock = ModBlocks.deco_loot; + } + + @Override + public void serialize(ByteBuf buf) { + buf.writeInt(Block.getIdFromBlock(replaceBlock)); + buf.writeInt(replaceMeta); + buf.writeInt(minItems); + buf.writeInt(maxItems); + BufferUtil.writeString(buf, poolName); + } + + @Override + public void deserialize(ByteBuf buf) { + replaceBlock = Block.getBlockById(buf.readInt()); + replaceMeta = buf.readInt(); + minItems = buf.readInt(); + maxItems = buf.readInt(); + poolName = BufferUtil.readString(buf); + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/DecoBlock.java b/src/main/java/com/hbm/blocks/generic/DecoBlock.java index 9037b4f6a..bf25850eb 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoBlock.java +++ b/src/main/java/com/hbm/blocks/generic/DecoBlock.java @@ -6,6 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.tileentity.deco.TileEntityDecoBlock; +import com.hbm.world.gen.INBTTransformable; import api.hbm.block.IToolable; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -24,8 +25,8 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class DecoBlock extends BlockContainer implements IToolable { - +public class DecoBlock extends BlockContainer implements IToolable, INBTTransformable { + Random rand = new Random(); public DecoBlock(Material p_i45386_1_) { @@ -36,7 +37,7 @@ public class DecoBlock extends BlockContainer implements IToolable { public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { if(tool != ToolType.SCREWDRIVER) return false; if(this != ModBlocks.steel_wall && this != ModBlocks.steel_corner) return false; - + int meta = world.getBlockMetadata(x, y, z); if(!player.isSneaking()) { @@ -50,7 +51,7 @@ public class DecoBlock extends BlockContainer implements IToolable { else if(meta == 2) world.setBlockMetadataWithNotify(x, y, z, 4, 3); else if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 2, 3); } - + return true; } @@ -65,7 +66,7 @@ public class DecoBlock extends BlockContainer implements IToolable { public static int renderIDBeam = RenderingRegistry.getNextAvailableRenderId(); public static int renderIDWall = RenderingRegistry.getNextAvailableRenderId(); public static int renderIDCorner = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ if(this == ModBlocks.steel_wall) return renderIDWall; @@ -73,32 +74,32 @@ public class DecoBlock extends BlockContainer implements IToolable { if(this == ModBlocks.steel_beam) return renderIDBeam; return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { return Item.getItemFromBlock(this); } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) world.setBlockMetadataWithNotify(x, y, z, 3, 2); if(i == 1) world.setBlockMetadataWithNotify(x, y, z, 4, 2); if(i == 2) world.setBlockMetadataWithNotify(x, y, z, 2, 2); if(i == 3) world.setBlockMetadataWithNotify(x, y, z, 5, 2); } - + @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { int te = world.getBlockMetadata(x, y, z); @@ -141,14 +142,14 @@ public class DecoBlock extends BlockContainer implements IToolable { this.setBlockBoundsBasedOnState(world, x, y, z); return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); } - + @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity collider) { - + if(this == ModBlocks.steel_corner) { int meta = world.getBlockMetadata(x, y, z); List bbs = new ArrayList(); - + switch(meta) { case 2: bbs.add(AxisAlignedBB.getBoundingBox(x + 0.25D, y + 0D, z + 0.875D, x + 1D, y + 1D, z + 1D)); @@ -171,7 +172,7 @@ public class DecoBlock extends BlockContainer implements IToolable { bbs.add(AxisAlignedBB.getBoundingBox(x + 0.25D, y + 0D, z + 0D, x + 1D, y + 1D, z + 0.125D)); break; } - + for(AxisAlignedBB bb : bbs) { if(aabb.intersectsWith(bb)) { list.add(bb); @@ -181,4 +182,9 @@ public class DecoBlock extends BlockContainer implements IToolable { super.addCollisionBoxesToList(world, x, y, z, aabb, list, collider); } } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java b/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java index 481236f78..109cabbc5 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java +++ b/src/main/java/com/hbm/blocks/generic/DecoPoleSatelliteReceiver.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import com.hbm.tileentity.deco.TileEntityDecoPoleSatelliteReceiver; +import com.hbm.world.gen.INBTTransformable; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -10,7 +11,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class DecoPoleSatelliteReceiver extends BlockContainer { +public class DecoPoleSatelliteReceiver extends BlockContainer implements INBTTransformable { public DecoPoleSatelliteReceiver(Material p_i45386_1_) { super(p_i45386_1_); @@ -20,26 +21,26 @@ public class DecoPoleSatelliteReceiver extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return new TileEntityDecoPoleSatelliteReceiver(); } - + @Override public int getRenderType(){ return -1; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -58,4 +59,9 @@ public class DecoPoleSatelliteReceiver extends BlockContainer { } } -} + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java b/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java index 6d94427e2..e7143aae6 100644 --- a/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java +++ b/src/main/java/com/hbm/blocks/generic/DecoTapeRecorder.java @@ -1,5 +1,7 @@ package com.hbm.blocks.generic; +import com.hbm.world.gen.INBTTransformable; + import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; @@ -9,7 +11,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class DecoTapeRecorder extends BlockContainer { +public class DecoTapeRecorder extends BlockContainer implements INBTTransformable { public DecoTapeRecorder(Material p_i45386_1_) { super(p_i45386_1_); @@ -19,28 +21,28 @@ public class DecoTapeRecorder extends BlockContainer { public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { return null; } - + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - + @Override public int getRenderType(){ return renderID; } - + @Override public boolean isOpaqueCube() { return false; } - + @Override public boolean renderAsNormalBlock() { return false; } - + @Override public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - + if(i == 0) { world.setBlockMetadataWithNotify(x, y, z, 2, 2); @@ -59,4 +61,9 @@ public class DecoTapeRecorder extends BlockContainer { } } -} + @Override + public int transformMeta(int meta, int coordBaseMode) { + return INBTTransformable.transformMetaDeco(meta, coordBaseMode); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/machine/Spotlight.java b/src/main/java/com/hbm/blocks/machine/Spotlight.java index c40a9ef9c..f5a89d404 100644 --- a/src/main/java/com/hbm/blocks/machine/Spotlight.java +++ b/src/main/java/com/hbm/blocks/machine/Spotlight.java @@ -7,6 +7,7 @@ import java.util.Random; import com.hbm.blocks.BlockEnums.LightType; import com.hbm.blocks.ISpotlight; import com.hbm.main.ResourceManager; +import com.hbm.world.gen.INBTTransformable; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; @@ -14,6 +15,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockSlab; import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; @@ -22,7 +24,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.model.obj.WavefrontObject; import net.minecraftforge.common.util.ForgeDirection; -public class Spotlight extends Block implements ISpotlight { +public class Spotlight extends Block implements ISpotlight, INBTTransformable { // I'd be extending the ReinforcedLamp class if it wasn't for the inverted behaviour of these specific lights // I want these blocks to be eminently useful, so removing the need for redstone by default is desired, @@ -38,7 +40,7 @@ public class Spotlight extends Block implements ISpotlight { this.beamLength = beamLength; this.type = type; this.isOn = isOn; - + this.setHardness(1F); if(isOn) setLightLevel(1.0F); @@ -123,6 +125,8 @@ public class Spotlight extends Block implements ISpotlight { } private boolean updatePower(World world, int x, int y, int z) { + if(isBroken(world.getBlockMetadata(x, y, z))) return false; + boolean isPowered = world.isBlockIndirectlyGettingPowered(x, y, z); if(isOn && isPowered) { world.scheduleBlockUpdate(x, y, z, this, 4); @@ -148,7 +152,7 @@ public class Spotlight extends Block implements ISpotlight { @Override public void updateTick(World world, int x, int y, int z, Random p_149674_5_) { if (world.isRemote) return; - + if (isOn && world.isBlockIndirectlyGettingPowered(x, y, z)) { world.setBlock(x, y, z, getOff(), world.getBlockMetadata(x, y, z), 2); } @@ -159,6 +163,7 @@ public class Spotlight extends Block implements ISpotlight { public void onNeighborBlockChange(World world, int x, int y, int z, Block neighborBlock) { if(world.isRemote) return; if(neighborBlock instanceof SpotlightBeam) return; + if(neighborBlock == Blocks.air) return; ForgeDirection dir = getDirection(world, x, y, z); @@ -172,13 +177,13 @@ public class Spotlight extends Block implements ISpotlight { updateBeam(world, x, y, z); } - + @Override public boolean canPlaceBlockOnSide(World world, int x, int y, int z, int side) { if(!super.canPlaceBlockOnSide(world, x, y, z, side)) return false; - + ForgeDirection dir = ForgeDirection.getOrientation(side); - + return canPlace(world, x, y, z, dir); } @@ -215,6 +220,10 @@ public class Spotlight extends Block implements ISpotlight { return ForgeDirection.getOrientation(metadata >> 1); } + public boolean isBroken(int metadata) { + return (metadata & 1) == 1; + } + @Override public Item getItemDropped(int i, Random r, int j) { return Item.getItemFromBlock(getOn()); @@ -292,20 +301,20 @@ public class Spotlight extends Block implements ISpotlight { backPropagate(world, x, y, z, dir); } - + protected Block getOff() { if(this == ModBlocks.spotlight_incandescent) return ModBlocks.spotlight_incandescent_off; if(this == ModBlocks.spotlight_fluoro) return ModBlocks.spotlight_fluoro_off; if(this == ModBlocks.spotlight_halogen) return ModBlocks.spotlight_halogen_off; - + return this; } - + protected Block getOn() { if(this == ModBlocks.spotlight_incandescent_off) return ModBlocks.spotlight_incandescent; if(this == ModBlocks.spotlight_fluoro_off) return ModBlocks.spotlight_fluoro; if(this == ModBlocks.spotlight_halogen_off) return ModBlocks.spotlight_halogen; - + return this; } @@ -313,4 +322,19 @@ public class Spotlight extends Block implements ISpotlight { public int getBeamLength() { return this.beamLength; } -} + + @Override + public int transformMeta(int meta, int coordBaseMode) { + // +1 to set as broken, won't turn on until broken and replaced + return (INBTTransformable.transformMetaDeco(meta >> 1, coordBaseMode) << 1) + 1; + } + + @Override + public Block transformBlock(Block block) { + if(block == ModBlocks.spotlight_incandescent) return ModBlocks.spotlight_incandescent_off; + if(block == ModBlocks.spotlight_fluoro) return ModBlocks.spotlight_fluoro_off; + if(block == ModBlocks.spotlight_halogen) return ModBlocks.spotlight_halogen_off; + return block; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/config/StructureConfig.java b/src/main/java/com/hbm/config/StructureConfig.java index 944a7cbb0..2f6bb9bf9 100644 --- a/src/main/java/com/hbm/config/StructureConfig.java +++ b/src/main/java/com/hbm/config/StructureConfig.java @@ -7,36 +7,40 @@ import com.hbm.main.MainRegistry; import net.minecraftforge.common.config.Configuration; public class StructureConfig { - + public static int enableStructures = 2; - + public static int structureMinChunks = 8; public static int structureMaxChunks = 24; - + public static double lootAmountFactor = 1D; - + + public static boolean debugStructures = false; + public static void loadFromConfig(Configuration config) { - + final String CATEGORY_STRUCTURES = CommonConfig.CATEGORY_STRUCTURES; String unparsedStructureFlag = CommonConfig.createConfigString(config, CATEGORY_STRUCTURES, "5.00_enableStructures", "Flag for whether modern NTM structures will spawn. Valid values are true|false|flag - flag will respect the \"Generate Structures\" world flag.", "flag"); enableStructures = CommonConfig.parseStructureFlag(unparsedStructureFlag); - + structureMinChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.01_structureMinChunks", "Minimum non-zero distance between structures in chunks (Settings lower than 8 may be problematic).", 8); structureMaxChunks = CommonConfig.createConfigInt(config, CATEGORY_STRUCTURES, "5.02_structureMaxChunks", "Maximum non-zero distance between structures in chunks.", 24); - + lootAmountFactor = CommonConfig.createConfigDouble(config, CATEGORY_STRUCTURES, "5.03_lootAmountFactor", "General factor for loot spawns. Applies to spawned IInventories, not loot blocks.", 1D); - + + debugStructures = CommonConfig.createConfigBool(config, CATEGORY_STRUCTURES, "5.04_debugStructures", "If enabled, special structure blocks like jigsaw blocks will not be transformed after generating", false); + structureMinChunks = CommonConfig.setDef(structureMinChunks, 8); structureMaxChunks = CommonConfig.setDef(structureMaxChunks, 24); - + if(structureMinChunks > structureMaxChunks) { MainRegistry.logger.error("Fatal error config: Minimum value has been set higher than the maximum value!"); MainRegistry.logger.error(String.format(Locale.US, "Errored values will default back to %1$d and %2$d respectively, PLEASE REVIEW CONFIGURATION DESCRIPTION BEFORE MEDDLING WITH VALUES!", 8, 24)); structureMinChunks = 8; structureMaxChunks = 24; } - + } } diff --git a/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java b/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java index 5086e6388..8405b0f77 100644 --- a/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java +++ b/src/main/java/com/hbm/crafting/handlers/MKUCraftingHandler.java @@ -6,50 +6,52 @@ import java.util.List; import java.util.Random; import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBookLore; import net.minecraft.inventory.InventoryCrafting; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; import net.minecraft.world.World; public class MKUCraftingHandler implements IRecipe { - + public static ItemStack[] MKURecipe; private static long lastSeed; @Override public boolean matches(InventoryCrafting inventory, World world) { - + if(world == null) return false; - + if(MKURecipe == null || world.getSeed() != lastSeed) generateRecipe(world); - + for(int i = 0; i < 9; i++) { ItemStack stack = inventory.getStackInRowAndColumn(i % 3, i / 3); ItemStack recipe = MKURecipe[i]; - + if(stack == null && recipe == null) continue; - + if(stack != null && recipe != null && stack.getItem() == recipe.getItem() && stack.getItemDamage() == recipe.getItemDamage()) continue; - + return false; } - + return true; } - + public static void generateRecipe(World world) { Random rand = new Random(world.getSeed()); - + if(lastSeed == world.getSeed() && MKURecipe != null) return; - + lastSeed = world.getSeed(); - + List list = Arrays.asList(new ItemStack[] { new ItemStack(ModItems.powder_iodine), new ItemStack(ModItems.powder_fire), @@ -61,12 +63,54 @@ public class MKUCraftingHandler implements IRecipe { null, null }); - + Collections.shuffle(list, rand); - + MKURecipe = list.toArray(new ItemStack[9]); } + public static Item getMKUItem(World world) { + switch(world.rand.nextInt(6)) { + case 0: return ModItems.powder_iodine; + case 1: return ModItems.powder_fire; + case 2: return ModItems.dust; + case 3: return ModItems.ingot_mercury; + case 4: return ModItems.morning_glory; + case 5: return ModItems.syringe_metal_empty; + default: return ModItems.flame_pony; + } + } + + public static ItemStack generateBook(World world, Item mkuItem) { + MKUCraftingHandler.generateRecipe(world); + ItemStack[] recipe = MKUCraftingHandler.MKURecipe; + + if(recipe == null) return new ItemStack(ModItems.flame_pony); + + String key = null; + int pages = 1; + if(mkuItem == ModItems.powder_iodine) { key = "book_iodine"; pages = 3; } + if(mkuItem == ModItems.powder_fire) { key = "book_phosphorous"; pages = 2; } + if(mkuItem == ModItems.dust) { key = "book_dust"; pages = 3; } + if(mkuItem == ModItems.ingot_mercury) { key = "book_mercury"; pages = 2; } + if(mkuItem == ModItems.morning_glory) { key = "book_flower"; pages = 2; } + if(mkuItem == ModItems.syringe_metal_empty) { key = "book_syringe"; pages = 2; } + + if(key == null) return new ItemStack(ModItems.flame_pony); + + int s = 1; + for(int i = 0; i < 9; i++) { + if(recipe[i] != null && recipe[i].getItem() == mkuItem) { + s = i + 1; break; + } + } + + ItemStack book = ItemBookLore.createBook(key, pages, 0x271E44, 0xFBFFF4); + ItemBookLore.addArgs(book, pages - 1, String.valueOf(s)); + + return book; + } + @Override public int getRecipeSize() { return 6; @@ -81,4 +125,4 @@ public class MKUCraftingHandler implements IRecipe { public ItemStack getRecipeOutput() { return new ItemStack(ModItems.syringe_mkunicorn); } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/tool/ItemWandS.java b/src/main/java/com/hbm/items/tool/ItemWandS.java index 303a3114f..2de5998fb 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandS.java +++ b/src/main/java/com/hbm/items/tool/ItemWandS.java @@ -1,7 +1,156 @@ package com.hbm.items.tool; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.text.DateFormat; +import java.text.SimpleDateFormat; + +import com.hbm.blocks.ModBlocks; +import com.hbm.util.BobMathUtil; +import com.hbm.util.Tuple.Pair; +import com.hbm.world.gen.NBTStructure; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; public class ItemWandS extends Item { - -} + + private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH.mm.ss"); + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + list.add("Creative-only item"); + list.add("\"Replication breeds decadence\""); + list.add("(Saves an area defined by two right-clicks,"); + list.add("adds a block to the blacklist by crouch right-clicking!)"); + + if(stack.stackTagCompound != null) { + int px = stack.stackTagCompound.getInteger("x"); + int py = stack.stackTagCompound.getInteger("y"); + int pz = stack.stackTagCompound.getInteger("z"); + + if(px != 0 || py != 0 || pz != 0) { + list.add(EnumChatFormatting.AQUA + "From: " + px + ", " + py + ", " + pz); + } else { + list.add(EnumChatFormatting.AQUA + "No start position set"); + } + + Set> blocks = getBlocks(stack); + + if(blocks.size() > 0) { + list.add("Blacklist:"); + for(Pair block : blocks) { + list.add(EnumChatFormatting.RED + "- " + block.key.getUnlocalizedName()); + } + } + } + } + + // why the fuck ye'd leave this whole thing obfuscated is beyond me + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fx, float fy, float fz) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + if(player.isSneaking()) { + Pair target = new Pair(world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + Set> blocks = getBlocks(stack); + + if(blocks.contains(target)) { + blocks.remove(target); + if(world.isRemote) player.addChatMessage(new ChatComponentText("Removed from blacklist " + target.key.getUnlocalizedName())); + } else { + blocks.add(target); + if(world.isRemote) player.addChatMessage(new ChatComponentText("Added to blacklist " + target.key.getUnlocalizedName())); + } + + setBlocks(stack, blocks); + + } else { + int px = stack.stackTagCompound.getInteger("x"); + int py = stack.stackTagCompound.getInteger("y"); + int pz = stack.stackTagCompound.getInteger("z"); + + if(px == 0 && py == 0 && pz == 0) { + setPosition(stack, x, y, z); + + if(world.isRemote) player.addChatMessage(new ChatComponentText("First position set!")); + } else { + setPosition(stack, 0, 0, 0); + + Set> blocks = getBlocks(stack); + blocks.add(new Pair(Blocks.air, 0)); + blocks.add(new Pair(ModBlocks.spotlight_beam, 0)); + + String filename = "structure_" + dateFormat.format(new Date()).toString() + ".nbt"; + + NBTStructure.saveArea(filename, world, x, y, z, px, py, pz, blocks); + + if(world.isRemote) player.addChatMessage(new ChatComponentText("Structure saved to: .minecraft/structures/" + filename)); + } + } + + return true; + } + + private void setPosition(ItemStack stack, int x, int y, int z) { + stack.stackTagCompound.setInteger("x", x); + stack.stackTagCompound.setInteger("y", y); + stack.stackTagCompound.setInteger("z", z); + } + + private Set> getBlocks(ItemStack stack) { + if(stack.stackTagCompound == null) { + return new HashSet<>(); + } + + int[] blockIds = stack.stackTagCompound.getIntArray("blocks"); + int[] metas = stack.stackTagCompound.getIntArray("metas"); + Set> blocks = new HashSet<>(blockIds.length); + + for(int i = 0; i < blockIds.length; i++) { + blocks.add(new Pair(Block.getBlockById(blockIds[i]), metas[i])); + } + + return blocks; + } + + @SuppressWarnings("unchecked") + private void setBlocks(ItemStack stack, Set> blocks) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setIntArray("blocks", BobMathUtil.collectionToIntArray(blocks, i -> Block.getIdFromBlock(((Pair)i).getKey()))); + stack.stackTagCompound.setIntArray("metas", BobMathUtil.collectionToIntArray(blocks, i -> ((Pair)i).getValue())); + } + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + if(stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + if(player.isSneaking()) { + stack.stackTagCompound.setIntArray("blocks", new int[0]); + stack.stackTagCompound.setIntArray("metas", new int[0]); + + if(world.isRemote) { + player.addChatMessage(new ChatComponentText("Cleared blacklist")); + } + } + + return stack; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index 3cd40d0ba..ed4ca9208 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -1,6 +1,7 @@ package com.hbm.lib; import com.hbm.world.gen.MapGenNTMFeatures; +import com.hbm.world.gen.NBTStructure; import com.hbm.world.gen.NTMWorldGenerator; import com.hbm.world.gen.component.*; import com.hbm.world.gen.component.BunkerComponents.BunkerStart; @@ -18,9 +19,6 @@ public class HbmWorld { public static NTMWorldGenerator worldGenerator; public static void initWorldGen() { - - //MapGenStructureIO.registerStructure(StructureStartTest.class, "HFR_STRUCTURE"); - //MapGenStructureIO.func_143031_a(StructureComponentTest.class, "HFR_COMPONENT"); MapGenStructureIO.registerStructure(MapGenNTMFeatures.Start.class, "NTMFeatures"); MapGenStructureIO.registerStructure(BunkerStart.class, "NTMBunker"); registerNTMFeatures(); @@ -30,19 +28,20 @@ public class HbmWorld { worldGenerator = new NTMWorldGenerator(); registerWorldGen(worldGenerator, 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator MinecraftForge.EVENT_BUS.register(worldGenerator); - //registerWorldGen(new WorldGenTest(), 1); + + NBTStructure.register(); } - public static void registerWorldGen(IWorldGenerator nukerWorldGen, int weightedProbability) { + private static void registerWorldGen(IWorldGenerator nukerWorldGen, int weightedProbability) { GameRegistry.registerWorldGenerator(nukerWorldGen, weightedProbability); } /** Register structures in MapGenStructureIO */ - public static void registerNTMFeatures() { + private static void registerNTMFeatures() { CivilianFeatures.registerComponents(); OfficeFeatures.registerComponents(); RuinFeatures.registerComponents(); BunkerComponents.registerComponents(); MapGenStructureIO.func_143031_a(SiloComponent.class, "NTMSiloComponent"); } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index d3ed3f571..c78fe7219 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -545,37 +545,6 @@ public class HbmWorldGen implements IWorldGenerator { } - if (WorldConfig.meteorStructure > 0 && rand.nextInt(WorldConfig.meteorStructure) == 0 && biome != BiomeGenBase.ocean && biome != BiomeGenBase.deepOcean) { - int x = i + rand.nextInt(16) + 8; - int z = j + rand.nextInt(16) + 8; - - CellularDungeonFactory.meteor.generate(world, x, 10, z, rand); - - if(GeneralConfig.enableDebugMode) - MainRegistry.logger.info("[Debug] Successfully spawned meteor dungeon at " + x + " 10 " + z); - - int y = world.getHeightValue(x, z); - - for(int f = 0; f < 3; f++) - world.setBlock(x, y + f, z, ModBlocks.meteor_pillar); - world.setBlock(x, y + 3, z, ModBlocks.meteor_brick_chiseled); - - for(int f = 0; f < 10; f++) { - - x = i + rand.nextInt(65) - 32; - z = j + rand.nextInt(65) - 32; - y = world.getHeightValue(x, z); - - if(world.getBlock(x, y - 1, z).canPlaceTorchOnTop(world, x, y - 1, z)) { - world.setBlock(x, y, z, Blocks.skull, 1, 2); - TileEntitySkull skull = (TileEntitySkull)world.getTileEntity(x, y, z); - - if(skull != null) - skull.func_145903_a(rand.nextInt(16)); - } - } - } - if((biome == BiomeGenBase.jungle || biome == BiomeGenBase.jungleEdge || biome == BiomeGenBase.jungleHills) && WorldConfig.jungleStructure > 0 && rand.nextInt(WorldConfig.jungleStructure) == 0) { int x = i + rand.nextInt(16); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 95534ecbc..ed344f1e7 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -157,7 +157,7 @@ public class ClientProxy extends ServerProxy { registerBlockRenderer(); Jars.initJars(); - + ((IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager()).registerReloadListener(new QMAWLoader()); if(GeneralConfig.enableSoundExtension) { @@ -831,6 +831,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderRBMKReflector()); RenderingRegistry.registerBlockHandler(new RenderRBMKControl()); RenderingRegistry.registerBlockHandler(new RenderPribris()); + + RenderingRegistry.registerBlockHandler(new RenderBlockWand()); } @Override @@ -1733,12 +1735,12 @@ public class ClientProxy extends ServerProxy { EntityFX fx = new net.minecraft.client.particle.EntityCritFX(world, x, y, z, mX, mY, mZ); fx.nextTextureIndexX(); - + if(data.hasKey("color")) { Color color = new Color(data.getInteger("color")); fx.setRBGColorF(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); } - + Minecraft.getMinecraft().effectRenderer.addEffect(fx); } diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java new file mode 100644 index 000000000..2456533ff --- /dev/null +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -0,0 +1,63 @@ +package com.hbm.main; + +import com.hbm.lib.RefStrings; +import com.hbm.world.gen.NBTStructure; + +import net.minecraft.util.ResourceLocation; + +public class StructureManager { + + // METEOR DUNGEON + public static final NBTStructure meteor_spike = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-spike.nbt")); + public static final NBTStructure meteor_core = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-core.nbt")); + public static final NBTStructure meteor_corner = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-corner.nbt")); + public static final NBTStructure meteor_t = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-t.nbt")); + public static final NBTStructure meteor_stairs = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-stairs.nbt")); + public static final NBTStructure meteor_fallback = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/meteor-fallback.nbt")); + + public static final NBTStructure meteor_3_bale = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-bale.nbt")); + public static final NBTStructure meteor_3_blank = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-blank.nbt")); + public static final NBTStructure meteor_3_block = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-block.nbt")); + public static final NBTStructure meteor_3_crab = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-crab.nbt")); + public static final NBTStructure meteor_3_crab_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-crab-tesla.nbt")); + public static final NBTStructure meteor_3_crate = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-crate.nbt")); + public static final NBTStructure meteor_3_dirt = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-dirt.nbt")); + public static final NBTStructure meteor_3_lead = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-lead.nbt")); + public static final NBTStructure meteor_3_ooze = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-ooze.nbt")); + public static final NBTStructure meteor_3_pillar = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-pillar.nbt")); + public static final NBTStructure meteor_3_star = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-star.nbt")); + public static final NBTStructure meteor_3_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-tesla.nbt")); + public static final NBTStructure meteor_3_book = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-book.nbt")); + public static final NBTStructure meteor_3_mku = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-mku.nbt")); + public static final NBTStructure meteor_3_statue = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-statue.nbt")); + + public static final NBTStructure meteor_room_base_end = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-base-end.nbt")); + public static final NBTStructure meteor_room_base_thru = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-base-thru.nbt")); + + public static final NBTStructure meteor_room_balcony = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-balcony.nbt")); + public static final NBTStructure meteor_room_basic = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-basic.nbt")); + public static final NBTStructure meteor_room_dragon = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-dragon.nbt")); + public static final NBTStructure meteor_room_ladder = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-ladder.nbt")); + public static final NBTStructure meteor_room_ooze = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-ooze.nbt")); + public static final NBTStructure meteor_room_split = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-split.nbt")); + public static final NBTStructure meteor_room_stairs = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-stairs.nbt")); + public static final NBTStructure meteor_room_triple = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-triple.nbt")); + public static final NBTStructure meteor_room_fallback = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-fallback.nbt")); + + public static final NBTStructure meteor_dragon_chest = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-chest.nbt")); + public static final NBTStructure meteor_dragon_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-tesla.nbt")); + public static final NBTStructure meteor_dragon_trap = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-trap.nbt")); + public static final NBTStructure meteor_dragon_crate_crab = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-crate-crab.nbt")); + + + + + public static final NBTStructure vertibird = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/vertibird.nbt")); + public static final NBTStructure crashed_vertibird = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/crashed-vertibird.nbt")); + + // public static final NBTStructure test_rot = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-rot.nbt")); + // public static final NBTStructure test_jigsaw = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw.nbt")); + // public static final NBTStructure test_jigsaw_core = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw-core.nbt")); + // public static final NBTStructure test_jigsaw_hall = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/test-jigsaw-hall.nbt")); + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/block/RenderBlockWand.java b/src/main/java/com/hbm/render/block/RenderBlockWand.java new file mode 100644 index 000000000..d6d22efe2 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderBlockWand.java @@ -0,0 +1,37 @@ +package com.hbm.render.block; + +import com.hbm.blocks.generic.BlockWand; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.world.IBlockAccess; + +public class RenderBlockWand implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + renderer.renderFromInside = true; + renderer.renderStandardBlock(block, x, y, z); + renderer.renderFromInside = false; + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return BlockWand.renderID; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 12257b52e..d1cc8eaf6 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -15,6 +15,8 @@ import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; import com.hbm.blocks.generic.BlockPlushie.TileEntityPlushie; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.generic.BlockSupplyCrate.TileEntitySupplyCrate; +import com.hbm.blocks.generic.BlockWandJigsaw.TileEntityWandJigsaw; +import com.hbm.blocks.generic.BlockWandLoot.TileEntityWandLoot; import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; import com.hbm.blocks.machine.BlockICF.TileEntityBlockICF; import com.hbm.blocks.machine.BlockPWR.TileEntityBlockPWR; @@ -48,7 +50,7 @@ public class TileMappings { public static HashMap, String[]> map = new HashMap, String[]>(); public static List> configurables = new ArrayList>(); - + public static void writeMappings() { put(TileEntityDiFurnace.class, "tilentity_diFurnace"); put(TileEntityObjTester.class, "tilentity_objtester"); @@ -206,7 +208,7 @@ public class TileMappings { put(TileEntityMachineOrbus.class, "tileentity_orbus"); put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner"); put(TileEntityCustomMachine.class, "tileentity_custom_machine"); - + put(TileEntityLoot.class, "tileentity_ntm_loot"); put(TileEntityPedestal.class, "tileentity_ntm_pedestal"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); @@ -218,9 +220,9 @@ public class TileMappings { put(TileEntityCharger.class, "tileentity_ntm_charger"); put(TileEntityRefueler.class, "tileentity_ntm_refueler"); - + put(TileEntityFileCabinet.class, "tileentity_file_cabinet"); - + put(TileEntityProxyInventory.class, "tileentity_proxy_inventory"); put(TileEntityProxyEnergy.class, "tileentity_proxy_power"); put(TileEntityProxyCombo.class, "tileentity_proxy_combo"); @@ -232,7 +234,10 @@ public class TileMappings { put(TileEntityPWRController.class, "tileentity_pwr_controller"); put(TileEntityData.class, "tileentity_data"); - + + put(TileEntityWandLoot.class, "tileentity_wand_loot"); + put(TileEntityWandJigsaw.class, "tileentity_wand_jigsaw"); + putNetwork(); putBombs(); putTurrets(); @@ -243,7 +248,7 @@ public class TileMappings { TileEntityMachineRadarNT.registerEntityClasses(); TileEntityMachineRadarNT.registerConverters(); } - + private static void putBombs() { put(TileEntityBombMulti.class, "tileentity_bombmulti"); put(TileEntityNukeGadget.class, "tilentity_nukegadget"); @@ -258,7 +263,7 @@ public class TileMappings { put(TileEntityCharge.class, "tileentity_explosive_charge"); put(TileEntityVolcanoCore.class, "tileentity_volcano_core"); } - + private static void putTurrets() { put(TileEntityTurretChekhov.class, "tileentity_turret_chekhov"); put(TileEntityTurretJeremy.class, "tileentity_turret_jeremy"); @@ -275,7 +280,7 @@ public class TileMappings { put(TileEntityTurretSentry.class, "tileentity_turret_sentry"); put(TileEntityTurretSentryDamaged.class, "tileentity_turret_sentry_damaged"); } - + private static void putMachines() { put(TileEntityHeaterFirebox.class, "tileentity_firebox"); put(TileEntityHeaterOven.class, "tileentity_heating_oven"); @@ -295,7 +300,7 @@ public class TileMappings { put(TileEntityMachinePumpSteam.class, "tileentity_steam_pump"); put(TileEntityMachinePumpElectric.class, "tileentity_electric_pump"); - + put(TileEntityFoundryMold.class, "tileentity_foundry_mold"); put(TileEntityFoundryBasin.class, "tileentity_foundry_basin"); put(TileEntityFoundryChannel.class, "tileentity_foundry_channel"); @@ -310,7 +315,7 @@ public class TileMappings { put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); put(TileEntityMachineRadiolysis.class, "tileentity_radiolysis"); put(TileEntityMachineAutosaw.class, "tileentity_autosaw"); - + put(TileEntityCondenser.class, "tileentity_condenser"); put(TileEntityTowerSmall.class, "tileentity_cooling_tower_small"); put(TileEntityTowerLarge.class, "tileentity_cooling_tower_large"); @@ -332,12 +337,12 @@ public class TileMappings { put(TileEntityChungus.class, "tileentity_chungus"); put(TileEntityMachineCombustionEngine.class, "tileentity_combustion_engine"); - + put(TileEntityMachineAssembler.class, "tileentity_assembly_machine"); put(TileEntityMachineAssemfac.class, "tileentity_assemfac"); put(TileEntityMachineChemplant.class, "tileentity_chemical_plant"); put(TileEntityMachineChemfac.class, "tileentity_chemfac"); - + put(TileEntityMachineOilWell.class, "tileentity_derrick"); put(TileEntityMachinePumpjack.class, "tileentity_machine_pumpjack"); put(TileEntityMachineFrackingTower.class, "tileentity_fracking_tower"); @@ -353,21 +358,21 @@ public class TileMappings { put(TileEntityMachinePyroOven.class, "tileentity_pyrooven"); put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); put(TileEntityChimneyIndustrial.class, "tileentity_chimney_industrial"); - + put(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); put(TileEntityWatz.class, "tileentity_watz"); put(TileEntityWatzPump.class, "tileentity_watz_pump"); } - + private static void putPile() { put(TileEntityPileFuel.class, "tileentity_pile_fuel"); put(TileEntityPileSource.class, "tileentity_pile_source"); put(TileEntityPileBreedingFuel.class, "tileentity_pile_breedingfuel"); put(TileEntityPileNeutronDetector.class, "tileentity_pile_neutrondetector"); } - + private static void putRBMK() { put(TileEntityRBMKRod.class, "tileentity_rbmk_rod"); put(TileEntityRBMKRodReaSim.class, "tileentity_rbmk_rod_reasim"); @@ -387,12 +392,12 @@ public class TileMappings { put(TileEntityRBMKInlet.class, "tileentity_rbmk_inlet"); put(TileEntityRBMKOutlet.class, "tileentity_rbmk_outlet"); } - + private static void putNetwork() { put(TileEntityCableBaseNT.class, "tileentity_cable", "tileentity_wirecoated"); put(TileEntityCableSwitch.class, "tileentity_cable_switch"); put(TileEntityDiode.class, "tileentity_cable_diode"); - + put(TileEntityConnector.class, "tileentity_connector_redwire"); put(TileEntityPylon.class, "tileentity_pylon_redwire"); put(TileEntityPylonMedium.class, "tileentity_pylon_medium"); @@ -415,24 +420,24 @@ public class TileMappings { put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); put(TileEntityRadioTorchLogic.class, "tileentity_rtty_logic"); put(TileEntityRadioTelex.class, "tileentity_rtty_telex"); - + put(TileEntityDroneWaypoint.class, "tileentity_drone_waypoint"); put(TileEntityDroneCrate.class, "tileentity_drone_crate"); put(TileEntityDroneWaypointRequest.class, "tileentity_drone_waypoint_request"); put(TileEntityDroneDock.class, "tileentity_drone_dock"); put(TileEntityDroneProvider.class, "tileentity_drone_provider"); put(TileEntityDroneRequester.class, "tileentity_drone_requester"); - + put(TileEntityRailSwitch.class, "tileentity_rail_switch"); } - + private static void put(Class clazz, String... names) { map.put(clazz, names); /*if((IFluidSource.class.isAssignableFrom(clazz) || IFluidAcceptor.class.isAssignableFrom(clazz)) && !IFluidConnector.class.isAssignableFrom(clazz)) { LoggingUtil.errorWithHighlight(clazz.getCanonicalName() + " implements the old interfaces but not IFluidConnector!"); }*/ - + if(IConfigurableMachine.class.isAssignableFrom(clazz)) { configurables.add((Class) clazz); } diff --git a/src/main/java/com/hbm/util/LootGenerator.java b/src/main/java/com/hbm/util/LootGenerator.java index b55cc92c8..b14306b9e 100644 --- a/src/main/java/com/hbm/util/LootGenerator.java +++ b/src/main/java/com/hbm/util/LootGenerator.java @@ -2,6 +2,7 @@ package com.hbm.util; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.crafting.handlers.MKUCraftingHandler; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.itempool.ItemPool; import com.hbm.itempool.ItemPoolsPile; @@ -10,6 +11,7 @@ import com.hbm.items.special.ItemBookLore; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import net.minecraft.init.Items; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -17,6 +19,45 @@ import java.util.Random; public class LootGenerator { + public static final String LOOT_BOOKLET = "LOOT_BOOKLET"; + public static final String LOOT_CAPNUKE = "LOOT_CAPNUKE"; + public static final String LOOT_MEDICINE = "LOOT_MEDICINE"; + public static final String LOOT_CAPSTASH = "LOOT_CAPSTASH"; + public static final String LOOT_MAKESHIFT_GUN = "LOOT_MAKESHIFT_GUN"; + public static final String LOOT_NUKE_STORAGE = "LOOT_NUKE_STORAGE"; + public static final String LOOT_BONES = "LOOT_BONES"; + public static final String LOOT_GLYPHID_HIVE = "LOOT_GLYPHID_HIVE"; + public static final String LOOT_METEOR = "LOOT_METEOR"; + + public static void applyLoot(World world, int x, int y, int z, String name) { + switch(name) { + case LOOT_BOOKLET: lootBooklet(world, x, y, z); + case LOOT_CAPNUKE: lootCapNuke(world, x, y, z); + case LOOT_MEDICINE: lootMedicine(world, x, y, z); + case LOOT_CAPSTASH: lootCapStash(world, x, y, z); + case LOOT_MAKESHIFT_GUN: lootMakeshiftGun(world, x, y, z); + case LOOT_NUKE_STORAGE: lootNukeStorage(world, x, y, z); + case LOOT_BONES: lootBones(world, x, y, z); + case LOOT_GLYPHID_HIVE: lootGlyphidHive(world, x, y, z); + case LOOT_METEOR: lootBookMeteor(world, x, y, z); + default: lootBones(world, x, y, z); break; + } + } + + public static String[] getLootNames() { + return new String[] { + LOOT_BOOKLET, + LOOT_CAPNUKE, + LOOT_MEDICINE, + LOOT_CAPSTASH, + LOOT_MAKESHIFT_GUN, + LOOT_NUKE_STORAGE, + LOOT_BONES, + LOOT_GLYPHID_HIVE, + LOOT_METEOR, + }; + } + public static void setBlock(World world, int x, int y, int z) { world.setBlock(x, y, z, ModBlocks.deco_loot); } @@ -142,6 +183,19 @@ public class LootGenerator { } } + public static void lootBookMeteor(World world, int x, int y, int z) { + + TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); + + if(loot != null && loot.items.isEmpty()) { + Item mkuItem = MKUCraftingHandler.getMKUItem(world); + ItemStack mkuBook = MKUCraftingHandler.generateBook(world, mkuItem); + + addItemWithDeviation(loot, world.rand, new ItemStack(mkuItem), 0, 0, 0.25); + addItemWithDeviation(loot, world.rand, mkuBook, 0, 0, -0.25); + } + } + public static void lootBookLore(World world, int x, int y, int z, ItemStack book) { TileEntityLoot loot = (TileEntityLoot) world.getTileEntity(x, y, z); @@ -157,4 +211,4 @@ public class LootGenerator { } } -} +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java b/src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java new file mode 100644 index 000000000..33dc141c8 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/INBTTileEntityTransformable.java @@ -0,0 +1,14 @@ +package com.hbm.world.gen; + +import net.minecraft.world.World; + +public interface INBTTileEntityTransformable { + + /** + * Like INBTTransformable but for TileEntities, like for randomizing bobbleheads + */ + + // Allows for the TE to modify itself when spawned in an NBT structure + public void transformTE(World world, int coordBaseMode); + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/INBTTransformable.java b/src/main/java/com/hbm/world/gen/INBTTransformable.java new file mode 100644 index 000000000..b42d6bd43 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/INBTTransformable.java @@ -0,0 +1,161 @@ +package com.hbm.world.gen; + +import net.minecraft.block.Block; + +public interface INBTTransformable { + + /** + * Defines this block as something that has a rotation or some other blockstate + * which needs transformations applied when building from an .nbt structure file + */ + + // Takes the block current meta and translates it into a rotated meta + public int transformMeta(int meta, int coordBaseMode); + + // Takes the block and turns it into a different block entirely, to turn off lights, shit like that + public default Block transformBlock(Block block) { + return block; + } + + + /** + * A fair few blocks have generalized rotations so, since we have all this space, put em here + */ + + public static int transformMetaDeco(int meta, int coordBaseMode) { + switch(coordBaseMode) { + case 1: //West + switch(meta) { + case 2: return 5; + case 3: return 4; + case 4: return 2; + case 5: return 3; + } + case 2: //North + switch(meta) { + case 2: return 3; + case 3: return 2; + case 4: return 5; + case 5: return 4; + } + case 3: //East + switch(meta) { + case 2: return 4; + case 3: return 5; + case 4: return 3; + case 5: return 2; + } + } + return meta; + } + + public static int transformMetaDecoModel(int meta, int coordBaseMode) { + int rot = (meta + coordBaseMode) % 4; + int type = (meta / 4) * 4; + + return rot | type; + } + + public static int transformMetaStairs(int meta, int coordBaseMode) { + switch(coordBaseMode) { + case 1: //West + if((meta & 3) < 2) //Flip second bit for E/W + meta = meta ^ 2; + else + meta = meta ^ 3; //Flip both bits for N/S + break; + case 2: //North + meta = meta ^ 1; //Flip first bit + break; + case 3: //East + if((meta & 3) < 2) //Flip both bits for E/W + meta = meta ^ 3; + else //Flip second bit for N/S + meta = meta ^ 2; + break; + } + + return meta; + } + + public static int transformMetaPillar(int meta, int coordBaseMode) { + if(coordBaseMode == 2) return meta; + int type = meta & 3; + int rot = meta & 12; + + if(rot == 4) return type | 8; + if(rot == 8) return type | 4; + + return meta; + } + + public static int transformMetaDirectional(int meta, int coordBaseMode) { + int rot = meta & 3; + int other = meta & 12; + + switch(coordBaseMode) { + default: //S + break; + case 1: //W + rot = (rot + 1) % 4; break; + case 2: //N + rot ^= 2; break; + case 3: //E + rot = (rot + 3) % 4; break; + } + + return other | rot; + } + + public static int transformMetaTorch(int meta, int coordBaseMode) { + switch(coordBaseMode) { + case 1: //West + switch(meta) { + case 1: return 3; + case 2: return 4; + case 3: return 2; + case 4: return 1; + } + case 2: //North + switch(meta) { + case 1: return 2; + case 2: return 1; + case 3: return 4; + case 4: return 3; + } + case 3: //East + switch(meta) { + case 1: return 4; + case 2: return 3; + case 3: return 1; + case 4: return 2; + } + } + return meta; + } + + public static int transformMetaDoor(int meta, int coordBaseMode) { + if(meta == 8 || meta == 9) return meta; // ignore top parts + + return transformMetaDirectional(meta, coordBaseMode); + } + + public static int transformMetaLever(int meta, int coordBaseMode) { + if(meta <= 0 || meta >= 7) { //levers suck ass + switch(coordBaseMode) { + case 1: case 3: //west / east + meta ^= 0b111; + } + } else if(meta >= 5) { + switch(coordBaseMode) { + case 1: case 3: //west / east + meta = (meta + 1) % 2 + 5; + } + } else { + meta = transformMetaTorch(meta, coordBaseMode); + } + + return meta; + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/NBTStructure.java b/src/main/java/com/hbm/world/gen/NBTStructure.java new file mode 100644 index 000000000..43625a627 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/NBTStructure.java @@ -0,0 +1,1155 @@ +package com.hbm.world.gen; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.*; +import java.util.function.Function; +import java.util.function.Predicate; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockWand; +import com.hbm.config.GeneralConfig; +import com.hbm.config.StructureConfig; +import com.hbm.handler.ThreeInts; +import com.hbm.main.MainRegistry; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Quartet; + +import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraft.block.*; +import net.minecraft.client.Minecraft; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagInt; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.structure.MapGenStructure; +import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; +import net.minecraft.world.gen.structure.StructureComponent.BlockSelector; +import net.minecraft.world.gen.structure.StructureStart; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.common.util.Constants.NBT; + +public class NBTStructure { + + /** + * Now with structure support! + * + * the type of structure to generate is saved into the Component, + * meaning this can generate all sorts of different structures, + * without having to define and register each structure manually + */ + + protected static Map> weightedMap = new HashMap<>(); + + // serialization data + protected static Map jigsawMap = new HashMap<>(); + + private String name; + + private boolean isLoaded; + + private ThreeInts size; + private List> itemPalette; + private BlockState[][][] blockArray; + + private List> fromConnections; + private Map> toTopConnections; + private Map> toBottomConnections; + private Map> toHorizontalConnections; + + public NBTStructure(ResourceLocation resource) { + // Can't use regular resource loading, servers don't know how! + InputStream stream = NBTStructure.class.getResourceAsStream("/assets/" + resource.getResourceDomain() + "/" + resource.getResourcePath()); + if(stream != null) { + name = resource.getResourcePath(); + loadStructure(stream); + } else { + MainRegistry.logger.error("NBT Structure not found: " + resource.getResourcePath()); + } + } + + public static void register() { + MapGenStructureIO.registerStructure(Start.class, "NBTStructures"); + MapGenStructureIO.func_143031_a(Component.class, "NBTComponents"); + } + + // Register a new structure for a given dimension + public static void registerStructure(int dimensionId, SpawnCondition spawn) { + List weightedList = weightedMap.computeIfAbsent(dimensionId, integer -> new ArrayList()); + for(int i = 0; i < spawn.spawnWeight; i++) { + weightedList.add(spawn); + } + } + + public static void registerStructure(SpawnCondition spawn, int... dimensionIds) { + for(int dimensionId : dimensionIds) { + registerStructure(dimensionId, spawn); + } + } + + // Add a chance for nothing to spawn at a given valid spawn location + public static void registerNullWeight(int dimensionId, int weight) { + registerNullWeight(dimensionId, weight, null); + } + + public static void registerNullWeight(int dimensionId, int weight, Predicate predicate) { + SpawnCondition spawn = new SpawnCondition() {{ + spawnWeight = weight; + canSpawn = predicate; + }}; + + List weightedList = weightedMap.computeIfAbsent(dimensionId, integer -> new ArrayList()); + for(int i = 0; i < spawn.spawnWeight; i++) { + weightedList.add(spawn); + } + } + + // Saves a selected area into an NBT structure (+ some of our non-standard stuff to support 1.7.10) + public static void saveArea(String filename, World world, int x1, int y1, int z1, int x2, int y2, int z2, Set> exclude) { + NBTTagCompound structure = new NBTTagCompound(); + NBTTagList nbtBlocks = new NBTTagList(); + NBTTagList nbtPalette = new NBTTagList(); + NBTTagList nbtItemPalette = new NBTTagList(); + + // Quick access hash slinging slashers + Map, Integer> palette = new HashMap<>(); + Map itemPalette = new HashMap<>(); + + structure.setInteger("version", 1); + + int ox = Math.min(x1, x2); + int oy = Math.min(y1, y2); + int oz = Math.min(z1, z2); + + for(int x = ox; x <= Math.max(x1, x2); x++) { + for(int y = oy; y <= Math.max(y1, y2); y++) { + for(int z = oz; z <= Math.max(z1, z2); z++) { + Pair block = new Pair(world.getBlock(x, y, z), world.getBlockMetadata(x, y, z)); + + if(exclude.contains(block)) continue; + + if(block.key instanceof BlockWand) { + block.key = ((BlockWand) block.key).exportAs; + } + + int paletteId = palette.size(); + if(palette.containsKey(block)) { + paletteId = palette.get(block); + } else { + palette.put(block, paletteId); + + NBTTagCompound nbtBlock = new NBTTagCompound(); + nbtBlock.setString("Name", GameRegistry.findUniqueIdentifierFor(block.key).toString()); + + NBTTagCompound nbtProp = new NBTTagCompound(); + nbtProp.setString("meta", block.value.toString()); + + nbtBlock.setTag("Properties", nbtProp); + + nbtPalette.appendTag(nbtBlock); + } + + NBTTagCompound nbtBlock = new NBTTagCompound(); + nbtBlock.setInteger("state", paletteId); + + NBTTagList nbtPos = new NBTTagList(); + nbtPos.appendTag(new NBTTagInt(x - ox)); + nbtPos.appendTag(new NBTTagInt(y - oy)); + nbtPos.appendTag(new NBTTagInt(z - oz)); + + nbtBlock.setTag("pos", nbtPos); + + TileEntity te = world.getTileEntity(x, y, z); + if(te != null) { + NBTTagCompound nbt = new NBTTagCompound(); + te.writeToNBT(nbt); + + nbt.removeTag("x"); + nbt.removeTag("y"); + nbt.removeTag("z"); + + nbtBlock.setTag("nbt", nbt); + + String itemKey = null; + if(nbt.hasKey("items")) itemKey = "items"; + if(nbt.hasKey("Items")) itemKey = "Items"; + + if(nbt.hasKey(itemKey)) { + NBTTagList items = nbt.getTagList(itemKey, NBT.TAG_COMPOUND); + for(int i = 0; i < items.tagCount(); i++) { + NBTTagCompound item = items.getCompoundTagAt(i); + short id = item.getShort("id"); + String name = GameRegistry.findUniqueIdentifierFor(Item.getItemById(id)).toString(); + + if(!itemPalette.containsKey(id)) { + int itemPaletteId = itemPalette.size(); + itemPalette.put(id, itemPaletteId); + + NBTTagCompound nbtItem = new NBTTagCompound(); + nbtItem.setShort("ID", id); + nbtItem.setString("Name", name); + + nbtItemPalette.appendTag(nbtItem); + } + } + } + } + + nbtBlocks.appendTag(nbtBlock); + } + } + } + + structure.setTag("blocks", nbtBlocks); + structure.setTag("palette", nbtPalette); + structure.setTag("itemPalette", nbtItemPalette); + + NBTTagList nbtSize = new NBTTagList(); + nbtSize.appendTag(new NBTTagInt(Math.abs(x1 - x2) + 1)); + nbtSize.appendTag(new NBTTagInt(Math.abs(y1 - y2) + 1)); + nbtSize.appendTag(new NBTTagInt(Math.abs(z1 - z2) + 1)); + structure.setTag("size", nbtSize); + + structure.setTag("entities", new NBTTagList()); + + try { + File structureDirectory = new File(Minecraft.getMinecraft().mcDataDir, "structures"); + structureDirectory.mkdir(); + + File structureFile = new File(structureDirectory, filename); + + CompressedStreamTools.writeCompressed(structure, new FileOutputStream(structureFile)); + } catch (Exception ex) { + MainRegistry.logger.warn("Failed to save NBT structure", ex); + } + } + + private void loadStructure(InputStream inputStream) { + try { + NBTTagCompound data = CompressedStreamTools.readCompressed(inputStream); + + + // GET SIZE (for offsetting to center) + size = parsePos(data.getTagList("size", NBT.TAG_INT)); + + + // PARSE BLOCK PALETTE + NBTTagList paletteList = data.getTagList("palette", NBT.TAG_COMPOUND); + BlockDefinition[] palette = new BlockDefinition[paletteList.tagCount()]; + + for(int i = 0; i < paletteList.tagCount(); i++) { + NBTTagCompound p = paletteList.getCompoundTagAt(i); + + String blockName = p.getString("Name"); + NBTTagCompound prop = p.getCompoundTag("Properties"); + + int meta = 0; + try { + meta = Integer.parseInt(prop.getString("meta")); + } catch(NumberFormatException ex) { + MainRegistry.logger.info("Failed to parse: " + prop.getString("meta")); + meta = 0; + } + + palette[i] = new BlockDefinition(blockName, meta); + } + + + // PARSE ITEM PALETTE (custom shite) + if(data.hasKey("itemPalette")) { + NBTTagList itemPaletteList = data.getTagList("itemPalette", NBT.TAG_COMPOUND); + itemPalette = new ArrayList<>(itemPaletteList.tagCount()); + + for(int i = 0; i < itemPaletteList.tagCount(); i++) { + NBTTagCompound p = itemPaletteList.getCompoundTagAt(i); + + short id = p.getShort("ID"); + String name = p.getString("Name"); + + itemPalette.add(new Pair<>(id, name)); + } + } else { + itemPalette = null; + } + + + // LOAD IN BLOCKS + NBTTagList blockData = data.getTagList("blocks", NBT.TAG_COMPOUND); + blockArray = new BlockState[size.x][size.y][size.z]; + + List connections = new ArrayList<>(); + + for(int i = 0; i < blockData.tagCount(); i++) { + NBTTagCompound block = blockData.getCompoundTagAt(i); + int state = block.getInteger("state"); + ThreeInts pos = parsePos(block.getTagList("pos", NBT.TAG_INT)); + + BlockState blockState = new BlockState(palette[state]); + + if(block.hasKey("nbt")) { + NBTTagCompound nbt = block.getCompoundTag("nbt"); + blockState.nbt = nbt; + + // Load in connection points for jigsaws + if(blockState.definition.block == ModBlocks.wand_jigsaw) { + if(toTopConnections == null) toTopConnections = new HashMap<>(); + if(toBottomConnections == null) toBottomConnections = new HashMap<>(); + if(toHorizontalConnections == null) toHorizontalConnections = new HashMap<>(); + + int selectionPriority = nbt.getInteger("selection"); + int placementPriority = nbt.getInteger("placement"); + ForgeDirection direction = ForgeDirection.getOrientation(nbt.getInteger("direction")); + String poolName = nbt.getString("pool"); + String ourName = nbt.getString("name"); + String targetName = nbt.getString("target"); + String replaceBlock = nbt.getString("block"); + int replaceMeta = nbt.getInteger("meta"); + boolean isRollable = nbt.getBoolean("roll"); + + JigsawConnection connection = new JigsawConnection(pos, direction, poolName, targetName, isRollable, selectionPriority, placementPriority); + + connections.add(connection); + + Map> toConnections = null; + if(direction == ForgeDirection.UP) { + toConnections = toTopConnections; + } else if(direction == ForgeDirection.DOWN) { + toConnections = toBottomConnections; + } else { + toConnections = toHorizontalConnections; + } + + List namedConnections = toConnections.computeIfAbsent(ourName, name -> new ArrayList<>()); + namedConnections.add(connection); + + if(!StructureConfig.debugStructures) { + blockState = new BlockState(new BlockDefinition(replaceBlock, replaceMeta)); + } + } + } + + blockArray[pos.x][pos.y][pos.z] = blockState; + } + + + // MAP OUT CONNECTIONS + PRIORITIES + if(connections.size() > 0) { + fromConnections = new ArrayList<>(); + + connections.sort((a, b) -> a.selectionPriority - b.selectionPriority); // sort by descending priority, highest first + + // Sort out our from connections, splitting into individual lists for each priority level + List innerList = null; + int currentPriority = 0; + for(JigsawConnection connection : connections) { + if(innerList == null || currentPriority != connection.selectionPriority) { + innerList = new ArrayList<>(); + fromConnections.add(innerList); + currentPriority = connection.selectionPriority; + } + + innerList.add(connection); + } + } + + + + isLoaded = true; + + } catch(Exception e) { + MainRegistry.logger.error("Exception reading NBT Structure format", e); + } finally { + try { + inputStream.close(); + } catch(IOException e) { + // hush + } + } + } + + private HashMap getWorldItemPalette() { + if(itemPalette == null) return null; + + HashMap worldItemPalette = new HashMap<>(); + + for(Pair entry : itemPalette) { + Item item = (Item)Item.itemRegistry.getObject(entry.getValue()); + + worldItemPalette.put(entry.getKey(), (short)Item.getIdFromItem(item)); + } + + return worldItemPalette; + } + + private TileEntity buildTileEntity(World world, Block block, HashMap worldItemPalette, NBTTagCompound nbt, int coordBaseMode) { + nbt = (NBTTagCompound)nbt.copy(); + + if(worldItemPalette != null) relinkItems(worldItemPalette, nbt); + + TileEntity te = TileEntity.createAndLoadEntity(nbt); + + if(te instanceof INBTTileEntityTransformable) { + ((INBTTileEntityTransformable) te).transformTE(world, coordBaseMode); + } + + return te; + } + + public void build(World world, int x, int y, int z) { + build(world, x, y, z, 0); + } + + public void build(World world, int x, int y, int z, int coordBaseMode) { + if(!isLoaded) { + MainRegistry.logger.info("NBTStructure is invalid"); + return; + } + + HashMap worldItemPalette = getWorldItemPalette(); + + boolean swizzle = coordBaseMode == 1 || coordBaseMode == 3; + x -= (swizzle ? size.z : size.x) / 2; + z -= (swizzle ? size.x : size.z) / 2; + + int maxX = size.x; + int maxZ = size.z; + + for(int bx = 0; bx < maxX; bx++) { + for(int bz = 0; bz < maxZ; bz++) { + int rx = rotateX(bx, bz, coordBaseMode) + x; + int rz = rotateZ(bx, bz, coordBaseMode) + z; + + for(int by = 0; by < size.y; by++) { + BlockState state = blockArray[bx][by][bz]; + if(state == null) continue; + + int ry = by + y; + + Block block = transformBlock(state.definition, null, world.rand); + int meta = coordBaseMode != 0 ? transformMeta(state.definition, coordBaseMode) : state.definition.meta; + + world.setBlock(rx, ry, rz, block, meta, 2); + + if(state.nbt != null) { + TileEntity te = buildTileEntity(world, block, worldItemPalette, state.nbt, coordBaseMode); + world.setTileEntity(rx, ry, rz, te); + } + } + } + } + } + + protected boolean build(World world, JigsawPiece piece, StructureBoundingBox totalBounds, StructureBoundingBox generatingBounds, int coordBaseMode) { + if(!isLoaded) { + MainRegistry.logger.info("NBTStructure is invalid"); + return false; + } + + HashMap worldItemPalette = getWorldItemPalette(); + + int sizeX = totalBounds.maxX - totalBounds.minX; + int sizeZ = totalBounds.maxZ - totalBounds.minZ; + + // voxel grid transforms can fuck you up + // you have my respect, vaer + int absMinX = Math.max(generatingBounds.minX - totalBounds.minX, 0); + int absMaxX = Math.min(generatingBounds.maxX - totalBounds.minX, sizeX); + int absMinZ = Math.max(generatingBounds.minZ - totalBounds.minZ, 0); + int absMaxZ = Math.min(generatingBounds.maxZ - totalBounds.minZ, sizeZ); + + // A check to see that we're actually inside the generating area at all + if(absMinX > sizeX || absMaxX < 0 || absMinZ > sizeZ || absMaxZ < 0) return true; + + int rotMinX = unrotateX(absMinX, absMinZ, coordBaseMode); + int rotMaxX = unrotateX(absMaxX, absMaxZ, coordBaseMode); + int rotMinZ = unrotateZ(absMinX, absMinZ, coordBaseMode); + int rotMaxZ = unrotateZ(absMaxX, absMaxZ, coordBaseMode); + + int minX = Math.min(rotMinX, rotMaxX); + int maxX = Math.max(rotMinX, rotMaxX); + int minZ = Math.min(rotMinZ, rotMaxZ); + int maxZ = Math.max(rotMinZ, rotMaxZ); + + for(int bx = minX; bx <= maxX; bx++) { + for(int bz = minZ; bz <= maxZ; bz++) { + int rx = rotateX(bx, bz, coordBaseMode) + totalBounds.minX; + int rz = rotateZ(bx, bz, coordBaseMode) + totalBounds.minZ; + int oy = piece.conformToTerrain ? world.getTopSolidOrLiquidBlock(rx, rz) + piece.heightOffset : totalBounds.minY; + + for(int by = 0; by < size.y; by++) { + BlockState state = blockArray[bx][by][bz]; + if(state == null) continue; + + int ry = by + oy; + + Block block = transformBlock(state.definition, piece.blockTable, world.rand); + int meta = coordBaseMode != 0 ? transformMeta(state.definition, coordBaseMode) : state.definition.meta; + + world.setBlock(rx, ry, rz, block, meta, 2); + + if(state.nbt != null) { + TileEntity te = buildTileEntity(world, block, worldItemPalette, state.nbt, coordBaseMode); + world.setTileEntity(rx, ry, rz, te); + } + } + } + } + + return true; + } + + // What a fucken mess, why even implement the IntArray NBT if ye aint gonna use it Moe Yang? + private ThreeInts parsePos(NBTTagList pos) { + NBTBase xb = (NBTBase)pos.tagList.get(0); + int x = ((NBTTagInt)xb).func_150287_d(); + NBTBase yb = (NBTBase)pos.tagList.get(1); + int y = ((NBTTagInt)yb).func_150287_d(); + NBTBase zb = (NBTBase)pos.tagList.get(2); + int z = ((NBTTagInt)zb).func_150287_d(); + + return new ThreeInts(x, y, z); + } + + // NON-STANDARD, items are serialized with IDs, which will differ from world to world! + // So our fixed exporter adds an itemPalette, please don't hunt me down for fucking with the spec + private void relinkItems(HashMap palette, NBTTagCompound nbt) { + NBTTagList items = null; + if(nbt.hasKey("items")) + items = nbt.getTagList("items", NBT.TAG_COMPOUND); + if(nbt.hasKey("Items")) + items = nbt.getTagList("Items", NBT.TAG_COMPOUND); + + if(items == null) return; + + for(int i = 0; i < items.tagCount(); i++) { + NBTTagCompound item = items.getCompoundTagAt(i); + item.setShort("id", palette.get(item.getShort("id"))); + } + } + + private Block transformBlock(BlockDefinition definition, Map blockTable, Random rand) { + if(blockTable != null && blockTable.containsKey(definition.block)) { + final BlockSelector selector = blockTable.get(definition.block); + selector.selectBlocks(rand, 0, 0, 0, false); // fuck the vanilla shit idc + return selector.func_151561_a(); + } + + if(definition.block instanceof INBTTransformable) return ((INBTTransformable) definition.block).transformBlock(definition.block); + + return definition.block; + } + + private int transformMeta(BlockDefinition definition, int coordBaseMode) { + // Our shit + if(definition.block instanceof INBTTransformable) return ((INBTTransformable) definition.block).transformMeta(definition.meta, coordBaseMode); + + // Vanilla shit + if(definition.block instanceof BlockStairs) return INBTTransformable.transformMetaStairs(definition.meta, coordBaseMode); + if(definition.block instanceof BlockRotatedPillar) return INBTTransformable.transformMetaPillar(definition.meta, coordBaseMode); + if(definition.block instanceof BlockDirectional) return INBTTransformable.transformMetaDirectional(definition.meta, coordBaseMode); + if(definition.block instanceof BlockTorch) return INBTTransformable.transformMetaTorch(definition.meta, coordBaseMode); + if(definition.block instanceof BlockButton) return INBTTransformable.transformMetaTorch(definition.meta, coordBaseMode); + if(definition.block instanceof BlockDoor) return INBTTransformable.transformMetaDoor(definition.meta, coordBaseMode); + if(definition.block instanceof BlockLever) return INBTTransformable.transformMetaLever(definition.meta, coordBaseMode); + if(definition.block instanceof BlockSign) return INBTTransformable.transformMetaDeco(definition.meta, coordBaseMode); + if(definition.block instanceof BlockLadder) return INBTTransformable.transformMetaDeco(definition.meta, coordBaseMode); + + return definition.meta; + } + + private int rotateX(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 1: return size.z - 1 - z; + case 2: return size.x - 1 - x; + case 3: return z; + default: return x; + } + } + + private int rotateZ(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 1: return x; + case 2: return size.z - 1 - z; + case 3: return size.x - 1 - x; + default: return z; + } + } + + private int unrotateX(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 3: return size.x - 1 - z; + case 2: return size.x - 1 - x; + case 1: return z; + default: return x; + } + } + + private int unrotateZ(int x, int z, int coordBaseMode) { + switch(coordBaseMode) { + case 3: return x; + case 2: return size.z - 1 - z; + case 1: return size.z - 1 - x; + default: return z; + } + } + + private static class BlockState { + + final BlockDefinition definition; + NBTTagCompound nbt; + + BlockState(BlockDefinition definition) { + this.definition = definition; + } + + } + + private static class BlockDefinition { + + final Block block; + final int meta; + + BlockDefinition(String name, int meta) { + Block block = Block.getBlockFromName(name); + if(block == null) block = Blocks.air; + + this.block = block; + this.meta = meta; + } + + } + + public static class SpawnCondition { + + // If defined, will spawn a single jigsaw piece, for single nbt structures + public JigsawPiece structure; + + // If defined, will spawn in a non-nbt structure component + public Function, StructureStart> start; + + public Predicate canSpawn; + public int spawnWeight = 1; + + // Named jigsaw pools that are referenced within the structure + public Map pools; + public String startPool; + + // Maximum amount of components in this structure + public int sizeLimit = 8; + + // Height modifiers, will clamp height that the start generates at, allowing for: + // * Submarines that must spawn under the ocean surface + // * Bunkers that sit underneath the ground + public int minHeight = 1; + public int maxHeight = 128; + + // Can this spawn in the current biome + protected boolean isValid(BiomeGenBase biome) { + if(canSpawn == null) return true; + return canSpawn.test(biome); + } + + protected JigsawPool getPool(String name) { + return pools.get(name).clone(); + } + + } + + // A set of pieces with weights + public static class JigsawPool { + + // Weighted list of pieces to pick from + private List> pieces = new ArrayList<>(); + private int totalWeight = 0; + + public String fallback; + + private boolean isClone; + + public void add(JigsawPiece piece, int weight) { + if(weight <= 0) throw new IllegalStateException("JigsawPool spawn weight must be positive!"); + pieces.add(new Pair<>(piece, weight)); + totalWeight += weight; + } + + protected JigsawPool clone() { + JigsawPool clone = new JigsawPool(); + clone.pieces = new ArrayList<>(this.pieces); + clone.fallback = this.fallback; + clone.totalWeight = this.totalWeight; + clone.isClone = true; + + return clone; + } + + // If from a clone, will remove from the pool + public JigsawPiece get(Random rand) { + if(totalWeight <= 0) return null; + int weight = rand.nextInt(totalWeight); + + for(int i = 0; i < pieces.size(); i++) { + Pair pair = pieces.get(i); + weight -= pair.getValue(); + + if(weight < 0) { + if(isClone) { + pieces.remove(i); + totalWeight -= pair.getValue(); + } + + return pair.getKey(); + } + } + + return null; + } + + } + + // Assigned to a Component to build + public static class JigsawPiece { + + public final String name; + public final NBTStructure structure; + + // Block modifiers, for randomization and terrain matching + public Map blockTable; + public boolean conformToTerrain = false; // moves every single column to the terrain (digging out trenches, natural formations) + public boolean alignToTerrain = false; // aligns this component y-level individually, without moving individual columns (village houses) + public int heightOffset = 0; // individual offset for the structure + + public JigsawPiece(String name, NBTStructure structure) { + this(name, structure, 0); + } + + public JigsawPiece(String name, NBTStructure structure, int heightOffset) { + if(name == null) throw new IllegalStateException("A severe error has occurred in NBTStructure! A jigsaw piece has been registered without a valid name!"); + if(jigsawMap.containsKey(name)) throw new IllegalStateException("A severe error has occurred in NBTStructure! A jigsaw piece has been registered with the same name as another: " + name); + + this.name = name; + this.structure = structure; + jigsawMap.put(name, this); + + this.heightOffset = heightOffset; + } + + } + + // Each jigsaw block in a structure will instance one of these + private static class JigsawConnection { + + private final ThreeInts pos; + private final ForgeDirection dir; + + // what pool should we look through to find a connection + private final String poolName; + + // when we successfully find a pool, what connections in that jigsaw piece can we target + private final String targetName; + + private final boolean isRollable; + + private final int selectionPriority; + private final int placementPriority; + + private JigsawConnection(ThreeInts pos, ForgeDirection dir, String poolName, String targetName, boolean isRollable, int selectionPriority, int placementPriority) { + this.pos = pos; + this.dir = dir; + this.poolName = poolName; + this.targetName = targetName; + this.isRollable = isRollable; + this.selectionPriority = selectionPriority; + this.placementPriority = placementPriority; + } + + } + + public static class Component extends StructureComponent { + + JigsawPiece piece; + + int minHeight = 1; + int maxHeight = 128; + + boolean heightUpdated = false; + + int priority; // placement priority not yet implemented because selection priority is far more useful whatever + + // this is fucking hacky but we need a way to update ALL component bounds once a Y-level is determined + private Start parent; + + private JigsawConnection connectedFrom; + + public Component() {} + + public Component(SpawnCondition spawn, JigsawPiece piece, Random rand, int x, int z) { + this(spawn, piece, rand, x, 0, z, rand.nextInt(4)); + } + + public Component(SpawnCondition spawn, JigsawPiece piece, Random rand, int x, int y, int z, int coordBaseMode) { + super(0); + this.coordBaseMode = coordBaseMode; + this.piece = piece; + this.minHeight = spawn.minHeight; + this.maxHeight = spawn.maxHeight; + + switch(this.coordBaseMode) { + case 1: + case 3: + this.boundingBox = new StructureBoundingBox(x, y, z, x + piece.structure.size.z - 1, y + piece.structure.size.y - 1, z + piece.structure.size.x - 1); + break; + default: + this.boundingBox = new StructureBoundingBox(x, y, z, x + piece.structure.size.x - 1, y + piece.structure.size.y - 1, z + piece.structure.size.z - 1); + break; + } + } + + public Component connectedFrom(JigsawConnection connection) { + this.connectedFrom = connection; + return this; + } + + // Save to NBT + @Override + protected void func_143012_a(NBTTagCompound nbt) { + nbt.setString("piece", piece.name); + nbt.setInteger("min", minHeight); + nbt.setInteger("max", maxHeight); + nbt.setBoolean("hasHeight", heightUpdated); + } + + // Load from NBT + @Override + protected void func_143011_b(NBTTagCompound nbt) { + piece = jigsawMap.get(nbt.getString("piece")); + minHeight = nbt.getInteger("min"); + maxHeight = nbt.getInteger("max"); + heightUpdated = nbt.getBoolean("hasHeight"); + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + if(piece == null) return false; + + // now we're in the world, update minY/maxY + if(!piece.conformToTerrain && !heightUpdated) { + int y = MathHelper.clamp_int(getAverageHeight(world, box) + piece.heightOffset, minHeight, maxHeight); + + if(!piece.alignToTerrain && parent != null) { + parent.offsetYHeight(y); + } else { + offsetYHeight(y); + } + } + + return piece.structure.build(world, piece, boundingBox, box, coordBaseMode); + } + + public void offsetYHeight(int y) { + boundingBox.minY += y; + boundingBox.maxY += y; + + heightUpdated = true; + } + + // Overrides to fix Mojang's fucked rotations which FLIP instead of rotating in two instances + // vaer being in the mines doing this the hard way for years was absolutely not for naught + @Override + protected int getXWithOffset(int x, int z) { + return boundingBox.minX + piece.structure.rotateX(x, z, coordBaseMode); + } + + @Override + protected int getYWithOffset(int y) { + return boundingBox.minY + y; + } + + @Override + protected int getZWithOffset(int x, int z) { + return boundingBox.minZ + piece.structure.rotateZ(x, z, coordBaseMode); + } + + private ForgeDirection rotateDir(ForgeDirection dir) { + if(dir == ForgeDirection.UP || dir == ForgeDirection.DOWN) return dir; + switch(coordBaseMode) { + default: return dir; + case 1: return dir.getRotation(ForgeDirection.UP); + case 2: return dir.getOpposite(); + case 3: return dir.getRotation(ForgeDirection.DOWN); + } + } + + private int getAverageHeight(World world, StructureBoundingBox box) { + int total = 0; + int iterations = 0; + + for(int z = box.minZ; z <= box.maxZ; z++) { + for(int x = box.minX; x <= box.maxX; x++) { + total += world.getTopSolidOrLiquidBlock(x, z); + iterations++; + } + } + + if(iterations == 0) + return 64; + + return total / iterations; + } + + private int getNextCoordBase(JigsawConnection fromConnection, JigsawConnection toConnection, Random rand) { + if(fromConnection.dir == ForgeDirection.DOWN || fromConnection.dir == ForgeDirection.UP) { + if(fromConnection.isRollable) return rand.nextInt(4); + return coordBaseMode; + } + + return directionOffsetToCoordBase(fromConnection.dir.getOpposite(), toConnection.dir); + } + + private int directionOffsetToCoordBase(ForgeDirection from, ForgeDirection to) { + for(int i = 0; i < 4; i++) { + if(from == to) return (i + coordBaseMode) % 4; + from = from.getRotation(ForgeDirection.DOWN); + } + return coordBaseMode; + } + + protected boolean hasIntersectionIgnoringSelf(LinkedList components, StructureBoundingBox box) { + for(StructureComponent component : components) { + if(component == this) continue; + if(component.getBoundingBox() == null) continue; + + if(component.getBoundingBox().intersectsWith(box)) return true; + } + + return false; + } + + } + + public static class Start extends StructureStart { + + public Start() {} + + @SuppressWarnings("unchecked") + public Start(World world, Random rand, SpawnCondition spawn, int chunkX, int chunkZ) { + super(chunkX, chunkZ); + + int x = chunkX << 4; + int z = chunkZ << 4; + + JigsawPiece startPiece = spawn.structure != null ? spawn.structure : spawn.pools.get(spawn.startPool).get(rand); + + Component startComponent = new Component(spawn, startPiece, rand, x, z); + startComponent.parent = this; + + components.add(startComponent); + + List queuedComponents = new ArrayList<>(); + if(spawn.structure == null) queuedComponents.add(startComponent); + + // Iterate through and build out all the components we intend to spawn + while(!queuedComponents.isEmpty()) { + final int i = rand.nextInt(queuedComponents.size()); + Component fromComponent = queuedComponents.remove(i); + + if(fromComponent.piece.structure.fromConnections == null) continue; + + boolean fallbacksOnly = this.components.size() >= spawn.sizeLimit; + + for(List unshuffledList : fromComponent.piece.structure.fromConnections) { + List connectionList = new ArrayList<>(unshuffledList); + Collections.shuffle(connectionList, rand); + + for(JigsawConnection fromConnection : connectionList) { + if(fromComponent.connectedFrom == fromConnection) continue; // if we already connected to this piece, don't process + + if(fallbacksOnly) { + String fallback = spawn.pools.get(fromConnection.poolName).fallback; + + if(fallback != null) { + Component fallbackComponent = buildNextComponent(rand, spawn, spawn.pools.get(fallback), fromComponent, fromConnection); + addComponent(fallbackComponent, fromConnection.placementPriority); + } + + continue; + } + + JigsawPool nextPool = spawn.getPool(fromConnection.poolName); + + Component nextComponent = null; + + // Iterate randomly through the pool, attempting each piece until one fits + while(nextPool.totalWeight > 0) { + nextComponent = buildNextComponent(rand, spawn, nextPool, fromComponent, fromConnection); + if(nextComponent != null && !fromComponent.hasIntersectionIgnoringSelf(components, nextComponent.getBoundingBox())) break; + nextComponent = null; + } + + if(nextComponent != null) { + addComponent(nextComponent, fromConnection.placementPriority); + queuedComponents.add(nextComponent); + } else { + // If we failed to fit anything in, grab something from the fallback pool, ignoring bounds check + if(nextPool.fallback != null) { + nextComponent = buildNextComponent(rand, spawn, spawn.pools.get(nextPool.fallback), fromComponent, fromConnection); + addComponent(nextComponent, fromConnection.placementPriority); // don't add to queued list, we don't want to try continue from fallback + } + } + } + } + } + + if(GeneralConfig.enableDebugMode) { + MainRegistry.logger.info("[Debug] Spawning NBT structure at: " + chunkX * 16 + ", " + chunkZ * 16); + String componentList = "[Debug] Components: "; + for(Object component : this.components) { + componentList += ((Component) component).piece.structure.name + " "; + } + MainRegistry.logger.info(componentList); + } + + updateBoundingBox(); + } + + @SuppressWarnings("unchecked") + private void addComponent(Component component, int placementPriority) { + components.add(component); + + component.parent = this; + component.priority = placementPriority; + } + + private Component buildNextComponent(Random rand, SpawnCondition spawn, JigsawPool pool, Component fromComponent, JigsawConnection fromConnection) { + JigsawPiece nextPiece = pool.get(rand); + if(nextPiece == null) return null; + + List connectionPool = getConnectionPool(nextPiece, fromConnection); + if(connectionPool == null) return null; + + JigsawConnection toConnection = connectionPool.get(rand.nextInt(connectionPool.size())); + + // The direction this component is extending towards in ABSOLUTE direction + ForgeDirection extendDir = fromComponent.rotateDir(fromConnection.dir); + + // Rotate our incoming piece to plug it in + int nextCoordBase = fromComponent.getNextCoordBase(fromConnection, toConnection, rand); + + // Set the starting point for the next structure to the location of the connector block + int nextX = fromComponent.getXWithOffset(fromConnection.pos.x, fromConnection.pos.z) + extendDir.offsetX; + int nextY = fromComponent.getYWithOffset(fromConnection.pos.y) + extendDir.offsetY; + int nextZ = fromComponent.getZWithOffset(fromConnection.pos.x, fromConnection.pos.z) + extendDir.offsetZ; + + // offset the starting point to the connecting point + nextX -= nextPiece.structure.rotateX(toConnection.pos.x, toConnection.pos.z, nextCoordBase); + nextY -= toConnection.pos.y; + nextZ -= nextPiece.structure.rotateZ(toConnection.pos.x, toConnection.pos.z, nextCoordBase); + + return new Component(spawn, nextPiece, rand, nextX, nextY, nextZ, nextCoordBase).connectedFrom(toConnection); + } + + private List getConnectionPool(JigsawPiece nextPiece, JigsawConnection fromConnection) { + if(fromConnection.dir == ForgeDirection.DOWN) { + return nextPiece.structure.toTopConnections.get(fromConnection.targetName); + } else if(fromConnection.dir == ForgeDirection.UP) { + return nextPiece.structure.toBottomConnections.get(fromConnection.targetName); + } + + return nextPiece.structure.toHorizontalConnections.get(fromConnection.targetName); + } + + // post loading, update parent reference for loaded components + @Override + public void func_143017_b(NBTTagCompound nbt) { + for(Object o : components) { + ((Component) o).parent = this; + } + } + + public void offsetYHeight(int y) { + for(Object o : components) { + Component component = (Component) o; + if(component.heightUpdated || component.piece.conformToTerrain || component.piece.alignToTerrain) continue; + component.offsetYHeight(y); + } + } + + } + + public static class GenStructure extends MapGenStructure { + + private SpawnCondition nextSpawn; + + public void generateStructures(World world, Random rand, IChunkProvider chunkProvider, int chunkX, int chunkZ) { + Block[] ablock = new Block[65536]; + + func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock); + generateStructuresInChunk(world, rand, chunkX, chunkZ); + } + + @Override + public String func_143025_a() { + return "NBTStructures"; + } + + @Override + protected boolean canSpawnStructureAtCoords(int chunkX, int chunkZ) { + if(!weightedMap.containsKey(worldObj.provider.dimensionId)) return false; + + int x = chunkX; + int z = chunkZ; + + if(x < 0) x -= StructureConfig.structureMaxChunks - 1; + if(z < 0) z -= StructureConfig.structureMaxChunks - 1; + + x /= StructureConfig.structureMaxChunks; + z /= StructureConfig.structureMaxChunks; + rand.setSeed((long)x * 341873128712L + (long)z * 132897987541L + this.worldObj.getWorldInfo().getSeed() + (long)996996996 - worldObj.provider.dimensionId); + x *= StructureConfig.structureMaxChunks; + z *= StructureConfig.structureMaxChunks; + x += rand.nextInt(StructureConfig.structureMaxChunks - StructureConfig.structureMinChunks); + z += rand.nextInt(StructureConfig.structureMaxChunks - StructureConfig.structureMinChunks); + + if(chunkX == x && chunkZ == z) { + BiomeGenBase biome = this.worldObj.getWorldChunkManager().getBiomeGenAt(chunkX * 16 + 8, chunkZ * 16 + 8); + + nextSpawn = findSpawn(biome); + + return nextSpawn != null && (nextSpawn.pools != null || nextSpawn.start != null || nextSpawn.structure != null); + } + + return false; + } + + @Override + protected StructureStart getStructureStart(int chunkX, int chunkZ) { + if(nextSpawn.start != null) return nextSpawn.start.apply(new Quartet(this.worldObj, this.rand, chunkX, chunkZ)); + return new Start(this.worldObj, this.rand, nextSpawn, chunkX, chunkZ); + } + + private SpawnCondition findSpawn(BiomeGenBase biome) { + List spawnList = weightedMap.get(worldObj.provider.dimensionId); + + for(int i = 0; i < 64; i++) { + SpawnCondition spawn = spawnList.get(rand.nextInt(spawnList.size())); + if(spawn.isValid(biome)) return spawn; + } + + return null; + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 6fb9e7fd1..3d9306b28 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -1,8 +1,22 @@ package com.hbm.world.gen; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.config.StructureConfig; +import com.hbm.main.StructureManager; +import com.hbm.world.gen.NBTStructure.JigsawPiece; +import com.hbm.world.gen.NBTStructure.JigsawPool; +import com.hbm.world.gen.NBTStructure.SpawnCondition; +import com.hbm.world.gen.component.BunkerComponents.BunkerStart; +import com.hbm.world.gen.component.Component.CrabSpawners; +import com.hbm.world.gen.component.Component.GreenOoze; +import com.hbm.world.gen.component.Component.MeteorBricks; +import com.hbm.world.gen.component.Component.SupplyCrates; import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -10,125 +24,163 @@ import net.minecraft.block.Block; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.chunk.IChunkProvider; -import static net.minecraftforge.common.BiomeDictionary.*; +import net.minecraft.world.gen.structure.StructureComponent.BlockSelector; import net.minecraftforge.event.terraingen.InitMapGenEvent.EventType; import net.minecraftforge.event.terraingen.PopulateChunkEvent; -import static net.minecraftforge.event.terraingen.TerrainGen.*; +import net.minecraftforge.event.terraingen.TerrainGen; import net.minecraftforge.event.world.WorldEvent; public class NTMWorldGenerator implements IWorldGenerator { - private MapGenNTMFeatures scatteredFeatureGen = new MapGenNTMFeatures(); - + + boolean regTest = false; + + public NTMWorldGenerator() { + final List invalidBiomes = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.ocean, BiomeGenBase.river, BiomeGenBase.frozenOcean, BiomeGenBase.frozenRiver, BiomeGenBase.deepOcean}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome); + start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ()); + spawnWeight = 14; + }}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !invalidBiomes.contains(biome); + start = d -> new BunkerStart(d.getW(), d.getX(), d.getY(), d.getZ()); + spawnWeight = 1; + }}); + + Map bricks = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + }}; + Map crates = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + put(ModBlocks.crate, new SupplyCrates()); + put(ModBlocks.meteor_spawner, new CrabSpawners()); + }}; + Map ooze = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + put(ModBlocks.concrete_colored, new GreenOoze()); + }}; + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + minHeight = 32; + maxHeight = 32; + sizeLimit = 128; + canSpawn = biome -> biome.rootHeight >= 0; + startPool = "start"; + pools = new HashMap() {{ + put("start", new JigsawPool() {{ + add(new JigsawPiece("meteor_core", StructureManager.meteor_core) {{ blockTable = bricks; }}, 1); + }}); + put("spike", new JigsawPool() {{ + add(new JigsawPiece("meteor_spike", StructureManager.meteor_spike) {{ heightOffset = -3; conformToTerrain = true; }}, 1); + }}); + put("default", new JigsawPool() {{ + add(new JigsawPiece("meteor_corner", StructureManager.meteor_corner) {{ blockTable = bricks; }}, 2); + add(new JigsawPiece("meteor_t", StructureManager.meteor_t) {{ blockTable = bricks; }}, 3); + add(new JigsawPiece("meteor_stairs", StructureManager.meteor_stairs) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_base_thru", StructureManager.meteor_room_base_thru) {{ blockTable = bricks; }}, 3); + add(new JigsawPiece("meteor_room_base_end", StructureManager.meteor_room_base_end) {{ blockTable = bricks; }}, 4); + fallback = "fallback"; + }}); + put("10room", new JigsawPool() {{ + add(new JigsawPiece("meteor_room_basic", StructureManager.meteor_room_basic) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_balcony", StructureManager.meteor_room_balcony) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_dragon", StructureManager.meteor_room_dragon) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_ladder", StructureManager.meteor_room_ladder) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_ooze", StructureManager.meteor_room_ooze) {{ blockTable = ooze; }}, 1); + add(new JigsawPiece("meteor_room_split", StructureManager.meteor_room_split) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_stairs", StructureManager.meteor_room_stairs) {{ blockTable = bricks; }}, 1); + add(new JigsawPiece("meteor_room_triple", StructureManager.meteor_room_triple) {{ blockTable = bricks; }}, 1); + fallback = "roomback"; + }}); + put("3x3loot", new JigsawPool() {{ + add(new JigsawPiece("meteor_3_bale", StructureManager.meteor_3_bale), 1); + add(new JigsawPiece("meteor_3_blank", StructureManager.meteor_3_blank), 1); + add(new JigsawPiece("meteor_3_block", StructureManager.meteor_3_block), 1); + add(new JigsawPiece("meteor_3_crab", StructureManager.meteor_3_crab), 1); + add(new JigsawPiece("meteor_3_crab_tesla", StructureManager.meteor_3_crab_tesla), 1); + add(new JigsawPiece("meteor_3_crate", StructureManager.meteor_3_crate), 1); + add(new JigsawPiece("meteor_3_dirt", StructureManager.meteor_3_dirt), 1); + add(new JigsawPiece("meteor_3_lead", StructureManager.meteor_3_lead), 1); + add(new JigsawPiece("meteor_3_ooze", StructureManager.meteor_3_ooze), 1); + add(new JigsawPiece("meteor_3_pillar", StructureManager.meteor_3_pillar), 1); + add(new JigsawPiece("meteor_3_star", StructureManager.meteor_3_star), 1); + add(new JigsawPiece("meteor_3_tesla", StructureManager.meteor_3_tesla), 1); + add(new JigsawPiece("meteor_3_book", StructureManager.meteor_3_book), 1); + add(new JigsawPiece("meteor_3_mku", StructureManager.meteor_3_mku), 1); + add(new JigsawPiece("meteor_3_statue", StructureManager.meteor_3_statue), 1); + }}); + put("headloot", new JigsawPool() {{ + add(new JigsawPiece("meteor_dragon_chest", StructureManager.meteor_dragon_chest) {{ blockTable = crates; }}, 1); + add(new JigsawPiece("meteor_dragon_tesla", StructureManager.meteor_dragon_tesla) {{ blockTable = crates; }}, 1); + add(new JigsawPiece("meteor_dragon_trap", StructureManager.meteor_dragon_trap) {{ blockTable = crates; }}, 1); + add(new JigsawPiece("meteor_dragon_crate_crab", StructureManager.meteor_dragon_crate_crab) {{ blockTable = crates; }}, 1); + }}); + put("fallback", new JigsawPool() {{ + add(new JigsawPiece("meteor_fallback", StructureManager.meteor_fallback) {{ blockTable = bricks; }}, 1); + }}); + put("roomback", new JigsawPool() {{ + add(new JigsawPiece("meteor_room_fallback", StructureManager.meteor_room_fallback) {{ blockTable = bricks; }}, 1); + }}); + }}; + }}); + } + + private NBTStructure.GenStructure nbtGen = new NBTStructure.GenStructure(); + private final Random rand = new Random(); //A central random, used to cleanly generate our stuff without affecting vanilla or modded seeds. - + /** Inits all MapGen upon the loading of a new world. Hopefully clears out structureMaps and structureData when a different world is loaded. */ @SubscribeEvent public void onLoad(WorldEvent.Load event) { - scatteredFeatureGen = (MapGenNTMFeatures) getModdedMapGen(new MapGenNTMFeatures(), EventType.CUSTOM); - + nbtGen = (NBTStructure.GenStructure) TerrainGen.getModdedMapGen(new NBTStructure.GenStructure(), EventType.CUSTOM); + hasPopulationEvent = false; } - + /** Called upon the initial population of a chunk. Called in the pre-population event first; called again if pre-population didn't occur (flatland) */ private void setRandomSeed(World world, int chunkX, int chunkZ) { - rand.setSeed(world.getSeed()); + rand.setSeed(world.getSeed() + world.provider.dimensionId); final long i = rand.nextLong() / 2L * 2L + 1L; final long j = rand.nextLong() / 2L * 2L + 1L; rand.setSeed((long)chunkX * i + (long)chunkZ * j ^ world.getSeed()); } - + /* * Pre-population Events / Structure Generation * Used to generate structures without unnecessary intrusion by biome decoration, like trees. */ - + private boolean hasPopulationEvent = false; // Does the given chunkGenerator have a population event? If not (flatlands), default to using generate. - + @SubscribeEvent public void generateStructures(PopulateChunkEvent.Pre event) { - setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. hasPopulationEvent = true; - + if(StructureConfig.enableStructures == 0) return; if(StructureConfig.enableStructures == 2 && !event.world.getWorldInfo().isMapFeaturesEnabled()) return; - - switch (event.world.provider.dimensionId) { - case -1: - break; - case 0: - generateOverworldStructures(event.world, event.chunkProvider, event.chunkX, event.chunkZ); - break; - case 1: - break; - } + + setRandomSeed(event.world, event.chunkX, event.chunkZ); //Set random for population down the line. + + nbtGen.generateStructures(event.world, rand, event.chunkProvider, event.chunkX, event.chunkZ); } - - protected void generateOverworldStructures(World world, IChunkProvider chunkProvider, int chunkX, int chunkZ) { - Block[] ablock = new Block[65536]; //ablock isn't actually used for anything in MapGenStructure - - this.scatteredFeatureGen.func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock); - this.scatteredFeatureGen.generateStructuresInChunk(world, rand, chunkX, chunkZ); - } - + /* * Post-Vanilla / Modded Generation * Used to generate features that don't care about intrusions (ores, craters, caves, etc.) */ - + @Override - public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { - - switch (world.provider.dimensionId) { - case -1: - generateNether(world, rand, chunkGenerator, chunkX, chunkZ); break; - case 0: - generateSurface(world, rand, chunkGenerator, chunkProvider, chunkX, chunkZ); break; - case 1: - generateEnd(world, rand, chunkGenerator, chunkX, chunkZ); break; - } - } - - private void generateNether(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } - - /* Overworld Generation */ - - private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, IChunkProvider chunkProvider, int chunkX, int chunkZ) { - if(!hasPopulationEvent) { //If we've failed to generate any structures (flatlands) - setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate - - boolean enableStructures = world.getWorldInfo().isMapFeaturesEnabled(); - if(StructureConfig.enableStructures == 1) enableStructures = true; - if(StructureConfig.enableStructures == 0) enableStructures = false; + public void generate(Random unusedRandom, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider) { + if(hasPopulationEvent) return; //If we've failed to generate any structures (flatlands) - if(enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly - } - - /* biome dictionary my beloved <3 - * no check for tom here because the event handler already checks for decoration events, + this way they won't become permanently extinct. - */ - - /* Biome check, followed by chance, followed by event (for compat, both intra- and inter- (in the case of Tom). */ - - + if(StructureConfig.enableStructures == 0) return; + if(StructureConfig.enableStructures == 2 && !world.getWorldInfo().isMapFeaturesEnabled()) return; + + setRandomSeed(world, chunkX, chunkZ); //Reset the random seed to compensate + + nbtGen.generateStructures(world, rand, chunkProvider, chunkX, chunkZ); } - private void generateEnd(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } - - /** Utility method for biome checking multiple types exclusively. Not sure why it wasn't already present. */ - public static boolean isBiomeOfTypes(BiomeGenBase biome, Type... types) { //If new biomes are implemented, move this to any biome-related utility class. - for(Type type : types) { - if(!isBiomeOfType(biome, type)) return false; - } - - return true; - } - - /** utility method, same as above but inclusive. useful for catch-alls, like the dirty glass structures have */ - public static boolean doesBiomeHaveTypes(BiomeGenBase biome, Type... types) { - for(Type type : types) { - if(isBiomeOfType(biome, type)) return true; - } - - return false; - } } \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/component/Component.java b/src/main/java/com/hbm/world/gen/component/Component.java index 0a652a6eb..80d85bcfd 100644 --- a/src/main/java/com/hbm/world/gen/component/Component.java +++ b/src/main/java/com/hbm/world/gen/component/Component.java @@ -12,6 +12,7 @@ import com.hbm.tileentity.machine.TileEntityLockableBase; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; @@ -27,19 +28,19 @@ abstract public class Component extends StructureComponent { /** Average height (Presumably stands for height position) */ protected int hpos = -1; - + protected Component() { super(0); } - + protected Component(int componentType) { super(componentType); } - + protected Component(Random rand, int minX, int minY, int minZ, int maxX, int maxY, int maxZ ) { super(0); this.coordBaseMode = rand.nextInt(4); - + switch(this.coordBaseMode) { case 0: this.boundingBox = new StructureBoundingBox(minX, minY, minZ, minX + maxX, minY + maxY, minZ + maxZ); @@ -55,25 +56,25 @@ abstract public class Component extends StructureComponent { break; default: this.boundingBox = new StructureBoundingBox(minX, minY, minZ, minX + maxX, minY + maxY, minZ + maxZ); - + } } - + /** Set to NBT */ protected void func_143012_a(NBTTagCompound nbt) { nbt.setInteger("HPos", this.hpos); } - + /** Get from NBT */ protected void func_143011_b(NBTTagCompound nbt) { this.hpos = nbt.getInteger("HPos"); } - + protected boolean setAverageHeight(World world, StructureBoundingBox box, int y) { - + int total = 0; int iterations = 0; - + for(int z = this.boundingBox.minZ; z <= this.boundingBox.maxZ; z++) { for(int x = this.boundingBox.minX; x <= this.boundingBox.maxX; x++) { if(box.isVecInside(x, y, z)) { @@ -82,20 +83,20 @@ abstract public class Component extends StructureComponent { } } } - + if(iterations == 0) return false; - + this.hpos = total / iterations; //finds mean of every block in bounding box this.boundingBox.offset(0, this.hpos - this.boundingBox.minY, 0); return true; } - + protected static int getAverageHeight(World world, StructureBoundingBox area, StructureBoundingBox box, int y) { - + int total = 0; int iterations = 0; - + for(int z = area.minZ; z <= area.maxZ; z++) { for(int x = area.minX; x <= area.maxX; x++) { if(box.isVecInside(x, y, z)) { @@ -104,19 +105,19 @@ abstract public class Component extends StructureComponent { } } } - + if(iterations == 0) return -1; - + return total / iterations; } - + public int getCoordMode() { return this.coordBaseMode; } - + /** Metadata for Decoration Methods **/ - + /** * Gets metadata for rotatable pillars. * @param metadata (First two digits are equal to block metadata, other two are equal to orientation @@ -125,10 +126,10 @@ abstract public class Component extends StructureComponent { protected int getPillarMeta(int metadata) { if(this.coordBaseMode % 2 != 0 && this.coordBaseMode != -1) metadata = metadata ^ 12; - + return metadata; } - + /** * Gets metadata for rotatable DecoBlock * honestly i don't remember how i did this and i'm scared to optimize it because i fail to see any reasonable patterns like the pillar @@ -168,14 +169,14 @@ abstract public class Component extends StructureComponent { } return 0; } - + /** * Get orientation-offset metadata for BlockDecoModel; also suitable for trapdoors * @param metadata (0 for facing North, 1 for facing South, 2 for facing West, 3 for facing East) */ protected int getDecoModelMeta(int metadata) { //N: 0b00, S: 0b01, W: 0b10, E: 0b11 - + switch(this.coordBaseMode) { default: //South break; @@ -198,12 +199,12 @@ abstract public class Component extends StructureComponent { //genuinely like. why did i do that return metadata << 2; //To accommodate for BlockDecoModel's shift in the rotation bits; otherwise, simply bit-shift right and or any non-rotation meta after } - + //works for crts, toasters, and anything that follows mc's cardinal dirs. S: 0, W: 1, N: 2, E: 3 protected int getCRTMeta(int meta) { return (meta + this.coordBaseMode) % 4; } - + /** * Gets orientation-adjusted meta for stairs. * 0 = West, 1 = East, 2 = North, 3 = South @@ -228,11 +229,11 @@ abstract public class Component extends StructureComponent { metadata = metadata ^ 2; break; } - + return metadata; } - - /* + + /* * Assuming door is on opposite side of block from direction: East: 0, South: 1, West: 2, North: 3
* Doors cleverly take advantage of the use of two blocks to get around the 16 value limit on metadata, with the top and bottom blocks essentially relying on eachother for everything.
*
  • The 4th bit (0b1000 or 8) indicates whether it is the top block: on for yes, off for no. @@ -245,9 +246,9 @@ abstract public class Component extends StructureComponent { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ)) return; - + switch(this.coordBaseMode) { default: //South break; @@ -258,11 +259,11 @@ abstract public class Component extends StructureComponent { case 3: //East dirMeta = (dirMeta + 3) % 4; break; //fuck you modulo } - + //hee hoo int metaTop = opensRight ? 0b1001 : 0b1000; int metaBottom = dirMeta | (isOpen ? 0b100 : 0); - + if(world.doesBlockHaveSolidTopSurface(world, posX, posY - 1, posZ)) { world.setBlock(posX, posY, posZ, door, metaBottom, 2); world.setBlock(posX, posY + 1, posZ, door, metaTop, 2); @@ -273,9 +274,9 @@ abstract public class Component extends StructureComponent { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ)) return; - + if(dirMeta <= 0 || dirMeta >= 7) { //levers suck ass switch(this.coordBaseMode) { case 1: case 3: //west / east @@ -289,10 +290,10 @@ abstract public class Component extends StructureComponent { } else { dirMeta = getButtonMeta(dirMeta); } - + world.setBlock(posX, posY, posZ, Blocks.lever, on ? dirMeta | 8 : dirMeta, 2); } - + /** pain. works for side-facing levers as well */ protected int getButtonMeta(int dirMeta) { switch(this.coordBaseMode) { //are you ready for the pain? @@ -310,12 +311,12 @@ abstract public class Component extends StructureComponent { return dirMeta; } } - + /**N:0 W:1 S:2 E:3 */ protected void placeBed(World world, StructureBoundingBox box, int meta, int featureX, int featureY, int featureZ) { int xOffset = 0; int zOffset = 0; - + switch(meta & 3) { default: zOffset = 1; break; @@ -326,7 +327,7 @@ abstract public class Component extends StructureComponent { case 3: xOffset = 1; break; } - + switch(this.coordBaseMode) { default: //S break; @@ -337,11 +338,11 @@ abstract public class Component extends StructureComponent { case 3: //E meta = (meta - 1) % 4; break; } - + placeBlockAtCurrentPosition(world, Blocks.bed, meta, featureX, featureY, featureZ, box); placeBlockAtCurrentPosition(world, Blocks.bed, meta + 8, featureX + xOffset, featureY, featureZ + zOffset, box); } - + /**Tripwire Hook: S:0 W:1 N:2 E:3 */ protected int getTripwireMeta(int metadata) { switch(this.coordBaseMode) { @@ -355,10 +356,10 @@ abstract public class Component extends StructureComponent { return (metadata - 1) % 4; } } - - + + /** Loot Methods **/ - + /** * it feels disgusting to make a method with this many parameters but fuck it, it's easier * @return TE implementing IInventory with randomized contents @@ -366,29 +367,29 @@ abstract public class Component extends StructureComponent { protected boolean generateInvContents(World world, StructureBoundingBox box, Random rand, Block block, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount) { return generateInvContents(world, box, rand, block, 0, featureX, featureY, featureZ, content, amount); } - + //TODO: explore min / max item generations: e.g., between 3 and 5 separate items are generated protected boolean generateInvContents(World world, StructureBoundingBox box, Random rand, Block block, int meta, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount) { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ) || world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks return true; - + this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box); IInventory inventory = (IInventory)world.getTileEntity(posX, posY, posZ); - + if(inventory != null) { amount = (int)Math.floor(amount * StructureConfig.lootAmountFactor); WeightedRandomChestContent.generateChestContents(rand, content, inventory, amount < 1 ? 1 : amount); return true; } - + return false; } - - + + /** * Block TE MUST extend TileEntityLockableBase, otherwise this will not work and crash! * @return TE implementing IInventory and extending TileEntityLockableBase with randomized contents + lock @@ -397,48 +398,48 @@ abstract public class Component extends StructureComponent { WeightedRandomChestContent[] content, int amount, double mod) { return generateLockableContents(world, box, rand, block, 0, featureX, featureY, featureZ, content, amount, mod); } - + protected boolean generateLockableContents(World world, StructureBoundingBox box, Random rand, Block block, int meta, int featureX, int featureY, int featureZ, WeightedRandomChestContent[] content, int amount, double mod) { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ) || world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks return false; - + this.placeBlockAtCurrentPosition(world, block, meta, featureX, featureY, featureZ, box); TileEntity tile = world.getTileEntity(posX, posY, posZ); TileEntityLockableBase lock = (TileEntityLockableBase) tile; IInventory inventory = (IInventory) tile; - + if(inventory != null && lock != null) { amount = (int)Math.floor(amount * StructureConfig.lootAmountFactor); WeightedRandomChestContent.generateChestContents(rand, content, inventory, amount < 1 ? 1 : amount); - + lock.setPins(rand.nextInt(999) + 1); lock.setMod(mod); lock.lock(); return true; } - + return false; } - + protected void generateLoreBook(World world, StructureBoundingBox box, int featureX, int featureY, int featureZ, int slot, ItemStack stack) { //kept for compat int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(!box.isVecInside(posX, posY, posZ)) return; - + IInventory inventory = (IInventory) world.getTileEntity(posX, posY, posZ); - + if(inventory != null) { inventory.setInventorySlotContents(slot, stack); } } - + /** * Places random bobblehead with a randomized orientation at specified location */ @@ -446,71 +447,71 @@ abstract public class Component extends StructureComponent { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + placeBlockAtCurrentPosition(world, ModBlocks.bobblehead, rand.nextInt(16), featureX, featureY, featureZ, box); TileEntityBobble bobble = (TileEntityBobble) world.getTileEntity(posX, posY, posZ); - + if(bobble != null) { bobble.type = BobbleType.values()[rand.nextInt(BobbleType.values().length - 1) + 1]; bobble.markDirty(); } } - + /** Block Placement Utility Methods **/ - + /** * Places blocks underneath location until reaching a solid block; good for foundations */ protected void placeFoundationUnderneath(World world, Block placeBlock, int meta, int minX, int minZ, int maxX, int maxZ, int featureY, StructureBoundingBox box) { - + for(int featureX = minX; featureX <= maxX; featureX++) { for(int featureZ = minZ; featureZ <= maxZ; featureZ++) { int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - + if(box.isVecInside(posX, posY, posZ)) { Block block = world.getBlock(posX, posY, posZ); int brake = 0; - - while ((world.isAirBlock(posX, posY, posZ) || - !block.getMaterial().isSolid() || - (block.isFoliage(world, posX, posY, posZ) || block.getMaterial() == Material.leaves)) && + + while ((world.isAirBlock(posX, posY, posZ) || + !block.getMaterial().isSolid() || + (block.isFoliage(world, posX, posY, posZ) || block.getMaterial() == Material.leaves)) && posY > 1 && brake <= 15) { world.setBlock(posX, posY, posZ, placeBlock, meta, 2); block = world.getBlock(posX, --posY, posZ); - + brake++; } } } } } - + /** * Places specified blocks on top of pre-existing blocks in a given area, up to a certain height. Does NOT place blocks on top of liquids. * Useful for stuff like fences and walls most likely. */ protected void placeBlocksOnTop(World world, StructureBoundingBox box, Block block, int minX, int minZ, int maxX, int maxZ, int height) { - + for(int x = minX; x <= maxX; x++) { for(int z = minZ; z <= maxZ; z++) { int posX = this.getXWithOffset(x, z); int posZ = this.getZWithOffset(x, z); int topHeight = world.getTopSolidOrLiquidBlock(posX, posZ); - + if(!world.getBlock(posX, topHeight, posZ).getMaterial().isLiquid()) { - + for(int i = 0; i < height; i++) { int posY = topHeight + i; - + world.setBlock(posX, posY, posZ, block, 0, 2); } } } } } - + /** getXWithOffset & getZWithOffset Methods that are actually fixed **/ //Turns out, this entire time every single minecraft structure is mirrored instead of rotated when facing East and North //Also turns out, it's a scarily easy fix that they somehow didn't see *entirely* @@ -529,7 +530,7 @@ abstract public class Component extends StructureComponent { return x; } } - + @Override public int getZWithOffset(int x, int z) { switch(this.coordBaseMode) { @@ -545,46 +546,46 @@ abstract public class Component extends StructureComponent { return z; } } - + /** Methods that are actually optimized, including ones that cut out replaceBlock and onlyReplace functionality when it's redundant. */ protected void fillWithAir(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { //TODO these could technically be optimized a bit more. probably won't do anything but worth - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + world.setBlock(posX, posY, posZ, Blocks.air, 0, 2); } } } } } - + @Override protected void fillWithBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, Block replaceBlock, boolean onlyReplace) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air) { if(x != minX && x != maxX && y != minY && y != maxY && z != minZ && z != maxZ) world.setBlock(posX, posY, posZ, replaceBlock, 0, 2); @@ -596,49 +597,49 @@ abstract public class Component extends StructureComponent { } } } - + protected void fillWithBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + world.setBlock(posX, posY, posZ, block, 0, 2); } } } } } - + @Override protected void fillWithMetadataBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, int meta, Block replaceBlock, int replaceMeta, boolean onlyReplace) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air) { if(x != minX && x != maxX && y != minY && y != maxY && z != minZ && z != maxZ) world.setBlock(posX, posY, posZ, replaceBlock, replaceMeta, 2); - else + else world.setBlock(posX, posY, posZ, block, meta, 2); } } @@ -646,45 +647,45 @@ abstract public class Component extends StructureComponent { } } } - + protected void fillWithMetadataBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, int meta) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + world.setBlock(posX, posY, posZ, block, meta, 2); } } } } } - + @Override protected void fillWithRandomizedBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, boolean onlyReplace, Random rand, BlockSelector selector) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air) { selector.selectBlocks(rand, posX, posY, posZ, x == minX || x == maxX || y == minY || y == maxY || z == minZ || z == maxZ); world.setBlock(posX, posY, posZ, selector.func_151561_a(), selector.getSelectedBlockMetaData(), 2); @@ -696,16 +697,16 @@ abstract public class Component extends StructureComponent { } //TODO replace the shitty block selector with something else. probably a lambda that returns a metablock for convenience protected void fillWithRandomizedBlocks(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Random rand, BlockSelector selector) { //so i don't have to replace shit - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); @@ -717,19 +718,19 @@ abstract public class Component extends StructureComponent { } } } - + //stairs and shit protected void fillWithRandomizedBlocksMeta(World world, StructureBoundingBox box, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Random rand, BlockSelector selector, int meta) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); @@ -741,23 +742,23 @@ abstract public class Component extends StructureComponent { } } } - + @Override protected void randomlyFillWithBlocks(World world, StructureBoundingBox box, Random rand, float randLimit, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, Block replaceBlock, boolean onlyReplace) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(rand.nextFloat() <= randLimit && (!onlyReplace || world.getBlock(posX, posY, posZ).getMaterial() != Material.air)) { if(x != minX && x != maxX && y != minY && y != maxY && z != minZ && z != maxZ) world.setBlock(posX, posY, posZ, replaceBlock, 0, 2); @@ -769,22 +770,22 @@ abstract public class Component extends StructureComponent { } } } - + protected void randomlyFillWithBlocks(World world, StructureBoundingBox box, Random rand, float randLimit, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(rand.nextFloat() <= randLimit) world.setBlock(posX, posY, posZ, block, 0, 2); } @@ -792,22 +793,22 @@ abstract public class Component extends StructureComponent { } } } - + protected void randomlyFillWithBlocks(World world, StructureBoundingBox box, Random rand, float randLimit, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block, int meta) { - + if(getYWithOffset(minY) < box.minY || getYWithOffset(maxY) > box.maxY) return; - + for(int x = minX; x <= maxX; x++) { - + for(int z = minZ; z <= maxZ; z++) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); - + if(posX >= box.minX && posX <= box.maxX && posZ >= box.minZ && posZ <= box.maxZ) { for(int y = minY; y <= maxY; y++) { int posY = getYWithOffset(y); - + if(rand.nextFloat() <= randLimit) world.setBlock(posX, posY, posZ, block, meta, 2); } @@ -815,7 +816,7 @@ abstract public class Component extends StructureComponent { } } } - + protected ForgeDirection getDirection(ForgeDirection dir) { switch(coordBaseMode) { default: //South @@ -828,7 +829,7 @@ abstract public class Component extends StructureComponent { return dir.getRotation(ForgeDirection.DOWN); } } - + /** Sets the core block for a BlockDummyable multiblock. WARNING: Does not take {@link com.hbm.blocks.BlockDummyable#getDirModified(ForgeDirection)} or {@link com.hbm.blocks.BlockDummyable#getMetaForCore(World, int, int, int, EntityPlayer, int)} * into account yet! This will be changed as it comes up!
    * For BlockDummyables, 'dir' always faces the player, being the opposite of the player's direction. This is already taken into account. */ @@ -836,47 +837,47 @@ abstract public class Component extends StructureComponent { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); int posY = getYWithOffset(y); - + if(!box.isVecInside(posX, posY, posZ)) return; - + if(dir == null) dir = ForgeDirection.NORTH; - + dir = getDirection(dir.getOpposite()); world.setBlock(posX, posY, posZ, block, dir.ordinal() + BlockDummyable.offset, 2); } - + //always set the core block first /** StructureComponent-friendly method for {@link com.hbm.handler.MultiblockHandlerXR#fillSpace(World, int, int, int, int[], Block, ForgeDirection)}. Prevents runoff outside of the provided bounding box.
    * For BlockDummyables, 'dir' always faces the player, being the opposite of the player's direction. This is already taken into account. */ protected void fillSpace(World world, StructureBoundingBox box, int x, int y, int z, int[] dim, Block block, ForgeDirection dir) { - + if(getYWithOffset(y - dim[1]) < box.minY || getYWithOffset(y + dim[0]) > box.maxY) //the BlockDummyable will be fucked regardless if it goes beyond either limit return; - + if(dir == null) dir = ForgeDirection.NORTH; - + dir = getDirection(dir.getOpposite()); - + int count = 0; - + int[] rot = MultiblockHandlerXR.rotate(dim, dir); - + int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); //MY SILLY ASS OPERATING WITH ALREADY FUCKING MODIFIED VARIABLES CLOWNKOEN int posY = getYWithOffset(y); - + BlockDummyable.safeRem = true; - + for(int a = posX - rot[4]; a <= posX + rot[5]; a++) { for(int c = posZ - rot[2]; c <= posZ + rot[3]; c++) { - + if(a >= box.minX && a <= box.maxX && c >= box.minZ && c <= box.maxZ) { for(int b = posY - rot[1]; b <= posY + rot[0]; b++) { - + int meta = 0; - + if(b < posY) { meta = ForgeDirection.DOWN.ordinal(); } else if(b > posY) { @@ -892,14 +893,14 @@ abstract public class Component extends StructureComponent { } else { continue; } - + world.setBlock(a, b, c, block, meta, 2); - + count++; - + if(count > 2000) { System.out.println("component's fillspace: ded " + a + " " + b + " " + c + " " + x + " " + y + " " + z); - + BlockDummyable.safeRem = false; return; } @@ -907,19 +908,19 @@ abstract public class Component extends StructureComponent { } } } - + BlockDummyable.safeRem = false; } - + /** StructureComponent-friendly method for {@link com.hbm.blocks.BlockDummyable#makeExtra(World, int, int, int)}. Prevents runoff outside of the provided bounding box. */ public void makeExtra(World world, StructureBoundingBox box, Block block, int x, int y, int z) { int posX = getXWithOffset(x, z); int posZ = getZWithOffset(x, z); int posY = getYWithOffset(y); - + if(!box.isVecInside(posX, posY, posZ)) return; - + if(world.getBlock(posX, posY, posZ) != block) return; @@ -927,23 +928,23 @@ abstract public class Component extends StructureComponent { if(meta > 5) return; - + BlockDummyable.safeRem = true; world.setBlock(posX, posY, posZ, block, meta + BlockDummyable.extra, 3); BlockDummyable.safeRem = false; } - + /** Block Selectors **/ - + static class Sandstone extends StructureComponent.BlockSelector { - + Sandstone() { } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance > 0.6F) { this.field_151562_a = Blocks.sandstone; } else if (chance < 0.5F ) { @@ -953,16 +954,16 @@ abstract public class Component extends StructureComponent { } } } - + static class ConcreteBricks extends StructureComponent.BlockSelector { - + ConcreteBricks() { } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance < 0.4F) { this.field_151562_a = ModBlocks.brick_concrete; } else if (chance < 0.7F) { @@ -974,18 +975,18 @@ abstract public class Component extends StructureComponent { } } } - + static class ConcreteBricksStairs extends StructureComponent.BlockSelector { - + ConcreteBricksStairs() { this.selectedBlockMetaData = 0; } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance < 0.4F) { this.field_151562_a = ModBlocks.brick_concrete_stairs; } else if (chance < 0.7F) { @@ -997,19 +998,19 @@ abstract public class Component extends StructureComponent { } } } - + static class ConcreteBricksSlabs extends StructureComponent.BlockSelector { - + ConcreteBricksSlabs() { this.field_151562_a = ModBlocks.concrete_brick_slab; this.selectedBlockMetaData = 0; } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if (chance >= 0.4F && chance < 0.7F) { this.selectedBlockMetaData |= 1; } else if (chance < 0.9F) { @@ -1019,17 +1020,17 @@ abstract public class Component extends StructureComponent { } } } - + //ag static class LabTiles extends StructureComponent.BlockSelector { - + LabTiles() { } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { float chance = rand.nextFloat(); - + if(chance < 0.5F) { this.field_151562_a = ModBlocks.tile_lab; } else if (chance < 0.9F) { @@ -1039,18 +1040,84 @@ abstract public class Component extends StructureComponent { } } } - + static class SuperConcrete extends StructureComponent.BlockSelector { - + SuperConcrete() { this.field_151562_a = ModBlocks.concrete_super; } - + /** Selects blocks */ @Override public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { this.selectedBlockMetaData = rand.nextInt(6) + 10; } } - + + public static class MeteorBricks extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.4F) { + this.field_151562_a = ModBlocks.meteor_brick; + } else if (chance < 0.7F) { + this.field_151562_a = ModBlocks.meteor_brick_mossy; + } else { + this.field_151562_a = ModBlocks.meteor_brick_cracked; + } + } + + } + + public static class SupplyCrates extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.6F) { + this.field_151562_a = Blocks.air; + } else if(chance < 0.8F) { + this.field_151562_a = ModBlocks.crate_ammo; + } else if(chance < 0.9F) { + this.field_151562_a = ModBlocks.crate_can; + } else { + this.field_151562_a = ModBlocks.crate; + } + } + + } + + public static class CrabSpawners extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.8F) { + this.field_151562_a = ModBlocks.meteor_brick; + } else { + this.field_151562_a = ModBlocks.meteor_spawner; + } + } + + } + + public static class GreenOoze extends BlockSelector { + + @Override + public void selectBlocks(Random rand, int posX, int posY, int posZ, boolean notInterior) { + float chance = rand.nextFloat(); + + if(chance < 0.8F) { + this.field_151562_a = ModBlocks.toxic_block; + } else { + this.field_151562_a = ModBlocks.meteor_polished; + } + } + + } + } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index d4817b135..14ce1f4f0 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -5329,6 +5329,7 @@ tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_crt.name=Old CRT Screen tile.deco_emitter.name=Deco Light Emitter tile.deco_lead.name=Lead Deco Block +tile.deco_loot.name=Loot Pile tile.deco_rbmk.name=RBMK Deco Block tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block tile.deco_red_copper.name=Red Copper Deco Block @@ -6151,6 +6152,9 @@ tile.vitrified_barrel.name=Vitrified Nuclear Waste Drum tile.volcanic_lava_block.name=Volcanic Lava tile.volcano_core.name=Volcano Core tile.volcano_rad_core.name=Rad Volcano Core +tile.wand_air.name=Structure Wand Block (Air) +tile.wand_loot.name=Structure Wand Block (Lootable) +tile.wand_jigsaw.name=Structure Wand Block (Jigsaw) tile.waste_earth.name=Dead Grass tile.waste_leaves.name=Dead Leaves tile.waste_log.name=Charred Log diff --git a/src/main/resources/assets/hbm/structures/crashed-vertibird.nbt b/src/main/resources/assets/hbm/structures/crashed-vertibird.nbt new file mode 100644 index 0000000000000000000000000000000000000000..93e22b9fbcba743bc4c538bd72cb58b3042a7447 GIT binary patch literal 1664 zcmV-`27mbg-0S+{E;OmPFti`eS@NC(VL*XDQchrg2YIR zpmzc-tz)8;D3EmB^p*M!?W>ifG%~#+=S-jo5DX(9chAhu&djcvm?$E@O#ikX5jEe7 z`a7?`&ms!#rb?^SmehPAnp|i3@{ckm8vPiNx6Mm_sQFClukpx~RZ`jg6J2JcWCFm9 z_dmPLsE6^J`4mh57^4`+D8@myj}^AFk46f{>oDUUX6%gP4KQOcSL;W`Tm~?nLXW4= z<2knXF}^cS-(0?OoQZ-70Am~<4lyV;+*loAkRBAP%%Hg@in%l~A1LMulyij&CIU>T z&=V^3gbF>OLQkX^=dAud5g4C#A1SvqOp{wk!F0#*2N-EDGb8Q6b{{)>+`Y_9cP=x) zNPCbODOQ>3uDhG-{QXblLpL7|F;W~dBgLW5zE&_&j4>m{s!zN8gVx4jj!Y-8OnL&1;JkJcW zD^%DODKtk4&8Vg@gW@n&j1wzjwPB_T=1jrN05esL(=c-da}F3yU2d4C0%K_Rk#aaQ z-Q4TeriMZFof#>IGb82jwhlORxwV@aDMv9Q?PWu_<}!nPh-xk~(*9y50&9WlGBeWt zVn*7hhHzbG2CXTo%gl83xaZ~e9HW>E)ox}`Y#i6+n7qw(HKw4jt6$Rhw=^EnS(cR5 zTe~W&d}HhNn$-XHD!*^!2kX0=o6N523_VU)bWx?5ZEsILEUuHPvc(6V%r?Kb1?@j0 z3b#d?7d0}9$fT8B@9tR!Zov@s4{}rA(SPWt#RIEE{=9odALd_gAkCXBV4v3B% zaN=N7;LV0PQ+QKq{S4uDl^Ik{-Ilgb&v8q8f|K0d_au+IO>&>d8%An?nUNY`W>9n6 zFc*NC5-wWPBainpQuEKu>{G3rdy+V5<=i7j-^w+NbmU+Lt;$rfDrZMga)NR0S?MHC zxreGgPtAZACbauVO?tziLlra9r71H~lg^CPI5!Ns5M@T{Ihc`}H)f;@(Fx(h88gVw z?N0?G)ywu!aWvOQ^iu!*^Z9Tu_3rZRZ!dp(`S#~e&`Yt>t~G8i#f((bn2~DQWWOUu zU?q(rLX9FqjY6|gXhz3KW>BP~VpknQLynHlLSnHi1kQn%E`sls-2ieU!Xj;^Gc zLAJYRj-hchwo7M@c8@CTLRaL>AkFBCoEfAUb;-;~Cj@4s6GFqFD{^L}POaI;=+zl! zq*rGG!mrLSBh^7>x^uZ_L}sMdYnYKbozqG3>;XGY5NA>nuq6)_en^n?mMkwQ2L<&8zLQkyF6D#JLD#kfeGExPQx$|94Be>;0p;MPJ#I55U4kZoMzJ+oH(+#RB(Fi zqzP5kmnF+u@67Ic#s!cgaq5?10MkywnIof)6)SQGE61|ZX8q*~9~3#_-nfY{uNVu* zlIg%WhY@#RqAM72wpW3;t2jf_8>5ld)X1G?fy5fEMTR9yyCI%4F>*(m)~rl77E4-U zISh!j-8GG-8opj9TbfxJ7J~+O*;eg4D^0JSMaGuB(aLS9&Jd{@&mlFa_fzg=SC^k^ zr-RXyjJ#qhzl=0R!m&L+)_-O)QL_o(H#y>m}?GBnA3S46jQsBns~lS z`!NjvDK1c~tm(;y|CSxh5O2YOkKn*X!EuZEG&7H!xXF5)S(Tr%@h{U>`%1*gYO z(!ffVz23FIneBiUb<#gn0l2Ta>@6fY)~qR^M2mfI{BTKKPDF>w^(;{b?+u!fCUrF| zP)Bc!kl3?|XX33=p-p6HVC@}dOl^r(ISMrPI!%T~yb0>2vN3gdqP004-q Bbb$Z> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-block.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-block.nbt new file mode 100644 index 0000000000000000000000000000000000000000..53fd15326cf7ef1e8f08d8dccf0e151296ec39c5 GIT binary patch literal 312 zcmV-80muFyiwFP!000000F6>xZi6ro90LiD{>H%7}=Xf?dgjl z&v+F&c46l{{z`h^*0CBv`YwJK`x5B6XyxU}c)2SX2|s zen78JR+~MGex#i%9na}f}nCgwx#M4#W z4x#@~VTNpDO-t7Qx8!7oc=HZ?cn7WujwR;f#5{9ik@YmOdc*UfYxl(Xo2(oB68Hl; K?1qIu0{{T6-9%8}2jg_OL4l?`tBW*cpN6uf za{#oE`se#{y{ou#@N_aBKSYnC*U|VndbztFS?MQMx?%~|dWUVjLQ35+DQT&3S{Ubm z95tAIIchNN9369w>4XW?_LrB}N0VwALO3a8j)h6Rzp;v38&{r84tk#*{$ma;b1M%$ dtQ*TZ+htX*Qt&>oP<3Po`~ngS)V0C`000{@tm6Ox literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab-tesla.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab-tesla.nbt new file mode 100644 index 0000000000000000000000000000000000000000..f707d794e1334bc48ff24edabfc171bab624b47a GIT binary patch literal 367 zcmV-#0g(P5iwFP!000000HssyZi6rkbbuDZq-j6)^%T>7?;)nX0Se%@*#e0YcUAZF zBQO|cbd|bD2sz1}?eirC;1D_ai6H>=U*!KB60Av*L?=EeEltXB=>jA?G zVc|#+wm}MEol^pVEa8Tv!j|ul6;|X9<{8+Cft|P$T%3i?)X4^h$Y`w~E^#e(iWo#z zE5#C6lCT@3;Uom^P+>t**Bx0@A&Itph^yUtt+0fKuND;!s00?Re(#)*BC(c`5Br4JR5M%NblGRWKvfQJ0?VZbU}t zl*kG#6^Df+tUCM5(6dQ_;p9&6Z&&pUf4Qo^bL=V(SHAX@P)Ng8Y`W0DfGCA@Wwk-; zUr6$80ru?Y{_5xcI32UmO1f>M**WAdgE%AhHQKYl+W|Oo&RNv;fNDqAh!TIGb)B&o Nd;yc9$ekku001Iyt#JSV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crab.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7891ce8b035c0eac170cad79d9b59307054d9ec2 GIT binary patch literal 308 zcmV-40n7d$iwFP!000000HssgPQx$^J!!l3!V3=w{sQsLN1**dmA2jpBu$lgRPgmQ zEh|N0Aa#+V$Z>q^;}aJ^j>M}EiUFK<63!eMwX9f?M_4(wmA3V(FM?4ZZY$0ZsRq}q zG>vcH%i77x4{zhn`V-u|Vr)E1rqNh~ATCCTRwIZ%StOmc8fim&dDJYBIIFeDux05E z#Iq+x?nzV4%C-|&Vuf7k`=P7Z&RfezM4MrI^f4 zYU24S?ItsfMpU5KIopv7qmzBlbH?oev_M$S)K3VZ@Vp#GxL G0{{R}M32A# literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crate.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-crate.nbt new file mode 100644 index 0000000000000000000000000000000000000000..22c5c2e30d8e4c976c557d1dca341400a69bcf91 GIT binary patch literal 319 zcmV-F0l@wriwFP!000000F6>xZo?oD9E=k``d3wLPf_)|hp2J`i`bil6dMGjQG5DA z9J`T~7ZO6t&g?ETlt6*h$zS3ChMmTPUXnvx1?Eeo>n~S^pe(?Rb^~Et95d&I zrz7JWhTVZlu3*^NUL|<9^f^+awL;d=O6-(pNUc_i<(PY6*W||xN8w0O?WOMeVrffW z90o+z?p7;B4MM$6v^27E%nlmhWwUHQyj1iSSfp*`jM#T%b0o6CbIcsX`>FP#YpShW zJFyQvjS@ArA=URR8fpJ$xbV^VPwhe|^5a!z z`Y?VcUZPxBZOF#&mLI)f@6mwIXu#`KZ=;oTn_$r`=F`YLapETHab(ptyrQz96G!$< R*7asF`~ecTUluz9006q`nPvb0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-dirt.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-dirt.nbt new file mode 100644 index 0000000000000000000000000000000000000000..3afc135c2af5e560d2b7b18dd7d430fc2d39fce8 GIT binary patch literal 313 zcmV-90ml9xiwFP!000000F6>xPQx$|94Be>;0p;MPJ#I55U4kZ+-BPv>^QQwRB(Fi zrU_NlmnF+u@67Ic#uZQ^^XivU0K?AWS)!np6)WOzns~g* zyFQHnDXmZ~obAZP|5hB$5O2|ekLbWf!EuZEG%`<|xXF4PSuLA7xWwUk`8PS=dnND( LDD_MzI|Bd!k@T9s literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-lead.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-lead.nbt new file mode 100644 index 0000000000000000000000000000000000000000..8ea4a132ba5d38ffc733876a9619a220717c1bd5 GIT binary patch literal 361 zcmV-v0hazBiwFP!000000F_kBZo?oDT(A>AdaJ5l`VUpl{fH`mU=g!PNwKlarfK{2 zHF0o!a0*4TES6cujAtkT3P`Q`!2|&Ole%{SIku!op#?VzSZ}qdKWsTno(f1hV|~Lk z5?EOhgqMyb42!_<0ER_yu?Q{}!NnuEcmx*@aIr-VOGw%+<&bv9Xvie)#8DH2v^QF_ z9M&ZIJ<_z2Kw(j1P0F<6W@&>Y#=~aKaktYbVc4$~4NhG-tj_-y9^SXjD=Cf7WWH2g zovS%;CE?MP&yM)6PNJ37LG7(L4TPN*H8#W2NLWbKUq9f+Dd%dj8<>zJhIfjv*$9m^m9lP}y89|A zq1^PQ!`|Iz`6U$W#US_zrFs;Ig| zA<#mqmS7JBPidy{!05w}3oyFn#;Ut=4Pl_y&(A6ZoL+mLe(#48Cq5VUhM%~Z&%s9<^pdj7RoX%q~L0cX#fsS z;mVY1_deo1%hULUZxq{CLkqzY%&Jl|G)#Ht<#_4f`0?qhA9nIK#)5_}f zfR<8!fBkr;ifaeQ5A*plew;05^JlAiVpXS@$XH0J8@cSLwqOFa{p1(T)uft65G_hsU};hx9IPU@#+4_NgTdbp|1qbQd6b6%)}3Wd YPFc096#O?VRTCKkziuuYqQV0J08KQnu>b%7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-ooze.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-ooze.nbt new file mode 100644 index 0000000000000000000000000000000000000000..27df02e1a31547a1b8d391d7ba816b2211c2f38c GIT binary patch literal 302 zcmV+}0nz>+iwFP!000000F9DeZi6rogvUU_PhYF5r>OeeLsYo|GO#3W3`X{*X?yx& zNJvyc8cUYt-C582vojz?&51S{^hDMAm3660BL;E%B5Ikvh^;vNG*>Skw^9 zp+UsWp{_Mm=+A3qLsM0P)xZFcyP|nxrRjyumn!oinjlaWo_u&9_njYQTjd{W>*TRF z?6fSY=~JU&S}A*JVBwb6w8Vnu7OmipmkDOPmNb989u!lvk(zi4#of5||0KweZLI0Y z`hS$1Ad6Q|_T7_xoP$Es^v!=ST-@HL{jE zdDbkDI;*wFv0>>B#50nh@T93>WqXV^sUeo}Dv+6T*J)}I>h;pltje(-J+VF3=8cu6 zT~LvA)u6PNF2_o>*hXON^{cwbzO6pg!OKgq9JFl61Zc7>TIGIQ2ooiP^|zq~rX>=r zJxiuL9I@bte>kfJXB9Y4iplJyCZ0=Y!}Po+TJD`4$i>9-YdqpLX7V00d7dNqGb0|U m?gaNx_p;R0PBo{hIjZ=LZJ0FsBxZo)7S94CQ1`dd{!Mb+;fqT&XTNfvPH#F4!ewWqJ0 zkbn>nELoPlGy9lv0pv)W`lA@YxRY?^$f#w-iX6hqv0Q6YeY?V6iX3rg+(?*KjD=&# zbYxt^hzBsy9gMhIt3ceYIYZJJqmkCMk$cSoi8We_3`>@FOFTtl5|tV}y3OB!O? zH;A;^Z#J50_+*Hzqw-Ox(cCDJCxRL>HLo0S8CSJqJh3Wj{}fsaZ))JUyk| za1H+{E>Ntj>BxrvmL1Iy@4CCggx%)Vv|fE*Gle=r7s;U@mgA;Xp=NwnZk4(qMb)u%0-QREPJ+75(p zVpv(?glEPahFyV)E@0Sft^(qAOBp1c)(TRAH9sg~kQl8L%V161?2v*dhTNjUillD) zU`d0-PX$8S9O_!302i<24F*;QtJ4hNaldWeNGg1GEYzm#w32p@B7;Z@c<`>%^uEg@ zZ$KqSbTT_Ny* zxg_v_nF@R(37ZX9NZ~8(deg64TtKlgxUZ6!i;6LVlV2*@ZV7&&` cZD2heTDKgox%3N-?S*9U3-8GQNmv5_0F8N?-v9sr literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-tesla.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-tesla.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b5e1c69a2b54a01cfbd07e823f58aae6754acb24 GIT binary patch literal 338 zcmV-Y0j>TYiwFP!000000F6>xZi6roT=NK+O8x5V6ji@_h$=Tg1~!RXgOR;yl%Bpe z1WFNkSVGA5%&mqNzBuTX37l&1$bopg7x5+q!t+oSUTp`4k z1mTIXgkd*ef(sb7*eipuDJX@g)mlMP;YREgF^G&-ilwk3VYW!)O$gkg!jhzJ`eIRy zBszhR)cegwVFj*UBWfI3Da4%z@VqPPcajQU9SgO|3qgeDm_i^cc=9)$dB^-9nkxU4 zTPqH(XRAbswY%zj@=BUN4QB?O8ph6Gf(0}F&EaJ|PGk{UCGt{B#UYl2bszFVc{Y;} z%rLDMt3@v-|Mbz09L(wUTz{ kT)D=47@3n0ud?n(R_C#sE%`=c`-~a<0%QfLZE^zu008QqrvLx| literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-core.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-core.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9b5444901c3ec843a0492f31f15958997ce509f3 GIT binary patch literal 2734 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 d{l6IcS0()nFSm%Zlhb`v;eG literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-fallback.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-fallback.nbt new file mode 100644 index 0000000000000000000000000000000000000000..fa3e955c7f23a7fddd85f093dd90b3815bef646f GIT binary patch literal 315 zcmV-B0mS|viwFP!000000F6`2Zo?oDT)>VWJ@nG{Gpee`engc&u&}*OX|SWKR8{0Dw#7zE}k%PNYbogD@)CwAyrgSNq9*1!6YtLWn~^ z?nn}z8P^z=fZ+)kk$}l=VA!hW8pPC63E6CnhN8zo9yBq?tkIg4upw!8NUtgz`%QAh$SNT}c?pjn?f6DYu}y1Lw=aRK9-hMbDT43j zD5t*pR68e+{=`|!4oBZwPON%mqXNEi&1>7)3g(vWEWvh`U^`EEDm>w-@C3~~K{NkH z^PM6bw^Ad;rD9&D;REm*>a8_1+VDZjbL#9RMExG3UQZU*X|Iv?5NUrR_u7gtv~Ee5 N!7rTN?liUo000O8m}39{ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-spike.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-spike.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a28c2c30924904f57b1e67259e76998370732927 GIT binary patch literal 433 zcmV;i0Z#rOiwFP!000000G*W0Zo?o9$DKezl3k}BciDZ~VTWlCG4%~1lDI7^`4FM2 zwx?fcK3cIhK}F(#_}TtrVKvgZJ7eT1G+M=Fr2*fQ)%(bYiJ^{2u&HEy<^03)R zETHpO@e(Ji2!hiefz>W6KeUke(ph1x(nd(hRRq2$U}Y{&f9oeb@~TL`#J1(fE@UHl zj%9b%hl~rM&Ju3C^D?L82D6keyMA_!ry4pi#DSp>dglJ_$b=3ITVRNT9_qjZ4oqk< z)MDtBJllOTGIPB&GHiwk9AX6yu|{UDULo{rZuW(+JRid=v1~mfWB-i@p|M$09TWLJ`BH z&B(GM{F#)vWd~Bq%K!=zUI7itD{8ttjDc~>OGrYSXkrM2y^(Isw$9!;b7#)ue)l`y zIoPkAP+Ld&jWX+<)SVxPZH`Ty$a754Iyw1w`mPqOIh4yOUr9LcDQb&_LjliPAGynD z#}lINhyU%`c#!yW{ftNEWNqW{dgq3ie=TZFHfGf6*J(||t$D$jRD~vX4cqYOiCT{} zA8C%@nOpa_EpC*bSuP}uU%%f-xFQ^@H)%1G2(y^ygRqKe`w*O@ec&KR$-kqCOfld@ zc~_@;K2y!?%Q*vyJ2*k;P1CH0n9i!+WClf|_=-BY=%vjSh8uku!c2$(HZ-yo3 z#i(VkqB;D z7<#c7@d8>UY{e~gAY=~n1`KcS01W-zI|L8jP;>U$gB#Wq zVg`Zw>YBW(%T5fTPX0@CC}57GvWL{bZql3Wpwz>Z3MKJm&LDYpx#o-6B96ud*L46{ z>ZNBabVYDU4^6i4YT0>bw0x+`j{6KwO!?x3@3))%x5o{D zxvqdK;!SdRXTDmz8~Jm0XZ=DwPZB-9@g-*li!5z;b<@DotvOJBI83kU-3GD3qr2ae zkdHY)Ml@v(CI+^h--qT;2YYbGGBEYNGx79{v=u)Peo@Ib9Fvf9x5K%At+tas7oD(y z*JANr7q3KxuU_U{z)*fzq1Pli!rqTpAvP(jeHI_GRP|s8d{q%iJQ*kfG`Cs6P?kT6 z1R^&S91!nVB;qyMJ|B%tS?Izi!k_EZU$f z+Wg~mqiz4x=r28m!Wfh^Ybdz?>|r0h9dZw%@1>$OR3LQ-gws-xdjX8Svfb~w zP=L}FJbL{Dt4zY82@Q8dFPaWXwL5WIJG9PjBzg;?1mH<$Tt}h-5A9CyK1A*He;qMq zME(>*5aIjD0u;m=_{o1nLo7c%Ko&SdEF5KyH<;-IP%evjepE(AniUqN8&7JR_XWMO zwu4Ct2By@p0=K^8`a2dN8!oGO-WR<81q@zgTh;25J6=P|1)|?N3Q-8=VrYcQnOJTi zM(lpO_2}rN;I@C8P%Lj9y>2iiGFQc=V?re}YN2!^>oBcyp*<*Hb)u?eba;76-Q_M+ zo1e|UU1*-F4orP{|M3vj-Ce9P=l@eD9D{R>&8f5Bq=0B4HVA4roC2u0;6_EVZ6Nq-%!lw(H z?mo$&Dt|PMH6KkhN1N8QEtlSJ8d=+5Y(BxP_1T^?&IjYe^mt=>;ooP?Ifj?beVy3x zyRKz$mGLj4Dq^$3ap literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/meteor-t.nbt b/src/main/resources/assets/hbm/structures/meteor/meteor-t.nbt new file mode 100644 index 0000000000000000000000000000000000000000..418d2c747ae9145385d6323a661841c7176d7e73 GIT binary patch literal 1905 zcmb`Hdr(qY9LH^2w^C8Zcx(-NTLHP8ezhA77rdZ6POW?~(KUcQ<~OZQ z5d^}z0temn#5YKNk#w-THg85U)lW-1>QY9d%q{q2P~5~l_nL;Pb(6%;{sFl<0YO-%JaBJwqeQmU`Iqli)Nm!$Pvc}%7^aIl<`%%WO0tHrzH7n=Ob{wj?s3JrxOZ&?OiLNsUeXvYGFYrqMU@g+fey*_~d!w zUQcgm;T@~qxGWVnC^_tIL)FvaQ|DRG8;1MoYQpZ$Ozq!goG1wvk(yr*W1h4&E5|sV ze*z|r_096=&6lF5i`tp^9v6BHw`iWOv=w@W1xI5z%Gred_TpTnE&Ln-mmBJ54KKC? z2-x80)E4XDS+ye&&FG{t0GYF?UDxMLUe2weU$TSQ6J}*6cdxb!GF= zmEEjtD<uL?V1ckI1dqa@8ft|6h8jMrbU>A*F#Q~NGRw5a2y z$Z=#lf?yP9^qG{u5Z$YFa-lp5K|lyWqFjusoI%hujCB8*IN?3#=+YarND12 z0o^8Y_p}YrIRP8sy$?yG#=Xpcc4D+!;iSzBv)`N9h)D86iQ#qE+Y7sAv}8fd56r$l zqmHw$psTFl^?Uz2PzgeJfKE?+uCQIq9cvp%=R!9Lg`6rMgcmDLfX%A_mp2_JXs_$w z2iJhpAT6t{w7KIG($O_rz_a{p!AlVva;e6Fknsh**Jo&3RIE_ON{Gk}m270pw(SZ) zly{=E+34@H)+D=(Ueknw{;@Oo_uN>H77^ax7FYu)(mRf zh-E@o#=68H669P@u5vcqH)6t#dC`tud=6~?`b%cLa(K_Z6;ezzjhTRG0*+=~B1U{V zINHrWUz(HD48n93U^9V>RY9CTcsfb<%Xp_NXx=xN#_MDu&IZ#s7cHrR0EJb8Gq&*_ z;KAT*KpNR4A8Qu0G4U5nPeg~N?KT26fzQs4+}Fu9)$F4@nvuQOF?}POc71=3_PNGz zkf))|$;MoY8O}>bjFQ9Jq0xQuqq^Vq#_2tB!+eJ_)d0g}4BqBD@@ZsYD+#4Mbnh^0 fPSHy47i;gAi{7cZO#p|PN3%$@{_Ux2u!Y6HG0x*9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-chest.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-chest.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b24269fcac0bd657787981df77f9076ec777da5a GIT binary patch literal 829 zcmb2|=3sz;-WhlEE;|Uc9*?_ScxZmhsq?`KD(|X}yXsA72vLo3_uG^y_Qqn@&W7LU54=y%bMp07g)5P zZnnJ2#U{ZxXsF}d;%r9@$yr;1yWBzQp z9`Dn3?-`nbY)3x%Tj}kK+sd9X0=c$t1=*hh>DL^e9PPGL$?=?G|2aYO3Gb7`Cl0rt z*|BAYW7PlO1x`uZuQa(VEPKZ9`C03CW}K~xV%irVo#rX$!@jsWUN^?3LIyLvp(=6@mxj`$g zl`IU^<7ZzO-@Q9$d)$-MmFz)wy8b2y=4{`4S8TaO)M?+c*{>TGtvd5rVW~^{)!r-L z`XskSJu6xox-&aF#k_vs)7UVN-KX+Co;)mO9J*Dy=H}f8=B2^u^pfiolS8~>i8_A1i z7G@eYZ@Hk(ZM@E3EG?!q?O5pZ8=%1Wbq*9d2H!p?8f(ZuaRzEV(SAlDUqN0?&MxKH z(xW_=oPhLGXQ-YdNP0eE=;^buImXk~{O@x5u~7N6n6HvwD;E26S2jy7x%#$xzSt{k zV-N1Hb0x3nU-`aexwtb>>AsywY)4;SE9iK6ta8Z~opqaHvVJeWxUcqhP5N}7jH1w~ z)sd$6UoJg9Ir+mjOTD_hzHa?(ryp&yn?`;De+Rl zH4l!{?q{`;Gh@<~qE(yYnTdVIwXzXnEwaJ<(Www(yw>i@-Ic9HsT*so(Ss1@8>?N_ z?tcy&_u=naq+L5;(D;|QOQs?ptg`xbM2JZlMn=Su5pmLpI4Kh+LERC|ZLW<-o1HC% zGzanCno6JN^7nS%tKBdY;kuF}z$6isOjkk9Fe$^xh+NZ^N@tjqVbX|P)76}d!{y2% za%GG;U?_8B(47CV0ukhm6-y#eUP<`JJj>L*sWV_G_rOr@Nz~2MGxc-2)?g@Sz);S} z*Z*8SQ-|l`aP@Ew%Ls?TP!5Bk9QM2RVu$^Hz1U&DQxgvRJ(PJC&SAf2MKF}ZzW11V zIETHX5e(&wpGT%1&S9S~g5m1n90o%<42E(zyW3$zSne<)P!4Ai4uhc_26O8$s?EB# ztweFqNA*(KL}YziRY@sUR`t)?`a5pL23_gBHEnY#Dyy|s=ZO?W{c=23`XF4qM%CJn zDn))iA&R%PX|$V(qkUASzf97{t4TVk=CJ)?o(FYunYv2tb?t6lGOZ7$_nD{a;PI}f zG7B(V`+=c!2Se!&hSEKYXg@GqJzV>N;p*Yq4-D0QV5s)X?`}UtSl)h!K(${U(SBg4 z_5(xxgn*%bLh=ZQ!BEbCp_~CjIg>{?42G+Ra~KR)59cr#%3&~+!>hX;Mug=KBLd~{ zD#Bqfl*3>shrv(|uOb`ok1svT*E4VOWjyG98xOi4zVGVC zu?If8JG$++yWY6tE;sDcblA|TQ=@x!;5$Fib(<@h<8RO1Gx%4JKlt!h2XZ%Y#V_3t Rm-BZb{sFUc-#{W30053jfs+6L literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-tesla.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-tesla.nbt new file mode 100644 index 0000000000000000000000000000000000000000..5a4e4f802b38247e125f4a1da3defb5c2e446f92 GIT binary patch literal 886 zcmb2|=3sz;-kGs^vmHcQ^$l3wtg6kr6&o`3*EH9Vn~kk+3%$6HHF+*B@xGh#^P{Ao z_`8`NpC5cM{ND54GMWEgSI&`=r}DEqP8gW|^=RKX@y@*1mtMC!d&J*;3oZU}HTSo8 zz4@e=S$yWa^?~+}TrQmxJs0;rB54xCF#$Ec6{74{x|p+68MjVqh~iu+>KM$h_$t%k ztX}1YnXfy;W~ek6wsbOox$~_yS8mz!ZSTE(gcdx%CY}A+z;^q+h$No|IpGKLK;-;K zINo;IOUA`ubofipKK=xyr?qU0zl!u+3pR-IPhQiTvG45BTQ)w%r&%SIS#n;enLT%F z<&3mxvIamQK8a_cK-R4Azt3YB7Qg&BUz?HV^5IR7zZX8O{Z^gLu=wkh_l_-zH$PhP z%xKR{yZLdiI?w68`1%7N^Z3{4E*w4iH?>UrFb-=(@$2#HO zw-W7>mG6~KzIuLngy-!|BUbs#xC&{uuLhlF#js&?%?qYTr_S{by?3wR2(L9-Mk+v-akdYof{a&t4lm zU$pJtx|mBJZz#Nf{V9h(x3Gxc^`_tHzb4V|ybJB#)lKt{{dg&SSIE(W*ZwYDdFffi zwtb&&eR?+6h@0oO;em{o%!`-u_e`@hi2Bv@L6({4@|iLoV5r0%X^+v}GHHoR#_oE2Giz~HQo^~w)O9OlFDu(`T> z^?Xy?1QRftAqNcbDF1^QwyfY-y4;v}lku?0W{B2zE$Qq)cL22lLt9b;sPxQgU{IQ@ zPYbut-g+Qo>wyhXZ!+a1)`}-=iEFr6HBt9Rr6>PqV~J($KP{s_yqYBUEY!e<|8thu zgHVGr_GeZnnEZdjeJ>(;OH@LH?zb;;Jgbk+yZ4;iHa0n8?d^GdXLdgf_!bdz?Pq=J z^p{URNPF&@`ZoD?Opf)Rwn_2+-WRVw?D$e^p>+5EjqCh}IbV3!A2oZMcYoSn$IiRo zzA3nVJpVsbv#Rl}_TG=p`wMM4*L}Ee^Z(-K&5L9HA4}bzd)rriyT?C9hJL&9LMa9Y E0PfzuJ^%m! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-trap.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-trap.nbt new file mode 100644 index 0000000000000000000000000000000000000000..c8486d48e0b6055537b585ae022f672f9aa08dd7 GIT binary patch literal 1038 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 Jza5`5=l=kvvB&@b literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-base-end.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-base-end.nbt new file mode 100644 index 0000000000000000000000000000000000000000..c77647792da82454a7513fbbfec80450eff55b3c GIT binary patch literal 1675 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-basic.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-basic.nbt new file mode 100644 index 0000000000000000000000000000000000000000..0eb650e0620c96fd90fe0dbf18c3ec6bca809243 GIT binary patch literal 1092 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-ladder.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-ladder.nbt new file mode 100644 index 0000000000000000000000000000000000000000..50bfc2523b960ec80bcb0b12790a9ac736cf2a21 GIT binary patch literal 2173 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-split.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-split.nbt new file mode 100644 index 0000000000000000000000000000000000000000..9ce05bb0fe93aaa72faa5849f91fcf67f0914aa7 GIT binary patch literal 2786 zcma)83s6&68U|U!2PST{B(y6`7n?O*2p18MM@V;^S(|#15mX4uBgBA-ik3%^AjZck zvrE>@8Vwh-fliHJL&I)YSy!iD{4Rv%;8ftqJ;izU#3}62N3Y`Iv-yjODJ;K-D%KYJ;cBbz{|A~f&NCnrc z9^YGgm!0BM_Y8MP?L{bmHGXSz5j{c;$&!$RzHqquv5uBS?lf2&g>y~>D;74mBYhMo z50gY3o}vXXt(=+x!U-j5wEcQ0J-)iW#10rM7>hEUT_8%*pOzCb4XAFYoT5k#>Y4%GVWW!GA_v9p2Kp(>k5u#8`?ho=IME-uC8-Hgy0$IW#GlAn|7- zbt!p1JWnyb%UzWO9;tR!F3@f?c?a5}?vy@^c8NK!h;||E({wPrRkN3^;kRy=I*LHZbwtn*rS6~@RJdymhmKY0l(6^1S)A;xByYVf@&4GxT9uS~%8 zQGp{EMS>A?18{`{H68aRiLoL_=+s@Z#s9u&9aj?O6KtTu8=SWePC+w@Ygs zgaa6OSlcdjyZmD=1|LQHql^s$Ow0*)c(bmjI00--z*|Z*#fQn00_GM_l%ZdNqM*(; zvJ1-5)gY=G*xGo=Kgvs-0OwC&;9K3=iS%=Z@C@(q5njuviPJjR%nvb~3m!MO%5z?` zn{r-scMD?7Hgn1=vE0nloce2R?4yO(Td|u6l0+o^FZ3SS#i~fgll4N8KO8d*u~-V} zolRiURkH6pUiSQSsc3$}^reJ-JIJcr!oL&Bm&EML!3Woh<{%E+%S!J_my-(Tzn@Xe`o0t@RJ^IAeMN{ItUjoQkUAcqxl0B{M&lrfFm4( zgIKX`(hPfavLcEe48W14Xj2_K~YC&1Yf$H+#5=W(Cn(P}$o%@LP2gd^X$ zSy?k;bp(AAh-D0)((vLI8ts(qI#&$CZ^YT%6?J&iJgqxQJXYT~>7<0~97MW}z{>S8 zawKbnwgV8$-BCCI#O@H%R|?6Z=n<9I_^~A*^}znqu~2ObmxPt;P(6La;?8Q;vFRYR z!KStX=FV&cqXo2m0G4!Ga=Bc)($Y|aFb}ZsnLU&X)dq{Mp4tt@>vnHplQl)zG_FDiU$&;?GDBWg)^&{A@2k8Tn zgx#y$i2>wLwj&(XZt!uC{PYG#wi>hoZN~8G5VN_4#KzCM^Im17URS$S=1Z@V& z1lk4xQml?sZAErvw|bU%^g9R*7pc~^XtIsw0SB2^7;C`@HNjxw!6^E52SO4*hl*86 zyZQQiy0ko>SpOo>_3C8M-bIgrc8Z%(t2eMFC*@UH(Qg*v!2IcNr)r-jMvx(y8@{yj z{Kpujp=$om^s+*(u?AmS5*O@+0(TS2+~n~t#TB{-YWm{8)NFa^-V22wmeO-CP4VLgc#Bj4 ucV6gbjsF8LgkpG2nv~-LOq}}q5v#@Z>xEA4@;3qF%MQd?xLm`rv->xdOT2Xe literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt new file mode 100644 index 0000000000000000000000000000000000000000..635f3d95efe29b441c3537b34b14ad8abe05a840 GIT binary patch literal 1797 zcmai!2~bl<7{>uciw8P9l_-*Qti%xn6R>#Dz-ZG_?W3qjzynBp6Cw};%H^{tirAEz zF~vblh(O6$w15YP2Sm{r4N3?R0|sIdFT!xVU=1%2(WDz`r^j^cn{RgZ+x_0|Z~yy! zOFH(E!^C&_bQsSgboQ5$h1T^OGS(NaUiahVt(Mt`lRw`0@Lq|?&H2Rf{DrIfzK_2X zde8Tp8+wt0`@9}lr;EW4T;e}sFLh^M8Mf}0Y~EnAHjadNv(Zfq>_u5n8rE3wjDJj` zHk-B9nu7b;?mwe?WBs}8u;y2Mi}g})U6W5M6=Id=jl-gFwVfCF?C1&%3 z-K4l_rL;Oeu3EdC6x`F3te3scy4i$(zCE6#lc+0N_+;;%kTfBN@eX9~yK2m+^v8_N z;e4Lfl{TuuPvI}R@wjgOyEiJ6f4BtSJ^t!#o66rkv)foV#HBwTG>MK=OczH=IrD0S zraQ5ko*^8KFJx93P^saIe;QkA_`5|$Y6!@aYVYby`1p>Oo|ODdxOqG2;$;Qw2B*a; z`tmL(UL+yh^J`|ccAsrMLM7KS(u|b0dPQfwPQ2%WVNHONpv40NS_9g$j?G z_+W?tzmBdFB&?jpr(%X@G=%7id@A89qSgQ9)N+Zz`^rWF;C7AnInfnDoxtAq9+D*H zE9e|YsMuLhe6-hD&|h=?5PH6HJ}cfOzJw_)A(@w#b^ANV7cr$MKhNMvF3KcmV>!+B zH?{Q1pP&e)56>u$SyI3DoVL(ucg3et?~5Rm2$czy@>P6 z+4Z}U-SiT-Z^!zJnTx`odZJFrT3**oMDHtO!7}zrLBiD`qMf$J10ZB500IxNfe0)2 zudqzpm7(tdm5c?bjMm*?W-GIcHg*2gNQ^^CRtVfXE*T;T-FR)HkE?DOzrM$bw4M@Pa4J2rmOa3q7nQ6l~0U`3Xx*)_@ zPA>sM$9`I$CZEvZ{q8NghDL0(<=TKpR!5a}LDz$I9r^8Xp-1wRGsp`9M7vs;QtE_L z%Ua=$^%;@sY2e@tz;)Lfa77=bV)H5i*Uq_stICy8_<;Ap2)`eiyajiK;AeXS@H z&GG^=z-OkDA38(*In)?)RIun=6iXU=G;jZ0@<8N-<4K&l_>cS}+b@4Iz>qM3JP^R( z<^XxZ6d{gY9||GWau*Pc!FLS4`r1jUlo1${=|GK2YQZWYJ zpz%paQrFO}&TZ!Ox0TOR9g(Dt)IB`kL6opvWgY)55`C;eKrQtYuO6i;jmXW4$x35H zsg8h*R>zT?B6|8Ng6d`s>m=rsH*K%`dxeUzxI)#a42zHrX3uXK7#m4{on*U*YpnT$ zLQ*pE2_C*B8?~P4HeN{1=*G_OJayn5Gh?#tMXoJnTW<&SIKT2>Pz-MBuP8e=h^ZT8 ngO7wdjmHDb{E5!yR~g8*WXc}j{A^xHfz8o!JN8j%sDs1rgqEgM literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-triple.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-triple.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b1aa16ff443b8ea9284a8b2d2fa5ea1528fcd6ec GIT binary patch literal 2339 zcmaJ>2~d;Q7PeD-ue_!zq{5G~NLUqFeoS4SK&pWUmesnXr4ei_o5&JTL&7$-5(7yU zDk=$^PzYjJlr;i@DoL;)ga<{6A`~J)2&(~N5|(!(Rj6;K|9tb!J>T4O{(H{7=NQpH zTDS5&&wPGmtIMXuXGaW|!?+(Be)z%tR_v|%124wg|ACyM1nk#{{wSN7^{b&(NVN#3 zJ!F0Zl{QVTt@S#eb-KCNbGy_YGqJQKFU@{QDVgaxyD(K-OjXGy>$iFZ#Fn%UO)Nz& zE>&(XP{o`W8jS4B5cU*%G>&?YOpv1~%~2jXCv`LfH9c<93f=i#W<#UeGtQ`NH$E~c z8l@$2cnkd@=5_Z!9&w}j06q@q9YtFn@0`gbUmQh-T5CVHe^9(FTRH9^&$PKG2T&ra zpXBj+g6;}B`lV6Iz9`f^x!X9;X{w|ucxsLu0awavEx>LvVM@mDm-cu1(&zo;H*~Nu zQyg9mG=_;ATjN$T22He}k$#R?*zLI2f6IT`_ZaKy*BS z*l#%S$w+y#k9$sIFx9nPql@VhSWRjZabzSpfaq>ph z#9XBOb)!=Wx1ra-R_izI(2SfyUZ`E#h0`iRpeEbBc=$>ZMDpNsPoabcNO&^+Tw=)q z#Bibei_7C!#PFZ=v(*_Rf+Z&P(Z;VCP|Kh6I6nx5sS;EIp*Q6nbsTL?T9`c+?<*o6 zHxqt+9U5cOcSu;wcITgnDsAyOUGcn)aN-2xS>1TwsF|?4BHiYJGs+MrBjDTU#LsMn z-SrSocE`BInA}p}Y5}zvE82(8m_EtV|7nVr3kW~!W|!9F_QFnkAH#WrN$SedG(sD@ zub5XP@Y(QdBmW(lJ0kZLFLDGvITlxu*tl$m@H-Dq`&$bYJxBeg^d9XQ{`v8EDwHSCnTzRi>neB-N6G43AszpvtRtN7nNIjhhT zzcLYa-+^!(0=^`f$a7(Eg5c6@0hf|JR@uoZ#jY4SVhTN-e39t4O-TM88d*;`t{Iqh za<`^r$AkKHo*{-vEUVMOoQf_Pxu^4&BaQ(*q^_E(I=a9``$Fl_shsg3Lzx>Wj$KWgyxHL5i#G! zeH&1LeRy#6sMqDwYU^)PU%Q_R$|i{fMOYj7>YCro>GvlyB{`H05iokW1H=y8%4%|@ z0v|LT1QNF8abC@SVP|6q12CgACkbz0f{kKBBpW_A3bg0P@Fbo_^(Sarmx>(V8i)aH z9Vf*h6zf+xRGp_hqZS}bTI1Pr>h7> zk$N7!qqrL=us^4Ofl%CnTE3n5p`_}zNS>&Q_2-JN;gX3LYCWhFHD2A=#qnb>@svA;Uwq0Ua~D=da_NIm(Ft);^1o+rL( zM&(}c8p?V4?{7j6$3M~$_^i@1i&ms~r#E8Gqr86Q9s^+;014+|oFAjL0>Yglysb|< zFifzHc*I1OvI2U#e=Z2FB#nu1iK;i2pW5OPf~S6qaivnq)EkbeC5~Fcxw0oY)>P$2 zbxD`&Ete-T)co&2qVEb;>KOOsIeyaTRI7AdFH z8MWWU_&UWZC(yoUS|oEb({}pJIoXYr+T6By{jz{YMo;-j#J7q4^TUm;A%9>_Oh?#q fVlQNb)=Pt;acRR-O*8pc1DH|a!Rfsx*RA^>P>`jU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/test-jigsaw-core.nbt b/src/main/resources/assets/hbm/structures/test-jigsaw-core.nbt new file mode 100644 index 0000000000000000000000000000000000000000..a73962172e3d7a5fd672778f86f0e20178fb12c9 GIT binary patch literal 479 zcmV<50U-V#iwFP!000001HG2vPNXmp#|K(m;Bw!Li7#O;-rW};;^G@@x-e?BP*SSq ze0u5bwm}1(W)mghL&i?yBHyr*!i)*3;rw z1#Hlx5As*Wpct*Nc#K$L@&twvOtyz;h7(MlkS9;b!xHkaggiWvy&UK4`6A)8d_YR&L#k z4rl9Jws2vk!u_}UfBP!>cKayrNAb#_9E{XvdVG*uwbEc?rS9EpOE|N_+@lTIGT=rl zHHof9RDpDngAxsP(>vU{gkpaZz|T(h*cfqVZ-g`qc!yT3Nc{ZC=3g(7oi1^vWkv0Z z#Q83=1%`64XJQTxCuIT?b8tA}5}25S!>L0sly=X=^6&&*o{8!5OiUMtrAhPUwk^KV zwqD}AReXh^wuKs|o}uzk!_+fW9%`6+hO)`hF#RDdcDF*I4Uaa%Vd;L4iW=%$qX#tZ z_o+PYN_IW%3jgP9a`~|9Zk#!;8r?SrEp8jFw80jZL;r-(^AI|7)JoL#Nm0K~iuy}L VG1$DI84u3Q;2ol9n;m)z004<|?uq~a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/test-jigsaw-hall.nbt b/src/main/resources/assets/hbm/structures/test-jigsaw-hall.nbt new file mode 100644 index 0000000000000000000000000000000000000000..1676ffa914b8a642370a64b1be6a31e6568c6c8b GIT binary patch literal 555 zcmb2|=3oE==A+XO_RThsXsO@e*|2K+s-XBq)9=Q8Q(P4quTa!c{`y)%%AIw$mg}qi zR$e01@1Lu}r*_|7vaOIsH_*ArX#ZA)MHMEW1CK6V7{z~(WwH9Ar`?Bd?t1t8%DHZR z-p-4@Hb>?=1(>pmetCUFE;!AA$>1nc?#yXN3iwPiX=`Oua95 z604_Y|1PZxJpA;_SsVXXt^u}HkN?#C(z+khb3N7|Z^raZ%bWxLMYe~oRd_jf>t|Q< z$=kFg)!kQH-95iw@VaTJchQ$^=FRW+RB`d2s&L$N-BDGqP&%}*d7{FqPwQ8FlU$-~ zRN~UscV7?Tq=3^8%00aI{*H zd`3a`ieXwn+lu7Z@nLL}KW%<@m`Clnzn1*WhhV)yb<=(`d`e`ibdybHd%2*`u(>1v zs8e!LU+59XWF!kLQ+`0~n|}hN%4RW4DaeuqJb}miP}Q%5J1FJfVdeC%{PLDRg|-Jy zHJ2!fzF?LFv@7=r&n3s(9g-oF_vU^%#&XwQYxUu(R~B*8KiYb3xnfsko+W>O@vG}U zx_3wV*Y%nH{P6XT{gI-YH+L>n%6?f{e66x};opnDOTXN;+Ld{wccp)V*M*PEzg^zy Q%lenGKluQMI3EK80N)N0zW@LL literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/test-jigsaw.nbt b/src/main/resources/assets/hbm/structures/test-jigsaw.nbt new file mode 100644 index 0000000000000000000000000000000000000000..aa2bdf7ea55fba4a64036d5aa3b421b965426ddf GIT binary patch literal 470 zcmV;{0V)0;iwFP!000001HG0}PTVjMh9|L?O;YiOkhnxEXnElfh#RcD$w1vYapahy za{9)*JJt%a9t)&K%ELt8Kbn8+8KnWJK~DM=1ptJ1MQ;ri4qkhW6NIORv#qi1@2Q!C zZ#9U~P9&nI5U`rO@_0}zF=YlL7^c`k$4moa*!l|OXsv;DhmY#ngm_Rr9>t~Z;L>Y@ zJ8yqCFKXyEzx30jUIbL5)7H(O_v!0SJ8ZqS!yL*A&b)F@=wr5-n9xKbC`O}N?C0De zu3)w67@YTdz}Bfpf2Xt)Aba#`??XCkOmV{EajQ--l4(`>u2stnmq%pe5gB=8#x;={ z*F-Ycq=O%mIm(g zqq|`7?N%xm818t9NgZ$8lo?Fwc;onIFsb8>BgrtFcVbd`WQH$dQoe{u`H~A~dWzv{ z=GHJVTpn%>6T{`<)-W+#50}>P7wxfsPzHVcv>x|i_;*+}&^$Ohq6_~P)nTNH>v`zp zeHi_#pWFT}4E)#D4y{9vo7NiZu!Cjkk0`x}(xWYLLUr>Y)%OpnZW)z;^&fQ8ej63= M4-Mp`>X!)s0O^bCRsaA1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/test-rot.nbt b/src/main/resources/assets/hbm/structures/test-rot.nbt new file mode 100644 index 0000000000000000000000000000000000000000..7150435df86a414d6ad9522b579b1c2b0aa4a770 GIT binary patch literal 4860 zcmbuChgVZs*TyLVRuB}4B4uPiK2W*TNdI&&D4>~0Q);M6mnJ=-h_oOx2qx4hks?(I zMIZqJLl6u>h)7LPk^=wa&RRDTjIf_Ym_w2A;of z(}7niV^w?KUu|lddCJrT%;dVN76qTK;C<%n^n5mt^NU(!ysozIORp}-$VPa>HC4Tb zPPU&U@!b<`eU>=NHx1Tcn$6L8r%H4gF`pVV(2>e}$=+T67M<#o*CxW`IW^d_` zSg>7EJI*PUFotCyTe6~hUB@MuxCVy92y~aoR^()-xod@_SM+X3s4eeAo)$@u5ECV z^nGEt6(1&$m$H4t{kP;zE!tJjNYT{yWOUy{U2tM_j~WSk-? zH1kz9>I<@AknVq+_SVGXo>`oYQ3GIN^NYG}bHda{+5Bc1EHYXr+{t+ zc*gBk#hhr^fq>Jg+x3W?1SMU+>5xw{ES(%WyS&e*&{5dVg{h;yiD&}hMLXC;8TS`` z;RAC;uvb$nK{|u`*%%5k~OD5c~*GM_1;OP1#eco5$tmaLFr4#lyvYd1L zfubRIDYJ;!EW1yq9(sVtgt|a^Gg@{(A&$E;J|d@tP~!j9z)?_{IAEm=FMr&6Zz1~K zNdCL;*He^i;TCnRCEhWxVLn{70L1MWs{0Hm^D=NCAXhDKFyr0TQs!p5w}X!__+KfH z2oQEAtw$w#;M;=UrvP9~{Ef!ub0ZkAKVOuHg2 z0ahe}Gn0XEvkn9f)BN&kW~N-M)Y)I=z){I+9d&?1VmzDv1J4M5P@jXwOB>^7!izBs z&+|Pf1o2!dHF&GNal73{L#OE-s#utlAGlYORq@61!CyI{%DU^aE&3lG_;+ABfLl%N zD!MAdPb26R4#Jg_a4R#bFAMX2A_=*-JBxd)-q&jHcYMQ??X6Z-&sM7%o9}F3YjIX} zCMqIb@v-NjA+Hn%F`O;E3H3DVA60AW63hML{wH$!?EFVyeF+k2EtlNY8q>4Tn&xNJ z-TGQoWomal{5F@d_5rRnrMYnS@}Zs}`}wOhd8jssCNCj{dc&Z}qg48wEY6X(`ahtj zf#!FSNsQQI@JN?!u_)GVGvQ@Wo^tsgSehPCX+DEwx#x=yRJw5giiY|Qt-m$v8<0jgYwU&;2DzbTVq4$ zhyQI#%Ove*GlCP6bD;&doBBqAOxD5KQm>}Yqq4`$oV1m$J6SwwD>)nw6FrK%a2j$$ z5taNWNcyT&T$X@SEtlyP-XY3ro5VpCHEKovH%iC(U=> z#iB&Pr0jEM?UwpYPsGMt^B#B^3x3=7l&7- zqziKYu;-GTo^?pR2mL=_cf|_>t?a z)OqxIRG75xRc5jmjvxpLJAqm~2b$Cby1n2TgRP2HF)#=IgMlf16f_PniPLuRdTZub zC+L$$mC#f^(WdyTN+e*bqWp41zBkp!tAeSL!tRLJBbT+7sY%xqmU1KGEC^_d&=^_XK%`KAiK$liKfkl86I*{drv9v-wb9G9?( z4KdhZC9$8Cd;jRmiBVULoZHf;PSJ@A)H~^~<>N>Fy2EMCcf_BYJIBL*Szs}37em+3 zvh&H* zdN@QOXZ^+!-qI0Im1Vlu=LCZS@tlGvDfeJkcjR8FEL>FpP2L8&bKn_ZlA>QMjByA@I06Yfg*qVUK0B&~=pbPR z=d3TX=W0ewMz`BL zU{g$8u=MVY><7v8mt!X&4U(t;Flf>j=%&Lnnn;Qvaj-=}+yOxVSu4};1yJ`1S@y)^ z{vgZtx%;D{y0bu{T3qhRk*GKKK=MKVLaf}bc;Cg;&GV@HYkp{;PSE-?(;Jr7FM;}X zSyP8pa%{LJ?cWdKhK5- zhE4|7I~h$+6L4?Kb{13xzoDOQ$K@nN->28lEsTs;|IA30^P^q8E0D+)uUnVJh%gb0P>j~DIu52 zHTx88M^s@AKknD{Tz$i6*PIYtERv6+ILe;1U zH+T#%!}9M@3Z0`e7*78}f$l7%{8`FVZuLD{67=`va_H}kr2RKHh$PplF#P~>hu~mtk1_- zZr&v}qT6Qkb?Zhr8|#}K)6Yb;(%lK$5NW;00KXbW@0gzz%GW|=Z_Mah=UK;#yf`rl zi2N0li5)2OJz5Tl=9wrP9+Yq0^4thMVtusJLW&19%LBI%;=$?gfChM5ON4nK!QA^1 ze>Cji=m%;^`ZRfL&G4`K0BZ-1zT%Cn3%hbcr?3ydX)ay+zf$o(Ln8{71Kd}oKM%t* z2>KiuT3yNF?7kK*F1{FEb zAAI)w*f_qu#3?b~91ai0TF%jx%9@7c9mjVDmy#RV3%M)O%SsF9jvmh#BnWMWxSJEdfv^*RWw`{32*85C+J^Re4hOz%~ zBh83j#m$Mw<|yu6buo6{-)=2leUJrh(j{svq~<@=!ZF*MrV#1k?AJ}BDV2ngF*fjk zp&JPr8KgnTimr}r zlh4xMv{ZtY!G3?}k9N0lgCP^$2;%F#R^~|Ghb2_n*n%&yyY%h;MT^c)gR}WxnMplS z-F%Fyuvq5EK%@L;15)1wf@NJ|JL4tV$FNgOYtXam+xm!CXa)7SNnt&G)I=x2_95`7 zH;VYB6+Blt2Ah<4_LQS{ORZ_%`y$mIS!*@01O-nE(WL6ELXtCuZL4g5bZ=dko-C?w z>#|2H(4#hI9rK(^25dSll>CT`PNv3l&9q&oR^D&sIsr*36E6LWvNRj3ua8Exzl;P0 zHd+PWu`ZK-M4aUXmr6eh+|f2`BFFGo+-Y$swS26BqZ#x2aQ{B#LLy!CDEqRvLUvRf z3-he$c|Y9zdL#6eGar&at^N?EpVRpVPJaA>knJ_7oaUtXa>r(@#D6|K)y2A)IObG# zZ-q5S`!12T%+~1IN$QEy*rhpI<%yR?mJhQ9mr6yHu58!pNY?l3WG`CJy!W)xSoUnU zQ3i!2Y3s^N`SE&axN_(Sw2A!d u@XQsrH{yh8%}UI>>47w&L-F+6GI3*kmd3_z*K|W53keOxOmAa(c>V()lTIK2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/vertibird.nbt b/src/main/resources/assets/hbm/structures/vertibird.nbt new file mode 100644 index 0000000000000000000000000000000000000000..da4bc38d9adb8e37a389fc3fab579abf57b7f97b GIT binary patch literal 1918 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 P00000NkvXXu0mjfynF-i literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_top.png b/src/main/resources/assets/hbm/textures/blocks/wand_jigsaw_top.png new file mode 100644 index 0000000000000000000000000000000000000000..2c47fc86b06b2b34b9a5f10b06aa8a7d898c52d7 GIT binary patch literal 625 zcmV-%0*?KOP)EX>4Tx04R}tkv&MmKpe$iQ;Q-M2Mc~6lA$`;MMWG-6^me@v=v%)FuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|E;uQ=NQwVT3N2zhIPS;0dyl(!fY7Kg)$ED_s%9Cf zcudUZR>kgD2nb*h!x)p8sVCBl8F-Gbd-(Wz7vWjn=l&dhO5S9EPb7{q-LQx^h-Wt~ zo%23%h?OLT_?&pspbHW|a$R=$jdRgqfoFz{OlqDuL@X9NSngm}GF0Lj;;^D>lrLmm zRyc2QRx35ux+i~OFt4qoxlVHwaV#N$Bt*!lp^OSFL}=AWF_EJEn1_GF@h8b8ldB9y zjs;YqLUR1zfAG6ovoJm7CIw?a;KjB-#)0l#pjo%=?_=9;o&f%5;7V)zs|{f8lk|F9 z3m*af+rY(jTa)*I%N=0oNtX=Ck^D4;LIHR`qi@Oq1Ghl$n%i4zAEysMhPqn50S*p< zi6UjMd%U}+v$ucGwEFu2lz?)yYI>P~00006VoOIv0RI4(006)zmAe1{010qNS#tmY z3ljhU3ljkVnw%H_000McNliru=>i289x*I;$*2GT02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{002ozL_t(I%VYe%_5XhcWZ=bsA8bS8|KIwbe6aQZeEX>4Tx04R}tkv&MmKp2MKrb+0Yt2!cN#?t+t|i4rtTK|Hr< z>74h8L#!+*#OK7523?T&k?XR{Z=6dG3p_JqWYclt5V2V5V!4Z1*-(jRiNlJjQNECK zS>e3JS*_Mt`=0!T!GgAu;X17`B(Q`eQV=1djtZ)<5TRWo#YCFUV;=rd$DbmXOs)zT zITlcZ3d!+<|H1Fxn#GxEHz^ncdS7h&V;l(V0jdyW16NwdUuy#MpQJZB zTKEVU+y*YLJDR))TfPA-VSk)M>m_e~4|+VT6d7Slq`ag*LuR_44~KY1flC h63YH+1mE77dS8z)YVaZnr8ocp002ovPDHLkV1k#h0xtjn literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/wand_loot_top.png b/src/main/resources/assets/hbm/textures/blocks/wand_loot_top.png new file mode 100644 index 0000000000000000000000000000000000000000..5378ae6919eddfe34bdddfc0e3cd2d5fba8f072c GIT binary patch literal 4264 zcmeHKYj6|S6_y}_9bq2DwZ|nqmW5E;VYN@m(pG}llEGq-BV-lqyztfTmAtj27235W zJDAWACj?Ion1o3}CS+{zDpd*8yr}pu`C-?uO^i5gr zepPJVncl*_b6($mDDA>C{i}L*g^sday$kpMyWq~i<$Jd2Kl!w5k&tM})9Lg(C5OY~ zayUlIK}Eb$x6fX5=D|gsTS|^JXQVXjvWTx2R}alT>+Qr#v%~e97H=@#ern|$*Y1Xv z-iM=u!m)q$_Pzbq&bP4C?K|3M7w%&J?!UU$~gGrNbX<}KZF6}NTWyl|*x%LfP32A_LxW9xmHL$ijy zY(1j%{CMuMro;0Or9YIV=J%~T+GRYs)yS_JJim9J>%;VCcXj$xx)z^b|IB)ud(kG} zFRsUx-hcS(&&ae(Z7*uH6{f{Y6 zR1RGHN`KC?xht>Z)H3Sv!(UeIiGQu$xN-HRO;4_AIS~6@|BBvasOzdF)Lo_S4ZI+S zjX;$B(3l8EQQPTswl#?;5GtXH`C(9s*zv0;PU4s(+VRaMH|35xV1-mv8-pda#Xh07 zQm~5nn$-qdf=2*hr~)hz4n-6`VaJoWJi6D!B#tFb)Ji*E>h@p`IR-J#$Qdc3Fds&hmfu8Jmg{nq*l8ndW#yD$~V?mO(TCF6-kPJg03qq-hs31W^l;s-4 zFoqKx zNJ8K0q4>~{l3u9DRWSh;R>O$8d?JJ>jQK~aVxeR?qCmnB3?owoMWrW&T<3Co#ym6% zf>Jn|^g?7$vQ(wOI9Zc&(=^F)CMJU1$8aZEkJg?vMpkY&@05iqEj^dhj%)FGQ5GbT zPu@~~zrb1rir^T(pWsYpfdCePB>=Ec3}uF97yuKXToFYD5dmsY2;3+k9Ko6g7>mV1 zSVRut*?i%q$^LG)-_;lYl@? zEWy&iY_*#F3`Gk`C{f_o%CRs&$0>zD5R%bIFsaZ8=kq--JI)xXafv4c)BtioGayAo zIj)SWd{P*es6gYB&SNcRhGnc4mNg?T#*H??n1XsyL!~Jr%Oy41!SJXYL@m%d6#*pW zs2bi8gFuyIK3NXgaV;rK^BhyV(Ljkn1x}zs1WGX`o?>{4^HEmb#PO!Q2WXn7CfLiO z6sY-s*4p@Bw&6oBk`xrbCMg=8sS>z#_-XhtBqfIl!;)jc17WxX1yn;ZnJ2;;RtXg# z5`<`fj5O@1T>6$~FbQmcvoL^wtUo|-g6Jmz7oZ3+V4_&7#m@u;%Vcy#4ybVugZV+k zBjO4*Xp$=|d*rBcCfmm=pmq+3GJ;}=amp+>IZ`aCZH&=sZRG#(VM`iJSTV?NScX;? z+JxlTDjeZUTRPw4XXG5d#|Q{|I>?mxou+G=t|>7vCFAMtnx<UHj^FFTaw7gej`aU6^ut#>`AJe|lpBK%$__ zneWT)Zu92P?Z8qW5N}?%)3E2yj(F*THyq6=Pkiimo!U)b?5s~;vfxi~I#7J(#f*m1 z%v9I28T#G>Hy-);qYs3Y Date: Mon, 10 Feb 2025 09:59:06 +1100 Subject: [PATCH 09/64] Add access transformer for mojang being a stupid butt --- src/main/resources/META-INF/HBM_at.cfg | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 65926b7ac..9a2ecc5a5 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -35,6 +35,9 @@ public net.minecraft.world.gen.ChunkProviderFlat field_82702_h # ha # ChunkProviderServer public net.minecraft.world.gen.ChunkProviderServer field_73248_b # chunksToUnload +# NBTTagList +public net.minecraft.nbt.NBTTagList * # Mojang makes a format use LISTS of INTs, what the fuck + # ItemRenderer public net.minecraft.client.renderer.ItemRenderer field_78453_b # itemToRender From 7f0c483cb18f6a8bf12a7bb23e62f39ba099dc83 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 10 Feb 2025 11:36:31 +1100 Subject: [PATCH 10/64] improved meteor dungeon stair piece, added loot fallback, and prevent structures generating too far horizontally from the start point --- .../java/com/hbm/main/StructureManager.java | 1 + .../java/com/hbm/world/gen/NBTStructure.java | 18 +++++++++-- .../com/hbm/world/gen/NTMWorldGenerator.java | 30 ++++++++++-------- .../meteor/room10/headloot/loot-fallback.nbt | Bin 0 -> 496 bytes .../structures/meteor/room10/room-stairs.nbt | Bin 1797 -> 3381 bytes 5 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-fallback.nbt diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index 2456533ff..d7881ba66 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -48,6 +48,7 @@ public class StructureManager { public static final NBTStructure meteor_dragon_tesla = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-tesla.nbt")); public static final NBTStructure meteor_dragon_trap = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-trap.nbt")); public static final NBTStructure meteor_dragon_crate_crab = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-crate-crab.nbt")); + public static final NBTStructure meteor_dragon_fallback = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/headloot/loot-fallback.nbt")); diff --git a/src/main/java/com/hbm/world/gen/NBTStructure.java b/src/main/java/com/hbm/world/gen/NBTStructure.java index 43625a627..6ec619378 100644 --- a/src/main/java/com/hbm/world/gen/NBTStructure.java +++ b/src/main/java/com/hbm/world/gen/NBTStructure.java @@ -650,6 +650,10 @@ public class NBTStructure { // Maximum amount of components in this structure public int sizeLimit = 8; + // How far the structure can extend horizontally from the center, maximum of 128 + // This could be increased by changing GenStructure:range from 8, but this is already quite reasonably large + public int rangeLimit = 128; + // Height modifiers, will clamp height that the start generates at, allowing for: // * Submarines that must spawn under the ocean surface // * Bunkers that sit underneath the ground @@ -967,7 +971,8 @@ public class NBTStructure { if(fromComponent.piece.structure.fromConnections == null) continue; - boolean fallbacksOnly = this.components.size() >= spawn.sizeLimit; + int distance = getDistanceTo(fromComponent.getBoundingBox()); + boolean fallbacksOnly = this.components.size() >= spawn.sizeLimit || distance >= spawn.rangeLimit; for(List unshuffledList : fromComponent.piece.structure.fromConnections) { List connectionList = new ArrayList<>(unshuffledList); @@ -1013,7 +1018,7 @@ public class NBTStructure { } if(GeneralConfig.enableDebugMode) { - MainRegistry.logger.info("[Debug] Spawning NBT structure at: " + chunkX * 16 + ", " + chunkZ * 16); + MainRegistry.logger.info("[Debug] Spawning NBT structure with " + components.size() + " piece(s) at: " + chunkX * 16 + ", " + chunkZ * 16); String componentList = "[Debug] Components: "; for(Object component : this.components) { componentList += ((Component) component).piece.structure.name + " "; @@ -1070,6 +1075,13 @@ public class NBTStructure { return nextPiece.structure.toHorizontalConnections.get(fromConnection.targetName); } + private int getDistanceTo(StructureBoundingBox box) { + int x = box.getCenterX(); + int z = box.getCenterZ(); + + return Math.max(Math.abs(x - (func_143019_e() << 4)), Math.abs(z - (func_143018_f() << 4))); + } + // post loading, update parent reference for loaded components @Override public void func_143017_b(NBTTagCompound nbt) { @@ -1152,4 +1164,4 @@ public class NBTStructure { } -} \ No newline at end of file +} diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 3d9306b28..f68921cb3 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -50,23 +50,23 @@ public class NTMWorldGenerator implements IWorldGenerator { }}); Map bricks = new HashMap() {{ - put(ModBlocks.meteor_brick, new MeteorBricks()); - }}; - Map crates = new HashMap() {{ - put(ModBlocks.meteor_brick, new MeteorBricks()); - put(ModBlocks.crate, new SupplyCrates()); - put(ModBlocks.meteor_spawner, new CrabSpawners()); - }}; - Map ooze = new HashMap() {{ - put(ModBlocks.meteor_brick, new MeteorBricks()); - put(ModBlocks.concrete_colored, new GreenOoze()); - }}; + put(ModBlocks.meteor_brick, new MeteorBricks()); + }}; + Map crates = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + put(ModBlocks.crate, new SupplyCrates()); + put(ModBlocks.meteor_spawner, new CrabSpawners()); + }}; + Map ooze = new HashMap() {{ + put(ModBlocks.meteor_brick, new MeteorBricks()); + put(ModBlocks.concrete_colored, new GreenOoze()); + }}; - NBTStructure.registerStructure(0, new SpawnCondition() {{ + NBTStructure.registerStructure(0, new SpawnCondition() {{ minHeight = 32; maxHeight = 32; sizeLimit = 128; - canSpawn = biome -> biome.rootHeight >= 0; + canSpawn = biome -> biome.rootHeight >= 0; startPool = "start"; pools = new HashMap() {{ put("start", new JigsawPool() {{ @@ -116,6 +116,7 @@ public class NTMWorldGenerator implements IWorldGenerator { add(new JigsawPiece("meteor_dragon_tesla", StructureManager.meteor_dragon_tesla) {{ blockTable = crates; }}, 1); add(new JigsawPiece("meteor_dragon_trap", StructureManager.meteor_dragon_trap) {{ blockTable = crates; }}, 1); add(new JigsawPiece("meteor_dragon_crate_crab", StructureManager.meteor_dragon_crate_crab) {{ blockTable = crates; }}, 1); + fallback = "headback"; }}); put("fallback", new JigsawPool() {{ add(new JigsawPiece("meteor_fallback", StructureManager.meteor_fallback) {{ blockTable = bricks; }}, 1); @@ -123,6 +124,9 @@ public class NTMWorldGenerator implements IWorldGenerator { put("roomback", new JigsawPool() {{ add(new JigsawPiece("meteor_room_fallback", StructureManager.meteor_room_fallback) {{ blockTable = bricks; }}, 1); }}); + put("headback", new JigsawPool() {{ + add(new JigsawPiece("meteor_loot_fallback", StructureManager.meteor_dragon_fallback) {{ blockTable = crates; }}, 1); + }}); }}; }}); } diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-fallback.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/headloot/loot-fallback.nbt new file mode 100644 index 0000000000000000000000000000000000000000..2ce40e05361be4b5b18f5027d05340eb569c0e16 GIT binary patch literal 496 zcmVU$UhE7Y1=fjMqyW(O*mh=nkV1lu5k_DKeM=$Q zNmc&nGCO&b0&P_{291qS2s^_K-bXyf5D!e?fuRc+;=zY_@F5<2hzFm*gHJH>KEh-` zo1LLRYth(g)Q|WtJ9QnJK-{z~$ z$8BD0H~IUo-!^#y;axr9x!oE|&G+V_yu!{T5QqxSjF5O|fZxRpZ>mBnWo9TJ9*az1 zf`5)RjXB&Wn7}N_>}y{y6{2|K9L8X$b(Ph!6%yG^F$b| z*Ic4;pW=3y_D>kgAX{tIqVAu#%3!fFuzMBNSd0)f95q;QVg2LJ$qLiRfV literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt b/src/main/resources/assets/hbm/structures/meteor/room10/room-stairs.nbt index 635f3d95efe29b441c3537b34b14ad8abe05a840..7cef44a647d8591ef5d7eaaabf85f928829c0cf4 100644 GIT binary patch literal 3381 zcma)83sjR=5=JSaM8sAN0l{qdu+dg9e-=uV=drG}=|*U!%1a?3M-a-R3YrE&f>wy# zq)?5kKSaO>3stC?Mq$I7M3S~71PM<`K&m7l7?fX#Ap&~?YVEo`XLIhE-1+a!-1%na z&b?Ufa;t@(^{orqsJB?< z|HZf}l^4HtTE9)^MW2e}8oTOik8(qmy%OUwl-3qB^+8|OKMs51>B64uMzV$@g zd7DB!$|o9~*5E$E3~zt25Y;YrOf%TnXKa^7wcl{`8h5_aia1FxnE)(!wlH<^xN3Bq9l78=Xw*gW5(!-5N$zk00BJsXES6t6oq7O`AH;jX|y<59ByjwOo7h+dCTGoB)PcoDYJ{1G;-h*pvE zRF`>$II+H-F*pLgr3?^1Qn7=icMzZ?Vz4m2DxHZs?kCW5gh*l$7H2xC?sG~Y$a^bp zYM00osI}I-F3B-lOnLUBRnR_EziSZv=EX~3Ui$x$vJHVFp7P$rAAz-4KG5?PB+|Dk z|J5B6c#<@`8aHgipFBZgG>1j$x~LtBY?2X$E5yQSEJ}yzxP{T;Vf;kT(J^C6-q^9J zp`oGn?!k$wY7U2Ue`jqvbF0gi?j(jLfK}~V)%D0QJI#>_tCecQjSRXbP{aP*{4klW zDGK^~q;~f4+$@!DW-hNZRMTsV8}8M31QnwbDkr9mwe-AxqdcX`EI(SS8LS%IVB}~= zr90=D$o=WLY31PbpnnpZ$?D`tr?m!yDK8)(A+?tM{OL#l|DK-nz=g(L#&dng%(ce& zx=lOULdQN%yptu|5yM?ZPLPD+8wG9k7gO;g8r#CkSQs3pO;GpKbfmOLK&&6A8|}Ni z1Z18obK#S1$bVf2{rq_o+*Wm{sh3f;(;AomkC3432p(9b-MX>U8l(hl)+IsPgOqqU zL;JYHpK`a!$hjWwAU%;`lnV6prCpY_MSdY&U|xFZO``itBK5e?bg*?fxgffX)fZ7$ z28|X;N<5eGy-t#xC2scAGdU1x2Pkqh7WSf3$U7pLi=@LJWNIx=8v>^V2YZSyiYyg@ z{M(lowHC*SfFHzD$#MOz6bnHs>9!cPxO)5wr9*R^lxmApx&r=HP3Bls7xZ6|V?{~y zEKrZN(#s};7425o+63XI&X~`>Z@K&_w*`!quYI!=rjC>d6e4;p!Z%*4TaH@1>Choi z!}0%vFuZ|>iL5?@6<^mgnp=gQc#m8IBEV~Y0bCjq?KJ5;wu&FSgg5-bjOh+m;#RzZ z&%}{ye4)|jO(lpmO)r1$#~byVF>S+5ZGtk^c7zy=qKS|j?bP=KFj=OY&x~S<^pxkW)A5G7u>BQaOW=z zOz2^)rb-fKh>fJW(?vf(=W6@9kEZt9{T^tH;p%X6$vIn^hbnP1Z#1!Loh;282>A$- zvPoA~;lA~Oy&h6JzW1H|Am$Pp*sAy=qOgOLvI(0hRqJql`@lK<9pUx?>n({@N9{u? z6&yj5_U8G};{em^0FSDlv%@7NtmXWfcgYVq&{gaL(}vuJjb95jN^^6VK{rcrrz0$Z zZoolyWFlLW@vbrIr+UXD6D^vM!7NgywQMGb5r|Ru)nNe`Ae06Ii-_CGoh;7^8<4AS z2q4n8pqIp7Q->uNXrcIH(vm*=#Ra4jXe&bymL=0Zz!=jN7;9JsvJ`E}Ql$W67O#WQ z$jGb?!(|*e#ZWU#6AM&lm8(@h?XR{Vqub)Nu5cQi(xDY68$79dCbC}?VP^(l3Ngrc z(7E%Bk1?&Ser~+sE)-+x!>Ic2Lh%n4r#d;s9gom}jEMk$5_NUHsbtQYHY;bYwOrkH z;Qf)=xnB`q+T_+~$AA7ld9oaeFD3IBZkRDdcbZb663l~+I<2O|gEB_gZWUs1D1k#H*- zq2C?EDG5#HDVGA5K$~w#6j5Rl(I9Z%D3CCL%^I4>N@mDao~XR50&iKq!F-!nPtO%r zdQNw3lQp#Uf<9&T>6TOWcz~-H{5SZOH;z|dIFQ-s@4`AhL0sRMc}^41bJ$;6;=7D* z=nYkx@#Kdn=qes;(#_r|o56!!XB}lRRdc?CZZ-(gSR)A1)ZjP5ITVdPw|~CA4@;*H zCOg#LFPpzP^Y}@0@R{i9u@o#eV0=TKS*xBIPKaXqYvqkW#wWzV#(HyX&0+Reb9}Az zzMwkKtmnq3m?wXIf37w-c$?Nt#H-SckEb6|iHISPoo=iQtT&5T5OO_`mEJSKPS>67 z5OAu4&Hb~}b4n4@EZ_L8sjRGFP}|tQn~>t*IWePVuN&)`r&X{|mrYmA$PG_MX{Qv*} literal 1797 zcmai!2~bl<7{>uciw8P9l_-*Qti%xn6R>#Dz-ZG_?W3qjzynBp6Cw};%H^{tirAEz zF~vblh(O6$w15YP2Sm{r4N3?R0|sIdFT!xVU=1%2(WDz`r^j^cn{RgZ+x_0|Z~yy! zOFH(E!^C&_bQsSgboQ5$h1T^OGS(NaUiahVt(Mt`lRw`0@Lq|?&H2Rf{DrIfzK_2X zde8Tp8+wt0`@9}lr;EW4T;e}sFLh^M8Mf}0Y~EnAHjadNv(Zfq>_u5n8rE3wjDJj` zHk-B9nu7b;?mwe?WBs}8u;y2Mi}g})U6W5M6=Id=jl-gFwVfCF?C1&%3 z-K4l_rL;Oeu3EdC6x`F3te3scy4i$(zCE6#lc+0N_+;;%kTfBN@eX9~yK2m+^v8_N z;e4Lfl{TuuPvI}R@wjgOyEiJ6f4BtSJ^t!#o66rkv)foV#HBwTG>MK=OczH=IrD0S zraQ5ko*^8KFJx93P^saIe;QkA_`5|$Y6!@aYVYby`1p>Oo|ODdxOqG2;$;Qw2B*a; z`tmL(UL+yh^J`|ccAsrMLM7KS(u|b0dPQfwPQ2%WVNHONpv40NS_9g$j?G z_+W?tzmBdFB&?jpr(%X@G=%7id@A89qSgQ9)N+Zz`^rWF;C7AnInfnDoxtAq9+D*H zE9e|YsMuLhe6-hD&|h=?5PH6HJ}cfOzJw_)A(@w#b^ANV7cr$MKhNMvF3KcmV>!+B zH?{Q1pP&e)56>u$SyI3DoVL(ucg3et?~5Rm2$czy@>P6 z+4Z}U-SiT-Z^!zJnTx`odZJFrT3**oMDHtO!7}zrLBiD`qMf$J10ZB500IxNfe0)2 zudqzpm7(tdm5c?bjMm*?W-GIcHg*2gNQ^^CRtVfXE*T;T-FR)HkE?DOzrM$bw4M@Pa4J2rmOa3q7nQ6l~0U`3Xx*)_@ zPA>sM$9`I$CZEvZ{q8NghDL0(<=TKpR!5a}LDz$I9r^8Xp-1wRGsp`9M7vs;QtE_L z%Ua=$^%;@sY2e@tz;)Lfa77=bV)H5i*Uq_stICy8_<;Ap2)`eiyajiK;AeXS@H z&GG^=z-OkDA38(*In)?)RIun=6iXU=G;jZ0@<8N-<4K&l_>cS}+b@4Iz>qM3JP^R( z<^XxZ6d{gY9||GWau*Pc!FLS4`r1jUlo1${=|GK2YQZWYJ zpz%paQrFO}&TZ!Ox0TOR9g(Dt)IB`kL6opvWgY)55`C;eKrQtYuO6i;jmXW4$x35H zsg8h*R>zT?B6|8Ng6d`s>m=rsH*K%`dxeUzxI)#a42zHrX3uXK7#m4{on*U*YpnT$ zLQ*pE2_C*B8?~P4HeN{1=*G_OJayn5Gh?#tMXoJnTW<&SIKT2>Pz-MBuP8e=h^ZT8 ngO7wdjmHDb{E5!yR~g8*WXc}j{A^xHfz8o!JN8j%sDs1rgqEgM From c1a2f8d27084c38499c61d74f887b20fbf767641 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 10 Feb 2025 11:43:30 +1100 Subject: [PATCH 11/64] stack jetpack tanks to 16, and don't consume them if jetpack is already full --- src/main/java/com/hbm/items/ModItems.java | 4 +- .../com/hbm/items/special/ItemSyringe.java | 37 +++++++++---------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 2d5e828bc..cbb86e51d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3076,7 +3076,7 @@ public class ModItems { gas_mask_filter_combo = new ItemFilter().setUnlocalizedName("gas_mask_filter_combo").setTextureName(RefStrings.MODID + ":gas_mask_filter_combo"); gas_mask_filter_rag = new ItemFilter().setUnlocalizedName("gas_mask_filter_rag").setTextureName(RefStrings.MODID + ":gas_mask_filter_rag"); gas_mask_filter_piss = new ItemFilter().setUnlocalizedName("gas_mask_filter_piss").setTextureName(RefStrings.MODID + ":gas_mask_filter_piss"); - jetpack_tank = new ItemSyringe().setUnlocalizedName("jetpack_tank").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":jetpack_tank"); + jetpack_tank = new ItemSyringe().setUnlocalizedName("jetpack_tank").setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":jetpack_tank"); gun_kit_1 = new ItemRepairKit(10).setUnlocalizedName("gun_kit_1").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_1"); gun_kit_2 = new ItemRepairKit(100).setUnlocalizedName("gun_kit_2").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":gun_kit_2"); cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); @@ -6229,7 +6229,7 @@ public class ModItems { GameRegistry.registerItem(plastic_bag, plastic_bag.getUnlocalizedName()); GameRegistry.registerItem(casing_bag, casing_bag.getUnlocalizedName()); - + //Keys and Locks GameRegistry.registerItem(key, key.getUnlocalizedName()); GameRegistry.registerItem(key_red, key_red.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/special/ItemSyringe.java b/src/main/java/com/hbm/items/special/ItemSyringe.java index 48b6e928b..b8aad87e1 100644 --- a/src/main/java/com/hbm/items/special/ItemSyringe.java +++ b/src/main/java/com/hbm/items/special/ItemSyringe.java @@ -48,7 +48,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -77,7 +77,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 50); } } @@ -116,7 +116,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -135,7 +135,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -155,7 +155,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 5); } } @@ -175,7 +175,7 @@ public class ItemSyringe extends Item { if(!player.inventory.addItemStackToInventory(new ItemStack(ModItems.syringe_metal_empty))) { player.dropPlayerItemWithRandomChoice(new ItemStack(ModItems.syringe_metal_empty, 1, 0), false); } - + VersatileConfig.applyPotionSickness(player, 15); } } @@ -193,7 +193,7 @@ public class ItemSyringe extends Item { player.removePotionEffect(Potion.weakness.id); player.removePotionEffect(Potion.wither.id); player.removePotionEffect(HbmPotion.radiation.id); - + VersatileConfig.applyPotionSickness(player, 15); stack.stackSize--; @@ -283,18 +283,17 @@ public class ItemSyringe extends Item { return stack; IFillableItem fillable = (IFillableItem) jetpack.getItem(); - + if(!fillable.acceptsFluid(Fluids.KEROSENE, jetpack)) return stack; - - fillable.tryFill(Fluids.KEROSENE, 1000, jetpack); - + + if(fillable.tryFill(Fluids.KEROSENE, 1000, jetpack) < 1000) { + world.playSoundAtEntity(player, "hbm:item.jetpackTank", 1.0F, 1.0F); + stack.stackSize--; + } + if(jetpack.getItem() != player.inventory.armorInventory[2].getItem()) ArmorModHandler.applyMod(player.inventory.armorInventory[2], jetpack); - - world.playSoundAtEntity(player, "hbm:item.jetpackTank", 1.0F, 1.0F); - - stack.stackSize--; } } @@ -386,11 +385,11 @@ public class ItemSyringe extends Item { if(this == ModItems.syringe_awesome && !VersatileConfig.hasPotionSickness(entity)) { if(!world.isRemote) { - + if(entity instanceof EntityCow) { - + entity.addPotionEffect(new PotionEffect(HbmPotion.bang.id, 40, 0)); - + } else { entity.addPotionEffect(new PotionEffect(Potion.regeneration.id, 50 * 20, 9)); entity.addPotionEffect(new PotionEffect(Potion.resistance.id, 50 * 20, 9)); @@ -592,7 +591,7 @@ public class ItemSyringe extends Item { if(this == ModItems.gun_kit_2) { list.add("Repairs all weapons in hotbar by 50%"); } - + if(this == ModItems.syringe_mkunicorn) { list.add(EnumChatFormatting.RED + "?"); } From 8994d2e0b17df4e19444d0ca00c5a93ee1767ecd Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 10 Feb 2025 12:21:17 +1100 Subject: [PATCH 12/64] add nbt vertibird spawning and remove unused meteor dungeon code --- src/main/java/com/hbm/config/WorldConfig.java | 16 +- src/main/java/com/hbm/lib/HbmWorldGen.java | 18 - .../hbm/world/dungeon/CrashedVertibird.java | 426 --------------- .../java/com/hbm/world/dungeon/Vertibird.java | 514 ------------------ .../com/hbm/world/gen/NTMWorldGenerator.java | 12 + .../generator/CellularDungeonFactory.java | 16 +- .../com/hbm/world/generator/TestDungeon.java | 19 - .../generator/room/TestDungeonRoom1.java | 39 -- .../generator/room/TestDungeonRoom2.java | 34 -- .../generator/room/TestDungeonRoom3.java | 33 -- .../generator/room/TestDungeonRoom4.java | 43 -- .../generator/room/TestDungeonRoom5.java | 40 -- .../generator/room/TestDungeonRoom6.java | 54 -- .../generator/room/TestDungeonRoom7.java | 28 - .../generator/room/TestDungeonRoom8.java | 225 -------- 15 files changed, 19 insertions(+), 1498 deletions(-) delete mode 100644 src/main/java/com/hbm/world/dungeon/CrashedVertibird.java delete mode 100644 src/main/java/com/hbm/world/dungeon/Vertibird.java delete mode 100644 src/main/java/com/hbm/world/generator/TestDungeon.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java delete mode 100644 src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index fbf08bc63..7bb0faf58 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -7,7 +7,7 @@ public class WorldConfig { public static boolean overworldOre = true; public static boolean netherOre = true; public static boolean endOre = true; - + public static int uraniumSpawn = 6; public static int thoriumSpawn = 7; public static int titaniumSpawn = 8; @@ -77,7 +77,6 @@ public class WorldConfig { public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; - public static int vertibirdStructure = 500; public static int dungeonStructure = 64; public static int relayStructure = 500; public static int satelliteStructure = 500; @@ -88,7 +87,6 @@ public class WorldConfig { public static int geyserWater = 3000; public static int geyserChlorine = 3000; public static int geyserVapor = 500; - public static int meteorStructure = 15000; public static int capsuleStructure = 100; public static int arcticStructure = 500; public static int jungleStructure = 2000; @@ -115,15 +113,15 @@ public class WorldConfig { public static float craterBiomeInnerRad = 25F; public static float craterBiomeOuterRad = 0.5F; public static float craterBiomeWaterMult = 5F; - + public static void loadFromConfig(Configuration config) { final String CATEGORY_OREGEN = CommonConfig.CATEGORY_ORES; - + overworldOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D00_overworldOres", "General switch for whether overworld ores should be generated. Does not include special structures like oil.", true); netherOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D01_netherOres", "General switch for whether nether ores should be generated.", true); endOre = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.D02_endOres", "General switch for whether end ores should be generated. Does not include special structures like trixite crystals.", true); - + uraniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.00_uraniumSpawnrate", "Amount of uranium ore veins per chunk", 7); titaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.01_titaniumSpawnrate", "Amount of titanium ore veins per chunk", 8); sulfurSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.02_sulfurSpawnrate", "Amount of sulfur ore veins per chunk", 5); @@ -195,7 +193,6 @@ public class WorldConfig { radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500); antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250); atomStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.02_atomSpawn", "Spawn power plant on every nTH chunk", 500); - vertibirdStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.03_vertibirdSpawn", "Spawn vertibird on every nTH chunk", 500); dungeonStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.04_dungeonSpawn", "Spawn library dungeon on every nTH chunk", 64); relayStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.05_relaySpawn", "Spawn relay on every nTH chunk", 500); satelliteStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.06_satelliteSpawn", "Spawn satellite dish on every nTH chunk", 500); @@ -210,7 +207,6 @@ public class WorldConfig { geyserWater = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.17_geyserWaterSpawn", "Spawn water geyser on every nTH chunk", 3000); geyserChlorine = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.18_geyserChlorineSpawn", "Spawn poison geyser on every nTH chunk", 3000); geyserVapor = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", "Spawn vapor geyser on every nTH chunk", 500); - meteorStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.20_meteorSpawn", "Spawn meteor dungeon on every nTH chunk", 15000); capsuleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.21_capsuleSpawn", "Spawn landing capsule on every nTH chunk", 100); arcticStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.22_arcticVaultSpawn", "Spawn arctic code vault on every nTH chunk", 500); jungleStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.23_jungleDungeonSpawn", "Spawn jungle dungeon on every nTH chunk", 2000); @@ -238,7 +234,6 @@ public class WorldConfig { radioStructure = CommonConfig.setDefZero(radioStructure, 1000); antennaStructure = CommonConfig.setDefZero(antennaStructure, 1000); atomStructure = CommonConfig.setDefZero(atomStructure, 1000); - vertibirdStructure = CommonConfig.setDefZero(vertibirdStructure, 1000); dungeonStructure = CommonConfig.setDefZero(dungeonStructure, 1000); relayStructure = CommonConfig.setDefZero(relayStructure, 1000); satelliteStructure = CommonConfig.setDefZero(satelliteStructure, 1000); @@ -253,11 +248,10 @@ public class WorldConfig { minefreq = CommonConfig.setDefZero(minefreq, 1000); radfreq = CommonConfig.setDefZero(radfreq, 1000); vaultfreq = CommonConfig.setDefZero(vaultfreq, 1000); - meteorStructure = CommonConfig.setDefZero(meteorStructure, 15000); jungleStructure = CommonConfig.setDefZero(jungleStructure, 1000); capsuleStructure = CommonConfig.setDefZero(capsuleStructure, 100); arcticStructure = CommonConfig.setDefZero(arcticStructure, 500); - + meteorStrikeChance = CommonConfig.setDef(meteorStrikeChance, 1000); meteorShowerChance = CommonConfig.setDef(meteorShowerChance, 1000); } diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index c78fe7219..42f7e616a 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -28,7 +28,6 @@ import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.tileentity.TileEntitySkull; import net.minecraft.util.WeightedRandom; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; @@ -260,23 +259,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - if(!biome.canSpawnLightningBolt() && biome.temperature >= 2F) { - if(WorldConfig.vertibirdStructure > 0 && rand.nextInt(WorldConfig.vertibirdStructure) == 0) { - for(int a = 0; a < 1; a++) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); - int y = world.getHeightValue(x, z); - - if(rand.nextInt(2) == 0) { - new Vertibird().generate(world, rand, x, y, z); - } else { - new CrashedVertibird().generate(world, rand, x, y, z); - } - - } - } - } - if(WorldConfig.dungeonStructure > 0 && rand.nextInt(WorldConfig.dungeonStructure) == 0) { int x = i + rand.nextInt(16); int y = rand.nextInt(256); diff --git a/src/main/java/com/hbm/world/dungeon/CrashedVertibird.java b/src/main/java/com/hbm/world/dungeon/CrashedVertibird.java deleted file mode 100644 index 68b8f2cbb..000000000 --- a/src/main/java/com/hbm/world/dungeon/CrashedVertibird.java +++ /dev/null @@ -1,426 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.dungeon; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.itempool.ItemPool; -import com.hbm.itempool.ItemPoolsLegacy; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class CrashedVertibird extends WorldGenerator -{ - Block Block1 = ModBlocks.deco_steel; - Block Block2 = ModBlocks.deco_tungsten; - Block Block3 = ModBlocks.reinforced_glass; - Block Block4 = ModBlocks.deco_titanium; - - protected Block[] GetValidSpawnBlocks() - { - return new Block[] - { - Blocks.sand, - Blocks.sandstone, - }; - } - - public boolean LocationIsValidSpawn(World world, int x, int y, int z) - { - - Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y , z); - Block blockBelow = world.getBlock(x, y - 2, z); - - for (Block i : GetValidSpawnBlocks()) - { - if (blockAbove != Blocks.air) - { - return false; - } - if (checkBlock == i) - { - return true; - } - else if (checkBlock == Blocks.snow_layer && blockBelow == i) - { - return true; - } - else if (checkBlock.getMaterial() == Material.plants && blockBelow == i) - { - return true; - } - } - return false; - } - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - int yOffset = 8 + rand.nextInt(4); - - if(!LocationIsValidSpawn(world, x + 9, y, z + 9)) - { - return false; - } - - world.setBlock(x + 4, y + 0 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 0 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + 0 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 0 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 4, y + 1 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + 1 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 1 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + 1 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + 1 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + 1 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 0, Block3, 0, 3); - world.setBlock(x + 5, y + 2 - yOffset, z + 0, Block3, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 3, Block4, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + 2 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 2 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 2 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 2 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 6, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + 3 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + 3 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + 3 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 4, Block4, 0, 3); - world.setBlock(x + 2, y + 3 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 7, y + 3 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 3 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 3 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 3 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + 4 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 4 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 4 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 2, y + 4 - yOffset, z + 6, Block4, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 4 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + 4 - yOffset, z + 7, Block4, 0, 3); - world.setBlock(x + 3, y + 4 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 7, Blocks.chest, 2, 3); - if(world.getBlock(x + 6, y + 4 - yOffset, z + 7) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_VERTIBIRD), (TileEntityChest)world.getTileEntity(x + 6, y + 4 - yOffset, z + 7), 8); - } - world.setBlock(x + 7, y + 4 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 4 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 4 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + 4 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + 5 - yOffset, z + 6, Block4, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + 5 - yOffset, z + 7, Block4, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 5 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 9, Block4, 0, 3); - world.setBlock(x + 6, y + 5 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 8, ModBlocks.machine_battery, 2, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 7 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 10, Block4, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 11, Block4, 0, 3); - world.setBlock(x + 6, y + 7 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 14, y + 8 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 13, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 14, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 6, Blocks.chest, 2, 3); - if(world.getBlock(x + 5, y + 8 - yOffset, z + 6) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_EXPENSIVE), (TileEntityChest)world.getTileEntity(x + 5, y + 8 - yOffset, z + 6), 8); - } - world.setBlock(x + 6, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 14, y + 8 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 11, Block4, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + 8 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + 8 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 14, y + 9 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 13, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 14, y + 9 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 14, y + 9 - yOffset, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + 9 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 9, Block4, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 7, y + 9 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 11, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 12, Block4, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + 9 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 9 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + 9 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 14, y + 10 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 10, Block4, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 12, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 13, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 15, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 18, Block1, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 4, Block4, 0, 3); - world.setBlock(x + 12, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 13, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 16, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 17, y + 11 - yOffset, z + 5, Block4, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 6, Block4, 0, 3); - world.setBlock(x + 14, y + 11 - yOffset, z + 7, Block4, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + 11 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + 11 - yOffset, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + 11 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 14, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 11 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + 11 - yOffset, z + 15, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 15, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 11 - yOffset, z + 15, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 11 - yOffset, z + 18, Block1, 0, 3); - world.setBlock(x + 5, y + 12 - yOffset, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 4, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 5, y + 12 - yOffset, z + 16, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 7, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 8, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 9, y + 12 - yOffset, z + 16, Block1, 0, 3); - world.setBlock(x + 4, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 12 - yOffset, z + 17, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 6, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 7, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 8, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 9, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 10, y + 12 - yOffset, z + 17, Block1, 0, 3); - world.setBlock(x + 5, y + 13 - yOffset, z + 17, Block1, 0, 3); - - generate_r02_last(world, rand, x, y, z, yOffset); - return true; - - } - public boolean generate_r02_last(World world, Random rand, int x, int y, int z, int yOffset) - { - - world.setBlock(x + 4, y + 1 - yOffset, z + 1, Blocks.lever, 3, 3); - world.setBlock(x + 6, y + 1 - yOffset, z + 1, Blocks.lever, 3, 3); - if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned crashed Vertibird at " + x + " " + y +" " + z + "\n"); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/dungeon/Vertibird.java b/src/main/java/com/hbm/world/dungeon/Vertibird.java deleted file mode 100644 index 67b34f015..000000000 --- a/src/main/java/com/hbm/world/dungeon/Vertibird.java +++ /dev/null @@ -1,514 +0,0 @@ -//Schematic to java Structure by jajo_11 | inspired by "MITHION'S .SCHEMATIC TO JAVA CONVERTINGTOOL" - -package com.hbm.world.dungeon; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.itempool.ItemPool; -import com.hbm.itempool.ItemPoolsLegacy; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class Vertibird extends WorldGenerator -{ - Block Block2 = ModBlocks.deco_steel; - Block Block1 = ModBlocks.deco_tungsten; - Block Block4 = ModBlocks.reinforced_glass; - Block Block3 = ModBlocks.deco_titanium; - - protected Block[] GetValidSpawnBlocks() - { - return new Block[] - { - Blocks.sand, - Blocks.sandstone, - }; - } - - public boolean LocationIsValidSpawn(World world, int x, int y, int z) - { - - Block checkBlock = world.getBlock(x, y - 1, z); - Block blockAbove = world.getBlock(x, y , z); - Block blockBelow = world.getBlock(x, y - 2, z); - - for (Block i : GetValidSpawnBlocks()) - { - if (blockAbove != Blocks.air) - { - return false; - } - if (checkBlock == i) - { - return true; - } - else if (checkBlock == Blocks.snow_layer && blockBelow == i) - { - return true; - } - else if (checkBlock.getMaterial() == Material.plants && blockBelow == i) - { - return true; - } - } - return false; - } - - @Override - public boolean generate(World world, Random rand, int x, int y, int z) - { - int i = rand.nextInt(1); - - if(i == 0) - { - generate_r0(world, rand, x, y, z); - } - - return true; - - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) - { - int yOffset = 3 + rand.nextInt(4); - - if(!LocationIsValidSpawn(world, x + 13, y, z + 10)) - { - return false; - } - - world.setBlock(x + 13, y + 0 - yOffset, z + 2, Block1, 0, 3); - world.setBlock(x + 12, y + 0 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 14, y + 0 - yOffset, z + 7, Block1, 0, 3); - world.setBlock(x + 13, y + 0 - yOffset, z + 9, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 1 - yOffset, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + 1 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 1 - yOffset, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + 1 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 1 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 1 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 1 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 14, y + 1 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 2, Blocks.stone_stairs, 2, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 3, Block3, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 10, y + 2 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 10, y + 2 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 2 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 2 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 11, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 7, Blocks.chest, 2, 3); - if(world.getBlock(x + 14, y + 2 - yOffset, z + 7) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_VERTIBIRD), (TileEntityChest)world.getTileEntity(x + 14, y + 2 - yOffset, z + 7), 8); - } - world.setBlock(x + 15, y + 2 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 9, Block3, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 2 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 2 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 0, Block4, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 0, Block4, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 0, Block4, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 10, y + 3 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 10, y + 3 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 11, y + 3 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 3 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 8, ModBlocks.machine_battery, 2, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 10, Block3, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 11, Block3, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 3 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 3 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 3 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 0, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 2, Block4, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 2, Block4, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 4, y + 4 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 4 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 11, Block3, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 11, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 12, Block3, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 15, y + 4 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 4 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 14, y + 4 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 15, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 4 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 1, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 2, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 5 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 16, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 17, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 18, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 5 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 5 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 5 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 9, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 9, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 10, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 10, ModBlocks.block_electrical_scrap, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 11, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 12, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 13, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 14, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 15, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 15, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 15, Block2, 0, 3); - world.setBlock(x + 9, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 10, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 16, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 16, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 17, y + 5 - yOffset, z + 16, Block2, 0, 3); - world.setBlock(x + 8, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 9, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 10, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 11, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 17, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 15, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 16, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 17, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 18, y + 5 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 12, y + 5 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 18, ModBlocks.red_wire_coated, 0, 3); - world.setBlock(x + 14, y + 5 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 13, y + 5 - yOffset, z + 19, Block1, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 1, Block1, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 3, Block2, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 6 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 6, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 7, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 8, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 9, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 10, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 16, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 17, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 18, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 19, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 20, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 6 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 6 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 6, Blocks.chest, 2, 3); - if(world.getBlock(x + 13, y + 6 - yOffset, z + 6) == Blocks.chest) - { - WeightedRandomChestContent.generateChestContents(rand, ItemPool.getPool(ItemPoolsLegacy.POOL_VERTIBIRD), (TileEntityChest)world.getTileEntity(x + 13, y + 6 - yOffset, z + 6), 8); - } - world.setBlock(x + 14, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 6 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 11, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 15, y + 6 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 9, Block3, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 10, Block3, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 12, y + 6 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 14, y + 6 - yOffset, z + 12, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 13, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 14, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 17, Block2, 0, 3); - world.setBlock(x + 13, y + 6 - yOffset, z + 18, Block2, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 7 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 7 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 7 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 7 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 7, Block2, 0, 3); - world.setBlock(x + 12, y + 7 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 14, y + 7 - yOffset, z + 8, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 9, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 10, Block2, 0, 3); - world.setBlock(x + 13, y + 7 - yOffset, z + 11, Block2, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 22, y + 8 - yOffset, z + 4, Block2, 0, 3); - world.setBlock(x + 3, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 21, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 22, y + 8 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 8 - yOffset, z + 5, Block2, 0, 3); - world.setBlock(x + 4, y + 8 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 22, y + 8 - yOffset, z + 6, Block2, 0, 3); - world.setBlock(x + 4, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 22, y + 9 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 1, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 2, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 2, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 3, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 3, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 4, Block3, 0, 3); - world.setBlock(x + 0, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 1, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 2, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 3, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 6, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 7, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 8, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 18, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 19, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 20, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 21, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 5, Block1, 0, 3); - world.setBlock(x + 23, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 24, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 25, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 26, y + 10 - yOffset, z + 5, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 6, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 7, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 8, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 8, Block3, 0, 3); - world.setBlock(x + 4, y + 10 - yOffset, z + 9, Block3, 0, 3); - world.setBlock(x + 22, y + 10 - yOffset, z + 9, Block3, 0, 3); - - generate_r02_last(world, rand, x, y, z, yOffset); - return true; - - } - public boolean generate_r02_last(World world, Random rand, int x, int y, int z, int yOffset) - { - - world.setBlock(x + 12, y + 2 - yOffset, z + 1, Blocks.lever, 3, 3); - world.setBlock(x + 14, y + 2 - yOffset, z + 1, Blocks.lever, 3, 3); - if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned Vertibird at " + x + " " + y +" " + z + "\n"); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index f68921cb3..3e0ebc963 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -49,6 +49,18 @@ public class NTMWorldGenerator implements IWorldGenerator { spawnWeight = 1; }}); + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; + structure = new JigsawPiece("vertibird", StructureManager.vertibird); + spawnWeight = 3; + }}); + + NBTStructure.registerStructure(0, new SpawnCondition() {{ + canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; + structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird); + spawnWeight = 3; + }}); + Map bricks = new HashMap() {{ put(ModBlocks.meteor_brick, new MeteorBricks()); }}; diff --git a/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java b/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java index e58e88ae3..f6cd5f152 100644 --- a/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java +++ b/src/main/java/com/hbm/world/generator/CellularDungeonFactory.java @@ -2,24 +2,12 @@ package com.hbm.world.generator; import com.hbm.world.generator.room.*; -import net.minecraftforge.common.util.ForgeDirection; - public class CellularDungeonFactory { - public static CellularDungeon meteor; public static CellularDungeon jungle; - + public static void init() { - - meteor = new TestDungeon(11, 7, 11, 11, 150, 3); - meteor.rooms.add(new TestDungeonRoom1(meteor)); - meteor.rooms.add(new TestDungeonRoom2(meteor)); - meteor.rooms.add(new TestDungeonRoom3(meteor)); - meteor.rooms.add(new TestDungeonRoom4(meteor, new TestDungeonRoom5(meteor), ForgeDirection.NORTH)); - meteor.rooms.add(new TestDungeonRoom6(meteor)); - meteor.rooms.add(new TestDungeonRoom7(meteor)); - meteor.rooms.add(new TestDungeonRoom8(meteor)); - + jungle = new JungleDungeon(5, 5, 25, 25, 700, 6); for(int i = 0; i < 10; i++) jungle.rooms.add(new JungleDungeonRoom(jungle)); jungle.rooms.add(new JungleDungeonRoomArrow(jungle)); diff --git a/src/main/java/com/hbm/world/generator/TestDungeon.java b/src/main/java/com/hbm/world/generator/TestDungeon.java deleted file mode 100644 index 14ae78cf7..000000000 --- a/src/main/java/com/hbm/world/generator/TestDungeon.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.hbm.world.generator; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.MetaBlock; - -public class TestDungeon extends CellularDungeon { - - public TestDungeon(int width, int height, int dimX, int dimZ, int tries, int branches) { - super(width, height, dimX, dimZ, tries, branches); - - this.floor.add(new MetaBlock(ModBlocks.meteor_polished)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick_mossy)); - this.wall.add(new MetaBlock(ModBlocks.meteor_brick_cracked)); - this.ceiling.add(new MetaBlock(ModBlocks.block_meteor_broken)); - } - -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java deleted file mode 100644 index 77f2f257b..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom1.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; - -public class TestDungeonRoom1 extends CellularDungeonRoom { - - public TestDungeonRoom1(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2, y + 1, z + parent.width / 2, ModBlocks.meteor_pillar, 0, 2); - world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, Blocks.glowstone, 0, 3); - - /*world.setBlock(x + parent.width / 2, y, z + parent.width / 2, Blocks.mob_spawner, 0, 2); - TileEntityMobSpawner tileentitymobspawner2 = (TileEntityMobSpawner)world.getTileEntity(x + parent.width / 2, y, z + parent.width / 2); - - if (tileentitymobspawner2 != null) - { - tileentitymobspawner2.func_145881_a().setEntityName("entity_cyber_crab"); - }*/ - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java deleted file mode 100644 index 60c15b6e3..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom2.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; - -import net.minecraft.world.World; - -public class TestDungeonRoom2 extends CellularDungeonRoom { - - public TestDungeonRoom2(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - - int j = world.rand.nextInt(2) + 2; - int k = world.rand.nextInt(3) + 2; - - for(int i = 0; i < j; i++) { - int dx = world.rand.nextInt(parent.width - 6) + 3; - int dz = world.rand.nextInt(parent.width - 6) + 3; - world.setBlock(x + dx, y + 1, z + dz, ModBlocks.crate_ammo, 0, 2); - } - - for(int i = 0; i < k; i++) { - int dx = world.rand.nextInt(parent.width - 6) + 3; - int dz = world.rand.nextInt(parent.width - 6) + 3; - world.setBlock(x + dx, y + 1, z + dz, ModBlocks.crate_can, 0, 2); - } - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java deleted file mode 100644 index dbb6f7366..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom3.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.tileentity.TileEntityMobSpawner; -import net.minecraft.world.World; - -public class TestDungeonRoom3 extends CellularDungeonRoom { - - public TestDungeonRoom3(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 2, y + 1, z + parent.width / 2 - 2, 5, 4, 5, ModBlocks.deco_lead); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 1, y + 1, z + parent.width / 2 - 1, 3, 3, 3, ModBlocks.toxic_block); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 1, y + 4, z + parent.width / 2 - 1, 3, 1, 3, Blocks.air); - - world.setBlock(x + parent.width / 2, y + 1, z + parent.width / 2, Blocks.mob_spawner, 0, 2); - TileEntityMobSpawner tileentitymobspawner2 = (TileEntityMobSpawner)world.getTileEntity(x + parent.width / 2, y + 1, z + parent.width / 2); - - if (tileentitymobspawner2 != null) - { - tileentitymobspawner2.func_145881_a().setEntityName("entity_cyber_crab"); - } - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java deleted file mode 100644 index 815f26330..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom4.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.hbm.world.generator.room; - -import java.util.ArrayList; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TestDungeonRoom4 extends CellularDungeonRoom { - - public TestDungeonRoom4(CellularDungeon parent, CellularDungeonRoom daisyChain, ForgeDirection dir) { - super(parent); - this.daisyChain = daisyChain; - this.daisyDirection = dir; - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x, y + parent.height - 2, z, parent.width, 1, parent.width, new ArrayList() {{ add(new MetaBlock(Blocks.air)); add(new MetaBlock(Blocks.web)); }}); - - DungeonToolbox.generateBox(world, x + 1, y, z + 1, parent.width - 2, 1, parent.width - 2, new ArrayList() {{ - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_spawner)); - }}); - } - - public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) { - - if(wall != ForgeDirection.NORTH) - super.generateWall(world, x, y, z, wall, door); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java deleted file mode 100644 index e02be0c7d..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom5.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.world.generator.room; - -import java.util.ArrayList; - -import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TestDungeonRoom5 extends CellularDungeonRoom { - - public TestDungeonRoom5(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x, y + parent.height - 2, z, parent.width, 1, parent.width, new ArrayList() {{ add(new MetaBlock(Blocks.air)); add(new MetaBlock(Blocks.web)); }}); - - DungeonToolbox.generateBox(world, x + 1, y, z + 1, parent.width - 2, 1, parent.width - 2, new ArrayList() {{ - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_polished)); - add(new MetaBlock(ModBlocks.meteor_spawner)); }}); - } - - public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) { - - if(wall != ForgeDirection.SOUTH) - super.generateWall(world, x, y, z, wall, door); - } -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java deleted file mode 100644 index e04f552cc..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom6.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.world.World; -import net.minecraftforge.common.util.ForgeDirection; - -public class TestDungeonRoom6 extends CellularDungeonRoom { - - public TestDungeonRoom6(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + 1, y, z + 1, parent.width - 2, 1, parent.width - 2, ModBlocks.toxic_block); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 1, y, z + parent.width / 2 - 1, 3, 1, 3, ModBlocks.meteor_brick_chiseled); - world.setBlock(x + parent.width / 2, y, z + parent.width / 2, ModBlocks.meteor_polished); - - world.setBlock(x + 1, y, z + parent.width / 2, ModBlocks.meteor_polished); - world.setBlock(x + parent.width / 2, y, z + 1, ModBlocks.meteor_polished); - - world.setBlock(x + parent.width - 2, y, z + parent.width / 2, ModBlocks.meteor_polished); - world.setBlock(x + parent.width / 2, y, z + parent.width - 2, ModBlocks.meteor_polished); - } - - public void generateWall(World world, int x, int y, int z, ForgeDirection wall, boolean door) { - - super.generateWall(world, x, y, z, wall, door); - - if(!door) - return; - - if(wall == ForgeDirection.NORTH) { - DungeonToolbox.generateBox(world, x + parent.width / 2, y, z + 1, 1, 1, parent.width / 2 - 2, ModBlocks.meteor_polished); - } - - if(wall == ForgeDirection.SOUTH) { - DungeonToolbox.generateBox(world, x + parent.width / 2, y, z + parent.width / 2 + 2, 1, 1, parent.width / 2 - 2, ModBlocks.meteor_polished); - } - - if(wall == ForgeDirection.WEST) { - DungeonToolbox.generateBox(world, x + 1, y, z + parent.width / 2, parent.width / 2 - 2, 1, 1, ModBlocks.meteor_polished); - } - - if(wall == ForgeDirection.EAST) { - DungeonToolbox.generateBox(world, x + parent.width / 2 + 2, y, z + parent.width / 2, parent.width / 2 - 2, 1, 1, ModBlocks.meteor_polished); - } - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java deleted file mode 100644 index 57909caa2..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom7.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.world.World; - -public class TestDungeonRoom7 extends CellularDungeonRoom { - - public TestDungeonRoom7(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - - DungeonToolbox.generateBox(world, x, y, z, parent.width, 1, parent.width, ModBlocks.meteor_polished); - DungeonToolbox.generateBox(world, x + 2, y, z + 2, parent.width - 4, 1, parent.width - 4, ModBlocks.deco_red_copper); - DungeonToolbox.generateBox(world, x + 3, y, z + 3, parent.width - 6, 1, parent.width - 6, ModBlocks.meteor_polished); - DungeonToolbox.generateBox(world, x + 4, y, z + 4, parent.width - 8, 1, parent.width - 8, ModBlocks.deco_red_copper); - - world.setBlock(x + parent.width / 2, y, z + parent.width / 2, ModBlocks.meteor_battery); - world.setBlock(x + parent.width / 2, y + 1, z + parent.width / 2, ModBlocks.tesla); - } -} diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java deleted file mode 100644 index e69db5214..000000000 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java +++ /dev/null @@ -1,225 +0,0 @@ -package com.hbm.world.generator.room; - -import com.hbm.blocks.ModBlocks; -import com.hbm.crafting.handlers.MKUCraftingHandler; -import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBookLore; -import com.hbm.tileentity.machine.storage.TileEntitySafe; -import com.hbm.world.generator.CellularDungeon; -import com.hbm.world.generator.CellularDungeonRoom; -import com.hbm.world.generator.DungeonToolbox; - -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; - -public class TestDungeonRoom8 extends CellularDungeonRoom { - - public TestDungeonRoom8(CellularDungeon parent) { - super(parent); - } - - public void generateMain(World world, int x, int y, int z) { - - super.generateMain(world, x, y, z); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 - 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 + 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - DungeonToolbox.generateBox(world, x + parent.width / 2 - 3, y + 1, z + parent.width / 2 + 3, 1, parent.height - 2, 1, ModBlocks.meteor_pillar); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 - 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 + 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - world.setBlock(x + parent.width / 2 - 3, y + 3, z + parent.width / 2 + 3, ModBlocks.meteor_brick_chiseled, 0, 2); - - DungeonToolbox.generateBox(world, x + 4, y + 1, z + 4, parent.width - 8, 1, parent.width - 8, ModBlocks.meteor_polished); - - int i = world.rand.nextInt(8); - - switch(i) { - case 0: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.meteor_brick_chiseled, 0, 3); break; - case 1: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.ntm_dirt, 0, 3); break; - case 2: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.block_starmetal, 0, 3); break; - case 3: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.statue_elb_f, 0, 3); break; - case 4: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.crate_red, 0, 3); break; - case 5: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.balefire, 0, 3); break; - case 6: world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.block_meteor, 0, 3); break; - case 7: - world.setBlock(x + parent.width / 2, y + 2, z + parent.width / 2, ModBlocks.safe, 0, 3); - if(world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2) instanceof TileEntitySafe) { - - int r = world.rand.nextInt(10); - - if(r == 0) { - ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(ModItems.book_of_)); - } else if(r < 4) { - TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); - safe.setInventorySlotContents(5, generateBook(world)); - safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - } else { - TileEntitySafe safe = (TileEntitySafe) world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2); - safe.setInventorySlotContents(5, new ItemStack(Items.book)); - safe.setInventorySlotContents(7, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - safe.setInventorySlotContents(9, new ItemStack(ModItems.stamp_book, 1, world.rand.nextInt(8))); - } - } - break; - } - } - - public static ItemStack generateBook(World world) { - MKUCraftingHandler.generateRecipe(world); - ItemStack[] recipe = MKUCraftingHandler.MKURecipe; - - if(recipe == null) return new ItemStack(ModItems.flame_pony); - - String key; - int pages; - Item item; - switch(world.rand.nextInt(6)) { - case 0: - key = "book_iodine"; pages = 3; - item = ModItems.powder_iodine; break; - case 1: - key = "book_phosphorous"; pages = 2; - item = ModItems.powder_fire; break; - case 2: - key = "book_dust"; pages = 3; - item = ModItems.dust; break; - case 3: - key = "book_mercury"; pages = 2; - item = ModItems.ingot_mercury; break; - case 4: - key = "book_flower"; pages = 2; - item = ModItems.morning_glory; break; - case 5: - key = "book_syringe"; pages = 2; - item = ModItems.syringe_metal_empty; break; - default: - return new ItemStack(ModItems.flame_pony); - } - - int s = 1; - for(int i = 0; i < 9; i++) { - if(recipe[i] != null && recipe[i].getItem() == item) { - s = i + 1; break; - } - } - - ItemStack book = ItemBookLore.createBook(key, pages, 0x271E44, 0xFBFFF4); - ItemBookLore.addArgs(book, pages - 1, String.valueOf(s)); - - return book; - } - - /*public static ItemStack genetateMKU(World world) { - - ItemStack book = new ItemStack(Items.written_book); - book.stackTagCompound = new NBTTagCompound(); - book.stackTagCompound.setString("author", "Dave"); - book.stackTagCompound.setString("title", "Note"); - NBTTagList nbt = new NBTTagList(); - - String[] pages = generatePages(world); - - for(String s : pages) { - nbt.appendTag(new NBTTagString(s)); - } - - book.stackTagCompound.setTag("pages", nbt); - - return book; - } - - private static String[] bookIodine = new String[] { - "alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago", - "and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon:", - "apparently the morons form R&D discovered a compound that is mostly inorganic, pretty much like a toxin in nature, but get", - "this: the dying cells will reproduce said toxin and excete it through the skin, creating an aerosol that is highly contageous.", - "it's just like a virus, but not a virus. the composition is weird, you can mix it in any household bottle but you do have to", - "get the order right. the doc told me that the first ingredient which is just powdered iodine crystals goes into slot #" - }; - private static String[] bookPhosphorous = new String[] { - "heyo, it's me again. i assume you got my last memo, the doc wasn't too happy about it. i'll have to do this quick, the", - "dunderheads from R&D are currently moaning again, probably over money. again. anyway, doc weathervane found that the second", - "ingredient is red phosphorous, whihc has to be mixed into slot #" - }; - private static String[] bookDust = new String[] { - "the doc was furious when he found out that the R&D dorks kept the one remaining sample, ranting about gross negligence this", - "and a doomsday scenario that. i told him to chill for a minute, getting all worked up isn't good for his blood pressure, not", - "that he has much blood left to begin with. one of the R&D morons slipped some more info into last week's circular, they call their", - "little concoction \"MKU\" whatever that means, and that it contains actual household lint. can you believe that? one of the most", - "dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot #" - }; - private static String[] bookMercury = new String[] { - "well that settles that. not counting the vomitting blood part, the toxicological report mostly resembles that of mercury", - "poisoning. why? because our little mix also contains mercury! i just wonder where all that stuff comes from when being", - "replicated by the body? whatever, the mercury goes into slot #" - }; - private static String[] bookFlower = new String[] { - "remember when i mentioned in my first memo that the compound is mostly anorganic? well guess what, the old man shared the fourth", - "ingredient: ipomoea nil, a genus of flower. morning glory! it might be due to its low sulfur content, whatever might be the case,", - "it does not work with other flowers. the morning glory goes into slot #" - }; - private static String[] bookSyringe = new String[] { - "a little addendum to my fifth message, obviously you have to store this MKU stuff in a container. the R&D nuts used regular", - "metal syringes that they got from medical. surplus ware i presume, they got thousands of needles just lying around. the metal", - "syringe goes into slot #" - }; - - public static String[] generatePages(World world) { - - String[] orig; - Item ingred; - int r = world.rand.nextInt(6); - - if(r == 0) { - orig = bookIodine; - ingred = ModItems.powder_iodine; - } else if(r == 1) { - orig = bookPhosphorous; - ingred = ModItems.powder_fire; - } else if(r == 2) { - orig = bookDust; - ingred = ModItems.dust; - } else if(r == 3) { - orig = bookMercury; - ingred = ModItems.ingot_mercury; - } else if(r == 4) { - orig = bookFlower; - ingred = ModItems.morning_glory; - } else { - orig = bookSyringe; - ingred = ModItems.syringe_metal_empty; - } - - String[] copy = new String[orig.length]; - - for(int i = 0; i < orig.length; i++) { - copy[i] = orig[i] + ""; //Strings are reference types and i'm really not counting on my luck here - } - - copy[copy.length - 1] += getSlot(world, ingred); - - return copy; - } - - public static int getSlot(World world, Item item) { - - MKUCraftingHandler.generateRecipe(world); - ItemStack[] recipe = MKUCraftingHandler.MKURecipe; - - if(recipe == null) //take no chances - return -2; - - for(int i = 0; i < 9; i++) { - - if(recipe[i] != null && recipe[i].getItem() == item) { - return i + 1; - } - } - - return -1; - }*/ -} From 0dea47ff873a2aaab71ae58e9ea51a0ad766223d Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 10 Feb 2025 12:21:45 +1100 Subject: [PATCH 13/64] add glowstone loot and force 3x3loot to always spawn, even at size limit --- src/main/java/com/hbm/main/StructureManager.java | 1 + .../java/com/hbm/world/gen/NTMWorldGenerator.java | 2 ++ .../structures/meteor/loot3x3/meteor-3-glow.nbt | Bin 0 -> 318 bytes 3 files changed, 3 insertions(+) create mode 100644 src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-glow.nbt diff --git a/src/main/java/com/hbm/main/StructureManager.java b/src/main/java/com/hbm/main/StructureManager.java index d7881ba66..eca4c4853 100644 --- a/src/main/java/com/hbm/main/StructureManager.java +++ b/src/main/java/com/hbm/main/StructureManager.java @@ -30,6 +30,7 @@ public class StructureManager { public static final NBTStructure meteor_3_book = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-book.nbt")); public static final NBTStructure meteor_3_mku = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-mku.nbt")); public static final NBTStructure meteor_3_statue = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-statue.nbt")); + public static final NBTStructure meteor_3_glow = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/loot3x3/meteor-3-glow.nbt")); public static final NBTStructure meteor_room_base_end = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-base-end.nbt")); public static final NBTStructure meteor_room_base_thru = new NBTStructure(new ResourceLocation(RefStrings.MODID, "structures/meteor/room10/room-base-thru.nbt")); diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index 3e0ebc963..e56c3e0eb 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -122,6 +122,8 @@ public class NTMWorldGenerator implements IWorldGenerator { add(new JigsawPiece("meteor_3_book", StructureManager.meteor_3_book), 1); add(new JigsawPiece("meteor_3_mku", StructureManager.meteor_3_mku), 1); add(new JigsawPiece("meteor_3_statue", StructureManager.meteor_3_statue), 1); + add(new JigsawPiece("meteor_3_glow", StructureManager.meteor_3_glow), 1); + fallback = "3x3loot"; // generate loot even if we're at the size limit }}); put("headloot", new JigsawPool() {{ add(new JigsawPiece("meteor_dragon_chest", StructureManager.meteor_dragon_chest) {{ blockTable = crates; }}, 1); diff --git a/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-glow.nbt b/src/main/resources/assets/hbm/structures/meteor/loot3x3/meteor-3-glow.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b496b06d91748fd868ada466538210c7faa76bfb GIT binary patch literal 318 zcmV-E0m1$siwFP!000001C3H!PQx$|949Gx@Cibk0`c8Lpx&TzlTB;zBeJ(taC+jV z302jXCCggx%X%XgwKNOEGa$Cpp0+cQ`m=t~oejPUm@4OlBc9@pP4U zLm2;4TA^Ba*O8C^tvHw=-lGE_(SeJC;}-LIVjekhll5ejrP|Au=WFeDft{uPf%!N2 QFt{b~2QT3lNIe4p0F}y-WB>pF literal 0 HcmV?d00001 From 98a334575dee3b61dc3342284fda94ce3c4a9434 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 10 Feb 2025 15:57:03 +1100 Subject: [PATCH 14/64] forgot the jigsaw block side rotating code --- .../render/block/RenderBlockSideRotation.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java b/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java index 785cac0ea..036bbd914 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java +++ b/src/main/java/com/hbm/render/block/RenderBlockSideRotation.java @@ -14,13 +14,13 @@ public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { - + Tessellator tessellator = Tessellator.instance; block.setBlockBoundsForItemRender(); renderer.setRenderBoundsFromBlock(block); GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - + tessellator.startDrawingQuads(); tessellator.setNormal(0.0F, -1.0F, 0.0F); renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); @@ -45,7 +45,7 @@ public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { tessellator.setNormal(1.0F, 0.0F, 0.0F); renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); tessellator.draw(); - + GL11.glTranslatef(0.5F, 0.5F, 0.5F); } @@ -55,20 +55,32 @@ public class RenderBlockSideRotation implements ISimpleBlockRenderingHandler { Tessellator tessellator = Tessellator.instance; tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); - + if(!(block instanceof IBlockSideRotation)) { renderer.renderStandardBlock(block, x, y, z); return true; } - + IBlockSideRotation rot = (IBlockSideRotation) block; - + + // I'm almost entirely convinced that MCP mistranslated these properties because north/south and west/east are fucking SWAPPED + // YEP, they fucking did, god fucking damn it. I manually figured out the correct side for each uv face property to resolve YAYY + renderer.uvRotateBottom = rot.getRotationFromSide(world, x, y, z, 0); renderer.uvRotateTop = rot.getRotationFromSide(world, x, y, z, 1); + renderer.uvRotateNorth = rot.getRotationFromSide(world, x, y, z, 5); + renderer.uvRotateSouth = rot.getRotationFromSide(world, x, y, z, 4); + renderer.uvRotateWest = rot.getRotationFromSide(world, x, y, z, 2); + renderer.uvRotateEast = rot.getRotationFromSide(world, x, y, z, 3); renderer.setRenderBounds(0.0, 0.0, 0.0, 1.0, 1.0, 1.0); renderer.renderStandardBlock(block, x, y, z); - + + renderer.uvRotateBottom = 0; renderer.uvRotateTop = 0; + renderer.uvRotateNorth = 0; + renderer.uvRotateSouth = 0; + renderer.uvRotateWest = 0; + renderer.uvRotateEast = 0; return true; } From 940f45813abb6ccdb851126a455630c1dca5cc18 Mon Sep 17 00:00:00 2001 From: George Paton Date: Mon, 10 Feb 2025 20:07:59 +1100 Subject: [PATCH 15/64] forgot the black book safe pool oops --- .../com/hbm/itempool/ItemPoolsComponent.java | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java index 02d14641c..5fbd16c08 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsComponent.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsComponent.java @@ -22,9 +22,10 @@ public class ItemPoolsComponent { public static final String POOL_SOLID_FUEL = "POOL_SOLID_FUEL"; public static final String POOL_VAULT_LAB = "POOL_VAULT_LAB"; public static final String POOL_VAULT_LOCKERS = "POOL_VAULT_LOCKERS"; - + public static final String POOL_METEOR_SAFE = "POOL_METEOR_SAFE"; + public static void init() { - + //machine parts new ItemPool(POOL_MACHINE_PARTS) {{ this.pool = new WeightedRandomChestContent[] { @@ -47,7 +48,7 @@ public class ItemPoolsComponent { weighted(ModItems.blade_titanium, 0, 1, 8, 1) }; }}; - + //fuel isotopes found in bunkers and labs new ItemPool(POOL_NUKE_FUEL) {{ this.pool = new WeightedRandomChestContent[] { @@ -68,7 +69,7 @@ public class ItemPoolsComponent { weighted(ModItems.screwdriver, 0, 1, 1, 2) }; }}; - + //missile parts found in silos new ItemPool(POOL_SILO) {{ this.pool = new WeightedRandomChestContent[] { @@ -86,7 +87,7 @@ public class ItemPoolsComponent { weighted(ModItems.bottle_nuka, 0, 1, 3, 10) }; }}; - + //low quality items from offices in chests new ItemPool(POOL_OFFICE_TRASH) {{ this.pool = new WeightedRandomChestContent[] { @@ -105,7 +106,7 @@ public class ItemPoolsComponent { weighted(ModBlocks.deco_computer, 0, 1, 1, 1) }; }}; - + //things found in various filing cabinets, paper, books, etc new ItemPool(POOL_FILING_CABINET) {{ this.pool = new WeightedRandomChestContent[] { @@ -120,7 +121,7 @@ public class ItemPoolsComponent { weighted(ModItems.ink, 0, 1, 1, 1) }; }}; - + //solid fuels from bunker power rooms new ItemPool(POOL_SOLID_FUEL) {{ this.pool = new WeightedRandomChestContent[] { @@ -132,7 +133,7 @@ public class ItemPoolsComponent { weighted(ModItems.niter, 0, 1, 3, 1) }; }}; - + //various lab related items from bunkers new ItemPool(POOL_VAULT_LAB) {{ this.pool = new WeightedRandomChestContent[] { @@ -153,7 +154,7 @@ public class ItemPoolsComponent { weighted(ModItems.powder_boron, 0, 1, 1, 1) }; }}; - + //personal items and gear from vaults new ItemPool(POOL_VAULT_LOCKERS) {{ this.pool = new WeightedRandomChestContent[] { @@ -181,5 +182,20 @@ public class ItemPoolsComponent { weighted(Items.experience_bottle, 0, 1, 3, 1) }; }}; + + // Black Book safe in meteor dungeons + new ItemPool(POOL_METEOR_SAFE) {{ + this.pool = new WeightedRandomChestContent[] { + weighted(ModItems.book_of_, 0, 1, 1, 1), + weighted(ModItems.stamp_book, 0, 1, 1, 1), + weighted(ModItems.stamp_book, 1, 1, 1, 1), + weighted(ModItems.stamp_book, 2, 1, 1, 1), + weighted(ModItems.stamp_book, 3, 1, 1, 1), + weighted(ModItems.stamp_book, 4, 1, 1, 1), + weighted(ModItems.stamp_book, 5, 1, 1, 1), + weighted(ModItems.stamp_book, 6, 1, 1, 1), + weighted(ModItems.stamp_book, 7, 1, 1, 1), + }; + }}; } } From 614f5db7dc5d192007f71d94586bf57a8d5bb7b3 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 10 Feb 2025 16:53:37 +0100 Subject: [PATCH 16/64] fuck! --- changelog | 9 ++++ .../hbm/handler/nei/NEIUniversalHandler.java | 4 +- .../tileentity/machine/rbmk/RBMKDials.java | 4 +- src/main/java/com/hbm/uninos/GenNode.java | 12 +++++ .../java/com/hbm/uninos/GenNodeWorld.java | 29 ---------- .../java/com/hbm/uninos/GenNodespace.java | 34 ------------ .../java/com/hbm/uninos/UniNodespace.java | 53 ++++++++++++++++++- 7 files changed, 77 insertions(+), 68 deletions(-) delete mode 100644 src/main/java/com/hbm/uninos/GenNodeWorld.java delete mode 100644 src/main/java/com/hbm/uninos/GenNodespace.java diff --git a/changelog b/changelog index 45700092f..9a1af5f24 100644 --- a/changelog +++ b/changelog @@ -1,9 +1,17 @@ +## Added +* Refueling station + * Like a charging station, but for fluids + ## Changed * Particle detectors now print an error for when the recipe could not be completed * Night Vision Goggles toggles with armor HUD * Removed "no ore dict data" line from tooltips with extended view enabled * Added a client config called `GUN_ANIMATION_SPEED` which allows the speed of gun animations to be changed * Mostly for debugging, since it only applies to the bus animation system, things like smoke trails and muzzle flashes are unaffected +* Item filters can now filter by bedrock ore grade +* Meteorite dungeons now use a new structure system + * The rooms have been completely changed, and the dungeons are no longer single-level with fixed room sizes + * Dungeons no longer lag the game to hell when generating ## Fixed * Fixed items being annihilated when shift clicking them into the particle source @@ -11,3 +19,4 @@ * Fixed particle detectors not always using power when they should * Fixed rotary furnace voiding low pressure steam when dealing with input numbers not divisible by 100 * Fixed state leak causing smoke from the right akimbo weapon to glow when the first one is fired +* Fixed incorrect default values for new RBMK dials \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index 2b8eeed8b..d82303b6c 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -106,8 +106,8 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler implemen @Override public List getOtherStacks() { List other = new ArrayList(); - for(PositionedStack pos : output) { - other.add(pos); + for(int i = 1; i < output.length; i++) { + other.add(output[i]); } other.add(machinePositioned); return getCycledIngredients(cycleticks / 20, other); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java index b8e24f1c8..85b3834e8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/RBMKDials.java @@ -38,8 +38,8 @@ public class RBMKDials { KEY_MODERATOR_EFFICIENCY("dialModeratorEfficiency", 1.0), KEY_ABSORBER_EFFICIENCY("dialAbsorberEfficiency", 1.0), KEY_REFLECTOR_EFFICIENCY("dialReflectorEfficiency", 1.0), - KEY_DISABLE_DEPLETION("dialDisableDepletion", true), - KEY_DISABLE_XENON("dialDisableXenon", true); + KEY_DISABLE_DEPLETION("dialDisableDepletion", false), + KEY_DISABLE_XENON("dialDisableXenon", false); public final String keyString; public final Object defValue; diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index 8be4641b3..d9c3d8001 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -1,10 +1,12 @@ package com.hbm.uninos; +import com.hbm.uninos.UniNodespace.UniNodeWorld; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; public class GenNode { + public long id; public BlockPos[] positions; public DirPos[] connections; public INodeNet net; @@ -12,6 +14,7 @@ public class GenNode { public boolean recentlyChanged = true; public GenNode(BlockPos... positions) { + this.id = UniNodeWorld.nextId++; this.positions = positions; } @@ -37,3 +40,12 @@ public class GenNode { this.recentlyChanged = true; } } + +/* + * + * ok so here's the deal: attempt #1 SUCKED. + * making a central nodespaces hashmap that holds one instance of each possible nodespace sounds like a great and simple solution + * until you realize that every single fucking fluid under the sun needs to be its own nodespace. which means the update function + * has to iterate over every world instance, and for every world instance there's 150 or so nodespaces for fluids alone. not good. + * + */ diff --git a/src/main/java/com/hbm/uninos/GenNodeWorld.java b/src/main/java/com/hbm/uninos/GenNodeWorld.java deleted file mode 100644 index 82c2fcb81..000000000 --- a/src/main/java/com/hbm/uninos/GenNodeWorld.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.hbm.uninos; - -import java.util.HashMap; - -import com.hbm.util.fauxpointtwelve.BlockPos; - -public class GenNodeWorld { - - public HashMap> nodes = new HashMap(); - - public void pushNode(GenNode node) { - for(BlockPos pos : node.positions) { - nodes.put(pos, node); - } - } - - public void popNode(GenNode node) { - if(node.net != null) node.net.destroy(); - for(BlockPos pos : node.positions) { - nodes.remove(pos); - node.expired = true; - } - } - - public void popNode(BlockPos pos) { - GenNode node = nodes.get(pos); - if(node != null) popNode(node); - } -} diff --git a/src/main/java/com/hbm/uninos/GenNodespace.java b/src/main/java/com/hbm/uninos/GenNodespace.java deleted file mode 100644 index 8785df0b1..000000000 --- a/src/main/java/com/hbm/uninos/GenNodespace.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.hbm.uninos; - -import java.util.HashMap; - -import com.hbm.util.fauxpointtwelve.BlockPos; - -import net.minecraft.world.World; - -public class GenNodespace { - - public HashMap> worlds = new HashMap<>(); - - public GenNode getNode(World world, int x, int y, int z) { - GenNodeWorld nodeWorld = worlds.get(world); - if(nodeWorld != null) return (GenNode) nodeWorld.nodes.get(new BlockPos(x, y, z)); - return null; - } - - public void createNode(World world, GenNode node) { - GenNodeWorld nodeWorld = worlds.get(world); - if(nodeWorld == null) { - nodeWorld = new GenNodeWorld(); - worlds.put(world, nodeWorld); - } - nodeWorld.pushNode(node); - } - - public void destroyNode(World world, int x, int y, int z) { - GenNode node = getNode(world, x, y, z); - if(node != null) { - worlds.get(world).popNode(node); - } - } -} diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java index e56468b3c..84a3d0ddc 100644 --- a/src/main/java/com/hbm/uninos/UniNodespace.java +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -1,8 +1,59 @@ package com.hbm.uninos; import java.util.HashMap; +import java.util.HashSet; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.world.World; public class UniNodespace { + + public static HashMap worlds = new HashMap(); + + /* + * attempt #1 went south because there would be an entirely separate nodespace for every single possible type + * which for fluids means at least 150 alone, and that's not great. + * this is attempt #2 which is not good for reasons explained below + */ + public static class UniNodeWorld { + + public static int nextId = 0; - public static HashMap nodespaces = new HashMap(); + //shot in the dark: how well is the dual hashmap system gonna perform? + //how are we gonna handle type segregation for network forming? + public HashMap> posToId = new HashMap<>(); + public HashMap idToNode = new HashMap<>(); + + /** Adds a node at all its positions to the nodespace */ + public void pushNode(GenNode node) { + for(BlockPos pos : node.positions) { + HashSet set = posToId.get(pos); + if(set == null) { + set = new HashSet(); + posToId.put(pos, set); + } + set.add(node.id); + } + } + + /** Removes the specified node from all positions from nodespace */ + public void popNode(GenNode node) { + if(node.net != null) node.net.destroy(); + for(BlockPos pos : node.positions) { + HashSet set = posToId.get(pos); + if(set != null) { + set.remove(node.id); + if(set.isEmpty()) posToId.remove(pos); + } + } + node.expired = true; + } + } + /* + * yeah this shit isn't gonna work because this allows multiple nodes of the same type in the same pos + * (we don't want that) which also makes it near impossible to do per-type position node lookups + * (sure it's possible but we are gonna have to iterate over every possible node in that spot, which is + * usually 1, but who knows how we end up using this system so i'd rather not) + */ } From 4972f4023a16ab00d30894aeefe0cc0ffa4d6d70 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 11 Feb 2025 16:46:14 +0100 Subject: [PATCH 17/64] thorn glognuts for only 5 bintar --- changelog | 3 + .../java/com/hbm/crafting/ToolRecipes.java | 5 +- .../com/hbm/handler/BobmazonOfferFactory.java | 144 ++------- .../hbm/inventory/gui/GUIScreenBobmazon.java | 283 +++++++++--------- src/main/java/com/hbm/items/ModItems.java | 15 +- .../java/com/hbm/items/tool/ItemCatalog.java | 6 +- src/main/java/com/hbm/main/MainRegistry.java | 4 + .../packet/toserver/ItemBobmazonPacket.java | 30 +- src/main/java/com/hbm/uninos/GenNode.java | 18 +- .../java/com/hbm/uninos/INetworkProvider.java | 5 + src/main/java/com/hbm/uninos/INodeNet.java | 2 +- .../java/com/hbm/uninos/UniNodespace.java | 55 ++-- .../networkproviders/PowerProvider.java | 13 + .../com/hbm/uninos/networks/PowerNetwork.java | 16 + src/main/java/com/hbm/util/Tuple.java | 8 +- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/textures/gui/gui_bobmazon.png | Bin 4226 -> 4181 bytes .../assets/hbm/textures/items/bobmazon.png | Bin 344 -> 363 bytes .../hbm/textures/items/bobmazon_machines.png | Bin 344 -> 0 bytes .../hbm/textures/items/bobmazon_materials.png | Bin 356 -> 0 bytes .../hbm/textures/items/bobmazon_tools.png | Bin 362 -> 0 bytes .../hbm/textures/items/bobmazon_weapons.png | Bin 335 -> 0 bytes 23 files changed, 259 insertions(+), 350 deletions(-) create mode 100644 src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java create mode 100644 src/main/java/com/hbm/uninos/networks/PowerNetwork.java delete mode 100644 src/main/resources/assets/hbm/textures/items/bobmazon_machines.png delete mode 100644 src/main/resources/assets/hbm/textures/items/bobmazon_materials.png delete mode 100644 src/main/resources/assets/hbm/textures/items/bobmazon_tools.png delete mode 100644 src/main/resources/assets/hbm/textures/items/bobmazon_weapons.png diff --git a/changelog b/changelog index 9a1af5f24..c7046e5fb 100644 --- a/changelog +++ b/changelog @@ -12,6 +12,9 @@ * Meteorite dungeons now use a new structure system * The rooms have been completely changed, and the dungeons are no longer single-level with fixed room sizes * Dungeons no longer lag the game to hell when generating +* Decimated bobmazon + * All books have been merged into one with way fewer offers + * Sells things like basic gear, MREs, plushies, snow globes, and certain things only found in worldgen like jungle tree saplings and NTM flowers (including mustard willow) ## Fixed * Fixed items being annihilated when shift clicking them into the particle source diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 113b4c80a..b56361021 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -163,10 +163,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.boltgun), new Object[] { "DPS", " RD", " D ", 'D', DURA.ingot(), 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'R', RUBBER.ingot(), 'S', STEEL.shell() }); //Bobmazon - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_machines), new Object[] { Items.book, Items.gold_nugget, KEY_RED }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_weapons), new Object[] { Items.book, Items.gold_nugget, KEY_GRAY }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_tools), new Object[] { Items.book, Items.gold_nugget, KEY_GREEN }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon), new Object[] { Items.book, Items.gold_nugget, Items.string, KEY_BLUE }); //Carts CraftingManager.addRecipeAuto(ItemModMinecart.createCartItem(EnumCartBase.WOOD, EnumMinecart.EMPTY), new Object[] { "P P", "WPW", 'P',KEY_SLAB, 'W', KEY_PLANKS }); diff --git a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java index 26fcfd55b..e0b3c4560 100644 --- a/src/main/java/com/hbm/handler/BobmazonOfferFactory.java +++ b/src/main/java/com/hbm/handler/BobmazonOfferFactory.java @@ -4,6 +4,10 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; +import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; +import com.hbm.blocks.generic.BlockPlushie.PlushieType; +import com.hbm.blocks.generic.BlockSnowglobe.SnowglobeType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUIScreenBobmazon.Offer; import com.hbm.inventory.gui.GUIScreenBobmazon.Requirement; @@ -14,124 +18,38 @@ import com.hbm.items.special.ItemKitCustom; import com.hbm.items.special.ItemKitNBT; import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; public class BobmazonOfferFactory { - public static List materials = new ArrayList(); - public static List machines = new ArrayList(); - public static List weapons = new ArrayList(); - public static List tools = new ArrayList(); + public static List standard = new ArrayList(); public static List special = new ArrayList(); public static void init() { - materials.clear(); - machines.clear(); - weapons.clear(); - tools.clear(); + standard.clear(); special.clear(); - int inflation = 5; - materials.add(new Offer(new ItemStack(ModItems.ingot_uranium), Requirement.NUCLEAR, 6 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_u233), Requirement.NUCLEAR, 20 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_u238), Requirement.NUCLEAR, 15 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_th232), Requirement.NUCLEAR, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_plutonium), Requirement.NUCLEAR, 25 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_titanium), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_copper), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_red_copper), Requirement.STEEL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_tungsten), Requirement.STEEL, 3 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_aluminium), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_steel), Requirement.STEEL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_lead), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_polymer), Requirement.OIL, 8 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_uranium_fuel), Requirement.NUCLEAR, 18 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_thorium_fuel), Requirement.NUCLEAR, 16 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_desh), Requirement.OIL, 16 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.ingot_saturnite), Requirement.STEEL, 8 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.lithium), Requirement.CHEMICS, 6 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.solid_fuel), Requirement.OIL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.lignite), Requirement.STEEL, 2 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.OIL.getID()), Requirement.OIL, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.DIESEL.getID()), Requirement.OIL, 16 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.PETROIL.getID()), Requirement.OIL, 12 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.GASOLINE.getID()), Requirement.OIL, 20 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.KEROSENE.getID()), Requirement.OIL, 20 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.canister_full, 1, Fluids.NITAN.getID()), Requirement.OIL, 100 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.gas_full, 1, Fluids.PETROLEUM.getID()), Requirement.OIL, 8 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.motor), Requirement.ASSEMBLY, 12 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.rtg_unit), Requirement.NUCLEAR, 25 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.pellet_gas), Requirement.CHEMICS, 4 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.magnetron), Requirement.ASSEMBLY, 10 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.pellet_rtg), Requirement.NUCLEAR, 27 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.piston_selenium), Requirement.ASSEMBLY, 12 * inflation)); - materials.add(new Offer(ItemBattery.getFullBattery(ModItems.battery_advanced), Requirement.ASSEMBLY, 15 * inflation)); - materials.add(new Offer(ItemBattery.getFullBattery(ModItems.battery_lithium), Requirement.CHEMICS, 30 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.arc_electrode), Requirement.ASSEMBLY, 15 * inflation)); - materials.add(new Offer(new ItemStack(ModItems.fuse), Requirement.ASSEMBLY, 5 * inflation)); - - machines.add(new Offer(new ItemStack(ModBlocks.concrete_smooth, 16), Requirement.CHEMICS, 32 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.brick_compound, 8), Requirement.CHEMICS, 48 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.barbed_wire, 16), Requirement.ASSEMBLY, 12 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_siren), Requirement.ASSEMBLY, 12 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.vault_door), Requirement.CHEMICS, 250 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.blast_door), Requirement.CHEMICS, 120 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_epress), Requirement.OIL, 60 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_difurnace_off), Requirement.STEEL, 26 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_gascent), Requirement.OIL, 100 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_diesel), Requirement.CHEMICS, 65 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_geo), Requirement.CHEMICS, 30 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_battery), Requirement.ASSEMBLY, 30 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_lithium_battery), Requirement.CHEMICS, 60 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_assembler), Requirement.ASSEMBLY, 30 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_chemplant), Requirement.CHEMICS, 50 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_shredder), Requirement.ASSEMBLY, 45 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_well), Requirement.OIL, 40 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.machine_refinery), Requirement.OIL, 80 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.absorber), Requirement.CHEMICS, 10 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.absorber_green), Requirement.OIL, 25 * inflation)); - machines.add(new Offer(new ItemStack(ModBlocks.decon), Requirement.CHEMICS, 15 * inflation)); - - weapons.add(new Offer(new ItemStack(ModItems.loot_10), Requirement.OIL, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.loot_15), Requirement.OIL, 65 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.loot_misc), Requirement.NUCLEAR, 65 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.launch_pad), Requirement.OIL, 95 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.machine_radar), Requirement.OIL, 90 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.designator), Requirement.CHEMICS, 35 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.designator_range), Requirement.CHEMICS, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.sat_chip), Requirement.CHEMICS, 35 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.turret_chip), Requirement.CHEMICS, 80 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.mine_ap, 4), Requirement.ASSEMBLY, 25 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.emp_bomb), Requirement.CHEMICS, 90 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.det_cord, 16), Requirement.ASSEMBLY, 50 * inflation)); - weapons.add(new Offer(new ItemStack(ModBlocks.det_charge), Requirement.CHEMICS, 25 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.detonator), Requirement.ASSEMBLY, 15 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.detonator_laser), Requirement.CHEMICS, 60 * inflation)); - weapons.add(new Offer(new ItemStack(ModItems.defuser), Requirement.OIL, 5 * inflation)); - - tools.add(new Offer(new ItemStack(ModBlocks.crate_can, 1), Requirement.STEEL, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModBlocks.machine_keyforge), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModBlocks.machine_satlinker), Requirement.CHEMICS, 50 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.oil_detector), Requirement.CHEMICS, 45 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.geiger_counter), Requirement.CHEMICS, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.key), Requirement.STEEL, 2 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.padlock), Requirement.STEEL, 5 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.padlock_reinforced), Requirement.OIL, 15 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.syringe_antidote, 6), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.syringe_metal_stimpak, 4), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.syringe_metal_medx, 4), Requirement.STEEL, 10 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.radaway, 6), Requirement.ASSEMBLY, 30 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.radaway_strong, 3), Requirement.ASSEMBLY, 35 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.radx, 4), Requirement.ASSEMBLY, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.pill_iodine, 6), Requirement.ASSEMBLY, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.gas_mask_filter, 1), Requirement.ASSEMBLY, 5 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.gun_kit_1, 4), Requirement.OIL, 20 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.gun_kit_2, 2), Requirement.OIL, 45 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.hazmat_kit), Requirement.ASSEMBLY, 40 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.hazmat_red_kit), Requirement.CHEMICS, 100 * inflation)); - tools.add(new Offer(new ItemStack(ModItems.hazmat_grey_kit), Requirement.OIL, 160 * inflation)); + //gear + standard.add(new Offer(new ItemStack(Blocks.torch, 64), Requirement.NONE, 2)); + standard.add(new Offer(new ItemStack(ModItems.definitelyfood, 16), Requirement.NONE, 4)); + standard.add(new Offer(new ItemStack(ModItems.nitra, 4), Requirement.CHEMICS, 16)); + standard.add(new Offer(new ItemStack(ModItems.gun_kit_1, 1), Requirement.ASSEMBLY, 16)); + standard.add(new Offer(new ItemStack(ModItems.geiger_counter, 1), Requirement.NONE, 16)); + standard.add(new Offer(new ItemStack(ModItems.matchstick, 16), Requirement.STEEL, 2)); + //plants + standard.add(new Offer(new ItemStack(Blocks.sapling, 1, 3), Requirement.STEEL, 12, 9)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.FOXGLOVE.ordinal()), Requirement.STEEL, 16, 5)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.TOBACCO.ordinal()), Requirement.STEEL, 16, 9)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.NIGHTSHADE.ordinal()), Requirement.STEEL, 16, 3)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.WEED.ordinal()), Requirement.STEEL, 4, 10)); + standard.add(new Offer(new ItemStack(ModBlocks.plant_flower, 1, EnumFlowerType.CD0.ordinal()), Requirement.NUCLEAR, 64, 8)); + //deco + for(EnumConcreteType conc : EnumConcreteType.values()) standard.add(new Offer(new ItemStack(ModBlocks.concrete_colored_ext, 16, conc.ordinal()), Requirement.CHEMICS, 4)); + for(SnowglobeType globe : SnowglobeType.values()) standard.add(new Offer(new ItemStack(ModBlocks.snowglobe, 1, globe.ordinal()), Requirement.CHEMICS, 128)); + for(int i = 1; i < PlushieType.values().length; i++) standard.add(new Offer(new ItemStack(ModBlocks.plushie, 1, i), Requirement.OIL, 16, i < 3 ? 10 : 0)); special.add(new Offer(new ItemStack(Items.iron_ingot, 64), Requirement.STEEL, 1)); special.add(new Offer(new ItemStack(ModItems.ingot_steel, 64), Requirement.STEEL, 1)); @@ -160,8 +78,8 @@ public class BobmazonOfferFactory { special.add(new Offer(new ItemStack(ModItems.grenade_kit), Requirement.STEEL, 5)); special.add(new Offer(new ItemStack(ModItems.jetpack_vector), Requirement.STEEL, 2)); special.add(new Offer(new ItemStack(ModItems.jetpack_tank), Requirement.STEEL, 2)); - special.add(new Offer(new ItemStack(ModItems.gun_kit_1, 10), Requirement.STEEL, 1)); - special.add(new Offer(new ItemStack(ModItems.gun_kit_2, 5), Requirement.STEEL, 3)); + special.add(new Offer(new ItemStack(ModItems.gun_kit_1, 1), Requirement.STEEL, 1)); + special.add(new Offer(new ItemStack(ModItems.gun_kit_2, 1), Requirement.STEEL, 3)); special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core, 1), Requirement.STEEL, 3)); special.add(new Offer(new ItemStack(ModBlocks.struct_launcher_core_large, 1), Requirement.STEEL, 3)); special.add(new Offer(new ItemStack(ModBlocks.struct_launcher, 40), Requirement.STEEL, 7)); @@ -242,17 +160,13 @@ public class BobmazonOfferFactory { new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()), new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()), new ItemStack(ModItems.ammo_standard, 64, EnumAmmo.CAPACITOR_OVERCHARGE.ordinal()) - ).setStackDisplayName("Frenchman's Reward"), Requirement.HIDDEN, 32)); + ).setStackDisplayName("Frenchie's Reward"), Requirement.HIDDEN, 32)); } public static List getOffers(ItemStack stack) { if(stack != null) { - - if(stack.getItem() == ModItems.bobmazon_materials) return materials; - if(stack.getItem() == ModItems.bobmazon_machines) return machines; - if(stack.getItem() == ModItems.bobmazon_weapons) return weapons; - if(stack.getItem() == ModItems.bobmazon_tools) return tools; + if(stack.getItem() == ModItems.bobmazon) return standard; if(stack.getItem() == ModItems.bobmazon_hidden) return special; } diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java index 14ed3b483..bd74622e5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenBobmazon.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.List; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -21,89 +22,88 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; +import net.minecraft.stats.AchievementList; import net.minecraft.util.ResourceLocation; public class GUIScreenBobmazon extends GuiScreen { - - protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_bobmazon.png"); - protected int xSize = 176; - protected int ySize = 229; - protected int guiLeft; - protected int guiTop; - int currentPage = 0; - List offers = new ArrayList(); - List buttons = new ArrayList(); - private final EntityPlayer player; - - public GUIScreenBobmazon(EntityPlayer player, List offers) { - - this.player = player; - this.offers = offers; - } - - int getPageCount() { - return (int)Math.ceil((offers.size() - 1) / 3); - } - - public void updateScreen() { - if(currentPage < 0) - currentPage = 0; - if(currentPage > getPageCount()) - currentPage = getPageCount(); - - if(this.player.getHeldItem() != null && this.player.getHeldItem().getItem() == ModItems.bobmazon_hidden && player.getDisplayName().equals("SolsticeUnlimitd")) - this.mc.thePlayer.closeScreen(); - } - - public void drawScreen(int mouseX, int mouseY, float f) - { - this.drawDefaultBackground(); - this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); - GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(mouseX, mouseY); - GL11.glEnable(GL11.GL_LIGHTING); - } - - public void initGui() - { - super.initGui(); - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_bobmazon.png"); + protected int xSize = 176 + 41; + protected int ySize = 229; + protected int guiLeft; + protected int guiTop; + int currentPage = 0; + List offers = new ArrayList(); + List buttons = new ArrayList(); + private final EntityPlayer player; - updateButtons(); - } - - protected void updateButtons() { - - if(!buttons.isEmpty()) - buttons.clear(); - - for(int i = currentPage * 3; i < Math.min(currentPage * 3 + 3, offers.size()); i++) { - buttons.add(new FolderButton(guiLeft + 34, guiTop + 35 + (54 * (int)Math.floor(i)) - currentPage * 3 * 54, offers.get(i))); - } + public GUIScreenBobmazon(EntityPlayer player, List offers) { - if(currentPage != 0) - buttons.add(new FolderButton(guiLeft + 25 - 18, guiTop + 26 + (27 * 3), 1, "Previous")); - if(currentPage != getPageCount()) - buttons.add(new FolderButton(guiLeft + 25 + (27 * 4) + 18, guiTop + 26 + (27 * 3), 2, "Next")); - } + this.player = player; + + this.offers = offers; + } + + int getPageCount() { + return (int) Math.ceil((offers.size() - 1) / 3); + } + + public void updateScreen() { + if(currentPage < 0) + currentPage = 0; + if(currentPage > getPageCount()) + currentPage = getPageCount(); + + if(this.player.getHeldItem() != null && this.player.getHeldItem().getItem() == ModItems.bobmazon_hidden && player.getDisplayName().equals("SolsticeUnlimitd")) + this.mc.thePlayer.closeScreen(); + } + + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + + updateButtons(); + } + + protected void updateButtons() { + + if(!buttons.isEmpty()) + buttons.clear(); + + for(int i = currentPage * 3; i < Math.min(currentPage * 3 + 3, offers.size()); i++) { + buttons.add(new FolderButton(guiLeft + 34, guiTop + 35 + (54 * (int) Math.floor(i)) - currentPage * 3 * 54, offers.get(i))); + } + + if(currentPage != 0) + buttons.add(new FolderButton(guiLeft + 25 - 18, guiTop + 26 + (27 * 3), 1, "Previous")); + if(currentPage != getPageCount()) + buttons.add(new FolderButton(guiLeft + 25 + (27 * 4) + 18 + 41, guiTop + 26 + (27 * 3), 2, "Next")); + } + + protected void mouseClicked(int i, int j, int k) { + try { + for(FolderButton b : buttons) + if(b.isMouseOnButton(i, j)) + b.executeAction(); + } catch(Exception ex) { + updateButtons(); + } + } - protected void mouseClicked(int i, int j, int k) { - try { - for(FolderButton b : buttons) - if(b.isMouseOnButton(i, j)) - b.executeAction(); - } catch (Exception ex) { - updateButtons(); - } - } - protected void drawGuiContainerForegroundLayer(int i, int j) { - this.fontRendererObj.drawString(I18n.format((currentPage + 1) + "/" + (getPageCount() + 1)), + this.fontRendererObj.drawString(I18n.format((currentPage + 1) + "/" + (getPageCount() + 1)), guiLeft + this.xSize / 2 - this.fontRendererObj.getStringWidth(I18n.format((currentPage + 1) + "/" + (getPageCount() + 1))) / 2, guiTop + 205, 4210752); - + for(FolderButton b : buttons) if(b.isMouseOnButton(i, j)) b.drawString(i, j); @@ -118,73 +118,73 @@ public class GUIScreenBobmazon extends GuiScreen { b.drawButton(b.isMouseOnButton(i, j)); for(FolderButton b : buttons) b.drawIcon(b.isMouseOnButton(i, j)); - - for(int d = currentPage * 3; d < Math.min(currentPage * 3 + 3, offers.size()); d++) { - offers.get(d).drawRequirement(this, guiLeft + 34, guiTop + 53 + (54 * (int)Math.floor(d)) - currentPage * 3 * 54); - } + + for(int d = currentPage * 3; d < Math.min(currentPage * 3 + 3, offers.size()); d++) { + offers.get(d).drawRequirement(this, guiLeft + 34, guiTop + 53 + (54 * (int) Math.floor(d)) - currentPage * 3 * 54); + } } - - protected void keyTyped(char p_73869_1_, int p_73869_2_) - { - if (p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) - { - this.mc.thePlayer.closeScreen(); - } - - } - + + protected void keyTyped(char p_73869_1_, int p_73869_2_) { + if(p_73869_2_ == 1 || p_73869_2_ == this.mc.gameSettings.keyBindInventory.getKeyCode()) { + this.mc.thePlayer.closeScreen(); + } + + } + class FolderButton { - + int xPos; int yPos; - //0: regular, 1: prev, 2: next + // 0: regular, 1: prev, 2: next int type; String info; Offer offer; - + public FolderButton(int x, int y, int t, String i) { xPos = x; yPos = y; type = t; info = i; } - + public FolderButton(int x, int y, Offer offer) { xPos = x; yPos = y; type = 0; this.offer = offer; } - + public void updateButton(int mouseX, int mouseY) { } - + public boolean isMouseOnButton(int mouseX, int mouseY) { return xPos <= mouseX && xPos + 18 > mouseX && yPos < mouseY && yPos + 18 >= mouseY; } - + public void drawButton(boolean b) { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - drawTexturedModalRect(xPos, yPos, b ? 176 + 18 : 176, type == 1 ? 18 : (type == 2 ? 36 : 0), 18, 18); + drawTexturedModalRect(xPos, yPos, b ? 176 + 41 + 18 : 176 + 41, type == 1 ? 18 : (type == 2 ? 36 : 0), 18, 18); } - + public void drawIcon(boolean b) { try { - GL11.glDisable(GL11.GL_LIGHTING); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); if(offer != null) { + RenderHelper.enableGUIStandardItemLighting(); itemRender.renderItemAndEffectIntoGUI(fontRendererObj, mc.getTextureManager(), offer.offer, xPos + 1, yPos + 1); } - GL11.glEnable(GL11.GL_LIGHTING); - } catch(Exception x) { } + } catch(Exception x) { + } } - + public void drawString(int x, int y) { if(info == null || info.isEmpty()) return; - + func_146283_a(Arrays.asList(new String[] { info }), x, y); } - + public void executeAction() { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); if(type == 0) { @@ -200,21 +200,21 @@ public class GUIScreenBobmazon extends GuiScreen { } } } - + @Override public boolean doesGuiPauseGame() { return false; } - + public static class Offer { - + public ItemStack offer; public Requirement requirement; public int cost; public int rating; public String comment; public String author; - + public Offer(ItemStack offer, Requirement requirement, int cost, int rating, String comment, String author) { this.offer = offer; this.requirement = requirement; @@ -223,82 +223,81 @@ public class GUIScreenBobmazon extends GuiScreen { this.comment = comment; this.author = author; } - + public Offer(ItemStack offer, Requirement requirement, int cost) { - this.offer = offer; - this.requirement = requirement; - this.cost = cost; - this.rating = 0; - this.comment = "No Ratings"; - this.author = ""; + this(offer, requirement, cost, 0); } - + + public Offer(ItemStack offer, Requirement requirement, int cost, int rating) { + this(offer, requirement, cost, rating, "No Ratings", ""); + } + public void drawRequirement(GUIScreenBobmazon gui, int x, int y) { try { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); RenderHelper.enableGUIStandardItemLighting(); - GL11.glColor3f(1F, 1F, 1F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - gui.drawTexturedModalRect(x + 19, y - 4, 176, 62, 39, 8); - gui.drawTexturedModalRect(x + 19, y - 4, 176, 54, rating, 8); - + gui.drawTexturedModalRect(x + 19, y - 4, 176 + 41, 62, 39, 8); + gui.drawTexturedModalRect(x + 19, y - 4, 176 + 41, 54, rating, 8); + String count = ""; if(offer.stackSize > 1) count = " x" + offer.stackSize; GL11.glPushMatrix(); - - float scale = 0.65F; + float scale = 0.5F; GL11.glScalef(scale, scale, scale); - gui.fontRendererObj.drawString(I18n.format(offer.getDisplayName()) + count, (int)((x + 20) / scale), (int)((y - 12) / scale), 4210752); - + gui.fontRendererObj.drawString(I18n.format(offer.getDisplayName()) + count, (int) ((x + 20) / scale), (int) ((y - 12) / scale), 4210752); GL11.glPopMatrix(); - + String price = cost + " Cap"; if(cost != 1) price += "s"; gui.fontRendererObj.drawString(price, x + 62, y - 3, 4210752); - + GL11.glPushMatrix(); - - GL11.glScalef(0.5F, 0.5F, 0.5F); - - if(!author.isEmpty()) - gui.fontRendererObj.drawString("- " + author, (x + 20) * 2, (y + 18) * 2, 0x222222); - gui.fontRendererObj.drawString(comment, (x + 20) * 2, (y + 8) * 2, 0x222222); - + + GL11.glScalef(0.5F, 0.5F, 0.5F); + + if(!author.isEmpty()) + gui.fontRendererObj.drawString("- " + author, (x + 20) * 2, (y + 18) * 2, 0x222222); + gui.fontRendererObj.drawString(comment, (x + 20) * 2, (y + 8) * 2, 0x222222); + GL11.glPopMatrix(); - - GL11.glDisable(GL11.GL_LIGHTING); if(offer != null) { + GL11.glEnable(GL11.GL_LIGHTING); gui.itemRender.renderItemAndEffectIntoGUI(gui.fontRendererObj, gui.mc.getTextureManager(), requirement.achievement.theItemStack, x + 1, y + 1); } - GL11.glEnable(GL11.GL_LIGHTING); - - } catch(Exception ex) { } + + } catch(Exception ex) { + } } - + } - + public enum Requirement { + NONE(AchievementList.openInventory), STEEL(MainRegistry.achBlastFurnace), ASSEMBLY(MainRegistry.achAssembly), CHEMICS(MainRegistry.achChemplant), OIL(MainRegistry.achDesh), NUCLEAR(MainRegistry.achTechnetium), HIDDEN(MainRegistry.bobHidden); - + private Requirement(Achievement achievement) { this.achievement = achievement; } - + public boolean fullfills(EntityPlayerMP player) { - + return player.func_147099_x().hasAchievementUnlocked(achievement); } - + public Achievement achievement; } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index dad87d730..2682975d5 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1226,10 +1226,7 @@ public class ModItems { public static Item siren_track; public static Item fluid_duct; - public static Item bobmazon_materials; - public static Item bobmazon_machines; - public static Item bobmazon_weapons; - public static Item bobmazon_tools; + public static Item bobmazon; public static Item bobmazon_hidden; public static Item launch_code_piece; @@ -4225,10 +4222,7 @@ public class ModItems { siren_track = new ItemCassette().setUnlocalizedName("siren_track").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":cassette"); fluid_duct = new ItemFluidDuct().setUnlocalizedName("fluid_duct").setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":duct"); - bobmazon_materials = new ItemCatalog().setUnlocalizedName("bobmazon_materials").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_materials"); - bobmazon_machines = new ItemCatalog().setUnlocalizedName("bobmazon_machines").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_machines"); - bobmazon_weapons = new ItemCatalog().setUnlocalizedName("bobmazon_weapons").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_weapons"); - bobmazon_tools = new ItemCatalog().setUnlocalizedName("bobmazon_tools").setMaxStackSize(1).setCreativeTab(MainRegistry.templateTab).setTextureName(RefStrings.MODID + ":bobmazon_tools"); + bobmazon = new ItemCatalog().setUnlocalizedName("bobmazon").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bobmazon"); bobmazon_hidden = new ItemCatalog().setUnlocalizedName("bobmazon_hidden").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":bobmazon_special"); euphemium_helmet = new ArmorEuphemium(MainRegistry.aMatEuph, 0).setUnlocalizedName("euphemium_helmet").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":euphemium_helmet"); @@ -5840,10 +5834,7 @@ public class ModItems { GameRegistry.registerItem(journal_pip, journal_pip.getUnlocalizedName()); GameRegistry.registerItem(journal_bj, journal_bj.getUnlocalizedName()); GameRegistry.registerItem(journal_silver, journal_silver.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_materials, bobmazon_materials.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_machines, bobmazon_machines.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_weapons, bobmazon_weapons.getUnlocalizedName()); - GameRegistry.registerItem(bobmazon_tools, bobmazon_tools.getUnlocalizedName()); + GameRegistry.registerItem(bobmazon, bobmazon.getUnlocalizedName()); GameRegistry.registerItem(bobmazon_hidden, bobmazon_hidden.getUnlocalizedName()); //Hydraulic Press Stamps diff --git a/src/main/java/com/hbm/items/tool/ItemCatalog.java b/src/main/java/com/hbm/items/tool/ItemCatalog.java index 1f679a88a..5bf610aa7 100644 --- a/src/main/java/com/hbm/items/tool/ItemCatalog.java +++ b/src/main/java/com/hbm/items/tool/ItemCatalog.java @@ -20,10 +20,7 @@ public class ItemCatalog extends Item implements IGUIProvider { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - - if(world.isRemote) - player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); - + if(world.isRemote) player.openGui(MainRegistry.instance, 0, world, 0, 0, 0); return stack; } @@ -46,7 +43,6 @@ public class ItemCatalog extends Item implements IGUIProvider { public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { if(BobmazonOfferFactory.getOffers(player.getHeldItem()) != null) return new GUIScreenBobmazon(player, BobmazonOfferFactory.getOffers(player.getHeldItem())); - return null; } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index bb4402ad2..091ac20de 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1643,6 +1643,10 @@ public class MainRegistry { ignoreMappings.add("hbm:item.pellet_canister"); ignoreMappings.add("hbm:item.pellet_claws"); ignoreMappings.add("hbm:item.pellet_flechette"); + ignoreMappings.add("hbm:item.bobmazon_materials"); + ignoreMappings.add("hbm:item.bobmazon_machines"); + ignoreMappings.add("hbm:item.bobmazon_weapons"); + ignoreMappings.add("hbm:item.bobmazon_tools"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java index 9866b4596..712dc766e 100644 --- a/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java +++ b/src/main/java/com/hbm/packet/toserver/ItemBobmazonPacket.java @@ -24,21 +24,11 @@ public class ItemBobmazonPacket implements IMessage { int offer; - public ItemBobmazonPacket() - { - - } + public ItemBobmazonPacket() { } - public ItemBobmazonPacket(EntityPlayer player, Offer offer) - { - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_materials) - this.offer = BobmazonOfferFactory.materials.indexOf(offer); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_machines) - this.offer = BobmazonOfferFactory.machines.indexOf(offer); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_weapons) - this.offer = BobmazonOfferFactory.weapons.indexOf(offer); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_tools) - this.offer = BobmazonOfferFactory.tools.indexOf(offer); + public ItemBobmazonPacket(EntityPlayer player, Offer offer) { + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon) + this.offer = BobmazonOfferFactory.standard.indexOf(offer); if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.bobmazon_hidden) this.offer = BobmazonOfferFactory.special.indexOf(offer); } @@ -62,16 +52,8 @@ public class ItemBobmazonPacket implements IMessage { World world = p.worldObj; Offer offer = null; - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_materials) - offer = BobmazonOfferFactory.materials.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_machines) - offer = BobmazonOfferFactory.machines.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_weapons) - offer = BobmazonOfferFactory.weapons.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_tools) - offer = BobmazonOfferFactory.tools.get(m.offer); - if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_hidden) - offer = BobmazonOfferFactory.special.get(m.offer); + if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon) offer = BobmazonOfferFactory.standard.get(m.offer); + if(p.getHeldItem() != null && p.getHeldItem().getItem() == ModItems.bobmazon_hidden) offer = BobmazonOfferFactory.special.get(m.offer); if(offer == null) { p.addChatMessage(new ChatComponentText("[BOBMAZON] There appears to be a mismatch between the offer you have requested and the offers that exist.")); diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index d9c3d8001..6f7390019 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -1,20 +1,19 @@ package com.hbm.uninos; -import com.hbm.uninos.UniNodespace.UniNodeWorld; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -public class GenNode { +public class GenNode { - public long id; public BlockPos[] positions; public DirPos[] connections; public INodeNet net; public boolean expired = false; public boolean recentlyChanged = true; + public T networkProvider; - public GenNode(BlockPos... positions) { - this.id = UniNodeWorld.nextId++; + public GenNode(T provider, BlockPos... positions) { + this.networkProvider = provider; this.positions = positions; } @@ -40,12 +39,3 @@ public class GenNode { this.recentlyChanged = true; } } - -/* - * - * ok so here's the deal: attempt #1 SUCKED. - * making a central nodespaces hashmap that holds one instance of each possible nodespace sounds like a great and simple solution - * until you realize that every single fucking fluid under the sun needs to be its own nodespace. which means the update function - * has to iterate over every world instance, and for every world instance there's 150 or so nodespaces for fluids alone. not good. - * - */ diff --git a/src/main/java/com/hbm/uninos/INetworkProvider.java b/src/main/java/com/hbm/uninos/INetworkProvider.java index c3b7893be..ec515d92b 100644 --- a/src/main/java/com/hbm/uninos/INetworkProvider.java +++ b/src/main/java/com/hbm/uninos/INetworkProvider.java @@ -1,5 +1,10 @@ package com.hbm.uninos; +/** + * Each instance of a network provider is a valid "type" of node in UNINOS + * @author hbm + */ public interface INetworkProvider { + public INodeNet provideNetwork(); } diff --git a/src/main/java/com/hbm/uninos/INodeNet.java b/src/main/java/com/hbm/uninos/INodeNet.java index 79efab063..b7c84d3ae 100644 --- a/src/main/java/com/hbm/uninos/INodeNet.java +++ b/src/main/java/com/hbm/uninos/INodeNet.java @@ -1,6 +1,6 @@ package com.hbm.uninos; -public interface INodeNet { +public interface INodeNet { public boolean isValid(); public void destroy(); diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java index 84a3d0ddc..7b07da5de 100644 --- a/src/main/java/com/hbm/uninos/UniNodespace.java +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -1,8 +1,8 @@ package com.hbm.uninos; import java.util.HashMap; -import java.util.HashSet; +import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.world.World; @@ -11,29 +11,36 @@ public class UniNodespace { public static HashMap worlds = new HashMap(); - /* - * attempt #1 went south because there would be an entirely separate nodespace for every single possible type - * which for fluids means at least 150 alone, and that's not great. - * this is attempt #2 which is not good for reasons explained below - */ + public static GenNode getNode(World world, int x, int y, int z, INetworkProvider type) { + UniNodeWorld nodeWorld = worlds.get(world); + if(nodeWorld != null) return nodeWorld.nodes.get(new Pair(new BlockPos(x, y, z), type)); + return null; + } + + public static void createNode(World world, GenNode node) { + UniNodeWorld nodeWorld = worlds.get(world); + if(nodeWorld == null) { + nodeWorld = new UniNodeWorld(); + worlds.put(world, nodeWorld); + } + nodeWorld.pushNode(node); + } + + public static void destroyNode(World world, int x, int y, int z, INetworkProvider type) { + GenNode node = getNode(world, x, y, z, type); + if(node != null) { + worlds.get(world).popNode(node); + } + } + public static class UniNodeWorld { - public static int nextId = 0; - - //shot in the dark: how well is the dual hashmap system gonna perform? - //how are we gonna handle type segregation for network forming? - public HashMap> posToId = new HashMap<>(); - public HashMap idToNode = new HashMap<>(); + public HashMap, GenNode> nodes = new HashMap(); /** Adds a node at all its positions to the nodespace */ public void pushNode(GenNode node) { for(BlockPos pos : node.positions) { - HashSet set = posToId.get(pos); - if(set == null) { - set = new HashSet(); - posToId.put(pos, set); - } - set.add(node.id); + nodes.put(new Pair(pos, node.networkProvider), node); } } @@ -41,19 +48,9 @@ public class UniNodespace { public void popNode(GenNode node) { if(node.net != null) node.net.destroy(); for(BlockPos pos : node.positions) { - HashSet set = posToId.get(pos); - if(set != null) { - set.remove(node.id); - if(set.isEmpty()) posToId.remove(pos); - } + nodes.remove(new Pair(pos, node.networkProvider)); } node.expired = true; } } - /* - * yeah this shit isn't gonna work because this allows multiple nodes of the same type in the same pos - * (we don't want that) which also makes it near impossible to do per-type position node lookups - * (sure it's possible but we are gonna have to iterate over every possible node in that spot, which is - * usually 1, but who knows how we end up using this system so i'd rather not) - */ } diff --git a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java b/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java new file mode 100644 index 000000000..bcaccc994 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java @@ -0,0 +1,13 @@ +package com.hbm.uninos.networkproviders; + +import com.hbm.uninos.INetworkProvider; +import com.hbm.uninos.INodeNet; +import com.hbm.uninos.networks.PowerNetwork; + +public class PowerProvider implements INetworkProvider { + + @Override + public INodeNet provideNetwork() { + return new PowerNetwork(); + } +} diff --git a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java new file mode 100644 index 000000000..45bb09976 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java @@ -0,0 +1,16 @@ +package com.hbm.uninos.networks; + +import com.hbm.uninos.INodeNet; + +public class PowerNetwork implements INodeNet { + + @Override + public boolean isValid() { + return false; + } + + @Override + public void destroy() { + + } +} diff --git a/src/main/java/com/hbm/util/Tuple.java b/src/main/java/com/hbm/util/Tuple.java index cd69db973..f2276386e 100644 --- a/src/main/java/com/hbm/util/Tuple.java +++ b/src/main/java/com/hbm/util/Tuple.java @@ -30,7 +30,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((key == null) ? 0 : key.hashCode()); result = prime * result + ((value == null) ? 0 : value.hashCode()); @@ -86,7 +86,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((x == null) ? 0 : x.hashCode()); result = prime * result + ((y == null) ? 0 : y.hashCode()); @@ -126,7 +126,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((w == null) ? 0 : w.hashCode()); result = prime * result + ((x == null) ? 0 : x.hashCode()); @@ -200,7 +200,7 @@ public class Tuple { @Override public int hashCode() { - final int prime = 31; + final int prime = 27644437; int result = 1; result = prime * result + ((v == null) ? 0 : v.hashCode()); result = prime * result + ((w == null) ? 0 : w.hashCode()); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 5e257b2f0..3af792e33 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1534,6 +1534,7 @@ item.blades_titanium.name=TitansÀgeblatt item.blowtorch.name=Lötlampe item.board_copper.name=Kupfertafel item.boat_rubber.name=Schlauchboot +item.bobmazon.name=Bobmazon item.bobmazon_hidden.name=Versteckter Katalog item.bobmazon_machines.name=Bobmazon: Blöcke und Maschinen item.bobmazon_materials.name=Bobmazon: Ressourcen diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b4caaa162..47a40c427 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -2276,6 +2276,7 @@ item.blades_titanium.name=Titanium Shredder Blades item.blowtorch.name=Blowtorch item.board_copper.name=Copper Panel item.boat_rubber.name=Rubber Boat +item.bobmazon.name=Bobmazon item.bobmazon_hidden.name=Hidden Catalog item.bobmazon_machines.name=Bobmazon: Blocks and Machines item.bobmazon_materials.name=Bobmazon: Materials diff --git a/src/main/resources/assets/hbm/textures/gui/gui_bobmazon.png b/src/main/resources/assets/hbm/textures/gui/gui_bobmazon.png index 33890326aec6b0a8b4906f3858d516f899831ca9..e9fdfa2cc70eeb3d2cb464692ece0b57e161fbf5 100644 GIT binary patch literal 4181 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 Ur`>?n_}d?S+4xfNMW?_12l{rgsQ>@~ diff --git a/src/main/resources/assets/hbm/textures/items/bobmazon.png b/src/main/resources/assets/hbm/textures/items/bobmazon.png index 21f69a46e4173e1762a2a8c72f633113dbcf2990..fb5f3e38406d08af6f3763e6b88616342f9a8a68 100644 GIT binary patch delta 320 zcmV-G0l)s(0_y^hG=CyVL_t(IjjfWgO2beThQE|zr+}MKk_%1_88cMz4elc}QeBPMX3KVFYZrOWVJT)W@K^?q&=yP&(qm>vsP^CA>@qc|EpcJi2TG9y$=>&ys zx+UBj5V5sq}5rEf*Tn35wkv3$wFV*<3%po-~ViU%t=+@Wux$@>yj-2d7y? znnlQA7jgJS8$bwwH->ODZCtVn0?1((0L!ufXwN@q#Br>Z=)fdNfS*@5-uH^ri#|dK z;y5N8P5H>@8#%%2v%6oxI*A(8f%mVWQ4y?@YywppKT%1xfm(r*s9Fd9TfPAlWtRkW S{ByGa0000Wvlxo^+dmzY5p z__En}9l@`gTqXfc20zhAZh=mLk(k;A{#(8Q7ml0-dnj6k00000NkvXXu0mjfyvTb;@5JjI2dj>jtl}NrrsxorNO#)o3*D?MSom$9T5}3MpGtKdsk;d8fdDu@JWRdN>Ru z13@2*>Y6%=oD$Cknk=)7BuN0Q=u+YrQnrPZZ7hU^msw^753?DI#iG-Xg|H8Lg_P~R z?{haAbzbhT-cO}9Z^t7(0AWvlxo^+dmzY5p__En}9l@`g qTmel6Kha2Tflh&unA!#YTfPAoj+_O1C|ZR800003LZN?wlh9dk zkOZ9F92~_>5TxLe?c&zSAUZ_h9OTX>>9vEt>GAk|-@Q8y{#e$gKo$p5_2)NFy}VJN zz|d**>|tT|Bt1bFOfR3wkN1oc%LMAccuJBa09v#x8Dw!FvpA5U(`eWlPqjeaolz7; zYaTj{KG4eIK>FJa&Q|*>-POBQ);2HiLk0l*>5RokJ79v#+NP{+{3t{2>@ouIJP*;UtjzR zR!LOQ1YX@fS}nmU$vRL~?3_#D8Y~hHA8x;EERQ}p5hmvnp{$Yt{RA05(L}C z^i-4C{eewQgF^x8ifB-Tganc`JH)sf*Y-96uljO%pXcs!2mCQ)SAp?Bs`+m6T>kYCj zGuFL`=nVjoSvV^>x&U6r4T}(zvyE1 zg{|OtHrxoBB&uiw@25}15Hv})fhx71s3f~Ut3XNAYyGse?slLVvDu?Yx!-pWKfoW8d>c?o9qxJ> zGuCx|y@RT%u{&xRSWR7&wk&0swa>cprF)OAK^5{mQP% hH!v!2l8 Date: Tue, 11 Feb 2025 17:46:39 -0500 Subject: [PATCH 18/64] Rotary Furnace Fuel Tweak Better fuels speed up the rotary furnace, but require more steam Steam requirements scale with speed nonlinearly, being x^1.5 --- .../java/com/hbm/module/ModuleBurnTime.java | 63 ++++--- .../TileEntityMachineRotaryFurnace.java | 176 ++++++++++-------- 2 files changed, 139 insertions(+), 100 deletions(-) diff --git a/src/main/java/com/hbm/module/ModuleBurnTime.java b/src/main/java/com/hbm/module/ModuleBurnTime.java index 7b8db8321..f4a5ec3db 100644 --- a/src/main/java/com/hbm/module/ModuleBurnTime.java +++ b/src/main/java/com/hbm/module/ModuleBurnTime.java @@ -30,9 +30,11 @@ public class ModuleBurnTime { private static final int modRocket = 6; private static final int modBalefire = 7; + private double[] modTime = new double[8]; + private double[] modHeat = new double[8]; - + public ModuleBurnTime() { for(int i = 0; i < modTime.length; i++) { modTime[i] = 1.0D; @@ -78,23 +80,23 @@ public class ModuleBurnTime { writer.name("D:heatRocket").value(modHeat[modRocket]); writer.name("D:heatBalefie").value(modHeat[modBalefire]); } - + public int getBurnTime(ItemStack stack) { //int fuel = TileEntityFurnace.getItemBurnTime(stack); int fuel = FuelHandler.getBurnTimeFromCache(stack); - + if(fuel == 0) return 0; - + return (int) (fuel * getMod(stack, modTime)); } - + public int getBurnHeat(int base, ItemStack stack) { return (int) (base * getMod(stack, modHeat)); } - + public double getMod(ItemStack stack, double[] mod) { - + if(stack == null) return 0; @@ -105,11 +107,11 @@ public class ModuleBurnTime { if(stack.getItem() == ModItems.solid_fuel_bf) return mod[modBalefire]; if(stack.getItem() == ModItems.solid_fuel_presto_bf) return mod[modBalefire]; if(stack.getItem() == ModItems.solid_fuel_presto_triplet_bf) return mod[modBalefire]; - + if(stack.getItem() == ModItems.rocket_fuel) return mod[modRocket]; - + List names = ItemStackUtil.getOreDictNames(stack); - + for(String name : names) { if(name.contains("Coke")) return mod[modCoke]; if(name.contains("Coal")) return mod[modCoal]; @@ -117,22 +119,22 @@ public class ModuleBurnTime { if(name.startsWith("log")) return mod[modLog]; if(name.contains("Wood")) return mod[modWood]; } - + return 1; } - + public List getDesc() { List desc = new ArrayList(); desc.addAll(getTimeDesc()); desc.addAll(getHeatDesc()); return desc; } - + public List getTimeDesc() { List list = new ArrayList(); list.add(EnumChatFormatting.GOLD + "Burn time bonuses:"); - + addIf(list, "Logs", modTime[modLog]); addIf(list, "Wood", modTime[modWood]); addIf(list, "Coal", modTime[modCoal]); @@ -141,18 +143,18 @@ public class ModuleBurnTime { addIf(list, "Solid Fuel", modTime[modSolid]); addIf(list, "Rocket Fuel", modTime[modRocket]); addIf(list, "Balefire", modTime[modBalefire]); - + if(list.size() == 1) list.clear(); - + return list; } - + public List getHeatDesc() { List list = new ArrayList(); list.add(EnumChatFormatting.RED + "Burn heat bonuses:"); - + addIf(list, "Logs", modHeat[modLog]); addIf(list, "Wood", modHeat[modWood]); addIf(list, "Coal", modHeat[modCoal]); @@ -161,31 +163,38 @@ public class ModuleBurnTime { addIf(list, "Solid Fuel", modHeat[modSolid]); addIf(list, "Rocket Fuel", modHeat[modRocket]); addIf(list, "Balefire", modHeat[modBalefire]); - + if(list.size() == 1) list.clear(); - + return list; } - + private void addIf(List list, String name, double mod) { - + if(mod != 1.0D) list.add(EnumChatFormatting.YELLOW + "- " + name + ": " + getPercent(mod)); } - + private String getPercent(double mod) { mod -= 1D; String num = ((int) (mod * 100)) + "%"; - + if(mod < 0) num = EnumChatFormatting.RED + num; else num = EnumChatFormatting.GREEN + "+" + num; - + return num; } - + public double[] getModHeat() { + return modHeat; + } + public double[] getModTime() { + return modTime; + } + + public ModuleBurnTime setLogTimeMod(double mod) { this.modTime[modLog] = mod; return this; } public ModuleBurnTime setWoodTimeMod(double mod) { this.modTime[modWood] = mod; return this; } public ModuleBurnTime setCoalTimeMod(double mod) { this.modTime[modCoal] = mod; return this; } @@ -194,7 +203,7 @@ public class ModuleBurnTime { public ModuleBurnTime setSolidTimeMod(double mod) { this.modTime[modSolid] = mod; return this; } public ModuleBurnTime setRocketTimeMod(double mod) { this.modTime[modRocket] = mod; return this; } public ModuleBurnTime setBalefireTimeMod(double mod) { this.modTime[modBalefire] = mod; return this; } - + public ModuleBurnTime setLogHeatMod(double mod) { this.modHeat[modLog] = mod; return this; } public ModuleBurnTime setWoodHeatMod(double mod) { this.modHeat[modWood] = mod; return this; } public ModuleBurnTime setCoalHeatMod(double mod) { this.modHeat[modCoal] = mod; return this; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java index f9fef2930..20993eb72 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -1,7 +1,10 @@ package com.hbm.tileentity.machine; +import java.io.IOException; import java.util.Random; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.RecipesCommon.AStack; @@ -16,12 +19,10 @@ import com.hbm.inventory.recipes.RotaryFurnaceRecipes; import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; import com.hbm.lib.Library; import com.hbm.main.MainRegistry; +import com.hbm.module.ModuleBurnTime; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; -import com.hbm.tileentity.IConditionalInvAccess; -import com.hbm.tileentity.IFluidCopiable; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.tileentity.*; import com.hbm.util.CrucibleUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -41,27 +42,39 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable, IConditionalInvAccess { - +public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable, IConditionalInvAccess, IConfigurableMachine { + public FluidTank[] tanks; public boolean isProgressing; public float progress; public int burnTime; public int maxBurnTime; - public int steamUsed = 0; public boolean isVenting; public MaterialStack output; + public ItemStack lastFuel; public static final int maxOutput = MaterialShapes.BLOCK.q(16); - + public int anim; public int lastAnim; + /**Given this has no heat, the heat mod instead affects the progress per fuel **/ + public static ModuleBurnTime burnModule = new ModuleBurnTime() + .setCokeTimeMod(1.25) + .setRocketTimeMod(1.5) + .setSolidTimeMod(1.5) + .setBalefireTimeMod(1.5) + + .setCokeHeatMod(1.25) + .setSolidHeatMod(1.5) + .setRocketHeatMod(2.5) + .setBalefireHeatMod(10); + public TileEntityMachineRotaryFurnace() { super(5, 50); tanks = new FluidTank[3]; tanks[0] = new FluidTank(Fluids.NONE, 16_000); - tanks[1] = new FluidTank(Fluids.STEAM, 4_000); - tanks[2] = new FluidTank(Fluids.SPENTSTEAM, 40); + tanks[1] = new FluidTank(Fluids.STEAM, 12_000); + tanks[2] = new FluidTank(Fluids.SPENTSTEAM, 120); } @Override @@ -71,12 +84,12 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i @Override public void updateEntity() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + if(!worldObj.isRemote) { - + tanks[0].setType(3, slots); for(DirPos pos : getSteamPos()) { @@ -86,16 +99,16 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(tanks[0].getTankType() != Fluids.NONE) for(DirPos pos : getFluidPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + if(smoke.getFill() > 0) this.sendFluid(smoke, worldObj, xCoord + rot.offsetX, yCoord + 5, zCoord + rot.offsetZ, Library.POS_Y); - + if(this.output != null) { - + int prev = this.output.amount; Vec3 impact = Vec3.createVectorHelper(0, 0, 0); MaterialStack leftover = CrucibleUtil.pourSingleStack(worldObj, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + rot.offsetZ * 2.875D, 6, true, this.output, MaterialShapes.INGOT.q(1), impact); this.output = leftover; - + if(prev != this.output.amount) { this.output = leftover; NBTTagCompound data = new NBTTagCompound(); @@ -107,31 +120,35 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i data.setFloat("len", Math.max(1F, yCoord + 1 - (float) (Math.ceil(impact.yCoord) - 1.125))); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 0.75, zCoord + 0.5D + rot.offsetZ * 2.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } - + if(output.amount <= 0) this.output = null; } - + RotaryFurnaceRecipe recipe = RotaryFurnaceRecipes.getRecipe(slots[0], slots[1], slots[2]); this.isProgressing = false; - + if(recipe != null) { - + if(this.burnTime <= 0 && slots[4] != null && TileEntityFurnace.isItemFuel(slots[4])) { - this.maxBurnTime = this.burnTime = TileEntityFurnace.getItemBurnTime(slots[4]) / 2; + lastFuel = slots[4]; + this.maxBurnTime = this.burnTime = burnModule.getBurnTime(lastFuel) / 2; this.decrStackSize(4, 1); this.markChanged(); } - + if(this.canProcess(recipe)) { - this.progress += 1F / recipe.duration; - tanks[1].setFill(tanks[1].getFill() - recipe.steam); - steamUsed += recipe.steam; + float speed = Math.max((float) burnModule.getMod(lastFuel, burnModule.getModHeat()), 1); + this.progress += speed / recipe.duration; + + speed = (float) Math.pow(speed, 1.5); + tanks[1].setFill((int) (tanks[1].getFill() - recipe.steam * speed)); + tanks[2].setFill((int) (tanks[2].getFill() + recipe.steam * speed / 100)); this.isProgressing = true; - + if(this.progress >= 1F) { this.progress -= 1F; this.consumeItems(recipe); - + if(this.output == null) { this.output = recipe.output.copy(); } else { @@ -139,40 +156,31 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } this.markDirty(); } - + } else { this.progress = 0; } - - if(this.steamUsed >= 100) { - int steamReturn = this.steamUsed / 100; - int canReturn = tanks[2].getMaxFill() - tanks[2].getFill(); - int doesReturn = Math.min(steamReturn, canReturn); - this.steamUsed -= doesReturn * 100; - tanks[2].setFill(tanks[2].getFill() + doesReturn); - } - } else { this.progress = 0; } - + this.isVenting = false; if(this.burnTime > 0) { this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 10F); this.burnTime--; } - + this.networkPackNT(50); - + } else { - + if(this.burnTime > 0 && MainRegistry.proxy.me().getDistance(xCoord, yCoord, zCoord) < 25) { Random rand = worldObj.rand; worldObj.spawnParticle("flame", xCoord + 0.5 + dir.offsetX * 0.5 + rot.offsetX + rand.nextGaussian() * 0.25, yCoord + 0.375, zCoord + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ + rand.nextGaussian() * 0.25, 0, 0, 0); } if(isVenting && worldObj.getTotalWorldTime() % 2 == 0) { - + NBTTagCompound fx = new NBTTagCompound(); fx.setString("type", "tower"); fx.setFloat("lift", 10F); @@ -187,7 +195,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } this.lastAnim = this.anim; if(this.isProgressing) { - this.anim++; + this.anim += (int) Math.max(burnModule.getMod(slots[4], burnModule.getModHeat()), 1); } } } @@ -202,7 +210,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i buf.writeFloat(progress); buf.writeInt(burnTime); buf.writeInt(maxBurnTime); - + if(this.output != null) { buf.writeBoolean(true); buf.writeInt(this.output.material.id); @@ -211,7 +219,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i buf.writeBoolean(false); } } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); tanks[0].deserialize(buf); @@ -222,14 +230,14 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i progress = buf.readFloat(); burnTime = buf.readInt(); maxBurnTime = buf.readInt(); - + if(buf.readBoolean()) { this.output = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); } else { this.output = null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -239,8 +247,11 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i this.progress = nbt.getFloat("prog"); this.burnTime = nbt.getInteger("burn"); this.maxBurnTime = nbt.getInteger("maxBurn"); + ItemStack nbtFuel = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("lastFuel")); + if(nbtFuel != null) + this.lastFuel = nbtFuel; } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -250,32 +261,33 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i nbt.setFloat("prog", progress); nbt.setInteger("burn", burnTime); nbt.setInteger("maxBurn", maxBurnTime); + nbt.setTag("lastFuel", lastFuel.writeToNBT(new NBTTagCompound())); } - + public DirPos[] getSteamPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2, dir.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()) }; } - + public DirPos[] getFluidPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ + rot.offsetZ * 3, rot), new DirPos(xCoord - dir.offsetX + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 3, rot) }; } - + public boolean canProcess(RotaryFurnaceRecipe recipe) { - + if(this.burnTime <= 0) return false; - + if(recipe.fluid != null) { if(this.tanks[0].getTankType() != recipe.fluid.type) return false; if(this.tanks[0].getFill() < recipe.fluid.fill) return false; @@ -283,20 +295,19 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(tanks[1].getFill() < recipe.steam) return false; if(tanks[2].getMaxFill() - tanks[2].getFill() < recipe.steam / 100) return false; - if(this.steamUsed > 100) return false; - + if(this.output != null) { if(this.output.material != recipe.output.material) return false; if(this.output.amount + recipe.output.amount > this.maxOutput) return false; } - + return true; } - + public void consumeItems(RotaryFurnaceRecipe recipe) { - + for(AStack aStack : recipe.ingredients) { - + for(int i = 0; i < 3; i++) { ItemStack stack = slots[i]; if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { @@ -305,19 +316,19 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } } } - + if(recipe.fluid != null) { this.tanks[0].setFill(tanks[0].getFill() - recipe.fluid.fill); } } - + @Override public void pollute(PollutionType type, float amount) { FluidTank tank = type == PollutionType.SOOT ? smoke : type == PollutionType.HEAVYMETAL ? smoke_leaded : smoke_poison; - + int fluidAmount = (int) Math.ceil(amount * 100); tank.setFill(tank.getFill() + fluidAmount); - + if(tank.getFill() > tank.getMaxFill()) { int overflow = tank.getFill() - tank.getMaxFill(); tank.setFill(tank.getMaxFill()); @@ -332,12 +343,12 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i @Override public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { return slot < 3 || slot == 4; } @Override public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { return false; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -348,10 +359,10 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -364,7 +375,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); BlockPos core = new BlockPos(xCoord, yCoord, zCoord); - + //Red if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1).offset(rot, -2))) return new int[] {0}; //Yellow @@ -373,7 +384,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1))) return new int[] {2}; //Fuel if(side == dir.ordinal() && pos.equals(core.clone().offset(dir, 1).offset(rot, -1))) return new int[] {4}; - + return new int[] { }; } @@ -383,4 +394,23 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerMachineRotaryFurnace(player.inventory, this); } @Override public Object provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineRotaryFurnace(player.inventory, this); } + + @Override + public String getConfigName() { + return "rotaryfurnace"; + } + + @Override + public void readIfPresent(JsonObject obj) { + if(obj.has("burnModule")) { + burnModule.readIfPresent(obj.get("M:burnModule").getAsJsonObject()); + } + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("M:burnModule").beginObject(); + burnModule.writeConfig(writer); + writer.endObject(); + } } From 3a7e9745416b5f863628844c6836e1eb143a3201 Mon Sep 17 00:00:00 2001 From: 70000hp <105080577+70000hp@users.noreply.github.com> Date: Tue, 11 Feb 2025 18:17:29 -0500 Subject: [PATCH 19/64] adjustments --- .../tileentity/machine/TileEntityMachineRotaryFurnace.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java index 20993eb72..a8cf4ac5f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -64,9 +64,8 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i .setSolidTimeMod(1.5) .setBalefireTimeMod(1.5) - .setCokeHeatMod(1.25) .setSolidHeatMod(1.5) - .setRocketHeatMod(2.5) + .setRocketHeatMod(3) .setBalefireHeatMod(10); public TileEntityMachineRotaryFurnace() { @@ -140,7 +139,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i float speed = Math.max((float) burnModule.getMod(lastFuel, burnModule.getModHeat()), 1); this.progress += speed / recipe.duration; - speed = (float) Math.pow(speed, 1.5); + speed = (float)(13 * Math.log10(speed) + 1); tanks[1].setFill((int) (tanks[1].getFill() - recipe.steam * speed)); tanks[2].setFill((int) (tanks[2].getFill() + recipe.steam * speed / 100)); this.isProgressing = true; From 0262fcc984000bb24e79edbe294ff4280e747431 Mon Sep 17 00:00:00 2001 From: Creeper-banner <82984664+Creeper-banner@users.noreply.github.com> Date: Wed, 12 Feb 2025 17:11:58 +0800 Subject: [PATCH 20/64] Add files via upload --- src/main/resources/assets/hbm/lang/zh_CN.lang | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index a627fe821..200a8f1b0 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -6171,7 +6171,7 @@ pa.idle.desc=空闲 pa.running.desc=正圚运行 pa.success.desc=成功 pa.pause_unloaded.desc=粒子进入了未加蜜的区块。$圚粒子䞎粒子源均被加蜜前运行将暂停。 -pa.crash_defocus.desc=粒子倱去焊距。$请确保加速噚含有足借数量的四极磁铁。 +pa.crash_defocus.desc=粒子倱焊。$请确保加速噚含有足借数量的四极磁铁。 pa.crash_derail.desc=粒子犻匀加速噚。$请确保加速噚未猺倱郚件$䞔所有双极磁铁均正确配眮。 pa.crash_cannot_enter.desc=粒子尝试进入加速噚某郚件时倱莥。$请确保所有郚件朝向正确。 pa.crash_nocool.desc=粒子进入了未冷华的加速噚郚件。$请确保所有需冷华的郚件正垞连接䞔内郚含有冷四氟甲烷。 @@ -6184,3 +6184,16 @@ tile.pa_dipole.desc=需芁冷华$根据粒子劚量䜿其蜬向$具有“䜎 tile.pa_quadrupole.desc=需芁冷华$䜿粒子倱焊皋床减少100$需芁倧型线圈才胜工䜜 tile.pa_rfc.desc=需芁冷华$䜿粒子劚量增加100并䜿粒子倱焊皋床增加100$粒子倱焊皋床到蟟1000时䌚坍毁 tile.pa_source.desc=需芁冷华$䜿甚䞀䞪物品来创造䞀䞪粒子 +item.ammo_secret.p35_800.name=.35-800 V9 +item.bobmazon.name=Bobmazon +item.gun_aberrator.name=犻散者 +item.gun_aberrator_eott.name=暎风之県 +pa.crash_norecipe=没有配方 +pa.crash_norecipe.desc=粒子进入了检测噚䜆蟓入的粒子䞍䞎任䜕配方匹配。$请确保向粒子源蟓入的粒子笊合正确的配方。 +pa.crash_underspeed=粒子速床过䜎 +pa.crash_underspeed.desc=粒子进入了检测噚䜆其速床䞍足以进行歀配方。$请确保加速噚已䞺该配方正确配眮。 +tile.deco_loot.name=战利品堆 +tile.refueler.name=燃料装填站 +tile.wand_air.name=结构魔杖方块空气 +tile.wand_loot.name=结构魔杖方块战利品 +tile.wand_jigsaw.name=结构魔杖方块拌囟 From 4aaf3ec8647fa6fbdabb694ef7544451e86c0af6 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 13 Feb 2025 16:45:38 +0100 Subject: [PATCH 21/64] new objective: kill ronald reagan --- changelog | 6 + .../nei/CrystallizerRecipeHandler.java | 20 ++++ .../recipes/CrystallizerRecipes.java | 103 ++++++++++-------- .../hbm/tileentity/IUpgradeInfoProvider.java | 1 + .../TileEntityMachineCrystallizer.java | 17 ++- src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + 7 files changed, 91 insertions(+), 58 deletions(-) diff --git a/changelog b/changelog index c7046e5fb..73108559d 100644 --- a/changelog +++ b/changelog @@ -15,6 +15,12 @@ * Decimated bobmazon * All books have been merged into one with way fewer offers * Sells things like basic gear, MREs, plushies, snow globes, and certain things only found in worldgen like jungle tree saplings and NTM flowers (including mustard willow) +* Each acidizer recipe now has a "productivity" value which is the percent chance that the effectiveness upgrades use, instead of a fixed 5% per level + * This means that certain recipes like re-crystallizing gems no longer allow for item duping + * Due to duping no longer being a concern, productivity rates for certain recipes can now be much higher + * Things like sawdust to cordite have a 75% chance of not using the input at level 3 + * Effectiveness no longer increases acid consumption (since many recipes now use the acidizer like a solid output "mixer") but instead adds +200% power consumption per level +* Chemical dyes can now also be made with light oil ## Fixed * Fixed items being annihilated when shift clicking them into the particle source diff --git a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java index a3789f8cd..39f76178a 100644 --- a/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrystallizerRecipeHandler.java @@ -3,8 +3,13 @@ package com.hbm.handler.nei; import java.awt.Rectangle; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.gui.GUICrystallizer; import com.hbm.inventory.recipes.CrystallizerRecipes; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; public class CrystallizerRecipeHandler extends NEIUniversalHandler { @@ -24,4 +29,19 @@ public class CrystallizerRecipeHandler extends NEIUniversalHandler { guiGui.add(GUICrystallizer.class); RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); } + + @Override + public void drawExtras(int recipe) { + + RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); + + CrystallizerRecipe cRecipe = CrystallizerRecipes.getOutput(rec.input[1].item, Fluids.fromID(rec.input[0].item.getItemDamage())); + + if(cRecipe != null && cRecipe.productivity > 0) { + FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; + String momentum = "Effectiveness: +" + Math.min((int) (cRecipe.productivity * 100), 99) + "% per level"; + int side = 8; + fontRenderer.drawString(momentum, side, 52, 0x404040); + } + } } diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 814baafe2..6d12d8124 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -61,57 +61,56 @@ public class CrystallizerRecipes extends SerializableRecipe { final int mixingTime = 20; FluidStack sulfur = new FluidStack(Fluids.SULFURIC_ACID, 500); - registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime)); - registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime)); - registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime)); - registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime)); - registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime)); - registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); - registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime), sulfur); - for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime), sulfur); - registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime), sulfur); - registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime), sulfur); - registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime)); - registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime)); - registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime)); - registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime), sulfur); - registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime)); - registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime)); - registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime)); - registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime)); - registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime), sulfur); - registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime), sulfur); - //registerRecipe(STAR.ore(), new CrystallizerRecipe(ModItems.crystal_starmetal, baseTime), sulfur); - registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime), sulfur); + registerRecipe(COAL.ore(), new CrystallizerRecipe(ModItems.crystal_coal, baseTime).prod(0.05F)); + registerRecipe(IRON.ore(), new CrystallizerRecipe(ModItems.crystal_iron, baseTime).prod(0.05F)); + registerRecipe(GOLD.ore(), new CrystallizerRecipe(ModItems.crystal_gold, baseTime).prod(0.05F)); + registerRecipe(REDSTONE.ore(), new CrystallizerRecipe(ModItems.crystal_redstone, baseTime).prod(0.05F)); + registerRecipe(LAPIS.ore(), new CrystallizerRecipe(ModItems.crystal_lapis, baseTime).prod(0.05F)); + registerRecipe(DIAMOND.ore(), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime).prod(0.05F)); + registerRecipe(U.ore(), new CrystallizerRecipe(ModItems.crystal_uranium, baseTime).prod(0.05F), sulfur); + for(String ore : OreDictManager.TH232.all(MaterialShapes.ONLY_ORE)) registerRecipe(ore, new CrystallizerRecipe(ModItems.crystal_thorium, baseTime).prod(0.05F), sulfur); + registerRecipe(PU.ore(), new CrystallizerRecipe(ModItems.crystal_plutonium, baseTime).prod(0.05F), sulfur); + registerRecipe(TI.ore(), new CrystallizerRecipe(ModItems.crystal_titanium, baseTime).prod(0.05F), sulfur); + registerRecipe(S.ore(), new CrystallizerRecipe(ModItems.crystal_sulfur, baseTime).prod(0.05F)); + registerRecipe(KNO.ore(), new CrystallizerRecipe(ModItems.crystal_niter, baseTime).prod(0.05F)); + registerRecipe(CU.ore(), new CrystallizerRecipe(ModItems.crystal_copper, baseTime).prod(0.05F)); + registerRecipe(W.ore(), new CrystallizerRecipe(ModItems.crystal_tungsten, baseTime).prod(0.05F), sulfur); + registerRecipe(AL.ore(), new CrystallizerRecipe(ModItems.crystal_aluminium, baseTime).prod(0.05F)); + registerRecipe(F.ore(), new CrystallizerRecipe(ModItems.crystal_fluorite, baseTime).prod(0.05F)); + registerRecipe(BE.ore(), new CrystallizerRecipe(ModItems.crystal_beryllium, baseTime).prod(0.05F)); + registerRecipe(PB.ore(), new CrystallizerRecipe(ModItems.crystal_lead, baseTime).prod(0.05F)); + registerRecipe(SA326.ore(), new CrystallizerRecipe(ModItems.crystal_schrabidium, baseTime).prod(0.05F), sulfur); + registerRecipe(LI.ore(), new CrystallizerRecipe(ModItems.crystal_lithium, baseTime).prod(0.05F), sulfur); + registerRecipe(CO.ore(), new CrystallizerRecipe(ModItems.crystal_cobalt, baseTime).prod(0.05F), sulfur); - registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime), new FluidStack(Fluids.REDMUD, 75)); - registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300), new FluidStack(Fluids.SULFURIC_ACID, 250)); + registerRecipe(new ComparableStack(ModItems.powder_calcium), new CrystallizerRecipe(new ItemStack(ModItems.powder_cement, 8), utilityTime).prod(0.1F), new FluidStack(Fluids.REDMUD, 75)); + registerRecipe(MALACHITE.ingot(), new CrystallizerRecipe(ItemScraps.create(new MaterialStack(Mats.MAT_COPPER, MaterialShapes.INGOT.q(1))), 300).prod(0.1F), new FluidStack(Fluids.SULFURIC_ACID, 250)); - registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime), sulfur); - registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime)); + registerRecipe("oreRareEarth", new CrystallizerRecipe(ModItems.crystal_rare, baseTime).prod(0.05F), sulfur); + registerRecipe("oreCinnabar", new CrystallizerRecipe(ModItems.crystal_cinnebar, baseTime).prod(0.05F)); - registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime)); - registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime), sulfur); - registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime)); - registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime)); + registerRecipe(new ComparableStack(ModBlocks.ore_nether_fire), new CrystallizerRecipe(ModItems.crystal_phosphorus, baseTime).prod(0.05F)); + registerRecipe(new ComparableStack(ModBlocks.ore_tikite), new CrystallizerRecipe(ModItems.crystal_trixite, baseTime).prod(0.05F), sulfur); + registerRecipe(new ComparableStack(ModBlocks.gravel_diamond), new CrystallizerRecipe(ModItems.crystal_diamond, baseTime).prod(0.05F)); + registerRecipe(SRN.ingot(), new CrystallizerRecipe(ModItems.crystal_schraranium, baseTime).prod(0.05F)); - registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime)); - registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime), new FluidStack(Fluids.OXYGEN, 250)); - registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime)); - registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime)); - registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime), sulfur); + registerRecipe(KEY_SAND, new CrystallizerRecipe(ModItems.ingot_fiberglass, utilityTime).prod(0.15F)); + registerRecipe(SI.ingot(), new CrystallizerRecipe(new ItemStack(Items.quartz, 2), utilityTime).prod(0.1F), new FluidStack(Fluids.OXYGEN, 250)); + registerRecipe(REDSTONE.block(), new CrystallizerRecipe(ModItems.ingot_mercury, baseTime).prod(0.25F)); + registerRecipe(CINNABAR.crystal(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_mercury, 3), baseTime).prod(0.25F)); + registerRecipe(BORAX.dust(), new CrystallizerRecipe(new ItemStack(ModItems.powder_boron_tiny, 3), baseTime).prod(0.25F), sulfur); registerRecipe(COAL.block(), new CrystallizerRecipe(ModBlocks.block_graphite, baseTime)); registerRecipe(new ComparableStack(Blocks.cobblestone), new CrystallizerRecipe(ModBlocks.reinforced_stone, utilityTime)); registerRecipe(new ComparableStack(ModBlocks.gravel_obsidian), new CrystallizerRecipe(ModBlocks.brick_obsidian, utilityTime)); - registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime)); + registerRecipe(new ComparableStack(Items.rotten_flesh), new CrystallizerRecipe(Items.leather, utilityTime).prod(0.25F)); registerRecipe(new ComparableStack(ModItems.coal_infernal), new CrystallizerRecipe(ModItems.solid_fuel, utilityTime)); - registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime)); + registerRecipe(new ComparableStack(ModBlocks.stone_gneiss), new CrystallizerRecipe(ModItems.powder_lithium, utilityTime).prod(0.25F)); registerRecipe(new ComparableStack(Items.dye, 1, 15), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 4), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 250)); registerRecipe(new ComparableStack(Items.bone), new CrystallizerRecipe(new ItemStack(Items.slime_ball, 16), mixingTime), new FluidStack(Fluids.SULFURIC_ACID, 1_000)); registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.plant_item, EnumPlantType.MUSTARDWILLOW)), new CrystallizerRecipe(new ItemStack(ModItems.powder_cadmium), 100).setReq(10), new FluidStack(Fluids.RADIOSOLVENT, 250)); - registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); + registerRecipe(new ComparableStack(ModItems.scrap_oil), new CrystallizerRecipe(new ItemStack(ModItems.nugget_arsenic), 100).prod(0.3F).setReq(16), new FluidStack(Fluids.RADIOSOLVENT, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.powder_ash, EnumAshType.FULLERENE)), new CrystallizerRecipe(new ItemStack(ModItems.ingot_cft), baseTime).prod(0.1F).setReq(4), new FluidStack(Fluids.XYLENE, 1_000)); registerRecipe(DIAMOND.dust(), new CrystallizerRecipe(Items.diamond, utilityTime)); registerRecipe(EMERALD.dust(), new CrystallizerRecipe(Items.emerald, utilityTime)); @@ -120,8 +119,8 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.powder_desh_ready), new CrystallizerRecipe(ModItems.ingot_desh, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_meteorite), new CrystallizerRecipe(ModItems.fragment_meteorite, utilityTime)); registerRecipe(CD.dust(), new CrystallizerRecipe(ModItems.ingot_rubber, utilityTime), new FluidStack(Fluids.FISHOIL, 250)); - registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime), new FluidStack(Fluids.SOURGAS, 25)); - registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime), new FluidStack(Fluids.NITROGLYCERIN, 250)); + registerRecipe(LATEX.ingot(), new CrystallizerRecipe(ModItems.ingot_rubber, mixingTime).prod(0.15F), new FluidStack(Fluids.SOURGAS, 25)); + registerRecipe(new ComparableStack(ModItems.powder_sawdust), new CrystallizerRecipe(ModItems.cordite, mixingTime).prod(0.25F), new FluidStack(Fluids.NITROGLYCERIN, 250)); registerRecipe(new ComparableStack(ModItems.meteorite_sword_treated), new CrystallizerRecipe(ModItems.meteorite_sword_etched, baseTime)); registerRecipe(new ComparableStack(ModItems.powder_impure_osmiridium), new CrystallizerRecipe(ModItems.crystal_osmiridium, baseTime), new FluidStack(Fluids.SCHRABIDIC, 1_000)); @@ -202,14 +201,14 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ItemBedrockOreNew.make(BedrockOreGrade.CRUMBS, type)), new CrystallizerRecipe(ItemBedrockOreNew.make(BedrockOreGrade.BASE, type), bedrock).setReq(64), new FluidStack(Fluids.NITRIC_ACID, 1000)); } - FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; + FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100), new FluidStack(Fluids.LIGHTOIL, 100)}; for(FluidStack dye : dyes) { - registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime), dye); - registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), mixingTime), dye); - registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), mixingTime), dye); - registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), mixingTime), dye); - registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), mixingTime), dye); - registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), mixingTime), dye); + registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), mixingTime).prod(0.15F), dye); + registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), mixingTime).prod(0.15F), dye); + registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), mixingTime).prod(0.15F), dye); + registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), mixingTime).prod(0.15F), dye); + registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), mixingTime).prod(0.15F), dye); + registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), mixingTime).prod(0.15F), dye); } registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 250)); @@ -327,6 +326,7 @@ public class CrystallizerRecipes extends SerializableRecipe { public int acidAmount; public int itemAmount = 1; public int duration; + public float productivity = 0F; public ItemStack output; public CrystallizerRecipe(Block output, int duration) { this(new ItemStack(output), duration); } @@ -342,6 +342,11 @@ public class CrystallizerRecipes extends SerializableRecipe { this.duration = duration; this.acidAmount = 500; } + + public CrystallizerRecipe prod(float productivity) { + this.productivity = productivity; + return this; + } } @Override @@ -371,6 +376,7 @@ public class CrystallizerRecipes extends SerializableRecipe { } else if(input instanceof OreDictStack) { recipes.put(new Pair(((OreDictStack) input).name, fluid.type), cRecipe); } + if(obj.has("productivity")) cRecipe.prod(obj.get("productivity").getAsFloat()); } @Override @@ -389,6 +395,7 @@ public class CrystallizerRecipes extends SerializableRecipe { this.writeAStack(input, writer); writer.name("output"); this.writeItemStack(cRecipe.output, writer); + writer.name("productivity").value(cRecipe.productivity); } @Override diff --git a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java index 1539d3eb0..3471a589a 100644 --- a/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java +++ b/src/main/java/com/hbm/tileentity/IUpgradeInfoProvider.java @@ -26,6 +26,7 @@ public interface IUpgradeInfoProvider { public static final String KEY_COOLANT_CONSUMPTION = "upgrade.coolantConsumption"; public static final String KEY_DELAY = "upgrade.delay"; public static final String KEY_EFFICIENCY = "upgrade.efficiency"; + public static final String KEY_PRODUCTIVITY = "upgrade.productivity"; public static final String KEY_FORTUNE = "upgrade.fortune"; public static final String KEY_RANGE = "upgrade.range"; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java index 23771df85..8b4cbe76c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCrystallizer.java @@ -185,7 +185,7 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme tank.setFill(tank.getFill() - getRequiredAcid(result.acidAmount)); - float freeChance = this.getFreeChance(); + float freeChance = this.getFreeChance(result); if(freeChance == 0 || freeChance < worldObj.rand.nextFloat()) this.decrStackSize(0, result.itemAmount); @@ -226,17 +226,13 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme } public int getRequiredAcid(int base) { - int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); - if(efficiency > 0) { - return base * (efficiency + 2); - } return base; } - public float getFreeChance() { + public float getFreeChance(CrystallizerRecipe recipe) { int efficiency = upgradeManager.getLevel(UpgradeType.EFFECT); if(efficiency > 0) { - return Math.min(efficiency * 0.05F, 0.15F); + return Math.min(efficiency * recipe.productivity, 0.99F); } return 0; } @@ -253,7 +249,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme public int getPowerRequired() { int speed = upgradeManager.getLevel(UpgradeType.SPEED); - return (int) (demand + Math.min(speed * 1000, 3000)); + int effect = upgradeManager.getLevel(UpgradeType.EFFECT); + return (int) (demand + speed * demand + effect * demand * 2); } public float getCycleCount() { @@ -379,8 +376,8 @@ public class TileEntityMachineCrystallizer extends TileEntityMachineBase impleme info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 100) + "%")); } if(type == UpgradeType.EFFECT) { - info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "+" + (level * 5) + "%")); - info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_ACID, "+" + (level * 100 + 100) + "%")); + info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_EFFICIENCY, "x" + level)); + info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "+" + (level * 200) + "%")); } if(type == UpgradeType.OVERDRIVE) { info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 3af792e33..62ddc6373 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -5110,6 +5110,7 @@ turret.on=AN turret.players=Spieler anzielen: %s upgrade.consumption=Verbrauch %s +upgrade.productivity=ProduktivitÀt %s upgrade.speed=Verarbeitungszeit %s wavelengths.name.ir=Infrarot diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 47a40c427..b0920c16b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -6276,6 +6276,7 @@ upgrade.delay=Process time %s upgrade.efficiency=Efficiency %s upgrade.fortune=Fortune %s upgrade.overheatChance=Overheat chance %s +upgrade.productivity=Productivity %s upgrade.range=Range %s upgrade.gui.title=§lAcceptable Upgrades:§r From b1d55408877674442af4ad4c49088148f6d264cc Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 14 Feb 2025 15:08:45 +0100 Subject: [PATCH 22/64] my quest for beans has taken me to many places --- .../sedna/factory/GunFactoryClient.java | 2 +- .../weapon/sedna/factory/LegoClient.java | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 81daf1584..799033e65 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -193,7 +193,7 @@ public class GunFactoryClient { folly_sm.setRendererBeam(LegoClient.RENDER_FOLLY); folly_nuke.setRenderer(LegoClient.RENDER_BIG_NUKE); - p35800.setRendererBeam(LegoClient.RENDER_LASER_WHITE); + p35800.setRendererBeam(LegoClient.RENDER_CRACKLE); setRendererBulk(LegoClient.RENDER_GRENADE, shell_normal, shell_explosive, shell_ap, shell_du, shell_w9); //TODO: change the sabots diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java index d59fc4960..bd3500d01 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/LegoClient.java @@ -318,6 +318,25 @@ public class LegoClient { GL11.glPopMatrix(); RenderArcFurnace.fullbright(false); }; + + public static BiConsumer RENDER_CRACKLE = (bullet, interp) -> { + + RenderArcFurnace.fullbright(true); + double age = MathHelper.clamp_double(1D - ((double) bullet.ticksExisted - 2 + interp) / (double) bullet.getBulletConfig().expires, 0, 1); + + GL11.glPushMatrix(); + GL11.glRotatef(180 - bullet.rotationYaw, 0, 1F, 0); + GL11.glRotatef(-bullet.rotationPitch - 90, 1F, 0, 0); + + double scale = 5D; + GL11.glScaled(age * scale, 1, age * scale); + GL11.glTranslated(0, bullet.beamLength, 0); + GL11.glRotatef(-90, 0, 0, 1); + renderBulletStandard(Tessellator.instance, 0xE3D692, 0xffffff, bullet.beamLength, true); + + GL11.glPopMatrix(); + RenderArcFurnace.fullbright(false); + }; public static BiConsumer RENDER_LASER_RED = (bullet, interp) -> { renderStandardLaser(bullet, interp, 0x80, 0x15, 0x15); From beae7b31fe1b575bdbf30ee7cdc9b76bc35cf450 Mon Sep 17 00:00:00 2001 From: IOcmet <63492966+iocmet@users.noreply.github.com> Date: Sat, 15 Feb 2025 07:56:48 +0200 Subject: [PATCH 23/64] Update ru_RU locale, rearrange it to en_US order and remove unused keys --- src/main/resources/assets/hbm/lang/ru_RU.lang | 11783 ++++++++-------- 1 file changed, 5664 insertions(+), 6119 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 93e77b657..0d47ac885 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1,63 +1,15 @@ -itemGroup.tabTest=ТестПвая вклаЎка NTM -itemGroup.tabParts=Ресурсы О ЎеталО NTM -itemGroup.tabControl=ТПплОвП О элеЌеМты ЌехаМОзЌПв NTM -itemGroup.tabTemplate=КаблПМы NTM -itemGroup.tabBlocks=РуЎы О блПкО NTM -itemGroup.tabMachine=МехаМОзЌы NTM -itemGroup.tabNuke=БПЌбы NTM -itemGroup.tabMissile=Ракеты О спутМОкО NTM -itemGroup.tabWeapon=ОружОе О турелО NTM -itemGroup.tabConsumable=РасхПЎМые ЌатерОалы О сМаряжеМОе NTM -soundCategory.ntmMachines=МехаМОзЌы NTM - achievement.acidizer.desc=уфф ай ЌПя кПжа achievement.acidizer=КОслюка achievement.assembly.desc=ППЎПжЎО-ка, уже час утра? achievement.assembly=ЗавПЎ расшОряется -achievement.sacrifice=Жертва -achievement.sacrifice.desc=Встреться лОцПЌ к лОцу с ПгМёЌ О выжОвО. -achievement.impossible=БуквальМП МевПзЌПжМП -achievement.impossible.desc=Ты Ме ЌПжешь пПлучОть этП ЎПстОжеМОе. -achievement.tasteofblood=Вкус крПвО -achievement.tasteofblood.desc=ЭтП Ме былП частью прПтПкПла тестОрПваМОя. -achievement.freytag=Ѐрейтаг -achievement.freytag.desc=СтражО жОзМО ГерПльЎа. -achievement.selenium=XVIII ЛуМа. -achievement.selenium.desc=О,Ўа! -achievement.potato=ВПсстаМОе ЌашОМ -achievement.potato.desc=МПжешь убОть Ўля ЌеМя эту птОцу? -achievement.c44=Глава 44 -achievement.c44.desc=ГальваМОзОрПваМ! ТОпа, цОМк! -achievement.c20_5=Глава [ДВАДЊАТЬ_С_ПОЛОВИНОЙ] -achievement.c20_5.desc=??? -achievement.space=ППслеЎМОй Рубеж... ХПтя лаЎМП, забей. -achievement.space.desc=ПрПвалОсь как тПлькП ЌПжМП О пПтрать 90 ЌОллОПМПв ЎПлларПв впустую. -achievement.FOEQ=БуМкеры с пегасаЌО О ракетаЌО achievement.FOEQ.desc=Отправь переЎатчОк Ма ПрбОту Марса... в сЌысле ДюМы. -achievement.fiend=НарушОтель -achievement.fiend.desc=БуЎь жестПкОЌ. -achievement.fiend2=НарушОтель-2: переМарушеМОе. -achievement.fiend2.desc=БуЎь жёстче. -achievement.soyuz=ПечёМая КартПшка -achievement.soyuz.desc=СтаМьте хрустящОЌ. -achievement.radPoison=Ура, РаЎОацОя! -achievement.radPoison.desc=Испытайте пПслеЎствОя раЎОацОПММПгП ПтравлеМОя. -achievement.radDeath=Ой, РаЎОацОя! -achievement.radDeath.desc=МарОя КюрО ОзПбрела теПрОю раЎОПактОвМПстО, лечеМОе раЎОПактОвМПстО О уЌОраМОе Пт раЎОПактОвМПстО. -achievement.hidden=Скрытый КаталПг -achievement.hidden.desc=Убейте заражеММПгП крОпера паЎающОЌ тПварМыЌ вагПМПЌ -achievement.horizonsStart=АпПгей -achievement.horizonsStart.desc=Отправьте ГеральЎа Ма луМу. -achievement.horizonsEnd=ГПрОзПМты -achievement.horizonsEnd.desc=Отправьте ТПЌа ЎПЌПй. -achievement.horizonsBonus=СлэЌ-ЎаМк ЎОарея -achievement.horizonsBonus.desc=ЧестМПе слПвП, чтП, черт вПзьЌО, с тПбПй Ме так -achievement.stratum.desc=ЖЌО Ма тПрЌПза, МОттс. -achievement.stratum=Пласт -achievement.meltdown.desc=Ты зашел так ЎалекП, как ты ЌПг все ОспПртОть? -achievement.meltdown=Быстрая вМеплаМПвая разбПрка -achievement.omega12.desc=РешОте прПблеЌу прПЎПлжеМОя жОзМО Ма этПй МесчастМПй плаМете. -achievement.omega12=УскПрОтель частОц ОЌега-12 +achievement.FOEQ=БуМкеры с пегасаЌО О ракетаЌО +achievement.breeding.desc=БлагПЎарю вас, Ўа благПслПвОт вас БПг, О Ўа благПслПвОт бПг СПеЎОМеММые Ктаты АЌерОкО. +achievement.breeding=ИрПМОчМП +achievement.bismuth.desc=ППЌМОте, как люЎО спПрОлО Пб этПЌ Ќесяц? Я пПЌМю. +achievement.bismuth=ВОсЌут +achievement.blastFurnace.desc=ОМО разПбралО затПМувшОй ЎреЎМПут Ўля "ЭксплПрера-1". +achievement.blastFurnace=ЖелезП О угПль achievement.bossCreeper.desc='ВПт этП яЎерМые крОперы? Эта штукПвОМа?!' achievement.bossCreeper=БПЌба Ма четырёх МПгах achievement.bossMaskman.desc=Врезать бПльшПЌу ЌальчОку. @@ -66,44 +18,14 @@ achievement.bossMeltdown.desc=СкПрее ужасМП, чеЌ ПтлОчМП, achievement.bossMeltdown=3.6 реМтгеМ achievement.bossWorm.desc=Ѐабстафф. МПя заЎМОца. А ты счОтай. achievement.bossWorm=РазбПрка Баллс-О-ТрПМ -achievement.digammaFeel.desc=пустПта вМутрО. -achievement.digammaFeel=Страх чувства -achievement.digammaKnow.desc=чтП такПе этПт ЌОр. -achievement.digammaKnow=Страх пПзМаМОя -achievement.digammaSee.desc=в безЎМу. -achievement.digammaSee=Страх вОЎеМОя -achievement.digammaKauaiMoho.desc=Все ужасМП, вПт тебе гПрячОй шПкПлаЎ. -achievement.digammaKauaiMoho=ППй, пПй ЌМе песМю КауаО МПхП. -achievement.digammaUpOnTop.desc=ДреЎМПут, ПблОцПваММый железПЌ. -achievement.digammaUpOnTop=На вершОМе achievement.bossUFO.desc=Эй, чтП у Мас тут? ОгрПЌМый кПсЌОческОй кПрабль, прОблОжающОйся к блПк-кПраблю? achievement.bossUFO=Ayy Lmao -achievement.radium.desc=ТЫ УВОЛЕН ЗА ТО, ЧТО ПОДСЫПАЛ РАДИЙ В МОЙ КОЀЕ! -achievement.radium=МИСТЕР НЕВЕРОЯТНЫЙ -achievement.someWounds.desc=ПрОгПтПвься -achievement.someWounds=НекПтПрые раМы МОкПгЎа Ме зажОвают -achievement.psycheAbyss.desc=§c"НужМП сМачала упасть, прежЎе чеЌ пПЎМяться!"§r -achievement.psycheAbyss=§cБезЎМа§r -achievement.psycheEgo.desc="Требуется храбрПсть, Ме слеЎует бПяться саЌых глубПкОх пуль. ЀПсфПра, МапалЌа, бПяться МечегП..." -achievement.psycheEgo=ЭгП -achievement.psycheHeartOfDarkness.desc="Я увОЎел МепПстОжОЌую тайМу ЎушО, кПтПрая Ме зМала МО сЎержаММПстО, МО веры, МО страха, МП все же слепП бПрПлась с сПбПй" -achievement.psycheHeartOfDarkness=СерЎце тьЌы -achievement.psycheId.desc="...О сказать: 'Да, я прОМОЌаю тебя, я Ўаже люблю тебя, пПтПЌу чтП ты - часть ЌеМя, ты - прПЎПлжеМОе ЌеМя'" -achievement.psycheId=ИЎеМтОфОкатПр -achievement.psycheShadow.desc="КуЎа ЎелОсь серЎца всех?" -achievement.psycheShadow=ТеМь -achievement.psycheSuperego.desc="...НП загляМуть вМутрь, чтПбы увОЎеть тПт ОзвращеММый разуЌ, кПтПрый лежОт пПЎ пПверхМПстью всех люЎей..." -achievement.psycheSuperego=СуперэгП -achievement.warpDrive.desc="ММе МравОтся Ќечтать, Ўа" -achievement.warpDrive=ППлёт Ма кПвре-саЌПлёте -achievement.breeding.desc=БлагПЎарю вас, Ўа благПслПвОт вас БПг, О Ўа благПслПвОт бПг СПеЎОМеММые Ктаты АЌерОкО. -achievement.breeding=ИрПМОчМП -achievement.bismuth.desc=ППЌМОте, как люЎО спПрОлО Пб этПЌ Ќесяц? Я пПЌМю. -achievement.bismuth=ВОсЌут -achievement.blastFurnace.desc=ОМО разПбралО затПМувшОй ЎреЎМПут Ўля "ЭксплПрера-1". -achievement.blastFurnace=ЖелезП О угПль achievement.burnerPress.desc=ДавлеМОе ЎавОт О Ма ЌеМя, О Ма тебя achievement.burnerPress=ППЎ ЎавлеМОеЌ +achievement.c20_5.desc=??? +achievement.c20_5=Глава [ДВАДЊАТЬ_С_ПОЛОВИНОЙ] +achievement.c44.desc=ГальваМОзОрПваМ! ТОпа, цОМк! +achievement.c44=Глава 44 achievement.centrifuge.desc=цеМтрПбежМая сОла этП фейк Ме @ ЌеМя achievement.centrifuge=ЊеМтрПстреЌОтельМая сОла achievement.chemplant.desc=Теперь ты ЎуЌаешь хОЌОкатаЌО! @@ -114,206 +36,100 @@ achievement.concrete.desc=ЛюбОЌчОк бПльшевОкПв. achievement.concrete=Старый ЎПбрый achievement.desh.desc="ТПгЎа Ўавайте, вы все. Места, куЎа ЌПжМП пПйтО!" achievement.desh=Леверье +achievement.digammaFeel.desc=пустПта вМутрО. +achievement.digammaFeel=Страх чувства +achievement.digammaKauaiMoho.desc=Все ужасМП, вПт тебе гПрячОй шПкПлаЎ. +achievement.digammaKauaiMoho=ППй, пПй ЌМе песМю КауаО МПхП. +achievement.digammaKnow.desc=чтП такПе этПт ЌОр. +achievement.digammaKnow=Страх пПзМаМОя +achievement.digammaSee.desc=в безЎМу. +achievement.digammaSee=Страх вОЎеМОя +achievement.digammaUpOnTop.desc=ДреЎМПут, ПблОцПваММый железПЌ. +achievement.digammaUpOnTop=На вершОМе +achievement.fiend.desc=БуЎь жестПкОЌ. +achievement.fiend2.desc=БуЎь жёстче. +achievement.fiend2=НарушОтель-2: переМарушеМОе. +achievement.fiend=НарушОтель +achievement.freytag.desc=СтражО жОзМО ГерПльЎа. +achievement.freytag=Ѐрейтаг achievement.fusion.desc=ТаМец ЎейтрПМПв, трОтПМПв О эМергОО. achievement.fusion=СОМтез achievement.gasCent.desc=НеПбПгащеММый ураМ МеМавОЎОт егП! achievement.gasCent=СтОль МПлМОО +achievement.goFish.desc=МПрскПе распятОе +achievement.goFish=ИЎО пПрыбачь +achievement.hidden.desc=Убейте заражеММПгП крОпера паЎающОЌ тПварМыЌ вагПМПЌ +achievement.hidden=Скрытый КаталПг +achievement.horizonsBonus.desc=ЧестМПе слПвП, чтП, черт вПзьЌО, с тПбПй Ме так +achievement.horizonsBonus=СлэЌ-ЎаМк ЎОарея +achievement.horizonsEnd.desc=Отправьте ТПЌа ЎПЌПй. +achievement.horizonsEnd=ГПрОзПМты +achievement.horizonsStart.desc=Отправьте ГеральЎа Ма луМу. +achievement.horizonsStart=АпПгей +achievement.impossible.desc=Ты Ме ЌПжешь пПлучОть этП ЎПстОжеМОе. +achievement.impossible=БуквальМП МевПзЌПжМП +achievement.inferno.desc="ПревратОте егП в пепел! ЭтПгП МеЎПстатПчМП! СбрПсьте еще бПЌбы!" +achievement.inferno=ОперацОя "КаММОбал" achievement.manhattan.desc=8:15; 6 августа, 1945 гПЎ achievement.manhattan=ПрПект МаМхэттеМ +achievement.meltdown.desc=Ты зашел так ЎалекП, как ты ЌПг все ОспПртОть? +achievement.meltdown=Быстрая вМеплаМПвая разбПрка +achievement.no9.desc="Я МаЎеюсь, чтП свОМец, кПтПрый я ЎПбываю, буЎет ОспПльзПваМ в вашей краске" +achievement.no9=Старый МПЌер Девять +achievement.omega12.desc=РешОте прПблеЌу прПЎПлжеМОя жОзМО Ма этПй МесчастМПй плаМете. +achievement.omega12=УскПрОтель частОц ОЌега-12 achievement.polymer.desc=ВПсхОтОтельМый, вПсхОтОтельМый ЌОкрПпластОк. achievement.polymer=ТефлПМ +achievement.potato.desc=МПжешь убОть Ўля ЌеМя эту птОцу? +achievement.potato=ВПсстаМОе ЌашОМ +achievement.radDeath.desc=МарОя КюрО ОзПбрела теПрОю раЎОПактОвМПстО, лечеМОе раЎОПактОвМПстО О уЌОраМОе Пт раЎОПактОвМПстО. +achievement.radDeath=Ой, РаЎОацОя! +achievement.radium.desc=ТЫ УВОЛЕН ЗА ТО, ЧТО ПОДСЫПАЛ РАДИЙ В МОЙ КОЀЕ! +achievement.radium=МИСТЕР НЕВЕРОЯТНЫЙ +achievement.radPoison.desc=Испытайте пПслеЎствОя раЎОацОПММПгП ПтравлеМОя. +achievement.radPoison=Ура, РаЎОацОя! achievement.RBMKBoom.desc=КакПва цеМа лжО? achievement.RBMKBoom=15,000. achievement.RBMK.desc=ОМ бреЎОт, ПтвеЎОте егП в лазарет. achievement.RBMK=3.6 РеМтгеМ? achievement.redBalloons.desc="ЭтП тП, чегП Ќы жЎалО. ВПт ПМа, ребята, вПйМа." achievement.redBalloons=99 вПзЎушМых шарОкПв +achievement.redRoom.desc=? +achievement.redRoom=Другая стПрПМа +achievement.sacrifice.desc=Встреться лОцПЌ к лОцу с ПгМёЌ О выжОвО. +achievement.sacrifice=Жертва achievement.schrab.desc=Как бы тП МО былП, я бы Ме стал сЌПтреть Ма этП слОшкПЌ ЎПлгП. achievement.schrab=ОстрПв стабОльМПстО +achievement.selenium.desc=О,Ўа! +achievement.selenium=XVIII ЛуМа. achievement.SILEX.desc=ЭтП круче, чеЌ кажется, я Пбещаю. achievement.SILEX=ЛазерМПе разЎелеМОе ОзПтПпПв +achievement.slimeball.desc= +achievement.slimeball=я ЎПлжеМ ПкуМуть свПО яйца в серМую кОслПту. +achievement.stratum.desc=ЖЌО Ма тПрЌПза, МОттс. +achievement.stratum=Пласт +achievement.someWounds.desc=ПрОгПтПвься +achievement.someWounds=НекПтПрые раМы МОкПгЎа Ме зажОвают +achievement.soyuz.desc=СтаМьте хрустящОЌ. +achievement.soyuz=ПечёМая КартПшка +achievement.space.desc=ПрПвалОсь как тПлькП ЌПжМП О пПтрать 90 ЌОллОПМПв ЎПлларПв впустую. +achievement.space=ППслеЎМОй Рубеж... ХПтя лаЎМП, забей. +achievement.sulfuric.desc= +achievement.sulfuric=я Ме ЎПлжеМ был ПкуМать свПО яйца в серМую кОслПту. achievement.tantalum.desc=НеулПвОЌый, МП всегЎа МеПбхПЎОЌый элеЌеМт. achievement.tantalum="ТаМтал" +achievement.tasteofblood.desc=ЭтП Ме былП частью прПтПкПла тестОрПваМОя. +achievement.tasteofblood=Вкус крПвО achievement.technetium.desc=ЭтП целебМП, этП целебМП! achievement.technetium=БПльшПй ЧелПвек, ЧелПвек-СвОМья achievement.watzBoom.desc=В слеЎующОй раз ПсушОте свПй септОк. achievement.watzBoom=ОтвратОтельМП achievement.watz.desc=ППля ЀПлкваМгра также прОсутствуют achievement.watz=СОла Е-126 -achievement.ZIRNOXBoom.desc=cope, seethe, mald -achievement.ZIRNOXBoom=ЊИРНОКС -achievement.slimeball.desc= -achievement.slimeball=я ЎПлжеМ ПкуМуть свПО яйца в серМую кОслПту. -achievement.sulfuric.desc= -achievement.sulfuric=я Ме ЎПлжеМ был ПкуМать свПО яйца в серМую кОслПту. achievement.witchtaunter.desc=ЭтО тварО МОчегП тебе Ме сЎелают! achievement.witchtaunter=НасЌехайтесь МаЎ веЎьЌаЌО -achievement.inferno.desc="ПревратОте егП в пепел! ЭтПгП МеЎПстатПчМП! СбрПсьте еще бПЌбы!" -achievement.inferno=ОперацОя "КаММОбал" -achievement.no9.desc="Я МаЎеюсь, чтП свОМец, кПтПрый я ЎПбываю, буЎет ОспПльзПваМ в вашей краске" -achievement.no9=Старый МПЌер Девять -achievement.goFish.desc=МПрскПе распятОе -achievement.goFish=ИЎО пПрыбачь -achievement.redRoom.desc=? -achievement.redRoom=Другая стПрПМа - -cannery.f1=[ НажЌОте f1 Ўля справкО ] - -cannery.centrifuge=ГазПвая цетрОфуга -cannery.centrifuge.0=В газПвые цеМтрОфугО ЌПжМП пПЎать жОЎкПсть ПбычМыЌО жОЎкПстМыЌО трубаЌО. -cannery.centrifuge.1=БПльшОМствП рецептПв требуют МескПлькП цеМтрОфуг. ПрПЌежутПчМые прПЎукты Мельзя переЎать пП трубаЌ. -cannery.centrifuge.2=Из этПй стПрПМы прПЌежутПчМый прПЎукт ОЎёт в слеЎующую цеМтрОфугу. -cannery.centrifuge.3=ГексафтПрОЎ ураМа ЌПжМП Пбрабатывать ЎвуЌя цеМтрОфугаЌО, МП вы пПлучОте тПлькП U-238 О ураМПвПе тПплОвП. -cannery.centrifuge.4=Для егП разЎелеМОя Ма ураМ-235 О ураМ-238 ваЌ пПМаЎПбОтся 4 цеМтрОфугО. -cannery.centrifuge.5=НекПтПрые рецепты требуют улучшеМОе "РазгПМ газПвПй цеМтрОфугО". - -cannery.fensu=ЭМЭХ -cannery.fensu.0=ЭМЭХ ЌПжет храМОть абсурЎМые кПлОчества эМергОО – 9 экза-HE(9 с 18 МуляЌО). -cannery.fensu.1=ЕЎОМствеММПе ЌестП Ўля пПЎключеМОя к сетО МахПЎОтся сМОзу. -cannery.fensu.2=ОттуЎа же ЭМЭХ прОМОЌает реЎстПуМ-сОгМал. - -cannery.firebox=ТПпка -cannery.firebox.0=ТПпка сжОгает тПплОвП Ўля печО, сПзЎавая теплП. -cannery.firebox.1=ОМа ЌПжет сжечь любПе тПплОвП Ўля печО, МП тПплОвП бПлее высПкПгП качества, врПЎе угля, кПкса ОлО твёрЎПгП тПплОва, буЎет гПреть ЎПльше О лучше. -cannery.firebox.2=ТеплП переЎаётся через кПМтакт сверху. МашОМы с такОЌ же кПМтактПЌ сМОзу буЎут прОМОЌать этП теплП, еслО пПставОть Ох Ма тПпку. -cannery.firebox.3=ЕслО теплП Ме ОспПльзуется, а буфер тепла пПлПМ, тПпка ПтключОтся, чтПбы Ме тратОть тПплОвП. -cannery.firebox.4=ОЎМа ЌашОМа, прОМОЌающая теплП–ЎвОгатель СтерлОМга, превращающОй егП в электрОчествП. - -cannery.silex=Лазер Ма свПбПЎМых электрПМах О каЌера лазерМПгП разЎелеМОя ОзПтПпПв -cannery.silex.0=Лазер Ма свПбПЎМых электрПМах (FEL) сПзЎаёт ЌПщМый лазерМый луч с пПЌПщью лазерМПгП крОсталла О эМергОО. -cannery.silex.1=БуЎьте ПстПрПжМы! Лазер прПжОгает слабые блПкО МасквПзь... -cannery.silex.2=...ПЎМакП, взрывПустПйчОвые блПкО этПЌу Ме пПЎвержеМы. -cannery.silex.3=FEL преЎМазМачеМ Ўля пОтаМОя каЌеры лазерМПгП разЎелеМОя ОзПтПпПв (SILEX). FEL О SILEX ЎПлжМы быть Ма расстПяМОО хПтя бы 2 блПкПв. -cannery.silex.4=Лазер ЎПлжеМ прПхПЎОть через стекляММые прПёЌы Ма SILEX. ПрО МеправОльМПЌ выбПре МаправлеМОя ПМ прПстП слПЌается. -cannery.silex.5=Через разъёЌы пП бПкаЌ в SILEX ЌПжМП пПЎавать жОЎкПстО. -cannery.silex.6=Ещё ПЎОМ скрытый разъёЌ МахПЎОтся сМОзу; Оз МегП ЌПжМП выМОЌать преЎЌеты. -cannery.silex.7=КажЎый рецепт требует ПпреЎелёММПгП крОсталла. ЕслО крОсталл лучше МужМПгП, прПцесс ускПрОтся. -cannery.silex.8=ОЎМа FEL ЌПжет пОтать ЎП 5 SILEX. SILEX МужМП ставОть ЌОМОЌуЌ в ПЎМПЌ блПке Ўруг Пт Ўруга. - -cannery.stirling=ДвОгатель СтерлОМга -cannery.stirling.0=ДвОгатель СтерлОМга сПзЎаёт эМергОю с пПЌПщью вМешМОх ОстПчМОкПв тепла. -cannery.stirling.1=ОМ ставОтся Ма ЌашОМы, сПзЎающОе теплП – МапрОЌер, тПпку. -cannery.stirling.2=ОЎМакП, кПлОчествП тепла, кПтПрПе ПМ ЌПжет прОМять, ПграМОчеМП. ЕслО тепла буЎет слОшкПЌ ЌМПгП, ЎвОгатель слПЌается. -cannery.stirling.3=УлучшеММый варОаМт ЌПжет выЎержать МаЌМПгП бПльше тепла. - -cannery.crucible=Crucible -cannery.crucible.0=The crucible is used to smelt ores, ingots or other metallic items for alloying and to cast them into different shapes. -cannery.crucible.1=It requires an external heat source connected to the bottom, like a firebox. -cannery.crucible.2=Once heated up, the crucible can be used in two ways, with or without a recipe template. -cannery.crucible.3=The crucible has two storage buffers for material: -cannery.crucible.4=The buffer to the left is for §abyproducts§r, all material smelted without a recipe template will land here. -cannery.crucible.5=If a recipe is installed, materials that do not match the recipe will also be stored here. -cannery.crucible.6=Materials in this buffer will not react with each other, they can only be output from the green outlet for casting. -cannery.crucible.7=The buffer to the right is for §crecipes§r, if a recipe is installed and that particular material is relevant to that recipe, it will land here. -cannery.crucible.8=The materials will slowly combine into the output material which is automatically output from the red outlet. -cannery.crucible.9=Note that only this buffer handles recipes. If a template is installed retroactively, materials in the byproduct buffer will not combine, nor transfer to the recipe buffer. -cannery.crucible.10=The outlet will output material automatically, if the target is valid, for example a foundry channel or a mold. -cannery.crucible.11=As with all foundry blocks, a shovel can be used to remove all material from the crucible. - -cannery.foundryChannel=Foundry Channel -cannery.foundryChannel.0=Foundry channels are used to transport molten material from a crucible or storage tank into molds. -cannery.foundryChannel.1=Channels can receive material either by pouring from the top - via an outlet or directly form a crucible - or from the side from other channels. -cannery.foundryChannel.2=When transporting materials, channels will prioritize blocks like outlets and shallow molds. -cannery.foundryChannel.3=When it cannot supply an outlet or a mold, the material will then flow into a neighboring channel. -cannery.foundryChannel.4=Leftover material can be removed by using a shovel. - -cannery.willow=ГПрчОчМая Ова -cannery.willow.0=ГПрчОчМая Ова - этП растеМОе, кПтПрПе пПзвПляет сПбОрать ЌеталлОческОй каЎЌОй. -cannery.willow.1=Ивы ЌПжМП сажать Ма зеЌлю, траву ОлО Ўаже Ќертвую/МефтяММую зеЌлю, МП Ўля рПста ОЌ требуется вПЎа. -cannery.willow.2=Ивы ЌПжМП уЎПбрять кПстМПй ЌукПй ОлО прПЌышлеММыЌ уЎПбреМОеЌ. ИЌ Ме МужеМ свет, чтПбы растО. -cannery.willow.3=ППсле втПрПгП этапа рПста ОЌ пПМаЎПбОтся ЎПпПлМОтельМый блПк прПстраМства МаЎ МОЌО, чтПбы растО Ўальше. -cannery.willow.4=ППсле четвертПй стаЎОО рПста ОЌ требуется Ќертвая ОлО МефтяММая зеЌля пПЎ МОЌО. -cannery.willow.5=ЭтП ЌПжМП сЎелать лОбП вручМую пПсаЎОв Овы Ма Ќертвую/МефтяММую зеЌлю, лОбП устаМПвОв пПблОзПстО башМю гОЎрПразрыва, кПтПрая пПстПяММП загрязМяет пПчву. -cannery.willow.6=ППсле ЎПстОжеМОя заключОтельМПй стаЎОО Ова уЎалОт загрязМеМОя с зеЌлО, превращая Ќертвую/МефтяММую зеЌлю ПбратМП в ПбычМую. -cannery.willow.7=Теперь лОстья Овы ЌПжМП сПбОрать. СлПЌав верхМОй блПк, вы урПМОте МебПльшПе ОвПвПе растеМОе с 3-6 лОстьяЌО О сПхраМОте МОжМюю часть растеМОя МепПврежЎеММПй. -cannery.willow.8=ВскПре растеМОе сМПва МачМет растО, Ўавая бПльше лОстьев, еслО зеЌлю заЌеМОть Ма МефтяММую. ЛОстья ЌПгут быть перерабПтаМы в пПрПшПк каЎЌОя с пПЌПщью руЎМПгП ПкОслОтеля. -cannery.willow.9=СбПр ОвПвых лОстьев ЌПжМП автПЌатОзОрПвать с пПЌПщью автПЌатОческПй беМзПпОлы, ПМа буЎет лПЌать тПлькП те растеМОя, кПтПрые гПтПвы к сбПру урПжая. - -cannery.hadron=УскПрОтель частОц -cannery.hadron.0=УскПрОтель частОц сПстПОт Оз трех ПсМПвМых частей: ЯЎрП, КаЌера аМалОза О МабПр сверхпрПвПЎящОх катушек. -cannery.hadron.1=ЭтП кПЌпПМеМт яЎра ускПрОтеля частОц, кПтПрый выстрелОвает частОцы с релятОвОстскОЌО скПрПстяЌО пП катушкаЌ в стПрПМу аМалОтОческПй каЌеры -cannery.hadron.2=ЧастОцы выбрасываются ПтсюЎа -cannery.hadron.3=И в кругПвых ускПрОтелях вПзвращаются сюЎа -cannery.hadron.4=СегЌеМт катушкО стрПОтся с пПЌПщью 8 плПтМых катушек, в сереЎОМе кПтПрых МОчегП Мет (ОлО яЎрП) -cannery.hadron.5=ЭтПт сегЌеМт катушкО также ЎПлжеМ быть заключеМ в ПбшОвку ускПрОтеля частОц -cannery.hadron.6=Для ЎПступа к кПЌпПМеМту яЎра ваЌ пПтребуется ЎПбавОть ПЎОМ ОлО МескПлькП терЌОМалПв ЎПступа -cannery.hadron.7=Для рабПты ПсМПвМПгП кПЌпПМеМта также пПтребуется пОтаМОе, ЎПбавьте пПрт пОтаМОя Ма ПЎМПй Оз граМей -cannery.hadron.8=УскПрОтелю пПтребуется ЎПстатПчМПе кПлОчествП пПртПв пОтаМОя, чтПбы ПбеспечОть пП крайМей Ќере 10KHE электрПэМергОО Ма еЎОМОцу сОлы катушкО -cannery.hadron.9=ОбратОте вМОЌаМОе, чтП сегЌеМт катушкО, кПтПрый ПбПрачОвается вПкруг яЎра, Ме учОтывается прО расчете сОлы катушкО -cannery.hadron.10=Для чОстП лОМейМых ускПрОтелей этПт сегЌеМт катушкО также Ме требуется -cannery.hadron.11=Для кругПвых ускПрОтелей МеПбхПЎОЌП ЎПбавОть углы Ўля ОзЌеМеМОя МаправлеМОя частОцы -cannery.hadron.12=ВМешМОе углПвые катушкО ЌПжМП сПвсеЌ Ме ЎПбавлять -cannery.hadron.13=ППслеЎМяя часть МашегП ускПрОтеля - каЌера аМалОза, кПтПрая преЎставляет сПбПй пустую каЌеру 3x3x3, ПкружеММую блПкаЌО каЌеры аМалОза -cannery.hadron.14=Ваш гПтПвый ускПрОтель частОц ЎПлжеМ выгляЎеть прОЌерМП так! - -cannery.hadron.math.0=СОла МеПЎОЌПвПй катушкО: 50 -cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE -cannery.hadron.math.2=СОла звёзЎМПЌеталлОческПй катушкО: 1,000 -cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE - -cannery.schottky=ДОПЎ с частОцаЌО КПтткО -cannery.schottky.0=ЭтП ЎОПЎ КПтткО Ўля частОц. ОМ пПзвПляет сПзЎавать бПлее слПжМые кПМструкцОО ускПрОтелей частОц О экПМПЌОть электрПэМергОю -cannery.schottky.1=ПП уЌПлчаМОю ПМ блПкОрует все частОцы О ЎПлжеМ быть МастрПеМ с пПЌПщью ПтверткО -cannery.schottky.2=Эта стПрПМа теперь буЎет прОМОЌать вхПЎящОе частОцы -cannery.schottky.3=А эта буЎет выбрасывать вхПЎящОе частОцы -cannery.schottky.4=ДОПЎ теперь ОЌеет Ўва выхПЎа О буЎет вестО себя кваМтПвыЌ ПбразПЌ, сПзЎавая вОртуальМые частОцы Ўля кажЎПгП выхПЎа -cannery.schottky.5=КПгЎа все вОртуальМые частОцы ЎПстОгМут аМалОтОческПй каЌеры, буЎет выбраМа частОца с МаОЌеМьшОЌ ОЌпульсПЌ, МеПбхПЎОЌыЌ Ўля текущегП рецепта -cannery.schottky.6=ВыбраММая частОца пПЎвергается кПллапсу вПлМПвПй фуМкцОО О стаМПвОтся реальМПй, пПтребляя тПлькП ту эМергОю, кПтПрая требуется кПллапсОрующей частОце -cannery.schottky.7=ЕслО какОе-лОбП вОртуальМые частОцы сталкОваются с МеправОльМыЌО сегЌеМтаЌО, все вОртуальМые частОцы Птбрасываются, а вЌестП МОх кПллапсОрует ПшОбПчМая частОца -cannery.schottky.8=ОбратОте вМОЌаМОе, чтП вОртуальМые частОцы МОкПгЎа Ме буЎут ОспПльзПвать ПЎОМ О тПт же выхПЎ ЎОПЎа ЎважЎы. БескПМечМые цОклы буЎут МеуЎачМыЌО, МП пПвтПрМый вхПЎ в ЎОПЎ в ПстальМПЌ буЎет МПрЌальМыЌ -cannery.schottky.9=Ваш ЎОПЎ КПтткО Ўля частОц ЎПлжеМ быть правОльМП заключеМ, сП свПбПЎМыЌО путяЌО Ўля кажЎПгП выхПЎа пересечеМОя - -potion.hbm_taint=ППрча -potion.hbm_mutation=ЗаражёММПе пПрчей серЎце -potion.hbm_radiation=ИзлучеМОе -potion.hbm_bang=! ! ! -potion.hbm_radx=РаЎ-X -potion.hbm_lead=ОтравлеМОе свОМцПЌ -potion.hbm_radaway=АМтОраЎОМ -potion.hbm_telekinesis=! ! ! -potion.hbm_phosphorus=ЀПсфПрМые ПжПгО -potion.hbm_stability=СтабОльМПсть -potion.hbm_potionsickness=ППслезельевая бПлезМь -potion.hbm_death=АстПльфПфОкацОя - -tool.ability.recursion=ЖОлкПвый МайМер -tool.ability.hammer=ЗПМа ЎействОя -tool.ability.explosion=Взрыв -tool.ability.silktouch=КёлкПвПе касаМОе -tool.ability.mercury=РтутМПе касаМОе -tool.ability.luck=УЎача -tool.ability.smelter=АвтП-плавка -tool.ability.shredder=АвтП-ОзЌельчОтель -tool.ability.centrifuge=АвтП-цеМтрОфуга -tool.ability.crystallizer=АвтП-крОсталлОзатПр -tool.ability.midas=ПрОкПсМПвеМОе МОЎаса -weapon.ability.radiation=РаЎОПактОвМые лезвОя -weapon.ability.vampire=ВаЌпОр -weapon.ability.stun=ОглушеМОе -weapon.ability.phosphorus=ЀПсфПрМый МакПМечМОк -weapon.ability.beheader=ОбезглавлОватель -weapon.ability.chainsaw=БеМзПбПль -weapon.ability.fire=ГПреМОе -weapon.ability.bobble=УЎача кПллекцОПМера -weapon.elecGun.modeChange=РежОЌ стрельбы: -weapon.elecGun.glass_cannon.radio=РаЎОПвПлМы -weapon.elecGun.glass_cannon.micro=МОкрПвПлМы -weapon.elecGun.glass_cannon.ir=ИМфракрасМПе ОзлучеМОе -weapon.elecGun.glass_cannon.visible=ВОЎОЌый свет -weapon.elecGun.glass_cannon.uv=УльтрафОПлет -weapon.elecGun.glass_cannon.xray=РеМтгеМ -weapon.elecGun.glass_cannon.gamma=ГаЌЌа-лучО - -info.asbestos=МПО лёгкОе гПрят. -info.coaldust=ЗЎесь тяжелП Ўышать. -info.coil=СОла катушкО -info.templatefolder=СПзЎаМП с пПЌПщью %s -info.template_in=ВвПЎ: -info.template_in_p=ВвПЎы: -info.template_out=ВыхПЎ: -info.template_out_p=ВыхПЎы: -info.template_seconds=секуМЎ -info.template_time=ВреЌя прПОзвПЎства: +achievement.ZIRNOXBoom.desc=cope, seethe, mald +achievement.ZIRNOXBoom=ЊИРНОКС analyze.basic1======КПЌпПМеМт NTM===== analyze.basic2=ДПпПлМОтельМая ЎПкуЌеМтацОя МахПЎОтся Ма вОкО. @@ -326,37 +142,39 @@ analyze.noInfo=Нет ОМфПрЌацОО. armor.blastProtection=МПЎОфОкатПр урПМа %s Пт взрывПв armor.cap=МаксОЌальМПе зМачеМОе урПМа %s armor.damageModifier=МПЎОфОкатПр урПМа %s прПтОв %s +armor.dash=Даёт %s рывкПв +armor.electricJetpack=ИПММый реактОвМый раМец +armor.explosionImmune=Не ЌПжет пПлучОть МОкакПгП урПМа, крПЌе как Пт взрывПв +armor.fasterReload=Быстрая перезаряЎка +armor.fastFall=БыстрПе паЎеМОе armor.fireproof=ОгМеупПрМПсть armor.fullSetBonus=БПМусы ППлМПгП НабПра брПМО: armor.geigerHUD=ВстрПеММый HUD счетчОка Гейгера armor.geigerSound=ЗвукПвПй СчётчОк Гейгера +armor.glider=ПрОсесть, чтПбы сплаМОрПвать armor.gravity=МПЎОфОкатПр гравОтацОО %s +armor.hardLanding=Жёсткая пПсаЎка +armor.ignoreLimit=СПпрПтОвлеМОе Ме завОсОт Пт преЎела сПпрПтОвлеМОя armor.modifier=ОбщОй ЌПЎОфОкатПр урПМа %s +armor.moreAmmo=БПльше патрПМПв armor.nullDamage=НейтралОзацОя всегП урПМа Пт %s +armor.projectileProtection=МПЎОфОкатПр урПМа %s Пт сМаряЎПв +armor.rocketBoots=РакетМые бПтОМкО +armor.sprintBoost=УскПреММый бег +armor.stepSize=Каг: %s armor.thermal=ТерЌальМый вОзПр armor.threshold=ППрПг урПМа %s armor.vats=ДетектПр врагПв -armor.electricJetpack=ИПММый реактОвМый раМец -armor.hardLanding=Жёсткая пПсаЎка -armor.glider=ПрОсесть, чтПбы сплаМОрПвать -armor.explosionImmune=Не ЌПжет пПлучОть МОкакПгП урПМа, крПЌе как Пт взрывПв -armor.fastFall=БыстрПе паЎеМОе -armor.ignoreLimit=СПпрПтОвлеМОе Ме завОсОт Пт преЎела сПпрПтОвлеМОя -armor.rocketBoots=РакетМые бПтОМкО -armor.sprintBoost=УскПреММый бег -armor.projectileProtection=МПЎОфОкатПр урПМа %s Пт сМаряЎПв -armor.dash=Даёт %s рывкПв armor.yield=ЗащОта прОЌеМОЌа к урПМу <%s -armor.fasterReload=Быстрая перезаряЎка -armor.moreAmmo=БПльше патрПМПв -armor.stepSize=Каг: %s armorMod.all=ВсеЌу armorMod.applicableTo=ПрОЌеМяется к: armorMod.boots=БПтОМкаЌ armorMod.chestplates=НагруЎМОку armorMod.helmets=КлеЌу +armorMod.insertHere=Вставьте брПМю, чтПбы её ЌПЎОфОцОрПвать... armorMod.leggings=ППМПжаЌ +armorMod.type.battery=АккуЌулятПр armorMod.type.boots=БПтОМкО armorMod.type.chestplate=НагруЎМОк armorMod.type.cladding=ОбшОвка @@ -365,87 +183,6 @@ armorMod.type.insert=ПластОМа armorMod.type.leggings=ППМПжО armorMod.type.servo=СервПпрОвПЎы armorMod.type.special=ОсПбПе -armorMod.type.battery=АккуЌулятПр -armorMod.insertHere=Вставьте брПМю, чтПбы её ЌПЎОфОцОрПвать... - -hazard.prot=ЗащОщает Пт: -hazard.noprot=НЕ защОщает Пт: -hazard.neverProtects=Не защОщает Пт: -hazard.bacteria=БактерОй / АэрПзПлей -hazard.corrosive=ЕЎкОх ОспареМОй -hazard.gasChlorine=ХОЌОческОх газПв -hazard.gasInert=ИМертМых газПв / УЎушающОх веществ -hazard.gasMonoxide=УгарМПгП газа -hazard.nerveAgent=НервМП-паралОтОческОх среЎств -hazard.particleCoarse=ЧастОц, МахПЎящОхся в вПзЎухе -hazard.particleFine=ТверЎых частОц -hazard.light=ЯркОх вспышек -hazard.sand=РазЎражОтелей глаз - -trait.asbestos=СПЎержОт асбест -trait.blinding=ОслеплеМОе -trait.digamma=ДОгаЌЌа раЎОацОя -trait.drop=ОпасМП выкОЎывать -trait.furnace=Даёт %s ПперацОй в яЎерМПй печО -trait.heat=ОбеспечОвает %s ТЕПЛА -trait.hlParticle=ПерОПЎ ППлураспаЎа ЧастОцы: %s -trait.hlPlayer=ПерОПЎ ППлураспаЎа ИгрПка: %s -trait.hot=ПОрПфПрМый / ГПрячОй -trait.hydro=ГОЎрПреактОвМый -trait.explosive=ВПсплаЌеМяющОйся / ВзрывППпасМый -trait.radioactive=РаЎОПактОвМый -trait.radResistance=СПпрПтОвлеМОе раЎОацОО: %s -trait.tile.cluster=ВыпаЎает тПлькП тПгЎа, кПгЎа разрушеМ ОгрПкПЌ -trait.tile.depth=МПжет быть разрушеМ тПлькП взрывПЌ -trait.coal=УгПльМая пыль -digamma.playerRes=СПпрПтОвлеМОе к ЎОгаЌЌе: -digamma.title=ДИАГНОСТИКА ДИГАММЫ -digamma.playerDigamma=ДПза ЎОгаЌЌы: -digamma.playerHealth=ВлОяМОе ЎОгаЌЌы: - -trait.rbmk.coreTemp=ТеЌпература стержМя: %s -trait.rbmk.depletion=ОбеЎМеМОе: %s -trait.rbmk.diffusion=РассеОваМОе: %s -trait.rbmk.fluxFunc=ЀуМкцОя пПтПка: %s -trait.rbmk.funcType=ТОп фуМкцОО: %s -trait.rbmk.heat=ТеплП за тОк прО пПлМПй ЌПщМПстО: %s -trait.rbmk.melt=ТПчка плавлеМОя: %s -trait.rbmk.neutron.any=Любые МейтрПМы -trait.rbmk.neutron.fast=Быстрые МейтрПМы -trait.rbmk.neutron.slow=МеЎлеММые МейтрПМы -trait.rbmk.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s -trait.rbmk.source=СаЌПвПсплаЌеМяющОйся -trait.rbmk.splitsInto=РаспаЎается Ма: %s -trait.rbmk.splitsWith=РаспаЎается с: %s -trait.rbmk.xenon=КсеМПМПвПе ПтравлеМОе: %s -trait.rbmk.xenonBurn=ЀуМкцОя выгПраМОя ксеМПМа: %s -trait.rbmk.xenonGen=ЀуМкцОя МакПплеМОя ксеМПМа: %s - -trait.rbmx.coreTemp=РазрушеМОе стержМя: %s -trait.rbmx.depletion=КПрПчка: %s -trait.rbmx.diffusion=ППтПк: %s -trait.rbmx.fluxFunc=ЀуМкцОя гОбелО: %s -trait.rbmx.funcType=СпецОфОкацОя фуМкцОО: %s -trait.rbmx.heat=КПрПчка Ма тОк прО пПлМПй ЌПщМПстО: %s -trait.rbmx.melt=ГлубОМа кПрПчкО: %s -trait.rbmk.neutron.any.x=Все МеевклОЎПвы фПрЌы -trait.rbmk.neutron.fast.x=ЭллОптОческОе МеевклОЎПвы фПрЌы -trait.rbmk.neutron.slow.x=ГОпербПлОческОе МеевклОЎПвы фПрЌы -trait.rbmx.skinTemp=РазрушеМОе ПбПлПчкО стержМя: %s -trait.rbmx.source=СаЌПсжОгаеЌый -trait.rbmx.splitsInto=Отправляется в: %s -trait.rbmx.splitsWith=ПрОбывает Оз: %s -trait.rbmx.xenon=СвОМцПвПе ПтравлеМОе: %s -trait.rbmx.xenonBurn=ЀуМкцОя разрушеМОя свОМца: %s -trait.rbmx.xenonGen=ЀуМкцОя сПзЎаМОя свОМца: %s - -turret.animals=ЊелОться пП пассОвМыЌ: %s -turret.machines=ЊелОться пП ЌашОМаЌ: %s -turret.mobs=ЊелОться пП ЌПбаЌ: %s -turret.none=НОчегП -turret.off=ВЫКЛ -turret.on=ВКЛ -turret.players=ЊелОться пП ОгрПкаЌ: %s battery.mode.buffer=БуферМый режОЌ battery.mode.input=ЗаряЎка @@ -461,68 +198,6 @@ battery.priority.recommended=РекПЌеМЎуется Ўля: battery.redstone.off=РеЎстПуМ выключеМ battery.redstone.on=РеЎстПуМ включеМ -rbmk.heat=ТеЌпература кПЌпПМеМта: %s -rbmk.boiler.water=ВПЎа: %s / %s -rbmk.boiler.steam=Пар: %s / %s -rbmk.boiler.type=СжатОе: %s -rbmk.console.assign=НазМачОть стержМО к экраМу #%s -rbmk.console.none=Выкл. -rbmk.console.col_temp=СреЎМяя теЌпература стержМя -rbmk.console.rod_extraction=СреЎМее ОзвлечеМОе регулОрующОх стержМей -rbmk.console.fuel_depletion=СреЎМее тПплОвМПе ПбеЎМеМОе -rbmk.console.fuel_poison=СреЎМее ксеМПМПвПе ПтравлеМОе -rbmk.console.fuel_temp=СреЎМяя теЌпература тПплОва -rbmk.control.level=%s -rbmk.control.red=§cКрасМая группа -rbmk.control.yellow=§eЖёлтая группа -rbmk.control.green=§aЗелёМая группа -rbmk.control.blue=§1СОМяя группа -rbmk.control.purple=§5ЀОПлетПвая группа -rbmk.moderated=ЗаЌеЎлеММП -rbmk.rod.depletion=ОбеЎМеМОе: %s -rbmk.rod.xenon=КсеМПМПвПе ПтравлеМОе: %s -rbmk.rod.coreTemp=ТеЌпература стержМя: %s -rbmk.rod.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s / %s -rbmk.screen.core=ЯЎрП: %s -rbmk.screen.depletion=ИстПщ: %s -rbmk.screen.rod=Управ: %s -rbmk.screen.temp=ТеЌп: %s -rbmk.screen.xenon=КсеМПМ: %s - -shape.quantum=КваМта -shape.nugget=СаЌПрПЎПк -shape.dusttiny=Кучка пылО -shape.wireFine=ПрПвПЎа -shape.billet=ЗагПтПвка -shape.ingot=СлОтПк -shape.dust=ППрПшПк -shape.plate=ПластОМа -shape.plateTriple=ЛОтая пластОМа -shape.ntmpipe=Труба -shape.shell=ОбПлПчка -shape.quart=Четверть блПка -shape.block=БлПк -shape.wireDense=ПлПтМый прПвПЎ -shape.wiresDense=ПлПтМые прПвПЎа -foundry.noCast=ЛОтейМая фПрЌа Ме устаМПвлеМа! -foundry.filter=ЀОльтр: %s -foundry.inverted=ИМвертОрПваМ реЎстПуМПЌ -foundry.invertFilter=ИМвертОрПваММый фОльтр - -hbm.key=NTM Hotkeys -hbm.key.calculator=КалькулятПр -hbm.key.craneLoad=ЗагрузОть/РазгрузОть краМ -hbm.key.craneMoveDown=ДвОгать краМ МазаЎ -hbm.key.craneMoveLeft=ДвОгать краМ влевП -hbm.key.craneMoveRight=ДвОгать краМ вправП -hbm.key.craneMoveUp=ДвОгать краМ вперёЎ -hbm.key.dash=РывПк -hbm.key.toggleBack=ВключОть раМец -hbm.key.toggleHUD=ВключОть HUD -hbm.key.reload=ПерезаряЎОть -hbm.key.copyToolAlt=УстрПйствП МастрПйкО: ПереключОть вставку -hbm.key.copyToolCtrl=УстрПйствП МастрПйкО: ПрОЌеМОть к трубаЌ - bomb.detonated=УспешМП взПрваМП! bomb.incompatible=УстрПйствП Ме ЌПжет быть взПрваМП! bomb.launched=УспешМП запущеМП! @@ -530,360 +205,8 @@ bomb.missingComponent=Отсутствует кПЌпПМеМт! bomb.nobomb=ППзОцОя Ме сПвЌестОЌа ОлО Ме прПгружеМа! bomb.triggered=УспешМП взПрваМП! -excavator.crusher=ВключОть ОзЌельчОтель -excavator.drill=ВключОть бур -excavator.silktouch=ВключОть шёлкПвПе касаМОе -excavator.veinminer=ВключОть жОлкПвый ЌайМер -excavator.walling=ВключОть пПстрПйку стеМ - -contents.data.blueprints1=СбПрПчМые шаблПМы -contents.data.blueprints2=ХОЌОческОе шаблПМы -contents.data.research=ИсслеЎПваМОе: %s -contents.misc.corrupted=ППврежЎеММые ЎаММые -contents.misc.none=НезаМятПе прПстраМствП -contents.misc.unformatted=НефПрЌатОрПваММПе прПстраМствП -contents.program.bob=УстаМПвка BobOS 31 Edition -contents.program.dataRec=ПрПграЌЌМПе ПбеспечеМОе Ўля вПсстаМПвлеМОя ЎаММых -contents.program.doom=DOOM -contents.program.unknown=??? -contents.program.windows=УстаМПвка Windows 12 - -commands.satellite.no_satellite=СпутМОк Ме МайЎеМ! -commands.satellite.not_a_satellite=ПреЎЌет в руке Ме спутМОк! -commands.satellite.satellite_descended=СпутМОк успешМП уЎалёМ. -commands.satellite.satellite_orbited=СпутМОк запущеМ. -commands.satellite.should_be_run_as_player=КПЌаМЎа ЎПлжМа быть выпПлМеМа ОгрПкПЌ! -commands.satellite.no_active_satellites=Нет актОвМых спутМОкПв! - -desc.block.barrel.acid=еЎкОе жОЎкПстО -desc.block.barrel.acidAlt=еЎкОе жОЎкПстО правОльМП -desc.block.barrel.acidStrong=сОльМые еЎкОе жОЎкПстО -desc.block.barrel.antimatter=аМтОЌатерОю -desc.block.barrel.can=§aМПжет -desc.block.barrel.cannot=§eНе ЌПжет -desc.block.barrel.capacity=§bВЌестОЌПсть: %smB -desc.block.barrel.hotFluid=гПрячОе жОЎкПстО -desc.block.barrel.leaky=§cПрПтекает -desc.block.barrel.static=СтатОчМая бПчка -desc.block.barrel.store=%s сПЎержать %s -desc.fTrait.antimatter=§4АМтОЌатерОя -desc.fTrait.biohazard=§aБОПлПгОческая ПпасМПсть -desc.fTrait.chemical=§2НервМП-паралОтОческОй агеМт -desc.fTrait.corrosive1=§eЕЎкПе -desc.fTrait.corrosive2=§6СОльМП еЎкПе -desc.fTrait.radioactive=§eРаЎОПактОвМПе -desc.fTrait.toxic=§9ТПксОчМПе -desc.gui.atomicClock=ВреЌя$ДеМь$ГПЎ -desc.gui.lunarOni.buffer=Буферр -desc.gui.lunarOni.coordinates=КООРДИНАТЫ: -desc.gui.lunarOni.direction=НаправлеМОе -desc.gui.lunarOni.elevation=ВысПта -desc.gui.lunarOni.mode=ВыключеМП$Существа$СвПбПЎМый ПгПМь$ППтПк -desc.gui.lunarOni.percentage=УрПвеМь эМергОО -desc.gui.lunarOni.power=ПОтаМОе -desc.gui.reactorAmat.box=УрПвеМь реакцОО: %s %%$СППтМПшеМОе сЌешОваМОя: %s / %s$ТеЌпература: %s°C$ДавлеМОе: %s БАР$СОла: %s тераЎОМ/сек$Текущее яЎрП: %s$СрПк службы яЎра: %s$ТекущОй каталОзатПр: %s$СрПк службы каталОзатПра: %s$ТекущОй ускПрОтель: %s$СрПк службы ускПрОтеля: %s -desc.item.rtgDecay=РаспаЎается Ма: %s -desc.gui.rtgBFurnace.desc=Требует хПтя бы 15 еЎОМОц тепла$ЧеЌ бПльше тепла ЎПбавляется, теЌ быстрее ПМП рабПтает$Нагрев, превышающОй ЌаксОЌальМую скПрПсть, Ме буЎет ОЌеть МОкакПгП эффекта$КПрПткПжОвущОе пеллеты ЌПгут распаЎаться -desc.gui.rtg.heat=§eТекущОй урПвеМь тепла: %s -desc.gui.rtg.pellets=ПрОМОЌаеЌые пеллеты: -desc.gui.rtg.pelletHeat=%s (%s тепла) -desc.gui.rtg.pelletPower=%s (%s HE/тОк) -desc.gui.radiolysis.desc=§9ОпОсаМОе§r$ЭтПт РИТЭГ бПлее эффектОвеМ, чеЌ ЎругОе, О$ПсМащеМ каЌерПй раЎОПлОза Ўля$крекОМга О стерОлОзацОО. -desc.gui.zirnox.coolant=§3ОхлажЎеМОе§r$CO2 переЌещает теплП Оз актОвМПй зПМы в вПЎу.$ВПЎа буЎет Магреваться ЎП перегретПгП пара.$ЭффектОвМПсть ПхлажЎеМОя О прПОзвПЎства пара$завОсОт Пт ЎавлеМОя. -desc.gui.zirnox.pressure=§6ДавлеМОе§r$ДавлеМОе ЌПжМП сМОзОть, выпустОв CO2.$ОЎМакП прО слОшкПЌ МОзкПЌ ЎавлеМОО$эффектОвМПсть ПхлажЎеМОя О вырабПтка пара буЎут сМОжеМы.$Избегайте расплавлеМОя! -desc.gui.zirnox.warning1=§cВМОЌаМОе:§r ВПЎа МеПбхПЎОЌа Ўля$правОльМПй рабПты реактПра! -desc.gui.zirnox.warning2=§cВМОЌаМОе:§r CO2 МеПбхПЎОЌ Ўля$правОльМПй рабПты реактПра! -desc.gui.gasCent.enrichment=§2ОбПгащеМОе§r$Для ПбПгащеМОя ураМа требуются каскаЎы.$КаскаЎы с ЎвуЌя цеМтрОфугаЌО ЎаЎут$ураМПвПе тПплОвП, каскаЎы с четырьЌя цеМтрОфугаЌО$Пбеспечат пПлМПе разЎелеМОе. -desc.gui.gasCent.output=§6ПереЌещеМОе жОЎкПстО§r$ЖОЎкПсть ЌПжет быть переЌещеМа$через выхПЎМПй пПрт Ўля ЎальМейшей ПбрабПткО. -desc.gui.assembler.warning=§cОшОбка:§r Требуется шаблПМ сбПрПчМПй ЌашОМы! -desc.gui.chemplant.warning=§cОшОбка:§r Требуется шаблПМ хОЌОческПй ЌашОМы! -desc.gui.template=§9КаблПМы§r$КаблПМы ЌПгут быть сЎелаМы$в Папке шаблПМПв ЌашОМ. -desc.gui.nukeBoy.desc=§1Требует:§r$ * НейтрПММый щОт$ * СМаряЎ U235$ * СубкрОтОческая цель U235$ * Взрывчатка$ * ВПсплаЌеМОтель -desc.gui.nukeGadget.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ПрПвПЎа -desc.gui.nukeMan.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ЗажОгатель -desc.gui.nukeMike.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$ * БлПк ПхлажЎеМОя ЎейтерОя$ * ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ$ * ДейтерОевый бак -desc.gui.nukeTsar.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$§9ОпцОПМальМП:§r$ * ЯЎрП Њарь-бПЌбы -desc.item.zirnoxBreedingRod=§2[СтержеМь-разЌМПжОтель ЊОрМПкс]$§eРазЌещать ряЎПЌ с тПплОвМыЌО стержМяЌО$§eВреЌя рабПты %d тОкПв -desc.item.zirnoxRod=§a[ТПплОвМый стержеМь ЊОрМПкс]$§eГеМерОрует %1$d тепла Ма тОк$§eВреЌя рабПты %2$d тОкПв -desc.item.ammo.con_accuracy2=- СОльМП сМОжеММая тПчМПсть -desc.item.ammo.con_damage=- СОльМП сМОжеММый урПМ -desc.item.ammo.con_heavy_wear=- СОльМП увелОчеММый ОзМПс -desc.item.ammo.con_ling_fire=- Нет затяжМПгП ПгМя -desc.item.ammo.con_nn=- Не яЎерМая бПЌба -desc.item.ammo.con_no_damage=- Нет урПМа -desc.item.ammo.con_no_explode1=- Не взрывается -desc.item.ammo.con_no_explode2=- Нет урПМа блПкаЌ -desc.item.ammo.con_no_explode3=- Нет взрывМПй вПлМы -desc.item.ammo.con_no_fire=- Не зажОгательМПе -desc.item.ammo.con_no_mirv=- Не рекПЌеМЎуется ОспПльзПвать с ПрПтП-MIRV -desc.item.ammo.con_penetration=- Не прПМОкающее -desc.item.ammo.con_radius=- УЌеМьшеММый раЎОус взрыва -desc.item.ammo.con_range2=- СОльМП уЌеМьшеММый раЎОус -desc.item.ammo.con_sing_projectile=- ОЎОМПчМый сМаряЎ -desc.item.ammo.con_speed=- УЌеМьшеММая скПрПсть сМаряЎа -desc.item.ammo.con_super_wear=- ОчеМь сОльМП увелОчеММый ОзМПс -desc.item.ammo.con_wear=- УвелОчеММый ОзМПс -desc.item.ammo.neu_40mm=* ЭтП 40-ЌОллОЌетрПвая граМата, кПтПрую Ќы сжалО, чтПбы пПЎПгМать пПЎ ствПл! -desc.item.ammo.neu_blank=* ЭтП пустышка -desc.item.ammo.neu_boat=* ЛПЎка -desc.item.ammo.neu_boxcar=* ВагПМ -desc.item.ammo.neu_building=* ЗЎаМОе -desc.item.ammo.neu_chlorophyte=* ХлПрПфОт -desc.item.ammo.neu_eraser=* Для уЎалеМОя бПльшОх ПшОбПк -desc.item.ammo.neu_fun=* Веселье Ўля всей сеЌьО! -desc.item.ammo.neu_heavy_metal=* Тяжёлый Ќеталл -desc.item.ammo.neu_homing=* СаЌПМавПЎящОйся -desc.item.ammo.neu_jolt=* Трясущее -desc.item.ammo.neu_less_bouncy=* МеМее ПтскакОвающОй -desc.item.ammo.neu_maskman_flechette=* Стреляет трассОрующОЌ сМаряЎПЌ, кПтПрый вызывает бурю Оз ОУ-флешетПв -desc.item.ammo.neu_maskman_meteorite=* Стреляет сМаряЎПЌ с высПкОЌ урПМПЌ, кПтПрый вызывает МебПльшПй ЌетеПрОт -desc.item.ammo.neu_more_bouncy=* СОльМП ПтскакОвающОй -desc.item.ammo.neu_no_bounce=* Не ПтскакОвающОй -desc.item.ammo.neu_no_con=* НОкакОх затрат, лПл -desc.item.ammo.neu_starmetal=* ЗвёзЎМый Ќеталл -desc.item.ammo.neu_tracer=* ТрассОрующОй -desc.item.ammo.neu_uhh=* ЭЌ... -desc.item.ammo.neu_warcrime1=* ТехМОческО вПеММПе преступлеМОе -desc.item.ammo.neu_warcrime2=* ВЎвПе бПльше вПеММых преступлеМОй в ПЎМПЌ сМаряЎе! -desc.item.ammo.pro_accurate1=+ УвелОчеММая тПчМПсть -desc.item.ammo.pro_accurate2=+ ППчтО ОЎеальМая тПчМПсть -desc.item.ammo.pro_balefire=+ Жар-плаЌя -desc.item.ammo.pro_bomb_count=+ УвелОчеММПе кПлОчествП бПЌб -desc.item.ammo.pro_caustic=+ РазъеЎающее -desc.item.ammo.pro_chainsaw=+ БеМзПпОла -desc.item.ammo.pro_chlorine=+ ХлПрМый газ -desc.item.ammo.pro_damage=+ УвелОчеММый урПМ -desc.item.ammo.pro_damage_slight=+ УрПМ выше среЎМегП -desc.item.ammo.pro_emp=+ ЭМ-ОЌпульс -desc.item.ammo.pro_explosive=+ ВзрывППпасМый -desc.item.ammo.pro_fallout=+ РаЎОПактОвМые ПсаЎкО -desc.item.ammo.pro_fit_357=+ ППЎхПЎОт Ўля кажЎПй .357 ЌПЎелО -desc.item.ammo.pro_flames=+ УвелОчеММПе кПлОчествП ПгМя -desc.item.ammo.pro_gravity=+ УЌеМьшеММая гравОтацОя -desc.item.ammo.pro_heavy_damage=+ СОльМП увелОчеММый урПМ -desc.item.ammo.pro_incendiary=+ ЗажОгательМый -desc.item.ammo.pro_lunatic=+ ЛуММый -desc.item.ammo.pro_marauder=+ МгМПвеММП уЎаляет разЎражающОх О МесбалаМсОрПваММых врагПв -desc.item.ammo.pro_mining=+ Взрыв выкапывает все блПкО -desc.item.ammo.pro_no_gravity=+ Не пПЎвержеМ влОяМОю гравОтацОО -desc.item.ammo.pro_nuclear=+ ЯЎерМый -desc.item.ammo.pro_penetration=+ ПрПМОкающОй -desc.item.ammo.pro_phosphorus=+ Вызывает фПсфПрМые ПжПгО -desc.item.ammo.pro_phosphorus_splash=+ ВПлМа фПсфПра -desc.item.ammo.pro_poison_gas=+ ЯЎПвОтая вПлМа -desc.item.ammo.pro_radius=+ УвелОчеММый раЎОус взрыва -desc.item.ammo.pro_radius_high=+ СОльМП увелОчеММый раЎОус взрыва -desc.item.ammo.pro_range=+ УвелОчеММая ЎальМПсть -desc.item.ammo.pro_rocket=+ Ракета -desc.item.ammo.pro_rocket_propelled=+ РеактОвМый ЎвОгатель -desc.item.ammo.pro_shrapnel=+ КрапМель -desc.item.ammo.pro_speed=+ УвелОчеММая скПрПсть сМаряЎа -desc.item.ammo.pro_stunning=+ Оглушает -desc.item.ammo.pro_toxic=+ ТПксОчМый -desc.item.ammo.pro_wear=+ УЌеМьшеММый ОзМПс -desc.item.ammo.pro_withering=+ ИссущающОй -desc.item.armorMod.display=чтПбы пПказать устаМПвлеММые ЌПЎОфОкатПры брПМО -desc.item.battery.charge=ЗаряЎ: %s / %sHE -desc.item.battery.chargePerc=ЗаряЎ: %s%% -desc.item.battery.chargeRate=СкПрПсть заряЎкО: %sHE/тОк -desc.item.battery.dischargeRate=СкПрПсть разряЎкО: %sHE/тОк -desc.item.durability=ПрПчМПсть: %s -desc.item.grenade.fuse=ПреЎПхраМОтель: %s -desc.item.grenade.fuseImpact=СтПлкМПвеМОе -desc.item.grenade.fuseInstant=МгМПвеММый -desc.item.gun.ammo=ПатрПМПв %s -desc.item.gun.ammoBelt=ЛеМта -desc.item.gun.ammoEnergy=ЭМергОя; %sHE за выстрел -desc.item.gun.ammoEnergyAlt=%sHE за втПрОчМый выстрел -desc.item.gun.ammoMag=%s / %s -desc.item.gun.ammoType=ТОп патрПМПв: %s -desc.item.gun.ammoTypeAlt=ВтПрОчМые патрПМы: %s -desc.item.ammo.neu_leadburster=* ПрОкрепляется к пПверхМПстяЌ О распыляет пулО -desc.item.gun.damage=УрПМ: %s - %s -desc.item.gun.damageAlt=УрПМ: %s -desc.item.gun.lore=чтПбы увОЎеть бПлее глубПкОй лПр -desc.item.gun.loreFunc=чтПбы увОЎеть бПльше фуМкцОПМальМПстО -desc.item.gun.manufacturer=ПрПОзвПЎОтель: %s -desc.item.gun.name=НазваМОе: %s -desc.item.gun.pellets=СМаряЎы: %s - %s -desc.item.kitArmor=БрПМя буЎет заЌеМеМа МПвыЌ кПЌплектПЌ. -desc.item.kitHaz=БрПМя буЎет заЌеМеМа защОтМыЌ кПстюЌПЌ. -desc.item.kitPack=Какая выгПЎМая сЎелка! -desc.item.kitPool=ППжалуйста, ПчОстОте ОМвеМтарь переЎ ПткрытОеЌ! -desc.item.rtgDecay=РаспаЎается Ма: %s x%s -desc.item.rtgHeat=УрПвеМь эМергОО: %s -desc.item.storage.capacity=ВЌестОЌПсть %s%%s -desc.item.pileRod=§eПКМ пП прПсверлёММПЌу графОту, чтПбы пПЌестОть$§eПКМ ПтвёрткПй, чтПбы Озвлечь$ -desc.misc.357=§o.357 МагМуЌ -desc.misc.556=§o.223 РеЌОМгтПМ -desc.misc.762=§o.308 ВОМчестер -desc.misc.func=§n-- ЀуМкцОя -- -desc.misc.lanthanum="ЛаМтаМ" -desc.misc.lctrl=§8УЎержОвайте <§e§oLCTRL§8§o> %s -desc.misc.lore=§n-- ЛПр -- -desc.misc.lshift=§8УЎержОвайте <§e§oLSHIFT§8§o> %s -desc.misc.luna=§o20x155mm ЛуММый -desc.misc.meltPoint=ТПчка плавлеМОя: §c%s -desc.misc.noPos=ППзОцОя Ме устаМПвлеМа! -desc.misc.pos=ППзОцОя: %s, %s, %s -desc.misc.posSet=ППзОцОя устаМПвлеМа! -desc.misc.tantalum="ТаМтал" -desc.misc.tarCoord=КППрЎОМаты целО: -desc.misc.tarSet=КППрЎОМаты устаМПвлеМы X: %s, Z: %s -desc.nei.ringConsumed=Ring Consumed -desc.nei.ringPreserved=Ring Preserved -desc.nei.shaped=ЀПрЌеММый -desc.nei.shapeless=БесфПрЌеММый -desc.nuke.custom.add=§6ДПбавляет %s к стаЎОО кастПЌМПй бПЌбы %s -desc.nuke.custom.multi=§6ДПбавляет ЌМПжОтель %s к стаЎОО кастПЌМПй бПЌбы %s -desc.player.ageData=ТекущОй вПзраст: %s; ДеМь рПжЎеМОя: %s / %s AD -desc.player.birthday=С ЎМёЌ рПжЎеМОя! -desc.player.birthdayAlt=Еще ПЎМа трОвОальМая ПтЌетка$КакПй сЌысл бПльше счОтать?$СтПОла лО цеМа тПгП, в кПМце кПМцПв?$Как скПрП ты забуЎешь, чтП такПе вПзраст?$Как скПрП ты перестаМешь пПМОЌать свПй сПбствеММый вПзраст? -desc.player.birthdayMsg=Ваше вреЌя прОблОжается Ма ПЎОМ гПЎ$Ваше вреЌя ухПЎОт$Еще ПЎОМ гПЎ с сПжалеМОеЌ$Ты пережОл еще ПЎОМ гПЎ, Ма ЎаММый ЌПЌеМт$Ты буЎешь ПгляЎываться Ма этП вреЌя сП стыЎПЌ -desc.watz.pelAge=МаксОЌальМПе вреЌя: %s тОкПв -desc.watz.pelDecay=РаспаЎается Ма: %s -desc.watz.pelDecayMulti=ММПжОтель распаЎа: %s%% -desc.watz.pelHeat=ВыЎеляет тепла: %s тепла -desc.watz.pelHeatMulti=ММПжОтель тепла: %s%% -desc.watz.pelPower=ЭМергОО за тОк: %sHE -desc.watz.pelPowerMulti=ММПжОтель эМергОО: %s%% -desc.item.wasteCooling=ОхлаЎОте в бПчке с ПтрабПтаММыЌ тПплОвПЌ -desc.misc.lctrl=§УЎержОвайте <§e§oLCTRL§8§o> %s -desc.misc.lshift=§8УЎержОвайте <§e§oLSHIFT§8§o> %s -desc.gui.turbinegas.automode=§2АвтПЌатОческОй режОЌ турбОМы§r$Нажав кМПпку "AUTO", турбОМа автПЌатОческО$ПтрегулОрует вырабПтку электрПэМергОО$в завОсОЌПстО Пт ЌПщМПстО, требуеЌПй Пт сетО -desc.gui.turbinegas.fuels=§6ПрОМОЌаеЌПе тПплОвП: -desc.gui.turbinegas.warning=§cНОзкОй урПвеМь тПплОва ОлО сЌазкО!§r -desc.gui.rttyLogic.cond0=СОгМал §6МЕНЬКЕ§r КПМстаМты -desc.gui.rttyLogic.cond1=СОгМал §6МЕНЬКЕ ИЛИ РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond2=СОгМал §6БОЛЬКЕ ИЛИ РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond3=СОгМал §6БОЛЬКЕ§r КПМстаМты -desc.gui.rttyLogic.cond4=СОгМал §6РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond5=СОгМал §6НЕ РАВЕН§r КПМстаМте -desc.gui.rttyLogic.cond6=СОгМал §6СООТВЕТСТВУЕТ§r СтрПке -desc.gui.rttyLogic.cond7=СОгМал §6НЕ СООТВЕТСТВУЕТ§r СтрПке -desc.gui.rttyLogic.cond8=СОгМал §6СОДЕРЖИТ§r СтрПку -desc.gui.rttyLogic.cond9=СОгМал §6НЕ СОДЕРЖИТ§r СтрПку - -wavelengths.name.ir=ИМфракрасМый -wavelengths.name.visible=ВОЎОЌый свет -wavelengths.name.uv=УльтрафОПлет -wavelengths.name.gamma=ГаЌЌа -wavelengths.name.drx=ДОгаЌЌа -wavelengths.waveRange.ir=780МЌ-1ЌЌ -wavelengths.waveRange.visible=400МЌ-780МЌ -wavelengths.waveRange.uv=100МЌ-400МЌ -wavelengths.waveRange.gamma=<100пЌ -wavelengths.waveRange.drx=1916169 плаМкПвскОх ЎлОМ - -gun.make.ARMALITE=Armalite -gun.make.AUTO_ORDINANCE=КПрпПрацОя АвтП-ОрЎеМс -gun.make.BAE=БАЕ СОстеЌс -gun.make.BENELLI=БеМеллО АрЌО СПА -gun.make.BLACK_MESA=ИсслеЎПвательскОй кПЌплекс ЧёрМая Меза -gun.make.CERIX=ЊерОкс МагМус -gun.make.COMBINE=ВселеМскОй СПюз -gun.make.CUBE=Куб 2: Sauerbraten -gun.make.ENZINGER=ЭМзОМгер ЮМОПМ -gun.make.FLIMFLAM=ЀлОЌЀлэЌ ИМЎастрОс -gun.make.F_STRONG=ЀПрт СтрПМг -gun.make.GLORIA=Gloria GmbH -gun.make.HASBRO=ХасбрП -gun.make.H_AND_K=Heckler & Koch -gun.make.H_AND_R=Harrington & Richardson -gun.make.IF=ОгМеММые ППЎкПвы -gun.make.IMI=ВПеММая ПрПЌышлеММПсть ИзраОля -gun.make.IMI_BIGMT=IMI / БПльшая ГПра -gun.make.LUNA=КПрпус ЛуММПй ОбПрПМы -gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries -gun.make.MANN=МаММ КП. -gun.make.MAXIM=ХайраЌ МаксОЌ -gun.make.METRO=ОружейМОкО МетрП -gun.make.MWT=ЛабПратПрОО прПтПтОпПв МВТ -gun.make.ERFURT=Erfurter Maschinenfabrik Geipel -gun.make.NONE=- -gun.make.ROCKWELL=КПрпПрацОя "РПкуэлл" -gun.make.ROCKWELL_U=КПрпПрацОя "РПкуэлл"? -gun.make.SAAB=Saab Bofors Dynamics -gun.make.SACO=Saco Defense / US Ordnance -gun.make.TULSKY=ТульскОй ОружейМый ЗавПЎ -gun.make.UAC=ОбъеЎОМёММая АэрПкПсЌОческая КПрпПрацОя -gun.make.UNKNOWN=??? -gun.make.WINCHESTER=Winchester Repeating Arms Company -gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / БПльшая ГПра -gun.make.REMINGTON=Remington Arms -gun.make.DRG=Deep Rock Galactic -gun.make.NAWS=Kayarm Industries - -gun.name.ar15_50=МПЎОфОкацОя AR-15 пПЎ .50 BMG -gun.name.baeAR=СтаМЎартМая вОМтПвка брОтаММскПй арЌОО -gun.name.bel=Катапульта Ўля жар-яОц -gun.name.benelli=Benelli M4 Super 90 -gun.name.benelliDrum=Benelli M4 Super 90 (БарабаММый ЌагазОМ) -gun.name.bolter=БПлтер ЌПЎелО "МаМтОкПра" -gun.name.cz53=ПерсПМальМый ЌОМОгаМ CZ53 -gun.name.cz57=МОМОгаМ "МстОтель" CZ57 -gun.name.dart=ИглПЌёт -gun.name.deagle=IMI Desert Eagle -gun.name.emp=ПрПектПр ЭМИ-сфер -gun.name.extinguisher=6кг ПгМетушОтель PROTEX -gun.name.ffiV=FFI Viper -gun.name.ffiVInox=FFI Viper Inox -gun.name.ffiVLead=FFI Viper Lead -gun.name.ffiVN1=FFI Viper N1 -gun.name.ffiVN2=FFI Viper N2 -gun.name.ffiVUltra=FFI Viper Ultra -gun.name.ffivBling=FFI Viper Bling -gun.name.ffivSatur=FFI Viper D-25A -gun.name.gPistol=Granatpistole HK69 -gun.name.gustav=БезПткатМая вОМтПвка "Карл-Густав" M1 -gun.name.ifHorseshoe=IF-18 "ППЎкПва" -gun.name.ifPit=IF-18 "ППЎкПва" - БезЎПММая яЌа -gun.name.ifScope=IF-18 "ППЎкПва" с прОцелПЌ -gun.name.ifStorm=IF-18 "ППЎкПва" - СОльвер КтПрЌ -gun.name.ifVanity=IF-18 "ППЎкПва" - ВаМОтО -gun.name.karl=M1 Karl-GerÀt -gun.name.ks23=KS-23 -gun.name.lacunae=Тётушка ЛакуМэ -gun.name.lunaAR=1936 Bishamonten type Assault Rifle -gun.name.lunaGun=1958 Lunatic Gun (Revised) -gun.name.lunaHLR=1944 Chang'e type LMG -gun.name.lunaSMG=1936 Ānanda type SMG -gun.name.lunaSniper=1909 Rāhula type Anti-Material Rifle -gun.name.lunaTWR=Time Warp Rifle -gun.name.m42=ТактОческая яЎерМая катапульта M-42 -gun.name.m42MIRV=ЭксперОЌеМтальМая РГН M-42 -gun.name.m60=ПулеЌёт калОбра 7.62ЌЌ M60 -gun.name.maxim=ПулеЌёт "МаксОЌ" -gun.name.maximDouble=СЎвПеММый пулеЌёт "МаксОЌ" -gun.name.mp40=Maschinenpistole 40 -gun.name.nerf=НеОзвестМый бластер NERF -gun.name.osipr=СтаМЎартМая пульсПвая вОМтПвка Патруля -gun.name.panz=RaketenpanzerbÃŒchse 54 -gun.name.quadro=СчетверёММый переМПсМПй ракетМый граМатПЌёт -gun.name.revolverCursed=СтаМЎартМый пОстПлет брОтаММскПй арЌОО -gun.name.sauer=ДрПбПвОк Sauer -gun.name.spiw=H&R SPIW -gun.name.supershotty=ДвуствПльМый ЎрПбПвОк -gun.name.tau=Тау-пушка XVL1456 -gun.name.tommy9=МПЎОфОкацОя пОстПлета-пулеЌёта M1A1 пПЎ 9ЌЌ -gun.name.tommy=ПОстПлет-пулеЌёт M1A1 -gun.name.topaz=Тяжёлый ПгМеЌёт -gun.name.uacCarbine=UAC-41 Carbine -gun.name.uacDMR=UAC-30 Designated Marksman Rifle -gun.name.uacLMG=UAC-49 Light Machine Gun -gun.name.uacPistol=UAC .45 Standard Issue Handgun -gun.name.uacSMG=UAC Compact Sub-Machine Gun -gun.name.uboinik=РевПльверМый ЎрПбПвОк "УбПйМОк" -gun.name.uzi=IMI Uzi -gun.name.uziSatur=IMI Uzi D-25A -gun.name.win1887=Winchester Model 1887 -gun.name.win1887Inox=Winchester Model 1887 Inox -gun.name.win20Inox=Winchester Model 20 Inox -gun.name.win20Poly=Winchester Model 20 Polymer -gun.name.win20Satur=Winchester Model 20 D-25A -gun.name.zomg=Пушка ПтрОцательМПй эМергОО EMC101 -gun.name.remington870=Remington 870 -gun.name.congoLake=ППЌпПвый граМатПЌет Congo Lake +book.test.cover=HOW 2 SEX +book.test.page1=Test Page 1 book.error.cover=АЎрПММый КПллайЎер:$ДОагМПстОрПваМОе прПблеЌ book.error.title1=ОшОбка 0x01 [NC] @@ -905,8 +228,6 @@ book.error.page8=§lНазваМОе:§r "ERROR_DIODE_COLLISION" §lОпОсаМ book.error.title9=ОшОбка 0x09 [BT] book.error.page9=§lНазваМОе:§r "ERROR_BRANCHING_TURN" §lОпОсаМОе:§r ЧастОца ЎПстОгла пПвПрПта с МескПлькОЌО выхПЎаЌО. §lППтеМцОальМПе решеМОе:§r ЕслО ваш пПвПрПт МПрЌальМый, прПверьте есть лО таЌ все катушкО (тП есть Мет Ўыр в слПях). ЕслО пПвПрПт преЎМазМачеМ Ўля разветвлеМОя, Ўля этПгП требуется правОльМП скПМфОгурОрПваММый ЎОПЎ частОц КПтткО. -book.test.cover=HOW 2 SEX -book.test.page1=Test Page 1 book.rbmk.cover=МПй первый РБМК:$ОсМПвы$стрПОтельства реактПра$ book.rbmk.title1=ВступлеМОе book.rbmk.page1=§lРБМК§r - этП пПлМПстью ЌПЎульМый яЎерМый реактПр. В ПтлОчОе Пт бПльшОМства ЎругОх реактПрПв, зЎесь Мет "актОвМПй зПМы" О Мет ПграМОчеМОй пП разЌеру, скПрее, пПвеЎеМОе О эффектОвМПсть реактПра завОсят Пт тПгП, как ПМ пПстрПеМ О как разлОчМые частО взаОЌПЎействуют Ўруг с ЎругПЌ. @@ -920,7 +241,6 @@ book.rbmk.title5=РегулОрующОе стержМО - ИспПльзПва book.rbmk.title5.scale=0.75 book.rbmk.page5=В цеМтре графОческПгП ОМтерфейса буЎет ПтПбражаться текущая вставка стержМя. ЊветМые кМПпкО слева ЎПбавят стержеМь управлеМОя в цветПвую группу, чтП пПлезМП Ўля быстрПгП выбПра сгруппОрПваММых стержМей Ма кПМсПлО §lРБМК§r. КМПпкО справа пПзвПляют вставлять вручМую с шагПЌ 25%%. book.rbmk.title6=АвтПЌатОческОе регулОрующОе стержМО -book.rbmk.title6.scale=0.75 book.rbmk.page6=§lАвтПЌатОческОе регулОрующОе стержМО§r пПчтО ОЎеМтОчМы ПбычМыЌ регулОрующОЌ стержМяЌ, МП Ох Мельзя МастрПОть вручМую, вЌестП этПгП ПМО буЎут регулОрПвать пПлПжеМОе стержМя в завОсОЌПстО Пт текущей теЌпературы. Какую фуМкцОю ОспПльзПвать О как глубПкП вставлять О прО какПй теЌпературе, МеПбхПЎОЌП ПпреЎелОть в первую ПчереЎь. book.rbmk.title7=ПарПвПй каМал book.rbmk.page7=§lПарПвПй каМал§r - еЎОМствеММая часть, кПтПрая буЎет актОвМП сМОжать урПвеМь тепла реактПра. ЕслО теЌпература кПЌпПМеМта превышает теЌпературу кОпеМОя заЎаММПгП тОпа пара, ПМ буЎет пытаться пПтреблять стПлькП вПЎы О прПОзвПЎОть стПлькП пара, скПлькП МеПбхПЎОЌП Ўля ПхлажЎеМОя МОже теЌпературы кОпеМОя. @@ -942,50 +262,9 @@ book.rbmk.page15=РеакцОя §lтПплОва§r завОсОт Пт ЌМП book.rbmk.title16=РасплавлеМОе book.rbmk.page16=§4§lИЗБЕГАЙТЕ. -book.custCores.page1.title=ПрПектОрПваМОе яЎра яЎерМПй бПегПлПвкО (СПкращеММПе ОзЎаМОе) -book.custCores.page10=ОМ также ОЌеет плПтМПсть ~19,05 г/сЌ3, МП с крОтОческПй ЌассПй ~52 кг. НесЌПтря Ма этП, ПМ ОЌеет среЎМюю выхПЎМую эМергОю ЎелеМОя ~202,5 МэВ Ма ЎелеМОе. -book.custCores.page11=КрПЌе тПгП, ПМ ЌПжет ОспПльзПваться в бПЌбах пушечМПгП тОпа, кПтПрые в МастПящее вреЌя устарелО с ОЌплПзОПММыЌ тОпПЌ, все еще ОспПльзуются в МекПтПрых кПЌпактМых яЎерМых устрПйствах. -book.custCores.page12.title=НептуМОй-237 -book.custCores.page12=НептуМОй-237, хПтя О рассЌатрОвался, МОкПгЎа Ме Оспытывался в яЎерМых устрПйствах О МОкПгЎа Ме плаМОрПвался к ОспытаМОю. ОМ Пбразуется в результате захвата МейтрПМПв U-235, кПтПрый -book.custCores.page13=уже расщепляется. ОМ также ОЌеет бПлее высПкую крОтОческую Ќассу О плПтМПсть прО ~60 кг О ~20,45 г/сЌ3 сППтветствеММП. ЭМергОя ЎелеМОя Ме была ПпреЎелеМа, МП была ПцеМеМа в ~200 МэВ. -book.custCores.page14.title=ПлутПМОй-239 -book.custCores.page14=НаОбПлее распрПстраМеММый ЎелящОйся ЌатерОал в Маше вреЌя, пПлучеММый Оз U-238 в реактПрах. ОМ МеЌМПгП плПтМее ураМа прО ~19,86 г/сЌ3, ОЌеет ПчеМь МОзкую крОтОческую Ќассу -book.custCores.page15=~10 кг О ОЌеет высПкую выхПЎМую эМергОю ЎелеМОя прО ~207,1 МэВ Ма ЎелеМОе. НесЌПтря Ма тП, чтП Ох слПжМее прПОзвПЎОть, результат в кПМечМПЌ счете ПправЎывает затраты. -book.custCores.page16.title=ПлутПМОй-241 -book.custCores.page16=ОчеМь реЎкОй ОзПтПп плутПМОя, ПбразующОйся прО захвате МейтрПМПв Pu-240, кПтПрый, в свПю ПчереЎь, Пбразуется прО захвате МейтрПМПв Pu-239. -book.custCores.page17=ОМ ОЌеет МОзкую крОтОческую Ќассу ~12 кг, чтП лОшь МеЌМПгП выше, чеЌ Pu-239, МП ПМ также ОЌеет бПлее высПкую выхПЎМую эМергОю ЎелеМОя прО ~210 МэВ. -book.custCores.page18=НесЌПтря Ма преОЌуществП в прПОзвПЎстве эМергОО, затраты Ма прПОзвПЎствП Ме Ўают ПсПбых преОЌуществ Pu-239, также учОтывая егП ПчеМь МОзкОй перОПЎ пПлураспаЎа, сПставляющОй ПкПлП ЎесятО лет. -book.custCores.page19.title=МетастабОльМый аЌерОцОй-242m -book.custCores.page19=АЌерОцОй-242m, верПятМП, является саЌыЌ ЎПрПгОЌ ЎелящОЌся актОМОЎПЌ, кПтПрый в МастПящее вреЌя рассЌатрОвается Ўля яЎер яЎерМПгП ПружОя. Образуется тПлькП за счет пПслеЎПвательМПгП МейтрПММПгП -book.custCores.page1=ПП: А█████ Б██████ -book.custCores.page20=захвата МескПлькОх высПкПраЎОПактОвОруеЌых раЎОПОзПтПпПв, Am-242m с еще ЌеМьшей верПятМПстью буЎет ОспПльзПваться, чеЌ Pu-241. НесЌПтря Ма этП, ПМ ОЌеет ЎПстатПчМый перОПЎ пПлураспаЎа О крОтОческую Ќассу -book.custCores.page21=~11 кг, выхПЎ эМергОО ЎелеМОя ~212 МэВ О ПтМПсОтельМП МОзкую плПтМПсть ~13,67 г/сЌ3. -book.custCores.page22.title=КрабОЎОй-326 -book.custCores.page22=ВПзЌПжМП, саЌый перспектОвМый ЎелящОйся траМсураМПвый раЎОПОзПтПп, этП еЎОМствеММый ОзвестМый сверхтяжелый элеЌеМт, вхПЎящОй в сПстав ПстрПва стабОльМПстО. ПрО атПЌМПЌ -book.custCores.page23=МПЌере 126, ПМ ОЌеет сЌехПтвПрМП МОзкую крОтОческую Ќассу ~1-2 кг, ПгрПЌМую, пП ПцеМкаЌ, эМергОю ЎелеМОя ~250 МэВ О МеверПятМую плПтМПсть 39,7 г/сЌ3, пПчтО вЎвПе -book.custCores.page24=бПльше ураМа. ЕгП перОПЎ пПлураспаЎа, пП ПцеМкаЌ, сПставляет Пт сПтеМ тысяч ЎП ЌОллОарЎПв лет, О, как этП МО параЎПксальМП, егП также легче прПОзвПЎОть, чеЌ тяжелые актОМОЎы. -book.custCores.page25=НесЌПтря Ма преОЌущества ОспПльзПваМОя Sa-236 в качестве ПсМПвМПгП ЌатерОала, ПМ ОЌеет преЎПстережеМОе П тПЌ, чтП вызывает эффект, ОзвестМый как "пПле фПлкваМгра (ОлО фПлькваМгра)". ППка -book.custCores.page26=тПт эффект, безуслПвМП, стПОт ПбсуЎОть в ЎругПй раз, Ўля стаМЎартМых МужЎ яЎерМПгП ПружОя ПМ МежелателеМ, так как уЌеМьшает эМергОю О ЌПжет прОвестО к сбПю. -book.custCores.page27=ДП тех пПр, пПка Ме буЎет разрабПтаМ МаЎлежащОй ЌетПЎ сЌягчеМОя, Sa-326 ОЎеальМП пПЎхПЎОт Ўля пПвышеМОя прПОзвПЎОтельМПстО яЎер стаМЎартМых яЎер U-235 ОлО Pu-239 О зМачОтельМПгП увелОчеМОя прПОзвПЎОтельМПстО -book.custCores.page28=О эффектОвМПстО без ЎПбавлеМОя бПльшПй Ќассы, пПЎПбМП пПвышеМОю ЎейтерОя/трОтОя. Как тверЎый ЌеталлОческОй шрабОЎОй, так О жОЎкОй кПЌпПМеМт трОсульфОЎ шрабОЎОя (SaS6) -book.custCores.page29=былО рассЌПтреМы Ўля пПвышеМОя ЎелеМОя. Для пПлучеМОя ЎПпПлМОтельМПй ОМфПрЌацОО П вышеупПЌяМутПЌ "пПле фПлькваМгр" ПбратОтесь к кМОге: "ЀРЕЯ О пПле ЀПлькваМгр". -book.custCores.page2=РазрабПтка яЎерМПгП ПружОя МачОМается с егП саЌПгП важМПгП кПЌпПМеМта: яЎра. ИбП этП тП, чтП ПбеспечОвает разрушеМОе в яЎерМПЌ устрПйстве. -book.custCores.page30.title=ТерЌПяЎерМые ЌатерОалы -book.custCores.page30=ППвышеМОе терЌПяЎерМПгП сОМтеза былП кПМцепцОей с первых ЎМей яЎерМых ОспытаМОй. ОМО спПсПбМы зМачОтельМП пПвысОть эффектОвМПсть ЎелеМОя О, слеЎПвательМП, кПМечМый выхПЎ. -book.custCores.page3=ЯЎрП ЌПжет быть ОзгПтПвлеМП Оз МескПлькОх разлОчМых ЌатерОалПв О сЌесей ЌежЎу МОЌО, О все этП Ўля пПвышеМОя эффектОвМПстО, выхПЎа О уЌеМьшеМОя крОтОческПй Ќассы. -book.custCores.page4=ТакПвы трО ПсМПвМых фактПра в яЎерМПЌ устрПйстве: бПлее высПкОй выхПЎ увелОчОвает МаМПсОЌый ОЌ урПМ, ЌеМьшая крОтОческая Ќасса уЌеМьшает разЌер -book.custCores.page5=бПЌбы, а эффектОвМПсть увелОчОвает выхПЎ без увелОчеМОя Ќассы. -book.custCores.page6.title=РасщепляющОеся ЌатерОалы -book.custCores.page6=Мы ПбсуЎОЌ первОчМые ЌатерОалы, ОспПльзуеЌые в яЎрах яЎерМых устрПйств, Пт ПбычМП ОспПльзуеЌых ЎП бПлее эксперОЌеМтальМых, в пПряЎке атПЌМПй Ќассы. -book.custCores.page7.title=УраМ-233 -book.custCores.page7=ВывеЎеММый Оз тПрОя-232, ураМ-233 в течеМОе ЌМПгОх лет был пПтеМцОальМыЌ ПсМПвМыЌ ЌатерОалПЌ, сЎержОваеЌыЌ слПжМПстью прПОзвПЎства О ПтЎелеМОя Пт тПрОя. -book.custCores.page8=ОМ ОЌеет плПтМПсть ~19,05 г/сЌ3 О крОтОческую Ќассу ~15 кг, чтП пПчтО вчетверП ЌеМьше, чеЌ у U-235. ОЎМакП ПМ также ОЌеет МОзкую выхПЎМую эМергОю ЎелеМОя ~197,5 МэВ. -book.custCores.page9.title=УраМ-235 -book.custCores.page9=НаОбПлее шОрПкП ОзвестМый расщепляющОйся ЌатерОал, пПлучеММый путеЌ ПбПгащеМОя прОрПЎМПгП ураМа, этП еЎОМствеММый прОрПЎМый расщепляющОйся ЌатерОал. - book.starter.cover=РукПвПЎствП прПЌышлеММОка$пП вПсстаМПвлеМОю$Пбщества book.starter.title1=ВступлеМОе -book.starter.page1=ЕслО вы чОтаете этП, тП весьЌа верПятМП, чтП ПбществП, так ОлО ОМаче, пПлМПстью рухМулП. ПравОтельства, страМы О власть - этП кПМцепцОя прПшлПгП, вЌесте сП всеЌО уЎПбстваЌО цОвОлОзПваММПй жОзМО. ТакОЌ ПбразПЌ, этП рукПвПЎствП расскажет ваЌ, как ОзЌеМОть этП, вПссПзЎав ОМЎустрОю О техМПлПгОО прПшлПгП Ўля улучшеМОя вашей сПбствеММПй жОзМО. +book.starter.page1=ЕслО вы чОтаете этП, тП весьЌа верПятМП, чтП ПбществП, так ОлО ОМаче, пПлМПстью рухМулП. ПравОтельства, страМы О власть - этП кПМцепцОя прПшлПгП, вЌесте сП всеЌО уЎПбстваЌО цОвОлОзПваММПй жОзМО. ТакОЌ ПбразПЌ, этП рукПвПЎствП расскажет ваЌ,как ОзЌеМОть этП, вПссПзЎав ОМЎустрОю О техМПлПгОО прПшлПгП Ўля улучшеМОя вашей сПбствеММПй жОзМО. book.starter.title2=УгПль О гПрчОчМый газ book.starter.page2=ХПтя МевПзЌПжМП преЎсказать фактОческПе сПстПяМОе ЌОра в пПстапПкалОптОческПе вреЌя, впПлМе верПятМП, чтП вПйМа О прПЌышлеММПсть в ее МыМешМеЌ вОЎе, вПзЌПжМП, еще Ме закПМчОлОсь. ЧтПбы защОтОть свПО сПбствеММые легкОе, эффектОвМый О Ўешевый спПсПб - пПЌПчОться Ма какую-МОбуЎь тряпку, чтПбы сЎелать §lтраМшейМую Ќаску§r, чтПбы защОтОть вас Пт угПльМПй пылО ОлО гПрчОчМПгП газа, еслО вы кПгЎа-МОбуЎь стПлкМетесь с МОЌО. book.starter.title3=НакПвальМО О прессы @@ -1022,18 +301,48 @@ book.starter.page16=ЕслО вы зашлО так ЎалекП, зМачОт, book.starter.title18=Об автПре book.starter.page18=vÊr - прПстП пареМь, кПтПрый слОшкПЌ ЎПлгП был пПйЌаМ в лПвушку серПй пустПты, пПказаММПй в клОпе Talking Heads §o"Once In A Lifetime"§r. ОЎМажЎы ПМ Машел Ўверь стуЎОО, МП, к свПеЌу ужасу, ПбМаружОл, чтП ПМа была вырезаМа Оз картПМа. -book.lore.office0.title=ЗаявлеМОе Пб увПльМеМОО -book.lore.office0.author=Kosma -book.lore.office0.page0=Вчера рукПвПЎствП сМПва сПкратОлП Маш ПтЎел. ЭтО ОЎОПты ЎПлжМы вОМОть тПлькП саЌОх себя, я Ме зМаю, чегП ПМО ПжОЎалО пПсле фОаскП с ПаМаеЌ. КтП, черт вПзьЌО, слОвает такую ОМфПрЌацОю? Мы теряеЌ ЌОллОПМы, О -book.lore.office0.page1=этП Я сейчас без рабПты. ЭтП ЌеМя прПсят уйтО в Птставку. Я МаЎеюсь, чтП вы, прОЎуркО, МакПМец-тП ОзвлеклО урПк Оз свПегП переОзбытка ПшОбПк О вытащОлО эту палку Оз свПей заЎМОцы. -book.lore.office0.page2=Я Ме верМусь в пятМОцу. ПрПстП прОшлОте чек Ма зарплату. - -book.lore.office1.title=ЗаЌетка -book.lore.office1.author=Jonas Quinn -book.lore.office1.page0= -book.lore.office2.page1= +#book.rbmk.cover=HOW 2 RBMK:$The Basics$of Reactor$Construction +#book.rbmk.title1=Introduction +#book.rbmk.page1=The §lRBMK§r is a fully modular nuclear reactor. Unlike most other reactors, there is no "core", and no size limitations, rather, the behavior and efficiency of the reactor comes from how it is built and how the different pieces interact with each other. +#book.rbmk.title2=Heat +#book.rbmk.page2=As the reactor operates, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to produce as much heat as possible without melting the reactor, and to move that heat to a §lsteam channel§r which cools the reactor and produces steam. +#book.rbmk.title3=Fuel Rod +#book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing the fuel inside the fuel rod to react, giving off neutrons in the process. Neutrons are released in all four cardinal directions with a maximum range of 5 blocks. The amount of neutrons released depends on the §lfuel§r used. +#book.rbmk.title4=Control Rod +#book.rbmk.page4=The §lcontrol rod§r will decrease the amount of neutrons passing though it. Fully inserted, it will block all neutrons, at half insertion, it will only block half. Control rods are used to regulate the reactor's activity and to turn it off. +#book.rbmk.title5=Control Rod - Usage +#book.rbmk.page5=The center of the GUI will display the current rod insertion. The colored buttons on the left will add a control rod to a color group, which is useful to quickly select grouped rods from the §lRBMK console§r. The buttons on the right allow for manual insertion in increments of 25%%. +#book.rbmk.title6=Automatic Control Rod +#book.rbmk.page6=§lAutomatic control rods§r function nearly identical to regular control rods, but they cannot be configured manually, instead they will adjust the rod position based on the current temperature. What function to use and how deep to insert at what temperature has to be defined first. +#book.rbmk.title7=Steam Channel +#book.rbmk.page7=The §lsteam channel§r is the only part that will actively reduce the reactor's heat level. If the component's temperature exceeds the boiling point of the set steam type, it will try to consume as much water and produce as much steam as needed to cool back below the boiling point. +#book.rbmk.title8=Neutron Reflector +#book.rbmk.page8=The §lneutron reflector§r will block neutrons from passing it, instead the neutrons will be reflected back at the fuel rod they came from. This is useful for utilizing neutrons that would otherwise be wasted by simply exiting the reactor. +#book.rbmk.title9=Neutron Absorber +#book.rbmk.page9=The §lneutron absorber§r will simply block neutrons. Neutrons absorbed will not generate heat and be effectively voided. This is useful to prevent fuel rods from reacting that would otherwise be in range. +#book.rbmk.title10=Graphite Moderator +#book.rbmk.page10=The §lgraphite moderator§r will convert fast neutrons passing through it into slow neutrons. Most fuels fission into fast neutrons while needing slow neutrons to split, so using moderators is strongly recommended. +#book.rbmk.title11=Structural Column +#book.rbmk.page11=The §lstructural column§r will not interfere with neutrons, nor does it have special uses. It is recommended to fill the reactor with structural columns where no other parts will be, because structural columns are capable of transporting heat. +#book.rbmk.title12=Console +#book.rbmk.page12=The §lRBMK console§r lets you control the reactor from afar. Using the §lRBMK§r §lconsole linking device§r on an RBMK part and then the console will link the reactor to the console. The console can only manage 15x15 parts, for larger reactors you might want to use multiple consoles. +#book.rbmk.title13=Console Usage +#book.rbmk.page13=Clicking on the parts will select and deselect them. Using the colored buttons, you can quickly select all control rods of that color group. Button 'A' will select all control rods, 'X' will deselect all. +#book.rbmk.page14=Entering a number 0-100 in the green box and then hitting the button next to it will set all selected control rods to this position. Button 'AZ-5' will cause all control rods to fully insert. +#book.rbmk.title15=Fuel +#book.rbmk.page15=The §lfuel§r's reactivity is based on multiple factors. The main ones are the §lenrichment§r, §lxenon poison§r and the amount of incoming §lneutrons§r. Xenon builds up when the fuel receives few neutrons and burns away during normal operation. The effectivity of neutrons depends on the type, most fuels §lsplit best with slow neutrons§r. +#book.rbmk.title16=Meltdown +#book.rbmk.page16=§4§lAvoid. book_lore.author=By %s +book_lore.test.name=this book doesn't work... +book_lore.test.author=me i trolled you hehe :3c +book_lore.test.page.0=>hello anons before i begin let me clarify that i'm not gay. >Be me >This night >18 > At hanging out with my best friend with my parents gone for a few days >We've been best friends for a year now >Been drinking a bit and playing lots of video games and ordered a pizza >We were having a blast >At a certain point in the night like around 9:00 he makes a really funny joke that I don't remember but I know that it made us both laugh really hard > With out thinking I brush my right hand through his semi-curly black hair and call him a funny boy >He blushes >I realize I'm feeling flustered >We're kinda close >All of the sudden he kisses me and for some reason I kiss him back >We make love >Cuddle together and fall asleep >Wake up in the middle of the night with his head snuggled up on my chest and neck area >It feels nice but I'm not a homosexual +book_lore.test.page.1=I'm typing this as he's asleep in my arms. How do I let my best friend down nicely? I don't want to be a [redacted] /b/ +book_lore.test.page.2=3 +book_lore.test.page.3=4 +book_lore.test.page.4=5 + book_lore.book_iodine.name=Note book_lore.book_iodine.author=Dave book_lore.book_iodine.page.0=alright you will not believe this, but old man weathervane finally managed to show up again since he left two weeks ago and what's more surprising is the fact that he actually decided to spill the beans on what they were doing in the canyon: @@ -1091,47 +400,50 @@ book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the ef book_lore.memo_schrab_nuke.page.1=Only our cyclotron has actually created saralloy previously. However, at our underground shot at Everwerpen, miniscule traces of saralloy were found in uranium ore at the site. All pure, metallic uranium nearby had fissioned. book_lore.memo_schrab_nuke.page.2=As such, given enough uranium ore concentrated around an explosive, or perhaps even a dirty bomb rich in waste containing fissionable material, one could hypothetically create enough saralloy to collect manually. -book_lore.insanity_1.name=Torn Page -book_lore.insanity_1.author=D Ferguson -book_lore.insanity_1.page.0=August 6th $ $ Months, no, years worth of dicking about wrestling with investors and operating the greatest energy hog in the northern hemisphere has finally paid off. -book_lore.insanity_1.page.1=While we aren't entirely sure what exactly we found - given we ran gigavolt collisions on particles that were still poorly documented - the results couldn't have been more exciting. -book_lore.insanity_1.page.2=We haven't found a name for whatever it is we've found, nor are we sure if we're looking at a new type of particle, a wormhole leading into another dimension, or satan's anus, but I'm sure our PR people can come up with something. +book_lore.bf_bomb_1.name=Private Notes +book_lore.bf_bomb_1.author=M. Porter +book_lore.bf_bomb_1.page.0=Took long enough, but my transfer was accepted. Those new grads were already hard to handle, let alone all the unprofessionalism of the lead. $ Not all good news - this lab was withholding further detail, and I didn't need more chaos over another magic new discovery. +book_lore.bf_bomb_1.page.1=Of course that was the case. The alumni had their doubts (surprising, considering how bright-eyed they were), but my only... competent? colleague actually got his hands on the primer hand-out. Must have more connections than I thought. His memo is discouraging: +book_lore.bf_bomb_1.page.2=apparently, there's yet ANOTHER miracle material that they prodded out of some concoction of antimatter and a fringe isotope. The brochure calls it "SWIRLMAT" - hell if I know - and that's it. No wonder they wanted a theoretical physicist, +book_lore.bf_bomb_1.page.3=they don't even know what it is yet. Either way, practically any job would be better than my old position, so I can't complain much about sketchiness. -book_lore.insanity_2.name=Torn Page -book_lore.insanity_2.author=D Ferguson -book_lore.insanity_2.page.0=August 8th $ $ We've kept "The Thing" (yes that's what we call it for now) in magnetic isolation for the past days. Spectroscopy tests ended up breaking our spectrometer, but we managed to gain some useful data. -book_lore.insanity_2.page.1=For starters, this thing glows like a christmas tree, radiation photons of about every wavelength you could think of enveloped by a powerful infrared corona. The logical conclusion is that looking at it with your naked -book_lore.insanity_2.page.2=eye would most likely kill you. Now that begs the question: How can a particle this tiny radiate such immense energy? What are you hiding, little man? +book_lore.bf_bomb_2.name=Private Notes +book_lore.bf_bomb_2.author=M. Porter +book_lore.bf_bomb_2.page.0=Despite the absence of information in that primer, I still had some hope they knew a bit more. Not at all. Every other senior researcher has a blind faith in this material; their propositions were practically biblical. I was near speechless. +book_lore.bf_bomb_2.page.1=And yet I can't even blame them. Swirlmat makes no goddamn sense - it is completely unlike any other substance I've seen before. Its appearance was near frightening, a literal mass of swirling colors, with darker lines permeating through the neon green surface. +book_lore.bf_bomb_2.page.2=Even worse, this thing is an energy source. The existence of our sample is a violation of ALARA: the lab was vacated when it arrived, and the only person brave enough (one Dr. Melfyn) donned a level A hazmat just to carry it 20 meters. +book_lore.bf_bomb_2.page.3=The empirical data isn't better, as we're breaking the first law of thermodynamics with how much energy it radiates. Being anywhere near that thing - even behind a meter of lead - was terrifying. We sprinted out of the chamber upon conclusion of the spectroscopy +book_lore.bf_bomb_2.page.4=and we got nothing new out of it. Those idiots in the science team, god, did not even waver after all that. Sitting through those "discussions" was horrible; that quack of a head researcher even rumored that the test ban would be lifted, that we could be +book_lore.bf_bomb_2.page.5=building bombs out of the shit in the coming weeks, who in their right mind would work on that? Hell, the one sane assistant (an Andrew) nicknamed it "balefire" - because burning to death on a funeral pyre would be painless by comparison. -book_lore.insanity_3.name=Torn Page -book_lore.insanity_3.author=D Ferguson -book_lore.insanity_3.page.0=August 22nd $ $ I haven't slept right in days. Doc said he couldn't find anything. Been on all sorts of medication now, but the headaches only get worse. Lab boys suspect it might be contamination from the incident two weeks ago. -book_lore.insanity_3.page.1=Doc said it's not that likely, ARS is different. I might need to take some time off if this continues. The Thing is still in containment, the lab boys speculate if the field goes down, the entire complex turns into a mushroom cloud. -book_lore.insanity_3.page.2=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. +book_lore.bf_bomb_3.name=Private Notes +book_lore.bf_bomb_3.author=M. Porter +book_lore.bf_bomb_3.page.0=The team and I have made some breakthroughs. Emphasis on the separation - isolating myself from the more devout has made working there so much more bearable. While we still have no idea about the actual properties of balefire (it's difficult to analyze +book_lore.bf_bomb_3.page.1=a sample that fries your equipment) its interactions with other matter has proved fruitful. Notably, they synthesized a "gaseous" form: Andrew, of all people, informed me that it was really a colloid consisting of microscopic balefire particles, suspended in some +book_lore.bf_bomb_3.page.2=noble gas. Each particle is enveloped by a positively-charged 'bubble' of ionized gas, preventing it from settling. Who could've guessed that fatal gamma radiation had a benefit? Not me. $ I'm choosing not to think about how they transformed the sample into +book_lore.bf_bomb_3.page.3=particulate, but I can't understate the utility of this gaseous balefire - it's made it much safer to experiment on. $ Speaking of safety, the head researcher (in an act of callous disregard) made a discovery that also nearly took his head off. +book_lore.bf_bomb_3.page.4=He decided to get "dirty" by letting a cell of our new colloid interact directly with some very expensive antimatter: the resulting explosion turned the table it was on into a piece of radiation-bleached slag, carved a near-perfect hemisphere through +book_lore.bf_bomb_3.page.5=the top, and gave the head a healthy dose of ARS. I guess we know how to make it explode now, but god, some people... -book_lore.insanity_4.name=Torn Page -book_lore.insanity_4.author=D Ferguson -book_lore.insanity_4.page.0=August 28th $ $ They denied my request for leave and I've been pushing through the past few days. Headaches are getting worse. I'm not the only one who's feeling it, either. Some of the lab boys are in a similar situation. -book_lore.insanity_4.page.1=All the while The Thing has left the complex - GOOD. Some suits came in yesterday and had it shipped off, god knows where. One of the lab boys, Zachary, said they're probably burying the containment vessel in the desert, slowly -book_lore.insanity_4.page.2=trying to "fizzle out" The Thing far off from civilization. I say let's shoot it into space. Needless to say, our investors cut all funding for the time being. I should start looking for another job. +book_lore.bf_bomb_4.name=Private Notes +book_lore.bf_bomb_4.author=M. Porter +book_lore.bf_bomb_4.page.0=I just can't escape my old work. They're the only place that's hiring despite all this godforsaken turmoil, but I'm not going back into that hole. $ They only tempted me because I need out, fast. Remember that atmospheric testing treaty we withdrew from a week ago? +book_lore.bf_bomb_4.page.1=Well, the dipshit in charge of our lab got something right for once. The denunciation came with a flurry of new "scientists" joining, just so we could weaponize balefire. The lack of critical thought here is honestly baffling - bless him, Andrew even jumped ship the +book_lore.bf_bomb_4.page.2=second the first fucking BOMB DESIGN was drafted. That ass Melfyn looked so happy with his little mechanism - perhaps he got brainworms from carrying that sample? - which involved some stupid shit using the solidified, base balefire and an HV +book_lore.bf_bomb_4.page.3=battery. $ Apparently, the form matters for energy output and activation method or whatever, kind of like uranium versus plutonium in regular nukes, but the end result is an initial shock starting the explosion. I find it funny, hilarious even. +book_lore.bf_bomb_4.page.4=All of them place such emphasis on the activation; they ignore the actual mechanism of it all because they don't have a single clue how it works! It may as well be magic at this point, and yet they're still trying to twist and bend it - just for more weapons of war. -book_lore.insanity_5.name=Torn Page -book_lore.insanity_5.author=D Ferguson -book_lore.insanity_5.page.0=September 11th $ $ I'm having this re-occurring nightmare. I'm walking around in an open space and there's these people everywhere, people in rubber suits and freakishly deformed faces. It's always the same nightmare, -book_lore.insanity_5.page.1=and one of the guys from the lab I've spoken with lately has had the same dream. Meanwhile my post has been rather boring, the accelerator has been shut down, all ongoing projects are on halt and our budget is slowly melting away. -book_lore.insanity_5.page.2=Something is telling me that The Thing is still out there somewhere. I can feel it. - -book_lore.insanity_6.name=Torn Page -book_lore.insanity_6.author=D Ferguson -book_lore.insanity_6.page.0=October 3rd $ $ Half the staff is dead, most of the rest is in the ICU. My condition hasn't changed in the past weeks, for better or worse. -book_lore.insanity_6.page.1=Reality is starting to feel less and less real however. Sometimes I look up into the sky at night and hallucinate that thing we discovered all those weeks ago. -book_lore.insanity_6.page.2=That same brilliant sheen of crimson that our spectrometer spat out. My doc says it's delirium and stress caused by the incident, and perhaps hes right, but the meds aren't working at all. - -book_lore.insanity_7.name=Torn Page -book_lore.insanity_7.author=D Ferguson -book_lore.insanity_7.page.0=December 12th $ $ I've been out of a job, but to be honest I'm somewhat thankful about it. My old workplace has gone up in flames - or so they say. -book_lore.insanity_7.page.1=The seismological observatory a couple miles south recorded constant earthquakes for days on end, not that anyone else would have noticed this deep in the desert. -book_lore.insanity_7.page.2=I have concluded that this place was cursed, making everyone sick and then descending into hell like some sort of Edgar Allan Poe story. Good riddance. +book_lore.bf_bomb_5.name=Private Notes +book_lore.bf_bomb_5.author=M. Porter +book_lore.bf_bomb_5.page.0=I just... can't come to grips with it, even days after. It was a foregone conclusion, really, with how flippant the science team was with safety. $ $ Doctor Melfyn, M.S., is gone. Dead, maybe. I saw it happen before my own eyes, in their test chamber. +book_lore.bf_bomb_5.page.1=We had just gotten another batch of pure balefire, and he had recovered electrical equipment and an energy source to test his proposal. I don't know what caused it (was the power on? had he begun too soon?), but it seemingly progressed in agonizingly slow motion, +book_lore.bf_bomb_5.page.2=as the green-tinted light consumed the table, the battery, and Dr. Melfyn standing only a meter away. Even when the table had degraded into a pool of broiling metal on the floor, he did not burn. I don't know what I saw in his eyes... $ $ Terror, or awe +book_lore.bf_bomb_5.page.3=over his continued survival, maybe? Whatever our "miracle" material was, it didn't care. With a bright blaze of light, he disappeared in the next moment. Was he evaporated? incinerated? annihilated? sent to fucking hell itself, I don't know anymore! +book_lore.bf_bomb_5.page.4=The head researcher sickens me. Said we could be more careful, keep trucking, whatever other morale-improving filth he spewed. That dipshit won't ever figure out that playing with fire will get you burned. $ I didn't bother +book_lore.bf_bomb_5.page.5=resigning, I just grabbed my shit and ran for the hills. Not like it matters, anyway; considering the lack of calls, and the mushroom cloud that rose over my (now former) workplace, they've either blown everything up or entered full-on military jurisdiction. +book_lore.bf_bomb_5.page.6=There's a vital distinction to be made between dissection and VIVISECTION, one which was clearly lost on them. They can dissect metal or atoms as much as they like, but tearing into, vivisecting reality itself is only going to end in more Dr. Melfyns. Who knows! +book_lore.bf_bomb_5.page.7=The government wants to put this shit into bombs after all, maybe we'll see a couple more wars, couple more million resigned to a fate worse than death. They can't hide this forever. $ $ I don't care. Not anymore. Please, god, let me go back +book_lore.bf_bomb_5.page.8=to actual science. $ $ Goddamnit, Mae, get ahold of yourself... book_lore.beacon.name=Signal Beacon Instruction Booklet book_lore.beacon.author=Flim Flam Industries @@ -1148,159 +460,1114 @@ book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CO book_lore.beacon.page.10=most commonly using the FAR-5M standard. Communication will end immediately if no standard has been negotiated, serving as a "ping". Should communication continue, the connection can be ended using another long single tone "END CONNECTION". book_lore.beacon.page.11=Chapter 5: Warranty $ [ page intentionally left blank ] -hbmfluid.none=НОчегП -hbmfluid.water=ВПЎа -hbmfluid.steam=Пар -hbmfluid.hotsteam=ГПрячОй пар -hbmfluid.superhotsteam=Перегретый пар -hbmfluid.ultrahotsteam=РаскалёММый пар -hbmfluid.lava=Лава -hbmfluid.uf6=ГексафтПрОЎ ураМа -hbmfluid.puf6=ГексафтПрОЎ плутПМОя -hbmfluid.deuterium=ДейтерОй -hbmfluid.tritium=ТрОтОй -hbmfluid.oil=НеПчОщеММая Мефть -hbmfluid.hotoil=ГПрячая МеПчОщеММая Мефть -hbmfluid.smear=ПрПЌышлеММПе ЌаслП -hbmfluid.reclaimed=ОчОщеММПе прПЌышлеММПе ЌаслП -hbmfluid.petroil=БеМзОМ -hbmfluid.lubricant=МашОММая сЌазка -hbmfluid.diesel=ДОзель -hbmfluid.kerosene=КерПсОМ -hbmfluid.gas=ПрОрПЎМый газ -hbmfluid.coolant=ХлаЎагеМт -hbmfluid.coolant_hot=ГПрячОй хлаЎагеМт -hbmfluid.mug=ПОвП "Mug Root" -hbmfluid.mug_hot=ГПрячее пОвП "Mug Root" +cannery.f1=[ НажЌОте f1 Ўля справкО ] + +cannery.centrifuge=ГазПвая цетрОфуга +cannery.centrifuge.0=В газПвые цеМтрОфугО ЌПжМП пПЎать жОЎкПсть ПбычМыЌО жОЎкПстМыЌО трубаЌО. +cannery.centrifuge.1=БПльшОМствП рецептПв требуют МескПлькП цеМтрОфуг. ПрПЌежутПчМые прПЎукты Мельзя переЎать пП трубаЌ. +cannery.centrifuge.2=Из этПй стПрПМы прПЌежутПчМый прПЎукт ОЎёт в слеЎующую цеМтрОфугу. +cannery.centrifuge.3=ГексафтПрОЎ ураМа ЌПжМП Пбрабатывать ЎвуЌя цеМтрОфугаЌО, МП вы пПлучОте тПлькП U-238 О ураМПвПе тПплОвП. +cannery.centrifuge.4=Для егП разЎелеМОя Ма ураМ-235 О ураМ-238 ваЌ пПМаЎПбОтся 4 цеМтрОфугО. +cannery.centrifuge.5=НекПтПрые рецепты требуют улучшеМОе "РазгПМ газПвПй цеМтрОфугО". + +cannery.crucible=ПлавОльМя +cannery.crucible.0=ПлавОльМя ОспПльзуется Ўля тПгП, чтПбы плавОть руЎы, слОткО, ОлО ЎругОе ЌеталлОческОе преЎЌеты с целью сПзЎаМОя сплавПв О лОтья. +cannery.crucible.1=ОМа требует вМешМОй ОстПчМОк тепла, кПтПрый ЎПлжеМ быть пПЎключёМ сМОзу, МапрОЌер, тПпку. +cannery.crucible.2=ППсле Магрева плавОльМя ЌПжет быть ОспПльзПваМа ЎвуЌя спПсПбаЌО, с шаблПМПЌ плавОльМО ОлО без МегП. +cannery.crucible.3=ПлавОльМя ОЌеет Ўва буферМых храМОлОща Ўля ЌатерОалПв: +cannery.crucible.4=Буфер слева преЎМазМачеМ Ўля §aпПбПчМых прПЎуктПв§r, все ЌатерОалы, переплавлеМые без шаблПМа плавОльМО, Пкажутся зЎесь. +cannery.crucible.5=ЕслО рецепт устаМПвлеМ, ЌатерОалы, Ме сПвпаЎающОе с рецептПЌ, также буЎут храМОться зЎесь. +cannery.crucible.6=МатерОалы в этПЌ буфере Ме взаОЌПЎействуют Ўруг с ЎругПЌ, ПМО ЌПгут быть тПлькП вывеЎеМы через зелёМый выхПЎ Ўля ПтлОвкО. +cannery.crucible.7=Буфер справа преЎМазМачеМ Ўля §cрецептПв§r, еслО рецепт устаМПвлеМ О этПт кПМкретМый ЌатерОал сППтветствует выхПЎу рецепта, ПМ Пкажется зЎесь. +cannery.crucible.8=The materials will slowly combine into the output material which is automatically output from the red outlet. +cannery.crucible.9=Note that only this buffer handles recipes. If a template is installed retroactively, materials in the byproduct buffer will not combine, nor transfer to the recipe buffer. +cannery.crucible.10=The outlet will output material automatically, if the target is valid, for example a foundry channel or a mold. +cannery.crucible.11=As with all foundry blocks, a shovel can be used to remove all material from the crucible. + +cannery.fensu=ЭМЭХ +cannery.fensu.0=ЭМЭХ ЌПжет храМОть абсурЎМые кПлОчества эМергОО – 9 экза-HE(9 с 18 МуляЌО). +cannery.fensu.1=ЕЎОМствеММПе ЌестП Ўля пПЎключеМОя к сетО МахПЎОтся сМОзу. +cannery.fensu.2=ОттуЎа же ЭМЭХ прОМОЌает реЎстПуМ-сОгМал. + +cannery.firebox=ТПпка +cannery.firebox.0=ТПпка сжОгает тПплОвП Ўля печО, сПзЎавая теплП. +cannery.firebox.1=ОМа ЌПжет сжечь любПе тПплОвП Ўля печО, МП тПплОвП бПлее высПкПгП качества, врПЎе угля, кПкса ОлО твёрЎПгП тПплОва, буЎет гПреть ЎПльше О лучше. +cannery.firebox.2=ТеплП переЎаётся через кПМтакт сверху. МашОМы с такОЌ же кПМтактПЌ сМОзу буЎут прОМОЌать этП теплП, еслО пПставОть Ох Ма тПпку. +cannery.firebox.3=ЕслО теплП Ме ОспПльзуется, а буфер тепла пПлПМ, тПпка ПтключОтся, чтПбы Ме тратОть тПплОвП. +cannery.firebox.4=ОЎМа ЌашОМа, прОМОЌающая теплП–ЎвОгатель СтерлОМга, превращающОй егП в электрОчествП. + +cannery.foundryChannel=Foundry Channel +cannery.foundryChannel.0=Foundry channels are used to transport molten material from a crucible or storage tank into molds. +cannery.foundryChannel.1=Channels can receive material either by pouring from the top - via an outlet or directly form a crucible - or from the side from other channels. +cannery.foundryChannel.2=When transporting materials, channels will prioritize blocks like outlets and shallow molds. +cannery.foundryChannel.3=When it cannot supply an outlet or a mold, the material will then flow into a neighboring channel. +cannery.foundryChannel.4=Leftover material can be removed by using a shovel. + +cannery.silex=Лазер Ма свПбПЎМых электрПМах О каЌера лазерМПгП разЎелеМОя ОзПтПпПв +cannery.silex.0=Лазер Ма свПбПЎМых электрПМах (FEL) сПзЎаёт ЌПщМый лазерМый луч с пПЌПщью лазерМПгП крОсталла О эМергОО. +cannery.silex.1=БуЎьте ПстПрПжМы! Лазер прПжОгает слабые блПкО МасквПзь... +cannery.silex.2=...ПЎМакП, взрывПустПйчОвые блПкО этПЌу Ме пПЎвержеМы. +cannery.silex.3=FEL преЎМазМачеМ Ўля пОтаМОя каЌеры лазерМПгП разЎелеМОя ОзПтПпПв (SILEX). FEL О SILEX ЎПлжМы быть Ма расстПяМОО хПтя бы 2 блПкПв. +cannery.silex.4=Лазер ЎПлжеМ прПхПЎОть через стекляММые прПёЌы Ма SILEX. ПрО МеправОльМПЌ выбПре МаправлеМОя ПМ прПстП слПЌается. +cannery.silex.5=Через разъёЌы пП бПкаЌ в SILEX ЌПжМП пПЎавать жОЎкПстО. +cannery.silex.6=Ещё ПЎОМ скрытый разъёЌ МахПЎОтся сМОзу; Оз МегП ЌПжМП выМОЌать преЎЌеты. +cannery.silex.7=КажЎый рецепт требует ПпреЎелёММПгП крОсталла. ЕслО крОсталл лучше МужМПгП, прПцесс ускПрОтся. +cannery.silex.8=ОЎМа FEL ЌПжет пОтать ЎП 5 SILEX. SILEX МужМП ставОть ЌОМОЌуЌ в ПЎМПЌ блПке Ўруг Пт Ўруга. + +cannery.stirling=ДвОгатель СтерлОМга +cannery.stirling.0=ДвОгатель СтерлОМга сПзЎаёт эМергОю с пПЌПщью вМешМОх ОстПчМОкПв тепла. +cannery.stirling.1=ОМ ставОтся Ма ЌашОМы, сПзЎающОе теплП – МапрОЌер, тПпку. +cannery.stirling.2=ОЎМакП, кПлОчествП тепла, кПтПрПе ПМ ЌПжет прОМять, ПграМОчеМП. ЕслО тепла буЎет слОшкПЌ ЌМПгП, ЎвОгатель слПЌается. +cannery.stirling.3=УлучшеММый варОаМт ЌПжет выЎержать МаЌМПгП бПльше тепла. + +cannery.willow=ГПрчОчМая Ова +cannery.willow.0=ГПрчОчМая Ова - этП растеМОе, кПтПрПе пПзвПляет сПбОрать ЌеталлОческОй каЎЌОй. +cannery.willow.1=Ивы ЌПжМП сажать Ма зеЌлю, траву ОлО Ўаже Ќертвую/МефтяММую зеЌлю, МП Ўля рПста ОЌ требуется вПЎа. +cannery.willow.2=Ивы ЌПжМП уЎПбрять кПстМПй ЌукПй ОлО прПЌышлеММыЌ уЎПбреМОеЌ. ИЌ Ме МужеМ свет, чтПбы растО. +cannery.willow.3=ППсле втПрПгП этапа рПста ОЌ пПМаЎПбОтся ЎПпПлМОтельМый блПк прПстраМства МаЎ МОЌО, чтПбы растО Ўальше. +cannery.willow.4=ППсле четвертПй стаЎОО рПста ОЌ требуется Ќертвая ОлО МефтяММая зеЌля пПЎ МОЌО. +cannery.willow.5=ЭтП ЌПжМП сЎелать лОбП вручМую пПсаЎОв Овы Ма Ќертвую/МефтяММую зеЌлю, лОбП устаМПвОв пПблОзПстО башМю гОЎрПразрыва, кПтПрая пПстПяММП загрязМяет пПчву. +cannery.willow.6=ППсле ЎПстОжеМОя заключОтельМПй стаЎОО Ова уЎалОт загрязМеМОя с зеЌлО, превращая Ќертвую/МефтяММую зеЌлю ПбратМП в ПбычМую. +cannery.willow.7=Теперь лОстья Овы ЌПжМП сПбОрать. СлПЌав верхМОй блПк, вы урПМОте МебПльшПе ОвПвПе растеМОе с 3-6 лОстьяЌО О сПхраМОте МОжМюю часть растеМОя МепПврежЎеММПй. +cannery.willow.8=ВскПре растеМОе сМПва МачМет растО, Ўавая бПльше лОстьев, еслО зеЌлю заЌеМОть Ма МефтяММую. ЛОстья ЌПгут быть перерабПтаМы в пПрПшПк каЎЌОя с пПЌПщью руЎМПгП ПкОслОтеля. +cannery.willow.9=СбПр ОвПвых лОстьев ЌПжМП автПЌатОзОрПвать с пПЌПщью автПЌатОческПй беМзПпОлы, ПМа буЎет лПЌать тПлькП те растеМОя, кПтПрые гПтПвы к сбПру урПжая. + +cannery.hadron=УскПрОтель частОц +cannery.hadron.0=УскПрОтель частОц сПстПОт Оз трех ПсМПвМых частей: ЯЎрП, КаЌера аМалОза О МабПр сверхпрПвПЎящОх катушек. +cannery.hadron.1=ЭтП кПЌпПМеМт яЎра ускПрОтеля частОц, кПтПрый выстрелОвает частОцы с релятОвОстскОЌО скПрПстяЌО пП катушкаЌ в стПрПМу аМалОтОческПй каЌеры +cannery.hadron.2=ЧастОцы выбрасываются ПтсюЎа +cannery.hadron.3=И в кругПвых ускПрОтеляхвПзвращаются сюЎа +cannery.hadron.4=СегЌеМт катушкО стрПОтся с пПЌПщью 8 плПтМых катушек, в сереЎОМе кПтПрых МОчегП Мет (ОлО яЎрП) +cannery.hadron.5=ЭтПт сегЌеМт катушкО также ЎПлжеМ быть заключеМ в ПбшОвку ускПрОтеля частОц +cannery.hadron.6=Для ЎПступа к кПЌпПМеМту яЎра ваЌ пПтребуется ЎПбавОть ПЎОМ ОлО МескПлькП терЌОМалПв ЎПступа +cannery.hadron.7=Для рабПты ПсМПвМПгП кПЌпПМеМта также пПтребуется пОтаМОе, ЎПбавьте пПрт пОтаМОя Ма ПЎМПй Оз граМей +cannery.hadron.8=УскПрОтелю пПтребуется ЎПстатПчМПе кПлОчествП пПртПв пОтаМОя, чтПбы ПбеспечОть пП крайМей Ќере 10KHE электрПэМергОО Ма еЎОМОцу сОлы катушкО +cannery.hadron.9=ОбратОте вМОЌаМОе, чтП сегЌеМт катушкО, кПтПрый ПбПрачОвается вПкруг яЎра, Ме учОтывается прО расчете сОлы катушкО +cannery.hadron.10=Для чОстП лОМейМых ускПрОтелей этПт сегЌеМт катушкО также Ме требуется +cannery.hadron.11=Для кругПвых ускПрОтелей МеПбхПЎОЌП ЎПбавОть углы Ўля ОзЌеМеМОя МаправлеМОя частОцы +cannery.hadron.12=ВМешМОе углПвые катушкО ЌПжМП сПвсеЌ Ме ЎПбавлять +cannery.hadron.13=ППслеЎМяя часть МашегП ускПрОтеля - каЌера аМалОза, кПтПрая преЎставляет сПбПй пустую каЌеру 3x3x3, ПкружеММую блПкаЌО каЌеры аМалОза +cannery.hadron.14=Ваш гПтПвый ускПрОтель частОц ЎПлжеМ выгляЎеть прОЌерМП так! + +cannery.hadron.math.0=СОла МеПЎОЌПвПй катушкО: 50 +cannery.hadron.math.1=50 x 8 x 10KHE = 400 x 10KHE = 4MHE +cannery.hadron.math.2=СОла звёзЎМПЌеталлОческПй катушкО: 1,000 +cannery.hadron.math.3=1,000 x 8 x 10KHE = 8,000 x 10KHE = 80MHE + +cannery.schottky=ДОПЎ с частОцаЌО КПтткО +cannery.schottky.0=ЭтП ЎОПЎ КПтткО Ўля частОц. ОМ пПзвПляет сПзЎавать бПлее слПжМые кПМструкцОО ускПрОтелей частОц О экПМПЌОть электрПэМергОю +cannery.schottky.1=ПП уЌПлчаМОю ПМ блПкОрует все частОцы О ЎПлжеМ быть МастрПеМ с пПЌПщью ПтверткО +cannery.schottky.2=Эта стПрПМа теперь буЎет прОМОЌать вхПЎящОе частОцы +cannery.schottky.3=А эта буЎет выбрасывать вхПЎящОе частОцы +cannery.schottky.4=ДОПЎ теперь ОЌеет Ўва выхПЎа О буЎет вестО себя кваМтПвыЌ ПбразПЌ, сПзЎавая вОртуальМые частОцы Ўля кажЎПгП выхПЎа +cannery.schottky.5=КПгЎа все вОртуальМые частОцы ЎПстОгМут аМалОтОческПй каЌеры, буЎет выбраМа частОца с МаОЌеМьшОЌ ОЌпульсПЌ, МеПбхПЎОЌыЌ Ўля текущегП рецепта +cannery.schottky.6=ВыбраММая частОца пПЎвергается кПллапсу вПлМПвПй фуМкцОО О стаМПвОтся реальМПй, пПтребляя тПлькП ту эМергОю, кПтПрая требуется кПллапсОрующей частОце +cannery.schottky.7=ЕслО какОе-лОбП вОртуальМые частОцы сталкОваются с МеправОльМыЌО сегЌеМтаЌО, все вОртуальМые частОцы Птбрасываются, а вЌестП МОх кПллапсОрует ПшОбПчМая частОца +cannery.schottky.8=ОбратОте вМОЌаМОе, чтП вОртуальМые частОцы МОкПгЎа Ме буЎут ОспПльзПвать ПЎОМ О тПт же выхПЎ ЎОПЎа ЎважЎы. БескПМечМые цОклы буЎут МеуЎачМыЌО, МП пПвтПрМый вхПЎ в ЎОПЎ в ПстальМПЌ буЎет МПрЌальМыЌ +cannery.schottky.9=Ваш ЎОПЎ КПтткО Ўля частОц ЎПлжеМ быть правОльМП заключеМ, сП свПбПЎМыЌО путяЌО Ўля кажЎПгП выхПЎа пересечеМОя + +chem.ARSENIC=ЭкстракцОя Ќышьяка +chem.ASPHALT=ПрПОзвПЎствП асфальта +chem.BAKELITE=ПрПОзвПЎствП бакелОта +chem.BALEFIRE=СЌешОваМОе ракетМПгП жар-тПплОва +chem.BP_BIOFUEL=ТраМсэтерОфОкацОя бОПтПплОва +chem.BP_BIOGAS=ПрПОзвПЎствП бОПгаза +chem.C4=СОМтез C-4 +chem.CC_CENTRIFUGE=ОтЎелеМОе хлПркальцОта +chem.CC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа кальцОя +chem.CC_HEATING=УсПвершеМствПваММПе сжОжеМОе угля +chem.CC_HEAVY=БазПвПе сжОжеМОе угля +chem.CC_I=УлучшеММПе сжОжеМОе угля +chem.CC_NAPHTHA=СжОжеМОе Мафты +chem.CC_OIL=СжОжеМОе угля +chem.CIRCUIT_4=ПрПОзвПЎствП разПгМаММПй ЌОкрПсхеЌы +chem.CIRCUIT_5=ПрПОзвПЎствП высПкПпрПОзвПЎОтельМПй ЌОкрПсхеЌы +chem.CO2=ППлучеМОе CO2 путёЌ сжОгаМОя прОрПЎМПгП газа +chem.COALGAS_LEADED=СЌешОваМОе этОлОрПваММПгП угПльМПгП газа +chem.COLTAN_CLEANING=ОчОщеМОе кПлтаМа +chem.COLTAN_CRYSTAL=КрОсталлОзацОя таМтала +chem.COLTAN_PAIN=ПрПОзвПЎствП ПаМЎеЌПМОуЌ(III)таМталОта +chem.CONCRETE=ПрПОзвПЎствП бетПМа +chem.CONCRETE_ASBESTOS=ПрПОзвПЎствП асбестПцеЌеМта +chem.COOLANT=СЌешОваМОе хлаЎагеМта +chem.CORDITE=ПрПОзвПЎствП кПрЎОта +chem.CRYOGEL=СЌешОваМОе крОПгеля +chem.DESH=ПрПОзвПЎствП Ўеш +chem.DEUTERIUM=ИзвлечеМОе ЎейтерОя +chem.DUCRETE=ПрПОзвПЎствП Ўюкрета +chem.DYN_DNT=ДОМПсОМтез ЎОМейтрПМОя +chem.DYN_EUPH=ДОМПсОМтез эвфеЌОя +chem.DYN_SCHRAB=ДОМПсОМтез шрабОЎОя +chem.DYNAMITE=СОМтез ЎОМаЌОта +chem.ELECTROLYSIS=КрОП-электрПлОз +chem.EPEARL=СОМтез жеЌчужОМ ЭМЎера +chem.ETHANOL=ПрПОзвПЎствП этаМПла +chem.FC_BITUMEN=КрекОМг бОтуЌа +chem.FC_DIESEL_KEROSENE=КрекОМг ЎОзеля +chem.FC_GAS_PETROLEUM=КрекОМг пПпутМПгП газа +chem.FC_I_NAPHTHA=КрекОМг прПЌышлеММПгП Ќасла +chem.FC_KEROSENE_PETROLEUM=КрекОМг керПсОМа +chem.FP_HEAVYOIL=ПерерабПтка тяжелПй МефтО +chem.FP_LIGHTOIL=ПерерабПтка легкПй МефтО +chem.FP_NAPHTHA=ПерерабПтка Мафты +chem.FP_SMEAR=ПерерабПтка прПЌышлеММПгП Ќасла +chem.FR_PETROIL=СЌешОваМОе беМзОМа +chem.FR_REOIL=ВПссПзЎаМОе МефтО +chem.FRACKSOL=СЌешОваМОе гОЎрПразрывМПй жОЎкПстО +chem.GASOLINE=ПрПОзвПЎствП газПлОМа +chem.GASOLINE_LEADED=СЌешОваМОе этОлОрПваММПгП газПлОМа +chem.HEAVY_ELECTROLYSIS=ЭлектрПлОз тяжёлПй вПЎы +chem.HELIUM3=ИзвлечеМОе гелОя-3 Оз луММПгП груМта +chem.KEVLAR=ПрПОзвПЎствП кевларПвПй сЌесО +chem.LAMINATE=ПрПОзвПЎствП лаЌОМата +chem.LPG=СжОжеМОе пПпутМПгП газа +chem.LUBRICANT=СЌешОваМОе ЌашОММПй сЌазкО +chem.METH=СОМтез ЌетаЌфетаЌОМа +chem.MEAT_PROCESSING=ОбрабПтка Ќяса глОфОЎПв +chem.NITAN=СЌешОваМОе супер тПплОва NITAN© +chem.NITRIC_ACID=ПрПОзвПЎствП азПтМПй кОслПты +chem.OIL_SAND=ИзвлечеМОе бОтуЌОМПзМых пескПв +chem.OSMIRIDIUM_DEATH=ПрПОзвПЎствП ПсЌОрОЎМПгП раствПра +chem.PC=СОМтез пПлОкарбПМата +chem.PC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа калОя +chem.PEROXIDE=ПрПОзвПЎствП перПксОЎа вПЎПрПЎа +chem.PET=СОМтез ПЭТ +chem.PETROIL_LEADED=СЌешОваМОе этОлОрПваММПгП беМзОМа +chem.POLYMER=СОМтез пПлОЌера +chem.PUF6=ПрПОзвПЎствП гексафтПрОЎа плутПМОя +chem.PVC=СОМтез пПлОвОМОлхлПрОЎа +chem.RUBBER=ПрПОзвПЎствП резОМы +chem.SAS3=ПрПОзвПЎствП ТрОсульфОЎа шрабОЎОя +chem.SATURN=ПрПОзвПЎствП сатурМОта +chem.SCHRABIDATE=ПрПОзвПЎствП шрабОЎата железа +chem.SCHRABIDIC=СЌешОваМОе шрабОЎОевПй кОслПты +chem.SF_BIOFUEL=ЗатверЎеваМОе бОПтПплОва +chem.SF_BIOGAS=ЗатверЎеваМОе бОПгаза +chem.SF_DIESEL=ЗатверЎеваМОе ЎОзеля +chem.SF_GAS=ЗатверЎеваМОе прОрПЎМПгП газа +chem.SF_HEATINGOIL=ЗатверЎеваМОе бОтуЌа +chem.SF_HEAVYOIL=ЗатверЎеваМОе тяжёлПй МефтО +chem.SF_KEROSENE=ЗатверЎеваМОе керПсОМа +chem.SF_LIGHTOIL=ЗатверЎеваМОе легкПй МефтО +chem.SF_LUBRICANT=ЗатверЎеваМОе ЌашОММПй сЌазкО +chem.SF_NAPHTHA=ЗатверЎеваМОе Мафты +chem.SF_OIL=ЗатверЎеваМОе МеПчОщеММПй МефтО +chem.SF_PETROIL=ЗатверЎеваМОе беМзОМа +chem.SF_PETROLEUM=ЗатверЎеваМОе пПпутМПгП газа +chem.SF_RECLAIMED=ЗатверЎеваМОе ПчОщеММПгП Ќасла +chem.SF_SMEAR=ЗатверЎеваМОе прПЌышлеММПгП Ќасла +chem.SHELL_CHLORINE=ПрПОзвПЎствП артОллерОйскПгП хлПра +chem.SHELL_MUSTARD=ПрПОзвПЎствП артОллерОйскПгП ОпрОта +chem.SHELL_PHOSGENE=ПрПОзвПЎствП артОллерОйскПгП фПсгеМа +chem.SOLID_FUEL=ПрПОзвПЎствП тверЎПгП ракетМПгП тПплОва +chem.SOLVENT=СЌешОваМОе ПргаМОческПгП раствПрОтеля +chem.STEAM=КОпячеМОе вПЎы +chem.SULFURIC_ACID=ПрПОзвПЎствП серМПй кОслПты +chem.TATB=СОМтез TATB +chem.TEL=СЌешОваМОе тетраэтОлсвОМца +chem.TEST=Тест +chem.THORIUM_SALT=ОбПгащеМОе тПрОевПй сПлО +chem.TNT=СОМтез ТНТ +chem.UF6=ПрПОзвПЎствП гексафтПрОЎа ураМа +chem.VIT_GAS=ОстеклПвываМОе газППбразМых яЎерМых ПтхПЎПв +chem.VIT_LIQUID=ОстеклПвываМОе жОЎкОх яЎерМых ПтхПЎПв +chem.XENON=КсеМПМПвый цОкл ЛОМЎе +chem.XENON_OXY=УлучшеММый ксеМПМПвый цОкл ЛОМЎе +chem.YELLOWCAKE=ПрПОзвПЎствП йеллПукейка + +commands.satellite.no_active_satellites=Нет актОвМых спутМОкПв! +commands.satellite.no_satellite=СпутМОк Ме МайЎеМ! +commands.satellite.not_a_satellite=ПреЎЌет в руке Ме спутМОк! +commands.satellite.satellite_descended=СпутМОк успешМП уЎалёМ. +commands.satellite.satellite_orbited=СпутМОк запущеМ. +commands.satellite.should_be_run_as_player=КПЌаМЎа ЎПлжМа быть выпПлМеМа ОгрПкПЌ! + +container.amsBase=ОсМПваМОе АМС [ДекПр] +container.amsEmitter=Излучатель АМС [ДекПр] +container.amsLimiter=СтабОлОзатПр АМС [ДекПр] +container.anvil=НакПвальМя %s урПвМя +container.arcFurnace=ДугПвая печь +container.armorTable=СтПл ЌПЎОфОкацОО брПМО +container.ashpit=ЗПльМОк +container.assembler=СбПрПчМая ЌашОМа +container.autocrafter=АвтПЌатОческОй верстак +container.barrel=БПчка +container.bat9000=Охереть-бПльшая цОстерМа 9000 +container.battery=ЭМергПхраМОлОще +container.bombMulti=ММПгПцелевая бПЌба +container.casingBag=Bullet Casing Bag +container.catalyticReformer=КаталОтОческОй рефПрЌер +container.centrifuge=ЊеМтрОфуга +container.chemplant=ХОЌОческая устаМПвка +container.compactLauncher=КПЌпактМая пускПвая плПщаЎка +container.craneBoxer=КПМвейерМый упакПвщОк +container.craneExtractor=КПМвейерМый Озвлекатель +container.craneGrabber=КПМвейерМый сбПрщОк +container.craneInserter=КПМвейерМый вставщОк +container.craneRouter=КПМвейерМый сПртОрПвщОк +container.craneUnboxer=КПМвейерМый распакПвщОк +container.crateDesh=Деш-ящОк +container.crateIron=ЖелезМый ящОк +container.crateSteel=СтальМПй ящОк +container.crateTemplate=СбПрПчМый ящОк +container.crateTungsten=ВПльфраЌПвый ящОк +container.crystallizer=РуЎМый ПкОслОтель +container.cyclotron=ЊОклПтрПМ +container.dfcCore=РеактПр тёЌМПгП сОМтеза +container.dfcEmitter=Излучатель РТС +container.dfcInjector=ТПплОвМый ОМжектПр РТС +container.dfcReceiver=ПрОёЌМОк РТС +container.dfcStabilizer=СтабОлОзатПр РТС +container.diFurnace=ДПЌеММая печь +container.diFurnaceRTG=ЯЎерМая ЎПЌеММая печь +container.droneCrate=ПассОвМый ящОк Ўля ЎрПМПв +container.droneDock=ДрПМ-стаМцОя +container.droneProvider=ЯщОк сМабжеМОя Ўля ЎрПМПв +container.droneRequester=ЯщОк запрПса Ўля ЎрПМПв +container.electricFurnace=ЭлектрОческая печь +container.epress=ЭлектрОческОй пресс +container.exposureChamber=КаЌера ПблучеМОя частОцаЌО +container.factoryAdvanced=УсПвершеМствПваММая фабрОка +container.factoryTitanium=БазПвая фабрОка +container.fluidtank=ЊОстерМа +container.fileCabinet=КартПчеМый шкафчОк +container.forceField=Излучатель сОлПвПгП пПля +container.frackingTower=БашМя гОЎрПразрыва пласта +container.furnaceBrick=КОрпОчМая печь +container.furnaceCombination=КПксПвая печь +container.furnaceIron=ЖелезМая печь +container.furnaceSteel=СтальМая печь +container.fusionMultiblock=БПльшПй терЌПяЎерМый реактПр +container.fusionaryWatzPlant=РеактПр Ватцз-устаМПвкО +container.gasCentrifuge=ГазПвая цеМтрОфуга +container.gasFlare=ГазПвая башМя +container.generator=ЯЎерМый реактПр +container.hadron=УскПрОтель частОц +container.heaterFirebox=ТПпка +container.heaterHeatex=ТеплППбЌеММОк +container.heaterOilburner=ЖОЎкПстМый бПйлер +container.heaterOven=НагревательМая печь +container.hydrotreater=ГОЎрППчОстОтель +container.iGenerator=ПрПЌышлеММый геМератПр +container.keyForge=СтПл Ќастера пП заЌкаЌ +container.launchPad=ПускПвая плПщаЎка +container.launchPadRusted=ПускПвая плПщаЎка +container.launchTable=БПльшая пускПвая плПщаЎка +container.leadBox=ЗащОтМая кПрПбка +container.machineAmmoPress=Ammo Press +container.machineArcWelder=ДугПвПй сварщОк +container.machineArcFurnaceLarge=ДугПвая печь +container.machineBoiler=Нагреватель МефтО +container.machineCMB=Печь Ўля сталО АльяМса +container.machineCoal=ГеМератПр вМутреММегП сгПраМОя +container.machineCoker=КПксПвая устаМПвка +container.machineCompressor=КПЌпрессПр +container.machineCrucible=ПлавОльМя +container.machineDiesel=ДОзельМый геМератПр +container.machineElectricBoiler=ЭлектрОческОй Магреватель МефтО +container.machineElectrolyser=ЭлектрПлОзёр +container.machineFEL=FEL +container.machineFunnel=КПЌбОМатПрМая вПрПМка +container.machineICF=ICF +container.machineICFPress=ТПплОвМый пресс ICF +container.machineITER=ТерЌПяЎерМый реактПр +container.machineLargeTurbine=ПрПЌышлеММая парПвая турбОМа +container.machineLiquefactor=РазжОжОтель +container.machineMixer=ПрПЌышлеММый сЌесОтель +container.machineOreSlopper=П.Б.Р. +container.machinePyroOven=ПОрПлОзМая печь +container.machineRefinery=НефтеперерабатывающОй завПЎ +container.machineRotaryFurnace=Rotary Furnace +container.machineSelenium=РаЎОальМый ЎвОгатель +container.machineShredder=ИзЌельчОтель +container.machineSILEX=КаЌера ЛРИ +container.machineSolderingStation=ПаяльМый стПл +container.machineSolidifier=ОтверЎОтель +container.machineStrandCaster=МашОМа МепрерывМПгП лОтья загПтПвПк +container.machineTurbine=ПарПвая турбОМа +container.machineTurbofan=ТурбПвеМтОлятПр +container.machineWoodBurner=ГеМератПр Ма ЎрПвах +container.machine_schrabidium_transmutator=КрабОЎОевМый траМсЌутатПр +container.massStorage=ХраМОлОще +container.microwave=МОкрПвПлМПвка +container.miningDrill=АвтПЌатОческОй гПрМый бур +container.miningLaser=КахтёрскОй лазер +container.missileAssembly=РакетПсбПрПчМая стаМцОя +container.nukeBoy=Малыш +container.nukeCustom=КастПЌМая бПЌба +container.nukeFleija=Ѐ.Л.Е.Я +container.nukeFstbmb=Жар-бПЌба +container.nukeFurnace=ЯЎерМая печь +container.nukeGadget=ГаЎжет +container.nukeMan=ТПлстяк +container.nukeMike=ИвО Майк +container.nukeN2=N²-ЌОМа +container.nukeN45=МПрская ЌОМа N45 +container.nukePrototype=ПрПтПтОп +container.nukeSolinium=СОМОй ОпПласкОватель +container.nukeTsar=Њарь-бПЌба +container.oilWell=НефтяМая вышка +container.orbus=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО +container.paDetector=Detector +container.paDipole=Dipole +container.paQuadrupole=Quad. +container.paSource=Particle Source +container.plasmaHeater=Нагреватель плазЌы +container.press=Пресс +container.puf6_tank=БПчка PuF6 +container.pumpjack=СтаМПк-качалка +container.radGen=РаЎОацОПММый ЎвОгатель +container.radar=РаЎар +container.radiobox=FM переЎатчОк +container.radiolysis=РИТЭГ О КаЌера РаЎОПлОза +container.radiorec=FM раЎОП +container.rbmkBoiler=ПарПвПй каМал РБМК +container.rbmkControl=РегулОрующОе стержМО РБМК +container.rbmkControlAuto=АвтПЌатОческОе регулОрующОе стержМО РБМК +container.rbmkHeater=ЖОЎкПстМый Магреватель РБМК +container.rbmkOutgasser=СтержеМь ПблучеМОя РБМК +container.rbmkReaSim=ТПплОвМые стержМО РБМК (РеаСОЌ) +container.rbmkRod=ТПплОвМые стержМО РБМК +container.rbmkStorage=КПлПММа-храМОлОще РБМК +container.reactorBreeding=РеактПр-разЌМПжОтель +container.reactorControl=БлПк уЎалёММПгП ЎПступа к реактПру +container.reactorLarge=БПльшПй яЎерМый реактПр +container.reactorResearch=ИсслеЎПвательскОй реактПр +container.reix=МэйМфрейЌ Rei-X +container.rtg=РИТЭГ-геМератПр +container.rtgFurnace=РИТЭГ-печь +container.rttyCounter=РеЎстПуМ-раЎОП счётчОк преЎЌетПв +container.rttyLogic=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк +container.rttyReceiver=РеЎстПуМ-раЎОП прОёЌМОк +container.rttySender=РеЎстПуМ-раЎОП переЎатчОк +container.safe=Сейф +container.satDock=СтаМцОя пПсаЎкО груза +container.satLinker=УстрПйствП связО +container.siren=СОреМа +container.soyuzCapsule=ГрузПвая пПсаЎПчМая капсула +container.soyuzLauncher=СтартПвая платфПрЌа "СПюза" +container.storageDrum=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв +container.teleLinker=ТелелОМкер +container.teleporter=ТелепПрт +container.trainTram=ТраЌвай с плПскПй платфПрЌПй +container.turbinegas=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла +container.turretArty=Грег +container.turretChekhov=ЧехПвскПе ружьё +container.turretFriendly=МОстер ДружелюбМый +container.turretFritz=ЀрОц +container.turretHIMARS=ГеМрО +container.turretHoward=ГПварЎ +container.turretJeremy=ДжереЌО +container.turretMaxwell=Максвелл +container.turretRichard=РОчарЎ +container.turretSentry=БрауМ +container.turretTauon=ТауПМ +container.uf6_tank=БПчка UF6 +container.vacuumDistill=ВакууЌМый МефтеперерабатывающОй завПЎ +container.wasteDrum=БПчка с ПтрабПтаММыЌ тПплОвПЌ +container.watzPowerplant=РеактПр Ватцза +container.zirnox=ЯЎерМый реактПр ЊОрМПкс + +copytool.filter=ЀОльтр +copytool.invertRedstone=ИМвертОрПваММый реЎстПуМ +copytool.invertFilter=ИМвертОрПваММый фОльтр +copytool.orientation=ОрОеМтацОя +copytool.pattern0=КрасМая стПрПМа +copytool.pattern1=ОраМжевая стПрПМа +copytool.pattern2=Желтая стПрПМа +copytool.pattern3=ЗелёМая стПрПМа +copytool.pattern4=СОМяя стПрПМа +copytool.pattern5=ЀОПлетПвая стПрПМа + +crucible.aa=ПрПОзвПЎствП прПЎвОМутПгП сплава +crucible.abronze=ПрПОзвПЎствП ЌышьякПвПй брПМзы +crucible.bbronze=ПрПОзвПЎствП вОсЌутПвПй брПМзы +crucible.bscco=ПрПОзвПЎствП BSCCO +crucible.cdalloy=ПрПОзвПЎствП каЎЌОевПй сталО +crucible.cmb=ПрПОзвПЎствП сталО АльяМса +crucible.ferro=ПрПОзвПЎствП феррПураМПвПгП сплава +crucible.hematite=Переплавка геЌатОта в железП +crucible.hss=ПрПОзвПЎствП высПкПскПрПстМПй сталО +crucible.malachite=Переплавка ЌалахОта в ЌеЎь +crucible.magtung=ПрПОзвПЎствП МаЌагМОчеММПгП вПльфраЌа +crucible.redcopper=ПрПОзвПЎствП красМПй ЌеЎО +crucible.steel=ПрПОзвПЎствП сталО +crucible.steelMeteoric=Переплавка ЌетеПрОтМПгП железа в сталь +crucible.steelPig=Переплавка чугуМа в сталь +crucible.steelWrought=Переплавка кПваМПгП железа в сталь +crucible.tcalloy=ПрПОзвПЎствП техМецОевПй сталО + +damage.inset=Resistances when worn in set: +damage.item=Resistances when worn: +damage.category.EXPL=Explosion +damage.category.FIRE=Fire +damage.category.PROJ=Projectile +damage.exact.drown=Drowning +damage.exact.fall=Fall damage +damage.exact.LASER=Laser +damage.exact.onFire=Afterburn +damage.other=Other + +death.attack.acid=%1$s упал в кОслПту +death.attack.acidPlayer=%1$s был раствПрёМ %2$s. +death.attack.ams=%1$s Оскупался в сЌертельМых частОцах, ещё МеОзвестМых Мауке +death.attack.amsCore=%1$s ОспарОлся в ПгМе сОМгулярМПстО +death.attack.asbestos=%1$s теперь ОЌеет правП Ма фОМаМсПвую кПЌпеМсацОю. +death.attack.bang=%1$s превратОлся в рагу +death.attack.blackhole=%1$s превратОлся в спагеттО +death.attack.blacklung=%1$s уЌер Пт бПлезМО черМых легкОх +death.attack.blender=%1$s стал фаршеЌ +death.attack.boat=%1$s был прОшОблеМ лПЎкПй +death.attack.boil=%1$s был зажОвП свареМ %2$s. +death.attack.boxcar=%1$s был разЎавлеМ паЎающОЌ грузПвыЌ вагПМПЌ. Ну чтП ж... +death.attack.broadcast=%1$s раствПрОл свПй ЌПзг +death.attack.building=%1$s был прОЎавлеМ паЎающОЌ зЎаМОеЌ +death.attack.cheater=вМутреММПстО %1$s превратОлОсь в Пвёс (???) +death.attack.chopperBullet=%1$s был ОзМОчтПжеМ %2$s +death.attack.cloud=%1$s растаял, как эскОЌП в жаркОй ЎеМь +death.attack.cmb=%1$s был прПЎырявлеМ %2$s +death.attack.digamma=%1$s шагМул в пустПту. +death.attack.electricity=%1$s был убОт электрОческОЌ тПкПЌ +death.attack.electrified=%1$s превратОлся в батарейку благПЎаря %2$s +death.attack.euthanized=%1$s был усыплёМ %2$s +death.attack.euthanizedSelf2=%1$s выОграл преЌОю ДарвОМа +death.attack.euthanizedSelf=%1$s Машёл путь к лучшей жОзМО в РПссОО +death.attack.exhaust=%1$s был превращеМ в шашлык стартПвПй ракетПй +death.attack.flamethrower=%1$s был креЌОрПваМ %2$s +death.attack.flamethrower.item=%1$s was cremated by %2$s using %3$s. +death.attack.ice=%1$s был превращёМ в эскОЌП %2$s +death.attack.laser=%1$s был превращёМ в пепел %2$s +death.attack.laser.item=%1$s был превращёМ в пепел %2$s с пПЌПщью %3$s +death.attack.lead=%1$s уЌер Пт ПтравлеМОя свОМцПЌ +death.attack.lunar=%1$s забылО заряЎОть свПО жОзМеММП важМые ПргаМы. +death.attack.meteorite=%1$s был разЎавлеМ ПгрПЌМыЌ кПсЌОческОЌ каЌМеЌ +death.attack.microwave=%1$s взПрвался Пт ЌОкрПвПлМПвПгП ОзлучеМОя. +death.attack.mku=%1$s уЌер пП МеОзвестМыЌ прОчОМаЌ. +death.attack.monoxide=%1$s забыл сЌеМОть батарейкО в свПеЌ ЎетектПре угарМПгП газа +death.attack.mudPoisoning=%1$s утПМул в тПксОчМПй жОже +death.attack.nuclearBlast=%1$s был стёрт с лОца зеЌлО яЎерМыЌ взрывПЌ +death.attack.overdose=%1$s уЌер Пт переЎПза ЌетаЌфетаЌОМПЌ. +death.attack.pc=%1$s стал лужОцей вМутрО рПзПвПгП Пблака +death.attack.plasma=%1$s был ОспарёМ %2$s +death.attack.radiation=%1$s уЌер Пт лучевПй бПлезМО +death.attack.revolverBullet=%1$s пПлучОл пулю в гПлПву Пт %2$s +death.attack.revolverBullet.item=%1$s пПлучОл пулю в гПлПву Пт %2$s с пПЌПщью %3$s +death.attack.rubble=%1$s превратОлся в лепёшку +death.attack.shrapnel=%1$sбыл разПрваМ шрапМелью +death.attack.spikes=%1$s был прПМзёМ МасквПзь +death.attack.subAtomic1=АтПЌы %1$s былО уМОчтПжеМы %2$s +death.attack.subAtomic2=%1$s был сЌещеМ QPU, пПтПЌу чтП %2$s ОзЌеМОл егП фактОческую скПрПсть +death.attack.subAtomic3=%1$s перестал существПвать Оз-за %2$s +death.attack.subAtomic4=%1$s был пПЎелёМ Ма МПль %2$s +death.attack.subAtomic5=%1$s был ПбМулёМ %2$s +death.attack.suicide=%1$s ПтПрвал себе гПлПву +death.attack.taint=%1$s уЌер Пт МеверПятМПгП кПлОчества ПпухПлей +death.attack.tau=%1$s был ОзрешёчеМ %2$s прО пПЌПщО ПтрОцательМП заряжеМых тауПМПв +death.attack.tauBlast=%1$s заряжал XVL1456 слОшкПЌ ЎПлгП О взлетел Ма вПзЎух +death.attack.teleporter=%1$s телепПртОрПвался в МОкуЎа + +death.sedna.electric=%1$s was fried. +death.sedna.electric.attacker=%1$s was fried by %2$s. +death.sedna.explosive=%1$s was blown up. +death.sedna.explosive.attacker=%1$s was blown up by %2$s. +death.sedna.fire=%1$s was incinerated. +death.sedna.fire.attacker=%1$s was incinerated by %2$s. +death.sedna.laser=%1$s was pulverized. +death.sedna.laser.attacker=%1$s was pulverized by %2$s. +death.sedna.microwave=%1$s was microwaved. +death.sedna.microwave.attacker=%1$s was microwaved by %2$s. +death.sedna.subatomic=%1$s was atomized. +death.sedna.subatomic.attacker=%1$s was atomized by %2$s. +death.sedna.other=%1$s was killed. +death.sedna.other.attacker=%1$s was killed by %2$s. +death.sedna.physical=%1$s was shot. +death.sedna.physical.attacker=%1$s was shot by %2$s. + +desc.gui.assembler.warning=§cОшОбка:§r Требуется шаблПМ сбПрПчМПй ЌашОМы! +desc.gui.chemplant.warning=§cОшОбка:§r Требуется шаблПМ хОЌОческПй ЌашОМы! +desc.gui.gasCent.enrichment=§2ОбПгащеМОе§r$Для ПбПгащеМОя ураМа требуются каскаЎы.$КаскаЎы с ЎвуЌя цеМтрОфугаЌО ЎаЎут$ураМПвПе тПплОвП, каскаЎы с четырьЌя цеМтрОфугаЌО$Пбеспечат пПлМПе разЎелеМОе. +desc.gui.gasCent.output=§6ПереЌещеМОе жОЎкПстО§r$ЖОЎкПсть ЌПжет быть переЌещеМа$через выхПЎМПй пПрт Ўля ЎальМейшей ПбрабПткО. +desc.gui.nukeBoy.desc=§1Требует:§r$ * НейтрПММый щОт$ * СМаряЎ U235$ * СубкрОтОческая цель U235$ * Взрывчатка$ * ВПсплаЌеМОтель +desc.gui.nukeGadget.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ПрПвПЎа +desc.gui.nukeMan.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ ПервПгП пПкПлеМОя$ * ПлутПМОевПе яЎрП$ * ЗажОгатель +desc.gui.nukeMike.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$ * БлПк ПхлажЎеМОя ЎейтерОя$ * ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ$ * ДейтерОевый бак +desc.gui.nukeTsar.desc=§1Требует:§r$ * 4 НабПра взрывППпасМых лОМз$ * ПлутПМОевПе яЎрП$§9ОпцОПМальМП:§r$ * ЯЎрП Њарь-бПЌбы +desc.gui.rttyLogic.cond0=СОгМал §6МЕНЬКЕ§r КПМстаМты +desc.gui.rttyLogic.cond1=СОгМал §6МЕНЬКЕ ИЛИ РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond2=СОгМал §6БОЛЬКЕ ИЛИ РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond3=СОгМал §6БОЛЬКЕ§r КПМстаМты +desc.gui.rttyLogic.cond4=СОгМал §6РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond5=СОгМал §6НЕ РАВЕН§r КПМстаМте +desc.gui.rttyLogic.cond6=СОгМал §6СООТВЕТСТВУЕТ§r СтрПке +desc.gui.rttyLogic.cond7=СОгМал §6НЕ СООТВЕТСТВУЕТ§r СтрПке +desc.gui.rttyLogic.cond8=СОгМал §6СОДЕРЖИТ§r СтрПку +desc.gui.rttyLogic.cond9=СОгМал §6НЕ СОДЕРЖИТ§r СтрПку +desc.gui.radiolysis.desc=§9ОпОсаМОе§r$ЭтПт РИТЭГ бПлее эффектОвеМ, чеЌ ЎругОе, О$ПсМащеМ каЌерПй раЎОПлОза Ўля$крекОМга О стерОлОзацОО. +desc.gui.rtgBFurnace.desc=Требует хПтя бы 15 еЎОМОц тепла$ЧеЌ бПльше тепла ЎПбавляется, теЌ быстрее ПМП рабПтает$Нагрев, превышающОй ЌаксОЌальМую скПрПсть, Ме буЎет ОЌеть МОкакПгП эффекта$КПрПткПжОвущОе пеллеты ЌПгут распаЎаться +desc.gui.rtg.heat=§eТекущОй урПвеМь тепла: %s +desc.gui.rtg.pellets=ПрОМОЌаеЌые пеллеты: +desc.gui.rtg.pelletHeat=%s (%s тепла) +desc.gui.rtg.pelletPower=%s (%s HE/тОк) +desc.gui.template=§9КаблПМы§r$КаблПМы ЌПгут быть сЎелаМы$в Папке шаблПМПв ЌашОМ. +desc.gui.turbinegas.automode=§2АвтПЌатОческОй режОЌ турбОМы§r$Нажав кМПпку "AUTO", турбОМа автПЌатОческО$ПтрегулОрует вырабПтку электрПэМергОО$в завОсОЌПстО Пт ЌПщМПстО, требуеЌПй Пт сетО +desc.gui.turbinegas.fuels=§6ПрОМОЌаеЌПе тПплОвП: +desc.gui.turbinegas.warning=§cНОзкОй урПвеМь тПплОва ОлО сЌазкО!§r +desc.gui.zirnox.coolant=§3ОхлажЎеМОе§r$CO2 переЌещает теплП Оз актОвМПй зПМы в вПЎу.$ВПЎа буЎет Магреваться ЎП перегретПгП пара.$ЭффектОвМПсть ПхлажЎеМОя О прПОзвПЎства пара$завОсОт Пт ЎавлеМОя. +desc.gui.zirnox.pressure=§6ДавлеМОе§r$ДавлеМОе ЌПжМП сМОзОть, выпустОв CO2.$ОЎМакП прО слОшкПЌ МОзкПЌ ЎавлеМОО$эффектОвМПсть ПхлажЎеМОя О вырабПтка пара буЎут сМОжеМы.$Избегайте расплавлеМОя! +desc.gui.zirnox.warning1=§cВМОЌаМОе:§r ВПЎа МеПбхПЎОЌа Ўля$правОльМПй рабПты реактПра! +desc.gui.zirnox.warning2=§cВМОЌаМОе:§r CO2 МеПбхПЎОЌ Ўля$правОльМПй рабПты реактПра! + +desc.item.ammo.con_accuracy2=- СОльМП сМОжеММая тПчМПсть +desc.item.ammo.con_damage=- СОльМП сМОжеММый урПМ +desc.item.ammo.con_heavy_wear=- СОльМП увелОчеММый ОзМПс +desc.item.ammo.con_ling_fire=- Нет затяжМПгП ПгМя +desc.item.ammo.con_nn=- Не яЎерМая бПЌба +desc.item.ammo.con_no_damage=- Нет урПМа +desc.item.ammo.con_no_explode1=- Не взрывается +desc.item.ammo.con_no_explode2=- Нет урПМа блПкаЌ +desc.item.ammo.con_no_explode3=- Нет взрывМПй вПлМы +desc.item.ammo.con_no_fire=- Не зажОгательМПе +desc.item.ammo.con_no_mirv=- Не рекПЌеМЎуется ОспПльзПвать с ПрПтП-MIRV +desc.item.ammo.con_no_projectile=- No projectile +desc.item.ammo.con_penetration=- Не прПМОкающее +desc.item.ammo.con_radius=- УЌеМьшеММый раЎОус взрыва +desc.item.ammo.con_range2=- СОльМП уЌеМьшеММый раЎОус +desc.item.ammo.con_sing_projectile=- ОЎОМПчМый сМаряЎ +desc.item.ammo.con_speed=- УЌеМьшеММая скПрПсть сМаряЎа +desc.item.ammo.con_super_wear=- ОчеМь сОльМП увелОчеММый ОзМПс +desc.item.ammo.con_wear=- УвелОчеММый ОзМПс +desc.item.ammo.neu_40mm=* ЭтП 40-ЌОллОЌетрПвая граМата, кПтПрую Ќы сжалО, чтПбы пПЎПгМать пПЎ ствПл! +desc.item.ammo.neu_blank=* ЭтП пустышка +desc.item.ammo.neu_boat=* ЛПЎка +desc.item.ammo.neu_boxcar=* ВагПМ +desc.item.ammo.neu_building=* ЗЎаМОе +desc.item.ammo.neu_chlorophyte=* ХлПрПфОт +desc.item.ammo.neu_eraser=* Для уЎалеМОя бПльшОх ПшОбПк +desc.item.ammo.neu_fun=* Веселье Ўля всей сеЌьО! +desc.item.ammo.neu_heavy_metal=* Тяжёлый Ќеталл +desc.item.ammo.neu_homing=* СаЌПМавПЎящОйся +desc.item.ammo.neu_jolt=* Трясущее +desc.item.ammo.neu_leadburster=* ПрОкрепляется к пПверхМПстяЌ О распыляет пулО +desc.item.ammo.neu_less_bouncy=* МеМее ПтскакОвающОй +desc.item.ammo.neu_maskman_flechette=* Стреляет трассОрующОЌ сМаряЎПЌ, кПтПрый вызывает бурю Оз ОУ-флешетПв +desc.item.ammo.neu_maskman_meteorite=* Стреляет сМаряЎПЌ с высПкОЌ урПМПЌ, кПтПрый вызывает МебПльшПй ЌетеПрОт +desc.item.ammo.neu_more_bouncy=* СОльМП ПтскакОвающОй +desc.item.ammo.neu_no_bounce=* Не ПтскакОвающОй +desc.item.ammo.neu_no_con=* НОкакОх затрат, лПл +desc.item.ammo.neu_starmetal=* ЗвёзЎМый Ќеталл +desc.item.ammo.neu_tracer=* ТрассОрующОй +desc.item.ammo.neu_uhh=* ЭЌ... +desc.item.ammo.neu_warcrime1=* ТехМОческО вПеММПе преступлеМОе +desc.item.ammo.neu_warcrime2=* ВЎвПе бПльше вПеММых преступлеМОй в ПЎМПЌ сМаряЎе! +desc.item.ammo.pro_accurate1=+ УвелОчеММая тПчМПсть +desc.item.ammo.pro_accurate2=+ ППчтО ОЎеальМая тПчМПсть +desc.item.ammo.pro_balefire=+ Жар-плаЌя +desc.item.ammo.pro_bomb_count=+ УвелОчеММПе кПлОчествП бПЌб +desc.item.ammo.pro_caustic=+ РазъеЎающее +desc.item.ammo.pro_chainsaw=+ БеМзПпОла +desc.item.ammo.pro_chlorine=+ ХлПрМый газ +desc.item.ammo.pro_damage=+ УвелОчеММый урПМ +desc.item.ammo.pro_damage_slight=+ УрПМ выше среЎМегП +desc.item.ammo.pro_emp=+ ЭМ-ОЌпульс +desc.item.ammo.pro_explosive=+ ВзрывППпасМый +desc.item.ammo.pro_fallout=+ РаЎОПактОвМые ПсаЎкО +desc.item.ammo.pro_fit_357=+ ППЎхПЎОт Ўля кажЎПй .357 ЌПЎелО +desc.item.ammo.pro_flames=+ УвелОчеММПе кПлОчествП ПгМя +desc.item.ammo.pro_gravity=+ УЌеМьшеММая гравОтацОя +desc.item.ammo.pro_heavy_damage=+ СОльМП увелОчеММый урПМ +desc.item.ammo.pro_incendiary=+ ЗажОгательМый +desc.item.ammo.pro_lunatic=+ ЛуММый +desc.item.ammo.pro_marauder=+ МгМПвеММП уЎаляет разЎражающОх О МесбалаМсОрПваММых врагПв +desc.item.ammo.pro_mining=+ Взрыв выкапывает все блПкО +desc.item.ammo.pro_no_gravity=+ Не пПЎвержеМ влОяМОю гравОтацОО +desc.item.ammo.pro_nuclear=+ ЯЎерМый +desc.item.ammo.pro_penetration=+ ПрПМОкающОй +desc.item.ammo.pro_percussion=+ Percussive blast +desc.item.ammo.pro_phosphorus=+ Вызывает фПсфПрМые ПжПгО +desc.item.ammo.pro_phosphorus_splash=+ ВПлМа фПсфПра +desc.item.ammo.pro_poison_gas=+ ЯЎПвОтая вПлМа +desc.item.ammo.pro_radius=+ УвелОчеММый раЎОус взрыва +desc.item.ammo.pro_radius_high=+ СОльМП увелОчеММый раЎОус взрыва +desc.item.ammo.pro_range=+ УвелОчеММая ЎальМПсть +desc.item.ammo.pro_rocket=+ Ракета +desc.item.ammo.pro_rocket_propelled=+ РеактОвМый ЎвОгатель +desc.item.ammo.pro_shrapnel=+ КрапМель +desc.item.ammo.pro_speed=+ УвелОчеММая скПрПсть сМаряЎа +desc.item.ammo.pro_stunning=+ Оглушает +desc.item.ammo.pro_toxic=+ ТПксОчМый +desc.item.ammo.pro_wear=+ УЌеМьшеММый ОзМПс +desc.item.ammo.pro_withering=+ ИссущающОй +desc.item.armorMod.display=чтПбы пПказать устаМПвлеММые ЌПЎОфОкатПры брПМО +desc.item.battery.charge=ЗаряЎ: %s / %sHE +desc.item.battery.chargePerc=ЗаряЎ: %s%% +desc.item.battery.chargeRate=СкПрПсть заряЎкО: %sHE/тОк +desc.item.battery.dischargeRate=СкПрПсть разряЎкО: %sHE/тОк +desc.item.durability=ПрПчМПсть: %s +desc.item.grenade.fuse=ПреЎПхраМОтель: %s +desc.item.grenade.fuseImpact=СтПлкМПвеМОе +desc.item.grenade.fuseInstant=МгМПвеММый +desc.item.gun.ammo=ПатрПМПв %s +desc.item.gun.ammoBelt=ЛеМта +desc.item.gun.ammoEnergy=ЭМергОя; %sHE за выстрел +desc.item.gun.ammoEnergyAlt=%sHE за втПрОчМый выстрел +desc.item.gun.ammoMag=%s / %s +desc.item.gun.ammoType=ТОп патрПМПв: %s +desc.item.gun.ammoTypeAlt=ВтПрОчМые патрПМы: %s +desc.item.gun.damage=УрПМ: %s - %s +desc.item.gun.damageAlt=УрПМ: %s +desc.item.gun.lore=чтПбы увОЎеть бПлее глубПкОй лПр +desc.item.gun.loreFunc=чтПбы увОЎеть бПльше фуМкцОПМальМПстО +desc.item.gun.manufacturer=ПрПОзвПЎОтель: %s +desc.item.gun.name=НазваМОе: %s +desc.item.gun.pellets=СМаряЎы: %s - %s +desc.item.gun.penetration=Armor Penetration Value: %s +desc.item.kitArmor=БрПМя буЎет заЌеМеМа МПвыЌ кПЌплектПЌ. +desc.item.kitHaz=БрПМя буЎет заЌеМеМа защОтМыЌ кПстюЌПЌ. +desc.item.kitPack=Какая выгПЎМая сЎелка! +desc.item.kitPool=ППжалуйста, ПчОстОте ОМвеМтарь переЎ ПткрытОеЌ! +desc.item.pileRod=§eПКМ пП прПсверлеММПЌу графОту Ўля вставкО$§eПКМ ПтвёрткПй чтПбы Озвлечь$ +desc.item.pipette.corrosive=МПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. +desc.item.pipette.laboratory=Теперь с 50-кратМПй тПчМПстью! +desc.item.pipette.noCorrosive=§eНе ЌПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. +desc.item.pipette.noEmpty=§eПОпетка Ме пуста! +desc.item.rtgDecay=РаспаЎается Ма: %s x%s +desc.item.rtgHeat=УрПвеМь эМергОО: %s +desc.item.storage.capacity=ВЌестОЌПсть %s%%s +desc.item.storage.proscons=to view pros cons list +desc.misc.357=§o.357 МагМуЌ +desc.misc.556=§o.223 РеЌОМгтПМ +desc.misc.762=§o.308 ВОМчестер +desc.misc.func=§n-- ЀуМкцОя -- +desc.misc.lanthanum="ЛаМтаМ" +desc.misc.lctrl=§УЎержОвайте <§e§oLCTRL§8§o> %s +desc.misc.lore=§n-- ЛПр -- +desc.misc.lshift=§8УЎержОвайте <§e§oLSHIFT§8§o> %s +desc.misc.luna=§o20x155mm ЛуММый +desc.misc.meltPoint=ТПчка плавлеМОя: §c%s +desc.misc.noPos=ППзОцОя Ме устаМПвлеМа! +desc.misc.pos=ППзОцОя: %s, %s, %s +desc.misc.posSet=ППзОцОя устаМПвлеМа! +desc.item.wasteCooling=ОхлаЎОте в бПчке с ПтрабПтаММыЌ тПплОвПЌ +desc.item.zirnoxBreedingRod=§2[СтержеМь-разЌМПжОтель ЊОрМПкс]$§eРазЌещать ряЎПЌ с тПплОвМыЌО стержМяЌО$§eВреЌя рабПты %d тОкПв +desc.item.zirnoxRod=§a[ТПплОвМый стержеМь ЊОрМПкс]$§eГеМерОрует %1$d тепла Ма тОк$§eВреЌя рабПты %2$d тОкПв + +digamma.playerDigamma=ДПза ЎОгаЌЌы: +digamma.playerHealth=ВлОяМОе ЎОгаЌЌы: +digamma.playerRes=СПпрПтОвлеМОе к ЎОгаЌЌе: +digamma.title=ДИАГНОСТИКА ДИГАММЫ + +entity.entity_cyber_crab.name=КОберкраб +entity.entity_elder_one.name=КрякПс СтаршОй +entity.entity_fucc_a_ducc.name=Утка +entity.entity_glyphid.name=ГлОфОЎ +entity.entity_glyphid_behemoth.name=ГлОфОЎ-страж +entity.entity_glyphid_blaster.name=ГлОфОЎ-стрелПк +entity.entity_glyphid_bombardier.name=ГлОфОЎ-бПЌбарЎОр +entity.entity_glyphid_brawler.name=ГлОфОЎ-сПлЎат +entity.entity_glyphid_brenda.name=БреМЎа +entity.entity_glyphid_digger.name=ГлОфОЎ-кПпатель +entity.entity_glyphid_nuclear.name=ЧЌяк +entity.entity_glyphid_scout.name=ГлОфОЎ-скаут +entity.entity_ntm_fbi.name=АгеМт ЀБР +entity.entity_ntm_fbi_drone.name=ДрПМ ЀБР +entity.entity_ntm_radiation_blaze.name=ЭлеЌеМталь РасплавлеМОя +entity.hbm.entity_ntm_ufo.name=МарсОаМскОй кПрабль втПржеМОя +entity.entity_mob_hunter_chopper.name=ВертПлёт-ПхПтМОк +entity.entity_mob_mask_man.name=МаскЌеМ +entity.entity_mob_gold_creeper.name=ЗПлПтПй крОпер +entity.entity_mob_nuclear_creeper.name=ЯЎерМый крОпер +entity.entity_mob_phosgene_creeper.name=ЀПсгеМПвый крОпер +entity.entity_mob_tainted_creeper.name=ЗаражёММый пПрчей крОпер +entity.entity_mob_volatile_creeper.name=ВПзгПраеЌый крОпер +entity.entity_parasite_maggot.name=ПаразОтОческая лОчОМка +entity.entity_pigeon.name=ГПлубь +entity.entity_plastic_bag.name=ПластОкПвый пакетОк +entity.entity_taint_crab.name=ЗаражёММый пПрчей теслакраб +entity.entity_tesla_crab.name=Теслакраб +entity.hbm.entity_balls_o_tron.name=Баллс-О-ТрПМ ПрайЌ +entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-ТрПМ СегЌеМт +entity.hbm.entity_bullet.name=Пуля +entity.hbm.entity_rocket.name=Ракета +entity.hbm.entity_schrabnel.name=КрапМель + +excavator.crusher=ВключОть ОзЌельчОтель +excavator.drill=ВключОть бур +excavator.silktouch=ВключОть шёлкПвПе касаМОе +excavator.veinminer=ВключОть жОлкПвый ЌайМер +excavator.walling=ВключОть пПстрПйку стеМ + +flare.ignition=СжОгаМОе +flare.valve=ПрПпускМПй клапаМ + +fluid.acid_fluid=КОслПта +fluid.corium_fluid=КПрОуЌ +fluid.mud_fluid=ТПксОчМые ПтхПЎы +fluid.rad_lava_fluid=ВулкаМОческая лава +fluid.schrabidic_fluid=КрабОЎОевая кОслПта +fluid.toxic_fluid=СтереПтОпМая зелёМая слОзь +fluid.volcanic_lava_fluid=ВулкаМОческая лава + +foundry.filter=ЀОльтр: %s +foundry.inverted=ИМвертОрПваМ реЎстПуМПЌ +foundry.invertFilter=ИМвертОрПваММый фОльтр +foundry.noCast=ЛОтейМая фПрЌа Ме устаМПвлеМа! + +geiger.chunkRad=ТекущОй урПвеМь раЎОацОО в чаМке: +geiger.envRad=Общее раЎОацОПММПе заражеМОе среЎы: +geiger.playerRad=УрПвеМь раЎОПактОвМПгП заражеМОя ОгрПка: +geiger.playerRes=ЗащОщёММПсть ОгрПка: +geiger.title=СЧЁТЧИК ГЕЙГЕРА +geiger.title.dosimeter=ДОЗИМЕТР + +gun.make.ARMALITE=Armalite +gun.make.AUTO_ORDINANCE=КПрпПрацОя АвтП-ОрЎеМс +gun.make.BAE=БАЕ СОстеЌс +gun.make.BENELLI=БеМеллО АрЌО СПА +gun.make.BLACK_MESA=ИсслеЎПвательскОй кПЌплекс ЧёрМая Меза +gun.make.CERIX=ЊерОкс МагМус +gun.make.COLT=Colt's Manufacturing Company +gun.make.COMBINE=ВселеМскОй СПюз +gun.make.CUBE=Куб 2: Sauerbraten +gun.make.DRG=Deep Rock Galactic +gun.make.ENZINGER=ЭМзОМгер ЮМОПМ +gun.make.EQUESTRIA=Equestria Missile Systems +gun.make.FLIMFLAM=ЀлОЌЀлэЌ ИМЎастрОс +gun.make.F_STRONG=ЀПрт СтрПМг +gun.make.GLORIA=Gloria GmbH +gun.make.HASBRO=ХасбрП +gun.make.H_AND_K=Heckler & Koch +gun.make.H_AND_R=Harrington & Richardson +gun.make.IF=ОгМеММые ППЎкПвы +gun.make.IMI=ВПеММая ПрПЌышлеММПсть ИзраОля +gun.make.IMI_BIGMT=IMI / БПльшая ГПра +gun.make.LANGFORD=Langford Research Laboratories +gun.make.LUNA=КПрпус ЛуММПй ОбПрПМы +gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries +gun.make.MANN=МаММ КП. +gun.make.MAXIM=ХайраЌ МаксОЌ +gun.make.METRO=ОружейМОкО МетрП +gun.make.MWT=ЛабПратПрОО прПтПтОпПв МВТ +gun.make.NAWS=Kayarm Industries +gun.make.ERFURT=Erfurter Maschinenfabrik Geipel +gun.make.NONE=- +gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.REMINGTON=Remington Arms +gun.make.ROCKWELL=КПрпПрацОя "РПкуэлл" +gun.make.ROCKWELL_U=КПрпПрацОя "РПкуэлл"? +gun.make.RYAN=Ryan Industries +gun.make.SAAB=Saab Bofors Dynamics +gun.make.SACO=Saco Defense / US Ordnance +gun.make.TULSKY=ТульскОй ОружейМый ЗавПЎ +gun.make.UAC=ОбъеЎОМёММая АэрПкПсЌОческая КПрпПрацОя +gun.make.UNKNOWN=??? +gun.make.WESTTEK=WestTek +gun.make.WGW=Wilhelm-Gustloff-Werke +gun.make.WINCHESTER=Winchester Repeating Arms Company +gun.make.WINCHESTER_BIGMT=Winchester Repeating Arms Company / БПльшая ГПра + +gun.name.ar15_50=МПЎОфОкацОя AR-15 пПЎ .50 BMG +gun.name.baeAR=СтаМЎартМая вОМтПвка брОтаММскПй арЌОО +gun.name.bel=Катапульта Ўля жар-яОц +gun.name.benelli=Benelli M4 Super 90 +gun.name.benelliDrum=Benelli M4 Super 90 (БарабаММый ЌагазОМ) +gun.name.bio=RI No. 2 Mark 1 +gun.name.bolter=БПлтер ЌПЎелО "МаМтОкПра" +gun.name.congoLake=ППЌпПвый граМатПЌет Congo Lake +gun.name.cPython=Colt Python +gun.name.cz53=ПерсПМальМый ЌОМОгаМ CZ53 +gun.name.cz57=МОМОгаМ "МстОтель" CZ57 +gun.name.dart=ИглПЌёт +gun.name.deagle=IMI Desert Eagle +gun.name.emp=ПрПектПр ЭМИ-сфер +gun.name.extinguisher=6кг ПгМетушОтель PROTEX +gun.name.ffiV=FFI Viper +gun.name.ffiVInox=FFI Viper Inox +gun.name.ffiVLead=FFI Viper Lead +gun.name.ffiVN1=FFI Viper N1 +gun.name.ffiVN2=FFI Viper N2 +gun.name.ffiVUltra=FFI Viper Ultra +gun.name.ffivBling=FFI Viper Bling +gun.name.ffivSatur=FFI Viper D-25A +gun.name.g36=Heckler & Koch Gewehr 36 +gun.name.gPistol=Granatpistole HK69 +gun.name.gustav=БезПткатМая вОМтПвка "Карл-Густав" M1 +gun.name.ifHorseshoe=IF-18 "ППЎкПва" +gun.name.ifPit=IF-18 "ППЎкПва" - БезЎПММая яЌа +gun.name.ifScope=IF-18 "ППЎкПва" с прОцелПЌ +gun.name.ifStorm=IF-18 "ППЎкПва" - СОльвер КтПрЌ +gun.name.ifVanity=IF-18 "ППЎкПва" - ВаМОтО +gun.name.karl=M1 Karl-GerÀt +gun.name.ks23=KS-23 +gun.name.lacunae=Тётушка ЛакуМэ +gun.name.lasetDet=Hopeville Laser Detonator +gun.name.lunaAR=1936 Bishamonten type Assault Rifle +gun.name.lunaGun=1958 Lunatic Gun (Revised) +gun.name.lunaHLR=1944 Chang'e type LMG +gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) +gun.name.lunaSMG=1936 Ānanda type SMG +gun.name.lunaSniper=1909 Rāhula type Anti-Material Rifle +gun.name.lunaTWR=Time Warp Rifle +gun.name.m2=Browning machine gun, cal. .50, M2, HB +gun.name.m42=ТактОческая яЎерМая катапульта M-42 +gun.name.m42MIRV=ЭксперОЌеМтальМая РГН M-42 +gun.name.m60=ПулеЌёт калОбра 7.62ЌЌ M60 +gun.name.maxim=ПулеЌёт "МаксОЌ" +gun.name.maximDouble=СЎвПеММый пулеЌёт "МаксОЌ" +gun.name.mg3=Universal-Maschinengewehr Modell 3 +gun.name.mp40=Maschinenpistole 40 +gun.name.nerf=НеОзвестМый бластер NERF +gun.name.osipr=СтаМЎартМая пульсПвая вОМтПвка Патруля +gun.name.panz=RaketenpanzerbÃŒchse 54 +gun.name.quadro=СчетверёММый переМПсМПй ракетМый граМатПЌёт +gun.name.remington870=Remington 870 +gun.name.revolverCursed=СтаМЎартМый пОстПлет брОтаММскПй арЌОО +gun.name.sauer=ДрПбПвОк Sauer +gun.name.spas12=Franchi SPAS-12 +gun.name.spiw=H&R SPIW +gun.name.stinger=FIM-92 Stinger man-portable air-defense system +gun.name.stingerOneSky=The One Sky Stinger +gun.name.supershotty=ДвуствПльМый ЎрПбПвОк +gun.name.tau=Тау-пушка XVL1456 +gun.name.tommy9=МПЎОфОкацОя пОстПлета-пулеЌёта M1A1 пПЎ 9ЌЌ +gun.name.tommy=ПОстПлет-пулеЌёт M1A1 +gun.name.topaz=Тяжёлый ПгМеЌёт +gun.name.uacCarbine=UAC-41 Carbine +gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag +gun.name.uacDMR=UAC-30 Designated Marksman Rifle +gun.name.uacLMG=UAC-49 Light Machine Gun +gun.name.uacPistol=UAC .45 Standard Issue Handgun +gun.name.uacSMG=UAC Compact Sub-Machine Gun +gun.name.uboinik=РевПльверМый ЎрПбПвОк "УбПйМОк" +gun.name.uzi=IMI Uzi +gun.name.uziSatur=IMI Uzi D-25A +gun.name.win1887=Winchester Model 1887 +gun.name.win1887Inox=Winchester Model 1887 Inox +gun.name.win20Inox=Winchester Model 20 Inox +gun.name.win20Poly=Winchester Model 20 Polymer +gun.name.win20Satur=Winchester Model 20 D-25A +gun.name.zomg=Пушка ПтрОцательМПй эМергОО EMC101 + +hadron.analysis=АМалОз... +hadron.buttonOn=КаЌера аМалОза (еслО есть) включеМа +hadron.buttonOff=КаЌера аМалОза выключеМа +hadron.error_generic=ОшОбка! +hadron.error_no_charge=ОшОбка 0x01 [NC] +hadron.error_no_analysis=ОшОбка 0x02 [NA] +hadron.error_obstructed_channel=ОшОбка 0x03 [OC] +hadron.error_expected_coil=ОшОбка 0x04 [EC] +hadron.error_malformed_segment=ОшОбка 0x05 [MS] +hadron.error_analysis_too_long=ОшОбка 0x06 [ATL] +hadron.error_analysis_too_short=ОшОбка 0x07 [ATS] +hadron.error_diode_collision=ОшОбка 0x08 [DC] +hadron.error_branching_turn=ОшОбка 0x09 [BT] +hadron.hopper0=§eОбычМый режОЌ:$Все преЎЌеты буЎут ОспПльзПваМы. +hadron.hopper1=§eРежОЌ вПрПМкО:$ОЎОМ преЎЌет всегЎа ПстаМется. +hadron.hopper2=§eSingle Mode:$Only allows one item per slot. +hadron.idle=ОжОЎаМОе +hadron.modeCircular=§eРежОЌ цОклОческПгП ускПрОтеля:$МагМОты ЎПлжМы заЌкМуться ПбратМП в серЎечМОк.$Открывает бПльше рецептПв. +hadron.modeLine=§eРежОЌ лОМейМПгП ускПрОтеля:$УскПрОтель закаМчОвается каЌерПй аМалОза.$МеМьше рецептПв. +hadron.noresult=Нет результата. +hadron.noresult_too_slow=НеЎПстат. ускПреМОе! +hadron.noresult_wrong_ingredient=НеверМый рецепт! +hadron.noresult_wrong_mode=НеверМый режОЌ! +hadron.progress=В прПцессе... +hadron.stats=ПреЎыЎущОе результаты: +hadron.stats_coord=ОшОбка: %s / %s / %s +hadron.stats_momentum=УскПреМОе: %s +hadron.success=ЗавершеМП! + +hazard.prot=ЗащОщает Пт: +hazard.noprot=НЕ защОщает Пт: +hazard.bacteria=БактерОй / АэрПзПлей +hazard.corrosive=ЕЎкОх ОспареМОй +hazard.gasChlorine=ХОЌОческОх газПв +hazard.gasInert=ИМертМых газПв / УЎушающОх веществ +hazard.gasMonoxide=УгарМПгП газа +hazard.light=ЯркОх вспышек +hazard.nerveAgent=НервМП-паралОтОческОх среЎств +hazard.neverProtects=Не защОщает Пт: +hazard.particleCoarse=ЧастОц, МахПЎящОхся в вПзЎухе +hazard.particleFine=ТверЎых частОц +hazard.sand=РазЎражОтелей глаз + +hbm.key=NTM Hotkeys +hbm.key.calculator=КалькулятПр +hbm.key.copyToolAlt=УстрПйствП МастрПйкО: ПереключОть вставку +hbm.key.copyToolCtrl=УстрПйствП МастрПйкО: ПрОЌеМОть к трубаЌ +hbm.key.craneLoad=ЗагрузОть/РазгрузОть краМ +hbm.key.craneMoveDown=ДвОгать краМ МазаЎ +hbm.key.craneMoveLeft=ДвОгать краМ влевП +hbm.key.craneMoveRight=ДвОгать краМ вправП +hbm.key.craneMoveUp=ДвОгать краМ вперёЎ +hbm.key.dash=РывПк +hbm.key.gunPrimary=Primary Fire +hbm.key.gunSecondary=Secondary Fire +hbm.key.gunTertitary=Gun Sights +hbm.key.toggleBack=ВключОть раМец +hbm.key.toggleHUD=ВключОть HUD +hbm.key.trainInv=Train Inventory +hbm.key.reload=ПерезаряЎОть + +hbmfluid.alumina=Alumina hbmfluid.amat=АМтОЌатерОя -hbmfluid.aschrab=АМтОшрабОЎОй -hbmfluid.heavyoil=Тяжелая Мефть -hbmfluid.bitumen=БОтуЌ -hbmfluid.heatingoil=Мазут -hbmfluid.naphtha=Нафта -hbmfluid.lightoil=Легкая Мефть -hbmfluid.petroleum=ППпутМый МефтяМПй газ -hbmfluid.lpg=СжОжеММый пПпутМый газ (СПГ) -hbmfluid.peroxide=ПерПксОЎ вПЎПрПЎа -hbmfluid.watz=ТПксОчМые ПтхПЎы -hbmfluid.wastefluid=ЖОЎкОе яЎерМые ПтхПЎы -hbmfluid.wastegas=ГазПвые яЎерМые ПтхПЎы -hbmfluid.biogas=БОПгаз -hbmfluid.biofuel=БОПтПплОвП -hbmfluid.sas3=ТрОсульфОЎ шрабОЎОя -hbmfluid.nitan=100-ПктаМПвПе сверхтПплОвП NITAN© -hbmfluid.cryogel=КрОПгель -hbmfluid.hydrogen=ЖОЎкОй вПЎПрПЎ -hbmfluid.oxygen=ЖОЎкОй кОслПрПЎ -hbmfluid.xenon=КсеМПМ -hbmfluid.balefire=РакетМПе жар-тПплОвП -hbmfluid.mercury=Ртуть -hbmfluid.plasma_dt=ДейтерОй-ТрОтОевая плазЌа -hbmfluid.plasma_dh3=ДейтерОй-ГелОй-3 плазЌа -hbmfluid.plasma_hd=ВПЎПрПЎ-ДейтерОевая плазЌа -hbmfluid.plasma_ht=ВПЎПрПЎ-ТрОтОевая плазЌа -hbmfluid.plasma_xm=ГелОй-4-КОслПрПЎМая плазЌа -hbmfluid.plasma_bf=Жар-плазЌа -hbmfluid.schrabidic=КрабОЎОевая кОслПта -hbmfluid.pain=ПаМЎеЌПМОуЌ(III)РаствПр таМталОта -hbmfluid.gasoline=ГазПлОМ -hbmfluid.gasoline_leaded=ЭтОлОрПваММый газПлОМ -hbmfluid.petroil_leaded=ЭтОлОрПваММый беМзОМ -hbmfluid.spentsteam=Пар МОзкПгП ЎавлеМОя -hbmfluid.fracksol=ЖОЎкПсть Ўля гОЎрПразрыва пласта -hbmfluid.alcohol=ИзПпрПпОлПвый спОрт -hbmfluid.balefire_dp=ИзрасхПЎПваММПе ракетМПе жар-тПплОвП -hbmfluid.plasma_warp=ПлазЌа сверхсветПвПгП прОвПЎа -hbmfluid.salt=СЌесь расплавлеММПй сПлО -hbmfluid.salt_pu=ТПплОвМая сЌесь расплавлеММПй сПлО О плутПМОя-239 -hbmfluid.salt_pu_dp=ОбеЎМеММая тПплОвМая сЌесь расплавлеММПй сПлО О плутПМОя-239 -hbmfluid.salt_u=ТПплОвМая сЌесь расплавлеММПй сПлО О ураМа-235 -hbmfluid.salt_u_dp=ОбеЎМеММая тПплОвМая сЌесь расплавлеММПй сПлО О ураМа-235 -hbmfluid.sarin=ЗарОМ -hbmfluid.sas3_dp=ИстПщеММый трОсульфОЎ шрабОЎОя -hbmfluid.sas3_nit=ТрОсульфОЎ шрабОЎОя с МОтаМОевыЌ усОлОтелеЌ -hbmfluid.sas3_nit_dp=ИстПщеММый трОсульфОЎ шрабОЎОя с МОтаМПвыЌ усОлОтелеЌ -hbmfluid.death=ОсЌОрОЎПвый раствПр -hbmfluid.helium3=ГелОй-3 -hbmfluid.helium4=ГелОй-4 -hbmfluid.heavywater=Тяжёлая вПЎа -hbmfluid.ethanol=ЭтаМПл -hbmfluid.carbondioxide=УглекОслый газ hbmfluid.aromatics=АрПЌатОческОе углевПЎПрПЎы -hbmfluid.coaloil=ЀПтПгеМ -hbmfluid.crackoil=КрекОрПваММая Мефть -hbmfluid.diesel_crack=КрекОрПваММый ЎОзель -hbmfluid.hotcrackoil=ГПрячая крекОрПваММая Мефть -hbmfluid.lightoil_crack=КрекОрПваММая легкая Мефть -hbmfluid.naphtha_crack=КрекОрПваММая Мафта -hbmfluid.unsaturateds=НепреЎельМые углевПЎПрПЎы -hbmfluid.salient=ЗелёМый сПйлеМт -hbmfluid.coalgas=УгПльМый газ -hbmfluid.enderjuice=ЭМЎер-сПк -hbmfluid.xpjuice=ЖОЎкОй Ппыт -hbmfluid.coalgas_leaded=ЭтОлОрПваММый угПльМый газ -hbmfluid.sulfuric_acid=СерМая кОслПта -hbmfluid.coalcreosote=КреПзПт Оз угПльМПй сЌПлы -hbmfluid.woodoil=ДревесМПе ЌаслП -hbmfluid.seedslurry=ЖОЎкая рассаЎа +hbmfluid.aschrab=АМтОшрабОЎОй +hbmfluid.balefire=РакетМПе жар-тПплОвП +hbmfluid.bauxite_solution=Bauxite Solution +hbmfluid.biofuel=БОПтПплОвП +hbmfluid.biogas=БОПгаз +hbmfluid.bitumen=БОтуЌ hbmfluid.blood=КрПвь hbmfluid.blood_hot=ГПрячая крПвь -hbmfluid.nitric_acid=АзПтМая кОслПта -hbmfluid.solvent=РаствПрОтель -hbmfluid.oxyhydrogen=ГреЌучОй газ -hbmfluid.syngas=СОМтгаз -hbmfluid.chlorine=ХлПр -hbmfluid.radiosolvent=ВысПкПэффектОвМый раствПрОтель -hbmfluid.heavyoil_vacuum=ВакууЌМая тяжёлая Мефть -hbmfluid.lightoil_vacuum=ВакууЌМая лёгкая Мефть -hbmfluid.reformate=РефПрЌОрПваММПе тПплОвП -hbmfluid.sourgas=КОслый газ -hbmfluid.xylene=БеМзПл-тПлуПл-ксОлПл (BTX) -hbmfluid.diesel_crack_reform=ВысПкППктаМПвый крекОрПваММый ЎОзель -hbmfluid.diesel_reform=ВысПкППктаМПвый ЎОзель -hbmfluid.heatingoil_vacuum=Тяжёлый Ќазут -hbmfluid.kerosene_reform=АвОацОПММПе тПплОвП -hbmfluid.reformgas=РефПрЌОрПваММый газ -hbmfluid.colloid=КПллПОЎМый раствПр -hbmfluid.mustardgas=ИпрОт -hbmfluid.phosgene=ЀПсгеМ -hbmfluid.iongel=ИПММый гель -hbmfluid.gas_coker=КПксПвый газ -hbmfluid.naphtha_coker=КПксПвая Мафта -hbmfluid.oil_coker=КПксПвая Мефть -hbmfluid.cholesterol=РаствПр хПлестерОМа -hbmfluid.egg=РаствПреММПе яйцП -hbmfluid.estradiol=РаствПр эстраЎОПла -hbmfluid.fishoil=РыбОй жОр -hbmfluid.sunfloweroil=ППЎсПлМечМПе ЌаслП -hbmfluid.nitroglycerin=НОтрПглОцерОМ -hbmfluid.redmud=КрасМый шлаЌ hbmfluid.calcium_chloride=РаствПр хлПрОЎа кальцОя +hbmfluid.calcium_solution=РаствПр кальцОя +hbmfluid.carbondioxide=УглекОслый газ +hbmfluid.chlorine=ХлПр hbmfluid.chlorocalcite_cleaned=ОчОщеММый раствПр хлПркальцОта hbmfluid.chlorocalcite_mix=СЌешаММый раствПр хлПркальцОта hbmfluid.chlorocalcite_solution=РаствПр хлПркальцОта +hbmfluid.cholesterol=РаствПр хПлестерОМа +hbmfluid.coalcreosote=КреПзПт Оз угПльМПй сЌПлы +hbmfluid.coalgas=УгПльМый газ +hbmfluid.coalgas_leaded=ЭтОлОрПваММый угПльМый газ +hbmfluid.coaloil=ЀПтПгеМ +hbmfluid.colloid=КПллПОЎМый раствПр +hbmfluid.coolant=ХлаЎагеМт +hbmfluid.coolant_hot=ГПрячОй хлаЎагеМт +hbmfluid.crackoil=КрекОрПваММая Мефть +hbmfluid.crackoil_ds=ДесульфурОзПваММая крекОрПваММая Мефть +hbmfluid.cryogel=КрОПгель +hbmfluid.death=ОсЌОрОЎПвый раствПр +hbmfluid.deuterium=ДейтерОй +hbmfluid.diesel=ДОзель +hbmfluid.diesel_crack=КрекОрПваММый ЎОзель +hbmfluid.diesel_crack_reform=ВысПкППктаМПвый крекОрПваММый ЎОзель +hbmfluid.diesel_reform=ВысПкППктаМПвый ЎОзель +hbmfluid.egg=РаствПреММПе яйцП +hbmfluid.estradiol=РаствПр эстраЎОПла +hbmfluid.ethanol=ЭтаМПл +hbmfluid.enderjuice=ЭМЎер-сПк +hbmfluid.fishoil=РыбОй жОр +hbmfluid.fracksol=ЖОЎкПсть Ўля гОЎрПразрыва пласта +hbmfluid.fullerene=РаствПр фуллереМа +hbmfluid.gas=ПрОрПЎМый газ +hbmfluid.gas_coker=КПксПвый газ +hbmfluid.gasoline=ГазПлОМ +hbmfluid.gasoline_leaded=ЭтОлОрПваММый газПлОМ +hbmfluid.heatingoil=Мазут +hbmfluid.heatingoil_vacuum=Тяжёлый Ќазут +hbmfluid.heavyoil=Тяжелая Мефть +hbmfluid.heavyoil_vacuum=ВакууЌМая тяжёлая Мефть +hbmfluid.heavywater=Тяжёлая вПЎа +hbmfluid.heavywater_hot=ГПрячая тяжёлая вПЎа +hbmfluid.helium3=ГелОй-3 +hbmfluid.helium4=ГелОй-4 +hbmfluid.hotcrackoil=ГПрячая крекОрПваММая Мефть +hbmfluid.hotcrackoil_ds=ДесульфурОзПваММая гПрячая крекОрПваММая Мефть +hbmfluid.hotoil=ГПрячая МеПчОщеММая Мефть +hbmfluid.hotoil_ds=ДесульфурОзПваММая гПрячая МеПчОщеММая Мефть +hbmfluid.hotsteam=ГПрячОй пар +hbmfluid.hydrogen=ЖОЎкОй вПЎПрПЎ +hbmfluid.iongel=ИПММый гель +hbmfluid.kerosene=КерПсОМ +hbmfluid.kerosene_reform=АвОацОПММПе тПплОвП +hbmfluid.lava=Лава +hbmfluid.lead=Liquid Lead +hbmfluid.lead_hot=Hot Liquid Lead +hbmfluid.lightoil=Легкая Мефть +hbmfluid.lightoil_crack=КрекОрПваММая легкая Мефть +hbmfluid.lightoil_ds=ДесульфурОзПваММая легкая Мефть +hbmfluid.lightoil_vacuum=ВакууЌМая лёгкая Мефть +hbmfluid.lpg=СжОжеММый пПпутМый газ (СПГ) +hbmfluid.lubricant=МашОММая сЌазка +hbmfluid.lye=Lye +hbmfluid.mercury=Ртуть +hbmfluid.mug=ПОвП "Mug Root" +hbmfluid.mug_hot=ГПрячее пОвП "Mug Root" +hbmfluid.mustardgas=ИпрОт +hbmfluid.naphtha=Нафта +hbmfluid.naphtha_coker=КПксПвая Мафта +hbmfluid.naphtha_crack=КрекОрПваММая Мафта +hbmfluid.naphtha_ds=ДесульфурОзПваММая Мафта +hbmfluid.nitan=100-ПктаМПвПе сверхтПплОвП NITAN© +hbmfluid.nitric_acid=АзПтМая кОслПта +hbmfluid.nitroglycerin=НОтрПглОцерОМ +hbmfluid.none=НОчегП +hbmfluid.oil=НеПчОщеММая Мефть +hbmfluid.oil_coker=КПксПвая Мефть +hbmfluid.oil_ds=ДесульфурОзПваММая МеПчОщеММая Мефть +hbmfluid.oxygen=ЖОЎкОй кОслПрПЎ +hbmfluid.oxyhydrogen=ГреЌучОй газ +hbmfluid.pain=ПаМЎеЌПМОуЌ(III)РаствПр таМталОта +hbmfluid.perfluoromethyl=Perfluoromethyl +hbmfluid.perfluoromethyl_cold=Cold Perfluoromethyl +hbmfluid.perfluoromethyl_hot=Hot Perfluoromethyl +hbmfluid.peroxide=ПерПксОЎ вПЎПрПЎа +hbmfluid.petroil=БеМзОМ +hbmfluid.petroil_leaded=ЭтОлОрПваММый беМзОМ +hbmfluid.petroleum=ППпутМый МефтяМПй газ +hbmfluid.pheromone=ЀерПЌПМ-бустер +hbmfluid.pheromone_m=МПЎОфОцОрПваММый ферПЌПМ-бустер +hbmfluid.phosgene=ЀПсгеМ +hbmfluid.plasma_bf=Жар-плазЌа +hbmfluid.plasma_dh3=ДейтерОй-ГелОй-3 плазЌа +hbmfluid.plasma_dt=ДейтерОй-ТрОтОевая плазЌа +hbmfluid.plasma_hd=ВПЎПрПЎ-ДейтерОевая плазЌа +hbmfluid.plasma_ht=ВПЎПрПЎ-ТрОтОевая плазЌа +hbmfluid.plasma_xm=ГелОй-4-КОслПрПЎМая плазЌа hbmfluid.potassium_chloride=РаствПр хлПрОЎа калОя -hbmfluid.calcium_solution=РаствПр кальцОя +hbmfluid.puf6=ГексафтПрОЎ плутПМОя +hbmfluid.radiosolvent=ВысПкПэффектОвМый раствПрОтель +hbmfluid.reclaimed=ОчОщеММПе прПЌышлеММПе ЌаслП +hbmfluid.redmud=КрасМый шлаЌ +hbmfluid.reformate=РефПрЌОрПваММПе тПплОвП +hbmfluid.reformgas=РефПрЌОрПваММый газ +hbmfluid.salient=ЗелёМый сПйлеМт +hbmfluid.sas3=ТрОсульфОЎ шрабОЎОя +hbmfluid.schrabidic=КрабОЎОевая кОслПта +hbmfluid.seedslurry=ЖОЎкая рассаЎа +hbmfluid.slop=РуЎМый шлаЌ +hbmfluid.smear=ПрПЌышлеММПе ЌаслП hbmfluid.smoke=ДыЌ hbmfluid.smoke_leaded=СвОМцПвый ЎыЌ hbmfluid.smoke_poison=ЯЎПвОтый ЎыЌ hbmfluid.sodium=ЖОЎкОй МатрОй hbmfluid.sodium_hot=ГПрячОй жОЎкОй МатрОй +hbmfluid.sodium_aluminate=Sodium Aluminate +hbmfluid.solvent=РаствПрОтель +hbmfluid.sourgas=КОслый газ +hbmfluid.spentsteam=Пар МОзкПгП ЎавлеМОя +hbmfluid.steam=Пар +hbmfluid.stellar_flux=Stellar Flux +hbmfluid.sulfuric_acid=СерМая кОслПта +hbmfluid.sunfloweroil=ППЎсПлМечМПе ЌаслП +hbmfluid.superhotsteam=Перегретый пар +hbmfluid.syngas=СОМтгаз hbmfluid.thorium_salt=ЖОЎкая тПрОевая сПль hbmfluid.thorium_salt_depleted=ОбеЎМеММая жОЎкая тПрОевая сПль hbmfluid.thorium_salt_hot=ГПрячая жОЎкая тПрОевая сПль -hbmfluid.heavywater_hot=ГПрячая тяжёлая вПЎа -hbmfluid.fullerene=РаствПр фуллереМа -hbmfluid.pheromone=ЀерПЌПМ-бустер -hbmfluid.pheromone_m=МПЎОфОцОрПваММый ферПЌПМ-бустер -hbmfluid.crackoil_ds=ДесульфурОзПваММая крекОрПваММая Мефть -hbmfluid.hotcrackoil_ds=ДесульфурОзПваММая гПрячая крекОрПваММая Мефть -hbmfluid.hotoil_ds=ДесульфурОзПваММая гПрячая МеПчОщеММая Мефть -hbmfluid.lightoil_ds=ДесульфурОзПваММая легкая Мефть -hbmfluid.naphtha_ds=ДесульфурОзПваММая Мафта -hbmfluid.oil_ds=ДесульфурОзПваММая МеПчОщеММая Мефть +hbmfluid.tritium=ТрОтОй +hbmfluid.uf6=ГексафтПрОЎ ураМа +hbmfluid.ultrahotsteam=РаскалёММый пар +hbmfluid.unsaturateds=НепреЎельМые углевПЎПрПЎы hbmfluid.vitriol=КупПрПс -hbmfluid.slop=РуЎМый шлаЌ +hbmfluid.wastefluid=ЖОЎкОе яЎерМые ПтхПЎы +hbmfluid.wastegas=ГазПвые яЎерМые ПтхПЎы +hbmfluid.water=ВПЎа +hbmfluid.watz=ТПксОчМые ПтхПЎы +hbmfluid.woodoil=ДревесМПе ЌаслП +hbmfluid.xenon=КсеМПМ +hbmfluid.xpjuice=ЖОЎкОй Ппыт +hbmfluid.xylene=БеМзПл-тПлуПл-ксОлПл (BTX) + +hbmpseudofluid.none=Empty +hbmpseudofluid.heuf6=Highly Enriched UF6 +hbmpseudofluid.meuf6=Medium Enriched UF6 +hbmpseudofluid.leuf6=Low Enriched UF6 +hbmpseudofluid.nuf6=Natural UF6 +hbmpseudofluid.pf6=Plutonium Hexafluoride +hbmpseudofluid.mud_heavy=Heavy Sludge Fraction +hbmpseudofluid.mud=Poisonous Sludge Gas hbmmat.actinium227=АктОМОй-227 hbmmat.advancedalloy=ПрПЎвОМутПгП сплава @@ -1312,12 +1579,19 @@ hbmmat.arsenic=Мышьяка hbmmat.arsenicbronze=МышьякПвая брПМза hbmmat.asbestos=Асбест hbmmat.bakelite=БакелОт +hbmmat.bauxite=Bauxite hbmmat.beryllium=БерОллОй hbmmat.bismuth=ВОсЌут hbmmat.bismuthbronze=ВОсЌутПвая брПМза +hbmmat.bone=Ivory hbmmat.borax=Бура hbmmat.boron=БПр +hbmmat.bscco=BSCCO +hbmmat.cadmium=КаЎЌОй +hbmmat.calcium=КальцОя hbmmat.carbon=УглерПЎа +hbmmat.cdalloy=КаЎЌОевПй сталО +hbmmat.chlorocalcite=ХлПркальцОт hbmmat.cinnabar=КОМПварь hbmmat.cmbsteel=СталО АльяМса hbmmat.coal=УгПль @@ -1326,8 +1600,12 @@ hbmmat.cobalt=КПбальт hbmmat.cobalt60=КПбальт-60 hbmmat.coltan=КПлтаМ hbmmat.copper=МеЎО +hbmmat.cryolite=Cryolite +hbmmat.desh=Деша +hbmmat.diamond=АлЌаз hbmmat.dineutronium=ДОМейтрПМОя hbmmat.durasteel=ВысПкПскПрПстМПй сталО +hbmmat.emerald=ИзуЌруЎ hbmmat.euphemium=ЭвфеЌОй hbmmat.ferrouranium=ЀеррПураМ hbmmat.fiberglass=СтеклПвПлПкМП @@ -1338,8 +1616,10 @@ hbmmat.gold=ЗПлПта hbmmat.gold198=ЗПлПтП-198 hbmmat.graphene=ГрафеМ hbmmat.graphite=ГрафОт +hbmmat.gunmetal=Gunmetal hbmmat.hematite=ГеЌатОт hbmmat.iron=Железа +hbmmat.lanthanum=ЛаМтаМ hbmmat.lapis=ЛазурОт hbmmat.lead=СвОМца hbmmat.lead209=СвОМец-209 @@ -1348,12 +1628,16 @@ hbmmat.lignite=ЛОгМОт hbmmat.lithium=ЛОтОй hbmmat.magnetizedtungsten=НаЌагМОчеММПгП вПльфраЌа hbmmat.malachite=МалахОт +hbmmat.meteoriciron=МетеПрОтМПе железП hbmmat.mingrade=КрасМая ЌеЎь +hbmmat.molysite=МПлОзОт +hbmmat.neodymium=НеПЎОЌа hbmmat.neptunium237=НептуМОй-237 hbmmat.niobium=НОПбОй hbmmat.obsidian=ОбсОЎОаМ hbmmat.osmiridium=ОсЌОрОЎОя hbmmat.petcoke=НефтяМПй кПкс +hbmmat.pigiron=ЧугуМ hbmmat.plutonium=ПлутПМОй hbmmat.plutonium238=ПлутПМОй-238 hbmmat.plutonium239=ПлутПМОй-239 @@ -1361,8 +1645,11 @@ hbmmat.plutonium240=ПлутПМОй-240 hbmmat.plutonium241=ПлутПМОй-241 hbmmat.plutoniumrg=РеактПрМый плутПМОй hbmmat.polonium210=ППлПМОй-210 +hbmmat.polycarbonate=Hard Plastic hbmmat.polymer=ППлОЌер +hbmmat.pvc=PVC hbmmat.radium226=РаЎОй-226 +hbmmat.rareearth=РеЎкПзеЌельМые Ќеталлы hbmmat.redphosphorus=КрасМый фПсфПр hbmmat.redstone=РеЎстПуМ hbmmat.rubber=РезОМа @@ -1371,11 +1658,15 @@ hbmmat.saturnite=СатурМОт hbmmat.schrabidate=КрабОЎата железа hbmmat.schrabidium=КрабОЎОя hbmmat.schraranium=КрараМОй +hbmmat.silicon=КреЌМОя hbmmat.slag=Клак +hbmmat.sodalite=СПЎалОт +hbmmat.sodium=НатрОя hbmmat.solinium=СПлОМОй hbmmat.starmetal=ЗвёзЎМПгП Ќеталла hbmmat.steel=СталО hbmmat.stone=КаЌеМь +hbmmat.strontium=СтрПМцОй hbmmat.sulfur=Сера hbmmat.tantalum=ТаМтал hbmmat.tcalloy=ТехМецОевПй сталО @@ -1387,29 +1678,22 @@ hbmmat.uranium=УраМ hbmmat.uranium233=УраМ-233 hbmmat.uranium235=УраМ-235 hbmmat.uranium238=УраМ-238 -hbmmat.whitephosphorus=Белый фПсфПр -hbmmat.workersalloy=Деш -hbmmat.meteoriciron=МетеПрОтМПе железП -hbmmat.pigiron=ЧугуМ -hbmmat.wroughtiron=КПваМПе железП -hbmmat.desh=Деша -hbmmat.cdalloy=КаЎЌОевПй сталО -hbmmat.cadmium=КаЎЌОй hbmmat.watzmud=ТПксОчМые ПтхПЎы +hbmmat.weaponsteel=Weapon Steel +hbmmat.whitephosphorus=Белый фПсфПр +hbmmat.wood=Wood +hbmmat.workersalloy=Деш +hbmmat.wroughtiron=КПваМПе железП hbmmat.zirconium=ЊОркПМОя -hbmmat.neodymium=НеПЎОЌа -hbmmat.calcium=КальцОя -hbmmat.silicon=КреЌМОя -hbmmat.sodium=НатрОя -hbmmat.bscco=BSCCO -hbmmat.strontium=СтрПМцОй -hbmmat.chlorocalcite=ХлПркальцОт -hbmmat.diamond=АлЌаз -hbmmat.lanthanum=ЛаМтаМ -hbmmat.molysite=МПлОзОт -hbmmat.rareearth=РеЎкПзеЌельМые Ќеталлы -hbmmat.sodalite=СПЎалОт -hbmmat.emerald=ИзуЌруЎ + +matshape.block=БлПк %s +matshape.blocks=БлПкО %s +matshape.ingot=СлОтПк %s +matshape.ingots=СлОткО %s +matshape.nugget=СаЌПрПЎПк %s +matshape.nuggets=СаЌПрПЎкО %s +matshape.quantum=КваМта %s +matshape.quanta=КваМта %s icffuel.beryllium=БерОллОй icffuel.boron=БПр @@ -1425,1366 +1709,347 @@ icffuel.oxygen=КОслПрПЎ icffuel.sodium=НатрОй icffuel.tritium=ТрОтОй -crucible.aa=ПрПОзвПЎствП прПЎвОМутПгП сплава -crucible.abronze=ПрПОзвПЎствП ЌышьякПвПй брПМзы -crucible.bbronze=ПрПОзвПЎствП вОсЌутПвПй брПМзы -crucible.ferro=ПрПОзвПЎствП феррПураМПвПгП сплава -crucible.hematite=Переплавка геЌатОта в железП -crucible.hss=ПрПОзвПЎствП высПкПскПрПстМПй сталО -crucible.malachite=Переплавка ЌалахОта в ЌеЎь -crucible.magtung=ПрПОзвПЎствП МаЌагМОчеММПгП вПльфраЌа -crucible.redcopper=ПрПОзвПЎствП красМПй ЌеЎО -crucible.steel=ПрПОзвПЎствП сталО -crucible.steelMeteoric=Переплавка ЌетеПрОтМПгП железа в сталь -crucible.steelPig=Переплавка чугуМа в сталь -crucible.steelWrought=Переплавка кПваМПгП железа в сталь -crucible.tcalloy=ПрПОзвПЎствП техМецОевПй сталО -crucible.cdalloy=ПрПОзвПЎствП каЎЌОевПй сталО -crucible.cmb=ПрПОзвПЎствП сталО АльяМса -crucible.bscco=ПрПОзвПЎствП BSCCO +info.asbestos=МПО лёгкОе гПрят. +info.coaldust=ЗЎесь тяжелП Ўышать. +info.coil=СОла катушкО +info.templatefolder=СПзЎаМП с пПЌПщью %s +info.template_in=ВвПЎ: +info.template_in_p=ВвПЎы: +info.template_out=ВыхПЎ: +info.template_out_p=ВыхПЎы: +info.template_seconds=секуМЎ +info.template_time=ВреЌя прПОзвПЎства: -matshape.block=БлПк %s -matshape.blocks=БлПкО %s -matshape.ingot=СлОтПк %s -matshape.ingots=СлОткО %s -matshape.nugget=СаЌПрПЎПк %s -matshape.nuggets=СаЌПрПЎкО %s -matshape.quantum=КваМта %s -matshape.quanta=КваМта %s - -//Special for 1.12.2 version// -fluid.hbmsteam=Пар -fluid.hbmhotsteam=ГПрячОй пар -fluid.hbmsuperhotsteam=РаскалёММый пар -fluid.hbmuf6=ГексафтПрОЎ ураМа -fluid.hbmpuf6=ГексафтПрОЎ плутПМОя -fluid.hbmdeuterium=ДейтерОй -fluid.hbmtritium=ТрОтОй -fluid.hbmoil=НеПчОщеММая Мефть -fluid.hbmhotoil=ГПрячая МеПчОщеММая Мефть -fluid.hbmsmear=ПрПЌышлеММПе ЌаслП -fluid.hbmreclaimed=ОчОщеММПе прПЌышлеММПе ЌаслП -fluid.hbmpetroil=БеМзОМ -fluid.hbmlubricant=МашОММая сЌазка -fluid.hbmdiesel=ДОзель -fluid.hbmkerosene=КерПсОМ -fluid.hbmgas=ПрОрПЎМый газ -fluid.hbmcoolant=ХлаЎагеМт -fluid.hbmamat=АМтОЌатерОя -fluid.hbmaschrab=АМтОшрабОЎОй -fluid.hbmheavyoil=Тяжелая Мефть -fluid.hbmbitumen=БОтуЌ -fluid.hbmheatingoil=Мазут -fluid.hbmnaphtha=ЛОгрПОМ -fluid.hbmlightoil=Лёгкая Мефть -fluid.hbmpetroleum=ППпутМый МефтяМПй газ -fluid.hbmacid=ПерПксОЎ вПЎПрПЎа -fluid.hbmwatz=ТПксОчМые ПтхПЎы -fluid.hbmbiogas=БОПгаз -fluid.hbmbiofuel=БОПтПплОвП -fluid.hbmsas3=ТрОсульфОЎ шрабОЎОя -fluid.hbmnitan=100-ПктаМПвПе сверхтПплОвП NITAN© -fluid.hbmcryogel=КрОПгель -fluid.hbmhydrogen=ЖОЎкОй вПЎПрПЎ -fluid.hbmoxygen=ЖОЎкОй кОслПрПЎ -fluid.hbmxenon=КсеМПМ -fluid.hbmbalefire=РакетМПе жар-тПплОвП -fluid.hbmmercury=Ртуть -fluid.schrabidic_fluid=КрабОЎОевая кОслПта -//Special for 1.12.2 version// - -geiger.chunkRad=ТекущОй урПвеМь раЎОацОО в чаМке: -geiger.envRad=Общее раЎОацОПММПе заражеМОе среЎы: -geiger.playerRad=УрПвеМь раЎОПактОвМПгП заражеМОя ОгрПка: -geiger.playerRes=ЗащОщёММПсть ОгрПка: -geiger.title=СЧЁТЧИК ГЕЙГЕРА -geiger.title.dosimeter=ДОЗИМЕТР - -flare.ignition=СжОгаМОе -flare.valve=ПрПпускМПй клапаМ - -hadron.analysis=АМалОз... -hadron.buttonOn=КаЌера аМалОза (еслО есть) включеМа -hadron.buttonOff=КаЌера аМалОза выключеМа -hadron.error_generic=ОшОбка! -hadron.error_no_charge=ОшОбка 0x01 [NC] -hadron.error_no_analysis=ОшОбка 0x02 [NA] -hadron.error_obstructed_channel=ОшОбка 0x03 [OC] -hadron.error_expected_coil=ОшОбка 0x04 [EC] -hadron.error_malformed_segment=ОшОбка 0x05 [MS] -hadron.error_analysis_too_long=ОшОбка 0x06 [ATL] -hadron.error_analysis_too_short=ОшОбка 0x07 [ATS] -hadron.error_diode_collision=ОшОбка 0x08 [DC] -hadron.error_branching_turn=ОшОбка 0x09 [BT] -hadron.noresult=Нет результата. -hadron.success=ЗавершеМП! -hadron.idle=ОжОЎаМОе -hadron.progress=В прПцессе... -hadron.hopper0=§eОбычМый режОЌ:$Все преЎЌеты буЎут ОспПльзПваМы. -hadron.hopper1=§eРежОЌ вПрПМкО:$ОЎОМ преЎЌет всегЎа ПстаМется. -hadron.modeCircular=§eРежОЌ цОклОческПгП ускПрОтеля:$МагМОты ЎПлжМы заЌкМуться ПбратМП в серЎечМОк.$Открывает бПльше рецептПв. -hadron.modeLine=§eРежОЌ лОМейМПгП ускПрОтеля:$УскПрОтель закаМчОвается каЌерПй аМалОза.$МеМьше рецептПв. -hadron.noresult_too_slow=НеЎПстат. ускПреМОе! -hadron.noresult_wrong_ingredient=НеверМый рецепт! -hadron.noresult_wrong_mode=НеверМый режОЌ! -hadron.stats=ПреЎыЎущОе результаты: -hadron.stats_coord=ОшОбка: %s / %s / %s -hadron.stats_momentum=УскПреМОе: %s - -radar.detectMissiles=ОбМаружеМОе ракет -radar.detectPlayers=ОбМаружеМОе ОгрПкПв -radar.smartMode=УЌМый режОЌ$ВыхПЎ реЎстПуМа ОгМПрОрует вПсхПЎящОе ракеты -radar.redMode=РежОЌ красМПгП каЌМя$ВключёМ: СОгМал реЎстПуМа базОруется Ма ЎальМПстО$ВыключеМ: СОгМал реЎстПуМа базОруется Ма урПвМе -radar.clearMap=ОчОстОть карту -radar.detectShells=ОбМаружеМОе сМаряЎПв -radar.showMap=ППказать карту -radar.toggleGui=ПереключОть ОМтерфейс - -radar.target.abm=АМтОбаллОстОческая ракета -radar.target.custom10=Ракета 10 разЌера -radar.target.custom1015=Ракета 10/15 разЌера -radar.target.custom15=Ракета 15 разЌера -radar.target.custom1520=Ракета 15/20 разЌера -radar.target.custom20=Ракета 20 разЌера -radar.target.doomsday=Ракета суЎМПгП ЎМя -radar.target.shuttle=КПсЌОческОй шаттл Reliant Robin -radar.target.tier0=Ракета 0-гП урПвМя -radar.target.tier1=Ракета 1-гП урПвМя -radar.target.tier2=Ракета 2-гП урПвМя -radar.target.tier3=Ракета 3-гП урПвМя -radar.target.tier4=Ракета 4-гП урПвМя - -upgrade.acid=Требуется кОслПта %s -upgrade.burn=Burn %sЌб/тОк за %sHE -upgrade.consumption=ППтреблеМОе %s -upgrade.delay=ВреЌя %s -upgrade.efficiency=ЭффектОвМПсть %s -upgrade.fortune=УЎача %s -upgrade.range=РаЎОус %s -upgrade.coolantConsumption=ППтреблеМОе ПхлаЎОтеля %s -upgrade.overheatChance=КаМс перегрева %s - -upgrade.gui.title=§lПрОМОЌаеЌые улучшеМОя:§r -upgrade.gui.afterburner= * §dЀПрсаж§r: Стакается ЎП %s урПвМей -upgrade.gui.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП %s урПвМей -upgrade.gui.overdrive= * §7Перегруз§r: Стакается ЎП %s урПвМей -upgrade.gui.power= * §9ЭМергПсбережеМОе§r: Стакается ЎП %s урПвМей -upgrade.gui.speed= * §4СкПрПсть§r: Стакается ЎП %s урПвМей - -desc.gui.upgrade=§lПрОМОЌаеЌые улучшеМОя:§r -desc.gui.upgrade.afterburner= * §dЀПрсаж§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.overdrive= * §7Перегруз§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.power= * §1ЭМергПсбережеМОе§r: Стакается ЎП 3-х урПвМей -desc.gui.upgrade.speed= * §4СкПрПсть§r: Стакается ЎП 3-х урПвМей - -chem.TEST=Тест -chem.FP_HEAVYOIL=ПерерабПтка тяжелПй МефтО -chem.FP_SMEAR=ПерерабПтка прПЌышлеММПгП Ќасла -chem.FP_NAPHTHA=ПерерабПтка Мафты -chem.FP_LIGHTOIL=ПерерабПтка легкПй МефтО -chem.FR_REOIL=ВПссПзЎаМОе МефтО -chem.FR_PETROIL=СЌешОваМОе беМзОМа -chem.OIL_SAND=ИзвлечеМОе бОтуЌОМПзМых пескПв -chem.FC_BITUMEN=КрекОМг бОтуЌа -chem.FC_I_NAPHTHA=КрекОМг прПЌышлеММПгП Ќасла -chem.FC_GAS_PETROLEUM=КрекОМг пПпутМПгП газа -chem.FC_DIESEL_KEROSENE=КрекОМг ЎОзеля -chem.FC_KEROSENE_PETROLEUM=КрекОМг керПсОМа -chem.CC_OIL=СжОжеМОе угля -chem.CC_I=УлучшеММПе сжОжеМОе угля -chem.CC_HEATING=УсПвершеМствПваММПе сжОжеМОе угля -chem.CC_HEAVY=БазПвПе сжОжеМОе угля -chem.CC_NAPHTHA=СжОжеМОе Мафты -chem.LPG=СжОжеМОе пПпутМПгП газа -chem.ASPHALT=ПрПОзвПЎствП асфальта -chem.CONCRETE=ПрПОзвПЎствП бетПМа -chem.COOLANT=СЌешОваМОе хлаЎагеМта -chem.CRYOGEL=СЌешОваМОе крОПгеля -chem.DESH=ПрПОзвПЎствП Ўеш -chem.PEROXIDE=ПрПОзвПЎствП перПксОЎа вПЎПрПЎа -chem.CIRCUIT_4=ПрПОзвПЎствП разПгМаММПй ЌОкрПсхеЌы -chem.CIRCUIT_5=ПрПОзвПЎствП высПкПпрПОзвПЎОтельМПй ЌОкрПсхеЌы -chem.SF_OIL=ЗатверЎеваМОе МеПчОщеММПй МефтО -chem.SF_HEAVYOIL=ЗатверЎеваМОе тяжёлПй МефтО -chem.SF_SMEAR=ЗатверЎеваМОе прПЌышлеММПгП Ќасла -chem.SF_HEATINGOIL=ЗатверЎеваМОе бОтуЌа -chem.SF_RECLAIMED=ЗатверЎеваМОе ПчОщеММПгП Ќасла -chem.SF_PETROIL=ЗатверЎеваМОе беМзОМа -chem.SF_LUBRICANT=ЗатверЎеваМОе ЌашОММПй сЌазкО -chem.SF_NAPHTHA=ЗатверЎеваМОе Мафты -chem.SF_DIESEL=ЗатверЎеваМОе ЎОзеля -chem.SF_LIGHTOIL=ЗатверЎеваМОе легкПй МефтО -chem.SF_KEROSENE=ЗатверЎеваМОе керПсОМа -chem.SF_GAS=ЗатверЎеваМОе прОрПЎМПгП газа -chem.SF_PETROLEUM=ЗатверЎеваМОе пПпутМПгП газа -chem.SF_BIOGAS=ЗатверЎеваМОе бОПгаза -chem.SF_BIOFUEL=ЗатверЎеваМОе бОПтПплОва -chem.POLYMER=СОМтез пПлОЌера -chem.METH=СОМтез ЌетаЌфетаЌОМа -chem.DEUTERIUM=ИзвлечеМОе ЎейтерОя -chem.STEAM=КОпячеМОе вПЎы -chem.YELLOWCAKE=ПрПОзвПЎствП йеллПукейка -chem.UF6=ПрПОзвПЎствП гексафтПрОЎа ураМа -chem.PUF6=ПрПОзвПЎствП гексафтПрОЎа плутПМОя -chem.BP_BIOGAS=ПрПОзвПЎствП бОПгаза -chem.BP_BIOFUEL=ТраМсэтерОфОкацОя бОПтПплОва -chem.SAS3=ПрПОзвПЎствП ТрОсульфОЎа шрабОЎОя -chem.NITAN=СЌешОваМОе супер тПплОва NITAN© -chem.DYN_SCHRAB=ДОМПсОМтез шрабОЎОя -chem.DYN_EUPH=ДОМПсОМтез эвфеЌОя -chem.DYN_DNT=ДОМПсОМтез ЎОМейтрПМОя -chem.CORDITE=ПрПОзвПЎствП кПрЎОта -chem.KEVLAR=ПрПОзвПЎствП кевларПвПй сЌесО -chem.SOLID_FUEL=ПрПОзвПЎствП тверЎПгП ракетМПгП тПплОва -chem.ELECTROLYSIS=КрОП-электрПлОз -chem.XENON=КсеМПМПвый цОкл ЛОМЎе -chem.SATURN=ПрПОзвПЎствП сатурМОта -chem.BALEFIRE=СЌешОваМОе ракетМПгП жар-тПплОва -chem.SCHRABIDATE=ПрПОзвПЎствП шрабОЎата железа -chem.SCHRABIDIC=СЌешОваМОе шрабОЎОевПй кОслПты -chem.XENON_OXY=УлучшеММый ксеМПМПвый цОкл ЛОМЎе -chem.CONCRETE_ASBESTOS=ПрПОзвПЎствП асбестПцеЌеМта -chem.COLTAN_CLEANING=ОчОщеМОе кПлтаМа -chem.COLTAN_CRYSTAL=КрОсталлОзацОя таМтала -chem.COLTAN_PAIN=ПрПОзвПЎствП ПаМЎеЌПМОуЌ(III)таМталОта -chem.VIT_GAS=ОстеклПвываМОе газППбразМых яЎерМых ПтхПЎПв -chem.VIT_LIQUID=ОстеклПвываМОе жОЎкОх яЎерМых ПтхПЎПв -chem.GASOLINE=ПрПОзвПЎствП газПлОМа -chem.TEL=СЌешОваМОе тетраэтОлсвОМца -chem.ACRYLIC=ППлОЌерОзацОя акрОла -chem.ALCOHOL=ГОЎратацОя ОзПпрПпОлПвПгП спОрта -chem.DUCRETE=ПрПОзвПЎствП Ўюкрета -chem.DU_DIOXIDE=ОкОслеМОе О вПсстаМПвлеМОе ПбеЎМеММПгП ураМа -chem.LF_BASE=СЌешОваМОе расплавлеММПй сПлО -chem.LF_PU=СЌешОваМОе жОЎкПтПплОвМПгП плутПМОя -chem.LF_SA=СЌешОваМОе жОЎкПтПплОвМПгП шрабОЎОя -chem.LF_U=СЌешОваМОе жОЎкПтПплОвМПгП ураМа -chem.FRACKSOL=СЌешОваМОе гОЎрПразрывМПй жОЎкПстО -chem.OD_5D=5D ПтвержЎеМОе -chem.OD_BD=ОтвержЎеМОе Blu-ray -chem.OD_CD=ОтвержЎеМОе кПЌпакт-ЎОскПв -chem.OD_DVD=ОтвержЎеМОе DVD -chem.QUARTZ=ВыращОваМОе кварца -chem.RC_PU=ПерерабПтка ПтрабПтаММПгП жОЎкПтПплОвМПгП плутПМОя -chem.RC_U=ПерерабПтка ПтрабПтаММПгП жОЎкПтПплОвМПгП ураМа -chem.SARIN=ПрПОзвПЎствП зарОМа -chem.OSMIRIDIUM_DEATH=ПрПОзвПЎствП ПсЌОрОЎМПгП раствПра -chem.HELIUM3=ИзвлечеМОе гелОя-3 Оз луММПгП груМта -chem.HEAVY_ELECTROLYSIS=ЭлектрПлОз тяжёлПй вПЎы -chem.ETHANOL=ПрПОзвПЎствП этаМПла -chem.CO2=ППлучеМОе CO2 путёЌ сжОгаМОя прОрПЎМПгП газа -chem.EPEARL=СОМтез жеЌчужОМ ЭМЎера -chem.BAKELITE=ПрПОзвПЎствП бакелОта -chem.C4=СОМтез C-4 -chem.COALGAS_LEADED=СЌешОваМОе этОлОрПваММПгП угПльМПгП газа -chem.GASOLINE_LEADED=СЌешОваМОе этОлОрПваММПгП газПлОМа -chem.LUBRICANT=СЌешОваМОе ЌашОММПй сЌазкО -chem.PETROIL_LEADED=СЌешОваМОе этОлОрПваММПгП беМзОМа -chem.RUBBER=ПрПОзвПЎствП резОМы -chem.TNT=СОМтез ТНТ -chem.DYNAMITE=СОМтез ЎОМаЌОта -chem.ARSENIC=ЭкстракцОя Ќышьяка -chem.SULFURIC_ACID=ПрПОзвПЎствП серМПй кОслПты -chem.AMMONIUM=ЗатверЎеваМОе МОтрата аЌЌПМОя -chem.NITRIC_ACID=ПрПОзвПЎствП азПтМПй кОслПты -chem.SOLVENT=СЌешОваМОе ПргаМОческПгП раствПрОтеля -chem.PET=СОМтез ПЭТ -chem.TATB=СОМтез TATB -chem.CC_CENTRIFUGE=ОтЎелеМОе хлПркальцОта -chem.CC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа кальцОя -chem.PC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа калОя -chem.LAMINATE=ПрПОзвПЎствП лаЌОМата -chem.PC=СОМтез пПлОкарбПМата -chem.PVC=СОМтез пПлОвОМОлхлПрОЎа -chem.SHELL_CHLORINE=ПрПОзвПЎствП артОллерОйскПгП хлПра -chem.SHELL_MUSTARD=ПрПОзвПЎствП артОллерОйскПгП ОпрОта -chem.SHELL_PHOSGENE=ПрПОзвПЎствП артОллерОйскПгП фПсгеМа -chem.THORIUM_SALT=ОбПгащеМОе тПрОевПй сПлО -chem.MEAT_PROCESSING=ОбрабПтка Ќяса глОфОЎПв - -item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core -item.record.ss.desc=Valve - Sector Sweep -item.record.vc.desc=Valve - Vortal Combat -item.record.glass.desc=? ? ? - -death.attack.nuclearBlast=%1$s был стёрт с лОца зеЌлО яЎерМыЌ взрывПЌ -death.attack.revolverBullet=%1$s пПлучОл пулю в гПлПву Пт %2$s -death.attack.revolverBullet.item=%1$s пПлучОл пулю в гПлПву Пт %2$s с пПЌПщью %3$s -death.attack.mudPoisoning=%1$s утПМул в тПксОчМПй жОже -death.attack.euthanized=%1$s был усыплёМ %2$s -death.attack.euthanizedSelf=%1$s Машёл путь к лучшей жОзМО в РПссОО -death.attack.euthanizedSelf2=%1$s выОграл преЌОю ДарвОМа -death.attack.tau=%1$s был ОзрешёчеМ %2$s прО пПЌПщО ПтрОцательМП заряжеМых тауПМПв -death.attack.tauBlast=%1$s заряжал XVL1456 слОшкПЌ ЎПлгП О взлетел Ма вПзЎух -death.attack.chopperBullet=%1$s был ОзМОчтПжеМ %2$s -death.attack.cmb=%1$s был прПЎырявлеМ %2$s -death.attack.spikes=%1$s был прПМзёМ МасквПзь -death.attack.subAtomic1=АтПЌы %1$s былО уМОчтПжеМы %2$s -death.attack.subAtomic2=%1$s был сЌещеМ QPU, пПтПЌу чтП %2$s ОзЌеМОл егП фактОческую скПрПсть -death.attack.subAtomic3=%1$s перестал существПвать Оз-за %2$s -death.attack.subAtomic4=%1$s был пПЎелёМ Ма МПль %2$s -death.attack.subAtomic5=%1$s был ПбМулёМ %2$s -death.attack.radiation=%1$s уЌер Пт лучевПй бПлезМО -death.attack.acid=%1$s упал в кОслПту -death.attack.suicide=%1$s ПтПрвал себе гПлПву -death.attack.electrified=%1$s превратОлся в батарейку благПЎаря %2$s -death.attack.flamethrower=%1$s был креЌОрПваМ %2$s -death.attack.plasma=%1$s был ОспарёМ %2$s -death.attack.ice=%1$s был превращёМ в эскОЌП %2$s -death.attack.cheater=вМутреММПстО %1$s превратОлОсь в Пвёс (???) -death.attack.laser=%1$s был превращёМ в пепел %2$s -death.attack.laser.item=%1$s был превращёМ в пепел %2$s с пПЌПщью %3$s -death.attack.rubble=%1$s превратОлся в лепёшку -death.attack.shrapnel=%1$s был разПрваМ шрапМелью -death.attack.teleporter=%1$s телепПртОрПвался в МОкуЎа -death.attack.blackhole=%1$s превратОлся в спагеттО -death.attack.blacklung=%1$s уЌер Пт бПлезМО черМых легкОх -death.attack.blender=%1$s стал фаршеЌ -death.attack.meteorite=%1$s был разЎавлеМ ПгрПЌМыЌ кПсЌОческОЌ каЌМеЌ -death.attack.boxcar=%1$s был разЎавлеМ паЎающОЌ грузПвыЌ вагПМПЌ. Ну чтП ж... -death.attack.boat=%1$s был прОшОблеМ лПЎкПй -death.attack.building=%1$s был прОЎавлеМ паЎающОЌ зЎаМОеЌ -death.attack.broadcast=%1$s раствПрОл свПй ЌПзг -death.attack.ams=%1$s Оскупался в сЌертельМых частОцах, ещё МеОзвестМых Мауке -death.attack.amsCore=%1$s ОспарОлся в ПгМе сОМгулярМПстО -death.attack.bang=%1$s превратОлся в рагу -death.attack.pc=%1$s стал лужОцей вМутрО рПзПвПгП Пблака -death.attack.cloud=%1$s растаял, как эскОЌП в жаркОй ЎеМь -death.attack.lead=%1$s уЌер Пт ПтравлеМОя свОМцПЌ -death.attack.taint=%1$s уЌер Пт МеверПятМПгП кПлОчества ПпухПлей -death.attack.electricity=%1$s был убОт электрОческОЌ тПкПЌ -death.attack.exhaust=%1$s был превращеМ в шашлык стартПвПй ракетПй -death.attack.lunar=%1$s забылО заряЎОть свПО жОзМеММП важМые ПргаМы. -death.attack.monoxide=%1$s забыл сЌеМОть батарейкО в свПеЌ ЎетектПре угарМПгП газа -death.attack.digamma=%1$s шагМул в пустПту. -death.attack.asbestos=%1$s теперь ОЌеет правП Ма фОМаМсПвую кПЌпеМсацОю. -death.attack.mku=%1$s уЌер пП МеОзвестМыЌ прОчОМаЌ. -death.attack.BERYLLIUM=лёгкОе %1$s выЎПхлОсь Пт вПзЎействОя берОллОя. -death.attack.CHEMICAL=ОргаМы %1$s ПтключОлОсь. -death.attack.HEAVY_METAL=%1$s уЌер Пт ПтравлеМОя тяжёлыЌО ЌеталлаЌО. -death.attack.bleed=ПргаМы %1$s вытеклО Оз-за МалОчОя в МОх ПтверстОй. -death.attack.burn=%1$s был пПлМПстью сПжжёМ гПрячей плазЌПй -death.attack.light=%1$s был ПчОщеМ пПтПкПЌ луММПгП света. -death.attack.satori1=телП %1$s's былП ОзурПЎПваМП ЎП МеузМаваеЌПстО -death.attack.satori2=%1$s был выпПтрПшеМ О вырезаМ, как Тыква-фПМарь -death.attack.satori3=%1$s был пПглПщеМ чОстПй МеМавОстью -death.attack.satori4=плПть %1$ была разрезаМа Ма частО, чтП прОвелП к ЌассОвМПй пПтере крПвО -death.attack.satori5=%2$s выпПтрПшеМ О вырезаМ %1$s как Тыква-фПМарь -death.attack.satori6=%2$s выпПтрПшеМ %1$s с явМПй МеМавОстью -death.attack.satori7=%1$s был пПглПщеМ серЎцеЌ тьЌы %2$s -death.attack.satori8=%2$s ОзурПЎПвал телП %1$s ЎП МеузМаваеЌПстО -death.attack.twr0=%1$s был разбОт Ма ЌОллОПМ ПскПлкПв света. -death.attack.twr1=%1$s ПбМаружОл, чтП выхПЎа Мет. -death.attack.twr2=%2$s разбОл %1$s Ма ЌОллОПМ ПскПлкПв света. -death.attack.twr3=%2$s пПказал %1$s, чтП зЎесь Мету выхПЎа. -death.attack.overdose=%1$s уЌер Пт переЎПза ЌетаЌфетаЌОМПЌ. -death.attack.microwave=%1$s взПрвался Пт ЌОкрПвПлМПвПгП ОзлучеМОя. -death.attack.acidPlayer=%1$s был раствПрёМ %2$s. -death.attack.boil=%1$s был зажОвП свареМ %2$s. - -item.redstone_sword.name=Меч Оз красМПгП каЌМя -item.big_sword.name=БПльшПй Ќеч -item.test_nuke_igniter.name=АктОватПр -item.test_nuke_propellant.name=Взрывчатка -item.test_nuke_tier1_shielding.name=Отражатель МейтрПМПв (урПвеМь 1) -item.test_nuke_tier2_shielding.name=Отражатель МейтрПМПв (урПвеМь 2) -item.test_nuke_tier1_bullet.name=СМаряЎ U235 (урПвеМь 1) -item.test_nuke_tier2_bullet.name=СМаряЎ MOX (урПвеМь 2) -item.test_nuke_tier1_target.name=СубкрОтОческая цель U235 (урПвеМь 1) -item.test_nuke_tier2_target.name=СубкрОтОческая цель MOX (урПвеМь 2) - -item.gadget_explosive.name=ВзрывМые лОМзы первПгП пПкПлеМОя -item.gadget_explosive8.name=Связка взрывчаткО первПгП пПкПлеМОя -item.gadget_wireing.name=ПрПвПЎа -item.gadget_core.name=ПлутПМОевПе яЎрП -item.demon_core_closed.name=Закрытый ЗаряЎ-ДеЌПМ -item.demon_core_open.name=ПрОПстаМПвлеММый ЗаряЎ-ДеЌПМ -item.boy_igniter.name=ВПсплаЌеМОтель -item.boy_propellant.name=Взрывчатка -item.boy_bullet.name=СМаряЎ U235 -item.boy_target.name=СубкрОтОческая цель U235 -item.boy_shielding.name=НейтрПММый щОт -item.man_explosive.name=ВзрывМые лОМзы -item.man_explosive8.name=Связка взрывчаткО -item.man_igniter.name=ЗажОгатель -item.man_core.name=ПлутПМОевПе яЎрП -item.early_explosive_lenses.name=НабПр взрывППпасМых лОМз первПгП пПкПлеМОя -item.early_explosive_lenses.desc=СбПрка Оз 8 ПскПлПчМП-фугасМых лОМз с алюЌОМОевыЌ$тПлкателеЌ, ЎюралюЌОМОевПй ПбПлПчкПй О прПвПлПчМыЌО ЎетПМатПраЌО. -item.explosive_lenses.name=НабПр взрывППпасМых лОМз -item.explosive_lenses.desc=СбПрка Оз 8 лОМз Оз пластОчМПй взрывчаткО с тПМкОЌ$алюЌОМОевыЌ тПлкателеЌ, ЎюралюЌОМОевыЌ кПрпусПЌ О$ЌОМОатюрМыЌО ЌПстПвыЌО ЎетПМатПраЌО. -item.mike_core.name=ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ -item.mike_deut.name=ДейтерОевый бак -item.mike_cooling_unit.name=БлПк ПхлажЎеМОя ЎейтерОя -item.tsar_core.name=ЯЎрП Њарь-бПЌбы -item.fleija_igniter.name=ИЌпульсМый вПсплаЌеМОтель -item.fleija_propellant.name=КрабОЎОевая взрывчатка -item.fleija_core.name=ЗаряЎ Ѐ.Л.Е.И Оз ураМа 235 -item.solinium_igniter.name=СПлОМОевый ОЌпульсМый вПсплаЌеМОтель -item.solinium_propellant.name=СПлОМОевый сжОЌающОй заряЎ -item.solinium_core.name=ППлу-стабОльМый сПлОМОевый заряЎ -item.n2_charge.name=КрупМый взрывМПй заряЎ -item.egg_balefire_shard.name=Жар-ПскПлПк -item.egg_balefire.name=Жар-яйцП -item.egg_balefire.desc=Какая птОца ПтклаЎывает раЎОПактОвМые яйца? -item.egg_glyphid.name=ЯйцП глОфОЎПв -item.glyphid_meat.name=МясП глОфОЎПв -item.glyphid_meat_grilled.name=ЖареМПе ЌясП глОфОЎПв -item.spawn_duck.name=ЗПлПтПе яйцП -item.custom_tnt.name=ВзрывМПй заряЎ кастПЌМПй бПЌбы -item.custom_nuke.name=ЯЎерМый заряЎ кастПЌМПй бПЌбы -item.custom_hydro.name=ВПЎПрПЎМый заряЎ кастПЌМПй бПЌбы -item.custom_amat.name=АМтОвеществеММый заряЎ кастПЌМПй бПЌбы -item.custom_dirty.name=ГрязМый заряЎ кастПЌМПй бПЌбы -item.custom_schrab.name=КрабОЎОевый заряЎ кастПЌМПй бПЌбы -item.custom_fall.name=УлучшеМОе кастПЌМПй бПЌбы (УЎар с Меба) -item.custom_fall.desc=ЭтП тП, чегП вы все тааааааак жЎалО!$Сбрасывает бПЌбу прО актОвацОО -container.nukeGadget=ГаЎжет -container.nukeBoy=Малыш -container.nukeMan=ТПлстяк -container.nukeMike=ИвО Майк -container.nukeTsar=Њарь-бПЌба -container.nukeFleija=Ѐ.Л.Е.Я -container.nukePrototype=ПрПтПтОп -container.nukeCustom=КастПЌМая бПЌба -container.nukeSolinium=СОМОй ОпПласкОватель -container.nukeN2=N²-ЌОМа -container.nukeN45=МПрская ЌОМа N45 -container.nukeFstbmb=Жар-бПЌба -container.bombMulti=ММПгПцелевая бПЌба -tile.nuke_gadget.name=ГаЎжет -tile.nuke_boy.name=Малыш -tile.nuke_man.name=ТПлстяк -tile.nuke_mike.name=ИвО Майк -tile.nuke_tsar.name=Њарь-бПЌба -tile.nuke_fleija.name=Ѐ.Л.Е.Я -tile.nuke_prototype.name=ПрПтПтОп -tile.nuke_custom.name=КастПЌМая бПЌба -tile.nuke_solinium.name=СОМОй ОпПласкОватель -tile.nuke_n2.name=N²-ЌОМа -tile.nuke_n45.name=МПрская ЌОМа N45 -tile.nuke_fstbmb.name=Жар-бПЌба -tile.bomb_multi.name=ММПгПцелевая бПЌба -tile.rejuvinator.name=ГЭКК - -item.disperser_canister.name= КаМОстра рассеОвателя: -item.disperser_canister_empty.name= КаМОстра рассеОвателя -item.glyphid_gland.name= Железа глОфОЎа: -item.glyphid_gland_empty.name= Железа глОфОЎа - -tile.flame_war.name=ВПйМа в кПрПбке -tile.float_bomb.name=ЛевОтацОПММая бПЌба -tile.therm_endo.name=ЭМЎПтерЌОческая бПЌба -tile.therm_exo.name=ЭкзПтерЌОческая бПЌба -tile.emp_bomb.name=ЭМИ-бПЌба -tile.crashed_bomb.name=НеразПрвавшаяся бПЌба -tile.boxcar.name=ГрузПвПй вагПМ -tile.boat.name=ЛПЎка -item.boat_rubber.name=РезОМПвая лПЎка -tile.bomber.name=РазбОвшОйся бПЌбарЎОрПвщОк - -tile.pink_log.name=РПзПвПе ЎеревП -tile.pink_planks.name=РПзПвые ЎПскО -tile.pink_slab.name=ПлОта Оз рПзПвПгП Ўерева -tile.pink_stairs.name=СтупеМькО Оз рПзПвПгП Ўерева - -tile.turret_light.name=Турель с лёгкОЌ пулеЌётПЌ -tile.turret_heavy.name=Турель с тяжёлыЌ пулеЌётПЌ -tile.turret_rocket.name=Турель с ракетМОцей -tile.turret_flamer.name=Турель с ПгМеЌётПЌ -tile.turret_tau.name=Турель с тау-пушкПй -tile.turret_spitfire.name=Турель без МазваМОя [WIP] -tile.turret_cwis.name=”ЀэлеМкс” Mk-15 CIWS -tile.turret_cheapo.name=Дешёвая пулеЌётМая турель -tile.machine_radar_large.name=БПльшПй раЎар -tile.machine_radar.name=РаЎар -container.radar=РаЎар -item.radar_linker.name=РаЎарМый сПеЎОМОтель -tile.radar_screen.name=ЭкраМ раЎара -tile.machine_forcefield.name=Излучатель сОлПвПгП пПля -container.forceField=Излучатель сОлПвПгП пПля -tile.machine_satlinker.name=МеМеЎжер ID спутМОкПв -container.satLinker=УстрПйствП связО -tile.machine_telelinker.name=СтПл телелОМка -container.teleLinker=ТелелОМкер - -item.turret_control.name=ТурельМый кПМтрПллер -item.turret_chip.name=ТурельМый чОп ОскусствеММПгП ОМтеллекта -item.turret_biometry.name=Карта телелОМка - -item.key.name=Ключ -item.key_red.name=КрасМый ключ -item.key_red.desc=ИсслеЎуй Ўругую стПрПМу. -item.key_red.desc.P11=§4e§r -item.key_red_cracked.name=СлПЌаММый ключ -item.key_red_cracked.desc=??? -item.key_red.key_red_cracked.P11=§4???§r -item.key_kit.name=НабПр ОЌОтацОО ключей -item.key_fake.name=ППЎЎельМый ключ -item.pin.name=ОтЌычка -item.pin.desc="*НеЌПЎОфОцОрПваММый* верПятМПсть успешМПгП взлПЌа ПбычМПгП заЌка сПставляет ~10%. -item.padlock_rusty.name=Ржавый заЌПк -item.padlock.name=ЗаЌПк -item.padlock_reinforced.name=ЗащОщеММый заЌПк -item.padlock_unbreakable.name=НесПкрушОЌый заЌПк -tile.machine_keyforge.name=СтПл Ќастера пП заЌкаЌ -container.keyForge=СтПл Ќастера пП заЌкаЌ - -tile.mine_ap.name=ПрПтОвПпехПтМая ЌОМа -tile.mine_he.name=ПрПтОвПтаМкПвая ЌОМа -tile.mine_shrap.name=МОМа сП шрапМелью -tile.mine_fat.name=МОМа-"ТПлстяк" -item.defuser.name=ВысПкПтехМПлПгОчМПе устрПйствП Ўля разЌОМОрПваМОя -item.defuser_gold.name=ЗПлПтые кусачкО - -tile.crate.name=ЯщОк сМабжеМОя -tile.crate_weapon.name=ЯщОк с ПружОеЌ -tile.crate_lead.name=ЯщОк с раЎОПактОвМыЌО ЌатерОалаЌО -tile.crate_metal.name=ЯщОк с ЌехаМОзЌаЌО -tile.crate_red.name=КрасМый ящОк -tile.crate_can.name=ЯщОк с кПМсерваЌО -tile.crate_ammo.name=ЯщОк Оз звёзЎМПгП Ќеталла -tile.crate_jungle.name=ЯщОк Оз эМаргОта -tile.marker_structure.name=Маркер Ўля ЌМПгПблПчМых структур -item.structure_custommachine.name=Жезл ПбПзМачеМОя кастПЌМых ЌашОМ -tile.custom_machine_anchor.name=ЯкПрь Ўля кастПЌМых ЌашОМ - -tile.struct_launcher.name=БлПк-кПЌпПМеМт пускПвПй плПщаЎкО -tile.struct_scaffold.name=ППЎЌПстПк пускПвПй плПщаЎкО -tile.struct_launcher_core.name=ЯЎрП кПЌпактМПй пускПвПй плПщаЎкО -tile.struct_launcher_core_large.name=ЯЎрП бПльшПй пускПвПй плПщаЎкО -tile.struct_soyuz_core.name=ЯЎрП стартПвПй плПщаЎкО СПюза -tile.struct_plasma_core.name=ЯЎрП Магревателя плазЌы -tile.struct_iter_core.name=ЯЎрП терЌПяЎерМПгП реактПра -tile.struct_watz_core.name=ЯЎрП Ватцз-реактПра - -tile.machine_difurnace_off.name=ДПЌеММая печь -tile.machine_difurnace_on.name=ДПЌеММая печь -tile.machine_difurnace_extension.name=РасшОрОтель ЎПЌеММПй печО -container.diFurnace=ДПЌеММая печь -tile.foundry_basin.name=ЛОтейМый резервуар -tile.foundry_channel.name=ЛОтейМый каМал -tile.foundry_slagtap.name=ЛОтейМый спуск Ўля шлака -tile.foundry_outlet.name=ЛОтейМый спуск -tile.foundry_mold.name=Малый лОтейМый резервуар -tile.foundry_tank.name=ЛОтейМый бассейМ -tile.machine_crucible.name=ПлавОльМя -container.machineCrucible=ПлавОльМя -tile.machine_centrifuge.name=ЊеМтрОфуга -container.centrifuge=ЊеМтрОфуга -tile.machine_gascent.name=ГазПвая цеМтрОфуга -container.gasCentrifuge=ГазПвая цеМтрОфуга -tile.machine_uf6_tank.name=БПчка гексафтПрОЎа ураМа -container.uf6_tank=БПчка UF6 -tile.machine_puf6_tank.name=БПчка гексафтПрОЎа плутПМОя -container.puf6_tank=БПчка PuF6 -tile.machine_reactor.name=РеактПр-разЌМПжОтель -container.reactorBreeding=РеактПр-разЌМПжОтель -tile.machine_nuke_furnace_off.name=ЯЎерМая печь -tile.machine_nuke_furnace_on.name=ЯЎерМая печь -container.nukeFurnace=ЯЎерМая печь -tile.machine_rtg_furnace_off.name=РИТЭГ-печь -tile.machine_rtg_furnace_on.name=РИТЭГ-печь -container.rtgFurnace=РИТЭГ-печь -tile.machine_electric_furnace_off.name=ЭлектрОческая печь -tile.machine_electric_furnace_on.name=ЭлектрОческая печь -container.electricFurnace=ЭлектрОческая печь -tile.machine_arc_furnace_off.name=ДугПвая печь -tile.machine_arc_furnace_on.name=ДугПвая печь -container.arcFurnace=ДугПвая печь -tile.furnace_iron.name=ЖелезМая печь -container.furnaceIron=ЖелезМая печь -container.furnaceBrick=КОрпОчМая печь -tile.machine_furnace_brick_off.name=КОрпОчМая печь -tile.machine_furnace_brick_on.name=КОрпОчМая печь -tile.furnace_iron.desc=БПльшая О бПлее эффектОвМая печь,$Ме тратОт тПплОвП, кПгЎа прПстаОвает. -container.furnaceSteel=СтальМая печь -tile.furnace_steel.name=СтальМая печь -tile.furnace_steel.desc=ОгрПЌМая печь, Ўаёт бПМус к$переплавке преЎЌетПв. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: ΔT*0.05 TU/t$(Δ - разМОца, T - теЌпература) -tile.machine_generator.name=ЯЎерМый реактПр (УстаревшОй) -container.generator=ЯЎерМый реактПр -tile.red_wire_coated.name=МеЎМый кабель с пПкрытОеЌ -tile.cable_switch.name=РубОльМОк -tile.cable_detector.name=РеЎстПуМ-рубОльМОк -tile.cable_diode.name=ДОПЎ Оз красМПй ЌеЎО -tile.red_cable_gauge.name=ДатчОк ЌПщМПстО -tile.red_cable_gauge.desc=Кабель, кПтПрый пПказывает, скПлькП эМергОО$ переЌещается пП сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые блПкаЌО храМеМОя эМергОО$рассЌатрОваются как ПЎМа Пбщая сеть. -tile.machine_deuterium.name=ДейтерОевый экстрактПр -container.machine_deuterium=ДейтерОевый экстрактПр -tile.machine_battery_potato.name=КартПфельМая батарея -tile.machine_battery.name=ЭМергПхраМОлОще -tile.machine_lithium_battery.name=ЛОтОй-ОПММПе эМергПхраМОлОще -tile.machine_schrabidium_battery.name=КрабОЎОевПе эМергПхраМОлОще -tile.machine_dineutronium_battery.name=Спарк-эМергПхраМОлОще -container.battery=ЭМергПхраМОлОще -tile.capacitor_bus.name=КОМа кПМЎеМсатПра -tile.capacitor_bus.desc=ВыхПЎМПй блПк Ўля кПМЎеМсатПрПв$МПжет быть пПЎключеМ пП пряЌПй лОМОО -tile.capacitor_copper.name=МеЎМый кПМЎеМсатПр -tile.capacitor_gold.name=ЗПлПтПй кПМЎеМсатПр -tile.capacitor_niobium.name=НОПбОевый кПМЎеМсатПр -tile.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр -tile.capacitor_schrabidate.name=КрабОЎатПвый кПМЎеМсатПр -tile.capacitor.desc=ВхПЎ: Сверху$ВыхПЎ: СМОзу через шОМу -tile.machine_coal_off.name=ГеМератПр вМутреММегП сгПраМОя -tile.machine_coal_on.name=ГеМератПр вМутреММегП сгПраМОя -container.machineCoal=ГеМератПр вМутреММегП сгПраМОя -tile.machine_boiler_off.name=Нагреватель МефтО -tile.machine_boiler_on.name=Нагреватель МефтО -container.machineBoiler=Нагреватель МефтО -tile.machine_boiler_electric_off.name=ЭлектрОческОй Магреватель МефтО -tile.machine_boiler_electric_on.name=ЭлектрОческОй Магреватель МефтО -container.machineElectricBoiler=ЭлектрОческОй Магреватель МефтО -container.machineITER=ТерЌПяЎерМый реактПр -tile.iter.name=ТерЌПяЎерМый реактПр -tile.machine_turbine.name=ПарПвая турбОМа -container.machineTurbine=ПарПвая турбОМа -tile.machine_large_turbine.name=ПрПЌышлеММая парПвая турбОМа -container.machineLargeTurbine=ПрПЌышлеММая парПвая турбОМа -tile.machine_chungus.name=ПарПвая турбОМа "ЛевОафаМ" -tile.launch_pad.name=СОлПсМая пускПвая плПщаЎка -container.launchPadRusted=ПускПвая плПщаЎка -container.launchPad=ПускПвая плПщаЎка -tile.launch_pad_large.name=ПускПвая плПщаЎка -tile.launch_pad_rusted.name=Старая пускПвая плПщаЎка -tile.compact_launcher.name=КПЌпактМая пускПвая плПщаЎка -container.compactLauncher=КПЌпактМая пускПвая плПщаЎка -tile.launch_table.name=БПльшая пускПвая плПщаЎка -container.launchTable=БПльшая пускПвая плПщаЎка -tile.soyuz_launcher.name=СтартПвая платфПрЌа "СПюза" -container.soyuzLauncher=СтартПвая платфПрЌа "СПюза" -tile.machine_missile_assembly.name=РакетПсбПрПчМая стаМцОя -container.missileAssembly=РакетПсбПрПчМая стаМцОя -tile.sat_dock.name=СтаМцОя пПсаЎкО груза -tile.sat_lunar_dock.name=ЛуММая стаМцОя пПсаЎкО груза -container.satDock=СтаМцОя пПсаЎкО груза -tile.book_guide.name=КМОга зМаМОй -tile.machine_schrabidium_transmutator.name=КрабОЎОевый траМсЌутатПр -container.machine_schrabidium_transmutator=КрабОЎОевМый траМсЌутатПр -tile.machine_diesel.name=ДОзельМый геМератПр -container.machineDiesel=ДОзельМый геМератПр -tile.machine_shredder.name=ИзЌельчОтель -container.machineShredder=ИзЌельчОтель -tile.machine_combine_factory.name=Печь Ўля сталО АльяМса -container.machineCMB=Печь Ўля сталО АльяМса -tile.machine_teleporter.name=ТелепПрт -tile.teleanchor.name=ТелепПртацОПММый якПрь -container.teleporter=ТелепПрт -tile.machine_reix_mainframe.name=МэйМфрейЌ Rei-X (WIP) -container.reix=МэйМфрейЌ Rei-X -tile.machine_industrial_generator.name=ПрПЌышлеММый геМератПр -container.iGenerator=ПрПЌышлеММый геМератПр -tile.machine_cyclotron.name=ЊОклПтрПМ -container.cyclotron=ЊОклПтрПМ -tile.machine_detector.name=ДетектПр ЌПщМПстО -tile.machine_well.name=НефтяМая вышка -tile.plasma_heater.name=Нагреватель плазЌы -container.plasmaHeater=Нагреватель плазЌы -tile.machine_pumpjack.name=СтаМПк-качалка -tile.oil_pipe.name=Труба Ўля ОзвлечеМОя МеПчОщеММПй МефтО -container.oilWell=НефтяМая вышка -container.pumpjack=СтаМПк-качалка -container.frackingTower=БашМя гОЎрПразрыва пласта -tile.machine_fracking_tower.name=БашМя гОЎрПразрыва пласта -tile.machine_refinery.name=НефтеперерабатывающОй завПЎ -container.machineRefinery=НефтеперерабатывающОй завПЎ -tile.machine_catalytic_cracker.name=БашМя каталОтОческПгП крекОМга -tile.oil_duct.name=Труба Ўля МефтО -tile.oil_duct_solid.name=ППкрытая труба Ўля МефтО -tile.machine_flare.name=ГазПвая башМя -container.gasFlare=ГазПвая башМя -tile.gas_duct.name=ГазПвая труба -tile.gas_duct_solid.name=ППкрытая газПвая труба -tile.machine_drill.name=АвтПЌатОческОй гПрМый бур -container.miningDrill=АвтПЌатОческОй гПрМый бур -tile.drill_pipe.name=Бур -tile.machine_excavator.name=БПльшПй гПрМый бур -tile.machine_assembler.name=СбПрПчМая ЌашОМа -container.assembler=СбПрПчМая ЌашОМа -tile.machine_assemfac.name=СбПрПчМый завПЎ -tile.machine_autocrafter.name=АвтПЌатОческОй верстак -container.autocrafter=АвтПЌатОческОй верстак -container.machineFunnel=КПЌбОМатПрМая вПрПМка -tile.machine_funnel.name=КПЌбОМатПрМая вПрПМка -tile.machine_funnel.descАвтПЌатОческО сжОЌает преЎЌеты в сетке 2x2 ОлО 3x3 Ўля крафтОМга$Верх: ВхПЎ$НОз: ВыхПЎ$БПк: ВыхПЎ Ўля ПчОсткО ОМгреЎОеМтПв -tile.machine_chemplant.name=ХОЌОческая устаМПвка -container.chemplant=ХОЌОческая устаМПвка -tile.machine_chemfac.name=ХОЌОческОй завПЎ -tile.fluid_duct.name=УМОверсальМая жОЎкПстМая труба (Устаревшее) -tile.fluid_duct_box.name=УМОверсальМая жОЎкПстМая труба (Boxduct) -tile.fluid_duct_neo.name=УМОверсальМая жОЎкПстМая труба -tile.fluid_duct_gauge.name=Труба с ОзЌерОтелеЌ пПтПка -tile.fluid_duct_gauge.desc=Труба кПтПрая пПказывает скПлькП жОЎкПстО$переЌещается вМутрО сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые бПчкаЌО$ОлО резервуары рассЌатрОваются как ПЎМа Пбщая сеть. -tile.fluid_duct_exhaust.name=ВыхлПпМая труба -tile.machine_drain.name=СлОвМая труба -tile.fluid_switch.name=РеЎстПуМ-ЖОЎкПстМый клапаМ -tile.fluid_valve.name=ЖОЎкПстМый клапаМ -tile.fluid_duct_solid.name=ППкрытая уМОверсальМая жОЎкПстМая труба (Устаревшее) -tile.fluid_duct_paintable.name=ОкрашОваеЌая пПкрытая уМОверсальМая жОЎкПстМая труба -tile.machine_fluidtank.name=ЊОстерМа -tile.machine_bat9000.name=Охереть-бПльшая цОстерМа 9000 -item.fluid_duct.name=ЖОЎкПстМая труба: -container.fluidtank=ЊОстерМа -container.bat9000=Охереть-бПльшая цОстерМа 9000 -tile.machine_turbofan.name=ТурбПвеМтОлятПр -container.machineTurbofan=ТурбПвеМтОлятПр -tile.crate_iron.name=ЖелезМый ящОк -container.crateIron=ЖелезМый ящОк -tile.crate_steel.name=СтальМПй ящОк -container.crateSteel=СтальМПй ящОк -tile.crate_desh.name=Деш-ящОк -container.crateDesh=Деш-ящОк -item.containment_box.name=ЗащОтМая кПрПбка -container.leadBox=ЗащОтМая кПрПбка -container.crateTungsten=ВПльфраЌПвый ящОк -tile.crate_tungsten.name=ВПльфраЌПвый ящОк -tile.mass_storage.name=НакПпОтельМый блПк -container.massStorage=ХраМОлОще -tile.safe.name=Сейф -container.safe=Сейф -tile.sand_polonium.name=ППлПМОевый песПк -tile.sand_boron.name=БПрМый песПк -tile.sand_lead.name=СвОМцПвый песПк -tile.sand_gold.name=ЗПлПтПй песПк -tile.sand_gold198.name=ПесПк Оз зПлПта-198 -tile.sand_quartz.name=Кварцевый песПк -tile.sand_boron_layer.name=СлПй бПрМПгП песка -tile.machine_press.name=Пресс -tile.press_preheater.name=ВМешМОй Магреватель пресса -container.press=Пресс -tile.machine_epress.name=ЭлектрОческОй пресс -container.epress=ЭлектрОческОй пресс -tile.machine_fensu.name=ЭМЭХ -tile.machine_siren.name=СОреМа -container.siren=СОреМа -tile.machine_radgen.name=РаЎОацОПММый ЎвОгатель -container.radGen=РаЎОацОПММый ЎвОгатель -tile.machine_selenium.name=РаЎОальМый ЎвОгатель -container.machineSelenium=РаЎОальМый ЎвОгатель -container.reactorResearch=ИсслеЎПвательскОй реактПр -container.reactorZirnox=ЯЎерМый реактПр ЊОрМПкс -container.zirnox=ЯЎерМый реактПр ЊОрМПкс -tile.machine_reactor_small.name=ИсслеЎПвательскОй реактПр -tile.machine_zirnox.name=ЯЎерМый реактПр ЊОрМПкс -tile.zirnox_destroyed.name=РазрушеММый ЊОрМПкс -tile.machine_controller.name=БлПк уЎалёММПгП ЎПступа к реактПру -container.reactorControl=БлПк уЎалёММПгП ЎПступа к реактПру -tile.soyuz_capsule.name=ГрузПвая пПсаЎПчМая капсула -container.soyuzCapsule=ГрузПвая пПсаЎПчМая капсула -tile.machine_crystallizer.name=РуЎМый ПкОслОтель -container.crystallizer=РуЎМый ПкОслОтель -tile.machine_mining_laser.name=КахтёрскОй лазер -container.miningLaser=КахтёрскОй лазер -tile.barricade.name=МешкО с пескПЌ -container.microwave=МОкрПвПлМПвка -tile.machine_microwave.name=МОкрПвПлМПвка -tile.machine_solar_boiler.name=БПйлер сПлМечМПй башМО -tile.solar_mirror.name=ЗеркалП-гелОПстат -tile.dungeon_chain.name=МеталлОческая цепь -tile.fireworks.name=Батарея фейерверкПв -tile.fireworks.charges=ЗаряЎПв: %s -tile.fireworks.message=ППслаМОе: %s -tile.fireworks.color=Њвет: %s -tile.machine_armor_table.name=СтПл ЌПЎОфОкацОО брПМО -container.armorTable=СтПл ЌПЎОфОкацОО брПМО -container.turretChekhov=ЧехПвскПе ружьё -container.turretFriendly=МОстер ДружелюбМый -container.turretJeremy=ДжереЌО -container.turretTauon=ТауПМ -container.turretRichard=РОчарЎ -container.turretSentry=БрауМ -tile.turret_chekhov.name=КрупМПкалОберМая пулеЌетМая турель "ЧехПвскПе ружьё" -tile.turret_friendly.name=Турель ГатлОМга "МОстер ДружелюбМый" -tile.turret_jeremy.name=АвтПпушка "ДжереЌО" -tile.turret_tauon.name=ПрПтПтОп турелО XVL1456 "ТауПМ" -tile.turret_richard.name=РакетМая турель "РОчарЎ" -tile.turret_sentry.name=СтПрПжевая турель "БрауМ" -tile.turret_sentry_damaged.name=СтПрПжевая турель "ЭЎвОМ" -container.turretHoward=ГПварЎ -tile.turret_howard.name=ДвПйМая турель ГатлОМга CIWS "ГПварЎ" -container.turretMaxwell=Максвелл -container.turretFritz=ЀрОц -tile.turret_fritz.name=Тяжелая ПгМеЌетМая турель "ЀрОц" -tile.turret_maxwell.name=ВысПкПэМергетОческая МазерМая турель "Максвелл" -tile.turret_howard_damaged.name=ДвПйМая турель ГатлОМга CIWS "МафусаОл" -container.machineSILEX=КаЌера ЛРИ -tile.machine_silex.name=КаЌера лазерМПгП разЎелеМОя ОзПтПпПв (SILEX) -container.anvil=НакПвальМя %s урПвМя -tile.anvil_dnt.name=ДОМейтрПМОевая МакПвальМя -tile.anvil_ferrouranium.name=ЀеррПураМОевая МакПвальМя -tile.anvil_iron.name=ЖелезМая МакПвальМя -tile.anvil_lead.name=СвОМцПвая МакПвальМя -tile.anvil_meteorite.name=МетеПрОтПвая МакПвальМя -tile.anvil_murky.name=МрачМая МакПвальМя -tile.anvil_schrabidate.name=НакПвальМя Оз шрабОЎата железа -tile.anvil_starmetal.name=НакПвальМя Оз звёзЎМПгП Ќеталла -tile.anvil_steel.name=СтальМая МакПвальМя -tile.anvil_bismuth.name=ВОсЌутПвая МакПвальМя -tile.anvil_osmiridium.name=ОсЌОрОЎОевая МакПвальМя -tile.anvil_arsenic_bronze.name=НакПвальМя Оз ЌышьякПвПй брПМзы -tile.anvil_bismuth_bronze.name=НакПвальМя Оз вОсЌутПвПй брПМзы -tile.anvil_desh.name=Деш-МакПвальМя -tile.anvil_saturnite.name=СатурМОтПвая МакПвальМя -tile.fraction_spacer.name=РазЎелОтель ректОфОкацОПММПй кПлПММы -tile.machine_fraction_tower.name=РектОфОкацОПММая кПлПММа -tile.machine_orbus.name=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО -container.orbus=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО -tile.machine_condenser.name=КПМЎеМсатПр пара -tile.machine_condenser_powered.name=МПщМый кПМЎеМсатПр пара -container.atomicClock=АтПЌМые часы -container.betavoltaic=БетавПльтПвый геМератПр -container.bigRTG=БПльшПй РИТЭГ-геМератПр -container.diFurnaceRTG=ЯЎерМая ЎПЌеММая печь -container.machineSingGen=Супер-кПЌпрессПр Ватцза -container.reactorAmat=FTL РеактПр (ALPHA) -container.turretLunarOni=БПжествеММый Свет -container.turretTWR=ЛПрЎ ЊукуеЌО -tile.machine_fel.name=Лазер Ма свПбПЎМых электрПМах (FEL) -container.machineFEL=FEL -tile.substation.name=ППЎстаМцОя -tile.red_pylon_large.name=ЛЭП -tile.charge_dynamite.name=БПЌба с тайЌерПЌ -tile.charge_miner.name=КахтёрскОй заряЎ с тайЌерПЌ -tile.charge_c4.name=ППЎрывМПй заряЎ -tile.charge_semtex.name=КахтёрскОй заряЎ с сеЌтексПЌ -container.machineLiquefactor=РазжОжОтель -tile.machine_liquefactor.name=ПрПЌышлеММый разжОжОтель -tile.machine_liquefactor.desc=МПщМая ЌашОМа Ўля превращеМОя преЎЌетПв в жОЎкПстО.$ППставляется с уМОверсальМыЌО каталОтОческОЌО кПЌпПМеМтаЌО, МагревательМыЌО элеЌеМтаЌО$О встрПеММыЌ гОЎратПрПЌ Ўля МефтехОЌОческПгП сжОжеМОя. -container.machineSolidifier=ОтверЎОтель -tile.machine_solidifier.name=ПрПЌышлеММый ПтверЎОтель -tile.machine_solidifier.desc=УМОверсальМая ЌашОМа, ПсМащеММая сОстеЌаЌО ПхлажЎеМОя О ЎругОЌО$уМОверсальМыЌО ОМструЌеМтаЌО Ўля превращеМОя жОЎкПстей в тверЎые вещества с ОспПльзПваМОеЌ разлОчМых$прПцессПв, такОх как заЌПражОваМОе О МефтехОЌОческая пПлОЌерОзацОя. -container.machineStrandCaster=МашОМа МепрерывМПгП лОтья загПтПвПк -tile.machine_strand_caster.name=МашОМа МепрерывМПгП лОтья загПтПвПк -container.hydrotreater=ГОЎрППчОстОтель -tile.machine_hydrotreater.name=ГОЎрППчОстОтель -container.machineArcFurnaceLarge=ДугПвая печь -tile.machine_arc_furnace.name=ЭлектрОческая ЎугПвая печь -container.machineSolderingStation=ПаяльМый стПл -tile.machine_soldering_station.name=ПаяльМый стПл -container.machinePyroOven=ПОрПлОзМая печь -tile.machine_pyrooven.name=ПОрПлОзМая печь - -tile.conveyor.name=КПМвейер -tile.conveyor.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя -tile.conveyor_express.name=Быстрый кПМвейер -tile.conveyor_express.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП, ПчеМь быстрП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку, чтПбы сПгМуть -container.craneExtractor=КПМвейерМый Озвлекатель -container.craneInserter=КПМвейерМый вставщОк -tile.crane_extractor.name=КПМвейерМый Озвлекатель -tile.crane_extractor.desc=ЗабОрает преЎЌеты Оз ОМвеМтаря О пПЌещает Ох Ма кПМвейерМые леМты$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.crane_inserter.name=КПМвейерМый вставщОк -tile.crane_inserter.desc=ПрОМОЌает преЎЌеты с кПМвейерПв О пПЌещает Ох в кПМтейМеры$Правый щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -container.craneBoxer=КПМвейерМый упакПвщОк -container.craneRouter=КПМвейерМый сПртОрПвщОк -container.craneUnboxer=КПМвейерМый распакПвщОк -tile.crane_boxer.name=КПМвейерМый упакПвщОк -tile.crane_boxer.desc=Загружает МастраОваеЌПе кПлОчествП стПпПк в ящОкО, кПтПрые переЌещаются пП кПМвейерМыЌ леМтаЌ$Правый клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КОфтПвый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.crane_router.name=КПМвейерМый сПртОрПвщОк -tile.crane_router.desc=СПртОрует элеЌеМт Ма ПсМПве заЎаММых крОтерОев$СтПрПМы ЌПгут быть ПпреЎелеМы как черМый спОсПк, белый спОсПк ОлО пПЎстаМПвПчМый зМак$СтПрПМы пПЎстаМПвПчМПгП зМака выбОраются тПлькП в тПЌ случае, еслО МО ПЎОМ ЎругПй фОльтр Ме пПЎхПЎОт -tile.crane_unboxer.name=КПМвейерМый распакПвщОк -tile.crane_unboxer.desc=ПрОеЌ кПрПбПк О ОзвлечеМОе Ох сПЎержОЌПгП$Правый щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$ДважЎы щелкМОте Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.conveyor_chute.name=КПМвейерМый желПб -tile.conveyor_chute.desc=ПереЌещает преЎЌеты вМОз$СаЌый МОжМОй желПб буЎет ЎействПвать как ПбычМый кПМвейер -tile.conveyor_double.name=ДвухпПлПсМый кПМвейер -tile.conveyor_double.desc=ПереЌещает преЎЌеты, ПпущеММые Ма МегП$МПжет пПвПрачОваться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя -tile.conveyor_lift.name=КПМвейерМый цепМПй лОфт -tile.conveyor_lift.desc=ПереЌещает преЎЌеты вверх$Для правОльМПй рабПты требуется Ме ЌеМее Ўвух блПкПв Ўруг Ма Ўруге -tile.conveyor_triple.name=ТрёхпПлПсМый кПМвейер -tile.conveyor_triple.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя -container.craneGrabber=КПМвейерМый сбПрщОк -tile.crane_grabber.name=КПМвейерМый сбПрщОк -tile.crane_grabber.desc=ПрОМОЌает преЎЌеты с прПхПЎящОх кПМвейерПв О пПЌещает Ох в кПМтейМеры$ПрОМОЌает преЎЌеты тПлькП с блОжайшей ЎПрПжкО$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО стПрПМы вхПЎа$СЌеММый клОк ПтверткПй Ўля устаМПвкО стПрПМы выхПЎа$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы -tile.crane_splitter.name=КПМвейерМый разЎелОтель -tile.crane_splitter.desc=РазЎеляет преЎЌеты О равМПЌерМП уклаЎывает Ох Ма Ўве кПМвейерМые леМты$СаЌа является кПМвейерМПй леМтПй, пПэтПЌу ЌПжет МапряЌую вхПЎОть в ОМсертер ОлО сПртОрПвщОк -tile.crane_partitioner.name=ВставщОк ПкОслОтеля -tile.crane_partitioner.desc=ПрОМОЌает О сПхраМяет ЎП ЎевятО вхПЎПв руЎМПгП ПкОслОтеля$О ПсвПбПжЎает Ох, еслО ПМО сППтветствуют требуеЌПЌу разЌеру вхПЎа.$НеправОльМые преЎЌеты также сПхраМяются О ЎПлжМы быть ОзвлечеМы Оз стПрПМы. - -container.droneCrate=ПассОвМый ящОк Ўля ЎрПМПв -container.droneDock=ДрПМ-стаМцОя -container.droneProvider=ЯщОк сМабжеМОя Ўля ЎрПМПв -container.droneRequester=ЯщОк запрПса Ўля ЎрПМПв -tile.drone_crate.name=ПассОвМый ящОк Ўля ЎрПМПв -tile.drone_crate.desc=ППгрузПчМП-разгрузПчМая тПчка Ўля траМспПртМых ЎрПМПв.$Действует как путевая тПчка, ЎПлжМа быть связаМа с лОМкерПЌ ЎрПМПв.$ДрПМы ЎПлжМы прОблОжаться пПЎ бПльшОЌ углПЌ, ОМаче ПМО застряМут. -tile.drone_crate_provider.name=ЯщОк сМабжеМОя Ўля ЎрПМПв -tile.drone_crate_provider.desc=ПреЎлагает преЎЌеты лПгОстОческПй сетО.$ЛПгОстОческОе ЎрПМы буЎут пытаться переЌестОть преЎЌеты Пт пПставщОкПв в ящОкО пПкупателей. -tile.drone_crate_requester.name=ЯщОк запрПса Ўля ЎрПМПв -tile.drone_crate_requester.desc=ЗапрашОвает преЎЌеты Оз лПгОстОческПй сетО.$ПреЎЌеты, ЎПбавлеММые в фОльтр, буЎут запрПшеМы, еслО Птсутствуют в егП ОМвеМтаре. -tile.drone_dock.name=ДрПМ-стаМцОя -tile.drone_dock.desc=ТПчка спауМа Ўля лПгОстОческОх ЎрПМПв.$МПжет ПбМаружОвать пПставщОкПв О заказчОкПв тПлькП в раЎОусе 5 чаМкПв.$ДрПМы буЎут слеЎПвать тПлькП ЎП 10 путевых тПчек за сПеЎОМеМОе. -tile.drone_waypoint.name=Путевая тПчка Ўля ЎрПМПв -tile.drone_waypoint.desc=Путевая тПчка Ўля ЎрПМПв$ИспПльзуйте лОМкер траМспПртМПгП ЎрПМа, чтПбы заЎать путь$НажОЌайте Ма кажЎую путевую тПчку О крейт пПслеЎПвательМП, чтПбы сПзЎать путь,$ затеЌ МажЌОте shift, чтПбы ПчОстОть сПхраМеММую пПзОцОю$ ЩелкМОте правПй кМПпкПй ЌышО ОлО shift, чтПбы ОзЌеМОть сЌещеМОе путевПй тПчкО -tile.drone_waypoint_request.name=ЛПгОстОческая путевая тПчка Ўля ЎрПМПв -item.drone.patrol.name=ТраМспПртМый ЎрПМ -item.drone.patrol.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. -item.drone.patrol_chunkloading.name=ТраМспПртМый ЎрПМ (ЧаМклПаЎер) -item.drone.patrol_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! -item.drone.patrol_express.name=Быстрый траМспПртМый ЎрПМ -item.drone.patrol_express.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. -item.drone.patrol_express_chunkloading.name=Быстрый траМспПртМый ЎрПМ (ЧаМклПаЎер) -item.drone.patrol_express_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк пПверх ящОка с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! -item.drone.request.name=ЛПгОстОческОй ЎрПМ -item.drone.request.desc=ИспПльзуется ЎПкаЌО лПгОстОческОх ЎрПМПв Ўля пПрПжЎеМОя лПгОстОческОх ЎрПМПв$ДрПМы слеЎуют пП путевыЌ тПчкаЌ лПгОстОческОх ЎрПМПв$ППсле выпПлМеМОя запрПса ЎрПМ вПзвращается в ЎПк. -item.drone_linker.name=СПеЎОМОтель пассОвМых ящОкПв Ўля ЎрПМПв - -container.turretArty=Грег -tile.turret_arty.name=АртОллерОйская турель "Грег" -container.heaterFirebox=ТПпка -tile.heater_firebox.name=ТПпка -tile.heater_firebox.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП. -container.heaterOilburner=ЖОЎкПстМый бПйлер -tile.heater_oilburner.name=ЖОЎкПстМый бПйлер -tile.heater_oilburner.desc=ПрПОзвПЎОт теплП, сжОгая жОЎкПе тПплОвП.$МПжет быть МастрПеМП с пПЌПщью ПтверткО. -tile.machine_stirling.name=ГеМератПр СтОрлОМга -tile.machine_stirling.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 300 TU/t$ЭффектОвМПсть: 50%% -tile.machine_stirling_steel.name=УкреплёММый геМератПр СтОрлОМга -tile.machine_stirling_steel.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$ИспПльзует бПлее тяжёлую шестерМю, чтПбы выЎержОвать высПкОе теЌпературы.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 1500 TU/t$ЭффектОвМПсть: 50%% -tile.machine_sawmill.name=ЛесПпОлка Ма геМератПре СтОрлОМга -tile.machine_sawmill.desc=Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МОМ. пПтреблеМОе: 100 TU/t, Макс. пПтреблеМОе intake: 300 TU/t -tile.heater_electric.name=ЭлектрОческОй Магреватель -tile.heater_electric.desc=ПрПОзвПЎОт теплП, ОспПльзуя эМергОю.$ПрОМОЌает теплП сМОзу, эффектОвМПсть 85%%.$МПжМП МастрПОть ПтверткПй -container.heaterOven=НагревательМая печь -tile.heater_oven.name=НагревательМая печь -tile.heater_oven.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП.$ПрОМОЌает теплП сМОзу с 50%% эффектОвМПстью. -tile.heater_heatex.name=ТеплППбЌеММый Магреватель -tile.heater_heatex.desc=ВыЎеляет теплП Оз гПрячОх жОЎкПстей. -container.heaterHeatex=ТеплППбЌеММОк -tile.machine_steam_engine.name=ПарПвПй ЎвОгатель -tile.machine_steam_engine.desc=ЭффектОвМПсть: 85%% -container.turretHIMARS=ГеМрО +item.acetylene_torch.name=АцетОлеМПвая сварПчМая гПрелка +item.ajr_boots.name=БПтОМкО СтальМых РейМЎжерПв +item.ajr_helmet.name=КлеЌ СтальМых РейМЎжерПв +item.ajr_legs.name=ППМПжО СтальМых РейМЎжерПв +item.ajr_plate.name=НагруЎМОк СтальМых РейМЎжерПв +item.ajro_boots.name=БПтОМкО сОлПвПй брПМО AJR +item.ajro_helmet.name=КлеЌ сОлПвПй брПМО AJR +item.ajro_legs.name=ППМПжО сОлПвПй брПМО AJR +item.ajro_plate.name=НагруЎМОк сОлПвПй брПМО AJR +item.alloy_axe.name=ТПпПр Оз прПЎвОМутПгП сплава +item.alloy_boots.name=БПтОМкО Оз прПЎвОМутПгП сплава +item.alloy_helmet.name=КлеЌ Оз прПЎвОМутПгП сплава +item.alloy_hoe.name=МПтыга Оз прПЎвОМутПгП сплава +item.alloy_legs.name=ППМПжО Оз прПЎвОМутПгП сплава +item.alloy_pickaxe.name=КОрка Оз прПЎвОМутПгП сплава +item.alloy_plate.name=НагруЎМОк Оз прПЎвОМутПгП сплава +item.alloy_shovel.name=ЛПпата Оз прПЎвОМутПгП сплава +item.alloy_sword.name=Меч Оз прПЎвОМутПгП сплава +item.ammo_12gauge.name=Картечь 12 калОбра +item.ammo_12gauge_du.name=Картечь 12 калОбра (С ураМПвыЌ пПкрытОеЌ) +item.ammo_12gauge_incendiary.name=Картечь 12 калОбра (ЗажОгательМая) +item.ammo_12gauge_marauder.name=ТактОческОй прПтОвПЌарПЎёрМый сМаряЎ 12 калОбра +item.ammo_12gauge_percussion.name=Капсюль 12 калОбра +item.ammo_12gauge_shrapnel.name=Картечь 12 калОбра (КрапМельМая) +item.ammo_12gauge_sleek.name=Картечь 12 калОбра (IF-R&D) +item.ammo_20gauge.name=Картечь 20 калОбра +item.ammo_20gauge_caustic.name=Картечь 20 калОбра (ТПксОчМая) +item.ammo_20gauge_explosive.name=Картечь 20 калОбра (ВзрывМая) +item.ammo_20gauge_flechette.name=ИгПльчатые сМаряЎы 20 калОбра +item.ammo_20gauge_incendiary.name=Картечь 20 калОбра (ЗажОгательМая) +item.ammo_20gauge_shock.name=Картечь 20 калОбра (КПкПвая) +item.ammo_20gauge_shrapnel.name=Картечь 20 калОбра (КрапМельМая) +item.ammo_20gauge_sleek.name=Картечь 20 калОбра (IF-R&D) +item.ammo_20gauge_slug.name=Пуля БреММеке 20 калОбра +item.ammo_20gauge_wither.name=Картечь 20 калОбра (Иссушающая) +item.ammo_22lr.name=МалПкалОберМый патрПМ .22 LR +item.ammo_22lr_ap.name=МалПкалОберМый патрПМ .22 LR (БрПМебПйМый) +item.ammo_22lr_chlorophyte.name=МалПкалОберМый патрПМ .22 LR (ХлПрПфОт) +item.ammo_357_desh.name=Деш-Пуля калОбра .357 МагМуЌ +item.ammo_44.name=Пуля калОбра .44 МагМуЌ +item.ammo_44_ap.name=Пуля калОбра .44 МагМуЌ (БрПМебПйМый) +item.ammo_44_bj.name=Пуля калОбра .44 МагМуЌ (ЛПЎка) +item.ammo_44_chlorophyte.name=Пуля калОбра .44 МагМуЌ (ХлПрПфОт) +item.ammo_44_du.name=Пуля калОбра .44 МагМуЌ (ДУ) +item.ammo_44_phosphorus.name=Пуля калОбра .44 МагМуЌ (БЀ) +item.ammo_44_pip.name=Пуля калОбра .44 МагМуЌ (ГрузПвПй вагПМ) +item.ammo_44_rocket.name=Ракета-Пуля .44 МагМуЌ +item.ammo_44_silver.name=Пуля калОбра .44 МагМуЌ (ЗЎаМОе) +item.ammo_44_star.name=Пуля калОбра .44 МагМуЌ (ЗвёзЎМый Ќеталл) +item.ammo_45.name=.45 ACP Round +item.ammo_45_ap.name=Пуля 45-гП калОбра ACP (БрПМебПйМая) +item.ammo_45_du.name=Пуля 45-гП калОбра ACP (С ураМПвыЌ МакПМечМОкПЌ) +item.ammo_4gauge.name=Картечь 4 калОбра +item.ammo_4gauge_balefire.name=23ЌЌ Жар-граМата +item.ammo_4gauge_canister.name=23ЌЌ Ракета (Картечь) +item.ammo_4gauge_claw.name=Картечь 4 калОбра (КлешМО) +item.ammo_4gauge_explosive.name=23ЌЌ граМата +item.ammo_4gauge_flechette.name=ИгПльчатая картечь 4 калОбра +item.ammo_4gauge_flechette_phosphorus.name=ИгПльчатая картечь 4 калОбра (БЀ) +item.ammo_4gauge_kampf.name=23ЌЌ Ракета +item.ammo_4gauge_semtex.name=23ЌЌ КахтёрскОй заряЎ +item.ammo_4gauge_sleek.name=Картечь 4 калОбра (IF-R&D) +item.ammo_4gauge_slug.name=ТвёрЎая СтальМая пуля 4 калОбра +item.ammo_4gauge_titan.name=Картечь 4 калОбра (кряк) +item.ammo_4gauge_vampire.name=Картечь 4 калОбра (ОсОМПвый кПл) +item.ammo_4gauge_void.name=Картечь 4 калОбра (ПустПтМая ПбПлПчка) +item.ammo_50ae.name=ПатрПМ калОбра .50 AE +item.ammo_50ae_ap.name=ПатрПМ калОбра .50 AE (БрПМебПйМый) +item.ammo_50ae_chlorophyte.name=ПатрПМ калОбра .50 AE (ХлПрПфОт) +item.ammo_50ae_du.name=ПатрПМ калОбра .50 AE (ДУ) +item.ammo_50ae_star.name=ПатрПМ калОбра .50 AE (ЗвёзЎМый Ќеталл) +item.ammo_50bmg.name=КрупМПкалОберМый патрПМ .50 BMG +item.ammo_50bmg_ap.name=КрупМПкалОберМый патрПМ .50 BMG (БрПМебПйМый) +item.ammo_50bmg_chlorophyte.name=КрупМПкалОберМый патрПМ .50 BMG (ХлПрПфОт) +item.ammo_50bmg_du.name=КрупМПкалОберМый патрПМ .50 BMG (ДУ) +item.ammo_50bmg_explosive.name=КрупМПкалОберМый патрПМ .50 BMG (ВзрывМПй) +item.ammo_50bmg_flechette.name=ИгПльчатый .50 BMG патрПМ +item.ammo_50bmg_flechette_am.name=ИгПльчатый .50 BMG патрПМ (АЌерОцОй) +item.ammo_50bmg_flechette_po.name=ИгПльчатый .50 BMG патрПМ (ППлПМОй) +item.ammo_50bmg_incendiary.name=КрупМПкалОберМый патрПМ .50 BMG (ЗажОгательМый) +item.ammo_50bmg_phosphorus.name=КрупМПкалОберМый патрПМ .50 BMG (БЀ) +item.ammo_50bmg_sleek.name=КрупМПкалОберМый патрПМ .50 BMG (IF-R&D) +item.ammo_50bmg_star.name=КрупМПкалОберМый патрПМ .50 BMG (ЗвёзЎМый Ќеталл) +item.ammo_556.name=5.56ЌЌ патрПМ +item.ammo_556_ap.name=5.56ЌЌ патрПМ (БрПМебПйМый) +item.ammo_556_chlorophyte.name=5.56ЌЌ патрПМ (ХлПрПфОт) +item.ammo_556_du.name=5.56ЌЌ патрПМ (ДУ) +item.ammo_556_flechette.name=ИгПльчатый 5.56-патрПМ +item.ammo_556_flechette_chlorophyte.name=ИгПльчатый 5.56-патрПМ (ХлПрПфОт) +item.ammo_556_flechette_du.name=ИгПльчатый 5.56-патрПМ (УраМПвый брПМебПйМый) +item.ammo_556_flechette_incendiary.name=ИгПльчатый 5.56-патрПМ (ЗажОгательМый) +item.ammo_556_flechette_phosphorus.name=ИгПльчатый 5.56-патрПМ (ЀПсфПрМый МакПМечМОк) +item.ammo_556_flechette_sleek.name=ИгПльчатый 5.56-патрПМ (IF-R&D) +item.ammo_556_k.name=5.56ЌЌ К-ПатрПМ +item.ammo_556_phosphorus.name=5.56ЌЌ патрПМ (БЀ) +item.ammo_556_sleek.name=5.56ЌЌ патрПМ (IF-R&D) +item.ammo_556_star.name=5.56ЌЌ патрПМ (ЗвёзЎМый Ќеталл) +item.ammo_556_tracer.name=5.56ЌЌ патрПМ (ТрассОрующОй сМаряЎ) +item.ammo_5mm.name=5-ЌЌ патрПМ +item.ammo_5mm_chlorophyte.name=5-ЌЌ патрПМ (ХлПрПфОт) +item.ammo_5mm_du.name=5-ЌЌ патрПМ (ДУ) +item.ammo_5mm_explosive.name=5-ЌЌ патрПМ (ВзрывМПй) +item.ammo_5mm_star.name=5-ЌЌ патрПМ (ЗвёзЎМый Ќеталл) +item.ammo_75bolt.name=МагазОМ бПлтПв .75 (30rnd) +item.ammo_75bolt_incendiary.name=МагазОМ зажОгательМых бПлтПв .75 (30rnd) +item.ammo_75bolt_he.name=МагазОМ фугасМых бПлтПв .75 (30rnd) +item.ammo_762.name=7.62ЌЌ патрПМ +item.ammo_762_ap.name=7.62ЌЌ патрПМ (БрПМебПйМый) +item.ammo_762_du.name=7.62ЌЌ патрПМ (С ураМПвыЌ МакПМечМОкПЌ) +item.ammo_762_k.name=7.62 ЌЌ K-ПбразМый патрПМ +item.ammo_762_phosphorus.name=7.62ЌЌ патрПМ (БЀ) +item.ammo_762_tracer.name=7.62ЌЌ патрПМ (ТрассОрующОй) +item.ammo_9mm.name=9-ЌЌ патрПМ +item.ammo_9mm_ap.name=9-ЌЌ патрПМ (БрПМебПйМый) +item.ammo_9mm_chlorophyte.name=9-ЌЌ патрПМ (ХлПрПфОт) +item.ammo_9mm_du.name=9-ЌЌ патрПМ (ДУ) +item.ammo_9mm_rocket.name=9-ЌЌ ракета +item.ammo_arty.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ item.ammo_arty_cargo.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ Ўля экспресс-ЎПставкО +item.ammo_arty_chlorine.name=ХлПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_classic.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ (ПряЌП Оз ЀактПрОП) +item.ammo_arty_he.name=ЀугасМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_mini_nuke.name=МОМО-яЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_mini_nuke_multi.name=МОМО-яЎерМый 16-ЎюйЌПвый ЌультО-сМаряЎ +item.ammo_arty_mustard_gas.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ с ОпрОтПЌ +item.ammo_arty_nuke.name=ЯЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_phosgene.name=ЀПсгеМПвый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_phosphorus.name=ЀПсфПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ +item.ammo_arty_phosphorus_multi.name=ЀПсфПрМый 16-ЎюйЌПвый ЌультО-сМаряЎ +item.ammo_cell.name=ЭМергП-патрПМы +item.ammo_coilgun.name=ВПльфраЌПвый шар Ўля гаусс-пушкО +item.ammo_coilgun_du.name=ЀеррПураМОевый шар Ўля гаусс-пушкО +item.ammo_coilgun_rubber.name=РезОМПвый шар Ўля гаусс-пушкО +item.ammo_container.name=КПМтейМер с бПепрОпасаЌО +item.ammo_dart.name=ПластОкПвый ЎрПтОк (ИссущающОй) +item.ammo_dart_nerf.name=ДрПтОк NERF +item.ammo_dart_nuclear.name=ПластОкПвый ЎрПтОк (С взрывчаткПй) +item.ammo_dgk.name=ЛеМта Ма 200 патрПМПв Ўля CIWS "ГПварЎ" +item.ammo_fireext.name=Бак с вПЎПй Ўля ПгМетушОтеля +item.ammo_fireext_foam.name=Бак с пеМПй Ўля ПгМетушОтеля +item.ammo_fireext_sand.name=Бак с пескПЌ Ўля ПгМетушОтеля +item.ammo_folly.name=СеребряМая пуля +item.ammo_folly_du.name=СеребряМая пуля (ДУ, Не взрывающаяся) +item.ammo_folly_nuclear.name=СеребряМая пуля (АтПЌМая) +item.ammo_fuel.name=Бак с ЎОзелеЌ +item.ammo_fuel_gas.name=Бак с газПЌ +item.ammo_fuel_napalm.name=Бак с МапалЌПЌ +item.ammo_fuel_phosphorus.name=Бак с белыЌ фПсфПрПЌ +item.ammo_fuel_vaporizer.name=Бак ОспарОтеля +item.ammo_grenade.name=40ЌЌ граМата +item.ammo_grenade_concussion.name=40ЌЌ граМата (Concussion) +item.ammo_grenade_finned.name=40ЌЌ граМата (Finned) +item.ammo_grenade_he.name=40ЌЌ граМата (ЀугасМая) +item.ammo_grenade_incendiary.name=40ЌЌ граМата (ЗажОгательМая) +item.ammo_grenade_kampf.name=40ЌЌ-Ракета +item.ammo_grenade_leadburster.name=40ЌЌ ЛОЎбастер +item.ammo_grenade_nuclear.name=40ЌЌ граМата (ПрОвет) +item.ammo_grenade_phosphorus.name=40ЌЌ граМата (БЀ) +item.ammo_grenade_sleek.name=40ЌЌ граМата (IF-R&D) +item.ammo_grenade_toxic.name=40ЌЌ граМата (ХОЌОческая) +item.ammo_grenade_tracer.name=40ЌЌ УчебМая граМата item.ammo_himars_standard.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ item.ammo_himars_standard_he.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (ЀугасМый) +item.ammo_himars_standard_lava.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (Лава) item.ammo_himars_standard_mini_nuke.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (МОМО-яЎерМый) item.ammo_himars_standard_tb.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (ТерЌПбарОческОй) item.ammo_himars_standard_wp.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (БЀ) -item.ammo_himars_standard_lava.name=227-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (Лава) item.ammo_himars_single.name=610-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ item.ammo_himars_single_tb.name=610-ЌЌ управляеЌый артОллерОйскОй ракетМый сМаряЎ (ТерЌПбарОческОй) -tile.brick_asbestos_stairs.name=СтупеМО Оз асбестПвых кОрпОчей -tile.brick_compound.name=КПЌпПзОтМая сетка -tile.brick_compound_stairs.name=СтупеМО Оз кПЌпПзОтМПй сеткО -tile.brick_concrete_stairs.name=СтупеМО Оз бетПММых кОрпОчей -tile.brick_concrete_broken.name=РазрушеММые бетПММые кОрпОчО -tile.brick_concrete_marked.name=ППЌечеММые бетПММые кОрпОчО -tile.brick_concrete_cracked_stairs.name=СтупеМО Оз разрушеММых бетПМПвых кОрпОчей -tile.brick_concrete_mossy_stairs.name=CтупеМО Оз заЌшелых бетПММых кОрпОчей -tile.brick_ducrete_stairs.name=СтупеМО Оз ЎюкретПвых кОрпОчей -tile.brick_fire_stairs.name=СтупеМО Оз шаЌПтМых кОрпОчей -tile.brick_light.name=Cветлые кОрпОчО -tile.brick_light_stairs.name=СтупеМО Оз светлых кОрпОчей -tile.brick_obsidian_stairs.name=СтупеМО Оз ПбсОЎОаМПвых кОрпОчей -tile.brick_slab.brick_asbestos.name=ПлОта Оз асбестПвых кОрпОчей -tile.brick_slab.brick_compound.name=ПлОта Оз кПЌпПзОтМПй сеткО -tile.brick_slab.brick_fire.name=ПлОта Оз шаЌПтМых кОрпОчей -tile.brick_slab.brick_light.name=ПлОта Оз светлых кОрпОчей -tile.brick_slab.brick_obsidian.name=ПлОта Оз ПбсОЎОаМПвых кОрпОчей -tile.brick_slab.reinforced_brick.name=ПлОта Оз укреплёММПгП каЌМя -tile.brick_slab.reinforced_stone.name=ПлОта Оз уплПтМёММПгП каЌМя -tile.concrete_asbestos_stairs.name=СтупеМО Оз асбестПвых кОрпОчей -tile.concrete_brick_slab.brick_concrete.name=ПлОта Оз бетПММых кОрпОчей -tile.concrete_brick_slab.brick_concrete_broken.name=ПлОта Оз разрушОвшОхся бетПММых кОрпОчей -tile.concrete_brick_slab.brick_concrete_cracked.name=ПлОта Оз пПтрескаММых бетПММых кОрпОчей -tile.concrete_brick_slab.brick_concrete_mossy.name=ПлОта Оз заЌшелых бетПММых кОрпОчей -tile.concrete_brick_slab.brick_ducrete.name=ПлОта Оз ЎюкретПвых кОрпОчей -tile.concrete_colored_ext.hazard.name=БетПМ "ВыбПр стрПОтеля" - ППлПса ПпасМПстО -tile.concrete_colored_ext.indigo.name=БетПМ "ВыбПр стрПОтеля" - ГлубПкОй ОМЎОгП -tile.concrete_colored_ext.machine.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММый ПттеМПк -tile.concrete_colored_ext.machine_stripe.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММая пПлПса -tile.concrete_colored_ext.pink.name=БетПМ "ВыбПр стрПОтеля" - МужествеММый рПзПвый -tile.concrete_colored_ext.purple.name=БетПМ "ВыбПр стрПОтеля" - ТаОМствеММый фОПлетПвый -tile.concrete_colored_ext.bronze.name=БетПМ "ВыбПр стрПОтеля" - БрПМза -tile.concrete_colored_ext.sand.name=БетПМ "ВыбПр стрПОтеля" - ПустыМя -tile.concrete_slab.concrete.name=ПлОта Оз бетПММПй плОткО -tile.concrete_slab.concrete_asbestos.name=ПлОта Оз асбестПбетПМа -tile.concrete_slab.concrete_smooth.name=ПлОта Оз бетПМа -tile.concrete_slab.ducrete.name=ПлОта Оз ЎюкретПвПй плОткО -tile.concrete_slab.ducrete_smooth.name=ПлОта Оз Ўюкрета -tile.concrete_smooth_stairs.name=СтупеМО Оз бетПМа -tile.concrete_stairs.name=СтупеМО Оз бетПММПй плОткО -tile.ducrete_stairs.name=СтупеМО Оз ЎюкретПвПй плОткО -tile.ducrete_smooth_stairs.name=СтупеМО Оз Ўюкрета -tile.machine_boiler.name=БПйлер -tile.machine_boiler.desc=БПльшПй бПйлер Ўля кОпячеМОя вПЎы ОлО Магрева МефтО.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t -container.furnaceCombination=КПксПвая печь -tile.furnace_combination.name=КПксПвая печь -tile.furnace_combination.desc=БПльшая печь кПтПрая прПОзвПЎОт ЎревесМый угПль О угПльМый кПкс.$ВыЎеляет жОЎкПстМые пПбПчМые прПЎукты.$СкПрПсть переЎачО тепла: ΔT*0.25 TU/t -tile.reinforced_brick_stairs.name=СтупеМО Оз укреплёММПгП каЌМя -tile.reinforced_stone_stairs.name=СтупеМО Оз уплПтМёММПгП каЌМя -tile.turret_himars.name=РакетМая артОллерОйская турель "ГеМрО" -tile.radio_torch_receiver.name=РеЎстПуМ-раЎОП прОёЌМОк -tile.radio_torch_receiver.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО -tile.radio_torch_sender.name=РеЎстПуМ-раЎОП переЎатчОк -tile.radio_torch_sender.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СчОтывает реЎстПуМ сОгМал ОлО вхПЎ кПЌпаратПра -container.rttyReceiver=РеЎстПуМ-раЎОП прОёЌМОк -container.rttySender=РеЎстПуМ-раЎОП переЎатчОк -tile.radio_telex.name=Телекс -tile.machine_combustion_engine.name=ПрПЌышлеММый ЎвОгатель вМутреММегП сгПраМОя -tile.machine_mixer.name=ПрПЌышлеММый сЌесОтель -container.machineMixer=ПрПЌышлеММый сЌесОтель -tile.machine_turbinegas.name=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла -container.turbinegas=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла -tile.machine_autosaw.name=АвтПЌатОческая пОла -tile.machine_autosaw.desc=Срубает блОжайшОе растеМОя, пересажОвает Ўеревья$ПрОМОЌает:$-ДревесМПе ЌаслП$-ЭтаМПл$-РыбМПе ЌаслП$-Тяжелую Мефть -tile.machine_hephaestus.name=ГеПтерЌальМый теплППбЌеМОк -tile.ore_volcano.name=ГеПтерЌальМый ОстПчМОк -container.vacuumDistill=ВакууЌМый МефтеперерабатывающОй завПЎ -tile.machine_vacuum_distill.name=ВакууЌМый МефтеперерабатывающОй завПЎ -tile.machine_catalytic_reformer.name=КаталОтОческОй рефПрЌер -container.catalyticReformer=КаталОтОческОй рефПрЌер -tile.fan.name=ВеМтОлятПр -tile.fan.desc=АктОвОруется реЎстПуМПЌ$ТПлкает существ ЎП 10 блПкПв$ПКМ ПтвёрткПй чтПбы пПверМуть -tile.watz.name=РеактПр Ватцз -tile.watz_pump.name=НагМетающая пПЌпа Ватцза -tile.machine_coker.name=КПксПвая устаМПвка -tile.machine_coker.desc=КПксует жОЎкПсть, сПзЎавая жОЎкую пПбПчку.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.025 TU/t -container.machineCoker=КПксПвая устаМПвка -container.machineCompressor=КПЌпрессПр -tile.machine_compressor.name=КПЌпрессПр -tile.chimney_brick.name=ДыЌПвая труба -tile.chimney_brick.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 75%% -tile.chimney_industrial.name=ПрПЌышлеММая ЎыЌПвая труба -tile.chimney_industrial.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 90%% -tile.radio_torch_counter.name=РеЎстПуМ-раЎОП счётчОк преЎЌетПв -tile.radio_torch_counter.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СОгМал завОсОт Пт кПлОчества МужМых преЎЌетПв -container.rttyCounter=РеЎстПуМ-раЎОП счётчОк преЎЌетПв -container.rttyLogic=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк -tile.radio_torch_logic.name=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк -tile.radio_torch_logic.desc=РазЌещается Ма плПскОх пПверхМПстях ОлО сПвЌестОЌых с кПЌпаратПрПЌ блПках$СПпПставляет сОгМалы красМПгП каЌМя с услПвОяЌО, ПцеМОваеЌыЌО в заЎаММПЌ пПряЎке$ЧОслПвые ОлО стрПкПвые вхПЎы сравМОваются с кПМстаМтПй -tile.machine_industrial_boiler.name=ПрПЌышлеММый бПйлер -tile.machine_industrial_boiler.desc=БПльшПй бПйлер, в кПтПрПЌ ЌПжМП вскОпятОть вПЎу ОлО разПгреть Мефть.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t$Не ЌПжет взПрваться -container.crateTemplate=СбПрПчМый ящОк -tile.crate_template.name=СбПрПчМый ящОк -container.machineElectrolyser=ЭлектрПлОзёр -tile.machine_electrolyser.name=ЭлектрПлОзёр -tile.lantern.name=СветОльМОк -tile.lantern_behemoth.name=Старый светОльМОк -container.ashpit=ЗПльМОк -tile.machine_ashpit.name=ЗПльМОк -tile.machine_ashpit.desc=СПбОрает зПлу Оз тПпПк О МагревательМых печей -tile.machine_stirling_creative.name=ТвПрческОй геМератПр СтОрлОМга -tile.machine_stirling_creative.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$БескПМечМПе пПтреблеМОе/t$ЭффектОвМПсть: 100%% -tile.machine_conveyor_press.name=КПМвейерМый пресс -tile.machine_conveyor_press.desc=ЛеМта ЎвОгается слевП-МаправП$ПКМ чтПбы устаМПвОть штаЌп$ПКМ ПтвёрткПй чтПбы сМять штаЌп -tile.pump_electric.name=ЭлектрОческОй МасПс Ўля груМтПвых вПЎ -tile.pump_electric.desc=ИспПльзует электрОчествП Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 10,000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 -tile.pump_steam.name=ПарПвПй МасПс Ўля груМтПвых вПЎ -tile.pump_steam.desc=ИспПльзует пар Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 1000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 -container.machineArcWelder=ДугПвПй сварщОк -tile.machine_arc_welder.name=ДугПвПй сварщОк -container.machineWoodBurner=ГеМератПр Ма ЎрПвах -tile.machine_wood_burner.name=ГеМератПр Ма ЎрПвах -tile.machine_wood_burner.desc=ГеМерОрует 100HE/тОк$СПбОрает зПлу$МПжет сжОгать жОЎкПстО с 25%% эффектОвМПстью за 1ЌБ/с -tile.machine_ore_slopper.name=ПерерабПтчОк беЎрПкПвПй руЎы -container.machineOreSlopper=П.Б.Р. - -container.machineICF=ICF -tile.icf.name=РеактПр ОМерцОальМПгП терЌПяЎерМПгП сОМтеза (ICF) -tile.icf_block.name=Лазер ICF -tile.icf_controller.name=КПМтрПллер лазера ICF -tile.icf_laser_component.capacitor.name=ЛазерМый кПМЎеМсатПр ICF -tile.icf_laser_component.casing.name=ОбшОвка лазера ICF -tile.icf_laser_component.cell.name=ЛазерМая ячейка ICF -tile.icf_laser_component.emitter.name=ЛазерМый Озлучатель ICF -tile.icf_laser_component.port.name=ППрт лазера ICF -tile.icf_laser_component.turbo.name=ТурбПусОлОтель лазера ICF -container.machineICFPress=ТПплОвМый пресс ICF -tile.machine_icf_press.name=ТПплОвМый пресс ICF -tile.machine_icf_press.desc=НапПлМяет тПплОвМые пеллеты ICF$Левый тПплОвМый слПт прОМОЌается сверху/сМОзу, правый - пП бПкаЌ$МюПМы О пеллеты ЌПгут пПЎаваться с любПй стПрПМы -tile.icf_component.name=СтабОлОзатПр ICF -tile.icf_component.structure.name=ОбшОвка ICF -tile.icf_component.structure_bolted.name=ОбшОвка ICF (ЗаклепаММый) -tile.icf_component.vessel.name=СтеМка актОвМПй зПМы ICF -tile.icf_component.vessel_welded.name=СтеМка актОвМПй зПМы ICF (СвареММая) -tile.struct_icf_core.name=ЯЎрП ОМерцОальМПгП терЌПяЎерМПгП реактПра (ICF) - -tile.cm_block.alloy.name=КПрпус ЌашОМы Оз прПЎвОМутПгП сплава -tile.cm_block.desh.name=КПрпус ЌашОМы Оз Ўеша -tile.cm_block.steel.name=КПрпус ЌашОМы Оз сталО -tile.cm_block.tcalloy.name=КПрпус ЌашОМы Оз техМецОевПй сталО -tile.cm_engine.bismuth.name=МПтПрМый блПк Оз вОсЌута -tile.cm_engine.desh.name=МПтПрМый блПк Оз Ўеша -tile.cm_engine.standard.name=МПтПрМый блПк -tile.cm_flux.name=ПрОеЌМОк МейтрПММПгП пПтПка -tile.cm_heat.name=ТеплПпрОеЌМОк -tile.cm_port.alloy.name=Люк Оз прПЎвОМутПгП сплава -tile.cm_port.desh.name=Люк Оз Ўеша -tile.cm_port.steel.name=Люк Оз сталО -tile.cm_port.tcalloy.name=Люк Оз техМецОевПй сталО -tile.cm_sheet.alloy.name=ЛОст Оз прПЎвОМутПгП сплава -tile.cm_sheet.desh.name=ЛОст Оз Ўеша -tile.cm_sheet.steel.name=ЛОст Оз сталО -tile.cm_sheet.tcalloy.name=ЛОст Оз техМецОевПй сталО -tile.cm_tank.alloy.name=Бак Оз прПЎвОМутПгП сплава -tile.cm_tank.desh.name=Бак Оз Ўеша -tile.cm_tank.steel.name=Бак Оз сталО -tile.cm_tank.tcalloy.name=Бак Оз техМецОевПй сталО -tile.cm_circuit.aluminium.name=БлПк ЌОкрПсхеЌ 1-гП урПвМя -tile.cm_circuit.copper.name=БлПк ЌОкрПсхеЌ 2-гП урПвМя -tile.cm_circuit.gold.name=БлПк ЌОкрПсхеЌ 4-гП урПвМя -tile.cm_circuit.red_copper.name=БлПк ЌОкрПсхеЌ 3-гП урПвМя -tile.cm_circuit.schrabidium.name=БлПк ЌОкрПсхеЌ 5-гП урПвМя - -tile.pwr_block.name=ВПЎП-вПЎяМПй эМергетОческОй реактПр (ВВЭР) -tile.pwr_casing.name=ВМешМяя ПбшОвка ВВЭР -tile.pwr_casing.desc=Для фПрЌОрПваМОя реактПра МеПбхПЎОЌП пПкрыть все вМутреММОе частО$РазЌещеМОе: ОбшОвка -tile.pwr_channel.name=КаМалы с ПхлаЎОтелеЌ ВВЭР -tile.pwr_channel.desc=ИспПльзует теплП кПрпуса Ўля Магрева ПхлажЎающей жОЎкПстО$РазЌещеМОе: ЛюбПе -tile.pwr_control.name=РегулОрующОе стержМО ВВЭР -tile.pwr_control.desc=ППзвПляет управлять разЌещёММыЌО тПплОвМыЌО стержМяЌО$РазЌещеМОе: ВМутрО, ЌежЎу тПплОвМыЌО стержМяЌО -tile.pwr_controller.name=КПМтрПллер ВВЭР -tile.pwr_controller.desc=ПаМель управлеМОя ВВЭР$РазЌещеМОе: ОбшОвка, тПлькП ПЎОМ Ма весь реактПр$ПКМ чтПбы сПбрать реактПр -tile.pwr_fuel.name=ТПплОвМый стержеМь ВВЭР -tile.pwr_fuel.desc=УвелОчОвает вЌестОЌПсть тПплОва$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть -tile.pwr_heatex.name=ТеплППбЌеММОк ВВЭР -tile.pwr_heatex.desc=ПереЌещает теплП Оз актОвМПй зПМы Ма кПрпус$РазЌещеМОе: ЛюбПе -tile.pwr_neutron_source.name=ИстПчМОк МейтрПМПв ВВЭР -tile.pwr_neutron_source.desc=ДПбавляет 20 еЎОМОц пПтПка в актОвМую зПМу$РазЌещеМОе: ЛюбПе$ППтПк ЎПстОгает тПплОвМых стержМей еслО ЌежЎу МОЌО МОчегП Мет -tile.pwr_port.name=Люк ЎПступа ВВЭР -tile.pwr_port.desc=ВвПЎ/вывПЎ жОЎкПстей О преЎЌетПв$РазЌещеМОе: ОбшОвка -tile.pwr_reflector.name=НейтрПММый Птражатель ВВЭР -tile.pwr_reflector.desc=Отражает МейтрПМы ПбратМП к тПплОвМыЌ стержМяЌ$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть$ППЎхПЎОт Ўля ПбшОвкО -tile.pwr_heatsink.name=РаЎОатПр ВВЭР -tile.pwr_heatsink.desc=УвелОчОвает теплПеЌкПсть актОвМПй зПМы Ма 5%%$Делает каМалы ПхлажЎающей жОЎкПстО О теплППбЌеММОкО чуть ЌеМее эффектОвМыЌО$РазЌещеМОе: ЛюбПе - -container.hadron=УскПрОтель частОц -tile.hadron_access.name=ТерЌОМал ЎПступа ускПрОтеля частОц -tile.hadron_core.name=ЯЎрП ускПрОтеля частОц -tile.hadron_power.name=ППрт пОтаМОя ускПрОтеля частОц (1MHE) -tile.hadron_power_10m.name=ППрт пОтаМОя ускПрОтеля частОц (10MHE) -tile.hadron_power_100m.name=ППрт пОтаМОя ускПрОтеля частОц (100MHE) -tile.hadron_power_1g.name=ППрт пОтаМОя ускПрОтеля частОц (1GHE) -tile.hadron_power_10g.name=ППрт пОтаМОя ускПрОтеля частОц (10GHE) -tile.hadron_analysis.name=СтеМка каЌеры ускПрОтеля частОц -tile.hadron_analysis_glass.name=ОкМП каЌеры ускПрОтеля частОц -tile.hadron_coil_alloy.name=ПлПтМая сверхпрПвПЎящая катушка -tile.hadron_coil_mese.name=ПлПтМая Ќесе катушка -tile.hadron_coil_schrabidium.name=ПлПтМая шрабОЎОевая катушка -tile.hadron_coil_starmetal.name=ПлПтМая звёзЎМПЌеталлОческая катушка -tile.hadron_coil_chlorophyte.name=ПлПтМая хлПрПфОтПвая катушка -tile.hadron_coil_gold.name=ПлПтМая зПлПтая катушка -tile.hadron_coil_magtung.name=ПлПтМая сверхпрПвПЎящая 4000K катушка -tile.hadron_coil_neodymium.name=ПлПтМая МеПЎОЌПвая катушка -tile.hadron_coil_schrabidate.name=ПлПтМая шрабОЎатавая катушка -tile.hadron_cooler.name=Кулер ускПрОтеля частОц -tile.hadron_cooler.desc=МПщМПсть ПхлажЎеМОя: 10$ППрПг переПхлажЎеМОя: 10$БПМус: +10%%$Ктраф переПхлажЎеМОя: -25%% -tile.hadron_cooler_mk2.name=Кулер ускПрОтеля частОц - The Palindrome Special -tile.hadron_cooler_mk2.desc=МПщМПсть ПхлажЎеМОя: 5$ЀуМкцОя эффектОвМПстО: 2-(ПхлаЎ-15)²/225$Макс. штраф: -90%% -tile.hadron_diode.name=ДОПЎ частОц КПтткО -tile.hadron_plating.name=ОбшОвка ускПрОтеля частОц -tile.hadron_plating_black.name=ОбшОвка ускПрОтеля частОц (ЧёрМый) -tile.hadron_plating_blue.name=ОбшОвка ускПрОтеля частОц (СОМОй) -tile.hadron_plating_glass.name=ОбшОвка ускПрОтеля частОц (ОкПшкП) -tile.hadron_plating_striped.name=ОбшОвка ускПрОтеля частОц (Крутые пПлПсы ПпасМПстО) -tile.hadron_plating_voltz.name=ОбшОвка ускПрОтеля частОц (ВОЛЬТЗ) -tile.hadron_plating_yellow.name=ОбшОвка ускПрОтеля частОц (Жёлтый) -tile.field_disturber.name=ППЎавОтель высПкПэМергОтОческОх пПлей -container.exposureChamber=КаЌера ПблучеМОя частОцаЌО -tile.machine_exposure_chamber.name=КаЌера ПблучеМОя частОцаЌО - -tile.barrel_plastic.name=БезПпасМый бПчПМПк™ -tile.barrel_corroded.name=ПрПржавевшая бПчка -tile.barrel_iron.name=ЖелезМая бПчка -tile.barrel_steel.name=СтальМая бПчка -tile.barrel_antimatter.name=МагМОтМый кПМтейМер Ўля аМтОЌатерОО -container.barrel=БПчка - -tile.broadcaster_pc.name=ППврежЎёММый переЎатчОк -tile.tesla.name=Катушка Теслы -tile.charger.name=СтаМцОя заряЎкО -tile.radiobox.name=КПрПбка управлеМОя вреЎОтеляЌО РПзеМберга -tile.radiorec.name=FM раЎОП -container.radiobox=FM переЎатчОк -container.radiorec=FM раЎОП -tile.muffler.name=ГлушОтель -tile.red_pylon.name=Малый электрОческОй стПлб -tile.red_pylon_medium_steel.name=СреЎМОй стальМПй электрОческОй стПлб -tile.red_pylon_medium_steel_transformer.name=СреЎМОй стальМПй электрОческОй стПлб с траМсфПрЌатПрПЌ -tile.red_pylon_medium_wood.name=СреЎМОй ЎеревяММый электрОческОй стПлб -tile.red_pylon_medium_wood_transformer.name=СреЎМОй ЎеревяММый электрОческОй стПлб с траМсфПрЌатПрПЌ -item.wiring_red_copper.name=МПтПк прПвПЎа - -tile.rail_highspeed.name=ВысПкПскПрПстМые рельсы -tile.rail_booster.name=УскПряющОе высПкПскПрПстМые рельсы -item.cart.crate.name=ВагПМетка с ящОкПЌ -item.cart.destroyer.name=ВагПМетка с уМОчтПжОтелеЌ ЌусПра -item.cart.empty.name=СтальМая вагПМетка -tile.rail_narrow.name=УзкПкПлейМые вагПМетПчМые рельсы -tile.rail_wood.name=ДеревяММые рельсы -container.trainTram=ТраЌвай с плПскПй платфПрЌПй -item.train.cargo_tram.name=ТраЌвай с плПскПй платфПрЌПй - -tile.rail_large_buffer.name=СтаМЎартМый буферМый упПрМый рельс (5ÐŒ) -tile.rail_large_curve.name=СтаМЎартМая крОвая кПлея (5ÐŒ) -tile.rail_large_curve_7.name=СтаМЎартМая крОвая кПлея (7ÐŒ) -tile.rail_large_curve_9.name=СтаМЎартМая крОвая рельса (9ÐŒ) -tile.rail_large_ramp.name=СтаМЎартМая раЌпа (5ÐŒ) -tile.rail_large_straight.name=СтаМЎартМая кПлея (5ÐŒ) -tile.rail_large_straight_short.name=СтаМЎартМая кПлея (1ÐŒ) -tile.rail_large_switch.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, левый) -tile.rail_large_switch_flipped.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, правый) - -tile.factory_titanium_hull.name=КПрпус базПвПй фабрОкО -tile.factory_titanium_furnace.name=Люк ЎПступа базПвПй фабрОкО -tile.factory_titanium_conductor.name=ППрт электрОчества базПвПй фабрОкО -tile.factory_titanium_core.name=ЯЎрП базПвПй фабрОкО -item.factory_core_titanium.name=ЭМергетОческОй кластер базПвПй фабрОкО -container.factoryTitanium=БазПвая фабрОка -tile.factory_advanced_hull.name=КПрпус усПвершеМствПваММПй фабрОкО -tile.factory_advanced_furnace.name=Люк ЎПступа усПвершеМствПваММПй фабрОкО -tile.factory_advanced_conductor.name=ППрт электрОчества усПвершеМствПваММПй фабрОкО -tile.factory_advanced_core.name=ЯЎрП усПвершеМствПваММПй фабрОкО -item.factory_core_advanced.name=ЭМергетОческОй кластер усПвершеМствПваММПй фабрОкО -container.factoryAdvanced=УсПвершеМствПваММая фабрОка - -tile.reactor_element.name=РеактПрМая каЌера -tile.reactor_control.name=РегулОрующОе стержМО -tile.reactor_hatch.name=Люк ЎПступа реактПра -tile.reactor_ejector.name=ВыталкОватель ПтхПЎПв реактПра -tile.reactor_inserter.name=АвтПЌатОческОй заправщОк реактПра -tile.reactor_conductor.name=БПйлер реактПра -tile.reactor_computer.name=КПМтрПллер реактПра -container.reactorLarge=БПльшПй яЎерМый реактПр -tile.rbmk_absorber.name=БПрМый пПглПтОтель МейтрПМПв РБМК -tile.rbmk_blank.name=СтруктурМая кПлПММа РБМК -tile.rbmk_boiler.name=ПарПвПй каМал РБМК -tile.rbmk_loader.name=ПарПвПй прПвПЎМОк РБМК -tile.rbmk_loader.desc=ППзвПляет РБМК ОЌеть вМОзу сПеЎОМеМОя Ўля вПЎы О пара$ППЌестОте ПЎМу вПЎМую трубу пПЎ кПлПММПй РБМК, затеЌ прПвПЎМОк,$пПтПЌ пПЎключОте парПпрПвПЎ к прПвПЎМОку. -tile.rbmk_control.name=РегулОрующОе стержМО РБМК -tile.rbmk_control_auto.name=АвтПЌатОческОе регулОрующОе стержМО РБМК -tile.rbmk_moderator.name=ГрафОтПвый заЌеЎлОтель РБМК -tile.rbmk_reflector.name=КарбОЎ-вПльфраЌПвый Птражатель МейтрПМПв РБМК -tile.rbmk_outgasser.name=СтержеМь ПблучеМОя РБМК -tile.rbmk_rod.name=ТПплОвМые стержМО РБМК -tile.rbmk_rod_reasim.name=ТПплОвМые стержМО РБМК (РеаСОЌ) -tile.rbmk_console.name=КПМсПль РБМК -tile.rbmk_crane_console.name=КПМсПль краМа РБМК -tile.rbmk_control_mod.name=ЗаЌеЎляющОе регулОрующОе стержМО РБМК -tile.rbmk_rod_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК -tile.rbmk_rod_reasim_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК (РеаСОЌ) -tile.rbmk_steam_inlet.name=ППрт ввПЎа вПЎы РБМК РеаСОЌ -tile.rbmk_steam_inlet.desc=ППЎает вПЎу в кПлПММы RBMK, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку -tile.rbmk_steam_outlet.name=ППрт вывПЎа пара РБМК РеаСОЌ -tile.rbmk_steam_outlet.desc=Извлекает перегретый пар Оз кПлПММ РБМК, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку -tile.deco_rbmk.name=ДекП-блПкО РБМК -tile.deco_rbmk_smooth.name=ГлаЎкОе ЎекП-блПкО РБМК -container.rbmkBoiler=ПарПвПй каМал РБМК -container.rbmkControl=РегулОрующОе стержМО РБМК -container.rbmkControlAuto=АвтПЌатОческОе регулОрующОе стержМО РБМК -container.rbmkOutgasser=СтержеМь ПблучеМОя РБМК -container.rbmkRod=ТПплОвМые стержМО РБМК -container.rbmkReaSim=ТПплОвМые стержМО РБМК (РеаСОЌ) -container.rbmkStorage=КПлПММа-храМОлОще РБМК -container.rbmkHeater=ЖОЎкПстМый Магреватель РБМК -tile.rbmk_storage.name=КПлПММа-храМОлОще РБМК -tile.rbmk_cooler.name=ОхлаЎОтель РБМК -tile.rbmk_heater.name=ЖОЎкПстМый Магреватель РБМК -tile.rbmk_heatex.name=ТеплППбЌеММОк РБМК -tile.block_graphite_drilled.name=ПрПсверлеММый графОт -tile.block_graphite_fuel.name=ТПплОвП пПлеММОцы -tile.block_graphite_plutonium.name=Куча тПплОва (ПерерабПтаММПе) -tile.block_graphite_rod.name=КПМтрПльМый стержеМь пПлеММОцы -tile.block_graphite_source.name=ИстПчМОк МейтрПМПв пПлеММОцы -tile.block_graphite_detector.name=ДетектПр МейтрПМПв пПлеММОцы -tile.block_graphite_lithium.name=ЛОтОевПе тПплОвП пПлеММОцы -tile.block_graphite_tritium.name=ЛОтОевПе тПплОвП пПлеММОцы (ПерерабПтаММПе) -tile.machine_tower_large.name=ГраЎОрМя -tile.machine_tower_small.name=ВспПЌПгательМая граЎОрМя - -tile.fusion_conductor.name=СверхпрПвПЎящОй ЌагМОт -tile.fusion_conductor_welded.name=СверхпрПвПЎящОй ЌагМОт (СвареММый) -tile.fusion_center.name=ЊеМтральМый элеЌеМт ЌагМОта -tile.fusion_motor.name=ЭлеЌеМт ЌагМОтМПгП ЌПтПра -tile.fusion_heater.name=КПЌпПМеМт Магревателя плазЌы -tile.fusion_hatch.name=Люк ЎПступа терЌПяЎерМПгП реактПра -tile.fusion_core.name=КПМтрПллер терЌПяЎерМПгП реактПра -tile.plasma.name=ПлазЌа -container.fusionMultiblock=БПльшПй терЌПяЎерМый реактПр - -tile.watz_element.name=КаЌера реакцОО Ватцза -tile.watz_control.name=УпрПчМёММые регулОрующОе стержМО -tile.watz_cooler.name=СуперПхлаЎОтель реактПра Ватцза -tile.watz_end.name=СтабОлОзатПр реактПра Ватцза -tile.watz_end_bolted.name=СтабОлОзатПр реактПра Ватцза (ЗаклепаММый) -tile.watz_hatch.name=Люк ЎПступа к реактПру Ватцза -tile.watz_conductor.name=ППрт электрОчества Ватцза -tile.watz_core.name=КПМтрПллер реактПра Ватцза -container.watzPowerplant=РеактПр Ватцза - -tile.fwatz_conductor.name=4000K суперпрПвПЎящОй ЌагМОт -tile.fwatz_cooler.name=СтеМка регеМератОвМПй цОстерМы хлаЎагеМта -tile.fwatz_tank.name=ЭлеЌеМт регеМератОвМПй цОстерМы хлаЎагеМта -tile.fwatz_scaffold.name=СтруктурМая пПЎЎержка реактПра Ватцз-устаМПвкО -tile.fwatz_hatch.name=Люк ЎПступа к реактПру Ватцз-устаМПвкО -tile.fwatz_computer.name=МатрОца вычОслеМОя реактПра Ватцз-устаМПвкО -tile.fwatz_core.name=КПМтрПллер реактПра Ватцз-устаМПвкО -tile.fwatz_plasma.name=ДестабОлОзОрПваММая аМтОшрабОЎОуЌМая плазЌа -container.fusionaryWatzPlant=РеактПр Ватцз-устаМПвкО - -tile.machine_rtg_grey.name=РИТЭГ-геМератПр -container.rtg=РИТЭГ-геМератПр -tile.machine_radiolysis.name=РаЎОПОзПтПпМый терЌПэлектрОческОй геМератПр О каЌера раЎОПлОза -container.radiolysis=РИТЭГ О КаЌера РаЎОПлОза -tile.machine_powerrtg.name=ПТ-ОзПтПпМая ячейка -tile.machine_rtg_red.name=ЀульЌОМацОПММый геМератПр -tile.machine_rtg_orange.name=СОльМый RT геМератПр -tile.machine_rtg_yellow.name=АвстралОевый супертПплОвМый геМератПр -tile.machine_rtg_green.name=ВертОцОевый геМератПр бПгатства -tile.machine_rtg_cyan.name=ГеМератПр КрабОЎОевПгП распаЎа (WIP) -tile.machine_rtg_blue.name=КПМвекцОПММый геМератПр -tile.machine_rtg_purple.name=ГеМератПр аММОгОляцОО аМтОЌатерОО - -tile.machine_waste_drum.name=БПчка с ПтрабПтаММыЌ тПплОвПЌ -container.wasteDrum=БПчка с ПтрабПтаММыЌ тПплОвПЌ -container.storageDrum=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв -tile.machine_storage_drum.name=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв - -tile.machine_spp_bottom.name=ГеМератПр пПтеМцОала ZPE (МОз) -tile.machine_spp_top.name=ГеМератПр пПтеМцОала ZPE (верх) - -tile.ams_limiter.name=СтабОлОзатПр АМС [ДекПр] -container.amsLimiter=СтабОлОзатПр АМС [ДекПр] -tile.ams_emitter.name=Излучатель АМС [ДекПр] -container.amsEmitter=Излучатель АМС [ДекПр] -tile.ams_base.name=ОсМПваМОе АМС [ДекПр] -container.amsBase=ОсМПваМОе АМС [ДекПр] - -tile.dfc_emitter.name=Излучатель РТС -container.dfcEmitter=Излучатель РТС -tile.dfc_receiver.name=ПрОёЌМОк РТС -container.dfcReceiver=ПрОёЌМОк РТС -tile.dfc_injector.name=ТПплОвМый ОМжектПр РТС -container.dfcInjector=ТПплОвМый ОМжектПр РТС -tile.dfc_stabilizer.name=СтабОлОзатПр РТС -container.dfcStabilizer=СтабОлОзатПр РТС -tile.dfc_core.name=ЯЎрП реактПра тёЌМПгП сОМтеза -container.dfcCore=РеактПр тёЌМПгП сОМтеза - -item.template_folder.name=Папка шаблПМПв ЌашОМ -item.template_folder.desc=КаблПМы ЌашОМ: БуЌага + КрасОтель$ИМЎетОфОкатПр: ЖелезМая пластОМа + КрасОтель$КтаЌп Ўля пресса: ПлПскОй штаЌп$Трек сОреМы: ИзПлятПр + СтальМая пластОМа -item.journal_bj.name=ПрПпОтаММый вОскО блПкМПт -item.journal_pip.name=ДМевМОк выжОвальщОка -item.journal_silver.name=ЗапОскО кПМтрактМОка -item.fluid_identifier.name=ИЎеМтОфОкатПр жОЎкПстО -item.fluid_identifier.info=УМОверсальМый ОЎеМтОфОкатПр жОЎкПстО: -item.fluid_identifier.usage0=Правая кМПпка ЌышО пП трубаЌ, чтПбы ПбПзМачОть Ох Ўля этПй жОЎкПстО. -item.fluid_identifier.usage1=SHIFT+ПКМ пП трубаЌ чтПбы ПбПзМачОть блОжайшОе трубы -item.fluid_identifier.usage2=в раЎОусе 64 блПкПв. -item.fluid_identifier_multi.name=МультО-жОЎкПстМый ОЎеМтОфОкатПр -item.fluid_identifier_multi.info=ЖОЎкПстМый ОЎеМтОфОкатПр Ўля: -item.fluid_identifier_multi.info2=ВтПрПй тОп: -item.assembly_template.name=КаблПМ сбПрПчМПй ЌашОМы: -item.chemistry_template.name=КаблПМ хОЌОческПй ЌашОМы: -item.crucible_template.name=КаблПМ плавОльМО: -item.siren_track.name=Трек сОреМы -item.mold_base.name=Пустая лОтейМая фПрЌа -item.mold.name=ЛОтейМая фПрЌа - -item.bobmazon_materials.name=БПбЌазПМ: МатерОалы -item.bobmazon_machines.name=БПбЌазПМ: БлПкО О ЌашОМы -item.bobmazon_weapons.name=БПбЌазПМ: ОружОе О взрывчатка -item.bobmazon_tools.name=БПбЌазПМ: ПреЎЌеты -item.bobmazon_hidden.name=Скрытый каталПг - -item.fuse.name=ПреЎПхраМОтель +item.ammo_luna.name=ЛуММый сМайперскОй сабПтажМый сМаряЎ +item.ammo_luna_explosive.name=ЛуММый сМайперскОй взрывМПй сМаряЎ +item.ammo_luna_incendiary.name=ЛуММый сМайперскОй зажОгательМый сМаряЎ +item.ammo_mirv.name=МИРВ-ЌОМОзаряЎ +item.ammo_mirv_high.name=МИРВ-ЌОМОзаряЎ (ВысПкПЌПщМый) +item.ammo_mirv_low.name=МИРВ-ЌОМОзаряЎ (МалПЌПщМый) +item.ammo_mirv_safe.name=МИРВ-ЌОМОзаряЎ (БезПпасМый) +item.ammo_mirv_special.name=МИЛВ-ЌОМОзаряЎ +item.ammo_nuke.name=ЯЎерМый ЌОМОзаряЎ +item.ammo_nuke_barrel.name=МОМО-бПчка с яЎерМыЌО ПтхПЎаЌО +item.ammo_nuke_high.name=ЯЎерМый ЌОМОзаряЎ (ВысПкПЌПщМый) +item.ammo_nuke_low.name=ЯЎерМый ЌОМОзаряЎ (МалПЌПщМый) +item.ammo_nuke_pumpkin.name=ТыквеММая бПЌба +item.ammo_nuke_safe.name=ЯЎерМый ЌОМОзаряЎ (БезПпасМый) +item.ammo_nuke_tots.name=ЯЎерМый ЌОМОзаряЎ ("Карапуз") +item.ammo_rocket.name=84-ЌЌ ракета +item.ammo_rocket_canister.name=84-ЌЌ ракета (Картечь) +item.ammo_rocket_digamma.name=null +item.ammo_rocket_emp.name=84-ЌЌ ракета (ИЌпульсМая) +item.ammo_rocket_glare.name=84-ЌЌ ракета (КрасМПе ЗаревП) +item.ammo_rocket_he.name=84-ЌЌ ракета (ЀугасМая) +item.ammo_rocket_incendiary.name=84-ЌЌ ракета (ЗажОгательМая) +item.ammo_rocket_nuclear.name=84-ЌЌ ракета (ПрОвет) +item.ammo_rocket_phosphorus.name=84-ЌЌ ракета (БЀ) +item.ammo_rocket_rpc.name=84-ЌЌ Ракета-БеМзПпОла +item.ammo_rocket_shrapnel.name=84-ЌЌ ракета (ОскПлПчМая) +item.ammo_rocket_sleek.name=84-ЌЌ ракета (IF-R&D) +item.ammo_rocket_toxic.name=84-ЌЌ ракета (ХОЌОческая) +item.ammo_shell.name=240ЌЌ СМаряЎ +item.ammo_shell_apfsds_du.name=240ЌЌ APFSTS-DU +item.ammo_shell_apfsds_t.name=240ЌЌ APFSTS-T +item.ammo_shell_explosive.name=240ЌЌ ЀугасМый сМаряЎ +item.ammo_shell_w9.name=240ЌЌ ЯЎерМый сМаряЎ W9 +item.ammo_secret.bmg50_equestrian.name=.50 BMG Demolisher +item.ammo_secret.folly_nuke.name=Silver Bullet, Nuclear +item.ammo_secret.folly_sm.name=Silver Bullet +item.ammo_secret.g12_equestrian.name=12 Gauge Railway Spike Shot +item.ammo_secret.m44_equestrian.name=.44 Magnum Head-Exploder +item.ammo_secret.p35_800.name=.35-800 V9 +item.ammo_standard.b75.name=.75 Bolt +item.ammo_standard.b75_exp.name=.75 Bolt (Explosive) +item.ammo_standard.b75_inc.name=.75 Bolt (Incendiary) +item.ammo_standard.bmg50_ap.name=.50 BMG Round (Armor Piercing) +item.ammo_standard.bmg50_du.name=.50 BMG Round (Depleted Uranium) +item.ammo_standard.bmg50_fmj.name=.50 BMG Round (Full Metal Jacket) +item.ammo_standard.bmg50_jhp.name=.50 BMG Round (Jacketed Hollow Point) +item.ammo_standard.bmg50_sp.name=.50 BMG Round (Soft Point) +item.ammo_standard.capacitor.name=Capacitor +item.ammo_standard.capacitor_ir.name=Capacitor (Low Wavelength) +item.ammo_standard.capacitor_overcharge.name=Capacitor (Overcharge) +item.ammo_standard.coil_ferrouranium.name=Coilgun Ferrouranium Ball +item.ammo_standard.coil_tungsten.name=Coilgun Tungsten Ball +item.ammo_standard.flame_balefire.name=Flamer Fuel, Balefire +item.ammo_standard.flame_diesel.name=Flamer Fuel, Diesel +item.ammo_standard.flame_gas.name=Flamer Fuel, Gas +item.ammo_standard.flame_napalm.name=Flamer Fuel, Napalm +item.ammo_standard.g10.name=10 Gauge Buckshot +item.ammo_standard.g10_du.name=10 Gauge Uranium Buckshot +item.ammo_standard.g10_shrapnel.name=10 Gauge Shrapnel Buckshot +item.ammo_standard.g10_slug.name=10 Gauge Slug +item.ammo_standard.g12.name=12 Gauge Buckshot +item.ammo_standard.g12_anthrax.name=12 Gauge Anthrax Shell +item.ammo_standard.g12_bp.name=12 Gauge Black Powder Buckshot +item.ammo_standard.g12_bp_magnum.name=12 Gauge Black Powder Magnum Shell +item.ammo_standard.g12_bp_slug.name=12 Gauge Black Powder Slug +item.ammo_standard.g12_explosive.name=12 Gauge Explosive Shell +item.ammo_standard.g12_flechette.name=12 Gauge Flechette Shell +item.ammo_standard.g12_magnum.name=12 Gauge Magnum Shell +item.ammo_standard.g12_phosphorus.name=12 Gauge Phosphorus Shell +item.ammo_standard.g12_slug.name=12 Gauge Slug +item.ammo_standard.g26_flare.name=26mm Signal Flare +item.ammo_standard.g26_flare_supply.name=26mm Signal Flare (Supply Airdrop) +item.ammo_standard.g26_flare_weapon.name=26mm Signal Flare (Weapon Airdrop) +item.ammo_standard.g40_demo.name=40mm Grenade, Demolition +item.ammo_standard.g40_he.name=40mm Grenade, High-Explosive +item.ammo_standard.g40_heat.name=40mm Grenade, Shaped Charge +item.ammo_standard.g40_inc.name=40mm Grenade, Incendiary +item.ammo_standard.g40_phosphorus.name=40mm Grenade, White Phosphorus +item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) +item.ammo_standard.m357_bp.name=.357 Magnum Round (Black Powder) +item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) +item.ammo_standard.m357_fmj.name=.357 Magnum Round (Full Metal Jacket) +item.ammo_standard.m357_jhp.name=.357 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m357_sp.name=.357 Magnum Round (Soft Point) +item.ammo_standard.m44_ap.name=.44 Magnum Round (Armor Piercing) +item.ammo_standard.m44_bp.name=.44 Magnum Round (Black Powder) +item.ammo_standard.m44_express.name=.44 Magnum Round (FMJ Express) +item.ammo_standard.m44_fmj.name=.44 Magnum Round (Full Metal Jacket) +item.ammo_standard.m44_jhp.name=.44 Magnum Round (Jacketed Hollow Point) +item.ammo_standard.m44_sp.name=.44 Magnum Round (Soft Point) +item.ammo_standard.nuke_demo.name=Mini Nuke, Demolition +item.ammo_standard.nuke_high.name=Mini Nuke, High Yield +item.ammo_standard.nuke_hive.name=Rocket Hive +item.ammo_standard.nuke_standard.name=Mini Nuke +item.ammo_standard.nuke_tots.name=Mini Nuke, Tiny Tots +item.ammo_standard.p22_ap.name=.22 LR Round (Armor Piercing) +item.ammo_standard.p22_fmj.name=.22 LR Round (Full Metal Jacket) +item.ammo_standard.p22_jhp.name=.22 LR Round (Jacketed Hollow Point) +item.ammo_standard.p22_sp.name=.22 LR Round (Soft Point) +item.ammo_standard.p9_ap.name=9mm Round (Armor Piercing) +item.ammo_standard.p9_fmj.name=9mm Round (Full Metal Jacket) +item.ammo_standard.p9_jhp.name=9mm Round (Jacketed Hollow Point) +item.ammo_standard.p9_sp.name=9mm Round (Soft Point) +item.ammo_standard.r556_ap.name=5.56mm Round (Armor Piercing) +item.ammo_standard.r556_fmj.name=5.56mm Round (Full Metal Jacket) +item.ammo_standard.r556_jhp.name=5.56mm Round (Jacketed Hollow Point) +item.ammo_standard.r556_sp.name=5.56mm Round (Soft Point) +item.ammo_standard.r762_ap.name=7.62mm Round (Armor Piercing) +item.ammo_standard.r762_du.name=7.62mm Round (Depleted Uranium) +item.ammo_standard.r762_fmj.name=7.62mm Round (Full Metal Jacket) +item.ammo_standard.r762_jhp.name=7.62mm Round (Jacketed Hollow Point) +item.ammo_standard.r762_sp.name=7.62mm Round (Soft Point) +item.ammo_standard.rocket_demo.name=Rocket, Demolition +item.ammo_standard.rocket_he.name=Rocket, High-Explosive +item.ammo_standard.rocket_heat.name=Rocket, Shaped Charge +item.ammo_standard.rocket_inc.name=Rocket, Incendiary +item.ammo_standard.rocket_phosphorus.name=Rocket, White Phosphorus +item.ammo_standard.stone.name=Ball and Powder +item.ammo_standard.stone_ap.name=Flint and Powder +item.ammo_standard.stone_iron.name=Iron Ball and Powder +item.ammo_standard.stone_shot.name=Shot and Powder +item.ammo_standard.tau_uranium.name=Depleted Uranium-235 Box +item.ammo_stinger_rocket.name=Ракета-СтОМгер +item.ammo_stinger_rocket_he.name=Ракета-СтОМгер (ЀугасМая) +item.ammo_stinger_rocket_incendiary.name=Ракета-СтОМгер (ЗажОгательМая) +item.ammo_stinger_rocket_nuclear.name=Ракета-СтОМгер (ПрОвет) +item.ammo_stinger_rocket_bones.name=Ракета-СтОМгер (ППОск ЌПбПв) +item.ams_catalyst_aluminium.name=АлюЌОМОевый реакцОПММый каталОзатПр +item.ams_catalyst_beryllium.name=БерОллОевый реакцОПММый каталОзатПр +item.ams_catalyst_blank.name=ПустПй реакцОПММый каталОзатПр +item.ams_catalyst_caesium.name=ЊезОевый реакцОПММый каталОзатПр +item.ams_catalyst_cerium.name=ЊерОевый реакцОПММый каталОзатПр +item.ams_catalyst_cobalt.name=КПбальтПвый реакцОПММый каталОзатПр +item.ams_catalyst_copper.name=МеЎМый реакцОПММый каталОзатПр +item.ams_catalyst_dineutronium.name=ДОМейтрПМОевый реакцОПММый каталОзатПр +item.ams_catalyst_euphemium.name=ЭвфеЌОевый реакцОПММый каталОзатПр +item.ams_catalyst_iron.name=ЖелезМый реакцОПММый каталОзатПр +item.ams_catalyst_lithium.name=ЛОтОевый реакцОПММый каталОзатПр +item.ams_catalyst_niobium.name=НОПбОевый реакцОПММый каталОзатПр +item.ams_catalyst_schrabidium.name=КрабОЎОевый реакцОПММый каталОзатПр +item.ams_catalyst_strontium.name=СтрПМцОевый реакцОПММый каталОзатПр +item.ams_catalyst_thorium.name=ТПрОевый реакцОПММый каталОзатПр +item.ams_catalyst_tungsten.name=ВПльфраЌПвый реакцОПММый каталОзатПр +item.ams_core_eyeofharmony.name=ОкП ГарЌПМОО (АМС/РТС ЯЎрП) +item.ams_core_sing.name=РезПМОрующая сОМгулярМПсть (АМС/РТС ЯЎрП) +item.ams_core_thingy.name=КтукПвОМа (АМС/РТС ЯЎрП) +item.ams_core_wormhole.name=КрПшечМая червПтПчОМа (АМС/РТС ЯЎрП) +item.ams_focus_blank.name=ПустПй стабОлОзОрующОй фПкус +item.ams_focus_booster.name=УсОлОвающОй стабОлОзОрующОй фПкус +item.ams_focus_booster.desc=БПлее слабПе сЎержОвающее пПле О закачка эМергОО в яЎрП:$БПльше вырабПткО тепла, ЎПпПлМОтельМая эМергОя. +item.ams_focus_limiter.name=ОграМОчОтельМый стабОлОзОрующОй фПкус +item.ams_focus_limiter.desc=МаксОЌальМая прПОзвПЎОтельМПсть Ўля сЎержОвающегП пПля:$СтаМЎартМПе ПхлажЎеМОе, без бПМуса за эМергОю. +item.ams_lens.name=ЛОМза СтабОлОзатПра +item.ams_muzzle.name=ЛучеОспускательМПе ЎулП +item.ams_muzzle.desc=...ПМ Оспускает штукПвОМу с эМергетОческОЌ лучПЌ. +item.analysis_tool.name=АМалОзатПр +item.analyzer.name=АМалОзатПр +item.anchor_remote.name=УстрПйствП вызПва +item.apple_euphemium.name=ЭвфеЌОевПе ЯблПкП +item.apple_lead.name=СвОМцПвПе яблПкП +item.apple_schrabidium.name=КрабОЎОевПе ЯблПкП item.arc_electrode.name=ГрафОтПвый электрПЎ item.arc_electrode.desh.name=Деш-электрПЎ item.arc_electrode.graphite.name=ГрафОтПвый электрПЎ @@ -2796,656 +2061,95 @@ item.arc_electrode_burnt.graphite.name=РасплавлеММый графОтП item.arc_electrode_burnt.lanthanium.name=РасплавлеММый лаМтаМПвый электрПЎ item.arc_electrode_burnt.saturnite.name=РасплавлеММый сатурМОтПвый электрПЎ item.arc_electrode_desh.name=ЭлектрПЎ Оз Ўеш -item.crt_display.name=ЭлектрПММП-лучевая трубка - -tile.test_nuke.name=ТестПвая бПЌба - -item.ingot_th232.name=СлОтПк тПрОя-232 -item.ingot_uranium.name=УраМПвый слОтПк -item.ingot_u233.name=СлОтПк ураМа-233 -item.ingot_u235.name=СлОтПк ураМа-235 -item.ingot_u238.name=СлОтПк ураМа-238 -item.ingot_ra226.name=СлОтПк раЎОя-226 -item.ingot_u238m2.name=ППлустабОльМый слОтПк ураМа-238-2 -item.ingot_plutonium.name=ПлутПМОевый слОтПк -item.ingot_pu_mix.name=СлОтПк плутПМОя реактПрМПгП качества -item.ingot_pu238.name=СлОтПк плутПМОя-238 -item.ingot_pu239.name=СлОтПк плутПМОя-239 -item.ingot_pu240.name=СлОтПк плутПМОя-240 -item.ingot_pu241.name=СлОтПк плутПМОя-241 -item.ingot_au198.name=СлОтПк зПлПта-198 -item.ingot_co60.name=СлОтПк кПбальта-60 -item.ingot_technetium.name=СлОтПк техМецОя-99 -item.ingot_neptunium_fuel.name=СлОтПк МептуМОевПгП тПплОва -item.ingot_am_mix.name=СлОтПк аЌерОцОя реактПрМПгП качества -item.ingot_am241.name=СлОтПк аЌерОцОя-241 -item.ingot_am242.name=СлОтПк аЌерОцОя-242 -item.ingot_americium_fuel.name=СлОтПк аЌерОцОевПгП тПплОва -item.ingot_titanium.name=ТОтаМПвый слОтПк -item.ingot_cobalt.name=КПбальтПвый слОтПк -item.ingot_tantalium.name=ТаМталПвый слОтПк -item.ingot_tantalium.desc='ТаМталуЌ' -item.ingot_tantalium.desc.P11=АКА ТаМталОй. -item.ingot_meteorite.name=МетеПрОтПвый слОтПк -item.ingot_osmiridium.name=ОсЌОрОЎОевый слОтПк -item.ingot_meteorite_forged.name=ВыкПваММый ЌетеПрОтПвый слОтПк -item.ingot_bakelite.name=БакелОт -item.sulfur.name=Сера -item.ingot_sr90.name=СлОтПк стрПМцОя-90 -item.ingot_pb209.name=СлОтПк свОМца-209 -item.ingot_gh336.name=СлОтПк гОПрсОя-336 -item.ingot_gh336.desc=КПллега СОбПргОуЌа. - -item.niter.name=СелОтра -item.nitra.name=НОтра -item.nitra_small.name=Кучка МОтры -item.ingot_copper.name=СлОтПк прПЌышлеММПй ЌеЎО -item.ingot_red_copper.name=СлОтПк красМПй ЌеЎО -item.ingot_tungsten.name=ВПльфраЌПвый слОтПк -item.ingot_aluminium.name=АлюЌОМОевый слОтПк -item.fluorite.name=ЀлюПрОт -item.ingot_steel.name=СтальМПй слОтПк -item.ingot_steel_dusted.name=ЗапылёММПй стальМПй слОтПк -item.ingot_chainsteel.name=Тяжёлая цепМая сталь -item.ingot_tcalloy.name=СлОтПк техМецОевПй сталО -item.plate_steel.name=СтальМая пластОМа -item.plate_dura_steel.name=ПластОМа высПкПскПрПстМПй сталО -item.ingot_beryllium.name=БерОллевый слОтПк -item.plate_schrabidium.name=КрабОЎОевая пластОМа -item.ingot_schraranium.name=КрараМОевый слОтПк -item.ingot_schraranium.desc=Делается Оз ураМа в шрабОЎОевПЌ траМсЌутатПре -item.ingot_semtex.name=СеЌтекс -item.ingot_c4.name=БрусПк C-4 -item.ingot_schrabidate.name=СлОтПк шрабОЎата железа -item.powder_schrabidate.name=ППрПшПк шрабОЎата железа -item.ingot_schrabidium.name=КрабОЎОевый слОтПк -item.nugget_schrabidium.name=КрабОЎОевый саЌПрПЎПк -item.plate_copper.name=МеЎМая пластОМа -item.board_copper.name=МеЎМая паМель -item.ingot_bscco.name=СлОтПк BSCCO -item.ingot_advanced_alloy.name=СлОтПк прПЎвОМутПгП сплава -item.plate_advanced_alloy.name=ПластОМа прПЎвОМутПгП сплава -item.wire_advanced_alloy.name=СверхпрПвПЎМОк -item.coil_advanced_alloy.name=СверхпрПвПЎящая катушка -item.coil_advanced_torus.name=СверхпрПвПЎящая кПльцевая катушка -item.coil_gold.name=ЗПлПтая катушка -item.coil_gold_torus.name=ЗПлПтая кПльцевая катушка -item.lithium.name=Куб лОтОя -item.ingot_phosphorus.name=БрусПк белПгП фПсфПра -item.ingot_magnetized_tungsten.name=НаЌагМОчеММый слОтПк вПльфраЌа -item.ingot_mud.name=КОрпОч Оз твёрЎых ПтхПЎПв -item.ingot_combine_steel.name=СлОтПк сталО АльяМса -item.ingot_combine_steel.desc=*вставьте рефереМс Ма ГражЎаМскую ОбПрПМу* -item.ingot_combine_steel.desc.11="Я ОЌею в вОЎу, этП глагПл Ўля грПЌкПгП крОка.$ИМПплаМетяМе - этП Ме глагПлы. ЭтП существОтельМые!"$"На саЌПЌ Ўеле, я ЎуЌаю, чтП этП также МазваМОе $какПгП-тП сельскПхПзяйствеММПгП ПбПруЎПваМОя, такПгП как $ЌПлПтОлка за ЎПллар ОлО чтП-тП в этПЌ рПЎе."$"ЭтП еще хуже. Теперь у Мас есть слПвП,$кПтПрПе ЌПжет ПзМачать "сЌешОвать вещО вЌесте",$часть сельскПхПзяйствеММПгП ПбПруЎПваМОя, О Ўавайте пПсЌПтрОЌ...$а Ўа, этП также ЌПжет ПзМачать "саЌая прПЎвОМутая $фПрЌа жОзМО в ОзвестМПй вселеММПй".."$"И?"$"'И?' Да лаЎМП, чувак, ПМО же ИНОПЛАНЕТЯНЕ!" -item.plate_combine_steel.name=ПластОМа сталО АльяМса -item.ingot_zirconium.name=ЊОркПМОевый куб -item.ingot_boron.name=БПрМый слОтПк -item.ingot_graphite.name=ГрафОтПвый слОтПк -item.ingot_bismuth.name=СлОтПк вОсЌута -item.ingot_bismuth_bronze.name=СлОтПк вОсЌутПвПй брПМзы -item.cube_power.name=Куб электрПМОя -item.ingot_smore.name=СлОтПк с'ЌПра -item.ingot_niobium.name=НОПбОевый слОтПк -item.ingot_firebrick.name=КаЌПтМый кОрпОч -item.ingot_calcium.name=КальцОевый слОтПк -item.plate_cast.name=ЛОтая пластОМа Оз %s -item.heavy_component.name=Тяжёлый кПЌпПМеМт Оз %s -item.plate_welded.name=СвареММая пластОМа Оз %s -item.ingot_pvc.name=ПВХ -item.ingot_pet.name=МеталлОзОрПваММый алюЌОМОеЌ брусПк ПЭТ -item.ingot_pc.name=ТверЎый пластОкПвый брусПк -item.ingot_cadmium.name=КаЎЌОевый слОтПк -item.ingot_cdalloy.name=СлОтПк каЎЌОевПй сталО -item.powder_cadmium.name=ППрПшПк каЎЌОя - -item.plate_armor_lunar.name=ЛуММая ПбшОвка -item.plate_armor_titanium.name=ТОтаМПвая ПбшОвка брПМО -item.plate_armor_hev.name=РеактОвМая ПбшОвка брПМО -item.plate_armor_ajr.name=КПваМая железМая ПбшОвка брПМО -item.plate_armor_fau.name=ОбшОвка брПМО Ѐау -item.plate_armor_dnt.name=ОбшОвка ДНТ-брПМО -item.armor_polish.name=ППлОрПль Ўля брПМО КайМОМгАрЌПр™ item.armor_battery.name=АккуЌулятПрМый блПк Ўля сОлПвПй брПМО item.armor_battery_mk2.name=АккуЌулятПрМый блПк Ўля сОлПвПй брПМО Mk2 item.armor_battery_mk3.name=АккуЌулятПрМый блПк Ўля сОлПвПй брПМО Mk3 -item.insert_esapi.name=ESAPI пластОМы -item.insert_kevlar.name=КевларПвые пластОМы -item.insert_sapi.name=SAPI пластОМы -item.insert_steel.name=ТяжёлПстальМые пластОМы -item.insert_xsapi.name=XSAPI пластОМы -item.pads_rubber.name=РезОМПвые прПклаЎкО -item.pads_slime.name=СлайЌПвые прПклаЎкО -item.pads_static.name=СтатОкПвые прПклаЎкО -item.servo_set.name=НабПр сервПпрОвПЎПв -item.servo_set_desh.name=НабПр Ўеш-сервПпрОвПЎПв +item.armor_polish.name=ППлОрПль Ўля брПМО КайМОМгАрЌПр™ +item.asbestos_boots.name=ОгМезащОтМые бПтОМкО +item.asbestos_cloth.name=ОгМеупПрМая ткаМь +item.asbestos_helmet.name=ОгМезащОтМый шлеЌ +item.asbestos_legs.name=ОгМезащОтМые пПМПжО +item.asbestos_plate.name=ОгМезащОтМый МагруЎМОк +item.ashglasses.name=ПепельМые ПчкО +item.assembly_45.name=.45 ACP Assembly +item.assembly_556.name=СбПрка 5.56ЌЌ пулО +item.assembly_762.name=СбПрка 7.62ЌЌ патрПМа +item.assembly_actionexpress.name=СбПрка .50 AE пулО +item.assembly_calamity.name=СбПрка .50 BMG пулО +item.assembly_desh.name=СбПрка Ўеш-пулО +item.assembly_gold.name=СбПрка зПлПтПй пулО +item.assembly_iron.name=СбПрка железМПй пулО +item.assembly_lacunae.name=СбПрка 5ЌЌ пулО +item.assembly_lead.name=СбПрка стекляММПй пулО +item.assembly_luna.name=СбПрка луММПгП сМайперскПгП патрПМа +item.assembly_nightmare.name=СбПрка кПшЌарМПй пулО +item.assembly_nopip.name=СбПрка пулО МагМуЌа .44 +item.assembly_nuke.name=ОбПлПчка яЎерМПгП ЌОМОзаряЎа +item.assembly_pip.name=СбПрка заражеММПй пулО +item.assembly_schrabidium.name=СбПрка шрабОЎОевПй пулО +item.assembly_smg.name=СбПрка 9-ЌЌ пулО +item.assembly_steel.name=СбПрка свОМцПвПй пулО +item.assembly_template.name=КаблПМ сбПрПчМПй ЌашОМы: +item.assembly_uzi.name=СбПрка .22 LR пулО +item.attachment_mask.name=ПрОкрепляеЌый прПтОвПгаз +item.attachment_mask_mono.name=ПрОкрепляеЌая пПлуЌаска +item.australium_iii.name=УвелОчОтель жОзМО Марк III +item.australium_iv.name=УвелОчОтель жОзМО Марк IV +item.australium_v.name=УвелОчОтель жОзМО Марк V +item.back_tesla.name=РаМцевая катушка теслы +item.balefire_and_ham.name=ВетчОМа О жар-яйца +item.balefire_and_steel.name=Жар-ПгМОвП +item.balefire_scrambled.name=Жар-яОчМОца +item.ball_dynamite.name=ДОМаЌОт +item.ball_fireclay.name=КаЌПтМая глОМа +item.ball_resin.name=Латекс +item.ball_tatb.name=TATB +item.ball_tnt.name=ТНТ +item.ballistic_gauntlet.name=БаллОстОческая перчатка +item.ballistite.name=БаллОстОт item.bandaid.name=Пластырь Вельвет item.bathwater.name=ТПксОчМая ЌыльМая вПЎа item.bathwater_mk2.name=ТПксОчМая ЌыльМая вПЎа (ЛПшаЎОМый арПЌат) -item.horseshoe_magnet.name=МагМОт-пПЎкПва -item.industrial_magnet.name=ПрПЌышлеММый ЌагМОт -item.lodestone.name=МагМетОт -item.morning_glory.name=МПМОМ ГлПрО -item.quartz_plutonium.name=ПлутПМОческОй кварц -item.serum.name=СывПрПтка -item.spider_milk.name=Бутылка паучьегП ЌПлПка -item.scrumpy.name=Бутылка "СкраЌпО" -item.cladding_obsidian.name=ПрПклаЎка Оз ПбсОЎОаМа -item.cladding_ghiorsium.name=ПрПклаЎка Оз гОПрсОя -item.heart_booster.name=УсОлОтель серЎца -item.heart_container.name=КПМтейМер Ўля серЎца -item.heart_piece.name=ЧастОчка серЎца -item.heart_fab.name=Ѐаб-серЎце -item.back_tesla.name=РаМцевая катушка теслы -item.insert_du.name=УраМПвая пластОМа -item.insert_era.name=ВзрывППпасМая реактОвМая брПМепластОМа -item.insert_polonium.name=ППлПМОевая пластОМа -item.insert_ghiorsium.name=ГОПрсОевая пластОМа -item.insert_yharonite.name=ЯрПМОтПвая пластОМа -item.insert_doxium.name=АстПльфОй-легОрПваММая ДПксОевая пластОМа -item.wd40.name=VT-40 -item.injector_5htp.name=АвтПОМъектПр 5-гОЎрПксОтрОптПфаМа -item.injector_knife.name=АвтПОМъектПр 8 ЎюйЌПвПгП лезвОя -item.holotape_image.name=ГПлПЎОск -item.holotape_damaged.name=ППврежЎёММый гПлПЎОск - -item.wire_magnetized_tungsten.name=4000K ВысПкПтеЌпературМый прПвПЎМОк -item.coil_magnetized_tungsten.name=4000K ВысПкПтеЌпературМая сверхпрПвПЎящая катушка -item.plate_mixed.name=СЌешаММая пластОМа -item.plate_paa.name=ПластОМа сплава PaA -item.ingot_dura_steel.name=ВысПкПскПрПстМая сталь -item.ingot_polymer.name=ППлОЌер -item.ingot_rubber.name=РезОМа -item.ingot_biorubber.name=БрусПк латекса -item.ingot_polonium.name=СлОтПк пПлПМОя-210 -item.pipentm.name=Труба Оз %s -item.pipes_steel.name=СтальМые трубы -item.pipes_steel.desc=Раскрафт был ОсключеМ Оз-за уклПМеМОя Пт уплаты МалПгПв -item.drill_titanium.name=ТОтаМПвый бур -item.boltntm.name=СтержеМь Оз %s -item.bolt_spike.name=ЖелезМПЎПрПжМый гвПзЎь -item.bolt_spike.desc=Излучает угрПжающую ауру, как-тП -item.bolt_compound.name=УкреплеММый вал турбОМы -item.plate_polymer.name=ИзПлятПр -item.ingot_solinium.name=СПлОМОевый слОтПк -item.nugget_solinium.name=СПлОМОевый саЌПрПЎПк -item.photo_panel.name=ЀПтПэлектрОческая паМель -item.sat_base.name=ОсМПва спутМОка -item.thruster_nuclear.name=ЯЎерМый ракетМый ЎвОгатель LV-N -item.sat_head_mapper.name=ОптОческая каЌера с высПкОЌ кПэффОцОеМтПЌ усОлеМОя -item.sat_head_scanner.name=СкаМер M700 -item.sat_head_radar.name=РаЎар -item.sat_head_laser.name=Луч сЌертО -item.sat_head_resonator.name=ЗеМ-резПМатПр - -item.ingot_australium.name=АвстралОевый слОтПк -item.ingot_weidanium.name=ВейЎаМОевый слОтПк -item.ingot_reiium.name=РеОевый слОтПк -item.ingot_unobtainium.name=НеЎПстатОевый слОтПк -item.ingot_daffergon.name=ДаффергПМПвый слОтПк -item.ingot_verticium.name=ВертОцОевый слОтПк -item.nugget_australium.name=АвстралОевый саЌПрПЎПк -item.nugget_australium_greater.name=СаЌПрПЎПк высшегП австралОя -item.nugget_australium_lesser.name=СаЌПрПЎПк МОзшегП австралОя -item.nugget_weidanium.name=ВейЎаМОевый саЌПрПЎПк -item.nugget_reiium.name=РеОевый саЌПрПЎПк -item.nugget_unobtainium.name=НеЎПстатОевый саЌПрПЎПк -item.nugget_daffergon.name=ДаффергПМПвый саЌПрПЎПк -item.nugget_verticium.name=ВертОцОевый саЌПрПЎПк -item.nugget_zirconium.name=ОскПлПк цОркПМОя -item.nugget_niobium.name=СаЌПрПЎПк МОПбОя - -item.ingot_desh.name=СлОтПк Ўеш -item.nugget_desh.name=СаЌПрПЎПк Ўеш -item.powder_desh.name=ППрПшПк Ўеш -item.powder_desh_mix.name=СЌесь Ўеш -item.powder_desh_ready.name=ГПтПваяДеш™ сЌесь -item.powder_nitan_mix.name=НОтаМПвая сЌесь -item.powder_spark_mix.name=Спарк-сЌесь -item.powder_bismuth.name=ВОсЌутПвый пПрПшПк -item.powder_calcium.name=КальцОевый пПрПшПк -item.ingot_dineutronium.name=ДОМейтрПМОевый слОтПк -item.powder_dineutronium.name=ДОМейтрПМОевый пПрПшПк -item.nugget_dineutronium.name=ДОМетрПМОевый саЌПрПЎПк -item.ingot_starmetal.name=§9ЗвёзЎМый Ќеталл§r -item.ingot_saturnite.name=СатурМОтПвый слОтПк -item.plate_saturnite.name=СатурМОтПвая пластОМа -item.ingot_electronium.name=ЭлектрПМОевый слОтПк -item.ingot_fiberglass.name=СтеклПвПлПкМП -item.ingot_fiberglass.desc=С высПкОЌ сПЎержаМОеЌ вПлПкМа, с высПкОЌ сПЎержаМОеЌ стекла. Все, чтП МужМП ПргаМОзЌу. -item.ingot_asbestos.name=АсбестПвый лОст -item.ingot_asbestos.desc=§o"НапПлМеММый жОзМью, МеувереММПстью в себе О асбестПЌ. ЭтП прОхПЎОт вЌесте с вПзЎухПЌ."§r -item.ingot_arsenic.name=СлОтПк Ќышьяка -item.nugget_arsenic.name=СаЌПрПЎПк Ќышьяка -item.ingot_arsenic_bronze.name=СлОтПк ЌышьякПвПй брПМзы - -item.solid_fuel.name=ТверЎПе тПплОвП -item.solid_fuel_bf.name=ТверЎПе тПплОвП (Жар-плаЌя) -item.solid_fuel_presto.name=ТПплОвМПе пПлеМП -item.solid_fuel_presto_bf.name=ТПплОвМПе пПлеМП (Жар-плаЌя) -item.solid_fuel_presto_triplet.name=Сжатые тПплОвМые пПлеМа -item.solid_fuel_presto_triplet_bf.name=Сжатые тПплОвМые пПлеМа (Жар-плаЌя) -item.stick_dynamite.name=ДОМаЌОтМая шашка -item.stick_dynamite_fishing.name=ДОМаЌОтМая шашка Ўля рыбалкО -item.stick_tnt.name=Кашка ТНТ -item.stick_c4.name=Кашка C-4 -item.stick_semtex.name=Кашка сеЌтекса -item.rocket_fuel.name=ТверЎПе тПплОвП (РакетМПе) -item.coke.coal.name=УгПльМый кПкс -item.coke.lignite.name=Бурый кПкс -item.coke.petroleum.name=НефтяМПй кПкс -item.lignite.name=Бурый угПль -item.coal_infernal.name=АЎскОй угПль -item.briquette.lignite.name=БрОкет бурПгП угля -item.briquette.coal.name=БрОкет угля -item.briquette.wood.name=БрОкет ЎревесМых ПпОлПк -item.powder_lignite.name=ППрПшПк бурПгП угля - -item.nugget_th232.name=СаЌПрПЎПк тПрОя-232 -item.nugget_u233.name=СаЌПрПЎПк ураМа-233 -item.nugget_u235.name=СаЌПрПЎПк ураМа-235 -item.nugget_u238.name=СаЌПрПЎПк ураМа-238 -item.nugget_pu_mix.name=СаЌПрПЎПк плутПМОя реактПрМПгП качества -item.nugget_pu238.name=СаЌПрПЎПк плутПМОя-238 -item.nugget_pu239.name=СаЌПрПЎПк плутПМОя-239 -item.nugget_pu240.name=СаЌПрПЎПк плутПМОя-240 -item.nugget_pu241.name=СаЌПрПЎПк плутПМОя-241 -item.nugget_au198.name=СаЌПрПЎПк зПлПта-198 -item.nugget_co60.name=СаЌПрПЎПк кПбальта-60 -item.nugget_ra226.name=СаЌПрПЎПк раЎОя-226 -item.nugget_technetium.name=СаЌПрПЎПк техМецОя-99 -item.nugget_am_mix.name=СаЌПрПЎПк аЌерОцОя реактПрМПгП качества -item.nugget_am241.name=СаЌПрПЎПк аЌерОцОя-241 -item.nugget_am242.name=СаЌПрПЎПк аЌерОцОя-242 -item.nugget_americium_fuel.name=СаЌПрПЎПк аЌерОцОевПгП тПплОва -item.nugget_cobalt.name=КПбальтПвый саЌПрПЎПк -item.nugget_sr90.name=СаЌПрПЎПк стрПМцОя-90 -item.nugget_pb209.name=СаЌПрПЎПк свОМца-209 -item.nugget_actinium.name=СаЌПрПЎПк актОМОя-227 -item.nugget_gh336.name=СаЌПрПЎПк гОПрсОя-336 -item.nugget_gh336.desc=КПллега СОбПргОуЌа. - -item.plate_titanium.name=ТОтаМПвая пластОМа -item.plate_aluminium.name=АлюЌОМОевая пластОМа -item.wire_red_copper.name=ПрПвПЎ Оз красМПй ЌеЎО -item.neutron_reflector.name=Отражатель МейтрПМПв -item.nugget_beryllium.name=БерОллОевый саЌПрПЎПк -item.nugget_bismuth.name=СаЌПрПЎПк вОсЌута -item.nugget_tantalium.name=СаЌПрПЎПк таМтала -item.nugget_tantalium.desc='ТаМталуЌ' -item.nugget_tantalium.desc.P11=АКА ТаМталОй. -item.nugget_osmiridium.name=СаЌПрПЎПк ПсЌОрОЎОя - -item.crystal_iron.name=КрОсталлОзПваММПе железП -item.crystal_gold.name=КрОсталлОзПваММПе зПлПтП -item.crystal_redstone.name=КрОсталлОзПваММая красМая пыль -item.crystal_diamond.name=КрОсталОзПваММый алЌаз -item.crystal_uranium.name=КрОсталлОзПваММый ураМ -item.crystal_thorium.name=КрОсталлОзПваММый тПрОй -item.crystal_plutonium.name=КрОсталлОзПваММый плутПМОй -item.crystal_titanium.name=КрОсталлОзПваММый тОтаМ -item.crystal_sulfur.name=КрОсталлОзПваММая сера -item.crystal_niter.name=КрОсталлОзПваММая селОтра -item.crystal_copper.name=КрОсталлОзПваММая ЌеЎь -item.crystal_tungsten.name=КрОсталлОзПваММый вПльфраЌ -item.crystal_aluminium.name=КрОсталлОзПваММый алюЌОМОй -item.crystal_fluorite.name=КрОсталлОзПваММый флюПрОт -item.crystal_beryllium.name=КрОсталлОзПваММый берОллОй -item.crystal_lead.name=КрОсталлОзПваММый свОМец -item.crystal_schraranium.name=КрОсталлОзПваММый шрараМОй -item.crystal_schrabidium.name=КрОсталлОзПваММый шрабОЎОй -item.crystal_rare.name=КрОсталОзПваММые лаМтаМПОЎы -item.crystal_phosphorus.name=КрОсталлОзПваММый фПсфПр -item.crystal_lithium.name=КрОсталОзПваММый лОтОй -item.crystal_starmetal.name=КрОсталОзПваММый звёзЎМый Ќеталл -item.crystal_trixite.name=КрОсталлОзПваММый трОксОт -item.crystal_coal.name=КрОсталлОзПваММый угПль -item.crystal_cinnebar.name=КрОсталлОзПваММая кОМПварь -item.crystal_lapis.name=КрОсталОзПваММый лазурОт -item.ingot_cft.name=КрОсталлОческОй фуллерОт -item.gem_tantalium.name=ППлОкрОсталл таМтала -item.gem_tantalium.desc='ТаМталуЌ' -item.gem_tantalium.desc.P11=АКА ТаМталОй. -item.gem_alexandrite.name=АлексаМЎрОт -item.gem_volcanic.name=ВулкаМОческОй саЌПцвет -item.gem_rad.name=РаЎОПактОвМый саЌПцвет -item.gem_sodalite.name=СПЎалОт -item.black_diamond.name=ЧёрМый алЌаз -item.crystal_cobalt.name=КрОсталОзПваММый кПбальт -item.crystal_osmiridium.name=КрОсталОзПваММый ПсЌОрОЎОй -item.laser_crystal_bismuth.desc=ВОсЌут-СаЌарОй-УраМ-ТПрОевая крОсталлОческая ЌатрОца -item.laser_crystal_bismuth.name=ВОсЌутПвый лазерМый крОсталл -item.laser_crystal_cmb.desc=АМтОшрабОЎОй, заключеММый в решётку Оз сплава КрабОЎата О сталО АльяМса -item.laser_crystal_cmb.name=CMB-КрабОЎатПвый аМтОЌатерОальМый лазерМый крОсталл -item.laser_crystal_co2.desc=ДвуПкОсь углерПЎа, заключеММая в крОсталлОческОй Деш -item.laser_crystal_co2.name=CO2-Деш лазерМый крОсталл -item.laser_crystal_digamma.name=ДОгаЌЌа-лазерМый крОсталл -item.laser_crystal_dnt.desc=ДОМейтрПМОевый-Спарк ферЌОПММый суперкрОсталл -item.laser_crystal_dnt.name=Спарк-лазерМый крОсталл - -item.wire_aluminium.name=АлюЌОМОевый прПвПЎ -item.wire_copper.name=МеЎМый прПвПЎ -item.wire_gold.name=ЗПлПтПй прПвПЎ -item.wire_schrabidium.name=КрабОЎОевый прПвПЎ -item.wire_dense.name=ПлПтМый прПвПЎ Оз %s -item.wire_fine.name=ПрПвПЎ Оз %s -item.circuit_raw.name=СбПрка прПстПй ЌОкрПсхеЌы -item.circuit_bismuth_raw.name=СбПрка уМОверсальМПгП чОпсета -item.circuit_arsenic_raw.name=СбПрка гОбкПй ЌОкрПсхеЌы -item.circuit_tantalium_raw.name=СбПрка кПМЎеМсатПрМПй платы -item.circuit_aluminium.name=ПрПстая ЌОкрПсхеЌа -item.circuit_copper.name=ПрПЎвОМутая ЌОкрПсхеЌа -item.circuit_red_copper.name=УсПвершеМствПваММая ЌОкрПсхеЌа -item.circuit_gold.name=РазПгМаММая ЌОкрПсхеЌа -item.circuit_schrabidium.name=ВысПкПпрПОзвПЎОтельМая ЌОкрПсхеЌа -item.circuit_bismuth.name=УМОверсальМый чОпсет -item.circuit_arsenic.name=ГОбкая ЌОкрПсхеЌа -item.circuit_tantalium.name=КПМЎеМсатПрМая плата -item.circuit_targeting_tier1.name=ПечатМая плата вПеММПгП класса (УрПвеМь 1) -item.circuit_targeting_tier2.name=ПечатМая плата вПеММПгП класса (УрПвеМь 2) -item.circuit_targeting_tier3.name=ПечатМая плата вПеММПгП класса (УрПвеМь 3) -item.circuit_targeting_tier4.name=ПечатМая плата вПеММПгП класса (УрПвеМь 4) -item.circuit_targeting_tier5.name=ПечатМая плата вПеММПгП класса (УрПвеМь 5) -item.circuit_targeting_tier6.name=ПечатМая плата вПеММПгП класса (УрПвеМь 6) -item.circuit_star.name=МатерОМская плата ЗвёзЎМПгП ДОспетчера -item.circuit_star.desc=Не ОспПльзуется сейчас Оз-за ПтсутствОя ПперацОПММПй сОстеЌы. -item.circuit_star_component.chipset.name=ЧОпсет ЗвёзЎМПгП ДОспетчера -item.circuit_star_component.cpu.name=ПрПцессПр ЗвёзЎМПгП ДОспетчера -item.circuit_star_component.ram.name=ОператОвМая паЌять ЗвёзЎМПгП ДОспетчера -item.circuit_star_component.card.name=Карта расшОреМОя ЗвёзЎМПгП ДОспетчера -item.circuit_star_piece.board_converter.name=ЗД - ПреПбразПватель МапряжеМОя -item.circuit_star_piece.card_board.name=ЗД - Плата карты расшОреМОя -item.circuit_star_piece.card_processor.name=ЗД - ПрПцессПр платы расшОреМОя -item.circuit_star_piece.board_blank.name=ЗД - ПечатМая плата -item.circuit_star_piece.board_transistor.name=ЗД - ТраМзОстПры -item.circuit_star_piece.bridge_bios.name=ЗД - ЧОп БИОС -item.circuit_star_piece.bridge_bus.name=ЗД - КОМа -item.circuit_star_piece.bridge_chipset.name=ЗД - ЧОпсет -item.circuit_star_piece.bridge_cmos.name=ЗД - ПаЌять БИОС -item.circuit_star_piece.bridge_io.name=ЗД - ЧОп ВвПЎа/ВывПЎа -item.circuit_star_piece.bridge_north.name=ЗД - СеверМый ЌПст -item.circuit_star_piece.bridge_south.name=ЗД - ЮжМый ЌПст -item.circuit_star_piece.cpu_cache.name=ЗД - Кэш прПцессПра -item.circuit_star_piece.cpu_clock.name=ЗД - Часы прПцессПра -item.circuit_star_piece.cpu_ext.name=ЗД - МышьякПвый пПлупрПвПЎМОкПвый расшОрОтель -item.circuit_star_piece.cpu_logic.name=ЗД - АрОфЌетОкП-лПгОческПе устрПйствП -item.circuit_star_piece.cpu_register.name=ЗД - РегОстр прПцессПра -item.circuit_star_piece.cpu_socket.name=ЗД - РазъеЌ Ўля прПцессПра -item.circuit_star_piece.mem_socket.name=ЗД - РазъеЌ Ўля паЌятО -item.circuit_star_piece.mem_16k_a.name=ЗД - СлПт Ўля карты ПаЌятО 16k A -item.circuit_star_piece.mem_16k_b.name=ЗД - СлПт Ўля карты ПаЌятО 16k B -item.circuit_star_piece.mem_16k_c.name=ЗД - СлПт Ўля карты ПаЌятО 16k C -item.circuit_star_piece.mem_16k_d.name=ЗД - СлПт Ўля карты ПаЌятО 16k D -item.circuit.advanced.name=ВПеММая ЌОкрПсхеЌа -item.circuit.analog.name=АМалПгПвая плата -item.circuit.basic.name=ИМтегральМая схеЌа -item.circuit.bismoid.name=ПереЎПвая ЌОкрПсхеЌа -item.circuit.capacitor.name=КПМЎеМсатПр -item.circuit.capacitor_board.name=КПМЎеМсатПрМая плата -item.circuit.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр -item.circuit.chip.name=МОкрПчОп -item.circuit.chip_bismoid.name=ПереЎПвПй ОМтегральМый ЌОкрПчОп -item.circuit.pcb.name=ПечатМая плата -item.circuit.silicon.name=ПечатМая креЌМОевая пластОМа -item.circuit.vacuum_tube.name=ВакууЌМая трубка -item.circuit.atomic_clock.name=АтПЌМые часы -item.circuit.chip_quantum.name=ТверЎПтельМый кваМтПвый прПцессПр -item.circuit.controller_quantum.name=КваМтПвый кПЌпьютер -item.circuit.quantum.name=УстрПйствП кваМтПвПй ПбрабПткО -item.mechanism_revolver_1.name=РевПльверМый ЌехаМОзЌ -item.mechanism_revolver_2.name=УсПвершеМствПваММый ревПльверМый ЌехаМОзЌ -item.mechanism_rifle_1.name=ВОМтПвПчМый ЌехаМОзЌ -item.mechanism_rifle_2.name=УсПвершеМствПваММый вОМтПвПчМый ЌехаМОзЌ -item.mechanism_launcher_1.name=МехаМОзЌ запуска -item.mechanism_launcher_2.name=УсПвершеМствПваММый ЌехаМОзЌ запуска -item.mechanism_special.name=МехаМОзЌ высПкПтехМПлПгОчМПгП ПружОя -item.circuit.controller.name=БлПк управлеМОя -item.circuit.controller_advanced.name=ПрПЎвОМутый блПк управлеМОя -item.circuit.controller_chassis.name=КПрпус блПка управлеМОя -item.item_secret.canister.name=КПЌпПзОт SB-26 -item.item_secret.controller.name=ПрПпрОетарМый блПк управлеМОя - -item.primer_357.name=КапсюлО МагМуЌа .357 (x24) -item.primer_44.name=КапсюлО МагМуЌа .44 (x24) -item.primer_9.name=МалПкалОберМые КапсюлО (x32) -item.primer_50.name=КрупМПкалОберМые КапсюлО (x12) -item.primer_buckshot.name=КартечМые КапсюлО (x12) -item.casing_357.name=ГОльза МагМуЌа .357(x24) -item.casing_44.name=ГОльза МагМуЌа .44 (x24) -item.casing_9.name=МалПкалОберМая ГОльза (x32) -item.casing_50.name=КрупМПкалОберМая ГОльза (x12) -item.casing_buckshot.name=КартечМая ГОльза (x12) -item.assembly_iron.name=СбПрка железМПй пулО -item.assembly_steel.name=СбПрка свОМцПвПй пулО -item.assembly_lead.name=СбПрка стекляММПй пулО -item.assembly_gold.name=СбПрка зПлПтПй пулО -item.assembly_schrabidium.name=СбПрка шрабОЎОевПй пулО -item.assembly_nightmare.name=СбПрка кПшЌарМПй пулО -item.assembly_desh.name=СбПрка Ўеш-пулО -item.assembly_pip.name=СбПрка заражеММПй пулО -item.assembly_nopip.name=СбПрка пулО МагМуЌа .44 -item.assembly_762.name=СбПрка 7.62ЌЌ патрПМа -item.assembly_luna.name=СбПрка луММПгП сМайперскПгП патрПМа -item.assembly_45.name=СбПрка пулО .45 ACP -item.assembly_smg.name=СбПрка 9-ЌЌ пулО -item.assembly_556.name=СбПрка 5.56ЌЌ пулО -item.assembly_uzi.name=СбПрка .22 LR пулО -item.assembly_actionexpress.name=СбПрка .50 AE пулО -item.assembly_calamity.name=СбПрка .50 BMG пулО -item.assembly_lacunae.name=СбПрка 5ЌЌ пулО - -item.piston_selenium.name=ППршеМь ЎвОгателя вМутреММегП сгПраМОя -item.piston_set_desh.name=НабПр Ўеш-пПршМей -item.piston_set_dura.name=НабПр пПршМей Оз высПкПскПрПстМПй сталО -item.piston_set_starmetal.name=НабПр пПршМей Оз звёзЎМПгП Ќеталла -item.piston_set_steel.name=НабПр стальМых пПршМей - -tile.block_aluminium.name=АлюЌОМОевый блПк -tile.block_copper.name=МеЎМый блПк -tile.block_fluorite.name=ЀлюПрОтПвый блПк -tile.block_niter.name=БлПк селОтры -tile.block_niter_reinforced.name=УкреплеММый блПк селОтры -tile.block_red_copper.name=БлПк красМПй ЌеЎО -tile.block_steel.name=СтальМПй блПк -tile.block_sulfur.name=БлПк серы -tile.sulfuric_acid_block.name=СерМая кОслПта -tile.block_titanium.name=ТОтаМПвый блПк -tile.block_tungsten.name=ВПльфраЌПвый блПк -tile.block_uranium.name=УраМПвый блПк -tile.block_thorium.name=ТПрОевый блПк -tile.block_trinitite.name=ТрОМОтОтПвый блПк -tile.block_beryllium.name=БерОллОевый блПк -tile.block_waste.name=БлПк яЎерМых ПтхПЎПв -tile.block_waste_vitrified.name=БлПк ПстеклПваММых яЎерМых ПтхПЎПв -tile.block_fallout.name=БлПк раЎОПактОвМых ПсаЎкПв -tile.fallout.name=РаЎОПактОвМый ПсаЎПк -tile.ash_digamma.name=Пепел -item.powder_cement.name=ЊеЌеМт -item.powder_limestone.name=ИзвестМякПвый пПрПшПк -item.powder_ash.coal.name=УгПльМая зПла -item.powder_ash.fly.name=Летучая зПла -item.powder_ash.misc.name=Пепел -item.powder_ash.soot.name=Мелкая сажа -item.powder_ash.wood.name=ДревесМая зПла -item.powder_ash.fullerene.name=ЀуллереМ -tile.glass_ash.name=ПепельМПе стеклП -tile.fire_digamma.name=ЗатяжМая ДОгаЌЌа -tile.balefire.name=Жар-плаЌя -tile.block_waste_painted.name=ППкрашеММый блПк яЎерМых ПтхПЎПв -tile.block_scrap.name=БлПк ЌеталлПлПЌа -tile.block_slag.name=БлПк шлака -tile.oil_spill.name=РазлОтая Мефть -tile.pribris.name=ОблПЌкО РБМК -tile.pribris_digamma.name=ППчерМевшОе ПблПЌкО РБМК -tile.pribris_burning.name=ГПрящОе ПблПЌкО РБМК -tile.pribris_radiating.name=ТлеющОе ПблПЌкО РБМК -tile.ancient_scrap.name=ДревМОе ПблПЌкО -tile.block_electrical_scrap.name=БлПк ПтхПЎПв электрПМОкО -tile.block_advanced_alloy.name=БлПк прПЎвОМутПгП сплава -tile.block_magnetized_tungsten.name=БлПк МаЌагМОчеММПгП вПльфраЌа -tile.block_combine_steel.name=БлПк сталО альяМса -tile.block_australium.name=АвстралОевый блПк -tile.block_weidanium.name=ВейЎаМОевый блПк -tile.block_reiium.name=РеОевый блПк -tile.block_unobtainium.name=НеЎПстатОевый блПк -tile.block_daffergon.name=ДаффергПМПвый блПк -tile.block_verticium.name=ВертОцОевый блПк -tile.block_desh.name=УкреплеММый блПк Ўеш -tile.block_dura_steel.name=УкреплеММый блПк высПкПскПрПстМПй сталО -tile.block_yellowcake.name=БлПк йеллПукейка -tile.block_starmetal.name=§9БлПк звёзЎМПгП Ќеталла§r -tile.block_dineutronium.name=БлПк ЎОМейтрПМОя -tile.block_insulator.name=РулПМ ОзПлятПра -tile.block_fiberglass.name=РулПМ стеклПвПлПкМа -tile.block_asbestos.name=Асбест -tile.brick_asbestos.name=АсбестПвые кОрпОчО -tile.brick_fire.name=КаЌПтМые кОрпОчО -tile.block_cobalt.name=КПбальтПвый блПк -tile.block_lithium.name=ЛОтОевый блПк -tile.block_white_phosphorus.name=БлПк белПгП фПсфПра -tile.block_red_phosphorus.name=БлПк красМПгП фПсфПра -tile.block_actinium.name=БлПк актОМОя -tile.block_lanthanium.name=БлПк лаМтаМОя -tile.block_boron.name=БлПк бПра -tile.block_graphite.name=БлПк графОта -tile.block_zirconium.name=БлПк цОркПМОя -tile.block_bismuth.name=БлПк вОсЌута -tile.block_coltan.name=БлПк кПлтаМа -tile.block_tantalium.name=БлПк таМтала -tile.block_semtex.name=БлПк сеЌтекса -tile.semtex.name=СеЌтекс -tile.block_c4.name=БлПк C-4 -tile.c4.name=C-4 -tile.block_smore.name=БлПк с'ЌПра -tile.block_niobium.name=БлПк МОПбОя -tile.block_bakelite.name=БлПк бакелОта -tile.block_rubber.name=БлПк резОМы -tile.block_cadmium.name=КаЎЌОевый блПк -tile.block_cdalloy.name=БлПк каЎЌОевПй сталО -tile.block_tcalloy.name=БлПк техМецОевПй сталО - -tile.block_ra226.name=БлПк раЎОя-226 -tile.block_u233.name=БлПк ураМа-233 -tile.block_u235.name=БлПк ураМа-235 -tile.block_u238.name=БлПк ураМа-238 -tile.block_neptunium.name=НептуМОевый блПк -tile.block_uranium_fuel.name=БлПк ураМПвПгП тПплОва -tile.block_mox_fuel.name=БлПк МОКС тПплОва -tile.block_plutonium.name=ПлутПМОевый блПк -tile.block_pu_mix.name=БлПк плутПМОя реактПрМПгП качества -tile.block_pu238.name=БлПк плутПМОя-238 -tile.block_pu239.name=БлПк плутПМОя-239 -tile.block_pu240.name=БлПк плутПМОя-240 -tile.block_plutonium_fuel.name=БлПк плутПМОевПгП тПплОва -tile.block_polonium.name=БлПк пПлПМОя-210 -tile.block_thorium_fuel.name=БлПк тПрОевПгП тПплОва -tile.block_solinium.name=СПлОМОевый блПк -tile.block_schrabidium_fuel.name=БлПк шрабОЎОевПгП тПплОва - -tile.ore_asbestos.name=АсбестПвая руЎа -tile.ore_aluminium.name=АлюЌОМОевая руЎа -tile.ore_copper.name=МеЎМая руЎа -tile.ore_fluorite.name=ЀлюПрОт -tile.ore_niter.name=СелОтра -tile.ore_sulfur.name=Сера -tile.ore_titanium.name=ТОтаМПвая руЎа -tile.ore_tungsten.name=ВПльфраЌПвая РуЎа -tile.ore_uranium.name=УраМПвая руЎа -tile.ore_uranium_scorched.name=ОбПжжеММая ураМПвая руЎа -tile.ore_thorium.name=ТПрОй -tile.ore_schrabidium.name=КрабОЎОевая руЎа -tile.ore_beryllium.name=БерОллОевая руЎа -tile.ore_lignite.name=Бурый угПль -tile.ore_coal_oil.name=МасляМОстая угПльМая руЎа -tile.ore_coal_oil_burning.name=ГПрящая ЌасляМОстая угПльМая руЎа -tile.ore_gneiss_asbestos.name=СлаМцевая асбестПвая руЎа -tile.ore_gneiss_copper.name=СлаМцевая ЌеЎМая руЎа -tile.ore_gneiss_gold.name=СлаМцевая зПлПтая руЎа -tile.ore_gneiss_iron.name=СлаМцевая железМая руЎа -tile.ore_gneiss_gas.name=СлаМцевый газ -tile.ore_gneiss_lithium.name=СлаМцевая лОтОевая руЎа -tile.ore_gneiss_rare.name=СлаМцевая реЎкПзеЌельМая руЎа -tile.ore_gneiss_schrabidium.name=СлаМцевая шрабОЎОевая руЎа -tile.ore_gneiss_uranium.name=СлаМцевая ураМПвая руЎа -tile.ore_gneiss_uranium_scorched.name=ОбПжёММая слаМцевая ураМПвая руЎа -tile.ore_nether_uranium.name=АЎская ураМПвая руЎа -tile.ore_nether_uranium_scorched.name=ОбПжёММая аЎская ураМПвая руЎа -tile.ore_nether_plutonium.name=АЎская плутПМОевая руЎа -tile.ore_nether_tungsten.name=АЎская вПльфраЌПвая руЎа -tile.ore_nether_sulfur.name=АЎская серМая руЎа -tile.ore_nether_fire.name=АЎская фПсфПрМая руЎа -tile.ore_nether_schrabidium.name=АЎская шрабОЎОевая руЎа -tile.ore_nether_cobalt.name=АЎская кПбальтПвая руЎа -tile.ore_nether_coal.name=ГПрящая руЎа аЎскПгП угля -tile.ore_nether_smoldering.name=ТлеющОй аЎскОй каЌеМь -tile.ore_meteor.aluminium.name=МетеПрОтМая алюЌОМОевая руЎа -tile.ore_meteor.copper.name=МетеПрОтМая ЌеЎМая руЎа -tile.ore_meteor.cobalt.name=МетеПрОтМая кПбальтПвая руЎа -tile.ore_meteor.iron.name=МетеПрОтМая железМая руЎа -tile.ore_meteor.rareearth.name=МетеПрОтМая реЎкПзеЌельМая руЎа -tile.ore_meteor_sulfur.name=МетеПрОтМая серМая руЎа -tile.ore_meteor_titanium.name=МетеПрОтМая тОтаМПвая руЎа -tile.ore_meteor_tungsten.name=МетеПрОтМая вПльфраЌПвая руЎа -tile.ore_meteor_uranium.name=МетеПрОтМая ураМПвая руЎа -tile.ore_meteor_thorium.name=МетеПрОтМая тПрОевая руЎа -tile.ore_meteor_lead.name=МетеПрОтМая свОМцПвая руЎа -tile.ore_meteor_lithium.name=МетеПрОтМая лОтОевая руЎа -tile.ore_meteor_starmetal.name=РуЎа звёзЎМПгП Ќеталла -tile.ore_alexandrite.name=АлексаМЎрОтПвая руЎа -tile.ore_tikite.name=ТрОксОт -tile.ore_australium.name=АвстралОевая руЎа -tile.ore_weidanium.name=ВейЎОтОт -tile.ore_reiium.name=РеООт -tile.ore_unobtainium.name=БрайтблеМЎ -tile.ore_daffergon.name=ДеллОт -tile.ore_verticium.name=ДПлларПвый ЗелёМый ЌОМерал -tile.ore_rare.name=РеЎкПзеЌельМая руЎа -item.chunk_ore.rare.name=КусПк реЎкПзеЌельМПй руЎы -tile.ore_oil.name=НефтяМПй карЌаМ -tile.ore_oil_empty.name=ПустПй МефтяМПй карЌаМ -tile.ore_oil_sand.name=БОтуЌПзМый песПк -tile.sand_dirty.name=ПрПпОтаММый Мефтью песПк -tile.sand_dirty_red.name=ПрПпОтаММый Мефтью красМый песПк -tile.cluster_aluminium.name=АлюЌОМОевый руЎМый кластер -tile.cluster_copper.name=МеЎМый руЎМый кластер -tile.cluster_depth_iron.name=ГлубОММый железПруЎМый кластер -tile.cluster_depth_titanium.name=ГлубОММый тОтаМПвый руЎМый кластер -tile.cluster_depth_tungsten.name=ГлубОММый вПльфраЌПвый руЎМый кластер -tile.ore_depth_cinnebar.name=ГлубОММая кОМПварь -tile.ore_depth_zirconium.name=ГлубОММая цОркПМОевая руЎа -tile.ore_depth_borax.name=ГлубОММая бура -tile.ore_depth_nether_neodymium.name=АЎская глубОММая МеПЎОЌПвая руЎа -tile.cluster_iron.name=ЖелезПруЎМый кластер -tile.cluster_titanium.name=ТОтаМПвый руЎМый кластер -tile.ore_cinnebar.name=КОМПварь -tile.ore_coltan.name=КПлтаМПвая руЎа -tile.ore_bedrock_coltan.name=БеЎрПкПвая кПлтаМПвая руЎа -tile.ore_bedrock_oil.name=БеЎрПкПвый МефтяМПй пласт -tile.ore_cobalt.name=КПбальтПвая руЎа -tile.stone_porous.name=ППрОстый каЌеМь -tile.ore_random.name=РуЎа %s -tile.ore_bedrock.name=БеЎрПкПвая руЎа -tile.ore_sellafield_diamond.name=СеллафОтПвая алЌазМая руЎа -tile.ore_sellafield_emerald.name=СеллафОтПвая ОзуЌруЎМая руЎа -tile.ore_sellafield_schrabidium.name=СеллафОтПвая шрабОЎОевая руЎа -tile.ore_sellafield_uranium_scorched.name=ОбПжжеММая селлафОтПвая ураМПвая руЎа -tile.ore_sellafield_radgem.name=СеллафОтПвый раЎОПактОвМый саЌПцвет - -item.ore.asbestos=АсбестПвая -item.ore.borax=БурПвая -item.ore.chlorocalcite=ХлПркальцОтПвая -item.ore.copper=МеЎМая -item.ore.fluorite=ЀлюПрОтМая -item.ore.gold=ЗПлПтая -item.ore.hematite=ГеЌатОтПвая -item.ore.iron=ЖелезМая -item.ore.malachite=МалахОтПвая -item.ore.neodymium=НеПЎОЌПвая -item.ore.niobium=НОПбОевая -item.ore.titanium=ТОтаМПвая -item.ore.tungsten=ВПльфраЌПвая -item.ore.thorium232=ТПрОевая -item.ore.uranium=УраМПвая -item.bedrock_ore_base.name=НеПбрабПтаММая беЎрПкПвая руЎа +item.battery_advanced.name=ПрПЎвОМутый аккуЌулятПр +item.battery_advanced_cell.name=УсПвершеМствПваММая эМергПячейка +item.battery_advanced_cell_12.name=ДвеМаЎцатОкратМый ЌассОв Оз усПвершеМствПваММых эМергПячеек +item.battery_advanced_cell_4.name=СчетверёММая усПвершеМствПваММая эМергПячейка +item.battery_creative.name=БескПМечМая батарейка +item.battery_generic.name=АккуЌулятПр +item.battery_lithium.name=ЛОтОй-ОПММый аккуЌулятПр +item.battery_lithium_cell.name=ЛОтОй-ОПММая эМергПячейка +item.battery_lithium_cell_3.name=СтрПеММая лОтОй-ОПММая эМергПячейка +item.battery_lithium_cell_6.name=СшестерёММая лОтОй-ОПММая эМергПячейка +item.battery_potato.name=КартПфельМая батарейка +item.battery_potatos.name=КартПшкОС +item.battery_red_cell.name=ЭМергПячейка Оз красМПй пылО +item.battery_red_cell_24.name=ДваЎцатОчетырёхкратМый ЌассОв Оз красМПпыльМых эМергПячеек +item.battery_red_cell_6.name=СшестёреММая эМергПячейка Оз красМПй пылО +item.battery_sc_americium.name=СаЌПзаряжающаяся батарея с аЌерОцОеЌ-241 +item.battery_sc_gold.name=СаЌПзаряжающаяся батарея с зПлПтПЌ-198 +item.battery_sc_lead.name=СаЌПзаряжающаяся батарея сП свОМцПЌ-209 +item.battery_sc_plutonium.name=СаЌПзаряжающаяся батарея с плутПМОеЌ-238 +item.battery_sc_polonium.name=СаЌПзаряжающаяся батарея с пПлПМОеЌ-210 +item.battery_sc_technetium.name=СаЌПзаряжающаяся батарея с техМецОеЌ-98 +item.battery_sc_uranium.name=СаЌПзаряжающаяся батарея с ураМПЌ-238 +item.battery_schrabidium.name=КрабОЎОевая батарея +item.battery_schrabidium_cell.name=КрабОЎОевая эМергПячейка +item.battery_schrabidium_cell_2.name=СЎвПеММая шрабОЎОевая эМергПячейка +item.battery_schrabidium_cell_4.name=СчетверёММая шрабОЎОевая эМергПячейка +item.battery_spark.name=Спарк-батарея +item.battery_spark_cell_100.name=Спарк-МагОческОй ЌассОв храМеМОя эМергОО +item.battery_spark_cell_1000.name=Спарк-МагОческая Ќасс-эМергетОческая пустПта +item.battery_spark_cell_10000.name=УстПйчОвый прПстраМствеММП-вреЌеММПй спарк-крОсталл +item.battery_spark_cell_25.name=Спарк-МагОческОй аккуЌулятПр +item.battery_spark_cell_2500.name=Спарк-МагОческПе ЌПре ДОрака +item.battery_spark_cell_6.name=Спарк-эМергПячейка +item.battery_spark_cell_power.name=АбсурЎМый фОзОческОй спарк-блПк МакПплеМОя эМергОО +item.battery_steam.name=ПарПвПй бак Ўля храМеМОя эМергОО +item.battery_steam_large.name=БПльшПй парПвПй бак Ўля храМеМОя эМергОО +item.battery_su.name=ОЎМПразПвая батарейка +item.battery_su_l.name=БПльшая ПЎМПразПвая батарейка +item.battery_trixite.name=БезыЌяММая спарк-батарея +item.bdcl.name=BDCL item.bedrock_ore.grade.base.name=%s беЎрПкПвая руЎа item.bedrock_ore.grade.base_roasted.name=ОбПжжеММая %s беЎрПкПвая руЎа item.bedrock_ore.grade.base_washed.name=ПрПЌытая %s беЎрПкПвая руЎа @@ -3472,13 +2176,6 @@ item.bedrock_ore.grade.rad_byproduct.name=%s беЎрПкПвая руЎа, Оч item.bedrock_ore.grade.rad_roasted.name=%s беЎрПкПвая руЎа, ОбПжжеММая ПчОщеММая пПбПчка item.bedrock_ore.grade.rad_arc.name=%s беЎрПкПвая руЎа, ПереплавлеММая ПчОщеММая пПбПчка item.bedrock_ore.grade.rad_washed.name=%s беЎрПкПвая руЎа, ПрПЌытая ПчОщеММая пПбПчка -item.bedrock_ore_fragment.name=ЀрагЌеМт Пт %s руЎа -item.bedrock_ore.type.actinide.name=АктОМОЎМая -item.bedrock_ore.type.crystal.name=КрОсталлОческая -item.bedrock_ore.type.heavy.name=Тяжелая ЌеталлОческая -item.bedrock_ore.type.light.name=Легкая ЌеталлОческая -item.bedrock_ore.type.nonmetal.name=НеЌеталлОческая -item.bedrock_ore.type.rare.name=РеЎкПзеЌельМая item.bedrock_ore.trait.arc=§6ДугПвая плавка item.bedrock_ore.trait.centrifuged=§9ЊеМтрОфугОрПваММый item.bedrock_ore.trait.rad=§aОбрабПтаММый высПкПэффектОвМыЌ раствПрОтелеЌ @@ -3486,697 +2183,1945 @@ item.bedrock_ore.trait.roasted=§eОбжОг в кПксПвПй печО item.bedrock_ore.trait.solvent=§fОбрабПтаММый раствПрОтелеЌ item.bedrock_ore.trait.sulfuric=§6ОбрабПтаММый серМПй кОслПтПй item.bedrock_ore.trait.washed=§bПрПЌытый в ПкОслОтеле вПЎПй -item.ore_bedrock.name=%s беЎрПкПвая руЎа -item.ore_centrifuged.name=ЊеМтрОфугОрПваММая %s беЎрПкПвая руЎа -item.ore_cleaned.name=ОчОщеММая %s беЎрПкПвая руЎа -item.ore_deepcleaned.name=ГлубПкП ПчОщеММая %s беЎрПкПвая руЎа -item.ore_enriched.name=ОбПгащёММая %s беЎрПкПвая руЎа -item.ore_nitrated.name=АзПтОрПваММая %s беЎрПкПвая руЎа -item.ore_nitrocrystalline.name=НОтрПкрОсталлОческая %s беЎрПкПвая руЎа -item.ore_radcleaned.name=РаЎ-ПчОщеММая %s беЎрПкПвая руЎа -item.ore_seared.name=ОсушеММая %s беЎрПкПвая руЎа -item.ore_purified.name=ПрПЌытая %s беЎрПкПвая руЎа -item.ore_separated.name=ОтЎелёММая %s беЎрПкПвая руЎа -item.ore_byproduct.b_iron.name=ЖелезМый пПбПчМый прПЎукт -item.ore_byproduct.b_copper.name=МеЎМый пПбПчМый прПЎукт -item.ore_byproduct.b_lithium.name=ЛОтОевый пПбПчМый прПЎукт -item.ore_byproduct.b_lead.name=СвОМцПвый пПбПчМый прПЎукт -item.ore_byproduct.b_silicon.name=КреЌМОевый пПбПчМый прПЎукт -item.ore_byproduct.b_calcium.name=КальцОевый пПбПчМый прПЎукт -item.ore_byproduct.b_titanium.name=ТОтаМПвый пПбПчМый прПЎукт -item.ore_byproduct.b_aluminium.name=АлюЌОМОевый пПбПчМый прПЎукт -item.ore_byproduct.b_sulfur.name=СерМый пПбПчМый прПЎукт -item.ore_byproduct.b_bismuth.name=ВОсЌутПвый пПбПчМый прПЎукт -item.ore_byproduct.b_polonium.name=ППлПМОевый пПбПчМый прПЎукт -item.ore_byproduct.b_radium.name=РаЎОевый пПбПчМый прПЎукт -item.ore_byproduct.b_technetium.name=ТехМецОевый пПбПчМый прПЎукт -item.ore_byproduct.b_uranium.name=УраМПвый пПбПчМый прПЎукт -item.ammonium_nitrate.name=НОтрат аЌЌПМОя - -tile.bobblehead.name=БПлваМчОк -tile.snowglobe.name=СМежМый шар -tile.plushie.name=Плюшевая Огрушка %s -tile.deco_titanium.name=ТОтаМПвый ЎекПратОвМый блПк -tile.deco_red_copper.name=КрасМПЌеЎМый ЎекПратОвМый блПк -tile.deco_tungsten.name=ВПльфраЌПвый ЎекПратОвМый блПк -tile.deco_aluminium.name=АлюЌОМОевый ЎекПратОвМый блПк -tile.deco_steel.name=СтальМПй ЎекПратОвМый блПк -tile.deco_lead.name=СвОМцПвый ЎекПратОвМый блПк -tile.deco_beryllium.name=БерОллевый ЎекПратОвМый блПк -tile.deco_pipe.name=СтальМая труба -tile.deco_pipe_rusted.name=Ржавая стальМая труба -tile.deco_pipe_green.name=ЗелёМая стальМая труба -tile.deco_pipe_green_rusted.name=Ржавая зелёМая стальМая труба -tile.deco_pipe_red.name=КрасМая стальМая труба -tile.deco_pipe_marked.name=ГазПвая труба -tile.deco_pipe_framed.name=СтальМая труба (КаркасМый) -tile.deco_pipe_framed_rusted.name=Ржавая стальМая труба (КаркасМый) -tile.deco_pipe_framed_green.name=ЗелёМая стальМая труба (КаркасМый) -tile.deco_pipe_framed_green_rusted.name=Ржавая зелёМая стальМая труба (КаркасМый) -tile.deco_pipe_framed_red.name=КрасМая стальМая труба (КаркасМый) -tile.deco_pipe_framed_marked.name=ГазПвая труба (КаркасМый) -tile.deco_pipe_quad.name=СтальМые трубы -tile.deco_pipe_quad_rusted.name=Ржавые стальМые трубы -tile.deco_pipe_quad_green.name=ЗелёМые стальМые трубы -tile.deco_pipe_quad_green_rusted.name=Ржавые зелёМые стальМые трубы -tile.deco_pipe_quad_red.name=КрасМые стальМые трубы -tile.deco_pipe_quad_marked.name=ГазПвые трубы -tile.deco_pipe_rim.name=СтальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_rusted.name=Ржавая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_green.name=ЗелёМая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_green_rusted.name=Ржавая зелёМая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_red.name=КрасМая стальМая труба (ОбраЌлеММая) -tile.deco_pipe_rim_marked.name=ГазПвая труба (ОбраЌлеММая) -tile.deco_asbestos.name=АсбестПвая крыша -tile.block_cap_fritz.name=БлПк крышек Пт ЀрОцз-КПла -tile.block_cap_korl.name=БлПк крышек Пт КПрл -tile.block_cap_nuka.name=БлПк крышек Пт ЯЎер-кПлы -tile.block_cap_quantum.name=БлПк крышек Пт КваМтПвПй ЯЎер-кПлы -tile.block_cap_rad.name=БлПк крышек Пт С~КПлы РАД -tile.block_cap_sparkle.name=БлПк крышек Пт С~КПлы -tile.block_cap_star.name=БлПк крышек сП звезЎПй Пт СаМсет СарсапарОлла -tile.block_cap_sunset.name=БлПк крышек Пт СаМсет СарсапарОлла -tile.block_tritium.name=БлПк трОтОевых прПбОрПк -tile.hazmat.name=БлПк защОтМПй ткаМО -tile.deco_emitter.name=ДекПратОвМый ОстПчМОк света -tile.part_emitter.name=ДекПратОвМый ОстПчМОк частОц -tile.piston_inserter.name=ВставщОк -tile.piston_inserter.desc=МПжет прОМОЌать ПЎОМ преЎЌет$ЕслО пПЎаМ сОгМал реЎстПуМа, тП вставОт преЎЌет в прПсверлеММый графОт$Все преЎЌеты в прПсверлеММПЌ графОте в цепПчке буЎут сЎвОМуты Ма ПЎОМ блПк$Требуется ПЎОМ блПк вПзЎуха ЌежЎу графОтПЌ -tile.plant_flower.foxglove.name=НаперстяМка -tile.plant_flower.nightshade.name=БеллаЎПММа -tile.plant_flower.tobacco.name=Табак -tile.plant_flower.weed.name=КПМПпля -item.plant_item.rope.name=Верёвка -item.plant_item.tobacco.name=Табак -tile.plant_reeds.name=КаЌышО -item.powder_fertilizer.name=ПрПЌышлеММПе уЎПбреМОе -item.plant_item.mustardwillow.name=ЛОст гПрчОчМПй Овы -tile.plant_flower.cd0.name=ГПрчОчМая Ова -tile.plant_flower.cd1.name=ГПрчОчМая Ова -tile.plant_tall.cd2.name=ГПрчОчМая Ова -tile.plant_tall.cd3.name=ГПрчОчМая Ова -tile.plant_tall.cd4.name=ГПрчОчМая Ова (ВырПсла) -tile.plant_tall.weed.name=КПМПпля - -tile.stone_cracked.name=ТресМутый каЌеМь -tile.reinforced_brick.name=УсОлеММый каЌеМь -tile.reinforced_glass.name=УсОлеММПе стеклП -tile.reinforced_glass_pane.name=УсОлеММая стекляММая паМель -tile.reinforced_laminate.name=УсОлеММый лаЌОМат -tile.reinforced_laminate_pane.name=УсОлеММая лаЌОМатМая паМель -tile.reinforced_sand.name=УсОлеММый песчаМОк -tile.reinforced_light.name=УсОлеММый светящОйся каЌеМь -tile.reinforced_lamp_off.name=УсОлеММая лаЌпа -tile.reinforced_lamp_on.name=УсОлеММая лаЌпа -tile.lamp_tritium_blue_off.name=СОМяя трОтОевая лаЌпа -tile.lamp_tritium_blue_on.name=СОМяя трОтОевая лаЌпа -tile.lamp_tritium_green_off.name=ЗелёМая трОтОевая лаЌпа -tile.lamp_tritium_green_on.name=ЗелёМая трОтОевая лаЌпа -tile.spotlight_incandescent.name=ЛаЌпа в клетке -tile.spotlight_fluoro.name=ЀлюПресцеМтМая лаЌпа -tile.spotlight_halogen.name=ГалПгеММый прПжектПр -tile.floodlight.name=ЭлектрОческОй прПжектПр -tile.lamp_demon.name=ЛаЌпа Оз заряЎа-ЎеЌПМа -tile.reinforced_stone.name=УплПтМеММый каЌеМь -tile.concrete_smooth.name=БетПМ -tile.concrete_colored.black.name=ЧерМый бетПМ -tile.concrete_colored.blue.name=СОМОй бетПМ -tile.concrete_colored.brown.name=КПрОчМевый бетПМ -tile.concrete_colored.cyan.name=БОрюзПвый бетПМ -tile.concrete_colored.gray.name=Серый бетПМ -tile.concrete_colored.green.name=ЗелёМый бетПМ -tile.concrete_colored.lightBlue.name=СветлП-сОМОй бетПМ -tile.concrete_colored.lime.name=ЛайЌПвый бетПМ -tile.concrete_colored.magenta.name=ПурпурМый бетПМ -tile.concrete_colored.orange.name=ОраМжевый бетПМ -tile.concrete_colored.pink.name=РПзПвый бетПМ -tile.concrete_colored.purple.name=ЀОПлетПвый бетПМ -tile.concrete_colored.red.name=КрасМый бетПМ -tile.concrete_colored.silver.name=СветлП-серый бетПМ -tile.concrete_colored.white.name=Белый бетПМ -tile.concrete_colored.yellow.name=Жёлтый бетПМ -tile.concrete_asbestos.name=АсбестПбетПМ -tile.concrete.name=БетПММая плОтка -tile.concrete_pillar.name=АрЌатурМый железПбетПММый стПлб -tile.brick_concrete.name=БетПММые кОрпОчО -tile.brick_concrete_mossy.name=ЗаЌшелые бетПММые кОрпОчО -tile.brick_concrete_cracked.name=ППтрескаММые бетПММые кОрпОчО -tile.brick_concrete_broken.name=СлПЌаММые бетПММые кОрпОчО -tile.brick_concrete_marked.name=ОбПзМачеММые бетПММые кОрпОчО -tile.brick_dungeon.name=БерцелОаМОт кОрпОчО -tile.brick_dungeon_circle.name=БерцелОаМОтПвый круг -tile.brick_dungeon_flat.name=БерцелОаМОт -tile.brick_dungeon_tile.name=БерцелОаМОтПвая плОтка -tile.brick_jungle.name=ЭМаргОтПвые кОрпОчО -tile.stone_keyhole.name=СтраММый каЌеМь -tile.brick_red.name=КОрпОчО красМПй кПЌМаты -tile.pedestal.name=ПьеЎестал -tile.brick_jungle_circle.name=Круг МехаМОста -tile.brick_jungle_cracked.name=ППтрескаММые эМаргОтПвые кОрпОчО -tile.brick_jungle_fragile.name=ХрупкОе эМаргОтПвые кОрпОчО -tile.brick_jungle_glyph.name=ЭМаргОтПвые кОрпОчО с глОфаЌО -tile.brick_jungle_lava.name=МагЌатОческОе эМаргОтПвые кОрпОчО -tile.brick_jungle_mystic.name=МагОческОе эМаргОтПвые кОрпОчО -tile.brick_jungle_ooze.name=РаЎОПактОвМые эМаргОтПвые кОрпОчО -tile.brick_jungle_trap.name=ЭМаргОтПвые кОрпОчО-лПвушка -tile.basalt.name=Базальт -tile.ore_basalt_asbestos.name=БПгатый асбестПЌ базальт -tile.ore_basalt_fluorite.name=БПгатый флюПрОтПЌ базальт -tile.ore_basalt_gem.name=БПгатый саЌПцветаЌО базальт -tile.ore_basalt_molysite.name=БПгатый ЌПлОзОтПЌ базальт -tile.ore_basalt_sulfur.name=БПгатый серПй базальт -tile.basalt_brick.name=БазальтПвые кОрпОчО -tile.basalt_polished.name=ППлОрПваММый базальт -tile.basalt_smooth.name=ГлаЎкОй базальт -tile.basalt_tiles.name=БазальтПвая плОтка -tile.brick_obsidian.name=ОбсОЎОаМПвые кОрпОчО -tile.brick_light.name=ЛегкОе кОрпОчО -tile.depth_brick.name=ГлубОММые кОрпОчО -tile.depth_tiles.name=ГлубОММая плОтка -tile.depth_dnt.name=ДНТ-усОлеММые глубОММые кОрпОчО -tile.depth_nether_brick.name=АЎскОе глубОММые кОрпОчО -tile.depth_nether_tiles.name=АЎская глубОММая плОтка -tile.gneiss_brick.name=СлаМцевые кОрпОчО -tile.gneiss_chiseled.name=ВысечеММый слаМец -tile.gneiss_tile.name=СлаМцевая плОтка -tile.brick_ducrete.name=ДюкретПвые кОрпОчО -tile.ducrete.name=ДюкретПвая плОтка -tile.ducrete_smooth.name=Дюкрет -tile.ducrete_debris.name=ДюкретПвые ПблПЌкО -tile.reinforced_ducrete.name=УсОлеММый Ўюкрет -tile.asphalt.name=Асфальт -tile.asphalt_light.name=АсфальтОрПваММый светящОйся каЌеМь -tile.asphalt_stairs.name=СтупеМькО Оз асфальта -tile.concrete_slab.asphalt.name=ПлОта Оз асфальта -tile.stone_gneiss.name=ГрафОтПвый слаМец -tile.stone_depth.name=ГлубОММый каЌеМь -tile.stone_depth_nether.name=АЎскОй глубОММый каЌеМь -tile.brick_compound.name=Сетка Оз сПеЎОМеМОя -tile.tile_lab.name=ЛабПратПрМая плОтка -tile.tile_lab_broken.name=РазбОтая лабПратПрМая плОтка -tile.tile_lab_cracked.name=ТресМувшая лабПратПрМая плОтка -tile.vinyl_tile.large.name=БПльшая вОМОлПвая плОтка -tile.vinyl_tile.small.name=МалеМькОе вОМОлПвые плОткО -tile.spikes.name=КОпы -tile.stalactite.sulfur.name=СерМОстый сталактОт -tile.stalagmite.sulfur.name=СерМОстый сталагЌОт -tile.stalactite.asbestos.name=АсбестПвый сталактОт -tile.stalagmite.asbestos.name=АсбестПвый сталагЌОт -tile.stone_resource.asbestos.name=ХрОзПтОл -tile.stone_resource.sulfur.name=СерМОстый каЌеМь -tile.stone_resource.hematite.name=ГеЌатОт -tile.stone_resource.bauxite.name=БПксОт -tile.stone_resource.malachite.name=МалахОт -tile.stone_resource.limestone.name=ИзвестМяк -tile.gas_asbestos.name=ЧастОцы асбеста в вПзЎухе -tile.gas_flammable.name=ГПрючОй газ -tile.gas_monoxide.name=УгарМый газ -tile.gas_radon.name=РаЎПМ -tile.gas_radon_dense.name=ПлПтМый раЎПМ -tile.gas_radon_tomb.name=МПгОльМый газ -tile.gas_meltdown.name=Газ Оз актОвМПй зПМы -tile.gas_coal.name=ВПзЎушМая угПльМая пыль -tile.gas_explosive.name=ВзрывППпасМый газ -tile.cmb_brick.name=ПлОта Оз сталО АльяМса -tile.cmb_brick_reinforced.name=УсОлеММые кОрпОчО Оз сталО АльяМса -tile.ladder_aluminium.name=АлюЌОМОевая лестМОца -tile.ladder_cobalt.name=КПбальтПвая лестМОца -tile.ladder_copper.name=МеЎМая лестМОца -tile.ladder_gold.name=ЗПлПтая лестМОца -tile.ladder_iron.name=ЖелезМая лестМОца -tile.ladder_lead.name=СвОМцПвая лестМОца -tile.ladder_steel.name=СтальМая лестМОца -tile.ladder_sturdy.name=ПрПчМая ЎеревяММая лестМОца -tile.ladder_titanium.name=ТОтаМПвая лестМОца -tile.ladder_tungsten.name=ВПльфраЌПвая лестМОца -tile.volcano_core.name=ВулкаМОческПе яЎрП -tile.volcano_rad_core.name=РаЎОПактОвМПе вулкаМОческПе яЎрП -tile.concrete_super.name=Убер-бетПМ -tile.concrete_super_broken.name=ЗаЌшелые бетПММые ПблПЌкО - -tile.gravel_obsidian.name=ИзЌельчеММый ПбсОЎОаМ -tile.gravel_diamond.name=ИзЌельчеММые алЌазы - -tile.barbed_wire.name=КПлючая прПвПлПка -tile.barbed_wire_fire.name=Пылающая кПлючая прПвПлПка -tile.barbed_wire_poison.name=ОтравлеММая кПлючая прПвПлПка -tile.barbed_wire_acid.name=КОслПтМая кПлючая прПвПлПка -tile.barbed_wire_wither.name=Иссушающая кПлючая прПвПлПка -tile.barbed_wire_ultradeath.name=РаЎОПактОвМая кПлючая прПвПлПка -tile.fence_metal.name=ПрПвПлПчМая сетка -tile.fence_metal_post.name=СтПлб прПвПлПчМПй сеткО -tile.sand_uranium.name=УраМПвый песПк -tile.glass_uranium.name=УраМПвПе стеклП -tile.glass_trinitite.name=ТрОМОтОтПвПе стеклП -tile.glass_boron.name=БПрМПе стеклП -tile.glass_lead.name=СвОМцПвПе стеклП -tile.glass_quartz.name=КварцевПе стеклП -tile.moon_turf.name=ЛуММый груМт - -tile.seal_frame.name=РаЌа люка пускПвПй щахты -tile.seal_controller.name=Открыватель люка пускПвПй щахты -tile.seal_hatch.name=Люк пускПвПй шахты -tile.silo_hatch.name=СОлПсМый люк -tile.silo_hatch_large.name=БПльшПй сОлПсМый люк -tile.vault_door.name=Дверь убежОща Vault-Tec -tile.blast_door.name=РазЎвОжМые ЎверО -tile.transition_seal.name=ТраМзОтМый люк -tile.fire_door.name=ППжарМая Ўверь +item.bedrock_ore.type.actinide.name=АктОМОЎМая +item.bedrock_ore.type.crystal.name=КрОсталлОческая +item.bedrock_ore.type.heavy.name=Тяжелая ЌеталлОческая +item.bedrock_ore.type.light.name=Легкая ЌеталлОческая +item.bedrock_ore.type.nonmetal.name=НеЌеталлОческая +item.bedrock_ore.type.rare.name=РеЎкПзеЌельМая +item.bedrock_ore_base.name=НеПбрабПтаММая беЎрПкПвая руЎа +item.bedrock_ore_fragment.name=ЀрагЌеМт Пт %s руЎа +item.beta.name=БЕТА-ЀУНКЊИИ +item.big_sword.name=БПльшПй Ќеч +item.billet_actinium.name=Actinium-227 Billet +item.billet_am_mix.name=ЗагПтПвка аЌерОцОя реактПрМПгП качества +item.billet_am241.name=ЗагПтПвка аЌерОцОя-241 +item.billet_am242.name=ЗагПтПвка аЌерОцОя-242 +item.billet_americium_fuel.name=ЗагПтПвка аЌерОцОевПгП тПплОва +item.billet_au198.name=ЗагПтПвка зПлПта-198 +item.billet_australium.name=ЗагПтПвка австралОя +item.billet_australium_greater.name=ЗагПтПвка высшегП австралОя +item.billet_australium_lesser.name=ЗагПтПвка МОзшегП австралОя +item.billet_balefire_gold.name=ЗагПтПвка флэшгПлЎа +item.billet_beryllium.name=ЗагПтПвка берОллОя +item.billet_bismuth.name=ЗагПтПвка вОсЌута +item.billet_co60.name=ЗагПтПвка кПбальта-60 +item.billet_cobalt.name=ЗагПтПвка кПбальта +item.billet_flashlead.name=ЗагПтПвка флэшлОЎа +item.billet_flashlead.desc=Решетка распаЎается, вызывая реакцОО аММОгОляцОО аМтОвещества О ЌатерОО, вызывая высвПбПжЎеМОе$пОПМПв, распаЎающОхся Ма ЌюПМы, каталОзОрующОх слОяМОе$яЎер, сПзЎавая МПвый элеЌеМт.$ППжалуйста, пПстарайся Ме Птставать. +item.billet_gh336.name=ЗагПтПвка гОПрсОя-336 +item.billet_gh336.desc=КПллега СОбПргОуЌа. +item.billet_hes.name=ЗагПтПвка высПкППбПгащеММПгП шрабОЎОевПгП тПплОва +item.billet_les.name=ЗагПтПвка МОзкППбПгащеММПгП шрабОЎОевПгП тПплОва +item.billet_mox_fuel.name=ЗагПтПвка МОКС-тПплОва +item.billet_mox_fuel.desc=КарЌаММый МПксО! +item.billet_neptunium.name=ЗагПтПвка МептуМОя +item.billet_neptunium_fuel.name=ЗагПтПвка МептуМОевПгП тПплОва +item.billet_nuclear_waste.name=ЗагПтПвка яЎерМых ПтхПЎПв +item.billet_pb209.name=ЗагПтПвка свОМца-209 +item.billet_po210be.name=ЗагПтПвка ППлПМОй-210-БерОллОя +item.billet_polonium.name=ЗагПтПвка пПлПМОя-210 +item.billet_pu_mix.name=ЗагПтПвка плутПМОя реактПрМПгП качества +item.billet_pu238.name=ЗагПтПвка плутПМОя-238 +item.billet_pu238be.name=ЗагПтПвка ПлутПМОй-210-БерОллОя +item.billet_pu239.name=ЗагПтПвка плутПМОя-239 +item.billet_pu240.name=ЗагПтПвка плутПМОя-240 +item.billet_pu241.name=ЗагПтПвка плутПМОя-241 +item.billet_plutonium.name=ЗагПтПвка плутПМОя +item.billet_plutonium_fuel.name=ЗагПтПвка плутПМОевПгП тПплОва +item.billet_ra226.name=ЗагПтПвка раЎОя-226 +item.billet_ra226be.name=ЗагПтПвка РаЎОй-226-БерОллОя +item.billet_schrabidium.name=ЗагПтПвка шрабОЎОя +item.billet_schrabidium_fuel.name=ЗагПтПвка шрабОЎОевПгП тПплОва +item.billet_silicon.name=КреЌМОевая пластОМа +item.billet_solinium.name=ЗагПтПвка сПлОМОя +item.billet_sr90.name=ЗагПтПвка стрПМцОя-90 +item.billet_technetium.name=ЗагПтПвка техМецОя-99 +item.billet_th232.name=ЗагПтПвка тПрОя-232 +item.billet_thorium_fuel.name=ЗагПтПвка тПрОевПгП тПплОва +item.billet_u233.name=ЗагПтПвка ураМа-233 +item.billet_u235.name=ЗагПтПвка ураМа-235 +item.billet_u238.name=ЗагПтПвка ураМа-238 +item.billet_uranium.name=ЗагПтПвка ураМа +item.billet_uranium_fuel.name=ЗагПтПвка ураМПвПгП тПплОва +item.billet_yharonite.name=ЗагПтПвка ярПМОта +item.billet_zfb_am_mix.name=ЗагПтПвка ЊТС аЌерОцОя реактПрМПгП качества +item.billet_zfb_bismuth.name=ЗагПтПвка ЊТС вОсЌута +item.billet_zfb_pu241.name=ЗагПтПвка ЊТС плутПМОя-241 +item.billet_zirconium.name=ЗагПтПвка цОркПМОя +item.bio_wafer.name=Вафля Оз вПЎПрПслей +item.biomass.name=БОПЌасса +item.biomass_compressed.name=Сжатая бОПЌасса +item.bismuth_boots.name=СаМЎалО Оз вОсЌута +item.bismuth_helmet.name=ГПлПвМПй убПр Оз вОсЌута +item.bismuth_legs.name=НакПлеММОкО Оз вОсЌута +item.bismuth_axe.name=ВОсЌутПвый тПпПр +item.bismuth_pickaxe.name=ВОсЌутПвая кОрка +item.bismuth_plate.name=НаплечМОкО, Пжерелье О МабеЎреММая пПвязка Оз вОсЌута +item.bismuth_tool.name=МагМОтМый экстрактПр +item.bj_boots.name=ЛуММые шОпПваММые бПтОМкО +item.bj_helmet.name=ППвязка с теплПвыЌ сеМсПрПЌ +item.bj_legs.name=ЛуММые кОберМетОческОе заЌеМы МПг +item.bj_plate.name=ЛуММая кОберМетОческая ПбшОвка +item.bj_plate_jetpack.name=ЛуММая кОберМетОческая ПбшОвка (с крыльяЌО) +item.black_diamond.name=ЧёрМый алЌаз +item.black_hole.name=МОМОатюрМая чёрМая Ўыра +item.blade_meteorite.name=МетеПрОтПвПе лезвОе +item.blade_titanium.name=ТОтаМПвая лПпПсть +item.blade_tungsten.name=УсОлеММая вПльфраЌПЌ лПпасть +item.blades_advanced_alloy.name=УсПвершеМствПваММые лезвОя ОзЌельчОтеля +item.blades_desh.name=Деш-лезвОя ОзЌельчОтеля +item.blades_steel.name=СтальМые лезвОя ОзЌельчОтеля +item.blades_titanium.name=ТОтаМПвые лезвОя ОзЌельчОтеля +item.blowtorch.name=ПаяльМая лаЌпа +item.board_copper.name=МеЎМая паМель +item.boat_rubber.name=РезОМПвая лПЎка +item.bobmazon.name=Bobmazon +item.bobmazon_hidden.name=Скрытый каталПг +item.bobmazon_machines.name=БПбЌазПМ: БлПкО О ЌашОМы +item.bobmazon_materials.name=БПбЌазПМ: МатерОалы +item.bobmazon_tools.name=БПбЌазПМ: ПреЎЌеты +item.bobmazon_weapons.name=БПбЌазПМ: ОружОе О взрывчатка +item.boltntm.name=СтержеМь Оз %s +item.bolt_compound.name=УкреплеММый вал турбОМы +item.bolt_spike.name=ЖелезМПЎПрПжМый гвПзЎь +item.bolt_spike.desc=Излучает угрПжающую ауру, как-тП +item.boltgun.name=ПМевЌатОческОй заклепПчМОк +item.bomb_caller.name=УстрПйствП Ўля ПбПзМачеМОя авОауЎара +item.bomb_waffle.name=Вафля ЌассПвПгП пПражеМОя +item.book_guide.name=РукПвПЎствП +item.book_of_.name=КМОга ВагПМПв +item.book_lemegeton.name=ЛеЌегетПМ +item.book_secret.name=3-596-50802-9 +item.bottle2_empty.name=Пустая Бутылка +item.bottle2_fritz.name=ЀрОцз-КПла +item.bottle2_fritz_special.name=Первая ЀрОцз-КПла +item.bottle2_korl.name=КПрл +item.bottle2_korl_special.name=Первый КПрл +item.bottle2_sunset.name=СаМсет СарсапарОлла +item.bottle_cherry.name=Бутылка ЯЎер-вОшМО +item.bottle_empty.name=Пустая бутылка в фПрЌе бПЌбы +item.bottle_mercury.name=Пузырёк ртутО +item.bottle_nuka.name=Бутылка ЯЎер-кПлы +item.bottle_opener.name=СПбствеММая саЌПЎельМая Пткрывашка Ўля бутылПк +item.bottle_quantum.name=Бутылка КваМтПвПй ЯЎер-кПлы +item.bottle_rad.name=Бутылка С~КПлы РАД +item.bottle_sparkle.name=Бутылка С~КПлы +item.bottled_cloud.name=ОблакП в бутылке +item.boy_bullet.name=СМаряЎ U235 +item.boy_igniter.name=ВПсплаЌеМОтель +item.boy_kit.name=КПЌплект Малыша +item.boy_propellant.name=Взрывчатка +item.boy_shielding.name=НейтрПММый щОт +item.boy_target.name=СубкрОтОческая цель U235 +item.briquette.coal.name=БрОкет угля +item.briquette.lignite.name=БрОкет бурПгП угля +item.briquette.wood.name=БрОкет ЎревесМых ПпОлПк +item.bucket_acid.name=ВеЎрП кОслПты +item.bucket_mud.name=ВеЎрП тПксОчМых ПтхПЎПв +item.bucket_schrabidic_acid.name=ВеЎрП шрабОЎОевПй кОслПты +item.bucket_sulfuric_acid.name=ВеЎрП серМПй кОслПты +item.bucket_toxic.name=ВеЎрП стереПтОпМПй зелёМПй слОзО +item.burnt_bark.name=ОбПжжеММая кПра +item.burnt_bark.desc=КусПк кПры взПрваММПгП зПлПтПгП Ўуба. +item.can_bepis.name=БепОс +item.can_breen.name=ЛОчМый резерв ÐŽÑ€.БрОМа +item.can_creature.name=ЭМергетОческОй МапОтПк "СуществП" +item.can_empty.name=Пустая баМка +item.can_key.name=ВОМтПвПй ключ +item.can_luna.name=ЧерМая Меза ЛуМа - ТеЌМая КПла +item.can_mrsugar.name=БезалкПгПльМый МапОтПк 'ДПктПр Сахар' +item.can_mug.name=MUG Root Beer +item.can_overcharge.name=ПерезаряЎка Delirium XT +item.can_redbomb.name=ЭМергетОческОй МапОтПк "КрасМая БПЌба" +item.can_smart.name=ЭМергетОческОй МапОтПк “СЌарт” +item.canister_NITAN.name=100-ПктаМПвПе сверхтПплОвП NITAN© (LEGACY) +item.canister_biofuel.name=КаМОстра с бОПтПплОвПЌ (LEGACY) +item.canister_bitumen.name=КаМОстра с бОтуЌПЌ (LEGACY) +item.canister_canola.name=МашОММая сЌазка (LEGACY) +item.canister_empty.name=Пустая каМОстра +item.canister_ethanol.name=КаМОстра с этаМПлПЌ (LEGACY) +item.canister_fracksol.name=КаМОстра с жОЎкПстью Ўля гОЎрПразрыва пласта (LEGACY) +item.canister_fuel.name=КаМОстра с ЎОзелеЌ (LEGACY) +item.canister_fuel.desc=Да зЎравствует МПсОк! +item.canister_full.name=КаМОстра: +item.canister_gasoline.name=КаМОстра с этОлОрПваММыЌ беМзОМПЌ (LEGACY) +item.canister_gasoline.desc=свОМец - этП Ўруг$впустО Ўруга в свПй крПвПтПк$*ЎПстаёт пОстПлет* жОвП. +item.canister_heatingoil.name=КаМОстра с ЌазутПЌ (LEGACY) +item.canister_heavyoil.name=КаМОстра с тяжелПй Мефтью (LEGACY) +item.canister_kerosene.name=КаМОстра с керПсОМПЌ (LEGACY) +item.canister_lightoil.name=КаМОстра с лёгкПй Мефтью (LEGACY) +item.canister_napalm.name=НапалЌ Б +item.canister_naphtha.name=КаМОстра Мафты (LEGACY) +item.canister_oil.name=КаМОстра с МеПчОщеММПй Мефтью (LEGACY) +item.canister_petroil.name=КаМОстра с беМзОМПЌ (LEGACY) +item.canister_reoil.name=КаМОстра с вПсстаМПвлеММыЌ прПЌышлеММыЌ ЌаслПЌ (LEGACY) +item.canister_smear.name=КаМОстра с прПЌышлеММыЌ ЌаслПЌ (LEGACY) +item.canned_asbestos.name=КПМсервОрПваММый асбест +item.canned_asbestos.desc=TASTE the asbestosis! +item.canned_ass.name=КПМсервОрПваММая заЎМОца +item.canned_ass.desc=100%% quality donkey meat!* +item.canned_bark.name=КПМсервы вялеМПй сПсМПвПй кПры +item.canned_bark.desc=Extra cronchy! +item.canned_beef.name=КПМсервОрПваММая гПвяЎОМа +item.canned_beef.desc=A few centuries ago, a cow died for this. +item.canned_bhole.name=КПМсервОрПваММая черМая Ўыра +item.canned_bhole.desc=Singularity is yum yum in my tum tum! +item.canned_cheese.name=КПМсервОрПваММый плавлеМый сыр +item.canned_cheese.desc=Is it cheese? Is it rubber cement? Who knows, who cares. +item.canned_chinese.name=КПМсервОрПваММая кОтайская еЎа +item.canned_chinese.desc=In China, Chinese food is just called food. +item.canned_diesel.name=КПМсервОрПваММПе ЎОзельМПе тПплОвП +item.canned_diesel.desc=I'm slowly running out of jokes for these. +item.canned_fist.name=КПМсервОрПваММый кулак +item.canned_fist.desc=Yowser! +item.canned_fried.name=КПМсервОрПваММая жареМая курОца +item.canned_fried.desc=Even the can is deep fried! +item.canned_hotdogs.name=КПМсервОрПваММые хПт-ЎПгО +item.canned_hotdogs.desc=Not to be confused with cool cats. +item.canned_jizz.name=КПМсервОрПваММПе жеребцПвПе ЌПлПкП "ЀлОЌЀлэЌ ИМЎастрОз" +item.canned_jizz.desc=Wait wh- +item.canned_kerosene.name=КПМсервОрПваММый керПсОМ +item.canned_kerosene.desc=Just imagine a witty line here. +item.canned_leftovers.name=ПрПсрПчеММые кПМсервы +item.canned_leftovers.desc=ur 2 slow +item.canned_milk.name=КПМсервОрПваММая сгущеМка +item.canned_milk.desc=Milk 2: More solid than ever before! +item.canned_mystery.name=КПМсервы "ТайМа Мяса" +item.canned_mystery.desc=What's inside? Only one way to find out! +item.canned_napalm.name=КПМсервОрПваММый МапалЌ +item.canned_napalm.desc=I love the smell of old memes in the morning! +item.canned_oil.name=КПМсервОрПваММПе ЌПтПрМПе ЌаслП +item.canned_oil.desc=It makes motors go, so why not humans? +item.canned_pashtet.name=Паштет +item.canned_pashtet.desc=услугО перевПЎа МеЎПступМы! +item.canned_pizza.name=КПМсервОрПваММая пОцца +item.canned_pizza.desc=A crime against humanity. +item.canned_recursion.name=КПМсервОрПваММая рекурсОя +item.canned_recursion.desc=Canned Recursion +item.canned_spam.name=КПМсервы “СпаЌ” +item.canned_spam.desc=The three-and-a-half-minute sketch is set in the fictional Green Midget Cafe in Bromley.$An argument develops between the waitress, who recites a menu in which nearly$every dish contains Spam, and Mrs. Bun, who does not like Spam. She asks for a$dish without Spam, much to the amazement of her Spam-loving husband. The waitress$responds to this request with disgust. Mr. Bun offers to take her Spam instead,$and asks for a dish containing a lot of Spam and baked beans. The waitress says$no since they are out of baked beans; when Mr. Bun asks for a substitution of Spam,$the waitress again responds with disgust. At several points, a group of Vikings in$the restaurant interrupts conversation by loudly singing about Spam.$The irate waitress orders them to shut up, but they resume singing more loudly.$A Hungarian tourist comes to the counter, trying to order by using a wholly$inaccurate Hungarian/English phrasebook (a reference to a previous sketch).$He is rapidly escorted away by a police constable. The sketch abruptly cuts to a$historian in a television studio talking about the origin of the Vikings in the café.$As he goes on, he begins to increasingly insert the word "Spam" into every$sentence, and the backdrop is raised to reveal the restaurant set behind.$The historian joins the Vikings in their song, and Mr. and Mrs. Bun are lifted by$wires out of the scene while the singing continues. In the original televised performance,$the closing credits begin to scroll with the singing still audible in the background. +item.canned_stew.name=КПМсервы "ТушеМые грОбы" +item.canned_stew.desc=... +item.canned_tomato.name=КПМсервОрПваММый тПЌатМый суп +item.canned_tomato.desc=Who wants some thick red paste? +item.canned_tube.name=ПОщевПй тюбОк кПсЌПМавта +item.canned_tube.desc=Tasty mush. +item.canned_tuna.name=КПМсервОрПваММый туМец +item.canned_tuna.desc=I can't tell if that's actually tuna or dried cement. +item.canned_yogurt.name=КПМсервОрПваММый йПгурт +item.canned_yogurt.desc=Probably spoiled, but whatever. +item.canteen_13.name=Ѐляжка УбежОща 13 +item.canteen_fab.name=ППтрясающая вПЎка +item.canteen_vodka.name=СтОльМая фляга +item.cap_fritz.name=Крышка Пт ЀрОцз-КПлы +item.cap_korl.name=Крышка Пт БутылкО КПрла +item.cap_nuka.name=Крышка +item.cap_quantum.name=Крышка Пт КваМтПвПй ЯЎер-кПлы +item.cap_rad.name=Крышка Пт С~КПлы РАД +item.cap_sparkle.name=Крышка Пт С~КПлы +item.cap_star.name=Крышка Пт СаМсет СарсапарОллы сП звезЎПй +item.cap_sunset.name=Крышка Пт СаМсет СарсапарОллы +item.cape_ayy.name=Ayy's Cape +item.cape_codered_.name=codered_'s Cape +item.cape_dafnik.name=Dafnik's Cape +item.cape_gasmask.name=Плащ (ПрПтОвПгаз) +item.cape_hbm.name=Hbm's Cape +item.cape_hidden.name=Скрытый плащ +item.cape_lpkukin.name=LPkukin's Cape +item.cape_nostalgia.name=DrNostalgia's Cape +item.cape_radiation.name=Плащ (РаЎОацОя) +item.cape_schrabidium.name=Плащ (КрабОЎОй) +item.cape_vertice.name=Lord Vertice's Cape +item.card_aos.name=ПОкПвый туз +item.card_qos.name=КПрПлева пОк +item.cart.crate.name=ВагПМетка с ящОкПЌ +item.cart.destroyer.name=ВагПМетка с уМОчтПжОтелеЌ ЌусПра +item.cart.empty.name=СтальМая вагПМетка +item.cart.powder.name=Powder Cart +item.cart.semtex.name=Semtex Cart +item.casing_357.name=ГОльза МагМуЌа .357(x24) +item.casing_44.name=ГОльза МагМуЌа .44 (x24) +item.casing_50.name=КрупМПкалОберМая ГОльза (x12) +item.casing_9.name=МалПкалОберМая ГОльза (x32) +item.casing_bag.name=Bullet Casing Bag +item.casing_buckshot.name=КартечМая ГОльза (x12) +item.casing.small.name=Small Gunmetal Casing +item.casing.small_steel.name=Small Weapon Steel Casing +item.casing.large.name=Large Gunmetal Casing +item.casing.large_steel.name=Large Weapon Steel Casing +item.casing.shotshell.name=Black Powder Shotshell Casing +item.casing.buckshot.name=Plastic Shotshell Casing +item.casing.buckshot_advanced.name=Advanced Shotshell Casing +item.catalyst_clay.name=ГлОМОстый каталОзатПр +item.catalytic_converter.name=КаталОтОческОй кПМвертер +item.cbt_device.name=CBT-Ўевайс +item.cell_anti_schrabidium.name=ПрПбОрка с аМтОшрабОЎОеЌ +item.cell_antimatter.name=ПрПбОрка с аМтОЌатерОей +item.cell_balefire.name=ПрПбОрка с газППбразМыЌ жар-плаЌеМеЌ +item.cell_deuterium.name=ПрПбОрка с ЎейтерОеЌ +item.cell_empty.name=Пустая прПбОрка +item.cell_puf6.name=ПрПбОрка с гексафтПрОЎПЌ плутПМОя +item.cell_sas3.name=ПрПбОрка с трОсульфОЎПЌ шрабОЎОя +item.cell_tritium.name=ПрПбОрка с трОтОеЌ +item.cell_uf6.name=ПрПбОрка с гексафтПрОЎПЌ ураМа +item.centri_stick.name=ЊеМтрОфуга Ма палке +item.centrifuge_element.name=ЭлеЌеМт цеМтрОфугО +item.centrifuge_tower.name=БашМя цеМтрОфугО +item.chainsaw.name=БеМзПпОла +item.cheese.name=Сыр +item.cheese_quesadilla.name=СырМая кесаЎОлья +item.chemical_dye.black.name=ХОЌОческОй красОтель (ЧерМый) +item.chemical_dye.blue.name=ХОЌОческОй красОтель (СОМОй) +item.chemical_dye.brown.name=ХОЌОческОй красОтель (КПрОчМевый) +item.chemical_dye.cyan.name=ХОЌОческОй красОтель (ГПлубПй) +item.chemical_dye.gray.name=ХОЌОческОй красОтель (Серый) +item.chemical_dye.green.name=ХОЌОческОй красОтель (ЗелёМый) +item.chemical_dye.lightblue.name=ХОЌОческОй красОтель (СветлП-сОМОй) +item.chemical_dye.lime.name=ХОЌОческОй красОтель (ЛайЌПвый) +item.chemical_dye.magenta.name=ХОЌОческОй красОтель (ПурпурМый) +item.chemical_dye.orange.name=ХОЌОческОй красОтель (ОраМжевый) +item.chemical_dye.pink.name=ХОЌОческОй красОтель (РПзПвый) +item.chemical_dye.purple.name=ХОЌОческОй красОтель (ЀОПлетПвый) +item.chemical_dye.red.name=ХОЌОческОй красОтель (КрасМый) +item.chemical_dye.silver.name=ХОЌОческОй красОтель (СветлП-серый) +item.chemical_dye.white.name=ХОЌОческОй красОтель (Белый) +item.chemical_dye.yellow.name=ХОЌОческОй красОтель (Жёлтый) +item.chemistry_set.name=ЛабПратПрМая пПсуЎа +item.chemistry_set_boron.name=ЛабПратПрМая пПсуЎа (БПрМПе стеклП) +item.chemistry_template.name=КаблПМ хОЌОческПй ЌашОМы: +item.chernobylsign.name=БПевПй тПпПр Оз ЧерМПбыльскПгП преЎупрежЎающегП зМака +item.chlorine_pinwheel.name=ХлПрМая вертушка +item.chlorophyte_axe.name=ХлПрПфОтПвый тПпПр +item.chlorophyte_pickaxe.name=ХлПрПфОтПвая кОрка +item.chocolate.name=ЀОрЌеММый раЎОевый шПкПлаЎ +item.chocolate.desc=Radium Chocolate? Pretty sure this is just meth. +item.chocolate_milk.name=МПлПчМый шПкПлаЎ +item.chopper.name=ВертПлёт-ПхПтМОк +item.chopper_blades.name=ЛПпастО ВертПлёта-ПхПтМОка +item.chopper_gun.name=ОгМевая устаМПвка +item.chopper_head.name=КабОМа ВертПлета-ПхПтМОка +item.chopper_tail.name=ХвПст ВертПлёта-ПхПтМОка +item.chopper_torso.name=КПрпус ВертПлёта-ПхПтМОка +item.chopper_wing.name=КрылП ВертПлета-ПхПтМОка +item.chunk_ore.malachite.name=Malachite Chunk +item.chunk_ore.rare.name=КусПк реЎкПзеЌельМПй руЎы +item.chunk_ore.cryolite.name=Cryolite Chunk +item.cigarette.name=СОгарета ЌаркО "FFI" +item.cinnebar.name=КОМПварь +item.circuit.advanced.name=ВПеММая ЌОкрПсхеЌа +item.circuit.analog.name=АМалПгПвая плата +item.circuit.atomic_clock.name=АтПЌМые часы +item.circuit.basic.name=ИМтегральМая схеЌа +item.circuit.bismoid.name=ПереЎПвая ЌОкрПсхеЌа +item.circuit.capacitor.name=КПМЎеМсатПр +item.circuit.capacitor_board.name=КПМЎеМсатПрМая плата +item.circuit.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр +item.circuit.chip.name=МОкрПчОп +item.circuit.chip_bismoid.name=ПереЎПвПй ОМтегральМый ЌОкрПчОп +item.circuit.chip_quantum.name=ТверЎПтельМый кваМтПвый прПцессПр +item.circuit.controller.name=БлПк управлеМОя +item.circuit.controller_advanced.name=ПрПЎвОМутый блПк управлеМОя +item.circuit.controller_chassis.name=КПрпус блПка управлеМОя +item.circuit.controller_quantum.name=КваМтПвый кПЌпьютер +item.circuit.pcb.name=ПечатМая плата +item.circuit.quantum.name=УстрПйствП кваМтПвПй ПбрабПткО +item.circuit.silicon.name=ПечатМая креЌМОевая пластОМа +item.circuit.vacuum_tube.name=ВакууЌМая трубка +item.circuit_aluminium.name=ПрПстая ЌОкрПсхеЌа +item.circuit_arsenic.name=ГОбкая ЌОкрПсхеЌа +item.circuit_arsenic_raw.name=СбПрка гОбкПй ЌОкрПсхеЌы +item.circuit_bismuth.name=УМОверсальМый чОпсет +item.circuit_bismuth_raw.name=СбПрка уМОверсальМПгП чОпсета +item.circuit_copper.name=ПрПЎвОМутая ЌОкрПсхеЌа +item.circuit_gold.name=РазПгМаММая ЌОкрПсхеЌа +item.circuit_raw.name=СбПрка прПстПй ЌОкрПсхеЌы +item.circuit_red_copper.name=УсПвершеМствПваММая ЌОкрПсхеЌа +item.circuit_schrabidium.name=ВысПкПпрПОзвПЎОтельМая ЌОкрПсхеЌа +item.circuit_star.name=МатерОМская плата ЗвёзЎМПгП ДОспетчера +item.circuit_star.desc=Не ОспПльзуется сейчас Оз-за ПтсутствОя ПперацОПММПй сОстеЌы. +item.circuit_star_component.card.name=Карта расшОреМОя ЗвёзЎМПгП ДОспетчера +item.circuit_star_component.chipset.name=ЧОпсет ЗвёзЎМПгП ДОспетчера +item.circuit_star_component.cpu.name=ПрПцессПр ЗвёзЎМПгП ДОспетчера +item.circuit_star_component.ram.name=ОператОвМая паЌять ЗвёзЎМПгП ДОспетчера +item.circuit_star_piece.board_blank.name=ЗД - ПечатМая плата +item.circuit_star_piece.board_converter.name=ЗД - ПреПбразПватель МапряжеМОя +item.circuit_star_piece.board_transistor.name=ЗД - ТраМзОстПры +item.circuit_star_piece.bridge_bios.name=ЗД - ЧОп БИОС +item.circuit_star_piece.bridge_bus.name=ЗД - КОМа +item.circuit_star_piece.bridge_chipset.name=ЗД - ЧОпсет +item.circuit_star_piece.bridge_cmos.name=ЗД - ПаЌять БИОС +item.circuit_star_piece.bridge_io.name=ЗД - ЧОп ВвПЎа/ВывПЎа +item.circuit_star_piece.bridge_north.name=ЗД - СеверМый ЌПст +item.circuit_star_piece.bridge_south.name=ЗД - ЮжМый ЌПст +item.circuit_star_piece.card_board.name=ЗД - Плата карты расшОреМОя +item.circuit_star_piece.card_processor.name=ЗД - ПрПцессПр платы расшОреМОя +item.circuit_star_piece.cpu_cache.name=ЗД - Кэш прПцессПра +item.circuit_star_piece.cpu_clock.name=ЗД - Часы прПцессПра +item.circuit_star_piece.cpu_ext.name=ЗД - МышьякПвый пПлупрПвПЎМОкПвый расшОрОтель +item.circuit_star_piece.cpu_logic.name=ЗД - АрОфЌетОкП-лПгОческПе устрПйствП +item.circuit_star_piece.cpu_register.name=ЗД - РегОстр прПцессПра +item.circuit_star_piece.cpu_socket.name=ЗД - РазъеЌ Ўля прПцессПра +item.circuit_star_piece.mem_socket.name=ЗД - РазъеЌ Ўля паЌятО +item.circuit_star_piece.mem_16k_a.name=ЗД - СлПт Ўля карты ПаЌятО 16k A +item.circuit_star_piece.mem_16k_b.name=ЗД - СлПт Ўля карты ПаЌятО 16k B +item.circuit_star_piece.mem_16k_c.name=ЗД - СлПт Ўля карты ПаЌятО 16k C +item.circuit_star_piece.mem_16k_d.name=ЗД - СлПт Ўля карты ПаЌятО 16k D +item.circuit_tantalium.name=КПМЎеМсатПрМая плата +item.circuit_tantalium_raw.name=СбПрка кПМЎеМсатПрМПй платы +item.circuit_targeting_tier1.name=ПечатМая плата вПеММПгП класса (УрПвеМь 1) +item.circuit_targeting_tier2.name=ПечатМая плата вПеММПгП класса (УрПвеМь 2) +item.circuit_targeting_tier3.name=ПечатМая плата вПеММПгП класса (УрПвеМь 3) +item.circuit_targeting_tier4.name=ПечатМая плата вПеММПгП класса (УрПвеМь 4) +item.circuit_targeting_tier5.name=ПечатМая плата вПеММПгП класса (УрПвеМь 5) +item.circuit_targeting_tier6.name=ПечатМая плата вПеММПгП класса (УрПвеМь 6) +item.cladding_desh.name=ОбшОвка Оз Ўеш +item.cladding_ghiorsium.name=ПрПклаЎка Оз гОПрсОя +item.cladding_iron.name=ЖелезМая ПбшОвка +item.cladding_lead.name=СвОМцПвая ПбшОвка +item.cladding_obsidian.name=ПрПклаЎка Оз ПбсОЎОаМа +item.cladding_paint.name=СвОМцПвая краска +item.cladding_rubber.name=РезОМПвая ПбшОвка +item.clay_tablet.name=Clay Tablet +item.clip_bf.name=ДвПйМПй НабПр Жар-сМаряЎПв +item.clip_bolt_action.name=КПрПбка Оз 12х74 пуль +item.clip_cryolator.name=Бак КрОПлятПрМПгП тПплОва +item.clip_defabricator.name=ППяс с эМергП-ячейкаЌО ДефабрОкатПра +item.clip_emp.name=НебПльшПй упакПвка эМергетОческОх ячеек +item.clip_euthanasia.name=ППслеЎМяя аптечка +item.clip_fatman.name=Кесть упакПвПк яЎерМых ЌОМО-сМаряЎПв +item.clip_hp.name=ЧерМОльМые БакО +item.clip_immolator.name=Бак с тПплОвПЌ ИЌЌПлятПра +item.clip_jack.name=КПрПбка четверМых патрПМПв картечО 12х70 +item.clip_lever_action.name=КПрПбка патрПМПв картечО 12х74 +item.clip_mirv.name=ТрО-в-ПЎМПЌ пакет ЌОМО-МИРВПв +item.clip_mp.name=БрОтаМскОй вПеММый стаМЎарт ЌагазОМа штурЌПвПй вОМтПвкО +item.clip_mp40.name=ОбПйЌа пПлуавтПЌата 9ЌЌ +item.clip_osipr.name=ОбПйЌа AR2 +item.clip_revolver.name=КПрПбПчка патрПМПв калОбра .357 +item.clip_revolver_cursed.name=БрОтаМскОй вПеММый стаМЎарт пОстПлетМПй ПбПйЌы +item.clip_revolver_gold.name=МалеМькОй суМЎучПк с зПлПтыЌО пуляЌО +item.clip_revolver_iron.name=КПрПбка с железМыЌО патрПМаЌО +item.clip_revolver_lead.name=КПрПбка яЎерМых пуль +item.clip_revolver_nightmare.name=МешПчек с пуляЌО +item.clip_revolver_nightmare2.name=ППяс с лазерМПй картечью +item.clip_revolver_nopip.name=КПрПбПчка с патрПМаЌО .44 калОбра +item.clip_revolver_pip.name=СкПрПстМПй загрузчОк с заражёММыЌО пуляЌО +item.clip_revolver_schrabidium.name=КПМтейМер Ўля шрабОЎОевых бПепрОпасПв +item.clip_rpg.name=КПМтейМер с ракетаЌО +item.clip_spark.name=БПльшПй ЭлектрПЌагМОтМый КартрОЎж +item.clip_stinger.name=УпакПвка ракет "СтОМгер" +item.clip_uboinik.name=КПрПбка патрПМПв картечО 12x70 +item.clip_uzi.name=ОбПйЌа .22 LR ПатрПМПв +item.clip_xvl1456.name=БПльшая КПрПбка с ОзПтПпаЌО +item.cmb_axe.name=ТПпПр Оз сталО АльяМса +item.cmb_boots.name=БПтОМкО Оз сталО АльяМса +item.cmb_helmet.name=КлеЌ Оз сталО АльяМса +item.cmb_hoe.name=МПтыга Оз сталО АльяМса +item.cmb_legs.name=ППМПжО Оз сталО АльяМса +item.cmb_pickaxe.name=КОрка Оз сталО АльяМса +item.cmb_plate.name=НагруЎМОк Оз сталО АльяМса +item.cmb_shovel.name=ЛПпата Оз сталО АльяМса +item.cmb_sword.name=Меч Оз сталО АльяМса +item.coal_infernal.name=АЎскОй угПль +item.cobalt_axe.name=КПбальтПвый тПпПр +item.cobalt_boots.name=КПбальтПвые бПтОМкО +item.cobalt_decorated_axe.name=ДекПрОрПваММый кПбальтПвый тПпПр +item.cobalt_decorated_hoe.name=ДекПрОрПваММая кПбальтПвая ЌПтыга +item.cobalt_decorated_pickaxe.name=ДекПрОрПваММая кПбальтПвая кОрка +item.cobalt_decorated_shovel.name=ДекПрОрПваММая кПбальтПвая лПпата +item.cobalt_decorated_sword.name=ДекПрОрПваММый кПбальтПвый Ќеч +item.cobalt_helmet.name=КПбальтПвый шлеЌ +item.cobalt_hoe.name=КПбальтПвая ЌПтыга +item.cobalt_legs.name=КПбальтПвые пПМПжО +item.cobalt_pickaxe.name=КПбальтПвая кОрка +item.cobalt_plate.name=КПбальтПвый МагруЎМОк +item.cobalt_shovel.name=КПбальтПвая лПпата +item.cobalt_sword.name=КПбальтПвый Ќеч +item.coffee.name=КПфе +item.coffee_radium.name=КПфе с раЎОеЌ +item.coil_advanced_alloy.name=СверхпрПвПЎящая катушка +item.coil_advanced_torus.name=СверхпрПвПЎящая кПльцевая катушка +item.coil_copper.name=МеЎМая катушка +item.coil_copper_torus.name=КПльцевая катушка +item.coil_gold.name=ЗПлПтая катушка +item.coil_gold_torus.name=ЗПлПтая кПльцевая катушка +item.coil_magnetized_tungsten.name=4000K ВысПкПтеЌпературМая сверхпрПвПЎящая катушка +item.coil_tungsten.name=НагревательМый элеЌеМт +item.coin_creeper.name=МПМета ЯЎерМПгП крОпера +item.coin_maskman.name=МПМета МаскЌеМа +item.coin_radiation.name=МПМета РаЎОацОО +item.coin_siege.name=МПМета ПсаЎы +item.coin_ufo.name=МПМета НЛО +item.coin_worm.name=МПМета Баллс-О-ТрПМ +item.coke.coal.name=УгПльМый кПкс +item.coke.lignite.name=Бурый кПкс +item.coke.petroleum.name=НефтяМПй кПкс +item.coltan_tool.name=КПлтасс +item.combine_scrap.name=МеталлПлПЌ АльяМса +item.component_emitter.name=КПЌпПМеМт Озлучателя +item.component_limiter.name=КПЌпПМеМт стабОлОзатПра +item.containment_box.name=ЗащОтМая кПрПбка +item.cordite.name=КПрЎОт +item.cotton_candy.name=РаЎОПактОвМая сахарМая вата +item.crackpipe.name=ОзЎПрПвОтельМая трубка +item.crate_caller.name=ЗапрПсчОк пПставкО прОпасПв +item.crayon.black.name=ЧерМый ЌелПк +item.crayon.blue.name=СОМОй ЌелПк +item.crayon.brown.name=КПрОчМевый ЌелПк +item.crayon.cyan.name=ГПлубПй ЌелПк +item.crayon.gray.name=Серый ЌелПк +item.crayon.green.name=ЗелёМый ЌелПк +item.crayon.lightblue.name=СветлП-сОМОй ЌелПк +item.crayon.lime.name=ЛайЌПвый ЌелПк +item.crayon.magenta.name=ПурпурМый ЌелПк +item.crayon.orange.name=ОраМжевый ЌелПк +item.crayon.pink.name=РПзПвый ЌелПк +item.crayon.purple.name=ЀОПлетПвый ЌелПк +item.crayon.red.name=КрасМый ЌелПк +item.crayon.silver.name=СветлП-серый ЌелПк +item.crayon.white.name=Белый ЌелПкitem.crayon.yellow.name=Желтый ЌелПк +item.crowbar.name=Mk.V УстрПйствП Для ВскрытОя ЯщОкПв "ЛПЌ" +item.crucible.name="ГПрМОлП Палача" +item.crucible_template.name=КаблПМ плавОльМО: +item.crystal_aluminium.name=КрОсталлОзПваММый алюЌОМОй +item.crystal_beryllium.name=КрОсталлОзПваММый берОллОй +item.crystal_charred.name=ОбуглеММый крОсталл +item.crystal_charred.desc=ВысПкПкачествеММый сОлОкат, слегка ПбПжжеММый. +item.crystal_charred.desc.P11=Также МастПящОй рПг. СтраММП, правЎа? +item.crystal_coal.name=КрОсталлОзПваММый угПль +item.crystal_cobalt.name=КрОсталОзПваММый кПбальт +item.crystal_copper.name=КрОсталлОзПваММая ЌеЎь +item.crystal_cinnebar.name=КрОсталлОзПваММая кОМПварь +item.crystal_diamond.name=КрОсталОзПваММый алЌаз +item.crystal_energy.name=ЭМергетОческОй крОсталл +item.crystal_fluorite.name=КрОсталлОзПваММый флюПрОт +item.crystal_gold.name=КрОсталлОзПваММПе зПлПтП +item.crystal_horn.name=КрОсталльМый рПг +item.crystal_horn.desc=Не МастПящОй рПг. +item.crystal_horn.desc.P11=НастПящОй рПг. +item.crystal_iron.name=КрОсталлОзПваММПе железП +item.crystal_lead.name=КрОсталлОзПваММый свОМец +item.crystal_lapis.name=КрОсталОзПваММый лазурОт +item.crystal_lithium.name=КрОсталОзПваММый лОтОй +item.crystal_niter.name=КрОсталлОзПваММая селОтра +item.crystal_osmiridium.name=КрОсталОзПваММый ПсЌОрОЎОй +item.crystal_phosphorus.name=КрОсталлОзПваММый фПсфПр +item.crystal_plutonium.name=КрОсталлОзПваММый плутПМОй +item.crystal_rare.name=КрОсталОзПваММые лаМтаМПОЎы +item.crystal_redstone.name=КрОсталлОзПваММая красМая пыль +item.crystal_schrabidium.name=КрОсталлОзПваММый шрабОЎОй +item.crystal_schraranium.name=КрОсталлОзПваММый шрараМОй +item.crystal_starmetal.name=КрОсталОзПваММый звёзЎМый Ќеталл +item.crystal_sulfur.name=КрОсталлОзПваММая сера +item.crystal_thorium.name=КрОсталлОзПваММый тПрОй +item.crystal_titanium.name=КрОсталлОзПваММый тОтаМ +item.crystal_trixite.name=КрОсталлОзПваММый трОксОт +item.crystal_tungsten.name=КрОсталлОзПваММый вПльфраЌ +item.crystal_uranium.name=КрОсталлОзПваММый ураМ +item.crystal_xen.name=ИскусствеММый крОсталл ЗеМа +item.crt_display.name=ЭлектрПММП-лучевая трубка +item.cube_power.name=Куб электрПМОя +item.custom_amat.name=АМтОвеществеММый заряЎ кастПЌМПй бПЌбы +item.custom_dirty.name=ГрязМый заряЎ кастПЌМПй бПЌбы +item.custom_fall.name=УлучшеМОе кастПЌМПй бПЌбы (УЎар с Меба) +item.custom_fall.desc=ЭтП тП, чегП вы все тааааааак жЎалО!$Сбрасывает бПЌбу прО актОвацОО +item.custom_hydro.name=ВПЎПрПЎМый заряЎ кастПЌМПй бПЌбы +item.custom_kit.name=КПЌплект ППльзПвательскПй бПЌбы +item.custom_nuke.name=ЯЎерМый заряЎ кастПЌМПй бПЌбы +item.custom_schrab.name=КрабОЎОевый заряЎ кастПЌМПй бПЌбы +item.custom_tnt.name=ВзрывМПй заряЎ кастПЌМПй бПЌбы +item.cyclotron_tower.name=БашМя цОклПтрПМа +item.debris_concrete.name=БПльшПй кусПк бетПМа +item.debris_element.name=ППврежЎёММый тПплОвМый элеЌеМт +item.debris_exchanger.name=ОблПЌПк теплППбЌеМОка +item.debris_fuel.name=Часть тПплОвМПгП стержМя РБМК +item.debris_graphite.name=ГПрячОй кусПк графОта +item.debris_metal.name=ППкПрёжеММая ЌеталлОческая балка +item.debris_shrapnel.name=МеталлОческая шрапМель +item.definitelyfood.name=ИРП +item.defuser.name=ВысПкПтехМПлПгОчМПе устрПйствП Ўля разЌОМОрПваМОя +item.defuser_gold.name=ЗПлПтые кусачкО +item.demon_core_closed.name=Закрытый ЗаряЎ-ДеЌПМ +item.demon_core_open.name=ПрОПстаМПвлеММый ЗаряЎ-ДеЌПМ +item.desh_axe.name=ТПпПр Оз рабПчегП сплава +item.desh_hoe.name=МПтыга Оз рабПчегП сплава +item.desh_pickaxe.name=КОрка Оз рабПчегП сплава +item.desh_shovel.name=ЛПпата Оз рабПчегП сплава +item.desh_sword.name=Меч Оз рабПчегП сплава +item.designator.name=Њелеуказатель блОжМегП ЎействОя +item.designator_arty_range.name=АртОллерОйскОй целеуказатель +item.designator_manual.name=РучМПй целеуказатель +item.designator_range.name=Њелеуказатель ЎальМегП ЎействОя +item.detonator.name=ДетПМатПр +item.detonator_de.name=Взрывчатка Ќертвеца +item.detonator_deadman.name=ДетПМатПр Ќертвеца +item.detonator_laser.name=ЛазерМый ЎетПМатПр +item.detonator_multi.name=МультО-ЎетПМатПр +item.deuterium_filter.name=ДейтерОевый фОльтр +item.diamond_gavel.name=АлЌазМый ЌПлПтПк +item.dieselsuit_boots.name=ВысПкОе каблукО с ЎОзельМыЌ ЎвОгателеЌ +item.dieselsuit_helmet.name=ГПлПвМПй ЎатчОк Пкружающей среЎы с ЎОзельМыЌ ЎвОгателеЌ +item.dieselsuit_legs.name=СервПпрОвПЎы Ўля МПг с ЎОзельМыЌ прОвПЎПЌ +item.dieselsuit_plate.name=КОберМетОка с ЎОзельМыЌ ЎвОгателеЌ +item.digamma_diagnostic.name=ДОагМПстОка ЎОгаЌЌы +item.disperser_canister.name= КаМОстра рассеОвателя: +item.disperser_canister_empty.name= КаМОстра рассеОвателя +item.dns_boots.name=БПтОМкО DNT-НаМПкПстюЌа +item.dns_legs.name=ППМПжО DNT-НаМПкПстюЌа +item.dns_helmet.name=КлеЌ DNT-НаМПкПстюЌа +item.dns_plate.name=НагруЎМОк DNT-НаМПкПстюЌа +item.dnt_boots.name=ЎаеМайтрОевые бПтОМкО +item.dnt_legs.name=ЎОМейтрПМПвые пПМПжО +item.dnt_helmet.name=ЎОМПтрПМОЌу шлеЌ +item.dnt_plate.name=ЎОМейтрПЌы МагруЎМОк +item.dnt_sword.name=dinuatureum sword +item.door_bunker.name=БуМкерМая Ўверь item.door_metal.name=МеталлОческая Ўверь item.door_office.name=ОфОсМая Ўверь -item.door_bunker.name=БуМкерМая Ўверь -tile.door_metal.name=МеталлОческая Ўверь -tile.door_office.name=ОфОсМая Ўверь -tile.door_bunker.name=БуМкерМая Ўверь item.door_red.name=КрасМая Ўверь -tile.door_red.name=КрасМая Ўверь -tile.sliding_blast_door.name=РазЎвОжМая Ўверь -item.sliding_blast_door_skin.0.name=СкОМ разЎвОжМПй ЎверО: ОбычМый -item.sliding_blast_door_skin.1.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 1 -item.sliding_blast_door_skin.2.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 2 -tile.large_vehicle_door.name=Дверь Ўля крупМПгабарОтМых автПЌПбОлей -tile.water_door.name=ППЎвПЎМая Ўверь -tile.qe_containment.name=QE Дверь бОПлПгОческПгП сЎержОваМОя -tile.qe_sliding_door.name=QE РазЎвОжМая Ўверь -tile.round_airlock_door.name=Круглый шлюз -tile.secure_access_door.name=Дверь с ОзПлОрПваММыЌ ЎПступПЌ -tile.sliding_seal_door.name=РазЎвОжМая герЌетОчМая Ўверь - -item.nugget_uranium.name=УраМПвый саЌПрПЎПк -item.nugget_plutonium.name=ПлутПМОевый саЌПрПЎПк -item.nugget_neptunium.name=НептуМОевый саЌПрПЎПк -item.nugget_neptunium_fuel.name=СаЌПрПЎПк МептуМОевПгП тПплОва -item.ingot_neptunium.name=НептуМОевый слОтПк -item.ingot_neptunium.desc=ВПт этПт ЌПй любОЌый! -item.ingot_neptunium.desc.P11=УУУ, страшМП! -item.ingot_ferrouranium.name=ЀеррПураМОевый слОтПк -item.nugget_lead.name=СвОМцПвый саЌПрПЎПк -item.ingot_lead.name=СвОМцПвый слОтПк -tile.block_lead.name=СвОМцПвый блПк -tile.ore_lead.name=СвОМцПвая руЎа -item.powder_lead.name=СвОМцПвый пПрПшПк -item.powder_neptunium.name=НептуМОевый пПрПшПк -item.powder_schrabidium.name=КрабОЎОевый пПрПшПк -item.powder_iron.name=ЖелезМый пПрПшПк -item.powder_gold.name=ЗПлПтПй пПрПшПк -item.powder_aluminium.name=АлюЌОМОевый пПрПшПк -item.powder_asbestos.name=АсбестПвый пПрПшПк -item.powder_asbestos.desc=§o"ЀЀЀЀЀЀЀЀЀЀ- ММХХХХХХХХХХХХХ"§r -item.powder_beryllium.name=БерОллОевый пПрПшПк -item.powder_copper.name=МеЎМый пПрПшПк -item.powder_titanium.name=ТОтаМПвый пПрПшПк -item.powder_tungsten.name=ВПльфраЌПвый пПрПшПк -item.powder_uranium.name=УраМПвый пПрПшПк -item.powder_plutonium.name=ПлутПМОевый пПрПшПк +item.dosimeter.name=ДПзОЌетр +item.drax.name=Терра-бур +item.drax_mk2.name=УсОлеММый терра-бур +item.drax_mk3.name=КрабОЎОевый терра-бур +item.drillbit_desh.name=Деш-гПлПвка бура +item.drillbit_desh_diamond.name=Деш-гПлПвка бура (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_ferro.name=ГПлПвка бура Оз феррПураМа +item.drillbit_ferro_diamond.name=ГПлПвка бура Оз феррПураМа (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_hss.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО +item.drillbit_hss_diamond.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_steel.name=ГПлПвка бура Оз сталО +item.drillbit_steel_diamond.name=ГПлПвка бура Оз сталО (с алЌазМыЌ МапылеМОеЌ) +item.drillbit_tcalloy.name=ГПлПвка бура Оз техМецОевПй сталО +item.drillbit_tcalloy_diamond.name=ГПлПвка бура Оз техМецОевПй сталО (с алЌазМыЌ МапылеМОеЌ) +item.drill_titanium.name=ТОтаМПвый бур +item.drone.patrol.name=ТраМспПртМый ЎрПМ +item.drone.patrol.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. +item.drone.patrol_chunkloading.name=ТраМспПртМый ЎрПМ (ЧаМклПаЎер) +item.drone.patrol_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! +item.drone.patrol_express.name=Быстрый траМспПртМый ЎрПМ +item.drone.patrol_express.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк Ма ящОке с ЎрПМаЌО Ўля разЌещеМОя. +item.drone.patrol_express_chunkloading.name=Быстрый траМспПртМый ЎрПМ (ЧаМклПаЎер) +item.drone.patrol_express_chunkloading.desc=Путешествует пП Ќаршруту с путевыЌО тПчкаЌО$Пытается загрузОться/разгрузОться кажЎый раз, кПгЎа ЎПстОгает ящОка с ЎрПМаЌО$Правый клОк пПверх ящОка с ЎрПМаЌО Ўля разЌещеМОя.$Загружает кускО! +item.drone.request.name=ЛПгОстОческОй ЎрПМ +item.drone.request.desc=ИспПльзуется ЎПкаЌО лПгОстОческОх ЎрПМПв Ўля пПрПжЎеМОя лПгОстОческОх ЎрПМПв$ДрПМы слеЎуют пП путевыЌ тПчкаЌ лПгОстОческОх ЎрПМПв$ППсле выпПлМеМОя запрПса ЎрПМ вПзвращается в ЎПк. +item.drone_linker.name=СПеЎОМОтель пассОвМых ящОкПв Ўля ЎрПМПв +item.ducttape.name=СкПтч item.dust.name=Пыль item.dust.desc=НеМавОжу пыль! item.dust.desc.P11=Ещё ПЎОМ паЎает в пыль! item.dust_tiny.name=Кучка пылО -item.powder_chlorophyte.name=ХлПрПфОтПвый пПрПшПк -item.powder_coal.name=УгПльМый пПрПшПк -item.powder_lapis.name=ЛазурОтМый пПрПшПк -item.powder_emerald.name=ИзуЌруЎМый пПрПшПк -item.powder_diamond.name=АлЌазМый пПрПшПк -item.powder_red_copper.name=КрасМПЌеЎМый пПрПшПк -item.powder_steel.name=СтальМПй пПрПшПк -item.powder_tcalloy.name=ППрПшПк техМецОевПй сталО -item.powder_magnetized_tungsten.name=ИзЌельчеММый МаЌагМОчеММый вПльфраЌ -item.powder_combine_steel.name=ИзЌельчеММая сталь АльяМса -item.powder_lithium.name=ЛОтОевый пПрПшПк -item.powder_advanced_alloy.name=ППрПшПк прПЎвОМутПгП сплава -item.powder_quartz.name=Кварцевый пПрПшПк -item.powder_power.name=ЭМергП-пПрПшПк -item.powder_semtex_mix.name=СЌесь сеЌтекса -item.powder_iodine.name=ППрПшПк ОПЎа -item.powder_thorium.name=ТПрОевый пПрПшПк -item.powder_neodymium.name=НеПЎОЌПвый пПрПшПк -item.powder_astatine.name=АстатПвый пПрПшПк -item.powder_caesium.name=ЊезОевый пПрПшПк -item.powder_balefire.name=ТерЌПяЎерМый пепел -item.powder_australium.name=АвстралОевый пПрПшПк -item.powder_weidanium.name=ВейЎаМПвый пПрПшПк -item.powder_reiium.name=РеОевый пПрПшПк -item.powder_unobtainium.name=НеЎПстатОевый пПрПшПк -item.powder_daffergon.name=ДаффергПМПвый пПрПшПк -item.powder_verticium.name=ВертОцОевый пПрПшПк -item.powder_strontium.name=СтрПМцОевый пПрПшПк -item.powder_cobalt.name=КПбальтПвый пПрПшПк -item.powder_bromine.name=ППрПшПк брПЌа -item.powder_niobium.name=НОПбОевый пПрПшПк -item.powder_tennessine.name=ТеММессОМПвый пПрПшПк -item.powder_cerium.name=ЊерОевый пПрПшПк -item.powder_dura_steel.name=ИзЌельчеММая высПкПскПрПстМая сталь -item.powder_polonium.name=ППрПшПк пПлПМОя-210 -item.powder_polymer.name=ППлОЌерМый пПрПшПк -item.powder_bakelite.name=БакелОтПвый пПрПшПк -item.powder_lanthanium.name=ЛаМтаМПвый пПрПшПк -item.powder_actinium.name=АктОМОевый пПрПшПк -item.powder_coal_tiny.name=Кучка угПльМПгП пПрПшка -item.powder_lithium_tiny.name=Кучка лОтОевПгП пПрПшка -item.powder_cobalt_tiny.name=Кучка кПбальтПвПгП пПрПшка -item.powder_neodymium_tiny.name=Кучка МеПЎОЌПвПгП пПрПшка -item.powder_niobium_tiny.name=Кучка МОПбОевПгП пПрПшка -item.powder_cerium_tiny.name=Кучка церОевПгП пПрПшка -item.powder_lanthanium_tiny.name=Кучка лаМтаМПвПгП пПрПшка -item.powder_actinium_tiny.name=Кучка актОМОевПгП пПрПшка -item.powder_euphemium.name=ЭвфеЌОевый пПрПшПк -item.powder_euphemium.desc=ИзЌельчеММый рПзПвый.$На вкус как клубМОка. -item.powder_meteorite.name=МетеПрОтМый пПрПшПк -item.powder_meteorite_tiny.name=Кучка ЌетеПрОтМПгП пПрПшка -item.powder_yellowcake.name=ЙеллПукейк -item.powder_magic.name=ИзЌельчеММПе зачарПваМОе -item.redstone_depleted.name=ОбесцвечеММая красМая пыль -item.powder_steel_tiny.name=Кучка стальМПгП пПрПшка +item.dwarven_pickaxe.name=ДварфОйская кОрка +item.dynosphere_base.name=КаблПМ ДОМПсферы +item.dynosphere_desh.name=ДОМПсфера Оз Ўеш +item.dynosphere_desh_charged.name=ДОМПсфера Оз Ўеш (ЗаряжеММая) +item.dynosphere_dineutronium.name=ДОМейтрПМОевая ЎОМПсфера +item.dynosphere_dineutronium_charged.name=ДОМейтрПМОевая ЎОМПсфера (ЗаряжеММая) +item.dynosphere_euphemium.name=ЭвфеЌОевая ЎОМПсфера +item.dynosphere_euphemium_charged.name=ЭвфеЌОевая ЎОМПсфера (ЗаряжеММая) +item.dynosphere_schrabidium.name=КрабОЎОевая ЎОМПсфера +item.dynosphere_schrabidium_charged.name=КрабОЎОевая ЎОМПсфера (ЗаряжеММая) +item.dysfunctional_reactor.name=НерабПчОй яЎерМый реактПр +item.early_explosive_lenses.name=НабПр взрывППпасМых лОМз первПгП пПкПлеМОя +item.early_explosive_lenses.desc=СбПрка Оз 8 ПскПлПчМП-фугасМых лОМз с алюЌОМОевыЌ$тПлкателеЌ, ЎюралюЌОМОевПй ПбПлПчкПй О прПвПлПчМыЌО ЎетПМатПраЌО. +item.egg_balefire.name=Жар-яйцП +item.egg_balefire.desc=Какая птОца ПтклаЎывает раЎОПактОвМые яйца? +item.egg_balefire_shard.name=Жар-ПскПлПк +item.egg_glyphid.name=ЯйцП глОфОЎПв +item.elec_axe.name=ЭлектрПпОла +item.elec_pickaxe.name=УЎарМый бур +item.elec_shovel.name=СпОральМый бур +item.elec_sword.name=ЭлектрПЎубОМка +item.energy_core.name=ИЌпрПвОзОрПваММый эМергПблПк +item.entanglement_kit.name=КПЌплект Ўля кваМтПвПгП запутываМОя +item.entanglement_kit.desc=ПреЎЌет Ўля сПзЎаМОя телепПрта.$ППзвПляет сЌещать ОзЌереМОя с пПЌПщью скаМера ресурсПв, улучшеММПгП берОллОеЌ. +item.envsuit_boots.name=БПтОМкО защОтМПгП кПстюЌа M1TTY +item.envsuit_helmet.name=КлеЌ защОтМПгП кПстюЌа M1TTY +item.envsuit_legs.name=ППМПжО защОтМПгП кПстюЌа M1TTY +item.envsuit_plate.name=НагруЎМОк защОтМПгП кПстюЌа M1TTY +item.euphemium_boots.name=ЭвфеЌОевые бПтОМкО +item.euphemium_capacitor.name=ЭвфеЌОевый кПМЎеМсатПр +item.euphemium_capacitor.desc=ППзвПляет пассОвМП рассеОвать МакПплеММую пПлПжОтельМую эМергОю. +item.euphemium_helmet.name=ЭвфеЌОевый шлеЌ +item.euphemium_kit.name=ЭвфеЌОевый кПЌплект +item.euphemium_legs.name=ЭвфеЌОевые пПМПжО +item.euphemium_plate.name=ЭвфеЌОевый МагруЎМОк +item.euphemium_stopper.name=ОграМОчОтель +item.explosive_lenses.name=НабПр взрывППпасМых лОМз +item.explosive_lenses.desc=СбПрка Оз 8 лОМз Оз пластОчМПй взрывчаткО с тПМкОЌ$алюЌОМОевыЌ тПлкателеЌ, ЎюралюЌОМОевыЌ кПрпусПЌ О$ЌОМОатюрМыЌО ЌПстПвыЌО ЎетПМатПраЌО. +item.fabsols_vodka.name=ВПЎка Fabsol'а +item.factory_core_advanced.name=ЭМергетОческОй кластер усПвершеМствПваММПй фабрОкО +item.factory_core_titanium.name=ЭМергетОческОй кластер базПвПй фабрОкО item.fallout.name=Куча раЎОПактОвМых ПсаЎкПв -item.powder_zirconium.name=ЊОркПМОевый пПрПшПк -item.powder_boron.name=БПрМый пПрПшПк -item.powder_borax.name=Бура -item.powder_chlorocalcite.name=ХлПркальцОт -item.powder_molysite.name=МПлОзОт -item.powder_boron_tiny.name=Кучка бПрМПгП пПрПшка -item.powder_at209.name=ППрПшПк астата-209 -item.powder_au198.name=ППрПшПк зПлПта-198 -item.powder_co60.name=ППрПшПк кПбальта-60 -item.powder_cs137.name=ППрПшПк цезОя-137 -item.powder_i131.name=ППрПшПк ОПЎа-131 -item.powder_i131_tiny.name=Кучка пПрПшка ОПЎа-131 -item.powder_xe135.name=ППрПшПк ксеМПМа-135 -item.powder_xe135_tiny.name=Кучка пПрПшка ксеМПМа-135 -item.powder_cs137_tiny.name=Кучка пПрПшка цезОя-137 -item.powder_coltan.name=ОчОщеММый таМталОт -item.powder_coltan_ore.name=ИзЌельчеММый КПлтаМ -item.powder_tantalium.name=ППрПшПк таМтала -item.powder_tantalium.desc='ТаМталуЌ' -item.powder_tantalium.desc.P11=АКА ТаМталОй. -item.powder_impure_osmiridium.name=ППрПшПк загрязМёММПгП ПсЌОрОЎОя -item.powder_paleogenite.name=ППрПшПк палеПгеМОта -item.powder_paleogenite_tiny.name=Кучка палеПгеМОтПвПгП пПрПшка -item.powder_tektite.name=ППрПшПк тектОта -item.powder_ra226.name=ППрПшПк раЎОя-226 -item.powder_sr90.name=ППрПшПк стрПМцОя-90 -item.powder_sr90_tiny.name=Кучка пПрПшка стрПМцОя-90 -item.powder_sawdust.name=ДревесМые ПпОлкО -item.powder_flux.name=Ѐлюс -item.powder_sodium.name=НатрОй - -item.fragment_neodymium.name=НеПЎОЌПвый ПскПлПк -item.fragment_cobalt.name=КПбальтПвый ПскПлПк -item.fragment_niobium.name=НОПбОевый ПскПлПк -item.fragment_cerium.name=ЊерОевый ПскПлПк -item.fragment_lanthanium.name=ЛаМтаМПвый ПскПлПк +item.fau_boots.name=Ѐау-бПтОМкО +item.fau_helmet.name=Ѐау-шлеЌ +item.fau_legs.name=Ѐау-пПМПжО +item.fau_plate.name=Ѐау-МагруЎМОк +item.filter_coal.name=ЀОльтр с актОвОрПваММыЌ углёЌ +item.fins_big_steel.name=БПльшОе стальМые ребра решеткО +item.fins_flat.name=ПлПскОй стальМПй кПжух +item.fins_quad_titanium.name=МалеМькОе тОтаМПвые ребра +item.fins_small_steel.name=Малые стальМые ребра решеткО +item.fins_tri_steel.name=БПльшОе стальМые ребра +item.five_htp.name=ТаблеткО эМтераЌОМа +item.five_htp.desc=УбОрает все DRX, СтабОльМПсть Ма 10 ЌОМут +item.flame_conspiracy.name=КПМспОрПлПгОческая теПрОя +item.flame_conspiracy.desc=СтальМые балкО Ме ЌПгут расплавОть реактОвМПе тПплОвП! +item.flame_opinion.name=СПбствеММПе ЌМеМОе +item.flame_opinion.desc=ЧтП ж, ЌМе этП МравОтся... +item.flame_politics.name=ППлОтОческая теЌа +item.flame_politics.desc=ДПМальЎ Дак пПстрПОт стеМу! +item.flame_pony.name=КартОМка цветМПй лПшаЎО +item.flame_pony.desc=Желтая лПшаЎь пПбежЎает сОМюю лПшаЎь, этП ЎПказаММый факт! +item.flask_infusion.shield.name=ЭлОксОр защОты +item.fleija_core.name=ЗаряЎ Ѐ.Л.Е.И Оз ураМа 235 +item.fleija_igniter.name=ИЌпульсМый вПсплаЌеМОтель +item.fleija_kit.name=КПЌплект Ѐ.Л.Е.Я +item.fleija_propellant.name=КрабОЎОевая взрывчатка +item.fluid_barrel_empty.name=Пустая бПчка Ўля жОЎкПстО +item.fluid_barrel_full.name=ЖОЎкПстМая бПчка: +item.fluid_barrel_infinite.name=БескПМечМая жОЎкПстМая бПчка +item.fluid_duct.name=ЖОЎкПстМая труба: +item.fluid_identifier.name=ИЎеМтОфОкатПр жОЎкПстО +item.fluid_identifier.info=УМОверсальМый ОЎеМтОфОкатПр жОЎкПстО: +item.fluid_identifier.usage0=Правая кМПпка ЌышО пП трубаЌ, чтПбы ПбПзМачОть Ох Ўля этПй жОЎкПстО. +item.fluid_identifier.usage1=SHIFT+ПКМ пП трубаЌ чтПбы ПбПзМачОть блОжайшОе трубы +item.fluid_identifier.usage2=в раЎОусе 64 блПкПв. +item.fluid_identifier_multi.name=МультО-жОЎкПстМый ОЎеМтОфОкатПр +item.fluid_identifier_multi.info=ЖОЎкПстМый ОЎеМтОфОкатПр Ўля: +item.fluid_identifier_multi.info2=ВтПрПй тОп: +item.fluid_tank_empty.name=ПустПй уМОверсальМый резервуар Ўля жОЎкПстО +item.fluid_tank_full.name=УМОверсальМый резервуар Ўля жОЎкПстО: +item.fluid_tank_lead_empty.name=ПустПй резервуар Ўля ПпасМых ЌатерОалПв +item.fluid_tank_lead_full.name=Резервуар с ПпасМыЌО ЌатерОалаЌО: +item.fluorite.name=ЀлюПрОт +item.flywheel_beryllium.name=БерОллевый ЌахПвОк +item.fmn.name=Таблетка флуМОтразепаЌа +item.fmn.desc=УбОрает все DRX бПлее 2,000mDRX +item.folly_bullet.name=12.8сЌ ВысПкПэМергетОческая ПбПлПчка Оз звёзЎМПгП Ќеталла +item.folly_bullet_du.name=12.8сЌ ДУ-ПбПлПчка +item.folly_bullet_nuclear.name=12.8сЌ ЯЎерМая ПбПлПчка +item.folly_shell.name=ОбПлПчка серебряМПй пулО +item.fooditem.name=пОщевПй прПЎукт item.fragment_actinium.name=АктОМОевый-227 ПскПлПк item.fragment_boron.name=БПрМый ПскПлПк -item.fragment_meteorite.name=МетеПрОтМый ПскПлПк +item.fragment_cerium.name=ЊерОевый ПскПлПк +item.fragment_cobalt.name=КПбальтПвый ПскПлПк item.fragment_coltan.name=КПлтаМ - -item.battery_generic.name=АккуЌулятПр -item.battery_advanced.name=ПрПЎвОМутый аккуЌулятПр -item.battery_lithium.name=ЛОтОй-ОПММый аккуЌулятПр -item.battery_schrabidium.name=КрабОЎОевая батарея -item.battery_spark.name=Спарк-батарея -item.battery_creative.name=БескПМечМая батарейка -item.battery_su.name=ОЎМПразПвая батарейка -item.battery_su_l.name=БПльшая ПЎМПразПвая батарейка -item.battery_trixite.name=БезыЌяММая спарк-батарея -item.battery_steam.name=ПарПвПй бак Ўля храМеМОя эМергОО -item.battery_steam_large.name=БПльшПй парПвПй бак Ўля храМеМОя эМергОО -item.battery_potato.name=КартПфельМая батарейка -item.battery_potatos.name=КартПшкОС -item.battery_red_cell.name=ЭМергПячейка Оз красМПй пылО -item.battery_advanced_cell.name=УсПвершеМствПваММая эМергПячейка -item.battery_lithium_cell.name=ЛОтОй-ОПММая эМергПячейка -item.battery_schrabidium_cell.name=КрабОЎОевая эМергПячейка -item.battery_red_cell_6.name=СшестёреММая эМергПячейка Оз красМПй пылО -item.battery_advanced_cell_4.name=СчетверёММая усПвершеМствПваММая эМергПячейка -item.battery_lithium_cell_3.name=СтрПеММая лОтОй-ОПММая эМергПячейка -item.battery_schrabidium_cell_2.name=СЎвПеММая шрабОЎОевая эМергПячейка -item.battery_red_cell_24.name=ДваЎцатОчетырёхкратМый ЌассОв Оз красМПпыльМых эМергПячеек -item.battery_advanced_cell_12.name=ДвеМаЎцатОкратМый ЌассОв Оз усПвершеМствПваММых эМергПячеек -item.battery_lithium_cell_6.name=СшестерёММая лОтОй-ОПММая эМергПячейка -item.battery_schrabidium_cell_4.name=СчетверёММая шрабОЎОевая эМергПячейка -item.battery_spark_cell_6.name=Спарк-эМергПячейка -item.battery_spark_cell_25.name=Спарк-МагОческОй аккуЌулятПр -item.battery_spark_cell_100.name=Спарк-МагОческОй ЌассОв храМеМОя эМергОО -item.battery_spark_cell_1000.name=Спарк-МагОческая Ќасс-эМергетОческая пустПта -item.battery_spark_cell_2500.name=Спарк-МагОческПе ЌПре ДОрака -item.battery_spark_cell_10000.name=УстПйчОвый прПстраМствеММП-вреЌеММПй спарк-крОсталл -item.battery_spark_cell_power.name=АбсурЎМый фОзОческОй спарк-блПк МакПплеМОя эМергОО -item.battery_sc_americium.name=СаЌПзаряжающаяся батарея с аЌерОцОеЌ-241 -item.battery_sc_gold.name=СаЌПзаряжающаяся батарея с зПлПтПЌ-198 -item.battery_sc_plutonium.name=СаЌПзаряжающаяся батарея с плутПМОеЌ-238 -item.battery_sc_polonium.name=СаЌПзаряжающаяся батарея с пПлПМОеЌ-210 -item.battery_sc_technetium.name=СаЌПзаряжающаяся батарея с техМецОеЌ-98 -item.battery_sc_uranium.name=СаЌПзаряжающаяся батарея с ураМПЌ-238 -item.battery_sc_lead.name=СаЌПзаряжающаяся батарея сП свОМцПЌ-209 - -item.upgrade_template.name=КаблПМ улучшеМОя ЌехаМОзЌа -item.upgrade_speed_1.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя I -item.upgrade_speed_2.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя II -item.upgrade_speed_3.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя III -item.upgrade_effect_1.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя I -item.upgrade_effect_2.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя II -item.upgrade_effect_3.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя III -item.upgrade_power_1.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя I -item.upgrade_power_2.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя II -item.upgrade_power_3.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя III -item.upgrade_fortune_1.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя I -item.upgrade_fortune_2.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя II -item.upgrade_fortune_3.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя III -item.upgrade_afterburn_1.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя I -item.upgrade_afterburn_2.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя II -item.upgrade_afterburn_3.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя III -item.upgrade_overdrive_1.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя I -item.upgrade_overdrive_2.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя II -item.upgrade_overdrive_3.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя III -item.upgrade_radius.name=УлучшеМОе раЎОуса Озлучателя -item.upgrade_health.name=УлучшеМОе прПчМПстО Озлучателя -item.upgrade_smelter.name=УлучшеМОе "ПлавОльМя" -item.upgrade_shredder.name=УлучшеМОе "ИзЌельчОтель" -item.upgrade_centrifuge.name=УлучшеМОе "ЊеМтрОфуга" -item.upgrade_crystallizer.name=УлучшеМОе "КрОсталлОзатПр" -item.upgrade_nullifier.name=УлучшеМОе "УМОчтПжОтель ЌусПра" -item.upgrade_muffler.name=УлучшеМОе "ГлушОтель" -item.upgrade_screm.name=УлучшеМОе "КрОчащОй учёМый" -item.upgrade_gc_speed.name=УлучшеМОе "РазгПМ газПвПй цеМтрОфугО" -item.upgrade_5g.name=УлучшеМОе "5G ОзлучеМОе" -item.upgrade_ejector_1.name=УлучшеМОе Озвлекателя "СкПрПсть" I урПвМя -item.upgrade_ejector_2.name=УлучшеМОе Озвлекателя "СкПрПсть" II урПвМя -item.upgrade_ejector_3.name=УлучшеМОе Озвлекателя "СкПрПсть" III урПвМя -item.upgrade_stack_1.name=УлучшеМОе Озвлекателя "КПлОчествП стака" I урПвМя -item.upgrade_stack_2.name=УлучшеМОе Озвлекателя "КПлОчествП стака" II урПвМя -item.upgrade_stack_3.name=УлучшеМОе Озвлекателя "КПлОчествП стака" III урПвМя - +item.fragment_lanthanium.name=ЛаМтаМПвый ПскПлПк +item.fragment_meteorite.name=МетеПрОтМый ПскПлПк +item.fragment_neodymium.name=НеПЎОЌПвый ПскПлПк +item.fragment_niobium.name=НОПбОевый ПскПлПк +item.fuel_additive.antiknock.name=АМтОЎетПМацОПММПе среЎствП Оз ТетраэтОлсвОМца +item.fuel_additive.deicer.name=АМтОПблеЎеМОтель +item.fuel_tank_large.name=БПльшПй тПплОвМый бак +item.fuel_tank_medium.name=СреЎМОй тПплОвМый бак +item.fuel_tank_small.name=Малый тПплОвМый бак +item.fuse.name=ПреЎПхраМОтель item.fusion_core.name=ЯЎерМый блПк -item.energy_core.name=ИЌпрПвОзОрПваММый эМергПблПк item.fusion_core_infinite.name=БескПМечМый яЎерМый блПк item.fusion_shield_chlorophyte.name=ХлПрПфОтПвый защОтМый слПй терЌПяЎерМПгП реактПра item.fusion_shield_desh.name=Деш-ЗащОтМый слПй терЌПяЎерМПгП реактПра item.fusion_shield_tungsten.name=ВПльфраЌПвый защОтМый слПй терЌПяЎерМПгП реактПра item.fusion_shield_vaporwave.name=ВапПрвейвМый защОтМый слПй терЌПяЎерМПгП реактПра - -item.dynosphere_base.name=КаблПМ ДОМПсферы -item.dynosphere_desh.name=ДОМПсфера Оз Ўеш -item.dynosphere_desh_charged.name=ДОМПсфера Оз Ўеш (ЗаряжеММая) -item.dynosphere_schrabidium.name=КрабОЎОевая ЎОМПсфера -item.dynosphere_schrabidium_charged.name=КрабОЎОевая ЎОМПсфера (ЗаряжеММая) -item.dynosphere_euphemium.name=ЭвфеЌОевая ЎОМПсфера -item.dynosphere_euphemium_charged.name=ЭвфеЌОевая ЎОМПсфера (ЗаряжеММая) -item.dynosphere_dineutronium.name=ДОМейтрПМОевая ЎОМПсфера -item.dynosphere_dineutronium_charged.name=ДОМейтрПМОевая ЎОМПсфера (ЗаряжеММая) - -item.plate_iron.name=ЖелезМая пластОМа -item.plate_lead.name=СвОМцПвая пластОМа -item.coil_copper.name=МеЎМая катушка -item.coil_copper_torus.name=КПльцевая катушка -item.wire_tungsten.name=ВПльфраЌПвый прПвПЎ -item.coil_tungsten.name=НагревательМый элеЌеМт -item.tank_steel.name=СтальМПй бак -tile.barrel_tcalloy.name=БПчка Оз техМецОевПй сталО +item.gadget_core.name=ПлутПМОевПе яЎрП +item.gadget_explosive.name=ВзрывМые лОМзы первПгП пПкПлеМОя +item.gadget_kit.name=КПЌплект ГаЎжета +item.gadget_wireing.name=ПрПвПЎа +item.gas_biogas.name=БаллПМ с бОПгазПЌ +item.gas_empty.name=ПустПй газПвый баллПМ +item.gas_full.name=ГазПвый баллПМ: +item.gas_lpg.name=БаллПМ с СПГ +item.gas_mask.name=ПрПтОвПгаз +item.gas_mask_filter.name=ЀОльтр прПтОвПгаза +item.gas_mask_filter_combo.name=КПЌбОМОрПваММый фОльтр Ўля прПтОвПгаза +item.gas_mask_filter_mono.name=КаталОтОческОй фОльтр ЌаскО +item.gas_mask_filter_piss.name=СаЌПЎельМый прПЎвОМутый фОльтр Ўля прПтОвПгаза +item.gas_mask_filter_rag.name=СаЌПЎельМый фОльтр Ўля прПтОвПгаза +item.gas_mask_m65.name=ПрПтОвПгаз M65-Z +item.gas_mask_mono.name=ППлуЌаска +item.gas_mask_olde.name=КПжаМый прПтОвПгаз +item.gas_petroleum.name=БаллПМ с пПпутМыЌ газПЌ +item.gas_tester.name=ГазПвый ЎатчОк +item.gear_large.name=БПльшая шестерМя +item.gear_large_steel.name=БПльшая стальМая шестерМя +item.geiger_counter.name=РучМПй счетчОк Гейгера +item.gem_alexandrite.name=АлексаМЎрОт +item.gem_rad.name=РаЎОПактОвМый саЌПцвет +item.gem_sodalite.name=СПЎалОт +item.gem_tantalium.name=ППлОкрОсталл таМтала +item.gem_tantalium.desc='ТаМталуЌ' +item.gem_tantalium.desc.P11=АКА ТаМталОй. +item.gem_volcanic.name=ВулкаМОческОй саЌПцвет +item.generator_front.name=ПереЎ геМератПра +item.generator_steel.name=КПрпус геМератПра +item.glitch.name=Глюк +item.glowing_stew.name=ТушеМые светящОеся грОбы +item.glyphid_meat.name=МясП глОфОЎПв +item.glyphid_meat_grilled.name=ЖареМПе ЌясП глОфОЎПв +item.goggles.name=ЗащОтМые ПчкО +item.grenade_aschrab.name=БрПсаеЌая аМтОшрабОЎОевая прПбОрка +item.grenade_black_hole.name=ГраМата сОМгулярМПстО +item.grenade_breach.name=РазрывМая граМата +item.grenade_burst.name=ЭкскаватПрМая граМата +item.grenate_cats.name=Grenade of Cats +item.grenade_cloud.name=КПлба с кОслПтМыЌ ПблакПЌ +item.grenade_cluster.name=КластерМая бПЌба +item.grenade_electric.name=ЭлектрПграМата +item.grenade_fire.name=ОгМеММая ПскПлПчМая граМата +item.grenade_flare.name=СОгМальМая ракета +item.grenade_frag.name=ОскПлПчМая граМата +item.grenade_gas.name=ГазПвая граМата +item.grenade_gascan.name=БрПсаеЌая беМзОМПвая каМОстра +item.grenade_generic.name=ГраМата +item.grenade_if_bouncy.name=IF - Прыгучая граМата +item.grenade_if_brimstone.name=IF - БрПсаеЌая серМая ЌОМа +item.grenade_if_concussion.name=IF - КПМтузОПММая граМата +item.grenade_if_generic.name=IF - ГраМата +item.grenade_if_he.name=IF - ЀугасМая граМата +item.grenade_if_hopwire.name=IF - ГраМата сОМгулярМПстО +item.grenade_if_impact.name=IF - УЎарМая граМата +item.grenade_if_incendiary.name=IF - ЗажОгательМая граМата +item.grenade_if_mystery.name=IF - М.-ГраМата +item.grenade_if_null.name=IF - Нулевая граМата +item.grenade_if_spark.name=IF - С.-ГраМата +item.grenade_if_sticky.name=IF - ЛОпкая граМата +item.grenade_if_toxic.name=IF - ТПксОчМая граМата +item.grenade_kit.name=КПЌплект граМат +item.grenade_kyiv.name=The Kyiv Special +item.grenade_lemon.name=ЗажОгательМый лОЌПМ +item.grenade_mirv.name=МИРВ-граМата +item.grenade_mk2.name=ГраМата МК 2 "ППсПл АМаМас" +item.grenade_nuclear.name=ЯЎерМая граМата +item.grenade_nuke.name=БурПвая граМата “Марк VI” +item.grenade_pink_cloud.name=КПлба с рПзПвыЌ ПблакПЌ +item.grenade_plasma.name=ПлазЌеММая граМата +item.grenade_poison.name=Отравляющая граМата +item.grenade_pulse.name=ИЌпульсМая граМата +item.grenade_schrabidium.name=КрабОЎОевая граМата +item.grenade_shrapnel.name=ГраМата сП шрапМелью +item.grenade_smart.name=СЌарт-граМата +item.grenade_strong.name=УсПвершеМствПваММая граМата +item.grenade_tau.name=Тау-ГраМата +item.grenade_zomg.name=ГраМата аММОгОляцОО пар ПтрОцательМПй эМергОО +item.glyphid_gland.name= Железа глОфОЎа: +item.glyphid_gland_empty.name= Железа глОфОЎа +item.gun_aberrator.name=Aberrator +item.gun_aberrator_eott.name=Eyes Of The Tempest +item.gun_am180.name=Silenced Submachine Gun +item.gun_ar15.name="ДжПш" +item.gun_autoshotgun.name=Auto Shotgun +item.gun_autoshotgun_sexy.name=Sexy +item.gun_autoshotgun_shredder.name=Shredder +item.gun_avenger.name=CZ57 “АвеМЎжер” +item.gun_b92.name=§9ЭМергетОческОй бластер B92§r +item.gun_b92_ammo.name=§9ЭМергетОческОй ЭлеЌеМт B92§r +item.gun_b93.name=§cМПЎОфОцОрПваММый бластер B93§r +item.gun_benelli.name=Benelli Autoshotgun +item.gun_bf.name=BEL +item.gun_bf_ammo.name=Жар-сМаряЎ +item.gun_bio_revolver.name=Атлас +item.gun_bolt_action.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ(ОрОгОМал) +item.gun_bolt_action_ammo.name=Пуля 12x74 калОбра(LEGACY) +item.gun_bolt_action_green.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ (ЗелёМый) +item.gun_bolt_action_saturnite.name=СатурМОтПвая вОМтПвка +item.gun_bolter.name=БПлтер +item.gun_bolter_digamma.name=ДОгаЌЌа пушка +item.gun_calamity.name=КалаЌОтО +item.gun_calamity_ammo.name=Кал. 50 (LEGACY) +item.gun_calamity_dual.name=БПевПе сеЎлП +item.gun_carbine.name=Carbine +item.gun_chemthrower.name=ХОЌПЌёт +item.gun_coilgun.name=Гаусс-пушка +item.gun_congolake.name=Congo Lake +item.gun_cryocannon.name=КрОПпушка +item.gun_cryolator.name=КрОПлятПр +item.gun_cryolator_ammo.name=КрОПэлеЌеМт +item.gun_dampfmaschine.name=СПвершеММП Ме шутПчМПе ПружОе +item.gun_darter.name=ДрПтОкПвый пОстПлет +item.gun_deagle.name=БОг АйрПМ +item.gun_defabricator.name=ДефабрОкатПр +item.gun_defabricator_ammo.name=ЭМергетОческОе ячейкО ДефабрОкатПра +item.gun_detonator.name=ЛазерМый ЎетПМатПр +item.gun_double_barrel.name=An Old Classic +item.gun_double_barrel_sacred_dragon.name=Sacred Dragon +item.gun_emp.name=ЭМИ-пушка +item.gun_emp_ammo.name=ЭМергетОческая ячейка +item.gun_euthanasia.name=ЭвтаМазОя +item.gun_euthanasia_ammo.name=КпрОцы +item.gun_fatman.name=М42 АтПЌМая катапульта "ТПлстяк" +item.gun_fatman_ammo.name=ЯЎерМый ЌОМОзаряЎ (LEGACY) +item.gun_fireext.name=ОгМетушОтель +item.gun_flamer.name=МОстер ТПпаз +item.gun_flamer_daybreaker.name=Daybreaker +item.gun_flamer_topaz.name=Mister Topaz +item.gun_flaregun.name=Flare Gun +item.gun_flechette.name=ИгПльчатая вОМтПвка +item.gun_folly.name=ПрПтПтОп ДОгаЌЌа "ПрОчуЎа" +item.gun_g3.name=Assault Rifle +item.gun_glass_cannon.name=СтекляММая пушка +item.gun_greasegun.name=Grease Gun +item.gun_hangman.name=Hangman +item.gun_heavy_revolver.name=Heavy Revolver +item.gun_heavy_revolver_lilmac.name=Little Macintosh +item.gun_heavy_revolver_protege.name=ProtÚge +item.gun_henry.name=Lever Action Rifle +item.gun_hk69.name=ГраМатПЌет +item.gun_hp.name=HPP ЛазерЎжет +item.gun_hp_ammo.name=ЧерМОльМый картрОЎж +item.gun_immolator.name=ИЌЌПлятПр +item.gun_immolator_ammo.name=ТПплОвП ИЌЌПлатПра +item.gun_jack.name=ДжекхаЌЌер +item.gun_jack_ammo.name=СМаряЎ Ўля четырехствПльМПгП ЎрПбПвОка +item.gun_karl.name=Карл +item.gun_kit_1.name=РужейМПе ЌаслП +item.gun_kit_2.name=КПЌплект Ўля реЌПМта ПружОя +item.gun_ks23.name=СэЌюэль БПльшПй ДрПбПвОк +item.gun_lacunae.name=CZ33 “АбаЎЎПМ” +item.gun_lacunae_ammo.name=5-ЌЌ патрПМ (LEGACY) +item.gun_lag.name=Comically Long Pistol +item.gun_lasrifle.name=Laser Rifle +item.gun_lever_action.name=«НПга кПбылы» (ОрОгОМал) +item.gun_lever_action_ammo.name=ДрПбь 12x74 калОбра (LEGACY) +item.gun_lever_action_dark.name=«НПга кПбылы» (ТёЌМый) +item.gun_lever_action_sonata.name=ПеревёрМутая «НПга кПбылы» +item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_liberator.name=Liberator +item.gun_light_revolver.name=Break-Action Revolver +item.gun_light_revolver_atlas.name=Atlas +item.gun_light_revolver_dani.name=Day And Night +item.gun_lunatic_marksman.name=Lunatic Marksman Rifle (BETA) +item.gun_m2.name=Ma Deuce +item.gun_maresleg.name=Lever Action Shotgun +item.gun_maresleg_akimbo.name=Lever Action Shotguns +item.gun_maresleg_broken.name=Broken +item.gun_minigun.name=ПерсПМальМый ЌОМОгаМ CZ53 +item.gun_minigun_lacunae.name=Lacunae +item.gun_mirv.name=M42 ЯЎерМая катапульта "ЭксперОЌеМтальМый МИРВ" +item.gun_mirv_ammo.name=ВПсьЌОрОчМый МИРВ (LEGACY) +item.gun_missile_launcher.name=Missile Launcher +item.gun_moist_nugget.name=МПсОМ-НагаМ +item.gun_mp.name=ПулеЌет ПацОфОстПв +item.gun_mp40.name=ПОстПлет-пулеЌёт +item.gun_mp40_ammo.name=Submachine Gun Round (DEPRECATED) +item.gun_pepperbox.name=Pepperbox +item.gun_pm_ammo.name=Малый беспрПпеллеМтПвый пулеЌётМый патрПМ +item.gun_mymy.name=Ньетес +item.gun_osipr.name=ИЌпульсМая вОМтПвка Патруля +item.gun_osipr_ammo.name=ИЌпульсМые патрПМы +item.gun_osipr_ammo2.name=ЭМергетОческОй шар КПЌбайМПв +item.gun_panzerschreck.name=ПаМцершрек +item.gun_proto.name=М42 ЯЎерМая катапульта "ПрПтП МИРВ" +item.gun_quadro.name="Четыре Сыра" +item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] +item.gun_revolver.name=УсПвершеМствПваММый ревПльвер +item.gun_revolver_ammo.name=СвОМцПвая пуля +item.gun_revolver_blackjack.name=ПятОзаряЎМый ревПльвер БлэкЎжек +item.gun_revolver_cursed.name=ПрПклятый ревПльвер +item.gun_revolver_cursed_ammo.name=СтальМая пуля +item.gun_revolver_gold.name=ЗПлПтПй ревПльвер +item.gun_revolver_gold_ammo.name=ЗПлПтая пуля +item.gun_revolver_inverted.name=ПереверМутый ревПльвер +item.gun_revolver_iron.name=ПрПстПй ревПльвер +item.gun_revolver_iron_ammo.name=Пуля +item.gun_revolver_lead.name=ЯЎерМый ревПльвер +item.gun_revolver_lead_ammo.name=ППкрытая стеклПЌ атПЌМая пуля +item.gun_revolver_nightmare.name=КПшЌарМый ревПльвер (ОрОгОМал) +item.gun_revolver_nightmare2.name=КПшЌарМый ревПльвер (ТёЌМый) +item.gun_revolver_nightmare2_ammo.name=ЛазерМая ЎрПбь +item.gun_revolver_nightmare_ammo.name=КПшЌарМая пуля +item.gun_revolver_nopip.name=Тяжёлый ревПльверitem.gun_revolver_nopip_ammo.name=ПатрПМ калОбра .44 (LEGACY) +item.gun_revolver_pip.name=ЛОл' ПОпсквОк +item.gun_revolver_pip_ammo.name=ЗаражеММый патрПМ (LEGACY) +item.gun_revolver_red.name=РевПльвер с красМыЌ ключПЌ +item.gun_revolver_saturnite.name=СатурМОтПвый ревПльвер +item.gun_revolver_schrabidium.name=КрабОЎОевый ревПльвер +item.gun_revolver_schrabidium_ammo.name=КрабОЎОевая пуля +item.gun_revolver_silver.name=ОЎПлжеММый пОстПлет +item.gun_rpg.name=БезПткатМая ВОМтПвка “Карл Густав” +item.gun_rpg_ammo.name=Ракета (LEGACY) +item.gun_sauer.name=ДрПбПвОк СтэМа Зауэра +item.gun_skystinger.name="НебесМый СтОМгер" +item.gun_spark.name=Спарк-Плаг +item.gun_spark_ammo.name=ЭлектрПЌагМОтМый картрОЎж +item.gun_spas12.name=ДрПбПвОк SPAS-12 +item.gun_stg77.name=StG 77 +item.gun_stinger.name=FIM-92 "СтОМгер" +item.gun_stinger_ammo.name=Ракета-СтОМгер (LEGACY) +item.gun_super_shotgun.name=СуперЎрПбПвОк +item.gun_super_shotgun.desc=ОМ супер слПЌаМ! +item.gun_supershotgun.name=СуперЎрПбПвОк +item.gun_tau.name=Tau Cannon +item.gun_tesla_cannon.name=Tesla Cannon +item.gun_thompson.name=ПОстПлет-пулеЌёт ТПЌпсПМа +item.gun_uac_pistol.name=ПОстПлет UAC .45 +item.gun_uboinik.name=УбПйМОк +item.gun_uboinik_ammo.name=ДрПбь 12x70 калОбра (LEGACY) +item.gun_uzi.name=IMI УзО +item.gun_uzi_akimbo.name=Uzis +item.gun_uzi_ammo.name=ПатрПМы кал. 22LR (LEGACY) +item.gun_uzi_saturnite.name=СатурМОтПвый УзО +item.gun_uzi_saturnite_silencer.name=СатурМОтПвый УзО с глушОтелеЌ +item.gun_uzi_silencer.name=IMI УзО с глушОтелеЌ +item.gun_xvl1456.name=ПрПтПтОп Тау-пушкО XVL1456 +item.gun_xvl1456_ammo.name=ЯщОк с ОбеЎМеММыЌ УраМПЌ-235 +item.gun_zomg.name=ZOMG-пушка +item.hand_drill.name=РучМая Ўрель +item.hand_drill_desh.name=РучМая Ўрель Оз Ўеша +item.hazmat_boots.name=ЗащОтМые бПтОМкО +item.hazmat_boots_grey.name=ВысПкПэффектОвМые защОтМые бПтОМкО +item.hazmat_boots_red.name=УлучшеММые защОтМые бПтОМкО +item.hazmat_cloth.name=ЗащОтМая ткаМь +item.hazmat_cloth_grey.name=ОсвОМцПваММая защОтМая ткаМь +item.hazmat_cloth_red.name=ДПпПлМОтельМая защОтМая ткаМь +item.hazmat_grey_kit.name=ВысПкПпрПОзвПЎОтельМый МабПр хОЌОческПй О раЎОацОПММПй защОты +item.hazmat_helmet.name=ЗащОтМый шлеЌ +item.hazmat_helmet_grey.name=ВысПкПэффектОвМый защОтМый шлеЌ +item.hazmat_helmet_red.name=УлучшеММый защОтМый шлеЌ +item.hazmat_kit.name=НабПр хОЌОческПй О раЎОацОПММПй защОты +item.hazmat_legs.name=ЗащОтМые пПМПжО +item.hazmat_legs_grey.name=ВысПкПэффектОвМые защОтМые пПМПжО +item.hazmat_legs_red.name=УлучшеММые защОтМые пПМПжО +item.hazmat_paa_boots.name=БПевые защОтМые бПтОМкО PaA +item.hazmat_paa_helmet.name=БПевПй защОтМый шлеЌ PaA +item.hazmat_paa_legs.name=БПевые защОтМые пПМПжО PaA +item.hazmat_paa_plate.name=БПевПй защОтМый МагруЎМОк PaA +item.hazmat_plate.name=ЗащОтМый МагруЎМОк +item.hazmat_plate_grey.name=ВысПкПэффектОвМый защОтМый МагруЎМОк +item.hazmat_plate_red.name=УлучшеММый защОтМый МагруЎМОк +item.hazmat_red_kit.name=РасшОреММый кПЌплект хОЌОческПй О раЎОацОПММПй защОты +item.heart_booster.name=УсОлОтель серЎца +item.heart_container.name=КПМтейМер Ўля серЎца +item.heart_fab.name=Ѐаб-серЎце +item.heart_piece.name=ЧастОчка серЎца +item.heavy_component.name=Тяжёлый кПЌпПМеМт Оз %s +item.hev_battery.name=Батарея кПстюЌа +item.hev_boots.name=БПтОМкО H.E.V МПЎелО IV +item.hev_plate.name=НагруЎМОк H.E.V МПЎелО IV +item.hev_helmet.name=КлеЌ H.E.V МПЎелО IV +item.hev_legs.name=ППМПжО H.E.V МПЎелО IV +item.holotape_damaged.name=ППврежЎёММый гПлПЎОск +item.holotape_image.name=ГПлПЎОск +item.horseshoe_magnet.name=МагМОт-пПЎкПва +item.hull_big_aluminium.name=БПльшая алюЌОМОевая ПбПлПчка +item.hull_big_steel.name=БПльшая стальМая ПбПлПчка +item.hull_big_titanium.name=БПльшая тОтаМПвая ПбПлПчка +item.hull_small_aluminium.name=НебПльшая алюЌОМОевая ПбПлПчка +item.hull_small_aluminium.desc=МПжет быть вставлеМ в прПсверлеММый графОт +item.hull_small_steel.name=НебПльшая стальМая ПбПлПчка +item.icf_pellet.name=ТПплОвМая пеллета ICF +item.icf_pellet_depleted.name=ОбеЎМеММая тПплОвМая пеллета ICF +item.icf_pellet_empty.name=Пустая тПплОвМая пеллета ICF +item.igniter.name=ЗажОгатель +item.igniter.desc=(ЩёлкМОте правПй кМПпкПй ЌышО пП ПрПтПтОпу)$ЭтП зелеМая ЌеталлОческая ручка с $яркП-красМПй кМПпкПй О ЌалеМькПй крышкПй.$ВМОзу выгравОрПваМы ОМОцОалы N.E.$. КеЌ бы МО был N.E., у МегП был ПтлОчМый вкус в ПттеМках зелеМПгП. +item.industrial_magnet.name=ПрПЌышлеММый ЌагМОт +item.inf_antimatter.name=Infinite Antimatter Tank +item.inf_antischrabidium.name=Infinite Antischrabidium Tank +item.inf_coolant.name=Infinite Coolant Tank +item.inf_deuterium.name=Infinite Deuterium Tank +item.inf_diesel.name=Infinite Diesel Tank +item.inf_sulfur.name=Infinite Sulfur Tank +item.inf_tritium.name=Infinite Tritium Tank +item.inf_water.name=БескПМечМый резервуар вПЎы +item.inf_water_mk2.name=УсОлеММый бескПМечМый резервуар вПЎы +item.ingot_actinium.name=СлОтПк актОМОя-227 +item.ingot_advanced_alloy.name=СлОтПк прПЎвОМутПгП сплава +item.ingot_aluminium.name=АлюЌОМОевый слОтПк +item.ingot_am_mix.name=СлОтПк аЌерОцОя реактПрМПгП качества +item.ingot_am241.name=СлОтПк аЌерОцОя-241 +item.ingot_am242.name=СлОтПк аЌерОцОя-242 +item.ingot_americium_fuel.name=СлОтПк аЌерОцОевПгП тПплОва +item.ingot_arsenic.name=СлОтПк Ќышьяка +item.ingot_arsenic_bronze.name=СлОтПк ЌышьякПвПй брПМзы +item.ingot_asbestos.name=АсбестПвый лОст +item.ingot_asbestos.desc=§o"НапПлМеММый жОзМью, МеувереММПстью в себе О асбестПЌ. ЭтП прОхПЎОт вЌесте с вПзЎухПЌ."§r +item.ingot_au198.name=СлОтПк зПлПта-198 +item.ingot_australium.name=АвстралОевый слОтПк +item.ingot_bakelite.name=БакелОт +item.ingot_beryllium.name=БерОллевый слОтПк +item.ingot_biorubber.name=БрусПк латекса +item.ingot_bismuth.name=СлОтПк вОсЌута +item.ingot_bismuth_bronze.name=СлОтПк вОсЌутПвПй брПМзы +item.ingot_boron.name=БПрМый слОтПк +item.ingot_bscco.name=СлОтПк BSCCO +item.ingot_c4.name=БрусПк C-4 +item.ingot_cadmium.name=КаЎЌОевый слОтПк +item.ingot_calcium.name=КальцОевый слОтПк +item.ingot_cdalloy.name=СлОтПк каЎЌОевПй сталО +item.ingot_cft.name=КрОсталлОческОй фуллерОт +item.ingot_chainsteel.name=Тяжёлая цепМая сталь +item.ingot_co60.name=СлОтПк кПбальта-60 +item.ingot_cobalt.name=КПбальтПвый слОтПк +item.ingot_combine_steel.name=СлОтПк сталО АльяМса +item.ingot_combine_steel.desc=*вставьте рефереМс Ма ГражЎаМскую ОбПрПМу* +item.ingot_copper.name=СлОтПк прПЌышлеММПй ЌеЎО +item.ingot_daffergon.name=ДаффергПМПвый слОтПк +item.ingot_desh.name=СлОтПк Ўеш +item.ingot_dineutronium.name=ДОМейтрПМОевый слОтПк +item.ingot_dura_steel.name=ВысПкПскПрПстМая сталь +item.ingot_electronium.name=ЭлектрПМОевый слОтПк +item.ingot_euphemium.name=ЭвфеЌОевый слОтПк +item.ingot_euphemium.desc=СПвершеММП ПсПбый О в тП же вреЌя страММый элеЌеМт. +item.ingot_ferrouranium.name=ЀеррПураМОевый слОтПк +item.ingot_fiberglass.name=СтеклПвПлПкМП +item.ingot_fiberglass.desc=С высПкОЌ сПЎержаМОеЌ вПлПкМа, с высПкОЌ сПЎержаМОеЌ стекла. Все, чтП МужМП ПргаМОзЌу. +item.ingot_firebrick.name=КаЌПтМый кОрпОч +item.ingot_gh336.name=СлОтПк гОПрсОя-336 +item.ingot_gh336.desc=КПллега СОбПргОуЌа. +item.ingot_graphite.name=ГрафОтПвый слОтПк +item.ingot_gunmetal.name=Gunmetal Ingot +item.ingot_hes.name=ВысПкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва +item.ingot_lanthanium.name=ППлустабОльМый слОтПк лаМтаМа +item.ingot_lanthanium.desc='ЛаМтаМуЌ' +item.ingot_lanthanium.desc.P11=ВППбще лаМтаМуЌ, МП лаЎМП. +item.ingot_lead.name=СвОМцПвый слОтПк +item.ingot_les.name=НОзкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва +item.ingot_magnetized_tungsten.name=НаЌагМОчеММый слОтПк вПльфраЌа +item.ingot_meteorite.name=МетеПрОтПвый слОтПк +item.ingot_meteorite_forged.name=ВыкПваММый ЌетеПрОтПвый слОтПк +item.ingot_mox_fuel.name=СлОтПк МОКС-тПплОва +item.ingot_mud.name=КОрпОч Оз твёрЎых ПтхПЎПв +item.ingot_neptunium.name=НептуМОевый слОтПк +item.ingot_neptunium.desc=ВПт этПт ЌПй любОЌый! +item.ingot_neptunium.desc.P11=УУУ, страшМП! +item.ingot_neptunium_fuel.name=СлОтПк МептуМОевПгП тПплОва +item.ingot_niobium.name=НОПбОевый слОтПк +item.ingot_osmiridium.name=ОсЌОрОЎОевый слОтПк +item.ingot_pb209.name=СлОтПк свОМца-209 +item.ingot_pc.name=ТверЎый пластОкПвый брусПк +item.ingot_pet.name=МеталлОзОрПваММый алюЌОМОеЌ брусПк ПЭТ +item.ingot_phosphorus.name=БрусПк белПгП фПсфПра +item.ingot_plutonium.name=ПлутПМОевый слОтПк +item.ingot_plutonium_fuel.name=СлОтПк плутПМОевПгП тПплОва +item.ingot_polonium.name=СлОтПк пПлПМОя-210 +item.ingot_polymer.name=ППлОЌер +item.ingot_pu_mix.name=СлОтПк плутПМОя реактПрМПгП качества +item.ingot_pu238.name=СлОтПк плутПМОя-238 +item.ingot_pu239.name=СлОтПк плутПМОя-239 +item.ingot_pu240.name=СлОтПк плутПМОя-240 +item.ingot_pu241.name=СлОтПк плутПМОя-241 +item.ingot_pvc.name=ПВХ +item.ingot_ra226.name=СлОтПк раЎОя-226 +item.ingot_raw.name=%s Ingot +item.ingot_red_copper.name=СлОтПк красМПй ЌеЎО +item.ingot_reiium.name=РеОевый слОтПк +item.ingot_rubber.name=РезОМа +item.ingot_saturnite.name=СатурМОтПвый слОтПк +item.ingot_schrabidate.name=СлОтПк шрабОЎата железа +item.ingot_schrabidium.name=КрабОЎОевый слОтПк +item.ingot_schrabidium_fuel.name=СлОтПк шрабОЎОевПгП тПплОва +item.ingot_schraranium.name=КрараМОевый слОтПк +item.ingot_schraranium.desc=Делается Оз ураМа в шрабОЎОевПЌ траМсЌутатПре +item.ingot_semtex.name=СеЌтекс +item.ingot_silicon.name=КреЌМОевый брусПк +item.ingot_smore.name=СлОтПк с'ЌПра +item.ingot_solinium.name=СПлОМОевый слОтПк +item.ingot_sr90.name=СлОтПк стрПМцОя-90 +item.ingot_starmetal.name=§9ЗвёзЎМый Ќеталл§r +item.ingot_steel.name=СтальМПй слОтПк +item.ingot_steel_dusted.name=ЗапылёММПй стальМПй слОтПк +item.ingot_tantalium.name=ТаМталПвый слОтПк +item.ingot_tantalium.desc='ТаМталуЌ' +item.ingot_tantalium.desc.P11=АКА ТаМталОй. +item.ingot_tcalloy.name=СлОтПк техМецОевПй сталО +item.ingot_technetium.name=СлОтПк техМецОя-99 +item.ingot_th232.name=СлОтПк тПрОя-232 +item.ingot_thorium_fuel.name=СлОтПк тПрОевПгП тПплОва +item.ingot_titanium.name=ТОтаМПвый слОтПк +item.ingot_tungsten.name=ВПльфраЌПвый слОтПк +item.ingot_u233.name=СлОтПк ураМа-233 +item.ingot_u235.name=СлОтПк ураМа-235 +item.ingot_u238.name=СлОтПк ураМа-238 +item.ingot_u238m2.name=ППлустабОльМый слОтПк ураМа-238-2 +item.ingot_unobtainium.name=НеЎПстатОевый слОтПк +item.ingot_uranium.name=УраМПвый слОтПк +item.ingot_uranium_fuel.name=СлОтПк ураМПвПгП тПплОва +item.ingot_verticium.name=ВертОцОевый слОтПк +item.ingot_weaponsteel.name=Weapon Steel Ingot +item.ingot_weidanium.name=ВейЎаМОевый слОтПк +item.ingot_zirconium.name=ЊОркПМОевый куб +item.injector_5htp.name=АвтПОМъектПр 5-гОЎрПксОтрОптПфаМа +item.injector_knife.name=АвтПОМъектПр 8 ЎюйЌПвПгП лезвОя +item.ink.name=林 черМОла +item.insert_doxium.name=АстПльфОй-легОрПваММая ДПксОевая пластОМа +item.insert_du.name=УраМПвая пластОМа +item.insert_era.name=ВзрывППпасМая реактОвМая брПМепластОМа +item.insert_esapi.name=ESAPI пластОМы +item.insert_ghiorsium.name=ГОПрсОевая пластОМа +item.insert_kevlar.name=КевларПвые пластОМы +item.insert_sapi.name=SAPI пластОМы +item.insert_polonium.name=ППлПМОевая пластОМа +item.insert_steel.name=ТяжёлПстальМые пластОМы +item.insert_xsapi.name=XSAPI пластОМы +item.insert_yharonite.name=ЯрПМОтПвая пластОМа +item.item_secret.canister.name=КПЌпПзОт SB-26 +item.item_secret.controller.name=ПрПпрОетарМый блПк управлеМОя +item.item_secret.selenium_steel.name=Selenium Steel +item.iv_blood.name=Пакет с крПвью +item.iv_empty.name=Пакет Ўля вМутрОвеММПгП ввеЎеМОя +item.iv_xp.name=Пакет с ПпытПЌ +item.iv_xp_empty.name=Пакет Ўля ЌагОческПгП вМутрОвеММПгП ввеЎеМОя +item.jackt.name=ЧертПвскО стОльМая баллОстОческая куртка +item.jackt2.name=ЧертПвскО стОльМая баллОстОческая куртка 2: ТПкОйскОй ДрОфт +item.jetpack_boost.name=ИЌпульсМый раМец +item.jetpack_break.name=СтрПОтельМый раМец +item.jetpack_fly.name=РеактОвМый раМец +item.jetpack_tank.name=РезервМый тПплОвМый бак раМца +item.jetpack_vector.name=ВектПрМый реактОвМый раМец +item.journal_bj.name=ПрПпОтаММый вОскО блПкМПт +item.journal_pip.name=ДМевМОк выжОвальщОка +item.journal_silver.name=ЗапОскО кПМтрактМОка +item.key.name=Ключ +item.key_fake.name=ППЎЎельМый ключ +item.key_kit.name=НабПр ОЌОтацОО ключей +item.key_red.name=КрасМый ключ +item.key_red.desc=ИсслеЎуй Ўругую стПрПМу. +item.key_red.desc.P11=§4e§r +item.key_red_cracked.name=СлПЌаММый ключ +item.key_red_cracked.desc=??? +item.key_red.key_red_cracked.P11=§4???§r +item.kit_toolbox.name=ЯщОк Ўля ОМструЌеМтПв +item.kit_toolbox_empty.name=ПустПй ящОк Ўля ОМструЌеМтПв +item.laser_crystal_bismuth.desc=ВОсЌут-СаЌарОй-УраМ-ТПрОевая крОсталлОческая ЌатрОца +item.laser_crystal_bismuth.name=ВОсЌутПвый лазерМый крОсталл +item.laser_crystal_cmb.desc=АМтОшрабОЎОй, заключеММый в решётку Оз сплава КрабОЎата О сталО АльяМса +item.laser_crystal_cmb.name=CMB-КрабОЎатПвый аМтОЌатерОальМый лазерМый крОсталл +item.laser_crystal_co2.desc=ДвуПкОсь углерПЎа, заключеММая в крОсталлОческОй Деш +item.laser_crystal_co2.name=CO2-Деш лазерМый крОсталл +item.laser_crystal_digamma.name=ДОгаЌЌа-лазерМый крОсталл +item.laser_crystal_dnt.desc=ДОМейтрПМОевый-Спарк ферЌОПММый суперкрОсталл +item.laser_crystal_dnt.name=Спарк-лазерМый крОсталл +item.launch_code.name=КПЎ запуска +item.launch_code_piece.name=КусПк кПЎа запуска +item.launch_key.name=Ключ запуска +item.lead_gavel.name=СвОМцПвый ЌПлПтПк +item.lemon.name="ЛОЌПМ" +item.letter.name=Экспресс-пПчта +item.levitation_unit.name=ГравОтацОПММый ЌаМОпулятПр +item.lignite.name=Бурый угПль +item.limiter.name=ОграМОчОтель геМератПра +item.linker.name=ТелелОМкер +item.liquidator_boots.name=БПтОМкО кПстюЌа ЛОквОЎатПра +item.liquidator_helmet.name=КлеЌ кПстюЌа ЛОквОЎатПра +item.liquidator_legs.name=ППМПжО кПстюЌа ЛОквОЎатПра +item.liquidator_plate.name=НагруЎМОк кПстюЌа ЛОквОЎатПра +item.lithium.name=Куб лОтОя +item.lodestone.name=МагМетОт +item.loop_stew.name=Завтрак IT-шМОка +item.loops.name=ПəтлО +item.loot_10.name=ЯщОк с запчастяЌО Пт Ракеты 10-гП разЌера +item.loot_15.name=ЯщОк с запчастяЌО Пт Ракеты 15-гП разЌера +item.loot_misc.name=ОбщОй ящОк с запчастяЌО Пт Ракеты +item.magnet_circular.name=ПлПскОй ЌагМОт +item.magnet_dee.name=ДО-ЌагМОты +item.magnetron.name=МагМетрПМ +item.man_core.name=ПлутПМОевПе яЎрП +item.man_explosive.name=ВзрывМые лОМзы +item.man_igniter.name=ЗажОгатель +item.man_kit.name=КПЌплект ТПлстяка +item.marshmallow.name=ЗефОр Ма палПчке +item.mask_of_infamy.name=Маска ППзПра +item.mask_piss.name=ТраМшейМый прПтОвПгаз +item.mask_rag.name=Грубая защОтМая Ќаска +item.matchstick.name=СпОчка +item.mech_key.name=БПльшПй серебряМый ключ +item.mech_key.desc=ОМ пульсОрует эМергОей. +item.mechanism_launcher_1.name=МехаМОзЌ запуска +item.mechanism_launcher_2.name=УсПвершеМствПваММый ЌехаМОзЌ запуска +item.mechanism_revolver_1.name=РевПльверМый ЌехаМОзЌ +item.mechanism_revolver_2.name=УсПвершеМствПваММый ревПльверМый ЌехаМОзЌ +item.mechanism_rifle_1.name=ВОМтПвПчМый ЌехаМОзЌ +item.mechanism_rifle_2.name=УсПвершеМствПваММый вОМтПвПчМый ЌехаМОзЌ +item.mechanism_special.name=МехаМОзЌ высПкПтехМПлПгОчМПгП ПружОя +item.med_bag.name=Аптечка первПй пПЌПщО +item.med_ipecac.name=СОрПп Оз рвПтМПгП кПрМя +item.med_ptsd.name=ЛечеМОе ПТСР +item.med_schiziphrenia.name=ЛекарствП Пт шОзПфреМОО +item.medal_liquidator.name=МеЎаль ЛОквОЎатПра +item.meltdown_tool.name=АпплОкатПр ЌгМПвеММПгП расплавлеМОя ДятлПва +item.memespoon.name=§eЗеЌлекПп +item.memory.name=item.null.name +item.mese_gavel.name=Месе ЌПлПтПк +item.mese_axe.name=Месе тПпПр +item.mese_pickaxe.name=Месе кОрка +item.meteor_charm.name=ТалОсЌаМ Пт ЌетеПрОтПв +item.meteor_remote.name=УстрПйствП Ўля вызПва ЌетеПрОтПв +item.meteorite_sword.name=МетеПрОтПвый Ќеч +item.meteorite_sword_seared.name=МетеПрОтПвый Ќеч (ОпалеММый) +item.meteorite_sword_reforged.name=МетеПрОтПвый Ќеч (ПерекПваММый) +item.meteorite_sword_hardened.name=МетеПрОтПвый Ќеч (ЗакалёММый) +item.meteorite_sword_alloyed.name=МетеПрОтПвый Ќеч (ЛегОрПваММый) +item.meteorite_sword_machined.name=МетеПрОтПвый Ќеч (МехаМОческО ПбрабПтаММый) +item.meteorite_sword_treated.name=МетеПрОтПвый Ќеч (ОбрабПтаММый) +item.meteorite_sword_etched.name=МетеПрОтПвый Ќеч (ГравОрПваММый) +item.meteorite_sword_bred.name=МетеПрОтПвый Ќеч (РазвеЎёММый) +item.meteorite_sword_irradiated.name=МетеПрОтПвый Ќеч (ОблучёММый) +item.meteorite_sword_fused.name=МетеПрОтПвый Ќеч (СплавлеММый) +item.meteorite_sword_baleful.name=МетеПрОтПвый Ќеч (ЗлПвещОй) +item.mike_cooling_unit.name=БлПк ПхлажЎеМОя ЎейтерОя +item.mike_core.name=ДейтерОевый бак с ураМПвыЌ пПкрытОеЌ +item.mike_deut.name=ДейтерОевый бак +item.mike_kit.name=КПЌплект ИвО Майка +item.mirror_tool.name=ИМструЌеМт Ўля регулОрПвкО зеркал +item.mirror_tool.linked=ППзОцОя выравМОваМОя устаМПвлеМа! +item.mirror_tool.desc=ЩелкМОте правПй кМПпкПй ЌышО пП бПйлеру, чтПбы запПЌМОть егП пПлПжеМОе.$НажЌОте Ма зеркала, чтПбы пПверМуть Ох в стПрПМу бПйлера +item.missile_anti_ballistic.name=АМтОбаллОстОческая ракета +item.missile_assembly.name=СбПрка ЌалПй ракеты +item.missile_bhole.name=Ракета "ЧерМая Дыра" +item.missile_burst.name=ЗапасМая ракета +item.missile_buster.name=ПрПтОвПбуМкерМая ракета +item.missile_buster_strong.name=УлучшеММая прПтОвПбуМкерМая ракета +item.missile_carrier.name=Ракета-МПсОтель HTR-01 +item.missile_cluster.name=КластерМая ракета +item.missile_cluster_strong.name=МПщМая кластерМая ракета +item.missile_custom.name=ППльзПвательская Ракета +item.missile_decoy.name=Ракета-прОЌаМка +item.missile_doomsday.name=Ракета СуЎМПгП ДМя +item.missile_doomsday_rusted.name=ППврежЎёММая ракета СуЎМПгП ДМя +item.missile_drill.name=КрушОтель бетПМа +item.missile_emp.name=ЭМИ-ракета +item.missile_emp_strong.name=МПщМая ЭМИ-ракета +item.missile_endo.name=ЭМЎПтерЌОческая ракета +item.missile_exo.name=ЭкзПтерЌОческая ракета +item.missile_generic.name=ЀугасМая ракета +item.missile_incendiary.name=ЗажОгательМая ракета +item.missile_incendiary_strong.name=МПщМая зажОгательМая ракета +item.missile_inferno.name=Ракета "ИМферМП Г. Р. Н. МК.II" +item.missile_kit.name=РакетМый МабПр +item.missile_micro.name=МОкрП-яЎерМая ракета +item.missile_nuclear.name=ЯЎерМая ракета +item.missile_nuclear_cluster.name=ТерЌПяЎерМая ракета +item.missile_rain.name=БПЌбПвый ЎПжЎь +item.missile_schrabidium.name=КрабОЎОевая ракета +item.missile_shuttle.name=КПсЌОческОй шаттл Reliant Robin +item.missile_soyuz.name=СПюз-ЀГ +item.missile_soyuz_lander.name=ОрбОтальМый МПЎуль +item.missile_soyuz_lander.desc=А также паршОвый пПсаЎПчМый ЌПЎуль! +item.missile_stealth.name=Стелс-ракета +item.missile_strong.name=МПщМая фугасМая ракета +item.missile_taint.name=ЗаражеММая ракета +item.missile_volcano.name=ТектПМОческая ракета +item.missile_volcano.desc=ИспПльзуя сОлу яЎерМПй взрывчаткО, Ќы ЌПжеЌ вызвать вулкаМ! +item.mold_base.name=Пустая лОтейМая фПрЌа +item.mold.name=ЛОтейМая фПрЌа +item.morning_glory.name=МПМОМ ГлПрО item.motor.name=МПтПр -item.motor_desh.name=Деш-ЌПтПр item.motor_bismuth.name=ВОсЌутПвый ЌПтПр -item.centrifuge_element.name=ЭлеЌеМт цеМтрОфугО -item.centrifuge_tower.name=БашМя цеМтрОфугО -item.reactor_core.name=АктОвМая зПМа реактПра-разЌМПжОтеля +item.motor_desh.name=Деш-ЌПтПр +item.mp_c_1.name=СхеЌа МавеЎеМОя ракеты 1-гП урПвМя +item.mp_c_2.name=СхеЌа МавеЎеМОя ракеты 2-гП урПвМя +item.mp_c_3.name=СхеЌа МавеЎеМОя ракеты 3-гП урПвМя +item.mp_c_4.name=СхеЌа МавеЎеМОя ракеты 4-гП урПвМя +item.mp_c_5.name=СхеЌа МавеЎеМОя ракеты 5-гП урПвМя +item.mp_fuselage_10_15_balefire.name=Жар-фюзеляж 10/15 разЌера +item.mp_fuselage_10_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 10/15 разЌера +item.mp_fuselage_10_15_kerosene.name=КерПсОМПвый фюзеляж 10/15 разЌера +item.mp_fuselage_10_15_solid.name=ТверЎПтПплОвМый фюзеляж 10/15 разЌера +item.mp_fuselage_10_kerosene.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_camo.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_desert.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_flames.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_insulation.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_metal.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_sky.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_sleek.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_kerosene_taint.name=КерПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_camo.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_dash.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_desert.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_flames.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_insulation.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_metal.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_sky.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_sleek.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_taint.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_kerosene_vap.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_bullet.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_flames.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_insulation.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_silvermoonlight.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_sleek.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_long_solid_soviet_glory.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_battery.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_cathedral.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_duracell.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_flames.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_moonlit.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_sleek.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера +item.mp_fuselage_10_xenon.name=КсеМПМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_10_xenon_bhole.name=КсеМПМПвый фюзеляж 10-гП разЌера +item.mp_fuselage_15_20_kerosene.name=КерПсОМПвый фюзеляж 15/20 разЌера +item.mp_fuselage_15_20_kerosene_magnusson.name=КерПсОМПвый фюзеляж 15/20 разЌера +item.mp_fuselage_15_20_solid.name=ТверЎПтПплОвМый фюзеляж 15/20 разЌера +item.mp_fuselage_15_balefire.name=Жар-фюзеляж 15-гП разЌера +item.mp_fuselage_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_hydrogen_cathedral.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_blackjack.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_camo.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_decorated.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_desert.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_insulation.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_lambda.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_metal.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_minuteman.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_pip.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_polite.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_sky.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_steampunk.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_taint.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_kerosene_yuck.name=КерПсОМПвый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_desh.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_faust.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_mimi.name=ТверЎПтПплОвМый фюзеляж МОЌО-чаМа 15-гП разЌера +item.mp_fuselage_15_solid_panorama.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_roses.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_silvermoonlight.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_snowy.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_fuselage_15_solid_soviet_stank.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера +item.mp_stability_10_cruise.name=Крылатый стабОлОзатПр 10-гП разЌера +item.mp_stability_10_flat.name=ПлПскОе стабОлОзатПры 10-гП разЌера +item.mp_stability_10_space.name=КПсЌОческОй стабОлОзатПр 10-гП разЌера +item.mp_stability_15_flat.name=ПлПскОе стабОлОзатПры 15-гП разЌера +item.mp_stability_15_soyuz.name=ЗаПстрёММые стабОлОзатПры 15-гП разЌера +item.mp_stability_15_thin.name=ТПМкОе стабОлОзатПры 15-гП разЌера +item.mp_thruster_10_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 10-гП разЌера +item.mp_thruster_10_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 10-гП разЌера +item.mp_thruster_10_xenon.name=ИПММый ЎвОгатель 10-гП разЌера +item.mp_thruster_15_balefire.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера +item.mp_thruster_15_balefire_large.name=Жар-вОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) +item.mp_thruster_15_balefire_large_rad.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) +item.mp_thruster_15_balefire_short.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (УкПрПчеММый) +item.mp_thruster_15_hydrogen.name=ВПЎПрПЎМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_hydrogen_dual.name=ДвПйМПй вПЎПрПЎМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_kerosene_dual.name=ДвПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_kerosene_triple.name=ТрПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 15-гП разЌера +item.mp_thruster_15_solid_hexdecuple.name=КестМаЎцатОсПплПвые тверЎПтПплОвМые ЎвОгателО 15-гП разЌераitem.mp_thruster_20_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_kerosene_dual.name=ДвПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_kerosene_triple.name=ТрПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 20-гП разЌера +item.mp_thruster_20_solid_multi.name=ТверЎПтПплОвМые 30-сПплПвые ЎвОгателО 20-гП разЌера +item.mp_thruster_20_solid_multier.name=ТверЎПтПплОвМые 47-сПплПвые ЎвОгателО 20-гП разЌера +item.mp_warhead_10_buster.name=БуМкерМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_cloud.name=БПегПлПвка РПзПвПгП Облака 10-гП разЌера +item.mp_warhead_10_he.name=ЀугасМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_incendiary.name=ЗажОгательМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_nuclear.name=МОкрП-ЯЎерМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_nuclear_large.name=ЯЎерМая бПегПлПвка 10-гП разЌера +item.mp_warhead_10_taint.name=ЗаражеММая бПегПлПвка 10-гП разЌера +item.mp_warhead_15_balefire.name=Жар-БПегПлПвка 15-гП разЌера +item.mp_warhead_15_boxcar.name=ГрузПвПй ВагПМ? 15-гП разЌера +item.mp_warhead_15_he.name=ЀугасМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_incendiary.name=ЗажОгательМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_n2.name=N² МОМа 15-гП разЌера +item.mp_warhead_15_nuclear.name=ЯЎерМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_nuclear_mimi.name=ГПлПва МОЌО-чаМа 15-гП разЌера +item.mp_warhead_15_nuclear_shark.name=ЯЎерМая бПегПлПвка 15-гП разЌера +item.mp_warhead_15_turbine.name=РеактОвМый ЎвОгатель 15-гП разЌера +item.mucho_mango.name=НапОтПк "AriZona Mucho Mango" +item.multi_kit.name=КПЌплект ММПгПцелевПй бПЌбы +item.multitool_beam.name=СОлПвая перчатка (Заппер) +item.multitool_decon.name=СОлПвая Перчатка (ОбеззаражОватель) +item.multitool_dig.name=СОлПвая перчатка (ДПбывающОй кПгПть) +item.multitool_ext.name=СОлПвая перчатка (Извлекатель руЎы) +item.multitool_hit.name=СОлПвая перчатка (Кулак) +item.multitool_joule.name=СОлПвая Перчатка (ГОгаЎжПуль) +item.multitool_mega.name=СОлПвая Перчатка (СуперуЎар) +item.multitool_miner.name=СОлПвая перчатка (ДПбывающОй лазер) +item.multitool_silk.name=СОлПвая перчатка (КПгПть шёлкПвПгП касаМОя) +item.multitool_sky.name=СОлПвая перчатка (НебесМый разлПЌ) +item.mysteryshovel.name=НепрПчМая лПпата +item.n2_charge.name=КрупМый взрывМПй заряЎ +item.neutrino_lens.name=НейтрОММые лОМзы +item.neutron_reflector.name=Отражатель МейтрПМПв +item.night_vision.name=ОчкО МПчМПгП зреМОя +item.night_vision.description.item=Даёт МПчМПе зреМОе (МужЎается в пПлМПЌ электрОческПЌ сете) +item.night_vision.description.in_armor=%s (Ўаёт МПчМПе зреМОе) +item.niter.name=СелОтра +item.nitra.name=НОтра +item.nitra_small.name=Кучка МОтры +item.no9.name=Кахтёрская каска +item.nossy_hat.name=СказПчМая шляпа +item.nothing.name=НОчегП +item.nuclear_waste.name=ЯЎерМые ПтхПЎы +item.nuclear_waste_pearl.name=ЖеЌчужОМа Оз яЎерМых ПтхПЎПв +item.nuclear_waste_tiny.name=МалеМькая кучка яЎерМых ПтхПЎПв +item.nuclear_waste_long.name=ДПлгПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_long_tiny.name=Кучка ЎПлгПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_long_depleted.name=РазлПжОвшОеся ЎПлгПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_long_depleted_tiny.name=Кучка разлПжОвшОхся ЎПлгПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_short.name=КПрПткПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_short_tiny.name=Кучка кПрПткПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_short_depleted.name=РазлПжОвшОеся кПрПткПжОвущОе яЎерМые ПтхПЎы +item.nuclear_waste_short_depleted_tiny.name=Кучка разлПжОвшОхся кПрПткПжОвущОх яЎерМых ПтхПЎПв +item.nuclear_waste_vitrified.name=ОстеклПваММые яЎерМые ПтхПЎы +item.nuclear_waste_vitrified_tiny.name=Кучка ПстеклПваММых яЎерМых ПтхПЎПв +item.nugget.name=КурОМый Маггетс +item.nugget_actinium.name=СаЌПрПЎПк актОМОя-227 +item.nugget_am_mix.name=СаЌПрПЎПк аЌерОцОя реактПрМПгП качества +item.nugget_am241.name=СаЌПрПЎПк аЌерОцОя-241 +item.nugget_am242.name=СаЌПрПЎПк аЌерОцОя-242 +item.nugget_americium_fuel.name=СаЌПрПЎПк аЌерОцОевПгП тПплОва +item.nugget_arsenic.name=СаЌПрПЎПк Ќышьяка +item.nugget_au198.name=СаЌПрПЎПк зПлПта-198 +item.nugget_australium.name=АвстралОевый саЌПрПЎПк +item.nugget_australium_greater.name=СаЌПрПЎПк высшегП австралОя +item.nugget_australium_lesser.name=СаЌПрПЎПк МОзшегП австралОя +item.nugget_beryllium.name=БерОллОевый саЌПрПЎПк +item.nugget_bismuth.name=СаЌПрПЎПк вОсЌута +item.nugget_co60.name=СаЌПрПЎПк кПбальта-60 +item.nugget_cobalt.name=КПбальтПвый саЌПрПЎПк +item.nugget_daffergon.name=ДаффергПМПвый саЌПрПЎПк +item.nugget_desh.name=СаЌПрПЎПк Ўеш +item.nugget_dineutronium.name=§5Dineutronium Nugget§r +item.nugget_euphemium.name=ЭвфеЌОевый саЌПрПЎПк +item.nugget_euphemium.desc=МалеМькОй кусПчек рПзПвПгП Ќеталла.$ЕгП свПйства ЎП сОх пПр МеОзвестМы,$ОБРАЩАЙТЕСЬ С НИМ ПстПрПжМП. +item.nugget_gh336.name=СаЌПрПЎПк гОПрсОя-336 +item.nugget_gh336.desc=КПллега СОбПргОуЌа. +item.nugget_hes.name=ВысПкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва +item.nugget_lead.name=СвОМцПвый саЌПрПЎПк +item.nugget_les.name=НОзкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва +item.nugget_mercury_tiny.name=МалеМькая капля ртутО +item.nugget_mercury.name=Капля ртутО +item.nugget_mox_fuel.name=СаЌПрПЎПк МОКС тПплОва +item.nugget_mox_fuel.desc=МПксО гПвПрОт: §lНЕУПЛАТА НАЛОГОВ.§r +item.nugget_neptunium.name=НептуМОевый саЌПрПЎПк +item.nugget_neptunium_fuel.name=СаЌПрПЎПк МептуМОевПгП тПплОва +item.nugget_niobium.name=СаЌПрПЎПк МОПбОя +item.nugget_osmiridium.name=СаЌПрПЎПк ПсЌОрОЎОя +item.nugget_pb209.name=СаЌПрПЎПк свОМца-209 +item.nugget_plutonium.name=ПлутПМОевый саЌПрПЎПк +item.nugget_plutonium_fuel.name=СаЌПрПЎПк плутПМОевПгП тПплОва +item.nugget_polonium.name=СаЌПрПЎПк пПлПМОя-210 +item.nugget_pu_mix.name=СаЌПрПЎПк плутПМОя реактПрМПгП качества +item.nugget_pu238.name=СаЌПрПЎПк плутПМОя-238 +item.nugget_pu239.name=СаЌПрПЎПк плутПМОя-239 +item.nugget_pu240.name=СаЌПрПЎПк плутПМОя-240 +item.nugget_pu241.name=СаЌПрПЎПк плутПМОя-241 +item.nugget_ra226.name=СаЌПрПЎПк раЎОя-226 +item.nugget_reiium.name=РеОевый саЌПрПЎПк +item.nugget_schrabidium.name=КрабОЎОевый саЌПрПЎПк +item.nugget_schrabidium_fuel.name=СаЌПрПЎПк шрабОЎОевПгП тПплОва +item.nugget_silicon.name=СаЌПрПЎПк креЌМОя +item.nugget_solinium.name=СПлОМОевый саЌПрПЎПк +item.nugget_sr90.name=СаЌПрПЎПк стрПМцОя-90 +item.nugget_tantalium.name=СаЌПрПЎПк таМтала +item.nugget_tantalium.desc='ТаМталуЌ' +item.nugget_tantalium.desc.P11=АКА ТаМталОй. +item.nugget_technetium.name=СаЌПрПЎПк техМецОя-99 +item.nugget_th232.name=СаЌПрПЎПк тПрОя-232 +item.nugget_thorium_fuel.name=СаЌПрПЎПк тПрОевПгП тПплОва +item.nugget_u233.name=СаЌПрПЎПк ураМа-233 +item.nugget_u235.name=СаЌПрПЎПк ураМа-235 +item.nugget_u238.name=СаЌПрПЎПк ураМа-238 +item.nugget_unobtainium.name=НеЎПстатОевый саЌПрПЎПк +item.nugget_uranium.name=УраМПвый саЌПрПЎПк +item.nugget_uranium_fuel.name=СаЌПрПЎПк ураМПвПгП тПплОва +item.nugget_verticium.name=ВертОцОевый саЌПрПЎПк +item.nugget_weidanium.name=ВейЎаМОевый саЌПрПЎПк +item.nugget_zirconium.name=ОскПлПк цОркПМОя +item.nuke_advanced_kit.name=РасшОреММый МабПр яЎерщОка +item.nuke_commercially_kit.name=НабПр яЎерщОка Ўля прПЎажО +item.nuke_electric_kit.name=КПЌплект ОМжеМера-электрПМщОка +item.nuke_starter_kit.name=СтартПвый МабПр яЎерщОка +item.oil_canola.name=СырПе рапсПвПе ЌаслП +item.oil_detector.name=ДетектПр МефтяМПгП резервуара +item.oil_detector.desc1=ЩелкМОте правПй кМПпкПй ЌышО, чтПбы прПскаМОрПвать Ма МалОчОе МефтО. +item.oil_detector.desc2=ДетектПр МайЎет тПлькП бПлее крупМые залежО. +item.oil_detector.bullseye=НефтяМПй резервуар пряЌП сМОзу! +item.oil_detector.detected=ППблОзПстО ПбМаружеМ резервуар МефтО. +item.oil_detector.noOil=НефтО Ме ПбМаружеМП. +item.oil_tar.coal.name=УгПльМая сЌПла +item.oil_tar.crude.name=НефтяМая сЌПла +item.oil_tar.crack.name=КрекОМгПвая МефтяМая сЌПла +item.oil_tar.paraffin.name=ПарафОМ +item.oil_tar.wax.name=ХлПрОрПваММый МефтяМПй вПск +item.oil_tar.wood.name=ДревесМая сЌПла +item.ore.asbestos=АсбестПвая +item.ore.borax=БурПвая +item.ore.chlorocalcite=ХлПркальцОтПвая +item.ore.copper=МеЎМая +item.ore.fluorite=ЀлюПрОтМая +item.ore.gold=ЗПлПтая +item.ore.hematite=ГеЌатОтПвая +item.ore.iron=ЖелезМая +item.ore.malachite=МалахОтПвая +item.ore.neodymium=НеПЎОЌПвая +item.ore.niobium=НОПбОевая +item.ore.titanium=ТОтаМПвая +item.ore.tungsten=ВПльфраЌПвая +item.ore.thorium232=ТПрОевая +item.ore.uranium=УраМПвая +item.ore_bedrock.name=%s беЎрПкПвая руЎа +item.ore_byproduct.b_aluminium.name=АлюЌОМОевый пПбПчМый прПЎукт +item.ore_byproduct.b_bismuth.name=ВОсЌутПвый пПбПчМый прПЎукт +item.ore_byproduct.b_calcium.name=КальцОевый пПбПчМый прПЎукт +item.ore_byproduct.b_copper.name=МеЎМый пПбПчМый прПЎукт +item.ore_byproduct.b_iron.name=ЖелезМый пПбПчМый прПЎукт +item.ore_byproduct.b_lead.name=СвОМцПвый пПбПчМый прПЎукт +item.ore_byproduct.b_lithium.name=ЛОтОевый пПбПчМый прПЎукт +item.ore_byproduct.b_polonium.name=ППлПМОевый пПбПчМый прПЎукт +item.ore_byproduct.b_radium.name=РаЎОевый пПбПчМый прПЎукт +item.ore_byproduct.b_silicon.name=КреЌМОевый пПбПчМый прПЎукт +item.ore_byproduct.b_sulfur.name=СерМый пПбПчМый прПЎукт +item.ore_byproduct.b_technetium.name=ТехМецОевый пПбПчМый прПЎукт +item.ore_byproduct.b_titanium.name=ТОтаМПвый пПбПчМый прПЎукт +item.ore_byproduct.b_uranium.name=УраМПвый пПбПчМый прПЎукт +item.ore_centrifuged.name=ЊеМтрОфугОрПваММая %s беЎрПкПвая руЎа +item.ore_cleaned.name=ОчОщеММая %s беЎрПкПвая руЎа +item.ore_deepcleaned.name=ГлубПкП ПчОщеММая %s беЎрПкПвая руЎа +item.ore_density_scanner.name=СкаМер плПтМПстО беЎрПкПвПй руЎы +item.ore_density_scanner.excellent=ИзбытПк +item.ore_density_scanner.high=ВысПкОй +item.ore_density_scanner.low=НОзкОй +item.ore_density_scanner.moderate=СреЎМОй +item.ore_density_scanner.poor=БеЎМый +item.ore_density_scanner.veryhigh=ОчеМь высПкОй +item.ore_density_scanner.verypoor=ОчеМь беЎМый +item.ore_enriched.name=ОбПгащёММая %s беЎрПкПвая руЎа +item.ore_nitrated.name=АзПтОрПваММая %s беЎрПкПвая руЎа +item.ore_nitrocrystalline.name=НОтрПкрОсталлОческая %s беЎрПкПвая руЎа +item.ore_purified.name=ПрПЌытая %s беЎрПкПвая руЎа +item.ore_radcleaned.name=РаЎ-ПчОщеММая %s беЎрПкПвая руЎа +item.ore_seared.name=ОсушеММая %s беЎрПкПвая руЎа +item.ore_separated.name=ОтЎелёММая %s беЎрПкПвая руЎа +item.overfuse.name=СОМгулярМая Птвёртка +item.overfuse.desc=ЧтП +item.oxy_mask.name=КОслПрПЎМая Ќаска +item.pa_coil.bscco.name=Large BSCCO Coil +item.pa_coil.chlorophyte.name=Large Chlorophyte Coil +item.pa_coil.gold.name=Large Gold Coil +item.pa_coil.niobium.name=Large NbTi Coil +item.paa_boots.name="Старые ЎПбрые бПтОМкО" Оз PaA +item.paa_legs.name=УкреплёММые пПМПжО Оз PaA +item.paa_plate.name=ЗащОщающая груЎМая пластОМа Оз PaA +item.padlock.name=ЗаЌПк +item.padlock_reinforced.name=ЗащОщеММый заЌПк +item.padlock_rusty.name=Ржавый заЌПк +item.padlock_unbreakable.name=НесПкрушОЌый заЌПк +item.pads_rubber.name=РезОМПвые прПклаЎкО +item.pads_slime.name=СлайЌПвые прПклаЎкО +item.pads_static.name=СтатОкПвые прПклаЎкО +item.page_of_.page1.name=СтраМОца 1 +item.page_of_.page2.name=СтраМОца 2 +item.page_of_.page3.name=СтраМОца 3 +item.page_of_.page4.name=СтраМОца 4 +item.page_of_.page5.name=СтраМОца 5 +item.page_of_.page6.name=СтраМОца 6 +item.page_of_.page7.name=СтраМОца 7 +item.page_of_.page8.name=СтраМОца 8 +item.pancake.name=БлОМчОкО с ЌеталлПлПЌПЌ, гвПзЎяЌО О саЌПцветМПй пылью +item.part_barrel_heavy.name=Heavy %s Barrel +item.part_barrel_light.name=Light %s Barrel +item.part_beryllium.name=КПрПбка берОллОевПй пылО +item.part_carbon.name=КПрПбка угПльМПй пылО +item.part_copper.name=КПрПбка ЌеЎМПй пылО +item.part_generic.hde.name=ЭлеЌеМт пПвышеММПй прПчМПстО +item.part_generic.lde.name=ЭлеЌеМт ЌалПй плПтМПстО +item.part_generic.piston_electric.name=ЭлектрОческОй пПршеМь +item.part_generic.piston_hydraulic.name=ГОЎравлОческОй пПршеМь +item.part_generic.piston_pneumatic.name=ПМевЌатОческОй пПршеМь +item.part_grip.name=%s Grip +item.part_lithium.name=КПрПбка лОтОевПй пылО +item.part_mechanism.name=%s Mechanism +item.part_plutonium.name=КПрПбка плутПМОевПй пылО +item.part_receiver_heavy.name=Heavy %s Receiver +item.part_receiver_light.name=Light %s Receiver +item.part_stock.name=%s Stock +item.particle_aelectron.name=Капсула с ППзОтрПМПЌ +item.particle_amat.name=Капсула с АМтОЌатерОей +item.particle_aproton.name=Капсула с АМтОпрПтПМПЌ +item.particle_aschrab.name=Капсула с АМтОшрабОЎОеЌ +item.particle_copper.name=Капсула с ОПМаЌО ЌеЎО +item.particle_dark.name=Капсула с ТёЌМПй ЌатерОей +item.particle_digamma.name=§cЧастОца ДОгаЌЌа§r +item.particle_empty.name=Пустая капсула +item.particle_higgs.name=Капсула с БПзПМПЌ ХОггса +item.particle_hydrogen.name=Капсула с ОПМаЌО вПЎПрПЎа +item.particle_lead.name=Капсула с ОПМаЌО свОМца +item.particle_lutece.name=КвазОчастОца ЛютецОя +item.particle_muon.name=Капсула с МюПМПЌ +item.particle_sparkticle.name=Капсула сП СпарктОклПЌ +item.particle_strange.name=Капсула сП СтраММыЌ кваркПЌ +item.particle_tachyon.name=Капсула с тахОПМПЌ +item.parts_legendary.name=ЛегеМЎарМые запчастО +item.peas.name=ГПрПшек +item.pedestal_steel.name=СтальМая стПйка +item.pellet_advanced.name=УлучшОтель прПОзвПЎОтельМПстО Ватцз +item.pellet_antimatter.name=Кластер аМтОЌатерОО +item.pellet_beryllium.name=БерОллОевая заЌеЎлОтельМая-пеллета +item.pellet_buckshot.name=СвОМцПвые граМулы +item.pellet_canister.name=Картечь +item.pellet_charged.name=ИПМОзОрПваММые частОцы +item.pellet_chlorophyte.name=ХлПрПфОтМые граМулы +item.pellet_claws.name=Острые ЌеталлОческОе кПгтО +item.pellet_cluster.name=Взрывчатые граМулы +item.pellet_cluster.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ДПбавляет бПльше бабахПв! +item.pellet_coal.name=ПлПтМый угПльМый брОкет +item.pellet_coolant.name=ОхлажЎающОй кластер +item.pellet_flechette.name=Ѐлешетты +item.pellet_gas.name=ЯЎПвОтый газПвый баллПМ +item.pellet_gas.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$*кхе-кхе* АстаМавОтесь пжлст! +item.pellet_hes.name=ВысПкППбПгащеММая шрабОЎОевая Ватцз-пеллета +item.pellet_lead.name=СвОМцПвая пеллета +item.pellet_les.name=НОзкППбПгащеММая шрабОЎОевая Ватцз-пеллета +item.pellet_mercury.name=РтутМые граМулы +item.pellet_mes.name=СреЎМеПбПгащеММая шрабОЎОевая Ватцз-пеллета +item.pellet_meteorite.name=МетеПрОтМые граМулы +item.pellet_neptunium.name=НептуМОевая Ватцз-пеллета item.pellet_rtg.name=РИТЭГ-пеллета Оз плутПМОя-238 item.pellet_rtg.desc=РИТЭГ-пеллета Ўля бескПМечМПй эМергОО! (пПчтО) -item.pellet_rtg_radium.name=РИТЭГ-пеллета Оз раЎОя-226 -item.pellet_rtg_radium.desc=ОтлОчМая стартПвая пеллета, пПлучеММая Оз МатуральМПгП раЎОя! -item.pellet_rtg_weak.name=Слабая ураМПвая РИТЭГ-тПплОвМая пеллета -item.pellet_rtg_weak.desc=БПлее Ўешевая О слабая пеллета, теперь с бПльшОЌ кПлОчествПЌ U238! -item.pellet_rtg_polonium.name=РИТЭГ-пеллета Оз пПлПМОя-210 -item.pellet_rtg_polonium.desc=МПщМая РИТЭГ-пеллета, ОзгПтПвлеММая Оз лучшегП пПлПМОя! -item.pellet_rtg_gold.name=РИТЭГ-пеллета Оз зПлПта-198 -item.pellet_rtg_gold.desc=ИзгПтПвлеМа Оз реЎкПгП, ПчеМь МестабОльМПгП ОзПтПпа зПлПта. -item.pellet_rtg_strontium.name=РИТЭГ-пеллета Оз стрПМцОя-90 -item.pellet_rtg_strontium.desc=ИзвестеМ штату КалОфПрМОя... -item.pellet_rtg_americium.name=РИТЭГ-пеллета Оз аЌерОцОя-241 -item.pellet_rtg_americium.desc=РеЎкОй О МаЎежМый, старый ЎПбрый АЌерОцОй! -item.pellet_rtg_lead.name=РИТЭГ-пеллета Оз свОМца-209 -item.pellet_rtg_lead.desc=ИзлучеМОе прОвеЎет к МеЌОМуеЌПй сЌертО. -item.pellet_rtg_cobalt.name=РИТЭГ-пеллета Оз кПбальта-60 -item.pellet_rtg_cobalt.desc=Не лучшОй Ўля РИТЭГ эМергОО, МП хПрПш Ўля гаЌЌа-раЎОацОО! item.pellet_rtg_actinium.name=РИТЭГ-пеллета Оз актОМОя-227 item.pellet_rtg_actinium.desc=СОяМОе гПлубПгП света О бета-лучей. +item.pellet_rtg_americium.name=РИТЭГ-пеллета Оз аЌерОцОя-241 +item.pellet_rtg_americium.desc=РеЎкОй О МаЎежМый, старый ЎПбрый АЌерОцОй! +item.pellet_rtg_berkelium.name=РИТЭГ-пеллета Оз берклОя-248 +item.pellet_rtg_berkelium.desc= +item.pellet_rtg_cobalt.name=РИТЭГ-пеллета Оз кПбальта-60 +item.pellet_rtg_cobalt.desc=Не лучшОй Ўля РИТЭГ эМергОО, МП хПрПш Ўля гаЌЌа-раЎОацОО! item.pellet_rtg_depleted.bismuth.name=Распавшаяся РИТЭГ-пеллета вОсЌута item.pellet_rtg_depleted.lead.name=Распавшаяся РИТЭГ-пеллета свОМца item.pellet_rtg_depleted.neptunium.name=Распавшаяся РИТЭГ-пеллета МептуМОя item.pellet_rtg_depleted.mercury.name=Распавшаяся РИТЭГ-пеллета ртутО -item.pellet_rtg_depleted.zirconium.name=Распавшаяся РИТЭГ-пеллета цОркПМОя item.pellet_rtg_depleted.nickel.name=Распавшаяся РИТЭГ-пеллета МОкеля -item.rtg_unit.name=РИТЭГ-элеЌеМт -item.hazmat_cloth.name=ЗащОтМая ткаМь -item.hazmat_cloth_red.name=ДПпПлМОтельМая защОтМая ткаМь -item.hazmat_cloth_grey.name=ОсвОМцПваММая защОтМая ткаМь -item.asbestos_cloth.name=ОгМеупПрМая ткаМь -item.filter_coal.name=ЀОльтр с актОвОрПваММыЌ углёЌ -item.gas_mask_filter_combo.name=КПЌбОМОрПваММый фОльтр Ўля прПтОвПгаза -item.gas_mask_filter_piss.name=СаЌПЎельМый прПЎвОМутый фОльтр Ўля прПтОвПгаза -item.gas_mask_filter_rag.name=СаЌПЎельМый фОльтр Ўля прПтОвПгаза -item.tritium_deuterium_cake.name=ТрОтОй-ЎейтерОевый пОрПг -item.tritium_deuterium_cake.desc=Не МастПящОй пОрПг, МП затП ПтлОчМПе$уМОверсальМПе терЌПяЎерМПе тПплОвП! -item.telepad.name=ТелепаЎ -item.entanglement_kit.name=КПЌплект Ўля кваМтПвПгП запутываМОя -item.entanglement_kit.desc=ПреЎЌет Ўля сПзЎаМОя телепПрта.$ППзвПляет сЌещать ОзЌереМОя с пПЌПщью скаМера ресурсПв, улучшеММПгП берОллОеЌ. -item.toothpicks.name=ЗубПчОсткО -item.ducttape.name=СкПтч -item.magnet_dee.name=ДО-ЌагМОты -item.magnet_circular.name=ПлПскОй ЌагМОт -item.cyclotron_tower.name=БашМя цОклПтрПМа +item.pellet_rtg_depleted.zirconium.name=Распавшаяся РИТЭГ-пеллета цОркПМОя +item.pellet_rtg_lead.name=РИТЭГ-пеллета Оз свОМца-209 +item.pellet_rtg_lead.desc=ИзлучеМОе прОвеЎет к МеЌОМуеЌПй сЌертО. +item.pellet_rtg_gold.name=РИТЭГ-пеллета Оз зПлПта-198 +item.pellet_rtg_gold.desc=ИзгПтПвлеМа Оз реЎкПгП, ПчеМь МестабОльМПгП ОзПтПпа зПлПта. +item.pellet_rtg_polonium.name=РИТЭГ-пеллета Оз пПлПМОя-210 +item.pellet_rtg_polonium.desc=МПщМая РИТЭГ-пеллета, ОзгПтПвлеММая Оз лучшегП пПлПМОя! +item.pellet_rtg_strontium.name=РИТЭГ-пеллета Оз стрПМцОя-90 +item.pellet_rtg_strontium.desc=ИзвестеМ штату КалОфПрМОя... +item.pellet_rtg_radium.name=РИТЭГ-пеллета Оз раЎОя-226 +item.pellet_rtg_radium.desc=ОтлОчМая стартПвая пеллета, пПлучеММая Оз МатуральМПгП раЎОя! +item.pellet_rtg_weak.name=Слабая ураМПвая РИТЭГ-тПплОвМая пеллета +item.pellet_rtg_weak.desc=БПлее Ўешевая О слабая пеллета, теперь с бПльшОЌ кПлОчествПЌ U238! +item.pellet_schrabidium.name=ЧОстая шрабОЎОевая Ватцз-пеллета +item.photo_panel.name=ЀПтПэлектрОческая паМель +item.pile_rod_boron.name=КПМтрПльМый стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_boron.desc=§9[ППглПтОтель МейтрПМПв]$§eПКМ, чтПбы переключОть +item.pile_rod_detector.name=РегулОрующОй О ЎетектОрующОй стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_detector.desc=§9[ДетектПр/пПглПтОтель МейтрПМПв]$§eПКМ ЎефьюзерПЌ чтПбы увелОчОть/уЌеМьшОть лОЌОт МейтрПМПв$§eПКМ ПтвёрткПй без шОфта чтПбы прПверОть пПтПк +item.pile_rod_lithium.name=ЛОтОевая ячейка "ЧОкагскПй пПлеММОцы" +item.pile_rod_lithium.desc=§a[ТПплОвП-разЌМПжОтель]$§eПКМ ручМПй Ўрелью чтПбы прПверОть яЎрП ячейкО +item.pile_rod_plutonium.name=ПлутПМОевый стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_plutonium.desc=§d[ИстПчМОк МейтрПМПв] +item.pile_rod_pu239.name=УраМПвый стержеМь-разЌМПжОтель "ЧОкагскПй пПлеММОцы" +item.pile_rod_pu239.desc=§a[АктОвМПе тПплОвП]$§eбПгатПе плутПМОеЌ-239. +item.pile_rod_source.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв "ЧОкагскПй пПлеММОцы" +item.pile_rod_source.desc=§d[ИстПчМОк МейтрПМПв] +item.pile_rod_uranium.name=УраМПвый стержеМь "ЧОкагскПй пПлеММОцы" +item.pile_rod_uranium.desc=§a[АктОвМПе тПплОвП]$§eПКМ ручМПй Ўрелью чтПбы взять Пбразец яЎра стержМя +item.pill_iodine.name=Таблетка ОПЎа +item.pill_iodine.desc=Removes negative effects +item.pill_herbal.name=ТравяМая паста +item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects +item.pill_red.name=КрасМая таблетка +item.pin.name=ОтЌычка +item.pin.desc="*НеЌПЎОфОцОрПваММый* верПятМПсть успешМПгП взлПЌа ПбычМПгП заЌка сПставляет ~10%. +item.pipentm.name=Труба Оз %s +item.pipes_steel.name=СтальМые трубы +item.pipes_steel.desc=Раскрафт был ОсключеМ Оз-за уклПМеМОя Пт уплаты МалПгПв +item.piston_selenium.name=ППршеМь ЎвОгателя вМутреММегП сгПраМОя +item.piston_set_desh.name=НабПр Ўеш-пПршМей +item.piston_set_dura.name=НабПр пПршМей Оз высПкПскПрПстМПй сталО +item.piston_set_starmetal.name=НабПр пПршМей Оз звёзЎМПгП Ќеталла +item.piston_set_steel.name=НабПр стальМых пПршМей +item.plan_c.name=ПлаМ С +item.plan_c.desc=Deadly +item.plant_item.mustardwillow.name=ЛОст гПрчОчМПй Овы +item.plant_item.rope.name=Верёвка +item.plant_item.tobacco.name=Табак +item.plastic_bag.name=ПластОкПвый пакетОк +item.plate_advanced_alloy.name=ПластОМа прПЎвОМутПгП сплава +item.plate_aluminium.name=АлюЌОМОевая пластОМа +item.plate_armor_ajr.name=КПваМая железМая ПбшОвка брПМО +item.plate_armor_dnt.name=ОбшОвка ДНТ-брПМО +item.plate_armor_fau.name=ОбшОвка брПМО Ѐау +item.plate_armor_hev.name=РеактОвМая ПбшОвка брПМО +item.plate_armor_lunar.name=ЛуММая ПбшОвка +item.plate_armor_titanium.name=ТОтаМПвая ПбшОвка брПМО +item.plate_bismuth.name=СПставМая пластОМа Оз вОсЌута +item.plate_bismuth.desc=Ребята, кляМусь, этП алхОЌОческОй сОЌвПл вОсЌута. +item.plate_cast.name=ЛОтая пластОМа Оз %s +item.plate_combine_steel.name=ПластОМа сталО АльяМса +item.plate_copper.name=МеЎМая пластОМа item.plate_dalekanium.name=ЗлПй Ќеталл -item.biomass.name=БОПЌасса -item.biomass_compressed.name=Сжатая бОПЌасса -item.component_limiter.name=КПЌпПМеМт стабОлОзатПра -item.component_emitter.name=КПЌпПМеМт Озлучателя -item.catalyst_clay.name=ГлОМОстый каталОзатПр -item.cell_empty.name=Пустая прПбОрка -item.cell_uf6.name=ПрПбОрка с гексафтПрОЎПЌ ураМа -item.cell_puf6.name=ПрПбОрка с гексафтПрОЎПЌ плутПМОя -item.cell_antimatter.name=ПрПбОрка с аМтОЌатерОей -item.cell_deuterium.name=ПрПбОрка с ЎейтерОеЌ -item.cell_tritium.name=ПрПбОрка с трОтОеЌ -item.cell_sas3.name=ПрПбОрка с трОсульфОЎПЌ шрабОЎОя -item.cell_anti_schrabidium.name=ПрПбОрка с аМтОшрабОЎОеЌ -item.cell_balefire.name=ПрПбОрка с газППбразМыЌ жар-плаЌеМеЌ -item.singularity.name=СОМгулярМПсть -item.singularity_micro.name=МОкрП-сОМгулярМПсть -item.singularity_counter_resonant.name=ЗаключёММая кПМтр-резПМаМсМая сОМгулярМПсть -item.singularity_super_heated.name=Перегретая резПМОрующая сОМгулярМПсть -item.singularity_spark.name=Спарк-сОМгулярМПсть -item.black_hole.name=МОМОатюрМая чёрМая Ўыра -item.crystal_xen.name=ИскусствеММый крОсталл ЗеМа -item.pellet_antimatter.name=Кластер аМтОЌатерОО -item.inf_water.name=БескПМечМый резервуар вПЎы -item.inf_water_mk2.name=УсОлеММый бескПМечМый резервуар вПЎы -item.oil_canola.name=СырПе рапсПвПе ЌаслП -item.pellet_coal.name=ПлПтМый угПльМый брОкет -item.oil_tar.crude.name=НефтяМая сЌПла -item.oil_tar.crack.name=КрекОМгПвая МефтяМая сЌПла -item.oil_tar.coal.name=УгПльМая сЌПла -item.oil_tar.wood.name=ДревесМая сЌПла -item.oil_tar.wax.name=ХлПрОрПваММый МефтяМПй вПск -item.oil_tar.paraffin.name=ПарафОМ - -item.canister_empty.name=Пустая каМОстра -item.canister_smear.name=КаМОстра с прПЌышлеММыЌ ЌаслПЌ (LEGACY) -item.canister_canola.name=МашОММая сЌазка (LEGACY) -item.canister_oil.name=КаМОстра с МеПчОщеММПй Мефтью (LEGACY) -item.canister_fuel.name=КаМОстра с ЎОзелеЌ (LEGACY) -item.canister_fuel.desc=Да зЎравствует МПсОк! -item.canister_kerosene.name=КаМОстра с керПсОМПЌ (LEGACY) -item.canister_reoil.name=КаМОстра с вПсстаМПвлеММыЌ прПЌышлеММыЌ ЌаслПЌ (LEGACY) -item.canister_petroil.name=КаМОстра с беМзОМПЌ (LEGACY) -item.canister_napalm.name=НапалЌ Б -item.canister_NITAN.name=100-ПктаМПвПе сверхтПплОвП NITAN© (LEGACY) -item.canister_heavyoil.name=КаМОстра с тяжелПй Мефтью (LEGACY) -item.canister_bitumen.name=КаМОстра с бОтуЌПЌ (LEGACY) -item.canister_heatingoil.name=КаМОстра с ЌазутПЌ (LEGACY) -item.canister_naphtha.name=КаМОстра Мафты (LEGACY) -item.canister_lightoil.name=КаМОстра с лёгкПй Мефтью (LEGACY) -item.canister_biofuel.name=КаМОстра с бОПтПплОвПЌ (LEGACY) -item.canister_gasoline.name=КаМОстра с этОлОрПваММыЌ беМзОМПЌ (LEGACY) -item.canister_fracksol.name=КаМОстра с жОЎкПстью Ўля гОЎрПразрыва пласта (LEGACY) -item.canister_ethanol.name=КаМОстра с этаМПлПЌ (LEGACY) -item.canister_full.name=КаМОстра: -item.canister_gasoline.desc=свОМец - этП Ўруг$впустО Ўруга в свПй крПвПтПк$*ЎПстаёт пОстПлет* жОвП. -item.gas_empty.name=ПустПй газПвый баллПМ -item.gas_full.name=ГазПвый баллПМ: -item.gas_petroleum.name=БаллПМ с пПпутМыЌ газПЌ -item.gas_lpg.name=БаллПМ с СПГ -item.gas_biogas.name=БаллПМ с бОПгазПЌ -item.fluid_tank_empty.name=ПустПй уМОверсальМый резервуар Ўля жОЎкПстО -item.fluid_tank_full.name=УМОверсальМый резервуар Ўля жОЎкПстО: -item.fluid_barrel_empty.name=Пустая бПчка Ўля жОЎкПстО -item.fluid_barrel_full.name=ЖОЎкПстМая бПчка: -item.fluid_tank_lead_empty.name=ПустПй резервуар Ўля ПпасМых ЌатерОалПв -item.fluid_tank_lead_full.name=Резервуар с ПпасМыЌО ЌатерОалаЌО: -item.fluid_barrel_infinite.name=БескПМечМая жОЎкПстМая бПчка -item.siphon.name=СОфПМ -desc.item.pileRod=§eПКМ пП прПсверлеММПЌу графОту Ўля вставкО$§eПКМ ПтвёрткПй чтПбы Озвлечь$ -desc.item.pipette.corrosive=МПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. -desc.item.pipette.laboratory=Теперь с 50-кратМПй тПчМПстью! -desc.item.pipette.noCorrosive=§eНе ЌПжет рабПтать с кПррПзОйМыЌО жОЎкПстяЌО. -desc.item.pipette.noEmpty=§eПОпетка Ме пуста! +item.plate_desh.name=СПставМая пластОМа Оз Ўеш +item.plate_dineutronium.name=СПставМая пластОМа Оз ЎОМейтрПМОя +item.plate_dura_steel.name=ПластОМа высПкПскПрПстМПй сталО +item.plate_euphemium.name=СПставМая пластОМа Оз эвфеЌОя +item.plate_fuel_mox.name=МОКС-тПплОвМая пластОМа +item.plate_fuel_pu238be.name=ПлутПМОй-238-БерОллевая тПплОвМая пластОМа +item.plate_fuel_pu239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа +item.plate_fuel_ra226be.name=РаЎОй-226-БерОллевая тПплОвМая пластОМа +item.plate_fuel_sa326.name=ВысПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа +item.plate_fuel_u233.name=ВысПкППбПгащеММая ураМ-233 тПплОвМая пластОМа +item.plate_fuel_u235.name=ВысПкППбПгащеММая ураМ-235 тПплОвМая пластОМа +item.plate_gold.name=ЗПлПтая пластОМа +item.plate_gunmetal.name=Gunmetal Plate +item.plate_iron.name=ЖелезМая пластОМа +item.plate_kevlar.name=КевларП-кераЌОческОй сПстав +item.plate_lead.name=СвОМцПвая пластОМа +item.plate_mixed.name=СЌешаММая пластОМа +item.plate_paa.name=ПластОМа сплава PaA +item.plate_polymer.name=ИзПлятПр +item.plate_saturnite.name=СатурМОтПвая пластОМа +item.plate_schrabidium.name=КрабОЎОевая пластОМа +item.plate_steel.name=СтальМая пластОМа +item.plate_titanium.name=ТОтаМПвая пластОМа +item.plate_weaponsteel.name=Weapon Steel Plate +item.plate_welded.name=СвареММая пластОМа Оз %s +item.polaroid.name=ППларПОЎ +item.pollution_detector.name=ДетектПр загрязМеМОя +item.powder_actinium.name=АктОМОевый пПрПшПк +item.powder_actinium_tiny.name=Кучка актОМОевПгП пПрПшка +item.powder_advanced_alloy.name=ППрПшПк прПЎвОМутПгП сплава +item.powder_aluminium.name=АлюЌОМОевый пПрПшПк +item.powder_asbestos.name=АсбестПвый пПрПшПк +item.powder_asbestos.desc=§o"ЀЀЀЀЀЀЀЀЀЀ- ММХХХХХХХХХХХХХ"§r +item.powder_ash.coal.name=УгПльМая зПла +item.powder_ash.fly.name=Летучая зПла +item.powder_ash.fullerene.name=ЀуллереМ +item.powder_ash.misc.name=Пепел +item.powder_ash.soot.name=Мелкая сажа +item.powder_ash.wood.name=ДревесМая зПла +item.powder_astatine.name=АстатПвый пПрПшПк +item.powder_at209.name=ППрПшПк астата-209 +item.powder_au198.name=ППрПшПк зПлПта-198 +item.powder_australium.name=АвстралОевый пПрПшПк +item.powder_bakelite.name=БакелОтПвый пПрПшПк +item.powder_balefire.name=ТерЌПяЎерМый пепел +item.powder_beryllium.name=БерОллОевый пПрПшПк +item.powder_bismuth.name=ВОсЌутПвый пПрПшПк +item.powder_borax.name=Бура +item.powder_boron.name=БПрМый пПрПшПк +item.powder_boron_tiny.name=Кучка бПрМПгП пПрПшка +item.powder_bromine.name=ППрПшПк брПЌа +item.powder_cadmium.name=ППрПшПк каЎЌОя +item.powder_caesium.name=ЊезОевый пПрПшПк +item.powder_calcium.name=КальцОевый пПрПшПк +item.powder_cement.name=ЊеЌеМт +item.powder_cerium.name=ЊерОевый пПрПшПк +item.powder_cerium_tiny.name=Кучка церОевПгП пПрПшка +item.powder_chlorocalcite.name=ХлПркальцОт +item.powder_chlorophyte.name=ХлПрПфОтПвый пПрПшПк +item.powder_cloud.name=ОблачМый ПсаЎПк +item.powder_co60.name=ППрПшПк кПбальта-60 +item.powder_coal.name=УгПльМый пПрПшПк +item.powder_coal_tiny.name=Кучка угПльМПгП пПрПшка +item.powder_cobalt.name=КПбальтПвый пПрПшПк +item.powder_cobalt_tiny.name=Кучка кПбальтПвПгП пПрПшка +item.powder_coltan.name=ОчОщеММый таМталОт +item.powder_coltan_ore.name=ИзЌельчеММый КПлтаМ +item.powder_combine_steel.name=ИзЌельчеММая сталь АльяМса +item.powder_copper.name=МеЎМый пПрПшПк +item.powder_cs137.name=ППрПшПк цезОя-137 +item.powder_cs137_tiny.name=Кучка пПрПшка цезОя-137 +item.powder_daffergon.name=ДаффергПМПвый пПрПшПк +item.powder_desh.name=ППрПшПк Ўеш +item.powder_desh_mix.name=СЌесь Ўеш +item.powder_desh_ready.name=ГПтПваяДеш™ сЌесь +item.powder_diamond.name=АлЌазМый пПрПшПк +item.powder_dineutronium.name=ДОМейтрПМОевый пПрПшПк +item.powder_dura_steel.name=ИзЌельчеММая высПкПскПрПстМая сталь +item.powder_emerald.name=ИзуЌруЎМый пПрПшПк +item.powder_euphemium.name=ЭвфеЌОевый пПрПшПк +item.powder_euphemium.desc=ИзЌельчеММый рПзПвый.$На вкус как клубМОка. +item.powder_fertilizer.name=ПрПЌышлеММПе уЎПбреМОе +item.powder_fire.name=КрасМый фПсфПр +item.powder_fire.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ЗажОгательМые бПЌбы - этП веселП! +item.powder_flux.name=Ѐлюс +item.powder_gold.name=ЗПлПтПй пПрПшПк +item.powder_i131.name=ППрПшПк ОПЎа-131 +item.powder_i131_tiny.name=Кучка пПрПшка ОПЎа-131 +item.powder_ice.name=КрОП-пПрПшПк +item.powder_impure_osmiridium.name=ППрПшПк загрязМёММПгП ПсЌОрОЎОя +item.powder_iodine.name=ППрПшПк ОПЎа +item.powder_iron.name=ЖелезМый пПрПшПк +item.powder_lanthanium.name=ЛаМтаМПвый пПрПшПк +item.powder_lanthanium_tiny.name=Кучка лаМтаМПвПгП пПрПшка +item.powder_lapis.name=ЛазурОтМый пПрПшПк +item.powder_lead.name=СвОМцПвый пПрПшПк +item.powder_lignite.name=ППрПшПк бурПгП угля +item.powder_limestone.name=ИзвестМякПвый пПрПшПк +item.powder_lithium.name=ЛОтОевый пПрПшПк +item.powder_lithium_tiny.name=Кучка лОтОевПгП пПрПшка +item.powder_magic.name=ИзЌельчеММПе зачарПваМОе +item.powder_magnetized_tungsten.name=ИзЌельчеММый МаЌагМОчеММый вПльфраЌ +item.powder_meteorite.name=МетеПрОтМый пПрПшПк +item.powder_meteorite_tiny.name=Кучка ЌетеПрОтМПгП пПрПшка +item.powder_molysite.name=МПлОзОт +item.powder_neodymium.name=НеПЎОЌПвый пПрПшПк +item.powder_neodymium_tiny.name=Кучка МеПЎОЌПвПгП пПрПшка +item.powder_neptunium.name=НептуМОевый пПрПшПк +item.powder_niobium.name=НОПбОевый пПрПшПк +item.powder_niobium_tiny.name=Кучка МОПбОевПгП пПрПшка +item.powder_nitan_mix.name=НОтаМПвая сЌесь +item.powder_paleogenite.name=ППрПшПк палеПгеМОта +item.powder_paleogenite_tiny.name=Кучка палеПгеМОтПвПгП пПрПшка +item.powder_plutonium.name=ПлутПМОевый пПрПшПк +item.powder_poison.name=ЯЎПвОтый пПрПшПк +item.powder_poison.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ВМОЌаМОе: ЯЎПвОтП! +item.powder_polonium.name=ППрПшПк пПлПМОя-210 +item.powder_polymer.name=ППлОЌерМый пПрПшПк +item.powder_power.name=ЭМергП-пПрПшПк +item.powder_quartz.name=Кварцевый пПрПшПк +item.powder_ra226.name=ППрПшПк раЎОя-226 +item.powder_red_copper.name=КрасМПЌеЎМый пПрПшПк +item.powder_reiium.name=РеОевый пПрПшПк +item.powder_sawdust.name=ДревесМые ПпОлкО +item.powder_schrabidate.name=ППрПшПк шрабОЎата железа +item.powder_schrabidium.name=КрабОЎОевый пПрПшПк +item.powder_semtex_mix.name=СЌесь сеЌтекса +item.powder_sodium.name=НатрОй +item.powder_spark_mix.name=Спарк-сЌесь +item.powder_sr90.name=ППрПшПк стрПМцОя-90 +item.powder_sr90_tiny.name=Кучка пПрПшка стрПМцОя-90 +item.powder_steel.name=СтальМПй пПрПшПк +item.powder_steel_tiny.name=Кучка стальМПгП пПрПшка +item.powder_strontium.name=СтрПМцОевый пПрПшПк +item.powder_tantalium.name=ППрПшПк таМтала +item.powder_tantalium.desc='ТаМталуЌ' +item.powder_tantalium.desc.P11=АКА ТаМталОй. +item.powder_tcalloy.name=ППрПшПк техМецОевПй сталО +item.powder_tektite.name=ППрПшПк тектОта +item.powder_tennessine.name=ТеММессОМПвый пПрПшПк +item.powder_thermite.name=ТерЌОт +item.powder_thorium.name=ТПрОевый пПрПшПк +item.powder_titanium.name=ТОтаМПвый пПрПшПк +item.powder_tungsten.name=ВПльфраЌПвый пПрПшПк +item.powder_unobtainium.name=НеЎПстатОевый пПрПшПк +item.powder_uranium.name=УраМПвый пПрПшПк +item.powder_verticium.name=ВертОцОевый пПрПшПк +item.powder_weidanium.name=ВейЎаМПвый пПрПшПк +item.powder_xe135.name=ППрПшПк ксеМПМа-135 +item.powder_xe135_tiny.name=Кучка пПрПшка ксеМПМа-135 +item.powder_yellowcake.name=ЙеллПукейк +item.powder_zirconium.name=ЊОркПМОевый пПрПшПк +item.power_net_tool.name=АМалОзатПр эМергПсетО item.pipette.name=ПОпетка item.pipette_boron.name=БПрМая пОпетка item.pipette_laboratory.name=ЛабПратПрМая пОпетка - -item.rod_of_discord.name=Жезл разЎПра -item.rod_empty.name=ПустПй стержеМь -item.rod.lithium.name=ЛОтОевый стержеМь -item.rod.tritium.name=ТрОтОевый стержеМь -item.rod.co.name=КПбальтПвый стержеМь -item.rod.co60.name=СтержеМь с кПбальтПЌ-60 -item.rod.th232.name=СтержеМь с тПрОеЌ-232 -item.rod.thf.name=СтержеМь с тПрОевыЌ тПплОвПЌ -item.rod.u235.name=СтержеМь с ураМПЌ-235 -item.rod.np237.name=СтержеМь с МептуМОеЌ-237 -item.rod.u238.name=СтержеМь с ураМПЌ-238 -item.rod.pu238.name=СтержеМь с плутПМОеЌ-238 -item.rod.pu239.name=СтержеМь с плутПМОеЌ-239 -item.rod.ra226.name=СтержеМь с раЎОеЌ-226 -item.rod.ac227.name=СтержеМь с актОМОеЌ-227 -item.rod.rgp.name=СтержеМь с плутПМОеЌ реактПрМПгП качества -item.rod.waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО -item.rod.lead.name=СвОМцПвый стержеМь -item.rod.uranium.name=УраМПвый стержеМь -item.rod_dual_empty.name=ПустПй сЎвПеММый стержеМь -item.rod_dual.lithium.name=СЎвПеММый лОтОевый стержеМь -item.rod_dual.tritium.name=СЎвПеММый трОтОевый стержеМь -item.rod_dual.co.name=СЎвПеММый кПбальтПвый стержеМь -item.rod_dual.co60.name=СЎвПеММый стержеМь с кПбальтПЌ-60 -item.rod_dual.th232.name=СЎвПеММый стержеМь с тПрОеЌ-232 -item.rod_dual.thf.name=СЎвПеММый стержеМь с тПрОевыЌ тПплОвПЌ -item.rod_dual.u235.name=СЎвПеММый стержеМь с ураМПЌ-235 -item.rod_dual.np237.name=СЎвПеММый стержеМь с МептуМОеЌ-237 -item.rod_dual.u238.name=СЎвПеММый стержеМь с ураМПЌ-238 -item.rod_dual.pu238.name=СЎвПеММый стержеМь с плутПМОеЌ-238 -item.rod_dual.pu239.name=СЎвПеММый стержеМь с плутПМОеЌ-239 -item.rod_dual.ra226.name=СЎвПеММый стержеМь с раЎОеЌ-226 -item.rod_dual.ac227.name=СЎвПеММый стержеМь с актОМОеЌ-227 -item.rod_dual.rgp.name=СЎвПеММый стержеМь с плутПМОеЌ реактПрМПгП качества -item.rod_dual.waste.name=СЎвПеММый стержеМь с яЎерМыЌО ПтхПЎаЌО -item.rod_dual.lead.name=СЎвПеММый свОМцПвый стержеМь -item.rod_dual.uranium.name=СЎвПеММый ураМПвый стержеМь -item.rod_quad_empty.name=ПустПй счетверёММый стержеМь -item.rod_quad.lithium.name=СчетверёММый лОтОевый стержеМь -item.rod_quad.tritium.name=СчетверёММый трОтОевый стержеМь -item.rod_quad.co.name=СчетверёММый кПбальтПвый стержеМь -item.rod_quad.co60.name=СчетверёММый стержеМь с кПбальтПЌ-60 -item.rod_quad.th232.name=СчетверёММый стержеМь с тПрОеЌ-232 -item.rod_quad.thf.name=СчетверёММый стержеМь с тПрОевыЌ тПплОвПЌ -item.rod_quad.u235.name=СчетверёММый стержеМь с ураМПЌ-235 -item.rod_quad.np237.name=СчетверёММый стержеМь с МептуМОеЌ-237 -item.rod_quad.u238.name=СчетверёММый стержеМь с ураМПЌ-238 -item.rod_quad.pu238.name=СчетверёММый стержеМь с плутПМОеЌ-238 -item.rod_quad.pu239.name=СчетверёММый стержеМь с плутПМОеЌ-239 -item.rod_quad.ra226.name=СчетверёММый стержеМь с раЎОеЌ-226 -item.rod_quad.ac227.name=СчетверёММый стержеМь с актОМОеЌ-227 -item.rod_quad.rgp.name=СчетверёММый стержеМь с плутПМОеЌ реактПрМПгП качества -item.rod_quad.waste.name=СчетверёММый стержеМь с яЎерМыЌО ПтхПЎаЌО -item.rod_quad.lead.name=СчетверёММый свОМцПвый стержеМь -item.rod_quad.uranium.name=СчетверёММый ураМПвый стержеМь - +item.primer_357.name=КапсюлО МагМуЌа .357 (x24) +item.primer_44.name=КапсюлО МагМуЌа .44 (x24) +item.primer_50.name=КрупМПкалОберМые КапсюлО (x12) +item.primer_9.name=МалПкалОберМые КапсюлО (x32) +item.primer_buckshot.name=КартечМые КапсюлО (x12) +item.protection_charm.name=ТалОсЌаМ защОты +item.prototype_kit.name=КПЌплект ПрПтПтОпа +item.pudding.name=ПуЎОМг item.pwr_fuel.bfb_am_mix.name=СтержеМь ВВЭР ЊБР с реактПрМыЌ аЌерОцОеЌ item.pwr_fuel.bfb_pu241.name=СтержеМь ВВЭР ЊБР с плутПМОеЌ-241 item.pwr_fuel.hea242.name=ТПплОвМый стержеМь ВВЭР с высПкППбПгащеММыЌ аЌерОцОеЌ-242 @@ -4222,75 +4167,68 @@ item.pwr_fuel_hot.men.name=ГПрячОй стержеМь ВВЭР сП сре item.pwr_fuel_hot.mep.name=ГПрячОй стержеМь ВВЭР сП среЎМеПбПгащеММыЌ плутПМОеЌ item.pwr_fuel_hot.meu.name=ГПрячОй стержеМь ВВЭР сП среЎМеПбПгащеММыЌ ураМПЌ item.pwr_fuel_hot.mox.name=ГПрячОй стержеМь ВВЭР с МОКС-тПплОвПЌ - -item.billet_mox_fuel.name=ЗагПтПвка МОКС-тПплОва -item.billet_mox_fuel.desc=КарЌаММый МПксО! -item.billet_neptunium.name=ЗагПтПвка МептуМОя -item.billet_polonium.name=ЗагПтПвка пПлПМОя-210 -item.billet_pu_mix.name=ЗагПтПвка плутПМОя реактПрМПгП качества -item.billet_pu238.name=ЗагПтПвка плутПМОя-238 -item.billet_pu239.name=ЗагПтПвка плутПМОя-239 -item.billet_pu240.name=ЗагПтПвка плутПМОя-240 -item.billet_pu241.name=ЗагПтПвка плутПМОя-241 -item.billet_plutonium.name=ЗагПтПвка плутПМОя -item.billet_plutonium_fuel.name=ЗагПтПвка плутПМОевПгП тПплОва -item.billet_schrabidium.name=ЗагПтПвка шрабОЎОя -item.billet_schrabidium_fuel.name=ЗагПтПвка шрабОЎОевПгП тПплОва -item.billet_solinium.name=ЗагПтПвка сПлОМОя -item.billet_th232.name=ЗагПтПвка тПрОя-232 -item.billet_thorium_fuel.name=ЗагПтПвка тПрОевПгП тПплОва -item.billet_u233.name=ЗагПтПвка ураМа-233 -item.billet_u235.name=ЗагПтПвка ураМа-235 -item.billet_u238.name=ЗагПтПвка ураМа-238 -item.billet_uranium.name=ЗагПтПвка ураМа -item.billet_uranium_fuel.name=ЗагПтПвка ураМПвПгП тПплОва -item.billet_yharonite.name=ЗагПтПвка ярПМОта -item.billet_au198.name=ЗагПтПвка зПлПта-198 -item.billet_australium.name=ЗагПтПвка австралОя -item.billet_co60.name=ЗагПтПвка кПбальта-60 -item.billet_cobalt.name=ЗагПтПвка кПбальта -item.billet_sr90.name=ЗагПтПвка стрПМцОя-90 -item.billet_australium_greater.name=ЗагПтПвка высшегП австралОя -item.billet_australium_lesser.name=ЗагПтПвка МОзшегП австралОя -item.billet_neptunium_fuel.name=ЗагПтПвка МептуМОевПгП тПплОва -item.billet_po210be.name=ЗагПтПвка ППлПМОй-210-БерОллОя -item.billet_pu238be.name=ЗагПтПвка ПлутПМОй-210-БерОллОя -item.billet_ra226be.name=ЗагПтПвка РаЎОй-226-БерОллОя -item.billet_balefire_gold.name=ЗагПтПвка флэшгПлЎа -item.billet_flashlead.name=ЗагПтПвка флэшлОЎа -item.billet_flashlead.desc=Решетка распаЎается, вызывая реакцОО аММОгОляцОО аМтОвещества О ЌатерОО, вызывая высвПбПжЎеМОе$пОПМПв, распаЎающОхся Ма ЌюПМы, каталОзОрующОх слОяМОе$яЎер, сПзЎавая МПвый элеЌеМт.$ППжалуйста, пПстарайся Ме Птставать. -item.billet_gh336.name=ЗагПтПвка гОПрсОя-336 -item.billet_gh336.desc=КПллега СОбПргОуЌа. -item.billet_technetium.name=ЗагПтПвка техМецОя-99 -item.billet_am_mix.name=ЗагПтПвка аЌерОцОя реактПрМПгП качества -item.billet_am241.name=ЗагПтПвка аЌерОцОя-241 -item.billet_am242.name=ЗагПтПвка аЌерОцОя-242 -item.billet_americium_fuel.name=ЗагПтПвка аЌерОцОевПгП тПплОва -item.billet_hes.name=ЗагПтПвка высПкППбПгащеММПгП шрабОЎОевПгП тПплОва -item.billet_les.name=ЗагПтПвка МОзкППбПгащеММПгП шрабОЎОевПгП тПплОва -item.billet_beryllium.name=ЗагПтПвка берОллОя -item.billet_bismuth.name=ЗагПтПвка вОсЌута -item.billet_zfb_am_mix.name=ЗагПтПвка ЊТС аЌерОцОя реактПрМПгП качества -item.billet_zfb_bismuth.name=ЗагПтПвка ЊТС вОсЌута -item.billet_zfb_pu241.name=ЗагПтПвка ЊТС плутПМОя-241 -item.billet_zirconium.name=ЗагПтПвка цОркПМОя -item.billet_nuclear_waste.name=ЗагПтПвка яЎерМых ПтхПЎПв -item.billet_ra226.name=ЗагПтПвка раЎОя-226 -item.billet_pb209.name=ЗагПтПвка свОМца-209 -item.billet_actinium.name=ЗагПтПвка актОМОя-227 -item.billet_silicon.name=КреЌМОевая пластОМа -item.ingot_silicon.name=КреЌМОевый брусПк -item.nugget_silicon.name=СаЌПрПЎПк креЌМОя - +item.quartz_plutonium.name=ПлутПМОческОй кварц +item.radar_linker.name=РаЎарМый сПеЎОМОтель +item.radaway.name=АМтОраЎОМ +item.radaway_flush.name=Супер-аМтОраЎОМ +item.radaway_strong.name=УсОлеММый аМтОраЎОМ +item.radx.name=РаЎ-X +item.radx.desc=Increases radiation resistance by 0.2 (37%) for 3 minutes +item.rag.name=Тряпка +item.rag_damp.name=ВлажМая тряпка +item.rag_piss.name=ПрПпОтаММая ЌПчПй тряпка +item.rbmk_fuel_balefire.name=Жар-тПплОвМый стержеМь РБМК +item.rbmk_fuel_balefire_gold.name=ЀлэшгПлЎ-тПплОвМый стержеМь РБМК +item.rbmk_fuel_drx.name=§cДОгаЌЌа тПплОвМый стержеМь РБМК§r +item.rbmk_fuel_empty.name=ПустПй тПплОвМый стержеМь РБМК +item.rbmk_fuel_flashlead.name=ЀлэшлОЎ-тПплОвМый стержеМь РБМК +item.rbmk_fuel_hea241.name=ВысПкППбПгащеММый аЌерОцОевый-241 тПплОвМый стержеМь РБМК +item.rbmk_fuel_hea242.name=ВысПкППбПгащеММый аЌерОцОевый-242 тПплОвМый стержеМь РБМК +item.rbmk_fuel_heaus.name=ВысПкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_hen.name=ВысПкППбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_hes.name=ВысПкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_hep.name=ВысПкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК +item.rbmk_fuel_hep241.name=ВысПкППбПгащеММый плутПМОевый-241 тПплОвМый стержеМь РБМК +item.rbmk_fuel_heu233.name=ВысПкППбПгащеММый ураМПвый-233 тПплОвМый стержеМь РБМК +item.rbmk_fuel_heu235.name=ВысПкППбПгащеММый ураМПвый-235 тПплОвМый стержеМь РБМК +item.rbmk_fuel_lea.name=НОзкППбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_leaus.name=НОзкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_lep.name=НОзкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК +item.rbmk_fuel_les.name=НОзкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_mea.name=СреЎМеПбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_men.name=СреЎМеПбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_mep.name=СреЎМеПбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК +item.rbmk_fuel_mes.name=СреЎМеПбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК +item.rbmk_fuel_meu.name=СреЎМеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК +item.rbmk_fuel_mox.name=МОКС-тПплОвМый стержеМь РБМК +item.rbmk_fuel_po210be.name=ППлПМОй-210-БерОллевый ОстПчМОк МейтрПМПв РБМК +item.rbmk_fuel_pu238be.name=ПлутПМОй-238-БерОллевый ОстПчМОк МейтрПМПв РБМК +item.rbmk_fuel_ra226be.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв РБМК +item.rbmk_fuel_thmeu.name=ТПрОевП-ураМПвый среЎМеПбПгащёММый тПплОвМый стержеМь РБМК +item.rbmk_fuel_ueu.name=НеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК +item.rbmk_fuel_zfb_am_mix.name=АЌерОцОй реактПрМПгП качества ЊТС стержеМь РБМК +item.rbmk_fuel_zfb_bismuth.name=ВОсЌутПвый ЊТС стержеМь РБМК +item.rbmk_fuel_zfb_pu241.name=ПлутПМОй-241 ЊТС стержеМь РБМК +item.rbmk_lid.name=ППкрывающая паМель РБМК +item.rbmk_lid_glass.name=СтекляММая пПкрывающая паМель РБМК item.rbmk_pellet_balefire.name=Жар-тПплОвМая пеллета item.rbmk_pellet_balefire_gold.name=ЀлэшгПлЎ-тПплОвМая пеллета -item.rbmk_pellet_flashlead.name=ЀлэшлОЎ-тПплОвМая пеллета item.rbmk_pellet_drx.name=§cДОгаЌЌа тПплОвМая пеллета§r +item.rbmk_pellet_flashlead.name=ЀлэшлОЎ-тПплОвМая пеллета +item.rbmk_pellet_hea241.name=ВысПкППбПгащеММая аЌерОцОевая-241 тПплОвМая пеллета +item.rbmk_pellet_hea242.name=ВысПкППбПгащеММая аЌерОцОевая-242 тПплОвМая пеллета item.rbmk_pellet_heaus.name=ВысПкППбПгащеММая австралОевая тПплОвМая пеллета +item.rbmk_pellet_hen.name=ВысПкППбПгащеММая МептуМОевая тПплОвМая пеллета +item.rbmk_pellet_hep239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пеллета +item.rbmk_pellet_hep241.name=ВысПкППбПгащеММая плутПМОевая-241 тПплОвМая пеллета +item.rbmk_pellet_heu233.name=ВысПкППбПгащеММая ураМПвая-233 тПплОвМая пеллета +item.rbmk_pellet_heu235.name=ВысПкППбПгащеММая ураМПвая-235 тПплОвМая пеллета item.rbmk_pellet_hes.name=ВысПкППбПгащеММая шрабОЎОевая тПплОвМая пеллета +item.rbmk_pellet_lea.name=НОзкППбПгащеММая аЌерОцОевая тПплОвМая пеллета item.rbmk_pellet_leaus.name=НОзкППбПгащеММая австралОевая тПплОвМая пеллета item.rbmk_pellet_lep.name=НОзкППбПгащеММая плутПМОевая тПплОвМая пеллета item.rbmk_pellet_les.name=НОзкППбПгащеММая шрабОЎОевая тПплОвМая пеллета +item.rbmk_pellet_mea.name=СреЎМеПбПгащеММая аЌерОцОевая тПплОвМая пеллета item.rbmk_pellet_men.name=СреЎМеПбПгащеММая МептуМОевая тПплОвМая пеллета item.rbmk_pellet_mep.name=СреЎМеПбПгащеММая плутПМОевая тПплОвМая пеллета item.rbmk_pellet_mes.name=СреЎМеПбПгащеММая шрабОЎОевая тПплОвМая пеллета @@ -4301,252 +4239,188 @@ item.rbmk_pellet_pu238be.name=ПлутПМОй-238-БерОллОевая пел item.rbmk_pellet_ra226be.name=РаЎОй-226-БерОллевая пеллета item.rbmk_pellet_thmeu.name=ТПрОй-ураМПвая тПплОвМая пеллета item.rbmk_pellet_ueu.name=НеПбПгащеММая ураМПвая тПплОвМая пеллета -item.rbmk_pellet_hen.name=ВысПкППбПгащеММая МептуМОевая тПплОвМая пеллета -item.rbmk_pellet_hea241.name=ВысПкППбПгащеММая аЌерОцОевая-241 тПплОвМая пеллета -item.rbmk_pellet_hea242.name=ВысПкППбПгащеММая аЌерОцОевая-242 тПплОвМая пеллета -item.rbmk_pellet_hep239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пеллета -item.rbmk_pellet_hep241.name=ВысПкППбПгащеММая плутПМОевая-241 тПплОвМая пеллета -item.rbmk_pellet_heu233.name=ВысПкППбПгащеММая ураМПвая-233 тПплОвМая пеллета -item.rbmk_pellet_heu235.name=ВысПкППбПгащеММая ураМПвая-235 тПплОвМая пеллета -item.rbmk_pellet_lea.name=НОзкППбПгащеММая аЌерОцОевая тПплОвМая пеллета -item.rbmk_pellet_mea.name=СреЎМеПбПгащеММая аЌерОцОевая тПплОвМая пеллета item.rbmk_pellet_zfb_am_mix.name=ЊТС пеллета аЌерОцОя реактПрМПгП качества item.rbmk_pellet_zfb_bismuth.name=ВОсЌутПвая ЊТС пеллета item.rbmk_pellet_zfb_pu241.name=ПлутПМОй-241 ЊТС пеллета - -item.icf_pellet.name=ТПплОвМая пеллета ICF -item.icf_pellet_depleted.name=ОбеЎМеММая тПплОвМая пеллета ICF -item.icf_pellet_empty.name=Пустая тПплОвМая пеллета ICF - -item.rod_uranium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ -item.rod_dual_uranium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ -item.rod_quad_uranium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ -item.rod_thorium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ -item.rod_dual_thorium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ -item.rod_quad_thorium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ -item.rod_plutonium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ -item.rod_dual_plutonium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ -item.rod_quad_plutonium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ -item.rod_mox_fuel_depleted.name=ОбеЎМёММый МОКС-тПплОвМый стержеМь +item.rbmk_tool.name=УстрПйствП Ўля сПеЎОМеМОя кПМсПлО РБМК +item.rbmk_tool.desc=Shift+ПКМ пП РБМК чтПбы запПЌМОть егП пПзОцОю,$shift+ПКМ пП кПМсПлО чтПбы сПеЎОМОть! +item.rbmk_tool.linked=ППзОцОя устаМПвлеМа! +item.rbmk_tool.set=РБМК сПеЎОМёМ! +item.reacher.name=ВПльфраЌПвые хваталкО +item.reactor_core.name=АктОвМая зПМа реактПра-разЌМПжОтеля +item.reactor_sensor.name=ДОстаМцОПММый ЎатчОк реактПра +item.record.glass.desc=? ? ? +item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core +item.record.ss.desc=Valve - Sector Sweep +item.record.vc.desc=Valve - Vortal Combat +item.redcoil_capacitor.name=КрасМПкатушечМый кПМЎеМсатПр +item.redstone_depleted.name=ОбесцвечеММая красМая пыль +item.redstone_sword.name=Меч Оз красМПгП каЌМя +item.reer_graar.name=Рер Граар +item.remote.name=СлПЌаММый пульт ЎОстаМцОПММПгП управлеМОя +item.ring_pull.name=Ключ-кПльцП +item.ring_starmetal.name=§9КПльцП Оз ЗвёзЎМПгП Ќеталла§r +item.robes_boots.name=ППлевые бПтОМкО +item.robes_helmet.name=ППвсеЎМевМая тПлстПвка с капюшПМПЌ +item.robes_legs.name=ППвсеЎМевМые брюкО +item.robes_plate.name=ППвсеЎМевМая кПфта +item.rocket_fuel.name=ТверЎПе тПплОвП (РакетМПе) +item.rod_empty.name=ПустПй стержеМь +item.rod.lithium.name=ЛОтОевый стержеМь +item.rod.tritium.name=ТрОтОевый стержеМь +item.rod.co.name=КПбальтПвый стержеМь +item.rod.co60.name=СтержеМь с кПбальтПЌ-60 +item.rod.ra226.name=СтержеМь с раЎОеЌ-226 +item.rod.ac227.name=СтержеМь с актОМОеЌ-227 +item.rod.th232.name=СтержеМь с тПрОеЌ-232 +item.rod.thf.name=СтержеМь с тПрОевыЌ тПплОвПЌ +item.rod.u235.name=СтержеМь с ураМПЌ-235 +item.rod.np237.name=СтержеМь с МептуМОеЌ-237 +item.rod.u238.name=СтержеМь с ураМПЌ-238 +item.rod.pu238.name=СтержеМь с плутПМОеЌ-238 +item.rod.pu239.name=СтержеМь с плутПМОеЌ-239 +item.rod.rgp.name=СтержеМь с плутПМОеЌ реактПрМПгП качества +item.rod.waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod.lead.name=СвОМцПвый стержеМь +item.rod.uranium.name=УраМПвый стержеМь +item.rod_dual_empty.name=ПустПй сЎвПеММый стержеМь +item.rod_dual.lithium.name=СЎвПеММый лОтОевый стержеМь +item.rod_dual.tritium.name=СЎвПеММый трОтОевый стержеМь +item.rod_dual.co.name=СЎвПеММый кПбальтПвый стержеМь +item.rod_dual.co60.name=СЎвПеММый стержеМь с кПбальтПЌ-60 +item.rod_dual.ra226.name=СЎвПеММый стержеМь с раЎОеЌ-226 +item.rod_dual.ac227.name=СЎвПеММый стержеМь с актОМОеЌ-227 +item.rod_dual.th232.name=СЎвПеММый стержеМь с тПрОеЌ-232 +item.rod_dual.thf.name=СЎвПеММый стержеМь с тПрОевыЌ тПплОвПЌ +item.rod_dual.u235.name=СЎвПеММый стержеМь с ураМПЌ-235 +item.rod_dual.np237.name=СЎвПеММый стержеМь с МептуМОеЌ-237 +item.rod_dual.u238.name=СЎвПеММый стержеМь с ураМПЌ-238 +item.rod_dual.pu238.name=СЎвПеММый стержеМь с плутПМОеЌ-238 +item.rod_dual.pu239.name=СЎвПеММый стержеМь с плутПМОеЌ-239 +item.rod_dual.rgp.name=СЎвПеММый стержеМь с плутПМОеЌ реактПрМПгП качества +item.rod_dual.waste.name=СЎвПеММый стержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_dual.lead.name=СЎвПеММый свОМцПвый стержеМь +item.rod_dual.uranium.name=СЎвПеММый ураМПвый стержеМь +item.rod_quad_empty.name=ПустПй счетверёММый стержеМь +item.rod_quad.lithium.name=СчетверёММый лОтОевый стержеМь +item.rod_quad.tritium.name=СчетверёММый трОтОевый стержеМь +item.rod_quad.co.name=СчетверёММый кПбальтПвый стержеМь +item.rod_quad.co60.name=СчетверёММый стержеМь с кПбальтПЌ-60 +item.rod_quad.ra226.name=СчетверёММый стержеМь с раЎОеЌ-226 +item.rod_quad.ac227.name=СчетверёММый стержеМь с актОМОеЌ-227 +item.rod_quad.th232.name=СчетверёММый стержеМь с тПрОеЌ-232 +item.rod_quad.thf.name=СчетверёММый стержеМь с тПрОевыЌ тПплОвПЌ +item.rod_quad.u235.name=СчетверёММый стержеМь с ураМПЌ-235 +item.rod_quad.np237.name=СчетверёММый стержеМь с МептуМОеЌ-237 +item.rod_quad.u238.name=СчетверёММый стержеМь с ураМПЌ-238 +item.rod_quad.pu238.name=СчетверёММый стержеМь с плутПМОеЌ-238 +item.rod_quad.pu239.name=СчетверёММый стержеМь с плутПМОеЌ-239 +item.rod_quad.rgp.name=СчетверёММый стержеМь с плутПМОеЌ реактПрМПгП качества +item.rod_quad.waste.name=СчетверёММый стержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_quad.lead.name=СчетверёММый свОМцПвый стержеМь +item.rod_quad.uranium.name=СчетверёММый ураМПвый стержеМь +item.rod_australium.name=Australium Rod +item.rod_balefire.name=Balefire Rod +item.rod_balefire_blazing.name=Blazing Balefire Rod +item.rod_coolant.name=ОхлажЎающОй стержеМь +item.rod_daffergon.name=Daffergon Rod +item.rod_dual_balefire.name=Balefire Dual Rod +item.rod_dual_balefire_blazing.name=Blazing Balefire Dual Rod +item.rod_dual_coolant.name=СЎвПеММый ПхлажЎающОй стержеМь +item.rod_dual_lead.name=Lead Dual Rod +item.rod_dual_lithium.name=Dual Lithium Rod +item.rod_dual_mox_fuel.name=СЎвПеММый МОКС-тПплОвМый стержеМь item.rod_dual_mox_fuel_depleted.name=СЎвПеММый ПбеЎМёММый МОКС-тПплОвМый стержеМь -item.rod_quad_mox_fuel_depleted.name=СчетверёММый ПбеЎМёММый МОКС-тПплОвМый стержеМь -item.rod_schrabidium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ +item.rod_dual_neptunium.name=Neptunium Dual Rod +item.rod_dual_plutonium.name=Plutonium Dual Rod +item.rod_dual_plutonium_fuel.name=СЎвПеММый плутПМОевый тПплОвМый стержеМь +item.rod_dual_plutonium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ +item.rod_dual_polonium.name=Polonium-210 Dual Rod +item.rod_dual_pu238.name=Plutonium-238 Dual Rod +item.rod_dual_pu239.name=Plutonium-239 Dual Rod +item.rod_dual_pu240.name=Plutonium-240 Dual Rod +item.rod_dual_schrabidium.name=Schrabidium-326 Dual Rod +item.rod_dual_schrabidium_fuel.name=СЎвПеММый шрабОЎОевый тПплОвМый стержеМь item.rod_dual_schrabidium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ -item.rod_quad_schrabidium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ - -item.rod_waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_dual_solinium.name=Schrabidium-327 Dual Rod +item.rod_dual_th232.name=Thorium-232 Dual Rod +item.rod_dual_thorium_fuel.name=СЎвПеММый тПрОевый тПплОвМый стержеМь +item.rod_dual_thorium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ +item.rod_dual_tritium.name=Dual Tritium Cell +item.rod_dual_u233.name=Uranium-233 Dual Rod +item.rod_dual_u235.name=Uranium-235 Dual Rod +item.rod_dual_u238.name=Uranium-238 Dual Rod +item.rod_dual_uranium.name=Uranium Dual Rod +item.rod_dual_uranium_fuel.name=СЎвПеММый ураМПвый тПплОвМый стержеМь +item.rod_dual_uranium_fuel_depleted.name=СЎвПеММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ item.rod_dual_waste.name=СЎвПеММый стержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_dual_water.name=СЎвПеММый стержеМь с вПЎПй +item.rod_euphemium.name=Euphemium Rod +item.rod_lead.name=Lead Rod +item.rod_lithium.name=Lithium Rod +item.rod_mox_fuel.name=МОКС-тПплОвМый стержеМь +item.rod_mox_fuel_depleted.name=ОбеЎМёММый МОКС-тПплОвМый стержеМь +item.rod_neptunium.name=Neptunium Rod +item.rod_of_discord.name=Жезл разЎПра +item.rod_plutonium.name=Plutonium Rod +item.rod_plutonium_fuel.name=ПлутПМОевый тПплОвМый стержеМь +item.rod_plutonium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ +item.rod_polonium.name=Polonium-210 Rod +item.rod_pu238.name=Plutonium-238 Rod +item.rod_pu239.name=Plutonium-239 Rod +item.rod_pu240.name=Plutonium-240 Rod +item.rod_quad_balefire.name=Balefire Quad Rod +item.rod_quad_balefire_blazing.name=Blazing Balefire Quad Rod +item.rod_quad_coolant.name=СчетверёММый ПхлажЎающОй стержеМь +item.rod_quad_euphemium.name=ВыгПревшОй счетверёММый шрабОЎОевый тПплОвМый стержеМь +item.rod_quad_lead.name=Lead Quad Rod +item.rod_quad_lithium.name=Quad Lithium Rod +item.rod_quad_mox_fuel.name=СчетверёММый МОКС-тПплОвМый стержеМь +item.rod_quad_mox_fuel_depleted.name=СчетверёММый ПбеЎМёММый МОКС-тПплОвМый стержеМь +item.rod_quad_neptunium.name=Neptunium Quad Rod +item.rod_quad_plutonium.name=Plutonium Quad Rod +item.rod_quad_plutonium_fuel.name=СчетверёММый плутПМОевый тПплОвМый стержеМь +item.rod_quad_plutonium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ плутПМОеЌ +item.rod_quad_polonium.name=Polonium-210 Quad Rod +item.rod_quad_pu238.name=Plutonium-238 Quad Rod +item.rod_quad_pu239.name=Plutonium-239 Quad Rod +item.rod_quad_pu240.name=Plutonium-240 Quad Rod +item.rod_quad_schrabidium.name=Schrabidium-326 Quad Rod +item.rod_quad_schrabidium_fuel.name=СчетверёММый шрабОЎОевый тПплОвМый стержеМь +item.rod_quad_schrabidium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ +item.rod_quad_solinium.name=Schrabidium-327 Quad Rod +item.rod_quad_th232.name=Thorium-232 Quad Rod +item.rod_quad_thorium_fuel.name=СчетверёММый тПрОевый тПплОвМый стержеМь +item.rod_quad_thorium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ +item.rod_quad_tritium.name=Quad Tritium Cell +item.rod_quad_u233.name=Uranium-233 Quad Rod +item.rod_quad_u235.name=Uranium-235 Quad Rod +item.rod_quad_u238.name=Uranium-238 Quad Rod +item.rod_quad_uranium.name=Uranium Quad Rod +item.rod_quad_uranium_fuel.name=СчетверёММый ураМПвый тПплОвМый стержеМь +item.rod_quad_uranium_fuel_depleted.name=СчетверёММый тПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ item.rod_quad_waste.name=СчетверёММый стержеМь с яЎерМыЌО ПтхПЎаЌО - -item.gun_rpg.name=БезПткатМая ВОМтПвка “Карл Густав” -item.gun_karl.name=Карл -item.gun_panzerschreck.name=ПаМцершрек -item.gun_rpg_ammo.name=Ракета (LEGACY) -item.gun_stinger.name=FIM-92 "СтОМгер" -item.gun_skystinger.name="НебесМый СтОМгер" -item.gun_stinger_ammo.name=Ракета-СтОМгер (LEGACY) -item.ammo_stinger_rocket.name=Ракета-СтОМгер -item.ammo_stinger_rocket_he.name=Ракета-СтОМгер (ЀугасМая) -item.ammo_stinger_rocket_incendiary.name=Ракета-СтОМгер (ЗажОгательМая) -item.ammo_stinger_rocket_nuclear.name=Ракета-СтОМгер (ПрОвет) -item.ammo_stinger_rocket_bones.name=Ракета-СтОМгер (ППОск ЌПбПв) -item.gun_hk69.name=ГраМатПЌет -item.gun_quadro.name="Четыре Сыра" -item.gun_sauer.name=ДрПбПвОк СтэМа Зауэра -item.gun_spas12.name=ДрПбПвОк SPAS-12 -item.gun_thompson.name=ПОстПлет-пулеЌёт ТПЌпсПМа -item.gun_lunatic_marksman.name=ЛуММая сМайперская вОМтПвка - -item.flame_pony.name=КартОМка цветМПй лПшаЎО -item.flame_pony.desc=Желтая лПшаЎь пПбежЎает сОМюю лПшаЎь, этП ЎПказаММый факт! -item.flame_conspiracy.name=КПМспОрПлПгОческая теПрОя -item.flame_conspiracy.desc=СтальМые балкО Ме ЌПгут расплавОть реактОвМПе тПплОвП! -item.flame_politics.name=ППлОтОческая теЌа -item.flame_politics.desc=ДПМальЎ Дак пПстрПОт стеМу! -item.flame_opinion.name=СПбствеММПе ЌМеМОе -item.flame_opinion.desc=ЧтП ж, ЌМе этП МравОтся... -item.pellet_cluster.name=Взрывчатые граМулы -item.pellet_cluster.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ДПбавляет бПльше бабахПв! -item.pellet_buckshot.name=СвОМцПвые граМулы -item.pellet_flechette.name=Ѐлешетты -item.powder_fire.name=КрасМый фПсфПр -item.powder_fire.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ЗажОгательМые бПЌбы - этП веселП! -item.powder_ice.name=КрОП-пПрПшПк -item.powder_poison.name=ЯЎПвОтый пПрПшПк -item.powder_poison.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$ВМОЌаМОе: ЯЎПвОтП! -item.pellet_gas.name=ЯЎПвОтый газПвый баллПМ -item.pellet_gas.desc=ИспПльзуется в ЌМПгПцелевых бПЌбах:$*кхе-кхе* АстаМавОтесь пжлст! -item.magnetron.name=МагМетрПМ -item.powder_thermite.name=ТерЌОт - -item.chemical_dye.black.name=ХОЌОческОй красОтель (ЧерМый) -item.chemical_dye.blue.name=ХОЌОческОй красОтель (СОМОй) -item.chemical_dye.brown.name=ХОЌОческОй красОтель (КПрОчМевый) -item.chemical_dye.cyan.name=ХОЌОческОй красОтель (ГПлубПй) -item.chemical_dye.gray.name=ХОЌОческОй красОтель (Серый) -item.chemical_dye.green.name=ХОЌОческОй красОтель (ЗелёМый) -item.chemical_dye.lightblue.name=ХОЌОческОй красОтель (СветлП-сОМОй) -item.chemical_dye.lime.name=ХОЌОческОй красОтель (ЛайЌПвый) -item.chemical_dye.magenta.name=ХОЌОческОй красОтель (ПурпурМый) -item.chemical_dye.orange.name=ХОЌОческОй красОтель (ОраМжевый) -item.chemical_dye.pink.name=ХОЌОческОй красОтель (РПзПвый) -item.chemical_dye.purple.name=ХОЌОческОй красОтель (ЀОПлетПвый) -item.chemical_dye.red.name=ХОЌОческОй красОтель (КрасМый) -item.chemical_dye.silver.name=ХОЌОческОй красОтель (СветлП-серый) -item.chemical_dye.white.name=ХОЌОческОй красОтель (Белый) -item.chemical_dye.yellow.name=ХОЌОческОй красОтель (Жёлтый) - -item.crayon.black.name=ЧерМый ЌелПк -item.crayon.blue.name=СОМОй ЌелПк -item.crayon.brown.name=КПрОчМевый ЌелПк -item.crayon.cyan.name=ГПлубПй ЌелПк -item.crayon.gray.name=Серый ЌелПк -item.crayon.green.name=ЗелёМый ЌелПк -item.crayon.lightblue.name=СветлП-сОМОй ЌелПк -item.crayon.lime.name=ЛайЌПвый ЌелПк -item.crayon.magenta.name=ПурпурМый ЌелПк -item.crayon.orange.name=ОраМжевый ЌелПк -item.crayon.pink.name=РПзПвый ЌелПк -item.crayon.purple.name=ЀОПлетПвый ЌелПк -item.crayon.red.name=КрасМый ЌелПк -item.crayon.silver.name=СветлП-серый ЌелПк -item.crayon.white.name=Белый ЌелПк -item.crayon.yellow.name=Желтый ЌелПк - -item.nuke_starter_kit.name=СтартПвый МабПр яЎерщОка -item.nuke_commercially_kit.name=НабПр яЎерщОка Ўля прПЎажО -item.nuke_advanced_kit.name=РасшОреММый МабПр яЎерщОка -item.gadget_kit.name=КПЌплект ГаЎжета -item.boy_kit.name=КПЌплект Малыша -item.man_kit.name=КПЌплект ТПлстяка -item.mike_kit.name=КПЌплект ИвО Майка -item.tsar_kit.name=КПЌплект Њарь БПЌбы -item.fleija_kit.name=КПЌплект Ѐ.Л.Е.Я -item.multi_kit.name=КПЌплект ММПгПцелевПй бПЌбы -item.custom_kit.name=КПЌплект ППльзПвательскПй бПЌбы -item.grenade_kit.name=КПЌплект граМат -item.nuke_electric_kit.name=КПЌплект ОМжеМера-электрПМщОка -item.prototype_kit.name=КПЌплект ПрПтПтОпа -item.missile_kit.name=РакетМый МабПр -item.t45_kit.name=КПЌплект сОлПвПй брПМО T45 -item.euphemium_kit.name=ЭвфеЌОевый кПЌплект -item.solinium_kit.name=СПлОМОевый кПЌплект -item.hazmat_kit.name=НабПр хОЌОческПй О раЎОацОПММПй защОты -item.hazmat_red_kit.name=РасшОреММый кПЌплект хОЌОческПй О раЎОацОПММПй защОты -item.hazmat_grey_kit.name=ВысПкПпрПОзвПЎОтельМый МабПр хОЌОческПй О раЎОацОПММПй защОты -item.kit_toolbox.name=ЯщОк Ўля ОМструЌеМтПв -item.kit_toolbox_empty.name=ПустПй ящОк Ўля ОМструЌеМтПв - -tile.burning_earth.name=ГПрящая трава -tile.waste_earth.name=Мертвая трава -tile.dirt_dead.name=Мертвая зеЌля -tile.impact_dirt.name=ВыжжеМая зеЌля -tile.plant_dead.name=МертвПе растеМОе -tile.dirt_oily.name=ПрПпОтаММая Мефтью зеЌля -tile.waste_trinitite.name=ТрОМОтОтПвая руЎа -tile.waste_trinitite_red.name=КрасМая трОМОтОтПвая руЎа -tile.waste_leaves.name=Мёртвые лОстья -tile.leaves_layer.name=УпавшОе лОстья -tile.waste_log.name=ОбуглеММПе бревМП -tile.waste_planks.name=ОбуглеММые ЎеревяММые ЎПскО -item.trinitite.name=ТрОМОтОт -item.nuclear_waste.name=ЯЎерМые ПтхПЎы -item.scrap_nuclear.name=РаЎОПактОвМый ЌусПр -item.scrap_oil.name=НефтяМые ПтхПЎы -item.scrap_plastic.name=КускО пластЌассы -item.scraps.name=ЛОтейМый шлак -item.nuclear_waste_tiny.name=МалеМькая кучка яЎерМых ПтхПЎПв -item.nuclear_waste_vitrified.name=ОстеклПваММые яЎерМые ПтхПЎы -item.nuclear_waste_vitrified_tiny.name=Кучка ПстеклПваММых яЎерМых ПтхПЎПв -item.waste_uranium.name=ОбеЎМеММПе ураМПвПе тПплОвП -item.waste_thorium.name=ОбеЎМеММПе тПрОевПе тПплОвП -item.waste_plutonium.name=ОбеЎМеММПе плутПМОевПе тПплОвП -item.waste_mox.name=ОбеЎМеММПе МОКС-тПплОвП -item.waste_schrabidium.name=ОбеЎМеММПе шрабОЎОевПе тПплОвП -item.waste_u235.name=ОбеЎМеММПе ураМ-235 тПплОвП -item.waste_u233.name=ОбеЎМеММПе ураМ-233 тПплОвП -item.waste_natural_uranium.name=ОбеЎМеММПе прОрПЎМПе ураМПвПе тПплОвП -item.waste_zfb_mox.name=ОбеЎМеММПе ЊТС МОКС-тПплОвП -item.nuclear_waste_pearl.name=ЖеЌчужОМа Оз яЎерМых ПтхПЎПв -item.nuclear_waste_long.name=ДПлгПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_long_tiny.name=Кучка ЎПлгПжОвущОх яЎерМых ПтхПЎПв -item.nuclear_waste_long_depleted.name=РазлПжОвшОеся ЎПлгПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_long_depleted_tiny.name=Кучка разлПжОвшОхся ЎПлгПжОвущОх яЎерМых ПтхПЎПв -item.nuclear_waste_short.name=КПрПткПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_short_tiny.name=Кучка кПрПткПжОвущОх яЎерМых ПтхПЎПв -item.nuclear_waste_short_depleted.name=РазлПжОвшОеся кПрПткПжОвущОе яЎерМые ПтхПЎы -item.nuclear_waste_short_depleted_tiny.name=Кучка разлПжОвшОхся кПрПткПжОвущОх яЎерМых ПтхПЎПв -item.scrap.name=МеталлПлПЌ -item.debris_fuel.name=Часть тПплОвМПгП стержМя РБМК -item.debris_graphite.name=ГПрячОй кусПк графОта -item.debris_metal.name=ППкПрёжеММая ЌеталлОческая балка -item.debris_concrete.name=БПльшПй кусПк бетПМа -item.debris_exchanger.name=СПрваМая ЌеталлОческая ПбшОвка -item.debris_shrapnel.name=МеталлОческая шрапМель -item.debris_element.name=ППврежЎёММый тПплОвМый элеЌеМт -item.debris_exchanger.name=ОблПЌПк теплППбЌеМОка -item.cinnebar.name=КОМПварь -item.nugget_mercury_tiny.name=МалеМькая капля ртутО -item.nugget_mercury.name=Капля ртутО -item.bottle_mercury.name=Пузырёк ртутО - -item.ingot_uranium_fuel.name=СлОтПк ураМПвПгП тПплОва -item.ingot_thorium_fuel.name=СлОтПк тПрОевПгП тПплОва -item.ingot_plutonium_fuel.name=СлОтПк плутПМОевПгП тПплОва -item.ingot_mox_fuel.name=СлОтПк МОКС-тПплОва -item.ingot_schrabidium_fuel.name=СлОтПк шрабОЎОевПгП тПплОва -item.nugget_uranium_fuel.name=СаЌПрПЎПк ураМПвПгП тПплОва -item.nugget_thorium_fuel.name=СаЌПрПЎПк тПрОевПгП тПплОва -item.nugget_plutonium_fuel.name=СаЌПрПЎПк плутПМОевПгП тПплОва -item.nugget_polonium.name=СаЌПрПЎПк пПлПМОя-210 -item.nugget_mox_fuel.name=СаЌПрПЎПк МОКС тПплОва -item.nugget_mox_fuel.desc=МПксО гПвПрОт: §lНЕУПЛАТА НАЛОГОВ.§r -item.nugget_schrabidium_fuel.name=СаЌПрПЎПк шрабОЎОевПгП тПплОва - -item.grenade_generic.name=ГраМата -item.grenade_strong.name=УсПвершеМствПваММая граМата -item.grenade_frag.name=ОскПлПчМая граМата -item.grenade_fire.name=ОгМеММая ПскПлПчМая граМата -item.grenade_shrapnel.name=ГраМата сП шрапМелью -item.grenade_cluster.name=КластерМая бПЌба -item.grenade_flare.name=СОгМальМая ракета -item.grenade_electric.name=ЭлектрПграМата -item.grenade_poison.name=Отравляющая граМата -item.grenade_gas.name=ГазПвая граМата -item.grenade_pulse.name=ИЌпульсМая граМата -item.grenade_plasma.name=ПлазЌеММая граМата -item.grenade_tau.name=Тау-ГраМата -item.grenade_schrabidium.name=КрабОЎОевая граМата -item.grenade_lemon.name=ЗажОгательМый лОЌПМ -item.grenade_gascan.name=БрПсаеЌая беМзОМПвая каМОстра -item.grenade_mk2.name=ГраМата МК 2 "ППсПл АМаМас" -item.grenade_aschrab.name=БрПсаеЌая аМтОшрабОЎОевая прПбОрка -item.grenade_nuke.name=БурПвая граМата “Марк VI” -item.grenade_nuclear.name=ЯЎерМая граМата -item.grenade_zomg.name=ГраМата аММОгОляцОО пар ПтрОцательМПй эМергОО -item.grenade_black_hole.name=ГраМата сОМгулярМПстО -item.grenade_cloud.name=КПлба с кОслПтМыЌ ПблакПЌ -item.grenade_pink_cloud.name=КПлба с рПзПвыЌ ПблакПЌ -item.ullapool_caber.name=АллапульскПе бревМП -item.grenade_smart.name=СЌарт-граМата -item.grenade_mirv.name=МИРВ-граМата -item.grenade_breach.name=РазрывМая граМата -item.grenade_burst.name=ЭкскаватПрМая граМата - -item.grenade_if_generic.name=IF - ГраМата -item.grenade_if_he.name=IF - ЀугасМая граМата -item.grenade_if_bouncy.name=IF - Прыгучая граМата -item.grenade_if_sticky.name=IF - ЛОпкая граМата -item.grenade_if_impact.name=IF - УЎарМая граМата -item.grenade_if_incendiary.name=IF - ЗажОгательМая граМата -item.grenade_if_toxic.name=IF - ТПксОчМая граМата -item.grenade_if_concussion.name=IF - КПМтузОПММая граМата -item.grenade_if_brimstone.name=IF - БрПсаеЌая серМая ЌОМа -item.grenade_if_mystery.name=IF - М.-ГраМата -item.grenade_if_spark.name=IF - С.-ГраМата -item.grenade_if_hopwire.name=IF - ГраМата сОМгулярМПстО -item.grenade_if_null.name=IF - Нулевая граМата - +item.rod_quad_water.name=СчетверёММый стержеМь с вПЎПй +item.rod_reiium.name=Reiium Rod +item.rod_schrabidium.name=Schrabidium-326 Rod +item.rod_schrabidium_fuel.name=КрабОЎОевый тПплОвМый стержеМь +item.rod_schrabidium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ шрабОЎОеЌ +item.rod_solinium.name=Schrabidium-327 Rod +item.rod_th232.name=Thorium-232 Rod +item.rod_thorium_fuel.name=ТПрОевый тПплОвМый стержеМь +item.rod_thorium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ тПрОеЌ +item.rod_tritium.name=Tritium Cell +item.rod_u233.name=Uranium-233 Rod +item.rod_u235.name=Uranium-235 Rod +item.rod_u238.name=Uranium-238 Rod +item.rod_unobtainium.name=Unobtainium Rod +item.rod_uranium.name=Uranium Rod +item.rod_uranium_fuel.name=УраМПвый тПплОвМый стержеМь +item.rod_uranium_fuel_depleted.name=ТПплОвМый стержеМь с ПбеЎМёММыЌ ураМПЌ +item.rod_verticium.name=Verticium Rod +item.rod_waste.name=СтержеМь с яЎерМыЌО ПтхПЎаЌО +item.rod_water.name=СтержеМь с вПЎПй +item.rod_weidanium.name=Weidanium Rod item.rod_zirnox_empty.name=ПустПй стержеМь ЊОрМПкс item.rod_zirnox_natural_uranium_fuel.name=НеПбПгащеММый ураМПвый тПплОвМый стержеМь ЊОрМПкс item.rod_zirnox_uranium_fuel.name=УраМПвый тПплОвМый стержеМь ЊОрМПкс @@ -4569,1274 +4443,342 @@ item.rod_zirnox_u233_fuel_depleted.name=ОбеЎМёММый ураМ-233 тПп item.rod_zirnox_u235_fuel_depleted.name=ОбеЎМёММый ураМ-235 тПплОвМый стержеМь ЊОрМПкс item.rod_zirnox_les_fuel_depleted.name=ОбеЎМёММый МОзкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь ЊОрМПкс item.rod_zirnox_zfb_mox_depleted.name=ОбеЎМёММый ЊТС МОКС-тПплОвМый стержеМь ЊОрМПкс -item.rod_uranium_fuel.name=УраМПвый тПплОвМый стержеМь -item.rod_dual_uranium_fuel.name=СЎвПеММый ураМПвый тПплОвМый стержеМь -item.rod_quad_uranium_fuel.name=СчетверёММый ураМПвый тПплОвМый стержеМь -item.rod_thorium_fuel.name=ТПрОевый тПплОвМый стержеМь -item.rod_dual_thorium_fuel.name=СЎвПеММый тПрОевый тПплОвМый стержеМь -item.rod_quad_thorium_fuel.name=СчетверёММый тПрОевый тПплОвМый стержеМь -item.rod_plutonium_fuel.name=ПлутПМОевый тПплОвМый стержеМь -item.rod_dual_plutonium_fuel.name=СЎвПеММый плутПМОевый тПплОвМый стержеМь -item.rod_quad_plutonium_fuel.name=СчетверёММый плутПМОевый тПплОвМый стержеМь -item.rod_mox_fuel.name=МОКС-тПплОвМый стержеМь -item.rod_dual_mox_fuel.name=СЎвПеММый МОКС-тПплОвМый стержеМь -item.rod_quad_mox_fuel.name=СчетверёММый МОКС-тПплОвМый стержеМь -item.rod_schrabidium_fuel.name=КрабОЎОевый тПплОвМый стержеМь -item.rod_dual_schrabidium_fuel.name=СЎвПеММый шрабОЎОевый тПплОвМый стержеМь -item.rod_quad_schrabidium_fuel.name=СчетверёММый шрабОЎОевый тПплОвМый стержеМь -item.rbmk_fuel_empty.name=ПустПй тПплОвМый стержеМь РБМК -item.rbmk_fuel_hes.name=ВысПкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_lep.name=НОзкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК -item.rbmk_fuel_les.name=НОзкППбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_mep.name=СреЎМеПбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК -item.rbmk_fuel_mes.name=СреЎМеПбПгащеММый шрабОЎОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_meu.name=СреЎМеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК -item.rbmk_fuel_men.name=СреЎМеПбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_mox.name=МОКС-тПплОвМый стержеМь РБМК -item.rbmk_fuel_po210be.name=ППлПМОй-210-БерОллевый ОстПчМОк МейтрПМПв РБМК -item.rbmk_fuel_pu238be.name=ПлутПМОй-238-БерОллевый ОстПчМОк МейтрПМПв РБМК -item.rbmk_fuel_ra226be.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв РБМК -item.rbmk_fuel_thmeu.name=ТПрОевП-ураМПвый среЎМеПбПгащёММый тПплОвМый стержеМь РБМК -item.rbmk_fuel_balefire.name=Жар-тПплОвМый стержеМь РБМК -item.rbmk_fuel_balefire_gold.name=ЀлэшгПлЎ-тПплОвМый стержеМь РБМК -item.rbmk_fuel_flashlead.name=ЀлэшлОЎ-тПплОвМый стержеМь РБМК -item.rbmk_fuel_drx.name=§cДОгаЌЌа тПплОвМый стержеМь РБМК§r -item.rbmk_fuel_heaus.name=ВысПкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_leaus.name=НОзкППбПгащеММый австралОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_ueu.name=НеПбПгащеММый ураМПвый тПплОвМый стержеМь РБМК -item.rbmk_fuel_hep.name=ВысПкППбПгащеММый плутПМОевый-239 тПплОвМый стержеМь РБМК -item.rbmk_fuel_hep241.name=ВысПкППбПгащеММый плутПМОевый-241 тПплОвМый стержеМь РБМК -item.rbmk_fuel_hen.name=ВысПкППбПгащеММый МептуМОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_hea241.name=ВысПкППбПгащеММый аЌерОцОевый-241 тПплОвМый стержеМь РБМК -item.rbmk_fuel_hea242.name=ВысПкППбПгащеММый аЌерОцОевый-242 тПплОвМый стержеМь РБМК -item.rbmk_fuel_heu233.name=ВысПкППбПгащеММый ураМПвый-233 тПплОвМый стержеМь РБМК -item.rbmk_fuel_heu235.name=ВысПкППбПгащеММый ураМПвый-235 тПплОвМый стержеМь РБМК -item.rbmk_fuel_lea.name=НОзкППбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_mea.name=СреЎМеПбПгащеММый аЌерОцОевый тПплОвМый стержеМь РБМК -item.rbmk_fuel_zfb_am_mix.name=АЌерОцОй реактПрМПгП качества ЊТС стержеМь РБМК -item.rbmk_fuel_zfb_bismuth.name=ВОсЌутПвый ЊТС стержеМь РБМК -item.rbmk_fuel_zfb_pu241.name=ПлутПМОй-241 ЊТС стержеМь РБМК -item.rbmk_lid.name=ППкрывающая паМель РБМК -item.rbmk_lid_glass.name=СтекляММая пПкрывающая паМель РБМК -item.pile_rod_boron.name=КПМтрПльМый стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_plutonium.name=ПлутПМОевый стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_source.name=РаЎОй-226-БерОллевый ОстПчМОк МейтрПМПв "ЧОкагскПй пПлеММОцы" -item.pile_rod_uranium.name=УраМПвый стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_pu239.name=УраМПвый стержеМь-разЌМПжОтель "ЧОкагскПй пПлеММОцы" -item.pile_rod_pu239.desc=§a[АктОвМПе тПплОвП]$§eбПгатПе плутПМОеЌ-239. -item.pile_rod_boron.desc=§9[ППглПтОтель МейтрПМПв]$§eПКМ, чтПбы переключОть -item.pile_rod_detector.name=РегулОрующОй О ЎетектОрующОй стержеМь "ЧОкагскПй пПлеММОцы" -item.pile_rod_detector.desc=§9[ДетектПр/пПглПтОтель МейтрПМПв]$§eПКМ ЎефьюзерПЌ чтПбы увелОчОть/уЌеМьшОть лОЌОт МейтрПМПв$§eПКМ ПтвёрткПй без шОфта чтПбы прПверОть пПтПк -item.pile_rod_lithium.name=ЛОтОевая ячейка "ЧОкагскПй пПлеММОцы" -item.pile_rod_lithium.desc=§a[ТПплОвП-разЌМПжОтель]$§eПКМ ручМПй Ўрелью чтПбы прПверОть яЎрП ячейкО -item.pile_rod_plutonium.desc=§d[ИстПчМОк МейтрПМПв] -item.pile_rod_source.desc=§d[ИстПчМОк МейтрПМПв] -item.pile_rod_uranium.desc=§a[АктОвМПе тПплОвП]$§eПКМ ручМПй Ўрелью чтПбы взять Пбразец яЎра стержМя - -item.rod_water.name=СтержеМь с вПЎПй -item.rod_dual_water.name=СЎвПеММый стержеМь с вПЎПй -item.rod_quad_water.name=СчетверёММый стержеМь с вПЎПй -item.rod_coolant.name=ОхлажЎающОй стержеМь -item.rod_dual_coolant.name=СЎвПеММый ПхлажЎающОй стержеМь -item.rod_quad_coolant.name=СчетверёММый ПхлажЎающОй стержеМь - -item.levitation_unit.name=ГравОтацОПММый ЌаМОпулятПр -item.thermo_unit_empty.name=ТерЌОческОй распреЎелОтельМый узел -item.thermo_unit_endo.name=УстрПйствП Ўля распреЎелеМОя хПлПЎа -item.thermo_unit_exo.name=УстрПйствП Ўля распреЎелеМОя тепла - -item.bomb_waffle.name=Вафля ЌассПвПгП пПражеМОя -item.schnitzel_vegan.name=ВегетарОаМскОй шМОцель -item.apple_lead.name=СвОМцПвПе яблПкП -item.apple_schrabidium.name=КрабОЎОевПе ЯблПкП -item.cotton_candy.name=РаЎОПактОвМая сахарМая вата -item.tem_flakes.name=ХлПпья ТэЌ -item.glowing_stew.name=ТушеМые светящОеся грОбы -item.balefire_scrambled.name=Жар-яОчМОца -item.balefire_and_ham.name=ВетчОМа О жар-яйца -item.lemon.name="ЛОЌПМ" -item.definitelyfood.name=ИРП -item.pudding.name=ПуЎОМг -item.loops.name=ПəтлО -item.loop_stew.name=Завтрак IT-шМОка -item.fooditem.name=пОщевПй прПЎукт -item.twinkie.name=ТвОМкО -item.static_sandwich.name=СэМЎвОч с пПЌехаЌО -item.pancake.name=БлОМчОкО с ЌеталлПлПЌПЌ, гвПзЎяЌО О саЌПцветМПй пылью -item.peas.name=ГПрПшек -item.bio_wafer.name=Вафля Оз вПЎПрПслей - -tile.frozen_grass.name=ЗаЌПрПжеММая трава -tile.frozen_dirt.name=ЗаЌПрПжеММая зеЌля -tile.frozen_log.name=ЗаЌПрПжеММПе бревМП -tile.frozen_planks.name=ЗаЌПрПжеММые ЎПскО - -tile.tape_recorder.name=МагМОтПфПМ -tile.steel_poles.name=СтальМые ПпПры -tile.pole_top.name=АМтеММа -tile.deco_computer.ibm_300pl.name=ПерсПМальМый кПЌпьютер IBM 300PL -tile.deco_crt.name=Старый ЭЛТ-экраМ -tile.deco_toaster.name=СлПЌаММый тПстер -tile.filing_cabinet.green.name=ПыльМый картПчеМый шкафчОк -tile.filing_cabinet.steel.name=СтальМПй картПчеМый шкафчОк -container.fileCabinet=КартПчеМый шкафчОк -tile.pole_satellite_receiver.name=СпутМОкПвая тарелка -tile.steel_wall.name=СтальМая стеМка -tile.steel_corner.name=СтальМПй угПл стеМы -tile.steel_roof.name=ПлПская стальМая крыша -tile.steel_beam.name=СтальМая балка -tile.steel_scaffold.name=СтальМые пПЎЌПстО -tile.steel_grate.name=СтальМая решётка -tile.steel_grate_wide.name=ПреЎЌетМая решётка -tile.steel_grate_wide.desc=ППзвПляет Ппыту О преЎЌетаЌ паЎать через Меё - -item.gun_revolver_iron.name=ПрПстПй ревПльвер -item.gun_revolver.name=УсПвершеМствПваММый ревПльвер -item.gun_revolver_saturnite.name=СатурМОтПвый ревПльвер -item.gun_revolver_gold.name=ЗПлПтПй ревПльвер -item.gun_revolver_lead.name=ЯЎерМый ревПльвер -item.gun_revolver_schrabidium.name=КрабОЎОевый ревПльвер -item.gun_revolver_cursed.name=ПрПклятый ревПльвер -item.gun_revolver_nightmare.name=КПшЌарМый ревПльвер (ОрОгОМал) -item.gun_revolver_nightmare2.name=КПшЌарМый ревПльвер (ТёЌМый) -item.gun_revolver_pip.name=ЛОл' ПОпсквОк -item.gun_revolver_nopip.name=Тяжёлый ревПльвер -item.gun_revolver_blackjack.name=ПятОзаряЎМый ревПльвер БлэкЎжек -item.gun_revolver_silver.name=ОЎПлжеММый пОстПлет -item.gun_revolver_red.name=РевПльвер с красМыЌ ключПЌ -item.gun_deagle.name=БОг АйрПМ -item.gun_calamity.name=КалаЌОтО -item.gun_calamity_dual.name=БПевПе сеЎлП -item.gun_minigun.name=ПерсПМальМый ЌОМОгаМ CZ53 -item.gun_avenger.name=CZ57 “АвеМЎжер” -item.gun_lacunae.name=CZ33 “АбаЎЎПМ” -item.gun_fatman.name=М42 АтПЌМая катапульта "ТПлстяк" -item.gun_proto.name=М42 ЯЎерМая катапульта "ПрПтП МИРВ" -item.gun_mirv.name=M42 ЯЎерМая катапульта "ЭксперОЌеМтальМый МИРВ" -item.gun_bf.name=BEL -item.gun_mp40.name=ПОстПлет-пулеЌёт -item.gun_flechette.name=ИгПльчатая вОМтПвка -item.gun_uzi.name=IMI УзО -item.gun_uzi_silencer.name=IMI УзО с глушОтелеЌ -item.gun_uzi_saturnite.name=СатурМОтПвый УзО -item.gun_uzi_saturnite_silencer.name=СатурМОтПвый УзО с глушОтелеЌ -item.gun_uboinik.name=УбПйМОк -item.gun_ks23.name=СэЌюэль БПльшПй ДрПбПвОк -item.gun_lever_action.name=«НПга кПбылы» (ОрОгОМал) -item.gun_bolt_action.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ(ОрОгОМал) -item.gun_lever_action_dark.name=«НПга кПбылы» (ТёЌМый) -item.gun_bolt_action_green.name=ВОМтПвка сП скПльзящОЌ затвПрПЌ (ЗелёМый) -item.gun_bolt_action_saturnite.name=СатурМОтПвая вОМтПвка -item.gun_lever_action_sonata.name=ПеревёрМутая «НПга кПбылы» -item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] -item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r -item.gun_b92.name=§9ЭМергетОческОй бластер B92§r -item.gun_b93.name=§cМПЎОфОцОрПваММый бластер B93§r -item.gun_xvl1456.name=ПрПтПтОп Тау-пушкО XVL1456 -item.gun_osipr.name=ИЌпульсМая вОМтПвка Патруля -item.gun_immolator.name=ИЌЌПлятПр -item.gun_flamer.name=МОстер ТПпаз -item.gun_chemthrower.name=ХОЌПЌёт -item.gun_cryolator.name=КрОПлятПр -item.gun_mp.name=ПулеЌет ПацОфОстПв -item.gun_zomg.name=ZOMG-пушка -item.gun_emp.name=ЭМИ-пушка -item.gun_super_shotgun.name=СуперЎрПбПвОк -item.gun_super_shotgun.desc=ОМ супер слПЌаМ! -item.gun_supershotgun.name=СуперЎрПбПвОк -item.gun_moist_nugget.name=МПсОМ-НагаМ -item.gun_revolver_inverted.name=ПереверМутый ревПльвер -item.gun_jack.name=ДжекхаЌЌер -item.gun_spark.name=Спарк-Плаг -item.gun_hp.name=HPP ЛазерЎжет -item.gun_euthanasia.name=ЭвтаМазОя -item.gun_defabricator.name=ДефабрОкатПр -item.gun_dampfmaschine.name=СПвершеММП Ме шутПчМПе ПружОе -item.gun_folly.name=ПрПтПтОп ДОгаЌЌа "ПрОчуЎа" -item.gun_darter.name=ДрПтОкПвый пОстПлет -item.gun_mymy.name=Ньетес -item.gun_ar15.name="ДжПш" -item.gun_glass_cannon.name=СтекляММая пушка -item.boltgun.name=ПМевЌатОческОй заклепПчМОк -item.gun_congolake.name=Congo Lake -item.gun_cryocannon.name=КрОПпушка - -item.gun_revolver_iron_ammo.name=Пуля -item.gun_revolver_ammo.name=СвОМцПвая пуля -item.gun_revolver_gold_ammo.name=ЗПлПтая пуля -item.gun_revolver_lead_ammo.name=ППкрытая стеклПЌ атПЌМая пуля -item.gun_revolver_schrabidium_ammo.name=КрабОЎОевая пуля -item.gun_revolver_cursed_ammo.name=СтальМая пуля -item.gun_revolver_nightmare_ammo.name=КПшЌарМая пуля -item.gun_revolver_nightmare2_ammo.name=ЛазерМая ЎрПбь -item.gun_revolver_pip_ammo.name=ЗаражеММый патрПМ (LEGACY) -item.gun_revolver_nopip_ammo.name=ПатрПМ калОбра .44 (LEGACY) -item.gun_calamity_ammo.name=Кал. 50 (LEGACY) -item.gun_lacunae_ammo.name=5-ЌЌ патрПМ (LEGACY) -item.gun_fatman_ammo.name=ЯЎерМый ЌОМОзаряЎ (LEGACY) -item.gun_mirv_ammo.name=ВПсьЌОрОчМый МИРВ (LEGACY) -item.gun_bf_ammo.name=Жар-сМаряЎ -item.ammo_mirv.name=МИРВ-ЌОМОзаряЎ -item.ammo_mirv_special.name=МИЛВ-ЌОМОзаряЎ -item.ammo_mirv_high.name=МИРВ-ЌОМОзаряЎ (ВысПкПЌПщМый) -item.ammo_mirv_low.name=МИРВ-ЌОМОзаряЎ (МалПЌПщМый) -item.ammo_mirv_safe.name=МИРВ-ЌОМОзаряЎ (БезПпасМый) -item.ammo_nuke_barrel.name=МОМО-бПчка с яЎерМыЌО ПтхПЎаЌО -item.ammo_nuke.name=ЯЎерМый ЌОМОзаряЎ -item.ammo_nuke_high.name=ЯЎерМый ЌОМОзаряЎ (ВысПкПЌПщМый) -item.ammo_nuke_low.name=ЯЎерМый ЌОМОзаряЎ (МалПЌПщМый) -item.ammo_nuke_pumpkin.name=ТыквеММая бПЌба -item.ammo_nuke_safe.name=ЯЎерМый ЌОМОзаряЎ (БезПпасМый) -item.ammo_nuke_tots.name=ЯЎерМый ЌОМОзаряЎ ("Карапуз") -item.gun_mp40_ammo.name=ПатрПМ Для ПОстПлета-ПулеЌета (LEGACY) -item.gun_uzi_ammo.name=ПатрПМы кал. 22LR (LEGACY) -item.gun_uboinik_ammo.name=ДрПбь 12x70 калОбра (LEGACY) -item.gun_lever_action_ammo.name=ДрПбь 12x74 калОбра (LEGACY) -item.gun_bolt_action_ammo.name=Пуля 12x74 калОбра(LEGACY) -item.gun_b92_ammo.name=§9ЭМергетОческОй ЭлеЌеМт B92§r -item.gun_xvl1456_ammo.name=ЯщОк с ОбеЎМеММыЌ УраМПЌ-235 -item.gun_osipr_ammo.name=ИЌпульсМые патрПМы -item.gun_osipr_ammo2.name=ЭМергетОческОй шар КПЌбайМПв -item.gun_immolator_ammo.name=ТПплОвП ИЌЌПлатПра -item.gun_cryolator_ammo.name=КрОПэлеЌеМт -item.gun_pm_ammo.name=Малый беспрПпеллеМтПвый пулеЌётМый патрПМ -item.gun_emp_ammo.name=ЭМергетОческая ячейка -item.gun_jack_ammo.name=СМаряЎ Ўля четырехствПльМПгП ЎрПбПвОка -item.gun_spark_ammo.name=ЭлектрПЌагМОтМый картрОЎж -item.gun_hp_ammo.name=ЧерМОльМый картрОЎж -item.gun_euthanasia_ammo.name=КпрОцы -item.gun_defabricator_ammo.name=ЭМергетОческОе ячейкО ДефабрОкатПра -item.ammo_cell.name=ЭМергП-патрПМы -item.ammo_grenade_leadburster.name=40ЌЌ ЛОЎбастер - -item.ammo_12gauge.name=Картечь 12 калОбра -item.ammo_12gauge_incendiary.name=Картечь 12 калОбра (ЗажОгательМая) -item.ammo_12gauge_shrapnel.name=Картечь 12 калОбра (КрапМельМая) -item.ammo_12gauge_marauder.name=ТактОческОй прПтОвПЌарПЎёрМый сМаряЎ 12 калОбра -item.ammo_12gauge_percussion.name=Капсюль 12 калОбра -item.ammo_12gauge_du.name=Картечь 12 калОбра (С ураМПвыЌ пПкрытОеЌ) -item.ammo_12gauge_sleek.name=Картечь 12 калОбра (IF-R&D) -item.ammo_20gauge.name=Картечь 20 калОбра -item.ammo_20gauge_slug.name=Пуля БреММеке 20 калОбра -item.ammo_20gauge_flechette.name=ИгПльчатые сМаряЎы 20 калОбра -item.ammo_20gauge_incendiary.name=Картечь 20 калОбра (ЗажОгательМая) -item.ammo_20gauge_shrapnel.name=Картечь 20 калОбра (КрапМельМая) -item.ammo_20gauge_sleek.name=Картечь 20 калОбра (IF-R&D) -item.ammo_20gauge_shock.name=Картечь 20 калОбра (КПкПвая) -item.ammo_20gauge_caustic.name=Картечь 20 калОбра (ТПксОчМая) -item.ammo_20gauge_explosive.name=Картечь 20 калОбра (ВзрывМая) -item.ammo_20gauge_wither.name=Картечь 20 калОбра (Иссушающая) -item.ammo_4gauge.name=Картечь 4 калОбра -item.ammo_4gauge_sleek.name=Картечь 4 калОбра (IF-R&D) -item.ammo_4gauge_flechette.name=ИгПльчатая картечь 4 калОбра -item.ammo_4gauge_flechette_phosphorus.name=ИгПльчатая картечь 4 калОбра (БЀ) -item.ammo_4gauge_slug.name=ТвёрЎая СтальМая пуля 4 калОбра -item.ammo_4gauge_claw.name=Картечь 4 калОбра (КлешМО) -item.ammo_4gauge_vampire.name=Картечь 4 калОбра (ОсОМПвый кПл) -item.ammo_4gauge_void.name=Картечь 4 калОбра (ПустПтМая ПбПлПчка) -item.ammo_4gauge_titan.name=Картечь 4 калОбра (кряк) -item.ammo_4gauge_explosive.name=23ЌЌ граМата -item.ammo_5mm.name=5-ЌЌ патрПМ -item.ammo_5mm_chlorophyte.name=5-ЌЌ патрПМ (ХлПрПфОт) -item.ammo_5mm_explosive.name=5-ЌЌ патрПМ (ВзрывМПй) -item.ammo_5mm_du.name=5-ЌЌ патрПМ (ДУ) -item.ammo_5mm_star.name=5-ЌЌ патрПМ (ЗвёзЎМый Ќеталл) -item.ammo_50ae.name=ПатрПМ калОбра .50 AE -item.ammo_50ae_chlorophyte.name=ПатрПМ калОбра .50 AE (ХлПрПфОт) -item.ammo_50ae_ap.name=ПатрПМ калОбра .50 AE (БрПМебПйМый) -item.ammo_50ae_du.name=ПатрПМ калОбра .50 AE (ДУ) -item.ammo_50ae_star.name=ПатрПМ калОбра .50 AE (ЗвёзЎМый Ќеталл) -item.ammo_50bmg.name=КрупМПкалОберМый патрПМ .50 BMG -item.ammo_50bmg_incendiary.name=КрупМПкалОберМый патрПМ .50 BMG (ЗажОгательМый) -item.ammo_50bmg_phosphorus.name=КрупМПкалОберМый патрПМ .50 BMG (БЀ) -item.ammo_50bmg_explosive.name=КрупМПкалОберМый патрПМ .50 BMG (ВзрывМПй) -item.ammo_50bmg_ap.name=КрупМПкалОберМый патрПМ .50 BMG (БрПМебПйМый) -item.ammo_50bmg_chlorophyte.name=КрупМПкалОберМый патрПМ .50 BMG (ХлПрПфОт) -item.ammo_50bmg_du.name=КрупМПкалОберМый патрПМ .50 BMG (ДУ) -item.ammo_50bmg_sleek.name=КрупМПкалОберМый патрПМ .50 BMG (IF-R&D) -item.ammo_50bmg_star.name=КрупМПкалОберМый патрПМ .50 BMG (ЗвёзЎМый Ќеталл) -item.ammo_50bmg_flechette.name=ИгПльчатый .50 BMG патрПМ -item.ammo_50bmg_flechette_am.name=ИгПльчатый .50 BMG патрПМ (АЌерОцОй) -item.ammo_50bmg_flechette_po.name=ИгПльчатый .50 BMG патрПМ (ППлПМОй) -item.ammo_762.name=7.62ЌЌ патрПМ -item.ammo_762_ap.name=7.62ЌЌ патрПМ (БрПМебПйМый) -item.ammo_762_du.name=7.62ЌЌ патрПМ (С ураМПвыЌ МакПМечМОкПЌ) -item.ammo_762_k.name=7.62 ЌЌ K-ПбразМый патрПМ -item.ammo_762_phosphorus.name=7.62ЌЌ патрПМ (БЀ) -item.ammo_762_tracer.name=7.62ЌЌ патрПМ (ТрассОрующОй) -item.ammo_9mm.name=9-ЌЌ патрПМ -item.ammo_9mm_chlorophyte.name=9-ЌЌ патрПМ (ХлПрПфОт) -item.ammo_9mm_ap.name=9-ЌЌ патрПМ (БрПМебПйМый) -item.ammo_9mm_du.name=9-ЌЌ патрПМ (ДУ) -item.ammo_9mm_rocket.name=9-ЌЌ ракета -item.ammo_556.name=5.56ЌЌ патрПМ -item.ammo_556_phosphorus.name=5.56ЌЌ патрПМ (БЀ) -item.ammo_556_sleek.name=5.56ЌЌ патрПМ (IF-R&D) -item.ammo_556_ap.name=5.56ЌЌ патрПМ (БрПМебПйМый) -item.ammo_556_chlorophyte.name=5.56ЌЌ патрПМ (ХлПрПфОт) -item.ammo_556_du.name=5.56ЌЌ патрПМ (ДУ) -item.ammo_556_star.name=5.56ЌЌ патрПМ (ЗвёзЎМый Ќеталл) -item.ammo_556_flechette.name=ИгПльчатый 5.56-патрПМ -item.ammo_556_flechette_incendiary.name=ИгПльчатый 5.56-патрПМ (ЗажОгательМый) -item.ammo_556_flechette_chlorophyte.name=ИгПльчатый 5.56-патрПМ (ХлПрПфОт) -item.ammo_556_flechette_phosphorus.name=ИгПльчатый 5.56-патрПМ (ЀПсфПрМый МакПМечМОк) -item.ammo_556_flechette_du.name=ИгПльчатый 5.56-патрПМ (УраМПвый брПМебПйМый) -item.ammo_556_tracer.name=5.56ЌЌ патрПМ (ТрассОрующОй сМаряЎ) -item.ammo_556_flechette_sleek.name=ИгПльчатый 5.56-патрПМ (IF-R&D) -item.ammo_556_k.name=5.56ЌЌ К-ПатрПМ -item.ammo_22lr.name=МалПкалОберМый патрПМ .22 LR -item.ammo_22lr_ap.name=МалПкалОберМый патрПМ .22 LR (БрПМебПйМый) -item.ammo_22lr_chlorophyte.name=МалПкалОберМый патрПМ .22 LR (ХлПрПфОт) -item.ammo_folly.name=СеребряМая пуля -item.ammo_folly_nuclear.name=СеребряМая пуля (АтПЌМая) -item.ammo_folly_du.name=СеребряМая пуля (ДУ, Не взрывающаяся) -item.ammo_357_desh.name=Деш-Пуля калОбра .357 МагМуЌ -item.ammo_44.name=Пуля калОбра .44 МагМуЌ -item.ammo_44_chlorophyte.name=Пуля калОбра .44 МагМуЌ (ХлПрПфОт) -item.ammo_44_ap.name=Пуля калОбра .44 МагМуЌ (БрПМебПйМый) -item.ammo_44_du.name=Пуля калОбра .44 МагМуЌ (ДУ) -item.ammo_44_phosphorus.name=Пуля калОбра .44 МагМуЌ (БЀ) -item.ammo_44_star.name=Пуля калОбра .44 МагМуЌ (ЗвёзЎМый Ќеталл) -item.ammo_44_pip.name=Пуля калОбра .44 МагМуЌ (ГрузПвПй вагПМ) -item.ammo_44_bj.name=Пуля калОбра .44 МагМуЌ (ЛПЎка) -item.ammo_44_silver.name=Пуля калОбра .44 МагМуЌ (ЗЎаМОе) -item.ammo_44_rocket.name=Ракета-Пуля .44 МагМуЌ -item.ammo_45.name=Пуля 45-гП калОбра ACP -item.ammo_45_ap.name=Пуля 45-гП калОбра ACP (БрПМебПйМая) -item.ammo_45_du.name=Пуля 45-гП калОбра ACP (С ураМПвыЌ МакПМечМОкПЌ) -item.ammo_rocket.name=84-ЌЌ ракета -item.ammo_rocket_canister.name=84-ЌЌ ракета (Картечь) -item.ammo_rocket_he.name=84-ЌЌ ракета (ЀугасМая) -item.ammo_rocket_incendiary.name=84-ЌЌ ракета (ЗажОгательМая) -item.ammo_rocket_phosphorus.name=84-ЌЌ ракета (БЀ) -item.ammo_rocket_shrapnel.name=84-ЌЌ ракета (ОскПлПчМая) -item.ammo_rocket_emp.name=84-ЌЌ ракета (ИЌпульсМая) -item.ammo_rocket_glare.name=84-ЌЌ ракета (КрасМПе ЗаревП) -item.ammo_rocket_toxic.name=84-ЌЌ ракета (ХОЌОческая) -item.ammo_rocket_sleek.name=84-ЌЌ ракета (IF-R&D) -item.ammo_rocket_nuclear.name=84-ЌЌ ракета (ПрОвет) -item.ammo_rocket_rpc.name=84-ЌЌ Ракета-БеМзПпОла -item.ammo_rocket_digamma.name=null -item.ammo_4gauge_balefire.name=23ЌЌ Жар-граМата -item.ammo_4gauge_kampf.name=23ЌЌ Ракета -item.ammo_4gauge_canister.name=23ЌЌ Ракета (Картечь) -item.ammo_4gauge_semtex.name=23ЌЌ КахтёрскОй заряЎ -item.ammo_grenade.name=40ЌЌ граМата -item.ammo_grenade_he.name=40ЌЌ граМата (ЀугасМая) -item.ammo_grenade_incendiary.name=40ЌЌ граМата (ЗажОгательМая) -item.ammo_grenade_phosphorus.name=40ЌЌ граМата (БЀ) -item.ammo_grenade_toxic.name=40ЌЌ граМата (ХОЌОческая) -item.ammo_grenade_concussion.name=40ЌЌ граМата (Concussion) -item.ammo_grenade_finned.name=40ЌЌ граМата (Finned) -item.ammo_grenade_nuclear.name=40ЌЌ граМата (ПрОвет) -item.ammo_grenade_sleek.name=40ЌЌ граМата (IF-R&D) -item.ammo_grenade_tracer.name=40ЌЌ УчебМая граМата -item.ammo_grenade_kampf.name=40ЌЌ-Ракета -item.ammo_fuel.name=Бак с ЎОзелеЌ -item.ammo_fuel_napalm.name=Бак с МапалЌПЌ -item.ammo_fuel_phosphorus.name=Бак с белыЌ фПсфПрПЌ -item.ammo_fuel_vaporizer.name=Бак ОспарОтеля -item.ammo_fuel_gas.name=Бак с газПЌ -item.ammo_dart.name=ПластОкПвый ЎрПтОк (ИссущающОй) -item.ammo_dart_nuclear.name=ПластОкПвый ЎрПтОк (С взрывчаткПй) -item.ammo_dart_nerf.name=ДрПтОк NERF -item.ammo_dgk.name=ЛеМта Ма 200 патрПМПв Ўля CIWS "ГПварЎ" -item.folly_shell.name=ОбПлПчка серебряМПй пулО -item.folly_bullet.name=12.8сЌ ВысПкПэМергетОческая ПбПлПчка Оз звёзЎМПгП Ќеталла -item.folly_bullet_nuclear.name=12.8сЌ ЯЎерМая ПбПлПчка -item.folly_bullet_du.name=12.8сЌ ДУ-ПбПлПчка -item.pellet_canister.name=Картечь -item.pellet_charged.name=ИПМОзОрПваММые частОцы -item.pellet_chlorophyte.name=ХлПрПфОтМые граМулы -item.pellet_mercury.name=РтутМые граМулы -item.pellet_meteorite.name=МетеПрОтМые граМулы -item.pellet_claws.name=Острые ЌеталлОческОе кПгтО -item.gun_bolter.name=БПлтер -item.gun_bolter_digamma.name=ДОгаЌЌа пушка -item.gun_bio_revolver.name=Атлас -item.ammo_75bolt.name=МагазОМ бПлтПв .75 (30rnd) -item.ammo_75bolt_incendiary.name=МагазОМ зажОгательМых бПлтПв .75 (30rnd) -item.ammo_75bolt_he.name=МагазОМ фугасМых бПлтПв .75 (30rnd) -item.ammo_arty.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_classic.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ (ПряЌП Оз ЀактПрОП) -item.ammo_arty_he.name=ЀугасМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_mini_nuke.name=МОМО-яЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_nuke.name=ЯЎерМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_phosphorus.name=ЀПсфПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_phosphorus_multi.name=ЀПсфПрМый 16-ЎюйЌПвый ЌультО-сМаряЎ -item.ammo_arty_mini_nuke_multi.name=МОМО-яЎерМый 16-ЎюйЌПвый ЌультО-сМаряЎ -item.ammo_arty_phosgene.name=ЀПсгеМПвый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_arty_mustard_gas.name=16-ЎюйЌПвый артОллерОйскОй сМаряЎ с ОпрОтПЌ -item.ammo_arty_chlorine.name=ХлПрМый 16-ЎюйЌПвый артОллерОйскОй сМаряЎ -item.ammo_luna.name=ЛуММый сМайперскОй сабПтажМый сМаряЎ -item.ammo_luna_explosive.name=ЛуММый сМайперскОй взрывМПй сМаряЎ -item.ammo_luna_incendiary.name=ЛуММый сМайперскОй зажОгательМый сМаряЎ -item.gun_benelli.name=АвтПЌатОческОй ЎрПбПвОк Benelli (БарабаМ) -item.gun_coilgun.name=Гаусс-пушка -item.ammo_coilgun.name=ВПльфраЌПвый шар Ўля гаусс-пушкО -item.ammo_coilgun_du.name=ЀеррПураМОевый шар Ўля гаусс-пушкО -item.ammo_coilgun_rubber.name=РезОМПвый шар Ўля гаусс-пушкО - -item.gun_fireext.name=ОгМетушОтель -item.ammo_fireext.name=Бак с вПЎПй Ўля ПгМетушОтеля -item.ammo_fireext_foam.name=Бак с пеМПй Ўля ПгМетушОтеля -item.ammo_fireext_sand.name=Бак с пескПЌ Ўля ПгМетушОтеля - -item.cordite.name=КПрЎОт -item.ballistite.name=БаллОстОт -item.ball_dynamite.name=ДОМаЌОт -item.ball_tnt.name=ТНТ -item.ball_tatb.name=TATB -item.ball_fireclay.name=КаЌПтМая глОМа -item.ball_resin.name=Латекс -item.plate_kevlar.name=КевларП-кераЌОческОй сПстав - -item.weaponized_starblaster_cell.name=§cСЌПМтОрПваММая эМергетОческая ячейка ЗвезЎМПгП бластера§r - -item.turret_light_ammo.name=КПрПбка бПепрОпасПв лёгкПй турелО -item.turret_heavy_ammo.name=КПрПбка бПепрОпасПв тяжёлПй турелО -item.turret_rocket_ammo.name=БПекПЌплект ракетМПй турелО 2х4 -item.turret_flamer_ammo.name=ТПплОвМые бакО ПгМеЌетМПй турелО -item.turret_tau_ammo.name=УраМПвые бПепрОпасы Тау-турелО -item.turret_spitfire_ammo.name=AA-СМаряЎ -item.turret_cwis_ammo.name=БарабаМ 20-ЌЌ патрПМПв -item.turret_cheapo_ammo.name=Дешевые турельМые бПепрОпасы 6x24 -item.ammo_shell.name=240ЌЌ СМаряЎ -item.ammo_shell_apfsds_du.name=240ЌЌ APFSTS-DU -item.ammo_shell_apfsds_t.name=240ЌЌ APFSTS-T -item.ammo_shell_explosive.name=240ЌЌ ЀугасМый сМаряЎ -item.ammo_shell_w9.name=240ЌЌ ЯЎерМый сМаряЎ W9 - -item.clip_revolver_iron.name=КПрПбка с железМыЌО патрПМаЌО -item.clip_revolver.name=КПрПбПчка патрПМПв калОбра .357 -item.clip_revolver_gold.name=МалеМькОй суМЎучПк с зПлПтыЌО пуляЌО -item.clip_revolver_schrabidium.name=КПМтейМер Ўля шрабОЎОевых бПепрОпасПв -item.clip_rpg.name=КПМтейМер с ракетаЌО -item.clip_xvl1456.name=БПльшая КПрПбка с ОзПтПпаЌО -item.clip_osipr.name=ОбПйЌа AR2 -item.clip_immolator.name=Бак с тПплОвПЌ ИЌЌПлятПра -item.clip_cryolator.name=Бак КрОПлятПрМПгП тПплОва -item.clip_revolver_lead.name=КПрПбка яЎерМых пуль -item.clip_revolver_cursed.name=БрОтаМскОй вПеММый стаМЎарт пОстПлетМПй ПбПйЌы -item.clip_fatman.name=Кесть упакПвПк яЎерМых ЌОМО-сМаряЎПв -item.clip_mirv.name=ТрО-в-ПЎМПЌ пакет ЌОМО-МИРВПв -item.clip_bf.name=ДвПйМПй НабПр Жар-сМаряЎПв -item.clip_mp.name=БрОтаМскОй вПеММый стаМЎарт ЌагазОМа штурЌПвПй вОМтПвкО -item.clip_mp40.name=ОбПйЌа пПлуавтПЌата 9ЌЌ -item.clip_uzi.name=ОбПйЌа .22 LR ПатрПМПв -item.clip_uboinik.name=КПрПбка патрПМПв картечО 12x70 -item.clip_lever_action.name=КПрПбка патрПМПв картечО 12х74 -item.clip_bolt_action.name=КПрПбка Оз 12х74 пуль -item.clip_emp.name=НебПльшПй упакПвка эМергетОческОх ячеек -item.clip_revolver_nightmare.name=МешПчек с пуляЌО -item.clip_revolver_nightmare2.name=ППяс с лазерМПй картечью -item.clip_revolver_pip.name=СкПрПстМПй загрузчОк с заражёММыЌО пуляЌО -item.clip_revolver_nopip.name=КПрПбПчка с патрПМаЌО .44 калОбра -item.clip_stinger.name=УпакПвка ракет "СтОМгер" -item.clip_jack.name=КПрПбка четверМых патрПМПв картечО 12х70 -item.clip_spark.name=БПльшПй ЭлектрПЌагМОтМый КартрОЎж -item.clip_hp.name=ЧерМОльМые БакО -item.clip_euthanasia.name=ППслеЎМяя аптечка -item.clip_defabricator.name=ППяс с эМергП-ячейкаЌО ДефабрОкатПра - -item.ammo_container.name=КПМтейМер с бПепрОпасаЌО - -tile.block_schrabidium.name=БлПк шрабОЎОя -tile.block_schraranium.name=БлПк шрараМОя -tile.block_schrabidate.name=БлПк шрабОЎата железа -tile.block_euphemium.name=БлПк эвфеЌОя -tile.block_schrabidium_cluster.name=КрабОЎОевый кластер -tile.block_euphemium_cluster.name=ЭвфеЌОевП-вытравлеММый кластер шрабОЎОя -tile.vacuum.name=ВакууЌ -item.plate_gold.name=ЗПлПтая пластОМа - -item.syringe_empty.name=ПустПй шпрОц -item.syringe_antidote.name=АМтОЎПт -item.syringe_poison.name=ЯЎПвОтая ОМъекцОя -item.syringe_awesome.name=ПОТРЯСАЮЩЕ -item.syringe_metal_empty.name=МеталлОческОй шпрОц -item.iv_blood.name=Пакет с крПвью -item.iv_empty.name=Пакет Ўля вМутрОвеММПгП ввеЎеМОя -item.iv_xp.name=Пакет с ПпытПЌ -item.iv_xp_empty.name=Пакет Ўля ЌагОческПгП вМутрОвеММПгП ввеЎеМОя -item.syringe_metal_stimpak.name=СтОЌулятПр -item.crackpipe.name=ОзЎПрПвОтельМая трубка -item.syringe_metal_medx.name=МеЎ-X -item.syringe_metal_psycho.name=ПсОхП -item.syringe_metal_super.name=Супер-стОЌулятПр -item.syringe_taint.name=ВПЎяМОстая ОМъекцОя пПрчО -item.syringe_mkunicorn.name=MKUNICORN -item.med_bag.name=Аптечка первПй пПЌПщО -item.radaway.name=АМтОраЎОМ -item.radaway_strong.name=УсОлеММый аМтОраЎОМ -item.radaway_flush.name=Супер-аМтОраЎОМ -item.radx.name=РаЎ-X -item.mentats.name=МеМтаты -item.pt_mentats.name=ПразЎМОчМые МеМтаты -item.pill_iodine.name=Таблетка ОПЎа -item.pill_red.name=КрасМая таблетка -item.pill_herbal.name=ТравяМая паста -item.fmn.name=Таблетка флуМОтразепаЌа -item.xanax.name=Препарат "НАКСА" прПтОв ЎОгаЌЌы -item.five_htp.name=ТаблеткО эМтераЌОМа -item.siox.name=ЛекарствП Пт рака "SiOx" -item.fuel_additive.antiknock.name=АМтОЎетПМацОПММПе среЎствП Оз ТетраэтОлсвОМца -item.fuel_additive.deicer.name=АМтОПблеЎеМОтель -item.pirfenidone.name=ПОрфеМОЎПМ -item.plan_c.name=ПлаМ С -item.med_ipecac.name=СОрПп Оз рвПтМПгП кПрМя -item.chocolate.name=ЀОрЌеММый раЎОевый шПкПлаЎ -item.med_ptsd.name=ЛечеМОе ПТСР -item.med_schiziphrenia.name=ЛекарствП Пт шОзПфреМОО -item.gas_mask_filter.name=ЀОльтр прПтОвПгаза -item.gas_mask_filter_mono.name=КаталОтОческОй фОльтр ЌаскО -item.cladding_paint.name=СвОМцПвая краска -item.cladding_rubber.name=РезОМПвая ПбшОвка -item.cladding_iron.name=ЖелезМая ПбшОвка -item.cladding_lead.name=СвОМцПвая ПбшОвка -item.cladding_desh.name=ОбшОвка Оз Ўеш -item.coin_maskman.name=МПМета МаскЌеМа -item.coin_creeper.name=МПМета ЯЎерМПгП крОпера -item.coin_radiation.name=МПМета РаЎОацОО -item.coin_worm.name=МПМета Баллс-О-ТрПМ -item.coin_ufo.name=МПМета НЛО -item.coin_siege.name=МПМета ПсаЎы -item.ink.name=林 черМОла -item.medal_liquidator.name=МеЎаль ЛОквОЎатПра -item.stealth_boy.name=Стелс-БПй -item.meltdown_tool.name=АпплОкатПр ЌгМПвеММПгП расплавлеМОя ДятлПва -item.hand_drill.name=РучМая Ўрель -item.hand_drill_desh.name=РучМая Ўрель Оз Ўеша -item.rag.name=Тряпка -item.rag_damp.name=ВлажМая тряпка -item.rag_piss.name=ПрПпОтаММая ЌПчПй тряпка -item.safety_fuse.name=ЀОтОль -item.night_vision.name=ОчкО МПчМПгП зреМОя -item.night_vision.description.item=Даёт МПчМПе зреМОе (МужЎается в пПлМПЌ электрОческПЌ сете) -item.night_vision.description.in_armor=%s (Ўаёт МПчМПе зреМОе) - -entity.hbm.entity_bullet.name=Пуля -entity.hbm.entity_rocket.name=Ракета -entity.hbm.entity_schrabnel.name=КрапМель -entity.entity_fucc_a_ducc.name=Утка -entity.entity_mob_nuclear_creeper.name=ЯЎерМый крОпер -entity.entity_mob_tainted_creeper.name=ЗаражёММый пПрчей крОпер -entity.entity_mob_phosgene_creeper.name=ЀПсгеМПвый крОпер -entity.entity_mob_mask_man.name=МаскЌеМ -entity.entity_mob_hunter_chopper.name=ВертПлёт-ПхПтМОк -entity.entity_cyber_crab.name=КОберкраб -entity.entity_tesla_crab.name=Теслакраб -entity.entity_taint_crab.name=ЗаражёММый пПрчей теслакраб -entity.entity_elder_one.name=КрякПс СтаршОй -entity.entity_ntm_fbi.name=АгеМт ЀБР -entity.entity_ntm_fbi_drone.name=ДрПМ ЀБР -entity.entity_ntm_radiation_blaze.name=ЭлеЌеМталь РасплавлеМОя -entity.entity_glyphid.name=ГлОфОЎ -entity.entity_glyphid_behemoth.name=ГлОфОЎ-страж -entity.entity_glyphid_brawler.name=ГлОфОЎ-сПлЎат -entity.entity_glyphid_brenda.name=БреМЎа -entity.entity_glyphid_nuclear.name=ЧЌяк -entity.entity_glyphid_scout.name=ГлОфОЎ-скаут -entity.entity_glyphid_blaster.name=ГлОфОЎ-стрелПк -entity.entity_glyphid_bombardier.name=ГлОфОЎ-бПЌбарЎОр -entity.entity_glyphid_digger.name=ГлОфОЎ-кПпатель -entity.entity_parasite_maggot.name=ПаразОтОческая лОчОМка -entity.hbm.entity_balls_o_tron.name=Баллс-О-ТрПМ ПрайЌ -entity.hbm.entity_balls_o_tron_seg.name=Баллс-О-ТрПМ СегЌеМт -entity.hbm.entity_ntm_ufo.name=МарсОаМскОй кПрабль втПржеМОя -entity.entity_ntm_dtrooper.name=ТёЌМый сПлЎат -entity.entity_mob_gold_creeper.name=ЗПлПтПй крОпер -entity.entity_mob_volatile_creeper.name=ВПзгПраеЌый крОпер -entity.entity_plastic_bag.name=ПластОкПвый пакетОк -entity.entity_pigeon.name=ГПлубь - -eye.respond.no=§c"Нет" -eye.respond.nothing=...ОМП Ме Птвечает -eye.respond.yes=§c§l"Да" -eye.respond=ОМП гПвПрОт: §o%s -eye.speakTo.join="Я бы хПтел стать еЎОМыЌ" -eye.speakTo.remember="Ты пПЌМОшь ктП ты?" -eye.speakTo=Вы гПвПрОте Оку: §o%s - -item.plastic_bag.name=ПластОкПвый пакетОк -item.cap_aluminium.name=АлюЌОМОевый кПлпачПк -item.shellntm.name=ОбПлПчка Оз %s -item.hull_small_steel.name=НебПльшая стальМая ПбПлПчка -item.hull_small_aluminium.name=НебПльшая алюЌОМОевая ПбПлПчка -item.hull_small_aluminium.desc=МПжет быть вставлеМ в прПсверлеММый графОт -item.hull_big_steel.name=БПльшая стальМая ПбПлПчка -item.hull_big_aluminium.name=БПльшая алюЌОМОевая ПбПлПчка -item.hull_big_titanium.name=БПльшая тОтаМПвая ПбПлПчка -item.fins_flat.name=ПлПскОй стальМПй кПжух -item.fins_small_steel.name=Малые стальМые ребра решеткО -item.fins_big_steel.name=БПльшОе стальМые ребра решеткО -item.fins_tri_steel.name=БПльшОе стальМые ребра -item.fins_quad_titanium.name=МалеМькОе тОтаМПвые ребра -item.sphere_steel.name=СтальМая сфера -item.pedestal_steel.name=СтальМая стПйка -item.dysfunctional_reactor.name=НерабПчОй яЎерМый реактПр item.rotor_steel.name=БПльшПй стальМПй рПтПр -item.generator_steel.name=КПрпус геМератПра -item.blade_titanium.name=ТОтаМПвая лПпПсть -item.blade_meteorite.name=МетеПрОтПвПе лезвОе -item.turbine_titanium.name=ТОтаМПвая парПвая турбОМа -item.flywheel_beryllium.name=БерОллевый ЌахПвОк -item.generator_front.name=ПереЎ геМератПра -item.blade_tungsten.name=УсОлеММая вПльфраЌПЌ лПпасть -item.turbine_tungsten.name=УсОлеММые лПпастО турбПвеМтОлятПра -item.gear_large.name=БПльшая шестерМя -item.gear_large_steel.name=БПльшая стальМая шестерМя - -item.combine_scrap.name=МеталлПлПЌ АльяМса -item.chopper_head.name=КабОМа ВертПлета-ПхПтМОка -item.chopper_gun.name=ОгМевая устаМПвка -item.chopper_torso.name=КПрпус ВертПлёта-ПхПтМОка -item.chopper_tail.name=ХвПст ВертПлёта-ПхПтМОка -item.chopper_wing.name=КрылП ВертПлета-ПхПтМОка -item.chopper_blades.name=ЛПпастО ВертПлёта-ПхПтМОка - -item.igniter.name=ЗажОгатель -item.igniter.desc=(ЩёлкМОте правПй кМПпкПй ЌышО пП ПрПтПтОпу)$ЭтП зелеМая ЌеталлОческая ручка с $яркП-красМПй кМПпкПй О ЌалеМькПй крышкПй.$ВМОзу выгравОрПваМы ОМОцОалы N.E.$. КеЌ бы МО был N.E., у МегП был ПтлОчМый вкус в ПттеМках зелеМПгП. -item.watch.name=СлПЌаММые карЌаММые часы -item.watch.desc=МалеМькОе сОМОе карЌаММые часы.$На стекле есть МескПлькП трещОМ,$О МескПлькП ПскПлкПв Птсутствуют.$ПересталО тОкать в 2:34. -item.apple_euphemium.name=ЭвфеЌОевПе ЯблПкП -item.ingot_euphemium.name=ЭвфеЌОевый слОтПк -item.ingot_euphemium.desc=СПвершеММП ПсПбый О в тП же вреЌя страММый элеЌеМт. -item.nugget_euphemium.name=ЭвфеЌОевый саЌПрПЎПк -item.nugget_euphemium.desc=МалеМькОй кусПчек рПзПвПгП Ќеталла.$ЕгП свПйства ЎП сОх пПр МеОзвестМы,$ОБРАЩАЙТЕСЬ С НИМ ПстПрПжМП. -item.rod_quad_euphemium.name=ВыгПревшОй счетверёММый шрабОЎОевый тПплОвМый стержеМь -item.plate_euphemium.name=СПставМая пластОМа Оз эвфеЌОя -item.plate_dineutronium.name=СПставМая пластОМа Оз ЎОМейтрПМОя -item.plate_desh.name=СПставМая пластОМа Оз Ўеш -item.plate_bismuth.name=СПставМая пластОМа Оз вОсЌута -item.plate_bismuth.desc=Ребята, кляМусь, этП алхОЌОческОй сОЌвПл вОсЌута. - -item.plate_fuel_mox.name=МОКС-тПплОвМая пластОМа -item.plate_fuel_pu238be.name=ПлутПМОй-238-БерОллевая тПплОвМая пластОМа -item.plate_fuel_pu239.name=ВысПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа -item.plate_fuel_ra226be.name=РаЎОй-226-БерОллевая тПплОвМая пластОМа -item.plate_fuel_sa326.name=ВысПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа -item.plate_fuel_u233.name=ВысПкППбПгащеММая ураМ-233 тПплОвМая пластОМа -item.plate_fuel_u235.name=ВысПкППбПгащеММая ураМ-235 тПплОвМая пластОМа -item.waste_plate_mox.name=ОбеЎМёММая МОКС-тПплОвМая пластОМа -item.waste_plate_pu239.name=ОбеЎМёММая высПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа -item.waste_plate_pu238be.name=ОбеЎМёММая плутПМОй-238-берОллевая тПплОвМая пластОМа -item.waste_plate_ra226be.name=ОбеЎМёММая раЎОй-226-берОллевая тПплОвМая пластОМа -item.waste_plate_sa326.name=ОбеЎМёММая высПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа -item.waste_plate_u233.name=ОбеЎМёММая высПкППбПгащеММая ураМ-233 тПплОвМая пластОМа -item.waste_plate_u235.name=ОбеЎМёММая высПкППбПгащеММая ураМ-235 тПплОвМая пластОМа - -item.euphemium_helmet.name=ЭвфеЌОевый шлеЌ -item.euphemium_plate.name=ЭвфеЌОевый МагруЎМОк -item.euphemium_legs.name=ЭвфеЌОевые пПМПжО -item.euphemium_boots.name=ЭвфеЌОевые бПтОМкО - -item.schrabidium_helmet.name=КрабОЎОевый шлеЌ -item.schrabidium_plate.name=КрабОЎОевый МагруЎМОк -item.schrabidium_legs.name=КрабОЎОевые пПМПжО -item.schrabidium_boots.name=КрабОЎОевые бПтОМкО -item.schrabidium_sword.name=КрабОЎОевый Ќеч -item.schrabidium_pickaxe.name=КрабОЎОевая кОрка -item.schrabidium_axe.name=КрабОЎОевый тПпПр -item.schrabidium_shovel.name=КрабОЎОевая лПпата -item.schrabidium_hoe.name=КрабОЎОевая ЌПтыга -item.chlorophyte_pickaxe.name=ХлПрПфОтПвая кОрка -item.mese_pickaxe.name=Месе кОрка -item.volcanic_pickaxe.name=ЛОтая кОрка -item.dwarven_pickaxe.name=ДварфОйская кОрка - -item.jetpack_boost.name=ИЌпульсМый раМец -item.jetpack_fly.name=РеактОвМый раМец -item.jetpack_break.name=СтрПОтельМый раМец -item.jetpack_vector.name=ВектПрМый реактОвМый раМец -item.jetpack_tank.name=РезервМый тПплОвМый бак раМца -item.wings_limp.name=ХрПЌые крылья -item.wings_murk.name=МрачМые крылья - -item.gun_kit_1.name=РужейМПе ЌаслП -item.gun_kit_2.name=КПЌплект Ўля реЌПМта ПружОя -item.chainsaw.name=БеМзПпОла -item.crowbar.name=Mk.V УстрПйствП Для ВскрытОя ЯщОкПв "ЛПЌ" -item.wrench.name=ГазПвый ключ -item.wrench_archineer.name=ГаечМый ключ ОМжеМера -item.wrench_flipped.name=ЛезвОе Ма гаечМПЌ ключе -item.memespoon.name=§eЗеЌлекПп - -item.mask_of_infamy.name=Маска ППзПра - -tile.dynamite.name=ДОМаЌОт -tile.tnt_ntm.name=НастПящОй ТНТ -tile.det_cord.name=ДетПМОрующОй шМур -tile.det_charge.name=ЗаряЎ взрывчаткО -tile.det_nuke.name=ЯЎерМый заряЎ -tile.fissure_bomb.name=ВулкаМОческая бПЌба -tile.det_miner.name=КахтёрскОй заряЎ -tile.red_barrel.name=ВзрывМая бПчка -tile.pink_barrel.name=КерПсОМПвая бПчка -tile.lox_barrel.name=БПчка с жОЎкОЌ кОслПрПЎПЌ -tile.taint_barrel.name=БПчка с ПсаЎкПЌ IMP -tile.yellow_barrel.name=РаЎОПктОвМая бПчка -tile.vitrified_barrel.name=БПчка с ПстеклПваММыЌО яЎерМыЌО ПтхПЎаЌО - -item.designator.name=Њелеуказатель блОжМегП ЎействОя -item.designator_range.name=Њелеуказатель ЎальМегП ЎействОя -item.designator_manual.name=РучМПй целеуказатель -item.designator_arty_range.name=АртОллерОйскОй целеуказатель -item.missile_assembly.name=СбПрка ЌалПй ракеты -item.assembly_nuke.name=ОбПлПчка яЎерМПгП ЌОМОзаряЎа -item.missile_generic.name=ЀугасМая ракета -item.missile_decoy.name=Ракета-прОЌаМка -item.missile_anti_ballistic.name=АМтОбаллОстОческая ракета -item.missile_incendiary.name=ЗажОгательМая ракета -item.missile_cluster.name=КластерМая ракета -item.missile_buster.name=ПрПтОвПбуМкерМая ракета -item.missile_strong.name=МПщМая фугасМая ракета -item.missile_incendiary_strong.name=МПщМая зажОгательМая ракета -item.missile_cluster_strong.name=МПщМая кластерМая ракета -item.missile_buster_strong.name=УлучшеММая прПтОвПбуМкерМая ракета -item.missile_emp_strong.name=МПщМая ЭМИ-ракета -item.missile_burst.name=ЗапасМая ракета -item.missile_inferno.name=Ракета "ИМферМП Г. Р. Н. МК.II" -item.missile_rain.name=БПЌбПвый ЎПжЎь -item.missile_drill.name=КрушОтель бетПМа -item.missile_nuclear.name=ЯЎерМая ракета -item.missile_nuclear_cluster.name=ТерЌПяЎерМая ракета -item.missile_endo.name=ЭМЎПтерЌОческая ракета -item.missile_exo.name=ЭкзПтерЌОческая ракета -item.missile_doomsday.name=Ракета СуЎМПгП ДМя -item.missile_doomsday_rusted.name=ППврежЎёММая ракета СуЎМПгП ДМя -item.missile_taint.name=ЗаражеММая ракета -item.missile_micro.name=МОкрП-яЎерМая ракета -item.missile_bhole.name=Ракета "ЧерМая Дыра" -item.missile_schrabidium.name=КрабОЎОевая ракета -item.missile_emp.name=ЭМИ-ракета -item.missile_volcano.name=ТектПМОческая ракета -item.missile_shuttle.name=КПсЌОческОй шаттл Reliant Robin -item.missile_volcano.desc=ИспПльзуя сОлу яЎерМПй взрывчаткО, Ќы ЌПжеЌ вызвать вулкаМ! - -item.seg_10.name=КПММектПр 10-гП разЌера -item.seg_15.name=КПММектПр 15-гП разЌера -item.seg_20.name=КПММектПр 20-гП разЌера - -item.mp_c_1.name=СхеЌа МавеЎеМОя ракеты 1-гП урПвМя -item.mp_c_2.name=СхеЌа МавеЎеМОя ракеты 2-гП урПвМя -item.mp_c_3.name=СхеЌа МавеЎеМОя ракеты 3-гП урПвМя -item.mp_c_4.name=СхеЌа МавеЎеМОя ракеты 4-гП урПвМя -item.mp_c_5.name=СхеЌа МавеЎеМОя ракеты 5-гП урПвМя - -item.mp_warhead_10_he.name=ЀугасМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_incendiary.name=ЗажОгательМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_buster.name=БуМкерМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_nuclear.name=МОкрП-ЯЎерМая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_taint.name=ЗаражеММая бПегПлПвка 10-гП разЌера -item.mp_warhead_10_cloud.name=БПегПлПвка РПзПвПгП Облака 10-гП разЌера -item.mp_warhead_15_he.name=ЀугасМая бПегПлПвка 15-гП разЌера -item.mp_warhead_15_incendiary.name=ЗажОгательМая бПегПлПвка 15-гП разЌера -item.mp_warhead_10_nuclear_large.name=ЯЎерМая бПегПлПвка 10-гП разЌера -item.mp_warhead_15_nuclear.name=ЯЎерМая бПегПлПвка 15-гП разЌера -item.mp_warhead_15_nuclear_shark.name=ЯЎерМая бПегПлПвка 15-гП разЌера -item.mp_warhead_15_boxcar.name=ГрузПвПй ВагПМ? 15-гП разЌера -item.mp_warhead_15_n2.name=N² МОМа 15-гП разЌера -item.mp_warhead_15_balefire.name=Жар-БПегПлПвка 15-гП разЌера -item.mp_warhead_15_turbine.name=РеактОвМый ЎвОгатель 15-гП разЌера -item.mp_warhead_15_nuclear_mimi.name=ГПлПва МОЌО-чаМа 15-гП разЌера - -item.mp_fuselage_10_kerosene.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_camo.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_desert.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_sky.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_insulation.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_flames.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_sleek.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_metal.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_kerosene_taint.name=КерПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_flames.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_sleek.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_cathedral.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_moonlit.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_battery.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_solid_duracell.name=ТверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_xenon.name=КсеМПМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_xenon_bhole.name=КсеМПМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_camo.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_desert.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_sky.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_flames.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_insulation.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_sleek.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_metal.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_taint.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_vap.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_kerosene_dash.name=ДлОММый керПсОМПвый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_flames.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_insulation.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_sleek.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_soviet_glory.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_silvermoonlight.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера -item.mp_fuselage_10_long_solid_bullet.name=ДлОММый тверЎПтПплОвМый фюзеляж 10-гП разЌера - -item.mp_fuselage_10_15_kerosene.name=КерПсОМПвый фюзеляж 10/15 разЌера -item.mp_fuselage_10_15_solid.name=ТверЎПтПплОвМый фюзеляж 10/15 разЌера -item.mp_fuselage_10_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 10/15 разЌера -item.mp_fuselage_10_15_balefire.name=Жар-фюзеляж 10/15 разЌера - -item.mp_fuselage_15_kerosene.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_camo.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_desert.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_sky.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_insulation.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_metal.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_decorated.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_steampunk.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_polite.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_blackjack.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_lambda.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_minuteman.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_taint.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_pip.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_kerosene_yuck.name=КерПсОМПвый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_insulation.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_soviet_glory.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_soviet_stank.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_desh.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_silvermoonlight.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_faust.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_snowy.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_panorama.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_roses.name=ТверЎПтПплОвМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_hydrogen.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_hydrogen_cathedral.name=ВПЎПрПЎМый фюзеляж 15-гП разЌера -item.mp_fuselage_15_balefire.name=Жар-фюзеляж 15-гП разЌера -item.mp_fuselage_15_solid_mimi.name=ТверЎПтПплОвМый фюзеляж МОЌО-чаМа 15-гП разЌера - -item.mp_fuselage_15_20_kerosene.name=КерПсОМПвый фюзеляж 15/20 разЌера -item.mp_fuselage_15_20_kerosene_magnusson.name=КерПсОМПвый фюзеляж 15/20 разЌера -item.mp_fuselage_15_20_solid.name=ТверЎПтПплОвМый фюзеляж 15/20 разЌера - -item.mp_stability_10_flat.name=ПлПскОе стабОлОзатПры 10-гП разЌера -item.mp_stability_10_cruise.name=Крылатый стабОлОзатПр 10-гП разЌера -item.mp_stability_10_space.name=КПсЌОческОй стабОлОзатПр 10-гП разЌера -item.mp_stability_15_flat.name=ПлПскОе стабОлОзатПры 15-гП разЌера -item.mp_stability_15_thin.name=ТПМкОе стабОлОзатПры 15-гП разЌера -item.mp_stability_15_soyuz.name=ЗаПстрёММые стабОлОзатПры 15-гП разЌера - -item.mp_thruster_10_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 10-гП разЌера -item.mp_thruster_10_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 10-гП разЌера -item.mp_thruster_10_xenon.name=ИПММый ЎвОгатель 10-гП разЌера -item.mp_thruster_15_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_kerosene_dual.name=ДвПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_kerosene_triple.name=ТрПйМПй жОЎкПстМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_solid_hexdecuple.name=КестМаЎцатОсПплПвые тверЎПтПплОвМые ЎвОгателО 15-гП разЌера -item.mp_thruster_15_hydrogen.name=ВПЎПрПЎМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_hydrogen_dual.name=ДвПйМПй вПЎПрПЎМый ЎвОгатель 15-гП разЌера -item.mp_thruster_15_balefire_short.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (УкПрПчеММый) -item.mp_thruster_15_balefire.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера -item.mp_thruster_15_balefire_large.name=Жар-вОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) -item.mp_thruster_15_balefire_large_rad.name=Жар-ЎвОгатель с яЎерМыЌ пПЎПгревателеЌ 15-гП разЌера (СверхЌПщМПе СПплП) -item.mp_thruster_20_kerosene.name=ЖОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_kerosene_dual.name=ДвПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_kerosene_triple.name=ТрПйМПй жОЎкПстМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_solid.name=ТверЎПтПплОвМый ракетМый ЎвОгатель 20-гП разЌера -item.mp_thruster_20_solid_multi.name=ТверЎПтПплОвМые 30-сПплПвые ЎвОгателО 20-гП разЌера -item.mp_thruster_20_solid_multier.name=ТверЎПтПплОвМые 47-сПплПвые ЎвОгателО 20-гП разЌера - -item.missile_custom.name=ППльзПвательская Ракета -item.missile_stealth.name=Стелс-ракета - -item.missile_carrier.name=Ракета-МПсОтель HTR-01 -item.missile_soyuz.name=СПюз-ЀГ -item.missile_soyuz_lander.name=ОрбОтальМый МПЎуль -item.missile_soyuz_lander.desc=А также паршОвый пПсаЎПчМый ЌПЎуль! -item.sat_mapper.name=СпутМОк Ўля КартПграфОрПваМОя ППверхМПстО -item.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя -item.sat_radar.name=СпутМОк с РаЎОПлПкацОПММыЌ ЗПМЎОрПваМОеЌ -item.sat_laser.name=ОрбОтальМый Луч СЌертО -item.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ -item.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ -item.sat_miner.name=МПЎуль Ўля ЎПбычО астерПОЎПв -item.sat_lunar_miner.name=МПЎуль Ўля ЎПбычО луММПгП груМта -item.sat_gerald.name=ГеральЎ СтрПОтельМый АМЎрПОЎ -item.sat_chip.name=СпутМОкПвый ID-чОп -item.sat_interface.name=ИМтерфейс спутМОкПвПгП управлеМОя -item.sat_coord.name=СпутМОкПвый целеуказатель -item.sat_designator.name=СпутМОкПвый лазерМый целеуказатель -item.sat_relay.name=СпутМОкПвый раЎарМый переЎатчОк -tile.sat_mapper.name=СпутМОк Ўля картПграфОрПваМОя пПверхМПстО (ДекПр) -tile.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя (ДекПр) -tile.sat_radar.name=СпутМОк с раЎОПлПкацОПММыЌ зПМЎОрПваМОеЌ (ДекПр) -tile.sat_laser.name=ОрбОтальМый Луч СЌертО (ДекПр) -tile.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ (ДекПр) -tile.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ (ДекПр) - -item.hazmat_helmet.name=ЗащОтМый шлеЌ -item.hazmat_plate.name=ЗащОтМый МагруЎМОк -item.hazmat_legs.name=ЗащОтМые пПМПжО -item.hazmat_boots.name=ЗащОтМые бПтОМкО -item.hazmat_helmet_red.name=УлучшеММый защОтМый шлеЌ -item.hazmat_plate_red.name=УлучшеММый защОтМый МагруЎМОк -item.hazmat_legs_red.name=УлучшеММые защОтМые пПМПжО -item.hazmat_boots_red.name=УлучшеММые защОтМые бПтОМкО -item.hazmat_helmet_grey.name=ВысПкПэффектОвМый защОтМый шлеЌ -item.hazmat_plate_grey.name=ВысПкПэффектОвМый защОтМый МагруЎМОк -item.hazmat_legs_grey.name=ВысПкПэффектОвМые защОтМые пПМПжО -item.hazmat_boots_grey.name=ВысПкПэффектОвМые защОтМые бПтОМкО -item.hazmat_paa_helmet.name=БПевПй защОтМый шлеЌ PaA -item.hazmat_paa_plate.name=БПевПй защОтМый МагруЎМОк PaA -item.hazmat_paa_legs.name=БПевые защОтМые пПМПжО PaA -item.hazmat_paa_boots.name=БПевые защОтМые бПтОМкО PaA -item.liquidator_boots.name=БПтОМкО кПстюЌа ЛОквОЎатПра -item.liquidator_helmet.name=КлеЌ кПстюЌа ЛОквОЎатПра -item.liquidator_legs.name=ППМПжО кПстюЌа ЛОквОЎатПра -item.liquidator_plate.name=НагруЎМОк кПстюЌа ЛОквОЎатПра -item.asbestos_helmet.name=ОгМезащОтМый шлеЌ -item.asbestos_plate.name=ОгМезащОтМый МагруЎМОк -item.asbestos_legs.name=ОгМезащОтМые пПМПжО -item.asbestos_boots.name=ОгМезащОтМые бПтОМкО -item.vault_suit.name=КПЌбОМезПМ УбежОща -item.vault_pants.name=КтаМы кПЌбОМезПМа УбежОща -item.nossy_hat.name=СказПчМая шляпа -item.no9.name=Кахтёрская каска - -item.paa_plate.name=ЗащОщающая груЎМая пластОМа Оз PaA -item.paa_legs.name=УкреплёММые пПМПжО Оз PaA -item.paa_boots.name="Старые ЎПбрые бПтОМкО" Оз PaA - -item.jackt.name=ЧертПвскО стОльМая баллОстОческая куртка -item.jackt2.name=ЧертПвскО стОльМая баллОстОческая куртка 2: ТПкОйскОй ДрОфт - -item.goggles.name=ЗащОтМые ПчкО -item.ashglasses.name=ПепельМые ПчкО -item.gas_mask.name=ПрПтОвПгаз -item.gas_mask_m65.name=ПрПтОвПгаз M65-Z -item.gas_mask_mono.name=ППлуЌаска -item.gas_mask_olde.name=КПжаМый прПтОвПгаз -item.attachment_mask.name=ПрОкрепляеЌый прПтОвПгаз -item.mask_piss.name=ТраМшейМый прПтОвПгаз -item.mask_rag.name=Грубая защОтМая Ќаска -item.attachment_mask_mono.name=ПрОкрепляеЌая пПлуЌаска -item.oxy_mask.name=КОслПрПЎМая Ќаска -item.t45_helmet.name=КлеЌ сОлПвПй брПМО T45 -item.t45_plate.name=НагруЎМОк сОлПвПй брПМО T45 -item.t45_legs.name=ППМПжО сОлПвПй брПМО T45 -item.t45_boots.name=БПтОМкО сОлПвПй брПМО T45 -item.ajr_boots.name=БПтОМкО СтальМых РейМЎжерПв -item.ajr_helmet.name=КлеЌ СтальМых РейМЎжерПв -item.ajr_legs.name=ППМПжО СтальМых РейМЎжерПв -item.ajr_plate.name=НагруЎМОк СтальМых РейМЎжерПв -item.ajro_boots.name=БПтОМкО сОлПвПй брПМО AJR -item.ajro_helmet.name=КлеЌ сОлПвПй брПМО AJR -item.ajro_legs.name=ППМПжО сОлПвПй брПМО AJR -item.ajro_plate.name=НагруЎМОк сОлПвПй брПМО AJR -item.fau_boots.name=Ѐау-бПтОМкО -item.fau_helmet.name=Ѐау-шлеЌ -item.fau_legs.name=Ѐау-пПМПжО -item.fau_plate.name=Ѐау-МагруЎМОк item.rpa_boots.name=БПтОМкО сОлПвПй брПМО ОставшОхся item.rpa_helmet.name=КлеЌ сОлПвПй брПМО ОставшОхся item.rpa_legs.name=ППМПжО сОлПвПй брПМО ОставшОхся item.rpa_plate.name=НагруЎМОк сОлПвПй брПМО ОставшОхся +item.rtg_unit.name=РИТЭГ-элеЌеМт +item.rubber_gloves.name=ТПлстые резОМПвые перчаткО +item.rune_blank.name=Пустая каталОтОческая ЌатрОца +item.rune_dagaz.name=СбалаМсОрПваММая каталОтОческая ЌатрОца +item.rune_hagalaz.name=Грубая каталОтОческая ЌатрОца +item.rune_isa.name=ОхлажЎающая каталОтОческая ЌатрОца +item.rune_jera.name=МультОплОкатОвМая каталОтОческая ЌатрОца +item.rune_thurisaz.name=АЎЎОтОвМая каталОтОческая ЌатрОца +item.safety_fuse.name=ЀОтОль +item.sat_base.name=ОсМПва спутМОка +item.sat_chip.name=СпутМОкПвый ID-чОп +item.sat_coord.name=СпутМОкПвый целеуказатель +item.sat_designator.name=СпутМОкПвый лазерМый целеуказатель +item.sat_relay.name=СпутМОкПвый раЎарМый переЎатчОк +item.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ +item.sat_gerald.name=ГеральЎ СтрПОтельМый АМЎрПОЎ +item.sat_head_laser.name=Луч сЌертО +item.sat_head_mapper.name=ОптОческая каЌера с высПкОЌ кПэффОцОеМтПЌ усОлеМОя +item.sat_head_radar.name=РаЎар +item.sat_head_resonator.name=ЗеМ-резПМатПр +item.sat_head_scanner.name=СкаМер M700 +item.sat_interface.name=ИМтерфейс спутМОкПвПгП управлеМОя +item.sat_laser.name=ОрбОтальМый Луч СЌертО +item.sat_lunar_miner.name=МПЎуль Ўля ЎПбычО луММПгП груМта +item.sat_mapper.name=СпутМОк Ўля КартПграфОрПваМОя ППверхМПстО +item.sat_miner.name=МПЎуль Ўля ЎПбычО астерПОЎПв +item.sat_radar.name=СпутМОк с РаЎОПлПкацОПММыЌ ЗПМЎОрПваМОеЌ +item.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ +item.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя +item.sawblade.name=ЛезвОе пОлПраЌы +item.schnitzel_vegan.name=ВегетарОаМскОй шМОцель +item.schrabidium_axe.name=КрабОЎОевый тПпПр +item.schrabidium_boots.name=КрабОЎОевые бПтОМкО +item.schrabidium_hammer.name=КрабОЎОевый ЌПлПт +item.schrabidium_helmet.name=КрабОЎОевый шлеЌ +item.schrabidium_hoe.name=КрабОЎОевая ЌПтыга +item.schrabidium_legs.name=КрабОЎОевые пПМПжО +item.schrabidium_pickaxe.name=КрабОЎОевая кОрка +item.schrabidium_plate.name=КрабОЎОевый МагруЎМОк +item.schrabidium_shovel.name=КрабОЎОевая лПпата +item.schrabidium_sword.name=КрабОЎОевый Ќеч +item.scrap.name=МеталлПлПЌ +item.scrap_nuclear.name=РаЎОПактОвМый ЌусПр +item.scrap_oil.name=НефтяМые ПтхПЎы +item.scrap_plastic.name=КускО пластЌассы +item.scraps.name=ЛОтейМый шлак +item.screwdriver.name=Отвёртка +item.screwdriver.desc=МПжет ОспПльзПваться вЌестП преЎПхраМОтеля... +item.screwdriver_desh.name=Деш-Птвёртка +item.scrumpy.name=Бутылка "СкраЌпО" +item.security_boots.name=БПтОМкО ПхраММОка +item.security_helmet.name=КлеЌ ПхраММОка +item.security_legs.name=ППМПжО ПхраММОка +item.security_plate.name=НагруЎМОк ПхраММОка +item.seg_10.name=КПММектПр 10-гП разЌера +item.seg_15.name=КПММектПр 15-гП разЌера +item.seg_20.name=КПММектПр 20-гП разЌера +item.serum.name=СывПрПтка +item.servo_set.name=НабПр сервПпрОвПЎПв +item.servo_set_desh.name=НабПр Ўеш-сервПпрОвПЎПв +item.settings_tool.name=УстрПйствП МастрПйкО +item.shackles.name=ОкПвы +item.shellntm.name=ОбПлПчка Оз %s +item.shimmer_axe.name=ОтлОтый тПпПр +item.shimmer_axe_head.name=ТяжелПе лезвОе тПпПра +item.shimmer_handle.name=УсОлеММая пПлОЌерМая ручка +item.shimmer_head.name=Тяжелая гПлПвка ЌПлПта +item.shimmer_sledge.name=ОтлОтая кувалЎа +item.singularity.name=СОМгулярМПсть +item.singularity_counter_resonant.name=ЗаключёММая кПМтр-резПМаМсМая сОМгулярМПсть +item.singularity_micro.name=МОкрП-сОМгулярМПсть +item.singularity_spark.name=Спарк-сОМгулярМПсть +item.singularity_super_heated.name=Перегретая резПМОрующая сОМгулярМПсть +item.siox.name=ЛекарствП Пт рака "SiOx" +item.siox.desc=Reverses mesothelioma with the power of Asbestos! +item.siphon.name=СОфПМ +item.siren_track.name=Трек сОреМы +item.sliding_blast_door_skin.0.name=СкОМ разЎвОжМПй ЎверО: ОбычМый +item.sliding_blast_door_skin.1.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 1 +item.sliding_blast_door_skin.2.name=СкОМ разЎвОжМПй ЎверО: ВарОаМт 2 +item.smashing_hammer.name=УбПйМый ЌПлПт +item.solid_fuel.name=ТверЎПе тПплОвП +item.solid_fuel_bf.name=ТверЎПе тПплОвП (Жар-плаЌя) +item.solid_fuel_presto.name=ТПплОвМПе пПлеМП +item.solid_fuel_presto_bf.name=ТПплОвМПе пПлеМП (Жар-плаЌя) +item.solid_fuel_presto_triplet.name=Сжатые тПплОвМые пПлеМа +item.solid_fuel_presto_triplet_bf.name=Сжатые тПплОвМые пПлеМа (Жар-плаЌя) +item.solinium_core.name=ППлу-стабОльМый сПлОМОевый заряЎ +item.solinium_igniter.name=СПлОМОевый ОЌпульсМый вПсплаЌеМОтель +item.solinium_kit.name=СПлОМОевый кПЌплект +item.solinium_propellant.name=СПлОМОевый сжОЌающОй заряЎ +item.sopsign.name=БПевПй тПпПр Оз зМака С ОП +item.spawn_duck.name=ЗПлПтПе яйцП +item.spawn_ufo.name=МарсОаМскОй кПрабль втПржеМОя +item.spawn_worm.name=Баллс-О-ТрПМ ПрайЌ +item.sphere_steel.name=СтальМая сфера +item.spider_milk.name=Бутылка паучьегП ЌПлПка +item.spongebob_macaroni.name=СырМые ЌакарПММы "Губка БПб" +item.stamp_357.name=КтаЌп пулО .357 МагМуЌ +item.stamp_44.name=КтаЌп пулО .44 МагМуЌ +item.stamp_50.name=КтаЌп бПльшПгП калОбра +item.stamp_9.name=КтаЌп ЌалПгП калОбра +item.stamp_book.printing1.name=КтаЌп Ўля печатО (СтраМОца 1) +item.stamp_book.printing2.name=КтаЌп Ўля печатО (СтраМОца 2) +item.stamp_book.printing3.name=КтаЌп Ўля печатО (СтраМОца 3) +item.stamp_book.printing4.name=КтаЌп Ўля печатО (СтраМОца 4) +item.stamp_book.printing5.name=КтаЌп Ўля печатО (СтраМОца 5) +item.stamp_book.printing6.name=КтаЌп Ўля печатО (СтраМОца 6) +item.stamp_book.printing7.name=КтаЌп Ўля печатО (СтраМОца 7) +item.stamp_book.printing8.name=КтаЌп Ўля печатО (СтраМОца 8) +item.stamp_desh_circuit.name=КтаЌп ЌОкрПсхеЌы (Деш) +item.stamp_desh_flat.name=ПлПскОй штаЌп (Деш) +item.stamp_desh_plate.name=КтаЌп пластОМы (Деш) +item.stamp_desh_wire.name=КтаЌп прПвПЎа (Деш) +item.stamp_desh_357.name=КтаЌп пулО .357 МагМуЌ (Деш) +item.stamp_desh_44.name=КтаЌп пулО .44 МагМуЌ (Деш) +item.stamp_desh_50.name=КтаЌп бПльшПгП калОбра (Деш) +item.stamp_desh_9.name=КтаЌп ЌалПгП калОбра (Деш) +item.stamp_iron_circuit.name=КтаЌп ЌОкрПсхеЌы (ЖелезП) +item.stamp_iron_flat.name=ПлПскОй штаЌп (ЖелезП) +item.stamp_iron_plate.name=КтаЌп пластОМы (ЖелезП) +item.stamp_iron_wire.name=КтаЌп прПвПЎа (ЖелезП) +item.stamp_obsidian_circuit.name=КтаЌп ЌОкрПсхеЌы (ОбсОЎОаМ) +item.stamp_obsidian_flat.name=ПлПскОй штаЌп (ОбсОЎОаМ) +item.stamp_obsidian_plate.name=КтаЌп пластОМы (ОбсОЎОаМ) +item.stamp_obsidian_wire.name=КтаЌп прПвПЎа (ОбсОЎОаМ) +item.stamp_steel_circuit.name=КтаЌп ЌОкрПсхеЌы (Сталь) +item.stamp_steel_flat.name=ПлПскОй штаЌп (Сталь) +item.stamp_steel_plate.name=КтаЌп пластОМы (Сталь) +item.stamp_steel_wire.name=КтаЌп прПвПЎа (Сталь) +item.stamp_stone_circuit.name=КтаЌп ЌОкрПсхеЌы (КаЌеМь) +item.stamp_stone_flat.name=ПлПскОй штаЌп (КаЌеМь) +item.stamp_stone_plate.name=КтаЌп пластОМы (КаЌеМь) +item.stamp_stone_wire.name=КтаЌп прПвПЎа (КаЌеМь) +item.stamp_titanium_circuit.name=КтаЌп ЌОкрПсхеЌы (ТОтаМ) +item.stamp_titanium_flat.name=ПлПскОй штаЌп (ТОтаМ) +item.stamp_titanium_plate.name=КтаЌп пластОМы (ТОтаМ) +item.stamp_titanium_wire.name=КтаЌп прПвПЎа (ТОтаМ) +item.starmetal_axe.name=ТПпПр Оз звёзЎМПгП Ќеталла +item.starmetal_boots.name=БПтОМкО Оз звёзЎМПгП Ќеталла +item.starmetal_helmet.name=КлеЌ Оз звёзЎМПгП Ќеталла +item.starmetal_hoe.name=МПтыга Оз звёзЎМПгП Ќеталла +item.starmetal_legs.name=ППМПжО Оз звёзЎМПгП Ќеталла +item.starmetal_pickaxe.name=КОрка Оз звёзЎМПгП Ќеталла +item.starmetal_plate.name=НагруЎМОк Оз звёзЎМПгП Ќеталла +item.starmetal_shovel.name=ЛПпата Оз звёзЎМПгП Ќеталла +item.starmetal_sword.name=Меч Оз звёзЎМПгП Ќеталла +item.static_sandwich.name=СэМЎвОч с пПЌехаЌО +item.stealth_boy.name=Стелс-БПй item.steamsuit_boots.name=БПтОМкО парПвПгП кПстюЌа item.steamsuit_helmet.name=РеспОратПрМый шлеЌ парПвПгП кПстюЌа item.steamsuit_legs.name=ППМПжО парПвПгП кПстюЌа item.steamsuit_plate.name=НагруЎМОк парПвПгП кПстюЌа -item.bj_boots.name=ЛуММые шОпПваММые бПтОМкО -item.bj_helmet.name=ППвязка с теплПвыЌ сеМсПрПЌ -item.bj_legs.name=ЛуММые кОберМетОческОе заЌеМы МПг -item.bj_plate.name=ЛуММая кОберМетОческая ПбшОвка -item.bj_plate_jetpack.name=ЛуММая кОберМетОческая ПбшОвка (с крыльяЌО) -item.hev_boots.name=БПтОМкО H.E.V МПЎелО IV -item.hev_plate.name=НагруЎМОк H.E.V МПЎелО IV -item.hev_helmet.name=КлеЌ H.E.V МПЎелО IV -item.hev_legs.name=ППМПжО H.E.V МПЎелО IV -item.hev_battery.name=Батарея кПстюЌа -tile.hev_battery.name=Батарея кПстюЌа -item.bismuth_boots.name=СаМЎалО Оз вОсЌута -item.bismuth_helmet.name=ГПлПвМПй убПр Оз вОсЌута -item.bismuth_legs.name=НакПлеММОкО Оз вОсЌута -item.bismuth_plate.name=НаплечМОкО, Пжерелье О МабеЎреММая пПвязка Оз вОсЌута -item.dieselsuit_boots.name=ВысПкОе каблукО с ЎОзельМыЌ ЎвОгателеЌ -item.dieselsuit_helmet.name=ГПлПвМПй ЎатчОк Пкружающей среЎы с ЎОзельМыЌ ЎвОгателеЌ -item.dieselsuit_legs.name=СервПпрОвПЎы Ўля МПг с ЎОзельМыЌ прОвПЎПЌ -item.dieselsuit_plate.name=КОберМетОка с ЎОзельМыЌ ЎвОгателеЌ -item.envsuit_boots.name=БПтОМкО защОтМПгП кПстюЌа M1TTY -item.envsuit_helmet.name=КлеЌ защОтМПгП кПстюЌа M1TTY -item.envsuit_legs.name=ППМПжО защОтМПгП кПстюЌа M1TTY -item.envsuit_plate.name=НагруЎМОк защОтМПгП кПстюЌа M1TTY +item.steel_axe.name=СтальМПй тПпПр +item.steel_boots.name=СтальМые бПтОМкО +item.steel_helmet.name=СтальМПй шлеЌ +item.steel_hoe.name=СтальМая ЌПтыга +item.steel_legs.name=СтальМые пПМПжО +item.steel_pickaxe.name=СтальМая кОрка +item.steel_plate.name=СтальМПй МагруЎМОк +item.steel_shovel.name=СтальМая лПпата +item.steel_sword.name=СтальМПй Ќеч +item.stick_c4.name=Кашка C-4 +item.stick_dynamite.name=ДОМаЌОтМая шашка +item.stick_dynamite_fishing.name=ДОМаЌОтМая шашка Ўля рыбалкО +item.stick_semtex.name=Кашка сеЌтекса +item.stick_tnt.name=Кашка ТНТ +item.stopsign.name=БПевПй тПпПр Оз зМака СТОП +item.sulfur.name=Сера +item.survey_scanner.name=СкаМер +item.syringe_antidote.name=АМтОЎПт +item.syringe_awesome.name=ПОТРЯСАЮЩЕ +item.syringe_empty.name=ПустПй шпрОц +item.syringe_metal_empty.name=МеталлОческОй шпрОц +item.syringe_metal_medx.name=МеЎ-X +item.syringe_metal_psycho.name=ПсОхП +item.syringe_metal_stimpak.name=СтОЌулятПр +item.syringe_metal_super.name=Супер-стОЌулятПр +item.syringe_mkunicorn.name=MKUNICORN +item.syringe_poison.name=ЯЎПвОтая ОМъекцОя +item.syringe_taint.name=ВПЎяМОстая ОМъекцОя пПрчО +item.t45_boots.name=БПтОМкО сОлПвПй брПМО T45 +item.t45_helmet.name=КлеЌ сОлПвПй брПМО T45 +item.t45_kit.name=КПЌплект сОлПвПй брПМО T45 +item.t45_legs.name=ППМПжО сОлПвПй брПМО T45 +item.t45_plate.name=НагруЎМОк сОлПвПй брПМО T45 +item.tank_steel.name=СтальМПй бак +item.tank_waste_0.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_1.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_2.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_3.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_4.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_5.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_6.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_7.name=КПМтейМер с ПтхПЎаЌО +item.tank_waste_8.name=КПМтейМер с ПтхПЎаЌО +item.telepad.name=ТелепаЎ +item.tem_flakes.name=ХлПпья ТэЌ +item.template_folder.name=Папка шаблПМПв ЌашОМ +item.template_folder.desc=КаблПМы ЌашОМ: БуЌага + КрасОтель$ИМЎетОфОкатПр: ЖелезМая пластОМа + КрасОтель$КтаЌп Ўля пресса: ПлПскОй штаЌп$Трек сОреМы: ИзПлятПр + СтальМая пластОМа +item.test_nuke_igniter.name=АктОватПр +item.test_nuke_propellant.name=Взрывчатка +item.test_nuke_tier1_bullet.name=Uranium-235 Projectile (Tier 1) +item.test_nuke_tier1_shielding.name=Отражатель МейтрПМПв (урПвеМь 1) +item.test_nuke_tier1_target.name=Subcritical Uranium-235 Target (Tier 1) +item.test_nuke_tier2_bullet.name=СМаряЎ MOX (урПвеМь 2) +item.test_nuke_tier2_shielding.name=Отражатель МейтрПМПв (урПвеМь 2) +item.test_nuke_tier2_target.name=СубкрОтОческая цель MOX (урПвеМь 2) +item.thermo_element.name=ТерЌПэлектрОческОй элеЌеМт +item.thermo_unit_empty.name=ТерЌОческОй распреЎелОтельМый узел +item.thermo_unit_endo.name=УстрПйствП Ўля распреЎелеМОя хПлПЎа +item.thermo_unit_exo.name=УстрПйствП Ўля распреЎелеМОя тепла +item.thruster_large.name=БПльшПй ЎвОгатель +item.thruster_medium.name=СреЎМОй ЎвОгатель +item.thruster_nuclear.name=ЯЎерМый ракетМый ЎвОгатель LV-N +item.thruster_small.name=Малый ЎвОгатель +item.titanium_axe.name=ТОтаМПвый тПпПр +item.titanium_boots.name=ТОтаМПвые бПтОМкО +item.titanium_filter.name=ТОтаМПвый фОльтр +item.titanium_helmet.name=ТОтаМПвый шлеЌ +item.titanium_hoe.name=ТОтаМПвая ЌПтыга +item.titanium_legs.name=ТОтаМПвые пПМПжО +item.titanium_pickaxe.name=ТОтаМПвая кОрка +item.titanium_plate.name=ТОтаМПвый МагруЎМОк +item.titanium_shovel.name=ТОтаМПвая лПпата +item.titanium_sword.name=ТОтаМПвый Ќеч +item.toothpicks.name=ЗубПчОсткО +item.train.cargo_tram.name=ТраЌвай с плПскПй платфПрЌПй item.trenchmaster_boots.name=СапПгО траМшейщОка item.trenchmaster_helmet.name=КлеЌ траМшейщОка item.trenchmaster_legs.name=ППМПжО траМшейщОка item.trenchmaster_plate.name=НагруЎМОк траМшейщОка - -tile.mush.name=СветящОйся грОб -tile.waste_mycelium.name=СветящОйся ЌОцелОй - -tile.sellafield_bedrock.name=БеЎрПкПвый селлафОт -tile.sellafield_slaked.name=ППгашеММый селлафОт -tile.sellafield.0.name=СеллафОт -tile.sellafield.1.name=ГПрячОй селлафОт -tile.sellafield.2.name=КОпящОй селлафОт -tile.sellafield.3.name=ПылающОй селлафОт -tile.sellafield.4.name=АЎскОй селлафОт -tile.sellafield.5.name=СеллафОт-кПрОуЌ -tile.block_corium.name=КПрОуЌ -tile.corium_block.name=КПрОуЌ -tile.block_corium_cobble.name=БурОуЌ - -item.warhead_generic_small.name=Малая бПегПлПвка -item.warhead_generic_medium.name=СреЎМяя бПегПлПвка -item.warhead_generic_large.name=БПльшая бПегПлПвка -item.warhead_incendiary_small.name=Малая зажОгательМая бПегПлПвка -item.warhead_incendiary_medium.name=СреЎМяя зажОгательМая бПегПлПвка -item.warhead_incendiary_large.name=БПльшая зажОгательМая бПегПлПвка -item.warhead_cluster_small.name=Малая кластерМая бПегПлПвка -item.warhead_cluster_medium.name=СреЎМяя кластерМая бПегПлПвка -item.warhead_cluster_large.name=БПльшая кластерМая бПегПлПвка -item.warhead_buster_small.name=Малая буМкерМая бПегПлПвка -item.warhead_buster_medium.name=СреЎМяя буМкерМая бПегПлПвка +item.trinitite.name=ТрОМОтОт +item.tritium_deuterium_cake.name=ТрОтОй-ЎейтерОевый пОрПг +item.tritium_deuterium_cake.desc=Не МастПящОй пОрПг, МП затП ПтлОчМПе$уМОверсальМПе терЌПяЎерМПе тПплОвП! +item.tsar_core.name=ЯЎрП Њарь-бПЌбы +item.tsar_kit.name=КПЌплект Њарь БПЌбы +item.turbine_titanium.name=ТОтаМПвая парПвая турбОМа +item.turbine_tungsten.name=УсОлеММые лПпастО турбПвеМтОлятПра +item.turret_biometry.name=Карта телелОМка +item.turret_cheapo_ammo.name=Дешевые турельМые бПепрОпасы 6x24 +item.turret_chip.name=ТурельМый чОп ОскусствеММПгП ОМтеллекта +item.turret_control.name=ТурельМый кПМтрПллер +item.turret_cwis_ammo.name=БарабаМ 20-ЌЌ патрПМПв +item.turret_flamer_ammo.name=ТПплОвМые бакО ПгМеЌетМПй турелО +item.turret_heavy_ammo.name=КПрПбка бПепрОпасПв тяжёлПй турелО +item.turret_light_ammo.name=КПрПбка бПепрОпасПв лёгкПй турелО +item.turret_rocket_ammo.name=БПекПЌплект ракетМПй турелО 2х4 +item.turret_spitfire_ammo.name=AA-СМаряЎ +item.turret_tau_ammo.name=УраМПвые бПепрОпасы Тау-турелО +item.twinkie.name=ТвОМкО +item.ullapool_caber.name=АллапульскПе бревМП +item.undefined.name=Undefined +item.upgrade_5g.name=УлучшеМОе "5G ОзлучеМОе" +item.upgrade_afterburn_1.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя I +item.upgrade_afterburn_2.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя II +item.upgrade_afterburn_3.name=УлучшеМОе ЌехаМОзЌа "ЀПрсаж" урПвМя III +item.upgrade_centrifuge.name=УлучшеМОе "ЊеМтрОфуга" +item.upgrade_crystallizer.name=УлучшеМОе "КрОсталлОзатПр" +item.upgrade_effect_1.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя I +item.upgrade_effect_2.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя II +item.upgrade_effect_3.name=УлучшеМОе ЌехаМОзЌа "ЭффектОвМПсть" урПвМя III +item.upgrade_ejector_1.name=УлучшеМОе Озвлекателя "СкПрПсть" I урПвМя +item.upgrade_ejector_2.name=УлучшеМОе Озвлекателя "СкПрПсть" II урПвМя +item.upgrade_ejector_3.name=УлучшеМОе Озвлекателя "СкПрПсть" III урПвМя +item.upgrade_fortune_1.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя I +item.upgrade_fortune_2.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя II +item.upgrade_fortune_3.name=УлучшеМОе ЌехаМОзЌа "УЎача" урПвМя III +item.upgrade_gc_speed.name=УлучшеМОе "РазгПМ газПвПй цеМтрОфугО" +item.upgrade_health.name=УлучшеМОе прПчМПстО Озлучателя +item.upgrade_muffler.name=УлучшеМОе "ГлушОтель" +item.upgrade_nullifier.name=УлучшеМОе "УМОчтПжОтель ЌусПра" +item.upgrade_overdrive_1.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя I +item.upgrade_overdrive_2.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя II +item.upgrade_overdrive_3.name=УлучшеМОе ЌехаМОзЌа "Перегруз" урПвМя III +item.upgrade_power_1.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя I +item.upgrade_power_2.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя II +item.upgrade_power_3.name=УлучшеМОе ЌехаМОзЌа "ЭМергПсбережеМОе" урПвМя III +item.upgrade_radius.name=УлучшеМОе раЎОуса Озлучателя +item.upgrade_screm.name=УлучшеМОе "КрОчащОй учёМый" +item.upgrade_shredder.name=УлучшеМОе "ИзЌельчОтель" +item.upgrade_smelter.name=УлучшеМОе "ПлавОльМя" +item.upgrade_speed_1.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя I +item.upgrade_speed_2.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя II +item.upgrade_speed_3.name=УлучшеМОе ЌехаМОзЌа "СкПрПсть" урПвМя III +item.upgrade_stack_1.name=УлучшеМОе Озвлекателя "КПлОчествП стака" I урПвМя +item.upgrade_stack_2.name=УлучшеМОе Озвлекателя "КПлОчествП стака" II урПвМя +item.upgrade_stack_3.name=УлучшеМОе Озвлекателя "КПлОчествП стака" III урПвМя +item.upgrade_template.name=КаблПМ улучшеМОя ЌехаМОзЌа +item.volcanic_axe.name=ЛОтПй тПпПр +item.volcanic_pickaxe.name=ЛОтая кОрка +item.wand_d.name=ОтлаЎПчМая палПчка +item.wand_k.name=СтрПОтельМая палПчка +item.wand_s.name=СтруктурМая палПчка +item.structure_custommachine.name=Жезл ПбПзМачеМОя кастПЌМых ЌашОМ item.warhead_buster_large.name=БПльшая буМкерМая бПегПлПвка -item.warhead_nuclear.name=ЯЎерМая бПегПлПвка -item.warhead_mirvlet.name=РГЧ ИН +item.warhead_buster_medium.name=СреЎМяя буМкерМая бПегПлПвка +item.warhead_buster_small.name=Малая буМкерМая бПегПлПвка +item.warhead_cluster_large.name=БПльшая кластерМая бПегПлПвка +item.warhead_cluster_medium.name=СреЎМяя кластерМая бПегПлПвка +item.warhead_cluster_small.name=Малая кластерМая бПегПлПвка +item.warhead_generic_large.name=БПльшая бПегПлПвка +item.warhead_generic_medium.name=СреЎМяя бПегПлПвка +item.warhead_generic_small.name=Малая бПегПлПвка +item.warhead_incendiary_large.name=БПльшая зажОгательМая бПегПлПвка +item.warhead_incendiary_medium.name=СреЎМяя зажОгательМая бПегПлПвка +item.warhead_incendiary_small.name=Малая зажОгательМая бПегПлПвка item.warhead_mirv.name=ТерЌПяЎерМая бПегПлПвка +item.warhead_mirvlet.name=РГЧ ИН +item.warhead_nuclear.name=ЯЎерМая бПегПлПвка item.warhead_thermo_endo.name=ЭМЎПтерЌОческая бПегПлПвка item.warhead_thermo_exo.name=ЭкзПтерЌОческая бПегПлПвка item.warhead_volcano.name=ТектПМОческая бПегПлПвка -item.fuel_tank_small.name=Малый тПплОвМый бак -item.fuel_tank_medium.name=СреЎМОй тПплОвМый бак -item.fuel_tank_large.name=БПльшПй тПплОвМый бак -item.thruster_small.name=Малый ЎвОгатель -item.thruster_medium.name=СреЎМОй ЎвОгатель -item.thruster_large.name=БПльшПй ЎвОгатель - -item.wand_k.name=СтрПОтельМая палПчка -item.wand_s.name=СтруктурМая палПчка -item.wand_d.name=ОтлаЎПчМая палПчка -item.analyzer.name=АМалОзатПр -item.analysis_tool.name=АМалОзатПр -item.screwdriver.name=Отвёртка -item.screwdriver_desh.name=Деш-Птвёртка -item.chemistry_set.name=ЛабПратПрМая пПсуЎа -item.chemistry_set_boron.name=ЛабПратПрМая пПсуЎа (БПрМПе стеклП) -item.screwdriver.desc=МПжет ОспПльзПваться вЌестП преЎПхраМОтеля... -item.overfuse.name=СОМгулярМая Птвёртка -item.overfuse.desc=ЧтП - -item.steel_helmet.name=СтальМПй шлеЌ -item.steel_plate.name=СтальМПй МагруЎМОк -item.steel_legs.name=СтальМые пПМПжО -item.steel_boots.name=СтальМые бПтОМкО -item.titanium_helmet.name=ТОтаМПвый шлеЌ -item.titanium_plate.name=ТОтаМПвый МагруЎМОк -item.titanium_legs.name=ТОтаМПвые пПМПжО -item.titanium_boots.name=ТОтаМПвые бПтОМкО -item.alloy_helmet.name=КлеЌ Оз прПЎвОМутПгП сплава -item.alloy_plate.name=НагруЎМОк Оз прПЎвОМутПгП сплава -item.alloy_legs.name=ППМПжО Оз прПЎвОМутПгП сплава -item.alloy_boots.name=БПтОМкО Оз прПЎвОМутПгП сплава -item.cmb_helmet.name=КлеЌ Оз сталО АльяМса -item.cmb_plate.name=НагруЎМОк Оз сталО АльяМса -item.cmb_legs.name=ППМПжО Оз сталО АльяМса -item.cmb_boots.name=БПтОМкО Оз сталО АльяМса -item.security_helmet.name=КлеЌ ПхраММОка -item.security_plate.name=НагруЎМОк ПхраММОка -item.security_legs.name=ППМПжО ПхраММОка -item.security_boots.name=БПтОМкО ПхраММОка -item.cobalt_helmet.name=КПбальтПвый шлеЌ -item.cobalt_plate.name=КПбальтПвый МагруЎМОк -item.cobalt_legs.name=КПбальтПвые пПМПжО -item.cobalt_boots.name=КПбальтПвые бПтОМкО -item.starmetal_helmet.name=КлеЌ Оз звёзЎМПгП Ќеталла -item.starmetal_plate.name=НагруЎМОк Оз звёзЎМПгП Ќеталла -item.starmetal_legs.name=ППМПжО Оз звёзЎМПгП Ќеталла -item.starmetal_boots.name=БПтОМкО Оз звёзЎМПгП Ќеталла -item.dnt_boots.name=ЎаеМайтрОевые бПтОМкО -item.dnt_legs.name=ЎОМейтрПМПвые пПМПжО -item.dnt_helmet.name=ЎОМПтрПМОЌу шлеЌ -item.dnt_plate.name=ЎОМейтрПЌы МагруЎМОк -item.dns_boots.name=БПтОМкО DNT-НаМПкПстюЌа -item.dns_legs.name=ППМПжО DNT-НаМПкПстюЌа -item.dns_helmet.name=КлеЌ DNT-НаМПкПстюЌа -item.dns_plate.name=НагруЎМОк DNT-НаМПкПстюЌа -item.zirconium_legs.name=ЊОркПМОевые штаМы -item.robes_boots.name=ППлевые бПтОМкО -item.robes_helmet.name=ППвсеЎМевМая тПлстПвка с капюшПМПЌ -item.robes_legs.name=ППвсеЎМевМые брюкО -item.robes_plate.name=ППвсеЎМевМая кПфта - -item.steel_sword.name=СтальМПй Ќеч -item.steel_pickaxe.name=СтальМая кОрка -item.steel_axe.name=СтальМПй тПпПр -item.steel_shovel.name=СтальМая лПпата -item.steel_hoe.name=СтальМая ЌПтыга -item.titanium_sword.name=ТОтаМПвый Ќеч -item.titanium_pickaxe.name=ТОтаМПвая кОрка -item.titanium_axe.name=ТОтаМПвый тПпПр -item.titanium_shovel.name=ТОтаМПвая лПпата -item.titanium_hoe.name=ТОтаМПвая ЌПтыга -item.alloy_sword.name=Меч Оз прПЎвОМутПгП сплава -item.alloy_pickaxe.name=КОрка Оз прПЎвОМутПгП сплава -item.alloy_axe.name=ТПпПр Оз прПЎвОМутПгП сплава -item.alloy_shovel.name=ЛПпата Оз прПЎвОМутПгП сплава -item.alloy_hoe.name=МПтыга Оз прПЎвОМутПгП сплава -item.cmb_sword.name=Меч Оз сталО АльяМса -item.cmb_pickaxe.name=КОрка Оз сталО АльяМса -item.cmb_axe.name=ТПпПр Оз сталО АльяМса -item.cmb_shovel.name=ЛПпата Оз сталО АльяМса -item.cmb_hoe.name=МПтыга Оз сталО АльяМса -item.elec_sword.name=ЭлектрПЎубОМка -item.elec_pickaxe.name=УЎарМый бур -item.elec_axe.name=ЭлектрПпОла -item.elec_shovel.name=СпОральМый бур -item.desh_sword.name=Меч Оз рабПчегП сплава -item.desh_pickaxe.name=КОрка Оз рабПчегП сплава -item.desh_axe.name=ТПпПр Оз рабПчегП сплава -item.desh_shovel.name=ЛПпата Оз рабПчегП сплава -item.desh_hoe.name=МПтыга Оз рабПчегП сплава -item.cobalt_sword.name=КПбальтПвый Ќеч -item.cobalt_pickaxe.name=КПбальтПвая кОрка -item.cobalt_axe.name=КПбальтПвый тПпПр -item.cobalt_shovel.name=КПбальтПвая лПпата -item.cobalt_hoe.name=КПбальтПвая ЌПтыга -item.cobalt_decorated_axe.name=ДекПрОрПваММый кПбальтПвый тПпПр -item.cobalt_decorated_hoe.name=ДекПрОрПваММая кПбальтПвая ЌПтыга -item.cobalt_decorated_pickaxe.name=ДекПрОрПваММая кПбальтПвая кОрка -item.cobalt_decorated_shovel.name=ДекПрОрПваММая кПбальтПвая лПпата -item.cobalt_decorated_sword.name=ДекПрОрПваММый кПбальтПвый Ќеч -item.starmetal_axe.name=ТПпПр Оз звёзЎМПгП Ќеталла -item.starmetal_hoe.name=МПтыга Оз звёзЎМПгП Ќеталла -item.starmetal_pickaxe.name=КОрка Оз звёзЎМПгП Ќеталла -item.starmetal_shovel.name=ЛПпата Оз звёзЎМПгП Ќеталла -item.starmetal_sword.name=Меч Оз звёзЎМПгП Ќеталла -item.centri_stick.name=ЊеМтрОфуга Ма палке -item.smashing_hammer.name=УбПйМый ЌПлПт -item.drax.name=Терра-бур -item.drax_mk2.name=УсОлеММый терра-бур -item.drax_mk3.name=КрабОЎОевый терра-бур -item.meteorite_sword.name=МетеПрОтПвый Ќеч -item.meteorite_sword_seared.name=МетеПрОтПвый Ќеч (ОпалеММый) -item.meteorite_sword_reforged.name=МетеПрОтПвый Ќеч (ПерекПваММый) -item.meteorite_sword_hardened.name=МетеПрОтПвый Ќеч (ЗакалёММый) -item.meteorite_sword_alloyed.name=МетеПрОтПвый Ќеч (ЛегОрПваММый) -item.meteorite_sword_machined.name=МетеПрОтПвый Ќеч (МехаМОческО ПбрабПтаММый) -item.meteorite_sword_treated.name=МетеПрОтПвый Ќеч (ОбрабПтаММый) -item.meteorite_sword_etched.name=МетеПрОтПвый Ќеч (ГравОрПваММый) -item.meteorite_sword_bred.name=МетеПрОтПвый Ќеч (РазвеЎёММый) -item.meteorite_sword_irradiated.name=МетеПрОтПвый Ќеч (ОблучёММый) -item.meteorite_sword_fused.name=МетеПрОтПвый Ќеч (СплавлеММый) -item.meteorite_sword_baleful.name=МетеПрОтПвый Ќеч (ЗлПвещОй) -item.crucible.name="ГПрМОлП Палача" -item.bismuth_pickaxe.name=ВОсЌутПвая кОрка -item.bismuth_axe.name=ВОсЌутПвый тПпПр -item.chlorophyte_axe.name=ХлПрПфОтПвый тПпПр -item.mese_axe.name=Месе тПпПр -item.volcanic_axe.name=ЛОтПй тПпПр - -tile.red_cable.name=ПрПвПЎ Оз красМПй ЌеЎО -tile.red_cable_paintable.name=ОкрашОваеЌый прПвПЎ Оз красМПй ЌеЎО -tile.red_cable_classic.name=ПрПвПЎ Оз красМПй ЌеЎО (Старый) -tile.red_connector.name=ЭлектрОческОй кПММектПр - -tile.block_meteor.name=БлПк ЌетеПрОта -tile.block_meteor_broken.name=РазбОтый блПк ЌетеПрОта -tile.block_meteor_cobble.name=МетеПрОтМый булыжМОк -tile.block_meteor_molten.name=ГПрячОй ЌетеПрОтМый булыжМОк -tile.block_meteor_treasure.name=БлПк ЌетеПрОтМых сПкрПвОщ -tile.meteor_polished.name=ППлОрПваММый ЌетеПрОтМый блПк -tile.meteor_brick.name=МетеПрОтМые кОрпОчО -tile.meteor_brick_mossy.name=ЗаЌшелые ЌетеПрОтМые кОрпОчО -tile.meteor_brick_cracked.name=ТресМувшОе ЌетеПрОтМые кОрпОчО -tile.meteor_brick_chiseled.name=ВысечеММые ЌетеПрОтМые кОрпОчО -tile.meteor_pillar.name=МетеПрОтМый стПлб -tile.meteor_spawner.name=СбПрщОк кОберкрабПв -tile.meteor_battery.name=ГеМератПр статОческПгП электрОчества Оз звезЎМПгП Ќеталла -tile.glyphid_base.name=БлПк улья глОфОЎПв -tile.glyphid_spawner.name=СпавМер улья глОфОЎПв -tile.ore_tektite_osmiridium.name=ПереЌешаММый с ПсЌОрОЎОеЌ ТектОт -tile.tektite.name=ТектОт - -item.cape_radiation.name=Плащ (РаЎОацОя) -item.cape_gasmask.name=Плащ (ПрПтОвПгаз) -item.cape_schrabidium.name=Плащ (КрабОЎОй) -item.cape_hidden.name=Скрытый плащ -item.card_aos.name=ПОкПвый туз -item.card_qos.name=КПрПлева пОк - -tile.machine_converter_he_rf.name=КПМвертер эМергОО HE в RF -tile.machine_converter_rf_he.name=КПМвертер эМергОО RF в HE -tile.machine_transformer.name=ТраМсфПрЌатПр 10k-20Гц -tile.machine_transformer_dnt.name=ТраМсфПрЌатПр ДНТ-20Гц -tile.machine_transformer_20.name=ТраМсфПрЌатПр 10k-1Гц -tile.machine_transformer_dnt_20.name=ТраМсфПрЌатПр ДНТ-1Гц - -tile.vent_chlorine.name=ХлПрМый клапаМ -tile.vent_cloud.name=ВПзЎушМый клапаМ с ПблакПЌ -tile.vent_pink_cloud.name=ВПзЎушМый клапаМ с рПзПвыЌ ПблакПЌ -tile.vent_chlorine_seal.name=ХлПрМый уплПтМОтель -tile.chlorine_gas.name=ХлПр -item.chlorine_pinwheel.name=ХлПрМая вертушка - -tile.absorber.name=ППглПтОтель раЎОацОО -tile.absorber_red.name=ПрПЎвОМутый пПглПтОтель раЎОацОО -tile.absorber_green.name=УсПвершеМствПваММый пПглПтОтель раЎОацОО -tile.absorber_pink.name=ЭлОтМый пПглПтОтель раЎОацОО -tile.decon.name=ОбеззаражОватель ОгрПка -tile.machine_amgen.name=ГеМератПр Ма фПМПвПй раЎОацОО -tile.machine_geo.name=ГеПтерЌальМый геМератПр -tile.machine_minirtg.name=РаЎОПОзПтПпМая ячейка - -item.schrabidium_hammer.name=КрабОЎОевый ЌПлПт -item.shimmer_sledge.name=ОтлОтая кувалЎа -item.shimmer_axe.name=ОтлОтый тПпПр -item.euphemium_stopper.name=ОграМОчОтель -item.matchstick.name=СпОчка -item.mech_key.name=БПльшПй серебряМый ключ -item.mech_key.desc=ОМ пульсОрует эМергОей. -item.balefire_and_steel.name=Жар-ПгМОвП -item.remote.name=СлПЌаММый пульт ЎОстаМцОПММПгП управлеМОя -item.diamond_gavel.name=АлЌазМый ЌПлПтПк -item.lead_gavel.name=СвОМцПвый ЌПлПтПк -item.wood_gavel.name=ДеревяММый ЌПлПтПк -item.mese_gavel.name=Месе ЌПлПтПк - -item.shimmer_head.name=Тяжелая гПлПвка ЌПлПта -item.shimmer_axe_head.name=ТяжелПе лезвОе тПпПра -item.shimmer_handle.name=УсОлеММая пПлОЌерМая ручка - -item.redcoil_capacitor.name=КрасМПкатушечМый кПМЎеМсатПр -item.euphemium_capacitor.name=ЭвфеЌОевый кПМЎеМсатПр -item.euphemium_capacitor.desc=ППзвПляет пассОвМП рассеОвать МакПплеММую пПлПжОтельМую эМергОю. -item.detonator.name=ДетПМатПр -item.detonator_multi.name=МультО-ЎетПМатПр -item.detonator_laser.name=ЛазерМый ЎетПМатПр -item.detonator_deadman.name=ДетПМатПр Ќертвеца -item.detonator_de.name=Взрывчатка Ќертвеца -item.crate_caller.name=ЗапрПсчОк пПставкО прОпасПв -item.bomb_caller.name=УстрПйствП Ўля ПбПзМачеМОя авОауЎара -item.meteor_remote.name=УстрПйствП Ўля вызПва ЌетеПрОтПв -item.launch_code.name=КПЎ запуска -item.launch_code_piece.name=КусПк кПЎа запуска -item.launch_key.name=Ключ запуска - -item.ingot_hes.name=ВысПкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва -item.ingot_les.name=НОзкППбПгащеММый слОтПк шрабОЎОевПгП тПплОва -item.nugget_hes.name=ВысПкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва -item.nugget_les.name=НОзкППбПгащеММый саЌПрПЎПк шрабОЎОевПгП тПплОва - -item.pellet_schrabidium.name=ЧОстая шрабОЎОевая Ватцз-пеллета -item.pellet_hes.name=ВысПкППбПгащеММая шрабОЎОевая Ватцз-пеллета -item.pellet_mes.name=СреЎМеПбПгащеММая шрабОЎОевая Ватцз-пеллета -item.pellet_les.name=НОзкППбПгащеММая шрабОЎОевая Ватцз-пеллета -item.pellet_beryllium.name=БерОллОевая заЌеЎлОтельМая-пеллета -item.pellet_neptunium.name=НептуМОевая Ватцз-пеллета -item.pellet_lead.name=СвОМцПвая пеллета -item.pellet_advanced.name=УлучшОтель прПОзвПЎОтельМПстО Ватцз - +item.waste_mox.name=ОбеЎМеММПе МОКС-тПплОвП +item.waste_natural_uranium.name=ОбеЎМеММПе прОрПЎМПе ураМПвПе тПплОвП +item.waste_plate_mox.name=ОбеЎМёММая МОКС-тПплОвМая пластОМа +item.waste_plate_pu238be.name=ОбеЎМёММая плутПМОй-238-берОллевая тПплОвМая пластОМа +item.waste_plate_pu239.name=ОбеЎМёММая высПкППбПгащеММая плутПМОевая-239 тПплОвМая пластОМа +item.waste_plate_ra226be.name=ОбеЎМёММая раЎОй-226-берОллевая тПплОвМая пластОМа +item.waste_plate_sa326.name=ОбеЎМёММая высПкППбПгащеММая шрабОЎОй-326 тПплОвМая пластОМа +item.waste_plate_u233.name=ОбеЎМёММая высПкППбПгащеММая ураМ-233 тПплОвМая пластОМа +item.waste_plate_u235.name=ОбеЎМёММая высПкППбПгащеММая ураМ-235 тПплОвМая пластОМа +item.waste_plutonium.name=ОбеЎМеММПе плутПМОевПе тПплОвП +item.waste_schrabidium.name=ОбеЎМеММПе шрабОЎОевПе тПплОвП +item.waste_thorium.name=ОбеЎМеММПе тПрОевПе тПплОвП +item.waste_u235.name=ОбеЎМеММПе ураМ-235 тПплОвП +item.waste_u233.name=ОбеЎМеММПе ураМ-233 тПплОвП +item.waste_uranium.name=ОбеЎМеММПе ураМПвПе тПплОвП +item.waste_zfb_mox.name=ОбеЎМеММПе ЊТС МОКС-тПплОвП +item.watch.name=СлПЌаММые карЌаММые часы +item.watch.desc=МалеМькОе сОМОе карЌаММые часы.$На стекле есть МескПлькП трещОМ,$О МескПлькП ПскПлкПв Птсутствуют.$ПересталО тОкать в 2:34. item.watz_pellet.boron.name=ППглПщающая Ватцз-пеллета Оз бПра item.watz_pellet.du.name=ППглПщающая Ватцз-пеллета Оз ПбеЎМеММПгП ураМа item.watz_pellet.hes.name=Ватцз-пеллета Оз высПкППбПгащеММПгП шрабОЎОя @@ -5861,915 +4803,1518 @@ item.watz_pellet_depleted.nqd.name=Ватцз-пеллета Оз ПбПгаще item.watz_pellet_depleted.nqr.name=Ватцз-пеллета Оз МакваЎрОО (ОбеЎМеММая) item.watz_pellet_depleted.hen.name=Ватцз-пеллета Оз высПкППбПгащеММПгП МептуМОя (ОбеЎМеММая) item.watz_pellet_depleted.schrabidium.name=Ватцз-пеллета Оз чОстПгП шрабОЎОя (ОбеЎМеММая) - -item.titanium_filter.name=ТОтаМПвый фОльтр -item.deuterium_filter.name=ДейтерОевый фОльтр -item.catalytic_converter.name=КаталОтОческОй кПМвертер - -tile.mud_block.name=ТПксОчМые ПтхПЎы -fluid.mud_fluid=ТПксОчМые ПтхПЎы -tile.rad_lava_block.name=ВулкаМОческая лава -fluid.rad_lava_fluid=ВулкаМОческая лава -item.bucket_mud.name=ВеЎрП тПксОчМых ПтхПЎПв -tile.acid_block.name=КОслПта -fluid.acid_fluid=КОслПта -tile.schrabidic_block.name=КрабОЎОевая кОслПта -fluid.corium_fluid=КПрОуЌ -fluid.volcanic_lava_fluid=ВулкаМОческая лава -tile.volcanic_lava_block.name=ВулкаМОческая лава -item.bucket_acid.name=ВеЎрП кОслПты -tile.toxic_block.name=СтереПтОпМая зелёМая слОзь -fluid.toxic_fluid=СтереПтОпМая зелёМая слОзь -item.bucket_toxic.name=ВеЎрП стереПтОпМПй зелёМПй слОзО -item.bucket_schrabidic_acid.name=ВеЎрП шрабОЎОевПй кОслПты -item.bucket_sulfuric_acid.name=ВеЎрП серМПй кОслПты -item.tank_waste_0.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_1.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_2.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_3.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_4.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_5.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_6.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_7.name=КПМтейМер с ПтхПЎаЌО -item.tank_waste_8.name=КПМтейМер с ПтхПЎаЌО - -item.can_empty.name=Пустая баМка -item.mucho_mango.name=НапОтПк "AriZona Mucho Mango" -item.can_smart.name=ЭМергетОческОй МапОтПк “СЌарт” -item.can_creature.name=ЭМергетОческОй МапОтПк "СуществП" -item.can_redbomb.name=ЭМергетОческОй МапОтПк "КрасМая БПЌба" -item.can_mrsugar.name=БезалкПгПльМый МапОтПк 'ДПктПр Сахар' -item.can_overcharge.name=ПерезаряЎка Delirium XT -item.can_luna.name=ЧерМая Меза ЛуМа - ТеЌМая КПла -item.can_bepis.name=БепОс -item.can_breen.name=ЛОчМый резерв Др>БрОМа -item.bottle_empty.name=Пустая бутылка в фПрЌе бПЌбы -item.bottled_cloud.name=ОблакП в бутылке -item.bottle_nuka.name=Бутылка ЯЎер-кПлы -item.bottle_cherry.name=Бутылка ЯЎер-вОшМО -item.cbt_device.name=CBT-Ўевайс -item.bottle_quantum.name=Бутылка КваМтПвПй ЯЎер-кПлы -item.bottle_sparkle.name=Бутылка С~КПлы -item.bottle_rad.name=Бутылка С~КПлы РАД -item.bottle2_empty.name=Пустая Бутылка -item.bottle2_korl.name=КПрл -item.wild_p.name=ДОкОй П. -item.bottle2_fritz.name=ЀрОцз-КПла -item.bottle2_korl_special.name=Первый КПрл -item.bottle2_fritz_special.name=Первая ЀрОцз-КПла -item.bottle2_sunset.name=СаМсет СарсапарОлла -item.bdcl.name=BDCL -item.chocolate_milk.name=МПлПчМый шПкПлаЎ -item.cap_nuka.name=Крышка -item.cap_quantum.name=Крышка Пт КваМтПвПй ЯЎер-кПлы -item.cap_sparkle.name=Крышка Пт С~КПлы -item.cap_rad.name=Крышка Пт С~КПлы РАД -item.cap_korl.name=Крышка Пт БутылкО КПрла -item.cap_fritz.name=Крышка Пт ЀрОцз-КПлы -item.cap_sunset.name=Крышка Пт СаМсет СарсапарОллы -item.cap_star.name=Крышка Пт СаМсет СарсапарОллы сП звезЎПй -item.ring_pull.name=Ключ-кПльцП -item.ring_starmetal.name=§9КПльцП Оз ЗвёзЎМПгП Ќеталла§r -item.canned_beef.name=КПМсервОрПваММая гПвяЎОМа -item.canned_tuna.name=КПМсервОрПваММый туМец -item.canned_mystery.name=КПМсервы "ТайМа Мяса" -item.canned_pashtet.name=Паштет -item.canned_cheese.name=КПМсервОрПваММый плавлеМый сыр -item.canned_jizz.name=КПМсервОрПваММПе жеребцПвПе ЌПлПкП "ЀлОЌЀлэЌ ИМЎастрОз" -item.canned_milk.name=КПМсервОрПваММая сгущеМка -item.canned_ass.name=КПМсервОрПваММая заЎМОца -item.canned_pizza.name=КПМсервОрПваММая пОцца -item.canned_tube.name=ПОщевПй тюбОк кПсЌПМавта -item.canned_tomato.name=КПМсервОрПваММый тПЌатМый суп -item.canned_asbestos.name=КПМсервОрПваММый асбест -item.canned_bhole.name=КПМсервОрПваММая черМая Ўыра -item.canned_hotdogs.name=КПМсервОрПваММые хПт-ЎПгО -item.canned_leftovers.name=ПрПсрПчеММые кПМсервы -item.canned_yogurt.name=КПМсервОрПваММый йПгурт -item.canned_stew.name=КПМсервы "ТушеМые грОбы" -item.canned_chinese.name=КПМсервОрПваММая кОтайская еЎа -item.canned_oil.name=КПМсервОрПваММПе ЌПтПрМПе ЌаслП -item.canned_fist.name=КПМсервОрПваММый кулак -item.canned_spam.name=КПМсервы “СпаЌ” -item.canned_fried.name=КПМсервОрПваММая жареМая курОца -item.canned_napalm.name=КПМсервОрПваММый МапалЌ -item.canned_diesel.name=КПМсервОрПваММПе ЎОзельМПе тПплОвП -item.canned_kerosene.name=КПМсервОрПваММый керПсОМ -item.canned_recursion.name=КПМсервОрПваММая рекурсОя -item.canned_bark.name=КПМсервы вялеМПй сПсМПвПй кПры -item.spongebob_macaroni.name=СырМые ЌакарПММы "Губка БПб" -item.can_mug.name=MUG Root Beer -item.can_key.name=ВОМтПвПй ключ -item.nugget.name=КурОМый Маггетс -item.marshmallow.name=ЗефОр Ма палПчке -item.cheese.name=Сыр -item.cheese_quesadilla.name=СырМая кесаЎОлья -item.coffee.name=КПфе -item.coffee_radium.name=КПфе с раЎОеЌ -item.cigarette.name=СОгарета ЌаркО "FFI" -item.protection_charm.name=ТалОсЌаМ защОты -item.meteor_charm.name=ТалОсЌаМ Пт ЌетеПрОтПв - -item.canteen_13.name=Ѐляжка УбежОща 13 -item.canteen_vodka.name=СтОльМая фляга -item.canteen_fab.name=ППтрясающая вПЎка -item.fabsols_vodka.name=ВПЎка Fabsol'а -item.wild_p.name=СухПе вОскО "ДОкОй Пегас" - -item.bottle_opener.name=СПбствеММая саЌПЎельМая Пткрывашка Ўля бутылПк - -item.blades_aluminium.name=АлюЌОМОевые лезвОя ОзЌельчОтеля -item.blades_gold.name=ЗПлПтые лезвОя ОзЌельчОтеля -item.blades_iron.name=ЖелезМые лезвОя ОзЌельчОтеля -item.blades_steel.name=СтальМые лезвОя ОзЌельчОтеля -item.blades_titanium.name=ТОтаМПвые лезвОя ОзЌельчОтеля -item.blades_advanced_alloy.name=УсПвершеМствПваММые лезвОя ОзЌельчОтеля -item.blades_combine_steel.name=СтальМые лезвОя ОзЌельчОтеля АльяМса -item.blades_schrabidium.name=КрабОЎОевые лезвОя ОзЌельчОтеля -item.blades_desh.name=Деш-лезвОя ОзЌельчОтеля -item.sawblade.name=ЛезвОе пОлПраЌы -item.drillbit_desh.name=Деш-гПлПвка бура -item.drillbit_desh_diamond.name=Деш-гПлПвка бура (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_hss.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО -item.drillbit_hss_diamond.name=ГПлПвка бура Оз высПкПскПрПстМПй сталО (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_steel.name=ГПлПвка бура Оз сталО -item.drillbit_steel_diamond.name=ГПлПвка бура Оз сталО (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_ferro.name=ГПлПвка бура Оз феррПураМа -item.drillbit_ferro_diamond.name=ГПлПвка бура Оз феррПураМа (с алЌазМыЌ МапылеМОеЌ) -item.drillbit_tcalloy.name=ГПлПвка бура Оз техМецОевПй сталО -item.drillbit_tcalloy_diamond.name=ГПлПвка бура Оз техМецОевПй сталО (с алЌазМыЌ МапылеМОеЌ) - -item.stamp_stone_flat.name=ПлПскОй штаЌп (КаЌеМь) -item.stamp_stone_plate.name=КтаЌп пластОМы (КаЌеМь) -item.stamp_stone_wire.name=КтаЌп прПвПЎа (КаЌеМь) -item.stamp_stone_circuit.name=КтаЌп ЌОкрПсхеЌы (КаЌеМь) -item.stamp_iron_flat.name=ПлПскОй штаЌп (ЖелезП) -item.stamp_iron_plate.name=КтаЌп пластОМы (ЖелезП) -item.stamp_iron_wire.name=КтаЌп прПвПЎа (ЖелезП) -item.stamp_iron_circuit.name=КтаЌп ЌОкрПсхеЌы (ЖелезП) -item.stamp_steel_flat.name=ПлПскОй штаЌп (Сталь) -item.stamp_steel_plate.name=КтаЌп пластОМы (Сталь) -item.stamp_steel_wire.name=КтаЌп прПвПЎа (Сталь) -item.stamp_steel_circuit.name=КтаЌп ЌОкрПсхеЌы (Сталь) -item.stamp_titanium_flat.name=ПлПскОй штаЌп (ТОтаМ) -item.stamp_titanium_plate.name=КтаЌп пластОМы (ТОтаМ) -item.stamp_titanium_wire.name=КтаЌп прПвПЎа (ТОтаМ) -item.stamp_titanium_circuit.name=КтаЌп ЌОкрПсхеЌы (ТОтаМ) -item.stamp_obsidian_flat.name=ПлПскОй штаЌп (ОбсОЎОаМ) -item.stamp_obsidian_plate.name=КтаЌп пластОМы (ОбсОЎОаМ) -item.stamp_obsidian_wire.name=КтаЌп прПвПЎа (ОбсОЎОаМ) -item.stamp_obsidian_circuit.name=КтаЌп ЌОкрПсхеЌы (ОбсОЎОаМ) -item.stamp_schrabidium_flat.name=ПлПскОй штаЌп (КрабОЎООй) -item.stamp_schrabidium_plate.name=КтаЌп пластОМы (КрабОЎООй) -item.stamp_schrabidium_wire.name=КтаЌп прПвПЎа (КрабОЎООй) -item.stamp_schrabidium_circuit.name=КтаЌп ЌОкрПсхеЌы (КрабОЎООй) -item.stamp_desh_circuit.name=КтаЌп ЌОкрПсхеЌы (Деш) -item.stamp_desh_flat.name=ПлПскОй штаЌп (Деш) -item.stamp_desh_plate.name=КтаЌп пластОМы (Деш) -item.stamp_desh_wire.name=КтаЌп прПвПЎа (Деш) -item.stamp_357.name=КтаЌп пулО .357 МагМуЌ -item.stamp_44.name=КтаЌп пулО .44 МагМуЌ -item.stamp_9.name=КтаЌп ЌалПгП калОбра -item.stamp_50.name=КтаЌп бПльшПгП калОбра -item.stamp_desh_357.name=КтаЌп пулО .357 МагМуЌ (Деш) -item.stamp_desh_44.name=КтаЌп пулО .44 МагМуЌ (Деш) -item.stamp_desh_50.name=КтаЌп бПльшПгП калОбра (Деш) -item.stamp_desh_9.name=КтаЌп ЌалПгП калОбра (Деш) - -item.stamp_book.printing1.name=КтаЌп Ўля печатО (СтраМОца 1) -item.stamp_book.printing2.name=КтаЌп Ўля печатО (СтраМОца 2) -item.stamp_book.printing3.name=КтаЌп Ўля печатО (СтраМОца 3) -item.stamp_book.printing4.name=КтаЌп Ўля печатО (СтраМОца 4) -item.stamp_book.printing5.name=КтаЌп Ўля печатО (СтраМОца 5) -item.stamp_book.printing6.name=КтаЌп Ўля печатО (СтраМОца 6) -item.stamp_book.printing7.name=КтаЌп Ўля печатО (СтраМОца 7) -item.stamp_book.printing8.name=КтаЌп Ўля печатО (СтраМОца 8) - -item.part_lithium.name=КПрПбка лОтОевПй пылО -item.part_beryllium.name=КПрПбка берОллОевПй пылО -item.part_carbon.name=КПрПбка угПльМПй пылО -item.part_copper.name=КПрПбка ЌеЎМПй пылО -item.part_plutonium.name=КПрПбка плутПМОевПй пылО -item.part_generic.piston_electric.name=ЭлектрОческОй пПршеМь -item.part_generic.piston_hydraulic.name=ГОЎравлОческОй пПршеМь -item.part_generic.piston_pneumatic.name=ПМевЌатОческОй пПршеМь -item.part_generic.lde.name=ЭлеЌеМт ЌалПй плПтМПстО -item.part_generic.hde.name=ЭлеЌеМт пПвышеММПй прПчМПстО -item.particle_aelectron.name=Капсула с ППзОтрПМПЌ -item.particle_amat.name=Капсула с АМтОЌатерОей -item.particle_aproton.name=Капсула с АМтОпрПтПМПЌ -item.particle_aschrab.name=Капсула с АМтОшрабОЎОеЌ -item.particle_dark.name=Капсула с ТёЌМПй ЌатерОей -item.particle_empty.name=Пустая капсула -item.particle_higgs.name=Капсула с БПзПМПЌ ХОггса -item.particle_muon.name=Капсула с МюПМПЌ -item.particle_sparkticle.name=Капсула сП СпарктОклПЌ -item.particle_strange.name=Капсула сП СтраММыЌ кваркПЌ -item.particle_copper.name=Капсула с ОПМаЌО ЌеЎО -item.particle_lead.name=Капсула с ОПМаЌО свОМца -item.particle_hydrogen.name=Капсула с ОПМаЌО вПЎПрПЎа -item.particle_tachyon.name=Капсула с тахОПМПЌ -item.particle_lutece.name=КвазОчастОца ЛютецОя -item.particle_digamma.name=§cЧастОца ДОгаЌЌа§r - -item.rune_blank.name=Пустая каталОтОческая ЌатрОца -item.rune_isa.name=ОхлажЎающая каталОтОческая ЌатрОца -item.rune_dagaz.name=СбалаМсОрПваММая каталОтОческая ЌатрОца -item.rune_hagalaz.name=Грубая каталОтОческая ЌатрОца -item.rune_jera.name=МультОплОкатОвМая каталОтОческая ЌатрОца -item.rune_thurisaz.name=АЎЎОтОвМая каталОтОческая ЌатрОца - -item.ams_catalyst_blank.name=ПустПй реакцОПММый каталОзатПр -item.ams_catalyst_aluminium.name=АлюЌОМОевый реакцОПММый каталОзатПр -item.ams_catalyst_beryllium.name=БерОллОевый реакцОПММый каталОзатПр -item.ams_catalyst_caesium.name=ЊезОевый реакцОПММый каталОзатПр -item.ams_catalyst_cerium.name=ЊерОевый реакцОПММый каталОзатПр -item.ams_catalyst_cobalt.name=КПбальтПвый реакцОПММый каталОзатПр -item.ams_catalyst_copper.name=МеЎМый реакцОПММый каталОзатПр -item.ams_catalyst_euphemium.name=ЭвфеЌОевый реакцОПММый каталОзатПр -item.ams_catalyst_iron.name=ЖелезМый реакцОПММый каталОзатПр -item.ams_catalyst_lithium.name=ЛОтОевый реакцОПММый каталОзатПр -item.ams_catalyst_niobium.name=НОПбОевый реакцОПММый каталОзатПр -item.ams_catalyst_strontium.name=СтрПМцОевый реакцОПММый каталОзатПр -item.ams_catalyst_thorium.name=ТПрОевый реакцОПММый каталОзатПр -item.ams_catalyst_tungsten.name=ВПльфраЌПвый реакцОПММый каталОзатПр -item.ams_catalyst_schrabidium.name=КрабОЎОевый реакцОПММый каталОзатПр -item.ams_catalyst_dineutronium.name=ДОМейтрПМОевый реакцОПММый каталОзатПр -item.ams_focus_blank.name=ПустПй стабОлОзОрующОй фПкус -item.ams_focus_limiter.name=ОграМОчОтельМый стабОлОзОрующОй фПкус -item.ams_focus_limiter.desc=МаксОЌальМая прПОзвПЎОтельМПсть Ўля сЎержОвающегП пПля:$СтаМЎартМПе ПхлажЎеМОе, без бПМуса за эМергОю. -item.ams_focus_booster.name=УсОлОвающОй стабОлОзОрующОй фПкус -item.ams_focus_booster.desc=БПлее слабПе сЎержОвающее пПле О закачка эМергОО в яЎрП:$БПльше вырабПткО тепла, ЎПпПлМОтельМая эМергОя. -item.ams_muzzle.name=ЛучеОспускательМПе ЎулП -item.ams_muzzle.desc=...ПМ Оспускает штукПвОМу с эМергетОческОЌ лучПЌ. -item.ams_lens.name=ЛОМза СтабОлОзатПра -item.ams_core_sing.name=РезПМОрующая сОМгулярМПсть (АМС/РТС ЯЎрП) -item.ams_core_wormhole.name=КрПшечМая червПтПчОМа (АМС/РТС ЯЎрП) -item.ams_core_eyeofharmony.name=ОкП ГарЌПМОО (АМС/РТС ЯЎрП) -item.ams_core_thingy.name=КтукПвОМа (АМС/РТС ЯЎрП) -item.crystal_energy.name=ЭМергетОческОй крОсталл -item.pellet_coolant.name=ОхлажЎающОй кластер -item.thermo_element.name=ТерЌПэлектрОческОй элеЌеМт -item.limiter.name=ОграМОчОтель геМератПра -item.neutrino_lens.name=НейтрОММые лОМзы - -item.linker.name=ТелелОМкер -item.reactor_sensor.name=ДОстаМцОПММый ЎатчОк реактПра -item.oil_detector.name=ДетектПр МефтяМПгП резервуара -item.oil_detector.desc1=ЩелкМОте правПй кМПпкПй ЌышО, чтПбы прПскаМОрПвать Ма МалОчОе МефтО. -item.oil_detector.desc2=ДетектПр МайЎет тПлькП бПлее крупМые залежО. -item.oil_detector.bullseye=НефтяМПй резервуар пряЌП сМОзу! -item.oil_detector.detected=ППблОзПстО ПбМаружеМ резервуар МефтО. -item.oil_detector.noOil=НефтО Ме ПбМаружеМП. -item.pollution_detector.name=ДетектПр загрязМеМОя -item.geiger_counter.name=РучМПй счетчОк Гейгера -item.gas_tester.name=ГазПвый ЎатчОк -item.dosimeter.name=ДПзОЌетр -item.digamma_diagnostic.name=ДОагМПстОка ЎОгаЌЌы -tile.geiger.name=СчетчОк Гейгера -tile.glass_polonium.name=ППлПМОевПе стеклП -item.survey_scanner.name=СкаМер - -item.ore_density_scanner.name=СкаМер плПтМПстО беЎрПкПвПй руЎы -item.ore_density_scanner.excellent=ИзбытПк -item.ore_density_scanner.high=ВысПкОй -item.ore_density_scanner.low=НОзкОй -item.ore_density_scanner.moderate=СреЎМОй -item.ore_density_scanner.poor=БеЎМый -item.ore_density_scanner.veryhigh=ОчеМь высПкОй -item.ore_density_scanner.verypoor=ОчеМь беЎМый - -item.coltan_tool.name=КПлтасс -item.mirror_tool.name=ИМструЌеМт Ўля регулОрПвкО зеркал -item.mirror_tool.linked=ППзОцОя выравМОваМОя устаМПвлеМа! -item.mirror_tool.desc=ЩелкМОте правПй кМПпкПй ЌышО пП бПйлеру, чтПбы запПЌМОть егП пПлПжеМОе.$НажЌОте Ма зеркала, чтПбы пПверМуть Ох в стПрПМу бПйлера -item.rbmk_tool.name=УстрПйствП Ўля сПеЎОМеМОя кПМсПлО РБМК -item.rbmk_tool.desc=Shift+ПКМ пП РБМК чтПбы запПЌМОть егП пПзОцОю,$shift+ПКМ пП кПМсПлО чтПбы сПеЎОМОть! -item.rbmk_tool.linked=ППзОцОя устаМПвлеМа! -item.rbmk_tool.set=РБМК сПеЎОМёМ! -item.bismuth_tool.name=МагМОтМый экстрактПр -item.reacher.name=ВПльфраЌПвые хваталкО -item.power_net_tool.name=АМалОзатПр эМергПсетО -item.anchor_remote.name=УстрПйствП вызПва -item.acetylene_torch.name=АцетОлеМПвая сварПчМая гПрелка -item.blowtorch.name=ПаяльМая лаЌпа - -item.settings_tool.name=УстрПйствП МастрПйкО -copytool.filter=ЀОльтр -copytool.invertRedstone=ИМвертОрПваММый реЎстПуМ -copytool.invertFilter=ИМвертОрПваММый фОльтр -copytool.orientation=ОрОеМтацОя -copytool.pattern0=КрасМая стПрПМа -copytool.pattern1=ОраМжевая стПрПМа -copytool.pattern2=Желтая стПрПМа -copytool.pattern3=ЗелёМая стПрПМа -copytool.pattern4=СОМяя стПрПМа -copytool.pattern5=ЀОПлетПвая стПрПМа - -item.multitool_dig.name=СОлПвая перчатка (ДПбывающОй кПгПть) -item.multitool_silk.name=СОлПвая перчатка (КПгПть шёлкПвПгП касаМОя) -item.multitool_ext.name=СОлПвая перчатка (Извлекатель руЎы) -item.multitool_miner.name=СОлПвая перчатка (ДПбывающОй лазер) -item.multitool_hit.name=СОлПвая перчатка (Кулак) -item.multitool_beam.name=СОлПвая перчатка (Заппер) -item.multitool_sky.name=СОлПвая перчатка (НебесМый разлПЌ) -item.multitool_mega.name=СОлПвая Перчатка (СуперуЎар) -item.multitool_joule.name=СОлПвая Перчатка (ГОгаЎжПуль) -item.multitool_decon.name=СОлПвая Перчатка (ОбеззаражОватель) -item.rubber_gloves.name=ТПлстые резОМПвые перчаткО -item.ballistic_gauntlet.name=БаллОстОческая перчатка - -item.australium_iii.name=УвелОчОтель жОзМО Марк III -item.australium_iv.name=УвелОчОтель жОзМО Марк IV -item.australium_v.name=УвелОчОтель жОзМО Марк V -item.flask_infusion.shield.name=ЭлОксОр защОты - -item.weapon_saw.name=УбОйствП прО сПЎействОО врача item.weapon_bat.name=ЛюбОЌОца РОчарЎа item.weapon_bat_nail.name=КлОше item.weapon_golf_club.name=Клюшка русскПгП баМЎОта -item.weapon_pipe_rusty.name=ППправОтель пПвеЎеМОя item.weapon_pipe_lead.name=РучМПе управлеМОе -item.reer_graar.name=Рер Граар -item.stopsign.name=БПевПй тПпПр Оз зМака СТОП -item.sopsign.name=БПевПй тПпПр Оз зМака С ОП -item.chernobylsign.name=БПевПй тПпПр Оз ЧерМПбыльскПгП преЎупрежЎающегП зМака - -item.letter.name=Экспресс-пПчта -item.polaroid.name=ППларПОЎ -item.shackles.name=ОкПвы -item.glitch.name=Глюк -item.book_secret.name=3-596-50802-9 -item.book_of_.name=КМОга ВагПМПв -item.book_lemegeton.name=ЛеЌегетПМ -item.page_of_.page1.name=СтраМОца 1 -item.page_of_.page2.name=СтраМОца 2 -item.page_of_.page3.name=СтраМОца 3 -item.page_of_.page4.name=СтраМОца 4 -item.page_of_.page5.name=СтраМОца 5 -item.page_of_.page6.name=СтраМОца 6 -item.page_of_.page7.name=СтраМОца 7 -item.page_of_.page8.name=СтраМОца 8 -item.book_guide.name=РукПвПЎствП -item.burnt_bark.name=ОбПжжеММая кПра -item.burnt_bark.desc=КусПк кПры взПрваММПгП зПлПтПгП Ўуба. -item.loot_10.name=ЯщОк с запчастяЌО Пт Ракеты 10-гП разЌера -item.loot_15.name=ЯщОк с запчастяЌО Пт Ракеты 15-гП разЌера -item.loot_misc.name=ОбщОй ящОк с запчастяЌО Пт Ракеты -item.parts_legendary.name=ЛегеМЎарМые запчастО -item.crystal_horn.name=КрОсталльМый рПг -item.crystal_horn.desc=Не МастПящОй рПг. -item.crystal_horn.desc.P11=НастПящОй рПг. -item.crystal_charred.name=ОбуглеММый крОсталл -item.crystal_charred.desc=ВысПкПкачествеММый сОлОкат, слегка ПбПжжеММый. -item.crystal_charred.desc.P11=Также МастПящОй рПг. СтраММП, правЎа? -item.ingot_lanthanium.name=ППлустабОльМый слОтПк лаМтаМа -item.ingot_lanthanium.desc='ЛаМтаМуЌ' -item.ingot_lanthanium.desc.P11=ВППбще лаМтаМуЌ, МП лаЎМП. -item.ingot_actinium.name=СлОтПк актОМОя-227 - -tile.block_foam.name=ПеМа -tile.foam_layer.name=СлПй пеМы -tile.dummy_block.name=БлПк-пустышка -tile.dummy_port.name=БлПк-пустышка (РПзетка) - -item.chopper.name=ВертПлёт-ПхПтМОк -item.spawn_worm.name=Баллс-О-ТрПМ ПрайЌ -item.spawn_ufo.name=МарсОаМскОй кПрабль втПржеМОя - -item.undefined.name=Undefined -item.nothing.name=НОчегП -tile.crystal_virus.name=ТёЌМый крОсталл -tile.crystal_hardened.name=ЗакалеММый теЌМый крОсталл -tile.crystal_pulsar.name=ПульсОрующОй крОсталл -tile.taint.name=ППрча -tile.residue.name=ОблачМый ПсаЎПк -item.powder_cloud.name=ОблачМый ПсаЎПк -tile.cheater_virus.name=ОхлажЎёММый ЭвфеЌОй -tile.cheater_virus_seed.name=НестабОльМый блПк шрабОЎата эвфеЌОя -item.mysteryshovel.name=НепрПчМая лПпата -tile.ntm_dirt.name=Грязь -item.beta.name=БЕТА-ЀУНКЊИИ -item.memory.name=item.null.name - -item.acrylic.desc=Aka: Polymethyl methacrylate -item.acrylic.name=Acrylic Prism -item.ammo_308.name=7.62x51mm NATO Round -item.ammo_45.name=.45 ACP Round -item.ammo_50bmg.desc=§eКрупМПкалОберМый патрПМ 12.7ЌЌ$§eТакОЌО сбОвают саЌПлёты, стрелять$§eОЌО пП люЎяЌ – ЌерзкП. -item.ammo_556_chlorophyte.desc=§o.223 Remington -item.ammo_75bolt.desc=§eГОрПскПпОческОй брПМебПйМый$§eпатрПМ с таМЎеЌМыЌ заряЎПЌ -item.ammo_75bolt_he.desc=§eБрПМебПйМый патрПМ с$§eЌПщМыЌ заряЎПЌ взрывчаткО -item.ammo_75bolt_incendiary.desc=§eБрПМебПйМый разрывМПй патрПМ,$§eМапПлМеММый фПсфПрПвыЌ гелеЌ -item.ammo_folly.desc=§9+ ЗаряЎ МаправлеММПй реакцОО звёзЎМПгП Ќеталла -item.ammo_folly_du.desc=§9+ Howitzer mini nuke shell -item.ammo_folly_nuclear.desc=§9+ Howitzer 17kg Uranium-238 shell -item.ammo_grenade_lunatic.name=40mm Lunatic Grenade -item.ammo_luna_sniper.desc=§eHigh powered DU sabot penetrator sniper round$§eSo hot the projectile can reach escape velocity$§eVery specialized, very deadly, very accurate$ -item.ammo_luna_sniper.name=Lunatic Sniper Round -item.ammo_mirv_special.desc=§9+ 6 Low-yield mini nukes$§9+ 6 Mini nukes$§9+ 6 Tiny tots$§9+ 6 Balefire shells$§f* Sticky! -item.assembly_308.name=7.62x51mm Assembly -item.assembly_45.name=.45 ACP Assembly -item.assembly_luna_sniper.name=Lunatic Sniper Bullet Assembly -item.battery_gun.desc.1=§eOnly charges fast charge compatible items!$§eCharges up to: %sHE to the first compatible item on the hotbar -item.battery_gun.desc.2=§eSingle use only! -item.battery_gun_advanced.name=Advanced Fast Charger Cell -item.battery_gun_basic.name=Basic Fast Charger Cell -item.battery_gun_elite.name=Elite Fast Charger Cell -item.battery_gun_enhanced.name=Enhanced Fast Charger Cell -item.battery_gun_raw.name=Fast Charger Cell Shell -item.battery_sc_berkelium.name=Self-Charging Berkelium-249 Battery -item.betavoltaic_depleted.name=Depleted Betavoltaic Cell -item.betavoltaic_element.name=Betavoltaic Device -item.betavoltaic_strontium.name=Strontium-90 Betavoltaic Cell -item.betavoltaic_tritium.name=Tritium Betavoltaic Cell -item.billet_ac227be.name=Ac227Be Billet -item.billet_actinium.name=Actinium-227 Billet -item.billet_bk247.name=Berkelium-247 Billet -item.billet_bk248.name=Berkelium-248 Billet -item.billet_bk249.name=Berkelium-249 Billet -item.billet_cf252.name=Californium-252 Billet -item.billet_cf252be.name=Cf252Be Billet -item.billet_euphemium.name=Euphemium Billet -item.billet_sa327be.name=Sa327Be Billet -item.billet_tha.name=Activated Thorium Billet -item.billet_u234.name=Uranium-234 Billet -item.black_hole.desc=В цеМтре этПй штукО – сОМгулярМПсть.$ДПстатПчМП бПльшая, чтПбы Пставаться стабОльМПй.$ЭтП – Ме кПМец вселеММПй, МП ЌМе Пт этПгП лучше Ме стаМПвОтся. -item.bolt_staballoy.name=Staballoy Bolt -item.bottle_sr90.name=Бутылка с кПстебПльМыЌ сПкПЌ -item.can_breen.name=ЛОчМый резерв ÐŽÑ€.БрОМа -item.canteen_13.desc.11=Откат: 1 ЌОМута$ВПсстаМавлОвает 2.5 серЎца$ $Вы глПтаете глПтПк Оз вашегП верМПгП глПтка УбежОща ГЛОТОК -item.canteen_13.desc=Откат: 1 ЌОМута$ВПсстаМавлОвает 2.5 серЎца$ $Вы Ўелаете глПтПк Оз вашей верМПй фляжкО УбежОща 13
 -item.canteen_fab.desc=Откат: 2 ЌОМуты$Включает фаб-ЎвОгателО -item.canteen_vodka.desc.11=Откат: 3 ЌОМуты$ТПшМПта I Ма 10 секуМЎ$СОла III Ма 30 секуМЎ$ $Сейчас тебя разсерпуют О переЌПлПтят! -item.canteen_vodka.desc=Откат: 3 ЌОМуты$ТПшМПта I Ма 10 секуМЎ$СОла III Ма 30 секуМЎ$ $На запах – как аМтОсептОк, О Ма вкус – как аМтОсептОк. -item.catalyst_rare.name=РеЎкПзеЌельМый каталОзатПр -item.catalyst_ten.name=TеММесОМПвый каталОзатПр -item.cell_anti_schrabidium.desc=ВМОЌаМОе: взаОЌПЎействОе с ЌатерОей$сПзЎаст пПле ЀПлькваМга! -item.cell_antimatter.desc=ВМОЌаМОе: взаОЌПЎействОе с ЌатерОей$прОвеЎёт к аММОгОляцОО! -item.chronometer_player.name=Biological Chronometer -item.coil_warp.name=Antimass Gravity Manipulation Coil -item.coil_warp_coated.name=FTL Drive Coil with WCo Alloy and Desh Coating -item.core_plut_boosted.name=Plutonium Core with Schrabidium Booster -item.core_uran_boosted.name=Uranium Core with Schrabidium Booster -item.crystal_energy.desc=Densely packed energy powder.$Not edible. -item.custom_core.name=Nuclear Fission Core -item.detonator_de.desc=Взрывается прО паЎеМОО! -item.detonator_deadman.desc=Shift+ПКМ, чтПбы заЎать пПзОцОю,$выбрПсОте Ўля ЎетПМацОО! -item.eye.desc.11=§c"All humans, are afraid of monsters, the monsters they keep inside of them.$§cThey drove the species who are able to expose the monsters in them down the$§cpurgatory underground. There, in the purgatory deep inside the earth where$§cpeople are made, he was born. He hated, and loved, the monster that is$§cforming inside of him more than anyone else. Together with his second$§cmother, he climbed up to the world where the people who have driven him into$§cthe underground live. However, at that time, it was too late. This world$§cabove ground is waiting for its slow death, same as the people who are$§ccontinue to stay there. This world, this surface, is the realm of the dead.$§cAnd this species called humans, they have built for themselves a world of$§ctwilight. There, he met a ghost called 'father'. His second mother, who has$§ccome to this netherworld with him, remained there, while he returned to the$§cpurgatory where he was born. That place, the place where he lives, that$§cpurgatory. That should be the last world of humans."§r -item.eye.desc=It's looking at me despite being closed,$or rather, through me...$into my soul.$It makes me uncomfortable -item.eye.name=Eye? -item.ferrouranium_axe.name=Ferrouranium Axe -item.ferrouranium_boots.name=Ferrouranium Boots -item.ferrouranium_helmet.name=Ferrouranium Helmet -item.ferrouranium_hoe.name=Ferrouranium Hoe -item.ferrouranium_legs.name=Ferrouranium Leggings -item.ferrouranium_pickaxe.name=Ferrouranium Pickaxe -item.ferrouranium_plate.name=Ferrouranium Chestplate -item.ferrouranium_shovel.name=Ferrouranium Shovel -item.ferrouranium_sword.name=Ferrouranium Sword -item.filter_fiberglass.name=Bound Fiberglass Filter -item.five_htp.desc=УбОрает все DRX, СтабОльМПсть Ма 10 ЌОМут -item.fmn.desc=УбОрает все DRX бПлее 2,000mDRX -item.fragment_orichalcum.desc=Gem shard, retains its hardness and$resistance to pressure and heat, but$requires further refinement -item.fragment_orichalcum.name=§6Orichalcum Shard§r -item.fuse.desc=эта штука теперь практОческО беспПлезМа -item.gas_sarin.name=Sarin Gas Tank -item.gas_xenon.name=Xenon Gas Tank -item.gem_orichalcum.desc=High hardness and luster, provides shielding$against pressure and heat fronts -item.gem_orichalcum.name=§6Orichalcum Gem§r -item.goggles_drx.desc=Filters out DRX, moonlight, and other$psionic disruptions infiltrating$the visible light spectrum -item.goggles_drx.name=Psionic Disruption Protection Goggles -item.goggles_night_vision.name=Night Vision Goggles -item.grenade_if_bouncy.desc=§o"Boing!" -item.grenade_if_brimstone.desc=§o"Zoop!" -item.grenade_if_concussion.desc=§o"Oof ouch owie, my bones!" -item.grenade_if_generic.desc=§o"How do you like §r§7them§o apples?" -item.grenade_if_he.desc=§o"You better run, you better take cover!" -item.grenade_if_hopwire.desc=§o"All I ever wished for was a bike that didn't fall over." -item.grenade_if_impact.desc=§o"Tossable boom." -item.grenade_if_incendiary.desc=§o"Flaming wheel of destruction!" -item.grenade_if_mystery.desc=§o"It's a mystery!" -item.grenade_if_null.desc=§ojava.lang.NullPointerException -item.grenade_if_spark.desc.11=§o"31-31-31-31-31-31-31-31-31-31-31-31-31" -item.grenade_if_spark.desc=§o"We can't rewind, we've gone too far." -item.grenade_if_sticky.desc=§o"This one is the booger grenade." -item.grenade_if_toxic.desc=§o"TOXIC SHOCK" -item.grenade_kyiv.name=The Kyiv Special -item.grenade_lunatic.desc.11=§c§o"The Moon dams collapse, flooding you with Lunar light" -item.grenade_lunatic.desc=§o"Here, have some Xanax, you're not you under the influence of DRX." -item.grenade_lunatic.name=Lunatic Grenade -item.grenade_smart.desc="Why did it not blow up????"$§oIf it didn't blow up it means it worked. -item.grenade_stunning.desc=§o"Stop! Hammer time!" -item.grenade_stunning.name=Stun Grenade (BETA) -item.gun_benelli.name=Benelli Autoshotgun -item.gun_benelli_mod.name=Benelli Autoshotgun (Drum Mod) -item.gun_hlr.desc.0="§mDodge§r§7§o Graze this" -item.gun_hlr.desc.1="I'll show you where to shove those spellcard rules, miko." -item.gun_hlr.desc.2="An obstacle has been spotted. Proceeding with extermination." -item.gun_hlr.desc.3="Why must we stand on this impure ground?" -item.gun_hlr.name=Heavy Lunatic Rifle (BETA) -item.gun_kit_1.desc=Repairs all weapons in hotbar by 10% -item.gun_kit_2.desc=Repairs all weapons in hotbar by 50% -item.gun_llr.name=Light Lunatic Rifle -item.gun_lunatic.name=Lunatic Gun (BETA) -item.gun_lunatic.name=Lunatic Gun (BETA) -item.gun_lunatic_marksman.name=Lunatic Marksman Rifle (BETA) -item.gun_m60=M60 Machine Gun -item.gun_mlr.name=Lunatic Rifle -item.gun_moist_nugget.desc=A Mosin-Na...no wait, it's$just a moist nugget. -item.gun_mp40_ammo.name=Submachine Gun Round (DEPRECATED) -item.gun_twr.desc.0=§c"You can't dodge a bullet that's already hit" -item.gun_twr.desc.1="Where's the exit!?"$§c§l"Nowhere" -item.gun_twr.desc.2=§c"I'm not about to have a little fly like you get away" -item.gun_twr.desc.3=§c"Eclipse, eclipse, under the sky!$§cShatter into a million shards of light!" -item.gun_twr.desc.4=§c"One must fall before one must ascend!" -item.gun_twr.desc.5=§c"The entrance, and the exit, are an endless loop." -item.gun_twr.desc.6=§c"Loud, furious$§c"...and signifying nothing as it passes from this world." -item.gun_twr.name=Time Warp Rifle (PLACEHOLDER) -item.gun_uac_carbine.name=UAC Carbine -item.gun_uac_dmr.name=UAC DMR -item.gun_uac_lmg.name=UAC LMG -item.gun_uac_pistol.name=ПОстПлет UAC .45 -item.gun_uac_smg.name=UAC SMG -item.gun_detonator.name=ЛазерМый ЎетПМатПр -item.ingot_bk247.name=Berkelium-247 Ingot -item.ingot_bk248.name=Berkelium-248 Ingot -item.ingot_bk249.name=Berkelium-249 Ingot -item.ingot_cf249.name=Californium-249 Ingot -item.ingot_cf251.name=Californium-251 Ingot -item.ingot_cf252.name=Californium-252 Ingot -item.ingot_cm242.name=Curium-242 Ingot -item.ingot_cm243.name=Curium-243 Ingot -item.ingot_cm244.name=Curium-244 Ingot -item.ingot_cm245.name=Curium-245 Ingot -item.ingot_cm246.name=Curium-246 Ingot -item.ingot_cm247.name=Curium-247 Ingot -item.ingot_cm248.name=Curium-248 Ingot -item.ingot_cm250.name=Curium-250 Ingot -item.ingot_cn285.name=Coperinicium-285 Ingot -item.ingot_cn286.name=Coperinicium-286 Ingot -item.ingot_dineutronium_forged.name=§5Forged Dineutronium Ingot§r -item.ingot_du_dioxide.name=Uranium Dioxide Pellet -item.ingot_es254.name=Einsteinium-254 Ingot -item.ingot_md258.name=Mendelevium-258 Ingot -item.ingot_nbbe.name=Niobium-Beryllium Alloy Ingot -item.ingot_neodymium.name=Neodymium Ingot -item.ingot_niobium_alloy.name=Niobium Refractory Superalloy Ingot -item.ingot_orichalcum.desc=Very high density provides protection$against kinetic force and structural backbone -item.ingot_orichalcum.name=§6Orichalcum Ingot§r -item.ingot_orichalcum_small.desc=Solidified amalgamation, ready$to accept irradiation -item.ingot_orichalcum_small.name=§6Orichalcum Brick§r -item.ingot_orichalcum_small_irr.desc=Neutron irradiation transmutates the$amalgamation, allowing protection$against directed energy -item.ingot_orichalcum_small_irr.name=§6Activated Orichalcum Brick§r -item.ingot_staballoy.desc=Hehe, get it?$§o§nStab§7alloy, because it's an armor penetrator alloy? -item.ingot_staballoy.name=Staballoy Ingot -item.ingot_tha.name=Ingot of Activated Thorium -item.ingot_u234.name=Uranium-234 Ingot -item.ingot_w-co.name=Tungsten-Cobalt Alloy Ingot -item.jetpack_tank.desc=Fills worn jetpack with up to 1000mB of kerosene -item.journal_lunar.name=Lunar Defense Corp Blueprint Folder -item.lunar_kit.name=Lunar Kit -item.med_bag.desc=Full heal, regardless of max health$Removes negative effects -item.nugget_cf252.name=Californium-252 Nugget -item.nugget_cm248.name=Curium-248 Nugget -item.nugget_dineutronium.name=§5Dineutronium Nugget§r -item.nugget_tha.name=Nugget of Activated Thorium -item.nugget_u234.name=Uranium-234 Nugget -item.paa_filter.name=PaA - CMB Watz Filter -item.pack_fdd.name=10-Pack Box of Floppy Disks -item.part_einsteinium.name=Box of Einsteinium-254 Dust -item.particle_graviton.name=Graviton Capsule -item.pellet_antimatter.desc=Very heavy antimatter cluster.$Gets rid of black holes. -item.pellet_australium.name=Australium Watz Pellet -item.pellet_rtg_actinium.name=РИТЭГ-пеллета Оз актОМОя-227 -item.pellet_rtg_berkelium.name=РИТЭГ-пеллета Оз берклОя-248 -item.pellet_solinium.name=Solinum Watz Target Pellet -item.pellet_solinium_laced.name=Euphemium-Laced Solinium Watz Target Pellet -item.pellet_zirconium.name=Zirconium Reflector Pellet -item.pill_iodine.desc=Removes negative effects -item.pill_strontium.desc=Bone §mhurting§r§7 healing pill -item.pill_strontium.name=Strontium Pill -item.plate_armor_du.desc.0=Tier: %s -item.plate_armor_du.desc=Very heavy depleted Uranium armor plate$Originally made for tanks -item.plate_armor_du.name=Tank-Grade DU Armor Plating -item.plate_armor_orichalcum.desc=Standard Lunarian armor for Vijokas$Highly refined, highly pure -item.plate_armor_orichalcum.name=§6Orichalcum Armor Plate§r -item.plate_du_dioxide.name=Uranium Dioxide Compound Plate -item.plate_orichalcum.desc=Numerous forms combined together$to maintain structural integrity$and protection against multiple fronts -item.plate_orichalcum.name=§6Orichalcum Compound Plate§r -item.powder_acrylic.name=Acrylic Compound -item.powder_du_dioxide.name=Uranium Dioxide Powder -item.powder_es254.name=Einsteinium-254 Powder -item.powder_nbbe.name=Niobium-Beryllium Powder -item.powder_niobium_alloy.name=Niobium Refractory Superalloy Powder -item.powder_orichalcum_mix.desc=Blend of high strength elements and$amalgams ready for solidification -item.powder_orichalcum_mix.name=§6Orichalcum Blend§r -item.powder_pu239.name=Plutonium-239 Powder -item.powder_tennessine.desc=§lAAAAAAAAAAAA -item.powder_u235.name=Uranium-235 Powder -item.powder_u238.name=Uranium-238 Powder -item.quantum_clock.name=Quantum Clock (UNFINISHED) -item.radaway.desc=Removes 140 RAD -item.radaway_flush.desc=Removes 1000 RAD -item.radaway_strong.desc=Removes 350 RAD -item.radx.desc=Increases radiation resistance by 0.2 (37%) for 3 minutes -item.rbmk_fuel_ac227be.name=Ac227Be RBMK Neutron Source -item.rbmk_fuel_cf252be.name=Cf252Be RBMK Neutron Source -item.rbmk_fuel_sa327be.name=Sa327Be RBMK Neutron Source -item.rbmk_pellet_ac227be.name=Ac227Be Spent Neutron Source Pellet -item.rbmk_pellet_cf252be.name=Cf252Be Spent Neutron Source Pellet -item.rbmk_pellet_sa327be.name=Sa327Be Spent Neutron Source Pellet -item.record.nmj.desc=Valve - Nuclear Mission Jam/Something Secret Steers Us -item.robot_skeleton.name=Robotic Skeleton -item.rod_dual_tha.name=Activated Thorium Dual Rod -item.rod_dual_u234.name=Uranium-234 Dual Rod -item.rod_quad_tha.name=Activated Thorium Quad Rod -item.rod_quad_u234.name=Uranium-234 Quad Rod -item.rod_tha.name=Activated Thorium Rod -item.rod_u234.name=Uranium-234 Rod -item.saturnite_filter.name=Saturnite - Desh Watz Filter -item.screwdriver_chad.name=High-Grade Screwdriver -item.shield.0.name=Riot Shield -item.shield.1.name=Heavy Duty Shield -item.shield.2.name=Combat Shield -item.shield.3.name=Superheavy Combat Shield -item.shrimp.name=Shrimp -item.shrimp_atomic.name=Atomic Shrimp -item.shrimp_fry.desc=§oberigooo... -item.shrimp_fry.name=shrimp fry -item.silicon_lump.name=Lump of Unprocessed Silicon -item.spawn_robot.name=Heavy Duty Combat Droid "Dark Trooper" -item.stamp_desh_disc.name=Disc Stamp (Desh) -item.stamp_ferrouranium_circuit.name=Circuit Stamp (Ferrouranium) -item.stamp_ferrouranium_disc.name=Disc Stamp (Ferrouranium) -item.stamp_ferrouranium_flat.name=Flat Stamp (Ferrouranium) -item.stamp_ferrouranium_plate.name=Plate Stamp (Ferrouranium) -item.stamp_ferrouranium_wire.name=Wire Stamp (Ferrouranium) -item.stamp_iron_disc.name=Disc Stamp (Iron) -item.stamp_obsidian_disc.name=Disc Stamp (Obsidian) -item.stamp_schrabidium_disc.name=Disc Stamp (Schrabidium) -item.stamp_steel_disc.name=Disc Stamp (Steel) -item.stamp_stone_disc.name=Disc Stamp (Stone) -item.stamp_titanium_disc.name=Disc Stamp (Titanium) -item.storage_hdd.name=Hard Disk Drive -item.storage_hdd_broken.desc=That fancy looking SSD is starting to look real nice, isn't it? -item.storage_hdd_broken.name=Broken Hard Disk Drive -item.storage_hdd_dead.desc=The mechanical parts are damaged, data cannot be read or written, it can be repaired however -item.storage_hdd_dead.name=Dead Hard Disk Drive -item.storage_hdd_raw.desc=No, you can't use it as a pizza cutter -item.storage_hdd_raw.name=Hard Drive Platter -item.storage_magnetic_cassette.name=Cassette Tape -item.storage_magnetic_fdd.name=3.5" 1.44mb Floppy Disk -item.storage_magnetic_fdd_tainted.desc10=Some kind of compression used$Get development on a decompression algorithm -item.storage_magnetic_fdd_tainted.desc11=§kWho came first, God or man?$§kIf man, than he shall create God$§kHe who stare into the abyss,$§kshall see the abyss stare back at he$§kBut who truly came first? -item.storage_magnetic_fdd_tainted.desc12=ጀπ᜞ ΌηχαΜῆς Ξεός -item.storage_magnetic_fdd_tainted.desc13=DEVICE USES UNIDENTIFIED POWER SOURCE$FURTHER RESEARCH REQUIRED -item.storage_magnetic_fdd_tainted.desc14=TOP PRIORITY: DISPOSE -item.storage_magnetic_fdd_tainted.desc15=Request more researchers$from Omega-12 to work on this -item.storage_magnetic_fdd_tainted.desc16=TOP PRIORITY: DEVELOP -item.storage_magnetic_fdd_tainted.desc17=ϝ -item.storage_magnetic_fdd_tainted.desc18=§l4444 -item.storage_magnetic_fdd_tainted.desc19=The disc has a curious label: -item.storage_magnetic_fdd_tainted.desc1=MARKED FOR SECURE DISPOSAL -item.storage_magnetic_fdd_tainted.desc20=It also appears to have a custom housing, it is permanently set to write-protect mode -item.storage_magnetic_fdd_tainted.desc2=ACCESS COMPLETELY RESTRICTED -item.storage_magnetic_fdd_tainted.desc3=COMPRESSED USING PROPREITARY SOFTWARE$Serial is in archive -item.storage_magnetic_fdd_tainted.desc4=CLASSIFICATION LEVEL: TOP SECRET$CATEGORY: RESEARCH$STATUS: IN-DEVELOPMENT$PURPOSE: UNKNOWN -item.storage_magnetic_fdd_tainted.desc5=CLASSIFICATION LEVEL: TOP SECRET$CATEGORY: PERMANENT ARCHIVE$ACCESS DATE: NEVER$CONTENGENCY PROTOCOL: DESTROY -item.storage_magnetic_fdd_tainted.desc6=AUXILIARY DEVELOPMENT REQUIRED:$BIO-NEURAL PROCESSORS -item.storage_magnetic_fdd_tainted.desc7=EST. COST: §mINDETERMINATE$§nTOO HIGH -item.storage_magnetic_fdd_tainted.desc8=CATEGORY: BLUEPRINT$Unknown design for unknown purpose -item.storage_magnetic_fdd_tainted.desc9=REQUIRED DIMENSIONS: INDETERMINATE -item.storage_magnetic_fdd_tainted.name=Peculiar Floppy Disk -item.storage_magnetic_r_to_r.name=Reel to Reel Tape -item.storage_magnetic_r_to_r_broken.desc=Should've seen that one coming -item.storage_magnetic_r_to_r_broken.name=Broken Reel to Reel Tape -item.storage_magnetic_raw.desc=The basis of all magnetic storage mediums, doesn't work too well as actual tape -item.storage_magnetic_raw.name=Magnetic Tape -item.storage_magnetic_raw_disc.desc=It will need a housing -item.storage_magnetic_raw_disc.name=Magnetic Disk -item.storage_magnetic_raw_reel.desc=A single one won't do you much good... or will it? -item.storage_magnetic_raw_reel.name=Reel of Magnetic Tape -item.storage_optical_bd.name=Blu-Ray Disc -item.storage_optical_cd.name=Compact Disc -item.storage_optical_dvd.name=Digital Versatile Disc -item.storage_optical_raw.desc=Clearer than glass -item.storage_optical_raw.name=Raw Optical Disc -item.storage_ssd.name=Solid State Drive -item.storage_ssd_raw_tier_1.desc=Upgradable -item.storage_ssd_raw_tier_1.name=Raw Flash Storage Device -item.storage_usb.name=Universal Serial Bus Flash Drive -item.syringe_antidote.desc=Removes all potion effects -item.syringe_awesome.desc=Every good effect for 50 seconds -item.syringe_metal_medx.desc=Resistance III for 4 minutes -item.syringe_metal_psycho.desc=Resistance I for 2 minutes$Strength I for 2 minutes -item.syringe_metal_stimpak.desc=Heals 2.5 hearts -item.syringe_metal_super.desc=Heals 25 hearts$Slowness I for 10 seconds -item.syringe_poison.desc=Deadly -item.syringe_taint.desc=Tainted I for 60 seconds$Nausea I for 5 seconds$Cloud damage + taint = tainted heart effect -item.tank_hydrogen.name=Hydrogen Reserve Tank -item.tank_hydrogen_large.name=Hydrogen Fuel Tank -item.test_nuke_tier1_bullet.name=Uranium-235 Projectile (Tier 1) -item.test_nuke_tier1_target.name=Subcritical Uranium-235 Target (Tier 1) -item.thruster_dfc.desc=Utilizes a compact Dark Fusion Core to gain$enough energy to approach infinity -item.thruster_dfc.name=Dark Fusion Space Drive -item.thruster_nuclear.desc=Powered by compact low-power nuclear reactor$to superheat hydrogen into a plasma$for subluminal space travel -item.thruster_nuclear_adv.desc=Powered by high-power nuclear reactor$to superheat hydrogen into a plasma$for subluminal space travel -item.thruster_nuclear_adv.name=LV-N High-Power Nuclear Rocket Engine -item.thruster_nuclear_liq.desc=Uses high-power liquid fuel reactor for$higher efficiency fuel consumption and$heat production -item.thruster_nuclear_liq.name=LV-N Liquid Fueled Nuclear Rocket Engine -item.thruster_warp.desc=Uses antimass coils to manipulate space-time$to allow for superluminal speed$Works better when has direct line of sight$with another nacelle -item.thruster_warp.name=FTL Drive Nacelle -item.upgrade_clock_1.name=Atomic Clock Accuracy Upgrade Mk.I -item.upgrade_clock_2.name=Atomic Clock Accuracy Upgrade Mk.II -item.upgrade_clock_3.name=Atomic Clock Accuracy Upgrade Mk.III -item.upgrade_clock_4.name=Atomic Clock Quantum Accuracy Upgrade -item.wafer_diamond.name=Diamond Semiconductor Wafer -item.wafer_gold.name=Gold Semiconductor Wafer -item.wafer_lapis.name=Lapis Lazuli Semiconductor Wafer -item.wafer_silicon.name=Silicon Semiconductor Wafer -item.wafer_spark.name=Spark Semiconductor Wafer -item.warhead_biological.name=Biological Warhead -item.warhead_chemical.name=Chemical Warhead -item.warhead_fusion.name=Pure Fusion Warhead -item.warhead_gravimetric.name=Gravimetric Warhead -item.wire_glass.name=Fiber Optic Wire -item.wire_glass.name=Optical Fiber -item.wire_glass_insulated.name=Insulated Optical Fiber +item.weapon_pipe_rusty.name=ППправОтель пПвеЎеМОя +item.weapon_saw.name=УбОйствП прО сПЎействОО врача +item.weaponized_starblaster_cell.name=§cСЌПМтОрПваММая эМергетОческая ячейка ЗвезЎМПгП бластера§r +item.wd40.name=VT-40 +item.wild_p.name=СухПе вОскО "ДОкОй Пегас" +item.wings_limp.name=ХрПЌые крылья +item.wings_murk.name=МрачМые крылья +item.wire_advanced_alloy.name=СверхпрПвПЎМОк +item.wire_aluminium.name=АлюЌОМОевый прПвПЎ +item.wire_copper.name=МеЎМый прПвПЎ +item.wire_dense.name=ПлПтМый прПвПЎ Оз %s +item.wire_fine.name=ПрПвПЎ Оз %s +item.wire_gold.name=ЗПлПтПй прПвПЎ +item.wire_magnetized_tungsten.name=4000K ВысПкПтеЌпературМый прПвПЎМОк +item.wire_red_copper.name=ПрПвПЎ Оз красМПй ЌеЎО +item.wire_schrabidium.name=КрабОЎОевый прПвПЎ +item.wire_tungsten.name=ВПльфраЌПвый прПвПЎ +item.wiring_red_copper.name=МПтПк прПвПЎа +item.wood_gavel.name=ДеревяММый ЌПлПтПк +item.wrench.name=ГазПвый ключ +item.wrench_archineer.name=ГаечМый ключ ОМжеМера +item.wrench_flipped.name=ЛезвОе Ма гаечМПЌ ключе +item.xanax.name=Препарат "НАКСА" прПтОв ЎОгаЌЌы item.xanax.desc=СМОЌает 500mDRX -potion.hbm_fragile=Fragility -potion.hbm_hollow=Hollow -potion.hbm_paralysis=Paralysis -potion.hbm_perforated=Perforated -potion.hbm_unconscious=Subconscious Mind +item.zirconium_legs.name=ЊОркПМОевые штаМы -singGen.isRunning.false=Idle -singGen.isRunning.true=Active +itemGroup.tabBlocks=РуЎы О блПкО NTM +itemGroup.tabConsumable=РасхПЎМые ЌатерОалы О сМаряжеМОе NTM +itemGroup.tabControl=ТПплОвП О элеЌеМты ЌехаМОзЌПв NTM +itemGroup.tabMachine=МехаМОзЌы NTM +itemGroup.tabMissile=Ракеты О спутМОкО NTM +itemGroup.tabNuke=БПЌбы NTM +itemGroup.tabParts=Ресурсы О ЎеталО NTM +itemGroup.tabTemplate=КаблПМы NTM +itemGroup.tabTest=ТестПвая вклаЎка NTM +itemGroup.tabWeapon=ОружОе О турелО NTM -storage.desc.con.capacity1=- Pitiful storage capacity -storage.desc.con.exposed=- Exposed to the elements -storage.desc.con.fragile=- Fragile -storage.desc.con.magnet=- Easily wiped by magnets -storage.desc.con.mechanical=- Prone to mechanical failure -storage.desc.con.name=- Dumb name -storage.desc.con.speed1=- Pitiful r/w speed -storage.desc.neu.flash=* Flash Medium -storage.desc.neu.magnetic=* Magnetic medium -storage.desc.neu.mechanical=* Mechanical parts -storage.desc.neu.na=Unfinished storage medium type -storage.desc.neu.optical=* Optical medium -storage.desc.pro.capacity1=+ Very good capacity -storage.desc.pro.cheap_very=+ Extremely cheap -storage.desc.pro.compact=+ Very compact -storage.desc.pro.lifespan1=+ Excellent lifespan -storage.desc.pro.lifespan2=+ Good lifespan -storage.desc.pro.speed1=+ Decent r/w speed -tile.atomic_clock.name=Atomic Clock -tile.balefire.name=Balefire -tile.block_circuit_tier_1.name=Basic Supercomputer Calculation Matrix -tile.block_circuit_tier_2.name=Enhanced Supercomputer Calculation Matrix -tile.block_circuit_tier_3.name=Advanced Supercomputer Calculation Matrix -tile.block_circuit_tier_4.name=Overclocked Supercomputer Calculation Matrix -tile.block_circuit_tier_5.name=High Performance Supercomputer Calculation Matrix -tile.block_circuit_tier_6.name=Spark Supercomputer Calculation Matrix -tile.block_electronium.name=§bBlock of Electronium§r -tile.block_ferrouranium.name=Reinforced Block of Ferrouranium -tile.block_polymer.name=БлПк пПлОЌера +pa.idle=Idle +pa.idle.desc=Idle +pa.running=Running +pa.running.desc=Running +pa.success=Success +pa.success.desc=Success +pa.pause_unloaded=Paused +pa.pause_unloaded.desc=The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded. +pa.crash_defocus=Defocus! +pa.crash_defocus.desc=The particle has lost focus.$Ensure the accelerator has enough quadrupole magnets. +pa.crash_derail=Derail! +pa.crash_derail.desc=The particle has left the accelerator.$Ensure no parts are missing,$and that dipoles are configured correctly. +pa.crash_cannot_enter=Denied! +pa.crash_cannot_enter.desc=The particle tried to enter$part of the accelerator, but couldn't.$Ensure all parts are oriented correctly. +pa.crash_nocool=No cooling! +pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoroethyl. +pa.crash_nopower=No power! +pa.crash_nopower.desc=The particle has entered an unpowered$part of the accelerator. Ensure all parts$receive power, and that the$power supply is sufficient. +pa.crash_nocoil=No coils! +pa.crash_nocoil.desc=The particle has entered a dipole$or quadrupole which lacks coils.$Install coils to allow this part to work. +pa.crash_overspeed=Overspeed! +pa.crash_overspeed.desc=The particle has entered a dipole$or quadrupole, while its speed exceeded$the coil's rating. Install higher$tier coils, or configure the dipoles$to leave the accelerator ring sooner. +pa.crash_norecipe=No recipe! +pa.crash_norecipe.desc=The particle entered a detector$with an invalid set of inputs.$Ensure the particle source inputs$match a valid recipe. +pa.crash_underspeed=Underspeed! +pa.crash_underspeed.desc=The particle entered a detector$with insufficient speed to perform$the current recipe. Ensure the$accelerator is configured$correctly for the recipe. + +potion.hbm_bang=! ! ! +potion.hbm_death=АстПльфПфОкацОя +potion.hbm_lead=ОтравлеМОе свОМцПЌ +potion.hbm_mutation=ЗаражёММПе пПрчей серЎце +potion.hbm_phosphorus=ЀПсфПрМые ПжПгО +potion.hbm_potionsickness=ППслезельевая бПлезМь +potion.hbm_radaway=АМтОраЎОМ +potion.hbm_radiation=ИзлучеМОе +potion.hbm_radx=РаЎ-X +potion.hbm_stability=СтабОльМПсть +potion.hbm_taint=ППрча +potion.hbm_telekinesis=! ! ! + +radar.clearMap=ОчОстОть карту +radar.detectMissiles=ОбМаружеМОе ракет +radar.detectPlayers=ОбМаружеМОе ОгрПкПв +radar.detectShells=ОбМаружеМОе сМаряЎПв +radar.redMode=РежОЌ красМПгП каЌМя$ВключёМ: СОгМал реЎстПуМа базОруется Ма ЎальМПстО$ВыключеМ: СОгМал реЎстПуМа базОруется Ма урПвМе +radar.showMap=ППказать карту +radar.smartMode=УЌМый режОЌ$ВыхПЎ реЎстПуМа ОгМПрОрует вПсхПЎящОе ракеты +radar.toggleGui=ПереключОть ОМтерфейс + +radar.target.abm=АМтОбаллОстОческая ракета +radar.target.custom10=Ракета 10 разЌера +radar.target.custom1015=Ракета 10/15 разЌера +radar.target.custom15=Ракета 15 разЌера +radar.target.custom1520=Ракета 15/20 разЌера +radar.target.custom20=Ракета 20 разЌера +radar.target.doomsday=Ракета суЎМПгП ЎМя +radar.target.shuttle=КПсЌОческОй шаттл Reliant Robin +radar.target.tier0=Ракета 0-гП урПвМя +radar.target.tier1=Ракета 1-гП урПвМя +radar.target.tier2=Ракета 2-гП урПвМя +radar.target.tier3=Ракета 3-гП урПвМя +radar.target.tier4=Ракета 4-гП урПвМя + +rbmk.heat=ТеЌпература кПЌпПМеМта: %s +rbmk.boiler.water=ВПЎа: %s / %s +rbmk.boiler.steam=Пар: %s / %s +rbmk.boiler.type=СжатОе: %s +rbmk.console.assign=НазМачОть стержМО к экраМу #%s +rbmk.console.none=Выкл. +rbmk.console.col_temp=СреЎМяя теЌпература стержМя +rbmk.console.rod_extraction=СреЎМее ОзвлечеМОе регулОрующОх стержМей +rbmk.console.fuel_depletion=СреЎМее тПплОвМПе ПбеЎМеМОе +rbmk.console.fuel_poison=СреЎМее ксеМПМПвПе ПтравлеМОе +rbmk.console.fuel_temp=СреЎМяя теЌпература тПплОва +rbmk.control.level=%s +rbmk.control.red=§cКрасМая группа +rbmk.control.yellow=§eЖёлтая группа +rbmk.control.green=§aЗелёМая группа +rbmk.control.blue=§1СОМяя группа +rbmk.control.purple=§5ЀОПлетПвая группа +rbmk.moderated=ЗаЌеЎлеММП +rbmk.rod.depletion=ОбеЎМеМОе: %s +rbmk.rod.xenon=КсеМПМПвПе ПтравлеМОе: %s +rbmk.rod.coreTemp=ТеЌпература стержМя: %s +rbmk.rod.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s / %s +rbmk.screen.core=ЯЎрП: %s +rbmk.screen.depletion=ИстПщ: %s +rbmk.screen.rod=Управ: %s +rbmk.screen.temp=ТеЌп: %s +rbmk.screen.xenon=КсеМПМ: %s + +shape.barrelHeavy=Heavy Barrel +shape.barrelLight=Light Barrel +shape.billet=ЗагПтПвка +shape.blade=Blade +shape.blades=Shredder Blades +shape.block=БлПк +shape.c9=Small Caliber Casing +shape.c50=Large Caliber Casing +shape.dust=ППрПшПк +shape.dusttiny=Кучка пылО +shape.grip=Grip +shape.gunMechanism=Mechanism +shape.hull_big=Big Shell +shape.hull_small=Small Shell +shape.ingot=СлОтПк +shape.nugget=СаЌПрПЎПк +shape.quantum=КваМта +shape.quart=Четверть блПка +shape.receiverHeavy=Heavy Receiver +shape.receiverLight=Light Receiver +shape.ntmpipe=Труба +shape.plate=ПластОМа +shape.plateTriple=ЛОтая пластОМа +shape.shell=ОбПлПчка +shape.stamp=Press Stamp +shape.stock=Stock +shape.wireFine=ПрПвПЎа +shape.wireDense=ПлПтМый прПвПЎ +shape.wiresDense=ПлПтМые прПвПЎа + +soundCategory.ntmMachines=МехаМОзЌы NTM + +tile.absorber.name=ППглПтОтель раЎОацОО +tile.absorber_green.name=УсПвершеМствПваММый пПглПтОтель раЎОацОО +tile.absorber_pink.name=ЭлОтМый пПглПтОтель раЎОацОО +tile.absorber_red.name=ПрПЎвОМутый пПглПтОтель раЎОацОО +tile.acid_block.name=КОслПта +tile.ams_base.name=ОсМПваМОе АМС [ДекПр] +tile.ams_emitter.name=Излучатель АМС [ДекПр] +tile.ams_limiter.name=СтабОлОзатПр АМС [ДекПр] +tile.ancient_scrap.name=ДревМОе ПблПЌкО +tile.anvil_arsenic_bronze.name=НакПвальМя Оз ЌышьякПвПй брПМзы +tile.anvil_bismuth.name=ВОсЌутПвая МакПвальМя +tile.anvil_bismuth_bronze.name=НакПвальМя Оз вОсЌутПвПй брПМзы +tile.anvil_desh.name=Деш-МакПвальМя +tile.anvil_dnt.name=ДОМейтрПМОевая МакПвальМя +tile.anvil_ferrouranium.name=ЀеррПураМОевая МакПвальМя +tile.anvil_iron.name=ЖелезМая МакПвальМя +tile.anvil_lead.name=СвОМцПвая МакПвальМя +tile.anvil_meteorite.name=МетеПрОтПвая МакПвальМя +tile.anvil_murky.name=МрачМая МакПвальМя +tile.anvil_osmiridium.name=ОсЌОрОЎОевая МакПвальМя +tile.anvil_saturnite.name=СатурМОтПвая МакПвальМя +tile.anvil_schrabidate.name=НакПвальМя Оз шрабОЎата железа +tile.anvil_starmetal.name=НакПвальМя Оз звёзЎМПгП Ќеталла +tile.anvil_steel.name=СтальМая МакПвальМя +tile.ash_digamma.name=Пепел +tile.asphalt.name=Асфальт +tile.asphalt_stairs.name=СтупеМькО Оз асфальта +tile.asphalt_light.name=АсфальтОрПваММый светящОйся каЌеМь +tile.barbed_wire.name=КПлючая прПвПлПка +tile.barbed_wire_acid.name=КОслПтМая кПлючая прПвПлПка +tile.barbed_wire_fire.name=Пылающая кПлючая прПвПлПка +tile.barbed_wire_poison.name=ОтравлеММая кПлючая прПвПлПка +tile.barbed_wire_ultradeath.name=РаЎОПактОвМая кПлючая прПвПлПка +tile.barbed_wire_wither.name=Иссушающая кПлючая прПвПлПка +tile.barrel_antimatter.name=МагМОтМый кПМтейМер Ўля аМтОЌатерОО +tile.barrel_corroded.name=ПрПржавевшая бПчка +tile.barrel_iron.name=ЖелезМая бПчка +tile.barrel_plastic.name=БезПпасМый бПчПМПк™ +tile.barrel_steel.name=СтальМая бПчка +tile.barrel_tcalloy.name=БПчка Оз техМецОевПй сталО +tile.barricade.name=МешкО с пескПЌ +tile.basalt.name=Базальт +tile.basalt_brick.name=БазальтПвые кОрпОчО +tile.basalt_polished.name=ППлОрПваММый базальт +tile.basalt_smooth.name=ГлаЎкОй базальт +tile.basalt_tiles.name=БазальтПвая плОтка +tile.blast_door.name=РазЎвОжМые ЎверО +tile.block_actinium.name=БлПк актОМОя +tile.block_advanced_alloy.name=БлПк прПЎвОМутПгП сплава +tile.block_aluminium.name=АлюЌОМОевый блПк +tile.block_asbestos.name=Асбест +tile.block_australium.name=АвстралОевый блПк tile.block_bakelite.name=БлПк бакелОта -tile.block_rubber.name=БлПк резОМы +tile.block_beryllium.name=БерОллОевый блПк +tile.block_bismuth.name=БлПк вОсЌута +tile.block_boron.name=БлПк бПра +tile.block_c4.name=БлПк C-4 +tile.block_cadmium.name=КаЎЌОевый блПк +tile.block_cap_fritz.name=БлПк крышек Пт ЀрОцз-КПла +tile.block_cap_korl.name=БлПк крышек Пт КПрл +tile.block_cap_nuka.name=БлПк крышек Пт ЯЎер-кПлы +tile.block_cap_quantum.name=БлПк крышек Пт КваМтПвПй ЯЎер-кПлы +tile.block_cap_rad.name=БлПк крышек Пт С~КПлы РАД +tile.block_cap_sparkle.name=БлПк крышек Пт С~КПлы +tile.block_cap_star.name=БлПк крышек сП звезЎПй Пт СаМсет СарсапарОлла +tile.block_cap_sunset.name=БлПк крышек Пт СаМсет СарсапарОлла +tile.block_cdalloy.name=БлПк каЎЌОевПй сталО +tile.block_cobalt.name=КПбальтПвый блПк tile.block_coke.coal.name=БлПк угПльМПгП кПкса tile.block_coke.lignite.name=БлПк бурПгП кПкса tile.block_coke.petroleum.name=БлПк МефтяМПгП кПкса -tile.block_staballoy.name=Reinforced Block of Staballoy -tile.block_tha.name=Block of Activated Thorium -tile.brick_concrete_slab.name=Concrete Brick Slab +tile.block_coltan.name=БлПк кПлтаМа +tile.block_combine_steel.name=БлПк сталО альяМса +tile.block_copper.name=МеЎМый блПк +tile.block_corium.name=КПрОуЌ +tile.block_corium_cobble.name=БурОуЌ +tile.block_daffergon.name=ДаффергПМПвый блПк +tile.block_desh.name=УкреплеММый блПк Ўеш +tile.block_dineutronium.name=БлПк ЎОМейтрПМОя +tile.block_dura_steel.name=УкреплеММый блПк высПкПскПрПстМПй сталО +tile.block_electrical_scrap.name=БлПк ПтхПЎПв электрПМОкО +tile.block_euphemium.name=БлПк эвфеЌОя +tile.block_euphemium_cluster.name=ЭвфеЌОевП-вытравлеММый кластер шрабОЎОя +tile.block_fallout.name=БлПк раЎОПактОвМых ПсаЎкПв +tile.block_fiberglass.name=РулПМ стеклПвПлПкМа +tile.block_fluorite.name=ЀлюПрОтПвый блПк +tile.block_foam.name=ПеМа +tile.block_insulator.name=РулПМ ОзПлятПра +tile.block_graphite.name=БлПк графОта +tile.block_graphite_detector.name=ДетектПр МейтрПМПв пПлеММОцы +tile.block_graphite_drilled.name=ПрПсверлеММый графОт +tile.block_graphite_fuel.name=ТПплОвП пПлеММОцы +tile.block_graphite_lithium.name=ЛОтОевПе тПплОвП пПлеММОцы +tile.block_graphite_plutonium.name=Куча тПплОва (ПерерабПтаММПе) +tile.block_graphite_rod.name=КПМтрПльМый стержеМь пПлеММОцы +tile.block_graphite_source.name=ИстПчМОк МейтрПМПв пПлеММОцы +tile.block_graphite_tritium.name=ЛОтОевПе тПплОвП пПлеММОцы (ПерерабПтаММПе) +tile.block_lead.name=СвОМцПвый блПк +tile.block_lanthanium.name=БлПк лаМтаМОя +tile.block_lithium.name=ЛОтОевый блПк +tile.block_magnetized_tungsten.name=БлПк МаЌагМОчеММПгП вПльфраЌа +tile.block_meteor.name=БлПк ЌетеПрОта +tile.block_meteor_broken.name=РазбОтый блПк ЌетеПрОта +tile.block_meteor_cobble.name=МетеПрОтМый булыжМОк +tile.block_meteor_molten.name=ГПрячОй ЌетеПрОтМый булыжМОк +tile.block_meteor_treasure.name=БлПк ЌетеПрОтМых сПкрПвОщ +tile.block_mox_fuel.name=БлПк МОКС тПплОва +tile.block_neptunium.name=НептуМОевый блПк +tile.block_niter.name=БлПк селОтры +tile.block_niter_reinforced.name=УкреплеММый блПк селОтры +tile.block_niobium.name=БлПк МОПбОя +tile.block_plutonium.name=ПлутПМОевый блПк +tile.block_plutonium_fuel.name=БлПк плутПМОевПгП тПплОва +tile.block_polonium.name=БлПк пПлПМОя-210 +tile.block_polymer.name=БлПк пПлОЌера +tile.block_pu_mix.name=БлПк плутПМОя реактПрМПгП качества +tile.block_pu238.name=БлПк плутПМОя-238 +tile.block_pu239.name=БлПк плутПМОя-239 +tile.block_pu240.name=БлПк плутПМОя-240 +tile.block_ra226.name=БлПк раЎОя-226 +tile.block_red_copper.name=БлПк красМПй ЌеЎО +tile.block_red_phosphorus.name=БлПк красМПгП фПсфПра +tile.block_reiium.name=РеОевый блПк +tile.block_rubber.name=БлПк резОМы +tile.block_schrabidate.name=БлПк шрабОЎата железа +tile.block_schrabidium.name=БлПк шрабОЎОя +tile.block_schrabidium_cluster.name=КрабОЎОевый кластер +tile.block_schrabidium_fuel.name=БлПк шрабОЎОевПгП тПплОва +tile.block_schraranium.name=БлПк шрараМОя +tile.block_scrap.name=БлПк ЌеталлПлПЌа +tile.block_semtex.name=БлПк сеЌтекса +tile.block_slag.name=БлПк шлака +tile.block_smore.name=БлПк с'ЌПра +tile.block_solinium.name=СПлОМОевый блПк +tile.block_starmetal.name=§9БлПк звёзЎМПгП Ќеталла§r +tile.block_steel.name=СтальМПй блПк +tile.block_sulfur.name=БлПк серы +tile.block_tantalium.name=БлПк таМтала +tile.block_tcalloy.name=БлПк техМецОевПй сталО +tile.block_thorium.name=ТПрОевый блПк +tile.block_thorium_fuel.name=БлПк тПрОевПгП тПплОва +tile.block_titanium.name=ТОтаМПвый блПк +tile.block_trinitite.name=ТрОМОтОтПвый блПк +tile.block_tritium.name=БлПк трОтОевых прПбОрПк +tile.block_tungsten.name=ВПльфраЌПвый блПк +tile.block_u233.name=БлПк ураМа-233 +tile.block_u235.name=БлПк ураМа-235 +tile.block_u238.name=БлПк ураМа-238 +tile.block_unobtainium.name=НеЎПстатОевый блПк +tile.block_uranium.name=УраМПвый блПк +tile.block_uranium_fuel.name=БлПк ураМПвПгП тПплОва +tile.block_verticium.name=ВертОцОевый блПк +tile.block_waste.name=БлПк яЎерМых ПтхПЎПв +tile.block_waste_painted.name=ППкрашеММый блПк яЎерМых ПтхПЎПв +tile.block_waste_vitrified.name=БлПк ПстеклПваММых яЎерМых ПтхПЎПв +tile.block_weidanium.name=ВейЎаМОевый блПк +tile.block_white_phosphorus.name=БлПк белПгП фПсфПра +tile.block_yellowcake.name=БлПк йеллПукейка +tile.block_zirconium.name=БлПк цОркПМОя +tile.boat.name=ЛПЎка +tile.bobblehead.name=БПлваМчОк +tile.bomb_multi.name=ММПгПцелевая бПЌба +tile.bomber.name=РазбОвшОйся бПЌбарЎОрПвщОк +tile.book_guide.name=КМОга зМаМОй +tile.boxcar.name=ГрузПвПй вагПМ +tile.brick_asbestos.name=АсбестПвые кОрпОчО +tile.brick_asbestos_stairs.name=СтупеМО Оз асбестПвых кОрпОчей +tile.brick_compound.name=Сетка Оз сПеЎОМеМОя +tile.brick_compound_stairs.name=СтупеМО Оз кПЌпПзОтМПй сеткО +tile.brick_concrete.name=БетПММые кОрпОчО tile.brick_concrete_stairs.name=Concrete Brick Stairs -tile.cable_optical.name=Fiber Optic Cable -tile.cable_optical_coated.name=Coated Fiber Optic Cable -tile.computer_hatch.name=Computer Access Terminal -tile.concrete_slab.name=Concrete Tile Slab -tile.concrete_smooth_slab.name=Concrete Slab +tile.brick_concrete_broken.name=СлПЌаММые бетПММые кОрпОчО +tile.brick_concrete_broken_stairs.name=Broken Concrete Brick Stairs +tile.brick_concrete_cracked.name=ППтрескаММые бетПММые кОрпОчО +tile.brick_concrete_cracked_stairs.name=СтупеМО Оз разрушеММых бетПМПвых кОрпОчей +tile.brick_concrete_marked.name=ОбПзМачеММые бетПММые кОрпОчО +tile.brick_concrete_mossy.name=ЗаЌшелые бетПММые кОрпОчО +tile.brick_concrete_mossy_stairs.name=CтупеМО Оз заЌшелых бетПММых кОрпОчей +tile.brick_ducrete.name=ДюкретПвые кОрпОчО +tile.brick_ducrete_stairs.name=СтупеМО Оз ЎюкретПвых кОрпОчей +tile.brick_dungeon.name=БерцелОаМОт кОрпОчО +tile.brick_dungeon_circle.name=БерцелОаМОтПвый круг +tile.brick_dungeon_flat.name=БерцелОаМОт +tile.brick_dungeon_tile.name=БерцелОаМОтПвая плОтка +tile.brick_fire.name=КаЌПтМые кОрпОчО +tile.brick_fire_stairs.name=СтупеМО Оз шаЌПтМых кОрпОчей +tile.brick_jungle.name=ЭМаргОтПвые кОрпОчО +tile.brick_jungle_circle.name=Круг МехаМОста +tile.brick_jungle_cracked.name=ППтрескаММые эМаргОтПвые кОрпОчО +tile.brick_jungle_fragile.name=ХрупкОе эМаргОтПвые кОрпОчО +tile.brick_jungle_glyph.name=ЭМаргОтПвые кОрпОчО с глОфаЌО +tile.brick_jungle_lava.name=МагЌатОческОе эМаргОтПвые кОрпОчО +tile.brick_jungle_mystic.name=МагОческОе эМаргОтПвые кОрпОчО +tile.brick_jungle_ooze.name=РаЎОПактОвМые эМаргОтПвые кОрпОчО +tile.brick_jungle_trap.name=ЭМаргОтПвые кОрпОчО-лПвушка +tile.brick_light.name=ЛегкОе кОрпОчО +tile.brick_light_stairs.name=СтупеМО Оз светлых кОрпОчей +tile.brick_obsidian.name=ОбсОЎОаМПвые кОрпОчО +tile.brick_obsidian_stairs.name=СтупеМО Оз ПбсОЎОаМПвых кОрпОчей +tile.brick_red.name=КОрпОчО красМПй кПЌМаты +tile.brick_slab.brick_asbestos.name=ПлОта Оз асбестПвых кОрпОчей +tile.brick_slab.brick_compound.name=ПлОта Оз кПЌпПзОтМПй сеткО +tile.brick_slab.brick_fire.name=ПлОта Оз шаЌПтМых кОрпОчей +tile.brick_slab.brick_light.name=ПлОта Оз светлых кОрпОчей +tile.brick_slab.brick_obsidian.name=ПлОта Оз ПбсОЎОаМПвых кОрпОчей +tile.brick_slab.reinforced_brick.name=ПлОта Оз укреплёММПгП каЌМя +tile.brick_slab.reinforced_stone.name=ПлОта Оз уплПтМёММПгП каЌМя +tile.broadcaster_pc.name=ППврежЎёММый переЎатчОк +tile.burning_earth.name=ГПрящая трава +tile.c4.name=C-4 +tile.cable_detector.name=РеЎстПуМ-рубОльМОк +tile.cable_diode.name=ДОПЎ Оз красМПй ЌеЎО +tile.cable_switch.name=РубОльМОк +tile.capacitor_bus.name=КОМа кПМЎеМсатПра +tile.capacitor_bus.desc=ВыхПЎМПй блПк Ўля кПМЎеМсатПрПв$МПжет быть пПЎключеМ пП пряЌПй лОМОО +tile.capacitor_copper.name=МеЎМый кПМЎеМсатПр +tile.capacitor_gold.name=ЗПлПтПй кПМЎеМсатПр +tile.capacitor_niobium.name=НОПбОевый кПМЎеМсатПр +tile.capacitor_schrabidate.name=КрабОЎатПвый кПМЎеМсатПр +tile.capacitor_tantalium.name=ТаМталПвый кПМЎеМсатПр +tile.capacitor.desc=ВхПЎ: Сверху$ВыхПЎ: СМОзу через шОМу +tile.charge_c4.name=ППЎрывМПй заряЎ +tile.charge_dynamite.name=БПЌба с тайЌерПЌ +tile.charge_miner.name=КахтёрскОй заряЎ с тайЌерПЌ +tile.charge_semtex.name=КахтёрскОй заряЎ с сеЌтексПЌ +tile.charger.name=СтаМцОя заряЎкО +tile.cheater_virus.name=ОхлажЎёММый ЭвфеЌОй +tile.cheater_virus_seed.name=НестабОльМый блПк шрабОЎата эвфеЌОя +tile.chimney_brick.name=ДыЌПвая труба +tile.chimney_brick.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 75%% +tile.chimney_industrial.name=ПрПЌышлеММая ЎыЌПвая труба +tile.chimney_industrial.desc=ППЎсПеЎОМяется с пПЌПщью выхлПпМых труб к ЌашОМаЌ$СПкращает выбрПсы загрязМяющОх веществ Ма 90%% +tile.chlorine_gas.name=ХлПр +tile.cluster_aluminium.name=АлюЌОМОевый руЎМый кластер +tile.cluster_copper.name=МеЎМый руЎМый кластер +tile.cluster_depth_iron.name=ГлубОММый железПруЎМый кластер +tile.cluster_depth_titanium.name=ГлубОММый тОтаМПвый руЎМый кластер +tile.cluster_depth_tungsten.name=ГлубОММый вПльфраЌПвый руЎМый кластер +tile.cluster_iron.name=ЖелезПруЎМый кластер +tile.cluster_titanium.name=ТОтаМПвый руЎМый кластер +tile.custom_machine_anchor.name=ЯкПрь Ўля кастПЌМых ЌашОМ +tile.cm_block.alloy.name=КПрпус ЌашОМы Оз прПЎвОМутПгП сплава +tile.cm_block.desh.name=КПрпус ЌашОМы Оз Ўеша +tile.cm_block.steel.name=КПрпус ЌашОМы Оз сталО +tile.cm_block.tcalloy.name=КПрпус ЌашОМы Оз техМецОевПй сталО +tile.cm_circuit.aluminium.name=БлПк ЌОкрПсхеЌ 1-гП урПвМя +tile.cm_circuit.copper.name=БлПк ЌОкрПсхеЌ 2-гП урПвМя +tile.cm_circuit.gold.name=БлПк ЌОкрПсхеЌ 4-гП урПвМя +tile.cm_circuit.red_copper.name=БлПк ЌОкрПсхеЌ 3-гП урПвМя +tile.cm_circuit.schrabidium.name=БлПк ЌОкрПсхеЌ 5-гП урПвМя +tile.cm_engine.bismuth.name=МПтПрМый блПк Оз вОсЌута +tile.cm_engine.desh.name=МПтПрМый блПк Оз Ўеша +tile.cm_engine.standard.name=МПтПрМый блПк +tile.cm_flux.name=ПрОеЌМОк МейтрПММПгП пПтПка +tile.cm_heat.name=ТеплПпрОеЌМОк +tile.cm_port.alloy.name=Люк Оз прПЎвОМутПгП сплава +tile.cm_port.desh.name=Люк Оз Ўеша +tile.cm_port.steel.name=Люк Оз сталО +tile.cm_port.tcalloy.name=Люк Оз техМецОевПй сталО +tile.cm_sheet.alloy.name=ЛОст Оз прПЎвОМутПгП сплава +tile.cm_sheet.desh.name=ЛОст Оз Ўеша +tile.cm_sheet.steel.name=ЛОст Оз сталО +tile.cm_sheet.tcalloy.name=ЛОст Оз техМецОевПй сталО +tile.cm_tank.alloy.name=Бак Оз прПЎвОМутПгП сплава +tile.cm_tank.desh.name=Бак Оз Ўеша +tile.cm_tank.steel.name=Бак Оз сталО +tile.cm_tank.tcalloy.name=Бак Оз техМецОевПй сталО +tile.cmb_brick.name=ПлОта Оз сталО АльяМса +tile.cmb_brick_reinforced.name=УсОлеММые кОрпОчО Оз сталО АльяМса +tile.compact_launcher.name=КПЌпактМая пускПвая плПщаЎка +tile.concrete.name=БетПММая плОтка +tile.concrete_asbestos.name=АсбестПбетПМ +tile.concrete_asbestos_stairs.name=СтупеМО Оз асбестПвых кОрпОчей +tile.concrete_brick_slab.brick_concrete.name=ПлОта Оз бетПММых кОрпОчей +tile.concrete_brick_slab.brick_concrete_broken.name=ПлОта Оз разрушОвшОхся бетПММых кОрпОчей +tile.concrete_brick_slab.brick_concrete_cracked.name=ПлОта Оз пПтрескаММых бетПММых кОрпОчей +tile.concrete_brick_slab.brick_concrete_mossy.name=ПлОта Оз заЌшелых бетПММых кОрпОчей +tile.concrete_brick_slab.brick_ducrete.name=ПлОта Оз ЎюкретПвых кОрпОчей +tile.concrete_colored.black.name=ЧерМый бетПМ +tile.concrete_colored.blue.name=СОМОй бетПМ +tile.concrete_colored.brown.name=КПрОчМевый бетПМ +tile.concrete_colored.cyan.name=БОрюзПвый бетПМ +tile.concrete_colored.gray.name=Серый бетПМ +tile.concrete_colored.green.name=ЗелёМый бетПМ +tile.concrete_colored.lightBlue.name=СветлП-сОМОй бетПМ +tile.concrete_colored.lime.name=ЛайЌПвый бетПМ +tile.concrete_colored.magenta.name=ПурпурМый бетПМ +tile.concrete_colored.orange.name=ОраМжевый бетПМ +tile.concrete_colored.pink.name=РПзПвый бетПМ +tile.concrete_colored.purple.name=ЀОПлетПвый бетПМ +tile.concrete_colored.red.name=КрасМый бетПМ +tile.concrete_colored.silver.name=СветлП-серый бетПМ +tile.concrete_colored.white.name=Белый бетПМ +tile.concrete_colored.yellow.name=Жёлтый бетПМ +tile.concrete_colored_ext.bronze.name=БетПМ "ВыбПр стрПОтеля" - БрПМза +tile.concrete_colored_ext.hazard.name=БетПМ "ВыбПр стрПОтеля" - ППлПса ПпасМПстО +tile.concrete_colored_ext.indigo.name=БетПМ "ВыбПр стрПОтеля" - ГлубПкОй ОМЎОгП +tile.concrete_colored_ext.machine.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММый ПттеМПк +tile.concrete_colored_ext.machine_stripe.name=БетПМ "ВыбПр стрПОтеля" - ПрПЌышлеММая пПлПса +tile.concrete_colored_ext.pink.name=БетПМ "ВыбПр стрПОтеля" - МужествеММый рПзПвый +tile.concrete_colored_ext.purple.name=БетПМ "ВыбПр стрПОтеля" - ТаОМствеММый фОПлетПвый +tile.concrete_colored_ext.sand.name=БетПМ "ВыбПр стрПОтеля" - ПустыМя +tile.concrete_pillar.name=АрЌатурМый железПбетПММый стПлб +tile.concrete_slab.asphalt.name=ПлОта Оз асфальта +tile.concrete_slab.concrete.name=ПлОта Оз бетПММПй плОткО +tile.concrete_slab.concrete_asbestos.name=ПлОта Оз асбестПбетПМа +tile.concrete_slab.concrete_smooth.name=ПлОта Оз бетПМа +tile.concrete_slab.ducrete.name=ПлОта Оз ЎюкретПвПй плОткО +tile.concrete_slab.ducrete_smooth.name=ПлОта Оз Ўюкрета +tile.concrete_smooth.name=БетПМ tile.concrete_smooth_stairs.name=Concrete Stairs tile.concrete_stairs.name=Concrete Tile Stairs -tile.geiser_nether.name=Nether Geiser -tile.geiser_vapor.name=Steam Geiser -tile.geiser_water.name=Water Geiser -tile.gravel_diamond.desc=There is some kind of joke here,$but I can't quite tell what it is.$ $Update, 2020-07-04:$We deny any implications of a joke on$the basis that it was so severely unfunny$that people started stabbing their eyes out.$ $Update, 2020-17-04:$As it turns out, "Diamond Gravel" was$never really a thing, rendering what might$have been a joke as totally nonsensical.$We apologize for getting your hopes up with$this non-joke that hasn't been made.$ $i added an item for a joke that isn't even here, what am i, stupid? can't even tell the difference between gravel and a gavel, how did i not forget how to breathe yet? -tile.machine_amat_reactor.name=FTL Antimatter Reactor (ALPHA) -tile.machine_difurnace_rtg_off.name=ЯЎерМая ЎПЌеММая печь -tile.machine_difurnace_rtg_on.name=ЯЎерМая ЎПЌеММая печь +tile.concrete_super.name=Убер-бетПМ +tile.concrete_super_broken.name=ЗаЌшелые бетПММые ПблПЌкО +tile.conveyor.name=КПМвейер +tile.conveyor.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя +tile.conveyor_chute.name=КПМвейерМый желПб +tile.conveyor_chute.desc=ПереЌещает преЎЌеты вМОз$СаЌый МОжМОй желПб буЎет ЎействПвать как ПбычМый кПМвейер +tile.conveyor_double.name=ДвухпПлПсМый кПМвейер +tile.conveyor_double.desc=ПереЌещает преЎЌеты, ПпущеММые Ма МегП$МПжет пПвПрачОваться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя +tile.conveyor_express.name=Быстрый кПМвейер +tile.conveyor_express.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП, ПчеМь быстрП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку, чтПбы сПгМуть +tile.conveyor_lift.name=КПМвейерМый цепМПй лОфт +tile.conveyor_lift.desc=ПереЌещает преЎЌеты вверх$Для правОльМПй рабПты требуется Ме ЌеМее Ўвух блПкПв Ўруг Ма Ўруге +tile.conveyor_triple.name=ТрёхпПлПсМый кПМвейер +tile.conveyor_triple.desc=ПереЌещает преЎЌеты, упавшОе Ма МегП$МПжет вращаться пП часПвПй стрелке с пПЌПщью ПтверткО$НажЌОте Ма Птвертку Ўля сгОбаМОя +tile.corium_block.name=КПрОуЌ +tile.crane_boxer.name=КПМвейерМый упакПвщОк +tile.crane_boxer.desc=Загружает МастраОваеЌПе кПлОчествП стПпПк в ящОкО, кПтПрые переЌещаются пП кПМвейерМыЌ леМтаЌ$Правый клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КОфтПвый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_extractor.name=КПМвейерМый Озвлекатель +tile.crane_extractor.desc=ЗабОрает преЎЌеты Оз ОМвеМтаря О пПЌещает Ох Ма кПМвейерМые леМты$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-клОк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_grabber.name=КПМвейерМый сбПрщОк +tile.crane_grabber.desc=ПрОМОЌает преЎЌеты с прПхПЎящОх кПМвейерПв О пПЌещает Ох в кПМтейМеры$ПрОМОЌает преЎЌеты тПлькП с блОжайшей ЎПрПжкО$ИЌеет ЎП 9 слПтПв фОльтрацОО с черМыЌ О белыЌ спОскПЌ$Правый клОк ПтверткПй Ўля устаМПвкО стПрПМы вхПЎа$СЌеММый клОк ПтверткПй Ўля устаМПвкО стПрПМы выхПЎа$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_inserter.name=КПМвейерМый вставщОк +tile.crane_inserter.desc=ПрОМОЌает преЎЌеты с кПМвейерПв О пПЌещает Ох в кПМтейМеры$Правый щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$КлОкМОте ЎважЎы Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crane_partitioner.name=ВставщОк ПкОслОтеля +tile.crane_partitioner.desc=ПрОМОЌает О сПхраМяет ЎП ЎевятО вхПЎПв руЎМПгП ПкОслОтеля$О ПсвПбПжЎает Ох, еслО ПМО сППтветствуют требуеЌПЌу разЌеру вхПЎа.$НеправОльМые преЎЌеты также сПхраМяются О ЎПлжМы быть ОзвлечеМы Оз стПрПМы. +tile.crane_router.name=КПМвейерМый сПртОрПвщОк +tile.crane_router.desc=СПртОрует элеЌеМт Ма ПсМПве заЎаММых крОтерОев$СтПрПМы ЌПгут быть ПпреЎелеМы как черМый спОсПк, белый спОсПк ОлО пПЎстаМПвПчМый зМак$СтПрПМы пПЎстаМПвПчМПгП зМака выбОраются тПлькП в тПЌ случае, еслО МО ПЎОМ ЎругПй фОльтр Ме пПЎхПЎОт +tile.crane_splitter.name=КПМвейерМый разЎелОтель +tile.crane_splitter.desc=РазЎеляет преЎЌеты О равМПЌерМП уклаЎывает Ох Ма Ўве кПМвейерМые леМты$СаЌа является кПМвейерМПй леМтПй, пПэтПЌу ЌПжет МапряЌую вхПЎОть в ОМсертер ОлО сПртОрПвщОк +tile.crane_unboxer.name=КПМвейерМый распакПвщОк +tile.crane_unboxer.desc=ПрОеЌ кПрПбПк О ОзвлечеМОе Ох сПЎержОЌПгП$Правый щелчПк ПтверткПй Ўля устаМПвкО выхПЎМПй стПрПМы$Shift-щелчПк ПтверткПй Ўля устаМПвкО вхПЎМПй стПрПМы$ДважЎы щелкМОте Ўля устаМПвкО прПтОвПпПлПжМПй стПрПМы +tile.crashed_bomb.name=НеразПрвавшаяся бПЌба +tile.crate.name=ЯщОк сМабжеМОя +tile.crate_ammo.name=ЯщОк Оз звёзЎМПгП Ќеталла +tile.crate_can.name=ЯщОк с кПМсерваЌО +tile.crate_desh.name=Деш-ящОк +tile.crate_iron.name=ЖелезМый ящОк +tile.crate_jungle.name=ЯщОк Оз эМаргОта +tile.crate_lead.name=ЯщОк с раЎОПактОвМыЌО ЌатерОалаЌО +tile.crate_metal.name=ЯщОк с ЌехаМОзЌаЌО +tile.crate_red.name=КрасМый ящОк +tile.crate_steel.name=СтальМПй ящОк +tile.crate_template.name=СбПрПчМый ящОк +tile.crate_tungsten.name=ВПльфраЌПвый ящОк +tile.crate_weapon.name=ЯщОк с ПружОеЌ +tile.crystal_hardened.name=ЗакалеММый теЌМый крОсталл +tile.crystal_pulsar.name=ПульсОрующОй крОсталл +tile.crystal_virus.name=ТёЌМый крОсталл +tile.deco_aluminium.name=АлюЌОМОевый ЎекПратОвМый блПк +tile.deco_asbestos.name=АсбестПвая крыша +tile.deco_beryllium.name=БерОллевый ЎекПратОвМый блПк +tile.deco_computer.ibm_300pl.name=ПерсПМальМый кПЌпьютер IBM 300PL +tile.deco_crt.name=Старый ЭЛТ-экраМ +tile.deco_emitter.name=ДекПратОвМый ОстПчМОк света +tile.deco_lead.name=СвОМцПвый ЎекПратОвМый блПк +tile.deco_loot.name=Loot Pile +tile.deco_rbmk.name=ДекП-блПкО РБМК +tile.deco_rbmk_smooth.name=ГлаЎкОе ЎекП-блПкО РБМК +tile.deco_red_copper.name=КрасМПЌеЎМый ЎекПратОвМый блПк +tile.deco_pipe.name=СтальМая труба +tile.deco_pipe_rusted.name=Ржавая стальМая труба +tile.deco_pipe_green.name=ЗелёМая стальМая труба +tile.deco_pipe_green_rusted.name=Ржавая зелёМая стальМая труба +tile.deco_pipe_red.name=КрасМая стальМая труба +tile.deco_pipe_marked.name=ГазПвая труба +tile.deco_pipe_framed.name=СтальМая труба (КаркасМый) +tile.deco_pipe_framed_rusted.name=Ржавая стальМая труба (КаркасМый) +tile.deco_pipe_framed_green.name=ЗелёМая стальМая труба (КаркасМый) +tile.deco_pipe_framed_green_rusted.name=Ржавая зелёМая стальМая труба (КаркасМый) +tile.deco_pipe_framed_red.name=КрасМая стальМая труба (КаркасМый) +tile.deco_pipe_framed_marked.name=ГазПвая труба (КаркасМый) +tile.deco_pipe_quad.name=СтальМые трубы +tile.deco_pipe_quad_rusted.name=Ржавые стальМые трубы +tile.deco_pipe_quad_green.name=ЗелёМые стальМые трубы +tile.deco_pipe_quad_green_rusted.name=Ржавые зелёМые стальМые трубы +tile.deco_pipe_quad_red.name=КрасМые стальМые трубы +tile.deco_pipe_quad_marked.name=ГазПвые трубы +tile.deco_pipe_rim.name=СтальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_rusted.name=Ржавая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_green.name=ЗелёМая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_green_rusted.name=Ржавая зелёМая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_red.name=КрасМая стальМая труба (ОбраЌлеММая) +tile.deco_pipe_rim_marked.name=ГазПвая труба (ОбраЌлеММая) +tile.deco_steel.name=СтальМПй ЎекПратОвМый блПк +tile.deco_titanium.name=ТОтаМПвый ЎекПратОвМый блПк +tile.deco_toaster.name=СлПЌаММый тПстер +tile.deco_tungsten.name=ВПльфраЌПвый ЎекПратОвМый блПк +tile.decon.name=ОбеззаражОватель ОгрПка +tile.depth_brick.name=ГлубОММые кОрпОчО +tile.depth_dnt.name=ДНТ-усОлеММые глубОММые кОрпОчО +tile.depth_nether_brick.name=АЎскОе глубОММые кОрпОчО +tile.depth_nether_tiles.name=АЎская глубОММая плОтка +tile.depth_tiles.name=ГлубОММая плОтка +tile.det_charge.name=ЗаряЎ взрывчаткО +tile.det_cord.name=ДетПМОрующОй шМур +tile.det_miner.name=КахтёрскОй заряЎ +tile.det_nuke.name=ЯЎерМый заряЎ +tile.dfc_core.name=ЯЎрП реактПра тёЌМПгП сОМтеза +tile.dfc_emitter.name=Излучатель РТС +tile.dfc_injector.name=ТПплОвМый ОМжектПр РТС +tile.dfc_receiver.name=ПрОёЌМОк РТС +tile.dfc_stabilizer.name=СтабОлОзатПр РТС +tile.dirt_dead.name=Мертвая зеЌля +tile.dirt_oily.name=ПрПпОтаММая Мефтью зеЌля +tile.drill_pipe.name=Бур +tile.drone_crate.name=ПассОвМый ящОк Ўля ЎрПМПв +tile.drone_crate.desc=ППгрузПчМП-разгрузПчМая тПчка Ўля траМспПртМых ЎрПМПв.$Действует как путевая тПчка, ЎПлжМа быть связаМа с лОМкерПЌ ЎрПМПв.$ДрПМы ЎПлжМы прОблОжаться пПЎ бПльшОЌ углПЌ, ОМаче ПМО застряМут. +tile.drone_crate_provider.name=ЯщОк сМабжеМОя Ўля ЎрПМПв +tile.drone_crate_provider.desc=ПреЎлагает преЎЌеты лПгОстОческПй сетО.$ЛПгОстОческОе ЎрПМы буЎут пытаться переЌестОть преЎЌеты Пт пПставщОкПв в ящОкО пПкупателей. +tile.drone_crate_requester.name=ЯщОк запрПса Ўля ЎрПМПв +tile.drone_crate_requester.desc=ЗапрашОвает преЎЌеты Оз лПгОстОческПй сетО.$ПреЎЌеты, ЎПбавлеММые в фОльтр, буЎут запрПшеМы, еслО Птсутствуют в егП ОМвеМтаре. +tile.drone_dock.name=ДрПМ-стаМцОя +tile.drone_dock.desc=ТПчка спауМа Ўля лПгОстОческОх ЎрПМПв.$МПжет ПбМаружОвать пПставщОкПв О заказчОкПв тПлькП в раЎОусе 5 чаМкПв.$ДрПМы буЎут слеЎПвать тПлькП ЎП 10 путевых тПчек за сПеЎОМеМОе. +tile.drone_waypoint.name=Путевая тПчка Ўля ЎрПМПв +tile.drone_waypoint.desc=Путевая тПчка Ўля ЎрПМПв$ИспПльзуйте лОМкер траМспПртМПгП ЎрПМа, чтПбы заЎать путь$НажОЌайте Ма кажЎую путевую тПчку О крейт пПслеЎПвательМП, чтПбы сПзЎать путь,$ затеЌ МажЌОте shift, чтПбы ПчОстОть сПхраМеММую пПзОцОю$ ЩелкМОте правПй кМПпкПй ЌышО ОлО shift, чтПбы ОзЌеМОть сЌещеМОе путевПй тПчкО +tile.drone_waypoint_request.name=ЛПгОстОческая путевая тПчка Ўля ЎрПМПв +tile.door_bunker.name=БуМкерМая Ўверь +tile.door_metal.name=МеталлОческая Ўверь +tile.door_office.name=ОфОсМая Ўверь +tile.door_red.name=КрасМая Ўверь +tile.ducrete.name=ДюкретПвая плОтка +tile.ducrete_stairs.name=СтупеМО Оз ЎюкретПвПй плОткО +tile.ducrete_smooth.name=Дюкрет +tile.ducrete_smooth_stairs.name=СтупеМО Оз Ўюкрета +tile.dummy_block.name=БлПк-пустышка +tile.dummy_port.name=БлПк-пустышка (РПзетка) +tile.dungeon_chain.name=МеталлОческая цепь +tile.dynamite.name=ДОМаЌОт +tile.emp_bomb.name=ЭМИ-бПЌба +tile.factory_advanced_conductor.name=ППрт электрОчества усПвершеМствПваММПй фабрОкО +tile.factory_advanced_core.name=ЯЎрП усПвершеМствПваММПй фабрОкО +tile.factory_advanced_furnace.name=Люк ЎПступа усПвершеМствПваММПй фабрОкО +tile.factory_advanced_hull.name=КПрпус усПвершеМствПваММПй фабрОкО +tile.factory_titanium_conductor.name=ППрт электрОчества базПвПй фабрОкО +tile.factory_titanium_core.name=ЯЎрП базПвПй фабрОкО +tile.factory_titanium_furnace.name=Люк ЎПступа базПвПй фабрОкО +tile.factory_titanium_hull.name=КПрпус базПвПй фабрОкО +tile.fallout.name=РаЎОПактОвМый ПсаЎПк +tile.fan.name=ВеМтОлятПр +tile.fan.desc=АктОвОруется реЎстПуМПЌ$ТПлкает существ ЎП 10 блПкПв$ПКМ ПтвёрткПй чтПбы пПверМуть +tile.fence_metal.name=ПрПвПлПчМая сетка +tile.fence_metal_post.name=СтПлб прПвПлПчМПй сеткО +tile.field_disturber.name=ППЎавОтель высПкПэМергОтОческОх пПлей +tile.filing_cabinet.green.name=ПыльМый картПчеМый шкафчОк +tile.filing_cabinet.steel.name=СтальМПй картПчеМый шкафчОк +tile.fire_digamma.name=ЗатяжМая ДОгаЌЌа +tile.fire_door.name=ППжарМая Ўверь +tile.fireworks.name=Батарея фейерверкПв +tile.fireworks.charges=ЗаряЎПв: %s +tile.fireworks.message=ППслаМОе: %s +tile.fireworks.color=Њвет: %s +tile.fissure_bomb.name=ВулкаМОческая бПЌба +tile.flame_war.name=ВПйМа в кПрПбке +tile.float_bomb.name=ЛевОтацОПММая бПЌба +tile.floodlight.name=ЭлектрОческОй прПжектПр +tile.fluid_duct.name=УМОверсальМая жОЎкПстМая труба (Устаревшее) +tile.fluid_duct_box.name=УМОверсальМая жОЎкПстМая труба (Boxduct) +tile.fluid_duct_exhaust.name=ВыхлПпМая труба +tile.fluid_duct_gauge.name=Труба с ОзЌерОтелеЌ пПтПка +tile.fluid_duct_gauge.desc=Труба кПтПрая пПказывает скПлькП жОЎкПстО$переЌещается вМутрО сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые бПчкаЌО$ОлО резервуары рассЌатрОваются как ПЎМа Пбщая сеть. +tile.fluid_duct_neo.name=УМОверсальМая жОЎкПстМая труба +tile.fluid_duct_paintable.name=ОкрашОваеЌая пПкрытая уМОверсальМая жОЎкПстМая труба +tile.fluid_duct_solid.name=ППкрытая уМОверсальМая жОЎкПстМая труба (Устаревшее) +tile.fluid_switch.name=РеЎстПуМ-ЖОЎкПстМый клапаМ +tile.fluid_valve.name=ЖОЎкПстМый клапаМ +tile.foam_layer.name=СлПй пеМы +tile.foundry_basin.name=ЛОтейМый резервуар +tile.foundry_channel.name=ЛОтейМый каМал +tile.foundry_tank.name=ЛОтейМый бассейМ +tile.foundry_mold.name=Малый лОтейМый резервуар +tile.foundry_outlet.name=ЛОтейМый спуск +tile.foundry_slagtap.name=ЛОтейМый спуск Ўля шлака +tile.fraction_spacer.name=РазЎелОтель ректОфОкацОПММПй кПлПММы +tile.frozen_dirt.name=ЗаЌПрПжеММая зеЌля +tile.frozen_grass.name=ЗаЌПрПжеММая трава +tile.frozen_log.name=ЗаЌПрПжеММПе бревМП +tile.frozen_planks.name=ЗаЌПрПжеММые ЎПскО +tile.machine_furnace_brick_off.name=КОрпОчМая печь +tile.machine_furnace_brick_on.name=КОрпОчМая печь +tile.furnace_combination.name=КПксПвая печь +tile.furnace_combination.desc=БПльшая печь кПтПрая прПОзвПЎОт ЎревесМый угПль О угПльМый кПкс.$ВыЎеляет жОЎкПстМые пПбПчМые прПЎукты.$СкПрПсть переЎачО тепла: ΔT*0.25 TU/t +tile.furnace_iron.name=ЖелезМая печь +tile.furnace_iron.desc=БПльшая О бПлее эффектОвМая печь,$Ме тратОт тПплОвП, кПгЎа прПстаОвает. +tile.furnace_steel.name=СтальМая печь +tile.furnace_steel.desc=ОгрПЌМая печь, Ўаёт бПМус к$переплавке преЎЌетПв. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: ΔT*0.05 TU/t$(Δ - разМОца, T - теЌпература) +tile.fusion_center.name=ЊеМтральМый элеЌеМт ЌагМОта +tile.fusion_conductor.name=СверхпрПвПЎящОй ЌагМОт +tile.fusion_conductor_welded.name=СверхпрПвПЎящОй ЌагМОт (СвареММый) +tile.fusion_core.name=КПМтрПллер терЌПяЎерМПгП реактПра +tile.fusion_hatch.name=Люк ЎПступа терЌПяЎерМПгП реактПра +tile.fusion_heater.name=КПЌпПМеМт Магревателя плазЌы +tile.fusion_motor.name=ЭлеЌеМт ЌагМОтМПгП ЌПтПра +tile.fwatz_computer.name=МатрОца вычОслеМОя реактПра Ватцз-устаМПвкО +tile.fwatz_conductor.name=4000K суперпрПвПЎящОй ЌагМОт +tile.fwatz_cooler.name=СтеМка регеМератОвМПй цОстерМы хлаЎагеМта +tile.fwatz_core.name=КПМтрПллер реактПра Ватцз-устаМПвкО +tile.fwatz_hatch.name=Люк ЎПступа к реактПру Ватцз-устаМПвкО +tile.fwatz_plasma.name=ДестабОлОзОрПваММая аМтОшрабОЎОуЌМая плазЌа +tile.fwatz_scaffold.name=СтруктурМая пПЎЎержка реактПра Ватцз-устаМПвкО +tile.fwatz_tank.name=ЭлеЌеМт регеМератОвМПй цОстерМы хлаЎагеМта +tile.gas_asbestos.name=ЧастОцы асбеста в вПзЎухе +tile.gas_coal.name=ВПзЎушМая угПльМая пыль +tile.gas_duct.name=ГазПвая труба +tile.gas_duct_solid.name=ППкрытая газПвая труба +tile.gas_explosive.name=ВзрывППпасМый газ +tile.gas_flammable.name=ГПрючОй газ +tile.gas_meltdown.name=Газ Оз актОвМПй зПМы +tile.gas_monoxide.name=УгарМый газ +tile.gas_radon.name=РаЎПМ +tile.gas_radon_dense.name=ПлПтМый раЎПМ +tile.gas_radon_tomb.name=МПгОльМый газ +tile.geiger.name=СчетчОк Гейгера +tile.glass_ash.name=ПепельМПе стеклП +tile.glass_boron.name=БПрМПе стеклП +tile.glass_lead.name=СвОМцПвПе стеклП +tile.glass_polonium.name=ППлПМОевПе стеклП +tile.glass_quartz.name=КварцевПе стеклП +tile.glass_trinitite.name=ТрОМОтОтПвПе стеклП +tile.glass_uranium.name=УраМПвПе стеклП +tile.glyphid_base.name=БлПк улья глОфОЎПв +tile.glyphid_spawner.name=СпавМер улья глОфОЎПв +tile.gneiss_brick.name=СлаМцевые кОрпОчО +tile.gneiss_chiseled.name=ВысечеММый слаМец +tile.gneiss_tile.name=СлаМцевая плОтка +tile.gravel_diamond.name=ИзЌельчеММые алЌазы +tile.gravel_obsidian.name=ИзЌельчеММый ПбсОЎОаМ +tile.hadron_access.name=ТерЌОМал ЎПступа ускПрОтеля частОц +tile.hadron_analysis.name=СтеМка каЌеры ускПрОтеля частОц +tile.hadron_analysis_glass.name=ОкМП каЌеры ускПрОтеля частОц +tile.hadron_coil_alloy.name=ПлПтМая сверхпрПвПЎящая катушка +tile.hadron_coil_chlorophyte.name=ПлПтМая хлПрПфОтПвая катушка +tile.hadron_coil_gold.name=ПлПтМая зПлПтая катушка +tile.hadron_coil_magtung.name=ПлПтМая сверхпрПвПЎящая 4000K катушка +tile.hadron_coil_mese.name=ПлПтМая Ќесе катушка +tile.hadron_coil_neodymium.name=ПлПтМая МеПЎОЌПвая катушка +tile.hadron_coil_schrabidate.name=ПлПтМая шрабОЎатавая катушка +tile.hadron_coil_schrabidium.name=ПлПтМая шрабОЎОевая катушка +tile.hadron_coil_starmetal.name=ПлПтМая звёзЎМПЌеталлОческая катушка +tile.hadron_cooler.name=Кулер ускПрОтеля частОц +tile.hadron_cooler.desc=МПщМПсть ПхлажЎеМОя: 10$ППрПг переПхлажЎеМОя: 10$БПМус: +10%%$Ктраф переПхлажЎеМОя: -25%% +tile.hadron_cooler_mk2.name=Кулер ускПрОтеля частОц - The Palindrome Special +tile.hadron_cooler_mk2.desc=МПщМПсть ПхлажЎеМОя: 5$ЀуМкцОя эффектОвМПстО: 2-(ПхлаЎ-15)²/225$Макс. штраф: -90%% +tile.hadron_core.name=ЯЎрП ускПрОтеля частОц +tile.hadron_diode.name=ДОПЎ частОц КПтткО +tile.hadron_plating.name=ОбшОвка ускПрОтеля частОц +tile.hadron_plating_black.name=ОбшОвка ускПрОтеля частОц (ЧёрМый) +tile.hadron_plating_blue.name=ОбшОвка ускПрОтеля частОц (СОМОй) +tile.hadron_plating_glass.name=ОбшОвка ускПрОтеля частОц (ОкПшкП) +tile.hadron_plating_striped.name=ОбшОвка ускПрОтеля частОц (Крутые пПлПсы ПпасМПстО) +tile.hadron_plating_voltz.name=ОбшОвка ускПрОтеля частОц (ВОЛЬТЗ) +tile.hadron_plating_yellow.name=ОбшОвка ускПрОтеля частОц (Жёлтый) +tile.hadron_power.name=ППрт пОтаМОя ускПрОтеля частОц (1MHE) +tile.hadron_power_10m.name=ППрт пОтаМОя ускПрОтеля частОц (10MHE) +tile.hadron_power_100m.name=ППрт пОтаМОя ускПрОтеля частОц (100MHE) +tile.hadron_power_1g.name=ППрт пОтаМОя ускПрОтеля частОц (1GHE) +tile.hadron_power_10g.name=ППрт пОтаМОя ускПрОтеля частОц (10GHE) +tile.hazmat.name=БлПк защОтМПй ткаМО +tile.heater_electric.name=ЭлектрОческОй Магреватель +tile.heater_electric.desc=ПрПОзвПЎОт теплП, ОспПльзуя эМергОю.$ПрОМОЌает теплП сМОзу, эффектОвМПсть 85%%.$МПжМП МастрПОть ПтверткПй +tile.heater_firebox.name=ТПпка +tile.heater_firebox.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП. +tile.heater_heatex.name=ТеплППбЌеММый Магреватель +tile.heater_heatex.desc=ВыЎеляет теплП Оз гПрячОх жОЎкПстей. +tile.heater_oilburner.name=ЖОЎкПстМый бПйлер +tile.heater_oilburner.desc=ПрПОзвПЎОт теплП, сжОгая жОЎкПе тПплОвП.$МПжет быть МастрПеМП с пПЌПщью ПтверткО. +tile.heater_oven.name=НагревательМая печь +tile.heater_oven.desc=ПрПОзвПЎОт теплП, сжОгая твёрЎПе тПплОвП.$ПрОМОЌает теплП сМОзу с 50%% эффектОвМПстью. +tile.hev_battery.name=Батарея кПстюЌа +tile.machine_hydrotreater.name=ГОЎрППчОстОтель +tile.impact_dirt.name=ВыжжеМая зеЌля +tile.icf.name=РеактПр ОМерцОальМПгП терЌПяЎерМПгП сОМтеза (ICF) +tile.icf_block.name=Лазер ICF +tile.icf_component.name=СтабОлОзатПр ICF +tile.icf_component.structure.name=ОбшОвка ICF +tile.icf_component.structure_bolted.name=ОбшОвка ICF (ЗаклепаММый) +tile.icf_component.vessel.name=СтеМка актОвМПй зПМы ICF +tile.icf_component.vessel_welded.name=СтеМка актОвМПй зПМы ICF (СвареММая) +tile.icf_controller.name=КПМтрПллер лазера ICF +tile.icf_laser_component.capacitor.name=ЛазерМый кПМЎеМсатПр ICF +tile.icf_laser_component.casing.name=ОбшОвка лазера ICF +tile.icf_laser_component.cell.name=ЛазерМая ячейка ICF +tile.icf_laser_component.emitter.name=ЛазерМый Озлучатель ICF +tile.icf_laser_component.port.name=ППрт лазера ICF +tile.icf_laser_component.turbo.name=ТурбПусОлОтель лазера ICF +tile.iter.name=ТерЌПяЎерМый реактПр +tile.ladder_aluminium.name=АлюЌОМОевая лестМОца +tile.ladder_cobalt.name=КПбальтПвая лестМОца +tile.ladder_copper.name=МеЎМая лестМОца +tile.ladder_gold.name=ЗПлПтая лестМОца +tile.ladder_iron.name=ЖелезМая лестМОца +tile.ladder_lead.name=СвОМцПвая лестМОца +tile.ladder_steel.name=СтальМая лестМОца +tile.ladder_sturdy.name=ПрПчМая ЎеревяММая лестМОца +tile.ladder_titanium.name=ТОтаМПвая лестМОца +tile.ladder_tungsten.name=ВПльфраЌПвая лестМОца +tile.lamp_demon.name=ЛаЌпа Оз заряЎа-ЎеЌПМа +tile.lamp_tritium_blue_off.name=СОМяя трОтОевая лаЌпа +tile.lamp_tritium_blue_on.name=СОМяя трОтОевая лаЌпа +tile.lamp_tritium_green_off.name=ЗелёМая трОтОевая лаЌпа +tile.lamp_tritium_green_on.name=ЗелёМая трОтОевая лаЌпа +tile.lantern.name=СветОльМОк +tile.lantern_behemoth.name=Старый светОльМОк +tile.launch_pad.name=СОлПсМая пускПвая плПщаЎка +tile.launch_pad_large.name=ПускПвая плПщаЎка +tile.launch_pad_rusted.name=Старая пускПвая плПщаЎка +tile.launch_table.name=БПльшая пускПвая плПщаЎка +tile.leaves_layer.name=УпавшОе лОстья +tile.lox_barrel.name=БПчка с жОЎкОЌ кОслПрПЎПЌ +tile.machine_amgen.name=ГеМератПр Ма фПМПвПй раЎОацОО +tile.machine_ammo_press.name=Ammo Press +tile.machine_arc_furnace.name=ЭлектрОческая ЎугПвая печь +tile.machine_arc_furnace_off.name=ДугПвая печь +tile.machine_arc_furnace_on.name=ДугПвая печь +tile.machine_arc_welder.name=ДугПвПй сварщОк +tile.machine_armor_table.name=СтПл ЌПЎОфОкацОО брПМО +tile.machine_ashpit.name=ЗПльМОк +tile.machine_ashpit.desc=СПбОрает зПлу Оз тПпПк О МагревательМых печей +tile.machine_assembler.name=СбПрПчМая ЌашОМа +tile.machine_assemfac.name=СбПрПчМый завПЎ +tile.machine_autocrafter.name=АвтПЌатОческОй верстак +tile.machine_autosaw.name=АвтПЌатОческая пОла +tile.machine_autosaw.desc=Срубает блОжайшОе растеМОя, пересажОвает Ўеревья$ПрОМОЌает:$-ДревесМПе ЌаслП$-ЭтаМПл$-РыбМПе ЌаслП$-Тяжелую Мефть +tile.machine_bat9000.name=Охереть-бПльшая цОстерМа 9000 +tile.machine_battery.name=ЭМергПхраМОлОще +tile.machine_battery_potato.name=КартПфельМая батарея +tile.machine_boiler.name=БПйлер +tile.machine_boiler.desc=БПльшПй бПйлер Ўля кОпячеМОя вПЎы ОлО Магрева МефтО.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t +tile.machine_boiler_electric_off.name=ЭлектрОческОй Магреватель МефтО +tile.machine_boiler_electric_on.name=ЭлектрОческОй Магреватель МефтО +tile.machine_boiler_off.name=НагревательМефтО +tile.machine_catalytic_cracker.name=БашМя каталОтОческПгП крекОМга +tile.machine_catalytic_reformer.name=КаталОтОческОй рефПрЌер +tile.machine_centrifuge.name=ЊеМтрОфуга +tile.machine_chemfac.name=ХОЌОческОй завПЎ +tile.machine_chemplant.name=ХОЌОческая устаМПвка +tile.machine_chungus.name=ПарПвая турбОМа "ЛевОафаМ" +tile.machine_chungus.desc=Efficiency: 85%% +tile.machine_coal_off.name=ГеМератПр вМутреММегП сгПраМОя +tile.machine_coal_on.name=ГеМератПр вМутреММегП сгПраМОя +tile.machine_coker.name=КПксПвая устаМПвка +tile.machine_coker.desc=КПксует жОЎкПсть, сПзЎавая жОЎкую пПбПчку.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.025 TU/t +tile.machine_combine_factory.name=Печь Ўля сталО АльяМса +tile.machine_combustion_engine.name=ПрПЌышлеММый ЎвОгатель вМутреММегП сгПраМОя +tile.machine_compressor.name=КПЌпрессПр +tile.machine_condenser.name=КПМЎеМсатПр пара +tile.machine_condenser_powered.name=МПщМый кПМЎеМсатПр пара +tile.machine_controller.name=БлПк уЎалёММПгП ЎПступа к реактПру +tile.machine_converter_he_rf.name=КПМвертер эМергОО HE в RF +tile.machine_converter_rf_he.name=КПМвертер эМергОО RF в HE +tile.machine_conveyor_press.name=КПМвейерМый пресс +tile.machine_conveyor_press.desc=ЛеМта ЎвОгается слевП-МаправП$ПКМ чтПбы устаМПвОть штаЌп$ПКМ ПтвёрткПй чтПбы сМять штаЌп +tile.machine_crucible.name=ПлавОльМя +tile.machine_crystallizer.name=РуЎМый ПкОслОтель +tile.machine_cyclotron.name=ЊОклПтрПМ +tile.machine_detector.name=ДетектПр ЌПщМПстО tile.machine_deuterium_extractor.name=ЭкстрактПр тяжёлПй вПЎы tile.machine_deuterium_tower.name=КПлПММа ПчОсткО ЎейтерОя сульфОЎМыЌ прПцессПЌ ГОрЎлера - -tile.machine_mining_laser.desc=3x3x3 Multiblock$Only placeable on a ceiling. -tile.machine_sing_gen.name=Watz Super-Compressor (BETA) -tile.meteor_battery.desc=Provides infinite charge to tesla coils -tile.mush_block.name=Giant Glowing Mushroom Block -tile.mush_block_stem.name=Giant Glowing Mushroom Stem -tile.ore_oil.desc=You weren't supposed to mine that.$Come on, get a derrick you doofus. -tile.pane_acrylic.name=Acrylic Pane -tile.pane_actinium.name=Actinium Glass Pane -tile.storage_aux_fdd.name=Auxiliary Floppy Disk Drive -tile.storage_aux_optical_bd=Auxiliary Elite Optical Drive -tile.storage_aux_optical_cd=Auxiliary Basic Optical Drive -tile.storage_aux_optical_dvd=Auxiliary Advanced Optical Drive -tile.storage_aux_sdd.name=Auxiliary USB Drive -tile.storage_hdd.name=Hard Disk Drive Storage Unit -tile.storage_magnetic.name=Magnetic Data Storage Unit -tile.storage_sdd.name=Solid State Drive Storage Unit +tile.machine_diesel.name=ДОзельМый геМератПр +tile.machine_difurnace_extension.name=РасшОрОтель ЎПЌеММПй печО +tile.machine_difurnace_off.name=ДПЌеММая печь +tile.machine_difurnace_on.name=ДПЌеММая печь +tile.machine_difurnace_rtg_off.name=ЯЎерМая ЎПЌеММая печь +tile.machine_difurnace_rtg_on.name=ЯЎерМая ЎПЌеММая печь +tile.machine_dineutronium_battery.name=Спарк-эМергПхраМОлОще +tile.machine_drain.name=СлОвМая труба +tile.machine_drill.name=АвтПЌатОческОй гПрМый бур +tile.machine_electric_furnace_off.name=ЭлектрОческая печь +tile.machine_electric_furnace_on.name=ЭлектрОческая печь +tile.machine_electrolyser.name=ЭлектрПлОзёр +tile.machine_epress.name=ЭлектрОческОй пресс +tile.machine_excavator.name=БПльшПй гПрМый бур +tile.machine_exposure_chamber.name=КаЌера ПблучеМОя частОцаЌО +tile.machine_fel.name=Лазер Ма свПбПЎМых электрПМах (FEL) +tile.machine_fensu.name=ЭМЭХ +tile.machine_flare.name=ГазПвая башМя +tile.machine_fluidtank.name=ЊОстерМа +tile.machine_forcefield.name=Излучатель сОлПвПгП пПля +tile.machine_fraction_tower.name=РектОфОкацОПММая кПлПММа +tile.machine_fracking_tower.name=БашМя гОЎрПразрыва пласта +tile.machine_funnel.name=КПЌбОМатПрМая вПрПМка +tile.machine_funnel.desc=Automatically compresses items in a 2x2 or 3x3 crafting grid$Top: Input$Bottom: Output$Side: Output for clearing ingredients +tile.machine_gascent.name=ГазПвая цеМтрОфуга +tile.machine_generator.name=ЯЎерМый реактПр (УстаревшОй) +tile.machine_geo.name=ГеПтерЌальМый геМератПр +tile.machine_hephaestus.name=ГеПтерЌальМый теплППбЌеМОк +tile.machine_icf_press.name=ТПплОвМый пресс ICF +tile.machine_icf_press.desc=НапПлМяет тПплОвМые пеллеты ICF$Левый тПплОвМый слПт прОМОЌается сверху/сМОзу, правый - пП бПкаЌ$МюПМы О пеллеты ЌПгут пПЎаваться с любПй стПрПМы +tile.machine_industrial_boiler.name=ПрПЌышлеММый бПйлер +tile.machine_industrial_boiler.desc=БПльшПй бПйлер, в кПтПрПЌ ЌПжМП вскОпятОть вПЎу ОлО разПгреть Мефть.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t$Не ЌПжет взПрваться +tile.machine_industrial_generator.name=ПрПЌышлеММый геМератПр +tile.machine_keyforge.name=СтПл Ќастера пП заЌкаЌ +tile.machine_large_turbine.name=ПрПЌышлеММая парПвая турбОМа +tile.machine_large_turbine.desc=Efficiency: 100%% +tile.machine_liquefactor.name=ПрПЌышлеММый разжОжОтель +tile.machine_liquefactor.desc=МПщМая ЌашОМа Ўля превращеМОя преЎЌетПв в жОЎкПстО.$ППставляется с уМОверсальМыЌО каталОтОческОЌО кПЌпПМеМтаЌО, МагревательМыЌО элеЌеМтаЌО$О встрПеММыЌ гОЎратПрПЌ Ўля МефтехОЌОческПгП сжОжеМОя. +tile.machine_lithium_battery.name=ЛОтОй-ОПММПе эМергПхраМОлОще +tile.machine_microwave.name=МОкрПвПлМПвка +tile.machine_mining_laser.name=КахтёрскОй лазер +tile.machine_minirtg.name=РаЎОПОзПтПпМая ячейка +tile.machine_missile_assembly.name=РакетПсбПрПчМая стаМцОя +tile.machine_mixer.name=ПрПЌышлеММый сЌесОтель +tile.machine_nuke_furnace_off.name=ЯЎерМая печь +tile.machine_nuke_furnace_on.name=ЯЎерМая печь +tile.machine_orbus.name=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО +tile.machine_ore_slopper.name=ПерерабПтчОк беЎрПкПвПй руЎы +tile.machine_powerrtg.name=ПТ-ОзПтПпМая ячейка +tile.machine_press.name=Пресс +tile.machine_puf6_tank.name=БПчка гексафтПрОЎа плутПМОя +tile.machine_pumpjack.name=СтаМПк-качалка +tile.machine_pyrooven.name=ПОрПлОзМая печь +tile.machine_radar.name=РаЎар +tile.machine_radar_large.name=БПльшПй раЎар +tile.machine_radgen.name=РаЎОацОПММый ЎвОгатель +tile.machine_radiolysis.name=РаЎОПОзПтПпМый терЌПэлектрОческОй геМератПр О каЌера раЎОПлОза +tile.machine_reactor.name=РеактПр-разЌМПжОтель +tile.machine_reactor_small.name=ИсслеЎПвательскОй реактПр +tile.machine_refinery.name=НефтеперерабатывающОй завПЎ +tile.machine_reix_mainframe.name=МэйМфрейЌ Rei-X (WIP) +tile.machine_rotary_furnace.name=Rotary Furnace +tile.machine_rtg_blue.name=КПМвекцОПММый геМератПр +tile.machine_rtg_cyan.name=ГеМератПр КрабОЎОевПгП распаЎа (WIP) +tile.machine_rtg_furnace_off.name=РИТЭГ-печь +tile.machine_rtg_furnace_on.name=РИТЭГ-печь +tile.machine_rtg_green.name=ВертОцОевый геМератПр бПгатства +tile.machine_rtg_grey.name=РИТЭГ-геМератПр +tile.machine_rtg_orange.name=СОльМый RT геМератПр +tile.machine_rtg_purple.name=ГеМератПр аММОгОляцОО аМтОЌатерОО +tile.machine_rtg_red.name=ЀульЌОМацОПММый геМератПр +tile.machine_rtg_yellow.name=АвстралОевый супертПплОвМый геМератПр +tile.machine_satlinker.name=МеМеЎжер ID спутМОкПв +tile.machine_sawmill.name=ЛесПпОлка Ма геМератПре СтОрлОМга +tile.machine_sawmill.desc=Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МОМ. пПтреблеМОе: 100 TU/t, Макс. пПтреблеМОе intake: 300 TU/t +tile.machine_schrabidium_battery.name=КрабОЎОевПе эМергПхраМОлОще +tile.machine_schrabidium_transmutator.name=КрабОЎОевый траМсЌутатПр +tile.machine_selenium.name=РаЎОальМый ЎвОгатель +tile.machine_shredder.name=ИзЌельчОтель +tile.machine_silex.name=КаЌера лазерМПгП разЎелеМОя ОзПтПпПв (SILEX) +tile.machine_siren.name=СОреМа +tile.machine_solar_boiler.name=БПйлер сПлМечМПй башМО +tile.machine_soldering_station.name=ПаяльМый стПл +tile.machine_solidifier.name=ПрПЌышлеММый ПтверЎОтель +tile.machine_solidifier.desc=УМОверсальМая ЌашОМа, ПсМащеММая сОстеЌаЌО ПхлажЎеМОя О ЎругОЌО$уМОверсальМыЌО ОМструЌеМтаЌО Ўля превращеМОя жОЎкПстей в тверЎые вещества с ОспПльзПваМОеЌ разлОчМых$прПцессПв, такОх как заЌПражОваМОе О МефтехОЌОческая пПлОЌерОзацОя. +tile.machine_spp_bottom.name=ГеМератПр пПтеМцОала ZPE (МОз) +tile.machine_spp_top.name=ГеМератПр пПтеМцОала ZPE (верх) +tile.machine_steam_engine.name=ПарПвПй ЎвОгатель +tile.machine_steam_engine.desc=ЭффектОвМПсть: 85%% +tile.machine_stirling.name=ГеМератПр СтОрлОМга +tile.machine_stirling.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 300 TU/t$ЭффектОвМПсть: 50%% +tile.machine_stirling_creative.name=ТвПрческОй геМератПр СтОрлОМга +tile.machine_stirling_creative.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$БескПМечМПе пПтреблеМОе/t$ЭффектОвМПсть: 100%% +tile.machine_stirling_steel.name=УкреплёММый геМератПр СтОрлОМга +tile.machine_stirling_steel.desc=Превращает теплП в эМергОю. Требует вМешМОй ОстПчМОк тепла.$ИспПльзует бПлее тяжёлую шестерМю, чтПбы выЎержОвать высПкОе теЌпературы.$СкПрПсть теплПпереЎачО: T*0.1 TU/t$МаксОЌальМПе пПтреблеМОе: 1500 TU/t$ЭффектОвМПсть: 50%% +tile.machine_storage_drum.name=БПчка Ўля захПрПМеМОя яЎерМых ПтхПЎПв +tile.machine_strand_caster.name=МашОМа МепрерывМПгП лОтья загПтПвПк +tile.machine_telelinker.name=СтПл телелОМка +tile.machine_teleporter.name=ТелепПрт +tile.machine_tower_large.name=ГраЎОрМя +tile.machine_tower_small.name=ВспПЌПгательМая граЎОрМя +tile.machine_transformer.name=ТраМсфПрЌатПр 10k-20Гц +tile.machine_transformer_20.name=ТраМсфПрЌатПр 10k-1Гц +tile.machine_transformer_dnt.name=ТраМсфПрЌатПр ДНТ-20Гц +tile.machine_transformer_dnt_20.name=ТраМсфПрЌатПр ДНТ-1Гц +tile.machine_turbine.name=ПарПвая турбОМа +tile.machine_turbine.desc=Efficiency: 85%% +tile.machine_turbinegas.name=ГазПвая турбОМа кПЌбОМОрПваММПгП цОкла +tile.machine_turbofan.name=ТурбПвеМтОлятПр +tile.machine_uf6_tank.name=БПчка гексафтПрОЎа ураМа +tile.machine_vacuum_distill.name=ВакууЌМый МефтеперерабатывающОй завПЎ +tile.machine_waste_drum.name=БПчка с ПтрабПтаММыЌ тПплОвПЌ +tile.machine_wood_burner.name=ГеМератПр Ма ЎрПвах +tile.machine_wood_burner.desc=ГеМерОрует 100HE/тОк$СПбОрает зПлу$МПжет сжОгать жОЎкПстО с 25%% эффектОвМПстью за 1ЌБ/с +tile.machine_well.name=НефтяМая вышка +tile.machine_zirnox.name=ЯЎерМый реактПр ЊОрМПкс +tile.marker_structure.name=Маркер Ўля ЌМПгПблПчМых структур +tile.mass_storage.name=НакПпОтельМый блПк +tile.meteor_battery.name=ГеМератПр статОческПгП электрОчества Оз звезЎМПгП Ќеталла +tile.meteor_brick.name=МетеПрОтМые кОрпОчО +tile.meteor_brick_chiseled.name=ВысечеММые ЌетеПрОтМые кОрпОчО +tile.meteor_brick_cracked.name=ТресМувшОе ЌетеПрОтМые кОрпОчО +tile.meteor_brick_mossy.name=ЗаЌшелые ЌетеПрОтМые кОрпОчО +tile.meteor_pillar.name=МетеПрОтМый стПлб +tile.meteor_polished.name=ППлОрПваММый ЌетеПрОтМый блПк +tile.meteor_spawner.name=СбПрщОк кОберкрабПв +tile.mine_ap.name=ПрПтОвПпехПтМая ЌОМа +tile.mine_fat.name=МОМа-"ТПлстяк" +tile.mine_he.name=ПрПтОвПтаМкПвая ЌОМа +tile.mine_shrap.name=МОМа сП шрапМелью +tile.moon_turf.name=ЛуММый груМт +tile.mud_block.name=ТПксОчМые ПтхПЎы +tile.muffler.name=ГлушОтель +tile.mush.name=СветящОйся грОб +tile.ntm_dirt.name=Грязь +tile.nuke_boy.name=Малыш +tile.nuke_custom.name=КастПЌМая бПЌба +tile.nuke_fleija.name=Ѐ.Л.Е.Я +tile.nuke_fstbmb.name=Жар-бПЌба +tile.nuke_gadget.name=ГаЎжет +tile.nuke_man.name=ТПлстяк +tile.nuke_mike.name=ИвО Майк +tile.nuke_n2.name=N²-ЌОМа +tile.nuke_n45.name=МПрская ЌОМа N45 +tile.nuke_prototype.name=ПрПтПтОп +tile.nuke_solinium.name=СОМОй ОпПласкОватель +tile.nuke_tsar.name=Њарь-бПЌба +tile.oil_duct.name=Труба Ўля МефтО +tile.oil_duct_solid.name=ППкрытая труба Ўля МефтО +tile.oil_pipe.name=Труба Ўля ОзвлечеМОя МеПчОщеММПй МефтО +tile.oil_spill.name=РазлОтая Мефть +tile.ore_alexandrite.name=АлексаМЎрОтПвая руЎа +tile.ore_aluminium.name=АлюЌОМОевая руЎа +tile.ore_asbestos.name=АсбестПвая руЎа +tile.ore_australium.name=АвстралОевая руЎа +tile.ore_basalt_asbestos.name=БПгатый асбестПЌ базальт +tile.ore_basalt_fluorite.name=БПгатый флюПрОтПЌ базальт +tile.ore_basalt_gem.name=БПгатый саЌПцветаЌО базальт +tile.ore_basalt_molysite.name=БПгатый ЌПлОзОтПЌ базальт +tile.ore_basalt_sulfur.name=БПгатый серПй базальт +tile.ore_bedrock.name=БеЎрПкПвая руЎа +tile.ore_bedrock_coltan.name=БеЎрПкПвая кПлтаМПвая руЎа +tile.ore_bedrock_oil.name=БеЎрПкПвый МефтяМПй пласт +tile.ore_beryllium.name=БерОллОевая руЎа +tile.ore_cinnebar.name=КОМПварь +tile.ore_coal_oil.name=МасляМОстая угПльМая руЎа +tile.ore_coal_oil_burning.name=ГПрящая ЌасляМОстая угПльМая руЎа +tile.ore_cobalt.name=КПбальтПвая руЎа +tile.ore_coltan.name=КПлтаМПвая руЎа +tile.ore_copper.name=МеЎМая руЎа +tile.ore_daffergon.name=ДеллОт +tile.ore_depth_borax.name=ГлубОММая бура +tile.ore_depth_cinnebar.name=ГлубОММая кОМПварь +tile.ore_depth_nether_neodymium.name=АЎская глубОММая МеПЎОЌПвая руЎа +tile.ore_depth_zirconium.name=ГлубОММая цОркПМОевая руЎа +tile.ore_fluorite.name=ЀлюПрОт +tile.ore_gneiss_asbestos.name=СлаМцевая асбестПвая руЎа +tile.ore_gneiss_copper.name=СлаМцевая ЌеЎМая руЎа +tile.ore_gneiss_gas.name=СлаМцевый газ +tile.ore_gneiss_gold.name=СлаМцевая зПлПтая руЎа +tile.ore_gneiss_iron.name=СлаМцевая железМая руЎа +tile.ore_gneiss_lithium.name=СлаМцевая лОтОевая руЎа +tile.ore_gneiss_rare.name=СлаМцевая реЎкПзеЌельМая руЎа +tile.ore_gneiss_schrabidium.name=СлаМцевая шрабОЎОевая руЎа +tile.ore_gneiss_uranium.name=СлаМцевая ураМПвая руЎа +tile.ore_gneiss_uranium_scorched.name=ОбПжёММая слаМцевая ураМПвая руЎа +tile.ore_lead.name=СвОМцПвая руЎа +tile.ore_lignite.name=Бурый угПль +tile.ore_meteor.aluminium.name=МетеПрОтМая алюЌОМОевая руЎа +tile.ore_meteor.cobalt.name=МетеПрОтМая кПбальтПвая руЎа +tile.ore_meteor.copper.name=МетеПрОтМая ЌеЎМая руЎа +tile.ore_meteor.iron.name=МетеПрОтМая железМая руЎа +tile.ore_meteor.rareearth.name=МетеПрОтМая реЎкПзеЌельМая руЎа +tile.ore_meteor_aluminium.name=Meteor Aluminium Ore +tile.ore_meteor_copper.name=Meteor Copper Ore +tile.ore_meteor_lead.name=МетеПрОтМая свОМцПвая руЎа +tile.ore_meteor_lithium.name=МетеПрОтМая лОтОевая руЎа +tile.ore_meteor_starmetal.name=РуЎа звёзЎМПгП Ќеталла +tile.ore_meteor_sulfur.name=МетеПрОтМая серМая руЎа +tile.ore_meteor_thorium.name=МетеПрОтМая тПрОевая руЎа +tile.ore_meteor_titanium.name=МетеПрОтМая тОтаМПвая руЎа +tile.ore_meteor_tungsten.name=МетеПрОтМая вПльфраЌПвая руЎа +tile.ore_meteor_uranium.name=МетеПрОтМая ураМПвая руЎа +tile.ore_nether_coal.name=ГПрящая руЎа аЎскПгП угля +tile.ore_nether_cobalt.name=АЎская кПбальтПвая руЎа +tile.ore_nether_fire.name=АЎская фПсфПрМая руЎа +tile.ore_nether_plutonium.name=АЎская плутПМОевая руЎа +tile.ore_nether_schrabidium.name=АЎская шрабОЎОевая руЎа +tile.ore_nether_smoldering.name=ТлеющОй аЎскОй каЌеМь +tile.ore_nether_sulfur.name=АЎская серМая руЎа +tile.ore_nether_tungsten.name=АЎская вПльфраЌПвая руЎа +tile.ore_nether_uranium.name=АЎская ураМПвая руЎа +tile.ore_nether_uranium_scorched.name=ОбПжёММая аЎская ураМПвая руЎа +tile.ore_niter.name=СелОтра +tile.ore_oil.name=НефтяМПй карЌаМ +tile.ore_oil_empty.name=ПустПй МефтяМПй карЌаМ +tile.ore_oil_sand.name=БОтуЌПзМый песПк +tile.ore_random.name=РуЎа %s +tile.ore_rare.name=РеЎкПзеЌельМая руЎа +tile.ore_reiium.name=РеООт +tile.ore_schrabidium.name=КрабОЎОевая руЎа +tile.ore_sellafield_diamond.name=СеллафОтПвая алЌазМая руЎа +tile.ore_sellafield_emerald.name=СеллафОтПвая ОзуЌруЎМая руЎа +tile.ore_sellafield_radgem.name=СеллафОтПвый раЎОПактОвМый саЌПцвет +tile.ore_sellafield_schrabidium.name=СеллафОтПвая шрабОЎОевая руЎа +tile.ore_sellafield_uranium_scorched.name=ОбПжжеММая селлафОтПвая ураМПвая руЎа +tile.ore_sulfur.name=Сера +tile.ore_tektite_osmiridium.name=ПереЌешаММый с ПсЌОрОЎОеЌ ТектОт +tile.ore_thorium.name=ТПрОй +tile.ore_tikite.name=ТрОксОт +tile.ore_titanium.name=ТОтаМПвая руЎа +tile.ore_tungsten.name=ВПльфраЌПвая РуЎа +tile.ore_unobtainium.name=БрайтблеМЎ +tile.ore_uranium.name=УраМПвая руЎа +tile.ore_uranium_scorched.name=ОбПжжеММая ураМПвая руЎа +tile.ore_verticium.name=ДПлларПвый ЗелёМый ЌОМерал +tile.ore_volcano.name=ГеПтерЌальМый ОстПчМОк +tile.ore_weidanium.name=ВейЎОтОт +tile.pa_beamline.name=Beamline +tile.pa_beamline.desc=Optional part, connects different accelerator parts.$Also allows to cheaply extend the ring's size,$for meeting dipole coil size requirements. +tile.pa_detector.name=Particle Detector +tile.pa_detector.desc=Requires cooling!$Accepts particles and performs the recipe.$Recipes may require containers (particle capsules).$Particle needs a defocus of 0 to be accepted. +tile.pa_dipole.name=Dipole Magnets +tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with restone applied.$Requires large coils to work. +tile.pa_quadrupole.name=Quadrupole Magnets +tile.pa_quadrupole.desc=Requires cooling!$Reduces particle defocus by 100 points.$Requires large coils to work. +tile.pa_rfc.name=RF Cavity +tile.pa_rfc.desc=Requires cooling!$Accelerates particles by 100 points,$and adds 100 points of defocus.$The particle will crash when reaching points of 1000 defocus. +tile.pa_source.name=Particle Source +tile.pa_source.desc=Requires cooling!$Uses two items to create a particle. +tile.part_emitter.name=ДекПратОвМый ОстПчМОк частОц +tile.pedestal.name=ПьеЎестал +tile.pink_barrel.name=КерПсОМПвая бПчка +tile.pink_log.name=РПзПвПе ЎеревП +tile.pink_planks.name=РПзПвые ЎПскО +tile.pink_slab.name=ПлОта Оз рПзПвПгП Ўерева +tile.pink_stairs.name=СтупеМькО Оз рПзПвПгП Ўерева +tile.piston_inserter.name=ВставщОк +tile.piston_inserter.desc=МПжет прОМОЌать ПЎОМ преЎЌет$ЕслО пПЎаМ сОгМал реЎстПуМа, тП вставОт преЎЌет в прПсверлеММый графОт$Все преЎЌеты в прПсверлеММПЌ графОте в цепПчке буЎут сЎвОМуты Ма ПЎОМ блПк$Требуется ПЎОМ блПк вПзЎуха ЌежЎу графОтПЌ +tile.plant_dead.name=МертвПе растеМОе +tile.plant_flower.cd0.name=ГПрчОчМая Ова +tile.plant_flower.cd1.name=ГПрчОчМая Ова +tile.plant_flower.foxglove.name=НаперстяМка +tile.plant_flower.nightshade.name=БеллаЎПММа +tile.plant_flower.tobacco.name=Табак +tile.plant_flower.weed.name=КПМПпля +tile.plant_reeds.name=КаЌышО +tile.plant_tall.cd2.name=ГПрчОчМая Ова +tile.plant_tall.cd3.name=ГПрчОчМая Ова +tile.plant_tall.cd4.name=ГПрчОчМая Ова (ВырПсла) +tile.plant_tall.weed.name=КПМПпля +tile.plasma.name=ПлазЌа +tile.plasma_heater.name=Нагреватель плазЌы +tile.plushie.name=Плюшевая Огрушка %s +tile.pole_satellite_receiver.name=СпутМОкПвая тарелка +tile.pole_top.name=АМтеММа +tile.press_preheater.name=ВМешМОй Магреватель пресса +tile.pribris.name=ОблПЌкО РБМК +tile.pribris_burning.name=ГПрящОе ПблПЌкО РБМК +tile.pribris_digamma.name=ППчерМевшОе ПблПЌкО РБМК +tile.pribris_radiating.name=ТлеющОе ПблПЌкО РБМК +tile.pump_electric.name=ЭлектрОческОй МасПс Ўля груМтПвых вПЎ +tile.pump_electric.desc=ИспПльзует электрОчествП Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 10,000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 +tile.pump_steam.name=ПарПвПй МасПс Ўля груМтПвых вПЎ +tile.pump_steam.desc=ИспПльзует пар Ўля выкачОваМОя груМтПвых вПЎ$Выкачывает ЎП 1000ЌБ/тОк$ДПлжМП быть разЌещеМП МОже Y:70 +tile.pwr_block.name=ВПЎП-вПЎяМПй эМергетОческОй реактПр (ВВЭР) +tile.pwr_casing.name=ВМешМяя ПбшОвка ВВЭР +tile.pwr_casing.desc=Для фПрЌОрПваМОя реактПра МеПбхПЎОЌП пПкрыть все вМутреММОе частО$РазЌещеМОе: ОбшОвка +tile.pwr_channel.name=КаМалы с ПхлаЎОтелеЌ ВВЭР +tile.pwr_channel.desc=ИспПльзует теплП кПрпуса Ўля Магрева ПхлажЎающей жОЎкПстО$РазЌещеМОе: ЛюбПе +tile.pwr_control.name=РегулОрующОе стержМО ВВЭР +tile.pwr_control.desc=ППзвПляет управлять разЌещёММыЌО тПплОвМыЌО стержМяЌО$РазЌещеМОе: ВМутрО, ЌежЎу тПплОвМыЌО стержМяЌО +tile.pwr_controller.name=КПМтрПллер ВВЭР +tile.pwr_controller.desc=ПаМель управлеМОя ВВЭР$РазЌещеМОе: ОбшОвка, тПлькП ПЎОМ Ма весь реактПр$ПКМ чтПбы сПбрать реактПр +tile.pwr_fuel.name=ТПплОвМый стержеМь ВВЭР +tile.pwr_fuel.desc=УвелОчОвает вЌестОЌПсть тПплОва$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть +tile.pwr_heatex.name=ТеплППбЌеММОк ВВЭР +tile.pwr_heatex.desc=ПереЌещает теплП Оз актОвМПй зПМы Ма кПрпус$РазЌещеМОе: ЛюбПе +tile.pwr_heatsink.name=РаЎОатПр ВВЭР +tile.pwr_heatsink.desc=УвелОчОвает теплПеЌкПсть актОвМПй зПМы Ма 5%%$Делает каМалы ПхлажЎающей жОЎкПстО О теплППбЌеММОкО чуть ЌеМее эффектОвМыЌО$РазЌещеМОе: ЛюбПе +tile.pwr_neutron_source.name=ИстПчМОк МейтрПМПв ВВЭР +tile.pwr_neutron_source.desc=ДПбавляет 20 еЎОМОц пПтПка в актОвМую зПМу$РазЌещеМОе: ЛюбПе$ППтПк ЎПстОгает тПплОвМых стержМей еслО ЌежЎу МОЌО МОчегП Мет +tile.pwr_port.name=Люк ЎПступа ВВЭР +tile.pwr_port.desc=ВвПЎ/вывПЎ жОЎкПстей О преЎЌетПв$РазЌещеМОе: ОбшОвка +tile.pwr_reflector.name=НейтрПММый Птражатель ВВЭР +tile.pwr_reflector.desc=Отражает МейтрПМы ПбратМП к тПплОвМыЌ стержМяЌ$РазЌещеМОе: ВМутрО, пПвышает реактОвМПсть$ППЎхПЎОт Ўля ПбшОвкО +tile.rad_lava_block.name=ВулкаМОческая лава +tile.radar_screen.name=ЭкраМ раЎара +tile.radio_telex.name=Телекс +tile.radio_torch_counter.name=РеЎстПуМ-раЎОП счётчОк преЎЌетПв +tile.radio_torch_counter.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СОгМал завОсОт Пт кПлОчества МужМых преЎЌетПв +tile.radio_torch_logic.name=РеЎстПуМ-раЎОП лПгОческОй прОёЌМОк +tile.radio_torch_logic.desc=РазЌещается Ма плПскОх пПверхМПстях ОлО сПвЌестОЌых с кПЌпаратПрПЌ блПках$СПпПставляет сОгМалы красМПгП каЌМя с услПвОяЌО, ПцеМОваеЌыЌО в заЎаММПЌ пПряЎке$ЧОслПвые ОлО стрПкПвые вхПЎы сравМОваются с кПМстаМтПй +tile.radio_torch_receiver.name=РеЎстПуМ-раЎОП прОёЌМОк +tile.radio_torch_receiver.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО +tile.radio_torch_sender.name=РеЎстПуМ-раЎОП переЎатчОк +tile.radio_torch_sender.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СчОтывает реЎстПуМ сОгМал ОлО вхПЎ кПЌпаратПра +tile.radiobox.name=КПрПбка управлеМОя вреЎОтеляЌО РПзеМберга +tile.radiorec.name=FM раЎОП +tile.rail_booster.name=УскПряющОе высПкПскПрПстМые рельсы +tile.rail_highspeed.name=ВысПкПскПрПстМые рельсы +tile.rail_large_buffer.name=СтаМЎартМый буферМый упПрМый рельс (5ÐŒ) +tile.rail_large_curve.name=СтаМЎартМая крОвая кПлея (5ÐŒ) +tile.rail_large_curve_7.name=СтаМЎартМая крОвая кПлея (7ÐŒ) +tile.rail_large_curve_9.name=СтаМЎартМая крОвая рельса (9ÐŒ) +tile.rail_large_ramp.name=СтаМЎартМая раЌпа (5ÐŒ) +tile.rail_large_straight.name=СтаМЎартМая кПлея (5ÐŒ) +tile.rail_large_straight_short.name=СтаМЎартМая кПлея (1ÐŒ) +tile.rail_large_switch.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, левый) +tile.rail_large_switch_flipped.name=Переключатель стаМЎартМПй кПлеО (15ÐŒ, правый) +tile.rail_narrow.name=УзкПкПлейМые вагПМетПчМые рельсы +tile.rail_wood.name=ДеревяММые рельсы +tile.rbmk_absorber.name=БПрМый пПглПтОтель МейтрПМПв РБМК +tile.rbmk_blank.name=СтруктурМая кПлПММа РБМК +tile.rbmk_boiler.name=ПарПвПй каМал РБМК +tile.rbmk_console.name=КПМсПль РБМК +tile.rbmk_cooler.name=ОхлаЎОтель РБМК +tile.rbmk_control.name=РегулОрующОе стержМО РБМК +tile.rbmk_control_auto.name=АвтПЌатОческОе регулОрующОе стержМО РБМК +tile.rbmk_control_mod.name=ЗаЌеЎляющОе регулОрующОе стержМО РБМК +tile.rbmk_crane_console.name=КПМсПль краМа РБМК +tile.rbmk_heater.name=ЖОЎкПстМый Магреватель РБМК +tile.rbmk_heatex.name=ТеплППбЌеММОк РБМК +tile.rbmk_loader.name=ПарПвПй прПвПЎМОк РБМК +tile.rbmk_loader.desc=ППзвПляет РБМК ОЌеть вМОзу сПеЎОМеМОя Ўля вПЎы О пара$ППЌестОте ПЎМу вПЎМую трубу пПЎ кПлПММПй РБМК, затеЌ прПвПЎМОк,$пПтПЌ пПЎключОте парПпрПвПЎ к прПвПЎМОку. +tile.rbmk_moderator.name=ГрафОтПвый заЌеЎлОтель РБМК +tile.rbmk_outgasser.name=СтержеМь ПблучеМОя РБМК +tile.rbmk_reflector.name=КарбОЎ-вПльфраЌПвый Птражатель МейтрПМПв РБМК +tile.rbmk_rod.name=ТПплОвМые стержМО РБМК +tile.rbmk_rod_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК +tile.rbmk_rod_reasim.name=ТПплОвМые стержМО РБМК (РеаСОЌ) +tile.rbmk_rod_reasim_mod.name=ЗаЌеЎляющОе тПплОвМые стержМО РБМК (РеаСОЌ) +tile.rbmk_steam_inlet.name=ППрт ввПЎа вПЎы РБМК РеаСОЌ +tile.rbmk_steam_inlet.desc=ППЎает вПЎу в кПлПММы RBMK, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку +tile.rbmk_steam_outlet.name=ППрт вывПЎа пара РБМК РеаСОЌ +tile.rbmk_steam_outlet.desc=Извлекает перегретый пар Оз кПлПММ РБМК, еслО включеМы ReaSim бПйлеры$ППЎключается к кПлПММаЌ RBMK сбПку +tile.rbmk_storage.name=КПлПММа-храМОлОще РБМК +tile.reactor_computer.name=КПМтрПллер реактПра +tile.reactor_conductor.name=БПйлер реактПра +tile.reactor_control.name=РегулОрующОе стержМО +tile.reactor_ejector.name=ВыталкОватель ПтхПЎПв реактПра +tile.reactor_element.name=РеактПрМая каЌера +tile.reactor_hatch.name=Люк ЎПступа реактПра +tile.reactor_inserter.name=АвтПЌатОческОй заправщОк реактПра +tile.red_barrel.name=ВзрывМая бПчка +tile.red_cable.name=ПрПвПЎ Оз красМПй ЌеЎО +tile.red_cable_classic.name=ПрПвПЎ Оз красМПй ЌеЎО (Старый) +tile.red_cable_gauge.name=ДатчОк ЌПщМПстО +tile.red_cable_gauge.desc=Кабель, кПтПрый пПказывает, скПлькП эМергОО$ переЌещается пП сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые блПкаЌО храМеМОя эМергОО$рассЌатрОваются как ПЎМа Пбщая сеть. +tile.red_cable_paintable.name=ОкрашОваеЌый прПвПЎ Оз красМПй ЌеЎО +tile.red_connector.name=ЭлектрОческОй кПММектПр +tile.red_pylon.name=Малый электрОческОй стПлб +tile.red_pylon_large.name=ЛЭП +tile.red_pylon_medium_steel.name=СреЎМОй стальМПй электрОческОй стПлб +tile.red_pylon_medium_steel_transformer.name=СреЎМОй стальМПй электрОческОй стПлб с траМсфПрЌатПрПЌ +tile.red_pylon_medium_wood.name=СреЎМОй ЎеревяММый электрОческОй стПлб +tile.red_pylon_medium_wood_transformer.name=СреЎМОй ЎеревяММый электрОческОй стПлб с траМсфПрЌатПрПЌ +tile.red_wire_coated.name=МеЎМый кабель с пПкрытОеЌ +tile.refueler.name=Refueling Station +tile.reinforced_brick.name=УсОлеММый каЌеМь +tile.reinforced_brick_stairs.name=СтупеМО Оз укреплёММПгП каЌМя +tile.reinforced_ducrete.name=УсОлеММый Ўюкрет +tile.reinforced_glass.name=УсОлеММПе стеклП +tile.reinforced_glass_pane.name=УсОлеММая стекляММая паМель +tile.reinforced_lamp_off.name=УсОлеММая лаЌпа +tile.reinforced_lamp_on.name=УсОлеММая лаЌпа +tile.reinforced_light.name=УсОлеММый светящОйся каЌеМь +tile.reinforced_sand.name=УсОлеММый песчаМОк +tile.reinforced_stone.name=УплПтМеММый каЌеМь +tile.reinforced_stone_stairs.name=СтупеМО Оз уплПтМёММПгП каЌМя +tile.reinforced_laminate.name=УсОлеММый лаЌОМат +tile.reinforced_laminate_pane.name=УсОлеММая лаЌОМатМая паМель +tile.rejuvinator.name=ГЭКК +tile.residue.name=ОблачМый ПсаЎПк +tile.safe.name=Сейф +tile.sand_boron.name=БПрМый песПк +tile.sand_boron_layer.name=СлПй бПрМПгП песка +tile.sand_dirty.name=ПрПпОтаММый Мефтью песПк +tile.sand_dirty_red.name=ПрПпОтаММый Мефтью красМый песПк +tile.sand_gold.name=ЗПлПтПй песПк +tile.sand_gold198.name=ПесПк Оз зПлПта-198 +tile.sand_lead.name=СвОМцПвый песПк +tile.sand_polonium.name=ППлПМОевый песПк +tile.sand_quartz.name=Кварцевый песПк +tile.sand_uranium.name=УраМПвый песПк +tile.sat_dock.name=СтаМцОя пПсаЎкО груза +tile.sat_foeq.name=ВСАП-МК.I зПМЎ “FOEQ Duna” с эксперОЌеМтальМыЌ яЎерМыЌ ЎвОгателеЌ (ДекПр) +tile.sat_laser.name=ОрбОтальМый Луч СЌертО (ДекПр) +tile.sat_mapper.name=СпутМОк Ўля картПграфОрПваМОя пПверхМПстО (ДекПр) +tile.sat_radar.name=СпутМОк с раЎОПлПкацОПММыЌ зПМЎОрПваМОеЌ (ДекПр) +tile.sat_resonator.name=СпутМОк с ЗеМ-РезПМатПрПЌ (ДекПр) +tile.sat_scanner.name=СпутМОк с ЌПЎулеЌ глубОММП-ресурсМПгП скаМОрПваМОя (ДекПр) +tile.schrabidic_block.name=КрабОЎОевая кОслПта +tile.seal_controller.name=Открыватель люка пускПвПй щахты +tile.seal_frame.name=РаЌа люка пускПвПй щахты +tile.seal_hatch.name=Люк пускПвПй шахты +tile.sellafield.0.name=СеллафОт +tile.sellafield.1.name=ГПрячОй селлафОт +tile.sellafield.2.name=КОпящОй селлафОт +tile.sellafield.3.name=ПылающОй селлафОт +tile.sellafield.4.name=АЎскОй селлафОт +tile.sellafield.5.name=СеллафОт-кПрОуЌ +tile.sellafield_bedrock.name=БеЎрПкПвый селлафОт +tile.sellafield_slaked.name=ППгашеММый селлафОт +tile.semtex.name=СеЌтекс +tile.silo_hatch.name=СОлПсМый люк +tile.silo_hatch_large.name=БПльшПй сОлПсМый люк +tile.sliding_blast_door.name=РазЎвОжМая Ўверь +tile.solar_mirror.name=ЗеркалП-гелОПстат +tile.soyuz_capsule.name=ГрузПвая пПсаЎПчМая капсула +tile.soyuz_launcher.name=СтартПвая платфПрЌа "СПюза" +tile.spikes.name=КОпы +tile.snowglobe.name=СМежМый шар +tile.spotlight_incandescent.name=ЛаЌпа в клетке +tile.spotlight_fluoro.name=ЀлюПресцеМтМая лаЌпа +tile.spotlight_halogen.name=ГалПгеММый прПжектПр +tile.stalactite.asbestos.name=АсбестПвый сталактОт +tile.stalactite.sulfur.name=СерМОстый сталактОт +tile.stalagmite.asbestos.name=АсбестПвый сталагЌОт +tile.stalagmite.sulfur.name=СерМОстый сталагЌОт +tile.steel_beam.name=СтальМая балка +tile.steel_corner.name=СтальМПй угПл стеМы +tile.steel_grate.name=СтальМая решётка +tile.steel_grate_wide.name=ПреЎЌетМая решётка +tile.steel_grate_wide.desc=ППзвПляет Ппыту О преЎЌетаЌ паЎать через Меё +tile.steel_poles.name=СтальМые ПпПры +tile.steel_roof.name=ПлПская стальМая крыша +tile.steel_scaffold.name=СтальМые пПЎЌПстО +tile.steel_wall.name=СтальМая стеМка +tile.stone_cracked.name=ТресМутый каЌеМь +tile.stone_depth.name=ГлубОММый каЌеМь +tile.stone_depth_nether.name=АЎскОй глубОММый каЌеМь +tile.stone_gneiss.name=ГрафОтПвый слаМец +tile.stone_keyhole.name=СтраММый каЌеМь +tile.stone_keyhole_meta.name=Strange Red Room Brick +tile.stone_porous.name=ППрОстый каЌеМь +tile.stone_resource.asbestos.name=ХрОзПтОл +tile.stone_resource.bauxite.name=БПксОт +tile.stone_resource.hematite.name=ГеЌатОт +tile.stone_resource.limestone.name=ИзвестМяк +tile.stone_resource.malachite.name=МалахОт +tile.stone_resource.sulfur.name=СерМОстый каЌеМь +tile.struct_icf_core.name=ЯЎрП ОМерцОальМПгП терЌПяЎерМПгП реактПра (ICF) +tile.struct_iter_core.name=ЯЎрП терЌПяЎерМПгП реактПра +tile.struct_launcher.name=БлПк-кПЌпПМеМт пускПвПй плПщаЎкО tile.struct_launcher_core.name=Compact Launch Pad Core Component -tile.turret_cwis.desc=Hmmm today I will use an anti-missile turret agains mobs$ $Why does it not work???$bob pls fix -tile.turret_lunar_oni.desc=Standard armament for Anti-Oni type Lunariun Vijokas$Covered in the standard highly durable armor plating: Orichalcum$Can be used without the Vijoka, of course$Designed after Bishamonten's pagoda$To bring an end to suffering -tile.turret_lunar_oni.name=Lunarian Strategic Focused Energy Platform - Divine Light (ALPHA) +tile.struct_launcher_core_large.name=ЯЎрП бПльшПй пускПвПй плПщаЎкО +tile.struct_plasma_core.name=ЯЎрП Магревателя плазЌы +tile.struct_scaffold.name=ППЎЌПстПк пускПвПй плПщаЎкО +tile.struct_soyuz_core.name=ЯЎрП стартПвПй плПщаЎкО СПюза +tile.struct_watz_core.name=ЯЎрП Ватцз-реактПра +tile.substation.name=ППЎстаМцОя +tile.sulfuric_acid_block.name=СерМая кОслПта +tile.taint.name=ППрча +tile.taint_barrel.name=БПчка с ПсаЎкПЌ IMP +tile.tape_recorder.name=МагМОтПфПМ +tile.tektite.name=ТектОт +tile.teleanchor.name=ТелепПртацОПММый якПрь +tile.tesla.name=Катушка Теслы +tile.test_nuke.name=ТестПвая бПЌба +tile.therm_endo.name=ЭМЎПтерЌОческая бПЌба +tile.therm_exo.name=ЭкзПтерЌОческая бПЌба +tile.tile_lab.name=ЛабПратПрМая плОтка +tile.tile_lab_broken.name=РазбОтая лабПратПрМая плОтка +tile.tile_lab_cracked.name=ТресМувшая лабПратПрМая плОтка +tile.tnt_ntm.name=НастПящОй ТНТ +tile.toxic_block.name=СтереПтОпМая зелёМая слОзь +tile.transition_seal.name=ТраМзОтМый люк +tile.turret_arty.name=АртОллерОйская турель "Грег" +tile.turret_cheapo.name=Дешёвая пулеЌётМая турель +tile.turret_chekhov.name=КрупМПкалОберМая пулеЌетМая турель "ЧехПвскПе ружьё" +tile.turret_cwis.name=”ЀэлеМкс” Mk-15 CIWS +tile.turret_flamer.name=Турель с ПгМеЌётПЌ +tile.turret_friendly.name=Турель ГатлОМга "МОстер ДружелюбМый" +tile.turret_fritz.name=Тяжелая ПгМеЌетМая турель "ЀрОц" +tile.turret_heavy.name=Турель с тяжёлыЌ пулеЌётПЌ +tile.turret_himars.name=РакетМая артОллерОйская турель "ГеМрО" +tile.turret_howard.name=ДвПйМая турель ГатлОМга CIWS "ГПварЎ" +tile.turret_howard_damaged.name=ДвПйМая турель ГатлОМга CIWS "МафусаОл" +tile.turret_jeremy.name=АвтПпушка "ДжереЌО" +tile.turret_light.name=Турель с лёгкОЌ пулеЌётПЌ +tile.turret_maxwell.name=ВысПкПэМергетОческая МазерМая турель "Максвелл" tile.turret_rocket.name=Rocket Turret -tile.turret_twr.desc="Spacetime Displacing Singularity-Armed Weapon$Platform with Heisenberg Uncertainty Targeting Matrix 'Lord Tsukuyomi'"$Heavy emplaced defence weapon for very high threat targets$Targets cannot escape divine judgement due to exploitation of quantum uncertainty$Named after the Lord of the Moon and night himself -tile.turret_twr.name=Lunarian Time Warp Weapon Platform "Lord Tsukuyomi" (BETA) +tile.turret_richard.name=РакетМая турель "РОчарЎ" +tile.turret_spitfire.name=Турель без МазваМОя [WIP] +tile.turret_sentry.name=СтПрПжевая турель "БрауМ" +tile.turret_sentry_damaged.name=СтПрПжевая турель "ЭЎвОМ" +tile.turret_tau.name=Турель с тау-пушкПй +tile.turret_tauon.name=ПрПтПтОп турелО XVL1456 "ТауПМ" +tile.vacuum.name=ВакууЌ +tile.vault_door.name=Дверь убежОща Vault-Tec +tile.vent_chlorine.name=ХлПрМый клапаМ +tile.vent_chlorine_seal.name=ХлПрМый уплПтМОтель +tile.vent_cloud.name=ВПзЎушМый клапаМ с ПблакПЌ +tile.vent_pink_cloud.name=ВПзЎушМый клапаМ с рПзПвыЌ ПблакПЌ +tile.vinyl_tile.large.name=БПльшая вОМОлПвая плОтка +tile.vinyl_tile.small.name=МалеМькОе вОМОлПвые плОткО +tile.vitrified_barrel.name=БПчка с ПстеклПваММыЌО яЎерМыЌО ПтхПЎаЌО +tile.volcanic_lava_block.name=ВулкаМОческая лава +tile.volcano_core.name=ВулкаМОческПе яЎрП +tile.volcano_rad_core.name=РаЎОПактОвМПе вулкаМОческПе яЎрП +tile.wand_air.name=Structure Wand Block (Air) +tile.wand_loot.name=Structure Wand Block (Lootable) +tile.wand_jigsaw.name=Structure Wand Block (Jigsaw) +tile.waste_earth.name=Мертвая трава +tile.waste_leaves.name=Мёртвые лОстья +tile.waste_log.name=ОбуглеММПе бревМП +tile.waste_mycelium.name=СветящОйся ЌОцелОй +tile.waste_planks.name=ОбуглеММые ЎеревяММые ЎПскО +tile.waste_trinitite.name=ТрОМОтОтПвая руЎа +tile.waste_trinitite_red.name=КрасМая трОМОтОтПвая руЎа +tile.watz.name=РеактПр Ватцз +tile.watz_conductor.name=ППрт электрОчества Ватцза +tile.watz_control.name=УпрПчМёММые регулОрующОе стержМО +tile.watz_cooler.name=СуперПхлаЎОтель реактПра Ватцза +tile.watz_core.name=КПМтрПллер реактПра Ватцза +tile.watz_element.name=КаЌера реакцОО Ватцза +tile.watz_end.name=СтабОлОзатПр реактПра Ватцза +tile.watz_end_bolted.name=СтабОлОзатПр реактПра Ватцза (ЗаклепаММый) +tile.watz_hatch.name=Люк ЎПступа к реактПру Ватцза +tile.watz_pump.name=НагМетающая пПЌпа Ватцза +tile.yellow_barrel.name=РаЎОПктОвМая бПчка +tile.zirnox_destroyed.name=РазрушеММый ЊОрМПкс -trait.BERYLLIUM=Beryllium Particles -trait.CHEMICAL=Chemical Hazard -trait.HEAVY_METAL=Heavy Metal -trait.corruptedHeavy=Heavily Corrupted -trait.corruptedLight=Lightly Corrupted -trait.corrutpedAbsolute=Completely Corrupted -trait.damaged=Damaged -trait.dirty=Dirty -twr.ammo=SINGULARITIES: %s / %s -twr.gui.add=Add new entity to elimination register -twr.gui.calibrate=Calibrate entanglement for ideal targeting -twr.gui.clear=Remove current singularity -twr.gui.down=Move cursor down -twr.gui.purify=Commence divine judgement -twr.gui.recalibrating=RECALIBRATING HEISENBERG$UNCERTAINTY QUANTUM TARGETING$MATRIX...$CURRENT QUANTUM INSTABILITY: %s -twr.gui.remove=Remove entity from elimination register -twr.gui.search=Initiate quantum search for specified entities$and truncate invalid entities -twr.gui.up=Move cursor up -twr.result.checking=DETERMINING... -twr.result.fail=FAILED -twr.result.partial=INDETERMINATE -twr.result.success=ELIMINATED -twr.result=UNCERTAINTY: %s -twr.sign=QUANTUM SIGNATURE: %s -twr.target.lost=[LOST CONTACT!] -twr.target.none=[NONE] -twr.target.search=[SEARCHING...] -twr.target=TARGET: %s -twr.title=TIME WARP RIFLE QUANTUM TARGETING -twr.zoom=ZOOM: x%s +tile.large_vehicle_door.name=Дверь Ўля крупМПгабарОтМых автПЌПбОлей +tile.water_door.name=ППЎвПЎМая Ўверь +tile.qe_containment.name=QE Дверь бОПлПгОческПгП сЎержОваМОя +tile.qe_sliding_door.name=QE РазЎвОжМая Ўверь +tile.round_airlock_door.name=Круглый шлюз +tile.secure_access_door.name=Дверь с ОзПлОрПваММыЌ ЎПступПЌ +tile.sliding_seal_door.name=РазЎвОжМая герЌетОчМая Ўверь -warhead.AMAT=Antimatter -warhead.BF=Balefire -warhead.BIO.ANTHRAX=Anthrax -warhead.BIO.MKU=MKUNICORN -warhead.BIO=Biological (%s) -warhead.CHEM.ACID=Caustics -warhead.CHEM.CHLORINE=Chlorine -warhead.CHEM.NERVE=Sarin -warhead.CHEM.TOX=Biotoxin -warhead.CHEM=Chemical (%s) -warhead.FUSION=Pure Fusion -warhead.GRAV=Gravimetric -warhead.HE=Conventional -warhead.NUCLEAR=Nuclear -warhead.SCHRAB=Schrabidium -warhead.TX=Thermonuclear -warhead.ZPE=Quantum +trait.asbestos=СПЎержОт асбест +trait.blinding=ОслеплеМОе +trait.coal=УгПльМая пыль +trait.digamma=ДОгаЌЌа раЎОацОя +trait.drop=ОпасМП выкОЎывать +trait.explosive=ВПсплаЌеМяющОйся / ВзрывППпасМый +trait.furnace=Даёт %s ПперацОй в яЎерМПй печО +trait.heat=ОбеспечОвает %s ТЕПЛА +trait.hlParticle=ПерОПЎ ППлураспаЎа ЧастОцы: %s +trait.hlPlayer=ПерОПЎ ППлураспаЎа ИгрПка: %s +trait.hot=ПОрПфПрМый / ГПрячОй +trait.hydro=ГОЎрПреактОвМый +trait.radioactive=РаЎОПактОвМый +trait.radResistance=СПпрПтОвлеМОе раЎОацОО: %s -warheadFuel.ACID=Caustics -warheadFuel.ANTHRAX=Anthrax -warheadFuel.Am242m=Americium-242m -warheadFuel.Au197=Gold -warheadFuel.Au198=Gold-198 -warheadFuel.Co59=Cobalt -warheadFuel.Co60=Cobalt-60 -warheadFuel.Cs137=Caesium-137 -warheadFuel.DEUT=Deuterium -warheadFuel.GRAV=Gravimetric Charge -warheadFuel.HE=Semtex-H -warheadFuel.LI=Lithium -warheadFuel.LiDEUT=Lithium-Deuteride -warheadFuel.NERVE=Sarin -warheadFuel.Np237=Neptunium-237 -warheadFuel.Pu239=Plutonium-239 -warheadFuel.Pu240=Plutonium-240 -warheadFuel.Pu241=Plutonium-241 -warheadFuel.Sa326=Schrabidium-326 -warheadFuel.Sa327=Schrabidium-327 -warheadFuel.Sr90=Strontium-90 -warheadFuel.TRIT=Tritium -warheadFuel.Ta181=Tantalum -warheadFuel.Ta182=Tantalum-182 -warheadFuel.U233=Uranium-233 -warheadFuel.U235=Uranium-235 +trait.rbmk.coreTemp=ТеЌпература стержМя: %s +trait.rbmk.depletion=ОбеЎМеМОе: %s +trait.rbmk.diffusion=РассеОваМОе: %s +trait.rbmk.fluxFunc=ЀуМкцОя пПтПка: %s +trait.rbmk.funcType=ТОп фуМкцОО: %s +trait.rbmk.heat=ТеплП за тОк прО пПлМПй ЌПщМПстО: %s +trait.rbmk.melt=ТПчка плавлеМОя: %s +trait.rbmk.neutron.any=Любые МейтрПМы +trait.rbmk.neutron.fast=Быстрые МейтрПМы +trait.rbmk.neutron.slow=МеЎлеММые МейтрПМы +trait.rbmk.skinTemp=ТеЌпература ПбПлПчкО стержМя: %s +trait.rbmk.source=СаЌПвПсплаЌеМяющОйся +trait.rbmk.splitsInto=РаспаЎается Ма: %s +trait.rbmk.splitsWith=РаспаЎается с: %s +trait.rbmk.xenon=КсеМПМПвПе ПтравлеМОе: %s +trait.rbmk.xenonBurn=ЀуМкцОя выгПраМОя ксеМПМа: %s +trait.rbmk.xenonGen=ЀуМкцОя МакПплеМОя ксеМПМа: %s -warheadFuse=Fuse: %s +trait.rbmx.coreTemp=РазрушеМОе стержМя: %s +trait.rbmx.depletion=КПрПчка: %s +trait.rbmx.diffusion=ППтПк: %s +trait.rbmx.fluxFunc=ЀуМкцОя гОбелО: %s +trait.rbmx.funcType=СпецОфОкацОя фуМкцОО: %s +trait.rbmx.heat=КПрПчка Ма тОк прО пПлМПй ЌПщМПстО: %s +trait.rbmx.melt=ГлубОМа кПрПчкО: %s +trait.rbmk.neutron.any.x=Все МеевклОЎПвы фПрЌы +trait.rbmk.neutron.fast.x=ЭллОптОческОе МеевклОЎПвы фПрЌы +trait.rbmk.neutron.slow.x=ГОпербПлОческОе МеевклОЎПвы фПрЌы +trait.rbmx.skinTemp=РазрушеМОе ПбПлПчкО стержМя: %s +trait.rbmx.source=СаЌПсжОгаеЌый +trait.rbmx.splitsInto=Отправляется в: %s +trait.rbmx.splitsWith=ПрОбывает Оз: %s +trait.rbmx.xenon=СвОМцПвПе ПтравлеМОе: %s +trait.rbmx.xenonBurn=ЀуМкцОя разрушеМОя свОМца: %s +trait.rbmx.xenonGen=ЀуМкцОя сПзЎаМОя свОМца: %s -warheadTrait.CLEAN=Clean -warheadTrait.CLEANISH=Relatively Clean -warheadTrait.DIRTY=Dirty -warheadTrait.RAD=Radioactive -warheadTrait.SALT=Salted -warheadType.DENIAL=Area Denial -warheadType.STRATEGIC=Strategic -warheadType.TACTICAL=Tactical -warheadType.WMD=WMD \ No newline at end of file +trait.tile.cluster=ВыпаЎает тПлькП тПгЎа, кПгЎа разрушеМ ОгрПкПЌ +trait.tile.depth=МПжет быть разрушеМ тПлькП взрывПЌ + +tool.ability.centrifuge=АвтП-цеМтрОфуга +tool.ability.crystallizer=АвтП-крОсталлОзатПр +tool.ability.explosion=Взрыв +tool.ability.hammer=ЗПМа ЎействОя +tool.ability.luck=УЎача +tool.ability.mercury=РтутМПе касаМОе +tool.ability.midas=ПрОкПсМПвеМОе МОЎаса +tool.ability.recursion=ЖОлкПвый МайМер +tool.ability.shredder=АвтП-ОзЌельчОтель +tool.ability.silktouch=КёлкПвПе касаМОе +tool.ability.smelter=АвтП-плавка + +turret.animals=ЊелОться пП пассОвМыЌ: %s +turret.arty.artillery=§eArtillery Mode$Grace: 250m$Range: 3,000m +turret.arty.cannon=§eCannon Mode$Grace: 32m$Range: 250m +turret.arty.manual=§eManual Mode$Range: 3,000m +turret.machines=ЊелОться пП ЌашОМаЌ: %s +turret.mobs=ЊелОться пП ЌПбаЌ: %s +turret.none=НОчегП +turret.off=ВЫКЛ +turret.on=ВКЛ +turret.players=ЊелОться пП ОгрПкаЌ: %s + +upgrade.acid=Требуется кОслПта %s +upgrade.burn=Burn %sЌб/тОк за %sHE +upgrade.consumption=ППтреблеМОе %s +upgrade.coolantConsumption=ППтреблеМОе ПхлаЎОтеля %s +upgrade.delay=ВреЌя %s +upgrade.efficiency=ЭффектОвМПсть %s +upgrade.fortune=УЎача %s +upgrade.overheatChance=КаМс перегрева %s +upgrade.productivity=Productivity %s +upgrade.range=РаЎОус %s + +upgrade.gui.title=§lПрОМОЌаеЌые улучшеМОя:§r +upgrade.gui.afterburner= * §dЀПрсаж§r: Стакается ЎП %s урПвМей +upgrade.gui.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП %s урПвМей +upgrade.gui.overdrive= * §7Перегруз§r: Стакается ЎП %s урПвМей +upgrade.gui.power= * §9ЭМергПсбережеМОе§r: Стакается ЎП %s урПвМей +upgrade.gui.speed= * §4СкПрПсть§r: Стакается ЎП %s урПвМей + +wavelengths.name.ir=ИМфракрасМый +wavelengths.name.visible=ВОЎОЌый свет +wavelengths.name.uv=УльтрафОПлет +wavelengths.name.gamma=ГаЌЌа +wavelengths.name.drx=ДОгаЌЌа +wavelengths.waveRange.ir=780МЌ-1ЌЌ +wavelengths.waveRange.visible=400МЌ-780МЌ +wavelengths.waveRange.uv=100МЌ-400МЌ +wavelengths.waveRange.gamma=<100пЌ +wavelengths.waveRange.drx=1916169 плаМкПвскОх ЎлОМ + +weapon.ability.beheader=ОбезглавлОватель +weapon.ability.bobble=УЎача кПллекцОПМера +# Should rhyme with the translation for "chainsaw" +weapon.ability.chainsaw=БеМзПбПль +weapon.ability.fire=ГПреМОе +weapon.ability.radiation=РаЎОПактОвМые лезвОя +weapon.ability.phosphorus=ЀПсфПрМый МакПМечМОк +weapon.ability.stun=ОглушеМОе +weapon.ability.vampire=ВаЌпОр +weapon.elecGun.modeChange=РежОЌ стрельбы: +weapon.elecGun.glass_cannon.radio=РаЎОПвПлМы +weapon.elecGun.glass_cannon.micro=МОкрПвПлМы +weapon.elecGun.glass_cannon.ir=ИМфракрасМПе ОзлучеМОе +weapon.elecGun.glass_cannon.visible=ВОЎОЌый свет +weapon.elecGun.glass_cannon.uv=УльтрафОПлет +weapon.elecGun.glass_cannon.xray=РеМтгеМ +weapon.elecGun.glass_cannon.gamma=ГаЌЌа-лучО + +desc.gui.upgrade=§lПрОМОЌаеЌые улучшеМОя:§r +desc.gui.upgrade.afterburner= * §dЀПрсаж§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.effectiveness= * §aЭффектОвМПсть§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.overdrive= * §7Перегруз§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.power= * §1ЭМергПсбережеМОе§r: Стакается ЎП 3-х урПвМей +desc.gui.upgrade.speed= * §4СкПрПсть§r: Стакается ЎП 3-х урПвМей From fd04bf9b3f68c11176a2454fdca7ef9ec6abe6d2 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 16 Feb 2025 23:16:26 +0100 Subject: [PATCH 24/64] a whole lot of nothing --- changelog | 15 ++++++- gradle.properties | 2 +- .../com/hbm/blocks/generic/BlockFissure.java | 38 +++++++++++++++++- .../com/hbm/blocks/generic/BlockPedestal.java | 7 ++++ src/main/java/com/hbm/items/ModItems.java | 5 +-- .../items/machine/ItemAssemblyTemplate.java | 10 ----- .../hbm/items/machine/ItemTemplateFolder.java | 5 ++- .../weapon/sedna/factory/ConfettiUtil.java | 9 +++++ .../hbm/items/weapon/sedna/factory/Lego.java | 2 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 3 +- .../java/com/hbm/main/CraftingManager.java | 2 - src/main/java/com/hbm/main/MainRegistry.java | 15 ++++++- .../render/item/ItemRenderMissileGeneric.java | 2 - .../java/com/hbm/tileentity/TileMappings.java | 2 + .../tileentity/bomb/TileEntityLandmine.java | 2 + .../machine/TileEntityBlastDoor.java | 4 +- .../machine/TileEntityVaultDoor.java | 4 +- .../machine/rbmk/TileEntityRBMKConsole.java | 2 +- .../machine/rbmk/TileEntityRBMKRod.java | 39 ++++++++++--------- src/main/resources/assets/hbm/lang/de_DE.lang | 4 ++ src/main/resources/assets/hbm/lang/en_US.lang | 4 ++ 22 files changed, 130 insertions(+), 48 deletions(-) diff --git a/changelog b/changelog index 73108559d..20261ecff 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,7 @@ * Like a charging station, but for fluids ## Changed +* Updated chinese localization * Particle detectors now print an error for when the recipe could not be completed * Night Vision Goggles toggles with armor HUD * Removed "no ore dict data" line from tooltips with extended view enabled @@ -20,7 +21,16 @@ * Due to duping no longer being a concern, productivity rates for certain recipes can now be much higher * Things like sawdust to cordite have a 75% chance of not using the input at level 3 * Effectiveness no longer increases acid consumption (since many recipes now use the acidizer like a solid output "mixer") but instead adds +200% power consumption per level + * Effectiveness can be configured with the recipe and caps out at 99% (since 100% would just print free items) * Chemical dyes can now also be made with light oil +* There's now statistics for creating legendary weapons and ammo, stepping on landmines and firing guns +* Assembly templates no longer specify whether they are persistent and volatile, since volatile templates haven't existed in years +* Obliterated the HTR-01 item for good + * Idk why it still existed +* Skeletons, slimes and cybercrabs can no longer be gibbed, since they don't have flesh +* The template folder's description now uses flashing colors to make it harder to ignore +* Scaled swords no longer use 1.1 scale in the inventory, making them larger than the inventory slot +* Fissures can now be connected to fluid ducts, providing 1,000mB of lava per tick ## Fixed * Fixed items being annihilated when shift clicking them into the particle source @@ -28,4 +38,7 @@ * Fixed particle detectors not always using power when they should * Fixed rotary furnace voiding low pressure steam when dealing with input numbers not divisible by 100 * Fixed state leak causing smoke from the right akimbo weapon to glow when the first one is fired -* Fixed incorrect default values for new RBMK dials \ No newline at end of file +* Fixed incorrect default values for new RBMK dials +* Fixed blast doors self-destructing when closing +* Fixed PA coils being in the wrong creative tab +* Fixed flux calculation for RBMKs being wrong, mainly affecting reactors using fast flux diff --git a/gradle.properties b/gradle.properties index f1fef826d..4bf1e1291 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5230 +mod_build_number=5243 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/blocks/generic/BlockFissure.java b/src/main/java/com/hbm/blocks/generic/BlockFissure.java index dac40abf0..0f1dea15a 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockFissure.java +++ b/src/main/java/com/hbm/blocks/generic/BlockFissure.java @@ -2,21 +2,28 @@ package com.hbm.blocks.generic; import java.util.Random; +import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.tileentity.TileEntityLoadedBase; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class BlockFissure extends Block implements IBlockMultiPass { +public class BlockFissure extends BlockContainer implements IBlockMultiPass { private IIcon overlay; @@ -65,4 +72,31 @@ public class BlockFissure extends Block implements IBlockMultiPass { public int getRenderType(){ return IBlockMultiPass.getRenderType(); } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFissure(); + } + + public static class TileEntityFissure extends TileEntityLoadedBase implements IFluidStandardSender { + + public FluidTank lava = new FluidTank(Fluids.LAVA, 1_000); + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + lava.setFill(1_000); + this.sendFluid(lava, worldObj, xCoord, yCoord + 1, zCoord, ForgeDirection.UP); + } + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir == ForgeDirection.DOWN && type == Fluids.LAVA; + } + + @Override public FluidTank[] getAllTanks() { return new FluidTank[] {lava}; } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] {lava}; } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java index 080881687..5e1774c52 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockPedestal.java +++ b/src/main/java/com/hbm/blocks/generic/BlockPedestal.java @@ -1,8 +1,11 @@ package com.hbm.blocks.generic; +import java.util.List; + import com.hbm.inventory.recipes.PedestalRecipes; import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.particle.helper.ExplosionSmallCreator; import com.hbm.util.Compat; @@ -21,6 +24,7 @@ import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -169,6 +173,9 @@ public class BlockPedestal extends BlockContainer { world.markBlockForUpdate(x, y, z); ExplosionSmallCreator.composeEffect(world, x + 0.5, y + 1.5, z + 0.5, 10, 2.5F, 1F); + List players = world.getEntitiesWithinAABB(EntityPlayer.class, AxisAlignedBB.getBoundingBox(x + 0.5, y, z + 0.5, x + 0.5, y, z + 0.5).expand(50, 50, 50)); + for(EntityPlayer player : players) player.addStat(MainRegistry.statLegendary, 1); + return; } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 2682975d5..1bad96b92 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1417,7 +1417,6 @@ public class ModItems { public static Item missile_custom; - public static Item missile_carrier; public static Item missile_soyuz; public static Item missile_soyuz_lander; public static Item sat_mapper; @@ -2893,7 +2892,7 @@ public class ModItems { demon_core_open = new ItemDemonCore().setUnlocalizedName("demon_core_open").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":demon_core_open"); demon_core_closed = new Item().setUnlocalizedName("demon_core_closed").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":demon_core_closed"); - pa_coil = new ItemPACoil().setUnlocalizedName("pa_coil").setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":pa_coil"); + pa_coil = new ItemPACoil().setUnlocalizedName("pa_coil").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":pa_coil"); particle_empty = new Item().setUnlocalizedName("particle_empty").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":particle_empty"); particle_hydrogen = new Item().setUnlocalizedName("particle_hydrogen").setCreativeTab(MainRegistry.controlTab).setContainerItem(ModItems.particle_empty).setTextureName(RefStrings.MODID + ":particle_hydrogen"); @@ -3649,7 +3648,6 @@ public class ModItems { missile_shuttle = new ItemMissile(MissileFormFactor.OTHER, MissileTier.TIER3, MissileFuel.KEROSENE_PEROXIDE).setUnlocalizedName("missile_shuttle").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_shuttle"); missile_stealth = new ItemMissile(MissileFormFactor.STRONG, MissileTier.TIER1).setUnlocalizedName("missile_stealth").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_stealth"); missile_test = new ItemMissile(MissileFormFactor.MICRO, MissileTier.TIER0).setUnlocalizedName("missile_test").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_micro"); - missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_carrier"); missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); missile_custom = new ItemCustomMissile().setUnlocalizedName("missile_custom").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_custom"); @@ -6273,7 +6271,6 @@ public class ModItems { GameRegistry.registerItem(missile_doomsday, missile_doomsday.getUnlocalizedName()); GameRegistry.registerItem(missile_doomsday_rusted, missile_doomsday_rusted.getUnlocalizedName()); //Rockets - GameRegistry.registerItem(missile_carrier, missile_carrier.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz, missile_soyuz.getUnlocalizedName()); GameRegistry.registerItem(missile_soyuz_lander, missile_soyuz_lander.getUnlocalizedName()); GameRegistry.registerItem(missile_custom, missile_custom.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java index d3e58e448..f7bad43dd 100644 --- a/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemAssemblyTemplate.java @@ -168,14 +168,11 @@ public class ItemAssemblyTemplate extends Item { return; } - boolean nbtType = true; - //NEW ComparableStack out = readType(stack); //LEGACY if(out == null) { out = AssemblerRecipes.recipeList.get(i); - nbtType = false; } AssemblerRecipe recipe = AssemblerRecipes.recipes.get(out); @@ -202,13 +199,6 @@ public class ItemAssemblyTemplate extends Item { } list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("info.templatefolder", String.join(" / ", names))); - - if(nbtType) { - list.add(EnumChatFormatting.GREEN + "Persistent template"); - } else { - list.add(EnumChatFormatting.RED + "Volatile template"); - } - list.add(""); if(out == null) { diff --git a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java index a459e3fee..be0883149 100644 --- a/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java +++ b/src/main/java/com/hbm/items/machine/ItemTemplateFolder.java @@ -6,6 +6,7 @@ import com.hbm.inventory.gui.GUIScreenTemplateFolder; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; +import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; @@ -14,6 +15,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; public class ItemTemplateFolder extends Item implements IGUIProvider { @@ -31,8 +33,9 @@ public class ItemTemplateFolder extends Item implements IGUIProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { String[] lang = I18nUtil.resolveKeyArray(ModItems.template_folder.getUnlocalizedName() + ".desc"); + EnumChatFormatting color = BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.YELLOW; for(String line : lang) { - list.add(line); + list.add(color + line); } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index 7bf6381df..c61977a10 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -2,6 +2,7 @@ package com.hbm.items.weapon.sedna.factory; import java.util.Locale; +import com.hbm.entity.mob.*; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.particle.helper.AshesCreator; @@ -10,6 +11,8 @@ import com.hbm.util.DamageResistanceHandler.DamageClass; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntitySlime; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; @@ -39,6 +42,12 @@ public class ConfettiUtil { } public static void gib(EntityLivingBase entity) { + if(entity instanceof EntityCyberCrab) return; + if(entity instanceof EntityTeslaCrab) return; + if(entity instanceof EntityTaintCrab) return; + if(entity instanceof EntitySkeleton) return; + if(entity instanceof EntitySlime) return; + NBTTagCompound vdat = new NBTTagCompound(); vdat.setString("type", "giblets"); vdat.setInteger("ent", entity.getEntityId()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java index 693180de3..d00796660 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Lego.java @@ -22,6 +22,7 @@ import com.hbm.items.weapon.sedna.ItemGunBaseNT.LambdaContext; import com.hbm.items.weapon.sedna.ItemGunBaseNT.SmokeNode; import com.hbm.items.weapon.sedna.Receiver; import com.hbm.items.weapon.sedna.mags.IMagazine; +import com.hbm.main.MainRegistry; import com.hbm.particle.helper.BlackPowderCreator; import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; @@ -238,6 +239,7 @@ public class Lego { } } + if(player != null) player.addStat(MainRegistry.statBullets, 1); mag.useUpAmmo(stack, ctx.inventory, 1); if(calcWear) ItemGunBaseNT.setWear(stack, index, Math.min(ItemGunBaseNT.getWear(stack, index) + config.wear, ctx.config.getDurability(stack))); } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 1440e8237..b2b06e0a3 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5230)"; + public static final String VERSION = "1.0.27 BETA (5243)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index ed344f1e7..1bc9c8d18 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -447,7 +447,7 @@ public class ClientProxy extends ServerProxy { double[] sfp = new double[] {1.36, 1.36, 0.68}; double[] rir = new double[] {0, 0, 0}; double[] tir = new double[] {0, 0, 0}; - double[] sir = new double[] {1.1, 1.1, 1.1}; + double[] sir = new double[] {1, 1, 1}; MinecraftForgeClient.registerItemRenderer(ModItems.titanium_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); MinecraftForgeClient.registerItemRenderer(ModItems.alloy_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); @@ -500,7 +500,6 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.missile_volcano, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_doomsday_rusted, new ItemRenderMissileGeneric(RenderMissileType.TYPE_NUCLEAR)); - MinecraftForgeClient.registerItemRenderer(ModItems.missile_carrier, new ItemRenderMissileGeneric(RenderMissileType.TYPE_CARRIER)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_shuttle, new ItemRenderMissileGeneric(RenderMissileType.TYPE_ROBIN)); //templates diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 4ab6a5c79..13d95c8c7 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1140,8 +1140,6 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.cm_flux, 1, 0), "NNN", "ZCZ", "NNN", 'Z', ZR.plateCast(), 'N', ModItems.neutron_reflector, 'C', ModItems.reactor_core); addRecipeAuto(new ItemStack(ModBlocks.cm_heat, 1, 0), "PCP", "PCP", "PCP", 'P', ModItems.plate_polymer, 'C', CU.ingot()); - addShapelessAuto(new ItemStack(ModItems.missile_soyuz), new ItemStack(ModItems.missile_carrier)); - addRecipeAuto(new ItemStack(ModBlocks.plushie, 1, PlushieType.YOMI.ordinal()), "LCR", 'L', "cropCarrot", 'C', ModItems.rag, 'R', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE)); addRecipeAuto(new ItemStack(ModBlocks.plushie, 1, PlushieType.NUMBERNINE.ordinal()), " C ", "LCR", " C ", 'L', ModItems.cigarette, 'C', ModItems.rag, 'R', COAL.gem()); } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 091ac20de..235b7e2b4 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -73,7 +73,10 @@ import net.minecraft.item.Item.ToolMaterial; import net.minecraft.item.ItemArmor.ArmorMaterial; import net.minecraft.item.ItemStack; import net.minecraft.stats.Achievement; +import net.minecraft.stats.StatBase; +import net.minecraft.stats.StatBasic; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumFacing; import net.minecraft.util.WeightedRandomChestContent; import net.minecraft.world.World; @@ -164,6 +167,11 @@ public class MainRegistry { public static CreativeTabs weaponTab = new WeaponTab(CreativeTabs.getNextID(), "tabWeapon"); // turrets, weapons, ammo public static CreativeTabs consumableTab = new ConsumableTab(CreativeTabs.getNextID(), "tabConsumable"); // drinks, kits, tools + // Statistics + public static StatBase statLegendary; + public static StatBase statMines; + public static StatBase statBullets; + // Achievements public static Achievement achSacrifice; public static Achievement achImpossible; @@ -656,6 +664,10 @@ public class MainRegistry { RodRecipes.registerInit(); + statLegendary = new StatBasic("stat.ntmLegendary", new ChatComponentTranslation("stat.ntmLegendary")).registerStat(); + statMines = new StatBasic("stat.ntmMines", new ChatComponentTranslation("stat.ntmMines")).registerStat(); + statBullets = new StatBasic("stat.ntmBullets", new ChatComponentTranslation("stat.ntmBullets")).registerStat(); + achSacrifice = new Achievement("achievement.sacrifice", "sacrifice", -3, 1, ModItems.burnt_bark, null).initIndependentStat().setSpecial().registerStat(); achImpossible = new Achievement("achievement.impossible", "impossible", 18, 10, ModItems.nothing, null).initIndependentStat().setSpecial().registerStat(); achTOB = new Achievement("achievement.tasteofblood", "tasteofblood", 3, 10, new ItemStack(ModItems.fluid_icon, 1, Fluids.ASCHRAB.getID()), null).initIndependentStat().setSpecial().registerStat(); @@ -710,7 +722,7 @@ public class MainRegistry { achCentrifuge = new Achievement("achievement.centrifuge", "centrifuge", 12, -2, new ItemStack(ModBlocks.machine_centrifuge), achPolymer).initIndependentStat().registerStat(); achFOEQ = new Achievement("achievement.FOEQ", "FOEQ", 5, 5, ModItems.sat_foeq, achDesh).initIndependentStat().setSpecial().registerStat(); achSoyuz = new Achievement("achievement.soyuz", "soyuz", 7, 6, Items.baked_potato, achDesh).initIndependentStat().setSpecial().registerStat(); - achSpace = new Achievement("achievement.space", "space", 9, 7, ModItems.missile_carrier, achDesh).initIndependentStat().setSpecial().registerStat(); + achSpace = new Achievement("achievement.space", "space", 9, 7, ModItems.missile_soyuz, achDesh).initIndependentStat().setSpecial().registerStat(); achSchrab = new Achievement("achievement.schrab", "schrab", 11, 3, ModItems.ingot_schrabidium, achDesh).initIndependentStat().registerStat(); achAcidizer = new Achievement("achievement.acidizer", "acidizer", 11, 5, new ItemStack(ModBlocks.machine_crystallizer), achDesh).initIndependentStat().registerStat(); achRadium = new Achievement("achievement.radium", "radium", 13, -4, ModItems.coffee_radium, achCentrifuge).initIndependentStat().setSpecial().registerStat(); @@ -1647,6 +1659,7 @@ public class MainRegistry { ignoreMappings.add("hbm:item.bobmazon_machines"); ignoreMappings.add("hbm:item.bobmazon_weapons"); ignoreMappings.add("hbm:item.bobmazon_tools"); + ignoreMappings.add("hbm:item.missile_carrier"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java index 9985a4c4c..4ee9e835d 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java @@ -31,7 +31,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer { TYPE_STEALTH, TYPE_ABM, TYPE_NUCLEAR, - TYPE_CARRIER, TYPE_ROBIN } @@ -75,7 +74,6 @@ public class ItemRenderMissileGeneric implements IItemRenderer { case TYPE_STEALTH: guiScale = 1.75D; guiOffset = 4.75D; break; case TYPE_ABM: guiScale = 2.25D; guiOffset = 7D; break; case TYPE_NUCLEAR: guiScale = 1.375D; guiOffset = 1.5D; break; - case TYPE_CARRIER: guiScale = 0.625D; guiOffset = -17D; break; case TYPE_ROBIN: guiScale = 1.25D; guiOffset = 2D; break; } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index d1cc8eaf6..d383cdd29 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -9,6 +9,7 @@ import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; +import com.hbm.blocks.generic.BlockFissure.TileEntityFissure; import com.hbm.blocks.generic.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockPedestal.TileEntityPedestal; @@ -229,6 +230,7 @@ public class TileMappings { put(TileEntityProxyConductor.class, "tileentity_proxy_conductor"); put(TileEntityBedrockOre.class, "tileentity_bedrock_ore"); + put(TileEntityFissure.class, "tileentity_fissure"); put(TileEntityBlockPWR.class, "tileentity_block_pwr"); put(TileEntityPWRController.class, "tileentity_pwr_controller"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java index e9320c85d..8481849e4 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLandmine.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.bomb; import java.util.List; import com.hbm.blocks.bomb.Landmine; +import com.hbm.main.MainRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -57,6 +58,7 @@ public class TileEntityLandmine extends TileEntity { if(isPrimed) { //the explosion is part of the mine block so that the IBomb interface works, i remember now landmine.explode(worldObj, xCoord, yCoord, zCoord); + if(o instanceof EntityPlayer) ((EntityPlayer) o).addStat(MainRegistry.statMines, 1); } return; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java index d3d78294e..dbf1d785d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityBlastDoor.java @@ -8,6 +8,7 @@ import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -289,7 +290,8 @@ public class TileEntityBlastDoor extends TileEntityLockableBase { public boolean placeDummy(int x, int y, int z) { - if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) worldObj.func_147480_a(x, y, z, false); + Block present = worldObj.getBlock(x, y, z); + if(!present.isReplaceable(worldObj, x, y, z) && present != ModBlocks.dummy_block_blast) worldObj.func_147480_a(x, y, z, false); worldObj.setBlock(x, y, z, ModBlocks.dummy_block_blast); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java index 90ce287aa..910f89b17 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityVaultDoor.java @@ -8,6 +8,7 @@ import com.hbm.packet.toclient.TEVaultPacket; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -195,7 +196,8 @@ public class TileEntityVaultDoor extends TileEntityLockableBase { public boolean placeDummy(int x, int y, int z) { - if(!worldObj.getBlock(x, y, z).isReplaceable(worldObj, x, y, z)) worldObj.func_147480_a(x, y, z, false); + Block present = worldObj.getBlock(x, y, z); + if(!present.isReplaceable(worldObj, x, y, z) && present != ModBlocks.dummy_block_vault) worldObj.func_147480_a(x, y, z, false); worldObj.setBlock(x, y, z, ModBlocks.dummy_block_vault); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java index f41643047..dfb753de3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -557,7 +557,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon if(te instanceof TileEntityRBMKRod){ TileEntityRBMKRod fuelChannel = (TileEntityRBMKRod)te; data_table.put("fluxQuantity", fuelChannel.lastFluxQuantity); - data_table.put("fluxRatio", fuelChannel.fluxRatio); + data_table.put("fluxRatio", fuelChannel.fluxFastRatio); } if(te instanceof TileEntityRBMKBoiler){ diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 6a7acf1bf..b32166fcf 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -45,7 +45,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM // New system!! // Used for receiving flux (calculating outbound flux/burning rods) - public double fluxRatio; + public double fluxFastRatio; public double fluxQuantity; public double lastFluxQuantity; public double lastFluxRatio; @@ -73,11 +73,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Override public void receiveFlux(NeutronStream stream) { - double fastFlux = this.fluxQuantity * this.fluxRatio; + double fastFlux = this.fluxQuantity * this.fluxFastRatio; double fastFluxIn = stream.fluxQuantity * stream.fluxRatio; this.fluxQuantity += stream.fluxQuantity; - fluxRatio = (fastFlux + fastFluxIn) / fluxQuantity; + fluxFastRatio = (fastFlux + fastFluxIn) / fluxQuantity; } @Override @@ -96,11 +96,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM // Again, nothing really uses this so its just idle code at the moment. if (rod.specialFluxCurve) { - fluxRatioOut = rod.fluxRatioOut(this.fluxRatio, ItemRBMKRod.getEnrichment(slots[0])); + fluxRatioOut = rod.fluxRatioOut(this.fluxFastRatio, ItemRBMKRod.getEnrichment(slots[0])); double fluxIn; - fluxIn = rod.fluxFromRatio(this.fluxQuantity, this.fluxRatio); + fluxIn = rod.fluxFromRatio(this.fluxQuantity, this.fluxFastRatio); fluxQuantityOut = rod.burn(worldObj, slots[0], fluxIn); } else { @@ -141,10 +141,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM //for spreading, we want the buffered flux to be 0 because we want to know exactly how much gets reflected back this.lastFluxQuantity = this.fluxQuantity; - this.lastFluxRatio = this.fluxRatio; + this.lastFluxRatio = this.fluxFastRatio; this.fluxQuantity = 0; - this.fluxRatio = 0; + this.fluxFastRatio = 0; spreadFlux(fluxQuantityOut, fluxRatioOut); @@ -155,7 +155,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.lastFluxRatio = 0; this.lastFluxQuantity = 0; this.fluxQuantity = 0; - this.fluxRatio = 0; + this.fluxFastRatio = 0; hasRod = false; @@ -166,9 +166,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM private double fluxFromType(NType type) { + double fastFlux = this.fluxQuantity * this.fluxFastRatio; + double slowFlux = this.fluxQuantity * (1 - this.fluxFastRatio); + switch(type) { - case SLOW: return (this.fluxQuantity * (1 - this.fluxRatio) + Math.min(this.fluxRatio * 0.5, 1)); - case FAST: return (this.fluxQuantity * (1 - this.fluxRatio) + Math.min(this.fluxRatio * 0.3, 1)); + case SLOW: return slowFlux + fastFlux * 0.5; + case FAST: return fastFlux + slowFlux * 0.3; case ANY: return this.fluxQuantity; } @@ -219,12 +222,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM // recalculate new values to keep stable operations this.fluxQuantity = nbt.getDouble("fluxFast") + nbt.getDouble("fluxSlow"); if (this.fluxQuantity > 0) - this.fluxRatio = nbt.getDouble("fluxFast") / fluxQuantity; + this.fluxFastRatio = nbt.getDouble("fluxFast") / fluxQuantity; else - this.fluxRatio = 0; + this.fluxFastRatio = 0; } else { this.fluxQuantity = nbt.getDouble("fluxQuantity"); - this.fluxRatio = nbt.getDouble("fluxMod"); + this.fluxFastRatio = nbt.getDouble("fluxMod"); } this.hasRod = nbt.getBoolean("hasRod"); } @@ -237,8 +240,8 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM nbt.setDouble("fluxQuantity", this.lastFluxQuantity); nbt.setDouble("fluxMod", this.lastFluxRatio); } else { - nbt.setDouble("fluxSlow", this.fluxQuantity * (1 - fluxRatio)); - nbt.setDouble("fluxFast", this.fluxQuantity * fluxRatio); + nbt.setDouble("fluxSlow", this.fluxQuantity * (1 - fluxFastRatio)); + nbt.setDouble("fluxFast", this.fluxQuantity * fluxFastRatio); } nbt.setBoolean("hasRod", this.hasRod); } @@ -255,7 +258,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public void deserialize(ByteBuf buf) { super.deserialize(buf); this.fluxQuantity = buf.readDouble(); - this.fluxRatio = buf.readDouble(); + this.fluxFastRatio = buf.readDouble(); this.hasRod = buf.readBoolean(); } @@ -398,7 +401,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM @Callback(direct = true) @Optional.Method(modid = "OpenComputers") public Object[] getFluxRatio(Context context, Arguments args) { - return new Object[] {fluxRatio}; + return new Object[] {fluxFastRatio}; } @Callback(direct = true) @@ -462,7 +465,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] { heat, returnValues.get(0), returnValues.get(1), - fluxQuantity, fluxRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), + fluxQuantity, fluxFastRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 62ddc6373..ff7196362 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3887,6 +3887,10 @@ shape.wiresDense=Dichte DrÀhte soundCategory.ntmMachines=NTM Maschinen +stat.ntmBullets=SchÃŒsse gefeuert +stat.ntmLegendary=LegendÀre GegenstÀnde hergestellt +stat.ntmMines=Auf Minen getreten + tile.absorber.name=Strahlungs-Absorber tile.absorber_green.name=Fortgeschrittener Strahlungs-Absorber tile.absorber_pink.name=Elite Strahlungs-Absorber diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b0920c16b..f5d88f252 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4970,6 +4970,10 @@ shape.wiresDense=Dense Wires soundCategory.ntmMachines=NTM Machines +stat.ntmBullets=Rounds Fired +stat.ntmLegendary=Legendary Items Created +stat.ntmMines=Mines Stepped on + tile.absorber.name=Radiation Absorber tile.absorber_green.name=Advanced Radiation Absorber tile.absorber_pink.name=Elite Radiation Absorber From 18dfb21ca41fec376ca5147f70d28b636ec7220d Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 17 Feb 2025 16:59:17 +0100 Subject: [PATCH 25/64] UNINOS --- changelog | 45 +------ .../api/hbm/energymk2/IEnergyProviderMK2.java | 4 +- .../api/hbm/energymk2/IEnergyReceiverMK2.java | 29 +---- .../hbm/commands/CommandReloadRecipes.java | 2 +- src/main/java/com/hbm/config/WorldConfig.java | 14 +++ .../inventory/recipes/AssemblerRecipes.java | 15 +-- .../hbm/inventory/recipes/MagicRecipes.java | 12 -- .../java/com/hbm/main/CraftingManager.java | 75 +++++++----- src/main/java/com/hbm/main/MainRegistry.java | 10 +- src/main/java/com/hbm/uninos/GenNode.java | 4 +- .../java/com/hbm/uninos/IGenProvider.java | 5 + .../java/com/hbm/uninos/IGenReceiver.java | 10 ++ .../java/com/hbm/uninos/INetworkProvider.java | 4 +- src/main/java/com/hbm/uninos/INodeNet.java | 7 -- src/main/java/com/hbm/uninos/NodeNet.java | 80 ++++++++++++ .../java/com/hbm/uninos/UniNodespace.java | 3 + .../networkproviders/PowerProvider.java | 5 +- .../com/hbm/uninos/networks/PowerNetwork.java | 115 ++++++++++++++++-- .../hbm/textures/items/ingot_metal_sheet.png | Bin 0 -> 5095 bytes 19 files changed, 287 insertions(+), 152 deletions(-) create mode 100644 src/main/java/com/hbm/uninos/IGenProvider.java create mode 100644 src/main/java/com/hbm/uninos/IGenReceiver.java delete mode 100644 src/main/java/com/hbm/uninos/INodeNet.java create mode 100644 src/main/java/com/hbm/uninos/NodeNet.java create mode 100644 src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png diff --git a/changelog b/changelog index 20261ecff..39319f886 100644 --- a/changelog +++ b/changelog @@ -1,44 +1,7 @@ -## Added -* Refueling station - * Like a charging station, but for fluids - ## Changed -* Updated chinese localization -* Particle detectors now print an error for when the recipe could not be completed -* Night Vision Goggles toggles with armor HUD -* Removed "no ore dict data" line from tooltips with extended view enabled -* Added a client config called `GUN_ANIMATION_SPEED` which allows the speed of gun animations to be changed - * Mostly for debugging, since it only applies to the bus animation system, things like smoke trails and muzzle flashes are unaffected -* Item filters can now filter by bedrock ore grade -* Meteorite dungeons now use a new structure system - * The rooms have been completely changed, and the dungeons are no longer single-level with fixed room sizes - * Dungeons no longer lag the game to hell when generating -* Decimated bobmazon - * All books have been merged into one with way fewer offers - * Sells things like basic gear, MREs, plushies, snow globes, and certain things only found in worldgen like jungle tree saplings and NTM flowers (including mustard willow) -* Each acidizer recipe now has a "productivity" value which is the percent chance that the effectiveness upgrades use, instead of a fixed 5% per level - * This means that certain recipes like re-crystallizing gems no longer allow for item duping - * Due to duping no longer being a concern, productivity rates for certain recipes can now be much higher - * Things like sawdust to cordite have a 75% chance of not using the input at level 3 - * Effectiveness no longer increases acid consumption (since many recipes now use the acidizer like a solid output "mixer") but instead adds +200% power consumption per level - * Effectiveness can be configured with the recipe and caps out at 99% (since 100% would just print free items) -* Chemical dyes can now also be made with light oil -* There's now statistics for creating legendary weapons and ammo, stepping on landmines and firing guns -* Assembly templates no longer specify whether they are persistent and volatile, since volatile templates haven't existed in years -* Obliterated the HTR-01 item for good - * Idk why it still existed -* Skeletons, slimes and cybercrabs can no longer be gibbed, since they don't have flesh -* The template folder's description now uses flashing colors to make it harder to ignore -* Scaled swords no longer use 1.1 scale in the inventory, making them larger than the inventory slot -* Fissures can now be connected to fluid ducts, providing 1,000mB of lava per tick +* Large deposits (hematite, malachite, bauxite) and caves (sulfur, asbestos) can now be toggled in the config +* Removed recipes for most old particle accelerator parts +* Dense coils no longer have recipes either for the most part, all coils with no recipes can be recycled back into dense wires ## Fixed -* Fixed items being annihilated when shift clicking them into the particle source -* Fixed packet optimization not allowing packets to be sent when the day night cycle is halted -* Fixed particle detectors not always using power when they should -* Fixed rotary furnace voiding low pressure steam when dealing with input numbers not divisible by 100 -* Fixed state leak causing smoke from the right akimbo weapon to glow when the first one is fired -* Fixed incorrect default values for new RBMK dials -* Fixed blast doors self-destructing when closing -* Fixed PA coils being in the wrong creative tab -* Fixed flux calculation for RBMKs being wrong, mainly affecting reactors using fast flux +* Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded \ No newline at end of file diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java index 6643e3fcd..e933cdf22 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -2,6 +2,8 @@ package api.hbm.energymk2; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.uninos.IGenProvider; +import com.hbm.uninos.networkproviders.PowerProvider; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -12,7 +14,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; /** If it sends energy, use this */ -public interface IEnergyProviderMK2 extends IEnergyHandlerMK2 { +public interface IEnergyProviderMK2 extends IEnergyHandlerMK2, IGenProvider { /** Uses up available power, default implementation has no sanity checking, make sure that the requested power is lequal to the current power */ public default void usePower(long power) { diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java index 6ff96df42..47fb07a89 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -3,6 +3,8 @@ package api.hbm.energymk2; import com.hbm.interfaces.NotableComments; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.uninos.IGenReceiver; +import com.hbm.uninos.networkproviders.PowerProvider; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -14,7 +16,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** If it receives energy, use this */ @NotableComments -public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { +public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2, IGenReceiver { public default long transferPower(long power) { if(power + this.getPower() <= this.getMaxPower()) { @@ -76,31 +78,6 @@ public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2 { } } - /** - * Project MKUltra was an illegal human experiments program designed and undertaken by the U.S. Central Intelligence Agency (CIA) - * to develop procedures and identify drugs that could be used during interrogations to weaken people and force confessions through - * brainwashing and psychological torture. It began in 1953 and was halted in 1973. MKUltra used numerous methods to manipulate - * its subjects' mental states and brain functions, such as the covert administration of high doses of psychoactive drugs (especially LSD) - * and other chemicals without the subjects' consent, electroshocks, hypnosis, sensory deprivation, isolation, verbal and sexual - * abuse, and other forms of torture. - * MKUltra was preceded by Project Artichoke. It was organized through the CIA's Office of Scientific Intelligence and coordinated - * with the United States Army Biological Warfare Laboratories. The program engaged in illegal activities, including the - * use of U.S. and Canadian citizens as unwitting test subjects. MKUltra's scope was broad, with activities carried - * out under the guise of research at more than 80 institutions aside from the military, including colleges and universities, - * hospitals, prisons, and pharmaceutical companies. The CIA operated using front organizations, although some top officials at these - * institutions were aware of the CIA's involvement. - * MKUltra was revealed to the public in 1975 by the Church Committee of the United States Congress and Gerald Ford's United States - * President's Commission on CIA activities within the United States (the Rockefeller Commission). Investigative efforts were hampered - * by CIA Director Richard Helms's order that all MKUltra files be destroyed in 1973; the Church Committee and Rockefeller Commission - * investigations relied on the sworn testimony of direct participants and on the small number of documents that survived Helms's order. - * In 1977, a Freedom of Information Act request uncovered a cache of 20,000 documents relating to MKUltra, which led to Senate hearings. - * Some surviving information about MKUltra was declassified in 2001. - * */ - public default ConnectionPriority getPriority() { - return ConnectionPriority.NORMAL; - } - - /** More is better-er */ public enum ConnectionPriority { LOWEST, LOW, diff --git a/src/main/java/com/hbm/commands/CommandReloadRecipes.java b/src/main/java/com/hbm/commands/CommandReloadRecipes.java index 9068adb38..b73da42fd 100644 --- a/src/main/java/com/hbm/commands/CommandReloadRecipes.java +++ b/src/main/java/com/hbm/commands/CommandReloadRecipes.java @@ -26,10 +26,10 @@ public class CommandReloadRecipes extends CommandBase { @Override public void processCommand(ICommandSender sender, String[] args) { try { + Fluids.reloadFluids(); SerializableRecipe.initialize(); ItemPoolConfigJSON.initialize(); DamageResistanceHandler.init(); - Fluids.reloadFluids(); sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reload complete :)")); } catch(Exception ex) { diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 7bb0faf58..0eb14c026 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -74,6 +74,13 @@ public class WorldConfig { public static int endTikiteSpawn = 8; + public static boolean enableHematite = true; + public static boolean enableMalachite = true; + public static boolean enableBauxite = true; + + public static boolean enableSulfurCave = true; + public static boolean enableAsbestosCave = true; + public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; @@ -189,6 +196,13 @@ public class WorldConfig { endTikiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.E00_tikiteSpawnrate", "Amount of end trixite per chunk", 8); + enableHematite = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.L00_enableHematite", "Toggles hematite deposits", true); + enableMalachite = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.L01_enableMalachite", "Toggles malachite deposits", true); + enableBauxite = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.L02_enableBauxite", "Toggles bauxite deposits", true); + + enableSulfurCave = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.C00_enableSulfurCave", "Toggles sulfur caves", true); + enableAsbestosCave = CommonConfig.createConfigBool(config, CATEGORY_OREGEN, "2.C01_enableAsbestosCave", "Toggles asbestos caves", true); + final String CATEGORY_DUNGEON = CommonConfig.CATEGORY_DUNGEONS; radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500); antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index e3e16a140..c1949152a 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -79,7 +79,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.rtg_unit, 1), new AStack[] {new ComparableStack(ModItems.thermo_element, 2), new OreDictStack(CU.plateCast(), 1), new OreDictStack(PB.ingot(), 2), new OreDictStack(STEEL.plate(), 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CAPACITOR.ordinal()), },100); makeRecipe(new ComparableStack(ModItems.levitation_unit, 1), new AStack[] {new ComparableStack(ModItems.coil_copper, 4), new ComparableStack(ModItems.coil_tungsten, 2), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.nugget_schrabidium, 2), },100); makeRecipe(new ComparableStack(ModItems.drill_titanium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(DURA.ingot(), 2), new OreDictStack(DURA.bolt(), 4), new OreDictStack(TI.plate(), 6), },100); - makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new ComparableStack(ModBlocks.hadron_coil_gold, 4), new OreDictStack(Fluids.XENON.getDict(1_000))},200); + makeRecipe(new ComparableStack(ModItems.entanglement_kit, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(DURA.ingot(), 4), new OreDictStack(CU.plate(), 24), new OreDictStack(GOLD.wireDense(), 16), new OreDictStack(Fluids.XENON.getDict(1_000))},200); makeRecipe(new ComparableStack(ModItems.dysfunctional_reactor, 1), new AStack[] {new OreDictStack(STEEL.plate(), 15), new OreDictStack(PB.ingot(), 5), new ComparableStack(ModItems.rod_quad_empty, 10), new OreDictStack("dyeBrown", 3), },200); makeRecipe(new ComparableStack(ModItems.missile_assembly, 1), new AStack[] {new OreDictStack(STEEL.shell(), 2), new OreDictStack(AL.shell(), 2), new OreDictStack(TI.plate(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 8), new ComparableStack(ModItems.rocket_fuel, 8), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.BASIC), }, 200); makeRecipe(new ComparableStack(ModItems.warhead_generic_small, 1), new AStack[] {new OreDictStack(TI.plate(), 5), new OreDictStack(STEEL.plate(), 3), new ComparableStack(ModItems.ball_dynamite, 2), new ComparableStack(ModItems.circuit, 1, EnumCircuitType.CHIP) },100); @@ -552,8 +552,7 @@ public class AssemblerRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModBlocks.machine_cyclotron, 1), new AStack[] { new ComparableStack(ModBlocks.machine_lithium_battery, 3), - new ComparableStack(ModBlocks.hadron_coil_neodymium, 8), - new OreDictStack(ALLOY.wireDense(), 16), + new OreDictStack(ND.wireDense(), 32), !exp ? new OreDictStack(STEEL.ingot(), 16) : new OreDictStack(STEEL.heavyComp(), 3), new OreDictStack(STEEL.plate528(), 32), new OreDictStack(AL.plate528(), 32), @@ -1149,16 +1148,6 @@ public class AssemblerRecipes extends SerializableRecipe { new ComparableStack(ModItems.circuit, 10, EnumCircuitType.CAPACITOR_BOARD), }, 300); - makeRecipe(new ComparableStack(ModBlocks.hadron_core, 1), new AStack[] { - new ComparableStack(ModBlocks.hadron_coil_alloy, 24), - new OreDictStack(STEEL.ingot(), 8), - new OreDictStack(ANY_PLASTIC.ingot(), 16), - new OreDictStack(ANY_RESISTANTALLOY.ingot(), 8), - new ComparableStack(ModItems.circuit, 16, EnumCircuitType.BISMOID), - new ComparableStack(ModItems.circuit, 192, EnumCircuitType.CAPACITOR_BOARD), - new ComparableStack(ModItems.crt_display, 1), - }, 300); - makeRecipe(new ComparableStack(ModBlocks.struct_launcher_core, 1), new AStack[] { new ComparableStack(ModBlocks.machine_battery, 3), new ComparableStack(ModBlocks.steel_scaffold, 10), diff --git a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java index dfb802485..863f76c25 100644 --- a/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MagicRecipes.java @@ -56,18 +56,6 @@ public class MagicRecipes { new ComparableStack(ModItems.powder_dineutronium), new ComparableStack(ModItems.blades_desh), new ComparableStack(ModItems.diamond_gavel))); - - recipes.add(new MagicRecipe(new ItemStack(ModBlocks.hadron_coil_mese), - new ComparableStack(ModBlocks.hadron_coil_chlorophyte), - new ComparableStack(ModItems.powder_dineutronium), - new ComparableStack(ModItems.plate_desh), - new OreDictStack(GOLD.dust()))); - - recipes.add(new MagicRecipe(new ItemStack(ModBlocks.hadron_coil_mese), - new ComparableStack(ModBlocks.hadron_coil_chlorophyte), - new OreDictStack(DNT.wireDense()), - new OreDictStack(W.wireDense()), - new OreDictStack(GOLD.wireDense()))); } public static List getRecipes() { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 13d95c8c7..c1cc4e40c 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -775,39 +775,50 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mech_key, 1), new Object[] { "MCM", "MKM", "MMM", 'M', ModItems.ingot_meteorite_forged, 'C', ModItems.coin_maskman, 'K', ModItems.key }); addRecipeAuto(new ItemStack(ModItems.spawn_ufo, 1), new Object[] { "MMM", "DCD", "MMM", 'M', ModItems.ingot_meteorite, 'D', DNT.ingot(), 'C', ModItems.coin_worm }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WWW", "WCW", "WWW", 'W', ALLOY.wireFine(), 'C', ModBlocks.fusion_conductor }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 4, Mats.MAT_GOLD.id), new Object[] { ModBlocks.hadron_coil_gold }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 4, Mats.MAT_NEODYMIUM.id), new Object[] { ModBlocks.hadron_coil_neodymium }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 4, Mats.MAT_MAGTUNG.id), new Object[] { ModBlocks.hadron_coil_magtung }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 2, Mats.MAT_SCHRABIDIUM.id), new Object[] { ModBlocks.hadron_coil_schrabidium }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 2, Mats.MAT_SCHRABIDATE.id), new Object[] { ModBlocks.hadron_coil_schrabidate }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 2, Mats.MAT_STAR.id), new Object[] { ModBlocks.hadron_coil_starmetal }); + addShapelessAuto(new ItemStack(ModItems.powder_chlorophyte, 2), new Object[] { ModBlocks.hadron_coil_chlorophyte }); + addShapelessAuto(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_DNT.id), new Object[] { ModBlocks.hadron_coil_mese }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_blue }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_black }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_yellow }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_striped }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_glass }); + addShapelessAuto(new ItemStack(ModItems.plate_cast, 1, Mats.MAT_STEEL.id), new Object[] { ModBlocks.hadron_plating_voltz }); + addShapelessAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), new Object[] { ModBlocks.hadron_analysis }); + addShapelessAuto(DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), new Object[] { ModBlocks.hadron_analysis_glass }); + addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_alloy, 1), new Object[] { "WW", "WW", 'W', ALLOY.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "PGP", "PCP", "PGP", 'G', GOLD.dust(), 'C', ModBlocks.hadron_coil_alloy, 'P', IRON.plate() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "WG", "GW", 'W', ALLOY.wireDense(), 'G', GOLD.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "G", "C", "G", 'G', ND.dust(), 'C', ModBlocks.hadron_coil_gold }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "WG", "GW", 'W', ND.wireDense(), 'G', GOLD.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WW", "WW", 'W', MAGTUNG.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WWW", "WCW", "WWW", 'W', SA326.wireFine(), 'C', ModBlocks.hadron_coil_magtung }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WS", "SW", 'W', MAGTUNG.wireDense(), 'S', SA326.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { " S ", "SCS", " S ", 'S', SBD.dust(), 'C', ModBlocks.hadron_coil_schrabidium }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { "WS", "SW", 'W', SBD.wireDense(), 'S', SA326.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SNS", "SCS", "SNS", 'S', STAR.ingot(), 'N', ModBlocks.hadron_coil_neodymium, 'C', ModBlocks.hadron_coil_schrabidate }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SW", "WS", 'W', SBD.wireDense(), 'S', STAR.wireDense() }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TCT", "TST", "TCT", 'T', ModItems.coil_tungsten, 'C', ModItems.powder_chlorophyte, 'S', ModBlocks.hadron_coil_starmetal }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TC", "CT", 'T', W.wireDense(), 'C', ModItems.powder_chlorophyte }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_diode, 1), new Object[] { "CIC", "ISI", "CIC", 'C', ModBlocks.hadron_coil_alloy, 'I', STEEL.ingot(), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_plating, 16), new Object[] { "CC", "CC", 'C', STEEL.plateCast()}); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_blue, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLUE }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_black, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_yellow, 1), new Object[] { ModBlocks.hadron_plating, KEY_YELLOW }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_striped, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK, KEY_YELLOW }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_glass, 1), new Object[] { ModBlocks.hadron_plating, KEY_ANYGLASS }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_voltz, 1), new Object[] { ModBlocks.hadron_plating, KEY_RED }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power, 1), new Object[] { "SFS", "FTF", "SFS", 'S', BIGMT.ingot(), 'T', ModBlocks.machine_transformer, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_100m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_10m, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_1g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_100m, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_1g, 'F', ModItems.fuse }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_analysis, 1), new Object[] { "IPI", "PCP", "IPI", 'I', TI.ingot(), 'P', getReflector(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); - addShapelessAuto(new ItemStack(ModBlocks.hadron_analysis_glass, 1), new Object[] { ModBlocks.hadron_analysis, KEY_ANYGLASS }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_access, 1), new Object[] { "IGI", "CRC", "IPI", 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'R', REDSTONE.block(), 'P', ModBlocks.hadron_plating_blue }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 0), new Object[] { "PCP", "CHC", "PCP", 'P', ANY_RESISTANTALLOY.plateCast(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'H', Fluids.HELIUM4.getDict(16_000) }); - addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 1), new Object[] { "PCP", "CHC", "PCP", 'P', GOLD.plateCast(), 'C', ModItems.motor_bismuth, 'H', new ItemStack(ModBlocks.hadron_cooler, 1, 0) }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_gold, 1), new Object[] { "WG", "GW", 'W', ALLOY.wireDense(), 'G', GOLD.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_neodymium, 1), new Object[] { "WG", "GW", 'W', ND.wireDense(), 'G', GOLD.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_magtung, 1), new Object[] { "WW", "WW", 'W', MAGTUNG.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidium, 1), new Object[] { "WS", "SW", 'W', MAGTUNG.wireDense(), 'S', SA326.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_schrabidate, 1), new Object[] { "WS", "SW", 'W', SBD.wireDense(), 'S', SA326.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_starmetal, 1), new Object[] { "SW", "WS", 'W', SBD.wireDense(), 'S', STAR.wireDense() }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_coil_chlorophyte, 1), new Object[] { "TC", "CT", 'T', CU.wireDense(), 'C', ModItems.powder_chlorophyte }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_diode, 1), new Object[] { "CIC", "ISI", "CIC", 'C', ModBlocks.hadron_coil_alloy, 'I', STEEL.ingot(), 'S', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_plating, 16), new Object[] { "CC", "CC", 'C', STEEL.plateCast()}); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_blue, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLUE }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_black, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_yellow, 1), new Object[] { ModBlocks.hadron_plating, KEY_YELLOW }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_striped, 1), new Object[] { ModBlocks.hadron_plating, KEY_BLACK, KEY_YELLOW }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_glass, 1), new Object[] { ModBlocks.hadron_plating, KEY_ANYGLASS }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_plating_voltz, 1), new Object[] { ModBlocks.hadron_plating, KEY_RED }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power, 1), new Object[] { "SFS", "FTF", "SFS", 'S', BIGMT.ingot(), 'T', ModBlocks.machine_transformer, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_100m, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_10m, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_1g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_100m, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_power_10g, 1), new Object[] { "HF", 'H', ModBlocks.hadron_power_1g, 'F', ModItems.fuse }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_analysis, 1), new Object[] { "IPI", "PCP", "IPI", 'I', TI.ingot(), 'P', getReflector(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + //addShapelessAuto(new ItemStack(ModBlocks.hadron_analysis_glass, 1), new Object[] { ModBlocks.hadron_analysis, KEY_ANYGLASS }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_access, 1), new Object[] { "IGI", "CRC", "IPI", 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'R', REDSTONE.block(), 'P', ModBlocks.hadron_plating_blue }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 0), new Object[] { "PCP", "CHC", "PCP", 'P', ANY_RESISTANTALLOY.plateCast(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BASIC), 'H', Fluids.HELIUM4.getDict(16_000) }); + //addRecipeAuto(new ItemStack(ModBlocks.hadron_cooler, 1, 1), new Object[] { "PCP", "CHC", "PCP", 'P', GOLD.plateCast(), 'C', ModItems.motor_bismuth, 'H', new ItemStack(ModBlocks.hadron_cooler, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.fireworks, 1), new Object[] { "PPP", "PPP", "WIW", 'P', Items.paper, 'W', KEY_PLANKS, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModItems.safety_fuse, 8), new Object[] { "SSS", "SGS", "SSS", 'S', Items.string, 'G', Items.gunpowder }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 235b7e2b4..94e2e5afa 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -882,11 +882,11 @@ public class MainRegistry { MinecraftForge.EVENT_BUS.register(new SchistStratum()); //DecorateBiomeEvent.Pre //MinecraftForge.EVENT_BUS.register(new DeepLayer()); //DecorateBiomeEvent.Pre - new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur - new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()).setScaleH(0.04D).setScaleV(0.25D).setThreshold(230); - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.BAUXITE.ordinal()).setScaleH(0.03D).setScaleV(0.15D).setThreshold(300); - new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()).setScaleH(0.1D).setScaleV(0.15D).setThreshold(275); + if(WorldConfig.enableSulfurCave) new OreCave(ModBlocks.stone_resource, 0).setThreshold(1.5D).setRangeMult(20).setYLevel(30).setMaxRange(20).withFluid(ModBlocks.sulfuric_acid_block); //sulfur + if(WorldConfig.enableAsbestosCave) new OreCave(ModBlocks.stone_resource, 1).setThreshold(1.75D).setRangeMult(20).setYLevel(25).setMaxRange(20); //asbestos + if(WorldConfig.enableHematite) new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()).setScaleH(0.04D).setScaleV(0.25D).setThreshold(230); + if(WorldConfig.enableMalachite) new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.BAUXITE.ordinal()).setScaleH(0.03D).setScaleV(0.15D).setThreshold(300); + if(WorldConfig.enableBauxite) new OreLayer3D(ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()).setScaleH(0.1D).setScaleV(0.15D).setThreshold(275); //new BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); BedrockOre.init(); diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index 6f7390019..cc7f028c3 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -7,7 +7,7 @@ public class GenNode { public BlockPos[] positions; public DirPos[] connections; - public INodeNet net; + public NodeNet net; public boolean expired = false; public boolean recentlyChanged = true; public T networkProvider; @@ -34,7 +34,7 @@ public class GenNode { return this.net != null && this.net.isValid(); } - public void setNet(INodeNet net) { + public void setNet(NodeNet net) { this.net = net; this.recentlyChanged = true; } diff --git a/src/main/java/com/hbm/uninos/IGenProvider.java b/src/main/java/com/hbm/uninos/IGenProvider.java new file mode 100644 index 000000000..efc43f763 --- /dev/null +++ b/src/main/java/com/hbm/uninos/IGenProvider.java @@ -0,0 +1,5 @@ +package com.hbm.uninos; + +public interface IGenProvider { + +} diff --git a/src/main/java/com/hbm/uninos/IGenReceiver.java b/src/main/java/com/hbm/uninos/IGenReceiver.java new file mode 100644 index 000000000..3f6ef53ca --- /dev/null +++ b/src/main/java/com/hbm/uninos/IGenReceiver.java @@ -0,0 +1,10 @@ +package com.hbm.uninos; + +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; + +public interface IGenReceiver { + + public default ConnectionPriority getPriority() { + return ConnectionPriority.NORMAL; + } +} diff --git a/src/main/java/com/hbm/uninos/INetworkProvider.java b/src/main/java/com/hbm/uninos/INetworkProvider.java index ec515d92b..a774028ab 100644 --- a/src/main/java/com/hbm/uninos/INetworkProvider.java +++ b/src/main/java/com/hbm/uninos/INetworkProvider.java @@ -4,7 +4,7 @@ package com.hbm.uninos; * Each instance of a network provider is a valid "type" of node in UNINOS * @author hbm */ -public interface INetworkProvider { +public interface INetworkProvider { - public INodeNet provideNetwork(); + public T provideNetwork(); } diff --git a/src/main/java/com/hbm/uninos/INodeNet.java b/src/main/java/com/hbm/uninos/INodeNet.java deleted file mode 100644 index b7c84d3ae..000000000 --- a/src/main/java/com/hbm/uninos/INodeNet.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.hbm.uninos; - -public interface INodeNet { - - public boolean isValid(); - public void destroy(); -} diff --git a/src/main/java/com/hbm/uninos/NodeNet.java b/src/main/java/com/hbm/uninos/NodeNet.java new file mode 100644 index 000000000..650d902bd --- /dev/null +++ b/src/main/java/com/hbm/uninos/NodeNet.java @@ -0,0 +1,80 @@ +package com.hbm.uninos; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Random; +import java.util.Set; + +public abstract class NodeNet { + + public static Random rand = new Random(); + + public boolean valid = true; + public Set> links = new HashSet(); + + public abstract HashMap, Long> receiverEntries(); + public abstract HashMap, Long> providerEntries(); + + public NodeNet() { + UniNodespace.activeNodeNets.add(this); + } + + /// SUBSCRIBER HANDLING /// + public boolean isSubscribed(IGenReceiver receiver) { return this.receiverEntries().containsKey(receiver); } + public void addReceiver(IGenReceiver receiver) { this.receiverEntries().put(receiver, System.currentTimeMillis()); } + public void removeReceiver(IGenReceiver receiver) { this.receiverEntries().remove(receiver); } + + /// PROVIDER HANDLING /// + public boolean isProvider(IGenProvider provider) { return this.providerEntries().containsKey(provider); } + public void addProvider(IGenProvider provider) { this.providerEntries().put(provider, System.currentTimeMillis()); } + public void removeProvider(IGenProvider provider) { this.providerEntries().remove(provider); } + + /** Combines two networks into one */ + public void joinNetworks(NodeNet network) { + if(network == this) return; + + List> oldNodes = new ArrayList(network.links.size()); + oldNodes.addAll(network.links); + + for(GenNode conductor : oldNodes) forceJoinLink(conductor); + network.links.clear(); + + for(IGenReceiver connector : network.receiverEntries().keySet()) this.addReceiver(connector); + for(IGenProvider connector : network.providerEntries().keySet()) this.addProvider(connector); + network.destroy(); + } + + /** Adds the node as part of this network's links */ + public NodeNet joinLink(GenNode node) { + if(node.net != null) node.net.leaveLink(node); + return forceJoinLink(node); + } + + /** Adds the node as part of this network's links, skips the part about removing it from existing networks */ + public NodeNet forceJoinLink(GenNode node) { + this.links.add(node); + node.setNet(this); + return this; + } + + /** Removes the specified node */ + public void leaveLink(GenNode node) { + node.setNet(null); + this.links.remove(node); + } + + /// GENERAL POWER NET CONTROL /// + public void invalidate() { this.valid = false; UniNodespace.activeNodeNets.remove(this); } + public boolean isValid() { return this.valid; } + public abstract void update(); + + public void destroy() { + this.invalidate(); + for(GenNode link : this.links) if(link.net == this) link.setNet(null); + this.links.clear(); + this.receiverEntries().clear(); + this.providerEntries().clear(); + } +} diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java index 7b07da5de..f0e9e7ffd 100644 --- a/src/main/java/com/hbm/uninos/UniNodespace.java +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -1,6 +1,8 @@ package com.hbm.uninos; import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -10,6 +12,7 @@ import net.minecraft.world.World; public class UniNodespace { public static HashMap worlds = new HashMap(); + public static Set activeNodeNets = new HashSet<>(); public static GenNode getNode(World world, int x, int y, int z, INetworkProvider type) { UniNodeWorld nodeWorld = worlds.get(world); diff --git a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java b/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java index bcaccc994..86cf18403 100644 --- a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java +++ b/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java @@ -1,13 +1,12 @@ package com.hbm.uninos.networkproviders; import com.hbm.uninos.INetworkProvider; -import com.hbm.uninos.INodeNet; import com.hbm.uninos.networks.PowerNetwork; -public class PowerProvider implements INetworkProvider { +public class PowerProvider implements INetworkProvider { @Override - public INodeNet provideNetwork() { + public PowerNetwork provideNetwork() { return new PowerNetwork(); } } diff --git a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java index 45bb09976..76897c4fc 100644 --- a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java +++ b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java @@ -1,16 +1,117 @@ package com.hbm.uninos.networks; -import com.hbm.uninos.INodeNet; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; -public class PowerNetwork implements INodeNet { +import com.hbm.uninos.IGenProvider; +import com.hbm.uninos.IGenReceiver; +import com.hbm.uninos.NodeNet; +import com.hbm.uninos.networkproviders.PowerProvider; +import com.hbm.util.Tuple.Pair; - @Override - public boolean isValid() { - return false; +import api.hbm.energymk2.IEnergyProviderMK2; +import api.hbm.energymk2.IEnergyReceiverMK2; +import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; + +public class PowerNetwork extends NodeNet { + + public HashMap receiverEntries = new HashMap(); + public HashMap providerEntries = new HashMap(); + + public long energyTracker = 0L; + + public void resetEnergyTracker() { + this.energyTracker = 0; } - @Override - public void destroy() { + @Override // this was all fun and games but let's take a few steps back: this generics stuff is kinda breaking shit, and as it turns out, apparently nothing even uses the type + public HashMap, Long> receiverEntries() { + return null; + } + + @Override // therefore i should probably consider scrapping the majority of the generic types - they seem to be kinda useless with the current approach + public HashMap, Long> providerEntries() { + return null; + } + + protected static int timeout = 3_000; + + public void update() { + if(providerEntries.isEmpty()) return; + if(receiverEntries.isEmpty()) return; + + long timestamp = System.currentTimeMillis(); + + List> providers = new ArrayList(); + long powerAvailable = 0; + + Iterator> provIt = providerEntries.entrySet().iterator(); + while(provIt.hasNext()) { + Entry entry = provIt.next(); + if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } + long src = Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); + providers.add(new Pair(entry.getKey(), src)); + powerAvailable += src; + } + + List>[] receivers = new ArrayList[ConnectionPriority.values().length]; + for(int i = 0; i < receivers.length; i++) receivers[i] = new ArrayList(); + long[] demand = new long[ConnectionPriority.values().length]; + long totalDemand = 0; + + Iterator> recIt = receiverEntries.entrySet().iterator(); + + while(recIt.hasNext()) { + Entry entry = recIt.next(); + if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } + long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); + int p = entry.getKey().getPriority().ordinal(); + receivers[p].add(new Pair(entry.getKey(), rec)); + demand[p] += rec; + totalDemand += rec; + } + + long toTransfer = Math.min(powerAvailable, totalDemand); + long energyUsed = 0; + + for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) { + List> list = receivers[i]; + long priorityDemand = demand[i]; + + for(Pair entry : list) { + double weight = (double) entry.getValue() / (double) (priorityDemand); + long toSend = (long) Math.max(toTransfer * weight, 0D); + energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up + } + + toTransfer -= energyUsed; + } + + this.energyTracker += energyUsed; + long leftover = energyUsed; + + for(Pair entry : providers) { + double weight = (double) entry.getValue() / (double) powerAvailable; + long toUse = (long) Math.max(energyUsed * weight, 0D); + entry.getKey().usePower(toUse); + leftover -= toUse; + } + + //rounding error compensation, detects surplus that hasn't been used and removes it from random providers + int iterationsLeft = 100; // whiles without emergency brakes are a bad idea + while(iterationsLeft > 0 && leftover > 0 && providers.size() > 0) { + iterationsLeft--; + + Pair selected = providers.get(rand.nextInt(providers.size())); + IEnergyProviderMK2 scapegoat = selected.getKey(); + + long toUse = Math.min(leftover, scapegoat.getPower()); + scapegoat.usePower(toUse); + leftover -= toUse; + } } } diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..94d7d4a402abdfc9f252ff212aedfbfa91a1b6c8 GIT binary patch literal 5095 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≠X4MLzktC(LM)Poac!K ztf$TMl9yrc@0X^37>P*?MF%uA>>@EO31p|$C%}lm0i`|LD)k%kA?wG@y&41&l0uRc-V^w4WF?duh>{FP8>PPhLR$hkG5dGxUet072jMZ zvhvo_ZLu)yaB%5d50fDpG*KE(cGwoABQGOKoIEqLyu1~9F`o{p3?Ux;+fw~QuO9FL z6y+}qy~W`SwT4IZ5*H4HQ|S3eY=U>Ghz!s~hN6?k6SbbIDIfLPCO2pJjvqvyqn} zsh5WPkfP-0>Z2?xYSF%Kx1<50fq}=a5x@JzYvo8V|9`gA2UQk0$wvSH002ov JPDHLkV1f>z!m|JX literal 0 HcmV?d00001 From de8324ce9b925d156bff991013b5536f60a23b0a Mon Sep 17 00:00:00 2001 From: Vaern Date: Mon, 17 Feb 2025 10:14:54 -0800 Subject: [PATCH 26/64] added mas-36 model, texture --- .../assets/hbm/models/weapons/mas36.obj | 7272 +++++++++++++++++ .../hbm/textures/models/weapons/mas36.png | Bin 0 -> 16605 bytes 2 files changed, 7272 insertions(+) create mode 100644 src/main/resources/assets/hbm/models/weapons/mas36.obj create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/mas36.png diff --git a/src/main/resources/assets/hbm/models/weapons/mas36.obj b/src/main/resources/assets/hbm/models/weapons/mas36.obj new file mode 100644 index 000000000..9e989db33 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/mas36.obj @@ -0,0 +1,7272 @@ +# Blender v3.2.0 OBJ File: 'mas36.blend' +# www.blender.org +o Gun +v -0.250000 1.156250 6.187500 +v 0.250000 1.156250 6.187500 +v 0.000000 1.406250 6.187500 +v 0.250000 0.781250 6.187500 +v 0.187500 1.343750 6.187500 +v -0.187500 1.343750 6.187500 +v -0.250000 1.156250 3.875000 +v 0.250000 1.156250 3.875000 +v 0.000000 1.406250 3.875000 +v -0.250000 0.656250 3.875000 +v 0.250000 0.656250 3.875000 +v 0.187500 1.343750 3.875000 +v -0.187500 1.343750 3.875000 +v 0.125000 0.593750 6.187500 +v -0.125000 0.468750 3.875000 +v 0.125000 0.468750 3.875000 +v 0.125000 1.372756 6.437500 +v 0.216506 1.281250 6.437500 +v 0.250000 1.156250 6.437500 +v -0.250000 1.156250 6.437500 +v -0.216506 1.281250 6.437500 +v -0.125000 1.372756 6.437500 +v 0.000000 1.406250 6.437500 +v -0.312500 1.156250 6.187500 +v 0.312500 1.156250 6.187500 +v -0.312500 0.781250 6.187500 +v 0.312500 0.781250 6.187500 +v 0.250000 1.343750 6.187500 +v -0.250000 1.343750 6.187500 +v -0.125000 0.531250 6.187500 +v 0.125000 0.531250 6.187500 +v -0.312500 1.156250 6.437500 +v 0.312500 1.156250 6.437500 +v -0.312500 0.781250 6.625000 +v 0.312500 0.781250 6.625000 +v 0.250000 1.343750 6.437500 +v -0.250000 1.343750 6.437500 +v -0.125000 0.531250 6.625000 +v 0.125000 0.531250 6.625000 +v -0.312500 1.156250 3.875000 +v -0.312500 0.656250 3.875000 +v 0.312500 1.156250 3.875000 +v 0.312500 0.656250 3.875000 +v 0.250000 1.343750 3.875000 +v -0.250000 1.343750 3.875000 +v 0.000000 1.468750 3.875000 +v -0.125000 0.406250 3.875000 +v 0.125000 0.406250 3.875000 +v -0.312500 1.156250 3.562500 +v -0.312500 0.656250 3.562500 +v 0.312500 1.156250 3.562500 +v 0.312500 0.656250 3.562500 +v 0.250000 1.343750 3.562500 +v -0.250000 1.343750 3.562500 +v 0.000000 1.468750 3.562500 +v -0.125000 0.406250 3.562500 +v 0.125000 0.406250 3.562500 +v 0.000000 1.406250 3.562500 +v 0.250000 1.156250 3.562500 +v -0.250000 1.156250 3.562500 +v -0.187500 1.343750 3.562500 +v 0.187500 1.343750 3.562500 +v 0.250000 0.656250 3.562500 +v -0.250000 0.656250 3.562500 +v 0.125000 0.468750 3.562500 +v -0.125000 0.468750 3.562500 +v 0.000000 1.406250 0.437500 +v 0.250000 1.156250 0.437500 +v -0.250000 1.156250 0.437500 +v -0.187500 1.343750 0.437500 +v 0.187500 1.343750 0.437500 +v 0.250000 0.343750 0.375000 +v -0.250000 0.343750 0.375000 +v -0.187500 0.218750 0.375000 +v 0.187500 0.218750 0.375000 +v -0.312500 1.156250 6.625000 +v 0.312500 1.156250 6.625000 +v -0.250000 0.781250 6.187500 +v -0.125000 0.593750 6.187500 +v 0.250000 0.906250 -3.062500 +v 0.250000 0.906250 0.375000 +v -0.250000 0.906250 -3.062500 +v -0.250000 0.906250 0.375000 +v 0.250000 -0.093750 -2.937500 +v -0.250000 -0.093750 -2.937500 +v 0.250000 0.343750 0.312500 +v -0.250000 0.343750 0.312500 +v 0.187500 0.218750 0.187500 +v -0.187500 0.218750 0.187500 +v 0.187500 0.031250 -1.562500 +v -0.187500 0.031250 -1.562500 +v 0.250000 0.031250 -1.687500 +v -0.250000 0.031250 -1.687500 +v 0.250000 0.843750 0.312500 +v 0.187500 0.781250 0.187500 +v 0.250000 0.843750 -1.687500 +v 0.187500 0.781250 -1.562500 +v -0.187500 0.093750 0.125000 +v 0.187500 0.093750 0.125000 +v -0.187500 -0.093750 -1.562500 +v 0.187500 -0.093750 -1.562500 +v 0.000000 1.281250 -0.062500 +v -0.062500 1.264503 -0.062500 +v -0.108253 1.218750 -0.062500 +v -0.125000 1.156250 -0.062500 +v -0.108253 1.093750 -0.062500 +v -0.062500 1.047997 -0.062500 +v 0.000000 1.031250 -0.062500 +v 0.062500 1.047997 -0.062500 +v 0.108253 1.093750 -0.062500 +v 0.125000 1.156250 -0.062500 +v 0.108253 1.218750 -0.062500 +v 0.062500 1.264503 -0.062500 +v 0.000000 1.343750 -0.187500 +v -0.093750 1.318630 -0.187500 +v -0.162380 1.250000 -0.187500 +v -0.187500 1.156250 -0.187500 +v 0.187500 1.031250 0.375000 +v 0.108253 1.218750 -1.062500 +v 0.125000 1.156250 -1.125000 +v 0.187500 1.156250 -1.125000 +v 0.162380 1.250000 -0.187500 +v 0.093750 1.318630 -0.187500 +v 0.000000 1.343750 0.437500 +v -0.093750 1.318630 0.437500 +v -0.162380 1.250000 0.437500 +v -0.187500 1.156250 0.437500 +v 0.108253 1.093750 -1.250000 +v 0.062500 1.047997 -1.750000 +v 0.000000 1.031250 -1.750000 +v -0.062500 1.047997 -1.750000 +v -0.108253 1.093750 -1.500000 +v 0.187500 1.156250 0.437500 +v 0.162380 1.250000 0.437500 +v 0.093750 1.318630 0.437500 +v -0.062500 1.264503 -0.187500 +v 0.000000 1.281250 -0.187500 +v -0.108253 1.218750 -0.187500 +v -0.125000 1.156250 -0.187500 +v -0.108253 1.093750 -0.250000 +v 0.108253 1.218750 -0.187500 +v 0.062500 1.264503 -0.187500 +v -0.187500 1.093750 -0.250000 +v 0.162380 1.250000 -1.062500 +v 0.187500 1.031250 -3.000000 +v -0.187500 1.031250 0.375000 +v -0.187500 1.031250 -2.750000 +v 0.187500 1.156250 -2.812500 +v -0.187500 1.156250 -2.750000 +v -0.062500 1.343750 -2.750000 +v 0.062500 1.343750 -2.750000 +v -0.125000 1.281250 -2.750000 +v 0.125000 1.281250 -2.750000 +v -0.062500 1.406250 -2.750000 +v 0.062500 1.406250 -2.750000 +v 0.187500 1.093750 -1.250000 +v 0.108253 1.093750 -1.437500 +v 0.187500 1.093750 -1.437500 +v 0.187500 1.156250 -1.562500 +v -0.187500 1.156250 -1.562500 +v 0.062500 1.406250 -1.562500 +v -0.062500 1.406250 -1.562500 +v -0.125000 1.281250 -1.562500 +v 0.125000 1.281250 -1.562500 +v -0.125000 1.406250 -1.687500 +v 0.125000 1.406250 -1.687500 +v 0.125000 1.406250 -1.562500 +v -0.125000 1.406250 -1.562500 +v 0.062500 1.406250 -1.625000 +v -0.062500 1.406250 -1.625000 +v -0.125000 1.281250 -1.687500 +v 0.125000 1.281250 -1.687500 +v -0.062500 1.406250 -1.750000 +v 0.062500 1.406250 -1.750000 +v -0.062500 1.343750 -1.750000 +v 0.062500 1.343750 -1.750000 +v 0.108253 1.093750 -1.750000 +v 0.000000 1.281250 -1.750000 +v -0.062500 1.264503 -1.750000 +v -0.108253 1.218750 -1.750000 +v -0.125000 1.156250 -1.750000 +v 0.125000 1.156250 -1.562500 +v -0.125000 1.156250 -1.562500 +v -0.108253 1.218750 -1.562500 +v -0.062500 1.264503 -1.625000 +v 0.000000 1.281250 -1.625000 +v 0.125000 1.156250 -1.750000 +v 0.108253 1.218750 -1.750000 +v 0.062500 1.264503 -1.750000 +v 0.108253 1.218750 -1.562500 +v 0.062500 1.264503 -1.625000 +v -0.187500 1.093750 -1.500000 +v -0.108253 1.093750 -1.750000 +v -0.062500 1.264503 -1.562500 +v 0.062500 1.264503 -1.562500 +v -0.250000 0.843750 0.312500 +v -0.250000 0.843750 -1.687500 +v -0.187500 0.781250 0.187500 +v -0.183909 0.031250 -1.561136 +v -0.183909 0.781250 -1.561136 +v 0.000000 1.281250 6.625000 +v -0.062500 1.264503 6.625000 +v -0.108253 1.218750 6.625000 +v -0.125000 1.156250 6.625000 +v -0.108253 1.093750 6.625000 +v -0.062500 1.047997 6.625000 +v 0.000000 1.031250 6.625000 +v 0.062500 1.047997 6.625000 +v 0.108253 1.093750 6.625000 +v 0.125000 1.156250 6.625000 +v 0.108253 1.218750 6.625000 +v 0.062500 1.264503 6.625000 +v 0.000000 1.281250 8.000000 +v -0.062500 1.264503 8.000000 +v -0.108253 1.218750 8.000000 +v -0.125000 1.156250 8.000000 +v -0.108253 1.093750 8.000000 +v -0.062500 1.047997 8.000000 +v 0.000000 1.031250 8.000000 +v 0.062500 1.047997 8.000000 +v 0.108253 1.093750 8.000000 +v 0.125000 1.156250 8.000000 +v 0.108253 1.218750 8.000000 +v 0.062500 1.264503 8.000000 +v 0.000000 1.218750 8.000000 +v -0.031250 1.210377 8.000000 +v -0.054127 1.187500 8.000000 +v -0.062500 1.156250 8.000000 +v -0.054127 1.125000 8.000000 +v -0.031250 1.102123 8.000000 +v 0.000000 1.093750 8.000000 +v 0.031250 1.102123 8.000000 +v 0.054127 1.125000 8.000000 +v 0.062500 1.156250 8.000000 +v 0.054127 1.187500 8.000000 +v 0.031250 1.210377 8.000000 +v 0.000000 1.218750 7.750000 +v -0.031250 1.210377 7.750000 +v -0.054127 1.187500 7.750000 +v -0.062500 1.156250 7.750000 +v -0.054127 1.125000 7.750000 +v -0.031250 1.102123 7.750000 +v 0.000000 1.093750 7.750000 +v 0.031250 1.102123 7.750000 +v 0.054127 1.125000 7.750000 +v 0.062500 1.156250 7.750000 +v 0.054127 1.187500 7.750000 +v 0.031250 1.210377 7.750000 +v 0.000000 1.406250 6.625000 +v -0.125000 1.372756 6.625000 +v -0.216506 1.281250 6.625000 +v -0.250000 1.156250 6.625000 +v 0.250000 1.156250 6.625000 +v 0.216506 1.281250 6.625000 +v 0.125000 1.372756 6.625000 +v 0.187500 1.156250 -3.000000 +v -0.250000 1.031250 0.375000 +v 0.250000 1.031250 0.375000 +v -0.187500 0.312500 0.031250 +v -0.187500 0.299940 0.078125 +v -0.187500 0.265625 0.112440 +v -0.187500 0.218750 0.125000 +v -0.187500 0.171875 0.112440 +v -0.187500 0.137560 0.078125 +v -0.187500 0.125000 0.031250 +v -0.187500 0.137560 -0.015625 +v -0.187500 0.171875 -0.049940 +v -0.187500 0.218750 -0.062500 +v -0.187500 0.265625 -0.049940 +v -0.187500 0.299940 -0.015625 +v -0.250000 0.312500 0.031250 +v -0.250000 0.299940 0.078125 +v -0.250000 0.265625 0.112440 +v -0.250000 0.218750 0.125000 +v -0.250000 0.171875 0.112440 +v -0.250000 0.137560 0.078125 +v -0.250000 0.125000 0.031250 +v -0.250000 0.137560 -0.015625 +v -0.250000 0.171875 -0.049940 +v -0.250000 0.218750 -0.062500 +v -0.250000 0.265625 -0.049940 +v -0.250000 0.299940 -0.015625 +v 0.187500 0.312500 0.031250 +v 0.187500 0.299940 -0.015625 +v 0.187500 0.265625 -0.049940 +v 0.187500 0.218750 -0.062500 +v 0.187500 0.171875 -0.049940 +v 0.187500 0.137560 -0.015625 +v 0.187500 0.125000 0.031250 +v 0.187500 0.137560 0.078125 +v 0.187500 0.171875 0.112440 +v 0.187500 0.218750 0.125000 +v 0.187500 0.265625 0.112440 +v 0.187500 0.299940 0.078125 +v 0.250000 0.312500 0.031250 +v 0.250000 0.299940 -0.015625 +v 0.250000 0.265625 -0.049940 +v 0.250000 0.218750 -0.062500 +v 0.250000 0.171875 -0.049940 +v 0.250000 0.137560 -0.015625 +v 0.250000 0.125000 0.031250 +v 0.250000 0.137560 0.078125 +v 0.250000 0.171875 0.112440 +v 0.250000 0.218750 0.125000 +v 0.250000 0.265625 0.112440 +v 0.250000 0.299940 0.078125 +v -0.125000 0.031250 -1.750000 +v -0.125000 -0.218750 -1.750000 +v -0.125000 -0.343750 -1.812500 +v -0.125000 -0.468750 -1.937500 +v -0.125000 -0.531250 -2.437500 +v -0.125000 -0.156250 -2.687500 +v -0.125000 -0.031250 -2.875000 +v -0.125000 -0.031250 -2.500000 +v -0.125000 -0.156250 -2.562500 +v -0.125000 -0.468750 -2.437500 +v -0.125000 0.031250 -1.812500 +v -0.125000 -0.218750 -1.812500 +v -0.125000 -0.343750 -1.875000 +v 0.125000 0.031250 -1.750000 +v 0.125000 -0.218750 -1.750000 +v 0.125000 -0.343750 -1.812500 +v 0.125000 -0.468750 -1.937500 +v 0.125000 -0.156250 -2.562500 +v 0.125000 -0.031250 -2.875000 +v 0.125000 -0.031250 -2.500000 +v 0.125000 -0.343750 -1.875000 +v 0.125000 0.031250 -1.812500 +v 0.125000 -0.218750 -1.812500 +v -0.125000 -0.406250 -1.937500 +v 0.125000 -0.406250 -1.937500 +v -0.125000 0.031250 -2.437500 +v 0.125000 0.031250 -2.437500 +v -0.125000 -0.156250 -2.375000 +v 0.125000 -0.156250 -2.375000 +v -0.125000 -0.281250 -2.375000 +v 0.125000 -0.281250 -2.375000 +v -0.125000 0.031250 -2.187500 +v 0.125000 0.031250 -2.187500 +v -0.125000 -0.156250 -2.312500 +v 0.125000 -0.156250 -2.312500 +v -0.125000 -0.281250 -2.312500 +v 0.125000 -0.281250 -2.312500 +v -0.125000 -0.406250 -2.250000 +v 0.125000 -0.406250 -2.250000 +v -0.125000 -0.406250 -2.312500 +v 0.125000 -0.406250 -2.312500 +v -0.187500 1.031250 -3.062500 +v 0.125000 1.156250 -2.812500 +v 0.125000 1.156250 -2.875000 +v 0.187500 1.156250 -2.875000 +v -0.093750 0.993870 -3.062500 +v 0.000000 0.968750 -3.062500 +v 0.093750 0.993870 -3.000000 +v 0.162380 1.062500 -3.000000 +v -0.093750 0.993870 -2.875000 +v 0.000000 0.968750 -2.875000 +v 0.093750 0.993870 -2.875000 +v 0.162380 1.062500 -2.875000 +v -0.093750 0.993870 -2.750000 +v -0.062500 1.047997 -2.875000 +v 0.000000 1.031250 -2.875000 +v 0.062500 1.047997 -2.875000 +v 0.108253 1.093750 -2.875000 +v -0.062500 1.047997 -2.750000 +v 0.125000 1.156250 -2.750000 +v 0.187500 1.031250 -3.062500 +v 0.093750 0.993870 -3.062500 +v 0.250000 0.218750 -3.062500 +v -0.250000 0.218750 -3.062500 +v -0.125000 -0.343750 -2.562500 +v -0.125000 -0.343750 -2.625000 +v 0.125000 -0.531250 -2.437500 +v 0.125000 -0.343750 -2.625000 +v 0.125000 -0.468750 -2.437500 +v 0.125000 -0.343750 -2.562500 +v 0.125000 -0.156250 -2.687500 +v 0.218750 1.343750 -2.687500 +v -0.156250 1.343750 -2.687500 +v -0.156250 1.468750 -2.687500 +v 0.000000 1.625000 -2.625000 +v -0.044194 1.606694 -2.625000 +v -0.062500 1.562500 -2.625000 +v -0.044194 1.518306 -2.625000 +v 0.000000 1.500000 -2.625000 +v 0.044194 1.518306 -2.625000 +v 0.062500 1.562500 -2.625000 +v 0.044194 1.606694 -2.625000 +v -0.000000 1.656250 -2.625000 +v -0.066291 1.628791 -2.625000 +v -0.093750 1.562500 -2.625000 +v -0.093750 1.468750 -2.625000 +v 0.093750 1.468750 -2.625000 +v 0.093750 1.562500 -2.625000 +v 0.066291 1.628791 -2.625000 +v -0.093750 1.593750 -2.687500 +v -0.093750 1.468750 -2.687500 +v 0.093750 1.468750 -2.687500 +v 0.093750 1.593750 -2.687500 +v 0.156250 1.468750 -2.687500 +v -0.000000 1.656250 -2.500000 +v -0.066291 1.628791 -2.500000 +v -0.093750 1.562500 -2.500000 +v -0.093750 1.468750 -2.500000 +v -0.156250 1.468750 -2.312500 +v 0.093750 1.468750 -2.500000 +v 0.093750 1.562500 -2.500000 +v 0.066291 1.628791 -2.500000 +v 0.000000 1.625000 -2.500000 +v -0.044194 1.606694 -2.500000 +v -0.062500 1.562500 -2.500000 +v -0.044194 1.518306 -2.500000 +v 0.000000 1.500000 -2.500000 +v 0.044194 1.518306 -2.500000 +v 0.062500 1.562500 -2.500000 +v 0.044194 1.606694 -2.500000 +v 0.156250 1.343750 -2.312500 +v -0.156250 1.343750 -2.312500 +v -0.156250 1.468750 -2.437500 +v -0.093750 1.593750 -2.500000 +v -0.093750 1.468750 -2.437500 +v 0.093750 1.468750 -2.437500 +v 0.093750 1.593750 -2.500000 +v 0.156250 1.468750 -2.437500 +v 0.156250 1.468750 -2.312500 +v 0.218750 1.468750 -2.687500 +v 0.156250 1.406250 -2.687500 +v 0.156250 1.450444 -2.669194 +v 0.156250 1.468750 -2.625000 +v 0.156250 1.450444 -2.580806 +v 0.156250 1.406250 -2.562500 +v 0.156250 1.362056 -2.580806 +v 0.156250 1.343750 -2.625000 +v 0.156250 1.362056 -2.669194 +v 0.250000 1.406250 -2.687500 +v 0.250000 1.450444 -2.669194 +v 0.250000 1.468750 -2.625000 +v 0.250000 1.450444 -2.580806 +v 0.250000 1.406250 -2.562500 +v 0.250000 1.362056 -2.580806 +v 0.250000 1.343750 -2.625000 +v 0.250000 1.362056 -2.669194 +v 0.031250 1.468750 6.250000 +v -0.031250 1.468750 6.250000 +v 0.031250 1.562500 6.250000 +v -0.031250 1.562500 6.250000 +v 0.031250 1.562500 6.312500 +v -0.031250 1.562500 6.312500 +v 0.031250 1.468750 6.375000 +v -0.031250 1.468750 6.375000 +v 0.062500 1.468750 6.187500 +v -0.062500 1.468750 6.187500 +v -0.125000 1.656250 6.187500 +v 0.125000 1.656250 6.187500 +v 0.062500 1.468750 6.437500 +v -0.062500 1.468750 6.437500 +v -0.125000 1.656250 6.437500 +v 0.125000 1.656250 6.437500 +v -0.187500 1.656250 6.187500 +v -0.187500 1.656250 6.437500 +v 0.187500 1.656250 6.187500 +v 0.187500 1.656250 6.437500 +v -0.125000 1.468750 6.187500 +v -0.125000 1.468750 6.437500 +v 0.125000 1.468750 6.187500 +v 0.125000 1.468750 6.437500 +v 0.000000 1.468750 -2.500000 +v 0.000000 1.468750 -2.625000 +v 0.000000 0.906250 6.625000 +v -0.062500 0.889503 6.625000 +v -0.108253 0.843750 6.625000 +v -0.125000 0.781250 6.625000 +v -0.108253 0.718750 6.625000 +v -0.062500 0.672997 6.625000 +v 0.000000 0.656250 6.625000 +v 0.062500 0.672997 6.625000 +v 0.108253 0.718750 6.625000 +v 0.125000 0.781250 6.625000 +v 0.108253 0.843750 6.625000 +v 0.062500 0.889503 6.625000 +v 0.000000 0.906250 7.187500 +v -0.062500 0.889503 7.187500 +v -0.108253 0.843750 7.187500 +v -0.125000 0.781250 7.187500 +v -0.108253 0.718750 7.187500 +v -0.062500 0.672997 7.187500 +v 0.000000 0.656250 7.187500 +v 0.062500 0.672997 7.187500 +v 0.108253 0.718750 7.187500 +v 0.125000 0.781250 7.187500 +v 0.108253 0.843750 7.187500 +v 0.062500 0.889503 7.187500 +v 0.000000 0.875000 7.187500 +v -0.046875 0.862440 7.187500 +v -0.081190 0.828125 7.187500 +v -0.093750 0.781250 7.187500 +v -0.081190 0.734375 7.187500 +v -0.046875 0.700060 7.187500 +v 0.000000 0.687500 7.187500 +v 0.046875 0.700060 7.187500 +v 0.081190 0.734375 7.187500 +v 0.093750 0.781250 7.187500 +v 0.081190 0.828125 7.187500 +v 0.046875 0.862440 7.187500 +v 0.000000 0.875000 7.812500 +v -0.046875 0.862440 7.812500 +v -0.081190 0.828125 7.812500 +v -0.093750 0.781250 7.812500 +v -0.081190 0.734375 7.812500 +v -0.046875 0.700060 7.812500 +v 0.000000 0.687500 7.812500 +v 0.046875 0.700060 7.812500 +v 0.081190 0.734375 7.812500 +v 0.093750 0.781250 7.812500 +v 0.081190 0.828125 7.812500 +v 0.046875 0.862440 7.812500 +v -0.312500 0.906250 6.187500 +v -0.312500 1.031250 6.187500 +v -0.312500 1.031250 6.625000 +v -0.312500 0.906250 6.625000 +v -0.375000 0.906250 6.250000 +v -0.375000 1.031250 6.250000 +v -0.375000 1.031250 6.625000 +v -0.375000 0.906250 6.625000 +v -0.375000 0.968750 6.500000 +v -0.375000 1.012944 6.518306 +v -0.375000 1.031250 6.562500 +v -0.375000 1.012944 6.606694 +v -0.375000 0.968750 6.625000 +v -0.375000 0.924556 6.606694 +v -0.375000 0.906250 6.562500 +v -0.375000 0.924556 6.518306 +v -0.450444 0.924556 6.549556 +v -0.419194 0.906250 6.580806 +v -0.387944 0.924556 6.612056 +v -0.387944 1.012944 6.612056 +v -0.419194 1.031250 6.580806 +v -0.450444 1.012944 6.549556 +v -0.463388 0.968750 6.536612 +v -0.481694 0.924556 6.625000 +v -0.437500 0.906250 6.625000 +v -0.393306 0.924556 6.625000 +v -0.393306 1.012944 6.625000 +v -0.437500 1.031250 6.625000 +v -0.481694 1.012944 6.625000 +v -0.500000 0.968750 6.625000 +v -0.375000 0.968750 7.437500 +v -0.481694 0.924556 7.437500 +v -0.437500 0.906250 7.437500 +v -0.393306 0.924556 7.437500 +v -0.393306 1.012944 7.437500 +v -0.437500 1.031250 7.437500 +v -0.481694 1.012944 7.437500 +v -0.500000 0.968750 7.437500 +v -0.437500 1.062500 7.437500 +v -0.503791 1.035041 7.437500 +v -0.531250 0.968750 7.437500 +v -0.503791 0.902459 7.437500 +v -0.437500 0.875000 7.437500 +v -0.371209 0.902459 7.437500 +v -0.343750 0.968750 7.437500 +v -0.371209 1.035041 7.437500 +v -0.437500 1.031250 7.500000 +v -0.481694 1.012944 7.500000 +v -0.500000 0.968750 7.500000 +v -0.481694 0.924556 7.500000 +v -0.437500 0.906250 7.500000 +v -0.393306 0.924556 7.500000 +v -0.375000 0.968750 7.500000 +v -0.393306 1.012944 7.500000 +v 0.000000 0.406250 3.625000 +v -0.044194 0.406250 3.643306 +v -0.062500 0.406250 3.687500 +v -0.044194 0.406250 3.731694 +v 0.000000 0.406250 3.750000 +v 0.044194 0.406250 3.731694 +v 0.062500 0.406250 3.687500 +v 0.044194 0.406250 3.643306 +v 0.000000 0.281250 3.625000 +v -0.044194 0.281250 3.643306 +v -0.062500 0.281250 3.687500 +v -0.044194 0.281250 3.731694 +v 0.000000 0.281250 3.750000 +v 0.044194 0.281250 3.731694 +v 0.062500 0.281250 3.687500 +v 0.044194 0.281250 3.643306 +v -0.187500 0.343750 3.625000 +v 0.187500 0.343750 3.625000 +v 0.187500 0.343750 3.500000 +v -0.187500 0.343750 3.500000 +v -0.187500 0.406250 3.625000 +v 0.187500 0.406250 3.625000 +v 0.187500 0.406250 3.500000 +v -0.187500 0.406250 3.500000 +v -0.250000 0.343750 3.687500 +v -0.250000 0.406250 3.687500 +v -0.250000 0.406250 3.437500 +v -0.250000 0.343750 3.437500 +v 0.250000 0.406250 3.437500 +v 0.250000 0.343750 3.437500 +v 0.250000 0.406250 3.687500 +v 0.250000 0.343750 3.687500 +vt 0.784091 0.522727 +vt 0.801136 0.528409 +vt 0.784091 0.528409 +vt 0.750000 0.528409 +vt 0.903409 0.522727 +vt 0.886364 0.528409 +vt 0.886364 0.522727 +vt 0.732955 0.522727 +vt 0.732955 0.528409 +vt 0.579545 0.119318 +vt 0.573864 0.164773 +vt 0.573864 0.119318 +vt 0.573864 0.232955 +vt 0.579545 0.278409 +vt 0.573864 0.278409 +vt 0.579545 0.295455 +vt 0.579545 0.102273 +vt 0.573864 0.102273 +vt 0.556818 0.090909 +vt 0.539773 0.079545 +vt 0.556818 0.085227 +vt 0.573864 0.079545 +vt 0.579545 0.187500 +vt 0.573864 0.210227 +vt 0.573864 0.187500 +vt 0.573864 0.215909 +vt 0.579545 0.232955 +vt 0.573864 0.181818 +vt 0.579545 0.164773 +vt 0.607955 0.295455 +vt 0.613636 0.278409 +vt 0.613636 0.295455 +vt 0.556818 0.079545 +vt 0.539773 0.068182 +vt 0.556818 0.073864 +vt 0.573864 0.068182 +vt 0.613636 0.119318 +vt 0.607955 0.102273 +vt 0.613636 0.102273 +vt 0.607955 0.119318 +vt 0.613636 0.164773 +vt 0.607955 0.164773 +vt 0.613636 0.232955 +vt 0.607955 0.278409 +vt 0.607955 0.232955 +vt 0.613636 0.210227 +vt 0.607955 0.187500 +vt 0.613636 0.187500 +vt 0.613636 0.181818 +vt 0.613636 0.215909 +vt 0.607955 0.210227 +vt 0.806818 0.528409 +vt 0.829545 0.522727 +vt 0.829545 0.528409 +vt 0.852273 0.522727 +vt 0.852273 0.528409 +vt 0.835227 0.528409 +vt 0.005682 0.346591 +vt 0.011364 0.357955 +vt 0.005682 0.357955 +vt 0.670455 0.357955 +vt 0.676136 0.346591 +vt 0.676136 0.357955 +vt 0.028409 0.335227 +vt 0.181818 0.329545 +vt 0.022727 0.346591 +vt 0.318182 0.204545 +vt 0.357955 0.193182 +vt 0.363636 0.204545 +vt 0.318182 0.318182 +vt 0.363636 0.318182 +vt 0.011364 0.403409 +vt 0.022727 0.397727 +vt 0.193182 0.403409 +vt 0.181818 0.397727 +vt 0.193182 0.329545 +vt 0.005682 0.409091 +vt 0.318182 0.409091 +vt 0.357955 0.181818 +vt 0.323864 0.028409 +vt 0.357955 0.028409 +vt 0.323864 0.017045 +vt 0.357955 0.017045 +vt 0.500000 0.329545 +vt 0.653409 0.335227 +vt 0.659091 0.346591 +vt 0.323864 0.181818 +vt 0.323864 0.193182 +vt 0.206068 0.164773 +vt 0.215909 0.147727 +vt 0.225750 0.164773 +vt 0.301136 0.204545 +vt 0.295455 0.210227 +vt 0.295455 0.204545 +vt 0.301136 0.159091 +vt 0.295455 0.164773 +vt 0.295455 0.159091 +vt 0.301136 0.147727 +vt 0.295455 0.153409 +vt 0.295455 0.147727 +vt 0.301136 0.153409 +vt 0.301136 0.215909 +vt 0.295455 0.215909 +vt 0.119318 0.068182 +vt 0.125000 0.147727 +vt 0.119318 0.147727 +vt 0.164773 0.113636 +vt 0.159091 0.119318 +vt 0.159091 0.113636 +vt 0.676136 0.409091 +vt 0.676136 0.420455 +vt 0.392045 0.420455 +vt 0.210227 0.130682 +vt 0.198864 0.039773 +vt 0.210227 0.039773 +vt 0.215909 0.147727 +vt 0.227273 0.136364 +vt 0.227273 0.147727 +vt 0.193182 0.147727 +vt 0.181818 0.136364 +vt 0.193182 0.136364 +vt 0.215909 0.136364 +vt 0.221591 0.130682 +vt 0.187500 0.130682 +vt 0.210227 0.142045 +vt 0.210227 0.147727 +vt 0.198864 0.142045 +vt 0.198864 0.147727 +vt 0.198864 0.130682 +vt 0.193182 0.039773 +vt 0.187500 0.039773 +vt 0.215909 0.039773 +vt 0.221591 0.039773 +vt 0.203023 0.164773 +vt 0.183341 0.164773 +vt 0.193182 0.147727 +vt 0.142045 0.215909 +vt 0.142045 0.203023 +vt 0.147727 0.204545 +vt 0.136364 0.203023 +vt 0.136364 0.215909 +vt 0.153409 0.215909 +vt 0.159091 0.203023 +vt 0.159091 0.215909 +vt 0.130682 0.204545 +vt 0.130682 0.215909 +vt 0.119318 0.204545 +vt 0.113636 0.215909 +vt 0.113636 0.203023 +vt 0.132204 0.198864 +vt 0.125000 0.193182 +vt 0.117796 0.198864 +vt 0.125000 0.193182 +vt 0.119318 0.193182 +vt 0.505682 0.426136 +vt 0.619318 0.426136 +vt 0.625000 0.431818 +vt 0.681818 0.431818 +vt 0.500000 0.431818 +vt 0.392045 0.431818 +vt 0.005682 0.420455 +vt 0.142045 0.431818 +vt -0.000000 0.431818 +vt 0.312500 0.420455 +vt 0.153409 0.426136 +vt 0.500000 0.397727 +vt 0.488636 0.329545 +vt 0.659091 0.397727 +vt 0.670455 0.403409 +vt 0.488636 0.403409 +vt 0.363636 0.409091 +vt 0.591670 0.531250 +vt 0.601512 0.531250 +vt 0.596591 0.539773 +vt 0.619318 0.573864 +vt 0.613636 0.579545 +vt 0.613636 0.573864 +vt 0.619318 0.579545 +vt 0.613636 0.585227 +vt 0.619318 0.590909 +vt 0.619318 0.585227 +vt 0.619318 0.596591 +vt 0.613636 0.590909 +vt 0.619318 0.602273 +vt 0.613636 0.596591 +vt 0.619318 0.607955 +vt 0.613636 0.602273 +vt 0.619318 0.539773 +vt 0.613636 0.545455 +vt 0.613636 0.539773 +vt 0.619318 0.545455 +vt 0.613636 0.551136 +vt 0.619318 0.556818 +vt 0.619318 0.551136 +vt 0.619318 0.562500 +vt 0.613636 0.556818 +vt 0.619318 0.568182 +vt 0.613636 0.562500 +vt 0.613636 0.568182 +vt 0.750000 0.431818 +vt 0.784091 0.426136 +vt 0.784091 0.482955 +vt 0.357955 -0.000000 +vt 0.180676 0.109375 +vt 0.173295 0.096591 +vt 0.165915 0.109375 +vt 0.165915 0.109375 +vt 0.173295 0.096591 +vt 0.180676 0.109375 +vt 0.073864 0.312500 +vt 0.090909 0.323864 +vt 0.056818 0.323864 +vt 0.062500 0.181818 +vt 0.056818 0.204545 +vt 0.056818 0.181818 +vt 0.056818 0.227273 +vt 0.062500 0.272727 +vt 0.056818 0.272727 +vt 0.062500 0.204545 +vt 0.056818 0.215909 +vt 0.034091 0.204545 +vt 0.028409 0.181818 +vt 0.034091 0.181818 +vt 0.062500 0.221591 +vt 0.034091 0.215909 +vt 0.028409 0.204545 +vt 0.028409 0.221591 +vt 0.034091 0.227273 +vt 0.130682 0.261364 +vt 0.136364 0.272727 +vt 0.130682 0.272727 +vt 0.136364 0.250000 +vt 0.136364 0.261364 +vt 0.125000 0.250000 +vt 0.136364 0.232955 +vt 0.130682 0.250000 +vt 0.159091 0.278409 +vt 0.159091 0.272727 +vt 0.164773 0.261364 +vt 0.159091 0.261364 +vt 0.164773 0.250000 +vt 0.159091 0.250000 +vt 0.159091 0.232955 +vt 0.170455 0.250000 +vt 0.164773 0.250000 +vt 0.210227 0.034091 +vt 0.198864 0.034091 +vt 0.215909 0.028409 +vt 0.301136 0.431818 +vt 0.295455 0.431818 +vt 0.318182 0.420455 +vt 0.318182 0.426136 +vt 0.312500 0.431818 +vt 0.153409 0.130682 +vt 0.159091 0.136364 +vt 0.153409 0.136364 +vt 0.164773 0.130682 +vt 0.159091 0.130682 +vt 0.170455 0.136364 +vt 0.170455 0.130682 +vt 0.176136 0.130682 +vt 0.176136 0.136364 +vt 0.170455 0.147727 +vt 0.170455 0.136364 +vt 0.187500 0.017045 +vt 0.193182 0.017045 +vt 0.193182 0.028409 +vt 0.210227 0.007204 +vt 0.340909 0.414768 +vt 0.332388 0.417051 +vt 0.363636 0.346591 +vt 0.318182 0.346591 +vt 0.062500 0.289773 +vt 0.068182 0.306818 +vt 0.056818 0.306818 +vt 0.062500 0.278409 +vt 0.056818 0.289773 +vt 0.090909 0.278409 +vt 0.113636 0.232955 +vt 0.113636 0.278409 +vt 0.000000 0.323864 +vt 0.017045 0.312500 +vt 0.034091 0.323864 +vt 0.022727 0.306818 +vt 0.028409 0.289773 +vt 0.034091 0.306818 +vt 0.028409 0.278409 +vt 0.034091 0.289773 +vt 0.028409 0.289773 +vt 0.028409 0.272727 +vt 0.028409 0.227273 +vt 0.034091 0.272727 +vt 0.252841 0.272729 +vt 0.248824 0.277233 +vt 0.244320 0.272729 +vt 0.256858 0.277233 +vt 0.261362 0.281250 +vt 0.258522 0.281250 +vt 0.284091 0.244318 +vt 0.255682 0.210227 +vt 0.289773 0.210227 +vt 0.221591 0.295455 +vt 0.238636 0.306818 +vt 0.221591 0.306818 +vt 0.238636 0.267045 +vt 0.221591 0.278409 +vt 0.221591 0.267045 +vt 0.244318 0.278409 +vt 0.265870 0.277233 +vt 0.261365 0.281250 +vt 0.261365 0.272729 +vt 0.264206 0.281250 +vt 0.263861 0.287275 +vt 0.265870 0.285267 +vt 0.269886 0.289771 +vt 0.273903 0.285267 +vt 0.269886 0.286931 +vt 0.275567 0.281250 +vt 0.275912 0.287275 +vt 0.273903 0.277233 +vt 0.278407 0.281250 +vt 0.269886 0.272729 +vt 0.269886 0.275569 +vt 0.258866 0.287275 +vt 0.256858 0.285267 +vt 0.252841 0.289771 +vt 0.252841 0.286931 +vt 0.248824 0.285267 +vt 0.246816 0.287275 +vt 0.247160 0.281250 +vt 0.244320 0.281250 +vt 0.261362 0.272729 +vt 0.215909 0.267045 +vt 0.221591 0.278409 +vt 0.215909 0.278409 +vt 0.198864 0.267045 +vt 0.198864 0.278409 +vt 0.193182 0.278409 +vt 0.318182 0.255682 +vt 0.318182 0.244318 +vt 0.198864 0.267045 +vt 0.193182 0.255682 +vt 0.198864 0.255682 +vt 0.215909 0.267045 +vt 0.215909 0.255682 +vt 0.221591 0.255682 +vt 0.244318 0.267045 +vt 0.250000 0.261364 +vt 0.255682 0.267045 +vt 0.187500 0.255682 +vt 0.187500 0.244318 +vt 0.284091 0.255682 +vt 0.255682 0.244318 +vt 0.823864 0.477273 +vt 0.829545 0.482955 +vt 0.823864 0.482955 +vt 0.823864 0.471591 +vt 0.829545 0.477273 +vt 0.823864 0.465909 +vt 0.829545 0.471591 +vt 0.818182 0.477273 +vt 0.835227 0.477273 +vt 0.840909 0.482955 +vt 0.681818 0.522727 +vt 0.698864 0.500000 +vt 0.698864 0.522727 +vt 0.937500 0.500000 +vt 0.954545 0.522727 +vt 0.937500 0.522727 +vt 0.931818 0.522727 +vt 0.704545 0.522727 +vt 0.704545 0.500000 +vt 0.721591 0.522727 +vt 0.914773 0.522727 +vt 0.931818 0.500000 +vt 0.681818 0.528409 +vt 0.954545 0.528409 +vt 0.937500 0.528409 +vt 0.954545 0.494318 +vt 0.954545 0.500000 +vt 0.681818 0.494318 +vt 0.681818 0.500000 +vt 0.840909 0.448864 +vt 0.818182 0.460227 +vt 0.818182 0.448864 +vt 0.818182 0.465909 +vt 0.806818 0.477273 +vt 0.806818 0.471591 +vt 0.852273 0.477273 +vt 0.852273 0.431818 +vt 0.745079 0.531250 +vt 0.754921 0.531250 +vt 0.750000 0.539773 +vt 0.796216 0.531250 +vt 0.806057 0.531250 +vt 0.801136 0.539773 +vt 0.914773 0.443182 +vt 0.909091 0.431818 +vt 0.914773 0.431818 +vt 0.875000 0.443182 +vt 0.909091 0.448864 +vt 0.869318 0.448864 +vt 0.909091 0.426136 +vt 0.875000 0.431818 +vt 0.869318 0.426136 +vt 0.869318 0.443182 +vt 0.869318 0.431818 +vt 0.860795 0.562500 +vt 0.869318 0.553977 +vt 0.860795 0.545455 +vt 0.880682 0.551136 +vt 0.879018 0.555154 +vt 0.875000 0.556818 +vt 0.568182 0.062500 +vt 0.562500 0.068182 +vt 0.556818 0.062500 +vt 0.494318 0.073864 +vt 0.528409 0.068182 +vt 0.528409 0.073864 +vt 0.426136 0.073864 +vt 0.460227 0.068182 +vt 0.460227 0.073864 +vt 0.403409 0.068182 +vt 0.414773 0.073864 +vt 0.403409 0.073864 +vt 0.471591 0.073864 +vt 0.482955 0.068182 +vt 0.482955 0.073864 +vt 0.420455 0.079545 +vt 0.397727 0.085227 +vt 0.397727 0.079545 +vt 0.488636 0.085227 +vt 0.534091 0.079545 +vt 0.534091 0.085227 +vt 0.465909 0.085227 +vt 0.488636 0.079545 +vt 0.465909 0.079545 +vt 0.420455 0.085227 +vt 0.414773 0.090909 +vt 0.403409 0.090909 +vt 0.494318 0.090909 +vt 0.528409 0.090909 +vt 0.471591 0.090909 +vt 0.482955 0.090909 +vt 0.426136 0.090909 +vt 0.460227 0.090909 +vt 0.806818 0.522727 +vt 0.750000 0.522727 +vt 0.903409 0.528409 +vt 0.573864 0.295455 +vt 0.534091 0.079545 +vt 0.579545 0.079545 +vt 0.579545 0.210227 +vt 0.534091 0.068182 +vt 0.579545 0.068182 +vt 0.181818 0.318182 +vt 0.500000 0.318182 +vt 0.221591 0.168932 +vt 0.215909 0.170455 +vt 0.210227 0.168932 +vt 0.204545 0.159091 +vt 0.206068 0.153409 +vt 0.210227 0.149250 +vt 0.221591 0.149250 +vt 0.225750 0.153409 +vt 0.227273 0.159091 +vt 0.301136 0.210227 +vt 0.301136 0.164773 +vt 0.125000 0.068182 +vt 0.164773 0.119318 +vt 0.363636 0.420455 +vt 0.181818 0.147727 +vt 0.215909 0.130682 +vt 0.193182 0.130682 +vt 0.198864 0.149250 +vt 0.203023 0.153409 +vt 0.204545 0.159091 +vt 0.198864 0.168932 +vt 0.193182 0.170455 +vt 0.187500 0.168932 +vt 0.181818 0.159091 +vt 0.183341 0.153409 +vt 0.187500 0.149250 +vt 0.153409 0.203023 +vt 0.119318 0.215909 +vt 0.130682 0.193182 +vt 0.170455 0.426136 +vt 0.500000 0.329545 +vt 0.593750 0.539012 +vt 0.591670 0.536932 +vt 0.590909 0.534091 +vt 0.593750 0.529170 +vt 0.596591 0.528409 +vt 0.599432 0.529170 +vt 0.602273 0.534091 +vt 0.601512 0.536932 +vt 0.599432 0.539012 +vt 0.613636 0.607955 +vt 0.806818 0.443182 +vt 0.806818 0.465909 +vt 0.750000 0.482955 +vt 0.750000 0.477273 +vt 0.738644 0.474222 +vt 0.730327 0.465905 +vt 0.727273 0.454545 +vt 0.730327 0.443181 +vt 0.738644 0.434864 +vt 0.750000 0.426136 +vt 0.323864 -0.000000 +vt 0.169034 0.112495 +vt 0.173295 0.113636 +vt 0.177557 0.112495 +vt 0.181818 0.105114 +vt 0.180676 0.100852 +vt 0.177557 0.097733 +vt 0.169034 0.097733 +vt 0.165915 0.100852 +vt 0.164773 0.105114 +vt 0.177557 0.112495 +vt 0.173295 0.113636 +vt 0.169034 0.112495 +vt 0.164773 0.105114 +vt 0.165915 0.100852 +vt 0.169034 0.097733 +vt 0.177557 0.097733 +vt 0.180676 0.100852 +vt 0.181818 0.105114 +vt 0.085227 0.312500 +vt 0.062500 0.227273 +vt 0.062500 0.215909 +vt 0.028409 0.215909 +vt 0.130682 0.250000 +vt 0.113636 0.232955 +vt 0.136364 0.278409 +vt 0.164773 0.272727 +vt 0.181818 0.232955 +vt 0.181818 0.431818 +vt 0.164773 0.136364 +vt 0.176136 0.136364 +vt 0.176136 0.147727 +vt 0.221591 0.005682 +vt 0.221591 0.017045 +vt 0.213068 0.002841 +vt 0.318182 0.420455 +vt 0.357952 0.420449 +vt 0.349431 0.417051 +vt 0.323866 0.420449 +vt 0.375000 0.318182 +vt 0.306818 0.318182 +vt 0.068182 0.289773 +vt 0.062500 0.289773 +vt 0.090909 0.232955 +vt 0.005682 0.312500 +vt 0.022727 0.289773 +vt 0.252841 0.275569 +vt 0.244318 0.295455 +vt 0.278407 0.272729 +vt 0.254018 0.271063 +vt 0.250000 0.272727 +vt 0.245982 0.271063 +vt 0.245982 0.263028 +vt 0.254018 0.263028 +vt 0.221591 0.244318 +vt 0.255682 0.255682 +vt 0.829545 0.465909 +vt 0.812500 0.482955 +vt 0.721591 0.500000 +vt 0.914773 0.500000 +vt 0.698864 0.528409 +vt 0.937500 0.494318 +vt 0.698864 0.494318 +vt 0.840909 0.460227 +vt 0.806818 0.437500 +vt 0.806818 0.431818 +vt 0.818182 0.443182 +vt 0.869318 0.426136 +vt 0.869318 0.482955 +vt 0.840909 0.465909 +vt 0.840909 0.443182 +vt 0.747159 0.539012 +vt 0.745079 0.536932 +vt 0.744318 0.534091 +vt 0.747159 0.529170 +vt 0.750000 0.528409 +vt 0.752841 0.529170 +vt 0.755682 0.534091 +vt 0.754921 0.536932 +vt 0.752841 0.539012 +vt 0.798295 0.539012 +vt 0.796216 0.536932 +vt 0.795455 0.534091 +vt 0.798295 0.529170 +vt 0.801136 0.528409 +vt 0.803977 0.529170 +vt 0.806818 0.534091 +vt 0.806057 0.536932 +vt 0.803977 0.539012 +vt 0.909091 0.443182 +vt 0.852273 0.553977 +vt 0.854769 0.560004 +vt 0.866822 0.560004 +vt 0.866822 0.547951 +vt 0.854769 0.547951 +vt 0.870982 0.555154 +vt 0.869318 0.551136 +vt 0.870982 0.547119 +vt 0.875000 0.545455 +vt 0.879018 0.547119 +vt 0.558482 0.058482 +vt 0.562500 0.056818 +vt 0.566518 0.058482 +vt 0.566518 0.066518 +vt 0.558482 0.066518 +vt 0.494318 0.068182 +vt 0.426136 0.068182 +vt 0.414773 0.068182 +vt 0.471591 0.068182 +vt 0.573864 0.107955 +vt 0.363636 0.125000 +vt 0.363636 0.107955 +vt 0.363636 0.284091 +vt 0.573864 0.301136 +vt 0.363636 0.301136 +vt 0.573864 0.090909 +vt 0.363636 0.090909 +vt 0.573864 0.318182 +vt 0.363636 0.318182 +vt 0.363636 0.250000 +vt 0.573864 0.284091 +vt 0.363636 0.215909 +vt 0.363636 0.238636 +vt 0.573864 0.238636 +vt 0.886364 0.500000 +vt 0.852273 0.482955 +vt 0.886364 0.482955 +vt 0.829545 0.482955 +vt 0.806818 0.482955 +vt 0.750000 0.500000 +vt 0.607955 0.079545 +vt 0.579545 0.079545 +vt 0.607955 0.318182 +vt 0.579545 0.318182 +vt 0.897727 0.062500 +vt 0.613636 0.079545 +vt 0.613636 0.062500 +vt 0.613636 0.301136 +vt 0.897727 0.318182 +vt 0.613636 0.318182 +vt 0.897727 0.045455 +vt 0.613636 0.045455 +vt 0.613636 0.284091 +vt 0.897727 0.301136 +vt 0.613636 0.170455 +vt 0.903409 0.198864 +vt 0.613636 0.193182 +vt 0.903409 0.210227 +vt 0.613636 0.210227 +vt 0.903409 0.164773 +vt 0.903409 0.153409 +vt 0.613636 0.153409 +vt 0.363636 0.159091 +vt 0.573864 0.125000 +vt 0.573864 0.170455 +vt 0.573864 0.193182 +vt 0.363636 0.170455 +vt 0.363636 0.193182 +vt -0.000000 0.443182 +vt 0.056818 0.437500 +vt 0.056818 0.443182 +vt 0.681818 0.443182 +vt 0.625000 0.448864 +vt 0.625000 0.443182 +vt 0.312500 0.181818 +vt 0.159091 0.176136 +vt 0.312500 0.176136 +vt -0.000000 0.448864 +vt 0.056818 0.448864 +vt 0.681818 0.437500 +vt 0.625000 0.437500 +vt 0.312500 0.187500 +vt 0.159091 0.181818 +vt 0.312500 0.164773 +vt 0.312500 0.159091 +vt 0.221591 0.204545 +vt 0.215909 0.198864 +vt 0.125000 0.073864 +vt 0.130682 0.068182 +vt 0.130682 0.073864 +vt 0.312500 0.170455 +vt 0.312500 0.210227 +vt 0.312500 0.204545 +vt 0.312500 0.153409 +vt 0.312500 0.147727 +vt 0.125000 0.187500 +vt 0.312500 0.215909 +vt 0.119318 0.164773 +vt 0.119318 0.153409 +vt 0.125000 0.164773 +vt 0.125000 0.153409 +vt 0.312500 0.193182 +vt 0.204545 0.193182 +vt 0.125000 0.181818 +vt 0.119318 0.181818 +vt 0.193182 0.443182 +vt 0.500000 0.443182 +vt 0.488636 0.443182 +vt 0.482955 0.448864 +vt 0.392045 0.443182 +vt 0.289773 0.443182 +vt 0.198864 0.448864 +vt 0.159091 0.159091 +vt 0.176136 0.164773 +vt 0.159091 0.164773 +vt 0.159091 0.210227 +vt 0.170455 0.215909 +vt 0.159091 0.215909 +vt 0.159091 0.147727 +vt 0.170455 0.153409 +vt 0.159091 0.153409 +vt 0.159091 0.198864 +vt 0.176136 0.204545 +vt 0.159091 0.204545 +vt 0.170455 0.210227 +vt 0.176136 0.153409 +vt 0.176136 0.159091 +vt 0.130682 0.187500 +vt 0.295455 0.170455 +vt 0.176136 0.198864 +vt 0.159091 0.193182 +vt 0.187500 0.193182 +vt 0.159091 0.170455 +vt 0.147727 0.136364 +vt 0.744318 0.602273 +vt 0.744318 0.607955 +vt 0.744318 0.585227 +vt 0.744318 0.590909 +vt 0.744318 0.556818 +vt 0.744318 0.562500 +vt 0.744318 0.539773 +vt 0.744318 0.545455 +vt 0.744318 0.596591 +vt 0.744318 0.568182 +vt 0.744318 0.573864 +vt 0.744318 0.579545 +vt 0.744318 0.551136 +vt 0.590909 0.573864 +vt 0.590909 0.585227 +vt 0.590909 0.556818 +vt 0.590909 0.607955 +vt 0.590909 0.590909 +vt 0.590909 0.562500 +vt 0.590909 0.545455 +vt 0.590909 0.596591 +vt 0.590909 0.568182 +vt 0.590909 0.579545 +vt 0.590909 0.551136 +vt 0.590909 0.602273 +vt 0.732955 0.500000 +vt 0.721591 0.482955 +vt 0.732955 0.482955 +vt 0.903409 0.500000 +vt 0.892045 0.482955 +vt 0.903409 0.482955 +vt 0.721591 0.500000 +vt 0.710227 0.482955 +vt 0.926136 0.500000 +vt 0.914773 0.482955 +vt 0.926136 0.482955 +vt 0.744318 0.500000 +vt 0.744318 0.482955 +vt 0.914773 0.500000 +vt 0.892045 0.500000 +vt 0.613636 0.125000 +vt 0.897727 0.079545 +vt 0.903409 0.102273 +vt 0.903409 0.261364 +vt 0.897727 0.284091 +vt 0.613636 0.238636 +vt 0.909091 0.272727 +vt 0.903409 0.272727 +vt 0.903409 0.090909 +vt 0.909091 0.090909 +vt 0.903409 0.079545 +vt 0.909091 0.284091 +vt 0.613636 0.045455 +vt 0.607955 0.062500 +vt 0.590909 0.068182 +vt 0.181818 0.096591 +vt 0.176136 0.090909 +vt 0.181818 0.090909 +vt 0.181818 0.045455 +vt 0.176136 0.039773 +vt 0.181818 0.039773 +vt 0.181818 0.073864 +vt 0.176136 0.068182 +vt 0.181818 0.068182 +vt 0.181818 0.062500 +vt 0.176136 0.056818 +vt 0.181818 0.056818 +vt 0.176136 0.085227 +vt 0.181818 0.085227 +vt 0.176136 0.034091 +vt 0.181818 0.034091 +vt 0.176136 0.062500 +vt 0.176136 0.051136 +vt 0.181818 0.051136 +vt 0.176136 0.079545 +vt 0.181818 0.079545 +vt 0.176136 0.028409 +vt 0.181818 0.028409 +vt 0.176136 0.045455 +vt 0.176136 0.073864 +vt 0.176136 0.028409 +vt 0.181818 0.034091 +vt 0.176136 0.034091 +vt 0.176136 0.079545 +vt 0.181818 0.085227 +vt 0.176136 0.085227 +vt 0.176136 0.051136 +vt 0.181818 0.056818 +vt 0.176136 0.056818 +vt 0.176136 0.062500 +vt 0.181818 0.068182 +vt 0.176136 0.068182 +vt 0.181818 0.039773 +vt 0.176136 0.039773 +vt 0.181818 0.090909 +vt 0.176136 0.090909 +vt 0.181818 0.062500 +vt 0.181818 0.073864 +vt 0.176136 0.073864 +vt 0.181818 0.045455 +vt 0.176136 0.045455 +vt 0.181818 0.096591 +vt 0.176136 0.096591 +vt 0.181818 0.079545 +vt 0.181818 0.051136 +vt 0.090909 0.295455 +vt 0.113636 0.312500 +vt 0.090909 0.312500 +vt 0.113636 0.295455 +vt 0.113636 0.193182 +vt 0.090909 0.215909 +vt 0.090909 0.193182 +vt 0.113636 0.227273 +vt 0.090909 0.227273 +vt 0.159091 0.301136 +vt 0.136364 0.318182 +vt 0.136364 0.301136 +vt 0.159091 0.289773 +vt 0.176136 0.113636 +vt 0.170455 0.113636 +vt 0.159091 0.119318 +vt 0.153409 0.119318 +vt 0.181818 0.113636 +vt 0.136364 0.136364 +vt 0.147727 0.130682 +vt 0.113636 0.323864 +vt 0.250000 0.301136 +vt 0.244318 0.289773 +vt 0.250000 0.289773 +vt 0.261364 0.301136 +vt 0.255682 0.289773 +vt 0.261364 0.289773 +vt 0.255682 0.301136 +vt 0.267045 0.301136 +vt 0.267045 0.289773 +vt 0.284091 0.261364 +vt 0.278409 0.272727 +vt 0.278409 0.261364 +vt 0.295455 0.261364 +vt 0.289773 0.272727 +vt 0.289773 0.261364 +vt 0.261364 0.261364 +vt 0.255682 0.272727 +vt 0.255682 0.261364 +vt 0.272727 0.261364 +vt 0.267045 0.272727 +vt 0.267045 0.261364 +vt 0.284091 0.272727 +vt 0.301136 0.261364 +vt 0.295455 0.272727 +vt 0.261364 0.272727 +vt 0.272727 0.272727 +vt 0.244318 0.255682 +vt 0.221591 0.318182 +vt 0.289773 0.261364 +vt 0.284091 0.255682 +vt 0.289773 0.255682 +vt 0.278409 0.261364 +vt 0.272727 0.255682 +vt 0.278409 0.255682 +vt 0.267045 0.261364 +vt 0.261364 0.255682 +vt 0.267045 0.255682 +vt 0.250000 0.261364 +vt 0.244318 0.255682 +vt 0.250000 0.255682 +vt 0.284091 0.261364 +vt 0.272727 0.261364 +vt 0.261364 0.261364 +vt 0.255682 0.255682 +vt 0.255682 0.261364 +vt 0.193182 0.289773 +vt 0.732955 0.500000 +vt 0.903409 0.500000 +vt 0.744318 0.562500 +vt 0.795455 0.556818 +vt 0.795455 0.562500 +vt 0.744318 0.545455 +vt 0.795455 0.539773 +vt 0.795455 0.545455 +vt 0.744318 0.596591 +vt 0.795455 0.590909 +vt 0.795455 0.596591 +vt 0.744318 0.568182 +vt 0.795455 0.568182 +vt 0.744318 0.579545 +vt 0.795455 0.573864 +vt 0.795455 0.579545 +vt 0.744318 0.551136 +vt 0.795455 0.551136 +vt 0.744318 0.602273 +vt 0.795455 0.602273 +vt 0.744318 0.573864 +vt 0.744318 0.585227 +vt 0.795455 0.585227 +vt 0.744318 0.556818 +vt 0.744318 0.607955 +vt 0.795455 0.607955 +vt 0.744318 0.590909 +vt 0.795455 0.573864 +vt 0.852273 0.568182 +vt 0.852273 0.573864 +vt 0.795455 0.585227 +vt 0.852273 0.579545 +vt 0.852273 0.585227 +vt 0.795455 0.556818 +vt 0.852273 0.551136 +vt 0.852273 0.556818 +vt 0.795455 0.607955 +vt 0.852273 0.602273 +vt 0.852273 0.607955 +vt 0.795455 0.590909 +vt 0.852273 0.590909 +vt 0.795455 0.562500 +vt 0.852273 0.562500 +vt 0.795455 0.545455 +vt 0.852273 0.539773 +vt 0.852273 0.545455 +vt 0.795455 0.596591 +vt 0.852273 0.596591 +vt 0.795455 0.568182 +vt 0.795455 0.579545 +vt 0.795455 0.551136 +vt 0.795455 0.602273 +vt 0.852273 0.585227 +vt 0.857955 0.590909 +vt 0.852273 0.590909 +vt 0.857955 0.579545 +vt 0.857955 0.585227 +vt 0.852273 0.568182 +vt 0.857955 0.573864 +vt 0.852273 0.573864 +vt 0.857955 0.596591 +vt 0.852273 0.596591 +vt 0.852273 0.579545 +vt 0.857955 0.602273 +vt 0.852273 0.602273 +vt 0.863636 0.596591 +vt 0.863636 0.568182 +vt 0.863636 0.573864 +vt 0.863636 0.590909 +vt 0.863636 0.602273 +vt 0.863636 0.579545 +vt 0.863636 0.585227 +vt 0.855114 0.607955 +vt 0.860795 0.607955 +vt 0.855114 0.562500 +vt 0.857955 0.568182 +vt 0.860795 0.562500 +vt 0.937500 0.590909 +vt 0.937500 0.602273 +vt 0.937500 0.585227 +vt 0.863636 0.562500 +vt 0.937500 0.568182 +vt 0.937500 0.579545 +vt 0.937500 0.607955 +vt 0.863636 0.607955 +vt 0.937500 0.596591 +vt 0.937500 0.573864 +vt 0.892045 0.556818 +vt 0.886364 0.562500 +vt 0.886364 0.556818 +vt 0.880682 0.562500 +vt 0.880682 0.556818 +vt 0.875000 0.562500 +vt 0.875000 0.556818 +vt 0.869318 0.556818 +vt 0.869318 0.562500 +vt 0.914773 0.556818 +vt 0.909091 0.562500 +vt 0.909091 0.556818 +vt 0.903409 0.562500 +vt 0.903409 0.556818 +vt 0.897727 0.556818 +vt 0.892045 0.562500 +vt 0.897727 0.562500 +vt 0.562500 0.056818 +vt 0.568182 0.045455 +vt 0.568182 0.056818 +vt 0.551136 0.056818 +vt 0.556818 0.045455 +vt 0.556818 0.056818 +vt 0.534091 0.056818 +vt 0.539773 0.045455 +vt 0.539773 0.056818 +vt 0.522727 0.056818 +vt 0.528409 0.045455 +vt 0.528409 0.056818 +vt 0.562500 0.045455 +vt 0.545455 0.056818 +vt 0.551136 0.045455 +vt 0.545455 0.045455 +vt 0.534091 0.045455 +vt -0.000000 0.437500 +vt 0.681818 0.448864 +vt 0.159091 0.187500 +vt 0.312500 0.198864 +vt 0.125000 0.068182 +vt 0.136364 0.437500 +vt 0.181818 0.443182 +vt 0.392045 0.448864 +vt 0.289773 0.448864 +vt 0.170455 0.147727 +vt 0.176136 0.210227 +vt 0.181818 0.170455 +vt 0.590909 0.539773 +vt 0.710227 0.500000 +vt 0.909091 0.079545 +vt 0.903409 0.284091 +vt 0.573864 0.062500 +vt 0.568182 0.045455 +vt 0.176136 0.096591 +vt 0.181818 0.028409 +vt 0.113636 0.215909 +vt 0.159091 0.318182 +vt 0.136364 0.289773 +vt 0.181818 0.142045 +vt 0.176136 0.142045 +vt 0.244318 0.301136 +vt 0.301136 0.272727 +vt 0.244318 0.318182 +vt 0.244318 0.261364 +vt 0.221591 0.289773 +vt 0.744318 0.539773 +vt 0.795455 0.539773 +vt 0.937500 0.562500 +vt 0.914773 0.562500 +vt 0.522727 0.045455 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8944 -0.4472 0.0000 +vn -0.8944 -0.4472 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.9950 0.0995 +vn 0.8944 0.0000 -0.4472 +vn 0.7071 -0.7071 0.0000 +vn 0.8944 0.0000 0.4472 +vn 0.0000 -0.9939 0.1104 +vn 0.0000 -0.4472 0.8944 +vn -1.0000 0.0000 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.3704 0.9289 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.8944 0.0035 0.4472 +vn -0.8944 0.0000 -0.4472 +vn -0.6857 -0.7279 -0.0014 +vn -1.0000 0.0048 -0.0005 +vn -0.8660 0.5000 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 0.9923 -0.1240 +vn 0.0000 -0.9923 0.1240 +vn 0.0000 0.4472 0.8944 +vn 0.9864 0.0000 0.1644 +vn 0.0000 0.5547 0.8321 +vn -0.9487 0.3162 0.0000 +vn 0.9487 0.3162 0.0000 +vn 0.9487 -0.3162 0.0000 +vn -0.9487 -0.3162 0.0000 +vn -0.3551 0.0000 0.9348 +vn -0.8861 0.0000 0.4635 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.0000 -0.0021 +vn -0.0001 0.0000 1.0000 +vn -0.7071 0.7071 0.0000 +vn -0.9871 0.1602 0.0000 +vn 0.9871 0.1602 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.9597 -0.2806 0.0152 +vn 0.4782 -0.8770 0.0474 +vn 0.4647 -0.8842 0.0478 +vn 0.9542 -0.2988 0.0162 +vn -0.9943 0.1066 0.0000 +vn -0.8507 0.5257 0.0000 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 -0.8944 0.0000 +vn 0.8507 0.5257 0.0000 +vn 0.9943 0.1066 0.0000 +vn -0.7555 0.6552 0.0000 +vn 0.7555 0.6552 0.0000 +vn -0.4775 -0.8755 0.0750 +vn 0.5175 -0.8522 0.0770 +vn 0.4775 -0.8755 0.0750 +vn 0.9689 -0.2458 0.0287 +vn 0.9616 -0.2730 0.0268 +vn -0.5175 -0.8522 0.0770 +vn -0.9689 -0.2458 0.0287 +vn -0.9616 -0.2730 0.0268 +vn -0.9597 -0.2806 0.0152 +vn -0.9542 -0.2988 0.0162 +vn -0.4647 -0.8842 0.0478 +vn -0.4782 -0.8770 0.0474 +vn 0.5000 0.8660 0.0000 +vn 0.9071 0.4210 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.9071 -0.4210 0.0000 +vn -0.9659 -0.2588 0.0000 +vn -0.9898 0.1424 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9336 -0.3583 +vn 0.8660 0.5000 0.0000 +vn 0.9986 0.0526 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.0000 0.9239 0.3827 +vn 0.9659 0.2588 0.0000 +vn 0.0000 0.9753 -0.2207 +vn 0.0000 0.8094 -0.5873 +vn 0.0000 0.9732 -0.2298 +vn -0.0524 0.7901 -0.6107 +vn -0.7529 0.6581 0.0000 +vn 0.0000 0.9732 0.2298 +vn 0.0000 0.9753 0.2207 +vn -0.1963 0.5576 -0.8065 +vn -0.2774 0.4804 -0.8320 +vn 0.8587 0.5125 0.0000 +vn -0.8587 0.5125 0.0000 +vn -0.8112 0.5847 0.0000 +vn 0.8223 0.5691 0.0000 +vn 0.5751 -0.8181 0.0000 +vn -0.5751 -0.8181 0.0000 +vn 0.0000 0.8944 0.4472 +vn 0.0000 0.9336 0.3583 +vn 0.0000 0.7071 0.7071 +vn 0.7768 0.6297 0.0000 +vn -0.9976 0.0690 0.0000 +vn 0.0000 0.8507 -0.5257 +vn -0.6088 0.7934 0.0000 +vn 0.6088 0.7934 0.0000 +vn -0.9902 0.1396 0.0000 +vn 0.9902 0.1396 0.0000 +vn 0.0000 0.2693 -0.9631 +vn 0.0000 0.2298 -0.9732 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 -0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.3827 0.9239 +vn 0.0000 -0.2298 0.9732 +vn 0.0000 -0.5847 0.8112 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.5847 -0.8112 +vn 0.0000 -0.3162 -0.9487 +vn 0.0000 -0.1602 -0.9871 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.2898 0.9571 +vn 0.0000 -0.5547 0.8321 +vn 0.0000 0.2298 0.9732 +vn 0.3151 0.9490 0.0000 +vn 0.3337 0.9427 0.0000 +vn 0.3704 0.9289 0.0000 +vn 0.0000 0.8968 -0.4425 +vn -0.4210 0.9071 0.0000 +vn 0.0000 -0.1891 -0.9820 +vn 0.0000 -0.3714 -0.9285 +vn 0.0000 -0.5257 -0.8507 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.6070 -0.7947 +vn 0.0000 -0.8321 -0.5547 +vn 0.9239 0.3827 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.9925 0.1224 0.0000 +vn 0.5257 0.8507 0.0000 +vn -0.9732 0.2298 0.0000 +vn 0.1931 0.9812 0.0000 +vn -0.3827 -0.0000 -0.9239 +vn -0.5294 0.6630 -0.5294 +vn -0.2962 0.6333 -0.7150 +vn -0.5294 -0.6630 -0.5294 +vn 0.2611 -0.7311 0.6303 +vn -0.0671 -0.9955 -0.0671 +vn -0.0393 -0.9947 -0.0948 +vn -0.0671 0.9955 -0.0671 +vn -0.0393 0.9947 -0.0948 +vn -0.2962 -0.6333 -0.7150 +vn 0.4617 0.7574 0.4617 +vn 0.2611 0.7311 0.6303 +vn -0.0473 0.9987 -0.0196 +vn 0.6737 -0.7263 0.1363 +vn -0.0473 -0.9987 -0.0196 +vn -0.7194 0.6794 -0.1448 +vn 0.6737 0.7263 0.1363 +vn -0.7194 -0.6794 -0.1448 +vn -0.9824 -0.0000 -0.1866 +vn 0.9809 -0.0000 0.1944 +vn 0.4617 -0.7574 0.4617 +vn -0.8944 0.0000 0.4472 +vn -0.6325 0.6325 0.4472 +vn 0.6325 0.6325 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.0000 -0.8944 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.2588 0.9659 0.0000 +s off +f 27/1/1 14/2/1 4/3/1 +f 2/4/1 27/1/1 4/3/1 +f 29/5/1 1/6/1 24/7/1 +f 28/8/1 2/4/1 5/9/1 +f 40/10/2 10/11/2 7/12/2 +f 11/13/2 42/14/2 8/15/2 +f 44/16/2 8/15/2 42/14/2 +f 45/17/2 7/12/2 13/18/2 +f 46/19/2 13/20/2 9/21/2 +f 12/22/2 46/19/2 9/21/2 +f 47/23/2 16/24/2 15/25/2 +f 16/26/2 43/27/2 11/13/2 +f 15/28/2 41/29/2 47/23/2 +f 53/30/1 59/31/1 62/32/1 +f 55/33/1 62/34/1 58/35/1 +f 61/36/1 55/33/1 58/35/1 +f 60/37/1 54/38/1 61/39/1 +f 49/40/1 64/41/1 50/42/1 +f 63/43/1 51/44/1 52/45/1 +f 65/46/1 56/47/1 66/48/1 +f 50/42/1 66/49/1 56/47/1 +f 65/50/1 52/45/1 57/51/1 +f 14/52/1 30/53/1 79/54/1 +f 26/55/1 1/6/1 78/56/1 +f 26/55/1 79/57/1 30/53/1 +f 75/58/3 86/59/3 72/60/3 +f 87/61/4 74/62/4 73/63/4 +f 99/64/5 90/65/5 88/66/5 +f 92/67/6 91/68/6 93/69/6 +f 84/70/7 93/69/7 85/71/7 +f 94/72/5 72/60/5 86/59/5 +f 95/73/8 86/59/8 88/66/8 +f 96/74/9 95/73/9 97/75/9 +f 92/76/10 97/75/10 90/65/10 +f 97/75/5 88/66/5 90/65/5 +f 81/77/5 96/74/5 80/78/5 +f 100/79/11 99/80/11 98/81/11 +f 98/81/12 88/82/12 89/83/12 +f 91/84/13 98/85/13 89/86/13 +f 101/87/1 91/68/1 90/88/1 +f 112/89/1 108/90/1 104/91/1 +f 141/92/1 123/93/1 122/94/1 +f 138/95/1 117/96/1 116/97/1 +f 137/98/1 115/99/1 114/100/1 +f 136/101/1 116/97/1 115/99/1 +f 123/93/1 137/102/1 114/103/1 +f 141/104/14 144/105/14 119/106/14 +f 368/107/15 145/108/15 367/109/15 +f 83/110/16 146/111/16 147/112/16 +f 173/113/17 155/114/17 154/115/17 +f 168/116/13 171/117/13 163/118/13 +f 167/119/5 172/120/5 166/121/5 +f 165/122/18 175/123/18 171/117/18 +f 176/124/19 166/121/19 172/120/19 +f 170/125/17 168/116/17 162/126/17 +f 167/119/17 169/127/17 161/128/17 +f 166/121/17 174/129/17 169/127/17 +f 173/113/17 165/122/17 170/125/17 +f 170/125/17 174/129/17 173/113/17 +f 155/130/5 176/124/5 151/131/5 +f 175/123/13 154/132/13 150/133/13 +f 188/134/2 180/135/2 130/136/2 +f 170/137/2 185/138/2 186/139/2 +f 194/140/5 170/137/5 162/141/5 +f 169/142/13 195/143/13 161/144/13 +f 163/145/2 162/141/2 168/146/2 +f 164/147/2 161/148/2 195/149/2 +f 194/140/2 163/145/2 184/150/2 +f 160/151/2 184/150/2 163/145/2 +f 195/149/2 190/152/2 164/147/2 +f 159/153/2 190/152/2 182/154/2 +f 192/155/13 146/111/13 143/156/13 +f 117/157/13 146/111/13 127/158/13 +f 147/112/13 160/159/13 149/160/13 +f 118/161/5 121/162/5 133/163/5 +f 145/164/5 156/165/5 118/161/5 +f 200/166/20 93/167/20 91/84/20 +f 198/168/21 87/61/21 196/169/21 +f 198/168/22 197/170/22 200/166/22 +f 89/86/23 200/166/23 91/84/23 +f 196/169/13 73/63/13 83/110/13 +f 197/170/13 83/110/13 82/171/13 +f 241/172/2 245/173/2 237/174/2 +f 213/175/2 226/176/2 225/177/2 +f 214/178/2 227/179/2 226/176/2 +f 216/180/2 227/179/2 215/181/2 +f 217/182/2 228/183/2 216/180/2 +f 218/184/2 229/185/2 217/182/2 +f 219/186/2 230/187/2 218/184/2 +f 219/188/2 232/189/2 231/190/2 +f 220/191/2 233/192/2 232/189/2 +f 222/193/2 233/192/2 221/194/2 +f 223/195/2 234/196/2 222/193/2 +f 224/197/2 235/198/2 223/195/2 +f 213/175/2 236/199/2 224/197/2 +f 252/200/2 34/201/2 35/202/2 +f 88/82/6 74/203/6 89/83/6 +f 281/204/13 277/205/13 273/206/13 +f 305/207/5 301/208/5 297/209/5 +f 312/210/13 314/211/13 313/212/13 +f 317/213/13 308/214/13 307/215/13 +f 310/216/13 316/217/13 311/218/13 +f 318/219/13 309/220/13 308/214/13 +f 321/221/5 328/222/5 320/223/5 +f 309/220/13 330/224/13 310/216/13 +f 322/225/5 329/226/5 321/221/5 +f 331/227/5 322/225/5 323/228/5 +f 342/229/13 346/230/13 344/231/13 +f 342/229/13 334/232/13 336/233/13 +f 340/234/13 332/235/13 334/236/13 +f 345/237/6 346/230/6 347/238/6 +f 343/239/5 347/238/5 337/240/5 +f 341/241/5 337/240/5 335/242/5 +f 333/243/5 341/244/5 335/245/5 +f 150/246/1 151/247/1 152/248/1 +f 145/164/5 351/249/5 148/250/5 +f 354/251/1 355/252/1 145/164/1 +f 256/253/1 145/164/1 355/252/1 +f 351/254/1 364/255/1 350/256/1 +f 358/257/1 364/255/1 359/258/1 +f 362/259/1 358/257/1 357/260/1 +f 356/261/1 362/259/1 357/260/1 +f 356/262/24 365/263/24 361/264/24 +f 349/265/13 366/266/13 153/267/13 +f 152/248/1 366/266/1 365/268/1 +f 145/164/25 118/161/25 81/77/25 +f 353/269/1 368/270/1 80/78/1 +f 197/170/13 82/171/13 370/271/13 +f 369/272/5 80/78/5 96/74/5 +f 372/273/13 315/274/13 312/275/13 +f 316/276/13 372/277/13 311/218/13 +f 316/278/26 331/279/26 375/280/26 +f 326/281/5 377/282/5 325/283/5 +f 324/284/5 374/285/5 377/286/5 +f 375/287/5 374/288/5 376/289/5 +f 323/228/5 375/290/5 331/291/5 +f 373/292/27 310/216/27 311/218/27 +f 467/293/2 412/294/2 404/295/2 +f 414/296/2 407/297/2 415/298/2 +f 417/299/6 379/300/6 378/301/6 +f 398/302/13 423/303/13 399/304/13 +f 420/305/5 397/306/5 396/307/5 +f 421/308/17 398/302/17 397/306/17 +f 386/309/1 394/310/1 393/311/1 +f 387/312/1 395/313/1 394/310/1 +f 388/314/1 389/315/1 395/313/1 +f 382/316/1 389/315/1 381/317/1 +f 383/318/1 390/319/1 382/316/1 +f 384/320/1 391/321/1 383/318/1 +f 468/322/1 384/320/1 385/323/1 +f 386/309/1 468/322/1 385/323/1 +f 415/298/2 408/324/2 416/325/2 +f 416/325/2 401/326/2 409/327/2 +f 401/326/2 410/328/2 409/327/2 +f 402/329/2 411/330/2 410/328/2 +f 403/331/2 412/294/2 411/330/2 +f 414/296/2 467/293/2 406/332/2 +f 420/333/28 419/334/28 421/335/28 +f 423/336/28 422/337/28 424/338/28 +f 426/339/29 417/299/29 378/340/29 +f 399/341/1 400/342/1 398/343/1 +f 396/344/1 397/345/1 380/346/1 +f 439/347/5 441/348/5 435/349/5 +f 400/342/1 426/350/1 378/351/1 +f 425/352/2 418/353/2 417/299/2 +f 446/354/1 443/355/1 444/356/1 +f 448/357/17 445/358/17 446/354/17 +f 450/359/30 447/360/30 448/357/30 +f 444/356/13 448/361/13 446/354/13 +f 443/355/5 447/362/5 449/363/5 +f 451/364/31 458/365/31 454/366/31 +f 457/367/32 452/368/32 453/369/32 +f 459/370/17 457/367/17 453/369/17 +f 458/365/17 461/371/17 454/366/17 +f 462/372/33 465/373/33 461/371/33 +f 463/374/34 460/375/34 459/370/34 +f 454/366/1 465/376/1 451/364/1 +f 453/369/1 463/377/1 459/378/1 +f 457/367/2 464/379/2 456/380/2 +f 466/381/2 458/365/2 455/382/2 +f 456/383/17 451/384/17 452/385/17 +f 465/386/1 28/387/1 5/388/1 +f 36/389/2 456/383/2 37/390/2 +f 485/391/2 489/392/2 481/393/2 +f 509/394/2 513/395/2 505/396/2 +f 519/397/2 524/398/2 520/399/2 +f 522/400/17 519/401/17 518/402/17 +f 520/403/6 521/404/6 517/405/6 +f 521/404/18 518/406/18 517/407/18 +f 524/398/13 522/400/13 521/404/13 +f 555/408/1 561/409/1 559/410/1 +f 569/411/2 570/412/2 563/413/2 +f 585/414/6 583/415/6 581/416/6 +f 589/417/2 594/418/2 590/419/2 +f 587/420/1 592/421/1 588/422/1 +f 594/423/5 587/424/5 590/425/5 +f 588/426/13 593/427/13 589/428/13 +f 595/429/13 597/430/13 598/431/13 +f 599/432/1 598/433/1 597/434/1 +f 601/435/5 600/436/5 599/432/5 +f 602/437/2 596/438/2 595/429/2 +f 597/430/17 591/439/17 594/440/17 +f 593/441/17 597/434/17 594/442/17 +f 592/443/17 599/432/17 593/444/17 +f 591/445/17 601/435/17 592/446/17 +f 587/424/6 598/431/6 590/425/6 +f 590/419/6 600/436/6 589/417/6 +f 589/428/6 602/437/6 588/426/6 +f 602/437/6 587/420/6 588/422/6 +f 27/1/1 31/447/1 14/2/1 +f 2/4/1 25/448/1 27/1/1 +f 29/5/1 6/449/1 1/6/1 +f 28/8/1 25/448/1 2/4/1 +f 40/10/2 41/29/2 10/11/2 +f 11/13/2 43/27/2 42/14/2 +f 44/16/2 12/450/2 8/15/2 +f 45/17/2 40/10/2 7/12/2 +f 46/19/2 45/451/2 13/20/2 +f 12/22/2 44/452/2 46/19/2 +f 47/23/2 48/453/2 16/24/2 +f 16/26/2 48/453/2 43/27/2 +f 15/28/2 10/11/2 41/29/2 +f 53/30/1 51/44/1 59/31/1 +f 55/33/1 53/454/1 62/34/1 +f 61/36/1 54/455/1 55/33/1 +f 60/37/1 49/40/1 54/38/1 +f 49/40/1 60/37/1 64/41/1 +f 63/43/1 59/31/1 51/44/1 +f 65/46/1 57/51/1 56/47/1 +f 50/42/1 64/41/1 66/49/1 +f 65/50/1 63/43/1 52/45/1 +f 14/52/1 31/447/1 30/53/1 +f 26/55/1 24/7/1 1/6/1 +f 26/55/1 78/56/1 79/57/1 +f 75/58/3 88/66/3 86/59/3 +f 87/61/4 89/86/4 74/62/4 +f 99/64/5 101/456/5 90/65/5 +f 92/67/6 90/88/6 91/68/6 +f 84/70/7 92/67/7 93/69/7 +f 94/72/5 81/77/5 72/60/5 +f 95/73/8 94/72/8 86/59/8 +f 96/74/9 94/72/9 95/73/9 +f 92/76/10 96/74/10 97/75/10 +f 97/75/5 95/73/5 88/66/5 +f 81/77/5 94/72/5 96/74/5 +f 100/79/11 101/87/11 99/80/11 +f 98/81/12 99/80/12 88/82/12 +f 91/84/13 100/457/13 98/85/13 +f 101/87/1 100/79/1 91/68/1 +f 104/91/1 103/458/1 112/89/1 +f 103/458/1 102/459/1 112/89/1 +f 102/459/1 113/460/1 112/89/1 +f 112/89/1 111/461/1 110/462/1 +f 110/462/1 109/463/1 112/89/1 +f 109/463/1 108/90/1 112/89/1 +f 108/90/1 107/464/1 104/91/1 +f 107/464/1 106/465/1 104/91/1 +f 106/465/1 105/466/1 104/91/1 +f 141/92/1 142/467/1 123/93/1 +f 138/95/1 139/468/1 117/96/1 +f 137/98/1 136/101/1 115/99/1 +f 136/101/1 138/95/1 116/97/1 +f 123/93/1 142/467/1 137/102/1 +f 141/104/14 122/469/14 144/105/14 +f 368/107/15 354/470/15 145/108/15 +f 348/471/16 82/171/16 147/112/16 +f 82/171/16 83/110/16 147/112/16 +f 173/113/17 174/129/17 155/114/17 +f 168/116/13 165/122/13 171/117/13 +f 167/119/5 164/472/5 172/120/5 +f 165/122/18 173/473/18 175/123/18 +f 176/124/19 174/474/19 166/121/19 +f 170/125/17 165/122/17 168/116/17 +f 167/119/17 166/121/17 169/127/17 +f 170/125/17 169/127/17 174/129/17 +f 155/130/5 174/474/5 176/124/5 +f 175/123/13 173/473/13 154/132/13 +f 130/136/2 129/475/2 188/134/2 +f 129/475/2 177/476/2 188/134/2 +f 177/476/2 187/477/2 188/134/2 +f 188/134/2 189/478/2 178/479/2 +f 178/479/2 179/480/2 188/134/2 +f 179/480/2 180/135/2 188/134/2 +f 180/135/2 181/481/2 193/482/2 +f 193/482/2 131/483/2 180/135/2 +f 131/483/2 130/136/2 180/135/2 +f 191/484/2 169/142/2 186/139/2 +f 169/142/2 170/137/2 186/139/2 +f 194/140/5 185/138/5 170/137/5 +f 169/142/13 191/484/13 195/143/13 +f 163/145/2 194/140/2 162/141/2 +f 164/147/2 167/485/2 161/148/2 +f 160/151/2 183/486/2 184/150/2 +f 159/153/2 164/147/2 190/152/2 +f 192/155/13 147/112/13 146/111/13 +f 117/157/13 143/156/13 146/111/13 +f 147/112/13 192/155/13 160/159/13 +f 118/161/5 156/165/5 121/162/5 +f 145/164/5 158/487/5 156/165/5 +f 91/84/35 199/488/35 200/166/35 +f 200/166/36 197/170/36 93/167/36 +f 198/168/21 89/86/21 87/61/21 +f 198/168/37 196/169/37 197/170/37 +f 89/86/38 198/168/38 200/166/38 +f 196/169/13 87/61/13 73/63/13 +f 197/170/13 196/169/13 83/110/13 +f 237/174/2 238/489/2 239/490/2 +f 239/490/2 240/491/2 241/172/2 +f 241/172/2 242/492/2 243/493/2 +f 243/493/2 244/494/2 245/173/2 +f 245/173/2 246/495/2 237/174/2 +f 246/495/2 247/496/2 237/174/2 +f 247/496/2 248/497/2 237/174/2 +f 237/174/2 239/490/2 241/172/2 +f 241/172/2 243/493/2 245/173/2 +f 213/175/2 214/178/2 226/176/2 +f 214/178/2 215/181/2 227/179/2 +f 216/180/2 228/183/2 227/179/2 +f 217/182/2 229/185/2 228/183/2 +f 218/184/2 230/187/2 229/185/2 +f 219/186/2 231/498/2 230/187/2 +f 219/188/2 220/191/2 232/189/2 +f 220/191/2 221/194/2 233/192/2 +f 222/193/2 234/196/2 233/192/2 +f 223/195/2 235/198/2 234/196/2 +f 224/197/2 236/199/2 235/198/2 +f 213/175/2 225/177/2 236/199/2 +f 38/499/2 39/500/2 35/202/2 +f 35/202/2 77/501/2 253/502/2 +f 253/502/2 254/503/2 255/504/2 +f 255/504/2 249/505/2 250/506/2 +f 250/506/2 251/507/2 252/200/2 +f 252/200/2 76/508/2 34/201/2 +f 34/201/2 38/499/2 35/202/2 +f 35/202/2 253/502/2 252/200/2 +f 253/502/2 255/504/2 252/200/2 +f 255/504/2 250/506/2 252/200/2 +f 88/82/6 75/509/6 74/203/6 +f 273/206/13 272/510/13 271/511/13 +f 271/511/13 282/512/13 281/204/13 +f 281/204/13 280/513/13 279/514/13 +f 279/514/13 278/515/13 281/204/13 +f 278/515/13 277/205/13 281/204/13 +f 277/205/13 276/516/13 275/517/13 +f 275/517/13 274/518/13 273/206/13 +f 273/206/13 271/511/13 281/204/13 +f 277/205/13 275/517/13 273/206/13 +f 297/209/5 296/519/5 295/520/5 +f 295/520/5 306/521/5 305/207/5 +f 305/207/5 304/522/5 303/523/5 +f 303/523/5 302/524/5 305/207/5 +f 302/524/5 301/208/5 305/207/5 +f 301/208/5 300/525/5 299/526/5 +f 299/526/5 298/527/5 297/209/5 +f 297/209/5 295/520/5 305/207/5 +f 301/208/5 299/526/5 297/209/5 +f 312/210/13 315/528/13 314/211/13 +f 317/213/13 318/219/13 308/214/13 +f 310/216/13 330/529/13 316/217/13 +f 318/219/13 319/530/13 309/220/13 +f 321/221/5 329/226/5 328/222/5 +f 309/220/13 319/530/13 330/224/13 +f 322/225/5 327/531/5 329/226/5 +f 331/227/5 327/531/5 322/225/5 +f 342/229/13 336/233/13 346/230/13 +f 342/229/13 340/532/13 334/232/13 +f 340/234/13 338/533/13 332/235/13 +f 345/237/6 344/534/6 346/230/6 +f 343/239/5 345/535/5 347/238/5 +f 341/241/5 343/239/5 337/240/5 +f 333/243/5 339/536/5 341/244/5 +f 150/246/1 154/115/1 155/114/1 +f 151/247/1 153/267/1 152/248/1 +f 150/246/1 155/114/1 151/247/1 +f 145/164/5 256/253/5 351/249/5 +f 148/250/5 159/537/5 145/164/5 +f 159/537/5 158/487/5 145/164/5 +f 351/254/1 359/258/1 364/255/1 +f 358/257/1 363/538/1 364/255/1 +f 362/259/1 363/538/1 358/257/1 +f 356/261/1 361/539/1 362/259/1 +f 356/262/24 360/540/24 365/263/24 +f 147/541/1 149/542/1 365/268/1 +f 149/542/1 152/248/1 365/268/1 +f 152/248/1 153/267/1 366/266/1 +f 365/268/1 360/543/1 147/541/1 +f 81/77/25 80/78/25 145/164/25 +f 80/78/25 367/544/25 145/164/25 +f 82/171/1 348/545/1 352/546/1 +f 82/171/1 352/546/1 353/269/1 +f 368/270/1 367/547/1 80/78/1 +f 80/78/1 82/171/1 353/269/1 +f 85/548/13 93/167/13 370/271/13 +f 93/167/13 197/170/13 370/271/13 +f 96/74/5 92/76/5 369/272/5 +f 92/76/5 84/549/5 369/272/5 +f 372/273/13 371/550/13 315/274/13 +f 316/276/13 371/551/13 372/277/13 +f 316/278/26 330/552/26 331/279/26 +f 326/281/5 324/553/5 377/282/5 +f 324/284/5 376/554/5 374/285/5 +f 375/287/5 373/292/5 374/288/5 +f 323/228/5 373/292/5 375/290/5 +f 373/292/27 323/228/27 310/216/27 +f 467/293/2 413/555/2 412/294/2 +f 414/296/2 406/332/2 407/297/2 +f 417/299/6 418/353/6 379/300/6 +f 398/302/13 422/556/13 423/303/13 +f 420/305/5 421/308/5 397/306/5 +f 421/308/17 422/556/17 398/302/17 +f 386/309/1 387/312/1 394/310/1 +f 387/312/1 388/314/1 395/313/1 +f 388/314/1 381/317/1 389/315/1 +f 382/316/1 390/319/1 389/315/1 +f 383/318/1 391/321/1 390/319/1 +f 384/320/1 392/557/1 391/321/1 +f 468/322/1 392/557/1 384/320/1 +f 386/309/1 393/311/1 468/322/1 +f 415/298/2 407/297/2 408/324/2 +f 416/325/2 408/324/2 401/326/2 +f 401/326/2 402/329/2 410/328/2 +f 402/329/2 403/331/2 411/330/2 +f 403/331/2 404/295/2 412/294/2 +f 414/296/2 413/555/2 467/293/2 +f 426/339/29 425/352/29 417/299/29 +f 435/349/5 436/558/5 437/559/5 +f 437/559/5 438/560/5 439/347/5 +f 439/347/5 440/561/5 441/348/5 +f 441/348/5 442/562/5 435/349/5 +f 435/349/5 437/559/5 439/347/5 +f 378/351/1 379/563/1 398/343/1 +f 379/563/1 380/346/1 397/345/1 +f 397/345/1 398/343/1 379/563/1 +f 398/343/1 400/342/1 378/351/1 +f 425/352/2 405/564/2 418/353/2 +f 446/354/1 445/358/1 443/355/1 +f 448/357/17 447/360/17 445/358/17 +f 450/359/30 449/565/30 447/360/30 +f 444/356/13 450/566/13 448/361/13 +f 443/355/5 445/358/5 447/362/5 +f 451/364/31 455/382/31 458/365/31 +f 457/367/32 456/380/32 452/368/32 +f 459/370/17 460/375/17 457/367/17 +f 458/365/17 462/372/17 461/371/17 +f 462/372/33 466/567/33 465/373/33 +f 463/374/34 464/568/34 460/375/34 +f 454/366/1 461/569/1 465/376/1 +f 453/369/1 452/368/1 463/377/1 +f 457/367/2 460/570/2 464/379/2 +f 466/381/2 462/571/2 458/365/2 +f 456/383/17 455/572/17 451/384/17 +f 5/388/1 6/573/1 451/384/1 +f 6/573/1 29/574/1 463/575/1 +f 451/384/1 6/573/1 452/385/1 +f 463/575/1 452/385/1 6/573/1 +f 451/384/1 465/386/1 5/388/1 +f 32/576/2 33/577/2 36/389/2 +f 36/389/2 466/578/2 455/572/2 +f 456/383/2 464/579/2 37/390/2 +f 36/389/2 455/572/2 456/383/2 +f 37/390/2 32/576/2 36/389/2 +f 481/393/2 482/580/2 483/581/2 +f 483/581/2 484/582/2 485/391/2 +f 485/391/2 486/583/2 487/584/2 +f 487/584/2 488/585/2 489/392/2 +f 489/392/2 490/586/2 481/393/2 +f 490/586/2 491/587/2 481/393/2 +f 491/587/2 492/588/2 481/393/2 +f 481/393/2 483/581/2 485/391/2 +f 485/391/2 487/584/2 489/392/2 +f 505/396/2 506/589/2 507/590/2 +f 507/590/2 508/591/2 509/394/2 +f 509/394/2 510/592/2 513/395/2 +f 510/592/2 511/593/2 513/395/2 +f 511/593/2 512/594/2 513/395/2 +f 513/395/2 514/595/2 515/596/2 +f 515/596/39 516/597/39 513/395/39 +f 516/597/2 505/396/2 513/395/2 +f 505/396/2 507/590/2 509/394/2 +f 519/397/2 523/598/2 524/398/2 +f 522/400/17 523/598/17 519/401/17 +f 520/403/6 524/398/6 521/404/6 +f 521/404/18 522/400/18 518/406/18 +f 524/398/13 523/598/13 522/400/13 +f 557/599/1 556/600/1 555/408/1 +f 555/408/1 562/601/1 561/409/1 +f 561/409/1 560/602/1 559/410/1 +f 559/410/1 558/603/1 557/599/1 +f 557/599/1 555/408/1 559/410/1 +f 563/413/2 564/604/2 565/605/2 +f 565/605/2 566/606/2 563/413/2 +f 566/606/2 567/607/2 563/413/2 +f 567/607/2 568/608/2 563/413/2 +f 568/608/2 569/411/2 563/413/2 +f 581/416/6 580/609/6 579/610/6 +f 579/610/6 586/611/6 585/414/6 +f 585/414/6 584/612/6 583/415/6 +f 583/415/6 582/613/6 581/416/6 +f 581/416/6 579/610/6 585/414/6 +f 589/417/2 593/614/2 594/418/2 +f 587/420/1 591/615/1 592/421/1 +f 594/423/5 591/616/5 587/424/5 +f 588/426/13 592/617/13 593/427/13 +f 595/429/13 596/438/13 597/430/13 +f 599/432/1 600/436/1 598/433/1 +f 601/435/5 602/437/5 600/436/5 +f 602/437/2 601/435/2 596/438/2 +f 597/430/17 596/438/17 591/439/17 +f 593/441/17 599/432/17 597/434/17 +f 592/443/17 601/435/17 599/432/17 +f 591/445/17 596/438/17 601/435/17 +f 587/424/6 595/429/6 598/431/6 +f 590/419/6 598/433/6 600/436/6 +f 589/428/6 600/436/6 602/437/6 +f 602/437/6 595/429/6 587/420/6 +s 1 +f 13/618/40 1/619/41 6/620/40 +f 2/621/42 12/622/43 5/623/43 +f 9/624/17 6/620/40 3/625/17 +f 5/623/43 9/626/17 3/627/17 +f 4/628/44 8/629/42 2/621/42 +f 14/630/45 16/26/46 4/631/44 +f 11/632/47 4/631/44 16/26/46 +f 32/633/48 29/5/49 24/7/41 +f 34/634/34 76/635/13 32/633/48 +f 35/202/33 31/447/50 27/1/33 +f 38/636/51 26/55/34 30/53/51 +f 39/637/50 30/53/51 31/447/50 +f 28/8/52 33/638/53 25/448/42 +f 33/638/53 77/501/5 35/202/33 +f 55/639/17 45/17/54 46/640/17 +f 49/40/41 41/29/34 40/10/41 +f 44/16/55 55/641/17 46/642/17 +f 54/38/54 40/10/41 45/17/54 +f 48/453/50 52/45/33 43/27/33 +f 56/47/51 48/453/50 47/23/51 +f 43/27/33 51/44/42 42/14/42 +f 50/42/34 47/23/51 41/29/34 +f 42/14/42 53/30/55 44/16/55 +f 70/643/40 60/644/41 61/645/40 +f 62/646/43 67/647/17 58/648/17 +f 67/649/17 61/645/40 58/650/17 +f 59/651/42 71/652/43 62/646/43 +f 66/653/56 75/654/57 65/655/58 +f 75/654/57 72/656/59 65/655/58 +f 65/655/58 72/656/59 63/657/60 +f 74/658/61 66/653/56 73/659/62 +f 66/653/56 64/660/63 73/659/62 +f 78/661/64 7/662/41 10/663/65 +f 15/664/66 78/665/64 10/663/65 +f 78/665/64 15/664/66 79/666/67 +f 16/26/46 79/666/67 15/664/66 +f 135/667/68 122/668/69 123/669/68 +f 125/670/14 114/671/17 115/672/14 +f 108/673/17 131/674/68 107/675/68 +f 124/676/17 123/669/68 114/677/17 +f 126/678/24 115/672/14 116/679/24 +f 109/680/14 130/681/17 108/673/17 +f 127/158/70 116/679/24 117/157/70 +f 105/682/5 138/95/71 104/683/71 +f 141/92/72 119/684/73 120/685/74 +f 143/686/75 139/687/76 140/688/77 +f 106/689/78 139/468/79 105/682/5 +f 113/690/80 141/92/72 112/691/81 +f 103/692/82 137/98/6 102/693/6 +f 140/688/77 192/694/83 143/686/75 +f 102/695/6 142/467/80 113/690/80 +f 104/683/71 136/101/82 103/692/82 +f 122/668/69 133/163/84 121/162/84 +f 128/696/85 120/697/86 156/698/87 +f 121/699/88 156/698/87 120/697/86 +f 110/700/24 120/685/74 128/701/89 +f 128/696/85 158/702/90 157/703/91 +f 120/697/86 119/106/92 121/699/88 +f 121/699/88 119/106/92 144/105/93 +f 172/704/94 159/537/25 148/250/25 +f 160/159/16 163/705/16 171/706/95 +f 175/707/40 152/708/96 171/706/95 +f 153/709/97 176/710/43 172/704/94 +f 109/680/14 110/700/24 128/701/89 +f 180/711/71 183/712/79 181/713/5 +f 189/714/80 186/715/6 178/716/6 +f 178/717/6 185/718/98 179/719/82 +f 187/720/13 190/721/81 188/722/81 +f 191/723/99 188/722/81 190/721/81 +f 185/718/98 194/724/9 184/725/71 +f 159/153/100 182/154/100 158/702/90 +f 158/702/90 182/154/100 157/703/91 +f 192/694/83 132/726/101 160/151/102 +f 160/151/102 132/726/101 183/486/102 +f 140/727/103 106/689/78 107/675/68 +f 182/728/104 177/729/24 157/730/89 +f 183/712/79 193/731/78 181/713/5 +f 349/732/105 351/254/17 350/256/17 +f 219/186/6 206/733/80 207/734/6 +f 216/180/13 203/735/24 204/736/13 +f 223/195/78 210/737/5 211/738/78 +f 220/191/82 207/739/6 208/740/82 +f 217/182/81 204/736/13 205/741/81 +f 224/197/68 211/738/78 212/742/68 +f 214/178/14 201/743/17 202/744/14 +f 221/194/71 208/740/82 209/745/71 +f 218/184/80 205/741/81 206/733/80 +f 213/175/17 212/742/68 201/743/17 +f 215/181/24 202/744/14 203/735/24 +f 222/193/5 209/745/71 210/737/5 +f 237/746/6 236/199/80 225/177/6 +f 239/747/71 226/176/82 227/179/71 +f 246/748/13 233/192/24 234/196/13 +f 243/749/17 230/187/68 231/498/17 +f 240/750/5 227/179/71 228/183/5 +f 247/751/81 234/196/13 235/198/81 +f 244/752/14 231/190/17 232/189/14 +f 241/753/78 228/183/5 229/185/78 +f 248/754/80 235/198/81 236/199/80 +f 238/755/82 225/177/6 226/176/82 +f 245/756/24 232/189/14 233/192/24 +f 242/757/68 229/185/78 230/187/68 +f 18/758/78 255/759/68 254/760/78 +f 21/761/24 252/762/106 251/763/24 +f 17/764/68 249/765/17 255/759/68 +f 23/766/17 250/767/14 249/768/17 +f 19/769/107 254/760/78 253/770/107 +f 22/771/14 251/763/24 250/767/14 +f 76/635/17 20/772/106 32/633/17 +f 33/638/17 253/770/107 77/501/17 +f 64/773/63 69/774/108 83/775/13 +f 81/776/5 68/777/109 63/778/60 +f 81/776/1 118/779/110 258/780/111 +f 83/775/1 257/781/111 146/782/110 +f 69/783/112 146/782/110 257/781/111 +f 133/784/112 258/780/111 118/779/110 +f 69/785/1 70/786/1 67/787/1 +f 265/788/6 278/789/113 266/790/113 +f 262/791/2 275/792/114 263/793/114 +f 269/794/115 282/795/116 270/796/116 +f 259/797/17 272/798/117 260/799/117 +f 266/790/113 279/800/118 267/801/118 +f 263/793/114 276/802/119 264/803/119 +f 270/796/116 271/804/17 259/797/17 +f 260/799/117 273/805/120 261/806/120 +f 267/801/118 280/807/1 268/808/1 +f 264/803/119 277/809/6 265/810/6 +f 261/806/120 274/811/2 262/791/2 +f 268/808/1 281/812/115 269/794/115 +f 289/813/6 302/814/119 290/815/119 +f 286/816/1 299/817/118 287/818/118 +f 293/819/120 306/820/117 294/821/117 +f 283/822/17 296/823/116 284/824/116 +f 290/815/119 303/825/114 291/826/114 +f 287/818/118 300/827/113 288/828/113 +f 294/821/117 295/829/17 283/822/17 +f 284/824/116 297/830/115 285/831/115 +f 291/826/114 304/832/2 292/833/2 +f 288/828/113 301/834/6 289/835/6 +f 285/831/115 298/836/1 286/816/1 +f 292/833/2 305/837/120 293/819/120 +f 371/838/121 324/839/122 315/840/122 +f 309/220/123 321/221/122 308/214/122 +f 316/278/102 376/841/121 371/838/121 +f 310/216/124 322/225/123 309/220/123 +f 328/842/1 318/843/111 317/844/1 +f 321/221/122 307/215/2 308/214/122 +f 318/843/111 327/845/125 319/846/125 +f 319/846/125 331/279/76 330/552/76 +f 333/243/126 334/232/127 332/235/126 +f 337/240/128 346/230/129 336/233/128 +f 341/847/130 338/848/131 340/849/130 +f 340/849/130 343/850/132 341/847/130 +f 336/233/128 335/242/127 337/240/128 +f 343/850/132 344/534/28 345/237/28 +f 352/851/133 357/260/17 353/852/17 +f 355/853/24 351/254/70 256/854/70 +f 356/261/134 352/851/133 348/855/135 +f 153/856/112 148/857/136 349/732/105 +f 354/470/137 353/852/17 357/260/17 +f 80/78/1 370/271/138 82/171/1 +f 85/71/139 369/272/138 84/70/139 +f 358/257/14 355/853/24 354/470/137 +f 372/277/140 373/292/141 311/218/141 +f 374/288/140 312/275/142 377/286/142 +f 313/212/143 377/286/142 312/275/142 +f 315/840/122 326/858/12 314/211/12 +f 408/859/43 394/860/144 395/861/43 +f 402/862/40 389/863/17 390/864/40 +f 401/865/17 395/861/43 389/863/17 +f 403/866/145 390/864/40 391/867/145 +f 388/868/37 409/869/6 381/870/6 +f 386/871/40 415/872/13 387/873/13 +f 384/874/43 413/875/17 385/876/17 +f 382/877/9 411/878/5 383/879/5 +f 387/873/13 416/880/37 388/868/37 +f 385/881/17 414/882/40 386/871/40 +f 383/879/5 412/883/43 384/874/43 +f 381/870/6 410/884/9 382/877/9 +f 418/353/13 405/564/13 419/885/146 +f 423/303/25 400/886/147 399/304/25 +f 380/346/148 420/305/16 396/307/16 +f 424/338/149 426/350/17 400/342/147 +f 441/887/6 432/888/124 433/889/6 +f 439/890/2 430/891/102 431/892/2 +f 437/893/17 428/894/76 429/895/17 +f 442/896/141 433/897/6 434/898/141 +f 440/899/124 431/892/2 432/888/124 +f 438/900/102 429/895/17 430/891/102 +f 436/901/76 427/902/1 428/894/76 +f 435/903/1 434/898/141 427/902/1 +f 425/904/17 422/337/17 421/335/17 +f 465/373/43 36/905/52 28/8/52 +f 37/906/49 463/374/40 29/5/49 +f 491/907/78 478/908/5 479/909/78 +f 488/910/82 475/911/6 476/912/82 +f 485/913/81 472/914/13 473/915/81 +f 492/916/68 479/909/78 480/917/68 +f 482/918/14 469/919/17 470/920/14 +f 489/921/71 476/912/82 477/922/71 +f 486/923/80 473/915/81 474/924/80 +f 481/925/17 480/917/68 469/919/17 +f 483/926/24 470/920/14 471/927/24 +f 490/928/5 477/922/71 478/908/5 +f 487/929/6 474/924/80 475/930/6 +f 484/931/13 471/927/24 472/914/13 +f 505/932/17 504/933/68 493/934/17 +f 507/935/24 494/936/14 495/937/24 +f 514/938/5 501/939/71 502/940/5 +f 511/941/6 498/942/80 499/943/6 +f 508/944/13 495/937/24 496/945/13 +f 515/946/78 502/940/5 503/947/78 +f 512/948/82 499/949/6 500/950/82 +f 509/951/81 496/945/13 497/952/81 +f 516/953/68 503/947/78 504/933/68 +f 506/954/14 493/934/17 494/936/14 +f 513/955/71 500/950/82 501/939/71 +f 510/956/80 497/952/81 498/942/80 +f 525/957/150 538/958/151 526/959/152 +f 525/957/150 533/960/153 539/961/18 +f 530/962/154 534/963/155 531/964/156 +f 526/959/152 537/965/157 527/966/158 +f 531/964/156 533/960/153 532/967/159 +f 527/966/158 536/968/160 528/969/161 +f 538/958/151 544/970/162 537/965/157 +f 534/963/155 542/971/163 541/972/164 +f 539/961/18 545/973/165 538/958/151 +f 537/965/157 543/974/166 536/968/160 +f 539/961/18 540/975/167 546/976/168 +f 534/963/155 540/975/167 533/960/153 +f 528/969/161 536/968/160 529/977/169 +f 536/968/160 543/974/166 529/978/169 +f 529/979/169 535/980/170 530/962/154 +f 535/980/170 529/981/169 542/971/163 +f 546/976/168 553/982/40 545/973/165 +f 544/970/162 551/983/43 543/974/166 +f 540/975/167 554/984/13 546/976/168 +f 529/985/169 550/986/9 542/971/163 +f 541/972/164 548/987/37 540/975/167 +f 543/974/166 547/988/5 529/989/169 +f 545/973/165 552/990/17 544/970/162 +f 542/971/163 549/991/6 541/972/164 +f 557/992/171 564/993/172 556/994/172 +f 556/994/172 563/995/100 555/996/100 +f 555/996/100 570/997/173 562/998/173 +f 561/999/10 570/997/173 569/1000/10 +f 561/1001/10 568/1002/174 560/1003/174 +f 560/1003/174 567/1004/175 559/1005/175 +f 558/1006/176 565/1007/171 557/992/171 +f 558/1006/176 567/1004/175 566/1008/176 +f 574/1009/177 583/1010/2 575/1011/2 +f 572/1012/18 581/1013/13 573/1014/13 +f 577/1015/5 586/1016/19 578/1017/19 +f 575/1018/2 584/1019/178 576/1020/178 +f 573/1014/13 582/1021/177 574/1009/177 +f 571/1022/1 580/1023/18 572/1012/18 +f 578/1017/19 579/1024/1 571/1022/1 +f 576/1020/178 585/1025/5 577/1015/5 +f 13/618/40 7/662/41 1/619/41 +f 2/621/42 8/629/42 12/622/43 +f 9/624/17 13/618/40 6/620/40 +f 5/623/43 12/622/43 9/626/17 +f 4/628/44 11/632/47 8/629/42 +f 32/633/48 37/906/49 29/5/49 +f 24/7/41 26/55/34 32/633/48 +f 26/55/34 34/634/34 32/633/48 +f 35/202/33 39/637/50 31/447/50 +f 38/636/51 34/634/34 26/55/34 +f 39/637/50 38/636/51 30/53/51 +f 28/8/52 36/905/52 33/638/53 +f 35/202/33 27/1/33 33/638/53 +f 27/1/33 25/448/42 33/638/53 +f 55/639/17 54/38/54 45/17/54 +f 49/40/41 50/42/34 41/29/34 +f 44/16/55 53/30/55 55/641/17 +f 54/38/54 49/40/41 40/10/41 +f 48/453/50 57/51/50 52/45/33 +f 56/47/51 57/51/50 48/453/50 +f 43/27/33 52/45/33 51/44/42 +f 50/42/34 56/47/51 47/23/51 +f 42/14/42 51/44/42 53/30/55 +f 70/643/40 69/774/108 60/644/41 +f 62/646/43 71/652/43 67/647/17 +f 67/649/17 70/643/40 61/645/40 +f 59/651/42 68/777/109 71/652/43 +f 66/653/56 74/658/61 75/654/57 +f 78/661/64 1/619/41 7/662/41 +f 16/26/46 14/630/45 79/666/67 +f 135/667/68 134/1026/78 122/668/69 +f 125/670/14 124/1027/17 114/671/17 +f 108/673/17 130/681/17 131/674/68 +f 124/676/17 135/667/68 123/669/68 +f 126/678/24 125/670/14 115/672/14 +f 109/680/14 129/1028/14 130/681/17 +f 127/158/70 126/678/24 116/679/24 +f 105/682/5 139/468/79 138/95/71 +f 120/685/74 111/1029/13 141/92/72 +f 111/1029/13 112/691/81 141/92/72 +f 143/686/75 117/1030/76 139/687/76 +f 106/689/78 140/727/103 139/468/79 +f 113/690/80 142/467/80 141/92/72 +f 103/692/82 136/101/82 137/98/6 +f 140/688/77 132/726/101 192/694/83 +f 102/695/6 137/102/6 142/467/80 +f 104/683/71 138/95/71 136/101/82 +f 121/162/84 144/1031/84 122/668/69 +f 122/668/69 134/1026/78 133/163/84 +f 110/700/24 111/1029/13 120/685/74 +f 128/696/85 156/698/87 158/702/90 +f 148/250/25 153/709/97 172/704/94 +f 172/704/94 164/1032/25 159/537/25 +f 171/706/95 152/708/96 149/160/16 +f 149/160/16 160/159/16 171/706/95 +f 175/707/40 150/1033/40 152/708/96 +f 153/709/97 151/1034/43 176/710/43 +f 177/729/24 129/1028/14 157/730/89 +f 129/1028/14 109/680/14 128/701/89 +f 157/730/89 129/1028/14 128/701/89 +f 180/711/71 184/725/71 183/712/79 +f 189/714/80 191/723/99 186/715/6 +f 178/717/6 186/1035/6 185/718/98 +f 187/720/13 182/728/104 190/721/81 +f 190/721/81 195/1036/37 191/723/99 +f 191/723/99 189/714/80 188/722/81 +f 184/725/71 180/711/71 185/718/98 +f 180/711/71 179/719/82 185/718/98 +f 107/675/68 131/674/68 132/1037/103 +f 131/674/68 193/731/78 132/1037/103 +f 132/1037/103 140/727/103 107/675/68 +f 182/728/104 187/720/13 177/729/24 +f 183/712/79 132/1037/103 193/731/78 +f 349/732/105 148/857/136 351/254/17 +f 219/186/6 218/184/80 206/733/80 +f 216/180/13 215/181/24 203/735/24 +f 223/195/78 222/193/5 210/737/5 +f 220/191/82 219/188/6 207/739/6 +f 217/182/81 216/180/13 204/736/13 +f 224/197/68 223/195/78 211/738/78 +f 214/178/14 213/175/17 201/743/17 +f 221/194/71 220/191/82 208/740/82 +f 218/184/80 217/182/81 205/741/81 +f 213/175/17 224/197/68 212/742/68 +f 215/181/24 214/178/14 202/744/14 +f 222/193/5 221/194/71 209/745/71 +f 237/746/6 248/754/80 236/199/80 +f 239/747/71 238/755/82 226/176/82 +f 246/748/13 245/756/24 233/192/24 +f 243/749/17 242/757/68 230/187/68 +f 240/750/5 239/747/71 227/179/71 +f 247/751/81 246/748/13 234/196/13 +f 244/752/14 243/1038/17 231/190/17 +f 241/753/78 240/750/5 228/183/5 +f 248/754/80 247/751/81 235/198/81 +f 238/755/82 237/746/6 225/177/6 +f 245/756/24 244/752/14 232/189/14 +f 242/757/68 241/753/78 229/185/78 +f 18/758/78 17/764/68 255/759/68 +f 21/761/24 20/772/106 252/762/106 +f 17/764/68 23/1039/17 249/765/17 +f 23/766/17 22/771/14 250/767/14 +f 19/769/107 18/758/78 254/760/78 +f 22/771/14 21/761/24 251/763/24 +f 76/635/17 252/762/106 20/772/106 +f 33/638/17 19/769/107 253/770/107 +f 83/775/13 73/659/62 64/773/63 +f 64/773/63 60/644/41 69/774/108 +f 69/774/108 257/781/13 83/775/13 +f 72/656/59 81/776/5 63/778/60 +f 81/776/5 258/780/5 68/777/109 +f 63/778/60 68/777/109 59/651/42 +f 69/783/112 127/1040/112 146/782/110 +f 133/784/112 68/1041/112 258/780/111 +f 71/1042/1 68/1043/1 67/787/1 +f 68/1043/1 69/785/1 67/787/1 +f 265/788/6 277/1044/6 278/789/113 +f 262/791/2 274/811/2 275/792/114 +f 269/794/115 281/812/115 282/795/116 +f 259/797/17 271/804/17 272/798/117 +f 266/790/113 278/789/113 279/800/118 +f 263/793/114 275/792/114 276/802/119 +f 270/796/116 282/795/116 271/804/17 +f 260/799/117 272/798/117 273/805/120 +f 267/801/118 279/800/118 280/807/1 +f 264/803/119 276/802/119 277/809/6 +f 261/806/120 273/805/120 274/811/2 +f 268/808/1 280/807/1 281/812/115 +f 289/813/6 301/1045/6 302/814/119 +f 286/816/1 298/836/1 299/817/118 +f 293/819/120 305/837/120 306/820/117 +f 283/822/17 295/829/17 296/823/116 +f 290/815/119 302/814/119 303/825/114 +f 287/818/118 299/817/118 300/827/113 +f 294/821/117 306/820/117 295/829/17 +f 284/824/116 296/823/116 297/830/115 +f 291/826/114 303/825/114 304/832/2 +f 288/828/113 300/827/113 301/834/6 +f 285/831/115 297/830/115 298/836/1 +f 292/833/2 304/832/2 305/837/120 +f 371/838/121 376/841/121 324/839/122 +f 309/220/123 322/225/123 321/221/122 +f 316/278/102 375/280/102 376/841/121 +f 310/216/124 323/228/124 322/225/123 +f 328/842/1 329/1046/111 318/843/111 +f 321/221/122 320/223/2 307/215/2 +f 318/843/111 329/1046/111 327/845/125 +f 319/846/125 327/845/125 331/279/76 +f 333/243/126 335/242/127 334/232/127 +f 337/240/128 347/238/129 346/230/129 +f 341/847/130 339/1047/131 338/848/131 +f 340/849/130 342/1048/132 343/850/132 +f 336/233/128 334/232/127 335/242/127 +f 343/850/132 342/1048/132 344/534/28 +f 352/851/133 356/261/134 357/260/17 +f 355/853/24 359/258/24 351/254/70 +f 348/855/135 147/1049/135 356/261/134 +f 147/1049/135 360/1050/135 356/261/134 +f 357/260/17 358/257/14 354/470/137 +f 354/470/137 368/107/179 353/852/17 +f 80/78/1 369/272/138 370/271/138 +f 85/71/139 370/271/138 369/272/138 +f 358/257/14 359/258/24 355/853/24 +f 372/277/140 374/288/140 373/292/141 +f 374/288/140 372/277/140 312/275/142 +f 313/212/143 325/283/143 377/286/142 +f 315/840/122 324/839/122 326/858/12 +f 408/859/43 407/1051/144 394/860/144 +f 402/862/40 401/865/17 389/863/17 +f 401/865/17 408/859/43 395/861/43 +f 403/866/145 402/862/40 390/864/40 +f 388/868/37 416/880/37 409/869/6 +f 386/871/40 414/882/40 415/872/13 +f 384/874/43 412/883/43 413/875/17 +f 382/877/9 410/884/9 411/878/5 +f 387/873/13 415/872/13 416/880/37 +f 385/881/17 413/1052/17 414/882/40 +f 383/879/5 411/878/5 412/883/43 +f 381/870/6 409/869/6 410/884/9 +f 380/346/148 379/563/13 419/885/146 +f 379/563/13 418/353/13 419/885/146 +f 423/303/25 424/1053/149 400/886/147 +f 380/346/148 419/885/146 420/305/16 +f 424/338/149 425/904/17 426/350/17 +f 441/887/6 440/899/124 432/888/124 +f 439/890/2 438/900/102 430/891/102 +f 437/893/17 436/901/76 428/894/76 +f 442/896/141 441/1054/6 433/897/6 +f 440/899/124 439/890/2 431/892/2 +f 438/900/102 437/893/17 429/895/17 +f 436/901/76 435/903/1 427/902/1 +f 435/903/1 442/896/141 434/898/141 +f 419/334/17 405/1055/17 421/335/17 +f 405/1055/17 425/904/17 421/335/17 +f 425/904/17 424/338/149 422/337/17 +f 465/373/43 466/567/43 36/905/52 +f 37/906/49 464/568/40 463/374/40 +f 491/907/78 490/928/5 478/908/5 +f 488/910/82 487/1056/6 475/911/6 +f 485/913/81 484/931/13 472/914/13 +f 492/916/68 491/907/78 479/909/78 +f 482/918/14 481/925/17 469/919/17 +f 489/921/71 488/910/82 476/912/82 +f 486/923/80 485/913/81 473/915/81 +f 481/925/17 492/916/68 480/917/68 +f 483/926/24 482/918/14 470/920/14 +f 490/928/5 489/921/71 477/922/71 +f 487/929/6 486/923/80 474/924/80 +f 484/931/13 483/926/24 471/927/24 +f 505/932/17 516/953/68 504/933/68 +f 507/935/24 506/954/14 494/936/14 +f 514/938/5 513/955/71 501/939/71 +f 511/941/6 510/956/80 498/942/80 +f 508/944/13 507/935/24 495/937/24 +f 515/946/78 514/938/5 502/940/5 +f 512/948/82 511/1057/6 499/949/6 +f 509/951/81 508/944/13 496/945/13 +f 516/953/68 515/946/78 503/947/78 +f 506/954/14 505/932/17 493/934/17 +f 513/955/71 512/948/82 500/950/82 +f 510/956/80 509/951/81 497/952/81 +f 525/957/150 539/961/18 538/958/151 +f 525/957/150 532/967/159 533/960/153 +f 530/962/154 535/980/170 534/963/155 +f 526/959/152 538/958/151 537/965/157 +f 531/964/156 534/963/155 533/960/153 +f 527/966/158 537/965/157 536/968/160 +f 538/958/151 545/973/165 544/970/162 +f 534/963/155 535/980/170 542/971/163 +f 539/961/18 546/976/168 545/973/165 +f 537/965/157 544/970/162 543/974/166 +f 539/961/18 533/960/153 540/975/167 +f 534/963/155 541/972/164 540/975/167 +f 546/976/168 554/984/13 553/982/40 +f 544/970/162 552/990/17 551/983/43 +f 540/975/167 548/987/37 554/984/13 +f 529/985/169 547/1058/5 550/986/9 +f 541/972/164 549/991/6 548/987/37 +f 543/974/166 551/983/43 547/988/5 +f 545/973/165 553/982/40 552/990/17 +f 542/971/163 550/986/9 549/991/6 +f 557/992/171 565/1007/171 564/993/172 +f 556/994/172 564/993/172 563/995/100 +f 555/996/100 563/995/100 570/997/173 +f 561/999/10 562/998/173 570/997/173 +f 561/1001/10 569/1059/10 568/1002/174 +f 560/1003/174 568/1002/174 567/1004/175 +f 558/1006/176 566/1008/176 565/1007/171 +f 558/1006/176 559/1005/175 567/1004/175 +f 574/1009/177 582/1021/177 583/1010/2 +f 572/1012/18 580/1023/18 581/1013/13 +f 577/1015/5 585/1025/5 586/1016/19 +f 575/1018/2 583/1060/2 584/1019/178 +f 573/1014/13 581/1013/13 582/1021/177 +f 571/1022/1 579/1024/1 580/1023/18 +f 578/1017/19 586/1016/19 579/1024/1 +f 576/1020/178 584/1019/178 585/1025/5 +o Bolt +v 0.000000 1.281250 -0.062500 +v -0.062500 1.264503 -0.062500 +v -0.108253 1.218750 -0.062500 +v -0.125000 1.156250 -0.062500 +v -0.108253 1.093750 -0.062500 +v -0.062500 1.047997 -0.062500 +v 0.000000 1.031250 -0.062500 +v 0.062500 1.047997 -0.062500 +v 0.108253 1.093750 -0.062500 +v 0.125000 1.156250 -0.062500 +v 0.108253 1.218750 -0.062500 +v 0.062500 1.264503 -0.062500 +v -0.062500 1.264503 -2.750000 +v 0.000000 1.281250 -2.812500 +v -0.108253 1.218750 -2.750000 +v -0.125000 1.156250 -2.750000 +v -0.108253 1.093750 -2.875000 +v -0.062500 1.047997 -2.875000 +v 0.000000 1.031250 -2.875000 +v 0.062500 1.047997 -2.875000 +v 0.108253 1.093750 -2.875000 +v 0.125000 1.156250 -2.875000 +v 0.108253 1.218750 -2.875000 +v 0.062500 1.264503 -2.875000 +v 0.000000 1.343750 -2.812500 +v -0.093750 1.318630 -2.750000 +v -0.162380 1.250000 -2.750000 +v -0.187500 1.156250 -2.750000 +v -0.162380 1.062500 -2.875000 +v -0.093750 0.993870 -2.875000 +v 0.000000 0.968750 -2.875000 +v 0.093750 0.993870 -2.875000 +v 0.162380 1.062500 -2.875000 +v 0.187500 1.156250 -2.875000 +v 0.162380 1.250000 -2.875000 +v 0.093750 1.318630 -2.875000 +v 0.000000 1.281250 -2.875000 +v 0.000000 1.343750 -2.875000 +v -0.093750 1.318630 -3.062500 +v -0.162380 1.250000 -3.062500 +v -0.162380 1.062500 -2.750000 +v -0.187500 1.156250 -3.062500 +v -0.108253 1.093750 -2.750000 +v -0.162380 1.062500 -3.062500 +v -0.093750 0.993870 -3.062500 +v 0.000000 0.968750 -3.062500 +v 0.093750 0.993870 -3.062500 +v 0.162380 1.062500 -3.062500 +v 0.187500 1.156250 -3.062500 +v 0.162380 1.250000 -3.062500 +v 0.093750 1.318630 -3.062500 +v 0.000000 1.343750 -3.062500 +v 0.000000 1.281250 -3.062500 +v -0.062500 1.264503 -3.062500 +v -0.108253 1.218750 -3.062500 +v -0.125000 1.156250 -3.062500 +v -0.108253 1.093750 -3.062500 +v -0.062500 1.047997 -3.062500 +v 0.000000 1.031250 -3.062500 +v 0.062500 1.047997 -3.062500 +v 0.108253 1.093750 -3.062500 +v 0.125000 1.156250 -3.062500 +v 0.108253 1.218750 -3.062500 +v 0.062500 1.264503 -3.062500 +v 0.000000 1.281250 -3.125000 +v -0.062500 1.264503 -3.125000 +v -0.108253 1.218750 -3.125000 +v -0.125000 1.156250 -3.125000 +v -0.108253 1.093750 -3.125000 +v -0.062500 1.047997 -3.125000 +v 0.000000 1.031250 -3.125000 +v 0.062500 1.047997 -3.125000 +v 0.108253 1.093750 -3.125000 +v 0.125000 1.156250 -3.125000 +v 0.108253 1.218750 -3.125000 +v 0.062500 1.264503 -3.125000 +v -0.125000 1.218750 -2.875000 +v -0.125000 1.200444 -2.830806 +v -0.125000 1.156250 -2.812500 +v -0.125000 1.112056 -2.830806 +v -0.125000 1.093750 -2.875000 +v -0.125000 1.112056 -2.919194 +v -0.125000 1.156250 -2.937500 +v -0.125000 1.200444 -2.919194 +v -0.250000 1.218750 -2.875000 +v -0.250000 1.200444 -2.830806 +v -0.250000 1.156250 -2.812500 +v -0.250000 1.112056 -2.830806 +v -0.250000 1.093750 -2.875000 +v -0.250000 1.112056 -2.919194 +v -0.250000 1.156250 -2.937500 +v -0.250000 1.200444 -2.919194 +v -0.303347 1.208643 -2.864892 +v -0.281250 1.194523 -2.824885 +v -0.259153 1.154516 -2.810766 +v -0.259153 1.092016 -2.873266 +v -0.281250 1.106135 -2.913273 +v -0.303347 1.146143 -2.927392 +v -0.312500 1.188603 -2.907352 +v -0.342400 1.181028 -2.837278 +v -0.304126 1.178347 -2.808709 +v -0.265853 1.149778 -2.806028 +v -0.265853 1.087278 -2.868528 +v -0.304127 1.089959 -2.897097 +v -0.342400 1.118528 -2.899778 +v -0.358253 1.156250 -2.875000 +v -0.522877 0.910434 -2.540796 +v -0.561150 0.913115 -2.569365 +v -0.484604 0.881865 -2.538115 +v -0.522877 0.822046 -2.629184 +v -0.484604 0.819365 -2.600615 +v -0.561150 0.850615 -2.631865 +v -0.577003 0.888337 -2.607087 +v -0.468750 0.844143 -2.562893 +v -0.545753 0.894258 -2.524620 +v -0.567851 0.908377 -2.564627 +v -0.523657 0.854251 -2.510501 +v -0.545753 0.805870 -2.613008 +v -0.523656 0.791751 -2.573001 +v -0.567850 0.845877 -2.627127 +v -0.514503 0.811791 -2.530540 +v -0.542588 0.783848 -2.627277 +v -0.501673 0.800552 -2.510351 +v -0.589834 0.899576 -2.627277 +v -0.548918 0.916279 -2.510351 +v -0.667583 0.935343 -2.605181 +v -0.626668 0.952046 -2.488254 +v -0.573092 0.703887 -2.605181 +v -0.532177 0.720591 -2.488254 +v -0.617173 0.753399 -2.663644 +v -0.535342 0.786807 -2.429790 +v -0.664418 0.869127 -2.663644 +v -0.582587 0.902534 -2.429790 +v -0.775837 0.891148 -2.560987 +v -0.734921 0.907852 -2.444060 +v -0.681345 0.659693 -2.560987 +v -0.640430 0.676397 -2.444060 +v -0.725426 0.709205 -2.619450 +v -0.643595 0.742613 -2.385596 +v -0.772672 0.824933 -2.619450 +v -0.690841 0.858340 -2.385596 +v -0.759095 0.695460 -2.538889 +v -0.718180 0.712164 -2.421963 +v -0.806341 0.811187 -2.538889 +v -0.765425 0.827891 -2.421963 +vt 0.762886 0.914773 +vt 0.782568 0.914773 +vt 0.772727 0.931818 +vt 0.818182 0.960227 +vt 0.812500 0.965909 +vt 0.812500 0.960227 +vt 0.704545 0.892045 +vt 0.698864 0.903409 +vt 0.698864 0.892045 +vt 0.732955 0.903409 +vt 0.727273 0.897727 +vt 0.732955 0.897727 +vt 0.801136 0.977273 +vt 0.806818 0.982955 +vt 0.801136 0.982955 +vt 0.801136 0.971591 +vt 0.806818 0.977273 +vt 0.818182 0.954545 +vt 0.812500 0.954545 +vt 0.818182 0.948864 +vt 0.812500 0.948864 +vt 0.812500 0.943182 +vt 0.812500 0.937500 +vt 0.818182 0.943182 +vt 0.818182 0.931818 +vt 0.812500 0.931818 +vt 0.812500 0.994318 +vt 0.818182 1.000000 +vt 0.812500 1.000000 +vt 0.812500 0.988636 +vt 0.818182 0.994318 +vt 0.801136 0.988636 +vt 0.806818 0.988636 +vt 0.715909 0.926136 +vt 0.710227 0.920455 +vt 0.715909 0.920455 +vt 0.795455 0.931818 +vt 0.785613 0.926136 +vt 0.795455 0.909091 +vt 0.721591 0.926136 +vt 0.721591 0.920455 +vt 0.727273 0.920455 +vt 0.732955 0.926136 +vt 0.732955 0.920455 +vt 0.738636 0.926136 +vt 0.738636 0.920455 +vt 0.744318 0.920455 +vt 0.750000 0.926136 +vt 0.750000 0.920455 +vt 0.755682 0.926136 +vt 0.755682 0.920455 +vt 0.761364 0.926136 +vt 0.761364 0.920455 +vt 0.698864 0.920455 +vt 0.693182 0.926136 +vt 0.693182 0.920455 +vt 0.704545 0.926136 +vt 0.704545 0.920455 +vt 0.642045 0.931818 +vt 0.630682 0.920455 +vt 0.642045 0.920455 +vt 0.664773 0.920455 +vt 0.676136 0.914773 +vt 0.676136 0.920455 +vt 0.630682 0.914773 +vt 0.630682 0.931818 +vt 0.625000 0.920455 +vt 0.647727 0.931818 +vt 0.642045 0.903409 +vt 0.642045 0.914773 +vt 0.647727 0.903409 +vt 0.659091 0.914773 +vt 0.647727 0.914773 +vt 0.664773 0.903409 +vt 0.664773 0.914773 +vt 0.681818 0.903409 +vt 0.693182 0.914773 +vt 0.681818 0.914773 +vt 0.647727 0.897727 +vt 0.642045 0.886364 +vt 0.647727 0.886364 +vt 0.676136 0.903409 +vt 0.630682 0.886364 +vt 0.625000 0.897727 +vt 0.625000 0.886364 +vt 0.676136 0.897727 +vt 0.659091 0.903409 +vt 0.664773 0.897727 +vt 0.630682 0.903409 +vt 0.625000 0.914773 +vt 0.625000 0.903409 +vt 0.647727 0.920455 +vt 0.630682 0.897727 +vt 0.642045 0.897727 +vt 0.767045 0.930296 +vt 0.762886 0.926136 +vt 0.761364 0.920455 +vt 0.767045 0.910613 +vt 0.772727 0.909091 +vt 0.778409 0.910613 +vt 0.784091 0.920455 +vt 0.782568 0.926136 +vt 0.778409 0.930296 +vt 0.818182 0.965909 +vt 0.704545 0.903409 +vt 0.727273 0.903409 +vt 0.806818 0.971591 +vt 0.818182 0.937500 +vt 0.818182 0.988636 +vt 0.710227 0.926136 +vt 0.805296 0.926136 +vt 0.801136 0.930296 +vt 0.789773 0.930296 +vt 0.784091 0.920455 +vt 0.785613 0.914773 +vt 0.789773 0.910613 +vt 0.801136 0.910613 +vt 0.805296 0.914773 +vt 0.806818 0.920455 +vt 0.727273 0.926136 +vt 0.744318 0.926136 +vt 0.698864 0.926136 +vt 0.625000 0.931818 +vt 0.693182 0.903409 +vt 0.556818 0.954545 +vt 0.556818 0.948864 +vt 0.556818 0.937500 +vt 0.556818 0.931818 +vt 0.710227 0.892045 +vt 0.556818 0.960227 +vt 0.556818 0.943182 +vt 0.556818 0.977273 +vt 0.556818 0.971591 +vt 0.556818 1.000000 +vt 0.556818 0.994318 +vt 0.556818 0.982955 +vt 0.806818 0.965909 +vt 0.732955 0.892045 +vt 0.727273 0.892045 +vt 0.556818 0.965909 +vt 0.715909 0.892045 +vt 0.721591 0.892045 +vt 0.698864 0.903409 +vt 0.744318 0.903409 +vt 0.750000 0.903409 +vt 0.693182 0.903409 +vt 0.738636 0.903409 +vt 0.755682 0.903409 +vt 0.761364 0.903409 +vt 0.732955 0.903409 +vt 0.715909 0.931818 +vt 0.744318 0.931818 +vt 0.761364 0.931818 +vt 0.710227 0.931818 +vt 0.738636 0.931818 +vt 0.727273 0.931818 +vt 0.755682 0.931818 +vt 0.704545 0.931818 +vt 0.732955 0.931818 +vt 0.721591 0.931818 +vt 0.750000 0.931818 +vt 0.698864 0.931818 +vt 0.556818 0.988636 +vt 0.625000 0.897727 +vt 0.613636 0.892045 +vt 0.625000 0.892045 +vt 0.625000 0.909091 +vt 0.613636 0.903409 +vt 0.625000 0.903409 +vt 0.625000 0.914773 +vt 0.613636 0.909091 +vt 0.625000 0.926136 +vt 0.613636 0.920455 +vt 0.625000 0.920455 +vt 0.613636 0.886364 +vt 0.625000 0.886364 +vt 0.613636 0.897727 +vt 0.613636 0.914773 +vt 0.625000 0.931818 +vt 0.613636 0.926136 +vt 0.607954 0.914773 +vt 0.613636 0.931818 +vt 0.607954 0.926136 +vt 0.607954 0.903409 +vt 0.607954 0.909091 +vt 0.607954 0.920455 +vt 0.607954 0.897727 +vt 0.602273 0.914773 +vt 0.602273 0.909091 +vt 0.602273 0.920455 +vt 0.602273 0.897727 +vt 0.602273 0.931818 +vt 0.602273 0.926136 +vt 0.602273 0.903409 +vt 0.610795 0.892045 +vt 0.610795 0.886364 +vt 0.607954 0.892045 +vt 0.613636 0.892045 +vt 0.605114 0.886364 +vt 0.602273 0.892045 +vt 0.605114 0.892045 +vt 0.562500 0.892045 +vt 0.602273 0.892045 +vt 0.562500 0.909091 +vt 0.562500 0.920455 +vt 0.562500 0.897727 +vt 0.562500 0.886364 +vt 0.602273 0.886364 +vt 0.562500 0.914773 +vt 0.562500 0.931818 +vt 0.562500 0.926136 +vt 0.562500 0.903409 +vt 0.556818 0.920455 +vt 0.556818 0.897727 +vt 0.556818 0.886364 +vt 0.556818 0.926136 +vt 0.556818 0.903409 +vt 0.556818 0.892045 +vt 0.556818 0.909091 +vt 0.693182 0.931818 +vt 0.607954 0.931818 +vt 0.556818 0.931818 +vn 0.0000 0.0000 1.0000 +vn 0.5000 -0.8660 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.8660 0.3536 -0.3536 +vn 0.3451 0.9047 -0.2500 +vn 0.8796 -0.4047 -0.2500 +vn 0.8438 0.3445 0.4114 +vn 0.3809 0.1555 -0.9114 +vn 0.3780 -0.9258 0.0000 +vn -0.3273 -0.1336 -0.9354 +vn -0.3780 0.9258 0.0000 +vn 0.3273 0.1336 0.9354 +vn -0.8438 -0.3445 -0.4114 +vn -0.0358 0.7491 0.6614 +vn -0.3809 -0.1555 0.9114 +vn 0.4708 0.8158 0.3359 +vn -0.5292 0.4076 0.7442 +vn 0.0928 0.6615 -0.7442 +vn -0.4987 0.5602 -0.6614 +vn -0.9072 0.2532 -0.3359 +vn -0.8796 0.4047 0.2500 +vn 0.9072 -0.2532 0.3359 +vn 0.4987 -0.5602 0.6614 +vn 0.5292 -0.4075 -0.7442 +vn 0.0358 -0.7491 -0.6614 +vn -0.8660 -0.3536 0.3536 +vn -0.0928 -0.6615 0.7442 +vn -0.4708 -0.8158 -0.3359 +vn -0.3451 -0.9047 0.2500 +vn 0.8660 0.5000 0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -1.0000 -0.0000 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 -0.0000 +vn -0.4538 0.8911 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +vn 0.2588 0.9659 0.0000 +vn 0.1569 0.9876 0.0000 +vn 0.7071 0.0000 0.7071 +vn 0.6293 0.1104 0.7693 +vn 0.5576 0.1963 0.8065 +vn 0.4804 0.2773 0.8321 +vn -0.0000 1.0000 0.0000 +vn -0.5507 0.8347 0.0000 +vn -0.8181 -0.5751 -0.0000 +vn -0.0890 0.9960 -0.0000 +vn -0.8660 -0.5000 0.0000 +vn -0.9071 -0.4210 0.0000 +vn 0.5000 -0.6124 0.6124 +vn 0.0000 -0.7071 0.7071 +vn -0.0085 0.7292 0.6843 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.0950 0.9953 -0.0202 +vn 0.0000 -0.7071 -0.7071 +vn -0.0950 0.0202 -0.9953 +vn 0.0911 -0.9956 -0.0242 +vn 0.0911 0.0242 0.9956 +vn -0.1266 0.7014 -0.7014 +vn -0.0085 -0.6843 -0.7292 +vn -0.5000 0.6124 -0.6124 +vn -0.0318 -0.6668 -0.7446 +vn -0.0318 0.7446 0.6668 +vn -0.3681 0.9294 0.0277 +vn -0.3681 -0.0277 -0.9294 +vn 0.3362 0.1116 0.9352 +vn -0.7958 0.4282 -0.4282 +vn -0.5743 0.7996 0.1754 +vn -0.5743 -0.1754 -0.7996 +vn 0.5493 0.2113 0.8085 +vn 0.5493 -0.8085 -0.2113 +vn -0.0232 -0.6903 -0.7232 +vn -0.0232 0.7232 0.6903 +vn 0.3362 -0.9352 -0.1116 +vn 0.7958 -0.4282 0.4282 +vn -0.5493 0.8085 0.2113 +vn -0.5493 -0.2113 -0.8085 +vn 0.5743 0.1754 0.7996 +vn 0.5743 -0.7996 -0.1754 +vn -0.8510 0.3713 -0.3713 +vn 0.0232 -0.7232 -0.6903 +vn 0.0232 0.6903 0.7232 +vn -0.4844 -0.1726 -0.8576 +vn 0.5287 0.0957 0.8434 +vn 0.5287 -0.8434 -0.0956 +vn 0.0465 -0.7385 -0.6727 +vn 0.0465 0.6727 0.7385 +vn 0.7071 -0.5000 0.5000 +vn -0.4844 0.8576 0.1725 +vn -0.7071 -0.7071 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +s off +f 607/1061/180 611/1062/180 603/1063/180 +f 638/1064/180 639/1065/180 626/1066/180 +f 643/1067/181 619/1068/181 645/1069/181 +f 639/1070/182 627/1071/182 616/1072/182 +f 617/1073/180 630/1074/180 618/1075/180 +f 615/1076/180 629/1077/180 617/1073/180 +f 637/1078/180 626/1066/180 625/1079/180 +f 636/1080/180 625/1079/180 624/1081/180 +f 623/1082/180 636/1080/180 624/1081/180 +f 622/1083/180 635/1084/180 623/1082/180 +f 633/1085/180 622/1083/180 621/1086/180 +f 620/1087/180 633/1088/180 621/1089/180 +f 619/1090/180 632/1091/180 620/1087/180 +f 645/1092/180 630/1074/180 643/1093/180 +f 657/1094/183 644/1095/183 642/1096/183 +f 667/1097/183 677/1098/183 673/1099/183 +f 656/1100/183 642/1096/183 641/1101/183 +f 654/1102/183 656/1100/183 641/1101/183 +f 666/1103/183 654/1102/183 653/1104/183 +f 665/1105/183 653/1104/183 652/1106/183 +f 651/1107/183 665/1105/183 652/1106/183 +f 663/1108/183 651/1107/183 650/1109/183 +f 662/1110/183 650/1109/183 649/1111/183 +f 661/1112/183 649/1111/183 648/1113/183 +f 647/1114/183 661/1115/183 648/1116/183 +f 644/1095/183 659/1117/183 646/1118/183 +f 659/1117/183 647/1114/183 646/1118/183 +f 726/1119/184 725/1120/184 724/1121/184 +f 726/1122/185 729/1123/185 727/1124/185 +f 731/1125/186 724/1121/186 725/1120/186 +f 727/1126/187 733/1127/187 725/1120/187 +f 724/1121/188 734/1128/188 726/1119/188 +f 731/1125/189 738/1129/189 730/1130/189 +f 740/1131/190 734/1132/190 732/1133/190 +f 736/1134/191 729/1123/191 728/1135/191 +f 743/1136/192 733/1137/192 735/1138/192 +f 740/1139/193 746/1140/193 742/1141/193 +f 737/1142/194 735/1138/194 729/1123/194 +f 747/1143/195 741/1144/195 743/1145/195 +f 727/1124/196 729/1123/196 735/1138/196 +f 737/1142/197 747/1146/197 743/1136/197 +f 726/1122/198 734/1132/198 728/1135/198 +f 742/1147/199 728/1135/199 734/1132/199 +f 746/1148/200 736/1134/200 742/1147/200 +f 736/1134/201 747/1146/201 737/1142/201 +f 725/1120/202 733/1127/202 731/1125/202 +f 739/1149/203 733/1150/203 741/1151/203 +f 724/1121/204 730/1130/204 732/1152/204 +f 738/1129/205 732/1133/205 730/1130/205 +f 746/1140/206 745/1153/206 747/1143/206 +f 741/1144/207 745/1153/207 739/1149/207 +f 740/1139/208 738/1129/208 744/1154/208 +f 739/1149/209 744/1154/209 738/1129/209 +f 603/1063/180 604/1155/180 605/1156/180 +f 605/1156/180 606/1157/180 603/1063/180 +f 606/1157/180 607/1061/180 603/1063/180 +f 607/1061/180 608/1158/180 611/1062/180 +f 608/1158/180 609/1159/180 611/1062/180 +f 609/1159/180 610/1160/180 611/1062/180 +f 611/1062/180 612/1161/180 603/1063/180 +f 612/1161/180 613/1162/180 603/1063/180 +f 613/1162/180 614/1163/180 603/1063/180 +f 638/1064/180 640/1164/180 639/1065/180 +f 643/1067/181 631/1165/181 619/1068/181 +f 639/1070/182 640/1166/182 627/1071/182 +f 617/1073/180 629/1077/180 630/1074/180 +f 615/1076/180 628/1167/180 629/1077/180 +f 637/1078/180 638/1064/180 626/1066/180 +f 636/1080/180 637/1078/180 625/1079/180 +f 623/1082/180 635/1084/180 636/1080/180 +f 622/1083/180 634/1168/180 635/1084/180 +f 633/1085/180 634/1168/180 622/1083/180 +f 620/1087/180 632/1091/180 633/1088/180 +f 619/1090/180 631/1169/180 632/1091/180 +f 645/1092/180 618/1075/180 630/1074/180 +f 657/1094/183 658/1170/183 644/1095/183 +f 669/1171/183 668/1172/183 667/1097/183 +f 667/1097/183 678/1173/183 677/1098/183 +f 677/1098/183 676/1174/183 675/1175/183 +f 675/1175/183 674/1176/183 677/1098/183 +f 674/1176/183 673/1099/183 677/1098/183 +f 673/1099/183 672/1177/183 669/1171/183 +f 672/1177/183 671/1178/183 669/1171/183 +f 671/1178/183 670/1179/183 669/1171/183 +f 669/1171/183 667/1097/183 673/1099/183 +f 656/1100/183 657/1094/183 642/1096/183 +f 654/1102/183 655/1180/183 656/1100/183 +f 666/1103/183 655/1180/183 654/1102/183 +f 665/1105/183 666/1103/183 653/1104/183 +f 651/1107/183 664/1181/183 665/1105/183 +f 663/1108/183 664/1181/183 651/1107/183 +f 662/1110/183 663/1108/183 650/1109/183 +f 661/1112/183 662/1110/183 649/1111/183 +f 647/1114/183 660/1182/183 661/1115/183 +f 644/1095/183 658/1170/183 659/1117/183 +f 659/1117/183 660/1182/183 647/1114/183 +f 726/1119/184 727/1126/184 725/1120/184 +f 726/1122/185 728/1135/185 729/1123/185 +f 731/1125/186 730/1130/186 724/1121/186 +f 727/1126/187 735/1183/187 733/1127/187 +f 724/1121/188 732/1152/188 734/1128/188 +f 731/1125/189 739/1149/189 738/1129/189 +f 740/1131/190 742/1147/190 734/1132/190 +f 736/1134/191 737/1142/191 729/1123/191 +f 743/1136/192 741/1184/192 733/1137/192 +f 740/1139/193 744/1154/193 746/1140/193 +f 737/1142/194 743/1136/194 735/1138/194 +f 747/1143/195 745/1153/195 741/1144/195 +f 742/1147/199 736/1134/199 728/1135/199 +f 736/1134/201 746/1148/201 747/1146/201 +f 739/1149/203 731/1125/203 733/1150/203 +f 738/1129/205 740/1131/205 732/1133/205 +f 746/1140/206 744/1154/206 745/1153/206 +f 739/1149/209 745/1153/209 744/1154/209 +s 1 +f 624/1081/182 613/1185/210 612/1186/182 +f 621/1086/211 610/1187/181 609/1188/211 +f 630/1189/212 642/1096/213 644/1095/212 +f 625/1079/210 614/1190/214 613/1185/210 +f 622/1083/181 611/1191/215 610/1187/181 +f 615/1076/216 605/1192/213 604/1193/217 +f 623/1082/215 612/1186/182 611/1191/215 +f 620/1087/218 609/1194/211 608/1195/218 +f 617/1073/213 606/1196/212 605/1192/213 +f 626/1066/214 639/1065/219 616/1197/220 +f 616/1072/221 627/1071/222 615/1198/223 +f 615/1198/223 627/1071/222 628/1199/224 +f 603/1200/225 615/1076/216 604/1193/217 +f 641/1101/217 629/1201/213 628/1202/226 +f 645/1092/227 620/1087/218 608/1195/218 +f 628/1202/226 640/1166/228 641/1101/217 +f 646/1118/229 632/1203/218 631/1165/230 +f 650/1109/215 636/1204/182 635/1205/215 +f 647/1114/218 633/1206/211 632/1203/218 +f 651/1107/182 637/1207/210 636/1204/182 +f 648/1113/211 634/1208/181 633/1209/211 +f 637/1207/210 653/1104/214 638/1210/214 +f 649/1111/181 635/1205/215 634/1208/181 +f 653/1104/214 640/1166/228 638/1210/214 +f 644/1095/212 646/1118/229 631/1165/230 +f 669/1211/213 658/1170/212 657/1094/213 +f 676/1212/182 665/1105/210 664/1181/182 +f 673/1213/211 662/1110/181 661/1112/211 +f 670/1214/212 659/1117/229 658/1170/212 +f 677/1215/210 666/1103/214 665/1105/210 +f 667/1216/225 656/1100/217 655/1180/225 +f 674/1217/181 663/1108/215 662/1110/181 +f 671/1218/229 660/1182/218 659/1117/229 +f 678/1219/214 655/1180/225 666/1103/214 +f 668/1220/217 657/1094/213 656/1100/217 +f 675/1221/215 664/1181/182 663/1108/215 +f 672/1222/218 661/1115/211 660/1182/218 +f 606/1196/212 645/1092/227 607/1223/229 +f 681/1224/180 690/1225/231 682/1226/232 +f 679/1227/225 688/1228/233 680/1229/234 +f 686/1230/235 687/1231/236 679/1227/225 +f 684/1232/237 693/1233/238 685/1234/183 +f 682/1226/232 691/1235/239 683/1236/211 +f 680/1229/234 689/1237/240 681/1224/180 +f 685/1234/183 694/1238/241 686/1230/235 +f 683/1239/211 692/1240/242 684/1232/237 +f 693/1233/238 701/1241/243 694/1238/241 +f 691/1242/239 699/1243/244 692/1240/242 +f 687/1231/236 696/1244/245 688/1228/233 +f 694/1238/241 695/1245/246 687/1231/236 +f 693/1233/238 699/1243/244 700/1246/247 +f 688/1228/233 697/1247/248 689/1237/240 +f 695/1245/246 708/1248/249 702/1249/250 +f 699/1243/244 707/1250/251 700/1246/247 +f 696/1244/245 704/1251/252 697/1247/248 +f 700/1246/247 708/1248/249 701/1241/243 +f 699/1243/244 705/1252/253 706/1253/254 +f 696/1244/245 702/1249/250 703/1254/255 +f 689/1237/240 697/1247/248 690/1255/231 +f 690/1256/231 698/1257/256 691/1258/239 +f 698/1257/256 690/1259/231 705/1260/253 +f 697/1247/248 704/1251/252 690/1261/231 +f 704/1251/252 716/1262/257 690/1263/231 +f 708/1248/249 710/1264/258 702/1249/250 +f 706/1253/254 714/1265/259 707/1250/251 +f 703/1254/255 711/1266/260 704/1251/252 +f 690/1263/231 713/1267/261 705/1268/253 +f 707/1250/251 715/1269/262 708/1248/249 +f 706/1253/254 713/1270/261 712/1271/263 +f 702/1249/250 709/1272/264 703/1254/255 +f 712/1271/263 722/1273/265 714/1265/259 +f 709/1272/264 719/1274/266 711/1266/260 +f 716/1262/257 721/1275/267 713/1267/261 +f 713/1270/261 720/1276/268 712/1271/263 +f 710/1264/258 717/1277/269 709/1272/264 +f 711/1266/260 723/1278/270 716/1262/257 +f 715/1269/262 718/1279/271 710/1264/258 +f 714/1265/259 722/1273/265 715/1269/262 +f 624/1081/182 625/1079/210 613/1185/210 +f 621/1086/211 622/1083/181 610/1187/181 +f 630/1189/212 629/1201/213 642/1096/213 +f 625/1079/210 626/1066/214 614/1190/214 +f 622/1083/181 623/1082/215 611/1191/215 +f 615/1076/216 617/1073/213 605/1192/213 +f 623/1082/215 624/1081/182 612/1186/182 +f 620/1087/218 621/1089/211 609/1194/211 +f 617/1073/213 618/1075/212 606/1196/212 +f 616/1197/220 603/1200/225 614/1190/214 +f 614/1190/214 626/1066/214 616/1197/220 +f 603/1200/225 616/1197/220 615/1076/216 +f 641/1101/217 642/1096/213 629/1201/213 +f 608/1195/218 607/1223/229 645/1092/227 +f 645/1092/227 619/1090/272 620/1087/218 +f 627/1071/273 640/1166/228 628/1202/226 +f 640/1166/228 654/1102/225 641/1101/217 +f 646/1118/229 647/1114/218 632/1203/218 +f 650/1109/215 651/1107/182 636/1204/182 +f 647/1114/218 648/1116/211 633/1206/211 +f 651/1107/182 652/1106/210 637/1207/210 +f 648/1113/211 649/1111/181 634/1208/181 +f 637/1207/210 652/1106/210 653/1104/214 +f 649/1111/181 650/1109/215 635/1205/215 +f 653/1104/214 654/1102/225 640/1166/228 +f 631/1165/230 643/1067/274 630/1189/212 +f 630/1189/212 644/1095/212 631/1165/230 +f 669/1211/213 670/1214/212 658/1170/212 +f 676/1212/182 677/1215/210 665/1105/210 +f 673/1213/211 674/1217/181 662/1110/181 +f 670/1214/212 671/1218/229 659/1117/229 +f 677/1215/210 678/1219/214 666/1103/214 +f 667/1216/225 668/1220/217 656/1100/217 +f 674/1217/181 675/1221/215 663/1108/215 +f 671/1218/229 672/1222/218 660/1182/218 +f 678/1219/214 667/1216/225 655/1180/225 +f 668/1220/217 669/1211/213 657/1094/213 +f 675/1221/215 676/1212/182 664/1181/182 +f 672/1222/218 673/1280/211 661/1115/211 +f 606/1196/212 618/1075/212 645/1092/227 +f 681/1224/180 689/1237/240 690/1225/231 +f 679/1227/225 687/1231/236 688/1228/233 +f 686/1230/235 694/1238/241 687/1231/236 +f 684/1232/237 692/1240/242 693/1233/238 +f 682/1226/232 690/1225/231 691/1235/239 +f 680/1229/234 688/1228/233 689/1237/240 +f 685/1234/183 693/1233/238 694/1238/241 +f 683/1239/211 691/1242/239 692/1240/242 +f 693/1233/238 700/1246/247 701/1241/243 +f 691/1242/239 698/1281/256 699/1243/244 +f 687/1231/236 695/1245/246 696/1244/245 +f 694/1238/241 701/1241/243 695/1245/246 +f 693/1233/238 692/1240/242 699/1243/244 +f 688/1228/233 696/1244/245 697/1247/248 +f 695/1245/246 701/1241/243 708/1248/249 +f 699/1243/244 706/1253/254 707/1250/251 +f 696/1244/245 703/1254/255 704/1251/252 +f 700/1246/247 707/1250/251 708/1248/249 +f 699/1243/244 698/1281/256 705/1252/253 +f 696/1244/245 695/1245/246 702/1249/250 +f 704/1251/252 711/1266/260 716/1262/257 +f 708/1248/249 715/1269/262 710/1264/258 +f 706/1253/254 712/1271/263 714/1265/259 +f 703/1254/255 709/1272/264 711/1266/260 +f 690/1263/231 716/1262/257 713/1267/261 +f 707/1250/251 714/1265/259 715/1269/262 +f 706/1253/254 705/1252/253 713/1270/261 +f 702/1249/250 710/1264/258 709/1272/264 +f 712/1271/263 720/1276/268 722/1273/265 +f 709/1272/264 717/1277/269 719/1274/266 +f 716/1262/257 723/1278/270 721/1275/267 +f 713/1270/261 721/1282/267 720/1276/268 +f 710/1264/258 718/1279/271 717/1277/269 +f 711/1266/260 719/1274/266 723/1278/270 +o Stock +v -0.250000 0.093750 -1.750000 +v -0.250000 -0.031250 -2.937500 +v -0.250000 0.531250 -1.750000 +v -0.250000 0.718750 -1.812500 +v -0.250000 0.781250 -2.000000 +v -0.250000 0.781250 -3.062500 +v -0.062500 0.343750 -4.375000 +v -0.062500 0.468750 -4.500000 +v -0.062500 0.281250 -4.125000 +v -0.062500 0.281250 -4.187500 +v -0.250000 -0.031250 -7.812500 +v -0.312500 -0.156250 -7.937500 +v -0.250000 -0.218750 -3.437500 +v -0.250000 -0.406250 -3.687500 +v -0.250000 -0.656250 -3.812500 +v -0.250000 -0.781250 -4.562500 +v -0.250000 -2.093750 -7.500000 +v -0.250000 -2.031250 -7.625000 +v -0.312500 0.718750 -3.062500 +v -0.312500 0.718750 -2.000000 +v -0.312500 0.531250 -1.812500 +v -0.312500 0.656250 -1.875000 +v -0.312500 0.156250 -1.812500 +v -0.312500 0.031250 -2.937500 +v -0.312500 -0.156250 -3.437500 +v -0.312500 -0.343750 -3.687500 +v -0.312500 -0.593750 -3.812500 +v -0.312500 -0.718750 -4.562500 +v -0.312500 -2.031250 -7.500000 +v -0.312500 -1.968750 -7.625000 +v 0.250000 0.093750 -1.750000 +v 0.250000 -0.031250 -2.937500 +v 0.250000 0.531250 -1.750000 +v 0.250000 0.718750 -1.812500 +v 0.250000 0.781250 -2.000000 +v 0.250000 0.781250 -3.062500 +v 0.062500 0.343750 -4.375000 +v 0.062500 0.468750 -4.500000 +v 0.062500 0.281250 -4.125000 +v 0.062500 0.281250 -4.187500 +v 0.250000 -0.031250 -7.812500 +v 0.312500 -0.156250 -7.937500 +v 0.250000 -0.218750 -3.437500 +v 0.250000 -0.406250 -3.687500 +v 0.250000 -0.656250 -3.812500 +v 0.250000 -0.781250 -4.562500 +v 0.250000 -2.093750 -7.500000 +v 0.250000 -2.031250 -7.625000 +v 0.312500 0.718750 -3.062500 +v 0.312500 0.718750 -2.000000 +v 0.312500 0.531250 -1.812500 +v 0.312500 0.656250 -1.875000 +v 0.312500 0.156250 -1.812500 +v 0.312500 0.031250 -2.937500 +v 0.312500 -0.156250 -3.437500 +v 0.312500 -0.343750 -3.687500 +v 0.312500 -0.593750 -3.812500 +v 0.312500 -0.718750 -4.562500 +v 0.312500 -2.031250 -7.500000 +v 0.312500 -1.968750 -7.625000 +v 0.187500 0.218750 -4.500000 +v -0.187500 0.218750 -4.500000 +v -0.312500 0.031250 -4.125000 +v -0.187500 0.218750 -4.375000 +v -0.312500 0.031250 -4.187500 +v 0.187500 0.218750 -4.375000 +v 0.312500 0.031250 -4.125000 +v 0.312500 0.031250 -4.187500 +v -0.312500 0.312500 -2.281250 +v -0.312500 0.390625 -2.260316 +v -0.312500 0.447816 -2.203125 +v -0.312500 0.468750 -2.125000 +v -0.312500 0.447816 -2.046875 +v -0.312500 0.390625 -1.989684 +v -0.312500 0.312500 -1.968750 +v -0.312500 0.234375 -1.989684 +v -0.312500 0.177184 -2.046875 +v -0.312500 0.156250 -2.125000 +v -0.312500 0.177184 -2.203125 +v -0.312500 0.234375 -2.260316 +v -0.375000 0.312500 -2.218750 +v -0.375000 0.359375 -2.206190 +v -0.375000 0.393690 -2.171875 +v -0.375000 0.406250 -2.125000 +v -0.375000 0.393690 -2.078125 +v -0.375000 0.359375 -2.043810 +v -0.375000 0.312500 -2.031250 +v -0.375000 0.265625 -2.043810 +v -0.375000 0.231310 -2.078125 +v -0.375000 0.218750 -2.125000 +v -0.375000 0.231310 -2.171875 +v -0.375000 0.265625 -2.206190 +v -0.250000 -1.968750 -7.625000 +v 0.250000 -1.968750 -7.625000 +v 0.312500 0.312500 -2.281250 +v 0.312500 0.390625 -2.260316 +v 0.312500 0.447816 -2.203125 +v 0.312500 0.468750 -2.125000 +v 0.312500 0.447816 -2.046875 +v 0.312500 0.390625 -1.989684 +v 0.312500 0.312500 -1.968750 +v 0.312500 0.234375 -1.989684 +v 0.312500 0.177184 -2.046875 +v 0.312500 0.156250 -2.125000 +v 0.312500 0.177184 -2.203125 +v 0.312500 0.234375 -2.260316 +v 0.375000 0.312500 -2.218750 +v 0.375000 0.359375 -2.206190 +v 0.375000 0.393690 -2.171875 +v 0.375000 0.406250 -2.125000 +v 0.375000 0.393690 -2.078125 +v 0.375000 0.359375 -2.043810 +v 0.375000 0.312500 -2.031250 +v 0.375000 0.265625 -2.043810 +v 0.375000 0.231310 -2.078125 +v 0.375000 0.218750 -2.125000 +v 0.375000 0.231310 -2.171875 +v 0.375000 0.265625 -2.206190 +v -0.250000 -1.968750 -7.562500 +v 0.250000 -1.968750 -7.562500 +v -0.250000 -0.156250 -7.875000 +v 0.250000 -0.156250 -7.875000 +v -0.250000 0.718750 -3.062500 +v 0.250000 0.718750 -3.062500 +v -0.062500 0.218750 -4.125000 +v 0.062500 0.218750 -4.125000 +v -0.062500 0.343750 -4.500000 +v 0.062500 0.343750 -4.500000 +vt 0.004261 0.532949 +vt 0.012784 0.532949 +vt 0.012784 0.518187 +vt 0.012784 0.532949 +vt 0.004261 0.532949 +vt 0.004261 0.518187 +vt 0.488636 0.562500 +vt 0.454545 0.551136 +vt 0.488636 0.551136 +vt 0.585227 0.534091 +vt 0.585227 0.579545 +vt 0.015904 0.529830 +vt 0.017045 0.525568 +vt 0.015904 0.521307 +vt 0.008523 0.517045 +vt 0.004261 0.518187 +vt 0.001142 0.521307 +vt 0.000000 0.525568 +vt 0.001142 0.529830 +vt 0.008523 0.534091 +vt 0.017045 0.525568 +vt 0.015904 0.529830 +vt 0.008523 0.534091 +vt 0.001142 0.529830 +vt 0.000000 0.525568 +vt 0.001142 0.521307 +vt 0.008523 0.517045 +vt 0.012784 0.518187 +vt 0.015904 0.521307 +vt 0.454545 0.562500 +vt 0.119318 0.613636 +vt 0.153409 0.607955 +vt 0.159091 0.613636 +vt 0.109375 0.607955 +vt 0.107955 0.613636 +vt 0.096591 0.613636 +vt 0.106534 0.607955 +vt 0.000000 0.607955 +vt 0.096591 0.607955 +vt 0.267045 0.613636 +vt 0.164773 0.607955 +vt 0.267045 0.607955 +vt 0.312500 0.607955 +vt 0.312500 0.613636 +vt 0.340909 0.607955 +vt 0.340909 0.613636 +vt 0.363636 0.607955 +vt 0.363636 0.613636 +vt 0.000000 0.607955 +vt 0.068182 0.602273 +vt 0.068182 0.607955 +vt 0.357955 0.602273 +vt 0.357955 0.607955 +vt 0.369318 0.607955 +vt 0.369318 0.602273 +vt 0.153409 0.625000 +vt 0.119318 0.619318 +vt 0.159091 0.619318 +vt 0.109375 0.625000 +vt 0.107955 0.619318 +vt 0.106534 0.625000 +vt 0.096591 0.619318 +vt 0.000000 0.625000 +vt 0.096591 0.625000 +vt 0.267045 0.619318 +vt 0.164773 0.625000 +vt 0.312500 0.625000 +vt 0.312500 0.619318 +vt 0.340909 0.625000 +vt 0.340909 0.619318 +vt 0.363636 0.625000 +vt 0.363636 0.619318 +vt 0.068182 0.619318 +vt 0.000000 0.613636 +vt 0.068182 0.613636 +vt 0.357955 0.619318 +vt 0.357955 0.613636 +vt 0.369318 0.613636 +vt 0.170455 0.454545 +vt 0.181818 0.505682 +vt 0.170455 0.511364 +vt 0.482955 0.488636 +vt 0.181818 0.460227 +vt 0.482955 0.477273 +vt 0.500000 0.488636 +vt 0.500000 0.477273 +vt 0.517045 0.488636 +vt 0.517045 0.477273 +vt 0.522727 0.488636 +vt 0.522727 0.477273 +vt 0.244318 0.977273 +vt 0.244318 0.954545 +vt 0.545455 0.931818 +vt 0.244318 0.977273 +vt 0.545455 0.931818 +vt 0.244318 0.954545 +vt 0.522727 0.460227 +vt 0.630682 0.454545 +vt 0.630682 0.460227 +vt 0.500000 0.460227 +vt 0.517045 0.443182 +vt 0.005682 0.994318 +vt 0.017045 1.000000 +vt 0.000000 0.982955 +vt 0.000000 0.948864 +vt 0.102273 0.937500 +vt 0.113636 1.000000 +vt 0.147727 0.920455 +vt 0.210227 0.937500 +vt 0.170455 0.903409 +vt 0.181818 0.880682 +vt 0.215909 0.937500 +vt 0.250000 0.869318 +vt 0.556818 0.920455 +vt 0.517045 0.750000 +vt 0.528409 0.755682 +vt 0.232955 0.954545 +vt 0.232955 0.954545 +vt 0.500000 0.505682 +vt 0.517045 0.522727 +vt 0.630682 0.505682 +vt 0.630682 0.511364 +vt 0.522727 0.505682 +vt 0.522727 0.539773 +vt 0.522727 0.426136 +vt 0.005682 0.994318 +vt -0.000000 0.982955 +vt 0.017045 1.000000 +vt -0.000000 0.948864 +vt 0.102273 0.937500 +vt 0.113636 1.000000 +vt 0.147727 0.920455 +vt 0.210227 0.937500 +vt 0.170455 0.903409 +vt 0.181818 0.880682 +vt 0.215909 0.937500 +vt 0.556818 0.920455 +vt 0.250000 0.869318 +vt 0.517045 0.750000 +vt 0.056818 0.534091 +vt 0.051136 0.528409 +vt 0.056818 0.528409 +vt 0.062500 0.528409 +vt 0.068182 0.534091 +vt 0.068182 0.528409 +vt 0.073864 0.534091 +vt 0.073864 0.528409 +vt 0.079545 0.534091 +vt 0.079545 0.528409 +vt 0.085227 0.534091 +vt 0.085227 0.528409 +vt 0.022727 0.528409 +vt 0.017045 0.534091 +vt 0.017045 0.528409 +vt 0.028409 0.528409 +vt 0.022727 0.534091 +vt 0.034091 0.528409 +vt 0.028409 0.534091 +vt 0.039773 0.528409 +vt 0.034091 0.534091 +vt 0.051136 0.534091 +vt 0.045455 0.528409 +vt 0.039773 0.534091 +vt 0.005682 0.511364 +vt 0.000000 0.505682 +vt 0.005682 0.505682 +vt 0.005682 0.454545 +vt 0.005682 0.460227 +vt 0.000000 0.460227 +vt 0.051136 0.534091 +vt 0.056818 0.528409 +vt 0.056818 0.534091 +vt 0.062500 0.534091 +vt 0.062500 0.528409 +vt 0.068182 0.528409 +vt 0.068182 0.534091 +vt 0.073864 0.528409 +vt 0.073864 0.534091 +vt 0.079545 0.528409 +vt 0.079545 0.534091 +vt 0.085227 0.528409 +vt 0.085227 0.534091 +vt 0.022727 0.534091 +vt 0.017045 0.528409 +vt 0.022727 0.528409 +vt 0.028409 0.534091 +vt 0.028409 0.528409 +vt 0.034091 0.534091 +vt 0.034091 0.528409 +vt 0.039773 0.534091 +vt 0.039773 0.528409 +vt 0.045455 0.534091 +vt 0.051136 0.528409 +vt 0.045455 0.528409 +vt 0.511364 0.579545 +vt 0.505682 0.579545 +vt 0.511364 0.573864 +vt 0.511364 0.579545 +vt 0.511364 0.573864 +vt 0.505682 0.579545 +vt 0.005682 0.534091 +vt 0.000000 0.579545 +vt 0.000000 0.534091 +vt 0.170455 0.579545 +vt 0.005682 0.579545 +vt 0.590909 0.534091 +vt 0.590909 0.579545 +vt 0.170455 0.534091 +vt 0.005682 0.823864 +vt 0.022727 0.829545 +vt 0.000000 0.806818 +vt 0.119318 0.823864 +vt 0.107955 0.755682 +vt 0.000000 0.767045 +vt 0.176136 0.721591 +vt 0.153409 0.738636 +vt 0.215909 0.778409 +vt 0.187500 0.698864 +vt 0.255682 0.687500 +vt 0.250000 0.789773 +vt 0.534091 0.744318 +vt 0.500000 0.568182 +vt 0.005682 0.823864 +vt 0.000000 0.806818 +vt 0.022727 0.829545 +vt 0.119318 0.823864 +vt 0.119318 0.829545 +vt 0.107955 0.755682 +vt 0.000000 0.767045 +vt 0.153409 0.738636 +vt 0.215909 0.778409 +vt 0.176136 0.721591 +vt 0.187500 0.698864 +vt 0.255682 0.687500 +vt 0.250000 0.789773 +vt 0.534091 0.744318 +vt 0.500000 0.568182 +vt 0.119318 0.607955 +vt 0.117898 0.607955 +vt 0.098011 0.607955 +vt 0.000000 0.613636 +vt 0.000000 0.602273 +vt 0.119318 0.625000 +vt 0.117898 0.625000 +vt 0.098011 0.625000 +vt 0.000000 0.619318 +vt 0.267045 0.625000 +vt 0.000000 0.619318 +vt 0.369318 0.619318 +vt 0.522727 0.443182 +vt 0.522727 0.522727 +vt 0.528409 0.755682 +vt 0.062500 0.534091 +vt 0.045455 0.534091 +vt 0.017045 0.534091 +vt 0.119318 0.829545 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.9487 -0.3162 +vn 0.0000 -0.9048 0.4258 +vn -0.7202 0.1292 0.6816 +vn -0.7071 0.0000 0.7071 +vn -0.7863 0.4369 0.4369 +vn -0.8165 0.4082 0.4082 +vn -0.7202 0.6816 0.1292 +vn -0.6870 0.6870 -0.2366 +vn -0.6949 0.6949 0.1848 +vn -0.6969 -0.6951 0.1766 +vn -0.7385 -0.6706 0.0707 +vn -0.6982 -0.6982 0.1581 +vn -0.6650 -0.6650 0.3398 +vn -0.6521 -0.6521 0.3868 +vn -0.5716 -0.5716 0.5886 +vn -0.4925 -0.4925 0.7175 +vn -0.5704 -0.5704 0.5909 +vn -0.6517 -0.6517 0.3881 +vn -0.6932 -0.6932 0.1973 +vn -0.6895 -0.6895 0.2215 +vn -0.7070 -0.7070 -0.0195 +vn -0.7070 -0.7070 -0.0131 +vn -0.6667 -0.6667 -0.3333 +vn 0.7071 0.0000 0.7071 +vn 0.7195 0.2771 0.6368 +vn 0.7863 0.4369 0.4369 +vn 0.8165 0.4082 0.4082 +vn 0.7202 0.6816 0.1292 +vn 0.6870 0.6870 -0.2366 +vn 0.6949 0.6949 0.1848 +vn 0.6969 -0.6951 0.1766 +vn 0.7385 -0.6706 0.0707 +vn 0.7397 -0.6692 0.0704 +vn 0.6650 -0.6650 0.3398 +vn 0.6521 -0.6521 0.3868 +vn 0.5716 -0.5716 0.5886 +vn 0.4925 -0.4925 0.7175 +vn 0.5704 -0.5704 0.5909 +vn 0.6517 -0.6517 0.3881 +vn 0.6932 -0.6932 0.1973 +vn 0.6895 -0.6895 0.2215 +vn 0.7070 -0.7070 -0.0195 +vn 0.7070 -0.7070 -0.0131 +vn 0.6667 -0.6667 -0.3333 +vn 0.0000 0.2421 -0.9702 +vn 0.0000 0.8749 -0.4843 +vn 0.0000 0.9888 -0.1493 +vn 0.0000 0.8507 0.5257 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.9871 0.1602 +vn 0.3731 0.8951 -0.2443 +vn -0.3731 0.8951 -0.2443 +vn 0.8944 0.4472 -0.0130 +vn 0.8728 0.4879 -0.0146 +vn 0.8872 0.4611 -0.0181 +vn -0.8944 0.4472 -0.0130 +vn -0.8872 0.4611 -0.0181 +vn -0.8728 0.4879 -0.0146 +vn -0.4980 0.8162 -0.2930 +vn -0.7017 0.7017 0.1232 +vn -0.6318 0.6318 0.4491 +vn -0.6758 0.6758 0.2944 +vn -0.7053 0.7053 0.0723 +vn -0.9921 0.1254 -0.0045 +vn -0.9854 0.1702 -0.0069 +vn -0.8545 0.5194 0.0000 +vn -0.5774 0.5774 0.5774 +vn 0.8545 0.5194 0.0000 +vn 0.6318 0.6318 0.4491 +vn 0.6758 0.6758 0.2944 +vn 0.5774 0.5774 0.5774 +vn 0.7017 0.7017 0.1232 +vn 0.7053 0.7053 0.0723 +vn 0.4980 0.8162 -0.2930 +vn 0.6953 0.6953 -0.1823 +vn -0.6953 0.6953 -0.1823 +vn 0.9921 0.1254 -0.0045 +vn 0.9854 0.1702 -0.0069 +vn -0.7071 0.6124 -0.3536 +vn -0.7071 0.7071 0.0000 +vn -0.7071 0.3536 -0.6124 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 -0.3536 -0.6124 +vn -0.7071 -0.6124 -0.3536 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 -0.6124 0.3536 +vn -0.7071 -0.3536 0.6124 +vn -0.7071 0.3536 0.6124 +vn -0.7071 0.6124 0.3536 +vn 0.0000 -0.1136 -0.9935 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 0.6124 -0.3536 +vn 0.7071 0.3536 -0.6124 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 -0.3536 -0.6124 +vn 0.7071 -0.6124 -0.3536 +vn 0.7071 -0.7071 0.0000 +vn 0.7071 -0.6124 0.3536 +vn 0.7071 -0.3536 0.6124 +vn 0.7071 0.3536 0.6124 +vn 0.7071 0.6124 0.3536 +vn 0.0000 -0.6442 0.7648 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.5715 0.8206 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9892 0.1465 +vn -0.9992 -0.0151 0.0379 +vn -0.9811 -0.1672 0.0979 +vn -0.9852 -0.1026 0.1371 +vn -0.9841 -0.1620 0.0733 +vn -0.9906 -0.1366 0.0031 +vn -0.9859 -0.1620 -0.0420 +vn -0.9993 -0.0355 -0.0067 +vn 0.9992 -0.0151 0.0379 +vn 0.9852 -0.1026 0.1371 +vn 0.9841 -0.1620 0.0733 +vn 0.9811 -0.1672 0.0979 +vn 0.9906 -0.1366 0.0031 +vn 0.9859 -0.1620 -0.0420 +vn 0.9993 -0.0355 -0.0067 +vn -0.6949 0.1848 0.6949 +vn -0.7397 -0.6692 0.0704 +vn 0.6667 0.3333 0.6667 +vn 0.6982 -0.6982 0.1581 +s off +f 832/1283/275 830/1284/275 838/1285/275 +f 856/1286/276 858/1287/276 862/1288/276 +f 872/1289/277 875/1290/277 873/1291/277 +f 872/1289/278 871/1292/278 870/1293/278 +f 830/1284/275 829/1294/275 838/1285/275 +f 829/1294/275 828/1295/275 838/1285/275 +f 828/1295/275 839/1296/275 838/1285/275 +f 838/1285/275 837/1297/275 836/1298/275 +f 836/1298/275 835/1299/275 838/1285/275 +f 835/1299/275 834/1300/275 838/1285/275 +f 834/1300/275 833/1301/275 832/1283/275 +f 832/1283/275 831/1302/275 830/1284/275 +f 834/1300/275 832/1283/275 838/1285/275 +f 854/1303/276 855/1304/276 856/1286/276 +f 856/1286/276 857/1305/276 858/1287/276 +f 858/1287/276 859/1306/276 860/1307/276 +f 860/1307/276 861/1308/276 858/1287/276 +f 861/1308/276 862/1288/276 858/1287/276 +f 862/1288/276 863/1309/276 864/1310/276 +f 864/1310/276 865/1311/276 862/1288/276 +f 865/1311/276 854/1303/276 862/1288/276 +f 854/1303/276 856/1286/276 862/1288/276 +f 872/1289/277 874/1312/277 875/1290/277 +f 872/1289/278 873/1291/278 871/1292/278 +s 1 +f 750/1313/279 770/1314/280 748/1315/280 +f 769/1316/281 750/1313/279 751/1317/282 +f 752/1318/283 769/1319/281 751/1317/282 +f 752/1318/283 766/1320/284 767/1321/285 +f 749/1322/286 770/1323/287 771/1324/288 +f 749/1322/286 772/1325/289 760/1326/290 +f 760/1326/290 773/1327/291 761/1328/292 +f 761/1328/292 774/1329/293 762/1330/294 +f 762/1331/294 775/1332/295 763/1333/296 +f 763/1333/296 776/1334/297 764/1335/298 +f 765/1336/299 776/1334/297 777/1337/299 +f 800/1338/300 780/1339/300 778/1340/300 +f 780/1339/301 799/1341/302 781/1342/303 +f 799/1343/302 782/1344/304 781/1342/303 +f 796/1345/305 782/1344/304 797/1346/306 +f 779/1347/307 800/1348/308 778/1340/309 +f 802/1349/310 779/1347/307 790/1350/311 +f 803/1351/312 790/1350/311 791/1352/313 +f 804/1353/314 791/1352/313 792/1354/315 +f 805/1355/316 792/1356/315 793/1357/317 +f 806/1358/318 793/1357/317 794/1359/319 +f 795/1360/320 806/1358/318 794/1359/319 +f 759/1361/321 788/1362/322 789/1363/321 +f 785/1364/323 758/1365/322 755/1366/323 +f 784/1367/324 755/1366/325 754/1368/324 +f 787/1369/326 754/1368/324 757/1370/326 +f 786/1371/327 757/1370/326 756/1372/328 +f 785/1373/329 808/1374/330 788/1375/331 +f 755/1376/332 758/1377/333 809/1378/334 +f 756/1379/328 766/1380/284 753/1381/335 +f 753/1381/335 786/1371/327 756/1372/328 +f 757/1370/336 754/1368/337 811/1382/338 +f 812/1383/339 756/1372/328 757/1370/336 +f 769/1384/275 767/1385/275 768/1386/275 +f 770/1387/275 768/1386/275 771/1388/275 +f 767/1385/275 766/1389/275 768/1386/275 +f 768/1386/275 766/1389/275 771/1388/275 +f 772/1390/275 771/1388/275 766/1389/275 +f 766/1389/275 810/1391/275 772/1390/275 +f 772/1390/275 810/1391/275 773/1392/275 +f 774/1393/275 773/1392/275 810/1391/275 +f 774/1393/275 812/1394/340 775/1395/275 +f 812/1394/340 759/1396/341 775/1395/275 +f 776/1397/275 759/1396/341 777/1398/275 +f 811/1399/342 809/1378/334 812/1394/340 +f 809/1378/334 759/1396/341 812/1394/340 +f 759/1396/341 809/1378/334 758/1377/333 +f 812/1383/339 757/1370/336 811/1382/338 +f 754/1368/337 755/1366/343 811/1382/338 +f 809/1378/334 811/1399/342 755/1376/332 +f 808/1374/330 785/1373/329 813/1400/344 +f 784/1367/345 813/1401/346 785/1364/347 +f 787/1369/348 813/1401/346 784/1367/345 +f 786/1371/327 815/1402/349 787/1369/348 +f 787/1369/348 815/1402/349 813/1401/346 +f 783/1403/350 796/1404/305 786/1405/327 +f 814/1406/351 786/1405/327 796/1404/305 +f 810/1407/352 766/1380/284 756/1379/328 +f 799/1408/276 798/1409/276 797/1410/276 +f 800/1411/276 801/1412/276 798/1409/276 +f 796/1413/276 797/1410/276 798/1409/276 +f 798/1409/276 801/1412/276 796/1413/276 +f 801/1412/276 802/1414/276 796/1413/276 +f 796/1413/276 802/1414/276 814/1415/276 +f 802/1414/276 803/1416/276 814/1415/276 +f 803/1416/276 804/1417/276 814/1415/276 +f 804/1417/276 815/1418/353 814/1415/276 +f 813/1400/344 815/1418/353 808/1374/330 +f 808/1374/330 815/1418/353 789/1419/354 +f 815/1418/353 805/1420/276 789/1419/354 +f 806/1421/276 789/1419/354 805/1420/276 +f 789/1419/354 788/1375/331 808/1374/330 +f 830/1422/355 819/1423/356 818/1424/355 +f 817/1425/357 830/1422/355 818/1424/355 +f 828/1426/358 817/1425/357 816/1427/358 +f 839/1428/359 816/1427/358 827/1429/359 +f 838/1430/360 827/1429/359 826/1431/360 +f 837/1432/361 826/1431/360 825/1433/361 +f 824/1434/362 837/1435/361 825/1436/361 +f 823/1437/363 836/1438/362 824/1434/362 +f 822/1439/280 835/1440/363 823/1437/363 +f 821/1441/364 834/1442/280 822/1439/280 +f 831/1443/356 820/1444/365 819/1423/356 +f 820/1444/365 833/1445/364 821/1441/364 +f 807/1446/366 795/1447/367 841/1448/366 +f 777/1449/366 840/1450/366 765/1451/367 +f 840/1450/366 777/1449/366 759/1361/321 +f 845/1452/368 856/1453/369 844/1454/369 +f 843/1455/370 856/1453/369 855/1456/370 +f 843/1455/370 854/1457/371 842/1458/371 +f 842/1458/371 865/1459/372 853/1460/372 +f 853/1460/372 864/1461/373 852/1462/373 +f 852/1462/373 863/1463/374 851/1464/374 +f 850/1465/375 863/1466/374 862/1467/375 +f 849/1468/376 862/1467/375 861/1469/376 +f 848/1470/300 861/1469/376 860/1471/300 +f 847/1472/377 860/1471/300 859/1473/377 +f 846/1474/378 857/1475/368 845/1452/368 +f 846/1474/378 859/1473/377 858/1476/378 +f 840/1477/276 866/1478/276 765/1479/276 +f 841/1480/275 795/1481/275 867/1482/275 +f 867/1483/379 840/1484/380 841/1485/380 +f 867/1483/379 868/1486/381 866/1487/379 +f 870/1293/382 783/1488/382 753/1489/382 +f 875/1290/383 868/1486/381 869/1490/381 +f 781/1491/275 782/1492/275 780/1493/275 +f 782/1492/275 871/1494/384 780/1493/275 +f 780/1493/275 779/1495/275 778/1496/275 +f 791/1497/385 790/1498/386 873/1499/387 +f 792/1500/275 791/1497/385 793/1501/388 +f 873/1499/387 793/1501/388 791/1497/385 +f 790/1498/386 779/1495/275 871/1494/384 +f 871/1494/384 873/1499/387 790/1498/386 +f 875/1502/389 793/1501/388 873/1499/387 +f 875/1502/389 869/1503/390 793/1501/388 +f 795/1481/275 794/1504/275 867/1482/275 +f 793/1501/388 867/1482/275 794/1504/275 +f 751/1505/276 750/1506/276 752/1507/276 +f 752/1507/276 870/1508/391 753/1509/276 +f 749/1510/276 750/1506/276 748/1511/276 +f 760/1512/392 870/1508/391 749/1510/276 +f 870/1508/391 760/1512/392 872/1513/393 +f 760/1512/392 761/1514/394 872/1513/393 +f 762/1515/276 763/1516/395 761/1514/394 +f 872/1513/393 761/1514/394 763/1516/395 +f 874/1517/396 872/1513/393 763/1516/395 +f 874/1517/396 763/1516/395 868/1518/397 +f 765/1479/276 866/1478/276 764/1519/276 +f 866/1478/276 763/1516/395 764/1519/276 +f 750/1313/279 768/1520/398 770/1314/280 +f 769/1316/281 768/1521/398 750/1313/279 +f 752/1318/283 767/1522/285 769/1319/281 +f 752/1318/283 753/1523/335 766/1320/284 +f 749/1322/286 748/1315/399 770/1323/287 +f 749/1322/286 771/1324/288 772/1325/289 +f 760/1326/290 772/1325/289 773/1327/291 +f 761/1328/292 773/1327/291 774/1329/293 +f 762/1331/294 774/1524/293 775/1332/295 +f 763/1333/296 775/1332/295 776/1334/297 +f 765/1336/299 764/1335/298 776/1334/297 +f 800/1338/300 798/1525/300 780/1339/300 +f 780/1339/301 798/1526/400 799/1341/302 +f 799/1343/302 797/1527/306 782/1344/304 +f 796/1345/305 783/1528/350 782/1344/304 +f 779/1347/307 801/1529/401 800/1348/308 +f 802/1349/310 801/1529/401 779/1347/307 +f 803/1351/312 802/1349/310 790/1350/311 +f 804/1353/314 803/1351/312 791/1352/313 +f 805/1355/316 804/1530/314 792/1356/315 +f 806/1358/318 805/1355/316 793/1357/317 +f 795/1360/320 807/1531/320 806/1358/318 +f 759/1361/321 758/1365/322 788/1362/322 +f 785/1364/323 788/1362/322 758/1365/322 +f 784/1367/324 785/1364/325 755/1366/325 +f 787/1369/326 784/1367/324 754/1368/324 +f 786/1371/327 787/1369/326 757/1370/326 +f 753/1381/335 783/1403/350 786/1371/327 +f 812/1383/339 810/1532/352 756/1372/328 +f 774/1393/275 810/1391/275 812/1394/340 +f 776/1397/275 775/1395/275 759/1396/341 +f 786/1371/327 814/1533/351 815/1402/349 +f 804/1417/276 805/1420/276 815/1418/353 +f 806/1421/276 807/1534/276 789/1419/354 +f 830/1422/355 831/1443/356 819/1423/356 +f 817/1425/357 829/1535/357 830/1422/355 +f 828/1426/358 829/1535/357 817/1425/357 +f 839/1428/359 828/1426/358 816/1427/358 +f 838/1430/360 839/1428/359 827/1429/359 +f 837/1432/361 838/1430/360 826/1431/360 +f 824/1434/362 836/1438/362 837/1435/361 +f 823/1437/363 835/1440/363 836/1438/362 +f 822/1439/280 834/1442/280 835/1440/363 +f 821/1441/364 833/1445/364 834/1442/280 +f 831/1443/356 832/1536/365 820/1444/365 +f 820/1444/365 832/1536/365 833/1445/364 +f 759/1361/321 789/1363/321 841/1448/366 +f 789/1363/321 807/1446/366 841/1448/366 +f 841/1448/366 840/1450/366 759/1361/321 +f 845/1452/368 857/1475/368 856/1453/369 +f 843/1455/370 844/1454/369 856/1453/369 +f 843/1455/370 855/1456/370 854/1457/371 +f 842/1458/371 854/1457/371 865/1459/372 +f 853/1460/372 865/1459/372 864/1461/373 +f 852/1462/373 864/1461/373 863/1463/374 +f 850/1465/375 851/1537/374 863/1466/374 +f 849/1468/376 850/1465/375 862/1467/375 +f 848/1470/300 849/1468/376 861/1469/376 +f 847/1472/377 848/1470/300 860/1471/300 +f 846/1474/378 858/1476/378 857/1475/368 +f 846/1474/378 847/1472/377 859/1473/377 +f 867/1483/379 866/1487/379 840/1484/380 +f 867/1483/379 869/1490/381 868/1486/381 +f 870/1293/382 871/1292/382 783/1488/382 +f 875/1290/383 874/1312/383 868/1486/381 +f 782/1492/275 783/1538/275 871/1494/384 +f 780/1493/275 871/1494/384 779/1495/275 +f 793/1501/388 869/1503/390 867/1482/275 +f 752/1507/276 750/1506/276 870/1508/391 +f 749/1510/276 870/1508/391 750/1506/276 +f 866/1478/276 868/1518/397 763/1516/395 +o Bayonet +v 0.000000 0.875000 7.812500 +v -0.046875 0.862440 7.812500 +v -0.081190 0.828125 7.812500 +v -0.093750 0.781250 7.812500 +v -0.081190 0.734375 7.812500 +v -0.046875 0.700060 7.812500 +v 0.000000 0.687500 7.812500 +v 0.046875 0.700060 7.812500 +v 0.081190 0.734375 7.812500 +v 0.093750 0.781250 7.812500 +v 0.081190 0.828125 7.812500 +v 0.046875 0.862440 7.812500 +v 0.000000 0.843750 8.062500 +v -0.044194 0.825444 8.062500 +v -0.062500 0.781250 8.062500 +v -0.044194 0.737056 8.062500 +v 0.000000 0.718750 8.062500 +v 0.044194 0.737056 8.062500 +v 0.062500 0.781250 8.062500 +v 0.044194 0.825444 8.062500 +v 0.000000 0.843750 12.000000 +v -0.044194 0.825444 12.000000 +v -0.062500 0.781250 12.000000 +v -0.044194 0.737056 12.000000 +v 0.000000 0.718750 12.000000 +v 0.044194 0.737056 12.000000 +v 0.062500 0.781250 12.000000 +v 0.044194 0.825444 12.000000 +v 0.000000 0.750000 12.750000 +v 0.000000 0.812500 12.750000 +vt 0.590909 0.659091 +vt 0.948864 0.664773 +vt 0.948864 0.659091 +vt 0.590909 0.630682 +vt 0.948864 0.625000 +vt 0.948864 0.630682 +vt 0.590909 0.613636 +vt 0.948864 0.607955 +vt 0.948864 0.613636 +vt 0.590909 0.653409 +vt 0.948864 0.653409 +vt 0.590909 0.647727 +vt 0.948864 0.642045 +vt 0.948864 0.647727 +vt 0.590909 0.642045 +vt 0.948864 0.636364 +vt 0.590909 0.625000 +vt 0.948864 0.619318 +vt 0.590909 0.676136 +vt 0.948864 0.670455 +vt 0.948864 0.676136 +vt 0.590909 0.636364 +vt 0.522727 0.642045 +vt 0.522727 0.625000 +vt 0.522727 0.636364 +vt 0.522727 0.630682 +vt 0.590909 0.633523 +vt 0.522727 0.625000 +vt 0.590909 0.619318 +vt 0.590909 0.607955 +vt 0.522727 0.613636 +vt 0.590909 0.670455 +vt 0.522727 0.676136 +vt 0.522727 0.659091 +vt 0.522727 0.647727 +vt 0.522727 0.653409 +vt 0.590909 0.650568 +vt 0.522727 0.659091 +vt 0.590909 0.664773 +vt 0.971591 0.619318 +vt 0.971591 0.613636 +vt 0.971591 0.607955 +vt 0.971591 0.630682 +vt 0.971591 0.625000 +vt 0.971591 0.636364 +vt 0.971591 0.670455 +vt 0.971591 0.664773 +vt 0.971591 0.653409 +vt 0.971591 0.659091 +vt 0.971591 0.664773 +vt 0.971591 0.647727 +vt 0.971591 0.653409 +vt 0.971591 0.642045 +vt 0.971591 0.676136 +vn -0.9995 -0.0000 0.0330 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7093 0.7044 0.0268 +vn 1.0000 -0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7093 -0.7044 0.0268 +vn -0.0000 -1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7093 -0.7044 0.0268 +vn -0.7071 -0.7071 0.0000 +vn -0.7093 0.7044 0.0268 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.9998 0.0207 +vn 0.9995 0.0000 0.0330 +vn 0.0000 -0.9998 0.0207 +vn 0.9953 0.0515 0.0826 +vn 0.9953 -0.0515 0.0826 +vn -0.9953 -0.0515 0.0826 +vn -0.9953 0.0515 0.0826 +vn 0.8610 -0.4941 0.1209 +vn 0.9891 0.0000 0.1474 +vn 0.6993 -0.6993 0.1482 +vn 0.4941 -0.8610 0.1209 +vn 0.0000 -0.9891 0.1474 +vn 0.0000 -0.9923 0.1240 +vn 0.8610 0.4941 0.1209 +vn 0.9923 0.0000 0.1240 +vn 0.4941 0.8610 0.1209 +vn 0.6993 0.6993 0.1482 +vn -0.0000 0.9891 0.1474 +vn -0.4941 -0.8610 0.1209 +vn -0.6993 -0.6993 0.1482 +vn -0.8610 -0.4941 0.1209 +vn -0.9891 -0.0000 0.1474 +vn -0.9923 -0.0000 0.1240 +vn -0.8610 0.4941 0.1209 +vn -0.6993 0.6993 0.1482 +vn -0.4941 0.8610 0.1209 +vn -0.0000 0.9923 0.1240 +s 1 +f 898/1539/402 889/1540/403 890/1541/404 +f 903/1542/405 894/1543/406 895/1544/407 +f 901/1545/408 892/1546/409 893/1547/410 +f 899/1548/411 890/1541/404 891/1549/412 +f 897/1550/413 888/1551/414 889/1552/403 +f 896/1553/415 895/1554/407 888/1551/414 +f 902/1555/416 893/1556/410 894/1543/406 +f 900/1557/417 891/1558/412 892/1559/409 +f 903/1560/405 896/1553/415 905/1561/418 +f 902/1555/416 903/1542/405 905/1562/418 +f 905/1563/418 904/1564/419 902/1565/416 +f 902/1555/416 904/1566/419 901/1567/408 +f 900/1568/417 901/1545/408 904/1569/419 +f 899/1570/411 900/1557/417 904/1571/420 +f 898/1539/402 899/1548/411 904/1572/420 +f 904/1573/420 905/1574/421 898/1575/402 +f 896/1553/415 897/1550/413 905/1561/421 +f 898/1539/402 905/1576/421 897/1577/413 +f 884/1578/422 894/1543/423 893/1556/424 +f 883/1579/425 884/1578/422 893/1547/424 +f 883/1579/425 892/1546/426 882/1580/427 +f 886/1581/428 894/1543/423 885/1582/429 +f 886/1581/428 887/1583/430 895/1554/431 +f 887/1583/430 888/1551/432 895/1554/431 +f 881/1584/433 892/1559/426 891/1558/434 +f 880/1585/435 881/1584/433 891/1558/434 +f 880/1586/435 890/1541/436 879/1587/437 +f 878/1588/438 890/1541/436 889/1540/439 +f 877/1589/440 878/1590/438 889/1552/439 +f 877/1589/440 888/1551/432 876/1591/441 +f 898/1539/402 897/1577/413 889/1540/403 +f 903/1542/405 902/1555/416 894/1543/406 +f 901/1545/408 900/1568/417 892/1546/409 +f 899/1548/411 898/1539/402 890/1541/404 +f 897/1550/413 896/1553/415 888/1551/414 +f 896/1553/415 903/1560/405 895/1554/407 +f 902/1555/416 901/1567/408 893/1556/410 +f 900/1557/417 899/1570/411 891/1558/412 +f 884/1578/422 885/1582/429 894/1543/423 +f 883/1579/425 893/1547/424 892/1546/426 +f 886/1581/428 895/1544/431 894/1543/423 +f 887/1583/430 876/1591/441 888/1551/432 +f 881/1584/433 882/1592/427 892/1559/426 +f 880/1586/435 891/1549/434 890/1541/436 +f 878/1588/438 879/1587/437 890/1541/436 +f 877/1589/440 889/1552/439 888/1551/432 +o Scope +v 0.187500 1.156250 -2.937500 +v 0.187500 1.031250 -2.937500 +v 0.312500 1.156250 -2.937500 +v 0.312500 0.906250 -2.937500 +v 0.312500 1.156250 -1.812500 +v 0.312500 0.906250 -1.812500 +v 0.187500 1.156250 -1.812500 +v 0.187500 1.031250 -1.812500 +v 0.250000 0.906250 -2.937500 +v 0.250000 0.906250 -1.812500 +v 0.312500 1.218750 -2.812500 +v 0.375000 1.593750 -2.812500 +v 0.312500 1.218750 -1.937500 +v 0.375000 1.593750 -1.937500 +v 0.562500 1.843750 -2.812500 +v 0.562500 1.843750 -1.937500 +v 0.562500 2.218750 -1.687500 +v 0.437500 2.185256 -1.687500 +v 0.345994 2.093750 -1.687500 +v 0.312500 1.968750 -1.687500 +v 0.345994 1.843750 -1.687500 +v 0.437500 1.752244 -1.687500 +v 0.562500 1.718750 -1.687500 +v 0.687500 1.752244 -1.687500 +v 0.779006 1.843750 -1.687500 +v 0.812500 1.968750 -1.687500 +v 0.779006 2.093750 -1.687500 +v 0.687500 2.185256 -1.687500 +v 0.562500 2.156250 -1.750000 +v 0.468750 2.131130 -1.750000 +v 0.400120 2.062500 -1.750000 +v 0.375000 1.968750 -1.750000 +v 0.400120 1.875000 -1.750000 +v 0.468750 1.806370 -1.750000 +v 0.562500 1.781250 -1.750000 +v 0.656250 1.806370 -1.750000 +v 0.724880 1.875000 -1.750000 +v 0.750000 1.968750 -1.750000 +v 0.724880 2.062500 -1.750000 +v 0.656250 2.131130 -1.750000 +v 0.562500 2.218750 -3.062500 +v 0.437500 2.185256 -3.062500 +v 0.345994 2.093750 -3.062500 +v 0.312500 1.968750 -3.062500 +v 0.345994 1.843750 -3.062500 +v 0.437500 1.752244 -3.062500 +v 0.562500 1.718750 -3.062500 +v 0.687500 1.752244 -3.062500 +v 0.779006 1.843750 -3.062500 +v 0.812500 1.968750 -3.062500 +v 0.779006 2.093750 -3.062500 +v 0.687500 2.185256 -3.062500 +v 0.562500 2.156250 -3.062500 +v 0.468750 2.131130 -3.062500 +v 0.400120 2.062500 -3.062500 +v 0.375000 1.968750 -3.062500 +v 0.400120 1.875000 -3.062500 +v 0.468750 1.806370 -3.062500 +v 0.562500 1.781250 -3.062500 +v 0.656250 1.806370 -3.062500 +v 0.724880 1.875000 -3.062500 +v 0.750000 1.968750 -3.062500 +v 0.724880 2.062500 -3.062500 +v 0.656250 2.131130 -3.062500 +v 0.562500 2.281250 -3.187500 +v 0.406250 2.239383 -3.187500 +v 0.291867 2.125000 -3.187500 +v 0.250000 1.968750 -3.187500 +v 0.291867 1.812500 -3.187500 +v 0.406250 1.698117 -3.187500 +v 0.562500 1.656250 -3.187500 +v 0.718750 1.698117 -3.187500 +v 0.833133 1.812500 -3.187500 +v 0.875000 1.968750 -3.187500 +v 0.833133 2.125000 -3.187500 +v 0.718750 2.239383 -3.187500 +v 0.562500 2.281250 -3.500000 +v 0.406250 2.239383 -3.500000 +v 0.291867 2.125000 -3.500000 +v 0.250000 1.968750 -3.500000 +v 0.291867 1.812500 -3.500000 +v 0.406250 1.698117 -3.500000 +v 0.562500 1.656250 -3.500000 +v 0.718750 1.698117 -3.500000 +v 0.833133 1.812500 -3.500000 +v 0.875000 1.968750 -3.500000 +v 0.833133 2.125000 -3.500000 +v 0.718750 2.239383 -3.500000 +v 0.562500 2.343750 -3.500000 +v 0.375000 2.293509 -3.500000 +v 0.237740 2.156250 -3.500000 +v 0.187500 1.968750 -3.500000 +v 0.237740 1.781250 -3.500000 +v 0.375000 1.643991 -3.500000 +v 0.562500 1.593750 -3.500000 +v 0.750000 1.643991 -3.500000 +v 0.887260 1.781250 -3.500000 +v 0.937500 1.968750 -3.500000 +v 0.887260 2.156250 -3.500000 +v 0.750000 2.293509 -3.500000 +v 0.562500 2.343750 -3.937500 +v 0.375000 2.293509 -3.937500 +v 0.237740 2.156250 -3.937500 +v 0.187500 1.968750 -3.937500 +v 0.237740 1.781250 -3.937500 +v 0.375000 1.643991 -3.937500 +v 0.562500 1.593750 -3.937500 +v 0.750000 1.643991 -3.937500 +v 0.887260 1.781250 -3.937500 +v 0.937500 1.968750 -3.937500 +v 0.887260 2.156250 -3.937500 +v 0.750000 2.293509 -3.937500 +v 0.562500 2.406250 -4.000000 +v 0.343750 2.347636 -4.000000 +v 0.183614 2.187500 -4.000000 +v 0.125000 1.968750 -4.000000 +v 0.183614 1.750000 -4.000000 +v 0.343750 1.589864 -4.000000 +v 0.562500 1.531250 -4.000000 +v 0.781250 1.589864 -4.000000 +v 0.941386 1.750000 -4.000000 +v 1.000000 1.968750 -4.000000 +v 0.941386 2.187500 -4.000000 +v 0.781250 2.347636 -4.000000 +v 0.562500 2.343750 -4.062500 +v 0.375000 2.293509 -4.062500 +v 0.237740 2.156250 -4.062500 +v 0.187500 1.968750 -4.062500 +v 0.237740 1.781250 -4.062500 +v 0.375000 1.643991 -4.062500 +v 0.562500 1.593750 -4.062500 +v 0.750000 1.643991 -4.062500 +v 0.887260 1.781250 -4.062500 +v 0.937500 1.968750 -4.062500 +v 0.887260 2.156250 -4.062500 +v 0.750000 2.293509 -4.062500 +v 0.562500 2.343750 -4.750000 +v 0.375000 2.293509 -4.750000 +v 0.237740 2.156250 -4.750000 +v 0.187500 1.968750 -4.750000 +v 0.237740 1.781250 -4.750000 +v 0.375000 1.643991 -4.750000 +v 0.562500 1.593750 -4.750000 +v 0.750000 1.643991 -4.750000 +v 0.887260 1.781250 -4.750000 +v 0.937500 1.968750 -4.750000 +v 0.887260 2.156250 -4.750000 +v 0.750000 2.293509 -4.750000 +v 0.562500 2.468750 -4.812500 +v 0.312500 2.401763 -4.812500 +v 0.129487 2.218750 -4.812500 +v 0.062500 1.968750 -4.812500 +v 0.129487 1.718750 -4.812500 +v 0.312500 1.535737 -4.812500 +v 0.562500 1.468750 -4.812500 +v 0.812500 1.535737 -4.812500 +v 0.995513 1.718750 -4.812500 +v 1.062500 1.968750 -4.812500 +v 0.995513 2.218750 -4.812500 +v 0.812500 2.401763 -4.812500 +v 0.562500 2.468750 -4.937500 +v 0.312500 2.401763 -4.937500 +v 0.129487 2.218750 -4.937500 +v 0.062500 1.968750 -4.937500 +v 0.129487 1.718750 -4.937500 +v 0.312500 1.535737 -4.937500 +v 0.562500 1.468750 -4.937500 +v 0.812500 1.535737 -4.937500 +v 0.995513 1.718750 -4.937500 +v 1.062500 1.968750 -4.937500 +v 0.995513 2.218750 -4.937500 +v 0.812500 2.401763 -4.937500 +v 0.187500 1.218750 -1.937500 +v 0.187500 1.593750 -1.937500 +v 0.187500 1.593750 -2.000000 +v 0.187500 1.218750 -2.000000 +v 0.250000 1.593750 -2.000000 +v 0.250000 1.218750 -2.000000 +v 0.250000 1.593750 -2.750000 +v 0.250000 1.218750 -2.750000 +v 0.187500 1.593750 -2.750000 +v 0.187500 1.218750 -2.750000 +v 0.187500 1.593750 -2.812500 +v 0.187500 1.218750 -2.812500 +v 0.375000 1.843750 -1.937500 +v 0.375000 1.843750 -2.812500 +v 0.375000 1.843750 -2.750000 +v 0.375000 1.843750 -2.000000 +v 0.375000 1.218750 -2.812500 +v 0.375000 1.218750 -1.937500 +v 0.312500 1.093750 -2.812500 +v 0.312500 1.093750 -1.937500 +v 0.375000 1.593750 -2.750000 +v 0.562500 1.843750 -2.750000 +v 0.375000 1.218750 -2.750000 +v 0.375000 1.593750 -2.000000 +v 0.562500 1.843750 -2.000000 +v 0.375000 1.218750 -2.000000 +v 0.312500 1.593750 -2.750000 +v 0.500000 1.843750 -2.750000 +v 0.312500 1.593750 -2.000000 +v 0.500000 1.843750 -2.000000 +v 0.437500 1.843750 -2.750000 +v 0.437500 1.843750 -2.000000 +v 0.312500 1.093750 -2.750000 +v 0.312500 1.093750 -2.000000 +v 0.562500 2.093750 -2.656250 +v 0.484375 2.093750 -2.635316 +v 0.427184 2.093750 -2.578125 +v 0.406250 2.093750 -2.500000 +v 0.427184 2.093750 -2.421875 +v 0.484375 2.093750 -2.364684 +v 0.562500 2.093750 -2.343750 +v 0.640625 2.093750 -2.364684 +v 0.697816 2.093750 -2.421875 +v 0.718750 2.093750 -2.500000 +v 0.697816 2.093750 -2.578125 +v 0.640625 2.093750 -2.635316 +v 0.562500 2.343750 -2.656250 +v 0.484375 2.343750 -2.635316 +v 0.427184 2.343750 -2.578125 +v 0.406250 2.343750 -2.500000 +v 0.427184 2.343750 -2.421875 +v 0.484375 2.343750 -2.364684 +v 0.562500 2.343750 -2.343750 +v 0.640625 2.343750 -2.364684 +v 0.697816 2.343750 -2.421875 +v 0.718750 2.343750 -2.500000 +v 0.697816 2.343750 -2.578125 +v 0.640625 2.343750 -2.635316 +v 0.312500 1.593750 -2.187500 +v 0.312500 1.593750 -2.562500 +v 0.312500 1.218750 -2.187500 +v 0.312500 1.218750 -2.562500 +v 0.250000 1.218750 -2.187500 +v 0.250000 1.218750 -2.562500 +v 0.250000 1.593750 -2.562500 +v 0.250000 1.593750 -2.187500 +vt 0.579545 0.795455 +vt 0.579545 0.806818 +vt 0.568182 0.806818 +vt 0.556818 0.795455 +vt 0.551136 0.693182 +vt 0.556818 0.693182 +vt 0.568182 0.681818 +vt 0.579545 0.693182 +vt 0.564784 0.860795 +vt 0.594307 0.860795 +vt 0.579545 0.886364 +vt 0.554181 0.840909 +vt 0.573864 0.806818 +vt 0.593546 0.840909 +vt 0.789773 0.822749 +vt 0.823864 0.822749 +vt 0.840909 0.852273 +vt 0.806818 0.750000 +vt 0.836342 0.767046 +vt 0.806818 0.818182 +vt 0.727273 0.721591 +vt 0.732955 0.687500 +vt 0.732955 0.721591 +vt 0.647727 0.687500 +vt 0.653409 0.721591 +vt 0.647727 0.721591 +vt 0.721591 0.721591 +vt 0.727273 0.687500 +vt 0.642045 0.687500 +vt 0.590909 0.681818 +vt 0.579545 0.681818 +vt 0.590909 0.806818 +vt 0.732955 0.750000 +vt 0.750000 0.721591 +vt 0.750000 0.750000 +vt 0.625000 0.721591 +vt 0.642045 0.750000 +vt 0.625000 0.750000 +vt 0.727273 0.750000 +vt 0.647727 0.750000 +vt 0.625000 0.676136 +vt 0.630682 0.687500 +vt 0.625000 0.687500 +vt 0.750000 0.687500 +vt 0.744318 0.687500 +vt 0.744318 0.676136 +vt 0.755682 0.687500 +vt 0.761364 0.721591 +vt 0.755682 0.721591 +vt 0.835227 0.721591 +vt 0.829545 0.750000 +vt 0.829545 0.721591 +vt 0.761364 0.750000 +vt 0.755682 0.750000 +vt 0.721591 0.750000 +vt 0.653409 0.750000 +vt 0.670455 0.687500 +vt 0.704545 0.693182 +vt 0.670455 0.693182 +vt 0.840909 0.687500 +vt 0.835227 0.676136 +vt 0.840909 0.676136 +vt 0.755682 0.676136 +vt 0.750000 0.676136 +vt 0.835227 0.687500 +vt 0.829545 0.676136 +vt 0.585227 0.784091 +vt 0.573864 0.784091 +vt 0.585227 0.704545 +vt 0.573864 0.704545 +vt 0.636364 0.676136 +vt 0.738636 0.676136 +vt 0.721591 0.681818 +vt 0.653409 0.681818 +vt 0.600370 0.742898 +vt 0.575767 0.742898 +vt 0.588068 0.721591 +vt 0.812500 0.687500 +vt 0.806818 0.721591 +vt 0.806818 0.687500 +vt 0.784091 0.721591 +vt 0.778409 0.687500 +vt 0.784091 0.687500 +vt 0.704545 0.721591 +vt 0.670455 0.715909 +vt 0.704545 0.715909 +vt 0.556818 0.801136 +vt 0.551136 0.795455 +vt 0.556818 0.687500 +vt 0.571023 0.884080 +vt 0.564784 0.877841 +vt 0.562500 0.869318 +vt 0.571023 0.854556 +vt 0.579545 0.852273 +vt 0.588068 0.854556 +vt 0.596591 0.869318 +vt 0.594307 0.877841 +vt 0.588068 0.884080 +vt 0.585227 0.849228 +vt 0.573864 0.852273 +vt 0.562500 0.849228 +vt 0.551136 0.829545 +vt 0.554181 0.818182 +vt 0.562500 0.809863 +vt 0.585227 0.809863 +vt 0.593546 0.818182 +vt 0.596591 0.829545 +vt 0.836342 0.869318 +vt 0.823864 0.881796 +vt 0.806818 0.886364 +vt 0.789773 0.881796 +vt 0.777295 0.869318 +vt 0.772727 0.852273 +vt 0.777295 0.835227 +vt 0.806818 0.818182 +vt 0.836342 0.835227 +vt 0.789773 0.813615 +vt 0.777295 0.801136 +vt 0.772727 0.784091 +vt 0.777295 0.767046 +vt 0.789773 0.754567 +vt 0.823864 0.754567 +vt 0.840909 0.784091 +vt 0.836342 0.801136 +vt 0.823864 0.813615 +vt 0.653409 0.687500 +vt 0.721591 0.687500 +vt 0.642045 0.721591 +vt 0.590909 0.693182 +vt 0.590909 0.795455 +vt 0.761364 0.676136 +vt 0.835227 0.750000 +vt 0.704545 0.687500 +vt 0.727273 0.681818 +vt 0.647727 0.681818 +vt 0.595170 0.723494 +vt 0.600370 0.728693 +vt 0.602273 0.735795 +vt 0.595170 0.748097 +vt 0.588068 0.750000 +vt 0.580966 0.748097 +vt 0.573864 0.735795 +vt 0.575767 0.728693 +vt 0.580966 0.723494 +vt 0.812500 0.721591 +vt 0.778409 0.721591 +vt 0.670455 0.721591 +vt 0.573864 0.710227 +vt 0.573864 0.778409 +vt 0.602273 0.761364 +vt 0.596591 0.751420 +vt 0.602273 0.750000 +vt 0.602273 0.772727 +vt 0.596591 0.762784 +vt 0.596591 0.782670 +vt 0.596591 0.774148 +vt 0.602273 0.795455 +vt 0.596591 0.785511 +vt 0.602273 0.784091 +vt 0.602273 0.806818 +vt 0.596591 0.796875 +vt 0.602273 0.818182 +vt 0.596591 0.808239 +vt 0.602273 0.829545 +vt 0.596591 0.819602 +vt 0.596591 0.839489 +vt 0.596591 0.830966 +vt 0.602273 0.852273 +vt 0.596591 0.842330 +vt 0.602273 0.840909 +vt 0.596591 0.862216 +vt 0.596591 0.853693 +vt 0.602273 0.875000 +vt 0.596591 0.865057 +vt 0.602273 0.863636 +vt 0.602273 0.886364 +vt 0.596591 0.876420 +vt 0.727273 0.840909 +vt 0.727273 0.784091 +vt 0.727273 0.750000 +vt 0.727273 0.852273 +vt 0.727273 0.795455 +vt 0.727273 0.818182 +vt 0.727273 0.761364 +vt 0.727273 0.863636 +vt 0.727273 0.806818 +vt 0.727273 0.829545 +vt 0.727273 0.772727 +vt 0.727273 0.875000 +vt 0.744318 0.784091 +vt 0.727273 0.792614 +vt 0.727273 0.786932 +vt 0.727273 0.798295 +vt 0.744318 0.806818 +vt 0.727273 0.803977 +vt 0.727273 0.815341 +vt 0.727273 0.809659 +vt 0.744318 0.818182 +vt 0.727273 0.826704 +vt 0.727273 0.821023 +vt 0.727273 0.832386 +vt 0.744318 0.840909 +vt 0.727273 0.838068 +vt 0.727273 0.843750 +vt 0.744318 0.852273 +vt 0.727273 0.849432 +vt 0.727273 0.860795 +vt 0.727273 0.855114 +vt 0.744318 0.863636 +vt 0.727273 0.872159 +vt 0.727273 0.866477 +vt 0.727273 0.877841 +vt 0.744318 0.886364 +vt 0.727273 0.883523 +vt 0.727273 0.752841 +vt 0.744318 0.761364 +vt 0.727273 0.758523 +vt 0.727273 0.775568 +vt 0.727273 0.781250 +vt 0.727273 0.769886 +vt 0.727273 0.764205 +vt 0.772727 0.772727 +vt 0.744318 0.772727 +vt 0.772727 0.875000 +vt 0.744318 0.875000 +vt 0.772727 0.818182 +vt 0.744318 0.829545 +vt 0.772727 0.840909 +vt 0.772727 0.784091 +vt 0.772727 0.886364 +vt 0.772727 0.852273 +vt 0.772727 0.795455 +vt 0.744318 0.795455 +vt 0.744318 0.750000 +vt 0.772727 0.761364 +vt 0.772727 0.863636 +vt 0.772727 0.806818 +vt 0.772727 0.829545 +vt 0.840909 0.869318 +vt 0.880682 0.886364 +vt 0.840909 0.886364 +vt 0.840909 0.818182 +vt 0.880682 0.835227 +vt 0.840909 0.835227 +vt 0.840909 0.732955 +vt 0.880682 0.750000 +vt 0.840909 0.750000 +vt 0.840909 0.681818 +vt 0.880682 0.698864 +vt 0.840909 0.698864 +vt 0.880682 0.852273 +vt 0.840909 0.852273 +vt 0.880682 0.767045 +vt 0.840909 0.767045 +vt 0.840909 0.784091 +vt 0.880682 0.801136 +vt 0.840909 0.801136 +vt 0.880682 0.715909 +vt 0.840909 0.715909 +vt 0.880682 0.869318 +vt 0.880682 0.784091 +vt 0.880682 0.818182 +vt 0.880682 0.732955 +vt 0.886364 0.681818 +vt 0.880682 0.681818 +vt 0.886364 0.715909 +vt 0.886364 0.732955 +vt 0.886364 0.767045 +vt 0.886364 0.784091 +vt 0.886364 0.801136 +vt 0.886364 0.818182 +vt 0.886364 0.852273 +vt 0.886364 0.869318 +vt 0.892045 0.886364 +vt 0.886364 0.886364 +vt 0.892045 0.852273 +vt 0.892045 0.835227 +vt 0.886364 0.835227 +vt 0.892045 0.801136 +vt 0.892045 0.784091 +vt 0.892045 0.750000 +vt 0.886364 0.750000 +vt 0.892045 0.715909 +vt 0.892045 0.681818 +vt 0.886364 0.698864 +vt 0.892045 0.698864 +vt 0.948864 0.698864 +vt 0.948864 0.852273 +vt 0.948864 0.767045 +vt 0.892045 0.767045 +vt 0.948864 0.801136 +vt 0.948864 0.715909 +vt 0.948864 0.869318 +vt 0.892045 0.869318 +vt 0.948864 0.784091 +vt 0.948864 0.818182 +vt 0.892045 0.818182 +vt 0.948864 0.732955 +vt 0.892045 0.732955 +vt 0.948864 0.886364 +vt 0.948864 0.835227 +vt 0.948864 0.750000 +vt 0.965909 0.840909 +vt 0.977273 0.863636 +vt 0.965909 0.863636 +vt 0.965909 0.727273 +vt 0.977273 0.750000 +vt 0.965909 0.750000 +vt 0.965909 0.931818 +vt 0.977273 0.954545 +vt 0.965909 0.954545 +vt 0.977273 0.886364 +vt 0.965909 0.886364 +vt 0.977273 0.772727 +vt 0.965909 0.772727 +vt 0.965909 0.681818 +vt 0.977273 0.704545 +vt 0.965909 0.704545 +vt 0.977273 0.909091 +vt 0.965909 0.909091 +vt 0.977273 0.795455 +vt 0.965909 0.795455 +vt 0.965909 0.818182 +vt 0.977273 0.840909 +vt 0.977273 0.727273 +vt 0.977273 0.931818 +vt 0.977273 0.818182 +vt 0.954545 0.701705 +vt 0.954545 0.684659 +vt 0.954545 0.724432 +vt 0.954545 0.707386 +vt 0.954545 0.747159 +vt 0.954545 0.730114 +vt 0.954545 0.752841 +vt 0.954545 0.769886 +vt 0.954545 0.792614 +vt 0.954545 0.775568 +vt 0.954545 0.798295 +vt 0.954545 0.815341 +vt 0.954545 0.821023 +vt 0.954545 0.838068 +vt 0.954545 0.860795 +vt 0.954545 0.843750 +vt 0.954545 0.883523 +vt 0.954545 0.866477 +vt 0.954545 0.906250 +vt 0.954545 0.889205 +vt 0.954545 0.928977 +vt 0.954545 0.911932 +vt 0.954545 0.951705 +vt 0.954545 0.934659 +vt 0.994318 0.951705 +vt 0.994318 0.934659 +vt 0.994318 0.928977 +vt 0.994318 0.911932 +vt 0.994318 0.906250 +vt 0.994318 0.889205 +vt 0.994318 0.866477 +vt 0.994318 0.883523 +vt 0.994318 0.843750 +vt 0.994318 0.860795 +vt 0.994318 0.838068 +vt 0.994318 0.821023 +vt 0.994318 0.798295 +vt 0.994318 0.815341 +vt 0.994318 0.792614 +vt 0.994318 0.775568 +vt 0.994318 0.769886 +vt 0.994318 0.752841 +vt 0.994318 0.730114 +vt 0.994318 0.747159 +vt 0.994318 0.724432 +vt 0.994318 0.707386 +vt 0.994318 0.684659 +vt 0.994318 0.701705 +vt 0.840909 0.721591 +vt 0.840909 0.750000 +vt 0.602273 0.732955 +vt 0.625000 0.727273 +vt 0.625000 0.732955 +vt 0.602273 0.704545 +vt 0.625000 0.698864 +vt 0.625000 0.704545 +vt 0.602273 0.687500 +vt 0.625000 0.681818 +vt 0.625000 0.687500 +vt 0.602273 0.738636 +vt 0.625000 0.738636 +vt 0.602273 0.710227 +vt 0.625000 0.710227 +vt 0.602273 0.721591 +vt 0.625000 0.715909 +vt 0.625000 0.721591 +vt 0.602273 0.693182 +vt 0.625000 0.693182 +vt 0.602273 0.744318 +vt 0.625000 0.744318 +vt 0.602273 0.715909 +vt 0.602273 0.727273 +vt 0.602273 0.698864 +vt 0.602273 0.750000 +vt 0.625000 0.750000 +vt 0.596591 0.759943 +vt 0.596591 0.771307 +vt 0.596591 0.794034 +vt 0.596591 0.805398 +vt 0.596591 0.816761 +vt 0.596591 0.828125 +vt 0.596591 0.850852 +vt 0.596591 0.873580 +vt 0.596591 0.884943 +vt 0.727273 0.886364 +vt 0.772727 0.750000 +vt 0.948864 0.681818 +vt 0.977273 0.681818 +vt 0.602273 0.681818 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.8000 0.6000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.8944 -0.4472 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.3536 0.6124 0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.6124 0.3536 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.6124 -0.3536 0.7071 +vn -0.3536 -0.6124 0.7071 +vn -0.0000 -0.7071 0.7071 +vn 0.3536 -0.6124 0.7071 +vn 0.6124 -0.3536 0.7071 +vn 0.7071 -0.0000 0.7071 +vn 0.6124 0.3536 0.7071 +vn 0.3536 0.6124 0.7071 +vn -0.8660 0.5000 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.5000 0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn -0.5000 -0.8660 0.0000 +vn -0.3536 -0.6124 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.6124 -0.3536 -0.7071 +vn -0.7071 -0.0000 -0.7071 +vn -0.6124 0.3536 -0.7071 +vn -0.3536 0.6124 -0.7071 +vn -0.0000 0.7071 -0.7071 +vn 0.3536 0.6124 -0.7071 +vn 0.6124 0.3536 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.6124 -0.3536 -0.7071 +vn 0.3536 -0.6124 -0.7071 +vn -0.4358 0.7548 0.4903 +vn -0.7548 0.4358 0.4903 +vn 0.7548 -0.4358 0.4903 +vn 0.8716 -0.0000 0.4903 +vn -0.4358 -0.7548 0.4903 +vn 0.0000 -0.8716 0.4903 +vn -0.8716 -0.0000 0.4903 +vn 0.7548 0.4358 0.4903 +vn 0.4358 -0.7548 0.4903 +vn -0.7548 -0.4358 0.4903 +vn 0.4358 0.7548 0.4903 +vn -0.0000 0.8716 0.4903 +vn 0.2236 -0.3873 0.8944 +vn -0.0000 -0.4472 0.8944 +vn 0.3873 -0.2236 0.8944 +vn 0.4472 -0.0000 0.8944 +vn 0.3873 0.2236 0.8944 +vn 0.2236 0.3873 0.8944 +vn -0.0000 0.4472 0.8944 +vn -0.2236 0.3873 0.8944 +vn -0.3873 0.2236 0.8944 +vn -0.4472 -0.0000 0.8944 +vn -0.3873 -0.2236 0.8944 +vn -0.2236 -0.3873 0.8944 +vn -0.0000 0.8321 -0.5547 +vn 0.4160 0.7206 -0.5547 +vn 0.7206 0.4160 -0.5547 +vn 0.8321 0.0000 -0.5547 +vn 0.7206 -0.4160 -0.5547 +vn 0.4160 -0.7206 -0.5547 +vn 0.0000 -0.8321 -0.5547 +vn -0.4160 -0.7206 -0.5547 +vn -0.7206 -0.4160 -0.5547 +vn -0.8321 0.0000 -0.5547 +vn -0.7206 0.4160 -0.5547 +vn -0.4160 0.7206 -0.5547 +vn -0.9080 0.4191 0.0000 +vn 0.9487 -0.3162 0.0000 +vn 0.8000 -0.6000 0.0000 +vn -0.8660 0.0000 -0.5000 +vn 0.8660 0.0000 -0.5000 +vn 0.5000 0.0000 0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.5000 0.0000 -0.8660 +vn -0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn -0.5000 0.0000 0.8660 +vn 0.9080 -0.4191 0.0000 +vn -0.9487 0.3162 0.0000 +s off +f 910/1593/442 912/1594/442 913/1595/442 +f 911/1596/443 914/1597/443 909/1598/443 +f 909/1598/444 907/1599/444 908/1600/444 +f 938/1601/442 942/1602/442 934/1603/442 +f 956/1604/444 952/1605/444 948/1606/444 +f 1049/1607/444 1047/1608/444 1045/1609/444 +f 1000/1610/442 1002/1611/442 994/1612/442 +f 1080/1613/445 1078/1614/445 1079/1615/445 +f 1087/1616/442 1084/1617/442 1086/1618/442 +f 1082/1619/444 1081/1620/444 1080/1613/444 +f 1086/1618/445 1089/1621/445 1087/1616/445 +f 1089/1622/446 908/1600/446 906/1623/446 +f 910/1593/447 1078/1624/447 912/1594/447 +f 1090/1625/442 919/1626/442 921/1627/442 +f 917/1628/444 1091/1629/444 920/1630/444 +f 1079/1615/448 1093/1631/448 1080/1613/448 +f 1091/1629/448 1086/1618/448 1092/1632/448 +f 1096/1633/444 916/1634/444 1094/1635/444 +f 917/1628/444 1094/1635/444 916/1634/444 +f 1095/1636/442 918/1637/442 1097/1638/442 +f 918/1637/442 919/1626/442 1079/1615/442 +f 1103/1639/444 1106/1640/444 1101/1641/444 +f 1098/1642/442 1105/1643/442 1104/1644/442 +f 1101/1641/444 1107/1645/444 1102/1646/444 +f 1082/1619/444 1093/1631/444 1109/1647/444 +f 1092/1632/442 1084/1617/442 1108/1648/442 +f 1141/1649/449 1138/1650/449 1139/1651/449 +f 1094/1652/450 1110/1653/450 1096/1654/450 +f 1111/1655/450 1095/1636/450 1097/1656/450 +f 1100/1657/442 1104/1644/442 1110/1658/442 +f 918/1659/451 910/1593/451 1097/1660/451 +f 916/1661/451 1096/1662/451 908/1600/451 +f 906/1663/445 912/1664/445 1081/1665/445 +f 1141/1649/449 1087/1666/449 1081/1665/449 +f 1128/1667/449 1132/1668/449 1124/1669/449 +f 1139/1670/442 1142/1671/442 1141/1672/442 +f 1143/1673/444 1138/1674/444 1140/1675/444 +f 1143/1676/443 1137/1677/443 1136/1678/443 +f 1097/1660/451 910/1593/451 911/1596/451 +f 913/1595/442 915/1679/442 911/1596/442 +f 911/1596/442 910/1593/442 913/1595/442 +f 911/1596/443 915/1680/443 914/1597/443 +f 914/1681/444 907/1599/444 909/1598/444 +f 907/1599/444 906/1623/444 908/1600/444 +f 934/1603/442 935/1682/442 938/1601/442 +f 935/1682/442 936/1683/442 938/1601/442 +f 936/1683/442 937/1684/442 938/1601/442 +f 938/1601/442 939/1685/442 940/1686/442 +f 940/1686/442 941/1687/442 938/1601/442 +f 941/1687/442 942/1602/442 938/1601/442 +f 942/1602/442 943/1688/442 944/1689/442 +f 944/1689/442 945/1690/442 934/1603/442 +f 942/1602/442 944/1689/442 934/1603/442 +f 948/1606/444 947/1691/444 956/1604/444 +f 947/1691/444 946/1692/444 956/1604/444 +f 946/1692/444 957/1693/444 956/1604/444 +f 956/1604/444 955/1694/444 954/1695/444 +f 954/1695/444 953/1696/444 952/1605/444 +f 952/1605/444 951/1697/444 950/1698/444 +f 950/1698/444 949/1699/444 948/1606/444 +f 956/1604/444 954/1695/444 952/1605/444 +f 952/1605/444 950/1698/444 948/1606/444 +f 1045/1609/444 1044/1700/444 1043/1701/444 +f 1043/1701/444 1042/1702/444 1053/1703/444 +f 1053/1703/444 1052/1704/444 1049/1607/444 +f 1052/1704/444 1051/1705/444 1049/1607/444 +f 1051/1705/444 1050/1706/444 1049/1607/444 +f 1049/1607/444 1048/1707/444 1047/1608/444 +f 1047/1608/444 1046/1708/444 1045/1609/444 +f 1045/1609/444 1043/1701/444 1049/1607/444 +f 1043/1701/444 1053/1703/444 1049/1607/444 +f 994/1612/442 995/1709/442 996/1710/442 +f 996/1710/442 997/1711/442 998/1712/442 +f 998/1712/442 999/1713/442 1000/1610/442 +f 1000/1610/442 1001/1714/442 1002/1611/442 +f 1002/1611/442 1003/1715/442 1004/1716/442 +f 1004/1716/442 1005/1717/442 1002/1611/442 +f 1005/1717/442 994/1612/442 1002/1611/442 +f 994/1612/442 996/1710/442 998/1712/442 +f 998/1712/442 1000/1610/442 994/1612/442 +f 1080/1613/445 1081/1620/445 1078/1614/445 +f 1087/1616/442 1085/1718/442 1084/1617/442 +f 1082/1619/444 1083/1719/444 1081/1620/444 +f 1086/1618/445 1088/1720/445 1089/1621/445 +f 1089/1622/446 916/1721/446 908/1600/446 +f 910/1593/447 918/1722/447 1078/1624/447 +f 1090/1625/442 1079/1615/442 919/1626/442 +f 917/1628/444 1088/1720/444 1091/1629/444 +f 1079/1615/448 1090/1625/448 1093/1631/448 +f 1091/1629/448 1088/1720/448 1086/1618/448 +f 916/1634/444 1089/1621/444 1088/1720/444 +f 1088/1720/444 917/1628/444 916/1634/444 +f 1079/1615/442 1078/1614/442 918/1637/442 +f 918/1637/442 1095/1636/442 919/1626/442 +f 1103/1639/444 1111/1723/444 1106/1640/444 +f 1098/1642/442 1099/1724/442 1105/1643/442 +f 1101/1641/444 1106/1640/444 1107/1645/444 +f 1082/1619/444 1080/1613/444 1093/1631/444 +f 1092/1632/442 1086/1618/442 1084/1617/442 +f 1141/1649/449 1140/1725/449 1138/1650/449 +f 1094/1652/450 1100/1657/450 1110/1653/450 +f 1111/1655/450 1103/1639/450 1095/1636/450 +f 1100/1657/442 1098/1642/442 1104/1644/442 +f 1078/1726/445 1081/1665/445 912/1664/445 +f 1081/1665/445 1087/1666/445 906/1663/445 +f 1087/1666/445 1089/1727/445 906/1663/445 +f 1081/1665/449 1083/1719/449 1140/1725/449 +f 1141/1649/449 1085/1718/449 1087/1666/449 +f 1081/1665/449 1140/1725/449 1141/1649/449 +f 1124/1669/449 1125/1728/449 1128/1667/449 +f 1125/1728/449 1126/1729/449 1128/1667/449 +f 1126/1729/449 1127/1730/449 1128/1667/449 +f 1128/1667/449 1129/1731/449 1130/1732/449 +f 1130/1732/449 1131/1733/449 1128/1667/449 +f 1131/1733/449 1132/1668/449 1128/1667/449 +f 1132/1668/449 1133/1734/449 1134/1735/449 +f 1134/1735/449 1135/1736/449 1132/1668/449 +f 1135/1736/449 1124/1669/449 1132/1668/449 +f 1139/1670/442 1137/1737/442 1142/1671/442 +f 1143/1673/444 1136/1738/444 1138/1674/444 +f 1143/1676/443 1142/1739/443 1137/1677/443 +f 909/1598/451 908/1600/451 1096/1662/451 +f 1110/1740/451 1111/1741/451 909/1598/451 +f 1111/1741/451 1097/1660/451 911/1596/451 +f 909/1598/451 1111/1741/451 911/1596/451 +f 909/1598/451 1096/1662/451 1110/1740/451 +s 1 +f 929/1742/452 940/1743/453 928/1744/453 +f 930/1745/454 941/1746/452 929/1742/452 +f 930/1745/454 943/1747/455 942/1748/454 +f 932/1749/456 943/1750/455 931/1751/455 +f 933/1752/457 944/1753/456 932/1749/456 +f 922/1754/458 945/1755/457 933/1752/457 +f 923/1756/459 934/1757/458 922/1754/458 +f 923/1756/459 936/1758/460 935/1759/459 +f 925/1760/461 936/1761/460 924/1762/460 +f 925/1760/461 938/1763/462 937/1764/461 +f 927/1765/463 938/1766/462 926/1767/462 +f 928/1768/453 939/1769/463 927/1765/463 +f 948/1770/464 925/1760/445 924/1762/464 +f 955/1771/451 932/1749/465 931/1751/451 +f 952/1772/443 929/1742/466 928/1744/443 +f 949/1773/445 926/1767/467 925/1760/445 +f 956/1774/465 933/1752/468 932/1749/465 +f 946/1775/449 923/1756/469 922/1754/449 +f 953/1776/466 930/1745/470 929/1742/466 +f 950/1777/467 927/1765/471 926/1767/467 +f 957/1778/468 922/1754/449 933/1752/468 +f 947/1779/469 924/1762/464 923/1756/469 +f 954/1780/470 931/1751/451 930/1745/470 +f 951/1781/471 928/1768/443 927/1765/471 +f 979/1782/461 968/1783/462 967/1784/461 +f 968/1785/462 981/1786/463 969/1787/463 +f 981/1786/463 958/1788/453 969/1789/463 +f 970/1790/453 959/1791/452 958/1792/453 +f 959/1793/452 972/1794/454 960/1795/454 +f 960/1796/454 973/1797/455 961/1798/455 +f 973/1797/455 962/1799/456 961/1800/455 +f 974/1801/456 963/1802/457 962/1803/456 +f 963/1804/457 976/1805/458 964/1806/458 +f 964/1807/458 977/1808/459 965/1809/459 +f 966/1810/460 979/1782/461 967/1811/461 +f 977/1808/459 966/1812/460 965/1813/459 +f 977/1808/466 990/1814/470 978/1815/470 +f 974/1801/467 987/1816/471 975/1817/471 +f 981/1786/468 982/1818/449 970/1790/449 +f 971/1819/469 984/1820/464 972/1794/464 +f 978/1815/470 991/1821/451 979/1782/451 +f 975/1817/471 988/1822/443 976/1805/443 +f 972/1794/464 985/1823/445 973/1797/445 +f 979/1782/451 992/1824/465 980/1825/465 +f 976/1826/443 989/1827/466 977/1808/466 +f 973/1797/445 986/1828/467 974/1801/467 +f 980/1825/465 993/1829/468 981/1786/468 +f 970/1790/449 983/1830/469 971/1819/469 +f 999/1831/471 1012/1832/443 1000/1833/443 +f 996/1834/464 1009/1835/445 997/1836/445 +f 1003/1837/451 1016/1838/465 1004/1839/465 +f 1000/1840/443 1013/1841/466 1001/1842/466 +f 997/1836/445 1010/1843/467 998/1844/467 +f 1004/1839/465 1017/1845/468 1005/1846/468 +f 994/1847/449 1007/1848/469 995/1849/469 +f 1001/1842/466 1014/1850/470 1002/1851/470 +f 998/1844/467 1011/1852/471 999/1831/471 +f 1005/1846/468 1006/1853/449 994/1847/449 +f 995/1849/469 1008/1854/464 996/1834/464 +f 1002/1851/470 1015/1855/451 1003/1837/451 +f 1024/1856/458 1013/1841/459 1012/1857/458 +f 1013/1841/459 1026/1858/460 1014/1850/460 +f 1014/1850/460 1027/1859/461 1015/1855/461 +f 1027/1859/461 1016/1838/462 1015/1855/461 +f 1016/1838/462 1029/1860/463 1017/1845/463 +f 1029/1860/463 1006/1853/453 1017/1845/463 +f 1018/1861/453 1007/1848/452 1006/1853/453 +f 1019/1862/452 1008/1854/454 1007/1848/452 +f 1020/1863/454 1009/1835/455 1008/1854/454 +f 1009/1835/455 1022/1864/456 1010/1843/456 +f 1022/1864/456 1011/1852/457 1010/1843/456 +f 1023/1865/457 1012/1832/458 1011/1852/457 +f 1023/1865/472 1036/1866/473 1024/1867/473 +f 1034/1868/474 1023/1865/472 1022/1864/474 +f 1033/1869/475 1022/1864/474 1021/1870/475 +f 1020/1863/476 1033/1869/475 1021/1870/475 +f 1031/1871/477 1020/1863/476 1019/1862/477 +f 1030/1872/478 1019/1862/477 1018/1861/478 +f 1029/1860/479 1030/1872/478 1018/1861/478 +f 1040/1873/480 1029/1860/479 1028/1874/480 +f 1027/1859/481 1040/1873/480 1028/1874/480 +f 1038/1875/482 1027/1859/481 1026/1858/482 +f 1036/1876/473 1025/1877/483 1024/1856/473 +f 1037/1878/483 1026/1858/482 1025/1877/483 +f 1036/1876/443 1049/1879/466 1037/1878/466 +f 1033/1869/445 1046/1880/467 1034/1868/467 +f 1040/1873/465 1053/1881/468 1041/1882/468 +f 1030/1872/449 1043/1883/469 1031/1871/469 +f 1037/1878/466 1050/1884/470 1038/1875/470 +f 1034/1868/467 1047/1885/471 1035/1886/471 +f 1041/1882/468 1042/1887/449 1030/1872/449 +f 1031/1871/469 1044/1888/464 1032/1889/464 +f 1038/1875/470 1051/1890/451 1039/1891/451 +f 1035/1886/471 1048/1892/443 1036/1866/443 +f 1032/1889/464 1045/1893/445 1033/1869/445 +f 1039/1891/451 1052/1894/465 1040/1873/465 +f 1055/1895/484 1068/1896/464 1056/1897/485 +f 1062/1898/486 1075/1899/451 1063/1900/487 +f 1059/1901/488 1072/1902/443 1060/1903/489 +f 1056/1897/485 1069/1904/445 1057/1905/490 +f 1063/1900/487 1076/1906/465 1064/1907/491 +f 1060/1908/489 1073/1909/466 1061/1910/492 +f 1057/1905/490 1070/1911/467 1058/1912/493 +f 1064/1907/491 1077/1913/468 1065/1914/494 +f 1054/1915/495 1067/1916/469 1055/1895/484 +f 1061/1910/492 1074/1917/470 1062/1898/486 +f 1058/1912/493 1071/1918/471 1059/1901/488 +f 1065/1914/494 1066/1919/449 1054/1915/495 +f 1060/1908/489 1049/1920/496 1048/1921/497 +f 1061/1910/492 1050/1922/498 1049/1923/496 +f 1062/1898/486 1051/1924/499 1050/1925/498 +f 1051/1926/499 1064/1907/491 1052/1927/500 +f 1064/1907/491 1053/1928/501 1052/1929/500 +f 1053/1930/501 1054/1915/495 1042/1931/502 +f 1042/1932/502 1055/1895/484 1043/1933/503 +f 1055/1895/484 1044/1934/504 1043/1935/503 +f 1056/1897/485 1045/1936/505 1044/1937/504 +f 1057/1905/490 1046/1938/506 1045/1939/505 +f 1058/1912/493 1047/1940/507 1046/1941/506 +f 1059/1901/488 1048/1942/497 1047/1943/507 +f 1048/1944/508 1071/1918/509 1047/1945/509 +f 1047/1946/509 1070/1911/510 1046/1947/510 +f 1046/1948/510 1069/1904/511 1045/1949/511 +f 1069/1904/511 1044/1950/512 1045/1951/511 +f 1068/1896/512 1043/1952/513 1044/1953/512 +f 1043/1954/513 1066/1919/514 1042/1955/514 +f 1066/1919/514 1053/1956/515 1042/1957/514 +f 1053/1958/515 1076/1906/516 1052/1959/516 +f 1052/1960/516 1075/1899/517 1051/1961/517 +f 1075/1899/517 1050/1962/518 1051/1963/517 +f 1050/1964/518 1073/1909/519 1049/1965/519 +f 1073/1909/519 1048/1966/508 1049/1967/519 +f 1142/1739/520 1085/1718/445 1141/1649/445 +f 917/1968/521 1100/1657/451 1094/1652/451 +f 920/1969/522 1098/1642/521 917/1968/521 +f 1095/1636/451 1101/1641/521 919/1626/521 +f 919/1626/521 1102/1646/522 921/1627/522 +f 1138/1674/451 1106/1640/521 1111/1723/451 +f 1127/1970/445 1114/1971/523 1115/1972/445 +f 1134/1973/524 1121/1974/451 1122/1975/524 +f 1131/1976/525 1118/1977/442 1119/1978/525 +f 1128/1979/526 1115/1972/445 1116/1980/526 +f 1135/1981/527 1122/1975/524 1123/1982/527 +f 1125/1983/528 1112/1984/444 1113/1985/528 +f 1132/1986/529 1119/1978/525 1120/1987/529 +f 1129/1988/530 1116/1980/526 1117/1989/530 +f 1124/1990/444 1123/1982/527 1112/1984/444 +f 1126/1991/523 1113/1985/528 1114/1971/523 +f 1133/1992/451 1120/1987/529 1121/1974/451 +f 1130/1993/442 1117/1989/530 1118/1994/442 +f 1104/1644/521 1139/1670/451 1110/1658/451 +f 1136/1738/531 1137/1737/531 1105/1643/522 +f 1111/1723/451 1139/1670/451 1138/1674/451 +f 1140/1725/445 1082/1619/532 1143/1676/520 +f 1108/1648/448 1142/1739/520 1143/1676/520 +f 929/1742/452 941/1995/452 940/1743/453 +f 930/1745/454 942/1996/454 941/1746/452 +f 930/1745/454 931/1751/455 943/1747/455 +f 932/1749/456 944/1997/456 943/1750/455 +f 933/1752/457 945/1998/457 944/1753/456 +f 922/1754/458 934/1999/458 945/1755/457 +f 923/1756/459 935/2000/459 934/1757/458 +f 923/1756/459 924/1762/460 936/1758/460 +f 925/1760/461 937/2001/461 936/1761/460 +f 925/1760/461 926/1767/462 938/1763/462 +f 927/1765/463 939/2002/463 938/1766/462 +f 928/1768/453 940/2003/453 939/1769/463 +f 948/1770/464 949/1773/445 925/1760/445 +f 955/1771/451 956/1774/465 932/1749/465 +f 952/1772/443 953/1776/466 929/1742/466 +f 949/1773/445 950/1777/467 926/1767/467 +f 956/1774/465 957/1778/468 933/1752/468 +f 946/1775/449 947/1779/469 923/1756/469 +f 953/1776/466 954/1780/470 930/1745/470 +f 950/1777/467 951/1781/471 927/1765/471 +f 957/1778/468 946/1775/449 922/1754/449 +f 947/1779/469 948/1770/464 924/1762/464 +f 954/1780/470 955/1771/451 931/1751/451 +f 951/1781/471 952/2004/443 928/1768/443 +f 979/1782/461 980/1825/462 968/1783/462 +f 968/1785/462 980/1825/462 981/1786/463 +f 981/1786/463 970/1790/453 958/1788/453 +f 970/1790/453 971/1819/452 959/1791/452 +f 959/1793/452 971/1819/452 972/1794/454 +f 960/1796/454 972/1794/454 973/1797/455 +f 973/1797/455 974/1801/456 962/1799/456 +f 974/1801/456 975/1817/457 963/1802/457 +f 963/1804/457 975/1817/457 976/1805/458 +f 964/1807/458 976/1826/458 977/1808/459 +f 966/1810/460 978/1815/460 979/1782/461 +f 977/1808/459 978/1815/460 966/1812/460 +f 977/1808/466 989/1827/466 990/1814/470 +f 974/1801/467 986/1828/467 987/1816/471 +f 981/1786/468 993/1829/468 982/1818/449 +f 971/1819/469 983/1830/469 984/1820/464 +f 978/1815/470 990/1814/470 991/1821/451 +f 975/1817/471 987/1816/471 988/1822/443 +f 972/1794/464 984/1820/464 985/1823/445 +f 979/1782/451 991/1821/451 992/1824/465 +f 976/1826/443 988/2005/443 989/1827/466 +f 973/1797/445 985/1823/445 986/1828/467 +f 980/1825/465 992/1824/465 993/1829/468 +f 970/1790/449 982/1818/449 983/1830/469 +f 999/1831/471 1011/1852/471 1012/1832/443 +f 996/1834/464 1008/1854/464 1009/1835/445 +f 1003/1837/451 1015/1855/451 1016/1838/465 +f 1000/1840/443 1012/1857/443 1013/1841/466 +f 997/1836/445 1009/1835/445 1010/1843/467 +f 1004/1839/465 1016/1838/465 1017/1845/468 +f 994/1847/449 1006/1853/449 1007/1848/469 +f 1001/1842/466 1013/1841/466 1014/1850/470 +f 998/1844/467 1010/1843/467 1011/1852/471 +f 1005/1846/468 1017/1845/468 1006/1853/449 +f 995/1849/469 1007/1848/469 1008/1854/464 +f 1002/1851/470 1014/1850/470 1015/1855/451 +f 1024/1856/458 1025/1877/459 1013/1841/459 +f 1013/1841/459 1025/1877/459 1026/1858/460 +f 1014/1850/460 1026/1858/460 1027/1859/461 +f 1027/1859/461 1028/1874/462 1016/1838/462 +f 1016/1838/462 1028/1874/462 1029/1860/463 +f 1029/1860/463 1018/1861/453 1006/1853/453 +f 1018/1861/453 1019/1862/452 1007/1848/452 +f 1019/1862/452 1020/1863/454 1008/1854/454 +f 1020/1863/454 1021/1870/455 1009/1835/455 +f 1009/1835/455 1021/1870/455 1022/1864/456 +f 1022/1864/456 1023/1865/457 1011/1852/457 +f 1023/1865/457 1024/1867/458 1012/1832/458 +f 1023/1865/472 1035/1886/472 1036/1866/473 +f 1034/1868/474 1035/1886/472 1023/1865/472 +f 1033/1869/475 1034/1868/474 1022/1864/474 +f 1020/1863/476 1032/1889/476 1033/1869/475 +f 1031/1871/477 1032/1889/476 1020/1863/476 +f 1030/1872/478 1031/1871/477 1019/1862/477 +f 1029/1860/479 1041/1882/479 1030/1872/478 +f 1040/1873/480 1041/1882/479 1029/1860/479 +f 1027/1859/481 1039/1891/481 1040/1873/480 +f 1038/1875/482 1039/1891/481 1027/1859/481 +f 1036/1876/473 1037/1878/483 1025/1877/483 +f 1037/1878/483 1038/1875/482 1026/1858/482 +f 1036/1876/443 1048/2006/443 1049/1879/466 +f 1033/1869/445 1045/1893/445 1046/1880/467 +f 1040/1873/465 1052/1894/465 1053/1881/468 +f 1030/1872/449 1042/1887/449 1043/1883/469 +f 1037/1878/466 1049/1879/466 1050/1884/470 +f 1034/1868/467 1046/1880/467 1047/1885/471 +f 1041/1882/468 1053/1881/468 1042/1887/449 +f 1031/1871/469 1043/1883/469 1044/1888/464 +f 1038/1875/470 1050/1884/470 1051/1890/451 +f 1035/1886/471 1047/1885/471 1048/1892/443 +f 1032/1889/464 1044/1888/464 1045/1893/445 +f 1039/1891/451 1051/1890/451 1052/1894/465 +f 1055/1895/484 1067/1916/469 1068/1896/464 +f 1062/1898/486 1074/1917/470 1075/1899/451 +f 1059/1901/488 1071/1918/471 1072/1902/443 +f 1056/1897/485 1068/1896/464 1069/1904/445 +f 1063/1900/487 1075/1899/451 1076/1906/465 +f 1060/1908/489 1072/2007/443 1073/1909/466 +f 1057/1905/490 1069/1904/445 1070/1911/467 +f 1064/1907/491 1076/1906/465 1077/1913/468 +f 1054/1915/495 1066/1919/449 1067/1916/469 +f 1061/1910/492 1073/1909/466 1074/1917/470 +f 1058/1912/493 1070/1911/467 1071/1918/471 +f 1065/1914/494 1077/1913/468 1066/1919/449 +f 1060/1908/489 1061/1910/492 1049/1920/496 +f 1061/1910/492 1062/1898/486 1050/1922/498 +f 1062/1898/486 1063/1900/487 1051/1924/499 +f 1051/1926/499 1063/1900/487 1064/1907/491 +f 1064/1907/491 1065/1914/494 1053/1928/501 +f 1053/1930/501 1065/1914/494 1054/1915/495 +f 1042/1932/502 1054/1915/495 1055/1895/484 +f 1055/1895/484 1056/1897/485 1044/1934/504 +f 1056/1897/485 1057/1905/490 1045/1936/505 +f 1057/1905/490 1058/1912/493 1046/1938/506 +f 1058/1912/493 1059/1901/488 1047/1940/507 +f 1059/1901/488 1060/1903/489 1048/1942/497 +f 1048/1944/508 1072/1902/508 1071/1918/509 +f 1047/1946/509 1071/1918/509 1070/1911/510 +f 1046/1948/510 1070/1911/510 1069/1904/511 +f 1069/1904/511 1068/1896/512 1044/1950/512 +f 1068/1896/512 1067/1916/513 1043/1952/513 +f 1043/1954/513 1067/1916/513 1066/1919/514 +f 1066/1919/514 1077/1913/515 1053/1956/515 +f 1053/1958/515 1077/1913/515 1076/1906/516 +f 1052/1960/516 1076/1906/516 1075/1899/517 +f 1075/1899/517 1074/1917/518 1050/1962/518 +f 1050/1964/518 1074/1917/518 1073/1909/519 +f 1073/1909/519 1072/2007/508 1048/1966/508 +f 1142/1739/520 1084/1617/532 1085/1718/445 +f 917/1968/521 1098/1642/521 1100/1657/451 +f 920/1969/522 1099/1724/522 1098/1642/521 +f 1095/1636/451 1103/1639/451 1101/1641/521 +f 919/1626/521 1101/1641/521 1102/1646/522 +f 1138/1674/451 1136/1738/531 1106/1640/521 +f 1127/1970/445 1126/1991/523 1114/1971/523 +f 1134/1973/524 1133/1992/451 1121/1974/451 +f 1131/1976/525 1130/2008/442 1118/1977/442 +f 1128/1979/526 1127/1970/445 1115/1972/445 +f 1135/1981/527 1134/1973/524 1122/1975/524 +f 1125/1983/528 1124/1990/444 1112/1984/444 +f 1132/1986/529 1131/1976/525 1119/1978/525 +f 1129/1988/530 1128/1979/526 1116/1980/526 +f 1124/1990/444 1135/1981/527 1123/1982/527 +f 1126/1991/523 1125/1983/528 1113/1985/528 +f 1133/1992/451 1132/1986/529 1120/1987/529 +f 1130/1993/442 1129/1988/530 1117/1989/530 +f 1104/1644/521 1137/1737/531 1139/1670/451 +f 1137/1737/531 1104/1644/521 1105/1643/522 +f 1105/1643/522 1107/1645/522 1136/1738/531 +f 1107/1645/522 1106/1640/521 1136/1738/531 +f 1111/1723/451 1110/1658/451 1139/1670/451 +f 1140/1725/445 1083/1719/445 1082/1619/532 +f 1082/1619/532 1109/1647/448 1143/1676/520 +f 1109/1647/448 1108/1648/448 1143/1676/520 +f 1108/1648/448 1084/1617/532 1142/1739/520 +o Clip +v 0.062500 0.968750 -1.625003 +v -0.062500 0.968750 -1.625003 +v 0.062500 2.281250 -1.625003 +v -0.062500 2.281250 -1.625003 +v 0.062500 2.281250 -1.562503 +v -0.062500 2.281250 -1.562503 +v -0.125000 2.281250 -1.531253 +v -0.062500 0.968750 -1.562503 +v 0.062500 0.968750 -1.562503 +v -0.125000 0.968750 -1.531253 +v 0.125000 2.281250 -1.531253 +v 0.125000 0.968750 -1.531253 +vt 0.948864 0.965909 +vt 0.829545 0.954545 +vt 0.948864 0.954545 +vt 0.948864 0.977273 +vt 0.954545 0.994318 +vt 0.948864 1.000000 +vt 0.960227 0.982955 +vt 0.960227 0.994318 +vt 0.818182 0.982955 +vt 0.823864 0.994318 +vt 0.818182 0.994318 +vt 0.829545 1.000000 +vt 0.823864 0.982955 +vt 0.829545 0.977273 +vt 0.829545 0.965909 +vt 0.954545 0.982955 +vt 0.829545 0.948864 +vt 0.948864 0.943182 +vt 0.948864 0.948864 +vt 0.829545 0.971591 +vt 0.948864 0.971591 +vt 0.829545 0.943182 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.8507 0.0000 -0.5257 +vn 0.4472 0.0000 -0.8944 +vn 1.0000 0.0000 0.0000 +vn -0.8507 0.0000 -0.5257 +vn -0.4472 0.0000 -0.8944 +vn -1.0000 0.0000 0.0000 +s off +f 1145/2009/533 1146/2010/533 1144/2011/533 +f 1153/2012/534 1152/2013/534 1155/2014/534 +f 1152/2013/534 1145/2015/534 1144/2016/534 +f 1147/2017/535 1148/2018/535 1146/2019/535 +f 1154/2020/536 1153/2012/536 1155/2014/536 +f 1154/2020/535 1149/2021/535 1150/2022/535 +f 1145/2009/533 1147/2023/533 1146/2010/533 +f 1153/2012/534 1151/2024/534 1152/2013/534 +f 1152/2013/534 1151/2024/534 1145/2015/534 +f 1147/2017/535 1149/2021/535 1148/2018/535 +f 1154/2020/536 1150/2022/536 1153/2012/536 +f 1154/2020/535 1148/2018/535 1149/2021/535 +s 1 +f 1148/2025/537 1155/2026/538 1152/2027/537 +f 1146/2010/539 1152/2027/537 1144/2011/539 +f 1149/2028/540 1153/2012/541 1150/2022/541 +f 1151/2029/540 1147/2023/542 1145/2009/542 +f 1148/2025/537 1154/2030/538 1155/2026/538 +f 1146/2010/539 1148/2025/537 1152/2027/537 +f 1149/2028/540 1151/2029/540 1153/2012/541 +f 1151/2029/540 1149/2028/540 1147/2023/542 +o Bullet_Bullet.002 +v 0.000000 1.091966 -1.534621 +v -0.066291 1.064533 -1.533423 +v -0.093750 0.998305 -1.530532 +v -0.066291 0.932077 -1.527640 +v 0.000000 0.904644 -1.526442 +v 0.066291 0.932077 -1.527640 +v 0.093750 0.998305 -1.530532 +v 0.066291 1.064533 -1.533423 +v 0.000000 1.124680 -0.785335 +v -0.066291 1.097248 -0.784137 +v -0.093750 1.031020 -0.781245 +v -0.066291 0.964791 -0.778354 +v 0.000000 0.937359 -0.777156 +v 0.066291 0.964791 -0.778354 +v 0.093750 1.031020 -0.781245 +v 0.066291 1.097248 -0.784137 +v 0.000000 1.096186 -0.721531 +v -0.044194 1.077898 -0.720733 +v -0.062500 1.033746 -0.718805 +v -0.044194 0.989594 -0.716877 +v 0.000000 0.971305 -0.716079 +v 0.044194 0.989594 -0.716877 +v 0.062500 1.033746 -0.718805 +v 0.044194 1.077898 -0.720733 +v 0.000000 1.104365 -0.534210 +v -0.044194 1.086076 -0.533411 +v -0.062500 1.041924 -0.531483 +v -0.044194 0.997772 -0.529556 +v 0.000000 0.979484 -0.528757 +v 0.044194 0.997772 -0.529556 +v 0.062500 1.041924 -0.531483 +v 0.044194 1.086076 -0.533411 +v 0.000000 1.079950 -0.376980 +v -0.022097 1.070806 -0.376581 +v -0.031250 1.048730 -0.375617 +v -0.022097 1.026654 -0.374654 +v 0.000000 1.017509 -0.374254 +v 0.022097 1.026654 -0.374654 +v 0.031250 1.048730 -0.375617 +v 0.022097 1.070806 -0.376581 +v 0.000000 1.051456 -0.313177 +vt 0.838068 0.886364 +vt 0.829545 0.894886 +vt 0.838068 0.903409 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.903409 +vt 0.886364 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.954545 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.909091 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.886364 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.863636 0.931818 +vt 0.880682 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.909091 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.914773 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vn -0.0000 0.0436 0.9990 +vn 0.7071 0.7064 -0.0308 +vn -0.0000 0.9990 -0.0436 +vn 0.7071 -0.7064 0.0308 +vn 1.0000 0.0000 -0.0000 +vn -0.7071 -0.7064 0.0308 +vn -1.0000 0.0000 -0.0000 +vn -0.7071 0.7064 -0.0308 +vn 0.0000 -0.9990 0.0436 +vn -0.6325 -0.6514 -0.4192 +vn -0.0000 -0.9131 -0.4078 +vn 0.6325 -0.6514 -0.4192 +vn 0.8944 -0.0195 -0.4468 +vn 0.6325 0.6123 -0.4744 +vn -0.0000 0.8741 -0.4858 +vn -0.6325 0.6123 -0.4744 +vn -0.8944 -0.0195 -0.4468 +vn -0.7038 -0.7073 -0.0656 +vn -0.0000 0.9902 -0.1397 +vn -0.7038 0.6989 -0.1270 +vn 0.7038 0.6989 -0.1270 +vn 0.7038 -0.7073 -0.0656 +vn 0.0000 -0.9986 -0.0529 +vn -0.9953 -0.0042 -0.0963 +vn 0.9953 -0.0042 -0.0963 +vn 0.6711 -0.6842 -0.2856 +vn -0.0000 -0.9619 -0.2734 +vn -0.6711 -0.6842 -0.2856 +vn -0.9490 -0.0137 -0.3148 +vn -0.6711 0.6567 -0.3441 +vn -0.0000 0.9344 -0.3562 +vn 0.9490 -0.0137 -0.3148 +vn 0.6711 0.6567 -0.3441 +vn -0.0000 -0.0436 -0.9990 +s off +f 1160/2031/543 1162/2032/543 1156/2033/543 +f 1156/2033/543 1157/2034/543 1158/2035/543 +f 1158/2035/543 1159/2036/543 1160/2031/543 +f 1160/2031/543 1161/2037/543 1162/2032/543 +f 1162/2032/543 1163/2038/543 1156/2033/543 +f 1156/2033/543 1158/2035/543 1160/2031/543 +s 1 +f 1159/2039/544 1168/2040/545 1160/2041/545 +f 1157/2042/546 1166/2043/547 1158/2044/547 +f 1163/2045/548 1170/2046/549 1171/2047/548 +f 1160/2048/545 1169/2049/550 1161/2050/550 +f 1158/2044/547 1167/2051/544 1159/2039/544 +f 1156/2052/551 1165/2053/546 1157/2042/546 +f 1163/2045/548 1164/2054/551 1156/2052/551 +f 1161/2050/550 1170/2046/549 1162/2055/549 +f 1179/2056/552 1164/2054/553 1171/2047/552 +f 1172/2057/553 1165/2053/554 1164/2054/553 +f 1173/2058/554 1166/2043/555 1165/2053/554 +f 1174/2059/555 1167/2051/556 1166/2043/555 +f 1175/2060/556 1168/2040/557 1167/2051/556 +f 1176/2061/557 1169/2049/558 1168/2062/557 +f 1177/2063/558 1170/2046/559 1169/2049/558 +f 1178/2064/559 1171/2047/552 1170/2046/559 +f 1178/2064/549 1187/2065/560 1179/2056/548 +f 1177/2063/550 1184/2066/561 1185/2067/562 +f 1174/2059/547 1183/2068/563 1175/2060/544 +f 1172/2057/551 1181/2069/564 1173/2058/546 +f 1179/2056/548 1180/2070/565 1172/2057/551 +f 1177/2063/550 1186/2071/566 1178/2064/549 +f 1175/2060/544 1184/2072/561 1176/2073/545 +f 1173/2058/546 1182/2074/567 1174/2059/547 +f 1189/2075/568 1182/2074/567 1181/2069/564 +f 1188/2076/569 1181/2069/564 1180/2070/565 +f 1195/2077/570 1180/2070/565 1187/2065/560 +f 1194/2078/571 1187/2065/560 1186/2071/566 +f 1193/2079/572 1186/2071/566 1185/2067/562 +f 1192/2080/573 1185/2067/562 1184/2066/561 +f 1190/2081/574 1183/2068/563 1182/2074/567 +f 1191/2082/575 1184/2072/561 1183/2068/563 +f 1191/2082/575 1196/2083/576 1192/2084/573 +f 1190/2081/574 1196/2083/576 1191/2082/575 +f 1189/2075/568 1196/2085/576 1190/2081/574 +f 1188/2076/569 1196/2085/576 1189/2075/568 +f 1195/2077/570 1196/2086/576 1188/2076/569 +f 1194/2078/571 1196/2086/576 1195/2077/570 +f 1192/2080/573 1196/2087/576 1193/2079/572 +f 1193/2079/572 1196/2087/576 1194/2078/571 +f 1159/2039/544 1167/2051/544 1168/2040/545 +f 1157/2042/546 1165/2053/546 1166/2043/547 +f 1163/2045/548 1162/2055/549 1170/2046/549 +f 1160/2048/545 1168/2062/545 1169/2049/550 +f 1158/2044/547 1166/2043/547 1167/2051/544 +f 1156/2052/551 1164/2054/551 1165/2053/546 +f 1163/2045/548 1171/2047/548 1164/2054/551 +f 1161/2050/550 1169/2049/550 1170/2046/549 +f 1179/2056/552 1172/2057/553 1164/2054/553 +f 1172/2057/553 1173/2058/554 1165/2053/554 +f 1173/2058/554 1174/2059/555 1166/2043/555 +f 1174/2059/555 1175/2060/556 1167/2051/556 +f 1175/2060/556 1176/2073/557 1168/2040/557 +f 1176/2061/557 1177/2063/558 1169/2049/558 +f 1177/2063/558 1178/2064/559 1170/2046/559 +f 1178/2064/559 1179/2056/552 1171/2047/552 +f 1178/2064/549 1186/2071/566 1187/2065/560 +f 1177/2063/550 1176/2061/545 1184/2066/561 +f 1174/2059/547 1182/2074/567 1183/2068/563 +f 1172/2057/551 1180/2070/565 1181/2069/564 +f 1179/2056/548 1187/2065/560 1180/2070/565 +f 1177/2063/550 1185/2067/562 1186/2071/566 +f 1175/2060/544 1183/2068/563 1184/2072/561 +f 1173/2058/546 1181/2069/564 1182/2074/567 +f 1189/2075/568 1190/2081/574 1182/2074/567 +f 1188/2076/569 1189/2075/568 1181/2069/564 +f 1195/2077/570 1188/2076/569 1180/2070/565 +f 1194/2078/571 1195/2077/570 1187/2065/560 +f 1193/2079/572 1194/2078/571 1186/2071/566 +f 1192/2080/573 1193/2079/572 1185/2067/562 +f 1190/2081/574 1191/2082/575 1183/2068/563 +f 1191/2082/575 1192/2084/573 1184/2072/561 +o Bullets_Bullet.001 +v 0.000000 2.281250 -1.531250 +v -0.066291 2.253791 -1.531250 +v -0.093750 2.187500 -1.531250 +v -0.066291 2.121209 -1.531250 +v 0.000000 2.093750 -1.531250 +v 0.066291 2.121209 -1.531250 +v 0.093750 2.187500 -1.531250 +v 0.066291 2.253791 -1.531250 +v 0.000000 2.281250 -0.781250 +v -0.066291 2.253791 -0.781250 +v -0.093750 2.187500 -0.781250 +v -0.066291 2.121209 -0.781250 +v 0.000000 2.093750 -0.781250 +v 0.066291 2.121209 -0.781250 +v 0.093750 2.187500 -0.781250 +v 0.066291 2.253791 -0.781250 +v 0.000000 2.250000 -0.718750 +v -0.044194 2.231694 -0.718750 +v -0.062500 2.187500 -0.718750 +v -0.044194 2.143306 -0.718750 +v 0.000000 2.125000 -0.718750 +v 0.044194 2.143306 -0.718750 +v 0.062500 2.187500 -0.718750 +v 0.044194 2.231694 -0.718750 +v 0.000000 2.250000 -0.531250 +v -0.044194 2.231694 -0.531250 +v -0.062500 2.187500 -0.531250 +v -0.044194 2.143306 -0.531250 +v 0.000000 2.125000 -0.531250 +v 0.044194 2.143306 -0.531250 +v 0.062500 2.187500 -0.531250 +v 0.044194 2.231694 -0.531250 +v 0.000000 2.218750 -0.375236 +v -0.022097 2.209597 -0.375236 +v -0.031250 2.187500 -0.375236 +v -0.022097 2.165403 -0.375236 +v 0.000000 2.156250 -0.375236 +v 0.022097 2.165403 -0.375236 +v 0.031250 2.187500 -0.375236 +v 0.022097 2.209597 -0.375236 +v 0.000000 2.187500 -0.312736 +v 0.035877 2.086614 -1.531250 +v -0.035877 2.086614 -1.531250 +v -0.086614 2.035877 -1.531250 +v -0.086614 1.964123 -1.531250 +v -0.035877 1.913386 -1.531250 +v 0.035877 1.913386 -1.531250 +v 0.086614 1.964123 -1.531250 +v 0.086614 2.035877 -1.531250 +v 0.035877 2.086614 -0.781250 +v -0.035877 2.086614 -0.781250 +v -0.086614 2.035877 -0.781250 +v -0.086614 1.964123 -0.781250 +v -0.035877 1.913386 -0.781250 +v 0.035877 1.913386 -0.781250 +v 0.086614 1.964123 -0.781250 +v 0.086614 2.035877 -0.781250 +v 0.023918 2.057743 -0.718750 +v -0.023918 2.057743 -0.718750 +v -0.057742 2.023918 -0.718750 +v -0.057742 1.976082 -0.718750 +v -0.023918 1.942258 -0.718750 +v 0.023918 1.942258 -0.718750 +v 0.057742 1.976082 -0.718750 +v 0.057742 2.023918 -0.718750 +v 0.023918 2.057743 -0.531250 +v -0.023918 2.057743 -0.531250 +v -0.057742 2.023918 -0.531250 +v -0.057742 1.976082 -0.531250 +v -0.023918 1.942258 -0.531250 +v 0.023918 1.942258 -0.531250 +v 0.057742 1.976082 -0.531250 +v 0.057742 2.023918 -0.531250 +v 0.011959 2.028871 -0.375236 +v -0.011959 2.028871 -0.375236 +v -0.028871 2.011959 -0.375236 +v -0.028871 1.988041 -0.375236 +v -0.011959 1.971129 -0.375236 +v 0.011959 1.971129 -0.375236 +v 0.028871 1.988041 -0.375236 +v 0.028871 2.011959 -0.375236 +v 0.000000 2.000000 -0.312736 +v 0.000000 1.906250 -1.531250 +v -0.066291 1.878791 -1.531250 +v -0.093750 1.812500 -1.531250 +v -0.066291 1.746209 -1.531250 +v 0.000000 1.718750 -1.531250 +v 0.066291 1.746209 -1.531250 +v 0.093750 1.812500 -1.531250 +v 0.066291 1.878791 -1.531250 +v 0.000000 1.906250 -0.781250 +v -0.066291 1.878791 -0.781250 +v -0.093750 1.812500 -0.781250 +v -0.066291 1.746209 -0.781250 +v 0.000000 1.718750 -0.781250 +v 0.066291 1.746209 -0.781250 +v 0.093750 1.812500 -0.781250 +v 0.066291 1.878791 -0.781250 +v 0.000000 1.875000 -0.718750 +v -0.044194 1.856694 -0.718750 +v -0.062500 1.812500 -0.718750 +v -0.044194 1.768306 -0.718750 +v 0.000000 1.750000 -0.718750 +v 0.044194 1.768306 -0.718750 +v 0.062500 1.812500 -0.718750 +v 0.044194 1.856694 -0.718750 +v 0.000000 1.875000 -0.531250 +v -0.044194 1.856694 -0.531250 +v -0.062500 1.812500 -0.531250 +v -0.044194 1.768306 -0.531250 +v 0.000000 1.750000 -0.531250 +v 0.044194 1.768306 -0.531250 +v 0.062500 1.812500 -0.531250 +v 0.044194 1.856694 -0.531250 +v 0.000000 1.843750 -0.375236 +v -0.022097 1.834597 -0.375236 +v -0.031250 1.812500 -0.375236 +v -0.022097 1.790403 -0.375236 +v 0.000000 1.781250 -0.375236 +v 0.022097 1.790403 -0.375236 +v 0.031250 1.812500 -0.375236 +v 0.022097 1.834597 -0.375236 +v 0.000000 1.812500 -0.312736 +v 0.035877 1.711614 -1.531250 +v -0.035877 1.711614 -1.531250 +v -0.086614 1.660877 -1.531250 +v -0.086614 1.589123 -1.531250 +v -0.035877 1.538386 -1.531250 +v 0.035877 1.538386 -1.531250 +v 0.086614 1.589123 -1.531250 +v 0.086614 1.660877 -1.531250 +v 0.035877 1.711614 -0.781250 +v -0.035877 1.711614 -0.781250 +v -0.086614 1.660877 -0.781250 +v -0.086614 1.589123 -0.781250 +v -0.035877 1.538386 -0.781250 +v 0.035877 1.538386 -0.781250 +v 0.086614 1.589123 -0.781250 +v 0.086614 1.660877 -0.781250 +v 0.023918 1.682742 -0.718750 +v -0.023918 1.682742 -0.718750 +v -0.057742 1.648918 -0.718750 +v -0.057742 1.601082 -0.718750 +v -0.023918 1.567258 -0.718750 +v 0.023918 1.567258 -0.718750 +v 0.057743 1.601082 -0.718750 +v 0.057743 1.648918 -0.718750 +v 0.023918 1.682742 -0.531250 +v -0.023918 1.682742 -0.531250 +v -0.057742 1.648918 -0.531250 +v -0.057742 1.601082 -0.531250 +v -0.023918 1.567258 -0.531250 +v 0.023918 1.567258 -0.531250 +v 0.057743 1.601082 -0.531250 +v 0.057743 1.648918 -0.531250 +v 0.011959 1.653871 -0.375236 +v -0.011959 1.653871 -0.375236 +v -0.028871 1.636959 -0.375236 +v -0.028871 1.613041 -0.375236 +v -0.011959 1.596129 -0.375236 +v 0.011959 1.596129 -0.375236 +v 0.028871 1.613041 -0.375236 +v 0.028871 1.636959 -0.375236 +v 0.000000 1.625000 -0.312736 +v 0.000000 1.531250 -1.531250 +v -0.066291 1.503791 -1.531250 +v -0.093750 1.437500 -1.531250 +v -0.066291 1.371209 -1.531250 +v 0.000000 1.343750 -1.531250 +v 0.066291 1.371209 -1.531250 +v 0.093750 1.437500 -1.531250 +v 0.066291 1.503791 -1.531250 +v 0.000000 1.531250 -0.781250 +v -0.066291 1.503791 -0.781250 +v -0.093750 1.437500 -0.781250 +v -0.066291 1.371209 -0.781250 +v 0.000000 1.343750 -0.781250 +v 0.066291 1.371209 -0.781250 +v 0.093750 1.437500 -0.781250 +v 0.066291 1.503791 -0.781250 +v 0.000000 1.500000 -0.718750 +v -0.044194 1.481694 -0.718750 +v -0.062500 1.437500 -0.718750 +v -0.044194 1.393306 -0.718750 +v 0.000000 1.375000 -0.718750 +v 0.044194 1.393306 -0.718750 +v 0.062500 1.437500 -0.718750 +v 0.044194 1.481694 -0.718750 +v 0.000000 1.500000 -0.531250 +v -0.044194 1.481694 -0.531250 +v -0.062500 1.437500 -0.531250 +v -0.044194 1.393306 -0.531250 +v 0.000000 1.375000 -0.531250 +v 0.044194 1.393306 -0.531250 +v 0.062500 1.437500 -0.531250 +v 0.044194 1.481694 -0.531250 +v 0.000000 1.468750 -0.375236 +v -0.022097 1.459597 -0.375236 +v -0.031250 1.437500 -0.375236 +v -0.022097 1.415403 -0.375236 +v 0.000000 1.406250 -0.375236 +v 0.022097 1.415403 -0.375236 +v 0.031250 1.437500 -0.375236 +v 0.022097 1.459597 -0.375236 +v 0.000000 1.437500 -0.312736 +v 0.035877 1.336614 -1.531250 +v -0.035877 1.336614 -1.531250 +v -0.086614 1.285877 -1.531250 +v -0.086614 1.214123 -1.531250 +v -0.035877 1.163386 -1.531250 +v 0.035877 1.163386 -1.531250 +v 0.086614 1.214123 -1.531250 +v 0.086614 1.285877 -1.531250 +v 0.035877 1.336614 -0.781250 +v -0.035877 1.336614 -0.781250 +v -0.086614 1.285877 -0.781250 +v -0.086614 1.214123 -0.781250 +v -0.035877 1.163386 -0.781250 +v 0.035877 1.163386 -0.781250 +v 0.086614 1.214123 -0.781250 +v 0.086614 1.285877 -0.781250 +v 0.023918 1.307742 -0.718750 +v -0.023918 1.307743 -0.718750 +v -0.057742 1.273918 -0.718750 +v -0.057742 1.226082 -0.718750 +v -0.023918 1.192258 -0.718750 +v 0.023918 1.192258 -0.718750 +v 0.057742 1.226082 -0.718750 +v 0.057742 1.273918 -0.718750 +v 0.023918 1.307742 -0.531250 +v -0.023918 1.307743 -0.531250 +v -0.057742 1.273918 -0.531250 +v -0.057742 1.226082 -0.531250 +v -0.023918 1.192258 -0.531250 +v 0.023918 1.192258 -0.531250 +v 0.057742 1.226082 -0.531250 +v 0.057742 1.273918 -0.531250 +v 0.011959 1.278871 -0.375236 +v -0.011959 1.278871 -0.375236 +v -0.028871 1.261959 -0.375236 +v -0.028871 1.238041 -0.375236 +v -0.011959 1.221129 -0.375236 +v 0.011959 1.221129 -0.375236 +v 0.028871 1.238041 -0.375236 +v 0.028871 1.261959 -0.375236 +v 0.000000 1.250000 -0.312736 +v 0.000000 1.156250 -1.531250 +v -0.066291 1.128791 -1.531250 +v -0.093750 1.062500 -1.531250 +v -0.066291 0.996209 -1.531250 +v 0.000000 0.968750 -1.531250 +v 0.066291 0.996209 -1.531250 +v 0.093750 1.062500 -1.531250 +v 0.066291 1.128791 -1.531250 +v 0.000000 1.156250 -0.781250 +v -0.066291 1.128791 -0.781250 +v -0.093750 1.062500 -0.781250 +v -0.066291 0.996209 -0.781250 +v 0.000000 0.968750 -0.781250 +v 0.066291 0.996209 -0.781250 +v 0.093750 1.062500 -0.781250 +v 0.066291 1.128791 -0.781250 +v 0.000000 1.125000 -0.718750 +v -0.044194 1.106694 -0.718750 +v -0.062500 1.062500 -0.718750 +v -0.044194 1.018306 -0.718750 +v 0.000000 1.000000 -0.718750 +v 0.044194 1.018306 -0.718750 +v 0.062500 1.062500 -0.718750 +v 0.044194 1.106694 -0.718750 +v 0.000000 1.125000 -0.531250 +v -0.044194 1.106694 -0.531250 +v -0.062500 1.062500 -0.531250 +v -0.044194 1.018306 -0.531250 +v 0.000000 1.000000 -0.531250 +v 0.044194 1.018306 -0.531250 +v 0.062500 1.062500 -0.531250 +v 0.044194 1.106694 -0.531250 +v 0.000000 1.093750 -0.375236 +v -0.022097 1.084597 -0.375236 +v -0.031250 1.062500 -0.375236 +v -0.022097 1.040403 -0.375236 +v 0.000000 1.031250 -0.375236 +v 0.022097 1.040403 -0.375236 +v 0.031250 1.062500 -0.375236 +v 0.022097 1.084597 -0.375236 +v 0.000000 1.062500 -0.312736 +vt 0.838068 0.886364 +vt 0.829545 0.894886 +vt 0.838068 0.903409 +vt 0.832042 0.900913 +vt 0.838068 0.903409 +vt 0.838068 0.886364 +vt 0.838068 0.886364 +vt 0.829545 0.894886 +vt 0.838068 0.903409 +vt 0.838068 0.886364 +vt 0.829545 0.894886 +vt 0.838068 0.903409 +vt 0.832042 0.900913 +vt 0.838068 0.903409 +vt 0.838068 0.886364 +vt 0.832042 0.900913 +vt 0.838068 0.903409 +vt 0.838068 0.886364 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.829545 0.894886 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.832042 0.900913 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.829545 0.894886 +vt 0.844095 0.900913 +vt 0.846591 0.894886 +vt 0.844095 0.888860 +vt 0.832042 0.888860 +vt 0.829545 0.894886 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.909091 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.863636 0.931818 +vt 0.880682 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vt 0.852273 0.892045 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.886364 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.909091 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.880682 0.886364 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.880682 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.863636 0.931818 +vt 0.880682 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.886364 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.909091 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.897727 +vt 0.880682 0.903409 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.880682 0.892045 +vt 0.863636 0.926136 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.863636 0.931818 +vt 0.880682 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.909091 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.914773 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.880682 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.880682 0.931818 +vt 0.863636 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.931818 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.852273 0.897727 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.880682 0.886364 +vt 0.886364 0.886364 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.863636 0.892045 +vt 0.880682 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.863636 0.931818 +vt 0.880682 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.903409 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.852273 0.886364 +vt 0.863636 0.886364 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.852273 0.931818 +vt 0.846591 0.914773 +vt 0.852273 0.909091 +vt 0.846591 0.903409 +vt 0.846591 0.892045 +vt 0.954545 0.926136 +vt 0.886364 0.931818 +vt 0.954545 0.931818 +vt 0.954545 0.914773 +vt 0.886364 0.920455 +vt 0.954545 0.920455 +vt 0.954545 0.897727 +vt 0.886364 0.903409 +vt 0.954545 0.903409 +vt 0.954545 0.886364 +vt 0.886364 0.892045 +vt 0.954545 0.892045 +vt 0.886364 0.926136 +vt 0.954545 0.909091 +vt 0.886364 0.914773 +vt 0.886364 0.909091 +vt 0.886364 0.897727 +vt 0.880682 0.903409 +vt 0.880682 0.914773 +vt 0.880682 0.920455 +vt 0.880682 0.926136 +vt 0.886364 0.886364 +vt 0.880682 0.892045 +vt 0.880682 0.897727 +vt 0.863636 0.903409 +vt 0.880682 0.886364 +vt 0.863636 0.892045 +vt 0.863636 0.926136 +vt 0.880682 0.909091 +vt 0.863636 0.914773 +vt 0.863636 0.909091 +vt 0.863636 0.897727 +vt 0.863636 0.931818 +vt 0.880682 0.931818 +vt 0.863636 0.920455 +vt 0.852273 0.914773 +vt 0.852273 0.909091 +vt 0.852273 0.897727 +vt 0.852273 0.892045 +vt 0.863636 0.886364 +vt 0.852273 0.920455 +vt 0.852273 0.931818 +vt 0.852273 0.926136 +vt 0.846591 0.926136 +vt 0.846591 0.914773 +vt 0.852273 0.903409 +vt 0.846591 0.903409 +vt 0.852273 0.886364 +vt 0.846591 0.892045 +vn 0.0000 0.0000 1.0000 +vn 0.7071 0.7071 0.0000 +vn -0.0000 1.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -0.6325 -0.6325 -0.4472 +vn -0.0000 -0.8944 -0.4472 +vn 0.6325 -0.6325 -0.4472 +vn 0.8944 -0.0000 -0.4472 +vn 0.6325 0.6325 -0.4472 +vn -0.0000 0.8944 -0.4472 +vn -0.6325 0.6325 -0.4472 +vn -0.8944 0.0000 -0.4472 +vn -0.7038 -0.7038 -0.0964 +vn -0.7038 0.7038 -0.0964 +vn 0.7038 0.7038 -0.0964 +vn 0.7038 -0.7038 -0.0964 +vn 0.0000 -0.9953 -0.0964 +vn -0.9953 0.0000 -0.0964 +vn -0.0000 0.9953 -0.0964 +vn 0.9953 0.0000 -0.0964 +vn 0.9490 0.0000 -0.3151 +vn 0.6711 -0.6711 -0.3151 +vn -0.6711 -0.6711 -0.3151 +vn -0.9490 0.0000 -0.3151 +vn 0.0000 0.9490 -0.3151 +vn 0.6711 0.6711 -0.3151 +vn -0.0000 0.0000 -1.0000 +vn -0.0000 -0.9490 -0.3151 +vn -0.6711 0.6711 -0.3151 +vn 0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.9239 -0.3827 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.9239 -0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.3827 -0.9239 0.0000 +vn -0.8263 -0.3423 -0.4472 +vn -0.3423 -0.8263 -0.4472 +vn 0.3423 -0.8263 -0.4472 +vn 0.8263 -0.3423 -0.4472 +vn 0.8263 0.3423 -0.4472 +vn 0.3423 0.8263 -0.4472 +vn -0.3423 0.8263 -0.4472 +vn -0.8263 0.3423 -0.4472 +vn -0.9196 -0.3809 -0.0964 +vn -0.3809 0.9196 -0.0964 +vn 0.9196 0.3809 -0.0964 +vn 0.3809 -0.9196 -0.0964 +vn -0.3809 -0.9196 -0.0964 +vn -0.9196 0.3809 -0.0964 +vn 0.3809 0.9196 -0.0964 +vn 0.9196 -0.3809 -0.0964 +vn 0.8768 -0.3632 -0.3151 +vn 0.3632 -0.8768 -0.3151 +vn -0.8768 -0.3632 -0.3151 +vn -0.8768 0.3632 -0.3151 +vn -0.3632 0.8768 -0.3151 +vn 0.8768 0.3632 -0.3151 +vn 0.3632 0.8768 -0.3151 +vn -0.3632 -0.8768 -0.3151 +s off +f 1201/2088/577 1203/2089/577 1197/2090/577 +f 1245/2091/577 1238/2092/577 1242/2093/577 +f 1283/2094/577 1285/2095/577 1279/2096/577 +f 1324/2097/577 1326/2098/577 1320/2099/577 +f 1368/2100/577 1361/2101/577 1365/2102/577 +f 1409/2103/577 1402/2104/577 1406/2105/577 +f 1197/2090/577 1198/2106/577 1201/2088/577 +f 1198/2106/577 1199/2107/577 1201/2088/577 +f 1199/2107/577 1200/2108/577 1201/2088/577 +f 1201/2088/577 1202/2109/577 1203/2089/577 +f 1203/2089/577 1204/2110/577 1197/2090/577 +f 1238/2092/577 1239/2111/577 1242/2093/577 +f 1239/2111/577 1240/2112/577 1242/2093/577 +f 1240/2112/577 1241/2113/577 1242/2093/577 +f 1242/2093/577 1243/2114/577 1244/2115/577 +f 1244/2115/577 1245/2091/577 1242/2093/577 +f 1279/2096/577 1280/2116/577 1283/2094/577 +f 1280/2116/577 1281/2117/577 1283/2094/577 +f 1281/2117/577 1282/2118/577 1283/2094/577 +f 1283/2094/577 1284/2119/577 1285/2095/577 +f 1285/2095/577 1286/2120/577 1279/2096/577 +f 1320/2099/577 1321/2121/577 1324/2097/577 +f 1321/2121/577 1322/2122/577 1324/2097/577 +f 1322/2122/577 1323/2123/577 1324/2097/577 +f 1324/2097/577 1325/2124/577 1326/2098/577 +f 1326/2098/577 1327/2125/577 1320/2099/577 +f 1361/2101/577 1362/2126/577 1365/2102/577 +f 1362/2126/577 1363/2127/577 1365/2102/577 +f 1363/2127/577 1364/2128/577 1365/2102/577 +f 1365/2102/577 1366/2129/577 1367/2130/577 +f 1367/2130/577 1368/2100/577 1365/2102/577 +f 1402/2104/577 1403/2131/577 1406/2105/577 +f 1403/2131/577 1404/2132/577 1406/2105/577 +f 1404/2132/577 1405/2133/577 1406/2105/577 +f 1406/2105/577 1407/2134/577 1408/2135/577 +f 1408/2135/577 1409/2103/577 1406/2105/577 +s 1 +f 1200/2136/578 1209/2137/579 1201/2138/579 +f 1198/2139/580 1207/2140/581 1199/2141/581 +f 1203/2142/582 1212/2143/583 1204/2144/583 +f 1201/2145/579 1210/2146/584 1202/2147/584 +f 1199/2141/581 1208/2148/578 1200/2136/578 +f 1197/2149/585 1206/2150/580 1198/2139/580 +f 1204/2144/583 1205/2151/585 1197/2149/585 +f 1202/2147/584 1211/2152/582 1203/2142/582 +f 1220/2153/586 1205/2151/587 1212/2143/586 +f 1213/2154/587 1206/2150/588 1205/2151/587 +f 1214/2155/588 1207/2140/589 1206/2150/588 +f 1215/2156/589 1208/2148/590 1207/2140/589 +f 1216/2157/590 1209/2137/591 1208/2148/590 +f 1217/2158/591 1210/2146/592 1209/2159/591 +f 1218/2160/592 1211/2152/593 1210/2146/592 +f 1211/2152/593 1220/2153/586 1212/2143/586 +f 1219/2161/582 1228/2162/594 1220/2153/583 +f 1217/2158/579 1226/2163/595 1218/2160/584 +f 1215/2156/581 1224/2164/596 1216/2157/578 +f 1213/2154/585 1222/2165/597 1214/2155/580 +f 1220/2153/583 1221/2166/598 1213/2154/585 +f 1218/2160/584 1227/2167/599 1219/2161/582 +f 1216/2157/578 1225/2168/600 1217/2169/579 +f 1214/2155/580 1223/2170/601 1215/2156/581 +f 1222/2165/597 1231/2171/602 1223/2170/601 +f 1221/2166/598 1230/2172/603 1222/2165/597 +f 1236/2173/604 1221/2166/598 1228/2162/594 +f 1235/2174/605 1228/2162/594 1227/2167/599 +f 1226/2163/595 1235/2174/605 1227/2167/599 +f 1233/2175/606 1226/2163/595 1225/2176/600 +f 1231/2171/602 1224/2164/596 1223/2170/601 +f 1232/2177/607 1225/2168/600 1224/2164/596 +f 1232/2177/607 1237/2178/608 1233/2179/606 +f 1231/2171/602 1237/2178/608 1232/2177/607 +f 1230/2172/603 1237/2180/608 1231/2171/602 +f 1229/2181/609 1237/2180/608 1230/2172/603 +f 1236/2173/604 1237/2182/608 1229/2181/609 +f 1235/2174/605 1237/2182/608 1236/2173/604 +f 1233/2175/606 1237/2183/608 1234/2184/610 +f 1234/2184/610 1237/2183/608 1235/2174/605 +f 1241/2185/611 1250/2186/612 1242/2187/612 +f 1239/2188/613 1248/2189/614 1240/2190/614 +f 1244/2191/615 1253/2192/616 1245/2193/616 +f 1242/2194/612 1251/2195/617 1243/2196/617 +f 1240/2190/614 1249/2197/611 1241/2185/611 +f 1238/2198/618 1247/2199/613 1239/2188/613 +f 1245/2193/616 1246/2200/618 1238/2198/618 +f 1243/2196/617 1252/2201/615 1244/2191/615 +f 1261/2202/619 1246/2200/620 1253/2192/619 +f 1246/2200/620 1255/2203/621 1247/2199/621 +f 1247/2199/621 1256/2204/622 1248/2189/622 +f 1256/2204/622 1249/2197/623 1248/2189/622 +f 1257/2205/623 1250/2186/624 1249/2197/623 +f 1258/2206/624 1251/2195/625 1250/2207/624 +f 1259/2208/625 1252/2201/626 1251/2195/625 +f 1260/2209/626 1253/2192/619 1252/2201/626 +f 1260/2209/615 1269/2210/627 1261/2202/616 +f 1258/2206/612 1267/2211/628 1259/2208/617 +f 1256/2204/614 1265/2212/629 1257/2205/611 +f 1254/2213/618 1263/2214/630 1255/2203/613 +f 1261/2202/616 1262/2215/631 1254/2213/618 +f 1259/2208/617 1268/2216/632 1260/2209/615 +f 1258/2217/612 1265/2212/629 1266/2218/633 +f 1255/2203/613 1264/2219/634 1256/2204/614 +f 1263/2214/630 1272/2220/635 1264/2219/634 +f 1262/2215/631 1271/2221/636 1263/2214/630 +f 1277/2222/637 1262/2215/631 1269/2210/627 +f 1276/2223/638 1269/2210/627 1268/2216/632 +f 1275/2224/639 1268/2216/632 1267/2211/628 +f 1266/2225/633 1275/2224/639 1267/2211/628 +f 1264/2219/634 1273/2226/640 1265/2212/629 +f 1265/2212/629 1274/2227/641 1266/2218/633 +f 1273/2226/640 1278/2228/608 1274/2227/641 +f 1272/2220/635 1278/2228/608 1273/2226/640 +f 1271/2221/636 1278/2229/608 1272/2220/635 +f 1270/2230/642 1278/2229/608 1271/2221/636 +f 1277/2222/637 1278/2231/608 1270/2230/642 +f 1276/2223/638 1278/2231/608 1277/2222/637 +f 1274/2232/641 1278/2233/608 1275/2224/639 +f 1275/2224/639 1278/2233/608 1276/2223/638 +f 1282/2234/578 1291/2235/579 1283/2236/579 +f 1280/2237/580 1289/2238/581 1281/2239/581 +f 1285/2240/582 1294/2241/583 1286/2242/583 +f 1283/2243/579 1292/2244/584 1284/2245/584 +f 1281/2239/581 1290/2246/578 1282/2234/578 +f 1279/2247/585 1288/2248/580 1280/2237/580 +f 1286/2242/583 1287/2249/585 1279/2247/585 +f 1284/2245/584 1293/2250/582 1285/2240/582 +f 1302/2251/586 1287/2249/587 1294/2241/586 +f 1295/2252/587 1288/2248/588 1287/2249/587 +f 1288/2248/588 1297/2253/589 1289/2238/589 +f 1297/2253/589 1290/2246/590 1289/2238/589 +f 1298/2254/590 1291/2235/591 1290/2246/590 +f 1291/2255/591 1300/2256/592 1292/2244/592 +f 1300/2256/592 1293/2250/593 1292/2244/592 +f 1301/2257/593 1294/2241/586 1293/2250/593 +f 1301/2257/582 1310/2258/594 1302/2251/583 +f 1299/2259/579 1308/2260/595 1300/2256/584 +f 1297/2253/581 1306/2261/596 1298/2254/578 +f 1295/2252/585 1304/2262/597 1296/2263/580 +f 1302/2251/583 1303/2264/598 1295/2252/585 +f 1300/2256/584 1309/2265/599 1301/2257/582 +f 1298/2254/578 1307/2266/600 1299/2267/579 +f 1296/2263/580 1305/2268/601 1297/2253/581 +f 1304/2262/597 1313/2269/602 1305/2268/601 +f 1303/2264/598 1312/2270/603 1304/2262/597 +f 1318/2271/604 1303/2264/598 1310/2258/594 +f 1317/2272/605 1310/2258/594 1309/2265/599 +f 1316/2273/610 1309/2265/599 1308/2260/595 +f 1307/2274/600 1316/2273/610 1308/2260/595 +f 1313/2269/602 1306/2261/596 1305/2268/601 +f 1314/2275/607 1307/2266/600 1306/2261/596 +f 1314/2275/607 1319/2276/608 1315/2277/606 +f 1313/2269/602 1319/2276/608 1314/2275/607 +f 1312/2270/603 1319/2278/608 1313/2269/602 +f 1311/2279/609 1319/2278/608 1312/2270/603 +f 1318/2271/604 1319/2280/608 1311/2279/609 +f 1317/2272/605 1319/2280/608 1318/2271/604 +f 1315/2281/606 1319/2282/608 1316/2273/610 +f 1316/2273/610 1319/2282/608 1317/2272/605 +f 1323/2283/611 1332/2284/612 1324/2285/612 +f 1321/2286/613 1330/2287/614 1322/2288/614 +f 1326/2289/615 1335/2290/616 1327/2291/616 +f 1324/2292/612 1333/2293/617 1325/2294/617 +f 1322/2288/614 1331/2295/611 1323/2283/611 +f 1320/2296/618 1329/2297/613 1321/2286/613 +f 1327/2291/616 1328/2298/618 1320/2296/618 +f 1325/2294/617 1334/2299/615 1326/2289/615 +f 1335/2290/619 1336/2300/620 1328/2298/620 +f 1328/2298/620 1337/2301/621 1329/2297/621 +f 1337/2301/621 1330/2287/622 1329/2297/621 +f 1338/2302/622 1331/2295/623 1330/2287/622 +f 1339/2303/623 1332/2284/624 1331/2295/623 +f 1340/2304/624 1333/2293/625 1332/2305/624 +f 1333/2293/625 1342/2306/626 1334/2299/626 +f 1334/2299/626 1343/2307/619 1335/2290/619 +f 1342/2306/615 1351/2308/627 1343/2307/616 +f 1340/2304/612 1349/2309/628 1341/2310/617 +f 1338/2302/614 1347/2311/629 1339/2303/611 +f 1336/2300/618 1345/2312/630 1337/2301/613 +f 1343/2307/616 1344/2313/631 1336/2300/618 +f 1341/2310/617 1350/2314/632 1342/2306/615 +f 1339/2303/611 1348/2315/633 1340/2316/612 +f 1337/2301/613 1346/2317/634 1338/2302/614 +f 1353/2318/636 1346/2317/634 1345/2312/630 +f 1352/2319/642 1345/2312/630 1344/2313/631 +f 1359/2320/637 1344/2313/631 1351/2308/627 +f 1358/2321/638 1351/2308/627 1350/2314/632 +f 1357/2322/639 1350/2314/632 1349/2309/628 +f 1356/2323/641 1349/2309/628 1348/2324/633 +f 1354/2325/635 1347/2311/629 1346/2317/634 +f 1355/2326/640 1348/2315/633 1347/2311/629 +f 1355/2326/640 1360/2327/608 1356/2328/641 +f 1354/2325/635 1360/2327/608 1355/2326/640 +f 1353/2318/636 1360/2329/608 1354/2325/635 +f 1352/2319/642 1360/2329/608 1353/2318/636 +f 1359/2320/637 1360/2330/608 1352/2319/642 +f 1358/2321/638 1360/2330/608 1359/2320/637 +f 1356/2323/641 1360/2331/608 1357/2322/639 +f 1357/2322/639 1360/2331/608 1358/2321/638 +f 1364/2332/578 1373/2333/579 1365/2334/579 +f 1362/2335/580 1371/2336/581 1363/2337/581 +f 1367/2338/582 1376/2339/583 1368/2340/583 +f 1365/2341/579 1374/2342/584 1366/2343/584 +f 1363/2337/581 1372/2344/578 1364/2332/578 +f 1361/2345/585 1370/2346/580 1362/2335/580 +f 1368/2340/583 1369/2347/585 1361/2345/585 +f 1366/2343/584 1375/2348/582 1367/2338/582 +f 1384/2349/586 1369/2347/587 1376/2339/586 +f 1369/2347/587 1378/2350/588 1370/2346/588 +f 1370/2346/588 1379/2351/589 1371/2336/589 +f 1379/2351/589 1372/2344/590 1371/2336/589 +f 1380/2352/590 1373/2333/591 1372/2344/590 +f 1381/2353/591 1374/2342/592 1373/2354/591 +f 1374/2342/592 1383/2355/593 1375/2348/593 +f 1383/2355/593 1376/2339/586 1375/2348/593 +f 1383/2355/582 1392/2356/594 1384/2349/583 +f 1381/2353/579 1390/2357/595 1382/2358/584 +f 1379/2351/581 1388/2359/596 1380/2352/578 +f 1377/2360/585 1386/2361/597 1378/2350/580 +f 1384/2349/583 1385/2362/598 1377/2360/585 +f 1382/2358/584 1391/2363/599 1383/2355/582 +f 1381/2364/579 1388/2359/596 1389/2365/600 +f 1379/2351/581 1386/2361/597 1387/2366/601 +f 1394/2367/603 1387/2366/601 1386/2361/597 +f 1385/2362/598 1394/2367/603 1386/2361/597 +f 1400/2368/604 1385/2362/598 1392/2356/594 +f 1391/2363/599 1400/2368/604 1392/2356/594 +f 1398/2369/610 1391/2363/599 1390/2357/595 +f 1397/2370/606 1390/2357/595 1389/2371/600 +f 1395/2372/602 1388/2359/596 1387/2366/601 +f 1388/2359/596 1397/2373/606 1389/2365/600 +f 1396/2374/607 1401/2375/608 1397/2373/606 +f 1395/2372/602 1401/2375/608 1396/2374/607 +f 1394/2367/603 1401/2376/608 1395/2372/602 +f 1393/2377/609 1401/2376/608 1394/2367/603 +f 1400/2368/604 1401/2378/608 1393/2377/609 +f 1399/2379/605 1401/2378/608 1400/2368/604 +f 1397/2370/606 1401/2380/608 1398/2369/610 +f 1398/2369/610 1401/2380/608 1399/2379/605 +f 1405/2381/611 1414/2382/612 1406/2383/612 +f 1403/2384/613 1412/2385/614 1404/2386/614 +f 1408/2387/615 1417/2388/616 1409/2389/616 +f 1406/2390/612 1415/2391/617 1407/2392/617 +f 1404/2386/614 1413/2393/611 1405/2381/611 +f 1402/2394/618 1411/2395/613 1403/2384/613 +f 1409/2389/616 1410/2396/618 1402/2394/618 +f 1407/2392/617 1416/2397/615 1408/2387/615 +f 1425/2398/619 1410/2396/620 1417/2388/619 +f 1410/2396/620 1419/2399/621 1411/2395/621 +f 1411/2395/621 1420/2400/622 1412/2385/622 +f 1420/2400/622 1413/2393/623 1412/2385/622 +f 1421/2401/623 1414/2382/624 1413/2393/623 +f 1422/2402/624 1415/2391/625 1414/2403/624 +f 1415/2391/625 1424/2404/626 1416/2397/626 +f 1424/2404/626 1417/2388/619 1416/2397/626 +f 1424/2404/615 1433/2405/627 1425/2398/616 +f 1422/2402/612 1431/2406/628 1423/2407/617 +f 1420/2400/614 1429/2408/629 1421/2401/611 +f 1418/2409/618 1427/2410/630 1419/2399/613 +f 1425/2398/616 1426/2411/631 1418/2409/618 +f 1423/2407/617 1432/2412/632 1424/2404/615 +f 1421/2401/611 1430/2413/633 1422/2414/612 +f 1420/2400/614 1427/2410/630 1428/2415/634 +f 1427/2410/630 1436/2416/635 1428/2415/634 +f 1426/2411/631 1435/2417/636 1427/2410/630 +f 1441/2418/637 1426/2411/631 1433/2405/627 +f 1440/2419/638 1433/2405/627 1432/2412/632 +f 1439/2420/639 1432/2412/632 1431/2406/628 +f 1438/2421/641 1431/2406/628 1430/2422/633 +f 1436/2416/635 1429/2408/629 1428/2415/634 +f 1437/2423/640 1430/2413/633 1429/2408/629 +f 1437/2423/640 1442/2424/608 1438/2425/641 +f 1436/2416/635 1442/2424/608 1437/2423/640 +f 1435/2417/636 1442/2426/608 1436/2416/635 +f 1434/2427/642 1442/2426/608 1435/2417/636 +f 1441/2418/637 1442/2428/608 1434/2427/642 +f 1440/2419/638 1442/2428/608 1441/2418/637 +f 1438/2421/641 1442/2429/608 1439/2420/639 +f 1439/2420/639 1442/2429/608 1440/2419/638 +f 1446/2430/578 1455/2431/579 1447/2432/579 +f 1444/2433/580 1453/2434/581 1445/2435/581 +f 1449/2436/582 1458/2437/583 1450/2438/583 +f 1447/2439/579 1456/2440/584 1448/2441/584 +f 1445/2435/581 1454/2442/578 1446/2430/578 +f 1443/2443/585 1452/2444/580 1444/2433/580 +f 1450/2438/583 1451/2445/585 1443/2443/585 +f 1448/2441/584 1457/2446/582 1449/2436/582 +f 1466/2447/586 1451/2445/587 1458/2437/586 +f 1451/2445/587 1460/2448/588 1452/2444/588 +f 1460/2448/588 1453/2434/589 1452/2444/588 +f 1461/2449/589 1454/2442/590 1453/2434/589 +f 1462/2450/590 1455/2431/591 1454/2442/590 +f 1455/2451/591 1464/2452/592 1456/2440/592 +f 1456/2440/592 1465/2453/593 1457/2446/593 +f 1457/2446/593 1466/2447/586 1458/2437/586 +f 1465/2453/582 1474/2454/594 1466/2447/583 +f 1463/2455/579 1472/2456/595 1464/2452/584 +f 1461/2449/581 1470/2457/596 1462/2450/578 +f 1459/2458/585 1468/2459/597 1460/2448/580 +f 1466/2447/583 1467/2460/598 1459/2458/585 +f 1465/2453/582 1472/2456/595 1473/2461/599 +f 1462/2450/578 1471/2462/600 1463/2463/579 +f 1460/2448/580 1469/2464/601 1461/2449/581 +f 1476/2465/603 1469/2464/601 1468/2459/597 +f 1475/2466/609 1468/2459/597 1467/2460/598 +f 1474/2454/594 1475/2466/609 1467/2460/598 +f 1481/2467/605 1474/2454/594 1473/2461/599 +f 1480/2468/610 1473/2461/599 1472/2456/595 +f 1471/2469/600 1480/2468/610 1472/2456/595 +f 1477/2470/602 1470/2457/596 1469/2464/601 +f 1470/2457/596 1479/2471/606 1471/2462/600 +f 1478/2472/607 1483/2473/608 1479/2471/606 +f 1477/2470/602 1483/2473/608 1478/2472/607 +f 1476/2465/603 1483/2474/608 1477/2470/602 +f 1475/2466/609 1483/2474/608 1476/2465/603 +f 1482/2475/604 1483/2476/608 1475/2466/609 +f 1481/2467/605 1483/2476/608 1482/2475/604 +f 1479/2477/606 1483/2478/608 1480/2468/610 +f 1480/2468/610 1483/2478/608 1481/2467/605 +f 1200/2136/578 1208/2148/578 1209/2137/579 +f 1198/2139/580 1206/2150/580 1207/2140/581 +f 1203/2142/582 1211/2152/582 1212/2143/583 +f 1201/2145/579 1209/2159/579 1210/2146/584 +f 1199/2141/581 1207/2140/581 1208/2148/578 +f 1197/2149/585 1205/2151/585 1206/2150/580 +f 1204/2144/583 1212/2143/583 1205/2151/585 +f 1202/2147/584 1210/2146/584 1211/2152/582 +f 1220/2153/586 1213/2154/587 1205/2151/587 +f 1213/2154/587 1214/2155/588 1206/2150/588 +f 1214/2155/588 1215/2156/589 1207/2140/589 +f 1215/2156/589 1216/2157/590 1208/2148/590 +f 1216/2157/590 1217/2169/591 1209/2137/591 +f 1217/2158/591 1218/2160/592 1210/2146/592 +f 1218/2160/592 1219/2161/593 1211/2152/593 +f 1211/2152/593 1219/2161/593 1220/2153/586 +f 1219/2161/582 1227/2167/599 1228/2162/594 +f 1217/2158/579 1225/2176/600 1226/2163/595 +f 1215/2156/581 1223/2170/601 1224/2164/596 +f 1213/2154/585 1221/2166/598 1222/2165/597 +f 1220/2153/583 1228/2162/594 1221/2166/598 +f 1218/2160/584 1226/2163/595 1227/2167/599 +f 1216/2157/578 1224/2164/596 1225/2168/600 +f 1214/2155/580 1222/2165/597 1223/2170/601 +f 1222/2165/597 1230/2172/603 1231/2171/602 +f 1221/2166/598 1229/2181/609 1230/2172/603 +f 1236/2173/604 1229/2181/609 1221/2166/598 +f 1235/2174/605 1236/2173/604 1228/2162/594 +f 1226/2163/595 1234/2184/610 1235/2174/605 +f 1233/2175/606 1234/2184/610 1226/2163/595 +f 1231/2171/602 1232/2177/607 1224/2164/596 +f 1232/2177/607 1233/2179/606 1225/2168/600 +f 1241/2185/611 1249/2197/611 1250/2186/612 +f 1239/2188/613 1247/2199/613 1248/2189/614 +f 1244/2191/615 1252/2201/615 1253/2192/616 +f 1242/2194/612 1250/2207/612 1251/2195/617 +f 1240/2190/614 1248/2189/614 1249/2197/611 +f 1238/2198/618 1246/2200/618 1247/2199/613 +f 1245/2193/616 1253/2192/616 1246/2200/618 +f 1243/2196/617 1251/2195/617 1252/2201/615 +f 1261/2202/619 1254/2213/620 1246/2200/620 +f 1246/2200/620 1254/2213/620 1255/2203/621 +f 1247/2199/621 1255/2203/621 1256/2204/622 +f 1256/2204/622 1257/2205/623 1249/2197/623 +f 1257/2205/623 1258/2217/624 1250/2186/624 +f 1258/2206/624 1259/2208/625 1251/2195/625 +f 1259/2208/625 1260/2209/626 1252/2201/626 +f 1260/2209/626 1261/2202/619 1253/2192/619 +f 1260/2209/615 1268/2216/632 1269/2210/627 +f 1258/2206/612 1266/2225/633 1267/2211/628 +f 1256/2204/614 1264/2219/634 1265/2212/629 +f 1254/2213/618 1262/2215/631 1263/2214/630 +f 1261/2202/616 1269/2210/627 1262/2215/631 +f 1259/2208/617 1267/2211/628 1268/2216/632 +f 1258/2217/612 1257/2205/611 1265/2212/629 +f 1255/2203/613 1263/2214/630 1264/2219/634 +f 1263/2214/630 1271/2221/636 1272/2220/635 +f 1262/2215/631 1270/2230/642 1271/2221/636 +f 1277/2222/637 1270/2230/642 1262/2215/631 +f 1276/2223/638 1277/2222/637 1269/2210/627 +f 1275/2224/639 1276/2223/638 1268/2216/632 +f 1266/2225/633 1274/2232/641 1275/2224/639 +f 1264/2219/634 1272/2220/635 1273/2226/640 +f 1265/2212/629 1273/2226/640 1274/2227/641 +f 1282/2234/578 1290/2246/578 1291/2235/579 +f 1280/2237/580 1288/2248/580 1289/2238/581 +f 1285/2240/582 1293/2250/582 1294/2241/583 +f 1283/2243/579 1291/2255/579 1292/2244/584 +f 1281/2239/581 1289/2238/581 1290/2246/578 +f 1279/2247/585 1287/2249/585 1288/2248/580 +f 1286/2242/583 1294/2241/583 1287/2249/585 +f 1284/2245/584 1292/2244/584 1293/2250/582 +f 1302/2251/586 1295/2252/587 1287/2249/587 +f 1295/2252/587 1296/2263/588 1288/2248/588 +f 1288/2248/588 1296/2263/588 1297/2253/589 +f 1297/2253/589 1298/2254/590 1290/2246/590 +f 1298/2254/590 1299/2267/591 1291/2235/591 +f 1291/2255/591 1299/2259/591 1300/2256/592 +f 1300/2256/592 1301/2257/593 1293/2250/593 +f 1301/2257/593 1302/2251/586 1294/2241/586 +f 1301/2257/582 1309/2265/599 1310/2258/594 +f 1299/2259/579 1307/2274/600 1308/2260/595 +f 1297/2253/581 1305/2268/601 1306/2261/596 +f 1295/2252/585 1303/2264/598 1304/2262/597 +f 1302/2251/583 1310/2258/594 1303/2264/598 +f 1300/2256/584 1308/2260/595 1309/2265/599 +f 1298/2254/578 1306/2261/596 1307/2266/600 +f 1296/2263/580 1304/2262/597 1305/2268/601 +f 1304/2262/597 1312/2270/603 1313/2269/602 +f 1303/2264/598 1311/2279/609 1312/2270/603 +f 1318/2271/604 1311/2279/609 1303/2264/598 +f 1317/2272/605 1318/2271/604 1310/2258/594 +f 1316/2273/610 1317/2272/605 1309/2265/599 +f 1307/2274/600 1315/2281/606 1316/2273/610 +f 1313/2269/602 1314/2275/607 1306/2261/596 +f 1314/2275/607 1315/2277/606 1307/2266/600 +f 1323/2283/611 1331/2295/611 1332/2284/612 +f 1321/2286/613 1329/2297/613 1330/2287/614 +f 1326/2289/615 1334/2299/615 1335/2290/616 +f 1324/2292/612 1332/2305/612 1333/2293/617 +f 1322/2288/614 1330/2287/614 1331/2295/611 +f 1320/2296/618 1328/2298/618 1329/2297/613 +f 1327/2291/616 1335/2290/616 1328/2298/618 +f 1325/2294/617 1333/2293/617 1334/2299/615 +f 1335/2290/619 1343/2307/619 1336/2300/620 +f 1328/2298/620 1336/2300/620 1337/2301/621 +f 1337/2301/621 1338/2302/622 1330/2287/622 +f 1338/2302/622 1339/2303/623 1331/2295/623 +f 1339/2303/623 1340/2316/624 1332/2284/624 +f 1340/2304/624 1341/2310/625 1333/2293/625 +f 1333/2293/625 1341/2310/625 1342/2306/626 +f 1334/2299/626 1342/2306/626 1343/2307/619 +f 1342/2306/615 1350/2314/632 1351/2308/627 +f 1340/2304/612 1348/2324/633 1349/2309/628 +f 1338/2302/614 1346/2317/634 1347/2311/629 +f 1336/2300/618 1344/2313/631 1345/2312/630 +f 1343/2307/616 1351/2308/627 1344/2313/631 +f 1341/2310/617 1349/2309/628 1350/2314/632 +f 1339/2303/611 1347/2311/629 1348/2315/633 +f 1337/2301/613 1345/2312/630 1346/2317/634 +f 1353/2318/636 1354/2325/635 1346/2317/634 +f 1352/2319/642 1353/2318/636 1345/2312/630 +f 1359/2320/637 1352/2319/642 1344/2313/631 +f 1358/2321/638 1359/2320/637 1351/2308/627 +f 1357/2322/639 1358/2321/638 1350/2314/632 +f 1356/2323/641 1357/2322/639 1349/2309/628 +f 1354/2325/635 1355/2326/640 1347/2311/629 +f 1355/2326/640 1356/2328/641 1348/2315/633 +f 1364/2332/578 1372/2344/578 1373/2333/579 +f 1362/2335/580 1370/2346/580 1371/2336/581 +f 1367/2338/582 1375/2348/582 1376/2339/583 +f 1365/2341/579 1373/2354/579 1374/2342/584 +f 1363/2337/581 1371/2336/581 1372/2344/578 +f 1361/2345/585 1369/2347/585 1370/2346/580 +f 1368/2340/583 1376/2339/583 1369/2347/585 +f 1366/2343/584 1374/2342/584 1375/2348/582 +f 1384/2349/586 1377/2360/587 1369/2347/587 +f 1369/2347/587 1377/2360/587 1378/2350/588 +f 1370/2346/588 1378/2350/588 1379/2351/589 +f 1379/2351/589 1380/2352/590 1372/2344/590 +f 1380/2352/590 1381/2364/591 1373/2333/591 +f 1381/2353/591 1382/2358/592 1374/2342/592 +f 1374/2342/592 1382/2358/592 1383/2355/593 +f 1383/2355/593 1384/2349/586 1376/2339/586 +f 1383/2355/582 1391/2363/599 1392/2356/594 +f 1381/2353/579 1389/2371/600 1390/2357/595 +f 1379/2351/581 1387/2366/601 1388/2359/596 +f 1377/2360/585 1385/2362/598 1386/2361/597 +f 1384/2349/583 1392/2356/594 1385/2362/598 +f 1382/2358/584 1390/2357/595 1391/2363/599 +f 1381/2364/579 1380/2352/578 1388/2359/596 +f 1379/2351/581 1378/2350/580 1386/2361/597 +f 1394/2367/603 1395/2372/602 1387/2366/601 +f 1385/2362/598 1393/2377/609 1394/2367/603 +f 1400/2368/604 1393/2377/609 1385/2362/598 +f 1391/2363/599 1399/2379/605 1400/2368/604 +f 1398/2369/610 1399/2379/605 1391/2363/599 +f 1397/2370/606 1398/2369/610 1390/2357/595 +f 1395/2372/602 1396/2374/607 1388/2359/596 +f 1388/2359/596 1396/2374/607 1397/2373/606 +f 1405/2381/611 1413/2393/611 1414/2382/612 +f 1403/2384/613 1411/2395/613 1412/2385/614 +f 1408/2387/615 1416/2397/615 1417/2388/616 +f 1406/2390/612 1414/2403/612 1415/2391/617 +f 1404/2386/614 1412/2385/614 1413/2393/611 +f 1402/2394/618 1410/2396/618 1411/2395/613 +f 1409/2389/616 1417/2388/616 1410/2396/618 +f 1407/2392/617 1415/2391/617 1416/2397/615 +f 1425/2398/619 1418/2409/620 1410/2396/620 +f 1410/2396/620 1418/2409/620 1419/2399/621 +f 1411/2395/621 1419/2399/621 1420/2400/622 +f 1420/2400/622 1421/2401/623 1413/2393/623 +f 1421/2401/623 1422/2414/624 1414/2382/624 +f 1422/2402/624 1423/2407/625 1415/2391/625 +f 1415/2391/625 1423/2407/625 1424/2404/626 +f 1424/2404/626 1425/2398/619 1417/2388/619 +f 1424/2404/615 1432/2412/632 1433/2405/627 +f 1422/2402/612 1430/2422/633 1431/2406/628 +f 1420/2400/614 1428/2415/634 1429/2408/629 +f 1418/2409/618 1426/2411/631 1427/2410/630 +f 1425/2398/616 1433/2405/627 1426/2411/631 +f 1423/2407/617 1431/2406/628 1432/2412/632 +f 1421/2401/611 1429/2408/629 1430/2413/633 +f 1420/2400/614 1419/2399/613 1427/2410/630 +f 1427/2410/630 1435/2417/636 1436/2416/635 +f 1426/2411/631 1434/2427/642 1435/2417/636 +f 1441/2418/637 1434/2427/642 1426/2411/631 +f 1440/2419/638 1441/2418/637 1433/2405/627 +f 1439/2420/639 1440/2419/638 1432/2412/632 +f 1438/2421/641 1439/2420/639 1431/2406/628 +f 1436/2416/635 1437/2423/640 1429/2408/629 +f 1437/2423/640 1438/2425/641 1430/2413/633 +f 1446/2430/578 1454/2442/578 1455/2431/579 +f 1444/2433/580 1452/2444/580 1453/2434/581 +f 1449/2436/582 1457/2446/582 1458/2437/583 +f 1447/2439/579 1455/2451/579 1456/2440/584 +f 1445/2435/581 1453/2434/581 1454/2442/578 +f 1443/2443/585 1451/2445/585 1452/2444/580 +f 1450/2438/583 1458/2437/583 1451/2445/585 +f 1448/2441/584 1456/2440/584 1457/2446/582 +f 1466/2447/586 1459/2458/587 1451/2445/587 +f 1451/2445/587 1459/2458/587 1460/2448/588 +f 1460/2448/588 1461/2449/589 1453/2434/589 +f 1461/2449/589 1462/2450/590 1454/2442/590 +f 1462/2450/590 1463/2463/591 1455/2431/591 +f 1455/2451/591 1463/2455/591 1464/2452/592 +f 1456/2440/592 1464/2452/592 1465/2453/593 +f 1457/2446/593 1465/2453/593 1466/2447/586 +f 1465/2453/582 1473/2461/599 1474/2454/594 +f 1463/2455/579 1471/2469/600 1472/2456/595 +f 1461/2449/581 1469/2464/601 1470/2457/596 +f 1459/2458/585 1467/2460/598 1468/2459/597 +f 1466/2447/583 1474/2454/594 1467/2460/598 +f 1465/2453/582 1464/2452/584 1472/2456/595 +f 1462/2450/578 1470/2457/596 1471/2462/600 +f 1460/2448/580 1468/2459/597 1469/2464/601 +f 1476/2465/603 1477/2470/602 1469/2464/601 +f 1475/2466/609 1476/2465/603 1468/2459/597 +f 1474/2454/594 1482/2475/604 1475/2466/609 +f 1481/2467/605 1482/2475/604 1474/2454/594 +f 1480/2468/610 1481/2467/605 1473/2461/599 +f 1471/2469/600 1479/2477/606 1480/2468/610 +f 1477/2470/602 1478/2472/607 1470/2457/596 +f 1470/2457/596 1478/2472/607 1479/2471/606 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/mas36.png b/src/main/resources/assets/hbm/textures/models/weapons/mas36.png new file mode 100644 index 0000000000000000000000000000000000000000..46240552ad7d57982f511d81fff01884c7fc779f GIT binary patch literal 16605 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 literal 0 HcmV?d00001 From c3eb6035aac0a03c6ad222f30132907a0ae5e5c7 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 18 Feb 2025 16:21:38 +0100 Subject: [PATCH 27/64] deplorable gollompus --- changelog | 4 +++- .../inventory/recipes/PyroOvenRecipes.java | 4 ++++ src/main/java/com/hbm/lib/HbmWorldGen.java | 10 +--------- src/main/java/com/hbm/uninos/NodeNet.java | 1 + .../com/hbm/uninos/networks/PowerNetwork.java | 7 +++---- .../hbm/textures/items/ingot_metal_sheet.png | Bin 5095 -> 5960 bytes ...s_this_please_reveal_all_secrets_to_me.png | Bin 0 -> 211 bytes 7 files changed, 12 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/misc/star_bober_what_is_this_please_reveal_all_secrets_to_me.png diff --git a/changelog b/changelog index 39319f886..46e6eac40 100644 --- a/changelog +++ b/changelog @@ -2,6 +2,8 @@ * Large deposits (hematite, malachite, bauxite) and caves (sulfur, asbestos) can now be toggled in the config * Removed recipes for most old particle accelerator parts * Dense coils no longer have recipes either for the most part, all coils with no recipes can be recycled back into dense wires +* Natural gas can now be processed in a pyrolysis oven, 12k of gas yields 8k hydrogen and one graphite ingot ## Fixed -* Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded \ No newline at end of file +* Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded +* Fixed bedrock coltan being way too common, drowning out almost all other bedrock ores \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java index 384783d3f..616adb05e 100644 --- a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java @@ -118,6 +118,10 @@ public class PyroOvenRecipes extends SerializableRecipe { recipes.add(new PyroOvenRecipe(60) .in(new FluidStack(GAS_COKER, 4_000)) .out(new FluidStack(Fluids.REFORMGAS, 100))); + //hydrogen and carbon from natgas + recipes.add(new PyroOvenRecipe(60) + .in(new FluidStack(Fluids.GAS, 12_000)) + .out(new FluidStack(Fluids.HYDROGEN, 8_000)).out(new ItemStack(ModItems.ingot_graphite, 1))); } private static void registerSFAuto(FluidType fluid) { diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 42f7e616a..9732970e9 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -168,7 +168,7 @@ public class HbmWorldGen implements IWorldGenerator { int colZ = (int) (colRand.nextGaussian() * 1500); int colRange = 750; - if((GeneralConfig.enable528BedrockSpawn || GeneralConfig.enable528BedrockDeposit) && rand.nextInt(GeneralConfig.bedrockRate) != 0) { + if((GeneralConfig.enable528BedrockSpawn || GeneralConfig.enable528BedrockDeposit) && rand.nextInt(GeneralConfig.bedrockRate) == 0) { int x = i + rand.nextInt(16) + 8; int z = j + rand.nextInt(16) + 8; @@ -302,14 +302,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - /*if(WorldConfig.siloStructure > 0 && rand.nextInt(WorldConfig.siloStructure) == 0) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); - int y = world.getHeightValue(x, z); - - new Silo().generate(world, rand, x, y, z); - }*/ - if(WorldConfig.factoryStructure > 0 && rand.nextInt(WorldConfig.factoryStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); diff --git a/src/main/java/com/hbm/uninos/NodeNet.java b/src/main/java/com/hbm/uninos/NodeNet.java index 650d902bd..c40d41a3e 100644 --- a/src/main/java/com/hbm/uninos/NodeNet.java +++ b/src/main/java/com/hbm/uninos/NodeNet.java @@ -68,6 +68,7 @@ public abstract class NodeNet { /// GENERAL POWER NET CONTROL /// public void invalidate() { this.valid = false; UniNodespace.activeNodeNets.remove(this); } public boolean isValid() { return this.valid; } + public void resetTrackers() { } public abstract void update(); public void destroy() { diff --git a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java index 76897c4fc..174f553a9 100644 --- a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java +++ b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java @@ -22,10 +22,6 @@ public class PowerNetwork extends NodeNet { public HashMap providerEntries = new HashMap(); public long energyTracker = 0L; - - public void resetEnergyTracker() { - this.energyTracker = 0; - } @Override // this was all fun and games but let's take a few steps back: this generics stuff is kinda breaking shit, and as it turns out, apparently nothing even uses the type public HashMap, Long> receiverEntries() { @@ -39,6 +35,9 @@ public class PowerNetwork extends NodeNet { protected static int timeout = 3_000; + @Override public void resetTrackers() { this.energyTracker = 0; } + + @Override public void update() { if(providerEntries.isEmpty()) return; diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png index 94d7d4a402abdfc9f252ff212aedfbfa91a1b6c8..1490b456c50b4b40149a7c967d32e477f1d57957 100644 GIT binary patch literal 5960 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≠X4MLzktC(LM)Poac!K ztf$TMl9yrc@0X^37>P*?MF%uA>>@EO31p|$C%}lm0i`|LD)k%kA?wG@y&41&l0uRc-V^w4WF?duh>{FP8>PPhLR$hkG5dGxUet072jMZ zvhvo_ZLu)yaB%5d50fDpG*KE(cGwoABQGOKoIEqLyu1~9F`o{p3?Ux;+fw~QuO9FL z6y+}qy~W`SwT4IZ5*H4HQ|S3eY=U>Ghz!s~hN6?k6SbbIDIfLPCO2pJjvqvyqn} zsh5WPkfP-0>Z2?xYSF%Kx1<50fq}=a5x@JzYvo8V|9`gA2UQk0$wvSH002ov JPDHLkV1f>z!m|JX diff --git a/src/main/resources/assets/hbm/textures/misc/star_bober_what_is_this_please_reveal_all_secrets_to_me.png b/src/main/resources/assets/hbm/textures/misc/star_bober_what_is_this_please_reveal_all_secrets_to_me.png new file mode 100644 index 0000000000000000000000000000000000000000..eb6de1f3c4b12b424ff58fab2e2af2ee1ea28882 GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqEX7WqAsj$Z!;#Vf+} z(rA3by*PE}x+Nw|g2l1MuG;B|JJ-G0zSK9gAvo4*QTDt~In$O*$ys$M@w)`G=&kIc zeRop+X~_Q)Ff3o?U8D6*>ClDtlRq9+r@WXY^_Kld?Pp%eN5-e#{LWDUx{ATm)z4*} HQ$iB}c6L#m literal 0 HcmV?d00001 From d4f62675c490704db72131c8539daaa22ffebc8e Mon Sep 17 00:00:00 2001 From: ItsMakar <63492966+iocmet@users.noreply.github.com> Date: Wed, 19 Feb 2025 07:43:13 +0200 Subject: [PATCH 28/64] Update ru_RU.lang --- src/main/resources/assets/hbm/lang/ru_RU.lang | 84 ++++++++++--------- 1 file changed, 44 insertions(+), 40 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 0d47ac885..373754637 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1400,20 +1400,20 @@ hbm.key.craneMoveLeft=ДвОгать краМ влевП hbm.key.craneMoveRight=ДвОгать краМ вправП hbm.key.craneMoveUp=ДвОгать краМ вперёЎ hbm.key.dash=РывПк -hbm.key.gunPrimary=Primary Fire -hbm.key.gunSecondary=Secondary Fire -hbm.key.gunTertitary=Gun Sights +hbm.key.gunPrimary=ОсМПвМПй ПгПМь +hbm.key.gunSecondary=АльтерМатОвМый ПгПМь +hbm.key.gunTertitary=ПереключОть прОцел hbm.key.toggleBack=ВключОть раМец hbm.key.toggleHUD=ВключОть HUD -hbm.key.trainInv=Train Inventory +hbm.key.trainInv=Открыть ОМвеМтарь пПезЎа hbm.key.reload=ПерезаряЎОть -hbmfluid.alumina=Alumina +hbmfluid.alumina=ГлОМПзёЌ hbmfluid.amat=АМтОЌатерОя hbmfluid.aromatics=АрПЌатОческОе углевПЎПрПЎы hbmfluid.aschrab=АМтОшрабОЎОй hbmfluid.balefire=РакетМПе жар-тПплОвП -hbmfluid.bauxite_solution=Bauxite Solution +hbmfluid.bauxite_solution=РаствПр бПксОта hbmfluid.biofuel=БОПтПплОвП hbmfluid.biogas=БОПгаз hbmfluid.bitumen=БОтуЌ @@ -1472,15 +1472,15 @@ hbmfluid.iongel=ИПММый гель hbmfluid.kerosene=КерПсОМ hbmfluid.kerosene_reform=АвОацОПММПе тПплОвП hbmfluid.lava=Лава -hbmfluid.lead=Liquid Lead -hbmfluid.lead_hot=Hot Liquid Lead +hbmfluid.lead=ЖОЎкОй свОМец +hbmfluid.lead_hot=ГПрячОй жОЎкОй свОМец hbmfluid.lightoil=Легкая Мефть hbmfluid.lightoil_crack=КрекОрПваММая легкая Мефть hbmfluid.lightoil_ds=ДесульфурОзПваММая легкая Мефть hbmfluid.lightoil_vacuum=ВакууЌМая лёгкая Мефть hbmfluid.lpg=СжОжеММый пПпутМый газ (СПГ) hbmfluid.lubricant=МашОММая сЌазка -hbmfluid.lye=Lye +hbmfluid.lye=ЩёлПк hbmfluid.mercury=Ртуть hbmfluid.mug=ПОвП "Mug Root" hbmfluid.mug_hot=ГПрячее пОвП "Mug Root" @@ -1499,9 +1499,9 @@ hbmfluid.oil_ds=ДесульфурОзПваММая МеПчОщеММая Ме hbmfluid.oxygen=ЖОЎкОй кОслПрПЎ hbmfluid.oxyhydrogen=ГреЌучОй газ hbmfluid.pain=ПаМЎеЌПМОуЌ(III)РаствПр таМталОта -hbmfluid.perfluoromethyl=Perfluoromethyl -hbmfluid.perfluoromethyl_cold=Cold Perfluoromethyl -hbmfluid.perfluoromethyl_hot=Hot Perfluoromethyl +hbmfluid.perfluoromethyl=ПерфтПрПЌетОл +hbmfluid.perfluoromethyl_cold=ХПлПЎМый перфтПрПЌетОл +hbmfluid.perfluoromethyl_hot=ГПрячОй перфтПрПЌетОл hbmfluid.peroxide=ПерПксОЎ вПЎПрПЎа hbmfluid.petroil=БеМзОМ hbmfluid.petroil_leaded=ЭтОлОрПваММый беМзОМ @@ -1533,12 +1533,12 @@ hbmfluid.smoke_leaded=СвОМцПвый ЎыЌ hbmfluid.smoke_poison=ЯЎПвОтый ЎыЌ hbmfluid.sodium=ЖОЎкОй МатрОй hbmfluid.sodium_hot=ГПрячОй жОЎкОй МатрОй -hbmfluid.sodium_aluminate=Sodium Aluminate +hbmfluid.sodium_aluminate=АлюЌОМат МатрОя hbmfluid.solvent=РаствПрОтель hbmfluid.sourgas=КОслый газ hbmfluid.spentsteam=Пар МОзкПгП ЎавлеМОя hbmfluid.steam=Пар -hbmfluid.stellar_flux=Stellar Flux +hbmfluid.stellar_flux=ЗвёзЎМый флюс hbmfluid.sulfuric_acid=СерМая кОслПта hbmfluid.sunfloweroil=ППЎсПлМечМПе ЌаслП hbmfluid.superhotsteam=Перегретый пар @@ -1654,7 +1654,7 @@ hbmmat.redphosphorus=КрасМый фПсфПр hbmmat.redstone=РеЎстПуМ hbmmat.rubber=РезОМа hbmmat.saltpeter=СелОтра -hbmmat.saturnite=СатурМОт +hbmmat.saturnite=СатурМОта hbmmat.schrabidate=КрабОЎата железа hbmmat.schrabidium=КрабОЎОя hbmmat.schraranium=КрараМОй @@ -1679,7 +1679,7 @@ hbmmat.uranium233=УраМ-233 hbmmat.uranium235=УраМ-235 hbmmat.uranium238=УраМ-238 hbmmat.watzmud=ТПксОчМые ПтхПЎы -hbmmat.weaponsteel=Weapon Steel +hbmmat.weaponsteel=ОружейМПй сталО hbmmat.whitephosphorus=Белый фПсфПр hbmmat.wood=Wood hbmmat.workersalloy=Деш @@ -3798,10 +3798,10 @@ item.ore_separated.name=ОтЎелёММая %s беЎрПкПвая руЎа item.overfuse.name=СОМгулярМая Птвёртка item.overfuse.desc=ЧтП item.oxy_mask.name=КОслПрПЎМая Ќаска -item.pa_coil.bscco.name=Large BSCCO Coil -item.pa_coil.chlorophyte.name=Large Chlorophyte Coil -item.pa_coil.gold.name=Large Gold Coil -item.pa_coil.niobium.name=Large NbTi Coil +item.pa_coil.bscco.name=БПльшая катушка Оз BSCCO +item.pa_coil.chlorophyte.name=БПльшая хлПрПфОтПвая катушка +item.pa_coil.gold.name=БПльшая зПлПтая катушка +item.pa_coil.niobium.name=БПльшая МОПбОй-тОтаМПвая катушка item.paa_boots.name="Старые ЎПбрые бПтОМкО" Оз PaA item.paa_legs.name=УкреплёММые пПМПжО Оз PaA item.paa_plate.name=ЗащОщающая груЎМая пластОМа Оз PaA @@ -3821,8 +3821,8 @@ item.page_of_.page6.name=СтраМОца 6 item.page_of_.page7.name=СтраМОца 7 item.page_of_.page8.name=СтраМОца 8 item.pancake.name=БлОМчОкО с ЌеталлПлПЌПЌ, гвПзЎяЌО О саЌПцветМПй пылью -item.part_barrel_heavy.name=Heavy %s Barrel -item.part_barrel_light.name=Light %s Barrel +item.part_barrel_heavy.name=Тяжелый ствПл Оз %s +item.part_barrel_light.name=ЛёгкОй ствПл Оз %s item.part_beryllium.name=КПрПбка берОллОевПй пылО item.part_carbon.name=КПрПбка угПльМПй пылО item.part_copper.name=КПрПбка ЌеЎМПй пылО @@ -3831,13 +3831,13 @@ item.part_generic.lde.name=ЭлеЌеМт ЌалПй плПтМПстО item.part_generic.piston_electric.name=ЭлектрОческОй пПршеМь item.part_generic.piston_hydraulic.name=ГОЎравлОческОй пПршеМь item.part_generic.piston_pneumatic.name=ПМевЌатОческОй пПршеМь -item.part_grip.name=%s Grip +item.part_grip.name=РукПятка Оз %s item.part_lithium.name=КПрПбка лОтОевПй пылО -item.part_mechanism.name=%s Mechanism +item.part_mechanism.name=ОружейМый ЌехаМОзЌ Оз %s item.part_plutonium.name=КПрПбка плутПМОевПй пылО -item.part_receiver_heavy.name=Heavy %s Receiver -item.part_receiver_light.name=Light %s Receiver -item.part_stock.name=%s Stock +item.part_receiver_heavy.name=Тяжелая ствПльМая кПрПбка Оз %s +item.part_receiver_light.name=Лёгкая ствПльМая кПрПбка Оз %s +item.part_stock.name=ПрОклаЎ Оз %s item.particle_aelectron.name=Капсула с ППзОтрПМПЌ item.particle_amat.name=Капсула с АМтОЌатерОей item.particle_aproton.name=Капсула с АМтОпрПтПМПЌ @@ -4844,12 +4844,12 @@ itemGroup.tabTemplate=КаблПМы NTM itemGroup.tabTest=ТестПвая вклаЎка NTM itemGroup.tabWeapon=ОружОе О турелО NTM -pa.idle=Idle -pa.idle.desc=Idle +pa.idle=ОжОЎаМОе +pa.idle.desc=ОжОЎаМОе pa.running=Running pa.running.desc=Running -pa.success=Success -pa.success.desc=Success +pa.success=ЗавершеМП! +pa.success.desc=ЗавершеМП! pa.pause_unloaded=Paused pa.pause_unloaded.desc=The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded. pa.crash_defocus=Defocus! @@ -4935,38 +4935,42 @@ rbmk.screen.rod=Управ: %s rbmk.screen.temp=ТеЌп: %s rbmk.screen.xenon=КсеМПМ: %s -shape.barrelHeavy=Heavy Barrel -shape.barrelLight=Light Barrel +shape.barrelHeavy=Тяжелый ствПл +shape.barrelLight=ЛёгкОй ствПл shape.billet=ЗагПтПвка shape.blade=Blade -shape.blades=Shredder Blades +shape.blades=ЛезвОя ОзЌельчОтеля shape.block=БлПк shape.c9=Small Caliber Casing shape.c50=Large Caliber Casing shape.dust=ППрПшПк shape.dusttiny=Кучка пылО -shape.grip=Grip -shape.gunMechanism=Mechanism +shape.grip=РукПятка +shape.gunMechanism=ОружейМый ЌехаМОзЌ shape.hull_big=Big Shell shape.hull_small=Small Shell shape.ingot=СлОтПк shape.nugget=СаЌПрПЎПк shape.quantum=КваМта shape.quart=Четверть блПка -shape.receiverHeavy=Heavy Receiver -shape.receiverLight=Light Receiver +shape.receiverHeavy=Тяжелая ствПльМая кПрПбка +shape.receiverLight=Лёгкая ствПльМая кПрПбка shape.ntmpipe=Труба shape.plate=ПластОМа shape.plateTriple=ЛОтая пластОМа shape.shell=ОбПлПчка -shape.stamp=Press Stamp -shape.stock=Stock +shape.stamp=КтаЌп Ўля пресса +shape.stock=ПрОклаЎ shape.wireFine=ПрПвПЎа shape.wireDense=ПлПтМый прПвПЎ shape.wiresDense=ПлПтМые прПвПЎа soundCategory.ntmMachines=МехаМОзЌы NTM +stat.ntmBullets=СЎелаМП выстрелПв +stat.ntmLegendary=СПзЎаМП легеМЎарМых преЎЌетПв +stat.ntmMines=ППЎрывПв Ма ЌОМах + tile.absorber.name=ППглПтОтель раЎОацОО tile.absorber_green.name=УсПвершеМствПваММый пПглПтОтель раЎОацОО tile.absorber_pink.name=ЭлОтМый пПглПтОтель раЎОацОО From 4c82dfcdcb058d2badb4a450d232c17d9d7cda95 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 19 Feb 2025 16:37:17 +0100 Subject: [PATCH 29/64] scraping out old crap --- .../hbm/handler/nei/HadronRecipeHandler.java | 164 ------------------ .../hbm/inventory/recipes/HadronRecipes.java | 40 +---- src/main/java/com/hbm/main/NEIRegistry.java | 1 - .../hbm/textures/gui/nei/gui_nei_hadron.png | Bin 1684 -> 0 bytes 4 files changed, 2 insertions(+), 203 deletions(-) delete mode 100644 src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java delete mode 100644 src/main/resources/assets/hbm/textures/gui/nei/gui_nei_hadron.png diff --git a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java b/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java deleted file mode 100644 index b9325cd9c..000000000 --- a/src/main/java/com/hbm/handler/nei/HadronRecipeHandler.java +++ /dev/null @@ -1,164 +0,0 @@ -package com.hbm.handler.nei; - -import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; - -import java.awt.Rectangle; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.Locale; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.imc.ICompatNHNEI; -import com.hbm.inventory.gui.GUIHadron; -import com.hbm.inventory.recipes.HadronRecipes; -import com.hbm.inventory.recipes.HadronRecipes.HadronRecipe; -import com.hbm.lib.RefStrings; - -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.FontRenderer; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; - -public class HadronRecipeHandler extends TemplateRecipeHandler implements ICompatNHNEI { - - @Override - public ItemStack[] getMachinesForRecipe() { - return new ItemStack[]{ - new ItemStack(ModBlocks.hadron_core)}; - } - @Override - public String getRecipeID() { - return "hadron"; - } - public LinkedList transferRectsRec = new LinkedList(); - public LinkedList transferRectsGui = new LinkedList(); - public LinkedList> guiRec = new LinkedList>(); - public LinkedList> guiGui = new LinkedList>(); - - public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { - - PositionedStack input1; - PositionedStack input2; - PositionedStack output1; - PositionedStack output2; - int momentum; - boolean analysisOnly; - - public RecipeSet(HadronRecipe recipe) { - - this.input1 = new PositionedStack(recipe.in1.toStack(), 12, 24); - this.input2 = new PositionedStack(recipe.in2.toStack(), 30, 24); - this.output1 = new PositionedStack(recipe.out1, 84, 24); - this.output2 = new PositionedStack(recipe.out2, 102, 24); - this.momentum = recipe.momentum; - this.analysisOnly = recipe.analysisOnly; - } - - @Override - public List getIngredients() { - return Arrays.asList(new PositionedStack[] { input1, input2 }); - } - - @Override - public List getOtherStacks() { - return Arrays.asList(new PositionedStack[] { output1, output2 }); - } - - @Override - public PositionedStack getResult() { - return output1; - } - } - - @Override - public String getRecipeName() { - return "Particle Accelerator"; - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - - if(outputId.equals("hadron") && getClass() == HadronRecipeHandler.class) { - - List recipes = HadronRecipes.getRecipes(); - - for(HadronRecipe recipe : recipes) { - this.arecipes.add(new RecipeSet(recipe)); - } - - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - - List recipes = HadronRecipes.getRecipes(); - - for(HadronRecipe recipe : recipes) { - - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.out1, result) || NEIServerUtils.areStacksSameTypeCrafting(recipe.out2, result)) { - this.arecipes.add(new RecipeSet(recipe)); - } - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - - if(inputId.equals("hadron") && getClass() == HadronRecipeHandler.class) { - loadCraftingRecipes("hadron", new Object[0]); - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - - List recipes = HadronRecipes.getRecipes(); - - for(HadronRecipe recipe : recipes) { - - if(NEIServerUtils.areStacksSameTypeCrafting(recipe.in1.toStack(), ingredient) || NEIServerUtils.areStacksSameTypeCrafting(recipe.in2.toStack(), ingredient)) { - this.arecipes.add(new RecipeSet(recipe)); - } - } - } - - @Override - public void loadTransferRects() { - transferRectsGui = new LinkedList(); - guiGui = new LinkedList>(); - - transferRects.add(new RecipeTransferRect(new Rectangle(58 - 5, 34 - 11, 24, 18), "hadron")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(72 - 5, 28 - 11, 30, 30), "hadron")); - guiGui.add(GUIHadron.class); - RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); - RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); - } - - @Override - public void drawExtras(int recipe) { - - RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); - - if(rec.analysisOnly) - drawTexturedModalRect(128, 23, 0, 86, 18, 18); - - FontRenderer fontRenderer = Minecraft.getMinecraft().fontRenderer; - - String mom = String.format(Locale.US, "%,d", rec.momentum); - fontRenderer.drawString(mom, -fontRenderer.getStringWidth(mom) / 2 + 30, 42, 0x404040); - } - - @Override - public String getGuiTexture() { - return RefStrings.MODID + ":textures/gui/nei/gui_nei_hadron.png"; - } -} diff --git a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java index e0694e1ae..0d2c443e1 100644 --- a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java @@ -5,7 +5,6 @@ import java.util.ArrayList; import java.util.List; import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; @@ -183,45 +182,10 @@ public class HadronRecipes extends SerializableRecipe { } @Override - public void readRecipe(JsonElement recipe) { - JsonObject obj = (JsonObject) recipe; - int momentum = obj.get("momentum").getAsInt(); - boolean lineMode = obj.get("lineMode").getAsBoolean(); - ItemStack[] in = this.readItemStackArray(obj.get("inputs").getAsJsonArray()); - ItemStack[] out = this.readItemStackArray(obj.get("outputs").getAsJsonArray()); - - this.recipes.add(new HadronRecipe( - in[0], - in[1], - momentum, - out[0], - out[1], - lineMode - )); - } + public void readRecipe(JsonElement recipe) { } @Override - public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { - HadronRecipe rec = (HadronRecipe) recipe; - - writer.name("momentum").value(rec.momentum); - writer.name("lineMode").value(rec.analysisOnly); - - writer.name("inputs").beginArray(); - this.writeItemStack(rec.in1.toStack(), writer); - this.writeItemStack(rec.in2.toStack(), writer); - writer.endArray(); - - writer.name("outputs").beginArray(); - this.writeItemStack(rec.out1, writer); - this.writeItemStack(rec.out2, writer); - writer.endArray(); - } - - @Override - public String getComment() { - return "Rules: Both in- and output stacks cannot be null. Stacksizes are set to 1 for all stacks."; - } + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { } @Override public void deleteRecipes() { diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 9ca24ffcd..79c495534 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -36,7 +36,6 @@ public class NEIRegistry { handlers.add(new CrystallizerRecipeHandler()); handlers.add(new BookRecipeHandler()); handlers.add(new FusionRecipeHandler()); - handlers.add(new HadronRecipeHandler()); handlers.add(new SILEXRecipeHandler()); handlers.add(new FuelPoolHandler()); handlers.add(new CrucibleSmeltingHandler()); diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_hadron.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_hadron.png deleted file mode 100644 index ec0b04bbdcfe6cf9a45dfe568b25c2cd80021c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1684 zcmd5+dpOg39RB`(*34zjT*8CG>S$?8B9mx~EqQ3vqnzB59O=|d&1DtabkQu8^N22J z6DpK(8d1znHx)HO9-a7Uoc9GR8$NP0HnVkWlJ!tVDzKcZ`Q{wbrm6d`tdE`yYc3~Nu_@o*NvpQIEOrT4# zp}H)0Xdulu#oja(U59Btw}y4%&h=9^dwG>{v|UFg2CiXQ@CBw!4#&3WY3MmxFs$h7 zE2=L}-;lMnn8#C3jfS1hlhS%~7jLNTFQ-(HU~w+sK0$z$4#3VC0-1VXTL2(O!@$H8 zWMBEm>Ra^ss{x#`X$^Y0o(*jT3?)C@ZVS6QCIL@R&j24qe}8n3KCY5DKCS7n5bqcP zyesJRM=|R&BSjXCkxtk|gScB_Xx-I-n{xFahIeJu3I+8z(m{B5c*DV|5FcSV3X01S zLqRyArsY26p+pkjpP&%FL6VaaMDIswd#RXUAEBkq=~@;uL~)0>gdl=&d`ZvGxYyf_ ztsV(Cj_HRBzC&%}(+6g!2QdmYiaT2}3gekfrptW&2YuXqGa(v5rerk_oLO{ZRA<`> z32$`C?FDx-$n`UO(diSdP{AMHA&klm@oYfV%9rxGz91B4dR&X*_PAL-YuTtgrW#XV z1y$L*=!i4HFG5e5NER4YIQrm}$J*@SAIJTD`-$&l)l0vuzAoT!-ZkdCq-ND|L^X+D zla08%k4~5BC6Ws&R(K2hLUksauRNfx>k#qPn|Z87&4o?-gqS{Ngm?UkMPxkQVz|Gm+s(#_z+F~)SkF*bH8Uw3 zek??mg#t}mx4HDjmPVN^Hp7`k*Ym9G%^1ja1hs^2s(j)uVPQ%65)u*NzPbz+((XDf zOo-(zL`{P?XR^0|?j8?E8EA*c%o5k=anYrC_L{lS7Q7U>)0}kI0d$wB4;B|b1dWlR zJmpYVjUer9sX9 z*j`U-;jHD6xSUQ1<7^F|c@bmM7|A%kf@V*)E=6-Ed^T4E&XpyjPXl_c8{nT!t<<~~ zMKE5Vn{jkt_VU%jgzHdsr61Qrdpx3uy#KyX!neDfL7q9XuMKGqKYhOeP}@TuBA(W- z_V%%KZT1$&wJQ)(LX#OcPgxS8s~aVf{pam5cl8_x3+@A z&szZ<3(Rq{$uE-~yZ@cK{|sdHJ>F2FN8v4v=0wVaGckN~vT|;&p2AzFNItmAH2Ccu)NhV;noS*gHnsIJipH%4D<0NLEvy@cs4NlnExrxQWp?Q;q>s z197p?hr^~u<8iQ^H%eMm_^M%&S=F6!nPZeZ?$KJb37mDY2FAusMtO{y*lmaXQPO<{ zR7yBIHEm!@pd>kwUK<&`J|PN9nT$Y57YH^wb&V&i4O{q}y;*uvHlYxS_f||b+r^I~ zbv^GK5NuBKP>-Ju_ild{#XMZ$r7JzT zrBNBX$W)0&;P8luuH+!9N=H+ZU?>dz*5#a@wqq{AT}I$)ZRvj~s`vi9L>F30vgw|4 z=6cB{WyR{gZ?QU2U09(-QZ3Sq(pAS;Yl6s6aPO# ZGfl!3c@0Om?N0hzo*$J)sq~II`4@ Date: Thu, 20 Feb 2025 04:03:03 +0200 Subject: [PATCH 30/64] Replace manual matrix restoration in haze and radiation fog particle renderers to glPushMatrix and glPopMatrix --- .../java/com/hbm/particle/ParticleHaze.java | 8 ++--- .../hbm/particle/ParticleRadiationFog.java | 34 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/hbm/particle/ParticleHaze.java b/src/main/java/com/hbm/particle/ParticleHaze.java index bc513a68a..dd8263ab4 100644 --- a/src/main/java/com/hbm/particle/ParticleHaze.java +++ b/src/main/java/com/hbm/particle/ParticleHaze.java @@ -21,8 +21,8 @@ import net.minecraft.world.World; public class ParticleHaze extends EntityFX { private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/haze.png"); - private TextureManager theRenderEngine; - private int maxAge; + private final TextureManager theRenderEngine; + private final int maxAge; public ParticleHaze(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) { super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); @@ -94,6 +94,7 @@ public class ParticleHaze extends EntityFX { Random rand = new Random(50); + GL11.glPushMatrix(); for(int i = 0; i < 25; i++) { double dX = rand.nextGaussian() * 2.5D; @@ -115,9 +116,8 @@ public class ParticleHaze extends EntityFX { tess.addVertexWithUV((double) (pX + p_70539_3_ * size + p_70539_6_ * size), (double) (pY + p_70539_4_ * size), (double) (pZ + p_70539_5_ * size + p_70539_7_ * size), 0, 0); tess.addVertexWithUV((double) (pX + p_70539_3_ * size - p_70539_6_ * size), (double) (pY - p_70539_4_ * size), (double) (pZ + p_70539_5_ * size - p_70539_7_ * size), 0, 1); tess.draw(); - - GL11.glTranslatef((float) -dX, (float) -dY, (float) -dZ); } + GL11.glPopMatrix(); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glDisable(GL12.GL_RESCALE_NORMAL); diff --git a/src/main/java/com/hbm/particle/ParticleRadiationFog.java b/src/main/java/com/hbm/particle/ParticleRadiationFog.java index d1eb3dcea..f80bc8780 100644 --- a/src/main/java/com/hbm/particle/ParticleRadiationFog.java +++ b/src/main/java/com/hbm/particle/ParticleRadiationFog.java @@ -21,14 +21,14 @@ import net.minecraft.world.World; public class ParticleRadiationFog extends EntityFX { private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/fog.png"); - private TextureManager theRenderEngine; + private final TextureManager theRenderEngine; private int maxAge; public ParticleRadiationFog(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) { super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); theRenderEngine = p_i1213_1_; maxAge = 100 + rand.nextInt(40); - + this.particleRed = this.particleGreen = this.particleBlue = 0; this.particleScale = 7.5F; } @@ -41,7 +41,7 @@ public class ParticleRadiationFog extends EntityFX { this.particleRed = red; this.particleGreen = green; this.particleBlue = blue; - + this.particleScale = scale; } @@ -49,14 +49,14 @@ public class ParticleRadiationFog extends EntityFX { this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; - + if(maxAge < 400) { maxAge = 400; } this.particleAge++; - + if (this.particleAge >= maxAge) { this.setDead(); @@ -78,11 +78,11 @@ public class ParticleRadiationFog extends EntityFX { } public void renderParticle(Tessellator tess, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) { - + this.theRenderEngine.bindTexture(texture); - + float alpha = 0; - + alpha = (float) Math.sin(particleAge * Math.PI / (400F)) * 0.125F; GL11.glColor4f(0.85F, 0.9F, 0.5F, alpha); @@ -92,22 +92,23 @@ public class ParticleRadiationFog extends EntityFX { GL11.glDepthMask(false); OpenGlHelper.glBlendFunc(770, 771, 1, 0); RenderHelper.disableStandardItemLighting(); - + Random rand = new Random(50); - + + GL11.glPushMatrix(); for(int i = 0; i < 25; i++) { double dX = (rand.nextGaussian() - 1D) * 2.5D; double dY = (rand.nextGaussian() - 1D) * 0.15D; double dZ = (rand.nextGaussian() - 1D) * 2.5D; double size = rand.nextDouble() * particleScale; - + GL11.glTranslatef((float) dX, (float) dY, (float) dZ); - + float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double)p_70539_2_ - interpPosX) + rand.nextGaussian() * 0.5); float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double)p_70539_2_ - interpPosY) + rand.nextGaussian() * 0.5); float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double)p_70539_2_ - interpPosZ) + rand.nextGaussian() * 0.5); - + tess.startDrawingQuads(); tess.setNormal(0.0F, 1.0F, 0.0F); tess.setBrightness(240); @@ -116,14 +117,13 @@ public class ParticleRadiationFog extends EntityFX { tess.addVertexWithUV((double)(pX + p_70539_3_ * size + p_70539_6_ * size), (double)(pY + p_70539_4_ * size), (double)(pZ + p_70539_5_ * size + p_70539_7_ * size), 0, 0); tess.addVertexWithUV((double)(pX + p_70539_3_ * size - p_70539_6_ * size), (double)(pY - p_70539_4_ * size), (double)(pZ + p_70539_5_ * size - p_70539_7_ * size), 0, 1); tess.draw(); - - GL11.glTranslatef((float) -dX, (float) -dY, (float) -dZ); } - + GL11.glPopMatrix(); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDepthMask(true); - + GL11.glPolygonOffset(0.0F, 0.0F); GL11.glEnable(GL11.GL_LIGHTING); } From c12948b330cb2597bdd902817ced801f937de204 Mon Sep 17 00:00:00 2001 From: Dosh <29446556+Dash1269@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:37:50 +1100 Subject: [PATCH 31/64] automatic formatting --- .../TileEntityMachineRotaryFurnace.java | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java index f9fef2930..4d65872db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -42,7 +42,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IGUIProvider, IFluidCopiable, IConditionalInvAccess { - + public FluidTank[] tanks; public boolean isProgressing; public float progress; @@ -52,7 +52,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i public boolean isVenting; public MaterialStack output; public static final int maxOutput = MaterialShapes.BLOCK.q(16); - + public int anim; public int lastAnim; @@ -71,12 +71,12 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i @Override public void updateEntity() { - + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + if(!worldObj.isRemote) { - + tanks[0].setType(3, slots); for(DirPos pos : getSteamPos()) { @@ -86,16 +86,16 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(tanks[0].getTankType() != Fluids.NONE) for(DirPos pos : getFluidPos()) { this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - + if(smoke.getFill() > 0) this.sendFluid(smoke, worldObj, xCoord + rot.offsetX, yCoord + 5, zCoord + rot.offsetZ, Library.POS_Y); - + if(this.output != null) { - + int prev = this.output.amount; Vec3 impact = Vec3.createVectorHelper(0, 0, 0); MaterialStack leftover = CrucibleUtil.pourSingleStack(worldObj, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 1.25D, zCoord + 0.5D + rot.offsetZ * 2.875D, 6, true, this.output, MaterialShapes.INGOT.q(1), impact); this.output = leftover; - + if(prev != this.output.amount) { this.output = leftover; NBTTagCompound data = new NBTTagCompound(); @@ -107,31 +107,31 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i data.setFloat("len", Math.max(1F, yCoord + 1 - (float) (Math.ceil(impact.yCoord) - 1.125))); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + rot.offsetX * 2.875D, yCoord + 0.75, zCoord + 0.5D + rot.offsetZ * 2.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } - + if(output.amount <= 0) this.output = null; } - + RotaryFurnaceRecipe recipe = RotaryFurnaceRecipes.getRecipe(slots[0], slots[1], slots[2]); this.isProgressing = false; - + if(recipe != null) { - + if(this.burnTime <= 0 && slots[4] != null && TileEntityFurnace.isItemFuel(slots[4])) { this.maxBurnTime = this.burnTime = TileEntityFurnace.getItemBurnTime(slots[4]) / 2; this.decrStackSize(4, 1); this.markChanged(); } - + if(this.canProcess(recipe)) { this.progress += 1F / recipe.duration; tanks[1].setFill(tanks[1].getFill() - recipe.steam); steamUsed += recipe.steam; this.isProgressing = true; - + if(this.progress >= 1F) { this.progress -= 1F; this.consumeItems(recipe); - + if(this.output == null) { this.output = recipe.output.copy(); } else { @@ -139,11 +139,11 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } this.markDirty(); } - + } else { this.progress = 0; } - + if(this.steamUsed >= 100) { int steamReturn = this.steamUsed / 100; int canReturn = tanks[2].getMaxFill() - tanks[2].getFill(); @@ -151,28 +151,28 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i this.steamUsed -= doesReturn * 100; tanks[2].setFill(tanks[2].getFill() + doesReturn); } - + } else { this.progress = 0; } - + this.isVenting = false; if(this.burnTime > 0) { this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 10F); this.burnTime--; } - + this.networkPackNT(50); - + } else { - + if(this.burnTime > 0 && MainRegistry.proxy.me().getDistance(xCoord, yCoord, zCoord) < 25) { Random rand = worldObj.rand; worldObj.spawnParticle("flame", xCoord + 0.5 + dir.offsetX * 0.5 + rot.offsetX + rand.nextGaussian() * 0.25, yCoord + 0.375, zCoord + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ + rand.nextGaussian() * 0.25, 0, 0, 0); } if(isVenting && worldObj.getTotalWorldTime() % 2 == 0) { - + NBTTagCompound fx = new NBTTagCompound(); fx.setString("type", "tower"); fx.setFloat("lift", 10F); @@ -202,7 +202,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i buf.writeFloat(progress); buf.writeInt(burnTime); buf.writeInt(maxBurnTime); - + if(this.output != null) { buf.writeBoolean(true); buf.writeInt(this.output.material.id); @@ -211,7 +211,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i buf.writeBoolean(false); } } - + @Override public void deserialize(ByteBuf buf) { super.deserialize(buf); tanks[0].deserialize(buf); @@ -222,14 +222,14 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i progress = buf.readFloat(); burnTime = buf.readInt(); maxBurnTime = buf.readInt(); - + if(buf.readBoolean()) { this.output = new MaterialStack(Mats.matById.get(buf.readInt()), buf.readInt()); } else { this.output = null; } } - + @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); @@ -240,7 +240,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i this.burnTime = nbt.getInteger("burn"); this.maxBurnTime = nbt.getInteger("maxBurn"); } - + @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); @@ -251,31 +251,31 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i nbt.setInteger("burn", burnTime); nbt.setInteger("maxBurn", maxBurnTime); } - + public DirPos[] getSteamPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 2, dir.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()) }; } - + public DirPos[] getFluidPos() { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - + return new DirPos[] { new DirPos(xCoord + dir.offsetX + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ + rot.offsetZ * 3, rot), new DirPos(xCoord - dir.offsetX + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ + rot.offsetZ * 3, rot) }; } - + public boolean canProcess(RotaryFurnaceRecipe recipe) { - + if(this.burnTime <= 0) return false; - + if(recipe.fluid != null) { if(this.tanks[0].getTankType() != recipe.fluid.type) return false; if(this.tanks[0].getFill() < recipe.fluid.fill) return false; @@ -284,19 +284,19 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(tanks[1].getFill() < recipe.steam) return false; if(tanks[2].getMaxFill() - tanks[2].getFill() < recipe.steam / 100) return false; if(this.steamUsed > 100) return false; - + if(this.output != null) { if(this.output.material != recipe.output.material) return false; if(this.output.amount + recipe.output.amount > this.maxOutput) return false; } - + return true; } - + public void consumeItems(RotaryFurnaceRecipe recipe) { - + for(AStack aStack : recipe.ingredients) { - + for(int i = 0; i < 3; i++) { ItemStack stack = slots[i]; if(aStack.matchesRecipe(stack, true) && stack.stackSize >= aStack.stacksize) { @@ -305,19 +305,19 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i } } } - + if(recipe.fluid != null) { this.tanks[0].setFill(tanks[0].getFill() - recipe.fluid.fill); } } - + @Override public void pollute(PollutionType type, float amount) { FluidTank tank = type == PollutionType.SOOT ? smoke : type == PollutionType.HEAVYMETAL ? smoke_leaded : smoke_poison; - + int fluidAmount = (int) Math.ceil(amount * 100); tank.setFill(tank.getFill() + fluidAmount); - + if(tank.getFill() > tank.getMaxFill()) { int overflow = tank.getFill() - tank.getMaxFill(); tank.setFill(tank.getMaxFill()); @@ -332,12 +332,12 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i @Override public boolean isItemValidForSlot(int x, int y, int z, int slot, ItemStack stack) { return slot < 3 || slot == 4; } @Override public boolean canExtractItem(int x, int y, int z, int slot, ItemStack stack, int side) { return false; } - + AxisAlignedBB bb = null; - + @Override public AxisAlignedBB getRenderBoundingBox() { - + if(bb == null) { bb = AxisAlignedBB.getBoundingBox( xCoord - 2, @@ -348,10 +348,10 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i zCoord + 3 ); } - + return bb; } - + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { @@ -364,7 +364,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); BlockPos core = new BlockPos(xCoord, yCoord, zCoord); - + //Red if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1).offset(rot, -2))) return new int[] {0}; //Yellow @@ -373,7 +373,7 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i if(side == dir.getOpposite().ordinal() && pos.equals(core.clone().offset(dir, -1))) return new int[] {2}; //Fuel if(side == dir.ordinal() && pos.equals(core.clone().offset(dir, 1).offset(rot, -1))) return new int[] {4}; - + return new int[] { }; } From b28cb312dc1ac4b04e6764d2df765523c0f2005e Mon Sep 17 00:00:00 2001 From: Dosh <29446556+Dash1269@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:39:19 +1100 Subject: [PATCH 32/64] fixed rotary furnace not saving output material --- .../machine/TileEntityMachineRotaryFurnace.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java index 4d65872db..d68e1aa69 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRotaryFurnace.java @@ -12,6 +12,7 @@ import com.hbm.inventory.gui.GUIMachineRotaryFurnace; import com.hbm.inventory.material.MaterialShapes; import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.RotaryFurnaceRecipes; import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; import com.hbm.lib.Library; @@ -239,6 +240,10 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i this.progress = nbt.getFloat("prog"); this.burnTime = nbt.getInteger("burn"); this.maxBurnTime = nbt.getInteger("maxBurn"); + if (nbt.hasKey("outType")) { + NTMMaterial mat = Mats.matById.get(nbt.getInteger("outType")); + this.output = new MaterialStack(mat, nbt.getInteger("outAmount")); + } } @Override @@ -250,6 +255,10 @@ public class TileEntityMachineRotaryFurnace extends TileEntityMachinePolluting i nbt.setFloat("prog", progress); nbt.setInteger("burn", burnTime); nbt.setInteger("maxBurn", maxBurnTime); + if (this.output != null) { + nbt.setInteger("outType", this.output.material.id); + nbt.setInteger("outAmount", this.output.amount); + } } public DirPos[] getSteamPos() { From f9e22ddab01b0bcad52193e4b05e0ec129cb8848 Mon Sep 17 00:00:00 2001 From: ItsMakar <63492966+iocmet@users.noreply.github.com> Date: Thu, 20 Feb 2025 09:20:51 +0200 Subject: [PATCH 33/64] =?UTF-8?q?some=20localization=20for=20ru=5FRU=20?= =?UTF-8?q?=E2=84=A2=EF=B8=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/assets/hbm/lang/ru_RU.lang | 109 +++++++++--------- 1 file changed, 55 insertions(+), 54 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index 373754637..6d79db6c7 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -1,4 +1,4 @@ -achievement.acidizer.desc=уфф ай ЌПя кПжа +achievement.acidizer.desc=уфф ай ЌПя кПжа achievement.acidizer=КОслюка achievement.assembly.desc=ППЎПжЎО-ка, уже час утра? achievement.assembly=ЗавПЎ расшОряется @@ -695,7 +695,7 @@ container.barrel=БПчка container.bat9000=Охереть-бПльшая цОстерМа 9000 container.battery=ЭМергПхраМОлОще container.bombMulti=ММПгПцелевая бПЌба -container.casingBag=Bullet Casing Bag +container.casingBag=СуЌка Ўля гОльз container.catalyticReformer=КаталОтОческОй рефПрЌер container.centrifuge=ЊеМтрОфуга container.chemplant=ХОЌОческая устаМПвка @@ -808,10 +808,10 @@ container.nukeSolinium=СОМОй ОпПласкОватель container.nukeTsar=Њарь-бПЌба container.oilWell=НефтяМая вышка container.orbus=Тяжёлый ЌагМОтМый кПМтейМер Ўля аМтОЌатерОО -container.paDetector=Detector -container.paDipole=Dipole -container.paQuadrupole=Quad. -container.paSource=Particle Source +container.paDetector=ДетектПр частОц +container.paDipole=ДОпПль +container.paQuadrupole=КваЎрупПль +container.paSource=ИстПчМОк частОц container.plasmaHeater=Нагреватель плазЌы container.press=Пресс container.puf6_tank=БПчка PuF6 @@ -2266,8 +2266,8 @@ item.bj_plate.name=ЛуММая кОберМетОческая ПбшОвка item.bj_plate_jetpack.name=ЛуММая кОберМетОческая ПбшОвка (с крыльяЌО) item.black_diamond.name=ЧёрМый алЌаз item.black_hole.name=МОМОатюрМая чёрМая Ўыра -item.blade_meteorite.name=МетеПрОтПвПе лезвОе -item.blade_titanium.name=ТОтаМПвая лПпПсть +item.blade_meteorite.name=МетеПрОтМПе лезвОе +item.blade_titanium.name=ТОтаМПвая лПпасть item.blade_tungsten.name=УсОлеММая вПльфраЌПЌ лПпасть item.blades_advanced_alloy.name=УсПвершеМствПваММые лезвОя ОзЌельчОтеля item.blades_desh.name=Деш-лезвОя ОзЌельчОтеля @@ -4846,30 +4846,31 @@ itemGroup.tabWeapon=ОружОе О турелО NTM pa.idle=ОжОЎаМОе pa.idle.desc=ОжОЎаМОе -pa.running=Running -pa.running.desc=Running -pa.success=ЗавершеМП! -pa.success.desc=ЗавершеМП! -pa.pause_unloaded=Paused -pa.pause_unloaded.desc=The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded. -pa.crash_defocus=Defocus! -pa.crash_defocus.desc=The particle has lost focus.$Ensure the accelerator has enough quadrupole magnets. -pa.crash_derail=Derail! -pa.crash_derail.desc=The particle has left the accelerator.$Ensure no parts are missing,$and that dipoles are configured correctly. -pa.crash_cannot_enter=Denied! -pa.crash_cannot_enter.desc=The particle tried to enter$part of the accelerator, but couldn't.$Ensure all parts are oriented correctly. -pa.crash_nocool=No cooling! -pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoroethyl. -pa.crash_nopower=No power! -pa.crash_nopower.desc=The particle has entered an unpowered$part of the accelerator. Ensure all parts$receive power, and that the$power supply is sufficient. -pa.crash_nocoil=No coils! -pa.crash_nocoil.desc=The particle has entered a dipole$or quadrupole which lacks coils.$Install coils to allow this part to work. -pa.crash_overspeed=Overspeed! -pa.crash_overspeed.desc=The particle has entered a dipole$or quadrupole, while its speed exceeded$the coil's rating. Install higher$tier coils, or configure the dipoles$to leave the accelerator ring sooner. -pa.crash_norecipe=No recipe! -pa.crash_norecipe.desc=The particle entered a detector$with an invalid set of inputs.$Ensure the particle source inputs$match a valid recipe. -pa.crash_underspeed=Underspeed! -pa.crash_underspeed.desc=The particle entered a detector$with insufficient speed to perform$the current recipe. Ensure the$accelerator is configured$correctly for the recipe. +pa.running=ЗапущеМ +pa.running.desc=ЗапущеМ +pa.success=ЗавершеМП +pa.success.desc=ЗавершеМП +pa.pause_unloaded=ПрОПстаМПвлеМ +pa.pause_unloaded.desc=ЧастОца вПшла$в МезагружеММый чаМк. ОперацОя$была прОПстаМПвлеМа$ЎП тех пПр пПка частОца О ОстПчМОк частОц$Ме буЎут загружеМы. +#The particle has entered an$unloaded chunk. The operation has$been suspended, until both the$particle and the particle source$are loaded. +pa.crash_defocus=РасфПкус! +pa.crash_defocus.desc=ЧастОца пПтеряла фПкус.$УбеЎОтесь чтП ускПрОтель ОЌеет ЎПстатПчМПе кПлОчествП кваЎрупПльМых ЌагМОтПв. +pa.crash_derail=СхПЎ с рельсПв! +pa.crash_derail.desc=ЧастОца вышла за преЎелы ускПрОтеля.$УбеЎОтесь чтП МОкакОе частО Ме Птсутствуют,$О чтП ЎОпПлО МастрПеМы правОльМП. +pa.crash_cannot_enter=ОтклПМеМП! +pa.crash_cannot_enter.desc=ЧастОца пПпыталась вПйтО$в часть ускПрОтеля, МП Ме сЌПгла.$УбеЎОтесь, чтП все частО правОльМП ПрОеМтОрПваМы. +pa.crash_nocool=Отсутствует ПхлажЎеМОе! +pa.crash_nocool.desc=ЧастОца вПшла в МеПхлажЎаеЌую$часть ускПрОтеля. УбеЎОтесь, чтП$все ПхлажЎаеЌые частО пПЎключеМы$О запПлМеМы хПлПЎМыЌ перфтПрПЌетОлПЌ. +pa.crash_nopower=Отсутствует пОтаМОе! +pa.crash_nopower.desc=ЧастОца вПшла в МезапОтаММую$часть ускПрОтеля. УбеЎОтесь, чтП все частО$пПлучают эМергОю, О чтП$пПлучаеЌПй эМергОО ЎПстатПчМП. +pa.crash_nocoil=Отсутствуют катушкО! +pa.crash_nocoil.desc=ЧастОца вПшла в ЎОпПль$ОлО кваЎрупПль гЎе Птсутствуют катушкО.$УстаМПвОте катушкО Ўля кПрректМПй рабПты этПй частО. +pa.crash_overspeed=ПревышеМОе скПрПстО! +pa.crash_overspeed.desc=ЧастОца вПшла в ЎОпПль$ОлО кваЎрупПль, кПгЎа её скПрПсть ЎПстОгла$лОЌОта катушкО. УстаМПвОте катушкО$бПлее высПкПгП урПвМя ОлО МастрПйте ЎОпПлО$Ма бПлее раММОй выхПЎ частОцы Оз кПльца ускПрОтеля. +pa.crash_norecipe=Нет рецепта! +pa.crash_norecipe.desc=ЧастОца вПшла в ЎетектПр$с МекПрректМыЌО кПЌпПМеМтаЌО рецепта.$УбеЎОтесь, чтП кПЌпПМеМты в ОстПчМОке частОц$сППтветствуют существующеЌу рецепту. +pa.crash_underspeed=НеЎПстатПчМая скПрПсть! +pa.crash_underspeed.desc=ЧастОца вПшла в ЎетектПр$с МеЎПстатПчМПй скПрПстью, чтПбы выпПлМОть$текущОй рецепт. УбеЎОтесь,$чтП ускПрОтель кПрректМП МастрПеМ Ўля этПгП рецепта. potion.hbm_bang=! ! ! potion.hbm_death=АстПльфПфОкацОя @@ -4938,11 +4939,11 @@ rbmk.screen.xenon=КсеМПМ: %s shape.barrelHeavy=Тяжелый ствПл shape.barrelLight=ЛёгкОй ствПл shape.billet=ЗагПтПвка -shape.blade=Blade +shape.blade=ЛПпасть shape.blades=ЛезвОя ОзЌельчОтеля shape.block=БлПк -shape.c9=Small Caliber Casing -shape.c50=Large Caliber Casing +shape.c9=ГОльза ЌалПгП калОбра +shape.c50=ГОльза бПльшПгП калОбра shape.dust=ППрПшПк shape.dusttiny=Кучка пылО shape.grip=РукПятка @@ -5141,9 +5142,9 @@ tile.brick_asbestos_stairs.name=СтупеМО Оз асбестПвых кОр tile.brick_compound.name=Сетка Оз сПеЎОМеМОя tile.brick_compound_stairs.name=СтупеМО Оз кПЌпПзОтМПй сеткО tile.brick_concrete.name=БетПММые кОрпОчО -tile.brick_concrete_stairs.name=Concrete Brick Stairs +tile.brick_concrete_stairs.name=СтупеМькО Оз бетПММых кОрпОчей tile.brick_concrete_broken.name=СлПЌаММые бетПММые кОрпОчО -tile.brick_concrete_broken_stairs.name=Broken Concrete Brick Stairs +tile.brick_concrete_broken_stairs.name=СтупеМькО Оз слПЌаММых бетПММых кОрпОчей tile.brick_concrete_cracked.name=ППтрескаММые бетПММые кОрпОчО tile.brick_concrete_cracked_stairs.name=СтупеМО Оз разрушеММых бетПМПвых кОрпОчей tile.brick_concrete_marked.name=ОбПзМачеММые бетПММые кОрпОчО @@ -5281,8 +5282,8 @@ tile.concrete_slab.concrete_smooth.name=ПлОта Оз бетПМа tile.concrete_slab.ducrete.name=ПлОта Оз ЎюкретПвПй плОткО tile.concrete_slab.ducrete_smooth.name=ПлОта Оз Ўюкрета tile.concrete_smooth.name=БетПМ -tile.concrete_smooth_stairs.name=Concrete Stairs -tile.concrete_stairs.name=Concrete Tile Stairs +tile.concrete_smooth_stairs.name=СтупеМькО Оз бетПМа +tile.concrete_stairs.name=СтупеМькО Оз бетПММПй плОткО tile.concrete_super.name=Убер-бетПМ tile.concrete_super_broken.name=ЗаЌшелые бетПММые ПблПЌкО tile.conveyor.name=КПМвейер @@ -5338,7 +5339,7 @@ tile.deco_computer.ibm_300pl.name=ПерсПМальМый кПЌпьютер IB tile.deco_crt.name=Старый ЭЛТ-экраМ tile.deco_emitter.name=ДекПратОвМый ОстПчМОк света tile.deco_lead.name=СвОМцПвый ЎекПратОвМый блПк -tile.deco_loot.name=Loot Pile +tile.deco_loot.name=Кучка преЎЌетПв tile.deco_rbmk.name=ДекП-блПкО РБМК tile.deco_rbmk_smooth.name=ГлаЎкОе ЎекП-блПкО РБМК tile.deco_red_copper.name=КрасМПЌеЎМый ЎекПратОвМый блПк @@ -5592,7 +5593,7 @@ tile.launch_table.name=БПльшая пускПвая плПщаЎка tile.leaves_layer.name=УпавшОе лОстья tile.lox_barrel.name=БПчка с жОЎкОЌ кОслПрПЎПЌ tile.machine_amgen.name=ГеМератПр Ма фПМПвПй раЎОацОО -tile.machine_ammo_press.name=Ammo Press +tile.machine_ammo_press.name=Пресс Ўля патрПМПв tile.machine_arc_furnace.name=ЭлектрОческая ЎугПвая печь tile.machine_arc_furnace_off.name=ДугПвая печь tile.machine_arc_furnace_on.name=ДугПвая печь @@ -5675,7 +5676,7 @@ tile.machine_industrial_boiler.desc=БПльшПй бПйлер, в кПтПрП tile.machine_industrial_generator.name=ПрПЌышлеММый геМератПр tile.machine_keyforge.name=СтПл Ќастера пП заЌкаЌ tile.machine_large_turbine.name=ПрПЌышлеММая парПвая турбОМа -tile.machine_large_turbine.desc=Efficiency: 100%% +tile.machine_large_turbine.desc=ЭффектОвМПсть: 100%% tile.machine_liquefactor.name=ПрПЌышлеММый разжОжОтель tile.machine_liquefactor.desc=МПщМая ЌашОМа Ўля превращеМОя преЎЌетПв в жОЎкПстО.$ППставляется с уМОверсальМыЌО каталОтОческОЌО кПЌпПМеМтаЌО, МагревательМыЌО элеЌеМтаЌО$О встрПеММыЌ гОЎратПрПЌ Ўля МефтехОЌОческПгП сжОжеМОя. tile.machine_lithium_battery.name=ЛОтОй-ОПММПе эМергПхраМОлОще @@ -5878,18 +5879,18 @@ tile.ore_uranium_scorched.name=ОбПжжеММая ураМПвая руЎа tile.ore_verticium.name=ДПлларПвый ЗелёМый ЌОМерал tile.ore_volcano.name=ГеПтерЌальМый ОстПчМОк tile.ore_weidanium.name=ВейЎОтОт -tile.pa_beamline.name=Beamline -tile.pa_beamline.desc=Optional part, connects different accelerator parts.$Also allows to cheaply extend the ring's size,$for meeting dipole coil size requirements. -tile.pa_detector.name=Particle Detector -tile.pa_detector.desc=Requires cooling!$Accepts particles and performs the recipe.$Recipes may require containers (particle capsules).$Particle needs a defocus of 0 to be accepted. -tile.pa_dipole.name=Dipole Magnets -tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with restone applied.$Requires large coils to work. -tile.pa_quadrupole.name=Quadrupole Magnets -tile.pa_quadrupole.desc=Requires cooling!$Reduces particle defocus by 100 points.$Requires large coils to work. -tile.pa_rfc.name=RF Cavity -tile.pa_rfc.desc=Requires cooling!$Accelerates particles by 100 points,$and adds 100 points of defocus.$The particle will crash when reaching points of 1000 defocus. -tile.pa_source.name=Particle Source -tile.pa_source.desc=Requires cooling!$Uses two items to create a particle. +tile.pa_beamline.name=КаМал пучка +tile.pa_beamline.desc=НеПбязательМая часть, сПеЎОМяет разМые частО ускПрОтеля частОц.$Также пПзвПляет МеЎПрПгП увелОчОть разЌер кПльца,$Ўля сППтветствОя требПваМОяЌ ЎОпПля к разЌеру катушкО. +tile.pa_detector.name=ДетектПр частОц +tile.pa_detector.desc=Требует ПхлажЎеМОя!$ПрОМОЌает частОцы О выпПлМяет рецепт.$Рецепты ЌПгут требПвать кПМтейМеры (капсулы Ўля частОц).$Для прОёЌа частОцы её расфПкус ЎПлжеМ быть равеМ 0. +tile.pa_dipole.name=ДОпПльМые ЌагМОты +tile.pa_dipole.desc=Требует ПхлажЎеМОя!$ПереМаправляет частОцы Ма ПсМПве Ох ЌПЌеМта.$ИЌеет выхПЎы МОже пПрПга,$выше пПрПга О тПлькП выше пПрПга прО пПЎаММПЌ сОгМале красМПгП каЌМя.$Требует бПльшую катушку Ўля рабПты. +tile.pa_quadrupole.name=КваЎрупПльМые ЌагМОты +tile.pa_quadrupole.desc=Требует ПхлажЎеМОя!$УЌеМьшает расфПкус частОцы Ма 100 еЎОМОц.$Требует бПльшую катушку Ўля рабПты +tile.pa_rfc.name=РаЎОПчастПтМый резПМатПр +tile.pa_rfc.desc=Требует ПхлажЎеМОя!$УскПряет частОцы Ма 100 еЎОМОц,$О увелОчОвает расфПкус Ма 100 еЎОМОц.$ЧастОца стПлкМется прО ЎПстОжеМОО расфПкуса в 1000 еЎОМОц. +tile.pa_source.name=ИстПчМОк частОц +tile.pa_source.desc=Требует ПхлажЎеМОя!$ИспПльзует Ўва преЎЌета чтПбы сПзЎать частОцу. tile.part_emitter.name=ДекПратОвМый ОстПчМОк частОц tile.pedestal.name=ПьеЎестал tile.pink_barrel.name=КерПсОМПвая бПчка From 223e0d28555285435129622390c0512dc591cc4f Mon Sep 17 00:00:00 2001 From: ItsMakar <63492966+iocmet@users.noreply.github.com> Date: Thu, 20 Feb 2025 09:32:13 +0200 Subject: [PATCH 34/64] Fix some typos in en_US locale --- src/main/resources/assets/hbm/lang/en_US.lang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f5d88f252..43ac2e862 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -4862,7 +4862,7 @@ pa.crash_derail.desc=The particle has left the accelerator.$Ensure no parts are pa.crash_cannot_enter=Denied! pa.crash_cannot_enter.desc=The particle tried to enter$part of the accelerator, but couldn't.$Ensure all parts are oriented correctly. pa.crash_nocool=No cooling! -pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoroethyl. +pa.crash_nocool.desc=The particle has entered an uncooled$part of the accelerator. Ensure all cooled$parts are connected and filled$with cold perfluoromethyl. pa.crash_nopower=No power! pa.crash_nopower.desc=The particle has entered an unpowered$part of the accelerator. Ensure all parts$receive power, and that the$power supply is sufficient. pa.crash_nocoil=No coils! @@ -5886,7 +5886,7 @@ tile.pa_beamline.desc=Optional part, connects different accelerator parts.$Also tile.pa_detector.name=Particle Detector tile.pa_detector.desc=Requires cooling!$Accepts particles and performs the recipe.$Recipes may require containers (particle capsules).$Particle needs a defocus of 0 to be accepted. tile.pa_dipole.name=Dipole Magnets -tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with restone applied.$Requires large coils to work. +tile.pa_dipole.desc=Requires cooling!$Redirects particles based on momentum.$Has outputs for below threshold,$above threshold and above threshold$with redstone applied.$Requires large coils to work. tile.pa_quadrupole.name=Quadrupole Magnets tile.pa_quadrupole.desc=Requires cooling!$Reduces particle defocus by 100 points.$Requires large coils to work. tile.pa_rfc.name=RF Cavity From d20c190c3e6fb0b80b28a1d344c05497d8a1571f Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 20 Feb 2025 16:55:46 +0100 Subject: [PATCH 35/64] the de-genericizing --- changelog | 5 ++- .../recipes/RotaryFurnaceRecipes.java | 1 + src/main/java/com/hbm/uninos/GenNode.java | 14 +++---- src/main/java/com/hbm/uninos/NodeNet.java | 38 +++++++++---------- .../java/com/hbm/uninos/UniNodespace.java | 2 +- .../com/hbm/uninos/networks/PowerNetwork.java | 30 ++++++++++----- 6 files changed, 52 insertions(+), 38 deletions(-) diff --git a/changelog b/changelog index 46e6eac40..c8853896b 100644 --- a/changelog +++ b/changelog @@ -1,9 +1,12 @@ ## Changed +* Updated russian localization * Large deposits (hematite, malachite, bauxite) and caves (sulfur, asbestos) can now be toggled in the config * Removed recipes for most old particle accelerator parts * Dense coils no longer have recipes either for the most part, all coils with no recipes can be recycled back into dense wires * Natural gas can now be processed in a pyrolysis oven, 12k of gas yields 8k hydrogen and one graphite ingot +* Saturnite now has an alternate recipe, adding one pile of borax for doubled output ## Fixed * Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded -* Fixed bedrock coltan being way too common, drowning out almost all other bedrock ores \ No newline at end of file +* Fixed bedrock coltan being way too common, drowning out almost all other bedrock ores +* Fixed rotary furnace not saving its output stack \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java index 8efe4b2ee..981df895e 100644 --- a/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RotaryFurnaceRecipes.java @@ -47,6 +47,7 @@ public class RotaryFurnaceRecipes extends SerializableRecipe { recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_GUNMETAL, INGOT.q(4)), 200, 100, new OreDictStack(CU.ingot(), 3), new OreDictStack(AL.ingot(), 1))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_WEAPONSTEEL, INGOT.q(1)), 200, 400, new FluidStack(Fluids.GAS_COKER, 100), new OreDictStack(STEEL.ingot(), 1), new ComparableStack(ModItems.powder_flux, 2))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_SATURN, INGOT.q(2)), 200, 400, new FluidStack(Fluids.REFORMGAS, 250), new OreDictStack(DURA.dust(), 4), new OreDictStack(CU.dust()))); + recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_SATURN, INGOT.q(4)), 200, 300, new FluidStack(Fluids.REFORMGAS, 250), new OreDictStack(DURA.dust(), 4), new OreDictStack(CU.dust()), new OreDictStack(BORAX.dust()))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_ALUMINIUM, INGOT.q(2)), 100, 400, new FluidStack(Fluids.SODIUM_ALUMINATE, 150))); recipes.add(new RotaryFurnaceRecipe(new MaterialStack(MAT_ALUMINIUM, INGOT.q(3)), 40, 200, new FluidStack(Fluids.SODIUM_ALUMINATE, 150), new ComparableStack(ModItems.powder_flux, 2))); } diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index cc7f028c3..b0337c119 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -3,26 +3,26 @@ package com.hbm.uninos; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -public class GenNode { +public class GenNode { public BlockPos[] positions; public DirPos[] connections; - public NodeNet net; + public NodeNet net; public boolean expired = false; public boolean recentlyChanged = true; - public T networkProvider; + public INetworkProvider networkProvider; - public GenNode(T provider, BlockPos... positions) { + public GenNode(INetworkProvider provider, BlockPos... positions) { this.networkProvider = provider; this.positions = positions; } - public GenNode setConnections(DirPos... connections) { + public GenNode setConnections(DirPos... connections) { this.connections = connections; return this; } - public GenNode addConnection(DirPos connection) { + public GenNode addConnection(DirPos connection) { DirPos[] newCons = new DirPos[this.connections.length + 1]; for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; newCons[newCons.length - 1] = connection; @@ -34,7 +34,7 @@ public class GenNode { return this.net != null && this.net.isValid(); } - public void setNet(NodeNet net) { + public void setNet(NodeNet net) { this.net = net; this.recentlyChanged = true; } diff --git a/src/main/java/com/hbm/uninos/NodeNet.java b/src/main/java/com/hbm/uninos/NodeNet.java index c40d41a3e..34e647196 100644 --- a/src/main/java/com/hbm/uninos/NodeNet.java +++ b/src/main/java/com/hbm/uninos/NodeNet.java @@ -7,60 +7,60 @@ import java.util.List; import java.util.Random; import java.util.Set; -public abstract class NodeNet { +public abstract class NodeNet { public static Random rand = new Random(); public boolean valid = true; - public Set> links = new HashSet(); + public Set links = new HashSet(); - public abstract HashMap, Long> receiverEntries(); - public abstract HashMap, Long> providerEntries(); + public abstract HashMap receiverEntries(); + public abstract HashMap providerEntries(); public NodeNet() { UniNodespace.activeNodeNets.add(this); } /// SUBSCRIBER HANDLING /// - public boolean isSubscribed(IGenReceiver receiver) { return this.receiverEntries().containsKey(receiver); } - public void addReceiver(IGenReceiver receiver) { this.receiverEntries().put(receiver, System.currentTimeMillis()); } - public void removeReceiver(IGenReceiver receiver) { this.receiverEntries().remove(receiver); } + public boolean isSubscribed(IGenReceiver receiver) { return this.receiverEntries().containsKey(receiver); } + public void addReceiver(IGenReceiver receiver) { this.receiverEntries().put(receiver, System.currentTimeMillis()); } + public void removeReceiver(IGenReceiver receiver) { this.receiverEntries().remove(receiver); } /// PROVIDER HANDLING /// - public boolean isProvider(IGenProvider provider) { return this.providerEntries().containsKey(provider); } - public void addProvider(IGenProvider provider) { this.providerEntries().put(provider, System.currentTimeMillis()); } - public void removeProvider(IGenProvider provider) { this.providerEntries().remove(provider); } + public boolean isProvider(IGenProvider provider) { return this.providerEntries().containsKey(provider); } + public void addProvider(IGenProvider provider) { this.providerEntries().put(provider, System.currentTimeMillis()); } + public void removeProvider(IGenProvider provider) { this.providerEntries().remove(provider); } /** Combines two networks into one */ - public void joinNetworks(NodeNet network) { + public void joinNetworks(NodeNet network) { if(network == this) return; - List> oldNodes = new ArrayList(network.links.size()); + List oldNodes = new ArrayList(network.links.size()); oldNodes.addAll(network.links); - for(GenNode conductor : oldNodes) forceJoinLink(conductor); + for(GenNode conductor : oldNodes) forceJoinLink(conductor); network.links.clear(); - for(IGenReceiver connector : network.receiverEntries().keySet()) this.addReceiver(connector); - for(IGenProvider connector : network.providerEntries().keySet()) this.addProvider(connector); + for(IGenReceiver connector : network.receiverEntries().keySet()) this.addReceiver(connector); + for(IGenProvider connector : network.providerEntries().keySet()) this.addProvider(connector); network.destroy(); } /** Adds the node as part of this network's links */ - public NodeNet joinLink(GenNode node) { + public NodeNet joinLink(GenNode node) { if(node.net != null) node.net.leaveLink(node); return forceJoinLink(node); } /** Adds the node as part of this network's links, skips the part about removing it from existing networks */ - public NodeNet forceJoinLink(GenNode node) { + public NodeNet forceJoinLink(GenNode node) { this.links.add(node); node.setNet(this); return this; } /** Removes the specified node */ - public void leaveLink(GenNode node) { + public void leaveLink(GenNode node) { node.setNet(null); this.links.remove(node); } @@ -73,7 +73,7 @@ public abstract class NodeNet { public void destroy() { this.invalidate(); - for(GenNode link : this.links) if(link.net == this) link.setNet(null); + for(GenNode link : this.links) if(link.net == this) link.setNet(null); this.links.clear(); this.receiverEntries().clear(); this.providerEntries().clear(); diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java index f0e9e7ffd..aa92b1d1a 100644 --- a/src/main/java/com/hbm/uninos/UniNodespace.java +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -38,7 +38,7 @@ public class UniNodespace { public static class UniNodeWorld { - public HashMap, GenNode> nodes = new HashMap(); + public HashMap, GenNode> nodes = new HashMap(); /** Adds a node at all its positions to the nodespace */ public void pushNode(GenNode node) { diff --git a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java index 174f553a9..9c68b0cda 100644 --- a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java +++ b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java @@ -6,31 +6,41 @@ import java.util.Iterator; import java.util.List; import java.util.Map.Entry; -import com.hbm.uninos.IGenProvider; -import com.hbm.uninos.IGenReceiver; import com.hbm.uninos.NodeNet; -import com.hbm.uninos.networkproviders.PowerProvider; import com.hbm.util.Tuple.Pair; import api.hbm.energymk2.IEnergyProviderMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; -public class PowerNetwork extends NodeNet { +public class PowerNetwork extends NodeNet { + + /* + * the original idea was to have every part have a generic type so that once you get down to the level of nodes, you can + * still easily create new networks using the generic type. however: + * - having generics everywhere means that some overrides don't work due to "not being castable" (my ass) + * - most of the time, having generics there didn't really do anything, since the interface is already universally usable, and the type that is provided doesn't actually matter + * - for any case where network type does matter, any node handling instance (cable TEs for example) can just do handling separately, worst case it's just one extra cast + * my balls hurt + */ public HashMap receiverEntries = new HashMap(); public HashMap providerEntries = new HashMap(); public long energyTracker = 0L; - @Override // this was all fun and games but let's take a few steps back: this generics stuff is kinda breaking shit, and as it turns out, apparently nothing even uses the type - public HashMap, Long> receiverEntries() { - return null; + @Override + public HashMap receiverEntries() { + return receiverEntries; + // generic type erasure seems susipcious here - this either works because the types should be castable anyway, + // or this doesn't work because the compiler has an aneurysm and dies instantly + // technically, generics are obliterated when compiling, and the types are assignable, so i see no issue, + // but then again, HashMap *technically* isn't castable to HashMap, and the compiler might scream about it } - @Override // therefore i should probably consider scrapping the majority of the generic types - they seem to be kinda useless with the current approach - public HashMap, Long> providerEntries() { - return null; + @Override + public HashMap providerEntries() { + return providerEntries; } protected static int timeout = 3_000; From c3e532ab33791b6aaa717c6830a65b4200c9e9be Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 21 Feb 2025 15:18:45 +0100 Subject: [PATCH 36/64] good god - we gonna rock down to electric avenue --- changelog | 1 + .../java/api/hbm/energymk2/PowerNetMK2.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 6 +-- .../java/com/hbm/qmaw/IManualElement.java | 9 ---- src/main/java/com/hbm/qmaw/ManualElement.java | 12 +++++ .../hbm/qmaw/components/QComponentText.java | 44 +++++++++++++++++++ 6 files changed, 61 insertions(+), 13 deletions(-) delete mode 100644 src/main/java/com/hbm/qmaw/IManualElement.java create mode 100644 src/main/java/com/hbm/qmaw/ManualElement.java create mode 100644 src/main/java/com/hbm/qmaw/components/QComponentText.java diff --git a/changelog b/changelog index c8853896b..53eb3e3ae 100644 --- a/changelog +++ b/changelog @@ -5,6 +5,7 @@ * Dense coils no longer have recipes either for the most part, all coils with no recipes can be recycled back into dense wires * Natural gas can now be processed in a pyrolysis oven, 12k of gas yields 8k hydrogen and one graphite ingot * Saturnite now has an alternate recipe, adding one pile of borax for doubled output +* All mass storage units (except wood) are now substantially cheaper ## Fixed * Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java index 8afc59890..4422cc138 100644 --- a/src/main/java/api/hbm/energymk2/PowerNetMK2.java +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -170,7 +170,7 @@ public class PowerNetMK2 { toTransfer -= energyUsed; } - + this.energyTracker += energyUsed; long leftover = energyUsed; diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index c1cc4e40c..dd130b852 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -271,9 +271,9 @@ public class CraftingManager { // Note: voids the last few slots when placed, because a safe's inventory is smaller than a crate's one GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.safe, 1), new Object[] { "LAL", "ACA", "LAL", 'L', PB.plate(), 'A', ALLOY.plate(), 'C', ModBlocks.crate_steel })); // Note: doesn't preserve storage because a crate's contents are different items, but a mass storage's is just one - addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); - GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) })); - GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) })); + addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { " L ", "ICI", " I ", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE) }); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { " C ", "PMP", " P ", 'P', DESH.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.CHIP), 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) })); + GameRegistry.addRecipe(new ContainerUpgradeCraftingHandler(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { " C ", "PMP", " P ", 'P', ANY_RESISTANTALLOY.ingot(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', new ItemStack(ModBlocks.mass_storage, 1, 1) })); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 3), new Object[] { "PPP", "PIP", "PPP", 'P', KEY_PLANKS, 'I', IRON.plate() }); addRecipeAuto(new ItemStack(ModBlocks.machine_autocrafter, 1), new Object[] { "SCS", "MWM", "SCS", 'S', STEEL.plate(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.VACUUM_TUBE), 'M', ModItems.motor, 'W', Blocks.crafting_table }); diff --git a/src/main/java/com/hbm/qmaw/IManualElement.java b/src/main/java/com/hbm/qmaw/IManualElement.java deleted file mode 100644 index e981ad87a..000000000 --- a/src/main/java/com/hbm/qmaw/IManualElement.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.hbm.qmaw; - -public interface IManualElement { - - public int getWidth(); - public int getHeight(); - public void render(boolean isMouseOver, int mouseX, int mouseY); - public void onClick(); -} diff --git a/src/main/java/com/hbm/qmaw/ManualElement.java b/src/main/java/com/hbm/qmaw/ManualElement.java new file mode 100644 index 000000000..f878bf8ae --- /dev/null +++ b/src/main/java/com/hbm/qmaw/ManualElement.java @@ -0,0 +1,12 @@ +package com.hbm.qmaw; + +public abstract class ManualElement { + + public int x; + public int y; + + public abstract int getWidth(); + public abstract int getHeight(); + public abstract void render(boolean isMouseOver, int mouseX, int mouseY); + public abstract void onClick(); +} diff --git a/src/main/java/com/hbm/qmaw/components/QComponentText.java b/src/main/java/com/hbm/qmaw/components/QComponentText.java new file mode 100644 index 000000000..fd06d1150 --- /dev/null +++ b/src/main/java/com/hbm/qmaw/components/QComponentText.java @@ -0,0 +1,44 @@ +package com.hbm.qmaw.components; + +import com.hbm.qmaw.ManualElement; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; + +public class QComponentText extends ManualElement { + + protected String text; + protected FontRenderer font; + protected int color = 0xFFFFFF; + + public QComponentText(String text) { + this(text, Minecraft.getMinecraft().fontRenderer); + } + + public QComponentText(String text, FontRenderer font) { + this.text = text; + this.font = font; + } + + public QComponentText setColor(int color) { + this.color = color; + return this; + } + + @Override + public int getWidth() { + return font.getStringWidth(text); + } + + @Override + public int getHeight() { + return font.FONT_HEIGHT; + } + + @Override + public void render(boolean isMouseOver, int mouseX, int mouseY) { + font.drawString(text, x, y, color); + } + + @Override public void onClick() { } +} From 0ccf81443ad3d11d08c79a6097dd4a4b90854d73 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 23 Feb 2025 18:39:11 +0100 Subject: [PATCH 37/64] the malicious gigglefish from the silly dimension --- changelog | 6 +- .../inventory/recipes/PedestalRecipes.java | 2 +- .../weapon/sedna/factory/XFactory10ga.java | 9 +- .../weapon/sedna/factory/XFactory12ga.java | 16 +- .../machine/TileEntityMachineRadarNT.java | 5 +- .../TileEntityMachineStrandCaster.java | 132 +- .../hbm/models/machines/oilburner_hp.obj | 4915 +++++++++++++++++ .../hbm/textures/gui/guide_pedestal.png | Bin 2385 -> 2495 bytes .../textures/gui/machine/gui_oilburner_hp.png | Bin 0 -> 3159 bytes .../textures/models/machines/oilburner_hp.png | Bin 0 -> 1777 bytes 10 files changed, 5000 insertions(+), 85 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/machines/oilburner_hp.obj create mode 100644 src/main/resources/assets/hbm/textures/gui/machine/gui_oilburner_hp.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/oilburner_hp.png diff --git a/changelog b/changelog index 53eb3e3ae..c010641a1 100644 --- a/changelog +++ b/changelog @@ -6,8 +6,12 @@ * Natural gas can now be processed in a pyrolysis oven, 12k of gas yields 8k hydrogen and one graphite ingot * Saturnite now has an alternate recipe, adding one pile of borax for doubled output * All mass storage units (except wood) are now substantially cheaper +* Reduced base spread for all 12 and 10 gauge buckshot shells from 0.05 to 0.035 +* Reduced legendary 12 lever action's spread multiplier from x1.35 to x1.15 ## Fixed * Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded * Fixed bedrock coltan being way too common, drowning out almost all other bedrock ores -* Fixed rotary furnace not saving its output stack \ No newline at end of file +* Fixed rotary furnace not saving its output stack +* Fixed strand caster water check being incorrect, creating negative water by allowing operations with insufficient cooling +* Fixed radar not using the small remaining amount of power, causing the animation getting stuck \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java index d11a40f93..c5d5c95bb 100644 --- a/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PedestalRecipes.java @@ -147,7 +147,7 @@ public class PedestalRecipes extends SerializableRecipe { } public static enum PedestalExtraCondition { - NONE, FULL_MOON, NEW_MOON, SUN + NONE, FULL_MOON, NEW_MOON, SUN, GOOD_KARMA, BAD_KARMA } public static class PedestalRecipe { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java index 3cfd53c12..85165ea5c 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory10ga.java @@ -31,10 +31,11 @@ public class XFactory10ga { public static BulletConfig g10_slug; public static void init() { - - g10 = new BulletConfig().setItem(EnumAmmo.G10).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GA")); - g10_shrapnel = new BulletConfig().setItem(EnumAmmo.G10_SHRAPNEL).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(0.05F).setRicochetAngle(90).setRicochetCount(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xE5DD00, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GAShrapnel")); - g10_du = new BulletConfig().setItem(EnumAmmo.G10_DU).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/4F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.2F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x538D53, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GADU")); + + float buckshotSpread = 0.035F; + g10 = new BulletConfig().setItem(EnumAmmo.G10).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GA")); + g10_shrapnel = new BulletConfig().setItem(EnumAmmo.G10_SHRAPNEL).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/10F).setSpread(buckshotSpread).setRicochetAngle(90).setRicochetCount(15).setThresholdNegation(5F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xE5DD00, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GAShrapnel")); + g10_du = new BulletConfig().setItem(EnumAmmo.G10_DU).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setProjectiles(10).setDamage(1F/4F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.2F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x538D53, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GADU")); g10_slug = new BulletConfig().setItem(EnumAmmo.G10_SLUG).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 4).setRicochetAngle(15).setThresholdNegation(10F).setArmorPiercing(0.1F).setDoesPenetrate(true).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x808080, SpentCasing.COLOR_CASE_12GA).setScale(1F).register("10GASlug")); ModItems.gun_double_barrel = new ItemGunBaseNT(WeaponQuality.SPECIAL, new GunConfig() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java index 3afc84c3c..399837376 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory12ga.java @@ -255,16 +255,18 @@ public class XFactory12ga { } public static void init() { - - g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(8).setDamage(0.75F/8F).setSpread(0.05F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); - g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(4).setDamage(0.75F/4F).setSpread(0.05F).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); + + float buckshotSpread = 0.035F; + float magnumSpread = 0.015F; + g12_bp = new BulletConfig().setItem(EnumAmmo.G12_BP).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(8).setDamage(0.75F/8F).setSpread(buckshotSpread).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP")); + g12_bp_magnum = new BulletConfig().setItem(EnumAmmo.G12_BP_MAGNUM).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setProjectiles(4).setDamage(0.75F/4F).setSpread(buckshotSpread).setRicochetAngle(25).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_MAGNUM")); g12_bp_slug = new BulletConfig().setItem(EnumAmmo.G12_BP_SLUG).setCasing(EnumCasingType.SHOTSHELL, 12).setBlackPowder(true).setDamage(0.75F).setSpread(0.01F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_BRASS, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_BP_SLUG")); - g12 = new BulletConfig().setItem(EnumAmmo.G12).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setSpread(0.05F).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); + g12 = new BulletConfig().setItem(EnumAmmo.G12).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setSpread(buckshotSpread).setRicochetAngle(15).setThresholdNegation(2F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xB52B2B, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA")); g12_slug = new BulletConfig().setItem(EnumAmmo.G12_SLUG).setCasing(EnumCasingType.BUCKSHOT, 6).setHeadshot(1.5F).setSpread(0.0F).setRicochetAngle(25).setThresholdNegation(4F).setArmorPiercing(0.15F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x393939, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_SLUG")); g12_flechette = new BulletConfig().setItem(EnumAmmo.G12_FLECHETTE).setCasing(EnumCasingType.BUCKSHOT, 6).setProjectiles(8).setDamage(1F/8F).setThresholdNegation(5F).setThresholdNegation(3F).setArmorPiercing(0.2F).setSpread(0.025F).setRicochetAngle(5).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x3C80F0, SpentCasing.COLOR_CASE_BRASS).setScale(0.75F).register("12GA_FLECHETTE")); - g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(4).setDamage(2F/4F).setSpread(0.015F).setRicochetAngle(15).setThresholdNegation(4F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); + g12_magnum = new BulletConfig().setItem(EnumAmmo.G12_MAGNUM).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(4).setDamage(2F/4F).setSpread(magnumSpread).setRicochetAngle(15).setThresholdNegation(4F).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x278400, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_MAGNUM")); g12_explosive = new BulletConfig().setItem(EnumAmmo.G12_EXPLOSIVE).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setDamage(2.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE).setSpread(0F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0xDA4127, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_EXPLOSIVE")); - g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) + g12_phosphorus = new BulletConfig().setItem(EnumAmmo.G12_PHOSPHORUS).setCasing(EnumCasingType.BUCKSHOT_ADVANCED, 6).setProjectiles(8).setDamage(1F/8F).setSpread(magnumSpread).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x910001, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_PHOSPHORUS")) .setOnImpact((bullet, mop) -> { if(mop.entityHit != null && mop.entityHit instanceof EntityLivingBase) { HbmLivingProps data = HbmLivingProps.getData((EntityLivingBase) mop.entityHit); if(data.phosphorus < 300) data.phosphorus = 300; } }); //g12_anthrax = new BulletConfig().setItem(EnumAmmo.G12_ANTHRAX).setProjectiles(8).setDamage(1F/8F).setSpread(0.015F).setRicochetAngle(15).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(0x749300, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12GA_ANTHRAX")); g12_equestrian_bj = new BulletConfig().setItem(EnumAmmoSecret.G12_EQUESTRIAN).setDamage(0F).setOnImpact(LAMBDA_BOAT).setCasing(new SpentCasing(CasingType.SHOTGUN).setColor(SpentCasing.COLOR_CASE_EQUESTRIAN, SpentCasing.COLOR_CASE_12GA).setScale(0.75F).register("12gaEquestrianBJ")); @@ -318,7 +320,7 @@ public class XFactory12ga { ModItems.gun_maresleg_broken = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() .dura(0).draw(5).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCLE).smoke(Lego.LAMBDA_STANDARD_SMOKE) .rec(new Receiver(0) - .dmg(32F).spreadAmmo(1.35F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) + .dmg(32F).spreadAmmo(1.15F).delay(20).reload(22, 10, 13, 0).jam(24).sound("hbm:weapon.fire.shotgun", 1.0F, 1.0F) .mag(new MagazineSingleReload(0, 6).addConfigs(g12_equestrian_tkr, g12_bp, g12_bp_magnum, g12_bp_slug, g12, g12_slug, g12_flechette, g12_magnum, g12_explosive, g12_phosphorus)) .offset(0.75, -0.0625, -0.1875) .canFire(Lego.LAMBDA_STANDARD_CAN_FIRE).fire(Lego.LAMBDA_NOWEAR_FIRE).recoil(LAMBDA_RECOIL_MARESLEG)) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java index b830abfe9..c1c490c34 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadarNT.java @@ -332,7 +332,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I this.entries.clear(); if(this.yCoord < radarAltitude) return; - if(this.power < consumption) return; + if(this.power < consumption) { + this.power = 0; + return; + } this.power -= consumption; int scan = this.getRange(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java index 00b4812ce..ae0493c98 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineStrandCaster.java @@ -60,14 +60,14 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase this.lastAmount = this.amount; } - if (this.amount >= this.getCapacity()) { - //In case of overfill problems, spit out the excess as scrap - if (amount > getCapacity()) { - ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, Math.max(amount - getCapacity(), 0))); - EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); - worldObj.spawnEntityInWorld(item); - } - this.amount = this.getCapacity(); + if(this.amount >= this.getCapacity()) { + // In case of overfill problems, spit out the excess as scrap + if(amount > getCapacity()) { + ItemStack scrap = ItemScraps.create(new Mats.MaterialStack(type, Math.max(amount - getCapacity(), 0))); + EntityItem item = new EntityItem(worldObj, xCoord + 0.5, yCoord + 2, zCoord + 0.5, scrap); + worldObj.spawnEntityInWorld(item); + } + this.amount = this.getCapacity(); } if(this.amount == 0) { @@ -78,56 +78,58 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ItemMold.Mold mold = this.getInstalledMold(); - if(canProcess()) { - int minAmount = mold.getCost() * 9; - - // Makes it flush the buffers after 10 seconds of inactivity - if(worldObj.getWorldTime() >= lastCastTick + 200) { - minAmount = mold.getCost(); - } - - if(this.amount >= minAmount) { - int itemsCasted = amount / mold.getCost(); - - for(int j = 0; j < itemsCasted; j++) { - this.amount -= mold.getCost(); - - ItemStack out = mold.getOutput(type); - - for(int i = 1; i < 7; i++) { - if(slots[i] == null) { - slots[i] = out.copy(); - break; - } - - if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { - slots[i].stackSize += out.stackSize; - break; - } - - } + if(mold != null) { + + int itemsCasted = amount / mold.getCost(); + + if(canProcess(itemsCasted)) { + int minAmount = mold.getCost() * 9; + + // Makes it flush the buffers after 10 seconds of inactivity + if(worldObj.getWorldTime() >= lastCastTick + 200) { + minAmount = mold.getCost(); + } + + if(this.amount >= minAmount) { + + for(int j = 0; j < itemsCasted; j++) { + this.amount -= mold.getCost(); + + ItemStack out = mold.getOutput(type); + + for(int i = 1; i < 7; i++) { + if(slots[i] == null) { + slots[i] = out.copy(); + break; + } + + if(slots[i].isItemEqual(out) && slots[i].stackSize + out.stackSize <= out.getMaxStackSize()) { + slots[i].stackSize += out.stackSize; + break; + } + + } + } + markChanged(); + + water.setFill(water.getFill() - getWaterRequired() * itemsCasted); + steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); + + lastCastTick = worldObj.getWorldTime(); } - markChanged(); - - water.setFill(water.getFill() - getWaterRequired() * itemsCasted); - steam.setFill(steam.getFill() + getWaterRequired() * itemsCasted); - - lastCastTick = worldObj.getWorldTime(); } } networkPackNT(150); - + } } - } - - public boolean canProcess() { + public boolean canProcess(int itemsCasted) { ItemMold.Mold mold = this.getInstalledMold(); if(type != null && mold != null && mold.getOutput(type) != null) { for(int i = 1; i < 7; i++) { if(slots[i] == null || slots[i].isItemEqual(mold.getOutput(type)) && slots[i].stackSize + mold.getOutput(type).stackSize <= mold.getOutput(type).getMaxStackSize()) - return water.getFill() >= getWaterRequired() && steam.getFill() < steam.getMaxFill(); + return water.getFill() >= getWaterRequired() * itemsCasted && steam.getFill() < steam.getMaxFill(); } } @@ -140,12 +142,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new DirPos[] { - new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), - new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), - new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), - new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ - dir.offsetZ * 5, rot.getOpposite()) - }; + return new DirPos[] { new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX, yCoord, zCoord - rot.offsetZ - dir.offsetZ, rot.getOpposite()), new DirPos(xCoord + rot.offsetX * 2 - dir.offsetX * 5, yCoord, zCoord + rot.offsetZ * 2 - dir.offsetZ * 5, rot), new DirPos(xCoord - rot.offsetX - dir.offsetX * 5, yCoord, zCoord - rot.offsetZ - dir.offsetZ * 5, rot.getOpposite()) }; } public int[][] getMetalPourPos() { @@ -153,12 +150,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - return new int[][] { - new int[] { xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ }, - new int[] { xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ }, - new int[] { xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ }, - new int[] { xCoord, yCoord + 2, zCoord } - }; + return new int[][] { new int[] { xCoord + rot.offsetX - dir.offsetX, yCoord + 2, zCoord + rot.offsetZ - dir.offsetZ }, new int[] { xCoord - dir.offsetX, yCoord + 2, zCoord - dir.offsetZ }, new int[] { xCoord + rot.offsetX, yCoord + 2, zCoord + rot.offsetZ }, new int[] { xCoord, yCoord + 2, zCoord } }; } @Override @@ -190,11 +182,12 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase } return false; - } + } @Override public boolean standardCheck(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { - if(this.type != null && this.type != stack.material) return false; + if(this.type != null && this.type != stack.material) + return false; int limit = this.getInstalledMold() != null ? this.getInstalledMold().getCost() * 9 : this.getCapacity(); return !(this.amount >= limit || getInstalledMold() == null); } @@ -215,10 +208,11 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - @Override + + @Override public Mats.MaterialStack standardAdd(World world, int x, int y, int z, ForgeDirection side, Mats.MaterialStack stack) { this.type = stack.material; - int limit = this.getInstalledMold() != null ? this.getInstalledMold().getCost() * 9 : this.getCapacity(); + int limit = this.getInstalledMold() != null ? this.getInstalledMold().getCost() * 9 : this.getCapacity(); if(stack.amount + this.amount <= limit) { this.amount += stack.amount; return null; @@ -231,6 +225,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase return stack; } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] { steam }; @@ -287,7 +282,8 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(i == 0) return stack.getItem() == ModItems.mold; + if(i == 0) + return stack.getItem() == ModItems.mold; return false; } @@ -331,13 +327,7 @@ public class TileEntityMachineStrandCaster extends TileEntityFoundryCastingBase public AxisAlignedBB getRenderBoundingBox() { if(bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 7, - yCoord, - zCoord - 7, - xCoord + 7, - yCoord + 3, - zCoord + 7); + bb = AxisAlignedBB.getBoundingBox(xCoord - 7, yCoord, zCoord - 7, xCoord + 7, yCoord + 3, zCoord + 7); } return bb; } diff --git a/src/main/resources/assets/hbm/models/machines/oilburner_hp.obj b/src/main/resources/assets/hbm/models/machines/oilburner_hp.obj new file mode 100644 index 000000000..6d8e8b1f6 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/oilburner_hp.obj @@ -0,0 +1,4915 @@ +# Blender v2.79 (sub 0) OBJ File: 'oilburner_hp.blend' +# www.blender.org +o Plane +v -1.500000 0.125000 1.375000 +v 1.500000 0.125000 1.375000 +v -1.500000 0.125000 -1.375000 +v 1.500000 0.125000 -1.375000 +v -1.500000 1.875000 1.375000 +v 1.500000 1.875000 1.375000 +v -1.500000 1.875000 -1.375000 +v 1.500000 1.875000 -1.375000 +v -1.375000 0.125000 -1.500000 +v -1.375000 0.125000 1.500000 +v 1.375000 0.125000 1.500000 +v 1.375000 0.125000 -1.500000 +v -1.375000 1.875000 -1.500000 +v -1.375000 1.875000 1.500000 +v 1.375000 1.875000 1.500000 +v 1.375000 1.875000 -1.500000 +v -1.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v 1.500000 0.000000 -1.500000 +v -1.500000 0.000000 -1.500000 +v -0.500000 2.000000 0.500000 +v 0.500000 2.000000 0.500000 +v 0.500000 2.000000 -0.500000 +v -0.500000 2.000000 -0.500000 +v 1.375000 0.250000 1.125000 +v 1.375000 0.250000 -1.125000 +v 1.375000 1.750000 1.125000 +v 1.375000 1.750000 -1.125000 +v -0.375000 1.750000 -1.375000 +v -0.375000 0.250000 -1.375000 +v 0.375000 1.750000 -1.375000 +v 0.375000 0.250000 -1.375000 +v -1.500000 2.000000 -1.500000 +v -1.500000 2.000000 1.500000 +v 1.500000 2.000000 1.500000 +v 1.500000 2.000000 -1.500000 +v -0.437500 1.937500 -0.437500 +v -0.437500 1.937500 0.437500 +v 0.437500 1.937500 0.437500 +v 0.437500 1.937500 -0.437500 +v -0.500000 1.937500 -0.500000 +v -0.500000 1.937500 0.500000 +v 0.500000 1.937500 0.500000 +v 0.500000 1.937500 -0.500000 +v -0.437500 2.000000 -0.437500 +v -0.437500 2.000000 0.437500 +v 0.437500 2.000000 0.437500 +v 0.437500 2.000000 -0.437500 +v 1.500000 0.250000 0.250000 +v 1.500000 0.750000 0.250000 +v 1.500000 0.250000 -0.250000 +v 1.500000 0.750000 -0.250000 +v 1.375000 0.250000 -0.250000 +v 1.375000 0.250000 0.250000 +v 1.375000 0.750000 0.250000 +v 1.375000 0.750000 -0.250000 +v -1.500000 0.250000 -0.250000 +v -1.500000 0.750000 -0.250000 +v -1.500000 0.250000 0.250000 +v -1.500000 0.750000 0.250000 +v -1.375000 0.250000 0.250000 +v -1.375000 0.250000 -0.250000 +v -1.375000 0.750000 -0.250000 +v -1.375000 0.750000 0.250000 +v 0.250000 0.250000 -1.500000 +v 0.250000 0.750000 -1.500000 +v -0.250000 0.250000 -1.500000 +v -0.250000 0.750000 -1.500000 +v -0.250000 0.250000 -1.375000 +v 0.250000 0.250000 -1.375000 +v 0.250000 0.750000 -1.375000 +v -0.250000 0.750000 -1.375000 +v -0.250000 0.250000 1.500000 +v -0.250000 0.750000 1.500000 +v 0.250000 0.250000 1.500000 +v 0.250000 0.750000 1.500000 +v 0.250000 0.250000 1.375000 +v -0.250000 0.250000 1.375000 +v -0.250000 0.750000 1.375000 +v 0.250000 0.750000 1.375000 +v 1.375000 0.125000 1.375000 +v 1.375000 0.125000 -1.375000 +v 1.375000 1.875000 1.375000 +v 1.375000 1.875000 -1.375000 +v 1.375000 0.250000 0.375000 +v 1.375000 1.750000 0.375000 +v 1.375000 0.250000 -0.375000 +v 1.375000 1.750000 -0.375000 +v 1.125000 1.750000 -1.125000 +v 1.125000 0.250000 -1.125000 +v 1.125000 0.250000 1.125000 +v 1.125000 1.750000 1.125000 +v 1.125000 1.750000 0.375000 +v 1.125000 0.250000 0.375000 +v 1.125000 1.750000 -0.375000 +v 1.125000 0.250000 -0.375000 +v -1.375000 0.250000 -1.125000 +v -1.375000 0.250000 1.125000 +v -1.375000 1.750000 -1.125000 +v -1.375000 1.750000 1.125000 +v -1.375000 0.125000 -1.375000 +v -1.375000 0.125000 1.375000 +v -1.375000 1.875000 -1.375000 +v -1.375000 1.875000 1.375000 +v -1.375000 0.250000 -0.375000 +v -1.375000 1.750000 -0.375000 +v -1.375000 0.250000 0.375000 +v -1.375000 1.750000 0.375000 +v -1.125000 1.750000 1.125000 +v -1.125000 0.250000 1.125000 +v -1.125000 0.250000 -1.125000 +v -1.125000 1.750000 -1.125000 +v -1.125000 1.750000 -0.375000 +v -1.125000 0.250000 -0.375000 +v -1.125000 1.750000 0.375000 +v -1.125000 0.250000 0.375000 +v 0.375000 1.750000 -1.125000 +v 0.375000 0.250000 -1.125000 +v -0.375000 1.750000 -1.125000 +v -0.375000 0.250000 -1.125000 +v -0.375000 0.250000 1.375000 +v -0.375000 1.750000 1.375000 +v 0.375000 0.250000 1.375000 +v 0.375000 1.750000 1.375000 +v -0.375000 1.750000 1.125000 +v -0.375000 0.250000 1.125000 +v 0.375000 1.750000 1.125000 +v 0.375000 0.250000 1.125000 +v 1.125000 0.250000 1.375000 +v 1.125000 1.750000 1.375000 +v -1.125000 1.750000 1.375000 +v -1.125000 0.250000 1.375000 +v 1.125000 1.750000 -1.375000 +v 1.125000 0.250000 -1.375000 +v -1.125000 0.250000 -1.375000 +v -1.125000 1.750000 -1.375000 +v -0.812500 0.375000 -1.125000 +v -0.849112 0.463388 -1.125000 +v -0.937500 0.500000 -1.125000 +v -1.025888 0.463388 -1.125000 +v -1.062500 0.375000 -1.125000 +v -1.025888 0.286612 -1.125000 +v -0.937500 0.250000 -1.125000 +v -0.849112 0.286612 -1.125000 +v -0.812500 0.375000 -1.375000 +v -0.849112 0.463388 -1.375000 +v -0.937500 0.500000 -1.375000 +v -1.025888 0.463388 -1.375000 +v -1.062500 0.375000 -1.375000 +v -1.025888 0.286612 -1.375000 +v -0.937500 0.250000 -1.375000 +v -0.849112 0.286612 -1.375000 +v -0.812500 0.411612 -1.463388 +v -0.849112 0.474112 -1.400888 +v -1.025889 0.474112 -1.400888 +v -1.062500 0.411612 -1.463388 +v -1.025889 0.349112 -1.525888 +v -0.937500 0.323224 -1.551777 +v -0.849112 0.349112 -1.525888 +v -0.812500 0.500000 -1.500000 +v -0.849112 0.500000 -1.411611 +v -1.025889 0.500000 -1.411611 +v -1.062500 0.500000 -1.500000 +v -1.025889 0.500000 -1.588388 +v -0.937500 0.500000 -1.625000 +v -0.849112 0.500000 -1.588388 +v -1.062500 1.625000 -1.125000 +v -1.025888 1.536612 -1.125000 +v -0.937500 1.500000 -1.125000 +v -0.849112 1.536612 -1.125000 +v -0.812500 1.625000 -1.125000 +v -0.849112 1.713388 -1.125000 +v -0.937500 1.750000 -1.125000 +v -1.025888 1.713388 -1.125000 +v -1.062500 1.625000 -1.375000 +v -1.025889 1.536612 -1.375000 +v -0.937500 1.500000 -1.375000 +v -0.849112 1.536612 -1.375000 +v -0.812500 1.625000 -1.375000 +v -0.849112 1.713388 -1.375000 +v -0.937500 1.750000 -1.375000 +v -1.025888 1.713388 -1.375000 +v -1.062500 1.588388 -1.463388 +v -1.025889 1.525888 -1.400888 +v -0.849112 1.525888 -1.400888 +v -0.812500 1.588388 -1.463388 +v -0.849112 1.650888 -1.525888 +v -0.937500 1.676777 -1.551777 +v -1.025888 1.650888 -1.525888 +v -1.062500 1.500000 -1.500000 +v -1.025889 1.500000 -1.411611 +v -0.849112 1.500000 -1.411611 +v -0.812500 1.500000 -1.500000 +v -0.849112 1.500000 -1.588388 +v -0.937500 1.500000 -1.625000 +v -1.025888 1.500000 -1.588388 +v -0.437500 0.375000 -1.125000 +v -0.474112 0.463388 -1.125000 +v -0.562500 0.500000 -1.125000 +v -0.650888 0.463388 -1.125000 +v -0.687500 0.375000 -1.125000 +v -0.650888 0.286612 -1.125000 +v -0.562500 0.250000 -1.125000 +v -0.474112 0.286612 -1.125000 +v -0.437500 0.375000 -1.375000 +v -0.474112 0.463388 -1.375000 +v -0.562500 0.500000 -1.375000 +v -0.650888 0.463388 -1.375000 +v -0.687500 0.375000 -1.375000 +v -0.650888 0.286612 -1.375000 +v -0.562500 0.250000 -1.375000 +v -0.474112 0.286612 -1.375000 +v -0.437500 0.411612 -1.463388 +v -0.474112 0.474112 -1.400888 +v -0.650889 0.474112 -1.400888 +v -0.687500 0.411612 -1.463388 +v -0.650889 0.349112 -1.525888 +v -0.562500 0.323224 -1.551777 +v -0.474112 0.349112 -1.525888 +v -0.437500 0.500000 -1.500000 +v -0.474112 0.500000 -1.411611 +v -0.650889 0.500000 -1.411611 +v -0.687500 0.500000 -1.500000 +v -0.650889 0.500000 -1.588388 +v -0.562500 0.500000 -1.625000 +v -0.474112 0.500000 -1.588388 +v -0.687500 1.625000 -1.125000 +v -0.650888 1.536612 -1.125000 +v -0.562500 1.500000 -1.125000 +v -0.474112 1.536612 -1.125000 +v -0.437500 1.625000 -1.125000 +v -0.474112 1.713388 -1.125000 +v -0.562500 1.750000 -1.125000 +v -0.650888 1.713388 -1.125000 +v -0.687500 1.625000 -1.375000 +v -0.650889 1.536612 -1.375000 +v -0.562500 1.500000 -1.375000 +v -0.474112 1.536612 -1.375000 +v -0.437500 1.625000 -1.375000 +v -0.474112 1.713388 -1.375000 +v -0.562500 1.750000 -1.375000 +v -0.650888 1.713388 -1.375000 +v -0.687500 1.588388 -1.463388 +v -0.650889 1.525888 -1.400888 +v -0.474112 1.525888 -1.400888 +v -0.437500 1.588388 -1.463388 +v -0.474112 1.650888 -1.525888 +v -0.562500 1.676777 -1.551777 +v -0.650888 1.650888 -1.525888 +v -0.687500 1.500000 -1.500000 +v -0.650889 1.500000 -1.411611 +v -0.474112 1.500000 -1.411611 +v -0.437500 1.500000 -1.500000 +v -0.474112 1.500000 -1.588388 +v -0.562500 1.500000 -1.625000 +v -0.650888 1.500000 -1.588388 +v 0.687500 0.375000 -1.125000 +v 0.650888 0.463388 -1.125000 +v 0.562500 0.500000 -1.125000 +v 0.474112 0.463388 -1.125000 +v 0.437500 0.375000 -1.125000 +v 0.474112 0.286612 -1.125000 +v 0.562500 0.250000 -1.125000 +v 0.650888 0.286612 -1.125000 +v 0.687500 0.375000 -1.375000 +v 0.650888 0.463388 -1.375000 +v 0.562500 0.500000 -1.375000 +v 0.474112 0.463388 -1.375000 +v 0.437500 0.375000 -1.375000 +v 0.474112 0.286612 -1.375000 +v 0.562500 0.250000 -1.375000 +v 0.650888 0.286612 -1.375000 +v 0.687500 0.411612 -1.463388 +v 0.650888 0.474112 -1.400888 +v 0.474111 0.474112 -1.400888 +v 0.437500 0.411612 -1.463388 +v 0.474111 0.349112 -1.525888 +v 0.562500 0.323224 -1.551777 +v 0.650888 0.349112 -1.525888 +v 0.687500 0.500000 -1.500000 +v 0.650888 0.500000 -1.411611 +v 0.474111 0.500000 -1.411611 +v 0.437500 0.500000 -1.500000 +v 0.474111 0.500000 -1.588388 +v 0.562500 0.500000 -1.625000 +v 0.650888 0.500000 -1.588388 +v 0.437500 1.625000 -1.125000 +v 0.474112 1.536612 -1.125000 +v 0.562500 1.500000 -1.125000 +v 0.650888 1.536612 -1.125000 +v 0.687500 1.625000 -1.125000 +v 0.650888 1.713388 -1.125000 +v 0.562500 1.750000 -1.125000 +v 0.474112 1.713388 -1.125000 +v 0.437500 1.625000 -1.375000 +v 0.474111 1.536612 -1.375000 +v 0.562500 1.500000 -1.375000 +v 0.650888 1.536612 -1.375000 +v 0.687500 1.625000 -1.375000 +v 0.650888 1.713388 -1.375000 +v 0.562500 1.750000 -1.375000 +v 0.474112 1.713388 -1.375000 +v 0.437500 1.588388 -1.463388 +v 0.474111 1.525888 -1.400888 +v 0.650888 1.525888 -1.400888 +v 0.687500 1.588388 -1.463388 +v 0.650888 1.650888 -1.525888 +v 0.562500 1.676777 -1.551777 +v 0.474112 1.650888 -1.525888 +v 0.437500 1.500000 -1.500000 +v 0.474111 1.500000 -1.411611 +v 0.650888 1.500000 -1.411611 +v 0.687500 1.500000 -1.500000 +v 0.650888 1.500000 -1.588388 +v 0.562500 1.500000 -1.625000 +v 0.474112 1.500000 -1.588388 +v 1.062500 0.375000 -1.125000 +v 1.025888 0.463388 -1.125000 +v 0.937500 0.500000 -1.125000 +v 0.849112 0.463388 -1.125000 +v 0.812500 0.375000 -1.125000 +v 0.849112 0.286612 -1.125000 +v 0.937500 0.250000 -1.125000 +v 1.025888 0.286612 -1.125000 +v 1.062500 0.375000 -1.375000 +v 1.025888 0.463388 -1.375000 +v 0.937500 0.500000 -1.375000 +v 0.849112 0.463388 -1.375000 +v 0.812500 0.375000 -1.375000 +v 0.849112 0.286612 -1.375000 +v 0.937500 0.250000 -1.375000 +v 1.025888 0.286612 -1.375000 +v 1.062500 0.411612 -1.463388 +v 1.025888 0.474112 -1.400888 +v 0.849111 0.474112 -1.400888 +v 0.812500 0.411612 -1.463388 +v 0.849111 0.349112 -1.525888 +v 0.937500 0.323224 -1.551777 +v 1.025888 0.349112 -1.525888 +v 1.062500 0.500000 -1.500000 +v 1.025888 0.500000 -1.411611 +v 0.849111 0.500000 -1.411611 +v 0.812500 0.500000 -1.500000 +v 0.849111 0.500000 -1.588388 +v 0.937500 0.500000 -1.625000 +v 1.025888 0.500000 -1.588388 +v 0.812500 1.625000 -1.125000 +v 0.849112 1.536612 -1.125000 +v 0.937500 1.500000 -1.125000 +v 1.025888 1.536612 -1.125000 +v 1.062500 1.625000 -1.125000 +v 1.025888 1.713388 -1.125000 +v 0.937500 1.750000 -1.125000 +v 0.849112 1.713388 -1.125000 +v 0.812500 1.625000 -1.375000 +v 0.849111 1.536612 -1.375000 +v 0.937500 1.500000 -1.375000 +v 1.025888 1.536612 -1.375000 +v 1.062500 1.625000 -1.375000 +v 1.025888 1.713388 -1.375000 +v 0.937500 1.750000 -1.375000 +v 0.849112 1.713388 -1.375000 +v 0.812500 1.588388 -1.463388 +v 0.849111 1.525888 -1.400888 +v 1.025888 1.525888 -1.400888 +v 1.062500 1.588388 -1.463388 +v 1.025888 1.650888 -1.525888 +v 0.937500 1.676777 -1.551777 +v 0.849112 1.650888 -1.525888 +v 0.812500 1.500000 -1.500000 +v 0.849111 1.500000 -1.411611 +v 1.025888 1.500000 -1.411611 +v 1.062500 1.500000 -1.500000 +v 1.025888 1.500000 -1.588388 +v 0.937500 1.500000 -1.625000 +v 0.849112 1.500000 -1.588388 +v 0.812500 0.375000 1.125000 +v 0.849112 0.463388 1.125000 +v 0.937500 0.500000 1.125000 +v 1.025888 0.463388 1.125000 +v 1.062500 0.375000 1.125000 +v 1.025888 0.286612 1.125000 +v 0.937500 0.250000 1.125000 +v 0.849112 0.286612 1.125000 +v 0.812500 0.375000 1.375000 +v 0.849112 0.463388 1.375000 +v 0.937500 0.500000 1.375000 +v 1.025888 0.463388 1.375000 +v 1.062500 0.375000 1.375000 +v 1.025888 0.286612 1.375000 +v 0.937500 0.250000 1.375000 +v 0.849112 0.286612 1.375000 +v 0.812500 0.411612 1.463388 +v 0.849112 0.474112 1.400888 +v 1.025889 0.474112 1.400888 +v 1.062500 0.411612 1.463388 +v 1.025889 0.349112 1.525888 +v 0.937500 0.323224 1.551777 +v 0.849112 0.349112 1.525888 +v 0.812500 0.500000 1.500000 +v 0.849112 0.500000 1.411611 +v 1.025889 0.500000 1.411611 +v 1.062500 0.500000 1.500000 +v 1.025889 0.500000 1.588388 +v 0.937500 0.500000 1.625000 +v 0.849112 0.500000 1.588388 +v 1.062500 1.625000 1.125000 +v 1.025888 1.536612 1.125000 +v 0.937500 1.500000 1.125000 +v 0.849112 1.536612 1.125000 +v 0.812500 1.625000 1.125000 +v 0.849112 1.713388 1.125000 +v 0.937500 1.750000 1.125000 +v 1.025888 1.713388 1.125000 +v 1.062500 1.625000 1.375000 +v 1.025889 1.536612 1.375000 +v 0.937500 1.500000 1.375000 +v 0.849112 1.536612 1.375000 +v 0.812500 1.625000 1.375000 +v 0.849112 1.713388 1.375000 +v 0.937500 1.750000 1.375000 +v 1.025888 1.713388 1.375000 +v 1.062500 1.588388 1.463388 +v 1.025889 1.525888 1.400888 +v 0.849112 1.525888 1.400888 +v 0.812500 1.588388 1.463388 +v 0.849112 1.650888 1.525888 +v 0.937500 1.676777 1.551777 +v 1.025889 1.650888 1.525888 +v 1.062500 1.500000 1.500000 +v 1.025889 1.500000 1.411611 +v 0.849112 1.500000 1.411611 +v 0.812500 1.500000 1.500000 +v 0.849112 1.500000 1.588388 +v 0.937500 1.500000 1.625000 +v 1.025889 1.500000 1.588388 +v 0.437500 0.375000 1.125000 +v 0.474112 0.463388 1.125000 +v 0.562500 0.500000 1.125000 +v 0.650889 0.463388 1.125000 +v 0.687500 0.375000 1.125000 +v 0.650889 0.286612 1.125000 +v 0.562500 0.250000 1.125000 +v 0.474112 0.286612 1.125000 +v 0.437500 0.375000 1.375000 +v 0.474112 0.463388 1.375000 +v 0.562500 0.500000 1.375000 +v 0.650889 0.463388 1.375000 +v 0.687500 0.375000 1.375000 +v 0.650889 0.286612 1.375000 +v 0.562500 0.250000 1.375000 +v 0.474112 0.286612 1.375000 +v 0.437500 0.411612 1.463388 +v 0.474112 0.474112 1.400888 +v 0.650889 0.474112 1.400888 +v 0.687500 0.411612 1.463388 +v 0.650889 0.349112 1.525888 +v 0.562500 0.323224 1.551777 +v 0.474112 0.349112 1.525888 +v 0.437500 0.500000 1.500000 +v 0.474112 0.500000 1.411611 +v 0.650889 0.500000 1.411611 +v 0.687500 0.500000 1.500000 +v 0.650889 0.500000 1.588388 +v 0.562500 0.500000 1.625000 +v 0.474112 0.500000 1.588388 +v 0.687500 1.625000 1.125000 +v 0.650889 1.536612 1.125000 +v 0.562500 1.500000 1.125000 +v 0.474112 1.536612 1.125000 +v 0.437500 1.625000 1.125000 +v 0.474112 1.713388 1.125000 +v 0.562500 1.750000 1.125000 +v 0.650888 1.713388 1.125000 +v 0.687500 1.625000 1.375000 +v 0.650889 1.536612 1.375000 +v 0.562500 1.500000 1.375000 +v 0.474112 1.536612 1.375000 +v 0.437500 1.625000 1.375000 +v 0.474112 1.713388 1.375000 +v 0.562500 1.750000 1.375000 +v 0.650889 1.713388 1.375000 +v 0.687500 1.588388 1.463388 +v 0.650889 1.525888 1.400888 +v 0.474112 1.525888 1.400888 +v 0.437500 1.588388 1.463388 +v 0.474112 1.650888 1.525888 +v 0.562500 1.676777 1.551777 +v 0.650888 1.650888 1.525888 +v 0.687500 1.500000 1.500000 +v 0.650889 1.500000 1.411611 +v 0.474112 1.500000 1.411611 +v 0.437500 1.500000 1.500000 +v 0.474112 1.500000 1.588388 +v 0.562500 1.500000 1.625000 +v 0.650888 1.500000 1.588388 +v -0.687500 0.375000 1.125000 +v -0.650888 0.463388 1.125000 +v -0.562500 0.500000 1.125000 +v -0.474111 0.463388 1.125000 +v -0.437500 0.375000 1.125000 +v -0.474111 0.286612 1.125000 +v -0.562500 0.250000 1.125000 +v -0.650888 0.286612 1.125000 +v -0.687500 0.375000 1.375000 +v -0.650888 0.463388 1.375000 +v -0.562500 0.500000 1.375000 +v -0.474111 0.463388 1.375000 +v -0.437500 0.375000 1.375000 +v -0.474111 0.286612 1.375000 +v -0.562500 0.250000 1.375000 +v -0.650888 0.286612 1.375000 +v -0.687500 0.411612 1.463388 +v -0.650888 0.474112 1.400888 +v -0.474111 0.474112 1.400888 +v -0.437500 0.411612 1.463388 +v -0.474111 0.349112 1.525888 +v -0.562500 0.323224 1.551777 +v -0.650888 0.349112 1.525888 +v -0.687500 0.500000 1.500000 +v -0.650888 0.500000 1.411611 +v -0.474111 0.500000 1.411611 +v -0.437500 0.500000 1.500000 +v -0.474111 0.500000 1.588388 +v -0.562500 0.500000 1.625000 +v -0.650888 0.500000 1.588388 +v -0.437500 1.625000 1.125000 +v -0.474111 1.536612 1.125000 +v -0.562500 1.500000 1.125000 +v -0.650888 1.536612 1.125000 +v -0.687500 1.625000 1.125000 +v -0.650888 1.713388 1.125000 +v -0.562500 1.750000 1.125000 +v -0.474112 1.713388 1.125000 +v -0.437500 1.625000 1.375000 +v -0.474111 1.536612 1.375000 +v -0.562500 1.500000 1.375000 +v -0.650888 1.536612 1.375000 +v -0.687500 1.625000 1.375000 +v -0.650888 1.713388 1.375000 +v -0.562500 1.750000 1.375000 +v -0.474111 1.713388 1.375000 +v -0.437500 1.588388 1.463388 +v -0.474111 1.525888 1.400888 +v -0.650888 1.525888 1.400888 +v -0.687500 1.588388 1.463388 +v -0.650888 1.650888 1.525888 +v -0.562500 1.676777 1.551777 +v -0.474112 1.650888 1.525888 +v -0.437500 1.500000 1.500000 +v -0.474111 1.500000 1.411611 +v -0.650888 1.500000 1.411611 +v -0.687500 1.500000 1.500000 +v -0.650888 1.500000 1.588388 +v -0.562500 1.500000 1.625000 +v -0.474112 1.500000 1.588388 +v -1.062500 0.375000 1.125000 +v -1.025888 0.463388 1.125000 +v -0.937500 0.500000 1.125000 +v -0.849111 0.463388 1.125000 +v -0.812500 0.375000 1.125000 +v -0.849111 0.286612 1.125000 +v -0.937500 0.250000 1.125000 +v -1.025888 0.286612 1.125000 +v -1.062500 0.375000 1.375000 +v -1.025888 0.463388 1.375000 +v -0.937500 0.500000 1.375000 +v -0.849111 0.463388 1.375000 +v -0.812500 0.375000 1.375000 +v -0.849111 0.286612 1.375000 +v -0.937500 0.250000 1.375000 +v -1.025888 0.286612 1.375000 +v -1.062500 0.411612 1.463388 +v -1.025888 0.474112 1.400888 +v -0.849111 0.474112 1.400888 +v -0.812500 0.411612 1.463388 +v -0.849111 0.349112 1.525888 +v -0.937500 0.323224 1.551777 +v -1.025888 0.349112 1.525888 +v -1.062500 0.500000 1.500000 +v -1.025888 0.500000 1.411612 +v -0.849111 0.500000 1.411612 +v -0.812500 0.500000 1.500000 +v -0.849111 0.500000 1.588388 +v -0.937500 0.500000 1.625000 +v -1.025888 0.500000 1.588388 +v -0.812500 1.625000 1.125000 +v -0.849111 1.536612 1.125000 +v -0.937500 1.500000 1.125000 +v -1.025888 1.536612 1.125000 +v -1.062500 1.625000 1.125000 +v -1.025888 1.713388 1.125000 +v -0.937500 1.750000 1.125000 +v -0.849112 1.713388 1.125000 +v -0.812500 1.625000 1.375000 +v -0.849111 1.536612 1.375000 +v -0.937500 1.500000 1.375000 +v -1.025888 1.536612 1.375000 +v -1.062500 1.625000 1.375000 +v -1.025888 1.713388 1.375000 +v -0.937500 1.750000 1.375000 +v -0.849111 1.713388 1.375000 +v -0.812500 1.588388 1.463388 +v -0.849111 1.525888 1.400888 +v -1.025888 1.525888 1.400888 +v -1.062500 1.588388 1.463388 +v -1.025888 1.650888 1.525888 +v -0.937500 1.676777 1.551777 +v -0.849112 1.650888 1.525888 +v -0.812500 1.500000 1.500000 +v -0.849111 1.500000 1.411612 +v -1.025888 1.500000 1.411612 +v -1.062500 1.500000 1.500000 +v -1.025888 1.500000 1.588388 +v -0.937500 1.500000 1.625000 +v -0.849112 1.500000 1.588388 +v -1.125000 0.375000 0.812500 +v -1.125000 0.463389 0.849112 +v -1.125000 0.500000 0.937500 +v -1.125000 0.463389 1.025888 +v -1.125000 0.375000 1.062500 +v -1.125000 0.286612 1.025888 +v -1.125000 0.250000 0.937500 +v -1.125000 0.286612 0.849112 +v -1.375000 0.375000 0.812500 +v -1.375000 0.463389 0.849112 +v -1.375000 0.500000 0.937500 +v -1.375000 0.463389 1.025888 +v -1.375000 0.375000 1.062500 +v -1.375000 0.286612 1.025888 +v -1.375000 0.250000 0.937500 +v -1.375000 0.286612 0.849112 +v -1.463388 0.411612 0.812500 +v -1.400888 0.474112 0.849112 +v -1.400888 0.474112 1.025889 +v -1.463388 0.411612 1.062500 +v -1.525888 0.349112 1.025889 +v -1.551777 0.323224 0.937500 +v -1.525888 0.349112 0.849112 +v -1.500000 0.500000 0.812500 +v -1.411611 0.500000 0.849112 +v -1.411611 0.500000 1.025889 +v -1.500000 0.500000 1.062500 +v -1.588388 0.500000 1.025889 +v -1.625000 0.500000 0.937500 +v -1.588388 0.500000 0.849112 +v -1.125000 1.625000 1.062500 +v -1.125000 1.536612 1.025888 +v -1.125000 1.500000 0.937500 +v -1.125000 1.536612 0.849112 +v -1.125000 1.625000 0.812500 +v -1.125000 1.713388 0.849112 +v -1.125000 1.750000 0.937500 +v -1.125000 1.713388 1.025888 +v -1.375000 1.625000 1.062500 +v -1.375000 1.536612 1.025889 +v -1.375000 1.500000 0.937500 +v -1.375000 1.536612 0.849112 +v -1.375000 1.625000 0.812500 +v -1.375000 1.713388 0.849112 +v -1.375000 1.750000 0.937500 +v -1.375000 1.713388 1.025888 +v -1.463388 1.588388 1.062500 +v -1.400888 1.525888 1.025889 +v -1.400888 1.525888 0.849112 +v -1.463388 1.588388 0.812500 +v -1.525888 1.650888 0.849112 +v -1.551777 1.676777 0.937500 +v -1.525888 1.650888 1.025888 +v -1.500000 1.500000 1.062500 +v -1.411611 1.500000 1.025889 +v -1.411611 1.500000 0.849112 +v -1.500000 1.500000 0.812500 +v -1.588388 1.500000 0.849112 +v -1.625000 1.500000 0.937500 +v -1.588388 1.500000 1.025888 +v -1.125000 0.375000 0.437500 +v -1.125000 0.463389 0.474112 +v -1.125000 0.500000 0.562500 +v -1.125000 0.463389 0.650888 +v -1.125000 0.375000 0.687500 +v -1.125000 0.286612 0.650888 +v -1.125000 0.250000 0.562500 +v -1.125000 0.286612 0.474112 +v -1.375000 0.375000 0.437500 +v -1.375000 0.463389 0.474112 +v -1.375000 0.500000 0.562500 +v -1.375000 0.463389 0.650888 +v -1.375000 0.375000 0.687500 +v -1.375000 0.286612 0.650888 +v -1.375000 0.250000 0.562500 +v -1.375000 0.286612 0.474112 +v -1.463388 0.411612 0.437500 +v -1.400888 0.474112 0.474112 +v -1.400888 0.474112 0.650889 +v -1.463388 0.411612 0.687500 +v -1.525888 0.349112 0.650889 +v -1.551777 0.323224 0.562500 +v -1.525888 0.349112 0.474112 +v -1.500000 0.500000 0.437500 +v -1.411611 0.500000 0.474112 +v -1.411611 0.500000 0.650889 +v -1.500000 0.500000 0.687500 +v -1.588388 0.500000 0.650889 +v -1.625000 0.500000 0.562500 +v -1.588388 0.500000 0.474112 +v -1.125000 1.625000 0.687500 +v -1.125000 1.536612 0.650888 +v -1.125000 1.500000 0.562500 +v -1.125000 1.536612 0.474112 +v -1.125000 1.625000 0.437500 +v -1.125000 1.713388 0.474112 +v -1.125000 1.750000 0.562500 +v -1.125000 1.713388 0.650888 +v -1.375000 1.625000 0.687500 +v -1.375000 1.536612 0.650889 +v -1.375000 1.500000 0.562500 +v -1.375000 1.536612 0.474112 +v -1.375000 1.625000 0.437500 +v -1.375000 1.713388 0.474112 +v -1.375000 1.750000 0.562500 +v -1.375000 1.713388 0.650888 +v -1.463388 1.588388 0.687500 +v -1.400888 1.525888 0.650889 +v -1.400888 1.525888 0.474112 +v -1.463388 1.588388 0.437500 +v -1.525888 1.650888 0.474112 +v -1.551777 1.676777 0.562500 +v -1.525888 1.650888 0.650888 +v -1.500000 1.500000 0.687500 +v -1.411611 1.500000 0.650889 +v -1.411611 1.500000 0.474112 +v -1.500000 1.500000 0.437500 +v -1.588388 1.500000 0.474112 +v -1.625000 1.500000 0.562500 +v -1.588388 1.500000 0.650888 +v -1.125000 0.375000 -0.687500 +v -1.125000 0.463389 -0.650888 +v -1.125000 0.500000 -0.562500 +v -1.125000 0.463389 -0.474111 +v -1.125000 0.375000 -0.437500 +v -1.125000 0.286612 -0.474111 +v -1.125000 0.250000 -0.562500 +v -1.125000 0.286612 -0.650888 +v -1.375000 0.375000 -0.687500 +v -1.375000 0.463389 -0.650888 +v -1.375000 0.500000 -0.562500 +v -1.375000 0.463389 -0.474111 +v -1.375000 0.375000 -0.437500 +v -1.375000 0.286612 -0.474111 +v -1.375000 0.250000 -0.562500 +v -1.375000 0.286612 -0.650888 +v -1.463388 0.411612 -0.687500 +v -1.400888 0.474112 -0.650888 +v -1.400888 0.474112 -0.474111 +v -1.463388 0.411612 -0.437500 +v -1.525888 0.349112 -0.474111 +v -1.551777 0.323224 -0.562500 +v -1.525888 0.349112 -0.650888 +v -1.500000 0.500000 -0.687500 +v -1.411611 0.500000 -0.650888 +v -1.411611 0.500000 -0.474111 +v -1.500000 0.500000 -0.437500 +v -1.588388 0.500000 -0.474111 +v -1.625000 0.500000 -0.562500 +v -1.588388 0.500000 -0.650888 +v -1.125000 1.625000 -0.437500 +v -1.125000 1.536612 -0.474111 +v -1.125000 1.500000 -0.562500 +v -1.125000 1.536612 -0.650888 +v -1.125000 1.625000 -0.687500 +v -1.125000 1.713388 -0.650888 +v -1.125000 1.750000 -0.562500 +v -1.125000 1.713388 -0.474112 +v -1.375000 1.625000 -0.437500 +v -1.375000 1.536612 -0.474111 +v -1.375000 1.500000 -0.562500 +v -1.375000 1.536612 -0.650888 +v -1.375000 1.625000 -0.687500 +v -1.375000 1.713388 -0.650888 +v -1.375000 1.750000 -0.562500 +v -1.375000 1.713388 -0.474111 +v -1.463388 1.588388 -0.437500 +v -1.400888 1.525888 -0.474111 +v -1.400888 1.525888 -0.650888 +v -1.463388 1.588388 -0.687500 +v -1.525888 1.650888 -0.650888 +v -1.551777 1.676777 -0.562500 +v -1.525888 1.650888 -0.474112 +v -1.500000 1.500000 -0.437500 +v -1.411611 1.500000 -0.474111 +v -1.411611 1.500000 -0.650888 +v -1.500000 1.500000 -0.687500 +v -1.588388 1.500000 -0.650888 +v -1.625000 1.500000 -0.562500 +v -1.588388 1.500000 -0.474112 +v -1.125000 0.375000 -1.062500 +v -1.125000 0.463389 -1.025888 +v -1.125000 0.500000 -0.937500 +v -1.125000 0.463389 -0.849111 +v -1.125000 0.375000 -0.812500 +v -1.125000 0.286612 -0.849111 +v -1.125000 0.250000 -0.937500 +v -1.125000 0.286612 -1.025888 +v -1.375000 0.375000 -1.062500 +v -1.375000 0.463389 -1.025888 +v -1.375000 0.500000 -0.937500 +v -1.375000 0.463389 -0.849111 +v -1.375000 0.375000 -0.812500 +v -1.375000 0.286612 -0.849111 +v -1.375000 0.250000 -0.937500 +v -1.375000 0.286612 -1.025888 +v -1.463388 0.411612 -1.062500 +v -1.400888 0.474112 -1.025888 +v -1.400888 0.474112 -0.849111 +v -1.463388 0.411612 -0.812500 +v -1.525888 0.349112 -0.849111 +v -1.551777 0.323224 -0.937500 +v -1.525888 0.349112 -1.025888 +v -1.500000 0.500000 -1.062500 +v -1.411611 0.500000 -1.025888 +v -1.411611 0.500000 -0.849111 +v -1.500000 0.500000 -0.812500 +v -1.588388 0.500000 -0.849111 +v -1.625000 0.500000 -0.937500 +v -1.588388 0.500000 -1.025888 +v -1.125000 1.625000 -0.812500 +v -1.125000 1.536612 -0.849111 +v -1.125000 1.500000 -0.937500 +v -1.125000 1.536612 -1.025888 +v -1.125000 1.625000 -1.062500 +v -1.125000 1.713388 -1.025888 +v -1.125000 1.750000 -0.937500 +v -1.125000 1.713388 -0.849112 +v -1.375000 1.625000 -0.812500 +v -1.375000 1.536612 -0.849111 +v -1.375000 1.500000 -0.937500 +v -1.375000 1.536612 -1.025888 +v -1.375000 1.625000 -1.062500 +v -1.375000 1.713388 -1.025888 +v -1.375000 1.750000 -0.937500 +v -1.375000 1.713388 -0.849111 +v -1.463388 1.588388 -0.812500 +v -1.400888 1.525888 -0.849111 +v -1.400888 1.525888 -1.025888 +v -1.463388 1.588388 -1.062500 +v -1.525888 1.650888 -1.025888 +v -1.551777 1.676777 -0.937500 +v -1.525888 1.650888 -0.849112 +v -1.500000 1.500000 -0.812500 +v -1.411611 1.500000 -0.849111 +v -1.411611 1.500000 -1.025888 +v -1.500000 1.500000 -1.062500 +v -1.588388 1.500000 -1.025888 +v -1.625000 1.500000 -0.937500 +v -1.588388 1.500000 -0.849112 +v 1.125000 0.375000 -0.812500 +v 1.125000 0.463389 -0.849112 +v 1.125000 0.500000 -0.937500 +v 1.125000 0.463389 -1.025888 +v 1.125000 0.375000 -1.062500 +v 1.125000 0.286612 -1.025888 +v 1.125000 0.250000 -0.937500 +v 1.125000 0.286612 -0.849112 +v 1.375000 0.375000 -0.812500 +v 1.375000 0.463389 -0.849112 +v 1.375000 0.500000 -0.937500 +v 1.375000 0.463389 -1.025888 +v 1.375000 0.375000 -1.062500 +v 1.375000 0.286612 -1.025888 +v 1.375000 0.250000 -0.937500 +v 1.375000 0.286612 -0.849112 +v 1.463388 0.411612 -0.812500 +v 1.400888 0.474112 -0.849112 +v 1.400888 0.474112 -1.025889 +v 1.463388 0.411612 -1.062501 +v 1.525888 0.349112 -1.025889 +v 1.551777 0.323224 -0.937500 +v 1.525888 0.349112 -0.849112 +v 1.500000 0.500000 -0.812500 +v 1.411611 0.500000 -0.849112 +v 1.411611 0.500000 -1.025889 +v 1.500000 0.500000 -1.062500 +v 1.588388 0.500000 -1.025889 +v 1.625000 0.500000 -0.937500 +v 1.588388 0.500000 -0.849112 +v 1.125000 1.625000 -1.062500 +v 1.125000 1.536612 -1.025888 +v 1.125000 1.500000 -0.937500 +v 1.125000 1.536612 -0.849112 +v 1.125000 1.625000 -0.812500 +v 1.125000 1.713388 -0.849112 +v 1.125000 1.750000 -0.937500 +v 1.125000 1.713388 -1.025888 +v 1.375000 1.625000 -1.062500 +v 1.375000 1.536612 -1.025889 +v 1.375000 1.500000 -0.937500 +v 1.375000 1.536612 -0.849112 +v 1.375000 1.625000 -0.812500 +v 1.375000 1.713388 -0.849112 +v 1.375000 1.750000 -0.937500 +v 1.375000 1.713388 -1.025888 +v 1.463388 1.588388 -1.062501 +v 1.400888 1.525888 -1.025889 +v 1.400888 1.525888 -0.849112 +v 1.463388 1.588388 -0.812500 +v 1.525888 1.650888 -0.849112 +v 1.551777 1.676777 -0.937500 +v 1.525888 1.650888 -1.025889 +v 1.500000 1.500000 -1.062500 +v 1.411611 1.500000 -1.025889 +v 1.411611 1.500000 -0.849112 +v 1.500000 1.500000 -0.812500 +v 1.588388 1.500000 -0.849112 +v 1.625000 1.500000 -0.937500 +v 1.588388 1.500000 -1.025889 +v 1.125000 0.375000 -0.437500 +v 1.125000 0.463389 -0.474112 +v 1.125000 0.500000 -0.562500 +v 1.125000 0.463389 -0.650889 +v 1.125000 0.375000 -0.687500 +v 1.125000 0.286612 -0.650889 +v 1.125000 0.250000 -0.562500 +v 1.125000 0.286612 -0.474112 +v 1.375000 0.375000 -0.437500 +v 1.375000 0.463389 -0.474112 +v 1.375000 0.500000 -0.562500 +v 1.375000 0.463389 -0.650889 +v 1.375000 0.375000 -0.687500 +v 1.375000 0.286612 -0.650889 +v 1.375000 0.250000 -0.562500 +v 1.375000 0.286612 -0.474112 +v 1.463388 0.411612 -0.437500 +v 1.400888 0.474112 -0.474112 +v 1.400888 0.474112 -0.650889 +v 1.463388 0.411612 -0.687500 +v 1.525888 0.349112 -0.650889 +v 1.551777 0.323224 -0.562500 +v 1.525888 0.349112 -0.474112 +v 1.500000 0.500000 -0.437500 +v 1.411611 0.500000 -0.474112 +v 1.411611 0.500000 -0.650889 +v 1.500000 0.500000 -0.687500 +v 1.588388 0.500000 -0.650889 +v 1.625000 0.500000 -0.562500 +v 1.588388 0.500000 -0.474112 +v 1.125000 1.625000 -0.687500 +v 1.125000 1.536612 -0.650889 +v 1.125000 1.500000 -0.562500 +v 1.125000 1.536612 -0.474112 +v 1.125000 1.625000 -0.437500 +v 1.125000 1.713388 -0.474112 +v 1.125000 1.750000 -0.562500 +v 1.125000 1.713388 -0.650888 +v 1.375000 1.625000 -0.687500 +v 1.375000 1.536612 -0.650889 +v 1.375000 1.500000 -0.562500 +v 1.375000 1.536612 -0.474112 +v 1.375000 1.625000 -0.437500 +v 1.375000 1.713388 -0.474112 +v 1.375000 1.750000 -0.562500 +v 1.375000 1.713388 -0.650889 +v 1.463388 1.588388 -0.687500 +v 1.400888 1.525888 -0.650889 +v 1.400888 1.525888 -0.474112 +v 1.463388 1.588388 -0.437500 +v 1.525888 1.650888 -0.474112 +v 1.551777 1.676777 -0.562500 +v 1.525888 1.650888 -0.650889 +v 1.500000 1.500000 -0.687500 +v 1.411611 1.500000 -0.650889 +v 1.411611 1.500000 -0.474112 +v 1.500000 1.500000 -0.437500 +v 1.588388 1.500000 -0.474112 +v 1.625000 1.500000 -0.562500 +v 1.588388 1.500000 -0.650889 +v 1.125000 0.375000 0.687500 +v 1.125000 0.463389 0.650888 +v 1.125000 0.500000 0.562500 +v 1.125000 0.463389 0.474111 +v 1.125000 0.375000 0.437500 +v 1.125000 0.286612 0.474111 +v 1.125000 0.250000 0.562500 +v 1.125000 0.286612 0.650888 +v 1.375000 0.375000 0.687500 +v 1.375000 0.463389 0.650888 +v 1.375000 0.500000 0.562500 +v 1.375000 0.463389 0.474111 +v 1.375000 0.375000 0.437500 +v 1.375000 0.286612 0.474111 +v 1.375000 0.250000 0.562500 +v 1.375000 0.286612 0.650888 +v 1.463388 0.411612 0.687500 +v 1.400888 0.474112 0.650888 +v 1.400888 0.474112 0.474111 +v 1.463388 0.411612 0.437500 +v 1.525888 0.349112 0.474111 +v 1.551777 0.323224 0.562500 +v 1.525888 0.349112 0.650888 +v 1.500000 0.500000 0.687500 +v 1.411612 0.500000 0.650888 +v 1.411611 0.500000 0.474111 +v 1.500000 0.500000 0.437500 +v 1.588388 0.500000 0.474111 +v 1.625000 0.500000 0.562500 +v 1.588388 0.500000 0.650888 +v 1.125000 1.625000 0.437500 +v 1.125000 1.536612 0.474111 +v 1.125000 1.500000 0.562500 +v 1.125000 1.536612 0.650888 +v 1.125000 1.625000 0.687500 +v 1.125000 1.713388 0.650888 +v 1.125000 1.750000 0.562500 +v 1.125000 1.713388 0.474112 +v 1.375000 1.625000 0.437500 +v 1.375000 1.536612 0.474111 +v 1.375000 1.500000 0.562500 +v 1.375000 1.536612 0.650888 +v 1.375000 1.625000 0.687500 +v 1.375000 1.713388 0.650888 +v 1.375000 1.750000 0.562500 +v 1.375000 1.713388 0.474111 +v 1.463388 1.588388 0.437500 +v 1.400888 1.525888 0.474111 +v 1.400888 1.525888 0.650888 +v 1.463388 1.588388 0.687500 +v 1.525888 1.650888 0.650888 +v 1.551777 1.676777 0.562500 +v 1.525888 1.650888 0.474111 +v 1.500000 1.500000 0.437500 +v 1.411611 1.500000 0.474111 +v 1.411611 1.500000 0.650888 +v 1.500000 1.500000 0.687500 +v 1.588388 1.500000 0.650888 +v 1.625000 1.500000 0.562500 +v 1.588388 1.500000 0.474111 +v 1.125000 0.375000 1.062500 +v 1.125000 0.463389 1.025888 +v 1.125000 0.500000 0.937500 +v 1.125000 0.463389 0.849111 +v 1.125000 0.375000 0.812500 +v 1.125000 0.286612 0.849111 +v 1.125000 0.250000 0.937500 +v 1.125000 0.286612 1.025888 +v 1.375000 0.375000 1.062500 +v 1.375000 0.463389 1.025888 +v 1.375000 0.500000 0.937500 +v 1.375000 0.463389 0.849111 +v 1.375000 0.375000 0.812500 +v 1.375000 0.286612 0.849111 +v 1.375000 0.250000 0.937500 +v 1.375000 0.286612 1.025888 +v 1.463388 0.411612 1.062500 +v 1.400888 0.474112 1.025888 +v 1.400888 0.474112 0.849111 +v 1.463388 0.411612 0.812500 +v 1.525888 0.349112 0.849111 +v 1.551777 0.323224 0.937500 +v 1.525888 0.349112 1.025888 +v 1.500000 0.500000 1.062500 +v 1.411612 0.500000 1.025888 +v 1.411612 0.500000 0.849111 +v 1.500000 0.500000 0.812500 +v 1.588388 0.500000 0.849111 +v 1.625000 0.500000 0.937500 +v 1.588388 0.500000 1.025888 +v 1.125000 1.625000 0.812500 +v 1.125000 1.536612 0.849111 +v 1.125000 1.500000 0.937500 +v 1.125000 1.536612 1.025888 +v 1.125000 1.625000 1.062500 +v 1.125000 1.713388 1.025888 +v 1.125000 1.750000 0.937500 +v 1.125000 1.713388 0.849112 +v 1.375000 1.625000 0.812500 +v 1.375000 1.536612 0.849111 +v 1.375000 1.500000 0.937500 +v 1.375000 1.536612 1.025888 +v 1.375000 1.625000 1.062500 +v 1.375000 1.713388 1.025888 +v 1.375000 1.750000 0.937500 +v 1.375000 1.713388 0.849111 +v 1.463388 1.588388 0.812500 +v 1.400888 1.525888 0.849111 +v 1.400888 1.525888 1.025888 +v 1.463388 1.588388 1.062500 +v 1.525888 1.650888 1.025888 +v 1.551777 1.676777 0.937500 +v 1.525888 1.650888 0.849111 +v 1.500000 1.500000 0.812500 +v 1.411612 1.500000 0.849111 +v 1.411612 1.500000 1.025888 +v 1.500000 1.500000 1.062500 +v 1.588388 1.500000 1.025888 +v 1.625000 1.500000 0.937500 +v 1.588388 1.500000 0.849111 +vt 0.500000 -0.000000 +vt -0.000000 0.375000 +vt -0.000000 -0.000000 +vt 0.500000 0.796875 +vt 0.510417 0.921875 +vt 0.500000 0.921875 +vt 0.666667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.541667 0.468750 +vt 0.666667 0.281250 +vt 0.666667 0.468750 +vt 0.500000 0.015625 +vt 0.520833 0.234375 +vt 0.500000 0.234375 +vt 0.666667 0.281250 +vt 0.708333 0.468750 +vt 0.666667 0.468750 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.479167 0.609375 +vt 0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.479167 0.609375 +vt -0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.000000 0.375000 +vt 0.500000 0.625000 +vt 0.500000 0.625000 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.020833 0.390625 +vt 0.500000 0.375000 +vt 0.479167 0.390625 +vt 0.479167 0.609375 +vt 0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.479167 0.609375 +vt -0.000000 0.625000 +vt 0.020833 0.609375 +vt 0.500000 0.625000 +vt -0.000000 0.375000 +vt 0.500000 0.625000 +vt 0.000000 0.375000 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 1.000000 0.234375 +vt 0.979167 0.015625 +vt 1.000000 0.015625 +vt 0.520833 0.250000 +vt 0.979167 0.234375 +vt 0.979167 0.250000 +vt 0.979167 -0.000000 +vt 0.520833 0.015625 +vt 0.520833 -0.000000 +vt 0.500000 0.468750 +vt 0.541667 0.281250 +vt 0.541667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.687500 0.914062 +vt 0.677083 0.804688 +vt 0.687500 0.804688 +vt 0.687500 0.781250 +vt 0.520833 0.789062 +vt 0.520833 0.781250 +vt 0.520833 0.937500 +vt 0.687500 0.929688 +vt 0.687500 0.937500 +vt 0.708333 0.921875 +vt 0.697917 0.796875 +vt 0.708333 0.796875 +vt 0.677083 0.921875 +vt 0.520833 0.929688 +vt 0.531250 0.921875 +vt 0.520833 0.914062 +vt 0.510417 0.796875 +vt 0.520833 0.804688 +vt 0.531250 0.796875 +vt 0.687500 0.789062 +vt 0.677083 0.796875 +vt 0.697917 0.921875 +vt 0.531250 0.804688 +vt 0.677083 0.914062 +vt 0.531250 0.914062 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.328125 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.708333 0.265625 +vt 0.812500 0.343750 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.812500 0.328125 +vt 0.708333 0.265625 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.265625 +vt 0.729167 0.328125 +vt 0.729167 0.265625 +vt 0.812500 0.328125 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.708333 0.265625 +vt 0.812500 0.328125 +vt 0.729167 0.343750 +vt 0.812500 0.250000 +vt 0.833333 0.328125 +vt 0.708333 0.265625 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.937500 0.031250 +vt 0.937500 0.218750 +vt 0.562500 0.218750 +vt 0.562500 0.031250 +vt 0.812500 0.218750 +vt 0.666667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.666667 0.281250 +vt 0.541667 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.500000 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.468750 +vt 0.666667 0.500000 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.500000 0.281250 +vt 0.541667 0.468750 +vt 0.500000 0.468750 +vt 0.812500 0.031250 +vt 0.687500 0.218750 +vt 0.687500 0.031250 +vt 0.937500 0.031250 +vt 0.979167 0.234375 +vt 0.937500 0.218750 +vt 0.562500 0.218750 +vt 0.520833 0.015625 +vt 0.562500 0.031250 +vt 0.520833 0.234375 +vt 0.812500 0.218750 +vt 0.666667 0.468750 +vt 0.541667 0.281250 +vt 0.666667 0.281250 +vt 0.666667 0.281250 +vt 0.541667 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.500000 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.708333 0.468750 +vt 0.708333 0.281250 +vt 0.541667 0.500000 +vt 0.666667 0.468750 +vt 0.666667 0.500000 +vt 0.562500 0.031250 +vt 0.520833 0.234375 +vt 0.520833 0.015625 +vt 0.979167 0.015625 +vt 0.937500 0.218750 +vt 0.937500 0.031250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.541667 0.250000 +vt 0.666667 0.250000 +vt 0.666667 0.468750 +vt 0.541667 0.500000 +vt 0.541667 0.500000 +vt 0.562500 0.218750 +vt 0.520833 0.000000 +vt 0.979167 0.000000 +vt 0.520833 0.250000 +vt 0.979167 0.234375 +vt 0.979167 0.250000 +vt 0.500000 0.234375 +vt 1.000000 0.015625 +vt 0.708333 0.281250 +vt 0.500000 0.281250 +vt 0.541667 0.281250 +vt 0.562500 0.031250 +vt 0.520833 0.234375 +vt 0.520833 0.015625 +vt 0.937500 0.218750 +vt 0.979167 0.015625 +vt 0.979167 0.234375 +vt 0.541667 0.250000 +vt 0.666667 0.250000 +vt 0.666667 0.500000 +vt 0.666667 0.500000 +vt 0.541667 0.500000 +vt 0.562500 0.218750 +vt 0.500000 0.015625 +vt 0.500000 0.234375 +vt 1.000000 0.234375 +vt 1.000000 0.015625 +vt 0.520833 -0.000000 +vt 0.979167 -0.000000 +vt 0.520833 0.250000 +vt 0.979167 0.250000 +vt 0.333333 0.875000 +vt 0.500000 1.000000 +vt 0.166667 0.875000 +vt 0.000000 1.000000 +vt 0.166667 0.750000 +vt 0.333333 0.750000 +vt 0.500000 0.015625 +vt 0.500000 0.234375 +vt 0.979167 0.015625 +vt 0.520833 -0.000000 +vt 0.979167 -0.000000 +vt 0.520833 0.250000 +vt 0.979167 0.250000 +vt 1.000000 0.015625 +vt 1.000000 0.234375 +vt 0.708333 0.281250 +vt 0.500000 0.281250 +vt 0.812500 0.218750 +vt 0.812500 0.218750 +vt 0.812500 0.343750 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.812500 0.343750 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.812500 0.343750 +vt 0.729167 0.250000 +vt 0.833333 0.265625 +vt 0.708333 0.328125 +vt 0.666667 0.500000 +vt 0.666667 0.500000 +vt 0.500000 0.015625 +vt 1.000000 0.234375 +vt 0.708333 0.468750 +vt 0.500000 0.468750 +vt 0.937500 0.031250 +vt 0.666667 0.250000 +vt 0.541667 0.250000 +vt 0.541667 0.500000 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.583333 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.554688 +vt 0.625000 0.539062 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.604167 0.554688 +vt 0.645833 0.546875 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.562500 0.578125 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.645833 0.562500 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.645833 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.541667 0.570312 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.583333 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.604167 0.726562 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.604167 0.703125 +vt 0.625000 0.726562 +vt 0.583333 0.703125 +vt 0.520833 0.718750 +vt 0.562500 0.703125 +vt 0.625000 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.583333 0.554688 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.562500 0.578125 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.645833 0.562500 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.645833 0.750000 +vt 0.583333 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.742188 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.726562 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.645833 0.718750 +vt 0.666667 0.726562 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.541667 0.710938 +vt 0.541667 0.726562 +vt 0.604167 0.703125 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.718750 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.554688 +vt 0.645833 0.546875 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.734375 +vt 0.541667 0.726562 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.520833 0.726562 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.578125 +vt 0.541667 0.703125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.781250 +vt 0.666667 0.750000 +vt 0.666667 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.625000 0.726562 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.541667 0.710938 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.500000 +vt 0.541667 0.531250 +vt 0.541667 0.500000 +vt 0.604167 0.531250 +vt 0.583333 0.500000 +vt 0.604167 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.531250 +vt 0.500000 0.500000 +vt 0.520833 0.500000 +vt 0.583333 0.531250 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.562500 0.554688 +vt 0.562500 0.531250 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.562500 0.578125 +vt 0.604167 0.578125 +vt 0.583333 0.554688 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.625000 0.570312 +vt 0.520833 0.562500 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.541667 0.750000 +vt 0.500000 0.781250 +vt 0.625000 0.750000 +vt 0.583333 0.750000 +vt 0.604167 0.726562 +vt 0.541667 0.742188 +vt 0.562500 0.726562 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.604167 0.703125 +vt 0.625000 0.726562 +vt 0.583333 0.703125 +vt 0.583333 0.726562 +vt 0.541667 0.710938 +vt 0.541667 0.726562 +vt 0.645833 0.718750 +vt 0.666667 0.726562 +vt 0.500000 0.726562 +vt 0.520833 0.718750 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.578125 +vt 0.562500 0.703125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.562500 0.531250 +vt 0.541667 0.500000 +vt 0.562500 0.500000 +vt 0.604167 0.500000 +vt 0.583333 0.531250 +vt 0.583333 0.500000 +vt 0.645833 0.531250 +vt 0.625000 0.500000 +vt 0.645833 0.500000 +vt 0.520833 0.500000 +vt 0.500000 0.531250 +vt 0.500000 0.500000 +vt 0.625000 0.531250 +vt 0.666667 0.531250 +vt 0.666667 0.500000 +vt 0.541667 0.531250 +vt 0.562500 0.554688 +vt 0.625000 0.539062 +vt 0.604167 0.554688 +vt 0.604167 0.531250 +vt 0.541667 0.554688 +vt 0.520833 0.546875 +vt 0.541667 0.539062 +vt 0.583333 0.554688 +vt 0.645833 0.546875 +vt 0.625000 0.554688 +vt 0.541667 0.570312 +vt 0.604167 0.578125 +vt 0.645833 0.562500 +vt 0.645833 0.554688 +vt 0.562500 0.578125 +vt 0.625000 0.570312 +vt 0.520833 0.554688 +vt 0.500000 0.554688 +vt 0.520833 0.562500 +vt 0.666667 0.554688 +vt 0.604167 0.750000 +vt 0.625000 0.781250 +vt 0.604167 0.781250 +vt 0.562500 0.750000 +vt 0.583333 0.781250 +vt 0.562500 0.781250 +vt 0.520833 0.750000 +vt 0.541667 0.781250 +vt 0.520833 0.781250 +vt 0.645833 0.750000 +vt 0.666667 0.781250 +vt 0.645833 0.781250 +vt 0.583333 0.750000 +vt 0.541667 0.750000 +vt 0.500000 0.781250 +vt 0.604167 0.726562 +vt 0.541667 0.726562 +vt 0.541667 0.742188 +vt 0.625000 0.742188 +vt 0.645833 0.726562 +vt 0.645833 0.734375 +vt 0.562500 0.726562 +vt 0.520833 0.726562 +vt 0.520833 0.734375 +vt 0.625000 0.710938 +vt 0.625000 0.726562 +vt 0.562500 0.703125 +vt 0.583333 0.726562 +vt 0.520833 0.718750 +vt 0.604167 0.703125 +vt 0.666667 0.726562 +vt 0.645833 0.718750 +vt 0.500000 0.726562 +vt 0.520833 0.578125 +vt 0.500000 0.703125 +vt 0.500000 0.578125 +vt 0.666667 0.703125 +vt 0.645833 0.578125 +vt 0.666667 0.578125 +vt 0.625000 0.703125 +vt 0.625000 0.578125 +vt 0.583333 0.703125 +vt 0.583333 0.578125 +vt 0.541667 0.703125 +vt 0.541667 0.578125 +vt 0.520833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.541667 0.570312 +vt 0.666667 0.750000 +vt 0.541667 0.710938 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.570312 +vt 0.645833 0.750000 +vt 0.541667 0.710938 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.625000 0.750000 +vt 0.666667 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.645833 0.750000 +vt 0.645833 0.703125 +vt 0.500000 0.531250 +vt 0.541667 0.570312 +vt 0.666667 0.750000 +vt 0.500000 0.750000 +vt 0.625000 0.710938 +vt 0.645833 0.703125 +vt 0.520833 0.531250 +vt 0.625000 0.750000 +vt 0.666667 0.750000 +vt 0.500000 0.750000 +vt 0.541667 0.710938 +vt 0.645833 0.703125 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6794 -0.7194 -0.1447 +vn 0.7071 -0.7071 0.0000 +vn -0.6794 -0.7194 -0.1447 +vn -0.7071 -0.7071 0.0000 +vn -0.7263 0.6737 0.1363 +vn -0.7071 0.7071 0.0000 +vn 0.7263 0.6737 0.1363 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -0.9824 -0.1866 +vn -0.9987 -0.0473 -0.0196 +vn 0.0000 0.7071 0.7071 +vn 0.9987 -0.0473 -0.0196 +vn 0.6630 -0.5293 -0.5293 +vn -0.6630 -0.5293 -0.5293 +vn 0.9955 -0.0670 -0.0670 +vn -0.9955 -0.0670 -0.0670 +vn 0.9987 -0.0196 -0.0473 +vn -0.6794 -0.1447 -0.7194 +vn 0.0000 -0.7071 -0.7071 +vn -0.7263 0.1363 0.6737 +vn -0.7573 0.4617 0.4617 +vn 0.6794 -0.1447 -0.7194 +vn -0.9987 -0.0196 -0.0473 +vn 0.7263 0.1363 0.6737 +vn 0.7573 0.4617 0.4617 +vn -0.6794 0.7194 -0.1447 +vn 0.6794 0.7194 -0.1447 +vn 0.7263 -0.6737 0.1363 +vn 0.0000 -0.7071 0.7071 +vn 0.9987 0.0473 -0.0196 +vn -0.9987 0.0473 -0.0196 +vn 0.0000 0.9824 -0.1866 +vn -0.6630 0.5293 -0.5293 +vn 0.9955 0.0670 -0.0670 +vn -0.7573 -0.4617 0.4617 +vn -0.7263 -0.6737 0.1363 +vn 0.6630 0.5293 -0.5293 +vn 0.7573 -0.4617 0.4617 +vn -0.9987 0.0196 -0.0473 +vn -0.9955 0.0670 -0.0670 +vn 0.6794 0.1447 -0.7194 +vn 0.0000 0.7071 -0.7071 +vn 0.7263 -0.1363 0.6737 +vn -0.6794 0.1447 -0.7194 +vn 0.9987 0.0196 -0.0473 +vn -0.7263 -0.1363 0.6737 +vn 0.0000 0.1866 -0.9824 +vn 0.0000 -0.1866 -0.9824 +vn -0.6794 -0.7194 0.1447 +vn 0.6794 -0.7194 0.1447 +vn 0.7263 0.6737 -0.1363 +vn -0.7263 0.6737 -0.1363 +vn 0.0000 -0.9824 0.1866 +vn 0.9987 -0.0473 0.0196 +vn -0.9987 -0.0473 0.0196 +vn -0.6630 -0.5293 0.5293 +vn 0.6630 -0.5293 0.5293 +vn -0.9955 -0.0670 0.0670 +vn 0.9955 -0.0670 0.0670 +vn -0.9987 -0.0196 0.0473 +vn 0.6794 -0.1447 0.7194 +vn 0.7263 0.1363 -0.6737 +vn 0.7573 0.4617 -0.4617 +vn -0.6794 -0.1447 0.7194 +vn 0.9987 -0.0196 0.0473 +vn -0.7573 0.4617 -0.4617 +vn -0.7263 0.1363 -0.6737 +vn 0.6794 0.7194 0.1447 +vn -0.6794 0.7194 0.1447 +vn -0.7263 -0.6737 -0.1363 +vn 0.7263 -0.6737 -0.1363 +vn 0.0000 0.9824 0.1866 +vn -0.9987 0.0473 0.0196 +vn 0.9987 0.0473 0.0196 +vn 0.6630 0.5293 0.5293 +vn -0.6630 0.5293 0.5293 +vn 0.7573 -0.4617 -0.4617 +vn -0.7573 -0.4617 -0.4617 +vn 0.9987 0.0196 0.0473 +vn 0.9955 0.0670 0.0670 +vn -0.6794 0.1447 0.7194 +vn -0.7263 -0.1363 -0.6737 +vn -0.9955 0.0670 0.0670 +vn 0.6794 0.1447 0.7194 +vn -0.9987 0.0196 0.0473 +vn 0.7263 -0.1363 -0.6737 +vn 0.0000 0.1866 0.9824 +vn 0.0000 -0.1866 0.9824 +vn -0.1447 -0.7194 -0.6794 +vn -0.1447 -0.7194 0.6794 +vn 0.1363 0.6737 0.7263 +vn 0.1363 0.6737 -0.7263 +vn -0.1866 -0.9824 0.0000 +vn -0.0196 -0.0473 0.9987 +vn -0.0196 -0.0473 -0.9987 +vn -0.5293 -0.5293 -0.6630 +vn -0.5293 -0.5293 0.6630 +vn -0.0670 -0.0670 -0.9955 +vn -0.0670 -0.0670 0.9955 +vn -0.0473 -0.0196 -0.9987 +vn -0.7194 -0.1447 0.6794 +vn 0.4617 0.4617 0.7573 +vn -0.0473 -0.0196 0.9987 +vn -0.7194 -0.1447 -0.6794 +vn 0.6737 0.1363 -0.7263 +vn 0.4617 0.4617 -0.7573 +vn 0.6737 0.1363 0.7263 +vn -0.1447 0.7194 0.6794 +vn -0.1447 0.7194 -0.6794 +vn 0.1363 -0.6737 -0.7263 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn -0.1866 0.9824 0.0000 +vn -0.5293 0.5293 0.6630 +vn -0.0670 0.0670 -0.9955 +vn -0.0670 0.0670 0.9955 +vn -0.0196 0.0473 0.9987 +vn -0.5293 0.5293 -0.6630 +vn 0.4617 -0.4617 -0.7573 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1447 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn -0.7194 0.1447 0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.4617 -0.4617 0.7573 +vn 0.6737 -0.1363 0.7263 +vn -0.9824 0.1866 0.0000 +vn -0.9824 -0.1866 0.0000 +vn 0.1447 -0.7194 0.6794 +vn 0.1447 -0.7194 -0.6794 +vn -0.1363 0.6737 -0.7263 +vn -0.1363 0.6737 0.7263 +vn 0.1866 -0.9824 0.0000 +vn 0.0196 -0.0473 -0.9987 +vn 0.0196 -0.0473 0.9987 +vn 0.5293 -0.5293 0.6630 +vn 0.5293 -0.5293 -0.6630 +vn 0.0670 -0.0670 0.9955 +vn -0.4617 0.4617 -0.7573 +vn 0.0473 -0.0196 0.9987 +vn 0.7194 -0.1447 -0.6794 +vn -0.6737 0.1363 -0.7263 +vn 0.0670 -0.0670 -0.9955 +vn 0.7194 -0.1447 0.6794 +vn 0.0473 -0.0196 -0.9987 +vn -0.6737 0.1363 0.7263 +vn -0.4617 0.4617 0.7573 +vn 0.1447 0.7194 -0.6794 +vn 0.1447 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +vn -0.1363 -0.6737 -0.7263 +vn 0.1866 0.9824 0.0000 +vn 0.0196 0.0473 0.9987 +vn 0.5293 0.5293 -0.6630 +vn 0.5293 0.5293 0.6630 +vn 0.0196 0.0473 -0.9987 +vn -0.4617 -0.4617 -0.7573 +vn 0.0670 0.0670 0.9955 +vn 0.0473 0.0196 -0.9987 +vn 0.0670 0.0670 -0.9955 +vn 0.7194 0.1447 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.4617 -0.4617 0.7573 +vn 0.7194 0.1447 -0.6794 +vn 0.0473 0.0196 0.9987 +vn -0.6737 -0.1363 -0.7263 +vn 0.9824 0.1866 0.0000 +vn 0.9824 -0.1866 0.0000 +s off +f 20/1/1 18/2/1 17/3/1 +f 22/4/2 42/5/2 21/6/2 +f 112/7/2 120/8/2 111/9/2 +f 89/10/2 118/11/2 117/12/2 +f 2/13/2 83/14/2 6/15/2 +f 91/16/3 130/17/3 92/18/3 +f 3/19/3 17/20/3 1/21/3 +f 2/22/4 19/23/4 4/24/4 +f 5/25/3 33/26/3 7/27/3 +f 8/28/4 35/29/4 6/30/4 +f 7/27/3 20/31/3 3/19/3 +f 4/24/4 36/32/4 8/28/4 +f 6/30/4 18/2/4 2/22/4 +f 1/21/3 34/33/3 5/25/3 +f 10/34/5 18/35/5 11/36/5 +f 12/37/2 20/38/2 9/39/2 +f 15/40/5 34/41/5 14/42/5 +f 13/43/2 36/44/2 16/45/2 +f 9/39/2 33/46/2 13/43/2 +f 16/45/2 19/47/2 12/37/2 +f 11/36/5 35/48/5 15/40/5 +f 14/42/5 17/49/5 10/34/5 +f 25/50/2 92/51/2 27/52/2 +f 8/53/5 82/54/5 4/55/5 +f 6/56/1 84/57/1 8/58/1 +f 4/59/6 81/60/6 2/61/6 +f 131/62/4 110/63/4 109/64/4 +f 92/18/5 128/65/5 91/16/5 +f 126/66/5 109/64/5 110/63/5 +f 122/67/3 126/66/3 121/68/3 +f 123/69/5 122/70/5 121/71/5 +f 123/72/4 127/73/4 124/74/4 +f 31/75/4 118/11/4 32/76/4 +f 30/77/2 31/78/2 32/79/2 +f 30/80/3 119/81/3 29/82/3 +f 37/83/2 48/84/2 40/85/2 +f 23/86/3 43/87/3 22/88/3 +f 21/89/4 41/90/4 24/91/4 +f 24/92/5 44/93/5 23/94/5 +f 37/95/6 42/96/6 38/97/6 +f 38/98/6 43/99/6 39/100/6 +f 39/101/6 44/102/6 40/103/6 +f 40/85/6 41/104/6 37/83/6 +f 47/105/6 45/106/6 46/107/6 +f 39/100/5 46/107/5 38/98/5 +f 40/103/4 47/105/4 39/101/4 +f 38/97/3 45/106/3 37/95/3 +f 51/108/4 50/109/4 49/110/4 +f 59/111/3 58/112/3 57/113/3 +f 52/114/6 55/115/6 50/109/6 +f 49/110/1 53/116/1 51/108/1 +f 51/108/2 56/117/2 52/114/2 +f 50/109/5 54/118/5 49/110/5 +f 58/112/6 64/119/6 63/120/6 +f 57/113/1 61/121/1 59/111/1 +f 59/111/5 64/122/5 60/123/5 +f 58/112/2 62/124/2 57/113/2 +f 67/125/2 66/126/2 65/127/2 +f 75/128/5 74/129/5 73/130/5 +f 68/131/6 71/132/6 66/126/6 +f 65/127/1 69/133/1 67/125/1 +f 67/125/3 72/134/3 68/131/3 +f 66/126/4 70/135/4 65/127/4 +f 76/136/6 79/137/6 74/129/6 +f 73/130/1 77/138/1 75/128/1 +f 75/128/4 80/139/4 76/136/4 +f 74/129/3 78/140/3 73/130/3 +f 87/141/2 95/142/2 88/143/2 +f 87/144/4 86/145/4 85/146/4 +f 26/147/4 84/57/4 28/148/4 +f 27/149/4 81/60/4 25/150/4 +f 83/14/4 86/145/4 88/151/4 +f 85/146/4 25/150/4 81/60/4 +f 89/152/4 96/153/4 90/154/4 +f 94/155/4 92/51/4 91/156/4 +f 88/157/1 89/152/1 28/158/1 +f 85/159/6 91/156/6 25/160/6 +f 86/161/5 94/155/5 85/162/5 +f 26/163/6 96/153/6 87/164/6 +f 28/165/5 90/154/5 26/166/5 +f 27/167/1 93/168/1 86/169/1 +f 97/170/5 112/171/5 99/172/5 +f 107/173/5 115/174/5 108/175/5 +f 107/176/3 106/177/3 105/178/3 +f 98/179/3 104/180/3 100/181/3 +f 99/182/3 101/183/3 97/184/3 +f 103/185/3 106/177/3 108/186/3 +f 105/178/3 97/184/3 101/183/3 +f 109/187/3 116/188/3 110/189/3 +f 114/190/3 112/171/3 111/191/3 +f 108/192/1 109/187/1 100/193/1 +f 105/194/6 111/191/6 97/195/6 +f 106/196/2 114/190/2 105/197/2 +f 98/198/6 116/188/6 107/199/6 +f 100/200/2 110/189/2 98/201/2 +f 99/202/1 113/203/1 106/204/1 +f 132/205/5 104/206/5 102/207/5 +f 81/208/5 130/209/5 129/210/5 +f 129/211/6 128/65/6 123/212/6 +f 126/66/6 132/213/6 121/214/6 +f 125/215/1 131/216/1 109/64/1 +f 92/18/1 124/217/1 127/73/1 +f 104/206/5 131/218/5 122/70/5 +f 123/69/5 121/71/5 102/207/5 +f 81/208/6 10/219/6 11/220/6 +f 14/221/1 83/222/1 15/223/1 +f 14/224/4 102/207/4 104/206/4 +f 11/225/3 83/222/3 81/208/3 +f 135/226/4 112/7/4 111/9/4 +f 89/10/3 134/227/3 90/228/3 +f 134/229/2 84/230/2 82/231/2 +f 136/232/2 101/233/2 103/234/2 +f 30/235/6 111/9/6 120/8/6 +f 90/228/6 32/236/6 118/11/6 +f 31/237/1 89/10/1 117/12/1 +f 119/81/1 136/238/1 29/239/1 +f 84/230/2 133/240/2 31/78/2 +f 30/77/2 32/79/2 82/231/2 +f 12/241/3 84/230/3 16/242/3 +f 13/243/4 101/233/4 9/244/4 +f 101/233/6 12/245/6 9/246/6 +f 16/247/1 103/234/1 13/248/1 +f 24/249/6 36/32/6 33/250/6 +f 21/251/6 33/250/6 34/252/6 +f 22/253/6 34/252/6 35/29/6 +f 23/254/6 35/29/6 36/32/6 +f 3/255/5 103/185/5 7/256/5 +f 102/257/6 3/258/6 1/259/6 +f 7/260/1 104/180/1 5/261/1 +f 104/180/2 1/262/2 5/263/2 +f 20/1/1 19/23/1 18/2/1 +f 22/4/2 43/99/2 42/5/2 +f 112/7/2 119/81/2 120/8/2 +f 89/10/2 90/228/2 118/11/2 +f 2/13/2 81/60/2 83/14/2 +f 91/16/3 129/264/3 130/17/3 +f 3/19/3 20/31/3 17/20/3 +f 2/22/4 18/2/4 19/23/4 +f 5/25/3 34/33/3 33/26/3 +f 8/28/4 36/32/4 35/29/4 +f 7/27/3 33/26/3 20/31/3 +f 4/24/4 19/23/4 36/32/4 +f 6/30/4 35/29/4 18/2/4 +f 1/21/3 17/20/3 34/33/3 +f 10/34/5 17/49/5 18/35/5 +f 12/37/2 19/47/2 20/38/2 +f 15/40/5 35/48/5 34/41/5 +f 13/43/2 33/46/2 36/44/2 +f 9/39/2 20/38/2 33/46/2 +f 16/45/2 36/44/2 19/47/2 +f 11/36/5 18/35/5 35/48/5 +f 14/42/5 34/41/5 17/49/5 +f 25/50/2 91/156/2 92/51/2 +f 8/53/5 84/57/5 82/54/5 +f 6/56/1 83/14/1 84/57/1 +f 4/59/6 82/54/6 81/60/6 +f 131/62/4 132/265/4 110/63/4 +f 92/18/5 127/73/5 128/65/5 +f 126/66/5 125/215/5 109/64/5 +f 122/67/3 125/215/3 126/66/3 +f 123/69/5 124/266/5 122/70/5 +f 123/72/4 128/65/4 127/73/4 +f 31/75/4 117/12/4 118/11/4 +f 30/77/2 29/267/2 31/78/2 +f 30/80/3 120/8/3 119/81/3 +f 37/83/2 45/106/2 48/84/2 +f 23/86/3 44/102/3 43/87/3 +f 21/89/4 42/96/4 41/90/4 +f 24/92/5 41/104/5 44/93/5 +f 37/95/6 41/90/6 42/96/6 +f 38/98/6 42/5/6 43/99/6 +f 39/101/6 43/87/6 44/102/6 +f 40/85/6 44/93/6 41/104/6 +f 47/105/6 48/84/6 45/106/6 +f 39/100/5 47/105/5 46/107/5 +f 40/103/4 48/84/4 47/105/4 +f 38/97/3 46/107/3 45/106/3 +f 51/108/4 52/114/4 50/109/4 +f 59/111/3 60/123/3 58/112/3 +f 52/114/6 56/268/6 55/115/6 +f 49/110/1 54/269/1 53/116/1 +f 51/108/2 53/270/2 56/117/2 +f 50/109/5 55/271/5 54/118/5 +f 58/112/6 60/123/6 64/119/6 +f 57/113/1 62/272/1 61/121/1 +f 59/111/5 61/273/5 64/122/5 +f 58/112/2 63/274/2 62/124/2 +f 67/125/2 68/131/2 66/126/2 +f 75/128/5 76/136/5 74/129/5 +f 68/131/6 72/275/6 71/132/6 +f 65/127/1 70/276/1 69/133/1 +f 67/125/3 69/277/3 72/134/3 +f 66/126/4 71/278/4 70/135/4 +f 76/136/6 80/279/6 79/137/6 +f 73/130/1 78/280/1 77/138/1 +f 75/128/4 77/281/4 80/139/4 +f 74/129/3 79/282/3 78/140/3 +f 87/141/2 96/153/2 95/142/2 +f 87/144/4 88/151/4 86/145/4 +f 26/147/4 82/54/4 84/57/4 +f 27/149/4 83/14/4 81/60/4 +f 28/148/4 84/57/4 88/151/4 +f 84/57/4 83/14/4 88/151/4 +f 83/14/4 27/149/4 86/145/4 +f 81/60/4 82/54/4 87/144/4 +f 82/54/4 26/147/4 87/144/4 +f 87/144/4 85/146/4 81/60/4 +f 89/152/4 95/142/4 96/153/4 +f 94/155/4 93/168/4 92/51/4 +f 88/157/1 95/142/1 89/152/1 +f 85/159/6 94/155/6 91/156/6 +f 86/161/5 93/168/5 94/155/5 +f 26/163/6 90/154/6 96/153/6 +f 28/165/5 89/152/5 90/154/5 +f 27/167/1 92/51/1 93/168/1 +f 97/170/5 111/191/5 112/171/5 +f 107/173/5 116/188/5 115/174/5 +f 107/176/3 108/186/3 106/177/3 +f 98/179/3 102/257/3 104/180/3 +f 99/182/3 103/185/3 101/183/3 +f 100/181/3 104/180/3 108/186/3 +f 104/180/3 103/185/3 108/186/3 +f 103/185/3 99/182/3 106/177/3 +f 101/183/3 102/257/3 107/176/3 +f 102/257/3 98/179/3 107/176/3 +f 107/176/3 105/178/3 101/183/3 +f 109/187/3 115/174/3 116/188/3 +f 114/190/3 113/203/3 112/171/3 +f 108/192/1 115/174/1 109/187/1 +f 105/194/6 114/190/6 111/191/6 +f 106/196/2 113/203/2 114/190/2 +f 98/198/6 110/189/6 116/188/6 +f 100/200/2 109/187/2 110/189/2 +f 99/202/1 112/171/1 113/203/1 +f 132/205/5 131/218/5 104/206/5 +f 81/208/5 83/222/5 130/209/5 +f 129/211/6 91/16/6 128/65/6 +f 126/66/6 110/63/6 132/213/6 +f 125/215/1 122/283/1 131/216/1 +f 92/18/1 130/284/1 124/217/1 +f 122/70/5 124/266/5 83/222/5 +f 124/266/5 130/209/5 83/222/5 +f 83/222/5 104/206/5 122/70/5 +f 121/71/5 132/205/5 102/207/5 +f 102/207/5 81/208/5 123/69/5 +f 81/208/5 129/210/5 123/69/5 +f 81/208/6 102/207/6 10/219/6 +f 14/221/1 104/206/1 83/222/1 +f 14/224/4 10/285/4 102/207/4 +f 11/225/3 15/286/3 83/222/3 +f 135/226/4 136/287/4 112/7/4 +f 89/10/3 133/288/3 134/227/3 +f 134/229/2 133/240/2 84/230/2 +f 136/232/2 135/289/2 101/233/2 +f 30/235/6 135/290/6 111/9/6 +f 90/228/6 134/291/6 32/236/6 +f 31/237/1 133/292/1 89/10/1 +f 119/81/1 112/7/1 136/238/1 +f 31/78/2 29/267/2 103/234/2 +f 29/267/2 136/232/2 103/234/2 +f 103/234/2 84/230/2 31/78/2 +f 32/79/2 134/229/2 82/231/2 +f 82/231/2 101/233/2 30/77/2 +f 101/233/2 135/289/2 30/77/2 +f 12/241/3 82/231/3 84/230/3 +f 13/243/4 103/234/4 101/233/4 +f 101/233/6 82/231/6 12/245/6 +f 16/247/1 84/230/1 103/234/1 +f 24/249/6 23/254/6 36/32/6 +f 21/251/6 24/249/6 33/250/6 +f 22/253/6 21/251/6 34/252/6 +f 23/254/6 22/253/6 35/29/6 +f 3/255/5 101/183/5 103/185/5 +f 102/257/6 101/183/6 3/258/6 +f 7/260/1 103/185/1 104/180/1 +f 104/180/2 102/257/2 1/262/2 +s 1 +f 152/293/7 137/294/4 144/295/8 +f 150/296/9 143/297/1 142/298/10 +f 148/299/11 141/300/3 140/301/12 +f 146/302/13 139/303/6 138/304/14 +f 151/305/15 144/295/8 143/297/1 +f 149/306/16 142/298/10 141/300/3 +f 147/307/17 140/301/12 139/308/6 +f 145/309/18 138/304/14 137/294/4 +f 151/305/15 159/310/19 152/293/7 +f 149/311/16 157/312/20 150/296/9 +f 153/313/21 146/314/13 145/315/18 +f 159/310/19 145/315/18 152/293/7 +f 157/312/20 151/305/15 150/296/9 +f 148/316/11 156/317/22 149/311/16 +f 159/310/19 160/318/23 153/313/21 +f 164/319/24 158/320/25 157/312/20 +f 162/321/26 156/317/22 155/322/27 +f 158/320/25 166/323/28 159/310/19 +f 163/324/29 157/312/20 156/317/22 +f 153/313/21 161/325/30 154/326/31 +f 146/314/13 154/326/31 147/327/17 +f 154/326/31 161/325/30 147/327/17 +f 148/316/11 147/328/17 155/322/27 +f 155/322/27 147/328/17 162/321/26 +f 182/329/32 167/330/3 174/331/12 +f 180/332/33 173/333/6 172/334/14 +f 178/335/34 171/336/4 170/337/8 +f 168/338/10 177/339/35 169/340/1 +f 173/333/6 182/329/32 174/331/12 +f 179/341/36 172/334/14 171/336/4 +f 177/342/35 170/337/8 169/343/1 +f 175/344/37 168/338/10 167/330/3 +f 181/345/38 189/346/39 182/329/32 +f 186/347/40 180/332/33 179/348/36 +f 175/349/37 184/350/41 176/351/42 +f 189/346/39 175/349/37 182/329/32 +f 187/352/43 181/345/38 180/332/33 +f 185/353/44 179/348/36 178/354/34 +f 189/346/39 190/355/45 183/356/46 +f 194/357/47 188/358/48 187/352/43 +f 192/359/49 186/347/40 185/353/44 +f 188/358/48 196/360/50 189/346/39 +f 193/361/51 187/352/43 186/347/40 +f 190/355/45 184/350/41 183/356/46 +f 176/351/42 184/350/41 177/362/35 +f 184/350/41 191/363/52 177/362/35 +f 178/354/34 177/364/35 185/353/44 +f 185/353/44 177/364/35 192/359/49 +f 161/365/30 177/366/35 147/367/17 +f 177/368/35 162/369/26 147/370/17 +f 162/369/26 190/371/45 163/372/29 +f 163/372/29 196/360/50 164/319/24 +f 164/319/24 195/373/53 165/374/54 +f 165/374/54 194/357/47 166/323/28 +f 166/323/28 193/375/51 160/376/23 +f 160/376/23 192/377/49 161/365/30 +f 212/378/7 197/379/4 204/380/8 +f 210/381/9 203/382/1 202/383/10 +f 208/384/11 201/385/3 200/386/12 +f 206/387/13 199/388/6 198/389/14 +f 211/390/15 204/380/8 203/382/1 +f 209/391/16 202/383/10 201/385/3 +f 207/392/17 200/386/12 199/393/6 +f 205/394/18 198/389/14 197/379/4 +f 211/390/15 219/395/19 212/378/7 +f 209/396/16 217/397/20 210/381/9 +f 213/398/21 206/399/13 205/400/18 +f 219/395/19 205/400/18 212/378/7 +f 217/397/20 211/390/15 210/381/9 +f 208/401/11 216/402/22 209/396/16 +f 219/395/19 220/403/23 213/398/21 +f 224/404/24 218/405/25 217/397/20 +f 222/406/26 216/402/22 215/407/27 +f 218/405/25 226/408/28 219/395/19 +f 223/409/29 217/397/20 216/402/22 +f 213/398/21 221/410/30 214/411/31 +f 206/399/13 214/411/31 207/412/17 +f 214/411/31 221/410/30 207/412/17 +f 208/401/11 207/413/17 215/407/27 +f 215/407/27 207/413/17 222/406/26 +f 242/414/32 227/415/3 234/416/12 +f 240/417/33 233/418/6 232/419/14 +f 238/420/34 231/421/4 230/422/8 +f 228/423/10 237/424/35 229/425/1 +f 241/426/38 234/416/12 233/418/6 +f 239/427/36 232/419/14 231/421/4 +f 237/428/35 230/422/8 229/429/1 +f 235/430/37 228/423/10 227/415/3 +f 241/426/38 249/431/39 242/414/32 +f 239/432/36 247/433/43 240/417/33 +f 243/434/46 236/435/42 235/436/37 +f 249/431/39 235/436/37 242/414/32 +f 247/433/43 241/426/38 240/417/33 +f 245/437/44 239/432/36 238/438/34 +f 249/431/39 250/439/45 243/434/46 +f 254/440/47 248/441/48 247/433/43 +f 252/442/49 246/443/40 245/437/44 +f 248/441/48 256/444/50 249/431/39 +f 253/445/51 247/433/43 246/443/40 +f 250/439/45 244/446/41 243/434/46 +f 236/435/42 244/446/41 237/447/35 +f 244/446/41 251/448/52 237/447/35 +f 238/438/34 237/449/35 245/437/44 +f 245/437/44 237/449/35 252/442/49 +f 221/450/30 237/451/35 207/452/17 +f 237/453/35 222/454/26 207/455/17 +f 222/454/26 250/456/45 223/457/29 +f 223/457/29 256/444/50 224/404/24 +f 224/404/24 255/458/53 225/459/54 +f 225/459/54 254/440/47 226/408/28 +f 226/408/28 253/460/51 220/461/23 +f 220/461/23 252/462/49 221/450/30 +f 272/463/7 257/464/4 264/465/8 +f 270/466/9 263/467/1 262/468/10 +f 268/469/11 261/470/3 260/471/12 +f 266/472/13 259/473/6 258/474/14 +f 271/475/15 264/465/8 263/467/1 +f 269/476/16 262/468/10 261/470/3 +f 267/477/17 260/471/12 259/478/6 +f 265/479/18 258/474/14 257/464/4 +f 271/475/15 279/480/19 272/463/7 +f 269/481/16 277/482/20 270/466/9 +f 273/483/21 266/484/13 265/485/18 +f 279/480/19 265/485/18 272/463/7 +f 277/482/20 271/475/15 270/466/9 +f 268/486/11 276/487/22 269/481/16 +f 279/480/19 280/488/23 273/483/21 +f 284/489/24 278/490/25 277/482/20 +f 282/491/26 276/487/22 275/492/27 +f 278/490/25 286/493/28 279/480/19 +f 283/494/29 277/482/20 276/487/22 +f 273/483/21 281/495/30 274/496/31 +f 266/484/13 274/496/31 267/497/17 +f 274/496/31 281/495/30 267/497/17 +f 268/486/11 267/498/17 275/492/27 +f 275/492/27 267/498/17 282/491/26 +f 302/499/32 287/500/3 294/501/12 +f 300/502/33 293/503/6 292/504/14 +f 298/505/34 291/506/4 290/507/8 +f 296/508/42 289/509/1 288/510/10 +f 301/511/38 294/501/12 293/503/6 +f 299/512/36 292/504/14 291/506/4 +f 297/513/35 290/507/8 289/514/1 +f 287/500/3 296/508/42 288/510/10 +f 301/511/38 309/515/39 302/499/32 +f 306/516/40 300/502/33 299/517/36 +f 303/518/46 296/519/42 295/520/37 +f 309/515/39 295/520/37 302/499/32 +f 307/521/43 301/511/38 300/502/33 +f 305/522/44 299/517/36 298/523/34 +f 309/515/39 310/524/45 303/518/46 +f 314/525/47 308/526/48 307/521/43 +f 312/527/49 306/516/40 305/522/44 +f 308/526/48 316/528/50 309/515/39 +f 313/529/51 307/521/43 306/516/40 +f 310/524/45 304/530/41 303/518/46 +f 296/519/42 304/530/41 297/531/35 +f 304/530/41 311/532/52 297/531/35 +f 298/523/34 297/533/35 305/522/44 +f 305/522/44 297/533/35 312/527/49 +f 281/534/30 297/535/35 267/536/17 +f 297/537/35 282/538/26 267/539/17 +f 282/538/26 310/540/45 283/541/29 +f 283/541/29 316/528/50 284/489/24 +f 284/489/24 315/542/53 285/543/54 +f 285/543/54 314/525/47 286/493/28 +f 286/493/28 313/544/51 280/545/23 +f 280/545/23 312/546/49 281/534/30 +f 332/547/7 317/548/4 324/549/8 +f 330/550/9 323/551/1 322/552/10 +f 328/553/11 321/554/3 320/555/12 +f 326/556/13 319/557/6 318/558/14 +f 331/559/15 324/549/8 323/551/1 +f 329/560/16 322/552/10 321/554/3 +f 327/561/17 320/555/12 319/562/6 +f 325/563/18 318/558/14 317/548/4 +f 331/559/15 339/564/19 332/547/7 +f 329/565/16 337/566/20 330/550/9 +f 333/567/21 326/568/13 325/569/18 +f 339/564/19 325/569/18 332/547/7 +f 337/566/20 331/559/15 330/550/9 +f 328/570/11 336/571/22 329/565/16 +f 339/564/19 340/572/23 333/567/21 +f 344/573/24 338/574/25 337/566/20 +f 342/575/26 336/571/22 335/576/27 +f 338/574/25 346/577/28 339/564/19 +f 343/578/29 337/566/20 336/571/22 +f 333/567/21 341/579/30 334/580/31 +f 326/568/13 334/580/31 327/581/17 +f 334/580/31 341/579/30 327/581/17 +f 328/570/11 327/582/17 335/576/27 +f 335/576/27 327/582/17 342/575/26 +f 362/583/32 347/584/3 354/585/12 +f 360/586/33 353/587/6 352/588/14 +f 358/589/34 351/590/4 350/591/8 +f 348/592/10 357/593/35 349/594/1 +f 361/595/38 354/585/12 353/587/6 +f 359/596/36 352/588/14 351/590/4 +f 357/597/35 350/591/8 349/598/1 +f 355/599/37 348/592/10 347/584/3 +f 361/595/38 369/600/39 362/583/32 +f 359/601/36 367/602/43 360/586/33 +f 355/603/37 364/604/41 356/605/42 +f 369/600/39 355/603/37 362/583/32 +f 367/602/43 361/595/38 360/586/33 +f 365/606/44 359/601/36 358/607/34 +f 369/600/39 370/608/45 363/609/46 +f 374/610/47 368/611/48 367/602/43 +f 372/612/49 366/613/40 365/606/44 +f 368/611/48 376/614/50 369/600/39 +f 373/615/51 367/602/43 366/613/40 +f 370/608/45 364/604/41 363/609/46 +f 356/605/42 364/604/41 357/616/35 +f 364/604/41 371/617/52 357/616/35 +f 358/607/34 357/618/35 365/606/44 +f 365/606/44 357/618/35 372/612/49 +f 341/619/30 357/620/35 327/621/17 +f 357/622/35 342/623/26 327/624/17 +f 342/623/26 370/625/45 343/626/29 +f 343/626/29 376/614/50 344/573/24 +f 344/573/24 375/627/53 345/628/54 +f 345/628/54 374/610/47 346/577/28 +f 346/577/28 373/629/51 340/630/23 +f 340/630/23 372/631/49 341/619/30 +f 392/632/55 377/633/3 384/634/10 +f 390/635/56 383/636/1 382/637/8 +f 388/638/57 381/639/4 380/640/14 +f 386/641/58 379/642/6 378/643/12 +f 391/644/59 384/634/10 383/636/1 +f 389/645/60 382/637/8 381/639/4 +f 387/646/48 380/640/14 379/647/6 +f 385/648/61 378/643/12 377/633/3 +f 391/644/59 399/649/62 392/632/55 +f 389/650/60 397/651/63 390/635/56 +f 393/652/64 386/653/58 385/654/61 +f 399/649/62 385/654/61 392/632/55 +f 397/651/63 391/644/59 390/635/56 +f 388/655/57 396/656/65 389/650/60 +f 399/649/62 400/657/66 393/652/64 +f 404/658/67 398/659/35 397/651/63 +f 402/660/68 396/656/65 395/661/69 +f 398/659/35 406/662/70 399/649/62 +f 403/663/71 397/651/63 396/656/65 +f 400/657/66 394/664/72 393/652/64 +f 386/653/58 394/664/72 387/665/48 +f 394/664/72 401/666/73 387/665/48 +f 388/655/57 387/667/48 395/661/69 +f 395/661/69 387/667/48 402/660/68 +f 422/668/74 407/669/4 414/670/14 +f 420/671/75 413/672/6 412/673/12 +f 418/674/76 411/675/3 410/676/10 +f 416/677/77 409/678/1 408/679/8 +f 421/680/78 414/670/14 413/672/6 +f 419/681/79 412/673/12 411/675/3 +f 417/682/25 410/676/10 409/683/1 +f 415/684/80 408/679/8 407/669/4 +f 421/680/78 429/685/81 422/668/74 +f 419/686/79 427/687/82 420/671/75 +f 415/688/80 424/689/83 416/690/77 +f 429/685/81 415/688/80 422/668/74 +f 427/687/82 421/680/78 420/671/75 +f 425/691/84 419/686/79 418/692/76 +f 429/685/81 430/693/85 423/694/86 +f 434/695/87 428/696/17 427/687/82 +f 432/697/88 426/698/89 425/691/84 +f 428/696/17 436/699/90 429/685/81 +f 433/700/91 427/687/82 426/698/89 +f 430/693/85 424/689/83 423/694/86 +f 416/690/77 424/689/83 417/701/25 +f 424/689/83 431/702/92 417/701/25 +f 418/692/76 417/703/25 425/691/84 +f 425/691/84 417/703/25 432/697/88 +f 401/704/73 417/705/25 387/706/48 +f 417/707/25 402/708/68 387/709/48 +f 402/708/68 430/710/85 403/711/71 +f 403/711/71 436/699/90 404/658/67 +f 404/658/67 435/712/93 405/713/94 +f 405/713/94 434/695/87 406/662/70 +f 406/662/70 433/714/91 400/715/66 +f 400/715/66 432/716/88 401/704/73 +f 452/717/55 437/718/3 444/719/10 +f 450/720/56 443/721/1 442/722/8 +f 448/723/57 441/724/4 440/725/14 +f 446/726/58 439/727/6 438/728/12 +f 451/729/59 444/719/10 443/721/1 +f 449/730/60 442/722/8 441/724/4 +f 447/731/48 440/725/14 439/732/6 +f 445/733/61 438/728/12 437/718/3 +f 451/729/59 459/734/62 452/717/55 +f 456/735/65 450/720/56 449/736/60 +f 453/737/64 446/738/58 445/739/61 +f 459/734/62 445/739/61 452/717/55 +f 457/740/63 451/729/59 450/720/56 +f 448/741/57 456/735/65 449/736/60 +f 459/734/62 460/742/66 453/737/64 +f 464/743/67 458/744/35 457/740/63 +f 455/745/69 463/746/71 456/735/65 +f 458/744/35 466/747/70 459/734/62 +f 463/746/71 457/740/63 456/735/65 +f 460/742/66 454/748/72 453/737/64 +f 446/738/58 454/748/72 447/749/48 +f 454/748/72 461/750/73 447/749/48 +f 448/741/57 447/751/48 455/745/69 +f 455/745/69 447/751/48 462/752/68 +f 482/753/74 467/754/4 474/755/14 +f 480/756/75 473/757/6 472/758/12 +f 478/759/76 471/760/3 470/761/10 +f 468/762/8 477/763/25 469/764/1 +f 481/765/78 474/755/14 473/757/6 +f 479/766/79 472/758/12 471/760/3 +f 477/767/25 470/761/10 469/768/1 +f 467/754/4 476/769/77 468/762/8 +f 481/765/78 489/770/81 482/753/74 +f 479/771/79 487/772/82 480/756/75 +f 475/773/80 484/774/83 476/775/77 +f 482/753/74 483/776/86 475/773/80 +f 487/772/82 481/765/78 480/756/75 +f 485/777/84 479/771/79 478/778/76 +f 489/770/81 490/779/85 483/776/86 +f 494/780/87 488/781/17 487/772/82 +f 492/782/88 486/783/89 485/777/84 +f 488/781/17 496/784/90 489/770/81 +f 493/785/91 487/772/82 486/783/89 +f 490/779/85 484/774/83 483/776/86 +f 476/775/77 484/774/83 477/786/25 +f 484/774/83 491/787/92 477/786/25 +f 478/778/76 477/788/25 485/777/84 +f 485/777/84 477/788/25 492/782/88 +f 461/789/73 477/790/25 447/791/48 +f 477/792/25 462/793/68 447/794/48 +f 462/793/68 490/795/85 463/796/71 +f 463/796/71 496/784/90 464/743/67 +f 464/743/67 495/797/93 465/798/94 +f 465/798/94 494/780/87 466/747/70 +f 466/747/70 493/799/91 460/800/66 +f 460/800/66 492/801/88 461/789/73 +f 512/802/55 497/803/3 504/804/10 +f 510/805/56 503/806/1 502/807/8 +f 508/808/57 501/809/4 500/810/14 +f 506/811/58 499/812/6 498/813/12 +f 511/814/59 504/804/10 503/806/1 +f 509/815/60 502/807/8 501/809/4 +f 507/816/48 500/810/14 499/817/6 +f 505/818/61 498/813/12 497/803/3 +f 511/814/59 519/819/62 512/802/55 +f 509/820/60 517/821/63 510/805/56 +f 513/822/64 506/823/58 505/824/61 +f 519/819/62 505/824/61 512/802/55 +f 517/821/63 511/814/59 510/805/56 +f 508/825/57 516/826/65 509/820/60 +f 526/827/70 513/822/64 519/819/62 +f 524/828/67 518/829/35 517/821/63 +f 522/830/68 516/826/65 515/831/69 +f 518/829/35 526/827/70 519/819/62 +f 523/832/71 517/821/63 516/826/65 +f 513/822/64 521/833/73 514/834/72 +f 506/823/58 514/834/72 507/835/48 +f 514/834/72 521/833/73 507/835/48 +f 508/825/57 507/836/48 515/831/69 +f 515/831/69 507/836/48 522/830/68 +f 542/837/74 527/838/4 534/839/14 +f 540/840/75 533/841/6 532/842/12 +f 538/843/76 531/844/3 530/845/10 +f 536/846/77 529/847/1 528/848/8 +f 541/849/78 534/839/14 533/841/6 +f 539/850/79 532/842/12 531/844/3 +f 537/851/25 530/845/10 529/852/1 +f 535/853/80 528/848/8 527/838/4 +f 541/849/78 549/854/81 542/837/74 +f 539/855/79 547/856/82 540/840/75 +f 543/857/86 536/858/77 535/859/80 +f 549/854/81 535/859/80 542/837/74 +f 547/856/82 541/849/78 540/840/75 +f 545/860/84 539/855/79 538/861/76 +f 549/854/81 550/862/85 543/857/86 +f 554/863/87 548/864/17 547/856/82 +f 552/865/88 546/866/89 545/860/84 +f 548/864/17 556/867/90 549/854/81 +f 546/866/89 554/863/87 547/856/82 +f 550/862/85 544/868/83 543/857/86 +f 536/858/77 544/868/83 537/869/25 +f 544/868/83 551/870/92 537/869/25 +f 538/861/76 537/871/25 545/860/84 +f 545/860/84 537/871/25 552/865/88 +f 521/872/73 537/873/25 507/874/48 +f 537/875/25 522/876/68 507/877/48 +f 522/876/68 550/878/85 523/879/71 +f 523/879/71 556/867/90 524/828/67 +f 524/828/67 555/880/93 525/881/94 +f 525/881/94 554/863/87 526/827/70 +f 526/827/70 553/882/91 520/883/66 +f 520/883/66 552/884/88 521/872/73 +f 572/885/55 557/886/3 564/887/10 +f 570/888/56 563/889/1 562/890/8 +f 568/891/57 561/892/4 560/893/14 +f 566/894/58 559/895/6 558/896/12 +f 571/897/59 564/887/10 563/889/1 +f 569/898/60 562/890/8 561/892/4 +f 567/899/48 560/893/14 559/900/6 +f 565/901/61 558/896/12 557/886/3 +f 571/897/59 579/902/62 572/885/55 +f 569/903/60 577/904/63 570/888/56 +f 573/905/64 566/906/58 565/907/61 +f 579/902/62 565/907/61 572/885/55 +f 577/904/63 571/897/59 570/888/56 +f 568/908/57 576/909/65 569/903/60 +f 586/910/70 573/905/64 579/902/62 +f 584/911/67 578/912/35 577/904/63 +f 582/913/68 576/909/65 575/914/69 +f 578/912/35 586/910/70 579/902/62 +f 576/909/65 584/911/67 577/904/63 +f 580/915/66 574/916/72 573/905/64 +f 566/906/58 574/916/72 567/917/48 +f 574/916/72 581/918/73 567/917/48 +f 568/908/57 567/919/48 575/914/69 +f 575/914/69 567/919/48 582/913/68 +f 602/920/74 587/921/4 594/922/14 +f 600/923/75 593/924/6 592/925/12 +f 598/926/76 591/927/3 590/928/10 +f 588/929/8 597/930/25 589/931/1 +f 601/932/78 594/922/14 593/924/6 +f 599/933/79 592/925/12 591/927/3 +f 597/934/25 590/928/10 589/935/1 +f 595/936/80 588/929/8 587/921/4 +f 608/937/17 602/920/74 601/932/78 +f 606/938/89 600/923/75 599/939/79 +f 595/940/80 604/941/83 596/942/77 +f 609/943/81 595/940/80 602/920/74 +f 607/944/82 601/932/78 600/923/75 +f 605/945/84 599/939/79 598/946/76 +f 616/947/90 603/948/86 609/943/81 +f 607/944/82 615/949/93 608/937/17 +f 612/950/88 606/938/89 605/945/84 +f 615/949/93 609/943/81 608/937/17 +f 606/938/89 614/951/87 607/944/82 +f 610/952/85 604/941/83 603/948/86 +f 596/942/77 604/941/83 597/953/25 +f 604/941/83 611/954/92 597/953/25 +f 598/946/76 597/955/25 605/945/84 +f 605/945/84 597/955/25 612/950/88 +f 581/956/73 597/957/25 567/958/48 +f 597/959/25 582/960/68 567/961/48 +f 582/960/68 610/962/85 583/963/71 +f 583/963/71 616/947/90 584/911/67 +f 584/911/67 615/949/93 585/964/94 +f 585/964/94 614/951/87 586/910/70 +f 586/910/70 613/965/91 580/966/66 +f 580/966/66 612/967/88 581/956/73 +f 632/968/95 617/969/2 624/970/25 +f 630/971/96 623/972/1 622/973/35 +f 628/974/97 621/975/5 620/976/17 +f 626/977/98 619/978/6 618/979/48 +f 631/980/99 624/970/25 623/972/1 +f 629/981/100 622/973/35 621/975/5 +f 627/982/14 620/976/17 619/983/6 +f 625/984/101 618/979/48 617/969/2 +f 631/980/99 639/985/102 632/968/95 +f 629/986/100 637/987/103 630/971/96 +f 633/988/104 626/989/98 625/990/101 +f 639/985/102 625/990/101 632/968/95 +f 630/971/96 638/991/10 631/980/99 +f 628/992/97 636/993/105 629/986/100 +f 639/985/102 640/994/106 633/988/104 +f 644/995/107 638/991/10 637/987/103 +f 635/996/108 643/997/109 636/993/105 +f 638/991/10 646/998/110 639/985/102 +f 643/997/109 637/987/103 636/993/105 +f 633/988/104 641/999/111 634/1000/112 +f 626/989/98 634/1000/112 627/1001/14 +f 634/1000/112 641/999/111 627/1001/14 +f 628/992/97 627/1002/14 635/996/108 +f 635/996/108 627/1002/14 642/1003/113 +f 662/1004/114 647/1005/5 654/1006/17 +f 660/1007/115 653/1008/6 652/1009/48 +f 658/1010/116 651/1011/2 650/1012/25 +f 648/1013/35 657/1014/8 649/1015/1 +f 653/1008/6 662/1004/114 654/1006/17 +f 659/1016/117 652/1009/48 651/1011/2 +f 657/1017/8 650/1012/25 649/1018/1 +f 647/1005/5 656/1019/118 648/1013/35 +f 661/1020/119 669/1021/120 662/1004/114 +f 666/1022/121 660/1007/115 659/1023/117 +f 663/1024/122 656/1025/118 655/1026/123 +f 669/1021/120 655/1026/123 662/1004/114 +f 667/1027/124 661/1020/119 660/1007/115 +f 665/1028/125 659/1023/117 658/1029/116 +f 669/1021/120 670/1030/126 663/1024/122 +f 674/1031/127 668/1032/12 667/1027/124 +f 672/1033/128 666/1022/121 665/1028/125 +f 668/1032/12 676/1034/129 669/1021/120 +f 673/1035/130 667/1027/124 666/1022/121 +f 670/1030/126 664/1036/131 663/1024/122 +f 656/1025/118 664/1036/131 657/1037/8 +f 664/1036/131 671/1038/132 657/1037/8 +f 658/1029/116 657/1039/8 665/1028/125 +f 665/1028/125 657/1039/8 672/1033/128 +f 641/1040/111 657/1041/8 627/1042/14 +f 657/1043/8 642/1044/113 627/1045/14 +f 642/1044/113 670/1046/126 643/1047/109 +f 643/1047/109 676/1034/129 644/995/107 +f 644/995/107 675/1048/133 645/1049/134 +f 645/1049/134 674/1031/127 646/998/110 +f 646/998/110 673/1050/130 640/1051/106 +f 640/1051/106 672/1052/128 641/1040/111 +f 692/1053/95 677/1054/2 684/1055/25 +f 690/1056/96 683/1057/1 682/1058/35 +f 688/1059/97 681/1060/5 680/1061/17 +f 686/1062/98 679/1063/6 678/1064/48 +f 691/1065/99 684/1055/25 683/1057/1 +f 689/1066/100 682/1058/35 681/1060/5 +f 687/1067/14 680/1061/17 679/1068/6 +f 685/1069/101 678/1064/48 677/1054/2 +f 691/1065/99 699/1070/102 692/1053/95 +f 689/1071/100 697/1072/103 690/1056/96 +f 693/1073/104 686/1074/98 685/1075/101 +f 699/1070/102 685/1075/101 692/1053/95 +f 697/1072/103 691/1065/99 690/1056/96 +f 688/1076/97 696/1077/105 689/1071/100 +f 699/1070/102 700/1078/106 693/1073/104 +f 704/1079/107 698/1080/10 697/1072/103 +f 702/1081/113 696/1077/105 695/1082/108 +f 698/1080/10 706/1083/110 699/1070/102 +f 703/1084/109 697/1072/103 696/1077/105 +f 693/1073/104 701/1085/111 694/1086/112 +f 686/1074/98 694/1086/112 687/1087/14 +f 694/1086/112 701/1085/111 687/1087/14 +f 688/1076/97 687/1088/14 695/1082/108 +f 695/1082/108 687/1088/14 702/1081/113 +f 722/1089/114 707/1090/5 714/1091/17 +f 720/1092/115 713/1093/6 712/1094/48 +f 718/1095/116 711/1096/2 710/1097/25 +f 708/1098/35 717/1099/8 709/1100/1 +f 721/1101/119 714/1091/17 713/1093/6 +f 719/1102/117 712/1094/48 711/1096/2 +f 717/1103/8 710/1097/25 709/1104/1 +f 715/1105/123 708/1098/35 707/1090/5 +f 721/1101/119 729/1106/120 722/1089/114 +f 719/1107/117 727/1108/124 720/1092/115 +f 723/1109/122 716/1110/118 715/1111/123 +f 729/1106/120 715/1111/123 722/1089/114 +f 727/1108/124 721/1101/119 720/1092/115 +f 725/1112/125 719/1107/117 718/1113/116 +f 729/1106/120 730/1114/126 723/1109/122 +f 734/1115/127 728/1116/12 727/1108/124 +f 732/1117/128 726/1118/121 725/1112/125 +f 728/1116/12 736/1119/129 729/1106/120 +f 733/1120/130 727/1108/124 726/1118/121 +f 730/1114/126 724/1121/131 723/1109/122 +f 716/1110/118 724/1121/131 717/1122/8 +f 724/1121/131 731/1123/132 717/1122/8 +f 718/1113/116 717/1124/8 725/1112/125 +f 725/1112/125 717/1124/8 732/1117/128 +f 701/1125/111 717/1126/8 687/1127/14 +f 717/1128/8 702/1129/113 687/1130/14 +f 702/1129/113 730/1131/126 703/1132/109 +f 703/1132/109 736/1119/129 704/1079/107 +f 704/1079/107 735/1133/133 705/1134/134 +f 705/1134/134 734/1115/127 706/1083/110 +f 706/1083/110 733/1135/130 700/1136/106 +f 700/1136/106 732/1137/128 701/1125/111 +f 752/1138/95 737/1139/2 744/1140/25 +f 750/1141/96 743/1142/1 742/1143/35 +f 748/1144/97 741/1145/5 740/1146/17 +f 746/1147/98 739/1148/6 738/1149/48 +f 751/1150/99 744/1140/25 743/1142/1 +f 749/1151/100 742/1143/35 741/1145/5 +f 747/1152/14 740/1146/17 739/1153/6 +f 745/1154/101 738/1149/48 737/1139/2 +f 751/1150/99 759/1155/102 752/1138/95 +f 749/1156/100 757/1157/103 750/1141/96 +f 753/1158/104 746/1159/98 745/1160/101 +f 759/1155/102 745/1160/101 752/1138/95 +f 757/1157/103 751/1150/99 750/1141/96 +f 748/1161/97 756/1162/105 749/1156/100 +f 759/1155/102 760/1163/106 753/1158/104 +f 764/1164/107 758/1165/10 757/1157/103 +f 762/1166/113 756/1162/105 755/1167/108 +f 758/1165/10 766/1168/110 759/1155/102 +f 763/1169/109 757/1157/103 756/1162/105 +f 753/1158/104 761/1170/111 754/1171/112 +f 746/1159/98 754/1171/112 747/1172/14 +f 754/1171/112 761/1170/111 747/1172/14 +f 748/1161/97 747/1173/14 755/1167/108 +f 755/1167/108 747/1173/14 762/1166/113 +f 782/1174/114 767/1175/5 774/1176/17 +f 780/1177/115 773/1178/6 772/1179/48 +f 778/1180/116 771/1181/2 770/1182/25 +f 776/1183/118 769/1184/1 768/1185/35 +f 781/1186/119 774/1176/17 773/1178/6 +f 779/1187/117 772/1179/48 771/1181/2 +f 777/1188/8 770/1182/25 769/1189/1 +f 775/1190/123 768/1185/35 767/1175/5 +f 781/1186/119 789/1191/120 782/1174/114 +f 779/1192/117 787/1193/124 780/1177/115 +f 775/1194/123 784/1195/131 776/1196/118 +f 789/1191/120 775/1194/123 782/1174/114 +f 787/1193/124 781/1186/119 780/1177/115 +f 785/1197/125 779/1192/117 778/1198/116 +f 789/1191/120 790/1199/126 783/1200/122 +f 794/1201/127 788/1202/12 787/1193/124 +f 792/1203/128 786/1204/121 785/1197/125 +f 788/1202/12 796/1205/129 789/1191/120 +f 793/1206/130 787/1193/124 786/1204/121 +f 783/1200/122 791/1207/132 784/1195/131 +f 776/1196/118 784/1195/131 777/1208/8 +f 784/1195/131 791/1207/132 777/1208/8 +f 778/1198/116 777/1209/8 785/1197/125 +f 785/1197/125 777/1209/8 792/1203/128 +f 761/1210/111 777/1211/8 747/1212/14 +f 777/1213/8 762/1214/113 747/1215/14 +f 762/1214/113 790/1216/126 763/1217/109 +f 763/1217/109 796/1205/129 764/1164/107 +f 764/1164/107 795/1218/133 765/1219/134 +f 766/1168/110 795/1218/133 794/1201/127 +f 766/1168/110 793/1220/130 760/1221/106 +f 760/1221/106 792/1222/128 761/1210/111 +f 812/1223/95 797/1224/2 804/1225/25 +f 810/1226/96 803/1227/1 802/1228/35 +f 808/1229/97 801/1230/5 800/1231/17 +f 806/1232/98 799/1233/6 798/1234/48 +f 811/1235/99 804/1225/25 803/1227/1 +f 809/1236/100 802/1228/35 801/1230/5 +f 807/1237/14 800/1231/17 799/1238/6 +f 805/1239/101 798/1234/48 797/1224/2 +f 811/1235/99 819/1240/102 812/1223/95 +f 809/1241/100 817/1242/103 810/1226/96 +f 813/1243/104 806/1244/98 805/1245/101 +f 819/1240/102 805/1245/101 812/1223/95 +f 817/1242/103 811/1235/99 810/1226/96 +f 808/1246/97 816/1247/105 809/1241/100 +f 819/1240/102 820/1248/106 813/1243/104 +f 824/1249/107 818/1250/10 817/1242/103 +f 822/1251/113 816/1247/105 815/1252/108 +f 818/1250/10 826/1253/110 819/1240/102 +f 823/1254/109 817/1242/103 816/1247/105 +f 813/1243/104 821/1255/111 814/1256/112 +f 806/1244/98 814/1256/112 807/1257/14 +f 814/1256/112 821/1255/111 807/1257/14 +f 808/1246/97 807/1258/14 815/1252/108 +f 815/1252/108 807/1258/14 822/1251/113 +f 842/1259/114 827/1260/5 834/1261/17 +f 840/1262/115 833/1263/6 832/1264/48 +f 838/1265/116 831/1266/2 830/1267/25 +f 828/1268/35 837/1269/8 829/1270/1 +f 841/1271/119 834/1261/17 833/1263/6 +f 839/1272/117 832/1264/48 831/1266/2 +f 837/1273/8 830/1267/25 829/1274/1 +f 835/1275/123 828/1268/35 827/1260/5 +f 841/1271/119 849/1276/120 842/1259/114 +f 839/1277/117 847/1278/124 840/1262/115 +f 835/1279/123 844/1280/131 836/1281/118 +f 849/1276/120 835/1279/123 842/1259/114 +f 847/1278/124 841/1271/119 840/1262/115 +f 845/1282/125 839/1277/117 838/1283/116 +f 849/1276/120 850/1284/126 843/1285/122 +f 854/1286/127 848/1287/12 847/1278/124 +f 845/1282/125 853/1288/130 846/1289/121 +f 848/1287/12 856/1290/129 849/1276/120 +f 853/1288/130 847/1278/124 846/1289/121 +f 850/1284/126 844/1280/131 843/1285/122 +f 836/1281/118 844/1280/131 837/1291/8 +f 844/1280/131 851/1292/132 837/1291/8 +f 838/1283/116 837/1293/8 845/1282/125 +f 845/1282/125 837/1293/8 852/1294/128 +f 821/1295/111 837/1296/8 807/1297/14 +f 837/1298/8 822/1299/113 807/1300/14 +f 822/1299/113 850/1301/126 823/1302/109 +f 823/1302/109 856/1290/129 824/1249/107 +f 824/1249/107 855/1303/133 825/1304/134 +f 826/1253/110 855/1303/133 854/1286/127 +f 826/1253/110 853/1305/130 820/1306/106 +f 820/1306/106 852/1307/128 821/1295/111 +f 872/1308/135 857/1309/5 864/1310/35 +f 870/1311/136 863/1312/1 862/1313/25 +f 868/1314/137 861/1315/2 860/1316/48 +f 866/1317/138 859/1318/6 858/1319/17 +f 871/1320/139 864/1310/35 863/1312/1 +f 869/1321/140 862/1313/25 861/1315/2 +f 867/1322/12 860/1316/48 859/1323/6 +f 865/1324/141 858/1319/17 857/1309/5 +f 871/1320/139 879/1325/142 872/1308/135 +f 869/1326/140 877/1327/143 870/1311/136 +f 873/1328/144 866/1329/138 865/1330/141 +f 879/1325/142 865/1330/141 872/1308/135 +f 877/1327/143 871/1320/139 870/1311/136 +f 875/1331/145 869/1326/140 868/1332/137 +f 879/1325/142 880/1333/146 873/1328/144 +f 884/1334/147 878/1335/8 877/1327/143 +f 882/1336/148 876/1337/149 875/1331/145 +f 878/1335/8 886/1338/150 879/1325/142 +f 883/1339/151 877/1327/143 876/1337/149 +f 873/1328/144 881/1340/152 874/1341/153 +f 866/1329/138 874/1341/153 867/1342/12 +f 874/1341/153 881/1340/152 867/1342/12 +f 868/1332/137 867/1343/12 875/1331/145 +f 875/1331/145 867/1343/12 882/1336/148 +f 902/1344/154 887/1345/2 894/1346/48 +f 900/1347/155 893/1348/6 892/1349/17 +f 898/1350/156 891/1351/5 890/1352/35 +f 896/1353/157 889/1354/1 888/1355/25 +f 901/1356/158 894/1346/48 893/1348/6 +f 899/1357/159 892/1349/17 891/1351/5 +f 897/1358/10 890/1352/35 889/1359/1 +f 887/1345/2 896/1353/157 888/1355/25 +f 901/1356/158 909/1360/160 902/1344/154 +f 899/1361/159 907/1362/161 900/1347/155 +f 895/1363/162 904/1364/163 896/1365/157 +f 909/1360/160 895/1363/162 902/1344/154 +f 907/1362/161 901/1356/158 900/1347/155 +f 898/1366/156 906/1367/164 899/1361/159 +f 909/1360/160 910/1368/165 903/1369/166 +f 914/1370/167 908/1371/14 907/1362/161 +f 912/1372/168 906/1367/164 905/1373/169 +f 908/1371/14 916/1374/170 909/1360/160 +f 913/1375/171 907/1362/161 906/1367/164 +f 910/1368/165 904/1364/163 903/1369/166 +f 896/1365/157 904/1364/163 897/1376/10 +f 904/1364/163 911/1377/172 897/1376/10 +f 898/1366/156 897/1378/10 905/1373/169 +f 905/1373/169 897/1378/10 912/1372/168 +f 881/1379/152 897/1380/10 867/1381/12 +f 897/1382/10 882/1383/148 867/1384/12 +f 882/1383/148 910/1385/165 883/1386/151 +f 883/1386/151 916/1374/170 884/1334/147 +f 884/1334/147 915/1387/173 885/1388/174 +f 885/1388/174 914/1370/167 886/1338/150 +f 880/1389/146 914/1370/167 913/1390/171 +f 880/1389/146 912/1391/168 881/1379/152 +f 932/1392/135 917/1393/5 924/1394/35 +f 930/1395/136 923/1396/1 922/1397/25 +f 928/1398/137 921/1399/2 920/1400/48 +f 926/1401/138 919/1402/6 918/1403/17 +f 931/1404/139 924/1394/35 923/1396/1 +f 929/1405/140 922/1397/25 921/1399/2 +f 927/1406/12 920/1400/48 919/1407/6 +f 925/1408/141 918/1403/17 917/1393/5 +f 931/1404/139 939/1409/142 932/1392/135 +f 929/1410/140 937/1411/143 930/1395/136 +f 933/1412/144 926/1413/138 925/1414/141 +f 939/1409/142 925/1414/141 932/1392/135 +f 937/1411/143 931/1404/139 930/1395/136 +f 928/1415/137 936/1416/149 929/1410/140 +f 939/1409/142 940/1417/146 933/1412/144 +f 944/1418/147 938/1419/8 937/1411/143 +f 942/1420/148 936/1416/149 935/1421/145 +f 938/1419/8 946/1422/150 939/1409/142 +f 943/1423/151 937/1411/143 936/1416/149 +f 933/1412/144 941/1424/152 934/1425/153 +f 926/1413/138 934/1425/153 927/1426/12 +f 934/1425/153 941/1424/152 927/1426/12 +f 928/1415/137 927/1427/12 935/1421/145 +f 935/1421/145 927/1427/12 942/1420/148 +f 962/1428/154 947/1429/2 954/1430/48 +f 960/1431/155 953/1432/6 952/1433/17 +f 958/1434/156 951/1435/5 950/1436/35 +f 948/1437/25 957/1438/10 949/1439/1 +f 961/1440/158 954/1430/48 953/1432/6 +f 959/1441/159 952/1433/17 951/1435/5 +f 957/1442/10 950/1436/35 949/1443/1 +f 955/1444/162 948/1437/25 947/1429/2 +f 961/1440/158 969/1445/160 962/1428/154 +f 966/1446/164 960/1431/155 959/1447/159 +f 955/1448/162 964/1449/163 956/1450/157 +f 962/1428/154 963/1451/166 955/1448/162 +f 967/1452/161 961/1440/158 960/1431/155 +f 965/1453/169 959/1447/159 958/1454/156 +f 969/1445/160 970/1455/165 963/1451/166 +f 974/1456/167 968/1457/14 967/1452/161 +f 972/1458/168 966/1446/164 965/1453/169 +f 968/1457/14 976/1459/170 969/1445/160 +f 973/1460/171 967/1452/161 966/1446/164 +f 970/1455/165 964/1449/163 963/1451/166 +f 956/1450/157 964/1449/163 957/1461/10 +f 964/1449/163 971/1462/172 957/1461/10 +f 958/1454/156 957/1463/10 965/1453/169 +f 965/1453/169 957/1463/10 972/1458/168 +f 941/1464/152 957/1465/10 927/1466/12 +f 957/1467/10 942/1468/148 927/1469/12 +f 942/1468/148 970/1470/165 943/1471/151 +f 943/1471/151 976/1459/170 944/1418/147 +f 944/1418/147 975/1472/173 945/1473/174 +f 945/1473/174 974/1456/167 946/1422/150 +f 946/1422/150 973/1474/171 940/1475/146 +f 940/1475/146 972/1476/168 941/1464/152 +f 984/1477/35 985/1478/141 977/1479/5 +f 990/1480/136 983/1481/1 982/1482/25 +f 988/1483/137 981/1484/2 980/1485/48 +f 986/1486/138 979/1487/6 978/1488/17 +f 991/1489/139 984/1477/35 983/1481/1 +f 989/1490/140 982/1482/25 981/1484/2 +f 987/1491/12 980/1485/48 979/1492/6 +f 985/1478/141 978/1488/17 977/1479/5 +f 991/1489/139 999/1493/142 992/1494/135 +f 989/1495/140 997/1496/143 990/1480/136 +f 993/1497/144 986/1498/138 985/1499/141 +f 999/1493/142 985/1499/141 992/1494/135 +f 997/1496/143 991/1489/139 990/1480/136 +f 988/1500/137 996/1501/149 989/1495/140 +f 1006/1502/150 993/1497/144 999/1493/142 +f 1004/1503/147 998/1504/8 997/1496/143 +f 1002/1505/148 996/1501/149 995/1506/145 +f 998/1504/8 1006/1502/150 999/1493/142 +f 1003/1507/151 997/1496/143 996/1501/149 +f 993/1497/144 1001/1508/152 994/1509/153 +f 986/1498/138 994/1509/153 987/1510/12 +f 994/1509/153 1001/1508/152 987/1510/12 +f 988/1500/137 987/1511/12 995/1506/145 +f 995/1506/145 987/1511/12 1002/1505/148 +f 1022/1512/154 1007/1513/2 1014/1514/48 +f 1020/1515/155 1013/1516/6 1012/1517/17 +f 1018/1518/156 1011/1519/5 1010/1520/35 +f 1016/1521/157 1009/1522/1 1008/1523/25 +f 1013/1516/6 1022/1512/154 1014/1514/48 +f 1019/1524/159 1012/1517/17 1011/1519/5 +f 1009/1525/1 1018/1518/156 1010/1520/35 +f 1015/1526/162 1008/1523/25 1007/1513/2 +f 1021/1527/158 1029/1528/160 1022/1512/154 +f 1019/1529/159 1027/1530/161 1020/1515/155 +f 1015/1531/162 1024/1532/163 1016/1533/157 +f 1029/1528/160 1015/1531/162 1022/1512/154 +f 1027/1530/161 1021/1527/158 1020/1515/155 +f 1025/1534/169 1019/1529/159 1018/1535/156 +f 1036/1536/170 1023/1537/166 1029/1528/160 +f 1027/1530/161 1035/1538/173 1028/1539/14 +f 1025/1534/169 1033/1540/171 1026/1541/164 +f 1028/1539/14 1036/1536/170 1029/1528/160 +f 1033/1540/171 1027/1530/161 1026/1541/164 +f 1023/1537/166 1031/1542/172 1024/1532/163 +f 1016/1533/157 1024/1532/163 1017/1543/10 +f 1024/1532/163 1031/1542/172 1017/1543/10 +f 1018/1535/156 1017/1544/10 1025/1534/169 +f 1025/1534/169 1017/1544/10 1032/1545/168 +f 1001/1546/152 1017/1547/10 987/1548/12 +f 1017/1549/10 1002/1550/148 987/1551/12 +f 1002/1550/148 1030/1552/165 1003/1553/151 +f 1003/1553/151 1036/1536/170 1004/1503/147 +f 1004/1503/147 1035/1538/173 1005/1554/174 +f 1006/1502/150 1035/1538/173 1034/1555/167 +f 1006/1502/150 1033/1556/171 1000/1557/146 +f 1000/1557/146 1032/1558/168 1001/1546/152 +f 1052/1559/135 1037/1560/5 1044/1561/35 +f 1042/1562/25 1051/1563/139 1043/1564/1 +f 1048/1565/137 1041/1566/2 1040/1567/48 +f 1038/1568/17 1047/1569/12 1039/1570/6 +f 1051/1563/139 1044/1561/35 1043/1564/1 +f 1049/1571/140 1042/1562/25 1041/1566/2 +f 1047/1572/12 1040/1567/48 1039/1573/6 +f 1045/1574/141 1038/1568/17 1037/1560/5 +f 1051/1563/139 1059/1575/142 1052/1559/135 +f 1049/1576/140 1057/1577/143 1050/1578/136 +f 1053/1579/144 1046/1580/138 1045/1581/141 +f 1052/1559/135 1053/1579/144 1045/1581/141 +f 1050/1578/136 1058/1582/8 1051/1563/139 +f 1048/1583/137 1056/1584/149 1049/1576/140 +f 1059/1575/142 1060/1585/146 1053/1579/144 +f 1064/1586/147 1058/1582/8 1057/1577/143 +f 1062/1587/148 1056/1584/149 1055/1588/145 +f 1058/1582/8 1066/1589/150 1059/1575/142 +f 1063/1590/151 1057/1577/143 1056/1584/149 +f 1060/1585/146 1054/1591/153 1053/1579/144 +f 1046/1580/138 1054/1591/153 1047/1592/12 +f 1054/1591/153 1061/1593/152 1047/1592/12 +f 1048/1583/137 1047/1594/12 1055/1588/145 +f 1055/1588/145 1047/1594/12 1062/1587/148 +f 1082/1595/154 1067/1596/2 1074/1597/48 +f 1080/1598/155 1073/1599/6 1072/1600/17 +f 1078/1601/156 1071/1602/5 1070/1603/35 +f 1076/1604/157 1069/1605/1 1068/1606/25 +f 1081/1607/158 1074/1597/48 1073/1599/6 +f 1079/1608/159 1072/1600/17 1071/1602/5 +f 1069/1609/1 1078/1601/156 1070/1603/35 +f 1067/1596/2 1076/1604/157 1068/1606/25 +f 1081/1607/158 1089/1610/160 1082/1595/154 +f 1086/1611/164 1080/1598/155 1079/1612/159 +f 1075/1613/162 1084/1614/163 1076/1615/157 +f 1089/1610/160 1075/1613/162 1082/1595/154 +f 1087/1616/161 1081/1607/158 1080/1598/155 +f 1085/1617/169 1079/1612/159 1078/1618/156 +f 1089/1610/160 1090/1619/165 1083/1620/166 +f 1094/1621/167 1088/1622/14 1087/1616/161 +f 1092/1623/168 1086/1611/164 1085/1617/169 +f 1088/1622/14 1096/1624/170 1089/1610/160 +f 1086/1611/164 1094/1621/167 1087/1616/161 +f 1090/1619/165 1084/1614/163 1083/1620/166 +f 1076/1615/157 1084/1614/163 1077/1625/10 +f 1084/1614/163 1091/1626/172 1077/1625/10 +f 1078/1618/156 1077/1627/10 1085/1617/169 +f 1085/1617/169 1077/1627/10 1092/1623/168 +f 1061/1628/152 1077/1629/10 1047/1630/12 +f 1077/1631/10 1062/1632/148 1047/1633/12 +f 1062/1632/148 1090/1634/165 1063/1635/151 +f 1063/1635/151 1096/1624/170 1064/1586/147 +f 1064/1586/147 1095/1636/173 1065/1637/174 +f 1065/1637/174 1094/1621/167 1066/1589/150 +f 1066/1589/150 1093/1638/171 1060/1639/146 +f 1060/1639/146 1092/1640/168 1061/1628/152 +f 152/293/7 145/309/18 137/294/4 +f 150/296/9 151/305/15 143/297/1 +f 148/299/11 149/306/16 141/300/3 +f 146/302/13 147/1641/17 139/303/6 +f 151/305/15 152/293/7 144/295/8 +f 149/306/16 150/296/9 142/298/10 +f 147/307/17 148/299/11 140/301/12 +f 145/309/18 146/302/13 138/304/14 +f 151/305/15 158/320/25 159/310/19 +f 149/311/16 156/317/22 157/312/20 +f 153/313/21 154/326/31 146/314/13 +f 159/310/19 153/313/21 145/315/18 +f 157/312/20 158/320/25 151/305/15 +f 148/316/11 155/322/27 156/317/22 +f 159/310/19 166/323/28 160/318/23 +f 164/319/24 165/374/54 158/320/25 +f 162/321/26 163/324/29 156/317/22 +f 158/320/25 165/374/54 166/323/28 +f 163/324/29 164/319/24 157/312/20 +f 153/313/21 160/318/23 161/325/30 +f 182/329/32 175/344/37 167/330/3 +f 180/332/33 181/345/38 173/333/6 +f 178/335/34 179/341/36 171/336/4 +f 168/338/10 176/1642/42 177/339/35 +f 173/333/6 181/345/38 182/329/32 +f 179/341/36 180/332/33 172/334/14 +f 177/342/35 178/335/34 170/337/8 +f 175/344/37 176/1642/42 168/338/10 +f 181/345/38 188/358/48 189/346/39 +f 186/347/40 187/352/43 180/332/33 +f 175/349/37 183/356/46 184/350/41 +f 189/346/39 183/356/46 175/349/37 +f 187/352/43 188/358/48 181/345/38 +f 185/353/44 186/347/40 179/348/36 +f 189/346/39 196/360/50 190/355/45 +f 194/357/47 195/373/53 188/358/48 +f 192/359/49 193/361/51 186/347/40 +f 188/358/48 195/373/53 196/360/50 +f 193/361/51 194/357/47 187/352/43 +f 190/355/45 191/363/52 184/350/41 +f 161/365/30 192/377/49 177/366/35 +f 177/368/35 191/1643/52 162/369/26 +f 162/369/26 191/1643/52 190/371/45 +f 163/372/29 190/371/45 196/360/50 +f 164/319/24 196/360/50 195/373/53 +f 165/374/54 195/373/53 194/357/47 +f 166/323/28 194/357/47 193/375/51 +f 160/376/23 193/375/51 192/377/49 +f 212/378/7 205/394/18 197/379/4 +f 210/381/9 211/390/15 203/382/1 +f 208/384/11 209/391/16 201/385/3 +f 206/387/13 207/1644/17 199/388/6 +f 211/390/15 212/378/7 204/380/8 +f 209/391/16 210/381/9 202/383/10 +f 207/392/17 208/384/11 200/386/12 +f 205/394/18 206/387/13 198/389/14 +f 211/390/15 218/405/25 219/395/19 +f 209/396/16 216/402/22 217/397/20 +f 213/398/21 214/411/31 206/399/13 +f 219/395/19 213/398/21 205/400/18 +f 217/397/20 218/405/25 211/390/15 +f 208/401/11 215/407/27 216/402/22 +f 219/395/19 226/408/28 220/403/23 +f 224/404/24 225/459/54 218/405/25 +f 222/406/26 223/409/29 216/402/22 +f 218/405/25 225/459/54 226/408/28 +f 223/409/29 224/404/24 217/397/20 +f 213/398/21 220/403/23 221/410/30 +f 242/414/32 235/430/37 227/415/3 +f 240/417/33 241/426/38 233/418/6 +f 238/420/34 239/427/36 231/421/4 +f 228/423/10 236/1645/42 237/424/35 +f 241/426/38 242/414/32 234/416/12 +f 239/427/36 240/417/33 232/419/14 +f 237/428/35 238/420/34 230/422/8 +f 235/430/37 236/1645/42 228/423/10 +f 241/426/38 248/441/48 249/431/39 +f 239/432/36 246/443/40 247/433/43 +f 243/434/46 244/446/41 236/435/42 +f 249/431/39 243/434/46 235/436/37 +f 247/433/43 248/441/48 241/426/38 +f 245/437/44 246/443/40 239/432/36 +f 249/431/39 256/444/50 250/439/45 +f 254/440/47 255/458/53 248/441/48 +f 252/442/49 253/445/51 246/443/40 +f 248/441/48 255/458/53 256/444/50 +f 253/445/51 254/440/47 247/433/43 +f 250/439/45 251/448/52 244/446/41 +f 221/450/30 252/462/49 237/451/35 +f 237/453/35 251/1646/52 222/454/26 +f 222/454/26 251/1646/52 250/456/45 +f 223/457/29 250/456/45 256/444/50 +f 224/404/24 256/444/50 255/458/53 +f 225/459/54 255/458/53 254/440/47 +f 226/408/28 254/440/47 253/460/51 +f 220/461/23 253/460/51 252/462/49 +f 272/463/7 265/479/18 257/464/4 +f 270/466/9 271/475/15 263/467/1 +f 268/469/11 269/476/16 261/470/3 +f 266/472/13 267/1647/17 259/473/6 +f 271/475/15 272/463/7 264/465/8 +f 269/476/16 270/466/9 262/468/10 +f 267/477/17 268/469/11 260/471/12 +f 265/479/18 266/472/13 258/474/14 +f 271/475/15 278/490/25 279/480/19 +f 269/481/16 276/487/22 277/482/20 +f 273/483/21 274/496/31 266/484/13 +f 279/480/19 273/483/21 265/485/18 +f 277/482/20 278/490/25 271/475/15 +f 268/486/11 275/492/27 276/487/22 +f 279/480/19 286/493/28 280/488/23 +f 284/489/24 285/543/54 278/490/25 +f 282/491/26 283/494/29 276/487/22 +f 278/490/25 285/543/54 286/493/28 +f 283/494/29 284/489/24 277/482/20 +f 273/483/21 280/488/23 281/495/30 +f 302/499/32 295/1648/37 287/500/3 +f 300/502/33 301/511/38 293/503/6 +f 298/505/34 299/512/36 291/506/4 +f 296/508/42 297/1649/35 289/509/1 +f 301/511/38 302/499/32 294/501/12 +f 299/512/36 300/502/33 292/504/14 +f 297/513/35 298/505/34 290/507/8 +f 287/500/3 295/1648/37 296/508/42 +f 301/511/38 308/526/48 309/515/39 +f 306/516/40 307/521/43 300/502/33 +f 303/518/46 304/530/41 296/519/42 +f 309/515/39 303/518/46 295/520/37 +f 307/521/43 308/526/48 301/511/38 +f 305/522/44 306/516/40 299/517/36 +f 309/515/39 316/528/50 310/524/45 +f 314/525/47 315/542/53 308/526/48 +f 312/527/49 313/529/51 306/516/40 +f 308/526/48 315/542/53 316/528/50 +f 313/529/51 314/525/47 307/521/43 +f 310/524/45 311/532/52 304/530/41 +f 281/534/30 312/546/49 297/535/35 +f 297/537/35 311/1650/52 282/538/26 +f 282/538/26 311/1650/52 310/540/45 +f 283/541/29 310/540/45 316/528/50 +f 284/489/24 316/528/50 315/542/53 +f 285/543/54 315/542/53 314/525/47 +f 286/493/28 314/525/47 313/544/51 +f 280/545/23 313/544/51 312/546/49 +f 332/547/7 325/563/18 317/548/4 +f 330/550/9 331/559/15 323/551/1 +f 328/553/11 329/560/16 321/554/3 +f 326/556/13 327/1651/17 319/557/6 +f 331/559/15 332/547/7 324/549/8 +f 329/560/16 330/550/9 322/552/10 +f 327/561/17 328/553/11 320/555/12 +f 325/563/18 326/556/13 318/558/14 +f 331/559/15 338/574/25 339/564/19 +f 329/565/16 336/571/22 337/566/20 +f 333/567/21 334/580/31 326/568/13 +f 339/564/19 333/567/21 325/569/18 +f 337/566/20 338/574/25 331/559/15 +f 328/570/11 335/576/27 336/571/22 +f 339/564/19 346/577/28 340/572/23 +f 344/573/24 345/628/54 338/574/25 +f 342/575/26 343/578/29 336/571/22 +f 338/574/25 345/628/54 346/577/28 +f 343/578/29 344/573/24 337/566/20 +f 333/567/21 340/572/23 341/579/30 +f 362/583/32 355/599/37 347/584/3 +f 360/586/33 361/595/38 353/587/6 +f 358/589/34 359/596/36 351/590/4 +f 348/592/10 356/1652/42 357/593/35 +f 361/595/38 362/583/32 354/585/12 +f 359/596/36 360/586/33 352/588/14 +f 357/597/35 358/589/34 350/591/8 +f 355/599/37 356/1652/42 348/592/10 +f 361/595/38 368/611/48 369/600/39 +f 359/601/36 366/613/40 367/602/43 +f 355/603/37 363/609/46 364/604/41 +f 369/600/39 363/609/46 355/603/37 +f 367/602/43 368/611/48 361/595/38 +f 365/606/44 366/613/40 359/601/36 +f 369/600/39 376/614/50 370/608/45 +f 374/610/47 375/627/53 368/611/48 +f 372/612/49 373/615/51 366/613/40 +f 368/611/48 375/627/53 376/614/50 +f 373/615/51 374/610/47 367/602/43 +f 370/608/45 371/617/52 364/604/41 +f 341/619/30 372/631/49 357/620/35 +f 357/622/35 371/1653/52 342/623/26 +f 342/623/26 371/1653/52 370/625/45 +f 343/626/29 370/625/45 376/614/50 +f 344/573/24 376/614/50 375/627/53 +f 345/628/54 375/627/53 374/610/47 +f 346/577/28 374/610/47 373/629/51 +f 340/630/23 373/629/51 372/631/49 +f 392/632/55 385/648/61 377/633/3 +f 390/635/56 391/644/59 383/636/1 +f 388/638/57 389/645/60 381/639/4 +f 386/641/58 387/1654/48 379/642/6 +f 391/644/59 392/632/55 384/634/10 +f 389/645/60 390/635/56 382/637/8 +f 387/646/48 388/638/57 380/640/14 +f 385/648/61 386/641/58 378/643/12 +f 391/644/59 398/659/35 399/649/62 +f 389/650/60 396/656/65 397/651/63 +f 393/652/64 394/664/72 386/653/58 +f 399/649/62 393/652/64 385/654/61 +f 397/651/63 398/659/35 391/644/59 +f 388/655/57 395/661/69 396/656/65 +f 399/649/62 406/662/70 400/657/66 +f 404/658/67 405/713/94 398/659/35 +f 402/660/68 403/663/71 396/656/65 +f 398/659/35 405/713/94 406/662/70 +f 403/663/71 404/658/67 397/651/63 +f 400/657/66 401/666/73 394/664/72 +f 422/668/74 415/684/80 407/669/4 +f 420/671/75 421/680/78 413/672/6 +f 418/674/76 419/681/79 411/675/3 +f 416/677/77 417/1655/25 409/678/1 +f 421/680/78 422/668/74 414/670/14 +f 419/681/79 420/671/75 412/673/12 +f 417/682/25 418/674/76 410/676/10 +f 415/684/80 416/677/77 408/679/8 +f 421/680/78 428/696/17 429/685/81 +f 419/686/79 426/698/89 427/687/82 +f 415/688/80 423/694/86 424/689/83 +f 429/685/81 423/694/86 415/688/80 +f 427/687/82 428/696/17 421/680/78 +f 425/691/84 426/698/89 419/686/79 +f 429/685/81 436/699/90 430/693/85 +f 434/695/87 435/712/93 428/696/17 +f 432/697/88 433/700/91 426/698/89 +f 428/696/17 435/712/93 436/699/90 +f 433/700/91 434/695/87 427/687/82 +f 430/693/85 431/702/92 424/689/83 +f 401/704/73 432/716/88 417/705/25 +f 417/707/25 431/1656/92 402/708/68 +f 402/708/68 431/1656/92 430/710/85 +f 403/711/71 430/710/85 436/699/90 +f 404/658/67 436/699/90 435/712/93 +f 405/713/94 435/712/93 434/695/87 +f 406/662/70 434/695/87 433/714/91 +f 400/715/66 433/714/91 432/716/88 +f 452/717/55 445/733/61 437/718/3 +f 450/720/56 451/729/59 443/721/1 +f 448/723/57 449/730/60 441/724/4 +f 446/726/58 447/1657/48 439/727/6 +f 451/729/59 452/717/55 444/719/10 +f 449/730/60 450/720/56 442/722/8 +f 447/731/48 448/723/57 440/725/14 +f 445/733/61 446/726/58 438/728/12 +f 451/729/59 458/744/35 459/734/62 +f 456/735/65 457/740/63 450/720/56 +f 453/737/64 454/748/72 446/738/58 +f 459/734/62 453/737/64 445/739/61 +f 457/740/63 458/744/35 451/729/59 +f 448/741/57 455/745/69 456/735/65 +f 459/734/62 466/747/70 460/742/66 +f 464/743/67 465/798/94 458/744/35 +f 455/745/69 462/752/68 463/746/71 +f 458/744/35 465/798/94 466/747/70 +f 463/746/71 464/743/67 457/740/63 +f 460/742/66 461/750/73 454/748/72 +f 482/753/74 475/1658/80 467/754/4 +f 480/756/75 481/765/78 473/757/6 +f 478/759/76 479/766/79 471/760/3 +f 468/762/8 476/769/77 477/763/25 +f 481/765/78 482/753/74 474/755/14 +f 479/766/79 480/756/75 472/758/12 +f 477/767/25 478/759/76 470/761/10 +f 467/754/4 475/1658/80 476/769/77 +f 481/765/78 488/781/17 489/770/81 +f 479/771/79 486/783/89 487/772/82 +f 475/773/80 483/776/86 484/774/83 +f 482/753/74 489/770/81 483/776/86 +f 487/772/82 488/781/17 481/765/78 +f 485/777/84 486/783/89 479/771/79 +f 489/770/81 496/784/90 490/779/85 +f 494/780/87 495/797/93 488/781/17 +f 492/782/88 493/785/91 486/783/89 +f 488/781/17 495/797/93 496/784/90 +f 493/785/91 494/780/87 487/772/82 +f 490/779/85 491/787/92 484/774/83 +f 461/789/73 492/801/88 477/790/25 +f 477/792/25 491/1659/92 462/793/68 +f 462/793/68 491/1659/92 490/795/85 +f 463/796/71 490/795/85 496/784/90 +f 464/743/67 496/784/90 495/797/93 +f 465/798/94 495/797/93 494/780/87 +f 466/747/70 494/780/87 493/799/91 +f 460/800/66 493/799/91 492/801/88 +f 512/802/55 505/818/61 497/803/3 +f 510/805/56 511/814/59 503/806/1 +f 508/808/57 509/815/60 501/809/4 +f 506/811/58 507/1660/48 499/812/6 +f 511/814/59 512/802/55 504/804/10 +f 509/815/60 510/805/56 502/807/8 +f 507/816/48 508/808/57 500/810/14 +f 505/818/61 506/811/58 498/813/12 +f 511/814/59 518/829/35 519/819/62 +f 509/820/60 516/826/65 517/821/63 +f 513/822/64 514/834/72 506/823/58 +f 519/819/62 513/822/64 505/824/61 +f 517/821/63 518/829/35 511/814/59 +f 508/825/57 515/831/69 516/826/65 +f 526/827/70 520/1661/66 513/822/64 +f 524/828/67 525/881/94 518/829/35 +f 522/830/68 523/832/71 516/826/65 +f 518/829/35 525/881/94 526/827/70 +f 523/832/71 524/828/67 517/821/63 +f 513/822/64 520/1661/66 521/833/73 +f 542/837/74 535/853/80 527/838/4 +f 540/840/75 541/849/78 533/841/6 +f 538/843/76 539/850/79 531/844/3 +f 536/846/77 537/1662/25 529/847/1 +f 541/849/78 542/837/74 534/839/14 +f 539/850/79 540/840/75 532/842/12 +f 537/851/25 538/843/76 530/845/10 +f 535/853/80 536/846/77 528/848/8 +f 541/849/78 548/864/17 549/854/81 +f 539/855/79 546/866/89 547/856/82 +f 543/857/86 544/868/83 536/858/77 +f 549/854/81 543/857/86 535/859/80 +f 547/856/82 548/864/17 541/849/78 +f 545/860/84 546/866/89 539/855/79 +f 549/854/81 556/867/90 550/862/85 +f 554/863/87 555/880/93 548/864/17 +f 552/865/88 553/1663/91 546/866/89 +f 548/864/17 555/880/93 556/867/90 +f 546/866/89 553/1663/91 554/863/87 +f 550/862/85 551/870/92 544/868/83 +f 521/872/73 552/884/88 537/873/25 +f 537/875/25 551/1664/92 522/876/68 +f 522/876/68 551/1664/92 550/878/85 +f 523/879/71 550/878/85 556/867/90 +f 524/828/67 556/867/90 555/880/93 +f 525/881/94 555/880/93 554/863/87 +f 526/827/70 554/863/87 553/882/91 +f 520/883/66 553/882/91 552/884/88 +f 572/885/55 565/901/61 557/886/3 +f 570/888/56 571/897/59 563/889/1 +f 568/891/57 569/898/60 561/892/4 +f 566/894/58 567/1665/48 559/895/6 +f 571/897/59 572/885/55 564/887/10 +f 569/898/60 570/888/56 562/890/8 +f 567/899/48 568/891/57 560/893/14 +f 565/901/61 566/894/58 558/896/12 +f 571/897/59 578/912/35 579/902/62 +f 569/903/60 576/909/65 577/904/63 +f 573/905/64 574/916/72 566/906/58 +f 579/902/62 573/905/64 565/907/61 +f 577/904/63 578/912/35 571/897/59 +f 568/908/57 575/914/69 576/909/65 +f 586/910/70 580/915/66 573/905/64 +f 584/911/67 585/964/94 578/912/35 +f 582/913/68 583/1666/71 576/909/65 +f 578/912/35 585/964/94 586/910/70 +f 576/909/65 583/1666/71 584/911/67 +f 580/915/66 581/918/73 574/916/72 +f 602/920/74 595/936/80 587/921/4 +f 600/923/75 601/932/78 593/924/6 +f 598/926/76 599/933/79 591/927/3 +f 588/929/8 596/1667/77 597/930/25 +f 601/932/78 602/920/74 594/922/14 +f 599/933/79 600/923/75 592/925/12 +f 597/934/25 598/926/76 590/928/10 +f 595/936/80 596/1667/77 588/929/8 +f 608/937/17 609/943/81 602/920/74 +f 606/938/89 607/944/82 600/923/75 +f 595/940/80 603/948/86 604/941/83 +f 609/943/81 603/948/86 595/940/80 +f 607/944/82 608/937/17 601/932/78 +f 605/945/84 606/938/89 599/939/79 +f 616/947/90 610/952/85 603/948/86 +f 607/944/82 614/951/87 615/949/93 +f 612/950/88 613/1668/91 606/938/89 +f 615/949/93 616/947/90 609/943/81 +f 606/938/89 613/1668/91 614/951/87 +f 610/952/85 611/954/92 604/941/83 +f 581/956/73 612/967/88 597/957/25 +f 597/959/25 611/1669/92 582/960/68 +f 582/960/68 611/1669/92 610/962/85 +f 583/963/71 610/962/85 616/947/90 +f 584/911/67 616/947/90 615/949/93 +f 585/964/94 615/949/93 614/951/87 +f 586/910/70 614/951/87 613/965/91 +f 580/966/66 613/965/91 612/967/88 +f 632/968/95 625/984/101 617/969/2 +f 630/971/96 631/980/99 623/972/1 +f 628/974/97 629/981/100 621/975/5 +f 626/977/98 627/1670/14 619/978/6 +f 631/980/99 632/968/95 624/970/25 +f 629/981/100 630/971/96 622/973/35 +f 627/982/14 628/974/97 620/976/17 +f 625/984/101 626/977/98 618/979/48 +f 631/980/99 638/991/10 639/985/102 +f 629/986/100 636/993/105 637/987/103 +f 633/988/104 634/1000/112 626/989/98 +f 639/985/102 633/988/104 625/990/101 +f 630/971/96 637/987/103 638/991/10 +f 628/992/97 635/996/108 636/993/105 +f 639/985/102 646/998/110 640/994/106 +f 644/995/107 645/1049/134 638/991/10 +f 635/996/108 642/1003/113 643/997/109 +f 638/991/10 645/1049/134 646/998/110 +f 643/997/109 644/995/107 637/987/103 +f 633/988/104 640/994/106 641/999/111 +f 662/1004/114 655/1671/123 647/1005/5 +f 660/1007/115 661/1020/119 653/1008/6 +f 658/1010/116 659/1016/117 651/1011/2 +f 648/1013/35 656/1019/118 657/1014/8 +f 653/1008/6 661/1020/119 662/1004/114 +f 659/1016/117 660/1007/115 652/1009/48 +f 657/1017/8 658/1010/116 650/1012/25 +f 647/1005/5 655/1671/123 656/1019/118 +f 661/1020/119 668/1032/12 669/1021/120 +f 666/1022/121 667/1027/124 660/1007/115 +f 663/1024/122 664/1036/131 656/1025/118 +f 669/1021/120 663/1024/122 655/1026/123 +f 667/1027/124 668/1032/12 661/1020/119 +f 665/1028/125 666/1022/121 659/1023/117 +f 669/1021/120 676/1034/129 670/1030/126 +f 674/1031/127 675/1048/133 668/1032/12 +f 672/1033/128 673/1035/130 666/1022/121 +f 668/1032/12 675/1048/133 676/1034/129 +f 673/1035/130 674/1031/127 667/1027/124 +f 670/1030/126 671/1038/132 664/1036/131 +f 641/1040/111 672/1052/128 657/1041/8 +f 657/1043/8 671/1672/132 642/1044/113 +f 642/1044/113 671/1672/132 670/1046/126 +f 643/1047/109 670/1046/126 676/1034/129 +f 644/995/107 676/1034/129 675/1048/133 +f 645/1049/134 675/1048/133 674/1031/127 +f 646/998/110 674/1031/127 673/1050/130 +f 640/1051/106 673/1050/130 672/1052/128 +f 692/1053/95 685/1069/101 677/1054/2 +f 690/1056/96 691/1065/99 683/1057/1 +f 688/1059/97 689/1066/100 681/1060/5 +f 686/1062/98 687/1673/14 679/1063/6 +f 691/1065/99 692/1053/95 684/1055/25 +f 689/1066/100 690/1056/96 682/1058/35 +f 687/1067/14 688/1059/97 680/1061/17 +f 685/1069/101 686/1062/98 678/1064/48 +f 691/1065/99 698/1080/10 699/1070/102 +f 689/1071/100 696/1077/105 697/1072/103 +f 693/1073/104 694/1086/112 686/1074/98 +f 699/1070/102 693/1073/104 685/1075/101 +f 697/1072/103 698/1080/10 691/1065/99 +f 688/1076/97 695/1082/108 696/1077/105 +f 699/1070/102 706/1083/110 700/1078/106 +f 704/1079/107 705/1134/134 698/1080/10 +f 702/1081/113 703/1084/109 696/1077/105 +f 698/1080/10 705/1134/134 706/1083/110 +f 703/1084/109 704/1079/107 697/1072/103 +f 693/1073/104 700/1078/106 701/1085/111 +f 722/1089/114 715/1105/123 707/1090/5 +f 720/1092/115 721/1101/119 713/1093/6 +f 718/1095/116 719/1102/117 711/1096/2 +f 708/1098/35 716/1674/118 717/1099/8 +f 721/1101/119 722/1089/114 714/1091/17 +f 719/1102/117 720/1092/115 712/1094/48 +f 717/1103/8 718/1095/116 710/1097/25 +f 715/1105/123 716/1674/118 708/1098/35 +f 721/1101/119 728/1116/12 729/1106/120 +f 719/1107/117 726/1118/121 727/1108/124 +f 723/1109/122 724/1121/131 716/1110/118 +f 729/1106/120 723/1109/122 715/1111/123 +f 727/1108/124 728/1116/12 721/1101/119 +f 725/1112/125 726/1118/121 719/1107/117 +f 729/1106/120 736/1119/129 730/1114/126 +f 734/1115/127 735/1133/133 728/1116/12 +f 732/1117/128 733/1120/130 726/1118/121 +f 728/1116/12 735/1133/133 736/1119/129 +f 733/1120/130 734/1115/127 727/1108/124 +f 730/1114/126 731/1123/132 724/1121/131 +f 701/1125/111 732/1137/128 717/1126/8 +f 717/1128/8 731/1675/132 702/1129/113 +f 702/1129/113 731/1675/132 730/1131/126 +f 703/1132/109 730/1131/126 736/1119/129 +f 704/1079/107 736/1119/129 735/1133/133 +f 705/1134/134 735/1133/133 734/1115/127 +f 706/1083/110 734/1115/127 733/1135/130 +f 700/1136/106 733/1135/130 732/1137/128 +f 752/1138/95 745/1154/101 737/1139/2 +f 750/1141/96 751/1150/99 743/1142/1 +f 748/1144/97 749/1151/100 741/1145/5 +f 746/1147/98 747/1676/14 739/1148/6 +f 751/1150/99 752/1138/95 744/1140/25 +f 749/1151/100 750/1141/96 742/1143/35 +f 747/1152/14 748/1144/97 740/1146/17 +f 745/1154/101 746/1147/98 738/1149/48 +f 751/1150/99 758/1165/10 759/1155/102 +f 749/1156/100 756/1162/105 757/1157/103 +f 753/1158/104 754/1171/112 746/1159/98 +f 759/1155/102 753/1158/104 745/1160/101 +f 757/1157/103 758/1165/10 751/1150/99 +f 748/1161/97 755/1167/108 756/1162/105 +f 759/1155/102 766/1168/110 760/1163/106 +f 764/1164/107 765/1219/134 758/1165/10 +f 762/1166/113 763/1169/109 756/1162/105 +f 758/1165/10 765/1219/134 766/1168/110 +f 763/1169/109 764/1164/107 757/1157/103 +f 753/1158/104 760/1163/106 761/1170/111 +f 782/1174/114 775/1190/123 767/1175/5 +f 780/1177/115 781/1186/119 773/1178/6 +f 778/1180/116 779/1187/117 771/1181/2 +f 776/1183/118 777/1677/8 769/1184/1 +f 781/1186/119 782/1174/114 774/1176/17 +f 779/1187/117 780/1177/115 772/1179/48 +f 777/1188/8 778/1180/116 770/1182/25 +f 775/1190/123 776/1183/118 768/1185/35 +f 781/1186/119 788/1202/12 789/1191/120 +f 779/1192/117 786/1204/121 787/1193/124 +f 775/1194/123 783/1200/122 784/1195/131 +f 789/1191/120 783/1200/122 775/1194/123 +f 787/1193/124 788/1202/12 781/1186/119 +f 785/1197/125 786/1204/121 779/1192/117 +f 789/1191/120 796/1205/129 790/1199/126 +f 794/1201/127 795/1218/133 788/1202/12 +f 792/1203/128 793/1206/130 786/1204/121 +f 788/1202/12 795/1218/133 796/1205/129 +f 793/1206/130 794/1201/127 787/1193/124 +f 783/1200/122 790/1199/126 791/1207/132 +f 761/1210/111 792/1222/128 777/1211/8 +f 777/1213/8 791/1678/132 762/1214/113 +f 762/1214/113 791/1678/132 790/1216/126 +f 763/1217/109 790/1216/126 796/1205/129 +f 764/1164/107 796/1205/129 795/1218/133 +f 766/1168/110 765/1219/134 795/1218/133 +f 766/1168/110 794/1201/127 793/1220/130 +f 760/1221/106 793/1220/130 792/1222/128 +f 812/1223/95 805/1239/101 797/1224/2 +f 810/1226/96 811/1235/99 803/1227/1 +f 808/1229/97 809/1236/100 801/1230/5 +f 806/1232/98 807/1679/14 799/1233/6 +f 811/1235/99 812/1223/95 804/1225/25 +f 809/1236/100 810/1226/96 802/1228/35 +f 807/1237/14 808/1229/97 800/1231/17 +f 805/1239/101 806/1232/98 798/1234/48 +f 811/1235/99 818/1250/10 819/1240/102 +f 809/1241/100 816/1247/105 817/1242/103 +f 813/1243/104 814/1256/112 806/1244/98 +f 819/1240/102 813/1243/104 805/1245/101 +f 817/1242/103 818/1250/10 811/1235/99 +f 808/1246/97 815/1252/108 816/1247/105 +f 819/1240/102 826/1253/110 820/1248/106 +f 824/1249/107 825/1304/134 818/1250/10 +f 822/1251/113 823/1254/109 816/1247/105 +f 818/1250/10 825/1304/134 826/1253/110 +f 823/1254/109 824/1249/107 817/1242/103 +f 813/1243/104 820/1248/106 821/1255/111 +f 842/1259/114 835/1275/123 827/1260/5 +f 840/1262/115 841/1271/119 833/1263/6 +f 838/1265/116 839/1272/117 831/1266/2 +f 828/1268/35 836/1680/118 837/1269/8 +f 841/1271/119 842/1259/114 834/1261/17 +f 839/1272/117 840/1262/115 832/1264/48 +f 837/1273/8 838/1265/116 830/1267/25 +f 835/1275/123 836/1680/118 828/1268/35 +f 841/1271/119 848/1287/12 849/1276/120 +f 839/1277/117 846/1289/121 847/1278/124 +f 835/1279/123 843/1285/122 844/1280/131 +f 849/1276/120 843/1285/122 835/1279/123 +f 847/1278/124 848/1287/12 841/1271/119 +f 845/1282/125 846/1289/121 839/1277/117 +f 849/1276/120 856/1290/129 850/1284/126 +f 854/1286/127 855/1303/133 848/1287/12 +f 845/1282/125 852/1294/128 853/1288/130 +f 848/1287/12 855/1303/133 856/1290/129 +f 853/1288/130 854/1286/127 847/1278/124 +f 850/1284/126 851/1292/132 844/1280/131 +f 821/1295/111 852/1307/128 837/1296/8 +f 837/1298/8 851/1681/132 822/1299/113 +f 822/1299/113 851/1681/132 850/1301/126 +f 823/1302/109 850/1301/126 856/1290/129 +f 824/1249/107 856/1290/129 855/1303/133 +f 826/1253/110 825/1304/134 855/1303/133 +f 826/1253/110 854/1286/127 853/1305/130 +f 820/1306/106 853/1305/130 852/1307/128 +f 872/1308/135 865/1324/141 857/1309/5 +f 870/1311/136 871/1320/139 863/1312/1 +f 868/1314/137 869/1321/140 861/1315/2 +f 866/1317/138 867/1682/12 859/1318/6 +f 871/1320/139 872/1308/135 864/1310/35 +f 869/1321/140 870/1311/136 862/1313/25 +f 867/1322/12 868/1314/137 860/1316/48 +f 865/1324/141 866/1317/138 858/1319/17 +f 871/1320/139 878/1335/8 879/1325/142 +f 869/1326/140 876/1337/149 877/1327/143 +f 873/1328/144 874/1341/153 866/1329/138 +f 879/1325/142 873/1328/144 865/1330/141 +f 877/1327/143 878/1335/8 871/1320/139 +f 875/1331/145 876/1337/149 869/1326/140 +f 879/1325/142 886/1338/150 880/1333/146 +f 884/1334/147 885/1388/174 878/1335/8 +f 882/1336/148 883/1339/151 876/1337/149 +f 878/1335/8 885/1388/174 886/1338/150 +f 883/1339/151 884/1334/147 877/1327/143 +f 873/1328/144 880/1333/146 881/1340/152 +f 902/1344/154 895/1683/162 887/1345/2 +f 900/1347/155 901/1356/158 893/1348/6 +f 898/1350/156 899/1357/159 891/1351/5 +f 896/1353/157 897/1684/10 889/1354/1 +f 901/1356/158 902/1344/154 894/1346/48 +f 899/1357/159 900/1347/155 892/1349/17 +f 897/1358/10 898/1350/156 890/1352/35 +f 887/1345/2 895/1683/162 896/1353/157 +f 901/1356/158 908/1371/14 909/1360/160 +f 899/1361/159 906/1367/164 907/1362/161 +f 895/1363/162 903/1369/166 904/1364/163 +f 909/1360/160 903/1369/166 895/1363/162 +f 907/1362/161 908/1371/14 901/1356/158 +f 898/1366/156 905/1373/169 906/1367/164 +f 909/1360/160 916/1374/170 910/1368/165 +f 914/1370/167 915/1387/173 908/1371/14 +f 912/1372/168 913/1375/171 906/1367/164 +f 908/1371/14 915/1387/173 916/1374/170 +f 913/1375/171 914/1370/167 907/1362/161 +f 910/1368/165 911/1377/172 904/1364/163 +f 881/1379/152 912/1391/168 897/1380/10 +f 897/1382/10 911/1685/172 882/1383/148 +f 882/1383/148 911/1685/172 910/1385/165 +f 883/1386/151 910/1385/165 916/1374/170 +f 884/1334/147 916/1374/170 915/1387/173 +f 885/1388/174 915/1387/173 914/1370/167 +f 880/1389/146 886/1338/150 914/1370/167 +f 880/1389/146 913/1390/171 912/1391/168 +f 932/1392/135 925/1408/141 917/1393/5 +f 930/1395/136 931/1404/139 923/1396/1 +f 928/1398/137 929/1405/140 921/1399/2 +f 926/1401/138 927/1686/12 919/1402/6 +f 931/1404/139 932/1392/135 924/1394/35 +f 929/1405/140 930/1395/136 922/1397/25 +f 927/1406/12 928/1398/137 920/1400/48 +f 925/1408/141 926/1401/138 918/1403/17 +f 931/1404/139 938/1419/8 939/1409/142 +f 929/1410/140 936/1416/149 937/1411/143 +f 933/1412/144 934/1425/153 926/1413/138 +f 939/1409/142 933/1412/144 925/1414/141 +f 937/1411/143 938/1419/8 931/1404/139 +f 928/1415/137 935/1421/145 936/1416/149 +f 939/1409/142 946/1422/150 940/1417/146 +f 944/1418/147 945/1473/174 938/1419/8 +f 942/1420/148 943/1423/151 936/1416/149 +f 938/1419/8 945/1473/174 946/1422/150 +f 943/1423/151 944/1418/147 937/1411/143 +f 933/1412/144 940/1417/146 941/1424/152 +f 962/1428/154 955/1444/162 947/1429/2 +f 960/1431/155 961/1440/158 953/1432/6 +f 958/1434/156 959/1441/159 951/1435/5 +f 948/1437/25 956/1687/157 957/1438/10 +f 961/1440/158 962/1428/154 954/1430/48 +f 959/1441/159 960/1431/155 952/1433/17 +f 957/1442/10 958/1434/156 950/1436/35 +f 955/1444/162 956/1687/157 948/1437/25 +f 961/1440/158 968/1457/14 969/1445/160 +f 966/1446/164 967/1452/161 960/1431/155 +f 955/1448/162 963/1451/166 964/1449/163 +f 962/1428/154 969/1445/160 963/1451/166 +f 967/1452/161 968/1457/14 961/1440/158 +f 965/1453/169 966/1446/164 959/1447/159 +f 969/1445/160 976/1459/170 970/1455/165 +f 974/1456/167 975/1472/173 968/1457/14 +f 972/1458/168 973/1460/171 966/1446/164 +f 968/1457/14 975/1472/173 976/1459/170 +f 973/1460/171 974/1456/167 967/1452/161 +f 970/1455/165 971/1462/172 964/1449/163 +f 941/1464/152 972/1476/168 957/1465/10 +f 957/1467/10 971/1688/172 942/1468/148 +f 942/1468/148 971/1688/172 970/1470/165 +f 943/1471/151 970/1470/165 976/1459/170 +f 944/1418/147 976/1459/170 975/1472/173 +f 945/1473/174 975/1472/173 974/1456/167 +f 946/1422/150 974/1456/167 973/1474/171 +f 940/1475/146 973/1474/171 972/1476/168 +f 984/1477/35 992/1494/135 985/1478/141 +f 990/1480/136 991/1489/139 983/1481/1 +f 988/1483/137 989/1490/140 981/1484/2 +f 986/1486/138 987/1689/12 979/1487/6 +f 991/1489/139 992/1494/135 984/1477/35 +f 989/1490/140 990/1480/136 982/1482/25 +f 987/1491/12 988/1483/137 980/1485/48 +f 985/1478/141 986/1486/138 978/1488/17 +f 991/1489/139 998/1504/8 999/1493/142 +f 989/1495/140 996/1501/149 997/1496/143 +f 993/1497/144 994/1509/153 986/1498/138 +f 999/1493/142 993/1497/144 985/1499/141 +f 997/1496/143 998/1504/8 991/1489/139 +f 988/1500/137 995/1506/145 996/1501/149 +f 1006/1502/150 1000/1690/146 993/1497/144 +f 1004/1503/147 1005/1554/174 998/1504/8 +f 1002/1505/148 1003/1507/151 996/1501/149 +f 998/1504/8 1005/1554/174 1006/1502/150 +f 1003/1507/151 1004/1503/147 997/1496/143 +f 993/1497/144 1000/1690/146 1001/1508/152 +f 1022/1512/154 1015/1526/162 1007/1513/2 +f 1020/1515/155 1021/1527/158 1013/1516/6 +f 1018/1518/156 1019/1524/159 1011/1519/5 +f 1016/1521/157 1017/1691/10 1009/1522/1 +f 1013/1516/6 1021/1527/158 1022/1512/154 +f 1019/1524/159 1020/1515/155 1012/1517/17 +f 1009/1525/1 1017/1692/10 1018/1518/156 +f 1015/1526/162 1016/1521/157 1008/1523/25 +f 1021/1527/158 1028/1539/14 1029/1528/160 +f 1019/1529/159 1026/1541/164 1027/1530/161 +f 1015/1531/162 1023/1537/166 1024/1532/163 +f 1029/1528/160 1023/1537/166 1015/1531/162 +f 1027/1530/161 1028/1539/14 1021/1527/158 +f 1025/1534/169 1026/1541/164 1019/1529/159 +f 1036/1536/170 1030/1693/165 1023/1537/166 +f 1027/1530/161 1034/1555/167 1035/1538/173 +f 1025/1534/169 1032/1545/168 1033/1540/171 +f 1028/1539/14 1035/1538/173 1036/1536/170 +f 1033/1540/171 1034/1555/167 1027/1530/161 +f 1023/1537/166 1030/1693/165 1031/1542/172 +f 1001/1546/152 1032/1558/168 1017/1547/10 +f 1017/1549/10 1031/1694/172 1002/1550/148 +f 1002/1550/148 1031/1694/172 1030/1552/165 +f 1003/1553/151 1030/1552/165 1036/1536/170 +f 1004/1503/147 1036/1536/170 1035/1538/173 +f 1006/1502/150 1005/1554/174 1035/1538/173 +f 1006/1502/150 1034/1555/167 1033/1556/171 +f 1000/1557/146 1033/1556/171 1032/1558/168 +f 1052/1559/135 1045/1574/141 1037/1560/5 +f 1042/1562/25 1050/1578/136 1051/1563/139 +f 1048/1565/137 1049/1571/140 1041/1566/2 +f 1038/1568/17 1046/1695/138 1047/1569/12 +f 1051/1563/139 1052/1559/135 1044/1561/35 +f 1049/1571/140 1050/1578/136 1042/1562/25 +f 1047/1572/12 1048/1565/137 1040/1567/48 +f 1045/1574/141 1046/1695/138 1038/1568/17 +f 1051/1563/139 1058/1582/8 1059/1575/142 +f 1049/1576/140 1056/1584/149 1057/1577/143 +f 1053/1579/144 1054/1591/153 1046/1580/138 +f 1052/1559/135 1059/1575/142 1053/1579/144 +f 1050/1578/136 1057/1577/143 1058/1582/8 +f 1048/1583/137 1055/1588/145 1056/1584/149 +f 1059/1575/142 1066/1589/150 1060/1585/146 +f 1064/1586/147 1065/1637/174 1058/1582/8 +f 1062/1587/148 1063/1590/151 1056/1584/149 +f 1058/1582/8 1065/1637/174 1066/1589/150 +f 1063/1590/151 1064/1586/147 1057/1577/143 +f 1060/1585/146 1061/1593/152 1054/1591/153 +f 1082/1595/154 1075/1696/162 1067/1596/2 +f 1080/1598/155 1081/1607/158 1073/1599/6 +f 1078/1601/156 1079/1608/159 1071/1602/5 +f 1076/1604/157 1077/1697/10 1069/1605/1 +f 1081/1607/158 1082/1595/154 1074/1597/48 +f 1079/1608/159 1080/1598/155 1072/1600/17 +f 1069/1609/1 1077/1698/10 1078/1601/156 +f 1067/1596/2 1075/1696/162 1076/1604/157 +f 1081/1607/158 1088/1622/14 1089/1610/160 +f 1086/1611/164 1087/1616/161 1080/1598/155 +f 1075/1613/162 1083/1620/166 1084/1614/163 +f 1089/1610/160 1083/1620/166 1075/1613/162 +f 1087/1616/161 1088/1622/14 1081/1607/158 +f 1085/1617/169 1086/1611/164 1079/1612/159 +f 1089/1610/160 1096/1624/170 1090/1619/165 +f 1094/1621/167 1095/1636/173 1088/1622/14 +f 1092/1623/168 1093/1699/171 1086/1611/164 +f 1088/1622/14 1095/1636/173 1096/1624/170 +f 1086/1611/164 1093/1699/171 1094/1621/167 +f 1090/1619/165 1091/1626/172 1084/1614/163 +f 1061/1628/152 1092/1640/168 1077/1629/10 +f 1077/1631/10 1091/1700/172 1062/1632/148 +f 1062/1632/148 1091/1700/172 1090/1634/165 +f 1063/1635/151 1090/1634/165 1096/1624/170 +f 1064/1586/147 1096/1624/170 1095/1636/173 +f 1065/1637/174 1095/1636/173 1094/1621/167 +f 1066/1589/150 1094/1621/167 1093/1638/171 +f 1060/1639/146 1093/1638/171 1092/1640/168 diff --git a/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png b/src/main/resources/assets/hbm/textures/gui/guide_pedestal.png index 62073a98656e56073e6d6daaf396a462a1b9b98f..0c0e2a6b6281dfa299c5fcb002dd7ef6fd4dd9e3 100644 GIT binary patch delta 2332 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 V8`&_mzkZNl_RGyHRhM0&{|10PTKE6} diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_oilburner_hp.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_oilburner_hp.png new file mode 100644 index 0000000000000000000000000000000000000000..e37ef58cc0dba07690d8d98d83386d02bcd81e2b GIT binary patch literal 3159 zcmb_ecU03^7XGC$0hOkdkq!!?D5$82fCLiSC~c8Iq)K&YA|*h85Ge)$0kK4+Dk@d# zAW}maYE(dwmOw_O8Umpc2w~&S9M7IPyR*CJ?EUB6_uf6~78gl00v&AlZ}Bs!Oj z&?G+f+EF2t}X6O6x^USdI3sj-}h9P(m(Plq~sYh}A zQUsmEv22dzaK}LW+SbnIR#|WM6n36ITqa4bk)S+gYhjl@8($fKC<;^D( zMC=mJCWJb?WDYz-sWjmSz*&M)W zbIvtArgY~_=>c*-&gC`6cX2p0;`$!s{3`I_X<9=TC%x+pb484_gxTFFq=fCI$pJ#i z?-9ba*>z;8oyC;q;i^WcFe|`jK24FO^>&S{{Nxzc6}@Ei3e{lxsAii~CJKfE(Ly0B zYA{+$lj5>;;pq%tEv<}|1RuH64CKYU&s(m`0;HG{v3RRIG&Qm;M z+r(!P`NeO?_+rDBT?FmCNU6aEr^E&++Qz4k8_NYNoo}^31~i_ofgKI`)YV@;rj>lD zA5}%O=k(1d-b-?cTl>P46%+^|k~drKB0hPum~Bp9-f<;2OrD}yJ(a7R2xrkZkAHEQ zxJ(sG=Z79bZ|11iDBqR`z&B4QD9q?Oy`@HlhD2p*aZYVNpgmgzmwYwNSGVrUxTM-K z)9vbe2oQ=D)V*BC>E>%PDT5#G=g*-M=SAZmgvh|FMw1ZE4-eIiE|})uXPN0+?gI(M z-W+yxqaGN^-Wp}GqTHfrBE8k|mjy+U)4h}R&iZiVWPV~$iu;q%_XbOeLICftZ@i*3uy?oDm`~oa>=0K=PBH0P~2#U1iN?pGDTBVIh z*)P637`gIVvcqVoQVCT2(jUmo$`ZxxXJ9B-#XE;q4(|H_wf?1uK5h4rLo=wX?=GIO znI_yS`t>Kl-$+rMTILL;aFo1qrDmEK11Ziy`qWV3WJuN3iZLy@0gNIE$+AFeM_F(# zK1hCY97pcBZ+lO(vTV82E+6xA^}>i2!`W^o!PapGcq_a@e6@T@(OhV9s>;DuPzMlv zD?DJ7{zf^X&9lB-#_3WtYg!TT=;%?DJ_?J`v)}Bdzuxo`PsoE=D9E}_1+`?P<1*x% zrQnfE=W=0BlOG~{ZMtSbp+aA6H3uSel_mofqO*mz6-B~0?~EKqiW9g9v?R%Q63Mw*wN$BeVuqI_!P`S7y6z2NALsX z!HR%%hJ*k?Wz7XOZl;9=6!!#|NO{$t=^KMEw>~=0h>NQmy%T!SU+Ph%xe`2xuJM)H z8QA9UC)T?V>s$nyZwXOEw=DF%1@W3dVox^2SiLdY?djNYYAOQ%dr8^Ds*(=ZGYsrk zm*j5)o?x+Zp9ZbPz2}NJxG-zV*|K=?aaouCu~mbq;posUkKENSMQG0Y*i_NxBZh|e zGyklaG^$a7UaJ)R&SOYpBIoCd^1lM;3PasnkUZ@waYJDsG5zNYaf{)Vbw#xVHe zre;A8x`w6Tr=j*TEPfkC4|bt=g5a|XXftohzz-T&uB}L(Oq9XHR6BY+Jw4+#EQ5BM zi*jgq^lqpkKdrZgAU6Xfh%twThOVmc60kT(>kBUd_^%9N%%jm#N0O}5?%Jq2fy5_o zr2%t(uymruy;|kq4<=B^BR)R?XKVKeL~1c+Z7Z@iNkLdRY|N{Dqef|?onp#SBiAfq6*>7~`n%g9zh3<_}DBL+$eQ2 z?594P$Y6)3f8``5waL+OhZghq3JaVK1l*NBlm=<&7Q@Pq-UsKz!m%Z!BO8I>3X`Q9 zO0VsH$yE-r441)Q3Zp#C-mQr(c0TaEQiODFbpG$3gBCuE#7#K`_;VKIi-~Ucy4cI7@ja8= zBh=inN86h1x~JL!Z#gCf-@1Nv`Z4u|1%*dClc)JvtFrgGi8$^otAqz$VARU>;%yf| zZlVNo^+wNruX;dD7Iv<9DOPC^BX4g8kwfp37d0$kL|+^N%MIo^6)?a^sdb<-K`B=xsF_+KM-4Y`ZAX>tpTU043KyM z_$e?@9S|N)-#!X`af%f($iRf%wEXsOP}qoSvqdboOEMM~u;B`D84;57oVfqw6dGVz zvbi6u@5X243C4zt!7pY)-AveMe1H6wkrYJch#pdo5^ zf>s4W`3D6ZR)~=6x?Q*iDC6MbVo;FCApmIqJtK=G0Qifkk88gm*Y@s4XJtui>gc%Z z&U-R;w8NI4GjXZD*MRt>T}Z<08a4on?ZJ)oj%|OkDq1)R{VT|SPgoI02hGpV8fPH#aA$M0OZraLEkD>*qCiJY9AM7psxlFn8r2yGX#akj!; z($oKKRew%F^wx;^)CMHP_8SLIw}f|6Km}Zp)3Znry+yqy0Q?7${tWkrqJN9AZexGLw^{E^0EC+DwOJFi=@c1~(C1Q7q|l>eR5^>>J7X%vqk zqx@L;Ke1K2)a{nLB9Iby4PAqRgWD7LD!XEVyPYYr;gQ^Sy9|uo!-0$(vw2cw+XcTj d+yBLho!vdUi#R`_U=RI7@J=Y1a1q-0Kp4 zs%owKoh*yEOm!|@x4C6*QEVDfX-ZvY+0NNc|N6b>^S;k>-uF45=lPt^A8($YuLm5a z1p@#8PV^-B%VL;pGobRa^NoPoD+|XGT!{ft*-D2-<^q8HBO<{ifL<=DI2Wt!j{g2= zf>p0oSAP}bzZ_8D`WU8YpaLb;pI4dma)_glxS-`@y1dRojI)My%x~2KsQ+M(hPwI* zhEkz%d`;4^ZEeOi17I=Kr7|An$idaL{QX3hw8LDaD8!l3Q>dupShT+3kU+E+~Cq~v*>NY zWi&z$^AuGt$glf!*P-tBcn4iM7#^Zw3qjCUzP%w<|f%F0l_(tAqHZ(+w(j>ZD5LUBK-? zm&bUvam3OOCy^N%7i~EwS^Yc(D z`j{yZL9W|a8dFLD7{v~%7%#0R3dH?pZdT@7@-heTI*qNZ(x?_|UvZygRzY_qT?#=L z>if}hwNRNLU~6+;&#HZ=x z0u7A+8mU2t(Yst-sp=i|HArsPY*n##ddQ=3a%vCrMTbS;w_3BJYvtwafq|Sk8&aj) z!h%!I1pQpI8d#0A?$6gT1%KCwB#UQsP^eXsQ`dh)b@;^(J-yk~B)|G{zOccU{?q@0 zcm_crFQ)SYzaNcTnaO=w8M-Mg{!Qea>>RH7B!N`bIUMoA?`ftHuk&Ip^pLCArp5RD zexTO7$?YS)YX^&~m_9z*V@N*|acMe4H_TvXveT;L?A^}l&lQ+Z>2>(Lud0#215x|% z+Qq9fn*O(PNQCln&idx^!B87EyP>DoihW(M-D7A!w|O!M172YO_A|fpsY%awvPhGA zU&8TeArFNO_dLFq)Ks6Lb0t#M-B_Bb6JEsyPm%&C2G(Kgz6Q z&$^9r#Wf3JkNxR>TYXrLVL&@IbYo)!XZZ>y%nM6@l)r7jM94ikh;CX$^CgVzB zEgH6?4W4S17B#JvD>Pb0jEjtHpgRlIII$c2Bpbzpz)W~>t7dZ{F{Bz22SPB8zlTzP z%NBm}r6{}9xiybX@CpIPD7}KizP#018ue4Y*JT&nKjmvp3J)&Nz@kRS)(uAtvRfEW zG}oeEhI58el}g$zqQAJ#lz@F~wfUwALJn{NKa5%8qNwp9fcG!Iofep4@+4rwjzVOj zgJ&dBkcl)>qG|j+M(O$|QIxwc?tdX)I497JEhv~@J^VEs^g}N27i<<(J@*b)t>4{o z`n_b415nzzW1XQw$$*Im3U(SW>!r0Z6Q_|D@{yF8w#mJlnXpB5eZca4kesTp2`0gA zGGYGtJwPgjrm2Vdw*fNQ$_if=MGvHZe0b_r#D^#zE65oY5M``!4`TFKzP>RWo`whBkplJlCB;HZpVD0rvg|@Bn5&Mjc+9nqCVt7^h z;|GpLHb+~V>ql}iV?3vA)_`XJw-niXx2_!Z*#dRDDB?1ob{k?Q Date: Sun, 23 Feb 2025 22:06:16 -0800 Subject: [PATCH 38/64] added rotational momentum, better bounces to spent casings turret's cases do not rotate for some reason! --- .../com/hbm/particle/ParticleSpentCasing.java | 131 +++++++++++++++--- .../java/com/hbm/particle/SpentCasing.java | 4 +- 2 files changed, 114 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index a21aad162..95d09f6c0 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -13,14 +13,21 @@ import com.hbm.util.Tuple.Pair; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.crash.CrashReport; +import net.minecraft.crash.CrashReportCategory; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; +import net.minecraft.util.ReportedException; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -49,8 +56,10 @@ public class ParticleSpentCasing extends EntityFX { this.momentumPitch = momentumPitch; this.momentumYaw = momentumYaw; this.config = config; - + this.particleMaxAge = config.getMaxAge(); + this.setSize(2 * dScale * Math.max(config.getScaleX(), config.getScaleZ()), dScale * config.getScaleY()); + this.yOffset = this.height / 2F; this.isSmoking = smoking; this.maxSmokeGen = smokeLife; @@ -85,26 +94,20 @@ public class ParticleSpentCasing extends EntityFX { } this.motionY -= 0.04D * (double) this.particleGravity; - double prevMotionY = this.motionY; this.moveEntity(this.motionX, this.motionY, this.motionZ); this.motionX *= 0.98D; this.motionY *= 0.98D; this.motionZ *= 0.98D; - + if(this.onGround) { this.motionX *= 0.7D; this.motionZ *= 0.7D; - } - - if(onGround) { - this.onGround = false; - motionY = prevMotionY * -0.5; - this.rotationPitch = 0; - //momentumPitch = (float) rand.nextGaussian() * config.getBouncePitch(); - //momentumYaw = (float) rand.nextGaussian() * config.getBounceYaw(); + this.rotationPitch = 0; + this.momentumYaw *= 0.7F; + this.onGround = false; } - + if(particleAge > maxSmokeGen && !smokeNodes.isEmpty()) smokeNodes.clear(); @@ -124,16 +127,106 @@ public class ParticleSpentCasing extends EntityFX { smokeNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), smokeNodes.isEmpty() ? 0.0D : 1D)); } } - + prevRotationPitch = rotationPitch; prevRotationYaw = rotationYaw; - - if(onGround) { - rotationPitch = 0; - } else { - rotationPitch += momentumPitch; - rotationYaw += momentumYaw; + + rotationPitch += momentumPitch; + rotationYaw += momentumYaw; + } + + public void moveEntity(double motionX, double motionY, double motionZ) { + this.worldObj.theProfiler.startSection("move"); + this.ySize *= 0.4F; + + if (this.isInWeb) { + this.isInWeb = false; + motionX *= 0.25D; + motionY *= 0.05000000074505806D; + motionZ *= 0.25D; + this.motionX = 0.0D; + this.motionY = 0.0D; + this.motionZ = 0.0D; } + + //Handle block collision + double initMoX = motionX; + double initMoY = motionY; + double initMoZ = motionZ; + AxisAlignedBB axisalignedbb = this.boundingBox.copy(); + + List list = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(motionX, motionY, motionZ)); + + for (int i = 0; i < list.size(); ++i) { + motionY = ((AxisAlignedBB)list.get(i)).calculateYOffset(this.boundingBox, motionY); + } + + this.boundingBox.offset(0.0D, motionY, 0.0D); + + int j; + + for (j = 0; j < list.size(); ++j) { + motionX = ((AxisAlignedBB)list.get(j)).calculateXOffset(this.boundingBox, motionX); + } + + this.boundingBox.offset(motionX, 0.0D, 0.0D); + + for (j = 0; j < list.size(); ++j) { + motionZ = ((AxisAlignedBB)list.get(j)).calculateZOffset(this.boundingBox, motionZ); + } + + this.boundingBox.offset(0.0D, 0.0D, motionZ); + + this.worldObj.theProfiler.endSection(); + this.worldObj.theProfiler.startSection("rest"); + this.posX = (this.boundingBox.minX + this.boundingBox.maxX) / 2.0D; + this.posY = this.boundingBox.minY + (double)this.yOffset - (double)this.ySize; + this.posZ = (this.boundingBox.minZ + this.boundingBox.maxZ) / 2.0D; + this.isCollidedHorizontally = initMoX != motionX || initMoZ != motionZ; + this.isCollidedVertically = initMoY != motionY; + this.onGround = initMoY != motionY && initMoY < 0.0D; + this.isCollided = this.isCollidedHorizontally || this.isCollidedVertically; + this.updateFallState(motionY, this.onGround); + + //Handles bounces + if (initMoX != motionX) { + this.motionX *= -0.25D; + + if(Math.abs(momentumYaw) > 1e-7) + momentumYaw *= -0.75F; + else + momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); + } + + if (initMoY != motionY) { + this.motionY *= -0.5D; + + if(momentumPitch == 0 && this.motionY > 1e-7) { + momentumPitch = (float) rand.nextGaussian() * 10F * this.config.getBouncePitch(); + momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); + } else if(Math.abs(momentumPitch) > 1e-7) + momentumPitch *= -0.75F; + } + + if (initMoZ != motionZ) { + this.motionZ *= -0.25D; + + if(Math.abs(momentumYaw) > 1e-7) + momentumYaw *= -0.75F; + else + momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); + } + + try { + this.func_145775_I(); + } catch (Throwable throwable) { + CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Checking entity block collision"); + CrashReportCategory crashreportcategory = crashreport.makeCategory("Entity being checked for collision"); + this.addEntityCrashInfo(crashreportcategory); + throw new ReportedException(crashreport); + } + + this.worldObj.theProfiler.endSection(); } /** Used for frame-perfect translation of smoke */ diff --git a/src/main/java/com/hbm/particle/SpentCasing.java b/src/main/java/com/hbm/particle/SpentCasing.java index 13f79ef89..d9fa1007f 100644 --- a/src/main/java/com/hbm/particle/SpentCasing.java +++ b/src/main/java/com/hbm/particle/SpentCasing.java @@ -40,8 +40,8 @@ public class SpentCasing implements Cloneable { private int[] colors; private CasingType type; private String bounceSound; - private float bounceYaw = 0F; - private float bouncePitch = 0F; + private float bounceYaw = 1F; + private float bouncePitch = 1F; private int maxAge = 240; public SpentCasing(CasingType type) { From bd3b52cd366bd2865b2eb71d64b56f2ae1d22797 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 24 Feb 2025 14:45:23 +0100 Subject: [PATCH 39/64] nodespace is dead, let's wear its skin --- .../java/api/hbm/energymk2/Nodespace.java | 172 ++----------- .../java/api/hbm/energymk2/PowerNetMK2.java | 228 +----------------- .../java/com/hbm/main/ModEventHandler.java | 6 +- src/main/java/com/hbm/uninos/GenNode.java | 12 +- src/main/java/com/hbm/uninos/NodeNet.java | 39 +-- .../java/com/hbm/uninos/UniNodespace.java | 71 ++++++ .../networkproviders/PowerProvider.java | 9 +- .../com/hbm/uninos/networks/PowerNetwork.java | 126 ---------- 8 files changed, 135 insertions(+), 528 deletions(-) delete mode 100644 src/main/java/com/hbm/uninos/networks/PowerNetwork.java diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index 401664333..5f9bcdb13 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -1,161 +1,40 @@ package api.hbm.energymk2; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map.Entry; -import java.util.Set; - import com.hbm.interfaces.NotableComments; +import com.hbm.uninos.GenNode; +import com.hbm.uninos.UniNodespace; +import com.hbm.uninos.networkproviders.PowerProvider; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -import net.minecraft.server.MinecraftServer; import net.minecraft.world.World; /** - * The "Nodespace" is an intermediate, "ethereal" layer of abstraction that tracks nodes (i.e. cables) even when they are no longer loaded, allowing continued operation even when unloaded + * The dead fucking corpse of nodespace MK1. + * A fantastic proof of concept, but ultimately it was killed for being just not that versatile. + * This class is mostly just a compatibility husk that should allow uninodespace to slide into the mod with as much lubrication as it deserves. + * * @author hbm - * */ -public class Nodespace { +@Deprecated public class Nodespace { - /** Contains all "NodeWorld" instances, i.e. lists of nodes existing per world */ - public static HashMap worlds = new HashMap<>(); - public static Set activePowerNets = new HashSet<>(); + public static final PowerProvider THE_POWER_PROVIDER = new PowerProvider(); public static PowerNode getNode(World world, int x, int y, int z) { - NodeWorld nodeWorld = worlds.get(world); - if(nodeWorld != null) return nodeWorld.nodes.get(new BlockPos(x, y, z)); - return null; + return (PowerNode) UniNodespace.getNode(world, x, y, z, THE_POWER_PROVIDER); } - public static void createNode(World world, PowerNode node) { - NodeWorld nodeWorld = worlds.get(world); - if(nodeWorld == null) { - nodeWorld = new NodeWorld(); - worlds.put(world, nodeWorld); - } - nodeWorld.pushNode(node); + @Deprecated public static void createNode(World world, PowerNode node) { + UniNodespace.createNode(world, node); } - public static void destroyNode(World world, int x, int y, int z) { - PowerNode node = getNode(world, x, y, z); - if(node != null) { - worlds.get(world).popNode(node); - } - } - - /** Goes over each node and manages connections */ - public static void updateNodespace() { - - for(World world : MinecraftServer.getServer().worldServers) { - NodeWorld nodes = worlds.get(world); - - if(nodes == null) - continue; - - for(Entry entry : nodes.nodes.entrySet()) { - PowerNode node = entry.getValue(); - if(!node.hasValidNet() || node.recentlyChanged) { - checkNodeConnection(world, node); - node.recentlyChanged = false; - } - } - } - - updatePowerNets(); - } - - private static void updatePowerNets() { - - for(PowerNetMK2 net : activePowerNets) net.resetEnergyTracker(); //reset has to be done before everything else - for(PowerNetMK2 net : activePowerNets) net.transferPower(); - } - - /** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */ - private static void checkNodeConnection(World world, PowerNode node) { - - for(DirPos con : node.connections) { - - PowerNode conNode = getNode(world, con.getX(), con.getY(), con.getZ()); // get whatever neighbor node intersects with that connection - - if(conNode != null) { // if there is a node at that place - - if(conNode.hasValidNet() && conNode.net == node.net) continue; // if the net is valid and both nodes have the same net, skip - - if(checkConnection(conNode, con, false)) { - connectToNode(node, conNode); - } - } - } - - if(node.net == null || !node.net.isValid()) new PowerNetMK2().joinLink(node); - } - - public static boolean checkConnection(PowerNode connectsTo, DirPos connectFrom, boolean skipSideCheck) { - - for(DirPos revCon : connectsTo.connections) { - - if(revCon.getX() - revCon.getDir().offsetX == connectFrom.getX() && revCon.getY() - revCon.getDir().offsetY == connectFrom.getY() && revCon.getZ() - revCon.getDir().offsetZ == connectFrom.getZ() && (revCon.getDir() == connectFrom.getDir().getOpposite() || skipSideCheck)) { - return true; - } - } - - return false; - } - - /** Links two nodes with different or potentially no networks */ - private static void connectToNode(PowerNode origin, PowerNode connection) { - - if(origin.hasValidNet() && connection.hasValidNet()) { // both nodes have nets, but the nets are different (previous assumption), join networks - if(origin.net.links.size() > connection.net.links.size()) { - origin.net.joinNetworks(connection.net); - } else { - connection.net.joinNetworks(origin.net); - } - } else if(!origin.hasValidNet() && connection.hasValidNet()) { // origin has no net, connection does, have origin join connection's net - connection.net.joinLink(origin); - } else if(origin.hasValidNet() && !connection.hasValidNet()) { // ...and vice versa - origin.net.joinLink(connection); - } - } - - public static class NodeWorld { - - /** Contains a map showing where each node is, a node is every spot that a cable exists at. - * Instead of the old proxy system, things like substation now create multiple nodes at their connection points */ - public HashMap nodes = new HashMap<>(); - - /** Adds a node at all its positions to the nodespace */ - public void pushNode(PowerNode node) { - for(BlockPos pos : node.positions) { - nodes.put(pos, node); - } - } - - /** Removes the specified node from all positions from nodespace */ - public void popNode(PowerNode node) { - if(node.net != null) node.net.destroy(); - for(BlockPos pos : node.positions) { - nodes.remove(pos); - node.expired = true; - } - } - - /** Grabs the node at one position, then removes it from all positions it occupies */ - public void popNode(BlockPos pos) { - PowerNode node = nodes.get(pos); - if(node != null) popNode(node); - } + @Deprecated public static void destroyNode(World world, int x, int y, int z) { + UniNodespace.destroyNode(world, x, y, z, THE_POWER_PROVIDER); } @NotableComments - public static class PowerNode { + public static class PowerNode extends GenNode { - public BlockPos[] positions; - public DirPos[] connections; - public PowerNetMK2 net; - public boolean expired = false; /** * Okay so here's the deal: The code has shit idiot brain fungus. I don't know why. I re-tested every part involved several times. * I don't know why. But for some reason, during neighbor checks, on certain arbitrary fucking places, the joining operation just fails. @@ -170,29 +49,14 @@ public class Nodespace { public boolean recentlyChanged = true; public PowerNode(BlockPos... positions) { + super(THE_POWER_PROVIDER, positions); this.positions = positions; } + @Override public PowerNode setConnections(DirPos... connections) { - this.connections = connections; + super.setConnections(connections); return this; } - - public PowerNode addConnection(DirPos connection) { - DirPos[] newCons = new DirPos[this.connections.length + 1]; - for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; - newCons[newCons.length - 1] = connection; - this.connections = newCons; - return this; - } - - public boolean hasValidNet() { - return this.net != null && this.net.isValid(); - } - - public void setNet(PowerNetMK2 net) { - this.net = net; - this.recentlyChanged = true; - } } } diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java index 4422cc138..ff8043898 100644 --- a/src/main/java/api/hbm/energymk2/PowerNetMK2.java +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -2,124 +2,32 @@ package api.hbm.energymk2; import java.util.ArrayList; import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Set; +import com.hbm.uninos.NodeNet; import com.hbm.util.Tuple.Pair; import java.util.Map.Entry; -import java.util.Random; import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; import api.hbm.energymk2.Nodespace.PowerNode; -public class PowerNetMK2 { - - public static Random rand = new Random(); - public boolean valid = true; - public Set links = new HashSet(); - - /** Maps all active subscribers to a timestamp, handy for handling timeouts. In a good system this shouldn't be necessary, but the previous system taught me to be cautious anyway */ - public HashMap receiverEntries = new HashMap(); - public HashMap providerEntries = new HashMap(); +/** + * Technically MK3 since it's now UNINOS compatible, although UNINOS was build out of 95% nodespace code + * + * @author hbm + */ +public class PowerNetMK2 extends NodeNet { public long energyTracker = 0L; - public PowerNetMK2() { - Nodespace.activePowerNets.add(this); - } - - /// SUBSCRIBER HANDLING /// - public boolean isSubscribed(IEnergyReceiverMK2 receiver) { - return this.receiverEntries.containsKey(receiver); - } - - public void addReceiver(IEnergyReceiverMK2 receiver) { - this.receiverEntries.put(receiver, System.currentTimeMillis()); - } - - public void removeReceiver(IEnergyReceiverMK2 receiver) { - this.receiverEntries.remove(receiver); - } - - /// PROVIDER HANDLING /// - public boolean isProvider(IEnergyProviderMK2 provider) { - return this.providerEntries.containsKey(provider); - } - - public void addProvider(IEnergyProviderMK2 provider) { - this.providerEntries.put(provider, System.currentTimeMillis()); - } - - public void removeProvider(IEnergyProviderMK2 provider) { - this.providerEntries.remove(provider); - } - - /// LINK JOINING /// - - /** Combines two networks into one */ - public void joinNetworks(PowerNetMK2 network) { - - if(network == this) return; //wtf?! - - List oldNodes = new ArrayList(network.links.size()); - oldNodes.addAll(network.links); // might prevent oddities related to joining - nvm it does nothing - - for(PowerNode conductor : oldNodes) forceJoinLink(conductor); - network.links.clear(); - - for(IEnergyReceiverMK2 connector : network.receiverEntries.keySet()) this.addReceiver(connector); - for(IEnergyProviderMK2 connector : network.providerEntries.keySet()) this.addProvider(connector); - network.destroy(); - } - - /** Adds the power node as part of this network's links */ - public PowerNetMK2 joinLink(PowerNode node) { - if(node.net != null) node.net.leaveLink(node); - return forceJoinLink(node); - } - - /** Adds the power node as part of this network's links, skips the part about removing it from existing networks */ - public PowerNetMK2 forceJoinLink(PowerNode node) { - this.links.add(node); - node.setNet(this); - return this; - } - - /** Removes the specified power node */ - public void leaveLink(PowerNode node) { - node.setNet(null); - this.links.remove(node); - } - - /// GENERAL POWER NET CONTROL /// - public void invalidate() { - this.valid = false; - Nodespace.activePowerNets.remove(this); - } - - public boolean isValid() { - return this.valid; - } - - public void destroy() { - this.invalidate(); - for(PowerNode link : this.links) if(link.net == this) link.setNet(null); - this.links.clear(); - this.receiverEntries.clear(); - this.providerEntries.clear(); - } - - public void resetEnergyTracker() { - this.energyTracker = 0; - } - protected static int timeout = 3_000; - public void transferPower() { + @Override public void resetTrackers() { this.energyTracker = 0; } + + @Override + public void update() { if(providerEntries.isEmpty()) return; if(receiverEntries.isEmpty()) return; @@ -170,7 +78,7 @@ public class PowerNetMK2 { toTransfer -= energyUsed; } - + this.energyTracker += energyUsed; long leftover = energyUsed; @@ -195,118 +103,6 @@ public class PowerNetMK2 { } } - @Deprecated public void transferPowerOld() { - - if(providerEntries.isEmpty()) return; - if(receiverEntries.isEmpty()) return; - - long timestamp = System.currentTimeMillis(); - long transferCap = 100_000_000_000_000_00L; // that ought to be enough - - long supply = 0; - long demand = 0; - long[] priorityDemand = new long[ConnectionPriority.values().length]; - - Iterator> provIt = providerEntries.entrySet().iterator(); - while(provIt.hasNext()) { - Entry entry = provIt.next(); - if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } - supply += Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); - } - - if(supply <= 0) return; - - Iterator> recIt = receiverEntries.entrySet().iterator(); - while(recIt.hasNext()) { - Entry entry = recIt.next(); - if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } - long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); - demand += rec; - for(int i = 0; i <= entry.getKey().getPriority().ordinal(); i++) priorityDemand[i] += rec; - } - - if(demand <= 0) return; - - long toTransfer = Math.min(supply, demand); - if(toTransfer > transferCap) toTransfer = transferCap; - if(toTransfer <= 0) return; - - List buffers = new ArrayList(); - List providers = new ArrayList(); - Set receiverSet = receiverEntries.keySet(); - for(IEnergyProviderMK2 provider : providerEntries.keySet()) { - if(receiverSet.contains(provider)) { - buffers.add(provider); - } else { - providers.add(provider); - } - } - providers.addAll(buffers); //makes buffers go last - List receivers = new ArrayList() {{ addAll(receiverSet); }}; - - receivers.sort(COMP); - - int maxIteration = 1000; - - //how much the current sender/receiver have already sent/received - long prevSrc = 0; - long prevDest = 0; - - while(!receivers.isEmpty() && !providers.isEmpty() && maxIteration > 0) { - maxIteration--; - - IEnergyProviderMK2 src = providers.get(0); - IEnergyReceiverMK2 dest = receivers.get(0); - - if(src.getPower() <= 0) { providers.remove(0); prevSrc = 0; continue; } - - if(src == dest) { // STALEMATE DETECTED - //if this happens, a buffer will waste both its share of transfer and receiving potential and do effectively nothing, essentially breaking - - //try if placing the conflicting provider at the end of the list does anything - //we do this first because providers have no priority, so we may shuffle those around as much as we want - if(providers.size() > 1) { - providers.add(providers.get(0)); - providers.remove(0); - prevSrc = 0; //this might cause slight issues due to the tracking being effectively lost while there still might be pending operations - continue; - } - //if that didn't work, try shifting the receiver by one place (to minimize priority breakage) - if(receivers.size() > 1) { - receivers.add(2, receivers.get(0)); - receivers.remove(0); - prevDest = 0; //ditto - continue; - } - - //if neither option could be performed, the only conclusion is that this buffer mode battery is alone in the power net, in which case: not my provlem - } - - long pd = priorityDemand[dest.getPriority().ordinal()]; - - long receiverShare = Math.min((long) Math.ceil((double) Math.min(dest.getMaxPower() - dest.getPower(), dest.getReceiverSpeed()) * (double) supply / (double) pd), dest.getReceiverSpeed()) - prevDest; - long providerShare = Math.min((long) Math.ceil((double) Math.min(src.getPower(), src.getProviderSpeed()) * (double) demand / (double) supply), src.getProviderSpeed()) - prevSrc; - - long toDrain = Math.min((long) (src.getPower()), providerShare); - long toFill = Math.min(dest.getMaxPower() - dest.getPower(), receiverShare); - - long finalTransfer = Math.min(toDrain, toFill); - if(toFill <= 0) { receivers.remove(0); prevDest = 0; continue; } - - finalTransfer -= dest.transferPower(finalTransfer); - src.usePower(finalTransfer); - - prevSrc += finalTransfer; - prevDest += finalTransfer; - - if(prevSrc >= src.getProviderSpeed()) { providers.remove(0); prevSrc = 0; continue; } - if(prevDest >= dest.getReceiverSpeed()) { receivers.remove(0); prevDest = 0; continue; } - - toTransfer -= finalTransfer; - this.energyTracker += finalTransfer; - } - } - public long sendPowerDiode(long power) { if(receiverEntries.isEmpty()) return power; diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index bd5ec48e4..567ca1edc 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -1,6 +1,5 @@ package com.hbm.main; -import api.hbm.energymk2.Nodespace; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.hbm.blocks.IStepTickReceiver; @@ -50,6 +49,7 @@ import com.hbm.tileentity.machine.TileEntityMachineRadarNT; import com.hbm.tileentity.machine.rbmk.RBMKDials; import com.hbm.tileentity.network.RTTYSystem; import com.hbm.tileentity.network.RequestNetwork; +import com.hbm.uninos.UniNodespace; import com.hbm.util.*; import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.world.generator.TimedGenerator; @@ -1185,8 +1185,8 @@ public class ModEventHandler { RTTYSystem.updateBroadcastQueue(); RequestNetwork.updateEntries(); TileEntityMachineRadarNT.updateSystem(); - Nodespace.updateNodespace(); - // bob i beg of you i need fluid nodespace :pray: + //Nodespace.updateNodespace(); + UniNodespace.updateNodespace(); } // There is an issue here somewhere... diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index b0337c119..d65f163c1 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -3,26 +3,26 @@ package com.hbm.uninos; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; -public class GenNode { +public class GenNode { public BlockPos[] positions; public DirPos[] connections; - public NodeNet net; + public N net; public boolean expired = false; public boolean recentlyChanged = true; public INetworkProvider networkProvider; - public GenNode(INetworkProvider provider, BlockPos... positions) { + public GenNode(INetworkProvider provider, BlockPos... positions) { this.networkProvider = provider; this.positions = positions; } - public GenNode setConnections(DirPos... connections) { + public GenNode setConnections(DirPos... connections) { this.connections = connections; return this; } - public GenNode addConnection(DirPos connection) { + public GenNode addConnection(DirPos connection) { DirPos[] newCons = new DirPos[this.connections.length + 1]; for(int i = 0; i < this.connections.length; i++) newCons[i] = this.connections[i]; newCons[newCons.length - 1] = connection; @@ -34,7 +34,7 @@ public class GenNode { return this.net != null && this.net.isValid(); } - public void setNet(NodeNet net) { + public void setNet(N net) { this.net = net; this.recentlyChanged = true; } diff --git a/src/main/java/com/hbm/uninos/NodeNet.java b/src/main/java/com/hbm/uninos/NodeNet.java index 34e647196..52fd122f1 100644 --- a/src/main/java/com/hbm/uninos/NodeNet.java +++ b/src/main/java/com/hbm/uninos/NodeNet.java @@ -7,60 +7,61 @@ import java.util.List; import java.util.Random; import java.util.Set; -public abstract class NodeNet { +public abstract class NodeNet { + /** Global random for figuring things out like random leftover distribution */ public static Random rand = new Random(); public boolean valid = true; - public Set links = new HashSet(); + public Set links = new HashSet(); - public abstract HashMap receiverEntries(); - public abstract HashMap providerEntries(); + public HashMap receiverEntries = new HashMap(); + public HashMap providerEntries = new HashMap(); public NodeNet() { UniNodespace.activeNodeNets.add(this); } /// SUBSCRIBER HANDLING /// - public boolean isSubscribed(IGenReceiver receiver) { return this.receiverEntries().containsKey(receiver); } - public void addReceiver(IGenReceiver receiver) { this.receiverEntries().put(receiver, System.currentTimeMillis()); } - public void removeReceiver(IGenReceiver receiver) { this.receiverEntries().remove(receiver); } + public boolean isSubscribed(R receiver) { return this.receiverEntries.containsKey(receiver); } + public void addReceiver(R receiver) { this.receiverEntries.put(receiver, System.currentTimeMillis()); } + public void removeReceiver(R receiver) { this.receiverEntries.remove(receiver); } /// PROVIDER HANDLING /// - public boolean isProvider(IGenProvider provider) { return this.providerEntries().containsKey(provider); } - public void addProvider(IGenProvider provider) { this.providerEntries().put(provider, System.currentTimeMillis()); } - public void removeProvider(IGenProvider provider) { this.providerEntries().remove(provider); } + public boolean isProvider(P provider) { return this.providerEntries.containsKey(provider); } + public void addProvider(P provider) { this.providerEntries.put(provider, System.currentTimeMillis()); } + public void removeProvider(P provider) { this.providerEntries.remove(provider); } /** Combines two networks into one */ public void joinNetworks(NodeNet network) { if(network == this) return; - List oldNodes = new ArrayList(network.links.size()); + List oldNodes = new ArrayList(network.links.size()); oldNodes.addAll(network.links); - for(GenNode conductor : oldNodes) forceJoinLink(conductor); + for(L conductor : oldNodes) forceJoinLink(conductor); network.links.clear(); - for(IGenReceiver connector : network.receiverEntries().keySet()) this.addReceiver(connector); - for(IGenProvider connector : network.providerEntries().keySet()) this.addProvider(connector); + for(Object /*this is bullshit*/ connector : network.receiverEntries.keySet()) this.addReceiver((R) connector); + for(Object /*this is bullshit*/ connector : network.providerEntries.keySet()) this.addProvider((P) connector); network.destroy(); } /** Adds the node as part of this network's links */ - public NodeNet joinLink(GenNode node) { + public NodeNet joinLink(L node) { if(node.net != null) node.net.leaveLink(node); return forceJoinLink(node); } /** Adds the node as part of this network's links, skips the part about removing it from existing networks */ - public NodeNet forceJoinLink(GenNode node) { + public NodeNet forceJoinLink(L node) { this.links.add(node); node.setNet(this); return this; } /** Removes the specified node */ - public void leaveLink(GenNode node) { + public void leaveLink(L node) { node.setNet(null); this.links.remove(node); } @@ -75,7 +76,7 @@ public abstract class NodeNet { this.invalidate(); for(GenNode link : this.links) if(link.net == this) link.setNet(null); this.links.clear(); - this.receiverEntries().clear(); - this.providerEntries().clear(); + this.receiverEntries.clear(); + this.providerEntries.clear(); } } diff --git a/src/main/java/com/hbm/uninos/UniNodespace.java b/src/main/java/com/hbm/uninos/UniNodespace.java index aa92b1d1a..ce4867386 100644 --- a/src/main/java/com/hbm/uninos/UniNodespace.java +++ b/src/main/java/com/hbm/uninos/UniNodespace.java @@ -3,10 +3,13 @@ package com.hbm.uninos; import java.util.HashMap; import java.util.HashSet; import java.util.Set; +import java.util.Map.Entry; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; +import net.minecraft.server.MinecraftServer; import net.minecraft.world.World; public class UniNodespace { @@ -36,6 +39,74 @@ public class UniNodespace { } } + public static void updateNodespace() { + + for(World world : MinecraftServer.getServer().worldServers) { + UniNodeWorld nodeWorld = worlds.get(world); + + if(nodeWorld == null) continue; + + for(Entry, GenNode> entry : nodeWorld.nodes.entrySet()) { + GenNode node = entry.getValue(); + INetworkProvider provider = entry.getKey().getValue(); + if(!node.hasValidNet() || node.recentlyChanged) { + checkNodeConnection(world, node, provider); + node.recentlyChanged = false; + } + } + } + + updateNetworks(); + } + + private static void updateNetworks() { + + for(NodeNet net : activeNodeNets) net.resetTrackers(); //reset has to be done before everything else + for(NodeNet net : activeNodeNets) net.update(); + } + + /** Goes over each connection point of the given node, tries to find neighbor nodes and to join networks with them */ + private static void checkNodeConnection(World world, GenNode node, INetworkProvider provider) { + + for(DirPos con : node.connections) { + GenNode conNode = getNode(world, con.getX(), con.getY(), con.getZ(), provider); // get whatever neighbor node intersects with that connection + if(conNode != null) { // if there is a node at that place + if(conNode.hasValidNet() && conNode.net == node.net) continue; // if the net is valid and both nodes have the same net, skip + if(checkConnection(conNode, con, false)) { + connectToNode(node, conNode); + } + } + } + + if(node.net == null || !node.net.isValid()) provider.provideNetwork().joinLink(node); + } + + /** Checks if the node can be connected to given the DirPos, skipSideCheck will ignore the DirPos' direction value */ + public static boolean checkConnection(GenNode connectsTo, DirPos connectFrom, boolean skipSideCheck) { + for(DirPos revCon : connectsTo.connections) { + if(revCon.getX() - revCon.getDir().offsetX == connectFrom.getX() && revCon.getY() - revCon.getDir().offsetY == connectFrom.getY() && revCon.getZ() - revCon.getDir().offsetZ == connectFrom.getZ() && (revCon.getDir() == connectFrom.getDir().getOpposite() || skipSideCheck)) { + return true; + } + } + return false; + } + + /** Links two nodes with different or potentially no networks */ + private static void connectToNode(GenNode origin, GenNode connection) { + + if(origin.hasValidNet() && connection.hasValidNet()) { // both nodes have nets, but the nets are different (previous assumption), join networks + if(origin.net.links.size() > connection.net.links.size()) { + origin.net.joinNetworks(connection.net); + } else { + connection.net.joinNetworks(origin.net); + } + } else if(!origin.hasValidNet() && connection.hasValidNet()) { // origin has no net, connection does, have origin join connection's net + connection.net.joinLink(origin); + } else if(origin.hasValidNet() && !connection.hasValidNet()) { // ...and vice versa + origin.net.joinLink(connection); + } + } + public static class UniNodeWorld { public HashMap, GenNode> nodes = new HashMap(); diff --git a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java b/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java index 86cf18403..0c1218991 100644 --- a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java +++ b/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java @@ -1,12 +1,13 @@ package com.hbm.uninos.networkproviders; import com.hbm.uninos.INetworkProvider; -import com.hbm.uninos.networks.PowerNetwork; -public class PowerProvider implements INetworkProvider { +import api.hbm.energymk2.PowerNetMK2; + +public class PowerProvider implements INetworkProvider { @Override - public PowerNetwork provideNetwork() { - return new PowerNetwork(); + public PowerNetMK2 provideNetwork() { + return new PowerNetMK2(); } } diff --git a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java b/src/main/java/com/hbm/uninos/networks/PowerNetwork.java deleted file mode 100644 index 9c68b0cda..000000000 --- a/src/main/java/com/hbm/uninos/networks/PowerNetwork.java +++ /dev/null @@ -1,126 +0,0 @@ -package com.hbm.uninos.networks; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map.Entry; - -import com.hbm.uninos.NodeNet; -import com.hbm.util.Tuple.Pair; - -import api.hbm.energymk2.IEnergyProviderMK2; -import api.hbm.energymk2.IEnergyReceiverMK2; -import api.hbm.energymk2.IEnergyReceiverMK2.ConnectionPriority; - -public class PowerNetwork extends NodeNet { - - /* - * the original idea was to have every part have a generic type so that once you get down to the level of nodes, you can - * still easily create new networks using the generic type. however: - * - having generics everywhere means that some overrides don't work due to "not being castable" (my ass) - * - most of the time, having generics there didn't really do anything, since the interface is already universally usable, and the type that is provided doesn't actually matter - * - for any case where network type does matter, any node handling instance (cable TEs for example) can just do handling separately, worst case it's just one extra cast - * my balls hurt - */ - - public HashMap receiverEntries = new HashMap(); - public HashMap providerEntries = new HashMap(); - - public long energyTracker = 0L; - - @Override - public HashMap receiverEntries() { - return receiverEntries; - // generic type erasure seems susipcious here - this either works because the types should be castable anyway, - // or this doesn't work because the compiler has an aneurysm and dies instantly - // technically, generics are obliterated when compiling, and the types are assignable, so i see no issue, - // but then again, HashMap *technically* isn't castable to HashMap, and the compiler might scream about it - } - - @Override - public HashMap providerEntries() { - return providerEntries; - } - - protected static int timeout = 3_000; - - @Override public void resetTrackers() { this.energyTracker = 0; } - - @Override - public void update() { - - if(providerEntries.isEmpty()) return; - if(receiverEntries.isEmpty()) return; - - long timestamp = System.currentTimeMillis(); - - List> providers = new ArrayList(); - long powerAvailable = 0; - - Iterator> provIt = providerEntries.entrySet().iterator(); - while(provIt.hasNext()) { - Entry entry = provIt.next(); - if(timestamp - entry.getValue() > timeout) { provIt.remove(); continue; } - long src = Math.min(entry.getKey().getPower(), entry.getKey().getProviderSpeed()); - providers.add(new Pair(entry.getKey(), src)); - powerAvailable += src; - } - - List>[] receivers = new ArrayList[ConnectionPriority.values().length]; - for(int i = 0; i < receivers.length; i++) receivers[i] = new ArrayList(); - long[] demand = new long[ConnectionPriority.values().length]; - long totalDemand = 0; - - Iterator> recIt = receiverEntries.entrySet().iterator(); - - while(recIt.hasNext()) { - Entry entry = recIt.next(); - if(timestamp - entry.getValue() > timeout) { recIt.remove(); continue; } - long rec = Math.min(entry.getKey().getMaxPower() - entry.getKey().getPower(), entry.getKey().getReceiverSpeed()); - int p = entry.getKey().getPriority().ordinal(); - receivers[p].add(new Pair(entry.getKey(), rec)); - demand[p] += rec; - totalDemand += rec; - } - - long toTransfer = Math.min(powerAvailable, totalDemand); - long energyUsed = 0; - - for(int i = ConnectionPriority.values().length - 1; i >= 0; i--) { - List> list = receivers[i]; - long priorityDemand = demand[i]; - - for(Pair entry : list) { - double weight = (double) entry.getValue() / (double) (priorityDemand); - long toSend = (long) Math.max(toTransfer * weight, 0D); - energyUsed += (toSend - entry.getKey().transferPower(toSend)); //leftovers are subtracted from the intended amount to use up - } - - toTransfer -= energyUsed; - } - - this.energyTracker += energyUsed; - long leftover = energyUsed; - - for(Pair entry : providers) { - double weight = (double) entry.getValue() / (double) powerAvailable; - long toUse = (long) Math.max(energyUsed * weight, 0D); - entry.getKey().usePower(toUse); - leftover -= toUse; - } - - //rounding error compensation, detects surplus that hasn't been used and removes it from random providers - int iterationsLeft = 100; // whiles without emergency brakes are a bad idea - while(iterationsLeft > 0 && leftover > 0 && providers.size() > 0) { - iterationsLeft--; - - Pair selected = providers.get(rand.nextInt(providers.size())); - IEnergyProviderMK2 scapegoat = selected.getKey(); - - long toUse = Math.min(leftover, scapegoat.getPower()); - scapegoat.usePower(toUse); - leftover -= toUse; - } - } -} From 06caf11654ea1f7b215f585ea006c98a2de0e942 Mon Sep 17 00:00:00 2001 From: Bob Date: Mon, 24 Feb 2025 21:43:44 +0100 Subject: [PATCH 40/64] yeah that's all the bugs that needed fixing --- src/main/java/api/hbm/energymk2/Nodespace.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index 5f9bcdb13..e2cb4134f 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -46,7 +46,6 @@ import net.minecraft.world.World; * breaking, but it seems to allow those parts to connect back to their neighbor nets as they are supposed to. I am not proud of this solution, * this issue shouldn't exist to begin with and I am going fucking insane but it is what it is. */ - public boolean recentlyChanged = true; public PowerNode(BlockPos... positions) { super(THE_POWER_PROVIDER, positions); From 747d0006b24acfb9a8ea4fbb1b84bbc4ee82abb9 Mon Sep 17 00:00:00 2001 From: Vaern Date: Mon, 24 Feb 2025 15:04:24 -0800 Subject: [PATCH 41/64] set casing models as vbos, will test later --- src/main/java/com/hbm/main/ResourceManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 939952c38..c784142e4 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1151,7 +1151,7 @@ public class ResourceManager { //Projectiles public static final IModelCustom projectiles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/projectiles.obj")); public static final IModelCustom leadburster = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/projectiles/leadburster.obj")); - public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")); + public static final IModelCustom casings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/casings.obj")).asVBO(); //Bomber public static final IModelCustom dornier = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/dornier.obj")); From c5c6beb45382d814c2f57d6843253309a46044e0 Mon Sep 17 00:00:00 2001 From: Vaern Date: Mon, 24 Feb 2025 23:47:48 -0800 Subject: [PATCH 42/64] Finished casing physics added initial momentums as a test --- src/main/java/com/hbm/handler/CasingEjector.java | 2 +- .../java/com/hbm/items/weapon/ItemAmmoArty.java | 2 +- .../com/hbm/particle/ParticleSpentCasing.java | 15 ++++++++++----- src/main/java/com/hbm/particle/SpentCasing.java | 1 + .../com/hbm/particle/helper/CasingCreator.java | 2 +- 5 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/hbm/handler/CasingEjector.java b/src/main/java/com/hbm/handler/CasingEjector.java index 321aa8d71..5c27ac673 100644 --- a/src/main/java/com/hbm/handler/CasingEjector.java +++ b/src/main/java/com/hbm/handler/CasingEjector.java @@ -94,7 +94,7 @@ public class CasingEjector implements Cloneable { @SideOnly(Side.CLIENT) public void spawnCasing(TextureManager textureManager, SpentCasing config, World world, double x, double y, double z, float pitch, float yaw, boolean crouched) { Vec3 rotatedMotionVec = rotateVector(getMotion(), pitch + (float) rand.nextGaussian() * getPitchFactor(), yaw + (float) rand.nextGaussian() * getPitchFactor(), getPitchFactor(), getPitchFactor()); - ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (getPitchFactor() * rand.nextGaussian()), (float) (getYawFactor() * rand.nextGaussian()), config, false, 0, 0, 0); + ParticleSpentCasing casing = new ParticleSpentCasing(textureManager, world, x, y, z, rotatedMotionVec.xCoord, rotatedMotionVec.yCoord, rotatedMotionVec.zCoord, (float) (world.rand.nextGaussian() * 5F), (float) (world.rand.nextGaussian() * 10F), config, false, 0, 0, 0); offsetCasing(casing, getOffset(), pitch, yaw, crouched); diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 0014cb736..f1c10ff91 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -184,7 +184,7 @@ public class ItemAmmoArty extends Item { return "item." + itemTypes[Math.abs(stack.getItemDamage()) % itemTypes.length].name; } - protected static SpentCasing SIXTEEN_INCH_CASE = new SpentCasing(CasingType.STRAIGHT).setScale(15F, 15F, 10F).setupSmoke(1F, 1D, 200, 60).setMaxAge(300); + protected static SpentCasing SIXTEEN_INCH_CASE = new SpentCasing(CasingType.STRAIGHT).setScale(15F, 15F, 10F).setupSmoke(1F, 1D, 200, 60).setMaxAge(300).setBounceMotion(1F, 0.5F); public abstract class ArtilleryShell { diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index 95d09f6c0..5def153ba 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -9,6 +9,7 @@ import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; import com.hbm.main.ResourceManager; +import com.hbm.util.BobMathUtil; import com.hbm.util.Tuple.Pair; import cpw.mods.fml.relauncher.Side; @@ -103,7 +104,7 @@ public class ParticleSpentCasing extends EntityFX { this.motionX *= 0.7D; this.motionZ *= 0.7D; - this.rotationPitch = 0; + this.rotationPitch = (float) (Math.floor(this.rotationPitch / 180F + 0.5F)) * 180F; this.momentumYaw *= 0.7F; this.onGround = false; } @@ -201,11 +202,15 @@ public class ParticleSpentCasing extends EntityFX { if (initMoY != motionY) { this.motionY *= -0.5D; - if(momentumPitch == 0 && this.motionY > 1e-7) { - momentumPitch = (float) rand.nextGaussian() * 10F * this.config.getBouncePitch(); - momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); - } else if(Math.abs(momentumPitch) > 1e-7) + boolean rotFromSpeed = Math.abs(this.motionY) > 0.04; + if(rotFromSpeed || Math.abs(momentumPitch) > 1e-7) { momentumPitch *= -0.75F; + if(rotFromSpeed) { + float mult = (float) BobMathUtil.safeClamp(initMoY / 0.2F, -1F, 1F); + momentumPitch += rand.nextGaussian() * 10F * this.config.getBouncePitch() * mult; + momentumYaw += (float) rand.nextGaussian() * 10F * this.config.getBounceYaw() * mult; + } + } } if (initMoZ != motionZ) { diff --git a/src/main/java/com/hbm/particle/SpentCasing.java b/src/main/java/com/hbm/particle/SpentCasing.java index d9fa1007f..23cbfab93 100644 --- a/src/main/java/com/hbm/particle/SpentCasing.java +++ b/src/main/java/com/hbm/particle/SpentCasing.java @@ -86,6 +86,7 @@ public class SpentCasing implements Cloneable { return casingMap.get(name); } + /** Multiplier for default standard deviation of 10deg per tick, per bounce w/ full y speed */ public SpentCasing setBounceMotion(float yaw, float pitch) { this.bounceYaw = yaw; this.bouncePitch = pitch; diff --git a/src/main/java/com/hbm/particle/helper/CasingCreator.java b/src/main/java/com/hbm/particle/helper/CasingCreator.java index 967f6a381..cc8274079 100644 --- a/src/main/java/com/hbm/particle/helper/CasingCreator.java +++ b/src/main/java/com/hbm/particle/helper/CasingCreator.java @@ -75,7 +75,7 @@ public class CasingCreator implements IParticleCreator { int smokeLife = data.getInteger("smokeLife"); double smokeLift = data.getDouble("smokeLift"); int nodeLife = data.getInteger("nodeLife"); - ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, 0, 0, casingConfig, smoking, smokeLife, smokeLift, nodeLife); + ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, (float) (world.rand.nextGaussian() * 10F), (float) (world.rand.nextGaussian() * 5F), casingConfig, smoking, smokeLife, smokeLift, nodeLife); casing.prevRotationYaw = casing.rotationYaw = yaw; casing.prevRotationPitch = casing.rotationPitch = pitch; Minecraft.getMinecraft().effectRenderer.addEffect(casing); From fd500f8a98e1ff8a2a39940e64d851f7c8bf2469 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 25 Feb 2025 16:56:48 +0100 Subject: [PATCH 43/64] and now for the boring part --- .../java/api/hbm/energymk2/Nodespace.java | 4 ++-- src/main/java/api/hbm/fluid/FluidNet.java | 17 +++++++++++++++++ .../hbm/textures/items/ingot_metal_sheet.png | Bin 5960 -> 6159 bytes 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/main/java/api/hbm/fluid/FluidNet.java diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index e2cb4134f..8fadb9745 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -16,11 +16,11 @@ import net.minecraft.world.World; * * @author hbm */ -@Deprecated public class Nodespace { +public class Nodespace { public static final PowerProvider THE_POWER_PROVIDER = new PowerProvider(); - public static PowerNode getNode(World world, int x, int y, int z) { + @Deprecated public static PowerNode getNode(World world, int x, int y, int z) { return (PowerNode) UniNodespace.getNode(world, x, y, z, THE_POWER_PROVIDER); } diff --git a/src/main/java/api/hbm/fluid/FluidNet.java b/src/main/java/api/hbm/fluid/FluidNet.java new file mode 100644 index 000000000..f49b77264 --- /dev/null +++ b/src/main/java/api/hbm/fluid/FluidNet.java @@ -0,0 +1,17 @@ +package api.hbm.fluid; + +import com.hbm.uninos.NodeNet; + +public class FluidNet extends NodeNet { // yeah i don't feel like it, gonna do that shit tomorrow or sth + + public long tracker = 0L; + + protected static int timeout = 3_000; + + @Override public void resetTrackers() { this.tracker = 0; } + + @Override + public void update() { + + } +} diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png index 1490b456c50b4b40149a7c967d32e477f1d57957..456950b8bb27993d7715bc2f2541a8fff5eec97e 100644 GIT binary patch literal 6159 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 Date: Tue, 25 Feb 2025 19:46:02 -0800 Subject: [PATCH 44/64] removed unnecessary shit, fixed muzzle flash prolly gonna figure out a systematic solution to customizing spent casing ejection/maxAge based on receiver --- src/main/java/com/hbm/particle/ParticleSpentCasing.java | 9 --------- .../render/item/weapon/sedna/ItemRenderWeaponBase.java | 2 ++ 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index 5def153ba..3a4efcffc 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -222,15 +222,6 @@ public class ParticleSpentCasing extends EntityFX { momentumYaw = (float) rand.nextGaussian() * 10F * this.config.getBounceYaw(); } - try { - this.func_145775_I(); - } catch (Throwable throwable) { - CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Checking entity block collision"); - CrashReportCategory crashreportcategory = crashreport.makeCategory("Entity being checked for collision"); - this.addEntityCrashInfo(crashreportcategory); - throw new ReportedException(crashreport); - } - this.worldObj.theProfiler.endSection(); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java index 61b78ba4e..7a5b32926 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderWeaponBase.java @@ -331,6 +331,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { double inset = 2; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); @@ -379,6 +380,7 @@ public abstract class ItemRenderWeaponBase implements IItemRenderer { double lengthOffset = 0.125; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); From bb84ebe2092cf16fa080bfffb73ce18b09c19bb6 Mon Sep 17 00:00:00 2001 From: George Paton Date: Wed, 26 Feb 2025 15:38:31 +1100 Subject: [PATCH 45/64] Fix #1918 - make sure node caching is per world, remove nodes from cache correctly, and prevent unloading dimensions immediately ceasing all reactivity. Also fixes rod information not updating unless the GUI is open --- .../com/hbm/blocks/machine/rbmk/RBMKBase.java | 74 ++++---- .../hbm/handler/neutron/NeutronHandler.java | 52 ++---- .../hbm/handler/neutron/NeutronNodeWorld.java | 117 ++++++++----- .../hbm/handler/neutron/NeutronStream.java | 10 +- .../handler/neutron/PileNeutronHandler.java | 42 ++--- .../handler/neutron/RBMKNeutronHandler.java | 160 +++++++++--------- .../com/hbm/items/machine/ItemRBMKLid.java | 28 +-- .../java/com/hbm/main/ModEventHandler.java | 3 +- .../machine/pile/TileEntityPileBase.java | 15 +- .../machine/rbmk/TileEntityRBMKBase.java | 28 +-- .../machine/rbmk/TileEntityRBMKRod.java | 74 ++++---- .../machine/rbmk/TileEntityRBMKRodReaSim.java | 10 +- 12 files changed, 321 insertions(+), 292 deletions(-) diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java index 234a2a4b9..6dba321ce 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKBase.java @@ -58,31 +58,31 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo public int getOffset() { return 0; } - + public boolean openInv(World world, int x, int y, int z, EntityPlayer player) { - + if(world.isRemote) { return true; } - + int[] pos = this.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityRBMKBase)) return false; - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ItemRBMKLid) { - + if(!rbmk.hasLid()) return false; } - + if(!player.isSneaking()) { FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, pos[0], pos[1], pos[2]); return true; @@ -93,27 +93,27 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - + float height = 0.0F; - + int[] pos = this.findCore(world, x, y, z); - + if(pos != null) { TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(te instanceof TileEntityRBMKBase) { - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; - + if(rbmk.hasLid()) { height += 0.25F; } } } - + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY + height, z + this.maxZ); } - + /* * NORTH: no cover * EAST: concrete cover @@ -130,21 +130,21 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(world), this, dir); this.makeExtra(world, x, y + RBMKDials.getColumnHeight(world), z); } - + @Override protected ForgeDirection getDirModified(ForgeDirection dir) { return DIR_NO_LID; } - + public int[] getDimensions(World world) { return new int[] {RBMKDials.getColumnHeight(world), 0, 0, 0, 0, 0}; } @Override public void breakBlock(World world, int x, int y, int z, Block b, int i) { - + if(!world.isRemote && dropLids) { - + if(i == DIR_NORMAL_LID.ordinal() + offset) { world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5 + RBMKDials.getColumnHeight(world), z + 0.5, new ItemStack(ModItems.rbmk_lid))); } @@ -152,32 +152,32 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5 + RBMKDials.getColumnHeight(world), z + 0.5, new ItemStack(ModItems.rbmk_lid_glass))); } } - + super.breakBlock(world, x, y, z, b, i); } - + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { - + if(tool != ToolType.SCREWDRIVER) return false; - + int[] pos = this.findCore(world, x, y, z); - + if(pos != null) { TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(te instanceof TileEntityRBMKBase) { - + TileEntityRBMKBase rbmk = (TileEntityRBMKBase) te; int i = rbmk.getBlockMetadata(); - + if(rbmk.hasLid() && rbmk.isLidRemovable()) { - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(new BlockPos(te)); - if (node != null) + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(world, new BlockPos(te)); + if(node != null) node.removeLid(); - + if(!world.isRemote) { if(i == DIR_NORMAL_LID.ordinal() + offset) { world.spawnEntityInWorld(new EntityItem(world, pos[0] + 0.5, pos[1] + 0.5 + RBMKDials.getColumnHeight(world), pos[2] + 0.5, new ItemStack(ModItems.rbmk_lid))); @@ -185,15 +185,15 @@ public abstract class RBMKBase extends BlockDummyable implements IToolable, ILoo if(i == DIR_GLASS_LID.ordinal() + offset) { world.spawnEntityInWorld(new EntityItem(world, pos[0] + 0.5, pos[1] + 0.5 + RBMKDials.getColumnHeight(world), pos[2] + 0.5, new ItemStack(ModItems.rbmk_lid_glass))); } - - world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], DIR_NO_LID.ordinal() + this.offset, 3); + + world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], DIR_NO_LID.ordinal() + offset, 3); } - + return true; } } } - + return false; } diff --git a/src/main/java/com/hbm/handler/neutron/NeutronHandler.java b/src/main/java/com/hbm/handler/neutron/NeutronHandler.java index efc536f2e..d05472427 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronHandler.java @@ -1,13 +1,10 @@ package com.hbm.handler.neutron; import com.hbm.tileentity.machine.rbmk.RBMKDials; -import com.hbm.util.fauxpointtwelve.BlockPos; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; import net.minecraft.world.World; -import java.util.ArrayList; -import java.util.List; import java.util.Map; @@ -21,20 +18,16 @@ public class NeutronHandler { if(event.phase != TickEvent.Phase.START) return; + // Freshen the node cache every `cacheTime` ticks to prevent huge RAM usage from idle nodes. + int cacheTime = 20; + boolean cacheClear = ticks >= cacheTime; + if(cacheClear) ticks = 0; + ticks++; + // Remove `StreamWorld` objects if they have no streams. - { // aflghdkljghlkbhfjkghgilurbhlkfjghkffdjgn - List toRemove = new ArrayList<>(); - NeutronNodeWorld.streamWorlds.forEach((world, streamWorld) -> { - if (streamWorld.streams.isEmpty()) - toRemove.add(world); - }); + NeutronNodeWorld.removeEmptyWorlds(); - for (World world : toRemove) { - NeutronNodeWorld.streamWorlds.remove(world); - } - } - - for (Map.Entry world : NeutronNodeWorld.streamWorlds.entrySet()) { + for(Map.Entry world : NeutronNodeWorld.streamWorlds.entrySet()) { // Gamerule caching because this apparently is kinda slow? // meh, good enough @@ -48,33 +41,10 @@ public class NeutronHandler { RBMKNeutronHandler.columnHeight = RBMKDials.getColumnHeight(world.getKey()) + 1; RBMKNeutronHandler.fluxRange = RBMKDials.getFluxRange(world.getKey()); - for (NeutronStream stream : world.getValue().streams) { - stream.runStreamInteraction(world.getKey()); - } + world.getValue().runStreamInteractions(world.getKey()); world.getValue().removeAllStreams(); + + if(cacheClear) world.getValue().cleanNodes(); } - - // Freshen the node cache every `cacheTime` ticks to prevent huge RAM usage from idle nodes. - int cacheTime = 20; - if (ticks >= cacheTime) { - ticks = 0; - List toRemove = new ArrayList<>(); - for (NeutronNode cachedNode : NeutronNodeWorld.nodeCache.values()) { - if (cachedNode.type == NeutronStream.NeutronType.RBMK) { - RBMKNeutronHandler.RBMKNeutronNode node = (RBMKNeutronHandler.RBMKNeutronNode) cachedNode; - toRemove.addAll(node.checkNode()); - } - /* TODO: actually do this and uncache pile nodes - if (cachedNode.type == NeutronStream.NeutronType.PILE) { - PileNeutronNode node = (PileNeutronNode) cachedNode; - toRemove.addAll(node.checkNode()); - } - */ - } - - toRemove.forEach(NeutronNodeWorld::removeNode); - - } - ticks++; } } diff --git a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java index 1f544ae7f..6dcbb4684 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java @@ -8,55 +8,94 @@ import java.util.HashMap; import java.util.List; public class NeutronNodeWorld { - // HashMap of all neutron nodes and their positions. - protected static HashMap nodeCache = new HashMap<>(); - - public static void addNode(NeutronNode node) { - nodeCache.put(node.pos, node); - } - - public static void removeNode(BlockPos position) { - nodeCache.remove(position); - } - - public static NeutronNode getNode(BlockPos position) { - return nodeCache.get(position); - } - - public static void removeAllNodes() { - nodeCache.clear(); - } // List of all stream worlds. public static HashMap streamWorlds = new HashMap<>(); - public static class StreamWorld { + public static NeutronNode getNode(World world, BlockPos pos) { + StreamWorld streamWorld = streamWorlds.get(world); + return streamWorld != null ? streamWorld.nodeCache.get(pos) : null; + } - List streams; + public static void addNode(World world, NeutronNode node) { + StreamWorld streamWorld = getOrAddWorld(world); + streamWorld.nodeCache.put(node.pos, node); + } - public StreamWorld() { - streams = new ArrayList<>(); - } - - public void addStream(NeutronStream stream) { - this.streams.add(stream); - } - - public void removeAllStreams() { - this.streams.clear(); - } - - public void removeAllStreamsOfType(NeutronStream.NeutronType type) { - List toRemove = new ArrayList<>(); - for (NeutronStream stream : streams) { - if (stream.type == type) - toRemove.add(stream); - } - toRemove.forEach((stream) -> streams.remove(stream)); + public static void removeNode(World world, BlockPos pos) { + StreamWorld streamWorld = streamWorlds.get(world); + if(streamWorld == null) return; + streamWorld.removeNode(pos); + } + + public static StreamWorld getOrAddWorld(World world) { + StreamWorld streamWorld = streamWorlds.get(world); + if(streamWorld == null) { + streamWorld = new StreamWorld(); + streamWorlds.put(world, streamWorld); } + return streamWorld; } public static void removeAllWorlds() { streamWorlds.clear(); } + + public static void removeEmptyWorlds() { + streamWorlds.values().removeIf((streamWorld) -> { + return streamWorld.streams.isEmpty(); + }); + } + + public static class StreamWorld { + + private List streams; + private HashMap nodeCache = new HashMap<>(); + + public StreamWorld() { + streams = new ArrayList<>(); + } + + public void runStreamInteractions(World world) { + for(NeutronStream stream : streams) { + stream.runStreamInteraction(world); + } + } + + public void addStream(NeutronStream stream) { + streams.add(stream); + } + + public void removeAllStreams() { + streams.clear(); + } + + public void cleanNodes() { + List toRemove = new ArrayList<>(); + for(NeutronNode cachedNode : nodeCache.values()) { + if(cachedNode.type == NeutronStream.NeutronType.RBMK) { + RBMKNeutronHandler.RBMKNeutronNode node = (RBMKNeutronHandler.RBMKNeutronNode) cachedNode; + toRemove.addAll(node.checkNode()); + } + /* TODO: actually do this and uncache pile nodes + if(cachedNode.type == NeutronStream.NeutronType.PILE) { + PileNeutronNode node = (PileNeutronNode) cachedNode; + toRemove.addAll(node.checkNode()); + } + */ + } + + for(BlockPos pos : toRemove) { + nodeCache.remove(pos); + } + } + + public void removeNode(BlockPos pos) { + nodeCache.remove(pos); + } + + public void removeAllStreamsOfType(NeutronStream.NeutronType type) { + streams.removeIf(stream -> stream.type == type); + } + } } diff --git a/src/main/java/com/hbm/handler/neutron/NeutronStream.java b/src/main/java/com/hbm/handler/neutron/NeutronStream.java index 7de1cc4aa..6ef167910 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronStream.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronStream.java @@ -3,7 +3,6 @@ package com.hbm.handler.neutron; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.util.Vec3; import net.minecraft.world.World; -import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import java.util.Iterator; @@ -43,13 +42,8 @@ public abstract class NeutronStream { this.fluxQuantity = flux; this.fluxRatio = ratio; this.type = type; - World worldObj = origin.tile.getWorldObj(); - if (NeutronNodeWorld.streamWorlds.get(worldObj) == null) { - StreamWorld world = new StreamWorld(); - world.addStream(this); - NeutronNodeWorld.streamWorlds.put(worldObj, world); - } else - NeutronNodeWorld.streamWorlds.get(worldObj).addStream(this); + + NeutronNodeWorld.getOrAddWorld(origin.tile.getWorldObj()).addStream(this); } protected BlockPos posInstance; diff --git a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java index 56913bc91..843b878a2 100644 --- a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java @@ -28,9 +28,8 @@ public class PileNeutronHandler { public static PileNeutronNode makeNode(TileEntityPileBase tile) { BlockPos pos = new BlockPos(tile); - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - return (PileNeutronNode) NeutronNodeWorld.getNode(pos); - return new PileNeutronNode(tile); + PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(tile.getWorldObj(), pos); + return node != null ? node : new PileNeutronNode(tile); } private static TileEntity blockPosToTE(World worldObj, BlockPos pos) { @@ -43,6 +42,7 @@ public class PileNeutronHandler { super(origin, vector, flux, 0D, NeutronType.PILE); } + @SuppressWarnings("unchecked") @Override public void runStreamInteraction(World worldObj) { @@ -51,27 +51,29 @@ public class PileNeutronHandler { for(float i = 1; i <= range; i += 0.5F) { - BlockPos node = new BlockPos( + BlockPos nodePos = new BlockPos( (int)Math.floor(pos.getX() + 0.5 + vector.xCoord * i), (int)Math.floor(pos.getY() + 0.5 + vector.yCoord * i), (int)Math.floor(pos.getZ() + 0.5 + vector.zCoord * i) ); - if(node.equals(pos)) + if(nodePos.equals(pos)) continue; // don't interact with itself! - pos.mutate(node.getX(), node.getY(), node.getZ()); + pos.mutate(nodePos.getX(), nodePos.getY(), nodePos.getZ()); TileEntity tile; - if (NeutronNodeWorld.nodeCache.containsKey(node)) - tile = NeutronNodeWorld.nodeCache.get(node).tile; - else { - tile = blockPosToTE(worldObj, node); - if (tile == null) - return; // Doesn't exist! - if (tile instanceof TileEntityPileBase) - NeutronNodeWorld.addNode(new PileNeutronNode((TileEntityPileBase) tile)); + NeutronNode node = NeutronNodeWorld.getNode(worldObj, nodePos); + if(node != null) { + tile = node.tile; + } else { + tile = blockPosToTE(worldObj, nodePos); + if(tile == null) return; + + if(tile instanceof TileEntityPileBase) { + NeutronNodeWorld.addNode(worldObj, new PileNeutronNode((TileEntityPileBase) tile)); + } } Block block = tile.getBlockType(); @@ -79,17 +81,17 @@ public class PileNeutronHandler { if(!(tile instanceof TileEntityPileBase)) { // Return when a boron block is hit - if (block == ModBlocks.block_boron) + if(block == ModBlocks.block_boron) return; - else if (block == ModBlocks.concrete || + else if(block == ModBlocks.concrete || block == ModBlocks.concrete_smooth || block == ModBlocks.concrete_asbestos || block == ModBlocks.concrete_colored || block == ModBlocks.brick_concrete) fluxQuantity *= 0.25; - if (block == ModBlocks.block_graphite_rod && (meta & 8) == 0) + if(block == ModBlocks.block_graphite_rod && (meta & 8) == 0) return; } @@ -102,9 +104,9 @@ public class PileNeutronHandler { return; } - int x = (int) (node.getX() + 0.5); - int y = (int) (node.getY() + 0.5); - int z = (int) (node.getZ() + 0.5); + int x = (int) (nodePos.getX() + 0.5); + int y = (int) (nodePos.getY() + 0.5); + int z = (int) (nodePos.getZ() + 0.5); List entities = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(x, y, z, x, y, z)); if(entities != null) diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java index d3f883589..aa3574361 100644 --- a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -39,9 +39,8 @@ public class RBMKNeutronHandler { public static RBMKNeutronNode makeNode(TileEntityRBMKBase tile) { BlockPos pos = new BlockPos(tile); - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - return (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); - return new RBMKNeutronNode(tile, tile.getRBMKType(), tile.hasLid()); + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(tile.getWorldObj(), pos); + return node != null ? node : new RBMKNeutronNode(tile, tile.getRBMKType(), tile.hasLid()); } public static class RBMKNeutronNode extends NeutronNode { @@ -79,16 +78,16 @@ public class RBMKNeutronHandler { @Override public BlockPos next() { - if (Math.pow(x, 2) + Math.pow(z, 2) <= fluxRange * fluxRange) { + if(Math.pow(x, 2) + Math.pow(z, 2) <= fluxRange * fluxRange) { z++; - if (z > fluxRange) { + if(z > fluxRange) { z = -fluxRange; x++; } return posInstance.mutate(tile.xCoord + x, tile.yCoord, tile.zCoord + z); } else { z++; - if (z > fluxRange) { + if(z > fluxRange) { z = -fluxRange; x++; } @@ -102,23 +101,24 @@ public class RBMKNeutronHandler { List list = new ArrayList<>(); BlockPos pos = new BlockPos(this.tile); + World world = tile.getWorldObj(); RBMKNeutronStream[] streams = new RBMKNeutronStream[TileEntityRBMKRod.fluxDirs.length]; // Simulate streams coming out of the RBMK rod. ForgeDirection[] fluxDirs = TileEntityRBMKRod.fluxDirs; - for (int i = 0; i < fluxDirs.length; i++) { + for(int i = 0; i < fluxDirs.length; i++) { streams[i] = (new RBMKNeutronStream(this, Vec3.createVectorHelper(fluxDirs[i].offsetX, 0, fluxDirs[i].offsetZ))); } // Check if the rod should uncache nodes. - if (tile instanceof TileEntityRBMKRod && !(tile instanceof TileEntityRBMKRodReaSim)) { + if(tile instanceof TileEntityRBMKRod && !(tile instanceof TileEntityRBMKRodReaSim)) { TileEntityRBMKRod rod = (TileEntityRBMKRod) tile; - if (!rod.hasRod || rod.lastFluxQuantity == 0) { + if(!rod.hasRod || rod.lastFluxQuantity == 0) { - for (RBMKNeutronStream stream : streams) { - for(RBMKNeutronNode node : stream.getNodes(false)) - if (node != null) + for(RBMKNeutronStream stream : streams) { + for(NeutronNode node : stream.getNodes(false)) + if(node != null) list.add(new BlockPos(node.tile)); } @@ -130,11 +130,11 @@ public class RBMKNeutronHandler { Iterator reaSimNodes = getReaSimNodes(); // Check if the ReaSim rod should be culled from the cache due to no rod or no flux. - if (tile instanceof TileEntityRBMKRodReaSim) { // fuckkkkkkk + if(tile instanceof TileEntityRBMKRodReaSim) { // fuckkkkkkk TileEntityRBMKRodReaSim rod = (TileEntityRBMKRodReaSim) tile; - if (!rod.hasRod || rod.lastFluxQuantity == 0) { + if(!rod.hasRod || rod.lastFluxQuantity == 0) { reaSimNodes.forEachRemaining((a) -> { - if (a != null) + if(a != null) list.add(a.clone()); // ae The RAM usage will be really high here but hopefully the GC can take care of it :pray: }); return list; @@ -155,32 +155,32 @@ public class RBMKNeutronHandler { if(nodePos == null) continue; - NeutronNode node = NeutronNodeWorld.nodeCache.get(nodePos); + NeutronNode node = NeutronNodeWorld.getNode(world, nodePos); - if (node != null && node.tile instanceof TileEntityRBMKRod) { + if(node != null && node.tile instanceof TileEntityRBMKRod) { TileEntityRBMKRod rod = (TileEntityRBMKRod) node.tile; - if (rod.hasRod && rod.lastFluxQuantity > 0) { + if(rod.hasRod && rod.lastFluxQuantity > 0) { hasRod = true; break; } } } - if (!hasRod) { + if(!hasRod) { list.add(pos); return list; } } // Check if non-rod nodes should be uncached due to no rod in range. - for (RBMKNeutronStream stream : streams) { + for(RBMKNeutronStream stream : streams) { - RBMKNeutronNode[] nodes = stream.getNodes(false); + NeutronNode[] nodes = stream.getNodes(false); - for (RBMKNeutronNode node : nodes) { - if (!(node == null) && node.tile instanceof TileEntityRBMKRod) + for(NeutronNode node : nodes) { + if(!(node == null) && node.tile instanceof TileEntityRBMKRod) return list; } } @@ -209,28 +209,28 @@ public class RBMKNeutronHandler { // Does NOT include the origin node // USES THE CACHE!!! - public RBMKNeutronNode[] getNodes(boolean addNode) { - RBMKNeutronNode[] positions = new RBMKNeutronNode[fluxRange]; + public NeutronNode[] getNodes(boolean addNode) { + NeutronNode[] positions = new RBMKNeutronNode[fluxRange]; BlockPos pos = new BlockPos(origin.tile); + World world = origin.tile.getWorldObj(); - for (int i = 1; i <= fluxRange; i++) { + for(int i = 1; i <= fluxRange; i++) { int x = (int) Math.floor(0.5 + vector.xCoord * i); int z = (int) Math.floor(0.5 + vector.zCoord * i); pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - positions[i - 1] = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); - - else if (this.origin.tile.getBlockType() instanceof RBMKBase) { - TileEntity te = blockPosToTE(this.origin.tile.getWorldObj(), pos); - if (te instanceof TileEntityRBMKBase) { + NeutronNode node = NeutronNodeWorld.getNode(world, pos); + if(node != null) { + positions[i - 1] = node; + } else if(this.origin.tile.getBlockType() instanceof RBMKBase) { + TileEntity te = blockPosToTE(world, pos); + if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase rbmkBase = (TileEntityRBMKBase) te; - RBMKNeutronNode node = makeNode(rbmkBase); + node = makeNode(rbmkBase); positions[i - 1] = node; - if (addNode) - NeutronNodeWorld.addNode(node); + if(addNode) NeutronNodeWorld.addNode(world, node); } } } @@ -241,20 +241,21 @@ public class RBMKNeutronHandler { public void runStreamInteraction(World worldObj) { // do nothing if there's nothing to do lmao - if (fluxQuantity == 0D) + if(fluxQuantity == 0D) return; BlockPos pos = new BlockPos(origin.tile); TileEntityRBMKBase originTE; - if (NeutronNodeWorld.nodeCache.containsKey(pos)) - originTE = (TileEntityRBMKBase) NeutronNodeWorld.nodeCache.get(pos).tile; - else { + NeutronNode node = NeutronNodeWorld.getNode(worldObj, pos); + if(node != null) { + originTE = (TileEntityRBMKBase) node.tile; + } else { originTE = (TileEntityRBMKBase) blockPosToTE(worldObj, pos); - if (originTE == null) - return; // Doesn't exist anymore! - NeutronNodeWorld.addNode(new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); + if(originTE == null) return; // Doesn't exist anymore! + + NeutronNodeWorld.addNode(worldObj, new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); } int moderatedCount = 0; @@ -263,23 +264,22 @@ public class RBMKNeutronHandler { while(iterator.hasNext()) { - BlockPos nodePos = iterator.next(); + BlockPos targetPos = iterator.next(); - if (fluxQuantity == 0D) // Whoops, used it all up! + if(fluxQuantity == 0D) // Whoops, used it all up! return; - RBMKNeutronNode node; - - if (!NeutronNodeWorld.nodeCache.containsKey(nodePos)) { - TileEntity te = blockPosToTE(worldObj, nodePos); // ok, maybe it didn't get added to the list somehow?? - if (te instanceof TileEntityRBMKBase) { - node = makeNode((TileEntityRBMKBase) te); - NeutronNodeWorld.addNode(node); // whoops! + NeutronNode targetNode = NeutronNodeWorld.getNode(worldObj, targetPos); + if(targetNode == null) { + TileEntity te = blockPosToTE(worldObj, targetPos); // ok, maybe it didn't get added to the list somehow?? + if(te instanceof TileEntityRBMKBase) { + targetNode = makeNode((TileEntityRBMKBase) te); + NeutronNodeWorld.addNode(worldObj, targetNode); // whoops! } else { - int hits = getHits(nodePos); // Get the amount of hits on blocks. - if (hits == columnHeight) // If stream is fully blocked. + int hits = getHits(targetPos); // Get the amount of hits on blocks. + if(hits == columnHeight) // If stream is fully blocked. return; - else if (hits > 0) { // If stream is partially blocked. + else if(hits > 0) { // If stream is partially blocked. irradiateFromFlux(pos, hits); fluxQuantity *= 1 - ((double) hits / columnHeight); // Inverse to get partial blocking by blocks. continue; @@ -290,81 +290,79 @@ public class RBMKNeutronHandler { } } - node = (RBMKNeutronNode) NeutronNodeWorld.nodeCache.get(nodePos); + RBMKType type = (RBMKType) targetNode.data.get("type"); - RBMKType type = (RBMKType) node.data.get("type"); - - if (type == RBMKType.OTHER) // pass right on by! + if(type == RBMKType.OTHER) // pass right on by! continue; // we established earlier during `getNodes()` that they should all be RBMKBase TEs // no issue with casting here! - TileEntityRBMKBase nodeTE = (TileEntityRBMKBase) node.tile; + TileEntityRBMKBase nodeTE = (TileEntityRBMKBase) targetNode.tile; - if (!(boolean) node.data.get("hasLid")) - ChunkRadiationManager.proxy.incrementRad(worldObj, nodePos.getX(), nodePos.getY(), nodePos.getZ(), (float) (this.fluxQuantity * 0.05F)); + if(!(boolean) targetNode.data.get("hasLid")) + ChunkRadiationManager.proxy.incrementRad(worldObj, targetPos.getX(), targetPos.getY(), targetPos.getZ(), (float) (this.fluxQuantity * 0.05F)); - if (type == RBMKType.MODERATOR || nodeTE.isModerated()) { + if(type == RBMKType.MODERATOR || nodeTE.isModerated()) { moderatedCount++; moderateStream(); } - if (nodeTE instanceof IRBMKFluxReceiver) { + if(nodeTE instanceof IRBMKFluxReceiver) { IRBMKFluxReceiver column = (IRBMKFluxReceiver) nodeTE; - if (type == RBMKType.ROD) { + if(type == RBMKType.ROD) { TileEntityRBMKRod rod = (TileEntityRBMKRod) column; - if (rod.hasRod) { + if(rod.hasRod) { rod.receiveFlux(this); return; } - } else if (type == RBMKType.OUTGASSER) { + } else if(type == RBMKType.OUTGASSER) { TileEntityRBMKOutgasser outgasser = ((TileEntityRBMKOutgasser) column); - if (outgasser.canProcess()) { + if(outgasser.canProcess()) { column.receiveFlux(this); return; } } - } else if (type == RBMKType.CONTROL_ROD) { + } else if(type == RBMKType.CONTROL_ROD) { TileEntityRBMKControl rod = (TileEntityRBMKControl) nodeTE; - if (rod.level > 0.0D) { + if(rod.level > 0.0D) { this.fluxQuantity *= rod.getMult(); continue; } return; - } else if (type == RBMKType.REFLECTOR) { + } else if(type == RBMKType.REFLECTOR) { - if (((TileEntityRBMKBase) this.origin.tile).isModerated()) + if(((TileEntityRBMKBase) this.origin.tile).isModerated()) moderatedCount++; - if (this.fluxRatio > 0 && moderatedCount > 0) - for (int i = 0; i < moderatedCount; i++) + if(this.fluxRatio > 0 && moderatedCount > 0) + for(int i = 0; i < moderatedCount; i++) moderateStream(); - if (reflectorEfficiency != 1.0D) { + if(reflectorEfficiency != 1.0D) { this.fluxQuantity *= reflectorEfficiency; continue; } ((TileEntityRBMKRod) originTE).receiveFlux(this); return; - } else if (type == RBMKType.ABSORBER) { - if (absorberEfficiency == 1) + } else if(type == RBMKType.ABSORBER) { + if(absorberEfficiency == 1) return; this.fluxQuantity *= absorberEfficiency; } } - RBMKNeutronNode[] nodes = getNodes(true); + NeutronNode[] nodes = getNodes(true); - RBMKNeutronNode lastNode = nodes[(nodes.length - 1)]; + NeutronNode lastNode = nodes[(nodes.length - 1)]; if(lastNode == null) { // This implies that there was *no* last node, meaning either way it was never caught. // There is really no good way to figure out where exactly it should irradiate, so just irradiate at the origin tile. @@ -374,9 +372,9 @@ public class RBMKNeutronHandler { RBMKType lastNodeType = (RBMKType) lastNode.data.get("type"); - if (lastNodeType == RBMKType.CONTROL_ROD) { + if(lastNodeType == RBMKType.CONTROL_ROD) { TileEntityRBMKControl rod = (TileEntityRBMKControl) lastNode.tile; - if (rod.getMult() > 0.0D) { + if(rod.getMult() > 0.0D) { this.fluxQuantity *= rod.getMult(); irradiateFromFlux(new BlockPos(lastNode.tile.xCoord + this.vector.xCoord, lastNode.tile.yCoord, lastNode.tile.zCoord + this.vector.zCoord)); } @@ -392,7 +390,7 @@ public class RBMKNeutronHandler { // I FUCKING HATE THIS // total count of bugs fixed attributed to this function: 13 Block block = origin.tile.getWorldObj().getBlock(pos.getX(), pos.getY() + h, pos.getZ()); - if (block.isOpaqueCube()) + if(block.isOpaqueCube()) hits += 1; } diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKLid.java b/src/main/java/com/hbm/items/machine/ItemRBMKLid.java index 853fe918f..87e59ca73 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKLid.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKLid.java @@ -20,46 +20,46 @@ public class ItemRBMKLid extends Item { @Override public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float fx, float fy, float fz) { - + Block b = world.getBlock(x, y, z); - + if(b instanceof RBMKBase) { RBMKBase rbmk = (RBMKBase) b; - + int[] pos = rbmk.findCore(world, x, y, z); - + if(pos == null) return false; - + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); - + if(!(te instanceof TileEntityRBMKBase)) return false; - + TileEntityRBMKBase tile = (TileEntityRBMKBase) te; - + if(tile.hasLid()) return false; - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(new BlockPos(te)); - if (node != null) + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(world, new BlockPos(te)); + if(node != null) node.addLid(); int meta = RBMKBase.DIR_NORMAL_LID.ordinal(); - + if(this == ModItems.rbmk_lid_glass) { meta = RBMKBase.DIR_GLASS_LID.ordinal(); world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, Blocks.glass.stepSound.func_150496_b(), (Blocks.glass.stepSound.getVolume() + 1.0F) / 2.0F, Blocks.glass.stepSound.getPitch() * 0.8F); } else { world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, ModBlocks.concrete_smooth.stepSound.func_150496_b(), (ModBlocks.concrete_smooth.stepSound.getVolume() + 1.0F) / 2.0F, ModBlocks.concrete_smooth.stepSound.getPitch() * 0.8F); } - + world.setBlockMetadataWithNotify(pos[0], pos[1], pos[2], meta + RBMKBase.offset, 3); stack.stackSize--; - + return true; } - + return false; } } diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 567ca1edc..292c2a435 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -566,8 +566,7 @@ public class ModEventHandler { @SubscribeEvent public void onUnload(WorldEvent.Unload event) { - NeutronNodeWorld.removeAllWorlds(); // Remove world from worlds when unloaded to avoid world issues. - NeutronNodeWorld.removeAllNodes(); // Remove all nodes. + NeutronNodeWorld.streamWorlds.remove(event.world); } public static boolean didSit = false; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index 0463be416..261c91a0a 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -17,25 +17,30 @@ public abstract class TileEntityPileBase extends TileEntity { @Override public void invalidate() { super.invalidate(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); + } - NeutronNodeWorld.removeNode(new BlockPos(this)); + @Override + public void onChunkUnload() { + super.onChunkUnload(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); } protected void castRay(int flux) { BlockPos pos = new BlockPos(this); - if (flux == 0) { + if(flux == 0) { // simple way to remove the node from the cache when no flux is going into it! - NeutronNodeWorld.removeNode(pos); + NeutronNodeWorld.removeNode(worldObj, pos); return; } - PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(pos); + PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(worldObj, pos); if(node == null) { node = PileNeutronHandler.makeNode(this); - NeutronNodeWorld.addNode(node); + NeutronNodeWorld.addNode(worldObj, node); } Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java index f345b29b5..f196cd5bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -14,7 +14,6 @@ import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.saveddata.TomSaveData; -import com.hbm.tileentity.IBufPacketReceiver; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; @@ -54,7 +53,7 @@ import java.util.Iterator; * @author hbm * */ -public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements IBufPacketReceiver { +public abstract class TileEntityRBMKBase extends TileEntityLoadedBase { public double heat; @@ -133,12 +132,12 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements double heatConsumption = RBMKDials.getBoilerHeatConsumption(worldObj); double availableHeat = (this.heat - 100) / heatConsumption; double availableWater = this.water; - double availableSpace = this.maxSteam - this.steam; + double availableSpace = maxSteam - this.steam; int processedWater = (int) Math.floor(BobMathUtil.min(availableHeat, availableWater, availableSpace) * MathHelper.clamp_double(RBMKDials.getReaSimBoilerSpeed(worldObj), 0D, 1D)); if(processedWater <= 0) return; - + this.water -= processedWater; this.steam += processedWater; this.heat -= processedWater * heatConsumption; @@ -161,7 +160,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements if(heat == 20 && RBMKDials.getReasimBoilers(worldObj)) return; - List rec = new ArrayList(); + List rec = new ArrayList<>(); rec.add(this); double heatTot = this.heat; int waterTot = this.water; @@ -227,8 +226,13 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements @Override public void invalidate() { super.invalidate(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); // woo-fucking-hoo!!! + } - NeutronNodeWorld.removeNode(new BlockPos(this)); // woo-fucking-hoo!!! + @Override + public void onChunkUnload() { + super.onChunkUnload(); + NeutronNodeWorld.removeNode(worldObj, new BlockPos(this)); // woo-fucking-hoo!!! } @Override @@ -304,6 +308,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements diag = false; } + @SuppressWarnings("unchecked") @SideOnly(Side.CLIENT) public static void diagnosticPrintHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { @@ -326,7 +331,7 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements int pX = resolution.getScaledWidth() / 2 + 8; int pZ = resolution.getScaledHeight() / 2; - List exceptions = new ArrayList(); + List exceptions = new ArrayList<>(); exceptions.add("x"); exceptions.add("y"); exceptions.add("z"); @@ -416,10 +421,11 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements worldObj.spawnEntityInWorld(debris); } - public static HashSet columns = new HashSet(); - public static HashSet pipes = new HashSet(); + public static HashSet columns = new HashSet<>(); + public static HashSet pipes = new HashSet<>(); //assumes that !worldObj.isRemote + @SuppressWarnings("unchecked") public void meltdown() { RBMKBase.dropLids = false; @@ -483,8 +489,8 @@ public abstract class TileEntityRBMKBase extends TileEntityLoadedBase implements /* Hanlde overpressure event */ if(RBMKDials.getOverpressure(worldObj) && !pipes.isEmpty()) { - HashSet pipeBlocks = new HashSet(); - HashSet pipeReceivers = new HashSet(); + HashSet pipeBlocks = new HashSet<>(); + HashSet pipeReceivers = new HashSet<>(); //unify all parts into single sets to prevent redundancy pipes.forEach(x -> { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index b32166fcf..52ab2a91e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -15,6 +15,7 @@ import com.hbm.inventory.gui.GUIRBMKRod; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.BufferUtil; import com.hbm.util.CompatEnergyControl; import com.hbm.util.ParticleUtil; @@ -27,7 +28,6 @@ import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; -import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -41,7 +41,7 @@ import java.util.ArrayList; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, IInfoProviderEC, CompatHandler.OCComponent { // New system!! // Used for receiving flux (calculating outbound flux/burning rods) @@ -52,6 +52,11 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public boolean hasRod; + // Fuel rod item data client sync + private String fuelYield; + private String fuelXenon; + private String fuelHeat; + public TileEntityRBMKRod() { super(1); } @@ -94,7 +99,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM // Experimental flux ratio curve rods! // Again, nothing really uses this so its just idle code at the moment. - if (rod.specialFluxCurve) { + if(rod.specialFluxCurve) { fluxRatioOut = rod.fluxRatioOut(this.fluxFastRatio, ItemRBMKRod.getEnrichment(slots[0])); @@ -105,7 +110,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM fluxQuantityOut = rod.burn(worldObj, slots[0], fluxIn); } else { NType rType = rod.rType; - if (rType == NType.SLOW) + if(rType == NType.SLOW) fluxRatioOut = 0; else fluxRatioOut = 1; @@ -168,7 +173,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM double fastFlux = this.fluxQuantity * this.fluxFastRatio; double slowFlux = this.fluxQuantity * (1 - this.fluxFastRatio); - + switch(type) { case SLOW: return slowFlux + fastFlux * 0.5; case FAST: return fastFlux + slowFlux * 0.3; @@ -192,17 +197,17 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(pos == null) pos = new BlockPos(this); - if (flux == 0) { + if(flux == 0) { // simple way to remove the node from the cache when no flux is going into it! - NeutronNodeWorld.removeNode(pos); + NeutronNodeWorld.removeNode(worldObj, pos); return; } - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(worldObj, pos); if(node == null) { node = RBMKNeutronHandler.makeNode(this); - NeutronNodeWorld.addNode(node); + NeutronNodeWorld.addNode(worldObj, node); } for(ForgeDirection dir : fluxDirs) { @@ -218,10 +223,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - if (nbt.hasKey("fluxFast") || nbt.hasKey("fluxSlow")) { + if(nbt.hasKey("fluxFast") || nbt.hasKey("fluxSlow")) { // recalculate new values to keep stable operations this.fluxQuantity = nbt.getDouble("fluxFast") + nbt.getDouble("fluxSlow"); - if (this.fluxQuantity > 0) + if(this.fluxQuantity > 0) this.fluxFastRatio = nbt.getDouble("fluxFast") / fluxQuantity; else this.fluxFastRatio = 0; @@ -236,7 +241,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - if (!diag) { + if(!diag) { nbt.setDouble("fluxQuantity", this.lastFluxQuantity); nbt.setDouble("fluxMod", this.lastFluxRatio); } else { @@ -252,6 +257,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM buf.writeDouble(this.lastFluxQuantity); buf.writeDouble(this.lastFluxRatio); buf.writeBoolean(this.hasRod); + if(this.hasRod) { + ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); + BufferUtil.writeString(buf, ItemRBMKRod.getYield(slots[0]) + " / " + rod.yield + " (" + (ItemRBMKRod.getEnrichment(slots[0]) * 100) + "%)"); + BufferUtil.writeString(buf, ItemRBMKRod.getPoison(slots[0]) + "%"); + BufferUtil.writeString(buf, ItemRBMKRod.getCoreHeat(slots[0]) + " / " + ItemRBMKRod.getHullHeat(slots[0]) + " / " + rod.meltingPoint); + } } @Override @@ -260,6 +271,13 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.fluxQuantity = buf.readDouble(); this.fluxFastRatio = buf.readDouble(); this.hasRod = buf.readBoolean(); + if(this.hasRod) { + fuelYield = BufferUtil.readString(buf); + fuelXenon = BufferUtil.readString(buf); + fuelHeat = BufferUtil.readString(buf); + } else { + fuelYield = fuelXenon = fuelHeat = null; + } } public void getDiagData(NBTTagCompound nbt) { @@ -267,13 +285,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM this.writeToNBT(nbt); diag = false; - if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - - ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); - - nbt.setString("f_yield", rod.getYield(slots[0]) + " / " + rod.yield + " (" + (rod.getEnrichment(slots[0]) * 100) + "%)"); - nbt.setString("f_xenon", rod.getPoison(slots[0]) + "%"); - nbt.setString("f_heat", rod.getCoreHeat(slots[0]) + " / " + rod.getHullHeat(slots[0]) + " / " + rod.meltingPoint); + if(fuelYield != null && fuelXenon != null && fuelHeat != null) { + nbt.setString("f_yield", fuelYield); + nbt.setString("f_xenon", fuelXenon); + nbt.setString("f_heat", fuelHeat); } } @@ -342,10 +357,10 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { ItemRBMKRod rod = ((ItemRBMKRod)slots[0].getItem()); - data.setDouble("enrichment", rod.getEnrichment(slots[0])); - data.setDouble("xenon", rod.getPoison(slots[0])); - data.setDouble("c_heat", rod.getHullHeat(slots[0])); - data.setDouble("c_coreHeat", rod.getCoreHeat(slots[0])); + data.setDouble("enrichment", ItemRBMKRod.getEnrichment(slots[0])); + data.setDouble("xenon", ItemRBMKRod.getPoison(slots[0])); + data.setDouble("c_heat", ItemRBMKRod.getHullHeat(slots[0])); + data.setDouble("c_coreHeat", ItemRBMKRod.getCoreHeat(slots[0])); data.setDouble("c_maxHeat", rod.meltingPoint); } @@ -459,14 +474,15 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM returnValues.add(ItemRBMKRod.getEnrichment(slots[0])); returnValues.add(ItemRBMKRod.getPoison(slots[0])); returnValues.add(slots[0].getItem().getUnlocalizedName()); - } else - for (int i = 0; i < 5; i++) - returnValues.add("N/A"); + } else { + for(int i = 0; i < 5; i++) returnValues.add("N/A"); + } return new Object[] { - heat, returnValues.get(0), returnValues.get(1), - fluxQuantity, fluxFastRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), - ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + heat, returnValues.get(0), returnValues.get(1), + fluxQuantity, fluxFastRatio, returnValues.get(2), returnValues.get(3), returnValues.get(4), + ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord + }; } @Callback(direct = true) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java index a23c5f2e3..c6b85e9c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java @@ -28,22 +28,22 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { if(pos == null) pos = new BlockPos(this); - if (flux == 0) { + if(flux == 0) { // simple way to remove the node from the cache when no flux is going into it! - NeutronNodeWorld.removeNode(pos); + NeutronNodeWorld.removeNode(worldObj, pos); return; } - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(pos); + RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(worldObj, pos); if(node == null) { node = makeNode(this); - NeutronNodeWorld.addNode(node); + NeutronNodeWorld.addNode(worldObj, node); } int count = RBMKDials.getReaSimCount(worldObj); - for (int i = 0; i < count; i++) { + for(int i = 0; i < count; i++) { Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); neutronVector.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); From a6b1a9068bde1aa161c873b744438e2a47f5649d Mon Sep 17 00:00:00 2001 From: George Paton Date: Wed, 26 Feb 2025 16:33:04 +1100 Subject: [PATCH 46/64] fix crash caused by placing piles immediately adjacent to RBMKs --- src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java | 2 +- src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java index 843b878a2..548d6d75b 100644 --- a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java @@ -65,7 +65,7 @@ public class PileNeutronHandler { TileEntity tile; NeutronNode node = NeutronNodeWorld.getNode(worldObj, nodePos); - if(node != null) { + if(node != null && node instanceof PileNeutronNode) { tile = node.tile; } else { tile = blockPosToTE(worldObj, nodePos); diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java index aa3574361..c22ffcddc 100644 --- a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -222,7 +222,7 @@ public class RBMKNeutronHandler { pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); NeutronNode node = NeutronNodeWorld.getNode(world, pos); - if(node != null) { + if(node != null && node instanceof RBMKNeutronNode) { positions[i - 1] = node; } else if(this.origin.tile.getBlockType() instanceof RBMKBase) { TileEntity te = blockPosToTE(world, pos); @@ -292,7 +292,7 @@ public class RBMKNeutronHandler { RBMKType type = (RBMKType) targetNode.data.get("type"); - if(type == RBMKType.OTHER) // pass right on by! + if(type == RBMKType.OTHER || type == null) // pass right on by! continue; // we established earlier during `getNodes()` that they should all be RBMKBase TEs From b3e8fad079d04ff0786e993c5fba9a0edd2c2a3e Mon Sep 17 00:00:00 2001 From: Vaern Date: Wed, 26 Feb 2025 00:21:06 -0800 Subject: [PATCH 47/64] added initial rotational momentums to casingCreator remind me tomorrow to set the rest of the constants n add a lil randomess --- .../weapon/sedna/factory/Orchestras.java | 20 ++++++++-------- .../hbm/particle/helper/CasingCreator.java | 23 +++++++++++++++---- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 505818c44..e55d04677 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -173,7 +173,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, 12.5F, 1.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); } @@ -244,7 +244,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, 12.5F, 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); } @@ -279,7 +279,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, 17.5F, 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); } @@ -300,7 +300,7 @@ public class Orchestras { if(timer == 14) { int offset = ctx.configIndex == 0 ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, 17.5F, 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); return; @@ -358,7 +358,7 @@ public class Orchestras { Receiver rec = ctx.config.getReceivers(stack)[0]; IMagazine mag = rec.getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, 2.5F, 5F, casing.getName()); } } if(type == AnimType.CYCLE) { @@ -384,7 +384,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 2) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, -10F, 2F, casing.getName(), true, 60, 0.5D, 20); } } if(type == AnimType.CYCLE_DRY) { @@ -479,7 +479,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, 15F, 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); } @@ -503,7 +503,7 @@ public class Orchestras { int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); if(timer == 4 && toEject > 0) { SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, 10F, 5F, casing.getName(), true, 60, 0.5D, 20); mag.setAmountAfterReload(stack, 0); } if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); @@ -1266,7 +1266,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, 20F, 2.5F, casing.getName(), true, 60, 0.5D, 20); } } @@ -1297,7 +1297,7 @@ public class Orchestras { if(timer == 1) { int cba = (stack.getItem() == ModItems.gun_aberrator_eott && ctx.configIndex == 0) ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.075, 0.25, 0, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.075, 0.25, 0, 0.01, -12.5F, 2.5F, casing.getName()); } } diff --git a/src/main/java/com/hbm/particle/helper/CasingCreator.java b/src/main/java/com/hbm/particle/helper/CasingCreator.java index cc8274079..aaa508df7 100644 --- a/src/main/java/com/hbm/particle/helper/CasingCreator.java +++ b/src/main/java/com/hbm/particle/helper/CasingCreator.java @@ -17,12 +17,23 @@ import net.minecraft.world.World; public class CasingCreator implements IParticleCreator { - /** Casing without smoke */ + //TODO give these + orchestra hardcoding a little bit of randomness cuz it looks off otherwise + /** Default casing without smoke */ public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing) { - composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, casing, false, 0, 0, 0); + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); + } + + /** Casing without smoke */ + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, float multPitch, float multYaw, String casing) { + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); + } + + /** Default casing, but with smoke*/ + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); } - public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { + public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, float mPitch, float mYaw, String casing, boolean smoking, int smokeLife, double smokeLift, int nodeLife) { if(player.isSneaking()) heightOffset -= 0.075F; @@ -51,6 +62,8 @@ public class CasingCreator implements IParticleCreator { data.setDouble("mZ", mZ); data.setFloat("yaw", player.rotationYaw); data.setFloat("pitch", player.rotationPitch); + data.setFloat("mPitch", mPitch); + data.setFloat("mYaw", mYaw); data.setString("name", casing); data.setBoolean("smoking", smoking); data.setInteger("smokeLife", smokeLife); @@ -71,11 +84,13 @@ public class CasingCreator implements IParticleCreator { double mZ = data.getDouble("mZ"); float yaw = data.getFloat("yaw"); float pitch = data.getFloat("pitch"); + float mPitch = data.getFloat("mPitch"); + float mYaw = data.getFloat("mYaw"); boolean smoking = data.getBoolean("smoking"); int smokeLife = data.getInteger("smokeLife"); double smokeLift = data.getDouble("smokeLift"); int nodeLife = data.getInteger("nodeLife"); - ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, (float) (world.rand.nextGaussian() * 10F), (float) (world.rand.nextGaussian() * 5F), casingConfig, smoking, smokeLife, smokeLift, nodeLife); + ParticleSpentCasing casing = new ParticleSpentCasing(texman, world, x, y, z, mX, mY, mZ, mPitch, mYaw, casingConfig, smoking, smokeLife, smokeLift, nodeLife); casing.prevRotationYaw = casing.rotationYaw = yaw; casing.prevRotationPitch = casing.rotationPitch = pitch; Minecraft.getMinecraft().effectRenderer.addEffect(casing); From 9da32595ff20b6a2fd47e0da5ef894d4d4405d3c Mon Sep 17 00:00:00 2001 From: George Paton Date: Wed, 26 Feb 2025 19:36:47 +1100 Subject: [PATCH 48/64] 4x rarer meteor dungeons --- src/main/java/com/hbm/world/gen/NTMWorldGenerator.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index e56c3e0eb..d0ba4ad63 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -40,25 +40,25 @@ public class NTMWorldGenerator implements IWorldGenerator { NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !invalidBiomes.contains(biome); start = d -> new MapGenNTMFeatures.Start(d.getW(), d.getX(), d.getY(), d.getZ()); - spawnWeight = 14; + spawnWeight = 14 * 4; }}); NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !invalidBiomes.contains(biome); start = d -> new BunkerStart(d.getW(), d.getX(), d.getY(), d.getZ()); - spawnWeight = 1; + spawnWeight = 1 * 4; }}); NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; structure = new JigsawPiece("vertibird", StructureManager.vertibird); - spawnWeight = 3; + spawnWeight = 3 * 4; }}); NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird); - spawnWeight = 3; + spawnWeight = 3 * 4; }}); Map bricks = new HashMap() {{ From b789482f3dac883108cb97715ef54d1804b25c7e Mon Sep 17 00:00:00 2001 From: Vaern Date: Wed, 26 Feb 2025 23:29:12 -0800 Subject: [PATCH 49/64] added initial rotvel to orchestras, flixes --- .../weapon/sedna/factory/Orchestras.java | 54 +++++++++---------- .../hbm/particle/helper/CasingCreator.java | 3 +- .../weapon/sedna/ItemRenderAberrator.java | 1 + .../item/weapon/sedna/ItemRenderEOTT.java | 1 + 4 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index e55d04677..3a4a66a08 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -173,7 +173,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, 12.5F, 1.5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, -0.125, aiming ? -0.125 : -0.375D, 0, 0.12, -0.12, 0.01, -7.5F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 1.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 1F); } @@ -196,7 +196,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 2) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.55, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -7.5F + (float)entity.getRNG().nextGaussian() * 5F, 12F + (float)entity.getRNG().nextGaussian() * 5F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -244,7 +244,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, 12.5F, 2.5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); } @@ -279,7 +279,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 14) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, 17.5F, 2.5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 : -0.375D, 0, -0.08, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); } @@ -300,7 +300,7 @@ public class Orchestras { if(timer == 14) { int offset = ctx.configIndex == 0 ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, 17.5F, 2.5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, -0.125, aiming ? -0.125 * offset : -0.375D * offset, 0, -0.08, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.leverCock", 1F, 0.8F); return; @@ -322,7 +322,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); if(mag.getAmountAfterReload(stack) > 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.125, aiming ? -0.125 : -0.375D, -0.12, 0.18, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 7.5F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName(), true, 60, 0.5D, 20); mag.setAmountBeforeReload(stack, 0); } } @@ -358,7 +358,7 @@ public class Orchestras { Receiver rec = ctx.config.getReceivers(stack)[0]; IMagazine mag = rec.getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, 2.5F, 5F, casing.getName()); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.125, -0.125, -0.05, 0, 0, 0.01, -6.5F + (float)entity.getRNG().nextGaussian() * 3F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName()); } } if(type == AnimType.CYCLE) { @@ -384,7 +384,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 2) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, -10F, 2F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, 2.5F + (float)entity.getRNG().nextGaussian() * 2F, casing.getName(), true, 60, 0.5D, 20); } } if(type == AnimType.CYCLE_DRY) { @@ -419,7 +419,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 10F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -443,7 +443,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.4375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, -0.06, 0, 0.01, (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 10F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -479,7 +479,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, 15F, 2.5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, -15F + (float)entity.getRNG().nextGaussian() * 7.5F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName(), true, 60, 0.5D, 20); } if(timer == 15) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.magSmallInsert", 1F, 1F); } @@ -503,7 +503,7 @@ public class Orchestras { int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); if(timer == 4 && toEject > 0) { SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, 10F, 5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, -15F * (float)entity.getRNG().nextGaussian() * 7.5F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName(), true, 60, 0.5D, 20); mag.setAmountAfterReload(stack, 0); } if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 0.9F); @@ -521,7 +521,7 @@ public class Orchestras { if(timer == 15) { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.625, aiming ? -0.0625 : -0.25, aiming ? 0 : -0.375D, 0, 0.18, 0.12, 0.01, -5F + (float)entity.getRNG().nextGaussian() * 3.5F, -10F + entity.getRNG().nextFloat() * 5F, casing.getName(), true, 60, 0.5D, 20); } } if(type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE) { @@ -599,7 +599,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.0625, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 5F, 10F + entity.getRNG().nextFloat() * 10F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -632,7 +632,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -2.5F + (float)entity.getRNG().nextGaussian() * 5F, 10F + (float)entity.getRNG().nextFloat() * 15F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -664,7 +664,7 @@ public class Orchestras { if(timer == 1) { int mult = ctx.configIndex == 0 ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, -0.125, -0.375D * mult, 0, 0.18, -0.12 * mult, 0.01, -2.5F + (float)entity.getRNG().nextGaussian() * 5F, (10F + (float)entity.getRNG().nextFloat() * 15F) * mult, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -693,8 +693,8 @@ public class Orchestras { if(type == AnimType.CYCLE || type == AnimType.ALT_CYCLE) { if(timer == 8) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.shotgunCock", 1F, 1F); if(timer == 10) { - SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); //turns out there's a reason why stovepipes look like that + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, -3F + (float)entity.getRNG().nextGaussian() * 2.5F, -15F + entity.getRNG().nextFloat() * -5F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -744,7 +744,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 5F, 12.5F + (float)entity.getRNG().nextFloat() * 5F, casing.getName()); } } if(type == AnimType.CYCLE_DRY) { @@ -846,7 +846,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.3125D, 0, 0.06, -0.18, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.3125D, 0, 0.06, -0.18, 0.01, (float)entity.getRNG().nextGaussian() * 20F, 12.5F + (float)entity.getRNG().nextGaussian() * 7.5F, casing.getName()); } } }; @@ -920,7 +920,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.5, aiming ? -0.125 : -0.25, aiming ? -0.25 : -0.5D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.5, aiming ? -0.125 : -0.25, aiming ? -0.25 : -0.5D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 15F, (float)entity.getRNG().nextGaussian() * 15F, casing.getName()); } if(timer == 1) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverSpin", 1F, 0.75F); } @@ -986,7 +986,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.125, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.125, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 5F, 7.5F + entity.getRNG().nextFloat() * 5F, casing.getName()); } if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); } @@ -1012,7 +1012,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 0) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.25, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, aiming ? 0.125 : 0.25, aiming ? -0.125 : -0.25, aiming ? -0.125 : -0.25D, 0, 0.18, -0.12, 0.01, (float)entity.getRNG().nextGaussian() * 5F, 7.5F + entity.getRNG().nextFloat() * 5F, casing.getName()); } if(timer == 40) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 0.25F, 1.25F); } @@ -1187,7 +1187,7 @@ public class Orchestras { Receiver rec = ctx.config.getReceivers(stack)[0]; IMagazine mag = rec.getMagazine(stack); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.125, -0.05, 0, 0, 0.01, casing.getName()); + if(casing != null) for(int i = 0; i < mag.getCapacity(stack); i++) CasingCreator.composeEffect(entity.worldObj, entity, 0.25, -0.25, -0.125, -0.05, 0, 0, 0.01, -6.5F + (float)entity.getRNG().nextGaussian() * 3F, (float)entity.getRNG().nextGaussian() * 5F, casing.getName()); } } @@ -1228,7 +1228,7 @@ public class Orchestras { if(type == AnimType.CYCLE) { if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D, 0, 0.18, -0.12, 0.01, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.5, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D, 0, 0.18, -0.12, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 5F, 10F + entity.getRNG().nextFloat() * 10F, casing.getName()); } } @@ -1266,7 +1266,7 @@ public class Orchestras { IMagazine mag = ctx.config.getReceivers(stack)[0].getMagazine(stack); int toEject = mag.getAmountAfterReload(stack) - mag.getAmount(stack, ctx.inventory); SpentCasing casing = mag.getCasing(stack, ctx.inventory); - if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.12, 0.18, 0, 0.01, 20F, 2.5F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) for(int i = 0; i < toEject; i++) CasingCreator.composeEffect(entity.worldObj, entity, 0, -0.1875, -0.375D, -0.24, 0.18, 0, 0.01, -20F + (float)entity.getRNG().nextGaussian() * 5F, (float)entity.getRNG().nextGaussian() * 2.5F, casing.getName(), true, 60, 0.5D, 20); } } @@ -1297,7 +1297,7 @@ public class Orchestras { if(timer == 1) { int cba = (stack.getItem() == ModItems.gun_aberrator_eott && ctx.configIndex == 0) ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.075, 0.25, 0, 0.01, -12.5F, 2.5F, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.075, 0.25, 0, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 12.5F, casing.getName()); } } diff --git a/src/main/java/com/hbm/particle/helper/CasingCreator.java b/src/main/java/com/hbm/particle/helper/CasingCreator.java index aaa508df7..51b8f3520 100644 --- a/src/main/java/com/hbm/particle/helper/CasingCreator.java +++ b/src/main/java/com/hbm/particle/helper/CasingCreator.java @@ -17,7 +17,6 @@ import net.minecraft.world.World; public class CasingCreator implements IParticleCreator { - //TODO give these + orchestra hardcoding a little bit of randomness cuz it looks off otherwise /** Default casing without smoke */ public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, String casing) { composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); @@ -25,7 +24,7 @@ public class CasingCreator implements IParticleCreator { /** Casing without smoke */ public static void composeEffect(World world, EntityLivingBase player, double frontOffset, double heightOffset, double sideOffset, double frontMotion, double heightMotion, double sideMotion, double motionVariance, float multPitch, float multYaw, String casing) { - composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, 5F, 10F, casing, false, 0, 0, 0); + composeEffect(world, player, frontOffset, heightOffset, sideOffset, frontMotion, heightMotion, sideMotion, motionVariance, multPitch, multYaw, casing, false, 0, 0, 0); } /** Default casing, but with smoke*/ diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java index 307f6fe35..6ca37d74c 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAberrator.java @@ -219,6 +219,7 @@ public class ItemRenderAberrator extends ItemRenderWeaponBase { double lengthOffset = -1.125; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java index 66580d25c..efd3d67f7 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderEOTT.java @@ -260,6 +260,7 @@ public class ItemRenderEOTT extends ItemRenderWeaponBase { double lengthOffset = -1.125; Minecraft.getMinecraft().renderEngine.bindTexture(flash_plume); tess.startDrawingQuads(); + tess.setBrightness(240); tess.setNormal(0F, 1F, 0F); tess.setColorRGBA_F(1F, 1F, 1F, 1F); From 247f3eace8ca75881f06b57f73252798fd713c69 Mon Sep 17 00:00:00 2001 From: Vaern Date: Wed, 26 Feb 2025 23:38:28 -0800 Subject: [PATCH 50/64] finishing touches --- src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java | 2 +- src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java | 2 +- .../java/com/hbm/items/weapon/sedna/factory/GunFactory.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java index 411574bbe..13a68e433 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -13,7 +13,7 @@ public class GunCannonFactory { protected static SpentCasing CASINNG240MM; static { - CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.5F, 0.5F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); } public static BulletConfiguration getShellConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java index 240521609..f50897995 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDGKFactory.java @@ -8,7 +8,7 @@ public class GunDGKFactory { public static final SpentCasing CASINGDGK; static { - CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setColor(SpentCasing.COLOR_CASE_BRASS).register("DGK").setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds + CASINGDGK = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F).setBounceMotion(1F, 0.5F).setColor(SpentCasing.COLOR_CASE_BRASS).register("DGK").setupSmoke(0.02F, 0.5D, 60, 20).setMaxAge(60); //3 instead of 12 seconds } /*public static BulletConfiguration getDGKConfig() { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 93775156f..7429db1ab 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -21,7 +21,7 @@ public class GunFactory { public static BulletConfig ammo_debug; - public static SpentCasing CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_44); + public static SpentCasing CASING44 = new SpentCasing(CasingType.STRAIGHT).setScale(1.5F, 1.0F, 1.5F).setColor(SpentCasing.COLOR_CASE_44); public static void init() { From e6aa3f232d836013fd7844cde77342c2218241d6 Mon Sep 17 00:00:00 2001 From: Vaern Date: Wed, 26 Feb 2025 23:42:07 -0800 Subject: [PATCH 51/64] remove unused imports --- src/main/java/com/hbm/particle/ParticleSpentCasing.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index 3a4efcffc..550b79546 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -14,21 +14,15 @@ import com.hbm.util.Tuple.Pair; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; -import net.minecraft.crash.CrashReport; -import net.minecraft.crash.CrashReportCategory; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; -import net.minecraft.util.ReportedException; import net.minecraft.util.Vec3; import net.minecraft.world.World; From fb414ad80a5538a590e1acabfe65a627c0e03a7c Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 27 Feb 2025 16:38:40 +0100 Subject: [PATCH 52/64] yes we know your name now fuck off --- changelog | 9 ++++++++- .../com/hbm/items/weapon/sedna/factory/Orchestras.java | 6 +++--- src/main/java/com/hbm/main/ModEventHandlerClient.java | 5 +++++ src/main/resources/META-INF/HBM_at.cfg | 5 ++++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/changelog b/changelog index c010641a1..aeab1a271 100644 --- a/changelog +++ b/changelog @@ -8,10 +8,17 @@ * All mass storage units (except wood) are now substantially cheaper * Reduced base spread for all 12 and 10 gauge buckshot shells from 0.05 to 0.035 * Reduced legendary 12 lever action's spread multiplier from x1.35 to x1.15 +* Bullet casings now spawn with randomized angular velocity +* Bullet casings now correctly bounce off walls, and change angles when bouncing ## Fixed * Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded * Fixed bedrock coltan being way too common, drowning out almost all other bedrock ores * Fixed rotary furnace not saving its output stack * Fixed strand caster water check being incorrect, creating negative water by allowing operations with insufficient cooling -* Fixed radar not using the small remaining amount of power, causing the animation getting stuck \ No newline at end of file +* Fixed radar not using the small remaining amount of power, causing the animation getting stuck +* Fixed the new system structures being way too common +* Fixed RBMKs losing all their flux when reloading the world +* Fixed issue where DODD fuel item stats would only update when the GUI was open +* Fixed muzzle flashes not being fullbright +* Fixed guns having their name permanently visible over the toolbar \ No newline at end of file diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 3a4a66a08..43aac6cfb 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -382,9 +382,9 @@ public class Orchestras { boolean aiming = ItemGunBaseNT.getIsAiming(stack); if(type == AnimType.CYCLE) { - if(timer == 2) { + if(timer == 1) { SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.18, -0.06, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, 2.5F + (float)entity.getRNG().nextGaussian() * 2F, casing.getName(), true, 60, 0.5D, 20); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.3125, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, 0, 0.21, -0.06, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 2.5F, 2.5F + (float)entity.getRNG().nextGaussian() * 2F, casing.getName(), true, 60, 0.5D, 20); } } if(type == AnimType.CYCLE_DRY) { @@ -1297,7 +1297,7 @@ public class Orchestras { if(timer == 1) { int cba = (stack.getItem() == ModItems.gun_aberrator_eott && ctx.configIndex == 0) ? -1 : 1; SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); - if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.075, 0.25, 0, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 12.5F, casing.getName()); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, 0.375, aiming ? 0 : -0.125, aiming ? -0.0625 : -0.25D * cba, -0.05, 0.25, -0.05 * cba, 0.01, -10F + (float)entity.getRNG().nextGaussian() * 10F, (float)entity.getRNG().nextGaussian() * 12.5F, casing.getName()); } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 3de42e1ca..5272a545a 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -367,6 +367,11 @@ public class ModEventHandlerClient { RenderScreenOverlay.renderScope(resolution, cfg.getScopeTexture(held)); } } + + //prevents NBT changes (read: every fucking tick) on guns from bringing up the item's name over the hotbar + if(held != null && held.getItem() instanceof ItemGunBaseNT && Minecraft.getMinecraft().ingameGUI.highlightingItemStack != null && Minecraft.getMinecraft().ingameGUI.highlightingItemStack.getItem() == held.getItem()) { + Minecraft.getMinecraft().ingameGUI.highlightingItemStack = held; + } /// HANDLE FSB HUD /// ItemStack helmet = player.inventory.armorInventory[3]; diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg index 9a2ecc5a5..60e1b0364 100644 --- a/src/main/resources/META-INF/HBM_at.cfg +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -45,4 +45,7 @@ public net.minecraft.client.renderer.ItemRenderer field_78453_b # it public net.minecraft.client.resources.AbstractResourcePack field_110597_b # resourcePackFile # Container -public net.minecraft.inventory.Container * # fucking everything i hate this class \ No newline at end of file +public net.minecraft.inventory.Container * # fucking everything i hate this class + +# GuiIngame +public net.minecraft.client.gui.GuiIngame field_92016_l # highlightingItemStack \ No newline at end of file From dc709672795baad0cdd87dd076bd191d0e851200 Mon Sep 17 00:00:00 2001 From: George Paton Date: Fri, 28 Feb 2025 11:56:03 +1100 Subject: [PATCH 53/64] death by one million hashmap lookups (68ms -> 8ms over 60 seconds) --- .../hbm/handler/neutron/NeutronNodeWorld.java | 17 +++++---- .../hbm/handler/neutron/NeutronStream.java | 3 +- .../handler/neutron/PileNeutronHandler.java | 11 +++--- .../handler/neutron/RBMKNeutronHandler.java | 36 +++++++++---------- .../machine/pile/TileEntityPileBase.java | 8 +++-- .../machine/rbmk/TileEntityRBMKRod.java | 8 +++-- .../machine/rbmk/TileEntityRBMKRodReaSim.java | 10 +++--- 7 files changed, 52 insertions(+), 41 deletions(-) diff --git a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java index 6dcbb4684..8ebe8a521 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronNodeWorld.java @@ -17,11 +17,6 @@ public class NeutronNodeWorld { return streamWorld != null ? streamWorld.nodeCache.get(pos) : null; } - public static void addNode(World world, NeutronNode node) { - StreamWorld streamWorld = getOrAddWorld(world); - streamWorld.nodeCache.put(node.pos, node); - } - public static void removeNode(World world, BlockPos pos) { StreamWorld streamWorld = streamWorlds.get(world); if(streamWorld == null) return; @@ -58,7 +53,7 @@ public class NeutronNodeWorld { public void runStreamInteractions(World world) { for(NeutronStream stream : streams) { - stream.runStreamInteraction(world); + stream.runStreamInteraction(world, this); } } @@ -75,7 +70,7 @@ public class NeutronNodeWorld { for(NeutronNode cachedNode : nodeCache.values()) { if(cachedNode.type == NeutronStream.NeutronType.RBMK) { RBMKNeutronHandler.RBMKNeutronNode node = (RBMKNeutronHandler.RBMKNeutronNode) cachedNode; - toRemove.addAll(node.checkNode()); + toRemove.addAll(node.checkNode(this)); } /* TODO: actually do this and uncache pile nodes if(cachedNode.type == NeutronStream.NeutronType.PILE) { @@ -90,6 +85,14 @@ public class NeutronNodeWorld { } } + public NeutronNode getNode(BlockPos pos) { + return nodeCache.get(pos); + } + + public void addNode(NeutronNode node) { + nodeCache.put(node.pos, node); + } + public void removeNode(BlockPos pos) { nodeCache.remove(pos); } diff --git a/src/main/java/com/hbm/handler/neutron/NeutronStream.java b/src/main/java/com/hbm/handler/neutron/NeutronStream.java index 6ef167910..5f887cb4a 100644 --- a/src/main/java/com/hbm/handler/neutron/NeutronStream.java +++ b/src/main/java/com/hbm/handler/neutron/NeutronStream.java @@ -1,5 +1,6 @@ package com.hbm.handler.neutron; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.util.fauxpointtwelve.BlockPos; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -72,5 +73,5 @@ public abstract class NeutronStream { }; } - public abstract void runStreamInteraction(World worldObj); + public abstract void runStreamInteraction(World worldObj, StreamWorld streamWorld); } diff --git a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java index 548d6d75b..50b9af133 100644 --- a/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/PileNeutronHandler.java @@ -2,6 +2,7 @@ package com.hbm.handler.neutron; import api.hbm.block.IPileNeutronReceiver; import com.hbm.blocks.ModBlocks; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.tileentity.machine.pile.TileEntityPileBase; import com.hbm.util.ContaminationUtil; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -26,9 +27,9 @@ public class PileNeutronHandler { } - public static PileNeutronNode makeNode(TileEntityPileBase tile) { + public static PileNeutronNode makeNode(StreamWorld streamWorld, TileEntityPileBase tile) { BlockPos pos = new BlockPos(tile); - PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(tile.getWorldObj(), pos); + PileNeutronNode node = (PileNeutronNode) streamWorld.getNode(pos); return node != null ? node : new PileNeutronNode(tile); } @@ -44,7 +45,7 @@ public class PileNeutronHandler { @SuppressWarnings("unchecked") @Override - public void runStreamInteraction(World worldObj) { + public void runStreamInteraction(World worldObj, StreamWorld streamWorld) { TileEntityPileBase originTE = (TileEntityPileBase) origin.tile; BlockPos pos = new BlockPos(originTE); @@ -64,7 +65,7 @@ public class PileNeutronHandler { TileEntity tile; - NeutronNode node = NeutronNodeWorld.getNode(worldObj, nodePos); + NeutronNode node = streamWorld.getNode(nodePos); if(node != null && node instanceof PileNeutronNode) { tile = node.tile; } else { @@ -72,7 +73,7 @@ public class PileNeutronHandler { if(tile == null) return; if(tile instanceof TileEntityPileBase) { - NeutronNodeWorld.addNode(worldObj, new PileNeutronNode((TileEntityPileBase) tile)); + streamWorld.addNode(new PileNeutronNode((TileEntityPileBase) tile)); } } diff --git a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java index c22ffcddc..9f11fe551 100644 --- a/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java +++ b/src/main/java/com/hbm/handler/neutron/RBMKNeutronHandler.java @@ -1,6 +1,7 @@ package com.hbm.handler.neutron; import com.hbm.blocks.machine.rbmk.RBMKBase; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.tileentity.machine.rbmk.*; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -37,9 +38,9 @@ public class RBMKNeutronHandler { return worldObj.getTileEntity(pos.getX(), pos.getY(), pos.getZ()); } - public static RBMKNeutronNode makeNode(TileEntityRBMKBase tile) { + public static RBMKNeutronNode makeNode(StreamWorld streamWorld, TileEntityRBMKBase tile) { BlockPos pos = new BlockPos(tile); - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(tile.getWorldObj(), pos); + RBMKNeutronNode node = (RBMKNeutronNode) streamWorld.getNode(pos); return node != null ? node : new RBMKNeutronNode(tile, tile.getRBMKType(), tile.hasLid()); } @@ -97,11 +98,10 @@ public class RBMKNeutronHandler { }; } - public List checkNode() { + public List checkNode(StreamWorld streamWorld) { List list = new ArrayList<>(); BlockPos pos = new BlockPos(this.tile); - World world = tile.getWorldObj(); RBMKNeutronStream[] streams = new RBMKNeutronStream[TileEntityRBMKRod.fluxDirs.length]; @@ -117,7 +117,7 @@ public class RBMKNeutronHandler { if(!rod.hasRod || rod.lastFluxQuantity == 0) { for(RBMKNeutronStream stream : streams) { - for(NeutronNode node : stream.getNodes(false)) + for(NeutronNode node : stream.getNodes(streamWorld, false)) if(node != null) list.add(new BlockPos(node.tile)); } @@ -155,7 +155,7 @@ public class RBMKNeutronHandler { if(nodePos == null) continue; - NeutronNode node = NeutronNodeWorld.getNode(world, nodePos); + NeutronNode node = streamWorld.getNode(nodePos); if(node != null && node.tile instanceof TileEntityRBMKRod) { @@ -177,7 +177,7 @@ public class RBMKNeutronHandler { // Check if non-rod nodes should be uncached due to no rod in range. for(RBMKNeutronStream stream : streams) { - NeutronNode[] nodes = stream.getNodes(false); + NeutronNode[] nodes = stream.getNodes(streamWorld, false); for(NeutronNode node : nodes) { if(!(node == null) && node.tile instanceof TileEntityRBMKRod) @@ -209,7 +209,7 @@ public class RBMKNeutronHandler { // Does NOT include the origin node // USES THE CACHE!!! - public NeutronNode[] getNodes(boolean addNode) { + public NeutronNode[] getNodes(StreamWorld streamWorld, boolean addNode) { NeutronNode[] positions = new RBMKNeutronNode[fluxRange]; BlockPos pos = new BlockPos(origin.tile); @@ -221,16 +221,16 @@ public class RBMKNeutronHandler { pos.mutate(origin.tile.xCoord + x, origin.tile.yCoord, origin.tile.zCoord + z); - NeutronNode node = NeutronNodeWorld.getNode(world, pos); + NeutronNode node = streamWorld.getNode(pos); if(node != null && node instanceof RBMKNeutronNode) { positions[i - 1] = node; } else if(this.origin.tile.getBlockType() instanceof RBMKBase) { TileEntity te = blockPosToTE(world, pos); if(te instanceof TileEntityRBMKBase) { TileEntityRBMKBase rbmkBase = (TileEntityRBMKBase) te; - node = makeNode(rbmkBase); + node = makeNode(streamWorld, rbmkBase); positions[i - 1] = node; - if(addNode) NeutronNodeWorld.addNode(world, node); + if(addNode) streamWorld.addNode(node); } } } @@ -238,7 +238,7 @@ public class RBMKNeutronHandler { } // The... small one? whatever it's still pretty big, runs the interaction for the stream. - public void runStreamInteraction(World worldObj) { + public void runStreamInteraction(World worldObj, StreamWorld streamWorld) { // do nothing if there's nothing to do lmao if(fluxQuantity == 0D) @@ -248,14 +248,14 @@ public class RBMKNeutronHandler { TileEntityRBMKBase originTE; - NeutronNode node = NeutronNodeWorld.getNode(worldObj, pos); + NeutronNode node = streamWorld.getNode(pos); if(node != null) { originTE = (TileEntityRBMKBase) node.tile; } else { originTE = (TileEntityRBMKBase) blockPosToTE(worldObj, pos); if(originTE == null) return; // Doesn't exist anymore! - NeutronNodeWorld.addNode(worldObj, new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); + streamWorld.addNode(new RBMKNeutronNode(originTE, originTE.getRBMKType(), originTE.hasLid())); } int moderatedCount = 0; @@ -269,12 +269,12 @@ public class RBMKNeutronHandler { if(fluxQuantity == 0D) // Whoops, used it all up! return; - NeutronNode targetNode = NeutronNodeWorld.getNode(worldObj, targetPos); + NeutronNode targetNode = streamWorld.getNode(targetPos); if(targetNode == null) { TileEntity te = blockPosToTE(worldObj, targetPos); // ok, maybe it didn't get added to the list somehow?? if(te instanceof TileEntityRBMKBase) { - targetNode = makeNode((TileEntityRBMKBase) te); - NeutronNodeWorld.addNode(worldObj, targetNode); // whoops! + targetNode = makeNode(streamWorld, (TileEntityRBMKBase) te); + streamWorld.addNode(targetNode); // whoops! } else { int hits = getHits(targetPos); // Get the amount of hits on blocks. if(hits == columnHeight) // If stream is fully blocked. @@ -360,7 +360,7 @@ public class RBMKNeutronHandler { } } - NeutronNode[] nodes = getNodes(true); + NeutronNode[] nodes = getNodes(streamWorld, true); NeutronNode lastNode = nodes[(nodes.length - 1)]; diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java index 261c91a0a..80bc476ab 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine.pile; import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.neutron.PileNeutronHandler; import com.hbm.handler.neutron.PileNeutronHandler.PileNeutronStream; import com.hbm.handler.neutron.PileNeutronHandler.PileNeutronNode; @@ -36,11 +37,12 @@ public abstract class TileEntityPileBase extends TileEntity { return; } - PileNeutronNode node = (PileNeutronNode) NeutronNodeWorld.getNode(worldObj, pos); + StreamWorld streamWorld = NeutronNodeWorld.getOrAddWorld(worldObj); + PileNeutronNode node = (PileNeutronNode) streamWorld.getNode(pos); if(node == null) { - node = PileNeutronHandler.makeNode(this); - NeutronNodeWorld.addNode(worldObj, node); + node = PileNeutronHandler.makeNode(streamWorld, this); + streamWorld.addNode(node); } Vec3 neutronVector = Vec3.createVectorHelper(1, 0, 0); diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 52ab2a91e..adda7c8d5 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -6,6 +6,7 @@ import com.hbm.blocks.machine.rbmk.RBMKRod; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; import com.hbm.handler.neutron.NeutronNodeWorld; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.handler.neutron.RBMKNeutronHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.handler.neutron.RBMKNeutronHandler.RBMKNeutronNode; @@ -203,11 +204,12 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return; } - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(worldObj, pos); + StreamWorld streamWorld = NeutronNodeWorld.getOrAddWorld(worldObj); + RBMKNeutronNode node = (RBMKNeutronNode) streamWorld.getNode(pos); if(node == null) { - node = RBMKNeutronHandler.makeNode(this); - NeutronNodeWorld.addNode(worldObj, node); + node = RBMKNeutronHandler.makeNode(streamWorld, this); + streamWorld.addNode(node); } for(ForgeDirection dir : fluxDirs) { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java index c6b85e9c3..ef9c466b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRodReaSim.java @@ -2,6 +2,7 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.handler.neutron.NeutronNodeWorld; import com.hbm.handler.neutron.RBMKNeutronHandler; +import com.hbm.handler.neutron.NeutronNodeWorld.StreamWorld; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -34,11 +35,12 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { return; } - RBMKNeutronNode node = (RBMKNeutronNode) NeutronNodeWorld.getNode(worldObj, pos); + StreamWorld streamWorld = NeutronNodeWorld.getOrAddWorld(worldObj); + RBMKNeutronNode node = (RBMKNeutronNode) streamWorld.getNode(pos); if(node == null) { - node = makeNode(this); - NeutronNodeWorld.addNode(worldObj, node); + node = makeNode(streamWorld, this); + streamWorld.addNode(node); } int count = RBMKDials.getReaSimCount(worldObj); @@ -48,7 +50,7 @@ public class TileEntityRBMKRodReaSim extends TileEntityRBMKRod { neutronVector.rotateAroundY((float)(Math.PI * 2D * worldObj.rand.nextDouble())); - new RBMKNeutronHandler.RBMKNeutronStream(makeNode(this), neutronVector, flux, ratio); + new RBMKNeutronHandler.RBMKNeutronStream(makeNode(streamWorld, this), neutronVector, flux, ratio); // Create new neutron streams } } From 18d21a0f13f44f860c5a2c6426e4ca2854fdca1c Mon Sep 17 00:00:00 2001 From: George Paton Date: Sat, 1 Mar 2025 10:40:44 +1100 Subject: [PATCH 54/64] fix vertibirds spawning unburied --- src/main/java/com/hbm/world/gen/NTMWorldGenerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java index d0ba4ad63..42ad900e4 100644 --- a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -51,13 +51,13 @@ public class NTMWorldGenerator implements IWorldGenerator { NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; - structure = new JigsawPiece("vertibird", StructureManager.vertibird); + structure = new JigsawPiece("vertibird", StructureManager.vertibird, -3); spawnWeight = 3 * 4; }}); NBTStructure.registerStructure(0, new SpawnCondition() {{ canSpawn = biome -> !biome.canSpawnLightningBolt() && biome.temperature >= 2F; - structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird); + structure = new JigsawPiece("crashed_vertibird", StructureManager.crashed_vertibird, -10); spawnWeight = 3 * 4; }}); From 1238933bca09638ed5d44208e040076d9b61cf64 Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 2 Mar 2025 22:49:29 +0100 Subject: [PATCH 55/64] yeag --- changelog | 7 +- gradle.properties | 2 +- .../com/hbm/itempool/ItemPoolsRedRoom.java | 4 + src/main/java/com/hbm/items/ModItems.java | 2 + .../sedna/factory/GunFactoryClient.java | 2 + .../weapon/sedna/factory/Orchestras.java | 51 +- .../weapon/sedna/factory/XFactory762mm.java | 54 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/ResourceManager.java | 2 + .../com/hbm/particle/ParticleSpentCasing.java | 1 - .../hbm/render/anim/BusAnimationSequence.java | 33 +- .../item/weapon/sedna/ItemRenderHangman.java | 6 + .../item/weapon/sedna/ItemRenderMAS36.java | 161 + src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../assets/hbm/models/weapons/mas36.obj | 8030 +++++++++-------- .../assets/hbm/textures/items/ammo.png | Bin 18648 -> 18786 bytes .../textures/items/ammo_secret.p50_1600.png | Bin 0 -> 255 bytes .../textures/items/ammo_stinger_rocket.png | Bin 255 -> 0 bytes .../items/ammo_stinger_rocket_bones.png | Bin 264 -> 0 bytes .../textures/items/ammo_stinger_rocket_he.png | Bin 246 -> 0 bytes .../items/ammo_stinger_rocket_incendiary.png | Bin 246 -> 0 bytes .../items/ammo_stinger_rocket_nuclear.png | Bin 246 -> 0 bytes 23 files changed, 4336 insertions(+), 4023 deletions(-) create mode 100644 src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_secret.p50_1600.png delete mode 100644 src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png delete mode 100644 src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png delete mode 100644 src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png delete mode 100644 src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png delete mode 100644 src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png diff --git a/changelog b/changelog index aeab1a271..c410ab62a 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +## Added +* A new legendary weapon + ## Changed * Updated russian localization * Large deposits (hematite, malachite, bauxite) and caves (sulfur, asbestos) can now be toggled in the config @@ -10,6 +13,7 @@ * Reduced legendary 12 lever action's spread multiplier from x1.35 to x1.15 * Bullet casings now spawn with randomized angular velocity * Bullet casings now correctly bounce off walls, and change angles when bouncing +* Two previously unobtainable legendaries are now in the red room loot pool (about 10x less common than most other items) ## Fixed * Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded @@ -21,4 +25,5 @@ * Fixed RBMKs losing all their flux when reloading the world * Fixed issue where DODD fuel item stats would only update when the GUI was open * Fixed muzzle flashes not being fullbright -* Fixed guns having their name permanently visible over the toolbar \ No newline at end of file +* Fixed guns having their name permanently visible over the toolbar +* Fixed hangman being absolutely gigantic when dropped \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 4bf1e1291..68fe9efe2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=5243 +mod_build_number=5257 credits=HbMinecraft,\ \ rodolphito (explosion algorithms),\ diff --git a/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java b/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java index 690f2580e..4b1c88353 100644 --- a/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java +++ b/src/main/java/com/hbm/itempool/ItemPoolsRedRoom.java @@ -30,6 +30,7 @@ public class ItemPoolsRedRoom { weighted(ModItems.heart_container, 0, 1, 1, 10), weighted(ModItems.black_diamond, 0, 1, 1, 10), weighted(ModItems.scrumpy, 0, 1, 1, 10), + weighted(ModItems.wild_p, 0, 1, 1, 5), weighted(ModItems.card_aos, 0, 1, 1, 5), weighted(ModItems.card_qos, 0, 1, 1, 5), @@ -39,6 +40,9 @@ public class ItemPoolsRedRoom { weighted(ModItems.flask_infusion, 0, 1, 1, 5), weighted(ModBlocks.boxcar, 0, 1, 1, 5), weighted(ModItems.book_of_, 0, 1, 1, 5), + + weighted(ModItems.gun_hangman, 0, 1, 1, 1), + weighted(ModItems.gun_mas36, 0, 1, 1, 1), }; }}; diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 1bad96b92..598003562 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1494,6 +1494,7 @@ public class ModItems { public static Item gun_lasrifle; public static Item gun_coilgun; public static Item gun_hangman; + public static Item gun_mas36; public static Item gun_bolter; public static Item gun_folly; public static Item gun_aberrator; @@ -6481,6 +6482,7 @@ public class ModItems { GameRegistry.registerItem(gun_lasrifle, gun_lasrifle.getUnlocalizedName()); GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); GameRegistry.registerItem(gun_hangman, gun_hangman.getUnlocalizedName()); + GameRegistry.registerItem(gun_mas36, gun_mas36.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); GameRegistry.registerItem(gun_folly, gun_folly.getUnlocalizedName()); GameRegistry.registerItem(gun_aberrator, gun_aberrator.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index 799033e65..c6aa1a0a4 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -81,6 +81,7 @@ public class GunFactoryClient { MinecraftForgeClient.registerItemRenderer(ModItems.gun_lasrifle, new ItemRenderLasrifle()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderCoilgun()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_hangman, new ItemRenderHangman()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_mas36, new ItemRenderMAS36()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolter, new ItemRenderBolter()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_folly, new ItemRenderFolly()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_aberrator, new ItemRenderAberrator()); @@ -239,6 +240,7 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_lasrifle) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_coilgun) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_hangman) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); + ((ItemGunBaseNT) ModItems.gun_mas36) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_bolter) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_folly) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_aberrator) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_AMMO); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java index 43aac6cfb..626338018 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/Orchestras.java @@ -374,7 +374,7 @@ public class Orchestras { } }; - public static BiConsumer ORCHESTRA_CARBIBE = (stack, ctx) -> { + public static BiConsumer ORCHESTRA_CARBINE = (stack, ctx) -> { EntityLivingBase entity = ctx.entity; if(entity.worldObj.isRemote) return; AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); @@ -1306,4 +1306,53 @@ public class Orchestras { if(timer == 9) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.pistolCock", 1F, 0.75F); } }; + + public static BiConsumer ORCHESTRA_MAS36 = (stack, ctx) -> { + EntityLivingBase entity = ctx.entity; + if(entity.worldObj.isRemote) return; + AnimType type = ItemGunBaseNT.getLastAnim(stack, ctx.configIndex); + int timer = ItemGunBaseNT.getAnimTimer(stack, ctx.configIndex); + boolean aiming = ItemGunBaseNT.getIsAiming(stack); + + if(type == AnimType.EQUIP) { + if(timer == 10) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.openLatch", 1F, 1F); + if(timer == 18) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.revolverClose", 1F, 1F); + } + + if(type == AnimType.CYCLE) { + if(timer == 7) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + if(timer == 12) { + SpentCasing casing = ctx.config.getReceivers(stack)[0].getMagazine(stack).getCasing(stack, ctx.inventory); + if(casing != null) CasingCreator.composeEffect(entity.worldObj, entity, + 0.375, aiming ? 0 : -0.125, aiming ? 0 : -0.25D, + -0.05, 0.2, -0.025, + 0.01, -10F + (float) entity.getRNG().nextGaussian() * 10F, (float) entity.getRNG().nextGaussian() * 12.5F, casing.getName()); + } + } + + if(type == AnimType.CYCLE_DRY) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.dryFireClick", 1F, 0.75F); + if(timer == 7) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + } + + if(type == AnimType.RELOAD) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 1F, 1F); + if(timer == 20) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.rifleCock", 1F, 1F); + if(timer == 36) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 1F, 1F); + } + + if(type == AnimType.JAMMED) { + if(timer == 5) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 12) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + if(timer == 16) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 23) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + } + + if(type == AnimType.INSPECT) { + if(timer == 0) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltOpen", 0.5F, 1F); + if(timer == 17) entity.worldObj.playSoundAtEntity(entity, "hbm:weapon.reload.boltClose", 0.5F, 1F); + } + }; } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index bdea3cedb..b17c15d78 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -63,7 +63,7 @@ public class XFactory762mm { .offset(1, -0.0625 * 2.5, -0.25D) .setupStandardFire().recoil(LAMBDA_RECOIL_CARBINE)) .setupStandardConfiguration() - .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBIBE) + .anim(LAMBDA_CARBINE_ANIMS).orchestra(Orchestras.ORCHESTRA_CARBINE) ).setUnlocalizedName("gun_carbine"); ModItems.gun_minigun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() @@ -86,6 +86,17 @@ public class XFactory762mm { .setupStandardConfiguration() .anim(LAMBDA_MINIGUN_ANIMS).orchestra(Orchestras.ORCHESTRA_MINIGUN) ).setUnlocalizedName("gun_minigun_lacunae"); + + ModItems.gun_mas36 = new ItemGunBaseNT(WeaponQuality.LEGENDARY, new GunConfig() + .dura(5_000).draw(20).inspect(31).reloadSequential(true).crosshair(Crosshair.CIRCLE).smoke(LAMBDA_SMOKE) + .rec(new Receiver(0) + .dmg(30F).delay(25).dry(25).spread(0.0F).reload(43).jam(43).sound("hbm:weapon.fire.rifleHeavy", 1.0F, 1.0F) + .mag(new MagazineFullReload(0, 7).addConfigs(r762_sp, r762_fmj, r762_jhp, r762_ap, r762_du)) + .offset(1, -0.0625 * 1.5, -0.25D) + .setupStandardFire().recoil(LAMBDA_RECOIL_CARBINE)) + .setupStandardConfiguration() + .anim(LAMBDA_MAS36_ANIMS).orchestra(Orchestras.ORCHESTRA_MAS36) + ).setUnlocalizedName("gun_mas36"); } public static BiConsumer LAMBDA_SMOKE = (stack, ctx) -> { @@ -153,4 +164,45 @@ public class XFactory762mm { return null; }; + + @SuppressWarnings("incomplete-switch") public static BiFunction LAMBDA_MAS36_ANIMS = (stack, type) -> { + int mag = ((ItemGunBaseNT) stack.getItem()).getConfig(stack, 0).getReceivers(stack)[0].getMagazine(stack).getAmount(stack, MainRegistry.proxy.me().inventory); + double turn = -90; + double pullAmount = ItemGunBaseNT.getIsAiming(stack) ? -1F : -1.5D; + switch(type) { + case EQUIP: return new BusAnimation() + .addBus("STOCK", new BusAnimationSequence().setPos(-158, 0, 0).hold(500).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("EQUIP", new BusAnimationSequence().setPos(45, 0, 0).addPos(0, 0, 0, 500, IType.SIN_FULL).hold(500).addPos(1, 0, 0, 100, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)); + case CYCLE: return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence().addPos(0, 0, -0.5, 50, IType.SIN_DOWN).addPos(0, 0, 0, 100, IType.SIN_FULL)) + .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).hold(700).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(350).addPos(0, 0, pullAmount, 250, IType.SIN_UP).hold(250).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("LIFT", new BusAnimationSequence().hold(600).addPos(-3, 0, 0, 150, IType.SIN_DOWN).hold(300).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BULLET", mag <= 1 ? new BusAnimationSequence().setPos(-100, 0, 0) : new BusAnimationSequence().hold(850).addPos(0, 0.1875, 1.5, 200, IType.LINEAR)); + case CYCLE_DRY: return new BusAnimation() + .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).hold(700).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(350).addPos(0, 0, pullAmount, 250, IType.SIN_UP).hold(250).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("LIFT", new BusAnimationSequence().hold(600).addPos(-3, 0, 0, 150, IType.SIN_DOWN).hold(300).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BULLET", new BusAnimationSequence().setPos(-100, 0, 0)); + case RELOAD: return new BusAnimation() + .addBus("BOLT_TURN", new BusAnimationSequence().addPos(0, 0, turn, 150).holdUntil(2000).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(100).addPos(0, 0, -1.5D, 250, IType.SIN_UP).holdUntil(1800).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("BULLET", new BusAnimationSequence().setPos(-100, 0, 0).holdUntil(1200).setPos(0, 0, 0).hold(600).addPos(0, 0.1875, 1.5, 200, IType.LINEAR)) + .addBus("LIFT", new BusAnimationSequence().hold(200).addPos(30, 0, 0, 500, IType.SIN_FULL).holdUntil(1200).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("SHOW_CLIP", new BusAnimationSequence().setPos(1, 1, 1)) + .addBus("CLIP", new BusAnimationSequence().setPos(2, -3, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(400).addPos(-0.5, 0.5, 0, 150).addPos(-3, -3, 0, 250, IType.SIN_UP)) + .addBus("BULLETS", new BusAnimationSequence().setPos(2, -4, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(150).addPos(0, -1.5, 0, 250, IType.SIN_DOWN)); + case JAMMED: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().hold(250).addPos(-15, 0, 0, 500, IType.SIN_FULL).holdUntil(1650).addPos(0, 0, 0, 500, IType.SIN_FULL)) + .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).holdUntil(1250).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(350).addPos(0, 0, pullAmount, 250, IType.SIN_UP).addPos(0, 0, 0, 200, IType.LINEAR).addPos(0, 0, pullAmount, 250, IType.SIN_UP).addPos(0, 0, 0, 200, IType.LINEAR)); + case INSPECT: return new BusAnimation() + .addBus("LIFT", new BusAnimationSequence().hold(350).addPos(-3, 0, 0, 150, IType.SIN_DOWN).holdUntil(1050).addPos(0, 0, 0, 250, IType.SIN_FULL)) + .addBus("BOLT_TURN", new BusAnimationSequence().addPos(0, 0, turn, 150).holdUntil(1050).addPos(0, 0, 0, 150)) + .addBus("BOLT_PULL", new BusAnimationSequence().hold(100).addPos(0, 0, -1D, 250, IType.SIN_UP).hold(500).addPos(0, 0, 0, 200, IType.LINEAR)) + .addBus("BULLET", mag == 0 ? new BusAnimationSequence().setPos(-100, 0, 0) : new BusAnimationSequence().setPos(0, 0.1875, 1.5).hold(100).addPos(0, 0.125, 0.5, 250, IType.SIN_UP).hold(500).addPos(0, 0.1875, 1.5, 200, IType.LINEAR)); + } + + return null; + }; } diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index b2b06e0a3..d939975a4 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (5243)"; + public static final String VERSION = "1.0.27 BETA (5257)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index c784142e4..7279498fe 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -889,6 +889,7 @@ public class ResourceManager { public static final IModelCustom folly = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/folly.obj")).asVBO(); public static final IModelCustom double_barrel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/sacred_dragon.obj")).asVBO(); public static final IModelCustom aberrator = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/aberrator.obj")).asVBO(); + public static final IModelCustom mas36 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mas36.obj")).asVBO(); public static final HashMap python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json")); public static final HashMap cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json")); @@ -1039,6 +1040,7 @@ public class ResourceManager { public static final ResourceLocation double_barrel_sacred_dragon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/double_barrel_sacred_dragon.png"); public static final ResourceLocation aberrator_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/aberrator.png"); public static final ResourceLocation eott_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/eott.png"); + public static final ResourceLocation mas36_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/mas36.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); diff --git a/src/main/java/com/hbm/particle/ParticleSpentCasing.java b/src/main/java/com/hbm/particle/ParticleSpentCasing.java index 550b79546..87fadf28c 100644 --- a/src/main/java/com/hbm/particle/ParticleSpentCasing.java +++ b/src/main/java/com/hbm/particle/ParticleSpentCasing.java @@ -148,7 +148,6 @@ public class ParticleSpentCasing extends EntityFX { double initMoX = motionX; double initMoY = motionY; double initMoZ = motionZ; - AxisAlignedBB axisalignedbb = this.boundingBox.copy(); List list = this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox.addCoord(motionX, motionY, motionZ)); diff --git a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java index 1e0f7d061..640c22318 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java @@ -29,20 +29,16 @@ public class BusAnimationSequence { // swizzle me timbers public double[] rotMode = new double[] { 0, 1, 2 }; - public BusAnimationSequence() { // Initialise our keyframe storage, since it's multidimensional for(int i = 0; i < 9; i++) { transformKeyframes.add(new ArrayList()); } } - - // Adds a keyframe to the given dimension public BusAnimationSequence addKeyframe(Dimension dimension, BusAnimationKeyframe keyframe) { transformKeyframes.get(dimension.ordinal()).add(keyframe); - return this; } @@ -50,11 +46,17 @@ public class BusAnimationSequence { return addKeyframe(dimension, new BusAnimationKeyframe(value, duration)); } + /** Adds a position with a duration of 0 */ + public BusAnimationSequence setPos(double x, double y, double z) { + return addPos(x, y, z, 0, IType.LINEAR); + } - // Two helper methods for the old hard-coded animations + /** Adds a position with the desired duration and lininterp */ public BusAnimationSequence addPos(double x, double y, double z, int duration) { return addPos(x, y, z, duration, IType.LINEAR); } + + /** Adds a position with the desired duration and interpolation type */ public BusAnimationSequence addPos(double x, double y, double z, int duration, IType type) { addKeyframe(Dimension.TX, new BusAnimationKeyframe(x, duration, type)); addKeyframe(Dimension.TY, new BusAnimationKeyframe(y, duration, type)); @@ -69,6 +71,27 @@ public class BusAnimationSequence { return this; } + /** Repeats the previous keyframe with the same values using lininterp. Effectively makes the animation frame pause for the desired amount of milliseconds. */ + public BusAnimationSequence hold(int duration) { + addKeyframe(Dimension.TX, new BusAnimationKeyframe(getLast(Dimension.TX), duration)); + addKeyframe(Dimension.TY, new BusAnimationKeyframe(getLast(Dimension.TY), duration)); + addKeyframe(Dimension.TZ, new BusAnimationKeyframe(getLast(Dimension.TZ), duration)); + return this; + } + + /** Repeats the previous keyframe for a duration depending on the previous keyframes. Useful for getting different buses to sync up. */ + public BusAnimationSequence holdUntil(int end) { + int duration = end - getTotalTime(); + return hold(duration); + } + + /** Grabs the numerical value for the most recent keyframe on the given dimension */ + private double getLast(Dimension dim) { + List keyframes = transformKeyframes.get(dim.ordinal()); + if(keyframes.isEmpty()) return 0D; + return keyframes.get(keyframes.size() - 1).value; + } + //all transformation data is absolute, additive transformations have not yet been implemented public double[] getTransformation(int millis) { double[] transform = new double[15]; diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java index f02c22562..16ee124cd 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java @@ -120,6 +120,12 @@ public class ItemRenderHangman extends ItemRenderWeaponBase { GL11.glTranslated(-0.5, 2.5, 0); } + @Override + public void setupEntity(ItemStack stack) { + double scale = 0.0625D; + GL11.glScaled(scale, scale, scale); + } + @Override public void renderOther(ItemStack stack, ItemRenderType type) { GL11.glEnable(GL11.GL_LIGHTING); diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java new file mode 100644 index 000000000..d12175c1f --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderMAS36.java @@ -0,0 +1,161 @@ +package com.hbm.render.item.weapon.sedna; + +import java.nio.DoubleBuffer; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.sedna.ItemGunBaseNT; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.item.ItemStack; + +public class ItemRenderMAS36 extends ItemRenderWeaponBase { + + @Override + protected float getTurnMagnitude(ItemStack stack) { return ItemGunBaseNT.getIsAiming(stack) ? 2.5F : -0.5F; } + + @Override + public float getViewFOV(ItemStack stack, float fov) { + float aimingProgress = ItemGunBaseNT.prevAimingProgress + (ItemGunBaseNT.aimingProgress - ItemGunBaseNT.prevAimingProgress) * interp; + return fov * (1 - aimingProgress * 0.33F); + } + + @Override + public void setupFirstPerson(ItemStack stack) { + GL11.glTranslated(0, 0, 0.875); + + float offset = 0.8F; + standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 1.75F * offset, + 0, -4.6825 / 8D, 0.75); + /*standardAimingTransform(stack, + -1.5F * offset, -1.25F * offset, 1.75F * offset, + -0.2, -5.875 / 8D, 1.125);*/ + } + + private static DoubleBuffer buf = null; + + @Override + public void renderFirstPerson(ItemStack stack) { + if(buf == null) buf = GLAllocation.createDirectByteBuffer(8*4).asDoubleBuffer(); + + ItemGunBaseNT gun = (ItemGunBaseNT) stack.getItem(); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mas36_tex); + double scale = 0.375D; + GL11.glScaled(scale, scale, scale); + + double[] equip = HbmAnimations.getRelevantTransformation("EQUIP"); + double[] lift = HbmAnimations.getRelevantTransformation("LIFT"); + double[] stock = HbmAnimations.getRelevantTransformation("STOCK"); + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] boltTurn = HbmAnimations.getRelevantTransformation("BOLT_TURN"); + double[] boltPull = HbmAnimations.getRelevantTransformation("BOLT_PULL"); + double[] bullet = HbmAnimations.getRelevantTransformation("BULLET"); + double[] showClip = HbmAnimations.getRelevantTransformation("SHOW_CLIP"); + double[] clip = HbmAnimations.getRelevantTransformation("CLIP"); + double[] bullets = HbmAnimations.getRelevantTransformation("BULLETS"); + + GL11.glTranslated(0, -3, -3); + GL11.glRotated(equip[0], 1, 0, 0); + GL11.glRotated(lift[0], 1, 0, 0); + GL11.glTranslated(0, 3, 3); + + GL11.glTranslated(0, 0, recoil[2]); + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.mas36.renderPart("Gun"); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.3125, -2.125); + GL11.glRotated(stock[0], 1, 0, 0); + GL11.glTranslated(0, -0.3125, 2.125); + ResourceManager.mas36.renderPart("Stock"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.125, 0); + GL11.glRotated(boltTurn[2], 0, 0, 1); + GL11.glTranslated(0, -1.125, 0); + GL11.glTranslated(0, 0, boltPull[2]); + ResourceManager.mas36.renderPart("Bolt"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(bullet[0], bullet[1], bullet[2]); + ResourceManager.mas36.renderPart("Bullet"); + GL11.glPopMatrix(); + + //ResourceManager.mas36.renderPart("Scope"); + + if(showClip[0] != 0) { + GL11.glPushMatrix(); + GL11.glTranslated(clip[0], clip[1], clip[2]); + ResourceManager.mas36.renderPart("Clip"); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + if(bullets[0] == 0) GL11.glEnable(GL11.GL_CLIP_PLANE0); + buf.put(new double[] { 0, 1, 0, -0.5} ); + buf.rewind(); + GL11.glClipPlane(GL11.GL_CLIP_PLANE0, buf); + GL11.glTranslated(bullets[0], bullets[1], bullets[2]); + ResourceManager.mas36.renderPart("Bullets"); + GL11.glDisable(GL11.GL_CLIP_PLANE0); + GL11.glPopMatrix(); + } + + double smokeScale = 0.25; + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.125, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(smokeScale, smokeScale, smokeScale); + this.renderSmokeNodes(gun.getConfig(stack, 0).smokeNodes, 1D); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1, 8); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(90 * gun.shotRand, 1, 0, 0); + GL11.glScaled(0.5, 0.5, 0.5); + this.renderMuzzleFlash(gun.lastShot[0], 75, 7.5); + GL11.glPopMatrix(); + } + + @Override + public void setupThirdPerson(ItemStack stack) { + super.setupThirdPerson(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glTranslated(0, 0.5, 3); + } + + @Override + public void setupInv(ItemStack stack) { + super.setupInv(stack); + double scale = 1.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(25, 1, 0, 0); + GL11.glRotated(45, 0, 1, 0); + GL11.glTranslated(-0.5, 0.5, 0); + } + + @Override + public void renderOther(ItemStack stack, ItemRenderType type) { + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mas36_tex); + ResourceManager.mas36.renderPart("Gun"); + ResourceManager.mas36.renderPart("Stock"); + ResourceManager.mas36.renderPart("Bolt"); + //ResourceManager.mas36.renderPart("Scope"); + GL11.glTranslated(0, -1, -6); + //ResourceManager.mas36.renderPart("Bayonet"); + GL11.glShadeModel(GL11.GL_FLAT); + } +} diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index ff7196362..223210fde 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2286,6 +2286,7 @@ item.gun_m2.name=ÃŒsMG item.gun_maresleg.name=Repetierflinte item.gun_maresleg_akimbo.name=Repetierflinten item.gun_maresleg_broken.name=Broken +item.gun_mas36.name=SÃŒdstern item.gun_minigun.name=Minigun item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 43ac2e862..565cb2863 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3096,6 +3096,7 @@ item.gun_m2.name=Ma Deuce item.gun_maresleg.name=Lever Action Shotgun item.gun_maresleg_akimbo.name=Lever Action Shotguns item.gun_maresleg_broken.name=Broken +item.gun_mas36.name=South Star item.gun_minigun.name=Minigun item.gun_minigun_lacunae.name=Lacunae item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" diff --git a/src/main/resources/assets/hbm/models/weapons/mas36.obj b/src/main/resources/assets/hbm/models/weapons/mas36.obj index 9e989db33..a6d7e2e54 100644 --- a/src/main/resources/assets/hbm/models/weapons/mas36.obj +++ b/src/main/resources/assets/hbm/models/weapons/mas36.obj @@ -1,608 +1,608 @@ -# Blender v3.2.0 OBJ File: 'mas36.blend' +# Blender v2.79 (sub 0) OBJ File: 'mas36.blend' # www.blender.org o Gun -v -0.250000 1.156250 6.187500 -v 0.250000 1.156250 6.187500 -v 0.000000 1.406250 6.187500 -v 0.250000 0.781250 6.187500 -v 0.187500 1.343750 6.187500 -v -0.187500 1.343750 6.187500 -v -0.250000 1.156250 3.875000 -v 0.250000 1.156250 3.875000 -v 0.000000 1.406250 3.875000 -v -0.250000 0.656250 3.875000 -v 0.250000 0.656250 3.875000 -v 0.187500 1.343750 3.875000 -v -0.187500 1.343750 3.875000 -v 0.125000 0.593750 6.187500 -v -0.125000 0.468750 3.875000 -v 0.125000 0.468750 3.875000 -v 0.125000 1.372756 6.437500 -v 0.216506 1.281250 6.437500 -v 0.250000 1.156250 6.437500 -v -0.250000 1.156250 6.437500 -v -0.216506 1.281250 6.437500 -v -0.125000 1.372756 6.437500 -v 0.000000 1.406250 6.437500 -v -0.312500 1.156250 6.187500 -v 0.312500 1.156250 6.187500 -v -0.312500 0.781250 6.187500 v 0.312500 0.781250 6.187500 -v 0.250000 1.343750 6.187500 +v 0.125000 0.593750 6.187500 +v 0.250000 0.781250 6.187500 +v 0.250000 1.156250 6.187500 v -0.250000 1.343750 6.187500 -v -0.125000 0.531250 6.187500 -v 0.125000 0.531250 6.187500 -v -0.312500 1.156250 6.437500 -v 0.312500 1.156250 6.437500 -v -0.312500 0.781250 6.625000 -v 0.312500 0.781250 6.625000 -v 0.250000 1.343750 6.437500 -v -0.250000 1.343750 6.437500 -v -0.125000 0.531250 6.625000 -v 0.125000 0.531250 6.625000 +v -0.250000 1.156250 6.187500 +v -0.312500 1.156250 6.187500 +v 0.250000 1.343750 6.187500 +v 0.187500 1.343750 6.187500 v -0.312500 1.156250 3.875000 -v -0.312500 0.656250 3.875000 +v -0.250000 0.656250 3.875000 +v -0.250000 1.156250 3.875000 +v 0.250000 0.656250 3.875000 v 0.312500 1.156250 3.875000 -v 0.312500 0.656250 3.875000 +v 0.250000 1.156250 3.875000 v 0.250000 1.343750 3.875000 v -0.250000 1.343750 3.875000 +v -0.187500 1.343750 3.875000 v 0.000000 1.468750 3.875000 +v 0.000000 1.406250 3.875000 +v 0.187500 1.343750 3.875000 v -0.125000 0.406250 3.875000 -v 0.125000 0.406250 3.875000 +v 0.125000 0.468750 3.875000 +v -0.125000 0.468750 3.875000 +v 0.312500 0.656250 3.875000 +v -0.312500 0.656250 3.875000 +v 0.250000 1.343750 3.562500 +v 0.250000 1.156250 3.562500 +v 0.187500 1.343750 3.562500 +v 0.000000 1.468750 3.562500 +v 0.000000 1.406250 3.562500 +v -0.187500 1.343750 3.562500 +v -0.250000 1.156250 3.562500 +v -0.250000 1.343750 3.562500 v -0.312500 1.156250 3.562500 +v -0.250000 0.656250 3.562500 v -0.312500 0.656250 3.562500 +v 0.250000 0.656250 3.562500 v 0.312500 1.156250 3.562500 v 0.312500 0.656250 3.562500 -v 0.250000 1.343750 3.562500 -v -0.250000 1.343750 3.562500 -v 0.000000 1.468750 3.562500 -v -0.125000 0.406250 3.562500 -v 0.125000 0.406250 3.562500 -v 0.000000 1.406250 3.562500 -v 0.250000 1.156250 3.562500 -v -0.250000 1.156250 3.562500 -v -0.187500 1.343750 3.562500 -v 0.187500 1.343750 3.562500 -v 0.250000 0.656250 3.562500 -v -0.250000 0.656250 3.562500 v 0.125000 0.468750 3.562500 +v -0.125000 0.406250 3.562500 v -0.125000 0.468750 3.562500 -v 0.000000 1.406250 0.437500 -v 0.250000 1.156250 0.437500 -v -0.250000 1.156250 0.437500 -v -0.187500 1.343750 0.437500 -v 0.187500 1.343750 0.437500 -v 0.250000 0.343750 0.375000 -v -0.250000 0.343750 0.375000 -v -0.187500 0.218750 0.375000 -v 0.187500 0.218750 0.375000 -v -0.312500 1.156250 6.625000 -v 0.312500 1.156250 6.625000 -v -0.250000 0.781250 6.187500 +v 0.125000 0.406250 3.562500 +v -0.125000 0.531250 6.187500 v -0.125000 0.593750 6.187500 -v 0.250000 0.906250 -3.062500 -v 0.250000 0.906250 0.375000 -v -0.250000 0.906250 -3.062500 -v -0.250000 0.906250 0.375000 +v -0.312500 0.781250 6.187500 +v -0.250000 0.781250 6.187500 +v 0.187500 0.218750 0.375000 +v 0.250000 0.343750 0.312500 +v 0.250000 0.343750 0.375000 +v -0.250000 0.343750 0.312500 +v -0.187500 0.218750 0.375000 +v -0.250000 0.343750 0.375000 +v 0.187500 0.093750 0.125000 +v 0.187500 0.031250 -1.562500 +v 0.187500 0.218750 0.187500 +v 0.250000 0.031250 -1.687500 +v -0.187500 0.031250 -1.562500 +v -0.250000 0.031250 -1.687500 v 0.250000 -0.093750 -2.937500 v -0.250000 -0.093750 -2.937500 -v 0.250000 0.343750 0.312500 -v -0.250000 0.343750 0.312500 -v 0.187500 0.218750 0.187500 -v -0.187500 0.218750 0.187500 -v 0.187500 0.031250 -1.562500 -v -0.187500 0.031250 -1.562500 -v 0.250000 0.031250 -1.687500 -v -0.250000 0.031250 -1.687500 v 0.250000 0.843750 0.312500 v 0.187500 0.781250 0.187500 v 0.250000 0.843750 -1.687500 v 0.187500 0.781250 -1.562500 -v -0.187500 0.093750 0.125000 -v 0.187500 0.093750 0.125000 +v 0.250000 0.906250 0.375000 +v 0.250000 0.906250 -3.062500 v -0.187500 -0.093750 -1.562500 +v -0.187500 0.093750 0.125000 +v -0.187500 0.218750 0.187500 v 0.187500 -0.093750 -1.562500 -v 0.000000 1.281250 -0.062500 -v -0.062500 1.264503 -0.062500 -v -0.108253 1.218750 -0.062500 -v -0.125000 1.156250 -0.062500 -v -0.108253 1.093750 -0.062500 -v -0.062500 1.047997 -0.062500 -v 0.000000 1.031250 -0.062500 -v 0.062500 1.047997 -0.062500 -v 0.108253 1.093750 -0.062500 -v 0.125000 1.156250 -0.062500 v 0.108253 1.218750 -0.062500 -v 0.062500 1.264503 -0.062500 -v 0.000000 1.343750 -0.187500 -v -0.093750 1.318630 -0.187500 -v -0.162380 1.250000 -0.187500 -v -0.187500 1.156250 -0.187500 -v 0.187500 1.031250 0.375000 -v 0.108253 1.218750 -1.062500 -v 0.125000 1.156250 -1.125000 -v 0.187500 1.156250 -1.125000 -v 0.162380 1.250000 -0.187500 -v 0.093750 1.318630 -0.187500 -v 0.000000 1.343750 0.437500 -v -0.093750 1.318630 0.437500 -v -0.162380 1.250000 0.437500 -v -0.187500 1.156250 0.437500 -v 0.108253 1.093750 -1.250000 -v 0.062500 1.047997 -1.750000 -v 0.000000 1.031250 -1.750000 -v -0.062500 1.047997 -1.750000 -v -0.108253 1.093750 -1.500000 -v 0.187500 1.156250 0.437500 -v 0.162380 1.250000 0.437500 -v 0.093750 1.318630 0.437500 -v -0.062500 1.264503 -0.187500 -v 0.000000 1.281250 -0.187500 -v -0.108253 1.218750 -0.187500 -v -0.125000 1.156250 -0.187500 -v -0.108253 1.093750 -0.250000 +v 0.000000 1.031250 -0.062500 +v -0.108253 1.218750 -0.062500 v 0.108253 1.218750 -0.187500 -v 0.062500 1.264503 -0.187500 -v -0.187500 1.093750 -0.250000 +v 0.093750 1.318630 -0.187500 +v 0.162380 1.250000 -0.187500 +v -0.108253 1.218750 -0.187500 +v -0.187500 1.156250 -0.187500 +v -0.162380 1.250000 -0.187500 +v 0.000000 1.281250 -0.187500 +v -0.093750 1.318630 -0.187500 +v 0.000000 1.343750 -0.187500 +v -0.062500 1.264503 -0.187500 v 0.162380 1.250000 -1.062500 +v 0.108253 1.218750 -1.062500 +v 0.093750 0.993870 -3.062500 v 0.187500 1.031250 -3.000000 +v 0.187500 1.031250 -3.062500 +v -0.250000 0.906250 0.375000 v -0.187500 1.031250 0.375000 v -0.187500 1.031250 -2.750000 -v 0.187500 1.156250 -2.812500 -v -0.187500 1.156250 -2.750000 -v -0.062500 1.343750 -2.750000 -v 0.062500 1.343750 -2.750000 -v -0.125000 1.281250 -2.750000 -v 0.125000 1.281250 -2.750000 -v -0.062500 1.406250 -2.750000 -v 0.062500 1.406250 -2.750000 -v 0.187500 1.093750 -1.250000 -v 0.108253 1.093750 -1.437500 -v 0.187500 1.093750 -1.437500 -v 0.187500 1.156250 -1.562500 -v -0.187500 1.156250 -1.562500 -v 0.062500 1.406250 -1.562500 -v -0.062500 1.406250 -1.562500 -v -0.125000 1.281250 -1.562500 -v 0.125000 1.281250 -1.562500 -v -0.125000 1.406250 -1.687500 -v 0.125000 1.406250 -1.687500 -v 0.125000 1.406250 -1.562500 -v -0.125000 1.406250 -1.562500 -v 0.062500 1.406250 -1.625000 -v -0.062500 1.406250 -1.625000 -v -0.125000 1.281250 -1.687500 -v 0.125000 1.281250 -1.687500 v -0.062500 1.406250 -1.750000 -v 0.062500 1.406250 -1.750000 +v 0.062500 1.406250 -2.750000 +v -0.062500 1.406250 -2.750000 +v -0.125000 1.406250 -1.562500 +v -0.125000 1.281250 -1.687500 +v -0.125000 1.281250 -1.562500 +v 0.125000 1.406250 -1.562500 +v 0.125000 1.281250 -1.687500 +v 0.125000 1.406250 -1.687500 +v -0.125000 1.406250 -1.687500 v -0.062500 1.343750 -1.750000 v 0.062500 1.343750 -1.750000 -v 0.108253 1.093750 -1.750000 -v 0.000000 1.281250 -1.750000 -v -0.062500 1.264503 -1.750000 +v -0.062500 1.406250 -1.625000 +v -0.062500 1.406250 -1.562500 +v 0.062500 1.406250 -1.625000 +v 0.062500 1.406250 -1.562500 +v 0.062500 1.406250 -1.750000 +v 0.062500 1.343750 -2.750000 +v -0.062500 1.343750 -2.750000 +v 0.108253 1.218750 -1.750000 v -0.108253 1.218750 -1.750000 -v -0.125000 1.156250 -1.750000 -v 0.125000 1.156250 -1.562500 -v -0.125000 1.156250 -1.562500 -v -0.108253 1.218750 -1.562500 +v 0.000000 1.031250 -1.750000 v -0.062500 1.264503 -1.625000 v 0.000000 1.281250 -1.625000 -v 0.125000 1.156250 -1.750000 -v 0.108253 1.218750 -1.750000 -v 0.062500 1.264503 -1.750000 -v 0.108253 1.218750 -1.562500 -v 0.062500 1.264503 -1.625000 -v -0.187500 1.093750 -1.500000 -v -0.108253 1.093750 -1.750000 v -0.062500 1.264503 -1.562500 v 0.062500 1.264503 -1.562500 +v 0.125000 1.281250 -1.562500 +v -0.108253 1.218750 -1.562500 +v -0.187500 1.156250 -1.562500 +v 0.108253 1.218750 -1.562500 +v 0.187500 1.156250 -1.562500 +v 0.125000 1.156250 -1.562500 +v -0.187500 1.093750 -1.500000 +v -0.187500 1.093750 -0.250000 +v -0.187500 1.156250 0.437500 +v -0.187500 1.156250 -2.750000 +v 0.187500 1.031250 0.375000 +v 0.187500 1.156250 -1.125000 +v 0.187500 1.156250 0.437500 +v 0.187500 1.093750 -1.250000 +v -0.183909 0.781250 -1.561136 +v -0.187500 0.781250 0.187500 v -0.250000 0.843750 0.312500 v -0.250000 0.843750 -1.687500 -v -0.187500 0.781250 0.187500 -v -0.183909 0.031250 -1.561136 -v -0.183909 0.781250 -1.561136 -v 0.000000 1.281250 6.625000 -v -0.062500 1.264503 6.625000 -v -0.108253 1.218750 6.625000 -v -0.125000 1.156250 6.625000 -v -0.108253 1.093750 6.625000 -v -0.062500 1.047997 6.625000 -v 0.000000 1.031250 6.625000 -v 0.062500 1.047997 6.625000 -v 0.108253 1.093750 6.625000 -v 0.125000 1.156250 6.625000 -v 0.108253 1.218750 6.625000 -v 0.062500 1.264503 6.625000 +v -0.250000 0.906250 -3.062500 +v -0.054127 1.125000 7.750000 +v 0.054127 1.125000 7.750000 +v 0.000000 1.218750 7.750000 v 0.000000 1.281250 8.000000 -v -0.062500 1.264503 8.000000 -v -0.108253 1.218750 8.000000 -v -0.125000 1.156250 8.000000 -v -0.108253 1.093750 8.000000 -v -0.062500 1.047997 8.000000 -v 0.000000 1.031250 8.000000 -v 0.062500 1.047997 8.000000 -v 0.108253 1.093750 8.000000 -v 0.125000 1.156250 8.000000 -v 0.108253 1.218750 8.000000 -v 0.062500 1.264503 8.000000 -v 0.000000 1.218750 8.000000 v -0.031250 1.210377 8.000000 +v 0.000000 1.218750 8.000000 +v -0.062500 1.264503 8.000000 v -0.054127 1.187500 8.000000 +v -0.125000 1.156250 8.000000 +v -0.108253 1.218750 8.000000 +v -0.108253 1.093750 8.000000 v -0.062500 1.156250 8.000000 +v -0.062500 1.047997 8.000000 v -0.054127 1.125000 8.000000 +v 0.000000 1.031250 8.000000 v -0.031250 1.102123 8.000000 -v 0.000000 1.093750 8.000000 v 0.031250 1.102123 8.000000 +v 0.000000 1.093750 8.000000 +v 0.062500 1.047997 8.000000 v 0.054127 1.125000 8.000000 +v 0.125000 1.156250 8.000000 +v 0.108253 1.093750 8.000000 +v 0.108253 1.218750 8.000000 v 0.062500 1.156250 8.000000 +v 0.062500 1.264503 8.000000 v 0.054127 1.187500 8.000000 v 0.031250 1.210377 8.000000 -v 0.000000 1.218750 7.750000 +v -0.250000 1.156250 6.625000 +v -0.312500 0.781250 6.625000 +v 0.312500 0.781250 6.625000 +v -0.250000 0.265625 -0.049940 +v -0.250000 0.125000 0.031250 +v -0.250000 0.265625 0.112440 +v 0.250000 0.265625 0.112440 +v 0.250000 0.125000 0.031250 +v 0.250000 0.265625 -0.049940 +v -0.125000 -0.156250 -2.687500 +v -0.125000 -0.031250 -2.500000 +v -0.125000 -0.031250 -2.875000 +v -0.125000 0.031250 -1.812500 +v -0.125000 -0.218750 -1.750000 +v -0.125000 0.031250 -1.750000 +v -0.125000 -0.468750 -1.937500 +v -0.125000 -0.468750 -2.437500 +v -0.125000 -0.531250 -2.437500 +v -0.125000 -0.218750 -1.812500 +v -0.125000 -0.343750 -1.812500 +v 0.125000 -0.218750 -1.750000 +v 0.125000 0.031250 -1.812500 +v 0.125000 0.031250 -1.750000 +v -0.125000 -0.406250 -1.937500 +v 0.125000 -0.343750 -1.812500 +v 0.125000 -0.218750 -1.812500 +v 0.125000 -0.406250 -1.937500 +v 0.125000 -0.468750 -1.937500 +v -0.125000 -0.281250 -2.312500 +v -0.125000 -0.406250 -2.312500 +v -0.125000 -0.406250 -2.250000 +v -0.125000 -0.156250 -2.375000 +v -0.125000 -0.281250 -2.375000 +v -0.125000 -0.156250 -2.312500 +v -0.125000 0.031250 -2.437500 +v 0.125000 -0.406250 -2.250000 +v 0.125000 -0.406250 -2.312500 +v 0.125000 -0.281250 -2.312500 +v 0.125000 -0.281250 -2.375000 +v 0.125000 -0.156250 -2.312500 +v 0.125000 -0.156250 -2.375000 +v 0.125000 0.031250 -2.437500 +v -0.125000 1.281250 -2.750000 +v 0.187500 1.156250 -2.875000 +v 0.187500 1.156250 -2.812500 +v 0.093750 0.993870 -3.000000 +v 0.162380 1.062500 -3.000000 +v 0.187500 1.156250 -3.000000 +v 0.108253 1.093750 -2.875000 +v 0.125000 1.156250 -2.875000 +v 0.093750 0.993870 -2.875000 +v 0.162380 1.062500 -2.875000 +v 0.000000 1.031250 -2.875000 +v 0.000000 0.968750 -2.875000 +v -0.093750 0.993870 -2.875000 +v -0.062500 1.047997 -2.750000 +v -0.062500 1.047997 -2.875000 +v 0.125000 1.156250 -2.812500 +v 0.125000 1.156250 -2.750000 +v 0.125000 1.281250 -2.750000 +v 0.000000 0.968750 -3.062500 +v -0.250000 0.218750 -3.062500 +v 0.250000 0.218750 -3.062500 +v -0.125000 -0.343750 -2.625000 +v -0.125000 -0.156250 -2.562500 +v 0.125000 -0.468750 -2.437500 +v 0.125000 -0.031250 -2.500000 +v 0.125000 -0.156250 -2.687500 +v 0.125000 -0.031250 -2.875000 +v 0.125000 -0.156250 -2.562500 +v 0.125000 -0.343750 -2.625000 +v 0.125000 -0.343750 -2.562500 +v 0.125000 -0.531250 -2.437500 +v 0.000000 1.468750 -2.500000 +v -0.044194 1.518306 -2.500000 +v -0.093750 1.468750 -2.500000 +v 0.044194 1.518306 -2.500000 +v 0.093750 1.562500 -2.500000 +v 0.062500 1.562500 -2.500000 +v 0.156250 1.343750 -2.312500 +v -0.156250 1.343750 -2.687500 +v 0.218750 1.343750 -2.687500 +v 0.093750 1.468750 -2.687500 +v 0.093750 1.593750 -2.500000 +v 0.093750 1.593750 -2.687500 +v -0.093750 1.593750 -2.500000 +v -0.093750 1.468750 -2.687500 +v -0.093750 1.593750 -2.687500 +v -0.093750 1.468750 -2.437500 +v 0.044194 1.518306 -2.625000 +v 0.093750 1.562500 -2.625000 +v 0.093750 1.468750 -2.625000 +v 0.062500 1.562500 -2.625000 +v 0.066291 1.628791 -2.625000 +v 0.044194 1.606694 -2.625000 +v 0.000000 1.656250 -2.625000 +v -0.044194 1.606694 -2.625000 +v 0.000000 1.625000 -2.625000 +v -0.062500 1.562500 -2.625000 +v -0.066291 1.628791 -2.625000 +v -0.044194 1.518306 -2.625000 +v -0.093750 1.562500 -2.625000 +v 0.000000 1.468750 -2.625000 +v 0.000000 1.500000 -2.625000 +v 0.066291 1.628791 -2.500000 +v 0.044194 1.606694 -2.500000 +v 0.000000 1.656250 -2.500000 +v 0.000000 1.625000 -2.500000 +v -0.044194 1.606694 -2.500000 +v -0.066291 1.628791 -2.500000 +v -0.062500 1.562500 -2.500000 +v -0.093750 1.562500 -2.500000 +v 0.093750 1.468750 -2.500000 +v -0.156250 1.468750 -2.437500 +v 0.093750 1.468750 -2.437500 +v 0.156250 1.468750 -2.437500 +v 0.218750 1.468750 -2.687500 +v 0.156250 1.468750 -2.687500 +v -0.156250 1.468750 -2.687500 +v 0.250000 1.406250 -2.562500 +v 0.250000 1.343750 -2.625000 +v 0.250000 1.406250 -2.687500 +v 0.156250 1.468750 -2.312500 +v -0.156250 1.343750 -2.312500 +v -0.031250 1.562500 6.250000 +v 0.031250 1.468750 6.250000 +v -0.031250 1.468750 6.250000 +v -0.031250 1.562500 6.312500 +v 0.031250 1.562500 6.250000 +v -0.031250 1.468750 6.375000 +v 0.031250 1.562500 6.312500 +v 0.031250 1.468750 6.375000 +v 0.062500 1.468750 6.187500 +v 0.125000 1.656250 6.437500 +v 0.125000 1.656250 6.187500 +v -0.125000 1.656250 6.437500 +v -0.062500 1.468750 6.187500 +v -0.125000 1.656250 6.187500 +v -0.187500 1.656250 6.187500 +v 0.187500 1.656250 6.187500 +v 0.187500 1.656250 6.437500 +v 0.125000 1.468750 6.187500 +v -0.125000 1.468750 6.187500 +v -0.187500 1.656250 6.437500 +v -0.125000 1.468750 6.437500 +v -0.062500 1.468750 6.437500 +v 0.125000 1.468750 6.437500 +v 0.062500 1.468750 6.437500 +v 0.250000 1.343750 6.437500 +v -0.250000 1.343750 6.437500 +v -0.108253 0.718750 7.187500 +v 0.108253 0.718750 7.187500 +v 0.000000 0.906250 7.187500 +v -0.081190 0.734375 7.812500 +v 0.081190 0.734375 7.812500 +v 0.000000 0.875000 7.812500 +v -0.312500 1.031250 6.625000 +v -0.375000 0.906250 6.625000 +v -0.312500 0.906250 6.625000 +v -0.375000 1.031250 6.250000 +v -0.312500 1.031250 6.187500 +v -0.375000 0.906250 6.250000 +v -0.312500 0.906250 6.187500 +v -0.437500 1.062500 7.437500 +v -0.343750 0.968750 7.437500 +v -0.437500 0.875000 7.437500 +v -0.375000 0.968750 7.500000 +v -0.393306 1.012944 7.500000 +v -0.437500 1.031250 7.500000 +v 0.062500 0.281250 3.687500 +v 0.000000 0.281250 3.750000 +v -0.062500 0.281250 3.687500 +v 0.187500 0.343750 3.500000 +v -0.187500 0.406250 3.500000 +v -0.187500 0.343750 3.500000 +v -0.187500 0.343750 3.625000 +v 0.187500 0.406250 3.625000 +v 0.187500 0.343750 3.625000 +v 0.187500 0.406250 3.500000 +v -0.250000 0.343750 3.687500 +v -0.250000 0.406250 3.437500 +v -0.250000 0.343750 3.437500 +v 0.250000 0.406250 3.437500 +v 0.250000 0.406250 3.687500 +v 0.250000 0.343750 3.437500 +v 0.250000 0.343750 3.687500 +v -0.250000 0.406250 3.687500 +v -0.187500 0.406250 3.625000 +v 0.125000 0.531250 6.187500 +v 0.312500 1.156250 6.187500 +v -0.187500 1.343750 6.187500 +v 0.125000 0.406250 3.875000 +v -0.062500 1.264503 -0.062500 +v 0.000000 1.281250 -0.062500 +v 0.062500 1.264503 -0.062500 +v 0.125000 1.156250 -0.062500 +v 0.108253 1.093750 -0.062500 +v 0.062500 1.047997 -0.062500 +v -0.062500 1.047997 -0.062500 +v -0.108253 1.093750 -0.062500 +v -0.125000 1.156250 -0.062500 +v 0.062500 1.264503 -0.187500 +v -0.125000 1.156250 -0.187500 +v -0.187500 1.031250 -3.062500 +v 0.062500 1.047997 -1.750000 +v 0.108253 1.093750 -1.750000 +v 0.125000 1.156250 -1.750000 +v 0.062500 1.264503 -1.750000 +v 0.000000 1.281250 -1.750000 +v -0.062500 1.264503 -1.750000 +v -0.125000 1.156250 -1.750000 +v -0.108253 1.093750 -1.750000 +v -0.062500 1.047997 -1.750000 +v 0.062500 1.264503 -1.625000 +v -0.125000 1.156250 -1.562500 +v 0.187500 1.093750 -1.437500 +v -0.183909 0.031250 -1.561136 v -0.031250 1.210377 7.750000 v -0.054127 1.187500 7.750000 v -0.062500 1.156250 7.750000 -v -0.054127 1.125000 7.750000 v -0.031250 1.102123 7.750000 v 0.000000 1.093750 7.750000 v 0.031250 1.102123 7.750000 -v 0.054127 1.125000 7.750000 v 0.062500 1.156250 7.750000 v 0.054127 1.187500 7.750000 v 0.031250 1.210377 7.750000 -v 0.000000 1.406250 6.625000 -v -0.125000 1.372756 6.625000 -v -0.216506 1.281250 6.625000 -v -0.250000 1.156250 6.625000 +v -0.125000 0.531250 6.625000 +v 0.125000 0.531250 6.625000 +v 0.312500 1.156250 6.625000 v 0.250000 1.156250 6.625000 v 0.216506 1.281250 6.625000 v 0.125000 1.372756 6.625000 -v 0.187500 1.156250 -3.000000 -v -0.250000 1.031250 0.375000 -v 0.250000 1.031250 0.375000 -v -0.187500 0.312500 0.031250 -v -0.187500 0.299940 0.078125 -v -0.187500 0.265625 0.112440 -v -0.187500 0.218750 0.125000 -v -0.187500 0.171875 0.112440 -v -0.187500 0.137560 0.078125 -v -0.187500 0.125000 0.031250 -v -0.187500 0.137560 -0.015625 -v -0.187500 0.171875 -0.049940 -v -0.187500 0.218750 -0.062500 -v -0.187500 0.265625 -0.049940 -v -0.187500 0.299940 -0.015625 -v -0.250000 0.312500 0.031250 +v 0.000000 1.406250 6.625000 +v -0.125000 1.372756 6.625000 +v -0.216506 1.281250 6.625000 +v -0.312500 1.156250 6.625000 v -0.250000 0.299940 0.078125 -v -0.250000 0.265625 0.112440 -v -0.250000 0.218750 0.125000 -v -0.250000 0.171875 0.112440 -v -0.250000 0.137560 0.078125 -v -0.250000 0.125000 0.031250 -v -0.250000 0.137560 -0.015625 -v -0.250000 0.171875 -0.049940 -v -0.250000 0.218750 -0.062500 -v -0.250000 0.265625 -0.049940 +v -0.250000 0.312500 0.031250 v -0.250000 0.299940 -0.015625 -v 0.187500 0.312500 0.031250 -v 0.187500 0.299940 -0.015625 -v 0.187500 0.265625 -0.049940 -v 0.187500 0.218750 -0.062500 -v 0.187500 0.171875 -0.049940 -v 0.187500 0.137560 -0.015625 -v 0.187500 0.125000 0.031250 -v 0.187500 0.137560 0.078125 -v 0.187500 0.171875 0.112440 -v 0.187500 0.218750 0.125000 -v 0.187500 0.265625 0.112440 -v 0.187500 0.299940 0.078125 -v 0.250000 0.312500 0.031250 +v -0.250000 0.218750 -0.062500 +v -0.250000 0.171875 -0.049940 +v -0.250000 0.137560 -0.015625 +v -0.250000 0.137560 0.078125 +v -0.250000 0.171875 0.112440 +v -0.250000 0.218750 0.125000 v 0.250000 0.299940 -0.015625 -v 0.250000 0.265625 -0.049940 -v 0.250000 0.218750 -0.062500 -v 0.250000 0.171875 -0.049940 -v 0.250000 0.137560 -0.015625 -v 0.250000 0.125000 0.031250 -v 0.250000 0.137560 0.078125 -v 0.250000 0.171875 0.112440 -v 0.250000 0.218750 0.125000 -v 0.250000 0.265625 0.112440 +v 0.250000 0.312500 0.031250 v 0.250000 0.299940 0.078125 -v -0.125000 0.031250 -1.750000 -v -0.125000 -0.218750 -1.750000 -v -0.125000 -0.343750 -1.812500 -v -0.125000 -0.468750 -1.937500 -v -0.125000 -0.531250 -2.437500 -v -0.125000 -0.156250 -2.687500 -v -0.125000 -0.031250 -2.875000 -v -0.125000 -0.031250 -2.500000 -v -0.125000 -0.156250 -2.562500 -v -0.125000 -0.468750 -2.437500 -v -0.125000 0.031250 -1.812500 -v -0.125000 -0.218750 -1.812500 +v 0.250000 0.218750 0.125000 +v 0.250000 0.171875 0.112440 +v 0.250000 0.137560 0.078125 +v 0.250000 0.137560 -0.015625 +v 0.250000 0.171875 -0.049940 +v 0.250000 0.218750 -0.062500 v -0.125000 -0.343750 -1.875000 -v 0.125000 0.031250 -1.750000 -v 0.125000 -0.218750 -1.750000 -v 0.125000 -0.343750 -1.812500 -v 0.125000 -0.468750 -1.937500 -v 0.125000 -0.156250 -2.562500 -v 0.125000 -0.031250 -2.875000 -v 0.125000 -0.031250 -2.500000 v 0.125000 -0.343750 -1.875000 -v 0.125000 0.031250 -1.812500 -v 0.125000 -0.218750 -1.812500 -v -0.125000 -0.406250 -1.937500 -v 0.125000 -0.406250 -1.937500 -v -0.125000 0.031250 -2.437500 -v 0.125000 0.031250 -2.437500 -v -0.125000 -0.156250 -2.375000 -v 0.125000 -0.156250 -2.375000 -v -0.125000 -0.281250 -2.375000 -v 0.125000 -0.281250 -2.375000 v -0.125000 0.031250 -2.187500 v 0.125000 0.031250 -2.187500 -v -0.125000 -0.156250 -2.312500 -v 0.125000 -0.156250 -2.312500 -v -0.125000 -0.281250 -2.312500 -v 0.125000 -0.281250 -2.312500 -v -0.125000 -0.406250 -2.250000 -v 0.125000 -0.406250 -2.250000 -v -0.125000 -0.406250 -2.312500 -v 0.125000 -0.406250 -2.312500 -v -0.187500 1.031250 -3.062500 -v 0.125000 1.156250 -2.812500 -v 0.125000 1.156250 -2.875000 -v 0.187500 1.156250 -2.875000 -v -0.093750 0.993870 -3.062500 -v 0.000000 0.968750 -3.062500 -v 0.093750 0.993870 -3.000000 -v 0.162380 1.062500 -3.000000 -v -0.093750 0.993870 -2.875000 -v 0.000000 0.968750 -2.875000 -v 0.093750 0.993870 -2.875000 -v 0.162380 1.062500 -2.875000 -v -0.093750 0.993870 -2.750000 -v -0.062500 1.047997 -2.875000 -v 0.000000 1.031250 -2.875000 v 0.062500 1.047997 -2.875000 -v 0.108253 1.093750 -2.875000 -v -0.062500 1.047997 -2.750000 -v 0.125000 1.156250 -2.750000 -v 0.187500 1.031250 -3.062500 -v 0.093750 0.993870 -3.062500 -v 0.250000 0.218750 -3.062500 -v -0.250000 0.218750 -3.062500 +v -0.093750 0.993870 -2.750000 +v -0.093750 0.993870 -3.062500 v -0.125000 -0.343750 -2.562500 -v -0.125000 -0.343750 -2.625000 -v 0.125000 -0.531250 -2.437500 -v 0.125000 -0.343750 -2.625000 -v 0.125000 -0.468750 -2.437500 -v 0.125000 -0.343750 -2.562500 -v 0.125000 -0.156250 -2.687500 -v 0.218750 1.343750 -2.687500 -v -0.156250 1.343750 -2.687500 -v -0.156250 1.468750 -2.687500 -v 0.000000 1.625000 -2.625000 -v -0.044194 1.606694 -2.625000 -v -0.062500 1.562500 -2.625000 -v -0.044194 1.518306 -2.625000 -v 0.000000 1.500000 -2.625000 -v 0.044194 1.518306 -2.625000 -v 0.062500 1.562500 -2.625000 -v 0.044194 1.606694 -2.625000 -v -0.000000 1.656250 -2.625000 -v -0.066291 1.628791 -2.625000 -v -0.093750 1.562500 -2.625000 -v -0.093750 1.468750 -2.625000 -v 0.093750 1.468750 -2.625000 -v 0.093750 1.562500 -2.625000 -v 0.066291 1.628791 -2.625000 -v -0.093750 1.593750 -2.687500 -v -0.093750 1.468750 -2.687500 -v 0.093750 1.468750 -2.687500 -v 0.093750 1.593750 -2.687500 -v 0.156250 1.468750 -2.687500 -v -0.000000 1.656250 -2.500000 -v -0.066291 1.628791 -2.500000 -v -0.093750 1.562500 -2.500000 -v -0.093750 1.468750 -2.500000 -v -0.156250 1.468750 -2.312500 -v 0.093750 1.468750 -2.500000 -v 0.093750 1.562500 -2.500000 -v 0.066291 1.628791 -2.500000 -v 0.000000 1.625000 -2.500000 -v -0.044194 1.606694 -2.500000 -v -0.062500 1.562500 -2.500000 -v -0.044194 1.518306 -2.500000 v 0.000000 1.500000 -2.500000 -v 0.044194 1.518306 -2.500000 -v 0.062500 1.562500 -2.500000 -v 0.044194 1.606694 -2.500000 -v 0.156250 1.343750 -2.312500 -v -0.156250 1.343750 -2.312500 -v -0.156250 1.468750 -2.437500 -v -0.093750 1.593750 -2.500000 -v -0.093750 1.468750 -2.437500 -v 0.093750 1.468750 -2.437500 -v 0.093750 1.593750 -2.500000 -v 0.156250 1.468750 -2.437500 -v 0.156250 1.468750 -2.312500 -v 0.218750 1.468750 -2.687500 -v 0.156250 1.406250 -2.687500 -v 0.156250 1.450444 -2.669194 -v 0.156250 1.468750 -2.625000 -v 0.156250 1.450444 -2.580806 -v 0.156250 1.406250 -2.562500 -v 0.156250 1.362056 -2.580806 -v 0.156250 1.343750 -2.625000 -v 0.156250 1.362056 -2.669194 -v 0.250000 1.406250 -2.687500 +v -0.093750 1.468750 -2.625000 v 0.250000 1.450444 -2.669194 v 0.250000 1.468750 -2.625000 v 0.250000 1.450444 -2.580806 -v 0.250000 1.406250 -2.562500 v 0.250000 1.362056 -2.580806 -v 0.250000 1.343750 -2.625000 v 0.250000 1.362056 -2.669194 -v 0.031250 1.468750 6.250000 -v -0.031250 1.468750 6.250000 -v 0.031250 1.562500 6.250000 -v -0.031250 1.562500 6.250000 -v 0.031250 1.562500 6.312500 -v -0.031250 1.562500 6.312500 -v 0.031250 1.468750 6.375000 -v -0.031250 1.468750 6.375000 -v 0.062500 1.468750 6.187500 -v -0.062500 1.468750 6.187500 -v -0.125000 1.656250 6.187500 -v 0.125000 1.656250 6.187500 -v 0.062500 1.468750 6.437500 -v -0.062500 1.468750 6.437500 -v -0.125000 1.656250 6.437500 -v 0.125000 1.656250 6.437500 -v -0.187500 1.656250 6.187500 -v -0.187500 1.656250 6.437500 -v 0.187500 1.656250 6.187500 -v 0.187500 1.656250 6.437500 -v -0.125000 1.468750 6.187500 -v -0.125000 1.468750 6.437500 -v 0.125000 1.468750 6.187500 -v 0.125000 1.468750 6.437500 -v 0.000000 1.468750 -2.500000 -v 0.000000 1.468750 -2.625000 -v 0.000000 0.906250 6.625000 -v -0.062500 0.889503 6.625000 -v -0.108253 0.843750 6.625000 -v -0.125000 0.781250 6.625000 -v -0.108253 0.718750 6.625000 -v -0.062500 0.672997 6.625000 -v 0.000000 0.656250 6.625000 -v 0.062500 0.672997 6.625000 -v 0.108253 0.718750 6.625000 -v 0.125000 0.781250 6.625000 -v 0.108253 0.843750 6.625000 -v 0.062500 0.889503 6.625000 -v 0.000000 0.906250 7.187500 +v -0.156250 1.468750 -2.312500 +v -0.312500 1.156250 6.437500 +v 0.312500 1.156250 6.437500 v -0.062500 0.889503 7.187500 v -0.108253 0.843750 7.187500 v -0.125000 0.781250 7.187500 -v -0.108253 0.718750 7.187500 v -0.062500 0.672997 7.187500 v 0.000000 0.656250 7.187500 v 0.062500 0.672997 7.187500 -v 0.108253 0.718750 7.187500 v 0.125000 0.781250 7.187500 v 0.108253 0.843750 7.187500 v 0.062500 0.889503 7.187500 -v 0.000000 0.875000 7.187500 -v -0.046875 0.862440 7.187500 -v -0.081190 0.828125 7.187500 -v -0.093750 0.781250 7.187500 -v -0.081190 0.734375 7.187500 -v -0.046875 0.700060 7.187500 -v 0.000000 0.687500 7.187500 -v 0.046875 0.700060 7.187500 -v 0.081190 0.734375 7.187500 -v 0.093750 0.781250 7.187500 -v 0.081190 0.828125 7.187500 -v 0.046875 0.862440 7.187500 -v 0.000000 0.875000 7.812500 v -0.046875 0.862440 7.812500 v -0.081190 0.828125 7.812500 v -0.093750 0.781250 7.812500 -v -0.081190 0.734375 7.812500 v -0.046875 0.700060 7.812500 v 0.000000 0.687500 7.812500 v 0.046875 0.700060 7.812500 -v 0.081190 0.734375 7.812500 v 0.093750 0.781250 7.812500 v 0.081190 0.828125 7.812500 v 0.046875 0.862440 7.812500 -v -0.312500 0.906250 6.187500 -v -0.312500 1.031250 6.187500 -v -0.312500 1.031250 6.625000 -v -0.312500 0.906250 6.625000 -v -0.375000 0.906250 6.250000 -v -0.375000 1.031250 6.250000 v -0.375000 1.031250 6.625000 -v -0.375000 0.906250 6.625000 -v -0.375000 0.968750 6.500000 -v -0.375000 1.012944 6.518306 -v -0.375000 1.031250 6.562500 -v -0.375000 1.012944 6.606694 -v -0.375000 0.968750 6.625000 -v -0.375000 0.924556 6.606694 -v -0.375000 0.906250 6.562500 -v -0.375000 0.924556 6.518306 -v -0.450444 0.924556 6.549556 -v -0.419194 0.906250 6.580806 -v -0.387944 0.924556 6.612056 -v -0.387944 1.012944 6.612056 -v -0.419194 1.031250 6.580806 -v -0.450444 1.012944 6.549556 -v -0.463388 0.968750 6.536612 -v -0.481694 0.924556 6.625000 -v -0.437500 0.906250 6.625000 -v -0.393306 0.924556 6.625000 -v -0.393306 1.012944 6.625000 -v -0.437500 1.031250 6.625000 -v -0.481694 1.012944 6.625000 -v -0.500000 0.968750 6.625000 -v -0.375000 0.968750 7.437500 -v -0.481694 0.924556 7.437500 -v -0.437500 0.906250 7.437500 -v -0.393306 0.924556 7.437500 -v -0.393306 1.012944 7.437500 -v -0.437500 1.031250 7.437500 -v -0.481694 1.012944 7.437500 -v -0.500000 0.968750 7.437500 -v -0.437500 1.062500 7.437500 -v -0.503791 1.035041 7.437500 v -0.531250 0.968750 7.437500 -v -0.503791 0.902459 7.437500 -v -0.437500 0.875000 7.437500 -v -0.371209 0.902459 7.437500 -v -0.343750 0.968750 7.437500 +v -0.503791 1.035041 7.437500 v -0.371209 1.035041 7.437500 -v -0.437500 1.031250 7.500000 +v -0.371209 0.902459 7.437500 +v -0.503791 0.902459 7.437500 v -0.481694 1.012944 7.500000 v -0.500000 0.968750 7.500000 v -0.481694 0.924556 7.500000 v -0.437500 0.906250 7.500000 v -0.393306 0.924556 7.500000 -v -0.375000 0.968750 7.500000 -v -0.393306 1.012944 7.500000 -v 0.000000 0.406250 3.625000 -v -0.044194 0.406250 3.643306 -v -0.062500 0.406250 3.687500 +v -0.044194 0.281250 3.643306 +v 0.000000 0.281250 3.625000 +v 0.044194 0.281250 3.643306 +v 0.044194 0.281250 3.731694 +v -0.044194 0.281250 3.731694 +v 0.000000 1.406250 6.187500 +v -0.187500 1.343750 0.437500 +v 0.000000 1.406250 0.437500 +v 0.187500 1.343750 0.437500 +v 0.093750 1.318630 0.437500 +v -0.093750 1.318630 0.437500 +v 0.000000 1.343750 0.437500 +v -0.162380 1.250000 0.437500 +v 0.125000 1.156250 -1.125000 +v -0.108253 1.093750 -0.250000 +v 0.108253 1.093750 -1.250000 +v 0.108253 1.093750 -1.437500 +v -0.108253 1.093750 -1.500000 +v -0.062500 1.047997 6.625000 +v 0.000000 1.031250 6.625000 +v -0.108253 1.218750 6.625000 +v -0.125000 1.156250 6.625000 +v 0.125000 1.156250 6.625000 +v 0.108253 1.218750 6.625000 +v 0.062500 1.047997 6.625000 +v -0.108253 1.093750 6.625000 +v 0.062500 1.264503 6.625000 +v 0.000000 1.281250 6.625000 +v -0.062500 1.264503 6.625000 +v 0.108253 1.093750 6.625000 +v 0.216506 1.281250 6.437500 +v -0.216506 1.281250 6.437500 +v 0.125000 1.372756 6.437500 +v 0.000000 1.406250 6.437500 +v 0.250000 1.156250 6.437500 +v -0.125000 1.372756 6.437500 +v -0.250000 1.156250 6.437500 +v -0.250000 1.156250 0.437500 +v 0.250000 1.156250 0.437500 +v 0.250000 1.031250 0.375000 +v -0.250000 1.031250 0.375000 +v -0.187500 0.125000 0.031250 +v -0.187500 0.137560 -0.015625 +v -0.187500 0.218750 0.125000 +v -0.187500 0.171875 0.112440 +v -0.187500 0.265625 -0.049940 +v -0.187500 0.299940 -0.015625 +v -0.187500 0.312500 0.031250 +v -0.187500 0.299940 0.078125 +v -0.187500 0.171875 -0.049940 +v -0.187500 0.137560 0.078125 +v -0.187500 0.265625 0.112440 +v -0.187500 0.218750 -0.062500 +v 0.187500 0.125000 0.031250 +v 0.187500 0.137560 0.078125 +v 0.187500 0.218750 -0.062500 +v 0.187500 0.171875 -0.049940 +v 0.187500 0.265625 0.112440 +v 0.187500 0.299940 0.078125 +v 0.187500 0.312500 0.031250 +v 0.187500 0.299940 -0.015625 +v 0.187500 0.171875 0.112440 +v 0.187500 0.137560 -0.015625 +v 0.187500 0.265625 -0.049940 +v 0.187500 0.218750 0.125000 +v 0.156250 1.362056 -2.580806 +v 0.156250 1.343750 -2.625000 +v 0.156250 1.450444 -2.580806 +v 0.156250 1.406250 -2.562500 +v 0.156250 1.450444 -2.669194 +v 0.156250 1.468750 -2.625000 +v 0.156250 1.362056 -2.669194 +v 0.156250 1.406250 -2.687500 +v 0.125000 0.781250 6.625000 +v 0.108253 0.843750 6.625000 +v 0.000000 0.656250 6.625000 +v 0.062500 0.672997 6.625000 +v -0.125000 0.781250 6.625000 +v -0.108253 0.718750 6.625000 +v 0.062500 0.889503 6.625000 +v 0.000000 0.906250 6.625000 +v -0.062500 0.889503 6.625000 +v 0.108253 0.718750 6.625000 +v -0.062500 0.672997 6.625000 +v -0.108253 0.843750 6.625000 +v 0.046875 0.862440 7.187500 +v 0.000000 0.875000 7.187500 +v -0.046875 0.862440 7.187500 +v -0.081190 0.828125 7.187500 +v 0.081190 0.734375 7.187500 +v 0.093750 0.781250 7.187500 +v -0.046875 0.700060 7.187500 +v 0.000000 0.687500 7.187500 +v -0.093750 0.781250 7.187500 +v 0.081190 0.828125 7.187500 +v 0.046875 0.700060 7.187500 +v -0.081190 0.734375 7.187500 +v -0.375000 0.968750 6.500000 +v -0.450444 1.012944 6.549556 +v -0.375000 1.012944 6.518306 +v -0.450444 0.924556 6.549556 +v -0.463388 0.968750 6.536612 +v -0.375000 0.924556 6.606694 +v -0.419194 0.906250 6.580806 +v -0.375000 0.906250 6.562500 +v -0.419194 1.031250 6.580806 +v -0.375000 1.031250 6.562500 +v -0.375000 0.924556 6.518306 +v -0.387944 1.012944 6.612056 +v -0.375000 1.012944 6.606694 +v -0.437500 1.031250 6.625000 +v -0.393306 0.924556 6.625000 +v -0.437500 0.906250 6.625000 +v -0.481694 1.012944 6.625000 +v -0.393306 1.012944 6.625000 +v -0.481694 0.924556 6.625000 +v -0.500000 0.968750 6.625000 +v -0.375000 0.968750 6.625000 +v -0.387944 0.924556 6.612056 +v -0.481694 1.012944 7.437500 +v -0.393306 1.012944 7.437500 +v -0.500000 0.968750 7.437500 +v -0.393306 0.924556 7.437500 +v -0.481694 0.924556 7.437500 +v -0.375000 0.968750 7.437500 +v -0.437500 1.031250 7.437500 +v -0.437500 0.906250 7.437500 v -0.044194 0.406250 3.731694 v 0.000000 0.406250 3.750000 -v 0.044194 0.406250 3.731694 +v -0.044194 0.406250 3.643306 +v -0.062500 0.406250 3.687500 v 0.062500 0.406250 3.687500 v 0.044194 0.406250 3.643306 -v 0.000000 0.281250 3.625000 -v -0.044194 0.281250 3.643306 -v -0.062500 0.281250 3.687500 -v -0.044194 0.281250 3.731694 -v 0.000000 0.281250 3.750000 -v 0.044194 0.281250 3.731694 -v 0.062500 0.281250 3.687500 -v 0.044194 0.281250 3.643306 -v -0.187500 0.343750 3.625000 -v 0.187500 0.343750 3.625000 -v 0.187500 0.343750 3.500000 -v -0.187500 0.343750 3.500000 -v -0.187500 0.406250 3.625000 -v 0.187500 0.406250 3.625000 -v 0.187500 0.406250 3.500000 -v -0.187500 0.406250 3.500000 -v -0.250000 0.343750 3.687500 -v -0.250000 0.406250 3.687500 -v -0.250000 0.406250 3.437500 -v -0.250000 0.343750 3.437500 -v 0.250000 0.406250 3.437500 -v 0.250000 0.343750 3.437500 -v 0.250000 0.406250 3.687500 -v 0.250000 0.343750 3.687500 +v 0.044194 0.406250 3.731694 +v 0.000000 0.406250 3.625000 +v 0.162380 1.250000 0.437500 vt 0.784091 0.522727 vt 0.801136 0.528409 vt 0.784091 0.528409 @@ -1665,13 +1665,13 @@ vt 0.914773 0.562500 vt 0.522727 0.045455 vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 1.0000 -vn 0.8944 -0.4472 0.0000 -vn -0.8944 -0.4472 0.0000 +vn 0.8944 -0.4472 -0.0000 +vn -0.8944 -0.4472 -0.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 -1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 vn 0.0000 -0.9950 0.0995 vn 0.8944 0.0000 -0.4472 -vn 0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 -0.0000 vn 0.8944 0.0000 0.4472 vn 0.0000 -0.9939 0.1104 vn 0.0000 -0.4472 0.8944 @@ -1701,7 +1701,6 @@ vn -0.3551 0.0000 0.9348 vn -0.8861 0.0000 0.4635 vn -0.7071 -0.7071 0.0000 vn -1.0000 0.0000 -0.0021 -vn -0.0001 0.0000 1.0000 vn -0.7071 0.7071 0.0000 vn -0.9871 0.1602 0.0000 vn 0.9871 0.1602 0.0000 @@ -1714,7 +1713,7 @@ vn -0.9943 0.1066 0.0000 vn -0.8507 0.5257 0.0000 vn 0.4472 -0.8944 0.0000 vn -0.4472 -0.8944 0.0000 -vn 0.8507 0.5257 0.0000 +vn 0.8507 0.5257 -0.0000 vn 0.9943 0.1066 0.0000 vn -0.7555 0.6552 0.0000 vn 0.7555 0.6552 0.0000 @@ -1737,7 +1736,7 @@ vn 0.8660 -0.5000 0.0000 vn -0.9071 -0.4210 0.0000 vn -0.9659 -0.2588 0.0000 vn -0.9898 0.1424 0.0000 -vn 0.0000 0.9239 -0.3827 +vn -0.0000 0.9239 -0.3827 vn 0.0000 0.7071 -0.7071 vn 0.0000 0.9336 -0.3583 vn 0.8660 0.5000 0.0000 @@ -1755,7 +1754,7 @@ vn -0.7529 0.6581 0.0000 vn 0.0000 0.9732 0.2298 vn 0.0000 0.9753 0.2207 vn -0.1963 0.5576 -0.8065 -vn -0.2774 0.4804 -0.8320 +vn -0.2773 0.4804 -0.8321 vn 0.8587 0.5125 0.0000 vn -0.8587 0.5125 0.0000 vn -0.8112 0.5847 0.0000 @@ -1831,1195 +1830,1195 @@ vn -0.7194 0.6794 -0.1448 vn 0.6737 0.7263 0.1363 vn -0.7194 -0.6794 -0.1448 vn -0.9824 -0.0000 -0.1866 -vn 0.9809 -0.0000 0.1944 +vn 0.9809 0.0000 0.1944 vn 0.4617 -0.7574 0.4617 vn -0.8944 0.0000 0.4472 vn -0.6325 0.6325 0.4472 vn 0.6325 0.6325 0.4472 vn 0.6325 -0.6325 0.4472 -vn 0.0000 -0.8944 0.4472 +vn -0.0000 -0.8944 0.4472 vn -0.6325 -0.6325 0.4472 vn -0.7071 0.0000 0.7071 vn 0.7071 0.0000 0.7071 vn -0.2588 0.9659 0.0000 s off -f 27/1/1 14/2/1 4/3/1 -f 2/4/1 27/1/1 4/3/1 -f 29/5/1 1/6/1 24/7/1 -f 28/8/1 2/4/1 5/9/1 -f 40/10/2 10/11/2 7/12/2 -f 11/13/2 42/14/2 8/15/2 -f 44/16/2 8/15/2 42/14/2 -f 45/17/2 7/12/2 13/18/2 -f 46/19/2 13/20/2 9/21/2 -f 12/22/2 46/19/2 9/21/2 -f 47/23/2 16/24/2 15/25/2 -f 16/26/2 43/27/2 11/13/2 -f 15/28/2 41/29/2 47/23/2 -f 53/30/1 59/31/1 62/32/1 -f 55/33/1 62/34/1 58/35/1 -f 61/36/1 55/33/1 58/35/1 -f 60/37/1 54/38/1 61/39/1 -f 49/40/1 64/41/1 50/42/1 -f 63/43/1 51/44/1 52/45/1 -f 65/46/1 56/47/1 66/48/1 -f 50/42/1 66/49/1 56/47/1 -f 65/50/1 52/45/1 57/51/1 -f 14/52/1 30/53/1 79/54/1 -f 26/55/1 1/6/1 78/56/1 -f 26/55/1 79/57/1 30/53/1 -f 75/58/3 86/59/3 72/60/3 -f 87/61/4 74/62/4 73/63/4 -f 99/64/5 90/65/5 88/66/5 -f 92/67/6 91/68/6 93/69/6 -f 84/70/7 93/69/7 85/71/7 -f 94/72/5 72/60/5 86/59/5 -f 95/73/8 86/59/8 88/66/8 -f 96/74/9 95/73/9 97/75/9 -f 92/76/10 97/75/10 90/65/10 -f 97/75/5 88/66/5 90/65/5 -f 81/77/5 96/74/5 80/78/5 -f 100/79/11 99/80/11 98/81/11 -f 98/81/12 88/82/12 89/83/12 -f 91/84/13 98/85/13 89/86/13 -f 101/87/1 91/68/1 90/88/1 -f 112/89/1 108/90/1 104/91/1 -f 141/92/1 123/93/1 122/94/1 -f 138/95/1 117/96/1 116/97/1 -f 137/98/1 115/99/1 114/100/1 -f 136/101/1 116/97/1 115/99/1 -f 123/93/1 137/102/1 114/103/1 -f 141/104/14 144/105/14 119/106/14 -f 368/107/15 145/108/15 367/109/15 -f 83/110/16 146/111/16 147/112/16 -f 173/113/17 155/114/17 154/115/17 -f 168/116/13 171/117/13 163/118/13 -f 167/119/5 172/120/5 166/121/5 -f 165/122/18 175/123/18 171/117/18 -f 176/124/19 166/121/19 172/120/19 -f 170/125/17 168/116/17 162/126/17 -f 167/119/17 169/127/17 161/128/17 -f 166/121/17 174/129/17 169/127/17 -f 173/113/17 165/122/17 170/125/17 -f 170/125/17 174/129/17 173/113/17 -f 155/130/5 176/124/5 151/131/5 -f 175/123/13 154/132/13 150/133/13 -f 188/134/2 180/135/2 130/136/2 -f 170/137/2 185/138/2 186/139/2 -f 194/140/5 170/137/5 162/141/5 -f 169/142/13 195/143/13 161/144/13 -f 163/145/2 162/141/2 168/146/2 -f 164/147/2 161/148/2 195/149/2 -f 194/140/2 163/145/2 184/150/2 -f 160/151/2 184/150/2 163/145/2 -f 195/149/2 190/152/2 164/147/2 -f 159/153/2 190/152/2 182/154/2 -f 192/155/13 146/111/13 143/156/13 -f 117/157/13 146/111/13 127/158/13 -f 147/112/13 160/159/13 149/160/13 -f 118/161/5 121/162/5 133/163/5 -f 145/164/5 156/165/5 118/161/5 -f 200/166/20 93/167/20 91/84/20 -f 198/168/21 87/61/21 196/169/21 -f 198/168/22 197/170/22 200/166/22 -f 89/86/23 200/166/23 91/84/23 -f 196/169/13 73/63/13 83/110/13 -f 197/170/13 83/110/13 82/171/13 -f 241/172/2 245/173/2 237/174/2 -f 213/175/2 226/176/2 225/177/2 -f 214/178/2 227/179/2 226/176/2 -f 216/180/2 227/179/2 215/181/2 -f 217/182/2 228/183/2 216/180/2 -f 218/184/2 229/185/2 217/182/2 -f 219/186/2 230/187/2 218/184/2 -f 219/188/2 232/189/2 231/190/2 -f 220/191/2 233/192/2 232/189/2 -f 222/193/2 233/192/2 221/194/2 -f 223/195/2 234/196/2 222/193/2 -f 224/197/2 235/198/2 223/195/2 -f 213/175/2 236/199/2 224/197/2 -f 252/200/2 34/201/2 35/202/2 -f 88/82/6 74/203/6 89/83/6 -f 281/204/13 277/205/13 273/206/13 -f 305/207/5 301/208/5 297/209/5 -f 312/210/13 314/211/13 313/212/13 -f 317/213/13 308/214/13 307/215/13 -f 310/216/13 316/217/13 311/218/13 -f 318/219/13 309/220/13 308/214/13 -f 321/221/5 328/222/5 320/223/5 -f 309/220/13 330/224/13 310/216/13 -f 322/225/5 329/226/5 321/221/5 -f 331/227/5 322/225/5 323/228/5 -f 342/229/13 346/230/13 344/231/13 -f 342/229/13 334/232/13 336/233/13 -f 340/234/13 332/235/13 334/236/13 -f 345/237/6 346/230/6 347/238/6 -f 343/239/5 347/238/5 337/240/5 -f 341/241/5 337/240/5 335/242/5 -f 333/243/5 341/244/5 335/245/5 -f 150/246/1 151/247/1 152/248/1 -f 145/164/5 351/249/5 148/250/5 -f 354/251/1 355/252/1 145/164/1 -f 256/253/1 145/164/1 355/252/1 -f 351/254/1 364/255/1 350/256/1 -f 358/257/1 364/255/1 359/258/1 -f 362/259/1 358/257/1 357/260/1 -f 356/261/1 362/259/1 357/260/1 -f 356/262/24 365/263/24 361/264/24 -f 349/265/13 366/266/13 153/267/13 -f 152/248/1 366/266/1 365/268/1 -f 145/164/25 118/161/25 81/77/25 -f 353/269/1 368/270/1 80/78/1 -f 197/170/13 82/171/13 370/271/13 -f 369/272/5 80/78/5 96/74/5 -f 372/273/13 315/274/13 312/275/13 -f 316/276/13 372/277/13 311/218/13 -f 316/278/26 331/279/26 375/280/26 -f 326/281/5 377/282/5 325/283/5 -f 324/284/5 374/285/5 377/286/5 -f 375/287/5 374/288/5 376/289/5 -f 323/228/5 375/290/5 331/291/5 -f 373/292/27 310/216/27 311/218/27 -f 467/293/2 412/294/2 404/295/2 -f 414/296/2 407/297/2 415/298/2 -f 417/299/6 379/300/6 378/301/6 -f 398/302/13 423/303/13 399/304/13 -f 420/305/5 397/306/5 396/307/5 -f 421/308/17 398/302/17 397/306/17 -f 386/309/1 394/310/1 393/311/1 -f 387/312/1 395/313/1 394/310/1 -f 388/314/1 389/315/1 395/313/1 -f 382/316/1 389/315/1 381/317/1 -f 383/318/1 390/319/1 382/316/1 -f 384/320/1 391/321/1 383/318/1 -f 468/322/1 384/320/1 385/323/1 -f 386/309/1 468/322/1 385/323/1 -f 415/298/2 408/324/2 416/325/2 -f 416/325/2 401/326/2 409/327/2 -f 401/326/2 410/328/2 409/327/2 -f 402/329/2 411/330/2 410/328/2 -f 403/331/2 412/294/2 411/330/2 -f 414/296/2 467/293/2 406/332/2 -f 420/333/28 419/334/28 421/335/28 -f 423/336/28 422/337/28 424/338/28 -f 426/339/29 417/299/29 378/340/29 -f 399/341/1 400/342/1 398/343/1 -f 396/344/1 397/345/1 380/346/1 -f 439/347/5 441/348/5 435/349/5 -f 400/342/1 426/350/1 378/351/1 -f 425/352/2 418/353/2 417/299/2 -f 446/354/1 443/355/1 444/356/1 -f 448/357/17 445/358/17 446/354/17 -f 450/359/30 447/360/30 448/357/30 -f 444/356/13 448/361/13 446/354/13 -f 443/355/5 447/362/5 449/363/5 -f 451/364/31 458/365/31 454/366/31 -f 457/367/32 452/368/32 453/369/32 -f 459/370/17 457/367/17 453/369/17 -f 458/365/17 461/371/17 454/366/17 -f 462/372/33 465/373/33 461/371/33 -f 463/374/34 460/375/34 459/370/34 -f 454/366/1 465/376/1 451/364/1 -f 453/369/1 463/377/1 459/378/1 -f 457/367/2 464/379/2 456/380/2 -f 466/381/2 458/365/2 455/382/2 -f 456/383/17 451/384/17 452/385/17 -f 465/386/1 28/387/1 5/388/1 -f 36/389/2 456/383/2 37/390/2 -f 485/391/2 489/392/2 481/393/2 -f 509/394/2 513/395/2 505/396/2 -f 519/397/2 524/398/2 520/399/2 -f 522/400/17 519/401/17 518/402/17 -f 520/403/6 521/404/6 517/405/6 -f 521/404/18 518/406/18 517/407/18 -f 524/398/13 522/400/13 521/404/13 -f 555/408/1 561/409/1 559/410/1 -f 569/411/2 570/412/2 563/413/2 -f 585/414/6 583/415/6 581/416/6 -f 589/417/2 594/418/2 590/419/2 -f 587/420/1 592/421/1 588/422/1 -f 594/423/5 587/424/5 590/425/5 -f 588/426/13 593/427/13 589/428/13 -f 595/429/13 597/430/13 598/431/13 -f 599/432/1 598/433/1 597/434/1 -f 601/435/5 600/436/5 599/432/5 -f 602/437/2 596/438/2 595/429/2 -f 597/430/17 591/439/17 594/440/17 -f 593/441/17 597/434/17 594/442/17 -f 592/443/17 599/432/17 593/444/17 -f 591/445/17 601/435/17 592/446/17 -f 587/424/6 598/431/6 590/425/6 -f 590/419/6 600/436/6 589/417/6 -f 589/428/6 602/437/6 588/426/6 -f 602/437/6 587/420/6 588/422/6 -f 27/1/1 31/447/1 14/2/1 -f 2/4/1 25/448/1 27/1/1 -f 29/5/1 6/449/1 1/6/1 -f 28/8/1 25/448/1 2/4/1 -f 40/10/2 41/29/2 10/11/2 -f 11/13/2 43/27/2 42/14/2 -f 44/16/2 12/450/2 8/15/2 -f 45/17/2 40/10/2 7/12/2 -f 46/19/2 45/451/2 13/20/2 -f 12/22/2 44/452/2 46/19/2 -f 47/23/2 48/453/2 16/24/2 -f 16/26/2 48/453/2 43/27/2 -f 15/28/2 10/11/2 41/29/2 -f 53/30/1 51/44/1 59/31/1 -f 55/33/1 53/454/1 62/34/1 -f 61/36/1 54/455/1 55/33/1 -f 60/37/1 49/40/1 54/38/1 -f 49/40/1 60/37/1 64/41/1 -f 63/43/1 59/31/1 51/44/1 -f 65/46/1 57/51/1 56/47/1 -f 50/42/1 64/41/1 66/49/1 -f 65/50/1 63/43/1 52/45/1 -f 14/52/1 31/447/1 30/53/1 -f 26/55/1 24/7/1 1/6/1 -f 26/55/1 78/56/1 79/57/1 -f 75/58/3 88/66/3 86/59/3 -f 87/61/4 89/86/4 74/62/4 -f 99/64/5 101/456/5 90/65/5 -f 92/67/6 90/88/6 91/68/6 -f 84/70/7 92/67/7 93/69/7 -f 94/72/5 81/77/5 72/60/5 -f 95/73/8 94/72/8 86/59/8 -f 96/74/9 94/72/9 95/73/9 -f 92/76/10 96/74/10 97/75/10 -f 97/75/5 95/73/5 88/66/5 -f 81/77/5 94/72/5 96/74/5 -f 100/79/11 101/87/11 99/80/11 -f 98/81/12 99/80/12 88/82/12 -f 91/84/13 100/457/13 98/85/13 -f 101/87/1 100/79/1 91/68/1 -f 104/91/1 103/458/1 112/89/1 -f 103/458/1 102/459/1 112/89/1 -f 102/459/1 113/460/1 112/89/1 -f 112/89/1 111/461/1 110/462/1 -f 110/462/1 109/463/1 112/89/1 -f 109/463/1 108/90/1 112/89/1 -f 108/90/1 107/464/1 104/91/1 -f 107/464/1 106/465/1 104/91/1 -f 106/465/1 105/466/1 104/91/1 -f 141/92/1 142/467/1 123/93/1 -f 138/95/1 139/468/1 117/96/1 -f 137/98/1 136/101/1 115/99/1 -f 136/101/1 138/95/1 116/97/1 -f 123/93/1 142/467/1 137/102/1 -f 141/104/14 122/469/14 144/105/14 -f 368/107/15 354/470/15 145/108/15 -f 348/471/16 82/171/16 147/112/16 -f 82/171/16 83/110/16 147/112/16 -f 173/113/17 174/129/17 155/114/17 -f 168/116/13 165/122/13 171/117/13 -f 167/119/5 164/472/5 172/120/5 -f 165/122/18 173/473/18 175/123/18 -f 176/124/19 174/474/19 166/121/19 -f 170/125/17 165/122/17 168/116/17 -f 167/119/17 166/121/17 169/127/17 -f 170/125/17 169/127/17 174/129/17 -f 155/130/5 174/474/5 176/124/5 -f 175/123/13 173/473/13 154/132/13 -f 130/136/2 129/475/2 188/134/2 -f 129/475/2 177/476/2 188/134/2 -f 177/476/2 187/477/2 188/134/2 -f 188/134/2 189/478/2 178/479/2 -f 178/479/2 179/480/2 188/134/2 -f 179/480/2 180/135/2 188/134/2 -f 180/135/2 181/481/2 193/482/2 -f 193/482/2 131/483/2 180/135/2 -f 131/483/2 130/136/2 180/135/2 -f 191/484/2 169/142/2 186/139/2 -f 169/142/2 170/137/2 186/139/2 -f 194/140/5 185/138/5 170/137/5 -f 169/142/13 191/484/13 195/143/13 -f 163/145/2 194/140/2 162/141/2 -f 164/147/2 167/485/2 161/148/2 -f 160/151/2 183/486/2 184/150/2 -f 159/153/2 164/147/2 190/152/2 -f 192/155/13 147/112/13 146/111/13 -f 117/157/13 143/156/13 146/111/13 -f 147/112/13 192/155/13 160/159/13 -f 118/161/5 156/165/5 121/162/5 -f 145/164/5 158/487/5 156/165/5 -f 91/84/35 199/488/35 200/166/35 -f 200/166/36 197/170/36 93/167/36 -f 198/168/21 89/86/21 87/61/21 -f 198/168/37 196/169/37 197/170/37 -f 89/86/38 198/168/38 200/166/38 -f 196/169/13 87/61/13 73/63/13 -f 197/170/13 196/169/13 83/110/13 -f 237/174/2 238/489/2 239/490/2 -f 239/490/2 240/491/2 241/172/2 -f 241/172/2 242/492/2 243/493/2 -f 243/493/2 244/494/2 245/173/2 -f 245/173/2 246/495/2 237/174/2 -f 246/495/2 247/496/2 237/174/2 -f 247/496/2 248/497/2 237/174/2 -f 237/174/2 239/490/2 241/172/2 -f 241/172/2 243/493/2 245/173/2 -f 213/175/2 214/178/2 226/176/2 -f 214/178/2 215/181/2 227/179/2 -f 216/180/2 228/183/2 227/179/2 -f 217/182/2 229/185/2 228/183/2 -f 218/184/2 230/187/2 229/185/2 -f 219/186/2 231/498/2 230/187/2 -f 219/188/2 220/191/2 232/189/2 -f 220/191/2 221/194/2 233/192/2 -f 222/193/2 234/196/2 233/192/2 -f 223/195/2 235/198/2 234/196/2 -f 224/197/2 236/199/2 235/198/2 -f 213/175/2 225/177/2 236/199/2 -f 38/499/2 39/500/2 35/202/2 -f 35/202/2 77/501/2 253/502/2 -f 253/502/2 254/503/2 255/504/2 -f 255/504/2 249/505/2 250/506/2 -f 250/506/2 251/507/2 252/200/2 -f 252/200/2 76/508/2 34/201/2 -f 34/201/2 38/499/2 35/202/2 -f 35/202/2 253/502/2 252/200/2 -f 253/502/2 255/504/2 252/200/2 -f 255/504/2 250/506/2 252/200/2 -f 88/82/6 75/509/6 74/203/6 -f 273/206/13 272/510/13 271/511/13 -f 271/511/13 282/512/13 281/204/13 -f 281/204/13 280/513/13 279/514/13 -f 279/514/13 278/515/13 281/204/13 -f 278/515/13 277/205/13 281/204/13 -f 277/205/13 276/516/13 275/517/13 -f 275/517/13 274/518/13 273/206/13 -f 273/206/13 271/511/13 281/204/13 -f 277/205/13 275/517/13 273/206/13 -f 297/209/5 296/519/5 295/520/5 -f 295/520/5 306/521/5 305/207/5 -f 305/207/5 304/522/5 303/523/5 -f 303/523/5 302/524/5 305/207/5 -f 302/524/5 301/208/5 305/207/5 -f 301/208/5 300/525/5 299/526/5 -f 299/526/5 298/527/5 297/209/5 -f 297/209/5 295/520/5 305/207/5 -f 301/208/5 299/526/5 297/209/5 -f 312/210/13 315/528/13 314/211/13 -f 317/213/13 318/219/13 308/214/13 -f 310/216/13 330/529/13 316/217/13 -f 318/219/13 319/530/13 309/220/13 -f 321/221/5 329/226/5 328/222/5 -f 309/220/13 319/530/13 330/224/13 -f 322/225/5 327/531/5 329/226/5 -f 331/227/5 327/531/5 322/225/5 -f 342/229/13 336/233/13 346/230/13 -f 342/229/13 340/532/13 334/232/13 -f 340/234/13 338/533/13 332/235/13 -f 345/237/6 344/534/6 346/230/6 -f 343/239/5 345/535/5 347/238/5 -f 341/241/5 343/239/5 337/240/5 -f 333/243/5 339/536/5 341/244/5 -f 150/246/1 154/115/1 155/114/1 -f 151/247/1 153/267/1 152/248/1 -f 150/246/1 155/114/1 151/247/1 -f 145/164/5 256/253/5 351/249/5 -f 148/250/5 159/537/5 145/164/5 -f 159/537/5 158/487/5 145/164/5 -f 351/254/1 359/258/1 364/255/1 -f 358/257/1 363/538/1 364/255/1 -f 362/259/1 363/538/1 358/257/1 -f 356/261/1 361/539/1 362/259/1 -f 356/262/24 360/540/24 365/263/24 -f 147/541/1 149/542/1 365/268/1 -f 149/542/1 152/248/1 365/268/1 -f 152/248/1 153/267/1 366/266/1 -f 365/268/1 360/543/1 147/541/1 -f 81/77/25 80/78/25 145/164/25 -f 80/78/25 367/544/25 145/164/25 -f 82/171/1 348/545/1 352/546/1 -f 82/171/1 352/546/1 353/269/1 -f 368/270/1 367/547/1 80/78/1 -f 80/78/1 82/171/1 353/269/1 -f 85/548/13 93/167/13 370/271/13 -f 93/167/13 197/170/13 370/271/13 -f 96/74/5 92/76/5 369/272/5 -f 92/76/5 84/549/5 369/272/5 -f 372/273/13 371/550/13 315/274/13 -f 316/276/13 371/551/13 372/277/13 -f 316/278/26 330/552/26 331/279/26 -f 326/281/5 324/553/5 377/282/5 -f 324/284/5 376/554/5 374/285/5 -f 375/287/5 373/292/5 374/288/5 -f 323/228/5 373/292/5 375/290/5 -f 373/292/27 323/228/27 310/216/27 -f 467/293/2 413/555/2 412/294/2 -f 414/296/2 406/332/2 407/297/2 -f 417/299/6 418/353/6 379/300/6 -f 398/302/13 422/556/13 423/303/13 -f 420/305/5 421/308/5 397/306/5 -f 421/308/17 422/556/17 398/302/17 -f 386/309/1 387/312/1 394/310/1 -f 387/312/1 388/314/1 395/313/1 -f 388/314/1 381/317/1 389/315/1 -f 382/316/1 390/319/1 389/315/1 -f 383/318/1 391/321/1 390/319/1 -f 384/320/1 392/557/1 391/321/1 -f 468/322/1 392/557/1 384/320/1 -f 386/309/1 393/311/1 468/322/1 -f 415/298/2 407/297/2 408/324/2 -f 416/325/2 408/324/2 401/326/2 -f 401/326/2 402/329/2 410/328/2 -f 402/329/2 403/331/2 411/330/2 -f 403/331/2 404/295/2 412/294/2 -f 414/296/2 413/555/2 467/293/2 -f 426/339/29 425/352/29 417/299/29 -f 435/349/5 436/558/5 437/559/5 -f 437/559/5 438/560/5 439/347/5 -f 439/347/5 440/561/5 441/348/5 -f 441/348/5 442/562/5 435/349/5 -f 435/349/5 437/559/5 439/347/5 -f 378/351/1 379/563/1 398/343/1 -f 379/563/1 380/346/1 397/345/1 -f 397/345/1 398/343/1 379/563/1 -f 398/343/1 400/342/1 378/351/1 -f 425/352/2 405/564/2 418/353/2 -f 446/354/1 445/358/1 443/355/1 -f 448/357/17 447/360/17 445/358/17 -f 450/359/30 449/565/30 447/360/30 -f 444/356/13 450/566/13 448/361/13 -f 443/355/5 445/358/5 447/362/5 -f 451/364/31 455/382/31 458/365/31 -f 457/367/32 456/380/32 452/368/32 -f 459/370/17 460/375/17 457/367/17 -f 458/365/17 462/372/17 461/371/17 -f 462/372/33 466/567/33 465/373/33 -f 463/374/34 464/568/34 460/375/34 -f 454/366/1 461/569/1 465/376/1 -f 453/369/1 452/368/1 463/377/1 -f 457/367/2 460/570/2 464/379/2 -f 466/381/2 462/571/2 458/365/2 -f 456/383/17 455/572/17 451/384/17 -f 5/388/1 6/573/1 451/384/1 -f 6/573/1 29/574/1 463/575/1 -f 451/384/1 6/573/1 452/385/1 -f 463/575/1 452/385/1 6/573/1 -f 451/384/1 465/386/1 5/388/1 -f 32/576/2 33/577/2 36/389/2 -f 36/389/2 466/578/2 455/572/2 -f 456/383/2 464/579/2 37/390/2 -f 36/389/2 455/572/2 456/383/2 -f 37/390/2 32/576/2 36/389/2 -f 481/393/2 482/580/2 483/581/2 -f 483/581/2 484/582/2 485/391/2 -f 485/391/2 486/583/2 487/584/2 -f 487/584/2 488/585/2 489/392/2 -f 489/392/2 490/586/2 481/393/2 -f 490/586/2 491/587/2 481/393/2 -f 491/587/2 492/588/2 481/393/2 -f 481/393/2 483/581/2 485/391/2 -f 485/391/2 487/584/2 489/392/2 -f 505/396/2 506/589/2 507/590/2 -f 507/590/2 508/591/2 509/394/2 -f 509/394/2 510/592/2 513/395/2 -f 510/592/2 511/593/2 513/395/2 -f 511/593/2 512/594/2 513/395/2 -f 513/395/2 514/595/2 515/596/2 -f 515/596/39 516/597/39 513/395/39 -f 516/597/2 505/396/2 513/395/2 -f 505/396/2 507/590/2 509/394/2 -f 519/397/2 523/598/2 524/398/2 -f 522/400/17 523/598/17 519/401/17 -f 520/403/6 524/398/6 521/404/6 -f 521/404/18 522/400/18 518/406/18 -f 524/398/13 523/598/13 522/400/13 -f 557/599/1 556/600/1 555/408/1 -f 555/408/1 562/601/1 561/409/1 -f 561/409/1 560/602/1 559/410/1 -f 559/410/1 558/603/1 557/599/1 -f 557/599/1 555/408/1 559/410/1 -f 563/413/2 564/604/2 565/605/2 -f 565/605/2 566/606/2 563/413/2 -f 566/606/2 567/607/2 563/413/2 -f 567/607/2 568/608/2 563/413/2 -f 568/608/2 569/411/2 563/413/2 -f 581/416/6 580/609/6 579/610/6 -f 579/610/6 586/611/6 585/414/6 -f 585/414/6 584/612/6 583/415/6 -f 583/415/6 582/613/6 581/416/6 -f 581/416/6 579/610/6 585/414/6 -f 589/417/2 593/614/2 594/418/2 -f 587/420/1 591/615/1 592/421/1 -f 594/423/5 591/616/5 587/424/5 -f 588/426/13 592/617/13 593/427/13 -f 595/429/13 596/438/13 597/430/13 -f 599/432/1 600/436/1 598/433/1 -f 601/435/5 602/437/5 600/436/5 -f 602/437/2 601/435/2 596/438/2 -f 597/430/17 596/438/17 591/439/17 -f 593/441/17 599/432/17 597/434/17 -f 592/443/17 601/435/17 599/432/17 -f 591/445/17 596/438/17 601/435/17 -f 587/424/6 595/429/6 598/431/6 -f 590/419/6 598/433/6 600/436/6 -f 589/428/6 600/436/6 602/437/6 -f 602/437/6 595/429/6 587/420/6 +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 1/1/1 3/3/1 +f 5/5/1 6/6/1 7/7/1 +f 8/8/1 4/4/1 9/9/1 +f 10/10/2 11/11/2 12/12/2 +f 13/13/2 14/14/2 15/15/2 +f 16/16/2 15/15/2 14/14/2 +f 17/17/2 12/12/2 18/18/2 +f 19/19/2 18/20/2 20/21/2 +f 21/22/2 19/19/2 20/21/2 +f 22/23/2 23/24/2 24/25/2 +f 23/26/2 25/27/2 13/13/2 +f 24/28/2 26/29/2 22/23/2 +f 27/30/1 28/31/1 29/32/1 +f 30/33/1 29/34/1 31/35/1 +f 32/36/1 30/33/1 31/35/1 +f 33/37/1 34/38/1 32/39/1 +f 35/40/1 36/41/1 37/42/1 +f 38/43/1 39/44/1 40/45/1 +f 41/46/1 42/47/1 43/48/1 +f 37/42/1 43/49/1 42/47/1 +f 41/50/1 40/45/1 44/51/1 +f 2/52/1 45/53/1 46/54/1 +f 47/55/1 6/6/1 48/56/1 +f 47/55/1 46/57/1 45/53/1 +f 49/58/3 50/59/3 51/60/3 +f 52/61/4 53/62/4 54/63/4 +f 55/64/5 56/65/5 57/66/5 +f 58/67/6 59/68/6 60/69/6 +f 61/70/7 60/69/7 62/71/7 +f 63/72/5 51/60/5 50/59/5 +f 64/73/8 50/59/8 57/66/8 +f 65/74/9 64/73/9 66/75/9 +f 58/76/10 66/75/10 56/65/10 +f 66/75/5 57/66/5 56/65/5 +f 67/77/5 65/74/5 68/78/5 +f 69/79/11 55/80/11 70/81/11 +f 70/81/12 57/82/12 71/83/12 +f 59/84/13 70/85/13 71/86/13 +f 72/87/1 59/68/1 56/88/1 +f 73/89/1 74/90/1 75/91/1 +f 76/92/1 77/93/1 78/94/1 +f 79/95/1 80/96/1 81/97/1 +f 82/98/1 83/99/1 84/100/1 +f 85/101/1 81/97/1 83/99/1 +f 77/93/1 82/102/1 84/103/1 +f 76/104/14 86/105/14 87/106/14 +f 88/107/15 89/108/15 90/109/15 +f 91/110/16 92/111/16 93/112/16 +f 94/113/17 95/114/17 96/115/17 +f 97/116/13 98/117/13 99/118/13 +f 100/119/5 101/120/5 102/121/5 +f 103/122/18 104/123/18 98/117/18 +f 105/124/19 102/121/19 101/120/19 +f 106/125/17 97/116/17 107/126/17 +f 100/119/17 108/127/17 109/128/17 +f 102/121/17 110/129/17 108/127/17 +f 94/113/17 103/122/17 106/125/17 +f 106/125/17 110/129/17 94/113/17 +f 95/130/5 105/124/5 111/131/5 +f 104/123/13 96/132/13 112/133/13 +f 113/134/2 114/135/2 115/136/2 +f 106/137/2 116/138/2 117/139/2 +f 118/140/5 106/137/5 107/141/5 +f 108/142/13 119/143/13 109/144/13 +f 99/145/2 107/141/2 97/146/2 +f 120/147/2 109/148/2 119/149/2 +f 118/140/2 99/145/2 121/150/2 +f 122/151/2 121/150/2 99/145/2 +f 119/149/2 123/152/2 120/147/2 +f 124/153/2 123/152/2 125/154/2 +f 126/155/13 92/111/13 127/156/13 +f 80/157/13 92/111/13 128/158/13 +f 93/112/13 122/159/13 129/160/13 +f 130/161/5 131/162/5 132/163/5 +f 89/164/5 133/165/5 130/161/5 +f 134/166/20 60/167/20 59/84/20 +f 135/168/21 52/61/21 136/169/21 +f 135/168/22 137/170/22 134/166/22 +f 71/86/23 134/166/23 59/84/23 +f 136/169/13 54/63/13 91/110/13 +f 137/170/13 91/110/13 138/171/13 +f 139/172/2 140/173/2 141/174/2 +f 142/175/2 143/176/2 144/177/2 +f 145/178/2 146/179/2 143/176/2 +f 147/180/2 146/179/2 148/181/2 +f 149/182/2 150/183/2 147/180/2 +f 151/184/2 152/185/2 149/182/2 +f 153/186/2 154/187/2 151/184/2 +f 153/188/2 155/189/2 156/190/2 +f 157/191/2 158/192/2 155/189/2 +f 159/193/2 158/192/2 160/194/2 +f 161/195/2 162/196/2 159/193/2 +f 163/197/2 164/198/2 161/195/2 +f 142/175/2 165/199/2 163/197/2 +f 166/200/2 167/201/2 168/202/2 +f 57/82/6 53/203/6 71/83/6 +f 169/204/13 170/205/13 171/206/13 +f 172/207/5 173/208/5 174/209/5 +f 175/210/13 176/211/13 177/212/13 +f 178/213/13 179/214/13 180/215/13 +f 181/216/13 182/217/13 183/218/13 +f 184/219/13 185/220/13 179/214/13 +f 186/221/5 187/222/5 188/223/5 +f 185/220/13 189/224/13 181/216/13 +f 190/225/5 191/226/5 186/221/5 +f 192/227/5 190/225/5 193/228/5 +f 194/229/13 195/230/13 196/231/13 +f 194/229/13 197/232/13 198/233/13 +f 199/234/13 200/235/13 197/236/13 +f 201/237/6 195/230/6 202/238/6 +f 203/239/5 202/238/5 204/240/5 +f 205/241/5 204/240/5 206/242/5 +f 207/243/5 205/244/5 206/245/5 +f 112/246/1 111/247/1 208/248/1 +f 89/164/5 209/249/5 210/250/5 +f 211/251/1 212/252/1 89/164/1 +f 213/253/1 89/164/1 212/252/1 +f 209/254/1 214/255/1 215/256/1 +f 216/257/1 214/255/1 217/258/1 +f 218/259/1 216/257/1 219/260/1 +f 220/261/1 218/259/1 219/260/1 +f 220/262/24 221/263/24 222/264/24 +f 223/265/13 224/266/13 225/267/13 +f 208/248/1 224/266/1 221/268/1 +f 89/164/25 130/161/25 67/77/25 +f 226/269/1 88/270/1 68/78/1 +f 137/170/13 138/171/13 227/271/13 +f 228/272/5 68/78/5 65/74/5 +f 229/273/13 230/274/13 175/275/13 +f 182/276/13 229/277/13 183/218/13 +f 182/278/26 192/279/26 231/280/26 +f 232/281/5 233/282/5 234/283/5 +f 235/284/5 236/285/5 233/286/5 +f 231/287/5 236/288/5 237/289/5 +f 193/228/5 231/290/5 192/291/5 +f 238/292/27 181/216/27 183/218/27 +f 239/293/2 240/294/2 241/295/2 +f 242/296/2 243/297/2 244/298/2 +f 245/299/6 246/300/6 247/301/6 +f 248/302/13 249/303/13 250/304/13 +f 251/305/5 252/306/5 253/307/5 +f 254/308/17 248/302/17 252/306/17 +f 255/309/1 256/310/1 257/311/1 +f 258/312/1 259/313/1 256/310/1 +f 260/314/1 261/315/1 259/313/1 +f 262/316/1 261/315/1 263/317/1 +f 264/318/1 265/319/1 262/316/1 +f 266/320/1 267/321/1 264/318/1 +f 268/322/1 266/320/1 269/323/1 +f 255/309/1 268/322/1 269/323/1 +f 244/298/2 270/324/2 271/325/2 +f 271/325/2 272/326/2 273/327/2 +f 272/326/2 274/328/2 273/327/2 +f 275/329/2 276/330/2 274/328/2 +f 277/331/2 240/294/2 276/330/2 +f 242/296/2 239/293/2 278/332/2 +f 251/333/28 279/334/28 254/335/28 +f 249/336/28 280/337/28 281/338/28 +f 282/339/29 245/299/29 247/340/29 +f 250/341/1 283/342/1 248/343/1 +f 253/344/1 252/345/1 284/346/1 +f 285/347/5 286/348/5 287/349/5 +f 283/342/1 282/350/1 247/351/1 +f 288/352/2 289/353/2 245/299/2 +f 290/354/1 291/355/1 292/356/1 +f 293/357/17 294/358/17 290/354/17 +f 295/359/30 296/360/30 293/357/30 +f 292/356/13 293/361/13 290/354/13 +f 291/355/5 296/362/5 297/363/5 +f 298/364/31 299/365/31 300/366/31 +f 301/367/32 302/368/32 303/369/32 +f 304/370/17 301/367/17 303/369/17 +f 299/365/17 305/371/17 300/366/17 +f 306/372/33 307/373/33 305/371/33 +f 308/374/34 309/375/34 304/370/34 +f 300/366/1 307/376/1 298/364/1 +f 303/369/1 308/377/1 304/378/1 +f 301/367/2 310/379/2 311/380/2 +f 312/381/2 299/365/2 313/382/2 +f 311/383/17 298/384/17 302/385/17 +f 307/386/1 8/387/1 9/388/1 +f 314/389/2 311/383/2 315/390/2 +f 316/391/2 317/392/2 318/393/2 +f 319/394/2 320/395/2 321/396/2 +f 322/397/2 323/398/2 324/399/2 +f 325/400/17 322/401/17 326/402/17 +f 324/403/6 327/404/6 328/405/6 +f 327/404/18 326/406/18 328/407/18 +f 323/398/13 325/400/13 327/404/13 +f 329/408/1 330/409/1 331/410/1 +f 332/411/2 333/412/2 334/413/2 +f 335/414/6 336/415/6 337/416/6 +f 338/417/2 339/418/2 340/419/2 +f 341/420/1 342/421/1 343/422/1 +f 339/423/5 341/424/5 340/425/5 +f 343/426/13 344/427/13 338/428/13 +f 345/429/13 346/430/13 347/431/13 +f 348/432/1 347/433/1 346/434/1 +f 349/435/5 350/436/5 348/432/5 +f 351/437/2 352/438/2 345/429/2 +f 346/430/17 353/439/17 339/440/17 +f 344/441/17 346/434/17 339/442/17 +f 342/443/17 348/432/17 344/444/17 +f 353/445/17 349/435/17 342/446/17 +f 341/424/6 347/431/6 340/425/6 +f 340/419/6 350/436/6 338/417/6 +f 338/428/6 351/437/6 343/426/6 +f 351/437/6 341/420/6 343/422/6 +f 1/1/1 354/447/1 2/2/1 +f 4/4/1 355/448/1 1/1/1 +f 5/5/1 356/449/1 6/6/1 +f 8/8/1 355/448/1 4/4/1 +f 10/10/2 26/29/2 11/11/2 +f 13/13/2 25/27/2 14/14/2 +f 16/16/2 21/450/2 15/15/2 +f 17/17/2 10/10/2 12/12/2 +f 19/19/2 17/451/2 18/20/2 +f 21/22/2 16/452/2 19/19/2 +f 22/23/2 357/453/2 23/24/2 +f 23/26/2 357/453/2 25/27/2 +f 24/28/2 11/11/2 26/29/2 +f 27/30/1 39/44/1 28/31/1 +f 30/33/1 27/454/1 29/34/1 +f 32/36/1 34/455/1 30/33/1 +f 33/37/1 35/40/1 34/38/1 +f 35/40/1 33/37/1 36/41/1 +f 38/43/1 28/31/1 39/44/1 +f 41/46/1 44/51/1 42/47/1 +f 37/42/1 36/41/1 43/49/1 +f 41/50/1 38/43/1 40/45/1 +f 2/52/1 354/447/1 45/53/1 +f 47/55/1 7/7/1 6/6/1 +f 47/55/1 48/56/1 46/57/1 +f 49/58/3 57/66/3 50/59/3 +f 52/61/4 71/86/4 53/62/4 +f 55/64/5 72/456/5 56/65/5 +f 58/67/6 56/88/6 59/68/6 +f 61/70/7 58/67/7 60/69/7 +f 63/72/5 67/77/5 51/60/5 +f 64/73/8 63/72/8 50/59/8 +f 65/74/9 63/72/9 64/73/9 +f 58/76/10 65/74/10 66/75/10 +f 66/75/5 64/73/5 57/66/5 +f 67/77/5 63/72/5 65/74/5 +f 69/79/11 72/87/11 55/80/11 +f 70/81/12 55/80/12 57/82/12 +f 59/84/13 69/457/13 70/85/13 +f 72/87/1 69/79/1 59/68/1 +f 75/91/1 358/458/1 73/89/1 +f 358/458/1 359/459/1 73/89/1 +f 359/459/1 360/460/1 73/89/1 +f 73/89/1 361/461/1 362/462/1 +f 362/462/1 363/463/1 73/89/1 +f 363/463/1 74/90/1 73/89/1 +f 74/90/1 364/464/1 75/91/1 +f 364/464/1 365/465/1 75/91/1 +f 365/465/1 366/466/1 75/91/1 +f 76/92/1 367/467/1 77/93/1 +f 79/95/1 368/468/1 80/96/1 +f 82/98/1 85/101/1 83/99/1 +f 85/101/1 79/95/1 81/97/1 +f 77/93/1 367/467/1 82/102/1 +f 76/104/14 78/469/14 86/105/14 +f 88/107/15 211/470/15 89/108/15 +f 369/471/16 138/171/16 93/112/16 +f 138/171/16 91/110/16 93/112/16 +f 94/113/17 110/129/17 95/114/17 +f 97/116/13 103/122/13 98/117/13 +f 100/119/5 120/472/5 101/120/5 +f 103/122/18 94/473/18 104/123/18 +f 105/124/19 110/474/19 102/121/19 +f 106/125/17 103/122/17 97/116/17 +f 100/119/17 102/121/17 108/127/17 +f 106/125/17 108/127/17 110/129/17 +f 95/130/5 110/474/5 105/124/5 +f 104/123/13 94/473/13 96/132/13 +f 115/136/2 370/475/2 113/134/2 +f 370/475/2 371/476/2 113/134/2 +f 371/476/2 372/477/2 113/134/2 +f 113/134/2 373/478/2 374/479/2 +f 374/479/2 375/480/2 113/134/2 +f 375/480/2 114/135/2 113/134/2 +f 114/135/2 376/481/2 377/482/2 +f 377/482/2 378/483/2 114/135/2 +f 378/483/2 115/136/2 114/135/2 +f 379/484/2 108/142/2 117/139/2 +f 108/142/2 106/137/2 117/139/2 +f 118/140/5 116/138/5 106/137/5 +f 108/142/13 379/484/13 119/143/13 +f 99/145/2 118/140/2 107/141/2 +f 120/147/2 100/485/2 109/148/2 +f 122/151/2 380/486/2 121/150/2 +f 124/153/2 120/147/2 123/152/2 +f 126/155/13 93/112/13 92/111/13 +f 80/157/13 127/156/13 92/111/13 +f 93/112/13 126/155/13 122/159/13 +f 130/161/5 133/165/5 131/162/5 +f 89/164/5 381/487/5 133/165/5 +f 59/84/35 382/488/35 134/166/35 +f 134/166/36 137/170/36 60/167/36 +f 135/168/21 71/86/21 52/61/21 +f 135/168/37 136/169/37 137/170/37 +f 71/86/38 135/168/38 134/166/38 +f 136/169/13 52/61/13 54/63/13 +f 137/170/13 136/169/13 91/110/13 +f 141/174/2 383/489/2 384/490/2 +f 384/490/2 385/491/2 139/172/2 +f 139/172/2 386/492/2 387/493/2 +f 387/493/2 388/494/2 140/173/2 +f 140/173/2 389/495/2 141/174/2 +f 389/495/2 390/496/2 141/174/2 +f 390/496/2 391/497/2 141/174/2 +f 141/174/2 384/490/2 139/172/2 +f 139/172/2 387/493/2 140/173/2 +f 142/175/2 145/178/2 143/176/2 +f 145/178/2 148/181/2 146/179/2 +f 147/180/2 150/183/2 146/179/2 +f 149/182/2 152/185/2 150/183/2 +f 151/184/2 154/187/2 152/185/2 +f 153/186/2 156/498/2 154/187/2 +f 153/188/2 157/191/2 155/189/2 +f 157/191/2 160/194/2 158/192/2 +f 159/193/2 162/196/2 158/192/2 +f 161/195/2 164/198/2 162/196/2 +f 163/197/2 165/199/2 164/198/2 +f 142/175/2 144/177/2 165/199/2 +f 392/499/2 393/500/2 168/202/2 +f 168/202/2 394/501/2 395/502/2 +f 395/502/2 396/503/2 397/504/2 +f 397/504/2 398/505/2 399/506/2 +f 399/506/2 400/507/2 166/200/2 +f 166/200/2 401/508/2 167/201/2 +f 167/201/2 392/499/2 168/202/2 +f 168/202/2 395/502/2 166/200/2 +f 395/502/2 397/504/2 166/200/2 +f 397/504/2 399/506/2 166/200/2 +f 57/82/6 49/509/6 53/203/6 +f 171/206/13 402/510/13 403/511/13 +f 403/511/13 404/512/13 169/204/13 +f 169/204/13 405/513/13 406/514/13 +f 406/514/13 407/515/13 169/204/13 +f 407/515/13 170/205/13 169/204/13 +f 170/205/13 408/516/13 409/517/13 +f 409/517/13 410/518/13 171/206/13 +f 171/206/13 403/511/13 169/204/13 +f 170/205/13 409/517/13 171/206/13 +f 174/209/5 411/519/5 412/520/5 +f 412/520/5 413/521/5 172/207/5 +f 172/207/5 414/522/5 415/523/5 +f 415/523/5 416/524/5 172/207/5 +f 416/524/5 173/208/5 172/207/5 +f 173/208/5 417/525/5 418/526/5 +f 418/526/5 419/527/5 174/209/5 +f 174/209/5 412/520/5 172/207/5 +f 173/208/5 418/526/5 174/209/5 +f 175/210/13 230/528/13 176/211/13 +f 178/213/13 184/219/13 179/214/13 +f 181/216/13 189/529/13 182/217/13 +f 184/219/13 420/530/13 185/220/13 +f 186/221/5 191/226/5 187/222/5 +f 185/220/13 420/530/13 189/224/13 +f 190/225/5 421/531/5 191/226/5 +f 192/227/5 421/531/5 190/225/5 +f 194/229/13 198/233/13 195/230/13 +f 194/229/13 199/532/13 197/232/13 +f 199/234/13 422/533/13 200/235/13 +f 201/237/6 196/534/6 195/230/6 +f 203/239/5 201/535/5 202/238/5 +f 205/241/5 203/239/5 204/240/5 +f 207/243/5 423/536/5 205/244/5 +f 112/246/1 96/115/1 95/114/1 +f 111/247/1 225/267/1 208/248/1 +f 112/246/1 95/114/1 111/247/1 +f 89/164/5 213/253/5 209/249/5 +f 210/250/5 124/537/5 89/164/5 +f 124/537/5 381/487/5 89/164/5 +f 209/254/1 217/258/1 214/255/1 +f 216/257/1 424/538/1 214/255/1 +f 218/259/1 424/538/1 216/257/1 +f 220/261/1 222/539/1 218/259/1 +f 220/262/24 425/540/24 221/263/24 +f 93/541/1 129/542/1 221/268/1 +f 129/542/1 208/248/1 221/268/1 +f 208/248/1 225/267/1 224/266/1 +f 221/268/1 425/543/1 93/541/1 +f 67/77/25 68/78/25 89/164/25 +f 68/78/25 90/544/25 89/164/25 +f 138/171/1 369/545/1 426/546/1 +f 138/171/1 426/546/1 226/269/1 +f 88/270/1 90/547/1 68/78/1 +f 68/78/1 138/171/1 226/269/1 +f 62/548/13 60/167/13 227/271/13 +f 60/167/13 137/170/13 227/271/13 +f 65/74/5 58/76/5 228/272/5 +f 58/76/5 61/549/5 228/272/5 +f 229/273/13 427/550/13 230/274/13 +f 182/276/13 427/551/13 229/277/13 +f 182/278/26 189/552/26 192/279/26 +f 232/281/5 235/553/5 233/282/5 +f 235/284/5 237/554/5 236/285/5 +f 231/287/5 238/292/5 236/288/5 +f 193/228/5 238/292/5 231/290/5 +f 238/292/27 193/228/27 181/216/27 +f 239/293/2 428/555/2 240/294/2 +f 242/296/2 278/332/2 243/297/2 +f 245/299/6 289/353/6 246/300/6 +f 248/302/13 280/556/13 249/303/13 +f 251/305/5 254/308/5 252/306/5 +f 254/308/17 280/556/17 248/302/17 +f 255/309/1 258/312/1 256/310/1 +f 258/312/1 260/314/1 259/313/1 +f 260/314/1 263/317/1 261/315/1 +f 262/316/1 265/319/1 261/315/1 +f 264/318/1 267/321/1 265/319/1 +f 266/320/1 429/557/1 267/321/1 +f 268/322/1 429/557/1 266/320/1 +f 255/309/1 257/311/1 268/322/1 +f 244/298/2 243/297/2 270/324/2 +f 271/325/2 270/324/2 272/326/2 +f 272/326/2 275/329/2 274/328/2 +f 275/329/2 277/331/2 276/330/2 +f 277/331/2 241/295/2 240/294/2 +f 242/296/2 428/555/2 239/293/2 +f 282/339/29 288/352/29 245/299/29 +f 287/349/5 430/558/5 431/559/5 +f 431/559/5 432/560/5 285/347/5 +f 285/347/5 433/561/5 286/348/5 +f 286/348/5 434/562/5 287/349/5 +f 287/349/5 431/559/5 285/347/5 +f 247/351/1 246/563/1 248/343/1 +f 246/563/1 284/346/1 252/345/1 +f 252/345/1 248/343/1 246/563/1 +f 248/343/1 283/342/1 247/351/1 +f 288/352/2 435/564/2 289/353/2 +f 290/354/1 294/358/1 291/355/1 +f 293/357/17 296/360/17 294/358/17 +f 295/359/30 297/565/30 296/360/30 +f 292/356/13 295/566/13 293/361/13 +f 291/355/5 294/358/5 296/362/5 +f 298/364/31 313/382/31 299/365/31 +f 301/367/32 311/380/32 302/368/32 +f 304/370/17 309/375/17 301/367/17 +f 299/365/17 306/372/17 305/371/17 +f 306/372/33 312/567/33 307/373/33 +f 308/374/34 310/568/34 309/375/34 +f 300/366/1 305/569/1 307/376/1 +f 303/369/1 302/368/1 308/377/1 +f 301/367/2 309/570/2 310/379/2 +f 312/381/2 306/571/2 299/365/2 +f 311/383/17 313/572/17 298/384/17 +f 9/388/1 356/573/1 298/384/1 +f 356/573/1 5/574/1 308/575/1 +f 298/384/1 356/573/1 302/385/1 +f 308/575/1 302/385/1 356/573/1 +f 298/384/1 307/386/1 9/388/1 +f 436/576/2 437/577/2 314/389/2 +f 314/389/2 312/578/2 313/572/2 +f 311/383/2 310/579/2 315/390/2 +f 314/389/2 313/572/2 311/383/2 +f 315/390/2 436/576/2 314/389/2 +f 318/393/2 438/580/2 439/581/2 +f 439/581/2 440/582/2 316/391/2 +f 316/391/2 441/583/2 442/584/2 +f 442/584/2 443/585/2 317/392/2 +f 317/392/2 444/586/2 318/393/2 +f 444/586/2 445/587/2 318/393/2 +f 445/587/2 446/588/2 318/393/2 +f 318/393/2 439/581/2 316/391/2 +f 316/391/2 442/584/2 317/392/2 +f 321/396/2 447/589/2 448/590/2 +f 448/590/2 449/591/2 319/394/2 +f 319/394/2 450/592/2 320/395/2 +f 450/592/2 451/593/2 320/395/2 +f 451/593/2 452/594/2 320/395/2 +f 320/395/2 453/595/2 454/596/2 +f 454/596/2 455/597/2 320/395/2 +f 455/597/2 321/396/2 320/395/2 +f 321/396/2 448/590/2 319/394/2 +f 322/397/2 456/598/2 323/398/2 +f 325/400/17 456/598/17 322/401/17 +f 324/403/6 323/398/6 327/404/6 +f 327/404/18 325/400/18 326/406/18 +f 323/398/13 456/598/13 325/400/13 +f 457/599/1 458/600/1 329/408/1 +f 329/408/1 459/601/1 330/409/1 +f 330/409/1 460/602/1 331/410/1 +f 331/410/1 461/603/1 457/599/1 +f 457/599/1 329/408/1 331/410/1 +f 334/413/2 462/604/2 463/605/2 +f 463/605/2 464/606/2 334/413/2 +f 464/606/2 465/607/2 334/413/2 +f 465/607/2 466/608/2 334/413/2 +f 466/608/2 332/411/2 334/413/2 +f 337/416/6 467/609/6 468/610/6 +f 468/610/6 469/611/6 335/414/6 +f 335/414/6 470/612/6 336/415/6 +f 336/415/6 471/613/6 337/416/6 +f 337/416/6 468/610/6 335/414/6 +f 338/417/2 344/614/2 339/418/2 +f 341/420/1 353/615/1 342/421/1 +f 339/423/5 353/616/5 341/424/5 +f 343/426/13 342/617/13 344/427/13 +f 345/429/13 352/438/13 346/430/13 +f 348/432/1 350/436/1 347/433/1 +f 349/435/5 351/437/5 350/436/5 +f 351/437/2 349/435/2 352/438/2 +f 346/430/17 352/438/17 353/439/17 +f 344/441/17 348/432/17 346/434/17 +f 342/443/17 349/435/17 348/432/17 +f 353/445/17 352/438/17 349/435/17 +f 341/424/6 345/429/6 347/431/6 +f 340/419/6 347/433/6 350/436/6 +f 338/428/6 350/436/6 351/437/6 +f 351/437/6 345/429/6 341/420/6 s 1 -f 13/618/40 1/619/41 6/620/40 -f 2/621/42 12/622/43 5/623/43 -f 9/624/17 6/620/40 3/625/17 -f 5/623/43 9/626/17 3/627/17 -f 4/628/44 8/629/42 2/621/42 -f 14/630/45 16/26/46 4/631/44 -f 11/632/47 4/631/44 16/26/46 -f 32/633/48 29/5/49 24/7/41 -f 34/634/34 76/635/13 32/633/48 -f 35/202/33 31/447/50 27/1/33 -f 38/636/51 26/55/34 30/53/51 -f 39/637/50 30/53/51 31/447/50 -f 28/8/52 33/638/53 25/448/42 -f 33/638/53 77/501/5 35/202/33 -f 55/639/17 45/17/54 46/640/17 -f 49/40/41 41/29/34 40/10/41 -f 44/16/55 55/641/17 46/642/17 -f 54/38/54 40/10/41 45/17/54 -f 48/453/50 52/45/33 43/27/33 -f 56/47/51 48/453/50 47/23/51 -f 43/27/33 51/44/42 42/14/42 -f 50/42/34 47/23/51 41/29/34 -f 42/14/42 53/30/55 44/16/55 -f 70/643/40 60/644/41 61/645/40 -f 62/646/43 67/647/17 58/648/17 -f 67/649/17 61/645/40 58/650/17 -f 59/651/42 71/652/43 62/646/43 -f 66/653/56 75/654/57 65/655/58 -f 75/654/57 72/656/59 65/655/58 -f 65/655/58 72/656/59 63/657/60 -f 74/658/61 66/653/56 73/659/62 -f 66/653/56 64/660/63 73/659/62 -f 78/661/64 7/662/41 10/663/65 -f 15/664/66 78/665/64 10/663/65 -f 78/665/64 15/664/66 79/666/67 -f 16/26/46 79/666/67 15/664/66 -f 135/667/68 122/668/69 123/669/68 -f 125/670/14 114/671/17 115/672/14 -f 108/673/17 131/674/68 107/675/68 -f 124/676/17 123/669/68 114/677/17 -f 126/678/24 115/672/14 116/679/24 -f 109/680/14 130/681/17 108/673/17 -f 127/158/70 116/679/24 117/157/70 -f 105/682/5 138/95/71 104/683/71 -f 141/92/72 119/684/73 120/685/74 -f 143/686/75 139/687/76 140/688/77 -f 106/689/78 139/468/79 105/682/5 -f 113/690/80 141/92/72 112/691/81 -f 103/692/82 137/98/6 102/693/6 -f 140/688/77 192/694/83 143/686/75 -f 102/695/6 142/467/80 113/690/80 -f 104/683/71 136/101/82 103/692/82 -f 122/668/69 133/163/84 121/162/84 -f 128/696/85 120/697/86 156/698/87 -f 121/699/88 156/698/87 120/697/86 -f 110/700/24 120/685/74 128/701/89 -f 128/696/85 158/702/90 157/703/91 -f 120/697/86 119/106/92 121/699/88 -f 121/699/88 119/106/92 144/105/93 -f 172/704/94 159/537/25 148/250/25 -f 160/159/16 163/705/16 171/706/95 -f 175/707/40 152/708/96 171/706/95 -f 153/709/97 176/710/43 172/704/94 -f 109/680/14 110/700/24 128/701/89 -f 180/711/71 183/712/79 181/713/5 -f 189/714/80 186/715/6 178/716/6 -f 178/717/6 185/718/98 179/719/82 -f 187/720/13 190/721/81 188/722/81 -f 191/723/99 188/722/81 190/721/81 -f 185/718/98 194/724/9 184/725/71 -f 159/153/100 182/154/100 158/702/90 -f 158/702/90 182/154/100 157/703/91 -f 192/694/83 132/726/101 160/151/102 -f 160/151/102 132/726/101 183/486/102 -f 140/727/103 106/689/78 107/675/68 -f 182/728/104 177/729/24 157/730/89 -f 183/712/79 193/731/78 181/713/5 -f 349/732/105 351/254/17 350/256/17 -f 219/186/6 206/733/80 207/734/6 -f 216/180/13 203/735/24 204/736/13 -f 223/195/78 210/737/5 211/738/78 -f 220/191/82 207/739/6 208/740/82 -f 217/182/81 204/736/13 205/741/81 -f 224/197/68 211/738/78 212/742/68 -f 214/178/14 201/743/17 202/744/14 -f 221/194/71 208/740/82 209/745/71 -f 218/184/80 205/741/81 206/733/80 -f 213/175/17 212/742/68 201/743/17 -f 215/181/24 202/744/14 203/735/24 -f 222/193/5 209/745/71 210/737/5 -f 237/746/6 236/199/80 225/177/6 -f 239/747/71 226/176/82 227/179/71 -f 246/748/13 233/192/24 234/196/13 -f 243/749/17 230/187/68 231/498/17 -f 240/750/5 227/179/71 228/183/5 -f 247/751/81 234/196/13 235/198/81 -f 244/752/14 231/190/17 232/189/14 -f 241/753/78 228/183/5 229/185/78 -f 248/754/80 235/198/81 236/199/80 -f 238/755/82 225/177/6 226/176/82 -f 245/756/24 232/189/14 233/192/24 -f 242/757/68 229/185/78 230/187/68 -f 18/758/78 255/759/68 254/760/78 -f 21/761/24 252/762/106 251/763/24 -f 17/764/68 249/765/17 255/759/68 -f 23/766/17 250/767/14 249/768/17 -f 19/769/107 254/760/78 253/770/107 -f 22/771/14 251/763/24 250/767/14 -f 76/635/17 20/772/106 32/633/17 -f 33/638/17 253/770/107 77/501/17 -f 64/773/63 69/774/108 83/775/13 -f 81/776/5 68/777/109 63/778/60 -f 81/776/1 118/779/110 258/780/111 -f 83/775/1 257/781/111 146/782/110 -f 69/783/112 146/782/110 257/781/111 -f 133/784/112 258/780/111 118/779/110 -f 69/785/1 70/786/1 67/787/1 -f 265/788/6 278/789/113 266/790/113 -f 262/791/2 275/792/114 263/793/114 -f 269/794/115 282/795/116 270/796/116 -f 259/797/17 272/798/117 260/799/117 -f 266/790/113 279/800/118 267/801/118 -f 263/793/114 276/802/119 264/803/119 -f 270/796/116 271/804/17 259/797/17 -f 260/799/117 273/805/120 261/806/120 -f 267/801/118 280/807/1 268/808/1 -f 264/803/119 277/809/6 265/810/6 -f 261/806/120 274/811/2 262/791/2 -f 268/808/1 281/812/115 269/794/115 -f 289/813/6 302/814/119 290/815/119 -f 286/816/1 299/817/118 287/818/118 -f 293/819/120 306/820/117 294/821/117 -f 283/822/17 296/823/116 284/824/116 -f 290/815/119 303/825/114 291/826/114 -f 287/818/118 300/827/113 288/828/113 -f 294/821/117 295/829/17 283/822/17 -f 284/824/116 297/830/115 285/831/115 -f 291/826/114 304/832/2 292/833/2 -f 288/828/113 301/834/6 289/835/6 -f 285/831/115 298/836/1 286/816/1 -f 292/833/2 305/837/120 293/819/120 -f 371/838/121 324/839/122 315/840/122 -f 309/220/123 321/221/122 308/214/122 -f 316/278/102 376/841/121 371/838/121 -f 310/216/124 322/225/123 309/220/123 -f 328/842/1 318/843/111 317/844/1 -f 321/221/122 307/215/2 308/214/122 -f 318/843/111 327/845/125 319/846/125 -f 319/846/125 331/279/76 330/552/76 -f 333/243/126 334/232/127 332/235/126 -f 337/240/128 346/230/129 336/233/128 -f 341/847/130 338/848/131 340/849/130 -f 340/849/130 343/850/132 341/847/130 -f 336/233/128 335/242/127 337/240/128 -f 343/850/132 344/534/28 345/237/28 -f 352/851/133 357/260/17 353/852/17 -f 355/853/24 351/254/70 256/854/70 -f 356/261/134 352/851/133 348/855/135 -f 153/856/112 148/857/136 349/732/105 -f 354/470/137 353/852/17 357/260/17 -f 80/78/1 370/271/138 82/171/1 -f 85/71/139 369/272/138 84/70/139 -f 358/257/14 355/853/24 354/470/137 -f 372/277/140 373/292/141 311/218/141 -f 374/288/140 312/275/142 377/286/142 -f 313/212/143 377/286/142 312/275/142 -f 315/840/122 326/858/12 314/211/12 -f 408/859/43 394/860/144 395/861/43 -f 402/862/40 389/863/17 390/864/40 -f 401/865/17 395/861/43 389/863/17 -f 403/866/145 390/864/40 391/867/145 -f 388/868/37 409/869/6 381/870/6 -f 386/871/40 415/872/13 387/873/13 -f 384/874/43 413/875/17 385/876/17 -f 382/877/9 411/878/5 383/879/5 -f 387/873/13 416/880/37 388/868/37 -f 385/881/17 414/882/40 386/871/40 -f 383/879/5 412/883/43 384/874/43 -f 381/870/6 410/884/9 382/877/9 -f 418/353/13 405/564/13 419/885/146 -f 423/303/25 400/886/147 399/304/25 -f 380/346/148 420/305/16 396/307/16 -f 424/338/149 426/350/17 400/342/147 -f 441/887/6 432/888/124 433/889/6 -f 439/890/2 430/891/102 431/892/2 -f 437/893/17 428/894/76 429/895/17 -f 442/896/141 433/897/6 434/898/141 -f 440/899/124 431/892/2 432/888/124 -f 438/900/102 429/895/17 430/891/102 -f 436/901/76 427/902/1 428/894/76 -f 435/903/1 434/898/141 427/902/1 -f 425/904/17 422/337/17 421/335/17 -f 465/373/43 36/905/52 28/8/52 -f 37/906/49 463/374/40 29/5/49 -f 491/907/78 478/908/5 479/909/78 -f 488/910/82 475/911/6 476/912/82 -f 485/913/81 472/914/13 473/915/81 -f 492/916/68 479/909/78 480/917/68 -f 482/918/14 469/919/17 470/920/14 -f 489/921/71 476/912/82 477/922/71 -f 486/923/80 473/915/81 474/924/80 -f 481/925/17 480/917/68 469/919/17 -f 483/926/24 470/920/14 471/927/24 -f 490/928/5 477/922/71 478/908/5 -f 487/929/6 474/924/80 475/930/6 -f 484/931/13 471/927/24 472/914/13 -f 505/932/17 504/933/68 493/934/17 -f 507/935/24 494/936/14 495/937/24 -f 514/938/5 501/939/71 502/940/5 -f 511/941/6 498/942/80 499/943/6 -f 508/944/13 495/937/24 496/945/13 -f 515/946/78 502/940/5 503/947/78 -f 512/948/82 499/949/6 500/950/82 -f 509/951/81 496/945/13 497/952/81 -f 516/953/68 503/947/78 504/933/68 -f 506/954/14 493/934/17 494/936/14 -f 513/955/71 500/950/82 501/939/71 -f 510/956/80 497/952/81 498/942/80 -f 525/957/150 538/958/151 526/959/152 -f 525/957/150 533/960/153 539/961/18 -f 530/962/154 534/963/155 531/964/156 -f 526/959/152 537/965/157 527/966/158 -f 531/964/156 533/960/153 532/967/159 -f 527/966/158 536/968/160 528/969/161 -f 538/958/151 544/970/162 537/965/157 -f 534/963/155 542/971/163 541/972/164 -f 539/961/18 545/973/165 538/958/151 -f 537/965/157 543/974/166 536/968/160 -f 539/961/18 540/975/167 546/976/168 -f 534/963/155 540/975/167 533/960/153 -f 528/969/161 536/968/160 529/977/169 -f 536/968/160 543/974/166 529/978/169 -f 529/979/169 535/980/170 530/962/154 -f 535/980/170 529/981/169 542/971/163 -f 546/976/168 553/982/40 545/973/165 -f 544/970/162 551/983/43 543/974/166 -f 540/975/167 554/984/13 546/976/168 -f 529/985/169 550/986/9 542/971/163 -f 541/972/164 548/987/37 540/975/167 -f 543/974/166 547/988/5 529/989/169 -f 545/973/165 552/990/17 544/970/162 -f 542/971/163 549/991/6 541/972/164 -f 557/992/171 564/993/172 556/994/172 -f 556/994/172 563/995/100 555/996/100 -f 555/996/100 570/997/173 562/998/173 -f 561/999/10 570/997/173 569/1000/10 -f 561/1001/10 568/1002/174 560/1003/174 -f 560/1003/174 567/1004/175 559/1005/175 -f 558/1006/176 565/1007/171 557/992/171 -f 558/1006/176 567/1004/175 566/1008/176 -f 574/1009/177 583/1010/2 575/1011/2 -f 572/1012/18 581/1013/13 573/1014/13 -f 577/1015/5 586/1016/19 578/1017/19 -f 575/1018/2 584/1019/178 576/1020/178 -f 573/1014/13 582/1021/177 574/1009/177 -f 571/1022/1 580/1023/18 572/1012/18 -f 578/1017/19 579/1024/1 571/1022/1 -f 576/1020/178 585/1025/5 577/1015/5 -f 13/618/40 7/662/41 1/619/41 -f 2/621/42 8/629/42 12/622/43 -f 9/624/17 13/618/40 6/620/40 -f 5/623/43 12/622/43 9/626/17 -f 4/628/44 11/632/47 8/629/42 -f 32/633/48 37/906/49 29/5/49 -f 24/7/41 26/55/34 32/633/48 -f 26/55/34 34/634/34 32/633/48 -f 35/202/33 39/637/50 31/447/50 -f 38/636/51 34/634/34 26/55/34 -f 39/637/50 38/636/51 30/53/51 -f 28/8/52 36/905/52 33/638/53 -f 35/202/33 27/1/33 33/638/53 -f 27/1/33 25/448/42 33/638/53 -f 55/639/17 54/38/54 45/17/54 -f 49/40/41 50/42/34 41/29/34 -f 44/16/55 53/30/55 55/641/17 -f 54/38/54 49/40/41 40/10/41 -f 48/453/50 57/51/50 52/45/33 -f 56/47/51 57/51/50 48/453/50 -f 43/27/33 52/45/33 51/44/42 -f 50/42/34 56/47/51 47/23/51 -f 42/14/42 51/44/42 53/30/55 -f 70/643/40 69/774/108 60/644/41 -f 62/646/43 71/652/43 67/647/17 -f 67/649/17 70/643/40 61/645/40 -f 59/651/42 68/777/109 71/652/43 -f 66/653/56 74/658/61 75/654/57 -f 78/661/64 1/619/41 7/662/41 -f 16/26/46 14/630/45 79/666/67 -f 135/667/68 134/1026/78 122/668/69 -f 125/670/14 124/1027/17 114/671/17 -f 108/673/17 130/681/17 131/674/68 -f 124/676/17 135/667/68 123/669/68 -f 126/678/24 125/670/14 115/672/14 -f 109/680/14 129/1028/14 130/681/17 -f 127/158/70 126/678/24 116/679/24 -f 105/682/5 139/468/79 138/95/71 -f 120/685/74 111/1029/13 141/92/72 -f 111/1029/13 112/691/81 141/92/72 -f 143/686/75 117/1030/76 139/687/76 -f 106/689/78 140/727/103 139/468/79 -f 113/690/80 142/467/80 141/92/72 -f 103/692/82 136/101/82 137/98/6 -f 140/688/77 132/726/101 192/694/83 -f 102/695/6 137/102/6 142/467/80 -f 104/683/71 138/95/71 136/101/82 -f 121/162/84 144/1031/84 122/668/69 -f 122/668/69 134/1026/78 133/163/84 -f 110/700/24 111/1029/13 120/685/74 -f 128/696/85 156/698/87 158/702/90 -f 148/250/25 153/709/97 172/704/94 -f 172/704/94 164/1032/25 159/537/25 -f 171/706/95 152/708/96 149/160/16 -f 149/160/16 160/159/16 171/706/95 -f 175/707/40 150/1033/40 152/708/96 -f 153/709/97 151/1034/43 176/710/43 -f 177/729/24 129/1028/14 157/730/89 -f 129/1028/14 109/680/14 128/701/89 -f 157/730/89 129/1028/14 128/701/89 -f 180/711/71 184/725/71 183/712/79 -f 189/714/80 191/723/99 186/715/6 -f 178/717/6 186/1035/6 185/718/98 -f 187/720/13 182/728/104 190/721/81 -f 190/721/81 195/1036/37 191/723/99 -f 191/723/99 189/714/80 188/722/81 -f 184/725/71 180/711/71 185/718/98 -f 180/711/71 179/719/82 185/718/98 -f 107/675/68 131/674/68 132/1037/103 -f 131/674/68 193/731/78 132/1037/103 -f 132/1037/103 140/727/103 107/675/68 -f 182/728/104 187/720/13 177/729/24 -f 183/712/79 132/1037/103 193/731/78 -f 349/732/105 148/857/136 351/254/17 -f 219/186/6 218/184/80 206/733/80 -f 216/180/13 215/181/24 203/735/24 -f 223/195/78 222/193/5 210/737/5 -f 220/191/82 219/188/6 207/739/6 -f 217/182/81 216/180/13 204/736/13 -f 224/197/68 223/195/78 211/738/78 -f 214/178/14 213/175/17 201/743/17 -f 221/194/71 220/191/82 208/740/82 -f 218/184/80 217/182/81 205/741/81 -f 213/175/17 224/197/68 212/742/68 -f 215/181/24 214/178/14 202/744/14 -f 222/193/5 221/194/71 209/745/71 -f 237/746/6 248/754/80 236/199/80 -f 239/747/71 238/755/82 226/176/82 -f 246/748/13 245/756/24 233/192/24 -f 243/749/17 242/757/68 230/187/68 -f 240/750/5 239/747/71 227/179/71 -f 247/751/81 246/748/13 234/196/13 -f 244/752/14 243/1038/17 231/190/17 -f 241/753/78 240/750/5 228/183/5 -f 248/754/80 247/751/81 235/198/81 -f 238/755/82 237/746/6 225/177/6 -f 245/756/24 244/752/14 232/189/14 -f 242/757/68 241/753/78 229/185/78 -f 18/758/78 17/764/68 255/759/68 -f 21/761/24 20/772/106 252/762/106 -f 17/764/68 23/1039/17 249/765/17 -f 23/766/17 22/771/14 250/767/14 -f 19/769/107 18/758/78 254/760/78 -f 22/771/14 21/761/24 251/763/24 -f 76/635/17 252/762/106 20/772/106 -f 33/638/17 19/769/107 253/770/107 -f 83/775/13 73/659/62 64/773/63 -f 64/773/63 60/644/41 69/774/108 -f 69/774/108 257/781/13 83/775/13 -f 72/656/59 81/776/5 63/778/60 -f 81/776/5 258/780/5 68/777/109 -f 63/778/60 68/777/109 59/651/42 -f 69/783/112 127/1040/112 146/782/110 -f 133/784/112 68/1041/112 258/780/111 -f 71/1042/1 68/1043/1 67/787/1 -f 68/1043/1 69/785/1 67/787/1 -f 265/788/6 277/1044/6 278/789/113 -f 262/791/2 274/811/2 275/792/114 -f 269/794/115 281/812/115 282/795/116 -f 259/797/17 271/804/17 272/798/117 -f 266/790/113 278/789/113 279/800/118 -f 263/793/114 275/792/114 276/802/119 -f 270/796/116 282/795/116 271/804/17 -f 260/799/117 272/798/117 273/805/120 -f 267/801/118 279/800/118 280/807/1 -f 264/803/119 276/802/119 277/809/6 -f 261/806/120 273/805/120 274/811/2 -f 268/808/1 280/807/1 281/812/115 -f 289/813/6 301/1045/6 302/814/119 -f 286/816/1 298/836/1 299/817/118 -f 293/819/120 305/837/120 306/820/117 -f 283/822/17 295/829/17 296/823/116 -f 290/815/119 302/814/119 303/825/114 -f 287/818/118 299/817/118 300/827/113 -f 294/821/117 306/820/117 295/829/17 -f 284/824/116 296/823/116 297/830/115 -f 291/826/114 303/825/114 304/832/2 -f 288/828/113 300/827/113 301/834/6 -f 285/831/115 297/830/115 298/836/1 -f 292/833/2 304/832/2 305/837/120 -f 371/838/121 376/841/121 324/839/122 -f 309/220/123 322/225/123 321/221/122 -f 316/278/102 375/280/102 376/841/121 -f 310/216/124 323/228/124 322/225/123 -f 328/842/1 329/1046/111 318/843/111 -f 321/221/122 320/223/2 307/215/2 -f 318/843/111 329/1046/111 327/845/125 -f 319/846/125 327/845/125 331/279/76 -f 333/243/126 335/242/127 334/232/127 -f 337/240/128 347/238/129 346/230/129 -f 341/847/130 339/1047/131 338/848/131 -f 340/849/130 342/1048/132 343/850/132 -f 336/233/128 334/232/127 335/242/127 -f 343/850/132 342/1048/132 344/534/28 -f 352/851/133 356/261/134 357/260/17 -f 355/853/24 359/258/24 351/254/70 -f 348/855/135 147/1049/135 356/261/134 -f 147/1049/135 360/1050/135 356/261/134 -f 357/260/17 358/257/14 354/470/137 -f 354/470/137 368/107/179 353/852/17 -f 80/78/1 369/272/138 370/271/138 -f 85/71/139 370/271/138 369/272/138 -f 358/257/14 359/258/24 355/853/24 -f 372/277/140 374/288/140 373/292/141 -f 374/288/140 372/277/140 312/275/142 -f 313/212/143 325/283/143 377/286/142 -f 315/840/122 324/839/122 326/858/12 -f 408/859/43 407/1051/144 394/860/144 -f 402/862/40 401/865/17 389/863/17 -f 401/865/17 408/859/43 395/861/43 -f 403/866/145 402/862/40 390/864/40 -f 388/868/37 416/880/37 409/869/6 -f 386/871/40 414/882/40 415/872/13 -f 384/874/43 412/883/43 413/875/17 -f 382/877/9 410/884/9 411/878/5 -f 387/873/13 415/872/13 416/880/37 -f 385/881/17 413/1052/17 414/882/40 -f 383/879/5 411/878/5 412/883/43 -f 381/870/6 409/869/6 410/884/9 -f 380/346/148 379/563/13 419/885/146 -f 379/563/13 418/353/13 419/885/146 -f 423/303/25 424/1053/149 400/886/147 -f 380/346/148 419/885/146 420/305/16 -f 424/338/149 425/904/17 426/350/17 -f 441/887/6 440/899/124 432/888/124 -f 439/890/2 438/900/102 430/891/102 -f 437/893/17 436/901/76 428/894/76 -f 442/896/141 441/1054/6 433/897/6 -f 440/899/124 439/890/2 431/892/2 -f 438/900/102 437/893/17 429/895/17 -f 436/901/76 435/903/1 427/902/1 -f 435/903/1 442/896/141 434/898/141 -f 419/334/17 405/1055/17 421/335/17 -f 405/1055/17 425/904/17 421/335/17 -f 425/904/17 424/338/149 422/337/17 -f 465/373/43 466/567/43 36/905/52 -f 37/906/49 464/568/40 463/374/40 -f 491/907/78 490/928/5 478/908/5 -f 488/910/82 487/1056/6 475/911/6 -f 485/913/81 484/931/13 472/914/13 -f 492/916/68 491/907/78 479/909/78 -f 482/918/14 481/925/17 469/919/17 -f 489/921/71 488/910/82 476/912/82 -f 486/923/80 485/913/81 473/915/81 -f 481/925/17 492/916/68 480/917/68 -f 483/926/24 482/918/14 470/920/14 -f 490/928/5 489/921/71 477/922/71 -f 487/929/6 486/923/80 474/924/80 -f 484/931/13 483/926/24 471/927/24 -f 505/932/17 516/953/68 504/933/68 -f 507/935/24 506/954/14 494/936/14 -f 514/938/5 513/955/71 501/939/71 -f 511/941/6 510/956/80 498/942/80 -f 508/944/13 507/935/24 495/937/24 -f 515/946/78 514/938/5 502/940/5 -f 512/948/82 511/1057/6 499/949/6 -f 509/951/81 508/944/13 496/945/13 -f 516/953/68 515/946/78 503/947/78 -f 506/954/14 505/932/17 493/934/17 -f 513/955/71 512/948/82 500/950/82 -f 510/956/80 509/951/81 497/952/81 -f 525/957/150 539/961/18 538/958/151 -f 525/957/150 532/967/159 533/960/153 -f 530/962/154 535/980/170 534/963/155 -f 526/959/152 538/958/151 537/965/157 -f 531/964/156 534/963/155 533/960/153 -f 527/966/158 537/965/157 536/968/160 -f 538/958/151 545/973/165 544/970/162 -f 534/963/155 535/980/170 542/971/163 -f 539/961/18 546/976/168 545/973/165 -f 537/965/157 544/970/162 543/974/166 -f 539/961/18 533/960/153 540/975/167 -f 534/963/155 541/972/164 540/975/167 -f 546/976/168 554/984/13 553/982/40 -f 544/970/162 552/990/17 551/983/43 -f 540/975/167 548/987/37 554/984/13 -f 529/985/169 547/1058/5 550/986/9 -f 541/972/164 549/991/6 548/987/37 -f 543/974/166 551/983/43 547/988/5 -f 545/973/165 553/982/40 552/990/17 -f 542/971/163 550/986/9 549/991/6 -f 557/992/171 565/1007/171 564/993/172 -f 556/994/172 564/993/172 563/995/100 -f 555/996/100 563/995/100 570/997/173 -f 561/999/10 562/998/173 570/997/173 -f 561/1001/10 569/1059/10 568/1002/174 -f 560/1003/174 568/1002/174 567/1004/175 -f 558/1006/176 566/1008/176 565/1007/171 -f 558/1006/176 559/1005/175 567/1004/175 -f 574/1009/177 582/1021/177 583/1010/2 -f 572/1012/18 580/1023/18 581/1013/13 -f 577/1015/5 585/1025/5 586/1016/19 -f 575/1018/2 583/1060/2 584/1019/178 -f 573/1014/13 581/1013/13 582/1021/177 -f 571/1022/1 579/1024/1 580/1023/18 -f 578/1017/19 586/1016/19 579/1024/1 -f 576/1020/178 584/1019/178 585/1025/5 +f 18/618/39 6/619/40 356/620/39 +f 4/621/41 21/622/42 9/623/42 +f 20/624/17 356/620/39 472/625/17 +f 9/623/42 20/626/17 472/627/17 +f 3/628/43 15/629/41 4/621/41 +f 2/630/44 23/26/45 3/631/43 +f 13/632/46 3/631/43 23/26/45 +f 436/633/47 5/5/48 7/7/40 +f 167/634/34 401/635/13 436/633/47 +f 168/202/33 354/447/49 1/1/33 +f 392/636/50 47/55/34 45/53/50 +f 393/637/49 45/53/50 354/447/49 +f 8/8/51 437/638/52 355/448/41 +f 437/638/52 394/501/5 168/202/33 +f 30/639/17 17/17/53 19/640/17 +f 35/40/40 26/29/34 10/10/40 +f 16/16/54 30/641/17 19/642/17 +f 34/38/53 10/10/40 17/17/53 +f 357/453/49 40/45/33 25/27/33 +f 42/47/50 357/453/49 22/23/50 +f 25/27/33 39/44/41 14/14/41 +f 37/42/34 22/23/50 26/29/34 +f 14/14/41 27/30/54 16/16/54 +f 473/643/39 33/644/40 32/645/39 +f 29/646/42 474/647/17 31/648/17 +f 474/649/17 32/645/39 31/650/17 +f 28/651/41 475/652/42 29/646/42 +f 43/653/55 49/654/56 41/655/57 +f 49/654/56 51/656/58 41/655/57 +f 41/655/57 51/656/58 38/657/59 +f 53/658/60 43/653/55 54/659/61 +f 43/653/55 36/660/62 54/659/61 +f 48/661/63 12/662/40 11/663/64 +f 24/664/65 48/665/63 11/663/64 +f 48/665/63 24/664/65 46/666/66 +f 23/26/45 46/666/66 24/664/65 +f 476/667/67 78/668/68 77/669/67 +f 477/670/14 84/671/17 83/672/14 +f 74/673/17 378/674/67 364/675/67 +f 478/676/17 77/669/67 84/677/17 +f 479/678/24 83/672/14 81/679/24 +f 363/680/14 115/681/17 74/673/17 +f 128/158/69 81/679/24 80/157/69 +f 366/682/5 79/95/70 75/683/70 +f 76/92/71 87/684/72 480/685/73 +f 127/686/74 368/687/75 481/688/76 +f 365/689/77 368/468/78 366/682/5 +f 360/690/79 76/92/71 73/691/80 +f 358/692/81 82/98/6 359/693/6 +f 481/688/76 126/694/82 127/686/74 +f 359/695/6 367/467/79 360/690/79 +f 75/683/70 85/101/81 358/692/81 +f 78/668/68 132/163/83 131/162/83 +f 482/696/84 480/697/85 133/698/86 +f 131/699/87 133/698/86 480/697/85 +f 362/700/24 480/685/73 482/701/88 +f 482/696/84 381/702/89 483/703/90 +f 480/697/85 87/106/91 131/699/87 +f 131/699/87 87/106/91 86/105/92 +f 101/704/93 124/537/25 210/250/25 +f 122/159/16 99/705/16 98/706/94 +f 104/707/39 208/708/95 98/706/94 +f 225/709/96 105/710/42 101/704/93 +f 363/680/14 362/700/24 482/701/88 +f 114/711/70 380/712/78 376/713/5 +f 373/714/79 117/715/6 374/716/6 +f 374/717/6 116/718/97 375/719/81 +f 372/720/13 123/721/80 113/722/80 +f 379/723/98 113/722/80 123/721/80 +f 116/718/97 118/724/9 121/725/70 +f 124/153/99 125/154/99 381/702/89 +f 381/702/89 125/154/99 483/703/90 +f 126/694/82 484/726/100 122/151/101 +f 122/151/101 484/726/100 380/486/101 +f 481/727/102 365/689/77 364/675/67 +f 125/728/103 371/729/24 483/730/88 +f 380/712/78 377/731/77 376/713/5 +f 223/732/104 209/254/17 215/256/17 +f 153/186/6 485/733/79 486/734/6 +f 147/180/13 487/735/24 488/736/13 +f 161/195/77 489/737/5 490/738/77 +f 157/191/81 486/739/6 491/740/81 +f 149/182/80 488/736/13 492/741/80 +f 163/197/67 490/738/77 493/742/67 +f 145/178/14 494/743/17 495/744/14 +f 160/194/70 491/740/81 496/745/70 +f 151/184/79 492/741/80 485/733/79 +f 142/175/17 493/742/67 494/743/17 +f 148/181/24 495/744/14 487/735/24 +f 159/193/5 496/745/70 489/737/5 +f 141/746/6 165/199/79 144/177/6 +f 384/747/70 143/176/81 146/179/70 +f 389/748/13 158/192/24 162/196/13 +f 387/749/17 154/187/67 156/498/17 +f 385/750/5 146/179/70 150/183/5 +f 390/751/80 162/196/13 164/198/80 +f 388/752/14 156/190/17 155/189/14 +f 139/753/77 150/183/5 152/185/77 +f 391/754/79 164/198/80 165/199/79 +f 383/755/81 144/177/6 143/176/81 +f 140/756/24 155/189/14 158/192/24 +f 386/757/67 152/185/77 154/187/67 +f 497/758/77 397/759/67 396/760/77 +f 498/761/24 166/762/105 400/763/24 +f 499/764/67 398/765/17 397/759/67 +f 500/766/17 399/767/14 398/768/17 +f 501/769/106 396/760/77 395/770/106 +f 502/771/14 400/763/24 399/767/14 +f 401/635/17 503/772/105 436/633/17 +f 437/638/17 395/770/106 394/501/17 +f 36/773/62 504/774/107 91/775/13 +f 67/776/5 505/777/108 38/778/59 +f 67/776/1 130/779/109 506/780/110 +f 91/775/1 507/781/110 92/782/109 +f 504/783/111 92/782/109 507/781/110 +f 132/784/111 506/780/110 130/779/109 +f 504/785/1 473/786/1 474/787/1 +f 508/788/6 407/789/112 509/790/112 +f 510/791/2 409/792/113 511/793/113 +f 512/794/114 404/795/115 513/796/115 +f 514/797/17 402/798/116 515/799/116 +f 509/790/112 406/800/117 516/801/117 +f 511/793/113 408/802/118 517/803/118 +f 513/796/115 403/804/17 514/797/17 +f 515/799/116 171/805/119 518/806/119 +f 516/801/117 405/807/1 519/808/1 +f 517/803/118 170/809/6 508/810/6 +f 518/806/119 410/811/2 510/791/2 +f 519/808/1 169/812/114 512/794/114 +f 520/813/6 416/814/118 521/815/118 +f 522/816/1 418/817/117 523/818/117 +f 524/819/119 413/820/116 525/821/116 +f 526/822/17 411/823/115 527/824/115 +f 521/815/118 415/825/113 528/826/113 +f 523/818/117 417/827/112 529/828/112 +f 525/821/116 412/829/17 526/822/17 +f 527/824/115 174/830/114 530/831/114 +f 528/826/113 414/832/2 531/833/2 +f 529/828/112 173/834/6 520/835/6 +f 530/831/114 419/836/1 522/816/1 +f 531/833/2 172/837/119 524/819/119 +f 427/838/120 235/839/121 230/840/121 +f 185/220/122 186/221/121 179/214/121 +f 182/278/101 237/841/120 427/838/120 +f 181/216/123 190/225/122 185/220/122 +f 187/842/1 184/843/110 178/844/1 +f 186/221/121 180/215/2 179/214/121 +f 184/843/110 421/845/124 420/846/124 +f 420/846/124 192/279/75 189/552/75 +f 207/243/125 197/232/126 200/235/125 +f 204/240/127 195/230/128 198/233/127 +f 205/847/129 422/848/130 199/849/129 +f 199/849/129 203/850/131 205/847/129 +f 198/233/127 206/242/126 204/240/127 +f 203/850/131 196/534/28 201/237/28 +f 426/851/132 219/260/17 226/852/17 +f 212/853/24 209/254/69 213/854/69 +f 220/261/133 426/851/132 369/855/134 +f 225/856/111 210/857/135 223/732/104 +f 211/470/136 226/852/17 219/260/17 +f 68/78/1 227/271/137 138/171/1 +f 62/71/138 228/272/137 61/70/138 +f 216/257/14 212/853/24 211/470/136 +f 229/277/139 238/292/140 183/218/140 +f 236/288/139 175/275/141 233/286/141 +f 177/212/142 233/286/141 175/275/141 +f 230/840/121 232/858/12 176/211/12 +f 270/859/42 256/860/143 259/861/42 +f 275/862/39 261/863/17 265/864/39 +f 272/865/17 259/861/42 261/863/17 +f 277/866/144 265/864/39 267/867/144 +f 260/868/37 273/869/6 263/870/6 +f 255/871/39 244/872/13 258/873/13 +f 266/874/42 428/875/17 269/876/17 +f 262/877/9 276/878/5 264/879/5 +f 258/873/13 271/880/37 260/868/37 +f 269/881/17 242/882/39 255/871/39 +f 264/879/5 240/883/42 266/874/42 +f 263/870/6 274/884/9 262/877/9 +f 289/353/13 435/564/13 279/885/145 +f 249/303/25 283/886/146 250/304/25 +f 284/346/147 251/305/16 253/307/16 +f 281/338/148 282/350/17 283/342/146 +f 286/887/6 532/888/123 533/889/6 +f 285/890/2 534/891/101 535/892/2 +f 431/893/17 536/894/75 537/895/17 +f 434/896/140 533/897/6 538/898/140 +f 433/899/123 535/892/2 532/888/123 +f 432/900/101 537/895/17 534/891/101 +f 430/901/75 539/902/1 536/894/75 +f 287/903/1 538/898/140 539/902/1 +f 288/904/17 280/337/17 254/335/17 +f 307/373/42 314/905/51 8/8/51 +f 315/906/48 308/374/39 5/5/48 +f 445/907/77 540/908/5 541/909/77 +f 443/910/81 542/911/6 543/912/81 +f 316/913/80 544/914/13 545/915/80 +f 446/916/67 541/909/77 546/917/67 +f 438/918/14 547/919/17 548/920/14 +f 317/921/70 543/912/81 549/922/70 +f 441/923/79 545/915/80 550/924/79 +f 318/925/17 546/917/67 547/919/17 +f 439/926/24 548/920/14 551/927/24 +f 444/928/5 549/922/70 540/908/5 +f 442/929/6 550/924/79 542/930/6 +f 440/931/13 551/927/24 544/914/13 +f 321/932/17 552/933/67 553/934/17 +f 448/935/24 554/936/14 555/937/24 +f 453/938/5 556/939/70 557/940/5 +f 451/941/6 558/942/79 559/943/6 +f 449/944/13 555/937/24 560/945/13 +f 454/946/77 557/940/5 561/947/77 +f 452/948/81 559/949/6 562/950/81 +f 319/951/80 560/945/13 563/952/80 +f 455/953/67 561/947/77 552/933/67 +f 447/954/14 553/934/17 554/936/14 +f 320/955/70 562/950/81 556/939/70 +f 450/956/79 563/952/80 558/942/79 +f 564/957/149 565/958/150 566/959/151 +f 564/957/149 567/960/152 568/961/18 +f 569/962/153 570/963/154 571/964/155 +f 566/959/151 572/965/156 573/966/157 +f 571/964/155 567/960/152 574/967/158 +f 573/966/157 575/968/159 576/969/160 +f 565/958/150 577/970/161 572/965/156 +f 570/963/154 578/971/162 579/972/163 +f 568/961/18 580/973/164 565/958/150 +f 572/965/156 581/974/165 575/968/159 +f 568/961/18 582/975/166 583/976/167 +f 570/963/154 582/975/166 567/960/152 +f 576/969/160 575/968/159 584/977/168 +f 575/968/159 581/974/165 584/978/168 +f 584/979/168 585/980/169 569/962/153 +f 585/980/169 584/981/168 578/971/162 +f 583/976/167 586/982/39 580/973/164 +f 577/970/161 587/983/42 581/974/165 +f 582/975/166 588/984/13 583/976/167 +f 584/985/168 589/986/9 578/971/162 +f 579/972/163 590/987/37 582/975/166 +f 581/974/165 591/988/5 584/989/168 +f 580/973/164 592/990/17 577/970/161 +f 578/971/162 593/991/6 579/972/163 +f 457/992/170 462/993/171 458/994/171 +f 458/994/171 334/995/99 329/996/99 +f 329/996/99 333/997/172 459/998/172 +f 330/999/10 333/997/172 332/1000/10 +f 330/1001/10 466/1002/173 460/1003/173 +f 460/1003/173 465/1004/174 331/1005/174 +f 461/1006/175 463/1007/170 457/992/170 +f 461/1006/175 465/1004/174 464/1008/175 +f 594/1009/176 336/1010/2 595/1011/2 +f 596/1012/18 337/1013/13 597/1014/13 +f 598/1015/5 469/1016/19 599/1017/19 +f 595/1018/2 470/1019/177 600/1020/177 +f 597/1014/13 471/1021/176 594/1009/176 +f 601/1022/1 467/1023/18 596/1012/18 +f 599/1017/19 468/1024/1 601/1022/1 +f 600/1020/177 335/1025/5 598/1015/5 +f 18/618/39 12/662/40 6/619/40 +f 4/621/41 15/629/41 21/622/42 +f 20/624/17 18/618/39 356/620/39 +f 9/623/42 21/622/42 20/626/17 +f 3/628/43 13/632/46 15/629/41 +f 436/633/47 315/906/48 5/5/48 +f 7/7/40 47/55/34 436/633/47 +f 47/55/34 167/634/34 436/633/47 +f 168/202/33 393/637/49 354/447/49 +f 392/636/50 167/634/34 47/55/34 +f 393/637/49 392/636/50 45/53/50 +f 8/8/51 314/905/51 437/638/52 +f 168/202/33 1/1/33 437/638/52 +f 1/1/33 355/448/41 437/638/52 +f 30/639/17 34/38/53 17/17/53 +f 35/40/40 37/42/34 26/29/34 +f 16/16/54 27/30/54 30/641/17 +f 34/38/53 35/40/40 10/10/40 +f 357/453/49 44/51/49 40/45/33 +f 42/47/50 44/51/49 357/453/49 +f 25/27/33 40/45/33 39/44/41 +f 37/42/34 42/47/50 22/23/50 +f 14/14/41 39/44/41 27/30/54 +f 473/643/39 504/774/107 33/644/40 +f 29/646/42 475/652/42 474/647/17 +f 474/649/17 473/643/39 32/645/39 +f 28/651/41 505/777/108 475/652/42 +f 43/653/55 53/658/60 49/654/56 +f 48/661/63 6/619/40 12/662/40 +f 23/26/45 2/630/44 46/666/66 +f 476/667/67 602/1026/77 78/668/68 +f 477/670/14 478/1027/17 84/671/17 +f 74/673/17 115/681/17 378/674/67 +f 478/676/17 476/667/67 77/669/67 +f 479/678/24 477/670/14 83/672/14 +f 363/680/14 370/1028/14 115/681/17 +f 128/158/69 479/678/24 81/679/24 +f 366/682/5 368/468/78 79/95/70 +f 480/685/73 361/1029/13 76/92/71 +f 361/1029/13 73/691/80 76/92/71 +f 127/686/74 80/1030/75 368/687/75 +f 365/689/77 481/727/102 368/468/78 +f 360/690/79 367/467/79 76/92/71 +f 358/692/81 85/101/81 82/98/6 +f 481/688/76 484/726/100 126/694/82 +f 359/695/6 82/102/6 367/467/79 +f 75/683/70 79/95/70 85/101/81 +f 131/162/83 86/1031/83 78/668/68 +f 78/668/68 602/1026/77 132/163/83 +f 362/700/24 361/1029/13 480/685/73 +f 482/696/84 133/698/86 381/702/89 +f 210/250/25 225/709/96 101/704/93 +f 101/704/93 120/1032/25 124/537/25 +f 98/706/94 208/708/95 129/160/16 +f 129/160/16 122/159/16 98/706/94 +f 104/707/39 112/1033/39 208/708/95 +f 225/709/96 111/1034/42 105/710/42 +f 371/729/24 370/1028/14 483/730/88 +f 370/1028/14 363/680/14 482/701/88 +f 483/730/88 370/1028/14 482/701/88 +f 114/711/70 121/725/70 380/712/78 +f 373/714/79 379/723/98 117/715/6 +f 374/717/6 117/1035/6 116/718/97 +f 372/720/13 125/728/103 123/721/80 +f 123/721/80 119/1036/37 379/723/98 +f 379/723/98 373/714/79 113/722/80 +f 121/725/70 114/711/70 116/718/97 +f 114/711/70 375/719/81 116/718/97 +f 364/675/67 378/674/67 484/1037/102 +f 378/674/67 377/731/77 484/1037/102 +f 484/1037/102 481/727/102 364/675/67 +f 125/728/103 372/720/13 371/729/24 +f 380/712/78 484/1037/102 377/731/77 +f 223/732/104 210/857/135 209/254/17 +f 153/186/6 151/184/79 485/733/79 +f 147/180/13 148/181/24 487/735/24 +f 161/195/77 159/193/5 489/737/5 +f 157/191/81 153/188/6 486/739/6 +f 149/182/80 147/180/13 488/736/13 +f 163/197/67 161/195/77 490/738/77 +f 145/178/14 142/175/17 494/743/17 +f 160/194/70 157/191/81 491/740/81 +f 151/184/79 149/182/80 492/741/80 +f 142/175/17 163/197/67 493/742/67 +f 148/181/24 145/178/14 495/744/14 +f 159/193/5 160/194/70 496/745/70 +f 141/746/6 391/754/79 165/199/79 +f 384/747/70 383/755/81 143/176/81 +f 389/748/13 140/756/24 158/192/24 +f 387/749/17 386/757/67 154/187/67 +f 385/750/5 384/747/70 146/179/70 +f 390/751/80 389/748/13 162/196/13 +f 388/752/14 387/1038/17 156/190/17 +f 139/753/77 385/750/5 150/183/5 +f 391/754/79 390/751/80 164/198/80 +f 383/755/81 141/746/6 144/177/6 +f 140/756/24 388/752/14 155/189/14 +f 386/757/67 139/753/77 152/185/77 +f 497/758/77 499/764/67 397/759/67 +f 498/761/24 503/772/105 166/762/105 +f 499/764/67 500/1039/17 398/765/17 +f 500/766/17 502/771/14 399/767/14 +f 501/769/106 497/758/77 396/760/77 +f 502/771/14 498/761/24 400/763/24 +f 401/635/17 166/762/105 503/772/105 +f 437/638/17 501/769/106 395/770/106 +f 91/775/13 54/659/61 36/773/62 +f 36/773/62 33/644/40 504/774/107 +f 504/774/107 507/781/13 91/775/13 +f 51/656/58 67/776/5 38/778/59 +f 67/776/5 506/780/5 505/777/108 +f 38/778/59 505/777/108 28/651/41 +f 504/783/111 128/1040/111 92/782/109 +f 132/784/111 505/1041/111 506/780/110 +f 475/1042/1 505/1043/1 474/787/1 +f 505/1043/1 504/785/1 474/787/1 +f 508/788/6 170/1044/6 407/789/112 +f 510/791/2 410/811/2 409/792/113 +f 512/794/114 169/812/114 404/795/115 +f 514/797/17 403/804/17 402/798/116 +f 509/790/112 407/789/112 406/800/117 +f 511/793/113 409/792/113 408/802/118 +f 513/796/115 404/795/115 403/804/17 +f 515/799/116 402/798/116 171/805/119 +f 516/801/117 406/800/117 405/807/1 +f 517/803/118 408/802/118 170/809/6 +f 518/806/119 171/805/119 410/811/2 +f 519/808/1 405/807/1 169/812/114 +f 520/813/6 173/1045/6 416/814/118 +f 522/816/1 419/836/1 418/817/117 +f 524/819/119 172/837/119 413/820/116 +f 526/822/17 412/829/17 411/823/115 +f 521/815/118 416/814/118 415/825/113 +f 523/818/117 418/817/117 417/827/112 +f 525/821/116 413/820/116 412/829/17 +f 527/824/115 411/823/115 174/830/114 +f 528/826/113 415/825/113 414/832/2 +f 529/828/112 417/827/112 173/834/6 +f 530/831/114 174/830/114 419/836/1 +f 531/833/2 414/832/2 172/837/119 +f 427/838/120 237/841/120 235/839/121 +f 185/220/122 190/225/122 186/221/121 +f 182/278/101 231/280/101 237/841/120 +f 181/216/123 193/228/123 190/225/122 +f 187/842/1 191/1046/110 184/843/110 +f 186/221/121 188/223/2 180/215/2 +f 184/843/110 191/1046/110 421/845/124 +f 420/846/124 421/845/124 192/279/75 +f 207/243/125 206/242/126 197/232/126 +f 204/240/127 202/238/128 195/230/128 +f 205/847/129 423/1047/130 422/848/130 +f 199/849/129 194/1048/131 203/850/131 +f 198/233/127 197/232/126 206/242/126 +f 203/850/131 194/1048/131 196/534/28 +f 426/851/132 220/261/133 219/260/17 +f 212/853/24 217/258/24 209/254/69 +f 369/855/134 93/1049/134 220/261/133 +f 93/1049/134 425/1050/134 220/261/133 +f 219/260/17 216/257/14 211/470/136 +f 211/470/136 88/107/178 226/852/17 +f 68/78/1 228/272/137 227/271/137 +f 62/71/138 227/271/137 228/272/137 +f 216/257/14 217/258/24 212/853/24 +f 229/277/139 236/288/139 238/292/140 +f 236/288/139 229/277/139 175/275/141 +f 177/212/142 234/283/142 233/286/141 +f 230/840/121 235/839/121 232/858/12 +f 270/859/42 243/1051/143 256/860/143 +f 275/862/39 272/865/17 261/863/17 +f 272/865/17 270/859/42 259/861/42 +f 277/866/144 275/862/39 265/864/39 +f 260/868/37 271/880/37 273/869/6 +f 255/871/39 242/882/39 244/872/13 +f 266/874/42 240/883/42 428/875/17 +f 262/877/9 274/884/9 276/878/5 +f 258/873/13 244/872/13 271/880/37 +f 269/881/17 428/1052/17 242/882/39 +f 264/879/5 276/878/5 240/883/42 +f 263/870/6 273/869/6 274/884/9 +f 284/346/147 246/563/13 279/885/145 +f 246/563/13 289/353/13 279/885/145 +f 249/303/25 281/1053/148 283/886/146 +f 284/346/147 279/885/145 251/305/16 +f 281/338/148 288/904/17 282/350/17 +f 286/887/6 433/899/123 532/888/123 +f 285/890/2 432/900/101 534/891/101 +f 431/893/17 430/901/75 536/894/75 +f 434/896/140 286/1054/6 533/897/6 +f 433/899/123 285/890/2 535/892/2 +f 432/900/101 431/893/17 537/895/17 +f 430/901/75 287/903/1 539/902/1 +f 287/903/1 434/896/140 538/898/140 +f 279/334/17 435/1055/17 254/335/17 +f 435/1055/17 288/904/17 254/335/17 +f 288/904/17 281/338/148 280/337/17 +f 307/373/42 312/567/42 314/905/51 +f 315/906/48 310/568/39 308/374/39 +f 445/907/77 444/928/5 540/908/5 +f 443/910/81 442/1056/6 542/911/6 +f 316/913/80 440/931/13 544/914/13 +f 446/916/67 445/907/77 541/909/77 +f 438/918/14 318/925/17 547/919/17 +f 317/921/70 443/910/81 543/912/81 +f 441/923/79 316/913/80 545/915/80 +f 318/925/17 446/916/67 546/917/67 +f 439/926/24 438/918/14 548/920/14 +f 444/928/5 317/921/70 549/922/70 +f 442/929/6 441/923/79 550/924/79 +f 440/931/13 439/926/24 551/927/24 +f 321/932/17 455/953/67 552/933/67 +f 448/935/24 447/954/14 554/936/14 +f 453/938/5 320/955/70 556/939/70 +f 451/941/6 450/956/79 558/942/79 +f 449/944/13 448/935/24 555/937/24 +f 454/946/77 453/938/5 557/940/5 +f 452/948/81 451/1057/6 559/949/6 +f 319/951/80 449/944/13 560/945/13 +f 455/953/67 454/946/77 561/947/77 +f 447/954/14 321/932/17 553/934/17 +f 320/955/70 452/948/81 562/950/81 +f 450/956/79 319/951/80 563/952/80 +f 564/957/149 568/961/18 565/958/150 +f 564/957/149 574/967/158 567/960/152 +f 569/962/153 585/980/169 570/963/154 +f 566/959/151 565/958/150 572/965/156 +f 571/964/155 570/963/154 567/960/152 +f 573/966/157 572/965/156 575/968/159 +f 565/958/150 580/973/164 577/970/161 +f 570/963/154 585/980/169 578/971/162 +f 568/961/18 583/976/167 580/973/164 +f 572/965/156 577/970/161 581/974/165 +f 568/961/18 567/960/152 582/975/166 +f 570/963/154 579/972/163 582/975/166 +f 583/976/167 588/984/13 586/982/39 +f 577/970/161 592/990/17 587/983/42 +f 582/975/166 590/987/37 588/984/13 +f 584/985/168 591/1058/5 589/986/9 +f 579/972/163 593/991/6 590/987/37 +f 581/974/165 587/983/42 591/988/5 +f 580/973/164 586/982/39 592/990/17 +f 578/971/162 589/986/9 593/991/6 +f 457/992/170 463/1007/170 462/993/171 +f 458/994/171 462/993/171 334/995/99 +f 329/996/99 334/995/99 333/997/172 +f 330/999/10 459/998/172 333/997/172 +f 330/1001/10 332/1059/10 466/1002/173 +f 460/1003/173 466/1002/173 465/1004/174 +f 461/1006/175 464/1008/175 463/1007/170 +f 461/1006/175 331/1005/174 465/1004/174 +f 594/1009/176 471/1021/176 336/1010/2 +f 596/1012/18 467/1023/18 337/1013/13 +f 598/1015/5 335/1025/5 469/1016/19 +f 595/1018/2 336/1060/2 470/1019/177 +f 597/1014/13 337/1013/13 471/1021/176 +f 601/1022/1 468/1024/1 467/1023/18 +f 599/1017/19 469/1016/19 468/1024/1 +f 600/1020/177 470/1019/177 335/1025/5 o Bolt +v -0.108253 1.093750 -0.062500 +v 0.108253 1.093750 -0.062500 v 0.000000 1.281250 -0.062500 +v 0.093750 1.318630 -2.875000 +v 0.000000 1.281250 -2.875000 +v 0.062500 1.264503 -2.875000 +v -0.162380 1.062500 -2.750000 +v -0.108253 1.093750 -2.875000 +v -0.108253 1.093750 -2.750000 +v 0.000000 1.343750 -2.812500 +v 0.000000 1.281250 -2.812500 +v -0.108253 1.218750 -2.750000 +v -0.187500 1.156250 -2.750000 +v -0.125000 1.156250 -2.750000 +v -0.062500 1.264503 -2.750000 +v -0.162380 1.250000 -2.750000 +v 0.162380 1.250000 -2.875000 +v 0.108253 1.218750 -2.875000 +v 0.187500 1.156250 -2.875000 +v 0.125000 1.156250 -2.875000 +v 0.108253 1.093750 -2.875000 +v 0.062500 1.047997 -2.875000 +v 0.162380 1.062500 -2.875000 +v 0.000000 0.968750 -2.875000 +v 0.000000 1.031250 -2.875000 +v -0.062500 1.047997 -2.875000 +v -0.093750 0.993870 -2.875000 +v -0.108253 1.218750 -3.062500 +v -0.187500 1.156250 -3.062500 +v -0.162380 1.250000 -3.062500 +v 0.000000 1.281250 -3.125000 +v 0.108253 1.218750 -3.125000 +v 0.000000 1.031250 -3.125000 +v -0.062500 1.264503 -3.062500 +v -0.093750 1.318630 -3.062500 +v 0.000000 1.343750 -3.062500 +v 0.062500 1.264503 -3.062500 +v 0.093750 1.318630 -3.062500 +v 0.108253 1.218750 -3.062500 +v 0.162380 1.250000 -3.062500 +v 0.187500 1.156250 -3.062500 +v 0.108253 1.093750 -3.062500 +v 0.162380 1.062500 -3.062500 +v 0.062500 1.047997 -3.062500 +v 0.093750 0.993870 -3.062500 +v 0.000000 1.031250 -3.062500 +v 0.000000 0.968750 -3.062500 +v -0.093750 0.993870 -3.062500 +v -0.108253 1.093750 -3.062500 +v -0.162380 1.062500 -3.062500 +v -0.589834 0.899576 -2.627277 +v -0.501673 0.800552 -2.510351 +v -0.542588 0.783848 -2.627277 +v -0.626668 0.952046 -2.488254 +v -0.548918 0.916279 -2.510351 +v -0.532177 0.720591 -2.488254 +v -0.535342 0.786807 -2.429790 +v -0.664418 0.869127 -2.663644 +v -0.681345 0.659693 -2.560987 +v -0.573092 0.703887 -2.605181 +v -0.725426 0.709205 -2.619450 +v -0.617173 0.753399 -2.663644 +v -0.775837 0.891148 -2.560987 +v -0.667583 0.935343 -2.605181 +v -0.690841 0.858340 -2.385596 +v -0.582587 0.902534 -2.429790 +v -0.806341 0.811187 -2.538889 +v -0.772672 0.824933 -2.619450 +v -0.734921 0.907852 -2.444060 +v -0.765425 0.827891 -2.421963 +v -0.643595 0.742613 -2.385596 +v -0.640430 0.676397 -2.444060 +v -0.718180 0.712164 -2.421963 +v -0.759095 0.695460 -2.538889 v -0.062500 1.264503 -0.062500 v -0.108253 1.218750 -0.062500 v -0.125000 1.156250 -0.062500 -v -0.108253 1.093750 -0.062500 v -0.062500 1.047997 -0.062500 v 0.000000 1.031250 -0.062500 v 0.062500 1.047997 -0.062500 -v 0.108253 1.093750 -0.062500 v 0.125000 1.156250 -0.062500 v 0.108253 1.218750 -0.062500 v 0.062500 1.264503 -0.062500 -v -0.062500 1.264503 -2.750000 -v 0.000000 1.281250 -2.812500 -v -0.108253 1.218750 -2.750000 -v -0.125000 1.156250 -2.750000 -v -0.108253 1.093750 -2.875000 -v -0.062500 1.047997 -2.875000 -v 0.000000 1.031250 -2.875000 -v 0.062500 1.047997 -2.875000 -v 0.108253 1.093750 -2.875000 -v 0.125000 1.156250 -2.875000 -v 0.108253 1.218750 -2.875000 -v 0.062500 1.264503 -2.875000 -v 0.000000 1.343750 -2.812500 -v -0.093750 1.318630 -2.750000 -v -0.162380 1.250000 -2.750000 -v -0.187500 1.156250 -2.750000 -v -0.162380 1.062500 -2.875000 -v -0.093750 0.993870 -2.875000 -v 0.000000 0.968750 -2.875000 -v 0.093750 0.993870 -2.875000 -v 0.162380 1.062500 -2.875000 -v 0.187500 1.156250 -2.875000 -v 0.162380 1.250000 -2.875000 -v 0.093750 1.318630 -2.875000 -v 0.000000 1.281250 -2.875000 v 0.000000 1.343750 -2.875000 -v -0.093750 1.318630 -3.062500 -v -0.162380 1.250000 -3.062500 -v -0.162380 1.062500 -2.750000 -v -0.187500 1.156250 -3.062500 -v -0.108253 1.093750 -2.750000 -v -0.162380 1.062500 -3.062500 -v -0.093750 0.993870 -3.062500 -v 0.000000 0.968750 -3.062500 -v 0.093750 0.993870 -3.062500 -v 0.162380 1.062500 -3.062500 -v 0.187500 1.156250 -3.062500 -v 0.162380 1.250000 -3.062500 -v 0.093750 1.318630 -3.062500 -v 0.000000 1.343750 -3.062500 -v 0.000000 1.281250 -3.062500 -v -0.062500 1.264503 -3.062500 -v -0.108253 1.218750 -3.062500 +v -0.162380 1.062500 -2.875000 +v -0.093750 1.318630 -2.750000 +v 0.093750 0.993870 -2.875000 v -0.125000 1.156250 -3.062500 -v -0.108253 1.093750 -3.062500 -v -0.062500 1.047997 -3.062500 -v 0.000000 1.031250 -3.062500 -v 0.062500 1.047997 -3.062500 -v 0.108253 1.093750 -3.062500 -v 0.125000 1.156250 -3.062500 -v 0.108253 1.218750 -3.062500 -v 0.062500 1.264503 -3.062500 -v 0.000000 1.281250 -3.125000 -v -0.062500 1.264503 -3.125000 v -0.108253 1.218750 -3.125000 -v -0.125000 1.156250 -3.125000 -v -0.108253 1.093750 -3.125000 -v -0.062500 1.047997 -3.125000 -v 0.000000 1.031250 -3.125000 -v 0.062500 1.047997 -3.125000 -v 0.108253 1.093750 -3.125000 -v 0.125000 1.156250 -3.125000 -v 0.108253 1.218750 -3.125000 +v -0.062500 1.264503 -3.125000 v 0.062500 1.264503 -3.125000 -v -0.125000 1.218750 -2.875000 -v -0.125000 1.200444 -2.830806 +v 0.125000 1.156250 -3.125000 +v 0.108253 1.093750 -3.125000 +v 0.062500 1.047997 -3.125000 +v -0.062500 1.047997 -3.125000 +v -0.108253 1.093750 -3.125000 +v -0.125000 1.156250 -3.125000 +v 0.000000 1.281250 -3.062500 +v 0.125000 1.156250 -3.062500 +v -0.062500 1.047997 -3.062500 v -0.125000 1.156250 -2.812500 +v -0.250000 1.112056 -2.830806 v -0.125000 1.112056 -2.830806 -v -0.125000 1.093750 -2.875000 -v -0.125000 1.112056 -2.919194 -v -0.125000 1.156250 -2.937500 +v -0.125000 1.218750 -2.875000 +v -0.250000 1.200444 -2.830806 +v -0.125000 1.200444 -2.830806 v -0.125000 1.200444 -2.919194 v -0.250000 1.218750 -2.875000 -v -0.250000 1.200444 -2.830806 -v -0.250000 1.156250 -2.812500 -v -0.250000 1.112056 -2.830806 -v -0.250000 1.093750 -2.875000 -v -0.250000 1.112056 -2.919194 +v -0.125000 1.112056 -2.919194 v -0.250000 1.156250 -2.937500 +v -0.125000 1.156250 -2.937500 +v -0.250000 1.093750 -2.875000 +v -0.125000 1.093750 -2.875000 +v -0.250000 1.156250 -2.812500 v -0.250000 1.200444 -2.919194 -v -0.303347 1.208643 -2.864892 -v -0.281250 1.194523 -2.824885 -v -0.259153 1.154516 -2.810766 -v -0.259153 1.092016 -2.873266 -v -0.281250 1.106135 -2.913273 -v -0.303347 1.146143 -2.927392 +v -0.250000 1.112056 -2.919194 v -0.312500 1.188603 -2.907352 +v -0.281250 1.106135 -2.913273 +v -0.281250 1.194523 -2.824885 +v -0.303347 1.208643 -2.864892 +v -0.303347 1.146143 -2.927392 +v -0.259153 1.154516 -2.810766 +v -0.358253 1.156250 -2.875000 v -0.342400 1.181028 -2.837278 -v -0.304126 1.178347 -2.808709 +v -0.342400 1.118528 -2.899778 v -0.265853 1.149778 -2.806028 v -0.265853 1.087278 -2.868528 v -0.304127 1.089959 -2.897097 -v -0.342400 1.118528 -2.899778 -v -0.358253 1.156250 -2.875000 -v -0.522877 0.910434 -2.540796 -v -0.561150 0.913115 -2.569365 -v -0.484604 0.881865 -2.538115 -v -0.522877 0.822046 -2.629184 -v -0.484604 0.819365 -2.600615 -v -0.561150 0.850615 -2.631865 -v -0.577003 0.888337 -2.607087 +v -0.304126 1.178347 -2.808709 +v -0.259153 1.092016 -2.873266 v -0.468750 0.844143 -2.562893 -v -0.545753 0.894258 -2.524620 -v -0.567851 0.908377 -2.564627 -v -0.523657 0.854251 -2.510501 -v -0.545753 0.805870 -2.613008 -v -0.523656 0.791751 -2.573001 +v -0.561150 0.913115 -2.569365 +v -0.561150 0.850615 -2.631865 +v -0.484604 0.881865 -2.538115 +v -0.484604 0.819365 -2.600615 +v -0.577003 0.888337 -2.607087 +v -0.522877 0.822046 -2.629184 +v -0.522877 0.910434 -2.540796 v -0.567850 0.845877 -2.627127 +v -0.523657 0.854251 -2.510501 +v -0.523656 0.791751 -2.573001 +v -0.545753 0.805870 -2.613008 +v -0.545753 0.894258 -2.524620 v -0.514503 0.811791 -2.530540 -v -0.542588 0.783848 -2.627277 -v -0.501673 0.800552 -2.510351 -v -0.589834 0.899576 -2.627277 -v -0.548918 0.916279 -2.510351 -v -0.667583 0.935343 -2.605181 -v -0.626668 0.952046 -2.488254 -v -0.573092 0.703887 -2.605181 -v -0.532177 0.720591 -2.488254 -v -0.617173 0.753399 -2.663644 -v -0.535342 0.786807 -2.429790 -v -0.664418 0.869127 -2.663644 -v -0.582587 0.902534 -2.429790 -v -0.775837 0.891148 -2.560987 -v -0.734921 0.907852 -2.444060 -v -0.681345 0.659693 -2.560987 -v -0.640430 0.676397 -2.444060 -v -0.725426 0.709205 -2.619450 -v -0.643595 0.742613 -2.385596 -v -0.772672 0.824933 -2.619450 -v -0.690841 0.858340 -2.385596 -v -0.759095 0.695460 -2.538889 -v -0.718180 0.712164 -2.421963 -v -0.806341 0.811187 -2.538889 -v -0.765425 0.827891 -2.421963 +v -0.567851 0.908377 -2.564627 vt 0.762886 0.914773 vt 0.782568 0.914773 vt 0.772727 0.931818 @@ -3242,7 +3241,7 @@ vt 0.556818 0.909091 vt 0.693182 0.931818 vt 0.607954 0.931818 vt 0.556818 0.931818 -vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 1.0000 vn 0.5000 -0.8660 0.0000 vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 @@ -3272,6 +3271,8 @@ vn -0.8660 -0.3536 0.3536 vn -0.0928 -0.6615 0.7442 vn -0.4708 -0.8158 -0.3359 vn -0.3451 -0.9047 0.2500 +vn 0.8796 -0.4046 -0.2500 +vn -0.8660 -0.3536 0.3535 vn 0.8660 0.5000 0.0000 vn -0.0000 -1.0000 -0.0000 vn -1.0000 -0.0000 0.0000 @@ -3285,12 +3286,13 @@ vn 0.2588 0.9659 0.0000 vn 0.1569 0.9876 0.0000 vn 0.7071 0.0000 0.7071 vn 0.6293 0.1104 0.7693 +vn 0.5576 0.1963 0.8066 vn 0.5576 0.1963 0.8065 vn 0.4804 0.2773 0.8321 vn -0.0000 1.0000 0.0000 -vn -0.5507 0.8347 0.0000 +vn -0.5507 0.8347 -0.0000 vn -0.8181 -0.5751 -0.0000 -vn -0.0890 0.9960 -0.0000 +vn -0.0890 0.9960 0.0000 vn -0.8660 -0.5000 0.0000 vn -0.9071 -0.4210 0.0000 vn 0.5000 -0.6124 0.6124 @@ -3300,15 +3302,15 @@ vn 0.0000 0.7071 0.7071 vn 0.0000 0.7071 -0.7071 vn -0.0950 0.9953 -0.0202 vn 0.0000 -0.7071 -0.7071 -vn -0.0950 0.0202 -0.9953 -vn 0.0911 -0.9956 -0.0242 -vn 0.0911 0.0242 0.9956 +vn -0.0951 0.0202 -0.9953 +vn 0.0910 -0.9956 -0.0242 +vn 0.0910 0.0242 0.9956 vn -0.1266 0.7014 -0.7014 vn -0.0085 -0.6843 -0.7292 vn -0.5000 0.6124 -0.6124 vn -0.0318 -0.6668 -0.7446 vn -0.0318 0.7446 0.6668 -vn -0.3681 0.9294 0.0277 +vn -0.3681 0.9294 0.0278 vn -0.3681 -0.0277 -0.9294 vn 0.3362 0.1116 0.9352 vn -0.7958 0.4282 -0.4282 @@ -3333,407 +3335,407 @@ vn 0.5287 -0.8434 -0.0956 vn 0.0465 -0.7385 -0.6727 vn 0.0465 0.6727 0.7385 vn 0.7071 -0.5000 0.5000 -vn -0.4844 0.8576 0.1725 +vn -0.4844 0.8577 0.1725 vn -0.7071 -0.7071 0.0000 vn -0.2588 0.9659 0.0000 vn -0.9659 -0.2588 0.0000 s off -f 607/1061/180 611/1062/180 603/1063/180 -f 638/1064/180 639/1065/180 626/1066/180 -f 643/1067/181 619/1068/181 645/1069/181 -f 639/1070/182 627/1071/182 616/1072/182 -f 617/1073/180 630/1074/180 618/1075/180 -f 615/1076/180 629/1077/180 617/1073/180 -f 637/1078/180 626/1066/180 625/1079/180 -f 636/1080/180 625/1079/180 624/1081/180 -f 623/1082/180 636/1080/180 624/1081/180 -f 622/1083/180 635/1084/180 623/1082/180 -f 633/1085/180 622/1083/180 621/1086/180 -f 620/1087/180 633/1088/180 621/1089/180 -f 619/1090/180 632/1091/180 620/1087/180 -f 645/1092/180 630/1074/180 643/1093/180 -f 657/1094/183 644/1095/183 642/1096/183 -f 667/1097/183 677/1098/183 673/1099/183 -f 656/1100/183 642/1096/183 641/1101/183 -f 654/1102/183 656/1100/183 641/1101/183 -f 666/1103/183 654/1102/183 653/1104/183 -f 665/1105/183 653/1104/183 652/1106/183 -f 651/1107/183 665/1105/183 652/1106/183 -f 663/1108/183 651/1107/183 650/1109/183 -f 662/1110/183 650/1109/183 649/1111/183 -f 661/1112/183 649/1111/183 648/1113/183 -f 647/1114/183 661/1115/183 648/1116/183 -f 644/1095/183 659/1117/183 646/1118/183 -f 659/1117/183 647/1114/183 646/1118/183 -f 726/1119/184 725/1120/184 724/1121/184 -f 726/1122/185 729/1123/185 727/1124/185 -f 731/1125/186 724/1121/186 725/1120/186 -f 727/1126/187 733/1127/187 725/1120/187 -f 724/1121/188 734/1128/188 726/1119/188 -f 731/1125/189 738/1129/189 730/1130/189 -f 740/1131/190 734/1132/190 732/1133/190 -f 736/1134/191 729/1123/191 728/1135/191 -f 743/1136/192 733/1137/192 735/1138/192 -f 740/1139/193 746/1140/193 742/1141/193 -f 737/1142/194 735/1138/194 729/1123/194 -f 747/1143/195 741/1144/195 743/1145/195 -f 727/1124/196 729/1123/196 735/1138/196 -f 737/1142/197 747/1146/197 743/1136/197 -f 726/1122/198 734/1132/198 728/1135/198 -f 742/1147/199 728/1135/199 734/1132/199 -f 746/1148/200 736/1134/200 742/1147/200 -f 736/1134/201 747/1146/201 737/1142/201 -f 725/1120/202 733/1127/202 731/1125/202 -f 739/1149/203 733/1150/203 741/1151/203 -f 724/1121/204 730/1130/204 732/1152/204 -f 738/1129/205 732/1133/205 730/1130/205 -f 746/1140/206 745/1153/206 747/1143/206 -f 741/1144/207 745/1153/207 739/1149/207 -f 740/1139/208 738/1129/208 744/1154/208 -f 739/1149/209 744/1154/209 738/1129/209 -f 603/1063/180 604/1155/180 605/1156/180 -f 605/1156/180 606/1157/180 603/1063/180 -f 606/1157/180 607/1061/180 603/1063/180 -f 607/1061/180 608/1158/180 611/1062/180 -f 608/1158/180 609/1159/180 611/1062/180 -f 609/1159/180 610/1160/180 611/1062/180 -f 611/1062/180 612/1161/180 603/1063/180 -f 612/1161/180 613/1162/180 603/1063/180 -f 613/1162/180 614/1163/180 603/1063/180 -f 638/1064/180 640/1164/180 639/1065/180 -f 643/1067/181 631/1165/181 619/1068/181 -f 639/1070/182 640/1166/182 627/1071/182 -f 617/1073/180 629/1077/180 630/1074/180 -f 615/1076/180 628/1167/180 629/1077/180 -f 637/1078/180 638/1064/180 626/1066/180 -f 636/1080/180 637/1078/180 625/1079/180 -f 623/1082/180 635/1084/180 636/1080/180 -f 622/1083/180 634/1168/180 635/1084/180 -f 633/1085/180 634/1168/180 622/1083/180 -f 620/1087/180 632/1091/180 633/1088/180 -f 619/1090/180 631/1169/180 632/1091/180 -f 645/1092/180 618/1075/180 630/1074/180 -f 657/1094/183 658/1170/183 644/1095/183 -f 669/1171/183 668/1172/183 667/1097/183 -f 667/1097/183 678/1173/183 677/1098/183 -f 677/1098/183 676/1174/183 675/1175/183 -f 675/1175/183 674/1176/183 677/1098/183 -f 674/1176/183 673/1099/183 677/1098/183 -f 673/1099/183 672/1177/183 669/1171/183 -f 672/1177/183 671/1178/183 669/1171/183 -f 671/1178/183 670/1179/183 669/1171/183 -f 669/1171/183 667/1097/183 673/1099/183 -f 656/1100/183 657/1094/183 642/1096/183 -f 654/1102/183 655/1180/183 656/1100/183 -f 666/1103/183 655/1180/183 654/1102/183 -f 665/1105/183 666/1103/183 653/1104/183 -f 651/1107/183 664/1181/183 665/1105/183 -f 663/1108/183 664/1181/183 651/1107/183 -f 662/1110/183 663/1108/183 650/1109/183 -f 661/1112/183 662/1110/183 649/1111/183 -f 647/1114/183 660/1182/183 661/1115/183 -f 644/1095/183 658/1170/183 659/1117/183 -f 659/1117/183 660/1182/183 647/1114/183 -f 726/1119/184 727/1126/184 725/1120/184 -f 726/1122/185 728/1135/185 729/1123/185 -f 731/1125/186 730/1130/186 724/1121/186 -f 727/1126/187 735/1183/187 733/1127/187 -f 724/1121/188 732/1152/188 734/1128/188 -f 731/1125/189 739/1149/189 738/1129/189 -f 740/1131/190 742/1147/190 734/1132/190 -f 736/1134/191 737/1142/191 729/1123/191 -f 743/1136/192 741/1184/192 733/1137/192 -f 740/1139/193 744/1154/193 746/1140/193 -f 737/1142/194 743/1136/194 735/1138/194 -f 747/1143/195 745/1153/195 741/1144/195 -f 742/1147/199 736/1134/199 728/1135/199 -f 736/1134/201 746/1148/201 747/1146/201 -f 739/1149/203 731/1125/203 733/1150/203 -f 738/1129/205 740/1131/205 732/1133/205 -f 746/1140/206 744/1154/206 745/1153/206 -f 739/1149/209 745/1153/209 744/1154/209 +f 603/1061/179 604/1062/179 605/1063/179 +f 606/1064/179 607/1065/179 608/1066/179 +f 609/1067/180 610/1068/180 611/1069/180 +f 607/1070/181 612/1071/181 613/1072/181 +f 614/1073/179 615/1074/179 616/1075/179 +f 617/1076/179 618/1077/179 614/1073/179 +f 619/1078/179 608/1066/179 620/1079/179 +f 621/1080/179 620/1079/179 622/1081/179 +f 623/1082/179 621/1080/179 622/1081/179 +f 624/1083/179 625/1084/179 623/1082/179 +f 626/1085/179 624/1083/179 627/1086/179 +f 628/1087/179 626/1088/179 627/1089/179 +f 610/1090/179 629/1091/179 628/1087/179 +f 611/1092/179 615/1074/179 609/1093/179 +f 630/1094/182 631/1095/182 632/1096/182 +f 633/1097/182 634/1098/182 635/1099/182 +f 636/1100/182 632/1096/182 637/1101/182 +f 638/1102/182 636/1100/182 637/1101/182 +f 639/1103/182 638/1102/182 640/1104/182 +f 641/1105/182 640/1104/182 642/1106/182 +f 643/1107/182 641/1105/182 642/1106/182 +f 644/1108/182 643/1107/182 645/1109/182 +f 646/1110/182 645/1109/182 647/1111/182 +f 648/1112/182 647/1111/182 649/1113/182 +f 650/1114/182 648/1115/182 649/1116/182 +f 631/1095/182 651/1117/182 652/1118/182 +f 651/1117/182 650/1114/182 652/1118/182 +f 653/1119/183 654/1120/183 655/1121/183 +f 653/1122/184 656/1123/184 657/1124/184 +f 658/1125/185 655/1121/185 654/1120/185 +f 657/1126/186 659/1127/186 654/1120/186 +f 655/1121/187 660/1128/187 653/1119/187 +f 658/1125/188 661/1129/188 662/1130/188 +f 663/1131/189 660/1132/189 664/1133/189 +f 665/1134/190 656/1123/190 666/1135/190 +f 667/1136/191 659/1137/191 668/1138/191 +f 663/1139/192 669/1140/192 670/1141/192 +f 671/1142/193 668/1138/193 656/1123/193 +f 672/1143/194 673/1144/194 667/1145/194 +f 657/1124/195 656/1123/195 668/1138/195 +f 671/1142/196 672/1146/196 667/1136/196 +f 653/1122/197 660/1132/197 666/1135/197 +f 670/1147/198 666/1135/198 660/1132/198 +f 669/1148/199 665/1134/199 670/1147/199 +f 665/1134/200 672/1146/200 671/1142/200 +f 654/1120/201 659/1127/201 658/1125/201 +f 674/1149/202 659/1150/202 673/1151/202 +f 655/1121/203 662/1130/203 664/1152/203 +f 661/1129/204 664/1133/204 662/1130/204 +f 669/1140/205 675/1153/205 672/1143/205 +f 673/1144/206 675/1153/206 674/1149/206 +f 663/1139/207 661/1129/207 676/1154/207 +f 674/1149/208 676/1154/208 661/1129/208 +f 605/1063/179 677/1155/179 678/1156/179 +f 678/1156/179 679/1157/179 605/1063/179 +f 679/1157/179 603/1061/179 605/1063/179 +f 603/1061/179 680/1158/179 604/1062/179 +f 680/1158/179 681/1159/179 604/1062/179 +f 681/1159/179 682/1160/179 604/1062/179 +f 604/1062/179 683/1161/179 605/1063/179 +f 683/1161/179 684/1162/179 605/1063/179 +f 684/1162/179 685/1163/179 605/1063/179 +f 606/1064/179 686/1164/179 607/1065/179 +f 609/1067/180 687/1165/180 610/1068/180 +f 607/1070/181 686/1166/181 612/1071/181 +f 614/1073/179 618/1077/179 615/1074/179 +f 617/1076/179 688/1167/179 618/1077/179 +f 619/1078/179 606/1064/179 608/1066/179 +f 621/1080/179 619/1078/179 620/1079/179 +f 623/1082/179 625/1084/179 621/1080/179 +f 624/1083/179 689/1168/179 625/1084/179 +f 626/1085/179 689/1168/179 624/1083/179 +f 628/1087/179 629/1091/179 626/1088/179 +f 610/1090/179 687/1169/179 629/1091/179 +f 611/1092/179 616/1075/179 615/1074/179 +f 630/1094/182 690/1170/182 631/1095/182 +f 691/1171/182 692/1172/182 633/1097/182 +f 633/1097/182 693/1173/182 634/1098/182 +f 634/1098/182 694/1174/182 695/1175/182 +f 695/1175/182 696/1176/182 634/1098/182 +f 696/1176/182 635/1099/182 634/1098/182 +f 635/1099/182 697/1177/182 691/1171/182 +f 697/1177/182 698/1178/182 691/1171/182 +f 698/1178/182 699/1179/182 691/1171/182 +f 691/1171/182 633/1097/182 635/1099/182 +f 636/1100/182 630/1094/182 632/1096/182 +f 638/1102/182 700/1180/182 636/1100/182 +f 639/1103/182 700/1180/182 638/1102/182 +f 641/1105/182 639/1103/182 640/1104/182 +f 643/1107/182 701/1181/182 641/1105/182 +f 644/1108/182 701/1181/182 643/1107/182 +f 646/1110/182 644/1108/182 645/1109/182 +f 648/1112/182 646/1110/182 647/1111/182 +f 650/1114/182 702/1182/182 648/1115/182 +f 631/1095/182 690/1170/182 651/1117/182 +f 651/1117/182 702/1182/182 650/1114/182 +f 653/1119/183 657/1126/183 654/1120/183 +f 653/1122/184 666/1135/184 656/1123/184 +f 658/1125/209 662/1130/209 655/1121/209 +f 657/1126/186 668/1183/186 659/1127/186 +f 655/1121/187 664/1152/187 660/1128/187 +f 658/1125/188 674/1149/188 661/1129/188 +f 663/1131/189 670/1147/189 660/1132/189 +f 665/1134/190 671/1142/190 656/1123/190 +f 667/1136/191 673/1184/191 659/1137/191 +f 663/1139/192 676/1154/192 669/1140/192 +f 671/1142/193 667/1136/193 668/1138/193 +f 672/1143/194 675/1153/194 673/1144/194 +f 670/1147/198 665/1134/198 666/1135/198 +f 665/1134/200 669/1148/200 672/1146/200 +f 674/1149/202 658/1125/202 659/1150/202 +f 661/1129/204 663/1131/204 664/1133/204 +f 669/1140/210 676/1154/210 675/1153/210 +f 674/1149/208 675/1153/208 676/1154/208 s 1 -f 624/1081/182 613/1185/210 612/1186/182 -f 621/1086/211 610/1187/181 609/1188/211 -f 630/1189/212 642/1096/213 644/1095/212 -f 625/1079/210 614/1190/214 613/1185/210 -f 622/1083/181 611/1191/215 610/1187/181 -f 615/1076/216 605/1192/213 604/1193/217 -f 623/1082/215 612/1186/182 611/1191/215 -f 620/1087/218 609/1194/211 608/1195/218 -f 617/1073/213 606/1196/212 605/1192/213 -f 626/1066/214 639/1065/219 616/1197/220 -f 616/1072/221 627/1071/222 615/1198/223 -f 615/1198/223 627/1071/222 628/1199/224 -f 603/1200/225 615/1076/216 604/1193/217 -f 641/1101/217 629/1201/213 628/1202/226 -f 645/1092/227 620/1087/218 608/1195/218 -f 628/1202/226 640/1166/228 641/1101/217 -f 646/1118/229 632/1203/218 631/1165/230 -f 650/1109/215 636/1204/182 635/1205/215 -f 647/1114/218 633/1206/211 632/1203/218 -f 651/1107/182 637/1207/210 636/1204/182 -f 648/1113/211 634/1208/181 633/1209/211 -f 637/1207/210 653/1104/214 638/1210/214 -f 649/1111/181 635/1205/215 634/1208/181 -f 653/1104/214 640/1166/228 638/1210/214 -f 644/1095/212 646/1118/229 631/1165/230 -f 669/1211/213 658/1170/212 657/1094/213 -f 676/1212/182 665/1105/210 664/1181/182 -f 673/1213/211 662/1110/181 661/1112/211 -f 670/1214/212 659/1117/229 658/1170/212 -f 677/1215/210 666/1103/214 665/1105/210 -f 667/1216/225 656/1100/217 655/1180/225 -f 674/1217/181 663/1108/215 662/1110/181 -f 671/1218/229 660/1182/218 659/1117/229 -f 678/1219/214 655/1180/225 666/1103/214 -f 668/1220/217 657/1094/213 656/1100/217 -f 675/1221/215 664/1181/182 663/1108/215 -f 672/1222/218 661/1115/211 660/1182/218 -f 606/1196/212 645/1092/227 607/1223/229 -f 681/1224/180 690/1225/231 682/1226/232 -f 679/1227/225 688/1228/233 680/1229/234 -f 686/1230/235 687/1231/236 679/1227/225 -f 684/1232/237 693/1233/238 685/1234/183 -f 682/1226/232 691/1235/239 683/1236/211 -f 680/1229/234 689/1237/240 681/1224/180 -f 685/1234/183 694/1238/241 686/1230/235 -f 683/1239/211 692/1240/242 684/1232/237 -f 693/1233/238 701/1241/243 694/1238/241 -f 691/1242/239 699/1243/244 692/1240/242 -f 687/1231/236 696/1244/245 688/1228/233 -f 694/1238/241 695/1245/246 687/1231/236 -f 693/1233/238 699/1243/244 700/1246/247 -f 688/1228/233 697/1247/248 689/1237/240 -f 695/1245/246 708/1248/249 702/1249/250 -f 699/1243/244 707/1250/251 700/1246/247 -f 696/1244/245 704/1251/252 697/1247/248 -f 700/1246/247 708/1248/249 701/1241/243 -f 699/1243/244 705/1252/253 706/1253/254 -f 696/1244/245 702/1249/250 703/1254/255 -f 689/1237/240 697/1247/248 690/1255/231 -f 690/1256/231 698/1257/256 691/1258/239 -f 698/1257/256 690/1259/231 705/1260/253 -f 697/1247/248 704/1251/252 690/1261/231 -f 704/1251/252 716/1262/257 690/1263/231 -f 708/1248/249 710/1264/258 702/1249/250 -f 706/1253/254 714/1265/259 707/1250/251 -f 703/1254/255 711/1266/260 704/1251/252 -f 690/1263/231 713/1267/261 705/1268/253 -f 707/1250/251 715/1269/262 708/1248/249 -f 706/1253/254 713/1270/261 712/1271/263 -f 702/1249/250 709/1272/264 703/1254/255 -f 712/1271/263 722/1273/265 714/1265/259 -f 709/1272/264 719/1274/266 711/1266/260 -f 716/1262/257 721/1275/267 713/1267/261 -f 713/1270/261 720/1276/268 712/1271/263 -f 710/1264/258 717/1277/269 709/1272/264 -f 711/1266/260 723/1278/270 716/1262/257 -f 715/1269/262 718/1279/271 710/1264/258 -f 714/1265/259 722/1273/265 715/1269/262 -f 624/1081/182 625/1079/210 613/1185/210 -f 621/1086/211 622/1083/181 610/1187/181 -f 630/1189/212 629/1201/213 642/1096/213 -f 625/1079/210 626/1066/214 614/1190/214 -f 622/1083/181 623/1082/215 611/1191/215 -f 615/1076/216 617/1073/213 605/1192/213 -f 623/1082/215 624/1081/182 612/1186/182 -f 620/1087/218 621/1089/211 609/1194/211 -f 617/1073/213 618/1075/212 606/1196/212 -f 616/1197/220 603/1200/225 614/1190/214 -f 614/1190/214 626/1066/214 616/1197/220 -f 603/1200/225 616/1197/220 615/1076/216 -f 641/1101/217 642/1096/213 629/1201/213 -f 608/1195/218 607/1223/229 645/1092/227 -f 645/1092/227 619/1090/272 620/1087/218 -f 627/1071/273 640/1166/228 628/1202/226 -f 640/1166/228 654/1102/225 641/1101/217 -f 646/1118/229 647/1114/218 632/1203/218 -f 650/1109/215 651/1107/182 636/1204/182 -f 647/1114/218 648/1116/211 633/1206/211 -f 651/1107/182 652/1106/210 637/1207/210 -f 648/1113/211 649/1111/181 634/1208/181 -f 637/1207/210 652/1106/210 653/1104/214 -f 649/1111/181 650/1109/215 635/1205/215 -f 653/1104/214 654/1102/225 640/1166/228 -f 631/1165/230 643/1067/274 630/1189/212 -f 630/1189/212 644/1095/212 631/1165/230 -f 669/1211/213 670/1214/212 658/1170/212 -f 676/1212/182 677/1215/210 665/1105/210 -f 673/1213/211 674/1217/181 662/1110/181 -f 670/1214/212 671/1218/229 659/1117/229 -f 677/1215/210 678/1219/214 666/1103/214 -f 667/1216/225 668/1220/217 656/1100/217 -f 674/1217/181 675/1221/215 663/1108/215 -f 671/1218/229 672/1222/218 660/1182/218 -f 678/1219/214 667/1216/225 655/1180/225 -f 668/1220/217 669/1211/213 657/1094/213 -f 675/1221/215 676/1212/182 664/1181/182 -f 672/1222/218 673/1280/211 661/1115/211 -f 606/1196/212 618/1075/212 645/1092/227 -f 681/1224/180 689/1237/240 690/1225/231 -f 679/1227/225 687/1231/236 688/1228/233 -f 686/1230/235 694/1238/241 687/1231/236 -f 684/1232/237 692/1240/242 693/1233/238 -f 682/1226/232 690/1225/231 691/1235/239 -f 680/1229/234 688/1228/233 689/1237/240 -f 685/1234/183 693/1233/238 694/1238/241 -f 683/1239/211 691/1242/239 692/1240/242 -f 693/1233/238 700/1246/247 701/1241/243 -f 691/1242/239 698/1281/256 699/1243/244 -f 687/1231/236 695/1245/246 696/1244/245 -f 694/1238/241 701/1241/243 695/1245/246 -f 693/1233/238 692/1240/242 699/1243/244 -f 688/1228/233 696/1244/245 697/1247/248 -f 695/1245/246 701/1241/243 708/1248/249 -f 699/1243/244 706/1253/254 707/1250/251 -f 696/1244/245 703/1254/255 704/1251/252 -f 700/1246/247 707/1250/251 708/1248/249 -f 699/1243/244 698/1281/256 705/1252/253 -f 696/1244/245 695/1245/246 702/1249/250 -f 704/1251/252 711/1266/260 716/1262/257 -f 708/1248/249 715/1269/262 710/1264/258 -f 706/1253/254 712/1271/263 714/1265/259 -f 703/1254/255 709/1272/264 711/1266/260 -f 690/1263/231 716/1262/257 713/1267/261 -f 707/1250/251 714/1265/259 715/1269/262 -f 706/1253/254 705/1252/253 713/1270/261 -f 702/1249/250 710/1264/258 709/1272/264 -f 712/1271/263 720/1276/268 722/1273/265 -f 709/1272/264 717/1277/269 719/1274/266 -f 716/1262/257 723/1278/270 721/1275/267 -f 713/1270/261 721/1282/267 720/1276/268 -f 710/1264/258 718/1279/271 717/1277/269 -f 711/1266/260 719/1274/266 723/1278/270 +f 622/1081/181 684/1185/211 683/1186/181 +f 627/1086/212 682/1187/180 681/1188/212 +f 615/1189/213 632/1096/214 631/1095/213 +f 620/1079/211 685/1190/215 684/1185/211 +f 624/1083/180 604/1191/216 682/1187/180 +f 617/1076/217 678/1192/214 677/1193/218 +f 623/1082/216 683/1186/181 604/1191/216 +f 628/1087/219 681/1194/212 680/1195/219 +f 614/1073/214 679/1196/213 678/1192/214 +f 608/1066/215 607/1065/220 613/1197/221 +f 613/1072/222 612/1071/223 617/1198/224 +f 617/1198/225 612/1071/223 688/1199/226 +f 605/1200/227 617/1076/217 677/1193/218 +f 637/1101/218 618/1201/214 688/1202/228 +f 611/1092/229 628/1087/219 680/1195/219 +f 688/1202/228 686/1166/230 637/1101/218 +f 652/1118/231 629/1203/219 687/1165/232 +f 645/1109/216 621/1204/181 625/1205/216 +f 650/1114/219 626/1206/212 629/1203/219 +f 643/1107/181 619/1207/211 621/1204/181 +f 649/1113/212 689/1208/180 626/1209/212 +f 619/1207/211 640/1104/215 606/1210/215 +f 647/1111/180 625/1205/216 689/1208/180 +f 640/1104/215 686/1166/230 606/1210/215 +f 631/1095/213 652/1118/231 687/1165/232 +f 691/1211/214 690/1170/213 630/1094/214 +f 694/1212/181 641/1105/211 701/1181/181 +f 635/1213/212 646/1110/180 648/1112/212 +f 699/1214/213 651/1117/231 690/1170/213 +f 634/1215/211 639/1103/215 641/1105/211 +f 633/1216/227 636/1100/218 700/1180/227 +f 696/1217/180 644/1108/216 646/1110/180 +f 698/1218/231 702/1182/219 651/1117/231 +f 693/1219/215 700/1180/227 639/1103/215 +f 692/1220/218 630/1094/214 636/1100/218 +f 695/1221/216 701/1181/181 644/1108/216 +f 697/1222/219 648/1115/212 702/1182/219 +f 679/1196/213 611/1092/229 603/1223/231 +f 703/1224/179 704/1225/233 705/1226/234 +f 706/1227/227 707/1228/235 708/1229/236 +f 709/1230/237 710/1231/238 706/1227/227 +f 711/1232/239 712/1233/240 713/1234/182 +f 705/1226/234 714/1235/241 715/1236/212 +f 708/1229/236 716/1237/242 703/1224/179 +f 713/1234/182 717/1238/243 709/1230/237 +f 715/1239/212 718/1240/244 711/1232/239 +f 712/1233/240 719/1241/245 717/1238/243 +f 714/1242/241 720/1243/246 718/1240/244 +f 710/1231/238 721/1244/247 707/1228/235 +f 717/1238/243 722/1245/248 710/1231/238 +f 712/1233/240 720/1243/246 723/1246/249 +f 707/1228/235 724/1247/250 716/1237/242 +f 722/1245/248 725/1248/251 726/1249/252 +f 720/1243/246 727/1250/253 723/1246/249 +f 721/1244/247 728/1251/254 724/1247/250 +f 723/1246/249 725/1248/251 719/1241/245 +f 720/1243/246 729/1252/255 730/1253/256 +f 721/1244/247 726/1249/252 731/1254/257 +f 716/1237/242 724/1247/250 704/1255/233 +f 704/1256/233 732/1257/258 714/1258/241 +f 732/1257/258 704/1259/233 729/1260/255 +f 724/1247/250 728/1251/254 704/1261/233 +f 728/1251/254 733/1262/259 704/1263/233 +f 725/1248/251 734/1264/260 726/1249/252 +f 730/1253/256 735/1265/261 727/1250/253 +f 731/1254/257 736/1266/262 728/1251/254 +f 704/1263/233 737/1267/263 729/1268/255 +f 727/1250/253 738/1269/264 725/1248/251 +f 730/1253/256 737/1270/263 739/1271/265 +f 726/1249/252 740/1272/266 731/1254/257 +f 739/1271/265 741/1273/267 735/1265/261 +f 740/1272/266 742/1274/268 736/1266/262 +f 733/1262/259 743/1275/269 737/1267/263 +f 737/1270/263 744/1276/270 739/1271/265 +f 734/1264/260 745/1277/271 740/1272/266 +f 736/1266/262 746/1278/272 733/1262/259 +f 738/1269/264 747/1279/273 734/1264/260 +f 735/1265/261 741/1273/267 738/1269/264 +f 622/1081/181 620/1079/211 684/1185/211 +f 627/1086/212 624/1083/180 682/1187/180 +f 615/1189/213 618/1201/214 632/1096/214 +f 620/1079/211 608/1066/215 685/1190/215 +f 624/1083/180 623/1082/216 604/1191/216 +f 617/1076/217 614/1073/214 678/1192/214 +f 623/1082/216 622/1081/181 683/1186/181 +f 628/1087/219 627/1089/212 681/1194/212 +f 614/1073/214 616/1075/213 679/1196/213 +f 613/1197/221 605/1200/227 685/1190/215 +f 685/1190/215 608/1066/215 613/1197/221 +f 605/1200/227 613/1197/221 617/1076/217 +f 637/1101/218 632/1096/214 618/1201/214 +f 680/1195/219 603/1223/231 611/1092/229 +f 611/1092/229 610/1090/274 628/1087/219 +f 612/1071/275 686/1166/230 688/1202/228 +f 686/1166/230 638/1102/227 637/1101/218 +f 652/1118/231 650/1114/219 629/1203/219 +f 645/1109/216 643/1107/181 621/1204/181 +f 650/1114/219 649/1116/212 626/1206/212 +f 643/1107/181 642/1106/211 619/1207/211 +f 649/1113/212 647/1111/180 689/1208/180 +f 619/1207/211 642/1106/211 640/1104/215 +f 647/1111/180 645/1109/216 625/1205/216 +f 640/1104/215 638/1102/227 686/1166/230 +f 687/1165/232 609/1067/276 615/1189/213 +f 615/1189/213 631/1095/213 687/1165/232 +f 691/1211/214 699/1214/213 690/1170/213 +f 694/1212/181 634/1215/211 641/1105/211 +f 635/1213/212 696/1217/180 646/1110/180 +f 699/1214/213 698/1218/231 651/1117/231 +f 634/1215/211 693/1219/215 639/1103/215 +f 633/1216/227 692/1220/218 636/1100/218 +f 696/1217/180 695/1221/216 644/1108/216 +f 698/1218/231 697/1222/219 702/1182/219 +f 693/1219/215 633/1216/227 700/1180/227 +f 692/1220/218 691/1211/214 630/1094/214 +f 695/1221/216 694/1212/181 701/1181/181 +f 697/1222/219 635/1280/212 648/1115/212 +f 679/1196/213 616/1075/213 611/1092/229 +f 703/1224/179 716/1237/242 704/1225/233 +f 706/1227/227 710/1231/238 707/1228/235 +f 709/1230/237 717/1238/243 710/1231/238 +f 711/1232/239 718/1240/244 712/1233/240 +f 705/1226/234 704/1225/233 714/1235/241 +f 708/1229/236 707/1228/235 716/1237/242 +f 713/1234/182 712/1233/240 717/1238/243 +f 715/1239/212 714/1242/241 718/1240/244 +f 712/1233/240 723/1246/249 719/1241/245 +f 714/1242/241 732/1281/258 720/1243/246 +f 710/1231/238 722/1245/248 721/1244/247 +f 717/1238/243 719/1241/245 722/1245/248 +f 712/1233/240 718/1240/244 720/1243/246 +f 707/1228/235 721/1244/247 724/1247/250 +f 722/1245/248 719/1241/245 725/1248/251 +f 720/1243/246 730/1253/256 727/1250/253 +f 721/1244/247 731/1254/257 728/1251/254 +f 723/1246/249 727/1250/253 725/1248/251 +f 720/1243/246 732/1281/258 729/1252/255 +f 721/1244/247 722/1245/248 726/1249/252 +f 728/1251/254 736/1266/262 733/1262/259 +f 725/1248/251 738/1269/264 734/1264/260 +f 730/1253/256 739/1271/265 735/1265/261 +f 731/1254/257 740/1272/266 736/1266/262 +f 704/1263/233 733/1262/259 737/1267/263 +f 727/1250/253 735/1265/261 738/1269/264 +f 730/1253/256 729/1252/255 737/1270/263 +f 726/1249/252 734/1264/260 740/1272/266 +f 739/1271/265 744/1276/270 741/1273/267 +f 740/1272/266 745/1277/271 742/1274/268 +f 733/1262/259 746/1278/272 743/1275/269 +f 737/1270/263 743/1282/269 744/1276/270 +f 734/1264/260 747/1279/273 745/1277/271 +f 736/1266/262 742/1274/268 746/1278/272 o Stock -v -0.250000 0.093750 -1.750000 -v -0.250000 -0.031250 -2.937500 -v -0.250000 0.531250 -1.750000 -v -0.250000 0.718750 -1.812500 -v -0.250000 0.781250 -2.000000 -v -0.250000 0.781250 -3.062500 -v -0.062500 0.343750 -4.375000 -v -0.062500 0.468750 -4.500000 -v -0.062500 0.281250 -4.125000 -v -0.062500 0.281250 -4.187500 -v -0.250000 -0.031250 -7.812500 -v -0.312500 -0.156250 -7.937500 -v -0.250000 -0.218750 -3.437500 -v -0.250000 -0.406250 -3.687500 -v -0.250000 -0.656250 -3.812500 -v -0.250000 -0.781250 -4.562500 -v -0.250000 -2.093750 -7.500000 -v -0.250000 -2.031250 -7.625000 -v -0.312500 0.718750 -3.062500 -v -0.312500 0.718750 -2.000000 -v -0.312500 0.531250 -1.812500 -v -0.312500 0.656250 -1.875000 -v -0.312500 0.156250 -1.812500 -v -0.312500 0.031250 -2.937500 -v -0.312500 -0.156250 -3.437500 -v -0.312500 -0.343750 -3.687500 -v -0.312500 -0.593750 -3.812500 -v -0.312500 -0.718750 -4.562500 -v -0.312500 -2.031250 -7.500000 -v -0.312500 -1.968750 -7.625000 -v 0.250000 0.093750 -1.750000 -v 0.250000 -0.031250 -2.937500 -v 0.250000 0.531250 -1.750000 -v 0.250000 0.718750 -1.812500 -v 0.250000 0.781250 -2.000000 -v 0.250000 0.781250 -3.062500 -v 0.062500 0.343750 -4.375000 -v 0.062500 0.468750 -4.500000 -v 0.062500 0.281250 -4.125000 -v 0.062500 0.281250 -4.187500 -v 0.250000 -0.031250 -7.812500 -v 0.312500 -0.156250 -7.937500 -v 0.250000 -0.218750 -3.437500 -v 0.250000 -0.406250 -3.687500 -v 0.250000 -0.656250 -3.812500 -v 0.250000 -0.781250 -4.562500 -v 0.250000 -2.093750 -7.500000 -v 0.250000 -2.031250 -7.625000 -v 0.312500 0.718750 -3.062500 -v 0.312500 0.718750 -2.000000 -v 0.312500 0.531250 -1.812500 -v 0.312500 0.656250 -1.875000 -v 0.312500 0.156250 -1.812500 -v 0.312500 0.031250 -2.937500 -v 0.312500 -0.156250 -3.437500 -v 0.312500 -0.343750 -3.687500 -v 0.312500 -0.593750 -3.812500 -v 0.312500 -0.718750 -4.562500 -v 0.312500 -2.031250 -7.500000 -v 0.312500 -1.968750 -7.625000 -v 0.187500 0.218750 -4.500000 -v -0.187500 0.218750 -4.500000 -v -0.312500 0.031250 -4.125000 -v -0.187500 0.218750 -4.375000 -v -0.312500 0.031250 -4.187500 -v 0.187500 0.218750 -4.375000 -v 0.312500 0.031250 -4.125000 -v 0.312500 0.031250 -4.187500 -v -0.312500 0.312500 -2.281250 -v -0.312500 0.390625 -2.260316 -v -0.312500 0.447816 -2.203125 -v -0.312500 0.468750 -2.125000 -v -0.312500 0.447816 -2.046875 -v -0.312500 0.390625 -1.989684 -v -0.312500 0.312500 -1.968750 -v -0.312500 0.234375 -1.989684 -v -0.312500 0.177184 -2.046875 -v -0.312500 0.156250 -2.125000 -v -0.312500 0.177184 -2.203125 -v -0.312500 0.234375 -2.260316 -v -0.375000 0.312500 -2.218750 -v -0.375000 0.359375 -2.206190 -v -0.375000 0.393690 -2.171875 -v -0.375000 0.406250 -2.125000 v -0.375000 0.393690 -2.078125 -v -0.375000 0.359375 -2.043810 -v -0.375000 0.312500 -2.031250 -v -0.375000 0.265625 -2.043810 -v -0.375000 0.231310 -2.078125 -v -0.375000 0.218750 -2.125000 +v -0.375000 0.393690 -2.171875 v -0.375000 0.231310 -2.171875 +v 0.375000 0.393690 -2.171875 +v 0.375000 0.393690 -2.078125 +v 0.375000 0.231310 -2.078125 +v -0.062500 0.218750 -4.125000 +v 0.062500 0.343750 -4.500000 +v 0.062500 0.218750 -4.125000 +v 0.250000 0.718750 -3.062500 +v -0.250000 0.718750 -3.062500 +v -0.375000 0.359375 -2.206190 +v -0.375000 0.312500 -2.218750 v -0.375000 0.265625 -2.206190 -v -0.250000 -1.968750 -7.625000 -v 0.250000 -1.968750 -7.625000 -v 0.312500 0.312500 -2.281250 -v 0.312500 0.390625 -2.260316 -v 0.312500 0.447816 -2.203125 -v 0.312500 0.468750 -2.125000 -v 0.312500 0.447816 -2.046875 -v 0.312500 0.390625 -1.989684 -v 0.312500 0.312500 -1.968750 -v 0.312500 0.234375 -1.989684 -v 0.312500 0.177184 -2.046875 -v 0.312500 0.156250 -2.125000 -v 0.312500 0.177184 -2.203125 -v 0.312500 0.234375 -2.260316 +v -0.375000 0.218750 -2.125000 +v -0.375000 0.231310 -2.078125 +v -0.375000 0.265625 -2.043810 +v -0.375000 0.312500 -2.031250 +v -0.375000 0.359375 -2.043810 +v -0.375000 0.406250 -2.125000 v 0.375000 0.312500 -2.218750 v 0.375000 0.359375 -2.206190 -v 0.375000 0.393690 -2.171875 v 0.375000 0.406250 -2.125000 -v 0.375000 0.393690 -2.078125 v 0.375000 0.359375 -2.043810 v 0.375000 0.312500 -2.031250 v 0.375000 0.265625 -2.043810 -v 0.375000 0.231310 -2.078125 v 0.375000 0.218750 -2.125000 v 0.375000 0.231310 -2.171875 v 0.375000 0.265625 -2.206190 +v -0.062500 0.343750 -4.500000 +v -0.250000 0.531250 -1.750000 +v -0.312500 0.156250 -1.812500 +v -0.250000 0.093750 -1.750000 +v -0.312500 0.656250 -1.875000 +v -0.250000 0.718750 -1.812500 +v -0.250000 0.781250 -2.000000 +v -0.312500 0.718750 -3.062500 +v -0.312500 0.718750 -2.000000 +v -0.250000 -0.031250 -2.937500 +v -0.312500 0.031250 -2.937500 +v -0.312500 -0.156250 -3.437500 +v -0.250000 -0.218750 -3.437500 +v -0.312500 -0.343750 -3.687500 +v -0.250000 -0.406250 -3.687500 +v -0.312500 -0.593750 -3.812500 +v -0.250000 -0.656250 -3.812500 +v -0.312500 -0.718750 -4.562500 +v -0.250000 -0.781250 -4.562500 +v -0.312500 -2.031250 -7.500000 +v -0.250000 -2.093750 -7.500000 +v -0.250000 -2.031250 -7.625000 +v -0.312500 -1.968750 -7.625000 +v 0.312500 0.156250 -1.812500 +v 0.250000 0.531250 -1.750000 +v 0.250000 0.093750 -1.750000 +v 0.312500 0.656250 -1.875000 +v 0.250000 0.718750 -1.812500 +v 0.250000 0.781250 -2.000000 +v 0.312500 0.718750 -3.062500 +v 0.312500 0.718750 -2.000000 +v 0.250000 -0.031250 -2.937500 +v 0.312500 -0.156250 -3.437500 +v 0.250000 -0.218750 -3.437500 +v 0.312500 -0.343750 -3.687500 +v 0.250000 -0.406250 -3.687500 +v 0.312500 -0.593750 -3.812500 +v 0.250000 -0.656250 -3.812500 +v 0.312500 -0.718750 -4.562500 +v 0.250000 -0.781250 -4.562500 +v 0.312500 -2.031250 -7.500000 +v 0.250000 -2.093750 -7.500000 +v 0.250000 -2.031250 -7.625000 +v -0.312500 -0.156250 -7.937500 +v 0.250000 -0.031250 -7.812500 +v 0.312500 -0.156250 -7.937500 +v 0.062500 0.468750 -4.500000 +v -0.250000 -0.031250 -7.812500 +v -0.062500 0.468750 -4.500000 +v 0.062500 0.343750 -4.375000 +v -0.062500 0.343750 -4.375000 +v 0.062500 0.281250 -4.187500 +v -0.062500 0.281250 -4.187500 +v 0.062500 0.281250 -4.125000 +v -0.062500 0.281250 -4.125000 +v 0.187500 0.218750 -4.500000 +v -0.187500 0.218750 -4.500000 +v -0.250000 0.781250 -3.062500 +v -0.187500 0.218750 -4.375000 +v -0.312500 0.031250 -4.187500 +v -0.312500 0.531250 -1.812500 +v -0.312500 0.031250 -4.125000 +v 0.187500 0.218750 -4.375000 +v 0.312500 0.031250 -4.187500 +v 0.250000 0.781250 -3.062500 +v 0.312500 0.031250 -4.125000 +v 0.312500 0.531250 -1.812500 +v 0.312500 0.031250 -2.937500 +v -0.312500 0.468750 -2.125000 +v -0.312500 0.447816 -2.203125 +v -0.312500 0.390625 -2.260316 +v -0.312500 0.312500 -2.281250 +v -0.312500 0.234375 -2.260316 +v -0.312500 0.177184 -2.203125 +v -0.312500 0.156250 -2.125000 +v -0.312500 0.177184 -2.046875 +v -0.312500 0.234375 -1.989684 +v -0.312500 0.312500 -1.968750 +v -0.312500 0.390625 -1.989684 +v -0.312500 0.447816 -2.046875 +v 0.312500 -1.968750 -7.625000 +v 0.250000 -1.968750 -7.625000 +v -0.250000 -1.968750 -7.625000 +v 0.312500 0.468750 -2.125000 +v 0.312500 0.447816 -2.203125 +v 0.312500 0.390625 -2.260316 +v 0.312500 0.312500 -2.281250 +v 0.312500 0.234375 -2.260316 +v 0.312500 0.177184 -2.203125 +v 0.312500 0.156250 -2.125000 +v 0.312500 0.177184 -2.046875 +v 0.312500 0.234375 -1.989684 +v 0.312500 0.312500 -1.968750 +v 0.312500 0.390625 -1.989684 +v 0.312500 0.447816 -2.046875 v -0.250000 -1.968750 -7.562500 v 0.250000 -1.968750 -7.562500 v -0.250000 -0.156250 -7.875000 v 0.250000 -0.156250 -7.875000 -v -0.250000 0.718750 -3.062500 -v 0.250000 0.718750 -3.062500 -v -0.062500 0.218750 -4.125000 -v 0.062500 0.218750 -4.125000 -v -0.062500 0.343750 -4.500000 -v 0.062500 0.343750 -4.500000 vt 0.004261 0.532949 vt 0.012784 0.532949 vt 0.012784 0.518187 @@ -4118,262 +4120,262 @@ vn -0.7397 -0.6692 0.0704 vn 0.6667 0.3333 0.6667 vn 0.6982 -0.6982 0.1581 s off -f 832/1283/275 830/1284/275 838/1285/275 -f 856/1286/276 858/1287/276 862/1288/276 -f 872/1289/277 875/1290/277 873/1291/277 -f 872/1289/278 871/1292/278 870/1293/278 -f 830/1284/275 829/1294/275 838/1285/275 -f 829/1294/275 828/1295/275 838/1285/275 -f 828/1295/275 839/1296/275 838/1285/275 -f 838/1285/275 837/1297/275 836/1298/275 -f 836/1298/275 835/1299/275 838/1285/275 -f 835/1299/275 834/1300/275 838/1285/275 -f 834/1300/275 833/1301/275 832/1283/275 -f 832/1283/275 831/1302/275 830/1284/275 -f 834/1300/275 832/1283/275 838/1285/275 -f 854/1303/276 855/1304/276 856/1286/276 -f 856/1286/276 857/1305/276 858/1287/276 -f 858/1287/276 859/1306/276 860/1307/276 -f 860/1307/276 861/1308/276 858/1287/276 -f 861/1308/276 862/1288/276 858/1287/276 -f 862/1288/276 863/1309/276 864/1310/276 -f 864/1310/276 865/1311/276 862/1288/276 -f 865/1311/276 854/1303/276 862/1288/276 -f 854/1303/276 856/1286/276 862/1288/276 -f 872/1289/277 874/1312/277 875/1290/277 -f 872/1289/278 873/1291/278 871/1292/278 +f 748/1283/277 749/1284/277 750/1285/277 +f 751/1286/278 752/1287/278 753/1288/278 +f 754/1289/279 755/1290/279 756/1291/279 +f 754/1289/280 757/1292/280 758/1293/280 +f 749/1284/277 759/1294/277 750/1285/277 +f 759/1294/277 760/1295/277 750/1285/277 +f 760/1295/277 761/1296/277 750/1285/277 +f 750/1285/277 762/1297/277 763/1298/277 +f 763/1298/277 764/1299/277 750/1285/277 +f 764/1299/277 765/1300/277 750/1285/277 +f 765/1300/277 766/1301/277 748/1283/277 +f 748/1283/277 767/1302/277 749/1284/277 +f 765/1300/277 748/1283/277 750/1285/277 +f 768/1303/278 769/1304/278 751/1286/278 +f 751/1286/278 770/1305/278 752/1287/278 +f 752/1287/278 771/1306/278 772/1307/278 +f 772/1307/278 773/1308/278 752/1287/278 +f 773/1308/278 753/1288/278 752/1287/278 +f 753/1288/278 774/1309/278 775/1310/278 +f 775/1310/278 776/1311/278 753/1288/278 +f 776/1311/278 768/1303/278 753/1288/278 +f 768/1303/278 751/1286/278 753/1288/278 +f 754/1289/279 777/1312/279 755/1290/279 +f 754/1289/280 756/1291/280 757/1292/280 s 1 -f 750/1313/279 770/1314/280 748/1315/280 -f 769/1316/281 750/1313/279 751/1317/282 -f 752/1318/283 769/1319/281 751/1317/282 -f 752/1318/283 766/1320/284 767/1321/285 -f 749/1322/286 770/1323/287 771/1324/288 -f 749/1322/286 772/1325/289 760/1326/290 -f 760/1326/290 773/1327/291 761/1328/292 -f 761/1328/292 774/1329/293 762/1330/294 -f 762/1331/294 775/1332/295 763/1333/296 -f 763/1333/296 776/1334/297 764/1335/298 -f 765/1336/299 776/1334/297 777/1337/299 -f 800/1338/300 780/1339/300 778/1340/300 -f 780/1339/301 799/1341/302 781/1342/303 -f 799/1343/302 782/1344/304 781/1342/303 -f 796/1345/305 782/1344/304 797/1346/306 -f 779/1347/307 800/1348/308 778/1340/309 -f 802/1349/310 779/1347/307 790/1350/311 -f 803/1351/312 790/1350/311 791/1352/313 -f 804/1353/314 791/1352/313 792/1354/315 -f 805/1355/316 792/1356/315 793/1357/317 -f 806/1358/318 793/1357/317 794/1359/319 -f 795/1360/320 806/1358/318 794/1359/319 -f 759/1361/321 788/1362/322 789/1363/321 -f 785/1364/323 758/1365/322 755/1366/323 -f 784/1367/324 755/1366/325 754/1368/324 -f 787/1369/326 754/1368/324 757/1370/326 -f 786/1371/327 757/1370/326 756/1372/328 -f 785/1373/329 808/1374/330 788/1375/331 -f 755/1376/332 758/1377/333 809/1378/334 -f 756/1379/328 766/1380/284 753/1381/335 -f 753/1381/335 786/1371/327 756/1372/328 -f 757/1370/336 754/1368/337 811/1382/338 -f 812/1383/339 756/1372/328 757/1370/336 -f 769/1384/275 767/1385/275 768/1386/275 -f 770/1387/275 768/1386/275 771/1388/275 -f 767/1385/275 766/1389/275 768/1386/275 -f 768/1386/275 766/1389/275 771/1388/275 -f 772/1390/275 771/1388/275 766/1389/275 -f 766/1389/275 810/1391/275 772/1390/275 -f 772/1390/275 810/1391/275 773/1392/275 -f 774/1393/275 773/1392/275 810/1391/275 -f 774/1393/275 812/1394/340 775/1395/275 -f 812/1394/340 759/1396/341 775/1395/275 -f 776/1397/275 759/1396/341 777/1398/275 -f 811/1399/342 809/1378/334 812/1394/340 -f 809/1378/334 759/1396/341 812/1394/340 -f 759/1396/341 809/1378/334 758/1377/333 -f 812/1383/339 757/1370/336 811/1382/338 -f 754/1368/337 755/1366/343 811/1382/338 -f 809/1378/334 811/1399/342 755/1376/332 -f 808/1374/330 785/1373/329 813/1400/344 -f 784/1367/345 813/1401/346 785/1364/347 -f 787/1369/348 813/1401/346 784/1367/345 -f 786/1371/327 815/1402/349 787/1369/348 -f 787/1369/348 815/1402/349 813/1401/346 -f 783/1403/350 796/1404/305 786/1405/327 -f 814/1406/351 786/1405/327 796/1404/305 -f 810/1407/352 766/1380/284 756/1379/328 -f 799/1408/276 798/1409/276 797/1410/276 -f 800/1411/276 801/1412/276 798/1409/276 -f 796/1413/276 797/1410/276 798/1409/276 -f 798/1409/276 801/1412/276 796/1413/276 -f 801/1412/276 802/1414/276 796/1413/276 -f 796/1413/276 802/1414/276 814/1415/276 -f 802/1414/276 803/1416/276 814/1415/276 -f 803/1416/276 804/1417/276 814/1415/276 -f 804/1417/276 815/1418/353 814/1415/276 -f 813/1400/344 815/1418/353 808/1374/330 -f 808/1374/330 815/1418/353 789/1419/354 -f 815/1418/353 805/1420/276 789/1419/354 -f 806/1421/276 789/1419/354 805/1420/276 -f 789/1419/354 788/1375/331 808/1374/330 -f 830/1422/355 819/1423/356 818/1424/355 -f 817/1425/357 830/1422/355 818/1424/355 -f 828/1426/358 817/1425/357 816/1427/358 -f 839/1428/359 816/1427/358 827/1429/359 -f 838/1430/360 827/1429/359 826/1431/360 -f 837/1432/361 826/1431/360 825/1433/361 -f 824/1434/362 837/1435/361 825/1436/361 -f 823/1437/363 836/1438/362 824/1434/362 -f 822/1439/280 835/1440/363 823/1437/363 -f 821/1441/364 834/1442/280 822/1439/280 -f 831/1443/356 820/1444/365 819/1423/356 -f 820/1444/365 833/1445/364 821/1441/364 -f 807/1446/366 795/1447/367 841/1448/366 -f 777/1449/366 840/1450/366 765/1451/367 -f 840/1450/366 777/1449/366 759/1361/321 -f 845/1452/368 856/1453/369 844/1454/369 -f 843/1455/370 856/1453/369 855/1456/370 -f 843/1455/370 854/1457/371 842/1458/371 -f 842/1458/371 865/1459/372 853/1460/372 -f 853/1460/372 864/1461/373 852/1462/373 -f 852/1462/373 863/1463/374 851/1464/374 -f 850/1465/375 863/1466/374 862/1467/375 -f 849/1468/376 862/1467/375 861/1469/376 -f 848/1470/300 861/1469/376 860/1471/300 -f 847/1472/377 860/1471/300 859/1473/377 -f 846/1474/378 857/1475/368 845/1452/368 -f 846/1474/378 859/1473/377 858/1476/378 -f 840/1477/276 866/1478/276 765/1479/276 -f 841/1480/275 795/1481/275 867/1482/275 -f 867/1483/379 840/1484/380 841/1485/380 -f 867/1483/379 868/1486/381 866/1487/379 -f 870/1293/382 783/1488/382 753/1489/382 -f 875/1290/383 868/1486/381 869/1490/381 -f 781/1491/275 782/1492/275 780/1493/275 -f 782/1492/275 871/1494/384 780/1493/275 -f 780/1493/275 779/1495/275 778/1496/275 -f 791/1497/385 790/1498/386 873/1499/387 -f 792/1500/275 791/1497/385 793/1501/388 -f 873/1499/387 793/1501/388 791/1497/385 -f 790/1498/386 779/1495/275 871/1494/384 -f 871/1494/384 873/1499/387 790/1498/386 -f 875/1502/389 793/1501/388 873/1499/387 -f 875/1502/389 869/1503/390 793/1501/388 -f 795/1481/275 794/1504/275 867/1482/275 -f 793/1501/388 867/1482/275 794/1504/275 -f 751/1505/276 750/1506/276 752/1507/276 -f 752/1507/276 870/1508/391 753/1509/276 -f 749/1510/276 750/1506/276 748/1511/276 -f 760/1512/392 870/1508/391 749/1510/276 -f 870/1508/391 760/1512/392 872/1513/393 -f 760/1512/392 761/1514/394 872/1513/393 -f 762/1515/276 763/1516/395 761/1514/394 -f 872/1513/393 761/1514/394 763/1516/395 -f 874/1517/396 872/1513/393 763/1516/395 -f 874/1517/396 763/1516/395 868/1518/397 -f 765/1479/276 866/1478/276 764/1519/276 -f 866/1478/276 763/1516/395 764/1519/276 -f 750/1313/279 768/1520/398 770/1314/280 -f 769/1316/281 768/1521/398 750/1313/279 -f 752/1318/283 767/1522/285 769/1319/281 -f 752/1318/283 753/1523/335 766/1320/284 -f 749/1322/286 748/1315/399 770/1323/287 -f 749/1322/286 771/1324/288 772/1325/289 -f 760/1326/290 772/1325/289 773/1327/291 -f 761/1328/292 773/1327/291 774/1329/293 -f 762/1331/294 774/1524/293 775/1332/295 -f 763/1333/296 775/1332/295 776/1334/297 -f 765/1336/299 764/1335/298 776/1334/297 -f 800/1338/300 798/1525/300 780/1339/300 -f 780/1339/301 798/1526/400 799/1341/302 -f 799/1343/302 797/1527/306 782/1344/304 -f 796/1345/305 783/1528/350 782/1344/304 -f 779/1347/307 801/1529/401 800/1348/308 -f 802/1349/310 801/1529/401 779/1347/307 -f 803/1351/312 802/1349/310 790/1350/311 -f 804/1353/314 803/1351/312 791/1352/313 -f 805/1355/316 804/1530/314 792/1356/315 -f 806/1358/318 805/1355/316 793/1357/317 -f 795/1360/320 807/1531/320 806/1358/318 -f 759/1361/321 758/1365/322 788/1362/322 -f 785/1364/323 788/1362/322 758/1365/322 -f 784/1367/324 785/1364/325 755/1366/325 -f 787/1369/326 784/1367/324 754/1368/324 -f 786/1371/327 787/1369/326 757/1370/326 -f 753/1381/335 783/1403/350 786/1371/327 -f 812/1383/339 810/1532/352 756/1372/328 -f 774/1393/275 810/1391/275 812/1394/340 -f 776/1397/275 775/1395/275 759/1396/341 -f 786/1371/327 814/1533/351 815/1402/349 -f 804/1417/276 805/1420/276 815/1418/353 -f 806/1421/276 807/1534/276 789/1419/354 -f 830/1422/355 831/1443/356 819/1423/356 -f 817/1425/357 829/1535/357 830/1422/355 -f 828/1426/358 829/1535/357 817/1425/357 -f 839/1428/359 828/1426/358 816/1427/358 -f 838/1430/360 839/1428/359 827/1429/359 -f 837/1432/361 838/1430/360 826/1431/360 -f 824/1434/362 836/1438/362 837/1435/361 -f 823/1437/363 835/1440/363 836/1438/362 -f 822/1439/280 834/1442/280 835/1440/363 -f 821/1441/364 833/1445/364 834/1442/280 -f 831/1443/356 832/1536/365 820/1444/365 -f 820/1444/365 832/1536/365 833/1445/364 -f 759/1361/321 789/1363/321 841/1448/366 -f 789/1363/321 807/1446/366 841/1448/366 -f 841/1448/366 840/1450/366 759/1361/321 -f 845/1452/368 857/1475/368 856/1453/369 -f 843/1455/370 844/1454/369 856/1453/369 -f 843/1455/370 855/1456/370 854/1457/371 -f 842/1458/371 854/1457/371 865/1459/372 -f 853/1460/372 865/1459/372 864/1461/373 -f 852/1462/373 864/1461/373 863/1463/374 -f 850/1465/375 851/1537/374 863/1466/374 -f 849/1468/376 850/1465/375 862/1467/375 -f 848/1470/300 849/1468/376 861/1469/376 -f 847/1472/377 848/1470/300 860/1471/300 -f 846/1474/378 858/1476/378 857/1475/368 -f 846/1474/378 847/1472/377 859/1473/377 -f 867/1483/379 866/1487/379 840/1484/380 -f 867/1483/379 869/1490/381 868/1486/381 -f 870/1293/382 871/1292/382 783/1488/382 -f 875/1290/383 874/1312/383 868/1486/381 -f 782/1492/275 783/1538/275 871/1494/384 -f 780/1493/275 871/1494/384 779/1495/275 -f 793/1501/388 869/1503/390 867/1482/275 -f 752/1507/276 750/1506/276 870/1508/391 -f 749/1510/276 870/1508/391 750/1506/276 -f 866/1478/276 868/1518/397 763/1516/395 +f 778/1313/281 779/1314/282 780/1315/282 +f 781/1316/283 778/1313/281 782/1317/284 +f 783/1318/285 781/1319/283 782/1317/284 +f 783/1318/285 784/1320/286 785/1321/287 +f 786/1322/288 779/1323/289 787/1324/290 +f 786/1322/288 788/1325/291 789/1326/292 +f 789/1326/292 790/1327/293 791/1328/294 +f 791/1328/294 792/1329/295 793/1330/296 +f 793/1331/296 794/1332/297 795/1333/298 +f 795/1333/298 796/1334/299 797/1335/300 +f 798/1336/301 796/1334/299 799/1337/301 +f 800/1338/302 801/1339/302 802/1340/302 +f 801/1339/303 803/1341/304 804/1342/305 +f 803/1343/304 805/1344/306 804/1342/305 +f 806/1345/307 805/1344/306 807/1346/308 +f 808/1347/309 800/1348/310 802/1340/311 +f 809/1349/312 808/1347/309 810/1350/313 +f 811/1351/314 810/1350/313 812/1352/315 +f 813/1353/316 812/1352/315 814/1354/317 +f 815/1355/318 814/1356/317 816/1357/319 +f 817/1358/320 816/1357/319 818/1359/321 +f 819/1360/322 817/1358/320 818/1359/321 +f 820/1361/323 821/1362/324 822/1363/323 +f 823/1364/325 824/1365/324 825/1366/325 +f 826/1367/326 825/1366/327 827/1368/326 +f 828/1369/328 827/1368/326 829/1370/328 +f 830/1371/329 829/1370/328 831/1372/330 +f 823/1373/331 832/1374/332 821/1375/333 +f 825/1376/334 824/1377/335 833/1378/336 +f 831/1379/330 784/1380/286 834/1381/337 +f 834/1381/337 830/1371/329 831/1372/330 +f 829/1370/338 827/1368/339 835/1382/340 +f 836/1383/341 831/1372/330 829/1370/338 +f 781/1384/277 785/1385/277 837/1386/277 +f 779/1387/277 837/1386/277 787/1388/277 +f 785/1385/277 784/1389/277 837/1386/277 +f 837/1386/277 784/1389/277 787/1388/277 +f 788/1390/277 787/1388/277 784/1389/277 +f 784/1389/277 838/1391/277 788/1390/277 +f 788/1390/277 838/1391/277 790/1392/277 +f 792/1393/277 790/1392/277 838/1391/277 +f 792/1393/277 836/1394/342 794/1395/277 +f 836/1394/342 820/1396/343 794/1395/277 +f 796/1397/277 820/1396/343 799/1398/277 +f 835/1399/344 833/1378/336 836/1394/342 +f 833/1378/336 820/1396/343 836/1394/342 +f 820/1396/343 833/1378/336 824/1377/335 +f 836/1383/341 829/1370/338 835/1382/340 +f 827/1368/339 825/1366/345 835/1382/340 +f 833/1378/336 835/1399/344 825/1376/334 +f 832/1374/332 823/1373/331 839/1400/346 +f 826/1367/347 839/1401/348 823/1364/349 +f 828/1369/350 839/1401/348 826/1367/347 +f 830/1371/329 840/1402/351 828/1369/350 +f 828/1369/350 840/1402/351 839/1401/348 +f 841/1403/352 806/1404/307 830/1405/329 +f 842/1406/353 830/1405/329 806/1404/307 +f 838/1407/354 784/1380/286 831/1379/330 +f 803/1408/278 843/1409/278 807/1410/278 +f 800/1411/278 844/1412/278 843/1409/278 +f 806/1413/278 807/1410/278 843/1409/278 +f 843/1409/278 844/1412/278 806/1413/278 +f 844/1412/278 809/1414/278 806/1413/278 +f 806/1413/278 809/1414/278 842/1415/278 +f 809/1414/278 811/1416/278 842/1415/278 +f 811/1416/278 813/1417/278 842/1415/278 +f 813/1417/278 840/1418/355 842/1415/278 +f 839/1400/346 840/1418/355 832/1374/332 +f 832/1374/332 840/1418/355 822/1419/356 +f 840/1418/355 815/1420/278 822/1419/356 +f 817/1421/278 822/1419/356 815/1420/278 +f 822/1419/356 821/1375/333 832/1374/332 +f 749/1422/357 845/1423/358 846/1424/357 +f 847/1425/359 749/1422/357 846/1424/357 +f 760/1426/360 847/1425/359 848/1427/360 +f 761/1428/361 848/1427/360 849/1429/361 +f 750/1430/362 849/1429/361 850/1431/362 +f 762/1432/363 850/1431/362 851/1433/363 +f 852/1434/364 762/1435/363 851/1436/363 +f 853/1437/365 763/1438/364 852/1434/364 +f 854/1439/282 764/1440/365 853/1437/365 +f 855/1441/366 765/1442/282 854/1439/282 +f 767/1443/358 856/1444/367 845/1423/358 +f 856/1444/367 766/1445/366 855/1441/366 +f 857/1446/368 819/1447/369 858/1448/368 +f 799/1449/368 859/1450/368 798/1451/369 +f 859/1450/368 799/1449/368 820/1361/323 +f 860/1452/370 751/1453/371 861/1454/371 +f 862/1455/372 751/1453/371 769/1456/372 +f 862/1455/372 768/1457/373 863/1458/373 +f 863/1458/373 776/1459/374 864/1460/374 +f 864/1460/374 775/1461/375 865/1462/375 +f 865/1462/375 774/1463/376 866/1464/376 +f 867/1465/377 774/1466/376 753/1467/377 +f 868/1468/378 753/1467/377 773/1469/378 +f 869/1470/302 773/1469/378 772/1471/302 +f 870/1472/379 772/1471/302 771/1473/379 +f 871/1474/380 770/1475/370 860/1452/370 +f 871/1474/380 771/1473/379 752/1476/380 +f 859/1477/278 872/1478/278 798/1479/278 +f 858/1480/277 819/1481/277 873/1482/277 +f 873/1483/381 859/1484/382 858/1485/382 +f 873/1483/381 874/1486/383 872/1487/381 +f 758/1293/384 841/1488/384 834/1489/384 +f 755/1290/385 874/1486/383 875/1490/383 +f 804/1491/277 805/1492/277 801/1493/277 +f 805/1492/277 757/1494/386 801/1493/277 +f 801/1493/277 808/1495/277 802/1496/277 +f 812/1497/387 810/1498/388 756/1499/389 +f 814/1500/277 812/1497/387 816/1501/390 +f 756/1499/389 816/1501/390 812/1497/387 +f 810/1498/388 808/1495/277 757/1494/386 +f 757/1494/386 756/1499/389 810/1498/388 +f 755/1502/391 816/1501/390 756/1499/389 +f 755/1502/391 875/1503/392 816/1501/390 +f 819/1481/277 818/1504/277 873/1482/277 +f 816/1501/390 873/1482/277 818/1504/277 +f 782/1505/278 778/1506/278 783/1507/278 +f 783/1507/278 758/1508/393 834/1509/278 +f 786/1510/278 778/1506/278 780/1511/278 +f 789/1512/394 758/1508/393 786/1510/278 +f 758/1508/393 789/1512/394 754/1513/395 +f 789/1512/394 791/1514/396 754/1513/395 +f 793/1515/278 795/1516/397 791/1514/396 +f 754/1513/395 791/1514/396 795/1516/397 +f 777/1517/398 754/1513/395 795/1516/397 +f 777/1517/398 795/1516/397 874/1518/399 +f 798/1479/278 872/1478/278 797/1519/278 +f 872/1478/278 795/1516/397 797/1519/278 +f 778/1313/281 837/1520/400 779/1314/282 +f 781/1316/283 837/1521/400 778/1313/281 +f 783/1318/285 785/1522/287 781/1319/283 +f 783/1318/285 834/1523/337 784/1320/286 +f 786/1322/288 780/1315/401 779/1323/289 +f 786/1322/288 787/1324/290 788/1325/291 +f 789/1326/292 788/1325/291 790/1327/293 +f 791/1328/294 790/1327/293 792/1329/295 +f 793/1331/296 792/1524/295 794/1332/297 +f 795/1333/298 794/1332/297 796/1334/299 +f 798/1336/301 797/1335/300 796/1334/299 +f 800/1338/302 843/1525/302 801/1339/302 +f 801/1339/303 843/1526/402 803/1341/304 +f 803/1343/304 807/1527/308 805/1344/306 +f 806/1345/307 841/1528/352 805/1344/306 +f 808/1347/309 844/1529/403 800/1348/310 +f 809/1349/312 844/1529/403 808/1347/309 +f 811/1351/314 809/1349/312 810/1350/313 +f 813/1353/316 811/1351/314 812/1352/315 +f 815/1355/318 813/1530/316 814/1356/317 +f 817/1358/320 815/1355/318 816/1357/319 +f 819/1360/322 857/1531/322 817/1358/320 +f 820/1361/323 824/1365/324 821/1362/324 +f 823/1364/325 821/1362/324 824/1365/324 +f 826/1367/326 823/1364/327 825/1366/327 +f 828/1369/328 826/1367/326 827/1368/326 +f 830/1371/329 828/1369/328 829/1370/328 +f 834/1381/337 841/1403/352 830/1371/329 +f 836/1383/341 838/1532/354 831/1372/330 +f 792/1393/277 838/1391/277 836/1394/342 +f 796/1397/277 794/1395/277 820/1396/343 +f 830/1371/329 842/1533/353 840/1402/351 +f 813/1417/278 815/1420/278 840/1418/355 +f 817/1421/278 857/1534/278 822/1419/356 +f 749/1422/357 767/1443/358 845/1423/358 +f 847/1425/359 759/1535/359 749/1422/357 +f 760/1426/360 759/1535/359 847/1425/359 +f 761/1428/361 760/1426/360 848/1427/360 +f 750/1430/362 761/1428/361 849/1429/361 +f 762/1432/363 750/1430/362 850/1431/362 +f 852/1434/364 763/1438/364 762/1435/363 +f 853/1437/365 764/1440/365 763/1438/364 +f 854/1439/282 765/1442/282 764/1440/365 +f 855/1441/366 766/1445/366 765/1442/282 +f 767/1443/358 748/1536/367 856/1444/367 +f 856/1444/367 748/1536/367 766/1445/366 +f 820/1361/323 822/1363/323 858/1448/368 +f 822/1363/323 857/1446/368 858/1448/368 +f 858/1448/368 859/1450/368 820/1361/323 +f 860/1452/370 770/1475/370 751/1453/371 +f 862/1455/372 861/1454/371 751/1453/371 +f 862/1455/372 769/1456/372 768/1457/373 +f 863/1458/373 768/1457/373 776/1459/374 +f 864/1460/374 776/1459/374 775/1461/375 +f 865/1462/375 775/1461/375 774/1463/376 +f 867/1465/377 866/1537/376 774/1466/376 +f 868/1468/378 867/1465/377 753/1467/377 +f 869/1470/302 868/1468/378 773/1469/378 +f 870/1472/379 869/1470/302 772/1471/302 +f 871/1474/380 752/1476/380 770/1475/370 +f 871/1474/380 870/1472/379 771/1473/379 +f 873/1483/381 872/1487/381 859/1484/382 +f 873/1483/381 875/1490/383 874/1486/383 +f 758/1293/384 757/1292/384 841/1488/384 +f 755/1290/385 777/1312/385 874/1486/383 +f 805/1492/277 841/1538/277 757/1494/386 +f 801/1493/277 757/1494/386 808/1495/277 +f 816/1501/390 875/1503/392 873/1482/277 +f 783/1507/278 778/1506/278 758/1508/393 +f 786/1510/278 758/1508/393 778/1506/278 +f 872/1478/278 874/1518/399 795/1516/397 o Bayonet -v 0.000000 0.875000 7.812500 -v -0.046875 0.862440 7.812500 -v -0.081190 0.828125 7.812500 -v -0.093750 0.781250 7.812500 -v -0.081190 0.734375 7.812500 -v -0.046875 0.700060 7.812500 -v 0.000000 0.687500 7.812500 -v 0.046875 0.700060 7.812500 -v 0.081190 0.734375 7.812500 -v 0.093750 0.781250 7.812500 -v 0.081190 0.828125 7.812500 -v 0.046875 0.862440 7.812500 -v 0.000000 0.843750 8.062500 +v -0.062500 0.781248 12.000000 v -0.044194 0.825444 8.062500 v -0.062500 0.781250 8.062500 -v -0.044194 0.737056 8.062500 -v 0.000000 0.718750 8.062500 -v 0.044194 0.737056 8.062500 +v 0.044194 0.825442 12.000000 v 0.062500 0.781250 8.062500 v 0.044194 0.825444 8.062500 -v 0.000000 0.843750 12.000000 -v -0.044194 0.825444 12.000000 -v -0.062500 0.781250 12.000000 -v -0.044194 0.737056 12.000000 -v 0.000000 0.718750 12.000000 -v 0.044194 0.737056 12.000000 -v 0.062500 0.781250 12.000000 -v 0.044194 0.825444 12.000000 -v 0.000000 0.750000 12.750000 -v 0.000000 0.812500 12.750000 +v 0.044194 0.737054 12.000000 +v 0.000000 0.718750 8.062500 +v 0.044194 0.737056 8.062500 +v -0.044194 0.737054 12.000000 +v -0.044194 0.737056 8.062500 +v -0.044194 0.825442 12.000000 +v 0.000000 0.843750 8.062500 +v 0.000000 0.843748 12.000000 +v 0.062500 0.781248 12.000000 +v 0.000000 0.718748 12.000000 +v 0.000000 0.812498 12.750000 +v 0.000000 0.749998 12.750000 +v 0.081190 0.734375 7.812500 +v 0.046875 0.700060 7.812500 +v 0.000000 0.687500 7.812500 +v 0.081190 0.828125 7.812500 +v 0.093750 0.781250 7.812500 +v 0.046875 0.862440 7.812500 +v -0.046875 0.700060 7.812500 +v -0.081190 0.734375 7.812500 +v -0.093750 0.781250 7.812500 +v -0.081190 0.828125 7.812500 +v -0.046875 0.862440 7.812500 +v 0.000000 0.875000 7.812500 vt 0.590909 0.659091 vt 0.948864 0.664773 vt 0.948864 0.659091 @@ -4432,13 +4434,13 @@ vn -0.9995 -0.0000 0.0330 vn -0.7071 0.7071 0.0000 vn -1.0000 0.0000 0.0000 vn 0.7093 0.7044 0.0268 -vn 1.0000 -0.0000 0.0000 +vn 1.0000 -0.0000 -0.0000 vn 0.7071 0.7071 0.0000 vn 0.7093 -0.7044 0.0268 -vn -0.0000 -1.0000 0.0000 -vn 0.7071 -0.7071 0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 0.7071 -0.7071 -0.0000 vn -0.7093 -0.7044 0.0268 -vn -0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 -0.0000 vn -0.7093 0.7044 0.0268 vn 0.0000 1.0000 0.0000 vn -0.0000 0.9998 0.0207 @@ -4458,302 +4460,302 @@ vn 0.8610 0.4941 0.1209 vn 0.9923 0.0000 0.1240 vn 0.4941 0.8610 0.1209 vn 0.6993 0.6993 0.1482 -vn -0.0000 0.9891 0.1474 +vn 0.0000 0.9891 0.1474 vn -0.4941 -0.8610 0.1209 vn -0.6993 -0.6993 0.1482 vn -0.8610 -0.4941 0.1209 -vn -0.9891 -0.0000 0.1474 -vn -0.9923 -0.0000 0.1240 +vn -0.9891 0.0000 0.1474 +vn -0.9923 0.0000 0.1240 vn -0.8610 0.4941 0.1209 vn -0.6993 0.6993 0.1482 vn -0.4941 0.8610 0.1209 -vn -0.0000 0.9923 0.1240 +vn 0.0000 0.9923 0.1240 s 1 -f 898/1539/402 889/1540/403 890/1541/404 -f 903/1542/405 894/1543/406 895/1544/407 -f 901/1545/408 892/1546/409 893/1547/410 -f 899/1548/411 890/1541/404 891/1549/412 -f 897/1550/413 888/1551/414 889/1552/403 -f 896/1553/415 895/1554/407 888/1551/414 -f 902/1555/416 893/1556/410 894/1543/406 -f 900/1557/417 891/1558/412 892/1559/409 -f 903/1560/405 896/1553/415 905/1561/418 -f 902/1555/416 903/1542/405 905/1562/418 -f 905/1563/418 904/1564/419 902/1565/416 -f 902/1555/416 904/1566/419 901/1567/408 -f 900/1568/417 901/1545/408 904/1569/419 -f 899/1570/411 900/1557/417 904/1571/420 -f 898/1539/402 899/1548/411 904/1572/420 -f 904/1573/420 905/1574/421 898/1575/402 -f 896/1553/415 897/1550/413 905/1561/421 -f 898/1539/402 905/1576/421 897/1577/413 -f 884/1578/422 894/1543/423 893/1556/424 -f 883/1579/425 884/1578/422 893/1547/424 -f 883/1579/425 892/1546/426 882/1580/427 -f 886/1581/428 894/1543/423 885/1582/429 -f 886/1581/428 887/1583/430 895/1554/431 -f 887/1583/430 888/1551/432 895/1554/431 -f 881/1584/433 892/1559/426 891/1558/434 -f 880/1585/435 881/1584/433 891/1558/434 -f 880/1586/435 890/1541/436 879/1587/437 -f 878/1588/438 890/1541/436 889/1540/439 -f 877/1589/440 878/1590/438 889/1552/439 -f 877/1589/440 888/1551/432 876/1591/441 -f 898/1539/402 897/1577/413 889/1540/403 -f 903/1542/405 902/1555/416 894/1543/406 -f 901/1545/408 900/1568/417 892/1546/409 -f 899/1548/411 898/1539/402 890/1541/404 -f 897/1550/413 896/1553/415 888/1551/414 -f 896/1553/415 903/1560/405 895/1554/407 -f 902/1555/416 901/1567/408 893/1556/410 -f 900/1557/417 899/1570/411 891/1558/412 -f 884/1578/422 885/1582/429 894/1543/423 -f 883/1579/425 893/1547/424 892/1546/426 -f 886/1581/428 895/1544/431 894/1543/423 -f 887/1583/430 876/1591/441 888/1551/432 -f 881/1584/433 882/1592/427 892/1559/426 -f 880/1586/435 891/1549/434 890/1541/436 -f 878/1588/438 879/1587/437 890/1541/436 -f 877/1589/440 889/1552/439 888/1551/432 +f 876/1539/404 877/1540/405 878/1541/406 +f 879/1542/407 880/1543/408 881/1544/409 +f 882/1545/410 883/1546/411 884/1547/412 +f 885/1548/413 878/1541/406 886/1549/414 +f 887/1550/415 888/1551/416 877/1552/405 +f 889/1553/417 881/1554/409 888/1551/416 +f 890/1555/418 884/1556/412 880/1543/408 +f 891/1557/419 886/1558/414 883/1559/411 +f 879/1560/407 889/1553/417 892/1561/420 +f 890/1555/418 879/1542/407 892/1562/420 +f 892/1563/420 893/1564/421 890/1565/418 +f 890/1555/418 893/1566/421 882/1567/410 +f 891/1568/419 882/1545/410 893/1569/421 +f 885/1570/413 891/1557/419 893/1571/422 +f 876/1539/404 885/1548/413 893/1572/422 +f 893/1573/422 892/1574/423 876/1575/404 +f 889/1553/417 887/1550/415 892/1561/423 +f 876/1539/404 892/1576/423 887/1577/415 +f 894/1578/424 880/1543/425 884/1556/426 +f 895/1579/427 894/1578/424 884/1547/426 +f 895/1579/427 883/1546/428 896/1580/429 +f 897/1581/430 880/1543/425 898/1582/431 +f 897/1581/430 899/1583/432 881/1554/433 +f 899/1583/432 888/1551/434 881/1554/433 +f 900/1584/435 883/1559/428 886/1558/436 +f 901/1585/437 900/1584/435 886/1558/436 +f 901/1586/437 878/1541/438 902/1587/439 +f 903/1588/440 878/1541/438 877/1540/441 +f 904/1589/442 903/1590/440 877/1552/441 +f 904/1589/442 888/1551/434 905/1591/443 +f 876/1539/404 887/1577/415 877/1540/405 +f 879/1542/407 890/1555/418 880/1543/408 +f 882/1545/410 891/1568/419 883/1546/411 +f 885/1548/413 876/1539/404 878/1541/406 +f 887/1550/415 889/1553/417 888/1551/416 +f 889/1553/417 879/1560/407 881/1554/409 +f 890/1555/418 882/1567/410 884/1556/412 +f 891/1557/419 885/1570/413 886/1558/414 +f 894/1578/424 898/1582/431 880/1543/425 +f 895/1579/427 884/1547/426 883/1546/428 +f 897/1581/430 881/1544/433 880/1543/425 +f 899/1583/432 905/1591/443 888/1551/434 +f 900/1584/435 896/1592/429 883/1559/428 +f 901/1586/437 886/1549/436 878/1541/438 +f 903/1588/440 902/1587/439 878/1541/438 +f 904/1589/442 877/1552/441 888/1551/434 o Scope -v 0.187500 1.156250 -2.937500 -v 0.187500 1.031250 -2.937500 -v 0.312500 1.156250 -2.937500 -v 0.312500 0.906250 -2.937500 v 0.312500 1.156250 -1.812500 -v 0.312500 0.906250 -1.812500 v 0.187500 1.156250 -1.812500 v 0.187500 1.031250 -1.812500 +v 0.312500 0.906250 -1.812500 v 0.250000 0.906250 -2.937500 -v 0.250000 0.906250 -1.812500 -v 0.312500 1.218750 -2.812500 -v 0.375000 1.593750 -2.812500 -v 0.312500 1.218750 -1.937500 -v 0.375000 1.593750 -1.937500 -v 0.562500 1.843750 -2.812500 -v 0.562500 1.843750 -1.937500 -v 0.562500 2.218750 -1.687500 -v 0.437500 2.185256 -1.687500 -v 0.345994 2.093750 -1.687500 -v 0.312500 1.968750 -1.687500 -v 0.345994 1.843750 -1.687500 -v 0.437500 1.752244 -1.687500 -v 0.562500 1.718750 -1.687500 -v 0.687500 1.752244 -1.687500 -v 0.779006 1.843750 -1.687500 -v 0.812500 1.968750 -1.687500 -v 0.779006 2.093750 -1.687500 -v 0.687500 2.185256 -1.687500 +v 0.312500 0.906250 -2.937500 +v 0.187500 1.031250 -2.937500 +v 0.312500 1.156250 -2.937500 +v 0.400120 1.875000 -1.750000 +v 0.724880 1.875000 -1.750000 v 0.562500 2.156250 -1.750000 +v 0.779006 2.093750 -3.062500 +v 0.562500 1.718750 -3.062500 +v 0.345994 2.093750 -3.062500 +v 0.750000 1.643991 -4.750000 +v 0.375000 1.643991 -4.750000 +v 0.187500 1.968750 -4.750000 +v 0.562500 1.593750 -3.500000 +v 0.887260 1.781250 -3.500000 +v 0.562500 2.343750 -3.500000 +v 0.187500 1.593750 -2.000000 +v 0.187500 1.218750 -1.937500 +v 0.187500 1.593750 -1.937500 +v 0.187500 1.218750 -2.750000 +v 0.250000 1.593750 -2.750000 +v 0.187500 1.593750 -2.750000 +v 0.250000 1.593750 -2.000000 +v 0.187500 1.218750 -2.000000 +v 0.187500 1.218750 -2.812500 +v 0.187500 1.156250 -2.937500 +v 0.375000 1.843750 -1.937500 +v 0.375000 1.593750 -1.937500 +v 0.562500 1.843750 -1.937500 +v 0.375000 1.593750 -2.812500 +v 0.375000 1.843750 -2.812500 +v 0.562500 1.843750 -2.812500 +v 0.375000 1.843750 -2.000000 +v 0.375000 1.843750 -2.750000 +v 0.312500 1.093750 -2.812500 +v 0.312500 1.218750 -2.812500 +v 0.375000 1.218750 -2.812500 +v 0.375000 1.218750 -1.937500 +v 0.312500 1.218750 -1.937500 +v 0.312500 1.093750 -1.937500 +v 0.375000 1.218750 -2.000000 +v 0.312500 1.593750 -2.000000 +v 0.375000 1.593750 -2.000000 +v 0.375000 1.593750 -2.750000 +v 0.500000 1.843750 -2.750000 +v 0.312500 1.593750 -2.750000 +v 0.500000 1.843750 -2.000000 +v 0.562500 1.843750 -2.000000 +v 0.437500 1.843750 -2.000000 +v 0.437500 1.843750 -2.750000 +v 0.250000 1.218750 -2.562500 +v 0.312500 1.218750 -2.187500 +v 0.312500 1.218750 -2.562500 +v 0.312500 1.093750 -2.750000 +v 0.312500 1.093750 -2.000000 +v 0.375000 1.218750 -2.750000 +v 0.427184 2.343750 -2.421875 +v 0.697816 2.343750 -2.421875 +v 0.562500 2.343750 -2.656250 +v 0.250000 1.593750 -2.562500 +v 0.250000 1.593750 -2.187500 +v 0.250000 1.218750 -2.187500 +v 0.312500 1.593750 -2.562500 +v 0.312500 1.593750 -2.187500 +v 0.250000 0.906250 -1.812500 v 0.468750 2.131130 -1.750000 v 0.400120 2.062500 -1.750000 v 0.375000 1.968750 -1.750000 -v 0.400120 1.875000 -1.750000 v 0.468750 1.806370 -1.750000 v 0.562500 1.781250 -1.750000 v 0.656250 1.806370 -1.750000 -v 0.724880 1.875000 -1.750000 v 0.750000 1.968750 -1.750000 v 0.724880 2.062500 -1.750000 v 0.656250 2.131130 -1.750000 -v 0.562500 2.218750 -3.062500 v 0.437500 2.185256 -3.062500 -v 0.345994 2.093750 -3.062500 -v 0.312500 1.968750 -3.062500 -v 0.345994 1.843750 -3.062500 -v 0.437500 1.752244 -3.062500 -v 0.562500 1.718750 -3.062500 -v 0.687500 1.752244 -3.062500 -v 0.779006 1.843750 -3.062500 -v 0.812500 1.968750 -3.062500 -v 0.779006 2.093750 -3.062500 +v 0.562500 2.218750 -3.062500 v 0.687500 2.185256 -3.062500 -v 0.562500 2.156250 -3.062500 -v 0.468750 2.131130 -3.062500 -v 0.400120 2.062500 -3.062500 -v 0.375000 1.968750 -3.062500 -v 0.400120 1.875000 -3.062500 -v 0.468750 1.806370 -3.062500 -v 0.562500 1.781250 -3.062500 -v 0.656250 1.806370 -3.062500 -v 0.724880 1.875000 -3.062500 -v 0.750000 1.968750 -3.062500 -v 0.724880 2.062500 -3.062500 -v 0.656250 2.131130 -3.062500 -v 0.562500 2.281250 -3.187500 -v 0.406250 2.239383 -3.187500 -v 0.291867 2.125000 -3.187500 -v 0.250000 1.968750 -3.187500 -v 0.291867 1.812500 -3.187500 -v 0.406250 1.698117 -3.187500 -v 0.562500 1.656250 -3.187500 -v 0.718750 1.698117 -3.187500 -v 0.833133 1.812500 -3.187500 -v 0.875000 1.968750 -3.187500 -v 0.833133 2.125000 -3.187500 -v 0.718750 2.239383 -3.187500 -v 0.562500 2.281250 -3.500000 -v 0.406250 2.239383 -3.500000 -v 0.291867 2.125000 -3.500000 -v 0.250000 1.968750 -3.500000 -v 0.291867 1.812500 -3.500000 -v 0.406250 1.698117 -3.500000 -v 0.562500 1.656250 -3.500000 -v 0.718750 1.698117 -3.500000 -v 0.833133 1.812500 -3.500000 -v 0.875000 1.968750 -3.500000 -v 0.833133 2.125000 -3.500000 -v 0.718750 2.239383 -3.500000 -v 0.562500 2.343750 -3.500000 +v 0.812500 1.968750 -3.062500 +v 0.779006 1.843750 -3.062500 +v 0.687500 1.752244 -3.062500 +v 0.437500 1.752244 -3.062500 +v 0.345994 1.843750 -3.062500 +v 0.312500 1.968750 -3.062500 +v 0.237740 2.156250 -4.750000 +v 0.375000 2.293509 -4.750000 +v 0.562500 2.343750 -4.750000 +v 0.750000 2.293509 -4.750000 +v 0.887260 2.156250 -4.750000 +v 0.937500 1.968750 -4.750000 +v 0.887260 1.781250 -4.750000 +v 0.562500 1.593750 -4.750000 +v 0.237740 1.781250 -4.750000 v 0.375000 2.293509 -3.500000 v 0.237740 2.156250 -3.500000 v 0.187500 1.968750 -3.500000 v 0.237740 1.781250 -3.500000 v 0.375000 1.643991 -3.500000 -v 0.562500 1.593750 -3.500000 v 0.750000 1.643991 -3.500000 -v 0.887260 1.781250 -3.500000 v 0.937500 1.968750 -3.500000 v 0.887260 2.156250 -3.500000 v 0.750000 2.293509 -3.500000 -v 0.562500 2.343750 -3.937500 -v 0.375000 2.293509 -3.937500 -v 0.237740 2.156250 -3.937500 -v 0.187500 1.968750 -3.937500 -v 0.237740 1.781250 -3.937500 -v 0.375000 1.643991 -3.937500 -v 0.562500 1.593750 -3.937500 -v 0.750000 1.643991 -3.937500 -v 0.887260 1.781250 -3.937500 -v 0.937500 1.968750 -3.937500 -v 0.887260 2.156250 -3.937500 -v 0.750000 2.293509 -3.937500 -v 0.562500 2.406250 -4.000000 -v 0.343750 2.347636 -4.000000 -v 0.183614 2.187500 -4.000000 -v 0.125000 1.968750 -4.000000 -v 0.183614 1.750000 -4.000000 -v 0.343750 1.589864 -4.000000 -v 0.562500 1.531250 -4.000000 -v 0.781250 1.589864 -4.000000 -v 0.941386 1.750000 -4.000000 -v 1.000000 1.968750 -4.000000 -v 0.941386 2.187500 -4.000000 -v 0.781250 2.347636 -4.000000 -v 0.562500 2.343750 -4.062500 -v 0.375000 2.293509 -4.062500 -v 0.237740 2.156250 -4.062500 -v 0.187500 1.968750 -4.062500 -v 0.237740 1.781250 -4.062500 -v 0.375000 1.643991 -4.062500 -v 0.562500 1.593750 -4.062500 -v 0.750000 1.643991 -4.062500 -v 0.887260 1.781250 -4.062500 -v 0.937500 1.968750 -4.062500 -v 0.887260 2.156250 -4.062500 -v 0.750000 2.293509 -4.062500 -v 0.562500 2.343750 -4.750000 -v 0.375000 2.293509 -4.750000 -v 0.237740 2.156250 -4.750000 -v 0.187500 1.968750 -4.750000 -v 0.237740 1.781250 -4.750000 -v 0.375000 1.643991 -4.750000 -v 0.562500 1.593750 -4.750000 -v 0.750000 1.643991 -4.750000 -v 0.887260 1.781250 -4.750000 -v 0.937500 1.968750 -4.750000 -v 0.887260 2.156250 -4.750000 -v 0.750000 2.293509 -4.750000 -v 0.562500 2.468750 -4.812500 -v 0.312500 2.401763 -4.812500 -v 0.129487 2.218750 -4.812500 -v 0.062500 1.968750 -4.812500 -v 0.129487 1.718750 -4.812500 -v 0.312500 1.535737 -4.812500 -v 0.562500 1.468750 -4.812500 -v 0.812500 1.535737 -4.812500 -v 0.995513 1.718750 -4.812500 -v 1.062500 1.968750 -4.812500 -v 0.995513 2.218750 -4.812500 -v 0.812500 2.401763 -4.812500 -v 0.562500 2.468750 -4.937500 -v 0.312500 2.401763 -4.937500 -v 0.129487 2.218750 -4.937500 -v 0.062500 1.968750 -4.937500 -v 0.129487 1.718750 -4.937500 -v 0.312500 1.535737 -4.937500 -v 0.562500 1.468750 -4.937500 -v 0.812500 1.535737 -4.937500 -v 0.995513 1.718750 -4.937500 -v 1.062500 1.968750 -4.937500 -v 0.995513 2.218750 -4.937500 -v 0.812500 2.401763 -4.937500 -v 0.187500 1.218750 -1.937500 -v 0.187500 1.593750 -1.937500 -v 0.187500 1.593750 -2.000000 -v 0.187500 1.218750 -2.000000 -v 0.250000 1.593750 -2.000000 -v 0.250000 1.218750 -2.000000 -v 0.250000 1.593750 -2.750000 v 0.250000 1.218750 -2.750000 -v 0.187500 1.593750 -2.750000 -v 0.187500 1.218750 -2.750000 +v 0.250000 1.218750 -2.000000 v 0.187500 1.593750 -2.812500 -v 0.187500 1.218750 -2.812500 -v 0.375000 1.843750 -1.937500 -v 0.375000 1.843750 -2.812500 -v 0.375000 1.843750 -2.750000 -v 0.375000 1.843750 -2.000000 -v 0.375000 1.218750 -2.812500 -v 0.375000 1.218750 -1.937500 -v 0.312500 1.093750 -2.812500 -v 0.312500 1.093750 -1.937500 -v 0.375000 1.593750 -2.750000 v 0.562500 1.843750 -2.750000 -v 0.375000 1.218750 -2.750000 -v 0.375000 1.593750 -2.000000 -v 0.562500 1.843750 -2.000000 -v 0.375000 1.218750 -2.000000 -v 0.312500 1.593750 -2.750000 -v 0.500000 1.843750 -2.750000 -v 0.312500 1.593750 -2.000000 -v 0.500000 1.843750 -2.000000 -v 0.437500 1.843750 -2.750000 -v 0.437500 1.843750 -2.000000 -v 0.312500 1.093750 -2.750000 -v 0.312500 1.093750 -2.000000 -v 0.562500 2.093750 -2.656250 -v 0.484375 2.093750 -2.635316 -v 0.427184 2.093750 -2.578125 -v 0.406250 2.093750 -2.500000 -v 0.427184 2.093750 -2.421875 -v 0.484375 2.093750 -2.364684 -v 0.562500 2.093750 -2.343750 -v 0.640625 2.093750 -2.364684 -v 0.697816 2.093750 -2.421875 -v 0.718750 2.093750 -2.500000 -v 0.697816 2.093750 -2.578125 -v 0.640625 2.093750 -2.635316 -v 0.562500 2.343750 -2.656250 v 0.484375 2.343750 -2.635316 v 0.427184 2.343750 -2.578125 v 0.406250 2.343750 -2.500000 -v 0.427184 2.343750 -2.421875 v 0.484375 2.343750 -2.364684 v 0.562500 2.343750 -2.343750 v 0.640625 2.343750 -2.364684 -v 0.697816 2.343750 -2.421875 v 0.718750 2.343750 -2.500000 v 0.697816 2.343750 -2.578125 v 0.640625 2.343750 -2.635316 -v 0.312500 1.593750 -2.187500 -v 0.312500 1.593750 -2.562500 -v 0.312500 1.218750 -2.187500 -v 0.312500 1.218750 -2.562500 -v 0.250000 1.218750 -2.187500 -v 0.250000 1.218750 -2.562500 -v 0.250000 1.593750 -2.562500 -v 0.250000 1.593750 -2.187500 +v 0.687500 1.752244 -1.687500 +v 0.562500 1.718750 -1.687500 +v 0.779006 1.843750 -1.687500 +v 0.779006 2.093750 -1.687500 +v 0.812500 1.968750 -1.687500 +v 0.687500 2.185256 -1.687500 +v 0.562500 2.218750 -1.687500 +v 0.437500 2.185256 -1.687500 +v 0.312500 1.968750 -1.687500 +v 0.345994 2.093750 -1.687500 +v 0.437500 1.752244 -1.687500 +v 0.345994 1.843750 -1.687500 +v 0.875000 1.968750 -3.187500 +v 0.724880 2.062500 -3.062500 +v 0.750000 1.968750 -3.062500 +v 0.718750 2.239383 -3.187500 +v 0.656250 2.131130 -3.062500 +v 0.562500 2.156250 -3.062500 +v 0.562500 2.281250 -3.187500 +v 0.468750 2.131130 -3.062500 +v 0.291867 2.125000 -3.187500 +v 0.400120 2.062500 -3.062500 +v 0.250000 1.968750 -3.187500 +v 0.375000 1.968750 -3.062500 +v 0.400120 1.875000 -3.062500 +v 0.291867 1.812500 -3.187500 +v 0.468750 1.806370 -3.062500 +v 0.562500 1.656250 -3.187500 +v 0.562500 1.781250 -3.062500 +v 0.718750 1.698117 -3.187500 +v 0.656250 1.806370 -3.062500 +v 0.724880 1.875000 -3.062500 +v 0.833133 1.812500 -3.500000 +v 0.833133 1.812500 -3.187500 +v 0.406250 1.698117 -3.500000 +v 0.406250 1.698117 -3.187500 +v 0.562500 2.281250 -3.500000 +v 0.406250 2.239383 -3.187500 +v 0.291867 2.125000 -3.500000 +v 0.875000 1.968750 -3.500000 +v 0.562500 1.656250 -3.500000 +v 0.250000 1.968750 -3.500000 +v 0.833133 2.125000 -3.500000 +v 0.833133 2.125000 -3.187500 +v 0.718750 1.698117 -3.500000 +v 0.291867 1.812500 -3.500000 +v 0.718750 2.239383 -3.500000 +v 0.406250 2.239383 -3.500000 +v 0.562500 1.593750 -3.937500 +v 0.187500 1.968750 -3.937500 +v 0.887260 2.156250 -3.937500 +v 0.750000 1.643991 -3.937500 +v 0.237740 1.781250 -3.937500 +v 0.750000 2.293509 -3.937500 +v 0.375000 2.293509 -3.937500 +v 0.887260 1.781250 -3.937500 +v 0.375000 1.643991 -3.937500 +v 0.562500 2.343750 -3.937500 +v 0.237740 2.156250 -3.937500 +v 0.937500 1.968750 -3.937500 +v 0.562500 1.531250 -4.000000 +v 0.941386 1.750000 -4.000000 +v 1.000000 1.968750 -4.000000 +v 0.781250 2.347636 -4.000000 +v 0.562500 2.406250 -4.000000 +v 0.343750 2.347636 -4.000000 +v 0.183614 2.187500 -4.000000 +v 0.183614 1.750000 -4.000000 +v 0.343750 1.589864 -4.000000 +v 0.562500 1.593750 -4.062500 +v 0.237740 1.781250 -4.062500 +v 0.187500 1.968750 -4.062500 +v 0.125000 1.968750 -4.000000 +v 0.375000 2.293509 -4.062500 +v 0.562500 2.343750 -4.062500 +v 0.887260 2.156250 -4.062500 +v 0.941386 2.187500 -4.000000 +v 0.887260 1.781250 -4.062500 +v 0.781250 1.589864 -4.000000 +v 0.750000 1.643991 -4.062500 +v 0.750000 2.293509 -4.062500 +v 0.375000 1.643991 -4.062500 +v 0.237740 2.156250 -4.062500 +v 0.937500 1.968750 -4.062500 +v 0.312500 2.401763 -4.812500 +v 0.129487 2.218750 -4.937500 +v 0.129487 2.218750 -4.812500 +v 0.995513 1.718750 -4.812500 +v 1.062500 1.968750 -4.937500 +v 1.062500 1.968750 -4.812500 +v 0.312500 1.535737 -4.812500 +v 0.562500 1.468750 -4.937500 +v 0.562500 1.468750 -4.812500 +v 0.062500 1.968750 -4.937500 +v 0.062500 1.968750 -4.812500 +v 0.995513 2.218750 -4.937500 +v 0.995513 2.218750 -4.812500 +v 0.812500 1.535737 -4.937500 +v 0.812500 1.535737 -4.812500 +v 0.129487 1.718750 -4.937500 +v 0.129487 1.718750 -4.812500 +v 0.812500 2.401763 -4.937500 +v 0.812500 2.401763 -4.812500 +v 0.562500 2.468750 -4.812500 +v 0.312500 2.401763 -4.937500 +v 0.995513 1.718750 -4.937500 +v 0.312500 1.535737 -4.937500 +v 0.562500 2.468750 -4.937500 +v 0.427184 2.093750 -2.578125 +v 0.406250 2.093750 -2.500000 +v 0.718750 2.093750 -2.500000 +v 0.697816 2.093750 -2.578125 +v 0.562500 2.093750 -2.343750 +v 0.640625 2.093750 -2.364684 +v 0.427184 2.093750 -2.421875 +v 0.640625 2.093750 -2.635316 +v 0.562500 2.093750 -2.656250 +v 0.484375 2.093750 -2.635316 +v 0.697816 2.093750 -2.421875 +v 0.484375 2.093750 -2.364684 vt 0.579545 0.795455 vt 0.579545 0.806818 vt 0.568182 0.806818 @@ -5181,12 +5183,12 @@ vn 0.0000 1.0000 0.0000 vn 0.8944 -0.4472 0.0000 vn 1.0000 0.0000 0.0000 vn -0.3536 0.6124 0.7071 -vn 0.0000 0.7071 0.7071 +vn -0.0000 0.7071 0.7071 vn -0.6124 0.3536 0.7071 -vn -0.7071 0.0000 0.7071 +vn -0.7071 -0.0000 0.7071 vn -0.6124 -0.3536 0.7071 vn -0.3536 -0.6124 0.7071 -vn -0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 vn 0.3536 -0.6124 0.7071 vn 0.6124 -0.3536 0.7071 vn 0.7071 -0.0000 0.7071 @@ -5201,15 +5203,15 @@ vn -0.5000 0.8660 0.0000 vn 0.8660 -0.5000 0.0000 vn -0.5000 -0.8660 0.0000 vn -0.3536 -0.6124 -0.7071 -vn 0.0000 -0.7071 -0.7071 +vn -0.0000 -0.7071 -0.7071 vn -0.6124 -0.3536 -0.7071 vn -0.7071 -0.0000 -0.7071 vn -0.6124 0.3536 -0.7071 vn -0.3536 0.6124 -0.7071 -vn -0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 vn 0.3536 0.6124 -0.7071 vn 0.6124 0.3536 -0.7071 -vn 0.7071 0.0000 -0.7071 +vn 0.7071 -0.0000 -0.7071 vn 0.6124 -0.3536 -0.7071 vn 0.3536 -0.6124 -0.7071 vn -0.4358 0.7548 0.4903 @@ -5218,30 +5220,31 @@ vn 0.7548 -0.4358 0.4903 vn 0.8716 -0.0000 0.4903 vn -0.4358 -0.7548 0.4903 vn 0.0000 -0.8716 0.4903 -vn -0.8716 -0.0000 0.4903 +vn -0.8716 0.0000 0.4903 vn 0.7548 0.4358 0.4903 vn 0.4358 -0.7548 0.4903 vn -0.7548 -0.4358 0.4903 vn 0.4358 0.7548 0.4903 -vn -0.0000 0.8716 0.4903 +vn 0.0000 0.8716 0.4903 vn 0.2236 -0.3873 0.8944 -vn -0.0000 -0.4472 0.8944 +vn 0.0000 -0.4472 0.8944 vn 0.3873 -0.2236 0.8944 vn 0.4472 -0.0000 0.8944 vn 0.3873 0.2236 0.8944 vn 0.2236 0.3873 0.8944 -vn -0.0000 0.4472 0.8944 +vn 0.0000 0.4472 0.8944 vn -0.2236 0.3873 0.8944 vn -0.3873 0.2236 0.8944 -vn -0.4472 -0.0000 0.8944 +vn -0.4472 0.0000 0.8944 vn -0.3873 -0.2236 0.8944 vn -0.2236 -0.3873 0.8944 -vn -0.0000 0.8321 -0.5547 +vn 0.0000 0.8320 -0.5547 vn 0.4160 0.7206 -0.5547 vn 0.7206 0.4160 -0.5547 vn 0.8321 0.0000 -0.5547 vn 0.7206 -0.4160 -0.5547 vn 0.4160 -0.7206 -0.5547 +vn 0.0000 -0.8320 -0.5547 vn 0.0000 -0.8321 -0.5547 vn -0.4160 -0.7206 -0.5547 vn -0.7206 -0.4160 -0.5547 @@ -5261,461 +5264,462 @@ vn 0.8660 0.0000 0.5000 vn -0.5000 0.0000 0.8660 vn 0.9080 -0.4191 0.0000 vn -0.9487 0.3162 0.0000 +vn -0.0000 0.8321 -0.5547 s off -f 910/1593/442 912/1594/442 913/1595/442 -f 911/1596/443 914/1597/443 909/1598/443 -f 909/1598/444 907/1599/444 908/1600/444 -f 938/1601/442 942/1602/442 934/1603/442 -f 956/1604/444 952/1605/444 948/1606/444 -f 1049/1607/444 1047/1608/444 1045/1609/444 -f 1000/1610/442 1002/1611/442 994/1612/442 -f 1080/1613/445 1078/1614/445 1079/1615/445 -f 1087/1616/442 1084/1617/442 1086/1618/442 -f 1082/1619/444 1081/1620/444 1080/1613/444 -f 1086/1618/445 1089/1621/445 1087/1616/445 -f 1089/1622/446 908/1600/446 906/1623/446 -f 910/1593/447 1078/1624/447 912/1594/447 -f 1090/1625/442 919/1626/442 921/1627/442 -f 917/1628/444 1091/1629/444 920/1630/444 -f 1079/1615/448 1093/1631/448 1080/1613/448 -f 1091/1629/448 1086/1618/448 1092/1632/448 -f 1096/1633/444 916/1634/444 1094/1635/444 -f 917/1628/444 1094/1635/444 916/1634/444 -f 1095/1636/442 918/1637/442 1097/1638/442 -f 918/1637/442 919/1626/442 1079/1615/442 -f 1103/1639/444 1106/1640/444 1101/1641/444 -f 1098/1642/442 1105/1643/442 1104/1644/442 -f 1101/1641/444 1107/1645/444 1102/1646/444 -f 1082/1619/444 1093/1631/444 1109/1647/444 -f 1092/1632/442 1084/1617/442 1108/1648/442 -f 1141/1649/449 1138/1650/449 1139/1651/449 -f 1094/1652/450 1110/1653/450 1096/1654/450 -f 1111/1655/450 1095/1636/450 1097/1656/450 -f 1100/1657/442 1104/1644/442 1110/1658/442 -f 918/1659/451 910/1593/451 1097/1660/451 -f 916/1661/451 1096/1662/451 908/1600/451 -f 906/1663/445 912/1664/445 1081/1665/445 -f 1141/1649/449 1087/1666/449 1081/1665/449 -f 1128/1667/449 1132/1668/449 1124/1669/449 -f 1139/1670/442 1142/1671/442 1141/1672/442 -f 1143/1673/444 1138/1674/444 1140/1675/444 -f 1143/1676/443 1137/1677/443 1136/1678/443 -f 1097/1660/451 910/1593/451 911/1596/451 -f 913/1595/442 915/1679/442 911/1596/442 -f 911/1596/442 910/1593/442 913/1595/442 -f 911/1596/443 915/1680/443 914/1597/443 -f 914/1681/444 907/1599/444 909/1598/444 -f 907/1599/444 906/1623/444 908/1600/444 -f 934/1603/442 935/1682/442 938/1601/442 -f 935/1682/442 936/1683/442 938/1601/442 -f 936/1683/442 937/1684/442 938/1601/442 -f 938/1601/442 939/1685/442 940/1686/442 -f 940/1686/442 941/1687/442 938/1601/442 -f 941/1687/442 942/1602/442 938/1601/442 -f 942/1602/442 943/1688/442 944/1689/442 -f 944/1689/442 945/1690/442 934/1603/442 -f 942/1602/442 944/1689/442 934/1603/442 -f 948/1606/444 947/1691/444 956/1604/444 -f 947/1691/444 946/1692/444 956/1604/444 -f 946/1692/444 957/1693/444 956/1604/444 -f 956/1604/444 955/1694/444 954/1695/444 -f 954/1695/444 953/1696/444 952/1605/444 -f 952/1605/444 951/1697/444 950/1698/444 -f 950/1698/444 949/1699/444 948/1606/444 -f 956/1604/444 954/1695/444 952/1605/444 -f 952/1605/444 950/1698/444 948/1606/444 -f 1045/1609/444 1044/1700/444 1043/1701/444 -f 1043/1701/444 1042/1702/444 1053/1703/444 -f 1053/1703/444 1052/1704/444 1049/1607/444 -f 1052/1704/444 1051/1705/444 1049/1607/444 -f 1051/1705/444 1050/1706/444 1049/1607/444 -f 1049/1607/444 1048/1707/444 1047/1608/444 -f 1047/1608/444 1046/1708/444 1045/1609/444 -f 1045/1609/444 1043/1701/444 1049/1607/444 -f 1043/1701/444 1053/1703/444 1049/1607/444 -f 994/1612/442 995/1709/442 996/1710/442 -f 996/1710/442 997/1711/442 998/1712/442 -f 998/1712/442 999/1713/442 1000/1610/442 -f 1000/1610/442 1001/1714/442 1002/1611/442 -f 1002/1611/442 1003/1715/442 1004/1716/442 -f 1004/1716/442 1005/1717/442 1002/1611/442 -f 1005/1717/442 994/1612/442 1002/1611/442 -f 994/1612/442 996/1710/442 998/1712/442 -f 998/1712/442 1000/1610/442 994/1612/442 -f 1080/1613/445 1081/1620/445 1078/1614/445 -f 1087/1616/442 1085/1718/442 1084/1617/442 -f 1082/1619/444 1083/1719/444 1081/1620/444 -f 1086/1618/445 1088/1720/445 1089/1621/445 -f 1089/1622/446 916/1721/446 908/1600/446 -f 910/1593/447 918/1722/447 1078/1624/447 -f 1090/1625/442 1079/1615/442 919/1626/442 -f 917/1628/444 1088/1720/444 1091/1629/444 -f 1079/1615/448 1090/1625/448 1093/1631/448 -f 1091/1629/448 1088/1720/448 1086/1618/448 -f 916/1634/444 1089/1621/444 1088/1720/444 -f 1088/1720/444 917/1628/444 916/1634/444 -f 1079/1615/442 1078/1614/442 918/1637/442 -f 918/1637/442 1095/1636/442 919/1626/442 -f 1103/1639/444 1111/1723/444 1106/1640/444 -f 1098/1642/442 1099/1724/442 1105/1643/442 -f 1101/1641/444 1106/1640/444 1107/1645/444 -f 1082/1619/444 1080/1613/444 1093/1631/444 -f 1092/1632/442 1086/1618/442 1084/1617/442 -f 1141/1649/449 1140/1725/449 1138/1650/449 -f 1094/1652/450 1100/1657/450 1110/1653/450 -f 1111/1655/450 1103/1639/450 1095/1636/450 -f 1100/1657/442 1098/1642/442 1104/1644/442 -f 1078/1726/445 1081/1665/445 912/1664/445 -f 1081/1665/445 1087/1666/445 906/1663/445 -f 1087/1666/445 1089/1727/445 906/1663/445 -f 1081/1665/449 1083/1719/449 1140/1725/449 -f 1141/1649/449 1085/1718/449 1087/1666/449 -f 1081/1665/449 1140/1725/449 1141/1649/449 -f 1124/1669/449 1125/1728/449 1128/1667/449 -f 1125/1728/449 1126/1729/449 1128/1667/449 -f 1126/1729/449 1127/1730/449 1128/1667/449 -f 1128/1667/449 1129/1731/449 1130/1732/449 -f 1130/1732/449 1131/1733/449 1128/1667/449 -f 1131/1733/449 1132/1668/449 1128/1667/449 -f 1132/1668/449 1133/1734/449 1134/1735/449 -f 1134/1735/449 1135/1736/449 1132/1668/449 -f 1135/1736/449 1124/1669/449 1132/1668/449 -f 1139/1670/442 1137/1737/442 1142/1671/442 -f 1143/1673/444 1136/1738/444 1138/1674/444 -f 1143/1676/443 1142/1739/443 1137/1677/443 -f 909/1598/451 908/1600/451 1096/1662/451 -f 1110/1740/451 1111/1741/451 909/1598/451 -f 1111/1741/451 1097/1660/451 911/1596/451 -f 909/1598/451 1111/1741/451 911/1596/451 -f 909/1598/451 1096/1662/451 1110/1740/451 +f 906/1593/444 907/1594/444 908/1595/444 +f 909/1596/445 910/1597/445 911/1598/445 +f 911/1598/446 912/1599/446 913/1600/446 +f 914/1601/444 915/1602/444 916/1603/444 +f 917/1604/446 918/1605/446 919/1606/446 +f 920/1607/446 921/1608/446 922/1609/446 +f 923/1610/444 924/1611/444 925/1612/444 +f 926/1613/447 927/1614/447 928/1615/447 +f 929/1616/444 930/1617/444 931/1618/444 +f 932/1619/446 933/1620/446 926/1613/446 +f 931/1618/447 934/1621/447 929/1616/447 +f 934/1622/448 913/1600/448 935/1623/448 +f 906/1593/449 927/1624/449 907/1594/449 +f 936/1625/444 937/1626/444 938/1627/444 +f 939/1628/446 940/1629/446 941/1630/446 +f 928/1615/450 942/1631/450 926/1613/450 +f 940/1629/450 931/1618/450 943/1632/450 +f 944/1633/446 945/1634/446 946/1635/446 +f 939/1628/446 946/1635/446 945/1634/446 +f 947/1636/444 948/1637/444 949/1638/444 +f 948/1637/444 937/1626/444 928/1615/444 +f 950/1639/446 951/1640/446 952/1641/446 +f 953/1642/444 954/1643/444 955/1644/444 +f 952/1641/446 956/1645/446 957/1646/446 +f 932/1619/446 942/1631/446 958/1647/446 +f 943/1632/444 930/1617/444 959/1648/444 +f 960/1649/451 961/1650/451 962/1651/451 +f 946/1652/452 963/1653/452 944/1654/452 +f 964/1655/452 947/1636/452 949/1656/452 +f 965/1657/444 955/1644/444 963/1658/444 +f 948/1659/453 906/1593/453 949/1660/453 +f 945/1661/453 944/1662/453 913/1600/453 +f 935/1663/447 907/1664/447 933/1665/447 +f 960/1649/451 929/1666/451 933/1665/451 +f 966/1667/451 967/1668/451 968/1669/451 +f 962/1670/444 969/1671/444 960/1672/444 +f 970/1673/446 961/1674/446 971/1675/446 +f 970/1676/445 972/1677/445 973/1678/445 +f 949/1660/453 906/1593/453 909/1596/453 +f 908/1595/444 974/1679/444 909/1596/444 +f 909/1596/444 906/1593/444 908/1595/444 +f 909/1596/445 974/1680/445 910/1597/445 +f 910/1681/446 912/1599/446 911/1598/446 +f 912/1599/446 935/1623/446 913/1600/446 +f 916/1603/444 975/1682/444 914/1601/444 +f 975/1682/444 976/1683/444 914/1601/444 +f 976/1683/444 977/1684/444 914/1601/444 +f 914/1601/444 978/1685/444 979/1686/444 +f 979/1686/444 980/1687/444 914/1601/444 +f 980/1687/444 915/1602/444 914/1601/444 +f 915/1602/444 981/1688/444 982/1689/444 +f 982/1689/444 983/1690/444 916/1603/444 +f 915/1602/444 982/1689/444 916/1603/444 +f 919/1606/446 984/1691/446 917/1604/446 +f 984/1691/446 985/1692/446 917/1604/446 +f 985/1692/446 986/1693/446 917/1604/446 +f 917/1604/446 987/1694/446 988/1695/446 +f 988/1695/446 989/1696/446 918/1605/446 +f 918/1605/446 990/1697/446 991/1698/446 +f 991/1698/446 992/1699/446 919/1606/446 +f 917/1604/446 988/1695/446 918/1605/446 +f 918/1605/446 991/1698/446 919/1606/446 +f 922/1609/446 993/1700/446 994/1701/446 +f 994/1701/446 995/1702/446 996/1703/446 +f 996/1703/446 997/1704/446 920/1607/446 +f 997/1704/446 998/1705/446 920/1607/446 +f 998/1705/446 999/1706/446 920/1607/446 +f 920/1607/446 1000/1707/446 921/1608/446 +f 921/1608/446 1001/1708/446 922/1609/446 +f 922/1609/446 994/1701/446 920/1607/446 +f 994/1701/446 996/1703/446 920/1607/446 +f 925/1612/444 1002/1709/444 1003/1710/444 +f 1003/1710/444 1004/1711/444 1005/1712/444 +f 1005/1712/444 1006/1713/444 923/1610/444 +f 923/1610/444 1007/1714/444 924/1611/444 +f 924/1611/444 1008/1715/444 1009/1716/444 +f 1009/1716/444 1010/1717/444 924/1611/444 +f 1010/1717/444 925/1612/444 924/1611/444 +f 925/1612/444 1003/1710/444 1005/1712/444 +f 1005/1712/444 923/1610/444 925/1612/444 +f 926/1613/447 933/1620/447 927/1614/447 +f 929/1616/444 1011/1718/444 930/1617/444 +f 932/1619/446 1012/1719/446 933/1620/446 +f 931/1618/447 1013/1720/447 934/1621/447 +f 934/1622/448 945/1721/448 913/1600/448 +f 906/1593/449 948/1722/449 927/1624/449 +f 936/1625/444 928/1615/444 937/1626/444 +f 939/1628/446 1013/1720/446 940/1629/446 +f 928/1615/450 936/1625/450 942/1631/450 +f 940/1629/450 1013/1720/450 931/1618/450 +f 945/1634/446 934/1621/446 1013/1720/446 +f 1013/1720/446 939/1628/446 945/1634/446 +f 928/1615/444 927/1614/444 948/1637/444 +f 948/1637/444 947/1636/444 937/1626/444 +f 950/1639/446 964/1723/446 951/1640/446 +f 953/1642/444 1014/1724/444 954/1643/444 +f 952/1641/446 951/1640/446 956/1645/446 +f 932/1619/446 926/1613/446 942/1631/446 +f 943/1632/444 931/1618/444 930/1617/444 +f 960/1649/451 971/1725/451 961/1650/451 +f 946/1652/452 965/1657/452 963/1653/452 +f 964/1655/452 950/1639/452 947/1636/452 +f 965/1657/444 953/1642/444 955/1644/444 +f 927/1726/447 933/1665/447 907/1664/447 +f 933/1665/447 929/1666/447 935/1663/447 +f 929/1666/447 934/1727/447 935/1663/447 +f 933/1665/451 1012/1719/451 971/1725/451 +f 960/1649/451 1011/1718/451 929/1666/451 +f 933/1665/451 971/1725/451 960/1649/451 +f 968/1669/451 1015/1728/451 966/1667/451 +f 1015/1728/451 1016/1729/451 966/1667/451 +f 1016/1729/451 1017/1730/451 966/1667/451 +f 966/1667/451 1018/1731/451 1019/1732/451 +f 1019/1732/451 1020/1733/451 966/1667/451 +f 1020/1733/451 967/1668/451 966/1667/451 +f 967/1668/451 1021/1734/451 1022/1735/451 +f 1022/1735/451 1023/1736/451 967/1668/451 +f 1023/1736/451 968/1669/451 967/1668/451 +f 962/1670/444 972/1737/444 969/1671/444 +f 970/1673/446 973/1738/446 961/1674/446 +f 970/1676/445 969/1739/445 972/1677/445 +f 911/1598/453 913/1600/453 944/1662/453 +f 963/1740/453 964/1741/453 911/1598/453 +f 964/1741/453 949/1660/453 909/1596/453 +f 911/1598/453 964/1741/453 909/1596/453 +f 911/1598/453 944/1662/453 963/1740/453 s 1 -f 929/1742/452 940/1743/453 928/1744/453 -f 930/1745/454 941/1746/452 929/1742/452 -f 930/1745/454 943/1747/455 942/1748/454 -f 932/1749/456 943/1750/455 931/1751/455 -f 933/1752/457 944/1753/456 932/1749/456 -f 922/1754/458 945/1755/457 933/1752/457 -f 923/1756/459 934/1757/458 922/1754/458 -f 923/1756/459 936/1758/460 935/1759/459 -f 925/1760/461 936/1761/460 924/1762/460 -f 925/1760/461 938/1763/462 937/1764/461 -f 927/1765/463 938/1766/462 926/1767/462 -f 928/1768/453 939/1769/463 927/1765/463 -f 948/1770/464 925/1760/445 924/1762/464 -f 955/1771/451 932/1749/465 931/1751/451 -f 952/1772/443 929/1742/466 928/1744/443 -f 949/1773/445 926/1767/467 925/1760/445 -f 956/1774/465 933/1752/468 932/1749/465 -f 946/1775/449 923/1756/469 922/1754/449 -f 953/1776/466 930/1745/470 929/1742/466 -f 950/1777/467 927/1765/471 926/1767/467 -f 957/1778/468 922/1754/449 933/1752/468 -f 947/1779/469 924/1762/464 923/1756/469 -f 954/1780/470 931/1751/451 930/1745/470 -f 951/1781/471 928/1768/443 927/1765/471 -f 979/1782/461 968/1783/462 967/1784/461 -f 968/1785/462 981/1786/463 969/1787/463 -f 981/1786/463 958/1788/453 969/1789/463 -f 970/1790/453 959/1791/452 958/1792/453 -f 959/1793/452 972/1794/454 960/1795/454 -f 960/1796/454 973/1797/455 961/1798/455 -f 973/1797/455 962/1799/456 961/1800/455 -f 974/1801/456 963/1802/457 962/1803/456 -f 963/1804/457 976/1805/458 964/1806/458 -f 964/1807/458 977/1808/459 965/1809/459 -f 966/1810/460 979/1782/461 967/1811/461 -f 977/1808/459 966/1812/460 965/1813/459 -f 977/1808/466 990/1814/470 978/1815/470 -f 974/1801/467 987/1816/471 975/1817/471 -f 981/1786/468 982/1818/449 970/1790/449 -f 971/1819/469 984/1820/464 972/1794/464 -f 978/1815/470 991/1821/451 979/1782/451 -f 975/1817/471 988/1822/443 976/1805/443 -f 972/1794/464 985/1823/445 973/1797/445 -f 979/1782/451 992/1824/465 980/1825/465 -f 976/1826/443 989/1827/466 977/1808/466 -f 973/1797/445 986/1828/467 974/1801/467 -f 980/1825/465 993/1829/468 981/1786/468 -f 970/1790/449 983/1830/469 971/1819/469 -f 999/1831/471 1012/1832/443 1000/1833/443 -f 996/1834/464 1009/1835/445 997/1836/445 -f 1003/1837/451 1016/1838/465 1004/1839/465 -f 1000/1840/443 1013/1841/466 1001/1842/466 -f 997/1836/445 1010/1843/467 998/1844/467 -f 1004/1839/465 1017/1845/468 1005/1846/468 -f 994/1847/449 1007/1848/469 995/1849/469 -f 1001/1842/466 1014/1850/470 1002/1851/470 -f 998/1844/467 1011/1852/471 999/1831/471 -f 1005/1846/468 1006/1853/449 994/1847/449 -f 995/1849/469 1008/1854/464 996/1834/464 -f 1002/1851/470 1015/1855/451 1003/1837/451 -f 1024/1856/458 1013/1841/459 1012/1857/458 -f 1013/1841/459 1026/1858/460 1014/1850/460 -f 1014/1850/460 1027/1859/461 1015/1855/461 -f 1027/1859/461 1016/1838/462 1015/1855/461 -f 1016/1838/462 1029/1860/463 1017/1845/463 -f 1029/1860/463 1006/1853/453 1017/1845/463 -f 1018/1861/453 1007/1848/452 1006/1853/453 -f 1019/1862/452 1008/1854/454 1007/1848/452 -f 1020/1863/454 1009/1835/455 1008/1854/454 -f 1009/1835/455 1022/1864/456 1010/1843/456 -f 1022/1864/456 1011/1852/457 1010/1843/456 -f 1023/1865/457 1012/1832/458 1011/1852/457 -f 1023/1865/472 1036/1866/473 1024/1867/473 -f 1034/1868/474 1023/1865/472 1022/1864/474 -f 1033/1869/475 1022/1864/474 1021/1870/475 -f 1020/1863/476 1033/1869/475 1021/1870/475 -f 1031/1871/477 1020/1863/476 1019/1862/477 -f 1030/1872/478 1019/1862/477 1018/1861/478 -f 1029/1860/479 1030/1872/478 1018/1861/478 -f 1040/1873/480 1029/1860/479 1028/1874/480 -f 1027/1859/481 1040/1873/480 1028/1874/480 -f 1038/1875/482 1027/1859/481 1026/1858/482 -f 1036/1876/473 1025/1877/483 1024/1856/473 -f 1037/1878/483 1026/1858/482 1025/1877/483 -f 1036/1876/443 1049/1879/466 1037/1878/466 -f 1033/1869/445 1046/1880/467 1034/1868/467 -f 1040/1873/465 1053/1881/468 1041/1882/468 -f 1030/1872/449 1043/1883/469 1031/1871/469 -f 1037/1878/466 1050/1884/470 1038/1875/470 -f 1034/1868/467 1047/1885/471 1035/1886/471 -f 1041/1882/468 1042/1887/449 1030/1872/449 -f 1031/1871/469 1044/1888/464 1032/1889/464 -f 1038/1875/470 1051/1890/451 1039/1891/451 -f 1035/1886/471 1048/1892/443 1036/1866/443 -f 1032/1889/464 1045/1893/445 1033/1869/445 -f 1039/1891/451 1052/1894/465 1040/1873/465 -f 1055/1895/484 1068/1896/464 1056/1897/485 -f 1062/1898/486 1075/1899/451 1063/1900/487 -f 1059/1901/488 1072/1902/443 1060/1903/489 -f 1056/1897/485 1069/1904/445 1057/1905/490 -f 1063/1900/487 1076/1906/465 1064/1907/491 -f 1060/1908/489 1073/1909/466 1061/1910/492 -f 1057/1905/490 1070/1911/467 1058/1912/493 -f 1064/1907/491 1077/1913/468 1065/1914/494 -f 1054/1915/495 1067/1916/469 1055/1895/484 -f 1061/1910/492 1074/1917/470 1062/1898/486 -f 1058/1912/493 1071/1918/471 1059/1901/488 -f 1065/1914/494 1066/1919/449 1054/1915/495 -f 1060/1908/489 1049/1920/496 1048/1921/497 -f 1061/1910/492 1050/1922/498 1049/1923/496 -f 1062/1898/486 1051/1924/499 1050/1925/498 -f 1051/1926/499 1064/1907/491 1052/1927/500 -f 1064/1907/491 1053/1928/501 1052/1929/500 -f 1053/1930/501 1054/1915/495 1042/1931/502 -f 1042/1932/502 1055/1895/484 1043/1933/503 -f 1055/1895/484 1044/1934/504 1043/1935/503 -f 1056/1897/485 1045/1936/505 1044/1937/504 -f 1057/1905/490 1046/1938/506 1045/1939/505 -f 1058/1912/493 1047/1940/507 1046/1941/506 -f 1059/1901/488 1048/1942/497 1047/1943/507 -f 1048/1944/508 1071/1918/509 1047/1945/509 -f 1047/1946/509 1070/1911/510 1046/1947/510 -f 1046/1948/510 1069/1904/511 1045/1949/511 -f 1069/1904/511 1044/1950/512 1045/1951/511 -f 1068/1896/512 1043/1952/513 1044/1953/512 -f 1043/1954/513 1066/1919/514 1042/1955/514 -f 1066/1919/514 1053/1956/515 1042/1957/514 -f 1053/1958/515 1076/1906/516 1052/1959/516 -f 1052/1960/516 1075/1899/517 1051/1961/517 -f 1075/1899/517 1050/1962/518 1051/1963/517 -f 1050/1964/518 1073/1909/519 1049/1965/519 -f 1073/1909/519 1048/1966/508 1049/1967/519 -f 1142/1739/520 1085/1718/445 1141/1649/445 -f 917/1968/521 1100/1657/451 1094/1652/451 -f 920/1969/522 1098/1642/521 917/1968/521 -f 1095/1636/451 1101/1641/521 919/1626/521 -f 919/1626/521 1102/1646/522 921/1627/522 -f 1138/1674/451 1106/1640/521 1111/1723/451 -f 1127/1970/445 1114/1971/523 1115/1972/445 -f 1134/1973/524 1121/1974/451 1122/1975/524 -f 1131/1976/525 1118/1977/442 1119/1978/525 -f 1128/1979/526 1115/1972/445 1116/1980/526 -f 1135/1981/527 1122/1975/524 1123/1982/527 -f 1125/1983/528 1112/1984/444 1113/1985/528 -f 1132/1986/529 1119/1978/525 1120/1987/529 -f 1129/1988/530 1116/1980/526 1117/1989/530 -f 1124/1990/444 1123/1982/527 1112/1984/444 -f 1126/1991/523 1113/1985/528 1114/1971/523 -f 1133/1992/451 1120/1987/529 1121/1974/451 -f 1130/1993/442 1117/1989/530 1118/1994/442 -f 1104/1644/521 1139/1670/451 1110/1658/451 -f 1136/1738/531 1137/1737/531 1105/1643/522 -f 1111/1723/451 1139/1670/451 1138/1674/451 -f 1140/1725/445 1082/1619/532 1143/1676/520 -f 1108/1648/448 1142/1739/520 1143/1676/520 -f 929/1742/452 941/1995/452 940/1743/453 -f 930/1745/454 942/1996/454 941/1746/452 -f 930/1745/454 931/1751/455 943/1747/455 -f 932/1749/456 944/1997/456 943/1750/455 -f 933/1752/457 945/1998/457 944/1753/456 -f 922/1754/458 934/1999/458 945/1755/457 -f 923/1756/459 935/2000/459 934/1757/458 -f 923/1756/459 924/1762/460 936/1758/460 -f 925/1760/461 937/2001/461 936/1761/460 -f 925/1760/461 926/1767/462 938/1763/462 -f 927/1765/463 939/2002/463 938/1766/462 -f 928/1768/453 940/2003/453 939/1769/463 -f 948/1770/464 949/1773/445 925/1760/445 -f 955/1771/451 956/1774/465 932/1749/465 -f 952/1772/443 953/1776/466 929/1742/466 -f 949/1773/445 950/1777/467 926/1767/467 -f 956/1774/465 957/1778/468 933/1752/468 -f 946/1775/449 947/1779/469 923/1756/469 -f 953/1776/466 954/1780/470 930/1745/470 -f 950/1777/467 951/1781/471 927/1765/471 -f 957/1778/468 946/1775/449 922/1754/449 -f 947/1779/469 948/1770/464 924/1762/464 -f 954/1780/470 955/1771/451 931/1751/451 -f 951/1781/471 952/2004/443 928/1768/443 -f 979/1782/461 980/1825/462 968/1783/462 -f 968/1785/462 980/1825/462 981/1786/463 -f 981/1786/463 970/1790/453 958/1788/453 -f 970/1790/453 971/1819/452 959/1791/452 -f 959/1793/452 971/1819/452 972/1794/454 -f 960/1796/454 972/1794/454 973/1797/455 -f 973/1797/455 974/1801/456 962/1799/456 -f 974/1801/456 975/1817/457 963/1802/457 -f 963/1804/457 975/1817/457 976/1805/458 -f 964/1807/458 976/1826/458 977/1808/459 -f 966/1810/460 978/1815/460 979/1782/461 -f 977/1808/459 978/1815/460 966/1812/460 -f 977/1808/466 989/1827/466 990/1814/470 -f 974/1801/467 986/1828/467 987/1816/471 -f 981/1786/468 993/1829/468 982/1818/449 -f 971/1819/469 983/1830/469 984/1820/464 -f 978/1815/470 990/1814/470 991/1821/451 -f 975/1817/471 987/1816/471 988/1822/443 -f 972/1794/464 984/1820/464 985/1823/445 -f 979/1782/451 991/1821/451 992/1824/465 -f 976/1826/443 988/2005/443 989/1827/466 -f 973/1797/445 985/1823/445 986/1828/467 -f 980/1825/465 992/1824/465 993/1829/468 -f 970/1790/449 982/1818/449 983/1830/469 -f 999/1831/471 1011/1852/471 1012/1832/443 -f 996/1834/464 1008/1854/464 1009/1835/445 -f 1003/1837/451 1015/1855/451 1016/1838/465 -f 1000/1840/443 1012/1857/443 1013/1841/466 -f 997/1836/445 1009/1835/445 1010/1843/467 -f 1004/1839/465 1016/1838/465 1017/1845/468 -f 994/1847/449 1006/1853/449 1007/1848/469 -f 1001/1842/466 1013/1841/466 1014/1850/470 -f 998/1844/467 1010/1843/467 1011/1852/471 -f 1005/1846/468 1017/1845/468 1006/1853/449 -f 995/1849/469 1007/1848/469 1008/1854/464 -f 1002/1851/470 1014/1850/470 1015/1855/451 -f 1024/1856/458 1025/1877/459 1013/1841/459 -f 1013/1841/459 1025/1877/459 1026/1858/460 -f 1014/1850/460 1026/1858/460 1027/1859/461 -f 1027/1859/461 1028/1874/462 1016/1838/462 -f 1016/1838/462 1028/1874/462 1029/1860/463 -f 1029/1860/463 1018/1861/453 1006/1853/453 -f 1018/1861/453 1019/1862/452 1007/1848/452 -f 1019/1862/452 1020/1863/454 1008/1854/454 -f 1020/1863/454 1021/1870/455 1009/1835/455 -f 1009/1835/455 1021/1870/455 1022/1864/456 -f 1022/1864/456 1023/1865/457 1011/1852/457 -f 1023/1865/457 1024/1867/458 1012/1832/458 -f 1023/1865/472 1035/1886/472 1036/1866/473 -f 1034/1868/474 1035/1886/472 1023/1865/472 -f 1033/1869/475 1034/1868/474 1022/1864/474 -f 1020/1863/476 1032/1889/476 1033/1869/475 -f 1031/1871/477 1032/1889/476 1020/1863/476 -f 1030/1872/478 1031/1871/477 1019/1862/477 -f 1029/1860/479 1041/1882/479 1030/1872/478 -f 1040/1873/480 1041/1882/479 1029/1860/479 -f 1027/1859/481 1039/1891/481 1040/1873/480 -f 1038/1875/482 1039/1891/481 1027/1859/481 -f 1036/1876/473 1037/1878/483 1025/1877/483 -f 1037/1878/483 1038/1875/482 1026/1858/482 -f 1036/1876/443 1048/2006/443 1049/1879/466 -f 1033/1869/445 1045/1893/445 1046/1880/467 -f 1040/1873/465 1052/1894/465 1053/1881/468 -f 1030/1872/449 1042/1887/449 1043/1883/469 -f 1037/1878/466 1049/1879/466 1050/1884/470 -f 1034/1868/467 1046/1880/467 1047/1885/471 -f 1041/1882/468 1053/1881/468 1042/1887/449 -f 1031/1871/469 1043/1883/469 1044/1888/464 -f 1038/1875/470 1050/1884/470 1051/1890/451 -f 1035/1886/471 1047/1885/471 1048/1892/443 -f 1032/1889/464 1044/1888/464 1045/1893/445 -f 1039/1891/451 1051/1890/451 1052/1894/465 -f 1055/1895/484 1067/1916/469 1068/1896/464 -f 1062/1898/486 1074/1917/470 1075/1899/451 -f 1059/1901/488 1071/1918/471 1072/1902/443 -f 1056/1897/485 1068/1896/464 1069/1904/445 -f 1063/1900/487 1075/1899/451 1076/1906/465 -f 1060/1908/489 1072/2007/443 1073/1909/466 -f 1057/1905/490 1069/1904/445 1070/1911/467 -f 1064/1907/491 1076/1906/465 1077/1913/468 -f 1054/1915/495 1066/1919/449 1067/1916/469 -f 1061/1910/492 1073/1909/466 1074/1917/470 -f 1058/1912/493 1070/1911/467 1071/1918/471 -f 1065/1914/494 1077/1913/468 1066/1919/449 -f 1060/1908/489 1061/1910/492 1049/1920/496 -f 1061/1910/492 1062/1898/486 1050/1922/498 -f 1062/1898/486 1063/1900/487 1051/1924/499 -f 1051/1926/499 1063/1900/487 1064/1907/491 -f 1064/1907/491 1065/1914/494 1053/1928/501 -f 1053/1930/501 1065/1914/494 1054/1915/495 -f 1042/1932/502 1054/1915/495 1055/1895/484 -f 1055/1895/484 1056/1897/485 1044/1934/504 -f 1056/1897/485 1057/1905/490 1045/1936/505 -f 1057/1905/490 1058/1912/493 1046/1938/506 -f 1058/1912/493 1059/1901/488 1047/1940/507 -f 1059/1901/488 1060/1903/489 1048/1942/497 -f 1048/1944/508 1072/1902/508 1071/1918/509 -f 1047/1946/509 1071/1918/509 1070/1911/510 -f 1046/1948/510 1070/1911/510 1069/1904/511 -f 1069/1904/511 1068/1896/512 1044/1950/512 -f 1068/1896/512 1067/1916/513 1043/1952/513 -f 1043/1954/513 1067/1916/513 1066/1919/514 -f 1066/1919/514 1077/1913/515 1053/1956/515 -f 1053/1958/515 1077/1913/515 1076/1906/516 -f 1052/1960/516 1076/1906/516 1075/1899/517 -f 1075/1899/517 1074/1917/518 1050/1962/518 -f 1050/1964/518 1074/1917/518 1073/1909/519 -f 1073/1909/519 1072/2007/508 1048/1966/508 -f 1142/1739/520 1084/1617/532 1085/1718/445 -f 917/1968/521 1098/1642/521 1100/1657/451 -f 920/1969/522 1099/1724/522 1098/1642/521 -f 1095/1636/451 1103/1639/451 1101/1641/521 -f 919/1626/521 1101/1641/521 1102/1646/522 -f 1138/1674/451 1136/1738/531 1106/1640/521 -f 1127/1970/445 1126/1991/523 1114/1971/523 -f 1134/1973/524 1133/1992/451 1121/1974/451 -f 1131/1976/525 1130/2008/442 1118/1977/442 -f 1128/1979/526 1127/1970/445 1115/1972/445 -f 1135/1981/527 1134/1973/524 1122/1975/524 -f 1125/1983/528 1124/1990/444 1112/1984/444 -f 1132/1986/529 1131/1976/525 1119/1978/525 -f 1129/1988/530 1128/1979/526 1116/1980/526 -f 1124/1990/444 1135/1981/527 1123/1982/527 -f 1126/1991/523 1125/1983/528 1113/1985/528 -f 1133/1992/451 1132/1986/529 1120/1987/529 -f 1130/1993/442 1129/1988/530 1117/1989/530 -f 1104/1644/521 1137/1737/531 1139/1670/451 -f 1137/1737/531 1104/1644/521 1105/1643/522 -f 1105/1643/522 1107/1645/522 1136/1738/531 -f 1107/1645/522 1106/1640/521 1136/1738/531 -f 1111/1723/451 1110/1658/451 1139/1670/451 -f 1140/1725/445 1083/1719/445 1082/1619/532 -f 1082/1619/532 1109/1647/448 1143/1676/520 -f 1109/1647/448 1108/1648/448 1143/1676/520 -f 1108/1648/448 1084/1617/532 1142/1739/520 +f 1024/1742/454 979/1743/455 1025/1744/455 +f 1026/1745/456 980/1746/454 1024/1742/454 +f 1026/1745/456 981/1747/457 915/1748/456 +f 1027/1749/458 981/1750/457 1028/1751/457 +f 1029/1752/459 982/1753/458 1027/1749/458 +f 1030/1754/460 983/1755/459 1029/1752/459 +f 1031/1756/461 916/1757/460 1030/1754/460 +f 1031/1756/461 976/1758/462 975/1759/461 +f 1032/1760/463 976/1761/462 1033/1762/462 +f 1032/1760/463 914/1763/464 977/1764/463 +f 1034/1765/465 914/1766/464 1035/1767/464 +f 1025/1768/455 978/1769/465 1034/1765/465 +f 919/1770/466 1032/1760/447 1033/1762/466 +f 987/1771/453 1027/1749/467 1028/1751/453 +f 918/1772/445 1024/1742/468 1025/1744/445 +f 992/1773/447 1035/1767/469 1032/1760/447 +f 917/1774/467 1029/1752/470 1027/1749/467 +f 985/1775/451 1031/1756/471 1030/1754/451 +f 989/1776/468 1026/1745/472 1024/1742/468 +f 991/1777/469 1034/1765/473 1035/1767/469 +f 986/1778/470 1030/1754/451 1029/1752/470 +f 984/1779/471 1033/1762/466 1031/1756/471 +f 988/1780/472 1028/1751/453 1026/1745/472 +f 990/1781/473 1025/1768/445 1034/1765/473 +f 1036/1782/463 1037/1783/464 1038/1784/463 +f 1037/1785/464 1039/1786/465 1040/1787/465 +f 1039/1786/465 1041/1788/455 1040/1789/465 +f 1042/1790/455 1043/1791/454 1041/1792/455 +f 1043/1793/454 1044/1794/456 1045/1795/456 +f 1045/1796/456 1046/1797/457 1047/1798/457 +f 1046/1797/457 1048/1799/458 1047/1800/457 +f 1049/1801/458 1050/1802/459 1048/1803/458 +f 1050/1804/459 1051/1805/460 1052/1806/460 +f 1052/1807/460 1053/1808/461 1054/1809/461 +f 1055/1810/462 1036/1782/463 1038/1811/463 +f 1053/1808/461 1055/1812/462 1054/1813/461 +f 1053/1808/468 1056/1814/472 1057/1815/472 +f 1049/1801/469 1058/1816/473 1059/1817/473 +f 1039/1786/470 1060/1818/451 1042/1790/451 +f 1061/1819/471 1062/1820/466 1044/1794/466 +f 1057/1815/472 1063/1821/453 1036/1782/453 +f 1059/1817/473 1064/1822/445 1051/1805/445 +f 1044/1794/466 1065/1823/447 1046/1797/447 +f 1036/1782/453 1066/1824/467 1067/1825/467 +f 1051/1826/445 1068/1827/468 1053/1808/468 +f 1046/1797/447 1069/1828/469 1049/1801/469 +f 1067/1825/467 1070/1829/470 1039/1786/470 +f 1042/1790/451 1071/1830/471 1061/1819/471 +f 1006/1831/473 1072/1832/445 923/1833/445 +f 1003/1834/466 1073/1835/447 1004/1836/447 +f 1008/1837/453 1074/1838/467 1009/1839/467 +f 923/1840/445 1075/1841/468 1007/1842/468 +f 1004/1836/447 1076/1843/469 1005/1844/469 +f 1009/1839/467 1077/1845/470 1010/1846/470 +f 925/1847/451 1078/1848/471 1002/1849/471 +f 1007/1842/468 1079/1850/472 924/1851/472 +f 1005/1844/469 1080/1852/473 1006/1831/473 +f 1010/1846/470 1081/1853/451 925/1847/451 +f 1002/1849/471 1082/1854/466 1003/1834/466 +f 924/1851/472 1083/1855/453 1008/1837/453 +f 1084/1856/460 1075/1841/461 1072/1857/460 +f 1075/1841/461 1085/1858/462 1079/1850/462 +f 1079/1850/462 1086/1859/463 1083/1855/463 +f 1086/1859/463 1074/1838/464 1083/1855/463 +f 1074/1838/464 1087/1860/465 1077/1845/465 +f 1087/1860/465 1081/1853/455 1077/1845/465 +f 1088/1861/455 1078/1848/454 1081/1853/455 +f 1089/1862/454 1082/1854/456 1078/1848/454 +f 1090/1863/456 1073/1835/457 1082/1854/456 +f 1073/1835/457 1091/1864/458 1076/1843/458 +f 1091/1864/458 1080/1852/459 1076/1843/458 +f 1092/1865/459 1072/1832/460 1080/1852/459 +f 1092/1865/474 1093/1866/475 1084/1867/475 +f 1094/1868/476 1092/1865/474 1091/1864/476 +f 1095/1869/477 1091/1864/476 1096/1870/477 +f 1090/1863/478 1095/1869/477 1096/1870/477 +f 1097/1871/479 1090/1863/478 1089/1862/479 +f 1098/1872/480 1089/1862/479 1088/1861/480 +f 1087/1860/481 1098/1872/480 1088/1861/480 +f 1099/1873/482 1087/1860/481 1100/1874/482 +f 1086/1859/483 1099/1873/482 1100/1874/482 +f 1101/1875/484 1086/1859/483 1085/1858/484 +f 1093/1876/475 1102/1877/485 1084/1856/475 +f 1103/1878/485 1085/1858/484 1102/1877/485 +f 1093/1876/445 920/1879/468 1103/1878/468 +f 1095/1869/447 1001/1880/469 1094/1868/469 +f 1099/1873/467 996/1881/470 1104/1882/470 +f 1098/1872/451 994/1883/471 1097/1871/471 +f 1103/1878/468 999/1884/472 1101/1875/472 +f 1094/1868/469 921/1885/473 1105/1886/473 +f 1104/1882/470 995/1887/451 1098/1872/451 +f 1097/1871/471 993/1888/466 1106/1889/466 +f 1101/1875/472 998/1890/453 1107/1891/453 +f 1105/1886/473 1000/1892/445 1093/1866/445 +f 1106/1889/466 922/1893/447 1095/1869/447 +f 1107/1891/453 997/1894/467 1099/1873/467 +f 1108/1895/486 1109/1896/466 1110/1897/487 +f 1111/1898/488 1112/1899/453 1113/1900/489 +f 1114/1901/490 1115/1902/445 1116/1903/491 +f 1110/1897/487 1117/1904/447 1118/1905/492 +f 1113/1900/489 1119/1906/467 1120/1907/493 +f 1116/1908/491 1121/1909/468 1122/1910/494 +f 1118/1905/492 1123/1911/469 1124/1912/495 +f 1120/1907/493 1125/1913/470 1126/1914/496 +f 1127/1915/497 1128/1916/471 1108/1895/486 +f 1122/1910/494 1129/1917/472 1111/1898/488 +f 1124/1912/495 1130/1918/473 1114/1901/490 +f 1126/1914/496 1131/1919/451 1127/1915/497 +f 1116/1908/491 920/1920/498 1000/1921/499 +f 1122/1910/494 999/1922/500 920/1923/498 +f 1111/1898/488 998/1924/501 999/1925/500 +f 998/1926/501 1120/1907/493 997/1927/502 +f 1120/1907/493 996/1928/503 997/1929/502 +f 996/1930/503 1127/1915/497 995/1931/504 +f 995/1932/504 1108/1895/486 994/1933/505 +f 1108/1895/486 993/1934/506 994/1935/505 +f 1110/1897/487 922/1936/507 993/1937/506 +f 1118/1905/492 1001/1938/508 922/1939/507 +f 1124/1912/495 921/1940/509 1001/1941/508 +f 1114/1901/490 1000/1942/499 921/1943/509 +f 1000/1944/510 1130/1918/511 921/1945/511 +f 921/1946/511 1123/1911/512 1001/1947/512 +f 1001/1948/512 1117/1904/513 922/1949/513 +f 1117/1904/513 993/1950/514 922/1951/513 +f 1109/1896/514 994/1952/515 993/1953/514 +f 994/1954/515 1131/1919/516 995/1955/517 +f 1131/1919/516 996/1956/518 995/1957/517 +f 996/1958/518 1119/1906/519 997/1959/519 +f 997/1960/519 1112/1899/520 998/1961/520 +f 1112/1899/520 999/1962/521 998/1963/520 +f 999/1964/521 1121/1909/522 920/1965/522 +f 1121/1909/522 1000/1966/510 920/1967/522 +f 969/1739/523 1011/1718/447 960/1649/447 +f 939/1968/524 965/1657/453 946/1652/453 +f 941/1969/525 953/1642/524 939/1968/524 +f 947/1636/453 952/1641/524 937/1626/524 +f 937/1626/524 957/1646/525 938/1627/525 +f 961/1674/453 951/1640/524 964/1723/453 +f 1017/1970/447 1132/1971/526 1133/1972/447 +f 1022/1973/527 1134/1974/453 1135/1975/527 +f 1020/1976/528 1136/1977/444 1137/1978/528 +f 966/1979/529 1133/1972/447 1138/1980/529 +f 1023/1981/530 1135/1975/527 1139/1982/530 +f 1015/1983/531 1140/1984/446 1141/1985/531 +f 967/1986/532 1137/1978/528 1142/1987/532 +f 1018/1988/533 1138/1980/529 1143/1989/533 +f 968/1990/446 1139/1982/530 1140/1984/446 +f 1016/1991/526 1141/1985/531 1132/1971/526 +f 1021/1992/453 1142/1987/532 1134/1974/453 +f 1019/1993/444 1143/1989/533 1136/1994/444 +f 955/1644/524 962/1670/453 963/1658/453 +f 973/1738/534 972/1737/534 954/1643/525 +f 964/1723/453 962/1670/453 961/1674/453 +f 971/1725/447 932/1619/535 970/1676/523 +f 959/1648/450 969/1739/523 970/1676/523 +f 1024/1742/454 980/1995/454 979/1743/455 +f 1026/1745/456 915/1996/456 980/1746/454 +f 1026/1745/456 1028/1751/457 981/1747/457 +f 1027/1749/458 982/1997/458 981/1750/457 +f 1029/1752/459 983/1998/459 982/1753/458 +f 1030/1754/460 916/1999/460 983/1755/459 +f 1031/1756/461 975/2000/461 916/1757/460 +f 1031/1756/461 1033/1762/462 976/1758/462 +f 1032/1760/463 977/2001/463 976/1761/462 +f 1032/1760/463 1035/1767/464 914/1763/464 +f 1034/1765/465 978/2002/465 914/1766/464 +f 1025/1768/455 979/2003/455 978/1769/465 +f 919/1770/466 992/1773/447 1032/1760/447 +f 987/1771/453 917/1774/467 1027/1749/467 +f 918/1772/445 989/1776/468 1024/1742/468 +f 992/1773/447 991/1777/469 1035/1767/469 +f 917/1774/467 986/1778/470 1029/1752/470 +f 985/1775/451 984/1779/471 1031/1756/471 +f 989/1776/468 988/1780/472 1026/1745/472 +f 991/1777/469 990/1781/473 1034/1765/473 +f 986/1778/470 985/1775/451 1030/1754/451 +f 984/1779/471 919/1770/466 1033/1762/466 +f 988/1780/472 987/1771/453 1028/1751/453 +f 990/1781/473 918/2004/445 1025/1768/445 +f 1036/1782/463 1067/1825/464 1037/1783/464 +f 1037/1785/464 1067/1825/464 1039/1786/465 +f 1039/1786/465 1042/1790/455 1041/1788/455 +f 1042/1790/455 1061/1819/454 1043/1791/454 +f 1043/1793/454 1061/1819/454 1044/1794/456 +f 1045/1796/456 1044/1794/456 1046/1797/457 +f 1046/1797/457 1049/1801/458 1048/1799/458 +f 1049/1801/458 1059/1817/459 1050/1802/459 +f 1050/1804/459 1059/1817/459 1051/1805/460 +f 1052/1807/460 1051/1826/460 1053/1808/461 +f 1055/1810/462 1057/1815/462 1036/1782/463 +f 1053/1808/461 1057/1815/462 1055/1812/462 +f 1053/1808/468 1068/1827/468 1056/1814/472 +f 1049/1801/469 1069/1828/469 1058/1816/473 +f 1039/1786/470 1070/1829/470 1060/1818/451 +f 1061/1819/471 1071/1830/471 1062/1820/466 +f 1057/1815/472 1056/1814/472 1063/1821/453 +f 1059/1817/473 1058/1816/473 1064/1822/445 +f 1044/1794/466 1062/1820/466 1065/1823/447 +f 1036/1782/453 1063/1821/453 1066/1824/467 +f 1051/1826/445 1064/2005/445 1068/1827/468 +f 1046/1797/447 1065/1823/447 1069/1828/469 +f 1067/1825/467 1066/1824/467 1070/1829/470 +f 1042/1790/451 1060/1818/451 1071/1830/471 +f 1006/1831/473 1080/1852/473 1072/1832/445 +f 1003/1834/466 1082/1854/466 1073/1835/447 +f 1008/1837/453 1083/1855/453 1074/1838/467 +f 923/1840/445 1072/1857/445 1075/1841/468 +f 1004/1836/447 1073/1835/447 1076/1843/469 +f 1009/1839/467 1074/1838/467 1077/1845/470 +f 925/1847/451 1081/1853/451 1078/1848/471 +f 1007/1842/468 1075/1841/468 1079/1850/472 +f 1005/1844/469 1076/1843/469 1080/1852/473 +f 1010/1846/470 1077/1845/470 1081/1853/451 +f 1002/1849/471 1078/1848/471 1082/1854/466 +f 924/1851/472 1079/1850/472 1083/1855/453 +f 1084/1856/460 1102/1877/461 1075/1841/461 +f 1075/1841/461 1102/1877/461 1085/1858/462 +f 1079/1850/462 1085/1858/462 1086/1859/463 +f 1086/1859/463 1100/1874/464 1074/1838/464 +f 1074/1838/464 1100/1874/464 1087/1860/465 +f 1087/1860/465 1088/1861/455 1081/1853/455 +f 1088/1861/455 1089/1862/454 1078/1848/454 +f 1089/1862/454 1090/1863/456 1082/1854/456 +f 1090/1863/456 1096/1870/457 1073/1835/457 +f 1073/1835/457 1096/1870/457 1091/1864/458 +f 1091/1864/458 1092/1865/459 1080/1852/459 +f 1092/1865/459 1084/1867/460 1072/1832/460 +f 1092/1865/474 1105/1886/474 1093/1866/475 +f 1094/1868/476 1105/1886/474 1092/1865/474 +f 1095/1869/477 1094/1868/476 1091/1864/476 +f 1090/1863/478 1106/1889/478 1095/1869/477 +f 1097/1871/479 1106/1889/478 1090/1863/478 +f 1098/1872/480 1097/1871/479 1089/1862/479 +f 1087/1860/481 1104/1882/481 1098/1872/480 +f 1099/1873/482 1104/1882/481 1087/1860/481 +f 1086/1859/483 1107/1891/483 1099/1873/482 +f 1101/1875/484 1107/1891/483 1086/1859/483 +f 1093/1876/475 1103/1878/485 1102/1877/485 +f 1103/1878/485 1101/1875/484 1085/1858/484 +f 1093/1876/445 1000/2006/445 920/1879/468 +f 1095/1869/447 922/1893/447 1001/1880/469 +f 1099/1873/467 997/1894/467 996/1881/470 +f 1098/1872/451 995/1887/451 994/1883/471 +f 1103/1878/468 920/1879/468 999/1884/472 +f 1094/1868/469 1001/1880/469 921/1885/473 +f 1104/1882/470 996/1881/470 995/1887/451 +f 1097/1871/471 994/1883/471 993/1888/466 +f 1101/1875/472 999/1884/472 998/1890/453 +f 1105/1886/473 921/1885/473 1000/1892/445 +f 1106/1889/466 993/1888/466 922/1893/447 +f 1107/1891/453 998/1890/453 997/1894/467 +f 1108/1895/486 1128/1916/471 1109/1896/466 +f 1111/1898/488 1129/1917/472 1112/1899/453 +f 1114/1901/490 1130/1918/473 1115/1902/445 +f 1110/1897/487 1109/1896/466 1117/1904/447 +f 1113/1900/489 1112/1899/453 1119/1906/467 +f 1116/1908/491 1115/2007/445 1121/1909/468 +f 1118/1905/492 1117/1904/447 1123/1911/469 +f 1120/1907/493 1119/1906/467 1125/1913/470 +f 1127/1915/497 1131/1919/451 1128/1916/471 +f 1122/1910/494 1121/1909/468 1129/1917/472 +f 1124/1912/495 1123/1911/469 1130/1918/473 +f 1126/1914/496 1125/1913/470 1131/1919/451 +f 1116/1908/491 1122/1910/494 920/1920/498 +f 1122/1910/494 1111/1898/488 999/1922/500 +f 1111/1898/488 1113/1900/489 998/1924/501 +f 998/1926/501 1113/1900/489 1120/1907/493 +f 1120/1907/493 1126/1914/496 996/1928/503 +f 996/1930/503 1126/1914/496 1127/1915/497 +f 995/1932/504 1127/1915/497 1108/1895/486 +f 1108/1895/486 1110/1897/487 993/1934/506 +f 1110/1897/487 1118/1905/492 922/1936/507 +f 1118/1905/492 1124/1912/495 1001/1938/508 +f 1124/1912/495 1114/1901/490 921/1940/509 +f 1114/1901/490 1116/1903/491 1000/1942/499 +f 1000/1944/510 1115/1902/536 1130/1918/511 +f 921/1946/511 1130/1918/511 1123/1911/512 +f 1001/1948/512 1123/1911/512 1117/1904/513 +f 1117/1904/513 1109/1896/514 993/1950/514 +f 1109/1896/514 1128/1916/515 994/1952/515 +f 994/1954/515 1128/1916/515 1131/1919/516 +f 1131/1919/516 1125/1913/518 996/1956/518 +f 996/1958/518 1125/1913/518 1119/1906/519 +f 997/1960/519 1119/1906/519 1112/1899/520 +f 1112/1899/520 1129/1917/521 999/1962/521 +f 999/1964/521 1129/1917/521 1121/1909/522 +f 1121/1909/522 1115/2007/536 1000/1966/510 +f 969/1739/523 930/1617/535 1011/1718/447 +f 939/1968/524 953/1642/524 965/1657/453 +f 941/1969/525 1014/1724/525 953/1642/524 +f 947/1636/453 950/1639/453 952/1641/524 +f 937/1626/524 952/1641/524 957/1646/525 +f 961/1674/453 973/1738/534 951/1640/524 +f 1017/1970/447 1016/1991/526 1132/1971/526 +f 1022/1973/527 1021/1992/453 1134/1974/453 +f 1020/1976/528 1019/2008/444 1136/1977/444 +f 966/1979/529 1017/1970/447 1133/1972/447 +f 1023/1981/530 1022/1973/527 1135/1975/527 +f 1015/1983/531 968/1990/446 1140/1984/446 +f 967/1986/532 1020/1976/528 1137/1978/528 +f 1018/1988/533 966/1979/529 1138/1980/529 +f 968/1990/446 1023/1981/530 1139/1982/530 +f 1016/1991/526 1015/1983/531 1141/1985/531 +f 1021/1992/453 967/1986/532 1142/1987/532 +f 1019/1993/444 1018/1988/533 1143/1989/533 +f 955/1644/524 972/1737/534 962/1670/453 +f 972/1737/534 955/1644/524 954/1643/525 +f 954/1643/525 956/1645/525 973/1738/534 +f 956/1645/525 951/1640/524 973/1738/534 +f 964/1723/453 963/1658/453 962/1670/453 +f 971/1725/447 1012/1719/447 932/1619/535 +f 932/1619/535 958/1647/450 970/1676/523 +f 958/1647/450 959/1648/450 970/1676/523 +f 959/1648/450 930/1617/535 969/1739/523 o Clip -v 0.062500 0.968750 -1.625003 v -0.062500 0.968750 -1.625003 v 0.062500 2.281250 -1.625003 +v 0.062500 0.968750 -1.625003 +v -0.125000 0.968750 -1.531253 +v 0.062500 0.968750 -1.562503 +v 0.125000 0.968750 -1.531253 v -0.062500 2.281250 -1.625003 v 0.062500 2.281250 -1.562503 +v 0.125000 2.281250 -1.531253 v -0.062500 2.281250 -1.562503 v -0.125000 2.281250 -1.531253 v -0.062500 0.968750 -1.562503 -v 0.062500 0.968750 -1.562503 -v -0.125000 0.968750 -1.531253 -v 0.125000 2.281250 -1.531253 -v 0.125000 0.968750 -1.531253 vt 0.948864 0.965909 vt 0.829545 0.954545 vt 0.948864 0.954545 @@ -5741,7 +5745,7 @@ vt 0.829545 0.943182 vn 0.0000 0.0000 -1.0000 vn 0.0000 -1.0000 -0.0000 vn 0.0000 1.0000 0.0000 -vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 1.0000 vn 0.8507 0.0000 -0.5257 vn 0.4472 0.0000 -0.8944 vn 1.0000 0.0000 0.0000 @@ -5749,44 +5753,45 @@ vn -0.8507 0.0000 -0.5257 vn -0.4472 0.0000 -0.8944 vn -1.0000 0.0000 0.0000 s off -f 1145/2009/533 1146/2010/533 1144/2011/533 -f 1153/2012/534 1152/2013/534 1155/2014/534 -f 1152/2013/534 1145/2015/534 1144/2016/534 -f 1147/2017/535 1148/2018/535 1146/2019/535 -f 1154/2020/536 1153/2012/536 1155/2014/536 -f 1154/2020/535 1149/2021/535 1150/2022/535 -f 1145/2009/533 1147/2023/533 1146/2010/533 -f 1153/2012/534 1151/2024/534 1152/2013/534 -f 1152/2013/534 1151/2024/534 1145/2015/534 -f 1147/2017/535 1149/2021/535 1148/2018/535 -f 1154/2020/536 1150/2022/536 1153/2012/536 -f 1154/2020/535 1148/2018/535 1149/2021/535 +f 1144/2009/537 1145/2010/537 1146/2011/537 +f 1147/2012/538 1148/2013/538 1149/2014/538 +f 1148/2013/538 1144/2015/538 1146/2016/538 +f 1150/2017/539 1151/2018/539 1145/2019/539 +f 1152/2020/540 1147/2012/540 1149/2014/540 +f 1152/2020/539 1153/2021/539 1154/2022/539 +f 1144/2009/537 1150/2023/537 1145/2010/537 +f 1147/2012/538 1155/2024/538 1148/2013/538 +f 1148/2013/538 1155/2024/538 1144/2015/538 +f 1150/2017/539 1153/2021/539 1151/2018/539 +f 1152/2020/540 1154/2022/540 1147/2012/540 +f 1152/2020/539 1151/2018/539 1153/2021/539 s 1 -f 1148/2025/537 1155/2026/538 1152/2027/537 -f 1146/2010/539 1152/2027/537 1144/2011/539 -f 1149/2028/540 1153/2012/541 1150/2022/541 -f 1151/2029/540 1147/2023/542 1145/2009/542 -f 1148/2025/537 1154/2030/538 1155/2026/538 -f 1146/2010/539 1148/2025/537 1152/2027/537 -f 1149/2028/540 1151/2029/540 1153/2012/541 -f 1151/2029/540 1149/2028/540 1147/2023/542 -o Bullet_Bullet.002 +f 1151/2025/541 1149/2026/542 1148/2027/541 +f 1145/2010/543 1148/2027/541 1146/2011/543 +f 1153/2028/544 1147/2012/545 1154/2022/545 +f 1155/2029/544 1150/2023/546 1144/2009/546 +f 1151/2025/541 1152/2030/542 1149/2026/542 +f 1145/2010/543 1151/2025/541 1148/2027/541 +f 1153/2028/544 1155/2029/544 1147/2012/545 +f 1155/2029/544 1153/2028/544 1150/2023/546 +o Bullet +v 0.000000 0.904644 -1.526442 +v 0.093750 0.998305 -1.530532 v 0.000000 1.091966 -1.534621 v -0.066291 1.064533 -1.533423 v -0.093750 0.998305 -1.530532 v -0.066291 0.932077 -1.527640 -v 0.000000 0.904644 -1.526442 v 0.066291 0.932077 -1.527640 -v 0.093750 0.998305 -1.530532 v 0.066291 1.064533 -1.533423 -v 0.000000 1.124680 -0.785335 -v -0.066291 1.097248 -0.784137 -v -0.093750 1.031020 -0.781245 -v -0.066291 0.964791 -0.778354 v 0.000000 0.937359 -0.777156 -v 0.066291 0.964791 -0.778354 +v -0.093750 1.031020 -0.781245 v 0.093750 1.031020 -0.781245 v 0.066291 1.097248 -0.784137 +v 0.066291 0.964791 -0.778354 +v -0.066291 0.964791 -0.778354 +v -0.066291 1.097248 -0.784137 +v 0.000000 1.124680 -0.785335 +v 0.044194 1.077898 -0.720733 v 0.000000 1.096186 -0.721531 v -0.044194 1.077898 -0.720733 v -0.062500 1.033746 -0.718805 @@ -5794,44 +5799,43 @@ v -0.044194 0.989594 -0.716877 v 0.000000 0.971305 -0.716079 v 0.044194 0.989594 -0.716877 v 0.062500 1.033746 -0.718805 -v 0.044194 1.077898 -0.720733 -v 0.000000 1.104365 -0.534210 -v -0.044194 1.086076 -0.533411 -v -0.062500 1.041924 -0.531483 -v -0.044194 0.997772 -0.529556 +v 0.044194 1.086076 -0.533411 v 0.000000 0.979484 -0.528757 v 0.044194 0.997772 -0.529556 +v -0.044194 0.997772 -0.529556 +v -0.044194 1.086076 -0.533411 +v 0.000000 1.104365 -0.534210 v 0.062500 1.041924 -0.531483 -v 0.044194 1.086076 -0.533411 -v 0.000000 1.079950 -0.376980 +v -0.062500 1.041924 -0.531483 v -0.022097 1.070806 -0.376581 +v 0.000000 1.079950 -0.376980 +v 0.022097 1.070806 -0.376581 +v 0.031250 1.048730 -0.375617 +v 0.022097 1.026654 -0.374654 +v 0.000000 1.017509 -0.374254 v -0.031250 1.048730 -0.375617 v -0.022097 1.026654 -0.374654 -v 0.000000 1.017509 -0.374254 -v 0.022097 1.026654 -0.374654 -v 0.031250 1.048730 -0.375617 -v 0.022097 1.070806 -0.376581 v 0.000000 1.051456 -0.313177 vt 0.838068 0.886364 -vt 0.829545 0.894886 vt 0.838068 0.903409 -vt 0.844095 0.900913 +vt 0.829545 0.894886 vt 0.846591 0.894886 +vt 0.844095 0.900913 vt 0.844095 0.888860 vt 0.832042 0.888860 vt 0.832042 0.900913 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.903409 -vt 0.886364 0.897727 vt 0.886364 0.903409 +vt 0.886364 0.897727 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -5847,14 +5851,14 @@ vt 0.886364 0.886364 vt 0.880682 0.892045 vt 0.880682 0.897727 vt 0.863636 0.903409 -vt 0.863636 0.886364 vt 0.863636 0.892045 +vt 0.863636 0.886364 vt 0.863636 0.926136 vt 0.863636 0.914773 vt 0.863636 0.909091 vt 0.863636 0.897727 -vt 0.863636 0.931818 vt 0.880682 0.931818 +vt 0.863636 0.931818 vt 0.863636 0.920455 vt 0.852273 0.914773 vt 0.852273 0.909091 @@ -5864,142 +5868,185 @@ vt 0.852273 0.892045 vt 0.852273 0.886364 vt 0.852273 0.920455 vt 0.852273 0.926136 -vt 0.846591 0.926136 vt 0.852273 0.931818 +vt 0.846591 0.926136 vt 0.846591 0.914773 vt 0.846591 0.903409 vt 0.846591 0.892045 -vn -0.0000 0.0436 0.9990 -vn 0.7071 0.7064 -0.0308 -vn -0.0000 0.9990 -0.0436 -vn 0.7071 -0.7064 0.0308 -vn 1.0000 0.0000 -0.0000 -vn -0.7071 -0.7064 0.0308 -vn -1.0000 0.0000 -0.0000 -vn -0.7071 0.7064 -0.0308 -vn 0.0000 -0.9990 0.0436 -vn -0.6325 -0.6514 -0.4192 -vn -0.0000 -0.9131 -0.4078 -vn 0.6325 -0.6514 -0.4192 -vn 0.8944 -0.0195 -0.4468 -vn 0.6325 0.6123 -0.4744 -vn -0.0000 0.8741 -0.4858 -vn -0.6325 0.6123 -0.4744 -vn -0.8944 -0.0195 -0.4468 -vn -0.7038 -0.7073 -0.0656 -vn -0.0000 0.9902 -0.1397 -vn -0.7038 0.6989 -0.1270 -vn 0.7038 0.6989 -0.1270 -vn 0.7038 -0.7073 -0.0656 -vn 0.0000 -0.9986 -0.0529 -vn -0.9953 -0.0042 -0.0963 -vn 0.9953 -0.0042 -0.0963 -vn 0.6711 -0.6842 -0.2856 -vn -0.0000 -0.9619 -0.2734 -vn -0.6711 -0.6842 -0.2856 -vn -0.9490 -0.0137 -0.3148 -vn -0.6711 0.6567 -0.3441 -vn -0.0000 0.9344 -0.3562 -vn 0.9490 -0.0137 -0.3148 -vn 0.6711 0.6567 -0.3441 vn -0.0000 -0.0436 -0.9990 +vn -0.7071 -0.7064 0.0308 +vn -0.0000 -0.9990 0.0436 +vn -0.7071 0.7064 -0.0308 +vn -1.0000 -0.0000 -0.0000 +vn 0.7071 0.7064 -0.0308 +vn 1.0000 0.0000 -0.0000 +vn 0.7071 -0.7064 0.0308 +vn 0.0000 0.9990 -0.0436 +vn 0.6325 0.6514 0.4192 +vn 0.6324 0.6514 0.4192 +vn 0.0000 0.9131 0.4078 +vn -0.6324 0.6514 0.4192 +vn -0.6325 0.6514 0.4192 +vn -0.8944 0.0195 0.4468 +vn -0.6325 -0.6123 0.4744 +vn -0.0000 -0.8741 0.4858 +vn 0.6325 -0.6123 0.4744 +vn 0.8944 0.0195 0.4468 +vn 0.7038 0.7073 0.0656 +vn 0.7038 -0.6989 0.1270 +vn -0.0000 -0.9902 0.1397 +vn -0.7038 -0.6989 0.1270 +vn -0.7038 0.7073 0.0656 +vn -0.0000 0.9986 0.0529 +vn 0.9953 0.0042 0.0963 +vn -0.9953 0.0042 0.0963 +vn -0.6711 0.6842 0.2856 +vn -0.0000 0.9619 0.2734 +vn 0.6711 0.6842 0.2856 +vn 0.9490 0.0137 0.3148 +vn 0.6711 -0.6567 0.3441 +vn -0.0000 -0.9344 0.3562 +vn -0.9490 0.0137 0.3148 +vn -0.6711 -0.6567 0.3441 +vn -0.0000 0.0436 0.9990 s off -f 1160/2031/543 1162/2032/543 1156/2033/543 -f 1156/2033/543 1157/2034/543 1158/2035/543 -f 1158/2035/543 1159/2036/543 1160/2031/543 -f 1160/2031/543 1161/2037/543 1162/2032/543 -f 1162/2032/543 1163/2038/543 1156/2033/543 -f 1156/2033/543 1158/2035/543 1160/2031/543 +f 1156/2031/547 1158/2032/547 1157/2033/547 +f 1158/2032/547 1160/2034/547 1159/2035/547 +f 1160/2034/547 1156/2031/547 1161/2036/547 +f 1156/2031/547 1157/2033/547 1162/2037/547 +f 1157/2033/547 1158/2032/547 1163/2038/547 +f 1158/2032/547 1156/2031/547 1160/2034/547 s 1 -f 1159/2039/544 1168/2040/545 1160/2041/545 -f 1157/2042/546 1166/2043/547 1158/2044/547 -f 1163/2045/548 1170/2046/549 1171/2047/548 -f 1160/2048/545 1169/2049/550 1161/2050/550 -f 1158/2044/547 1167/2051/544 1159/2039/544 -f 1156/2052/551 1165/2053/546 1157/2042/546 -f 1163/2045/548 1164/2054/551 1156/2052/551 -f 1161/2050/550 1170/2046/549 1162/2055/549 -f 1179/2056/552 1164/2054/553 1171/2047/552 -f 1172/2057/553 1165/2053/554 1164/2054/553 -f 1173/2058/554 1166/2043/555 1165/2053/554 -f 1174/2059/555 1167/2051/556 1166/2043/555 -f 1175/2060/556 1168/2040/557 1167/2051/556 -f 1176/2061/557 1169/2049/558 1168/2062/557 -f 1177/2063/558 1170/2046/559 1169/2049/558 -f 1178/2064/559 1171/2047/552 1170/2046/559 -f 1178/2064/549 1187/2065/560 1179/2056/548 -f 1177/2063/550 1184/2066/561 1185/2067/562 -f 1174/2059/547 1183/2068/563 1175/2060/544 -f 1172/2057/551 1181/2069/564 1173/2058/546 -f 1179/2056/548 1180/2070/565 1172/2057/551 -f 1177/2063/550 1186/2071/566 1178/2064/549 -f 1175/2060/544 1184/2072/561 1176/2073/545 -f 1173/2058/546 1182/2074/567 1174/2059/547 -f 1189/2075/568 1182/2074/567 1181/2069/564 -f 1188/2076/569 1181/2069/564 1180/2070/565 -f 1195/2077/570 1180/2070/565 1187/2065/560 -f 1194/2078/571 1187/2065/560 1186/2071/566 -f 1193/2079/572 1186/2071/566 1185/2067/562 -f 1192/2080/573 1185/2067/562 1184/2066/561 -f 1190/2081/574 1183/2068/563 1182/2074/567 -f 1191/2082/575 1184/2072/561 1183/2068/563 -f 1191/2082/575 1196/2083/576 1192/2084/573 -f 1190/2081/574 1196/2083/576 1191/2082/575 -f 1189/2075/568 1196/2085/576 1190/2081/574 -f 1188/2076/569 1196/2085/576 1189/2075/568 -f 1195/2077/570 1196/2086/576 1188/2076/569 -f 1194/2078/571 1196/2086/576 1195/2077/570 -f 1192/2080/573 1196/2087/576 1193/2079/572 -f 1193/2079/572 1196/2087/576 1194/2078/571 -f 1159/2039/544 1167/2051/544 1168/2040/545 -f 1157/2042/546 1165/2053/546 1166/2043/547 -f 1163/2045/548 1162/2055/549 1170/2046/549 -f 1160/2048/545 1168/2062/545 1169/2049/550 -f 1158/2044/547 1166/2043/547 1167/2051/544 -f 1156/2052/551 1164/2054/551 1165/2053/546 -f 1163/2045/548 1171/2047/548 1164/2054/551 -f 1161/2050/550 1169/2049/550 1170/2046/549 -f 1179/2056/552 1172/2057/553 1164/2054/553 -f 1172/2057/553 1173/2058/554 1165/2053/554 -f 1173/2058/554 1174/2059/555 1166/2043/555 -f 1174/2059/555 1175/2060/556 1167/2051/556 -f 1175/2060/556 1176/2073/557 1168/2040/557 -f 1176/2061/557 1177/2063/558 1169/2049/558 -f 1177/2063/558 1178/2064/559 1170/2046/559 -f 1178/2064/559 1179/2056/552 1171/2047/552 -f 1178/2064/549 1186/2071/566 1187/2065/560 -f 1177/2063/550 1176/2061/545 1184/2066/561 -f 1174/2059/547 1182/2074/567 1183/2068/563 -f 1172/2057/551 1180/2070/565 1181/2069/564 -f 1179/2056/548 1187/2065/560 1180/2070/565 -f 1177/2063/550 1185/2067/562 1186/2071/566 -f 1175/2060/544 1183/2068/563 1184/2072/561 -f 1173/2058/546 1181/2069/564 1182/2074/567 -f 1189/2075/568 1190/2081/574 1182/2074/567 -f 1188/2076/569 1189/2075/568 1181/2069/564 -f 1195/2077/570 1188/2076/569 1180/2070/565 -f 1194/2078/571 1195/2077/570 1187/2065/560 -f 1193/2079/572 1194/2078/571 1186/2071/566 -f 1192/2080/573 1193/2079/572 1185/2067/562 -f 1190/2081/574 1191/2082/575 1183/2068/563 -f 1191/2082/575 1192/2084/573 1184/2072/561 -o Bullets_Bullet.001 +f 1161/2039/548 1156/2040/549 1164/2041/549 +f 1159/2042/550 1160/2043/551 1165/2044/551 +f 1163/2045/552 1167/2046/552 1166/2047/553 +f 1156/2048/549 1162/2049/554 1168/2050/554 +f 1160/2043/551 1161/2039/548 1169/2051/548 +f 1158/2052/555 1159/2042/550 1170/2053/550 +f 1163/2045/552 1158/2052/555 1171/2054/555 +f 1162/2049/554 1157/2055/553 1166/2047/553 +f 1172/2056/556 1167/2046/557 1171/2054/558 +f 1173/2057/558 1171/2054/558 1170/2053/559 +f 1174/2058/560 1170/2053/559 1165/2044/561 +f 1175/2059/561 1165/2044/561 1169/2051/562 +f 1176/2060/562 1169/2051/562 1164/2041/563 +f 1177/2061/563 1164/2062/563 1168/2050/564 +f 1178/2063/564 1168/2050/564 1166/2047/565 +f 1179/2064/565 1166/2047/565 1167/2046/557 +f 1179/2064/553 1172/2056/552 1180/2065/566 +f 1178/2063/554 1182/2066/567 1181/2067/568 +f 1175/2059/551 1176/2060/548 1183/2068/569 +f 1173/2057/555 1174/2058/550 1184/2069/570 +f 1172/2056/552 1173/2057/555 1185/2070/571 +f 1178/2063/554 1179/2064/553 1186/2071/572 +f 1176/2060/548 1177/2072/549 1181/2073/568 +f 1174/2058/550 1175/2059/551 1187/2074/573 +f 1188/2075/574 1184/2069/570 1187/2074/573 +f 1189/2076/575 1185/2070/571 1184/2069/570 +f 1190/2077/576 1180/2065/566 1185/2070/571 +f 1191/2078/577 1186/2071/572 1180/2065/566 +f 1192/2079/578 1182/2066/567 1186/2071/572 +f 1193/2080/579 1181/2067/568 1182/2066/567 +f 1194/2081/580 1187/2074/573 1183/2068/569 +f 1195/2082/581 1183/2068/569 1181/2073/568 +f 1195/2082/581 1193/2083/579 1196/2084/582 +f 1194/2081/580 1195/2082/581 1196/2084/582 +f 1188/2075/574 1194/2081/580 1196/2085/582 +f 1189/2076/575 1188/2075/574 1196/2085/582 +f 1190/2077/576 1189/2076/575 1196/2086/582 +f 1191/2078/577 1190/2077/576 1196/2086/582 +f 1193/2080/579 1192/2079/578 1196/2087/582 +f 1192/2079/578 1191/2078/577 1196/2087/582 +f 1161/2039/548 1164/2041/549 1169/2051/548 +f 1159/2042/550 1165/2044/551 1170/2053/550 +f 1163/2045/552 1166/2047/553 1157/2055/553 +f 1156/2048/549 1168/2050/554 1164/2062/549 +f 1160/2043/551 1169/2051/548 1165/2044/551 +f 1158/2052/555 1170/2053/550 1171/2054/555 +f 1163/2045/552 1171/2054/555 1167/2046/552 +f 1162/2049/554 1166/2047/553 1168/2050/554 +f 1172/2056/556 1171/2054/558 1173/2057/558 +f 1173/2057/558 1170/2053/559 1174/2058/560 +f 1174/2058/560 1165/2044/561 1175/2059/561 +f 1175/2059/561 1169/2051/562 1176/2060/562 +f 1176/2060/562 1164/2041/563 1177/2072/563 +f 1177/2061/563 1168/2050/564 1178/2063/564 +f 1178/2063/564 1166/2047/565 1179/2064/565 +f 1179/2064/565 1167/2046/557 1172/2056/556 +f 1179/2064/553 1180/2065/566 1186/2071/572 +f 1178/2063/554 1181/2067/568 1177/2061/549 +f 1175/2059/551 1183/2068/569 1187/2074/573 +f 1173/2057/555 1184/2069/570 1185/2070/571 +f 1172/2056/552 1185/2070/571 1180/2065/566 +f 1178/2063/554 1186/2071/572 1182/2066/567 +f 1176/2060/548 1181/2073/568 1183/2068/569 +f 1174/2058/550 1187/2074/573 1184/2069/570 +f 1188/2075/574 1187/2074/573 1194/2081/580 +f 1189/2076/575 1184/2069/570 1188/2075/574 +f 1190/2077/576 1185/2070/571 1189/2076/575 +f 1191/2078/577 1180/2065/566 1190/2077/576 +f 1192/2079/578 1186/2071/572 1191/2078/577 +f 1193/2080/579 1182/2066/567 1192/2079/578 +f 1194/2081/580 1183/2068/569 1195/2082/581 +f 1195/2082/581 1181/2073/568 1193/2083/579 +o Bullets +v 0.000000 2.093750 -1.531250 v 0.000000 2.281250 -1.531250 +v 0.093750 2.187500 -1.531250 +v 0.086614 2.035877 -1.531250 +v -0.035877 1.913386 -1.531250 +v 0.035877 2.086614 -1.531250 +v 0.000000 1.718750 -1.531250 +v 0.000000 1.906250 -1.531250 +v 0.093750 1.812500 -1.531250 +v -0.035877 1.538386 -1.531250 +v 0.035877 1.711614 -1.531250 +v 0.086614 1.589123 -1.531250 +v 0.066291 1.503791 -1.531250 +v 0.000000 1.343750 -1.531250 +v 0.000000 1.531250 -1.531250 +v 0.086614 1.285877 -1.531250 +v -0.035877 1.163386 -1.531250 +v 0.035877 1.336614 -1.531250 v -0.066291 2.253791 -1.531250 v -0.093750 2.187500 -1.531250 v -0.066291 2.121209 -1.531250 -v 0.000000 2.093750 -1.531250 v 0.066291 2.121209 -1.531250 -v 0.093750 2.187500 -1.531250 v 0.066291 2.253791 -1.531250 -v 0.000000 2.281250 -0.781250 -v -0.066291 2.253791 -0.781250 -v -0.093750 2.187500 -0.781250 -v -0.066291 2.121209 -0.781250 +v -0.035877 2.086614 -1.531250 +v -0.086614 2.035877 -1.531250 +v -0.086614 1.964123 -1.531250 +v 0.086614 1.964123 -1.531250 +v 0.035877 1.913386 -1.531250 +v -0.066291 1.878791 -1.531250 +v -0.093750 1.812500 -1.531250 +v -0.066291 1.746209 -1.531250 +v 0.066291 1.746209 -1.531250 +v 0.066291 1.878791 -1.531250 +v -0.035877 1.711614 -1.531250 +v -0.086614 1.660877 -1.531250 +v -0.086614 1.589123 -1.531250 +v 0.035877 1.538386 -1.531250 +v 0.086614 1.660877 -1.531250 +v -0.066291 1.503791 -1.531250 +v -0.093750 1.437500 -1.531250 +v -0.066291 1.371209 -1.531250 +v 0.093750 1.437500 -1.531250 +v 0.066291 1.371209 -1.531250 +v -0.035877 1.336614 -1.531250 +v -0.086614 1.285877 -1.531250 +v -0.086614 1.214123 -1.531250 +v 0.086614 1.214123 -1.531250 +v 0.035877 1.163386 -1.531250 v 0.000000 2.093750 -0.781250 -v 0.066291 2.121209 -0.781250 -v 0.093750 2.187500 -0.781250 +v -0.093750 2.187500 -0.781250 v 0.066291 2.253791 -0.781250 +v 0.066291 2.121209 -0.781250 +v -0.066291 2.121209 -0.781250 +v -0.066291 2.253791 -0.781250 +v 0.000000 2.281250 -0.781250 +v 0.093750 2.187500 -0.781250 +v 0.044194 2.231694 -0.718750 v 0.000000 2.250000 -0.718750 v -0.044194 2.231694 -0.718750 v -0.062500 2.187500 -0.718750 @@ -6007,288 +6054,247 @@ v -0.044194 2.143306 -0.718750 v 0.000000 2.125000 -0.718750 v 0.044194 2.143306 -0.718750 v 0.062500 2.187500 -0.718750 -v 0.044194 2.231694 -0.718750 -v 0.000000 2.250000 -0.531250 -v -0.044194 2.231694 -0.531250 -v -0.062500 2.187500 -0.531250 -v -0.044194 2.143306 -0.531250 -v 0.000000 2.125000 -0.531250 -v 0.044194 2.143306 -0.531250 -v 0.062500 2.187500 -0.531250 v 0.044194 2.231694 -0.531250 -v 0.000000 2.218750 -0.375236 -v -0.022097 2.209597 -0.375236 +v 0.044194 2.143306 -0.531250 +v -0.044194 2.143306 -0.531250 +v -0.044194 2.231694 -0.531250 +v 0.000000 2.250000 -0.531250 +v 0.062500 2.187500 -0.531250 +v 0.000000 2.125000 -0.531250 +v -0.062500 2.187500 -0.531250 v -0.031250 2.187500 -0.375236 -v -0.022097 2.165403 -0.375236 -v 0.000000 2.156250 -0.375236 -v 0.022097 2.165403 -0.375236 -v 0.031250 2.187500 -0.375236 +v -0.022097 2.209597 -0.375236 v 0.022097 2.209597 -0.375236 +v 0.031250 2.187500 -0.375236 +v 0.000000 2.156250 -0.375236 +v -0.022097 2.165403 -0.375236 v 0.000000 2.187500 -0.312736 -v 0.035877 2.086614 -1.531250 -v -0.035877 2.086614 -1.531250 -v -0.086614 2.035877 -1.531250 -v -0.086614 1.964123 -1.531250 -v -0.035877 1.913386 -1.531250 -v 0.035877 1.913386 -1.531250 -v 0.086614 1.964123 -1.531250 -v 0.086614 2.035877 -1.531250 -v 0.035877 2.086614 -0.781250 -v -0.035877 2.086614 -0.781250 -v -0.086614 2.035877 -0.781250 -v -0.086614 1.964123 -0.781250 +v 0.000000 2.218750 -0.375236 +v 0.022097 2.165403 -0.375236 v -0.035877 1.913386 -0.781250 -v 0.035877 1.913386 -0.781250 -v 0.086614 1.964123 -0.781250 +v -0.086614 2.035877 -0.781250 v 0.086614 2.035877 -0.781250 -v 0.023918 2.057743 -0.718750 +v 0.035877 1.913386 -0.781250 +v -0.086614 1.964123 -0.781250 +v -0.035877 2.086614 -0.781250 +v 0.035877 2.086614 -0.781250 +v 0.086614 1.964123 -0.781250 +v 0.057742 2.023918 -0.718750 v -0.023918 2.057743 -0.718750 v -0.057742 2.023918 -0.718750 v -0.057742 1.976082 -0.718750 v -0.023918 1.942258 -0.718750 v 0.023918 1.942258 -0.718750 v 0.057742 1.976082 -0.718750 -v 0.057742 2.023918 -0.718750 -v 0.023918 2.057743 -0.531250 -v -0.023918 2.057743 -0.531250 -v -0.057742 2.023918 -0.531250 -v -0.057742 1.976082 -0.531250 -v -0.023918 1.942258 -0.531250 -v 0.023918 1.942258 -0.531250 -v 0.057742 1.976082 -0.531250 v 0.057742 2.023918 -0.531250 -v 0.011959 2.028871 -0.375236 -v -0.011959 2.028871 -0.375236 +v 0.023918 1.942258 -0.531250 +v -0.057742 1.976082 -0.531250 +v 0.023918 2.057743 -0.718750 +v -0.023918 2.057743 -0.531250 +v 0.023918 2.057743 -0.531250 +v 0.057742 1.976082 -0.531250 +v -0.023918 1.942258 -0.531250 +v -0.057742 2.023918 -0.531250 v -0.028871 2.011959 -0.375236 +v -0.011959 2.028871 -0.375236 +v 0.028871 2.011959 -0.375236 +v 0.028871 1.988041 -0.375236 +v 0.011959 1.971129 -0.375236 v -0.028871 1.988041 -0.375236 v -0.011959 1.971129 -0.375236 -v 0.011959 1.971129 -0.375236 -v 0.028871 1.988041 -0.375236 -v 0.028871 2.011959 -0.375236 v 0.000000 2.000000 -0.312736 -v 0.000000 1.906250 -1.531250 -v -0.066291 1.878791 -1.531250 -v -0.093750 1.812500 -1.531250 -v -0.066291 1.746209 -1.531250 -v 0.000000 1.718750 -1.531250 -v 0.066291 1.746209 -1.531250 -v 0.093750 1.812500 -1.531250 -v 0.066291 1.878791 -1.531250 -v 0.000000 1.906250 -0.781250 -v -0.066291 1.878791 -0.781250 -v -0.093750 1.812500 -0.781250 -v -0.066291 1.746209 -0.781250 +v 0.011959 2.028871 -0.375236 v 0.000000 1.718750 -0.781250 -v 0.066291 1.746209 -0.781250 -v 0.093750 1.812500 -0.781250 +v -0.093750 1.812500 -0.781250 v 0.066291 1.878791 -0.781250 +v 0.066291 1.746209 -0.781250 +v -0.066291 1.746209 -0.781250 +v -0.066291 1.878791 -0.781250 +v 0.000000 1.906250 -0.781250 +v 0.093750 1.812500 -0.781250 +v 0.044194 1.856694 -0.718750 v 0.000000 1.875000 -0.718750 -v -0.044194 1.856694 -0.718750 v -0.062500 1.812500 -0.718750 v -0.044194 1.768306 -0.718750 -v 0.000000 1.750000 -0.718750 v 0.044194 1.768306 -0.718750 v 0.062500 1.812500 -0.718750 -v 0.044194 1.856694 -0.718750 -v 0.000000 1.875000 -0.531250 -v -0.044194 1.856694 -0.531250 -v -0.062500 1.812500 -0.531250 -v -0.044194 1.768306 -0.531250 -v 0.000000 1.750000 -0.531250 -v 0.044194 1.768306 -0.531250 -v 0.062500 1.812500 -0.531250 v 0.044194 1.856694 -0.531250 -v 0.000000 1.843750 -0.375236 -v -0.022097 1.834597 -0.375236 +v 0.000000 1.750000 -0.718750 +v 0.044194 1.768306 -0.531250 +v -0.044194 1.768306 -0.531250 +v -0.044194 1.856694 -0.718750 +v -0.044194 1.856694 -0.531250 +v 0.000000 1.875000 -0.531250 +v 0.062500 1.812500 -0.531250 +v 0.000000 1.750000 -0.531250 +v -0.062500 1.812500 -0.531250 v -0.031250 1.812500 -0.375236 +v -0.022097 1.834597 -0.375236 +v 0.022097 1.834597 -0.375236 +v 0.031250 1.812500 -0.375236 +v 0.022097 1.790403 -0.375236 v -0.022097 1.790403 -0.375236 v 0.000000 1.781250 -0.375236 -v 0.022097 1.790403 -0.375236 -v 0.031250 1.812500 -0.375236 -v 0.022097 1.834597 -0.375236 v 0.000000 1.812500 -0.312736 -v 0.035877 1.711614 -1.531250 -v -0.035877 1.711614 -1.531250 -v -0.086614 1.660877 -1.531250 -v -0.086614 1.589123 -1.531250 -v -0.035877 1.538386 -1.531250 -v 0.035877 1.538386 -1.531250 -v 0.086614 1.589123 -1.531250 -v 0.086614 1.660877 -1.531250 -v 0.035877 1.711614 -0.781250 -v -0.035877 1.711614 -0.781250 -v -0.086614 1.660877 -0.781250 -v -0.086614 1.589123 -0.781250 +v 0.000000 1.843750 -0.375236 v -0.035877 1.538386 -0.781250 -v 0.035877 1.538386 -0.781250 -v 0.086614 1.589123 -0.781250 +v -0.086614 1.660877 -0.781250 v 0.086614 1.660877 -0.781250 +v 0.035877 1.538386 -0.781250 +v -0.086614 1.589123 -0.781250 +v -0.035877 1.711614 -0.781250 +v 0.035877 1.711614 -0.781250 +v 0.086614 1.589123 -0.781250 v 0.023918 1.682742 -0.718750 v -0.023918 1.682742 -0.718750 v -0.057742 1.648918 -0.718750 v -0.057742 1.601082 -0.718750 v -0.023918 1.567258 -0.718750 -v 0.023918 1.567258 -0.718750 v 0.057743 1.601082 -0.718750 v 0.057743 1.648918 -0.718750 -v 0.023918 1.682742 -0.531250 -v -0.023918 1.682742 -0.531250 -v -0.057742 1.648918 -0.531250 -v -0.057742 1.601082 -0.531250 -v -0.023918 1.567258 -0.531250 -v 0.023918 1.567258 -0.531250 -v 0.057743 1.601082 -0.531250 v 0.057743 1.648918 -0.531250 -v 0.011959 1.653871 -0.375236 +v 0.023918 1.567258 -0.718750 +v 0.023918 1.567258 -0.531250 +v -0.057742 1.601082 -0.531250 +v -0.023918 1.682742 -0.531250 +v 0.023918 1.682742 -0.531250 +v 0.057743 1.601082 -0.531250 +v -0.023918 1.567258 -0.531250 +v -0.057742 1.648918 -0.531250 v -0.011959 1.653871 -0.375236 +v 0.011959 1.653871 -0.375236 +v 0.028871 1.636959 -0.375236 +v 0.028871 1.613041 -0.375236 +v 0.011959 1.596129 -0.375236 +v -0.011959 1.596129 -0.375236 v -0.028871 1.636959 -0.375236 v -0.028871 1.613041 -0.375236 -v -0.011959 1.596129 -0.375236 -v 0.011959 1.596129 -0.375236 -v 0.028871 1.613041 -0.375236 -v 0.028871 1.636959 -0.375236 v 0.000000 1.625000 -0.312736 -v 0.000000 1.531250 -1.531250 -v -0.066291 1.503791 -1.531250 -v -0.093750 1.437500 -1.531250 -v -0.066291 1.371209 -1.531250 -v 0.000000 1.343750 -1.531250 -v 0.066291 1.371209 -1.531250 -v 0.093750 1.437500 -1.531250 -v 0.066291 1.503791 -1.531250 -v 0.000000 1.531250 -0.781250 -v -0.066291 1.503791 -0.781250 -v -0.093750 1.437500 -0.781250 -v -0.066291 1.371209 -0.781250 v 0.000000 1.343750 -0.781250 -v 0.066291 1.371209 -0.781250 -v 0.093750 1.437500 -0.781250 +v -0.093750 1.437500 -0.781250 v 0.066291 1.503791 -0.781250 -v 0.000000 1.500000 -0.718750 +v 0.066291 1.371209 -0.781250 +v -0.066291 1.371209 -0.781250 +v -0.066291 1.503791 -0.781250 +v 0.000000 1.531250 -0.781250 +v 0.093750 1.437500 -0.781250 +v 0.044194 1.481694 -0.718750 v -0.044194 1.481694 -0.718750 v -0.062500 1.437500 -0.718750 v -0.044194 1.393306 -0.718750 v 0.000000 1.375000 -0.718750 -v 0.044194 1.393306 -0.718750 v 0.062500 1.437500 -0.718750 -v 0.044194 1.481694 -0.718750 -v 0.000000 1.500000 -0.531250 -v -0.044194 1.481694 -0.531250 -v -0.062500 1.437500 -0.531250 -v -0.044194 1.393306 -0.531250 -v 0.000000 1.375000 -0.531250 -v 0.044194 1.393306 -0.531250 -v 0.062500 1.437500 -0.531250 v 0.044194 1.481694 -0.531250 -v 0.000000 1.468750 -0.375236 +v 0.044194 1.393306 -0.718750 +v 0.044194 1.393306 -0.531250 +v -0.044194 1.393306 -0.531250 +v 0.000000 1.500000 -0.718750 +v -0.044194 1.481694 -0.531250 +v 0.000000 1.500000 -0.531250 +v 0.062500 1.437500 -0.531250 +v 0.000000 1.375000 -0.531250 +v -0.062500 1.437500 -0.531250 v -0.022097 1.459597 -0.375236 +v 0.022097 1.459597 -0.375236 +v 0.022097 1.415403 -0.375236 +v 0.000000 1.406250 -0.375236 v -0.031250 1.437500 -0.375236 v -0.022097 1.415403 -0.375236 -v 0.000000 1.406250 -0.375236 -v 0.022097 1.415403 -0.375236 -v 0.031250 1.437500 -0.375236 -v 0.022097 1.459597 -0.375236 v 0.000000 1.437500 -0.312736 -v 0.035877 1.336614 -1.531250 -v -0.035877 1.336614 -1.531250 -v -0.086614 1.285877 -1.531250 -v -0.086614 1.214123 -1.531250 -v -0.035877 1.163386 -1.531250 -v 0.035877 1.163386 -1.531250 -v 0.086614 1.214123 -1.531250 -v 0.086614 1.285877 -1.531250 -v 0.035877 1.336614 -0.781250 -v -0.035877 1.336614 -0.781250 -v -0.086614 1.285877 -0.781250 -v -0.086614 1.214123 -0.781250 +v 0.000000 1.468750 -0.375236 +v 0.031250 1.437500 -0.375236 v -0.035877 1.163386 -0.781250 -v 0.035877 1.163386 -0.781250 -v 0.086614 1.214123 -0.781250 +v -0.086614 1.285877 -0.781250 v 0.086614 1.285877 -0.781250 -v 0.023918 1.307742 -0.718750 +v 0.035877 1.163386 -0.781250 +v -0.086614 1.214123 -0.781250 +v -0.035877 1.336614 -0.781250 +v 0.035877 1.336614 -0.781250 +v 0.086614 1.214123 -0.781250 +v 0.057742 1.273918 -0.718750 v -0.023918 1.307743 -0.718750 v -0.057742 1.273918 -0.718750 v -0.057742 1.226082 -0.718750 v -0.023918 1.192258 -0.718750 -v 0.023918 1.192258 -0.718750 v 0.057742 1.226082 -0.718750 -v 0.057742 1.273918 -0.718750 -v 0.023918 1.307742 -0.531250 -v -0.023918 1.307743 -0.531250 -v -0.057742 1.273918 -0.531250 -v -0.057742 1.226082 -0.531250 -v -0.023918 1.192258 -0.531250 -v 0.023918 1.192258 -0.531250 -v 0.057742 1.226082 -0.531250 v 0.057742 1.273918 -0.531250 -v 0.011959 1.278871 -0.375236 -v -0.011959 1.278871 -0.375236 +v 0.023918 1.192258 -0.718750 +v 0.023918 1.192258 -0.531250 +v -0.057742 1.226082 -0.531250 +v 0.023918 1.307742 -0.718750 +v -0.023918 1.307743 -0.531250 +v 0.023918 1.307742 -0.531250 +v 0.057742 1.226082 -0.531250 +v -0.023918 1.192258 -0.531250 +v -0.057742 1.273918 -0.531250 v -0.028871 1.261959 -0.375236 -v -0.028871 1.238041 -0.375236 -v -0.011959 1.221129 -0.375236 -v 0.011959 1.221129 -0.375236 -v 0.028871 1.238041 -0.375236 +v -0.011959 1.278871 -0.375236 v 0.028871 1.261959 -0.375236 +v 0.028871 1.238041 -0.375236 +v 0.011959 1.221129 -0.375236 +v -0.011959 1.221129 -0.375236 +v -0.028871 1.238041 -0.375236 v 0.000000 1.250000 -0.312736 -v 0.000000 1.156250 -1.531250 -v -0.066291 1.128791 -1.531250 -v -0.093750 1.062500 -1.531250 +v 0.011959 1.278871 -0.375236 v -0.066291 0.996209 -1.531250 v 0.000000 0.968750 -1.531250 -v 0.066291 0.996209 -1.531250 +v 0.000000 0.968750 -0.781250 +v -0.066291 1.128791 -1.531250 +v -0.093750 1.062500 -1.531250 +v -0.093750 1.062500 -0.781250 v 0.093750 1.062500 -1.531250 v 0.066291 1.128791 -1.531250 -v 0.000000 1.156250 -0.781250 -v -0.066291 1.128791 -0.781250 -v -0.093750 1.062500 -0.781250 -v -0.066291 0.996209 -0.781250 -v 0.000000 0.968750 -0.781250 -v 0.066291 0.996209 -0.781250 -v 0.093750 1.062500 -0.781250 v 0.066291 1.128791 -0.781250 -v 0.000000 1.125000 -0.718750 +v 0.066291 0.996209 -1.531250 +v 0.066291 0.996209 -0.781250 +v -0.066291 0.996209 -0.781250 +v 0.000000 1.156250 -1.531250 +v -0.066291 1.128791 -0.781250 +v 0.000000 1.156250 -0.781250 +v 0.093750 1.062500 -0.781250 +v 0.044194 1.106694 -0.718750 v -0.044194 1.106694 -0.718750 v -0.062500 1.062500 -0.718750 v -0.044194 1.018306 -0.718750 -v 0.000000 1.000000 -0.718750 v 0.044194 1.018306 -0.718750 v 0.062500 1.062500 -0.718750 -v 0.044194 1.106694 -0.718750 -v 0.000000 1.125000 -0.531250 -v -0.044194 1.106694 -0.531250 -v -0.062500 1.062500 -0.531250 -v -0.044194 1.018306 -0.531250 -v 0.000000 1.000000 -0.531250 -v 0.044194 1.018306 -0.531250 -v 0.062500 1.062500 -0.531250 v 0.044194 1.106694 -0.531250 -v 0.000000 1.093750 -0.375236 +v 0.000000 1.000000 -0.718750 +v 0.044194 1.018306 -0.531250 +v -0.044194 1.018306 -0.531250 +v 0.000000 1.125000 -0.718750 +v -0.044194 1.106694 -0.531250 +v 0.000000 1.125000 -0.531250 +v 0.062500 1.062500 -0.531250 +v 0.000000 1.000000 -0.531250 +v -0.062500 1.062500 -0.531250 v -0.022097 1.084597 -0.375236 -v -0.031250 1.062500 -0.375236 -v -0.022097 1.040403 -0.375236 -v 0.000000 1.031250 -0.375236 -v 0.022097 1.040403 -0.375236 +v 0.000000 1.093750 -0.375236 v 0.031250 1.062500 -0.375236 -v 0.022097 1.084597 -0.375236 +v 0.022097 1.040403 -0.375236 +v -0.031250 1.062500 -0.375236 +v 0.000000 1.031250 -0.375236 +v -0.022097 1.040403 -0.375236 v 0.000000 1.062500 -0.312736 +v 0.022097 1.084597 -0.375236 vt 0.838068 0.886364 +vt 0.838068 0.903409 vt 0.829545 0.894886 +vt 0.832042 0.900913 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.829545 0.894886 +vt 0.838068 0.886364 +vt 0.838068 0.903409 +vt 0.829545 0.894886 +vt 0.832042 0.900913 +vt 0.838068 0.886364 vt 0.838068 0.903409 vt 0.832042 0.900913 -vt 0.838068 0.903409 vt 0.838068 0.886364 -vt 0.838068 0.886364 -vt 0.829545 0.894886 vt 0.838068 0.903409 -vt 0.838068 0.886364 -vt 0.829545 0.894886 -vt 0.838068 0.903409 -vt 0.832042 0.900913 -vt 0.838068 0.903409 -vt 0.838068 0.886364 -vt 0.832042 0.900913 -vt 0.838068 0.903409 -vt 0.838068 0.886364 vt 0.844095 0.900913 vt 0.846591 0.894886 vt 0.844095 0.888860 @@ -6297,8 +6303,8 @@ vt 0.832042 0.900913 vt 0.844095 0.900913 vt 0.846591 0.894886 vt 0.844095 0.888860 -vt 0.832042 0.888860 vt 0.829545 0.894886 +vt 0.832042 0.888860 vt 0.844095 0.900913 vt 0.846591 0.894886 vt 0.844095 0.888860 @@ -6312,25 +6318,25 @@ vt 0.832042 0.900913 vt 0.844095 0.900913 vt 0.846591 0.894886 vt 0.844095 0.888860 -vt 0.832042 0.888860 vt 0.829545 0.894886 +vt 0.832042 0.888860 vt 0.844095 0.900913 vt 0.846591 0.894886 vt 0.844095 0.888860 -vt 0.832042 0.888860 vt 0.829545 0.894886 +vt 0.832042 0.888860 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6351,8 +6357,8 @@ vt 0.863636 0.926136 vt 0.863636 0.914773 vt 0.863636 0.909091 vt 0.863636 0.897727 -vt 0.863636 0.931818 vt 0.880682 0.931818 +vt 0.863636 0.931818 vt 0.863636 0.920455 vt 0.852273 0.920455 vt 0.852273 0.914773 @@ -6361,25 +6367,25 @@ vt 0.852273 0.897727 vt 0.852273 0.886364 vt 0.863636 0.886364 vt 0.852273 0.926136 -vt 0.846591 0.926136 vt 0.852273 0.931818 +vt 0.846591 0.926136 vt 0.846591 0.914773 vt 0.852273 0.909091 vt 0.846591 0.903409 -vt 0.846591 0.892045 vt 0.852273 0.892045 +vt 0.846591 0.892045 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6418,17 +6424,17 @@ vt 0.846591 0.903409 vt 0.852273 0.886364 vt 0.846591 0.892045 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6445,12 +6451,12 @@ vt 0.863636 0.903409 vt 0.880682 0.886364 vt 0.863636 0.892045 vt 0.863636 0.926136 -vt 0.863636 0.914773 vt 0.880682 0.914773 +vt 0.863636 0.914773 vt 0.863636 0.909091 vt 0.863636 0.897727 -vt 0.863636 0.931818 vt 0.880682 0.931818 +vt 0.863636 0.931818 vt 0.863636 0.920455 vt 0.852273 0.920455 vt 0.852273 0.914773 @@ -6459,25 +6465,25 @@ vt 0.852273 0.897727 vt 0.852273 0.892045 vt 0.863636 0.886364 vt 0.852273 0.926136 -vt 0.846591 0.926136 vt 0.852273 0.931818 +vt 0.846591 0.926136 vt 0.846591 0.914773 vt 0.852273 0.909091 vt 0.846591 0.903409 vt 0.852273 0.886364 vt 0.846591 0.892045 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6492,14 +6498,14 @@ vt 0.886364 0.886364 vt 0.880682 0.897727 vt 0.880682 0.903409 vt 0.863636 0.903409 -vt 0.863636 0.892045 vt 0.880682 0.892045 +vt 0.863636 0.892045 vt 0.863636 0.926136 vt 0.863636 0.914773 vt 0.863636 0.909091 vt 0.863636 0.897727 -vt 0.863636 0.931818 vt 0.880682 0.931818 +vt 0.863636 0.931818 vt 0.863636 0.920455 vt 0.852273 0.914773 vt 0.852273 0.909091 @@ -6510,23 +6516,23 @@ vt 0.852273 0.886364 vt 0.863636 0.886364 vt 0.852273 0.920455 vt 0.852273 0.926136 -vt 0.846591 0.926136 vt 0.852273 0.931818 +vt 0.846591 0.926136 vt 0.846591 0.914773 vt 0.846591 0.903409 vt 0.846591 0.892045 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6540,8 +6546,8 @@ vt 0.880682 0.886364 vt 0.886364 0.886364 vt 0.880682 0.897727 vt 0.863636 0.903409 -vt 0.863636 0.892045 vt 0.880682 0.892045 +vt 0.863636 0.892045 vt 0.863636 0.926136 vt 0.880682 0.909091 vt 0.863636 0.914773 @@ -6565,17 +6571,17 @@ vt 0.846591 0.903409 vt 0.852273 0.897727 vt 0.846591 0.892045 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6589,15 +6595,15 @@ vt 0.880682 0.886364 vt 0.886364 0.886364 vt 0.880682 0.897727 vt 0.863636 0.903409 -vt 0.863636 0.892045 vt 0.880682 0.892045 +vt 0.863636 0.892045 vt 0.863636 0.926136 vt 0.880682 0.909091 vt 0.863636 0.914773 vt 0.863636 0.909091 vt 0.863636 0.897727 -vt 0.863636 0.931818 vt 0.880682 0.931818 +vt 0.863636 0.931818 vt 0.863636 0.920455 vt 0.852273 0.920455 vt 0.852273 0.914773 @@ -6607,24 +6613,24 @@ vt 0.852273 0.892045 vt 0.852273 0.886364 vt 0.863636 0.886364 vt 0.852273 0.926136 -vt 0.846591 0.926136 vt 0.852273 0.931818 +vt 0.846591 0.926136 vt 0.846591 0.914773 vt 0.852273 0.909091 vt 0.846591 0.903409 vt 0.846591 0.892045 vt 0.954545 0.926136 -vt 0.886364 0.931818 vt 0.954545 0.931818 +vt 0.886364 0.931818 vt 0.954545 0.914773 -vt 0.886364 0.920455 vt 0.954545 0.920455 +vt 0.886364 0.920455 vt 0.954545 0.897727 -vt 0.886364 0.903409 vt 0.954545 0.903409 +vt 0.886364 0.903409 vt 0.954545 0.886364 -vt 0.886364 0.892045 vt 0.954545 0.892045 +vt 0.886364 0.892045 vt 0.886364 0.926136 vt 0.954545 0.909091 vt 0.886364 0.914773 @@ -6645,8 +6651,8 @@ vt 0.880682 0.909091 vt 0.863636 0.914773 vt 0.863636 0.909091 vt 0.863636 0.897727 -vt 0.863636 0.931818 vt 0.880682 0.931818 +vt 0.863636 0.931818 vt 0.863636 0.920455 vt 0.852273 0.914773 vt 0.852273 0.909091 @@ -6662,611 +6668,611 @@ vt 0.852273 0.903409 vt 0.846591 0.903409 vt 0.852273 0.886364 vt 0.846591 0.892045 -vn 0.0000 0.0000 1.0000 -vn 0.7071 0.7071 0.0000 -vn -0.0000 1.0000 0.0000 -vn 0.7071 -0.7071 0.0000 -vn 1.0000 0.0000 0.0000 -vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 vn -0.7071 -0.7071 0.0000 +vn -0.0000 -1.0000 0.0000 vn -0.7071 0.7071 0.0000 -vn 0.0000 -1.0000 0.0000 -vn -0.6325 -0.6325 -0.4472 -vn -0.0000 -0.8944 -0.4472 -vn 0.6325 -0.6325 -0.4472 -vn 0.8944 -0.0000 -0.4472 -vn 0.6325 0.6325 -0.4472 -vn -0.0000 0.8944 -0.4472 -vn -0.6325 0.6325 -0.4472 -vn -0.8944 0.0000 -0.4472 -vn -0.7038 -0.7038 -0.0964 -vn -0.7038 0.7038 -0.0964 -vn 0.7038 0.7038 -0.0964 -vn 0.7038 -0.7038 -0.0964 -vn 0.0000 -0.9953 -0.0964 -vn -0.9953 0.0000 -0.0964 -vn -0.0000 0.9953 -0.0964 -vn 0.9953 0.0000 -0.0964 -vn 0.9490 0.0000 -0.3151 -vn 0.6711 -0.6711 -0.3151 -vn -0.6711 -0.6711 -0.3151 -vn -0.9490 0.0000 -0.3151 -vn 0.0000 0.9490 -0.3151 -vn 0.6711 0.6711 -0.3151 -vn -0.0000 0.0000 -1.0000 -vn -0.0000 -0.9490 -0.3151 -vn -0.6711 0.6711 -0.3151 -vn 0.9239 0.3827 0.0000 -vn 0.3827 0.9239 0.0000 -vn 0.3827 -0.9239 0.0000 -vn 0.9239 -0.3827 0.0000 -vn -0.9239 0.3827 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.6325 0.6325 0.4472 +vn 0.0000 0.8944 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.8944 0.0000 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.0000 -0.8944 0.4472 +vn 0.6325 -0.6325 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.7038 0.7038 0.0964 +vn 0.7038 -0.7038 0.0964 +vn -0.7038 -0.7038 0.0964 +vn -0.7038 0.7038 0.0964 +vn 0.0000 0.9953 0.0964 +vn 0.9953 0.0000 0.0964 +vn 0.0000 -0.9953 0.0964 +vn -0.9953 -0.0000 0.0964 +vn -0.9490 -0.0000 0.3151 +vn -0.6711 0.6711 0.3151 +vn 0.6711 0.6711 0.3151 +vn 0.9490 0.0000 0.3151 +vn 0.0000 -0.9490 0.3151 +vn -0.6711 -0.6711 0.3151 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.9490 0.3151 +vn 0.6711 -0.6711 0.3151 vn -0.9239 -0.3827 0.0000 +vn -0.3827 -0.9239 -0.0000 vn -0.3827 0.9239 0.0000 -vn -0.3827 -0.9239 0.0000 -vn -0.8263 -0.3423 -0.4472 -vn -0.3423 -0.8263 -0.4472 -vn 0.3423 -0.8263 -0.4472 -vn 0.8263 -0.3423 -0.4472 -vn 0.8263 0.3423 -0.4472 -vn 0.3423 0.8263 -0.4472 -vn -0.3423 0.8263 -0.4472 -vn -0.8263 0.3423 -0.4472 -vn -0.9196 -0.3809 -0.0964 -vn -0.3809 0.9196 -0.0964 -vn 0.9196 0.3809 -0.0964 -vn 0.3809 -0.9196 -0.0964 -vn -0.3809 -0.9196 -0.0964 -vn -0.9196 0.3809 -0.0964 -vn 0.3809 0.9196 -0.0964 -vn 0.9196 -0.3809 -0.0964 -vn 0.8768 -0.3632 -0.3151 -vn 0.3632 -0.8768 -0.3151 -vn -0.8768 -0.3632 -0.3151 -vn -0.8768 0.3632 -0.3151 -vn -0.3632 0.8768 -0.3151 -vn 0.8768 0.3632 -0.3151 -vn 0.3632 0.8768 -0.3151 -vn -0.3632 -0.8768 -0.3151 +vn -0.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.8263 0.3423 0.4472 +vn 0.3423 0.8263 0.4472 +vn -0.3423 0.8263 0.4472 +vn -0.8263 0.3423 0.4472 +vn -0.8263 -0.3423 0.4472 +vn -0.3423 -0.8263 0.4472 +vn 0.3423 -0.8263 0.4472 +vn 0.8263 -0.3423 0.4472 +vn 0.9196 0.3809 0.0964 +vn 0.3809 -0.9196 0.0964 +vn -0.9196 -0.3809 0.0964 +vn -0.3809 0.9196 0.0964 +vn 0.3809 0.9196 0.0964 +vn 0.9196 -0.3809 0.0964 +vn -0.3809 -0.9196 0.0964 +vn -0.9196 0.3809 0.0964 +vn -0.8768 0.3632 0.3151 +vn -0.3632 0.8768 0.3151 +vn 0.8768 0.3632 0.3151 +vn 0.8768 -0.3632 0.3151 +vn 0.3632 -0.8768 0.3151 +vn -0.8768 -0.3632 0.3151 +vn -0.3632 -0.8768 0.3151 +vn 0.3632 0.8768 0.3151 s off -f 1201/2088/577 1203/2089/577 1197/2090/577 -f 1245/2091/577 1238/2092/577 1242/2093/577 -f 1283/2094/577 1285/2095/577 1279/2096/577 -f 1324/2097/577 1326/2098/577 1320/2099/577 -f 1368/2100/577 1361/2101/577 1365/2102/577 -f 1409/2103/577 1402/2104/577 1406/2105/577 -f 1197/2090/577 1198/2106/577 1201/2088/577 -f 1198/2106/577 1199/2107/577 1201/2088/577 -f 1199/2107/577 1200/2108/577 1201/2088/577 -f 1201/2088/577 1202/2109/577 1203/2089/577 -f 1203/2089/577 1204/2110/577 1197/2090/577 -f 1238/2092/577 1239/2111/577 1242/2093/577 -f 1239/2111/577 1240/2112/577 1242/2093/577 -f 1240/2112/577 1241/2113/577 1242/2093/577 -f 1242/2093/577 1243/2114/577 1244/2115/577 -f 1244/2115/577 1245/2091/577 1242/2093/577 -f 1279/2096/577 1280/2116/577 1283/2094/577 -f 1280/2116/577 1281/2117/577 1283/2094/577 -f 1281/2117/577 1282/2118/577 1283/2094/577 -f 1283/2094/577 1284/2119/577 1285/2095/577 -f 1285/2095/577 1286/2120/577 1279/2096/577 -f 1320/2099/577 1321/2121/577 1324/2097/577 -f 1321/2121/577 1322/2122/577 1324/2097/577 -f 1322/2122/577 1323/2123/577 1324/2097/577 -f 1324/2097/577 1325/2124/577 1326/2098/577 -f 1326/2098/577 1327/2125/577 1320/2099/577 -f 1361/2101/577 1362/2126/577 1365/2102/577 -f 1362/2126/577 1363/2127/577 1365/2102/577 -f 1363/2127/577 1364/2128/577 1365/2102/577 -f 1365/2102/577 1366/2129/577 1367/2130/577 -f 1367/2130/577 1368/2100/577 1365/2102/577 -f 1402/2104/577 1403/2131/577 1406/2105/577 -f 1403/2131/577 1404/2132/577 1406/2105/577 -f 1404/2132/577 1405/2133/577 1406/2105/577 -f 1406/2105/577 1407/2134/577 1408/2135/577 -f 1408/2135/577 1409/2103/577 1406/2105/577 +f 1197/2088/583 1198/2089/583 1199/2090/583 +f 1200/2091/583 1201/2092/583 1202/2093/583 +f 1203/2094/583 1204/2095/583 1205/2096/583 +f 1206/2097/583 1207/2098/583 1208/2099/583 +f 1209/2100/583 1210/2101/583 1211/2102/583 +f 1212/2103/583 1213/2104/583 1214/2105/583 +f 1198/2089/583 1197/2088/583 1215/2106/583 +f 1215/2106/583 1197/2088/583 1216/2107/583 +f 1216/2107/583 1197/2088/583 1217/2108/583 +f 1197/2088/583 1199/2090/583 1218/2109/583 +f 1199/2090/583 1198/2089/583 1219/2110/583 +f 1202/2093/583 1201/2092/583 1220/2111/583 +f 1220/2111/583 1201/2092/583 1221/2112/583 +f 1221/2112/583 1201/2092/583 1222/2113/583 +f 1201/2092/583 1223/2114/583 1224/2115/583 +f 1223/2114/583 1201/2092/583 1200/2091/583 +f 1204/2095/583 1203/2094/583 1225/2116/583 +f 1225/2116/583 1203/2094/583 1226/2117/583 +f 1226/2117/583 1203/2094/583 1227/2118/583 +f 1203/2094/583 1205/2096/583 1228/2119/583 +f 1205/2096/583 1204/2095/583 1229/2120/583 +f 1207/2098/583 1206/2097/583 1230/2121/583 +f 1230/2121/583 1206/2097/583 1231/2122/583 +f 1231/2122/583 1206/2097/583 1232/2123/583 +f 1206/2097/583 1208/2099/583 1233/2124/583 +f 1208/2099/583 1207/2098/583 1234/2125/583 +f 1211/2102/583 1210/2101/583 1235/2126/583 +f 1235/2126/583 1210/2101/583 1236/2127/583 +f 1236/2127/583 1210/2101/583 1237/2128/583 +f 1210/2101/583 1238/2129/583 1239/2130/583 +f 1238/2129/583 1210/2101/583 1209/2100/583 +f 1214/2105/583 1213/2104/583 1240/2131/583 +f 1240/2131/583 1213/2104/583 1241/2132/583 +f 1241/2132/583 1213/2104/583 1242/2133/583 +f 1213/2104/583 1243/2134/583 1244/2135/583 +f 1243/2134/583 1213/2104/583 1212/2103/583 s 1 -f 1200/2136/578 1209/2137/579 1201/2138/579 -f 1198/2139/580 1207/2140/581 1199/2141/581 -f 1203/2142/582 1212/2143/583 1204/2144/583 -f 1201/2145/579 1210/2146/584 1202/2147/584 -f 1199/2141/581 1208/2148/578 1200/2136/578 -f 1197/2149/585 1206/2150/580 1198/2139/580 -f 1204/2144/583 1205/2151/585 1197/2149/585 -f 1202/2147/584 1211/2152/582 1203/2142/582 -f 1220/2153/586 1205/2151/587 1212/2143/586 -f 1213/2154/587 1206/2150/588 1205/2151/587 -f 1214/2155/588 1207/2140/589 1206/2150/588 -f 1215/2156/589 1208/2148/590 1207/2140/589 -f 1216/2157/590 1209/2137/591 1208/2148/590 -f 1217/2158/591 1210/2146/592 1209/2159/591 -f 1218/2160/592 1211/2152/593 1210/2146/592 -f 1211/2152/593 1220/2153/586 1212/2143/586 -f 1219/2161/582 1228/2162/594 1220/2153/583 -f 1217/2158/579 1226/2163/595 1218/2160/584 -f 1215/2156/581 1224/2164/596 1216/2157/578 -f 1213/2154/585 1222/2165/597 1214/2155/580 -f 1220/2153/583 1221/2166/598 1213/2154/585 -f 1218/2160/584 1227/2167/599 1219/2161/582 -f 1216/2157/578 1225/2168/600 1217/2169/579 -f 1214/2155/580 1223/2170/601 1215/2156/581 -f 1222/2165/597 1231/2171/602 1223/2170/601 -f 1221/2166/598 1230/2172/603 1222/2165/597 -f 1236/2173/604 1221/2166/598 1228/2162/594 -f 1235/2174/605 1228/2162/594 1227/2167/599 -f 1226/2163/595 1235/2174/605 1227/2167/599 -f 1233/2175/606 1226/2163/595 1225/2176/600 -f 1231/2171/602 1224/2164/596 1223/2170/601 -f 1232/2177/607 1225/2168/600 1224/2164/596 -f 1232/2177/607 1237/2178/608 1233/2179/606 -f 1231/2171/602 1237/2178/608 1232/2177/607 -f 1230/2172/603 1237/2180/608 1231/2171/602 -f 1229/2181/609 1237/2180/608 1230/2172/603 -f 1236/2173/604 1237/2182/608 1229/2181/609 -f 1235/2174/605 1237/2182/608 1236/2173/604 -f 1233/2175/606 1237/2183/608 1234/2184/610 -f 1234/2184/610 1237/2183/608 1235/2174/605 -f 1241/2185/611 1250/2186/612 1242/2187/612 -f 1239/2188/613 1248/2189/614 1240/2190/614 -f 1244/2191/615 1253/2192/616 1245/2193/616 -f 1242/2194/612 1251/2195/617 1243/2196/617 -f 1240/2190/614 1249/2197/611 1241/2185/611 -f 1238/2198/618 1247/2199/613 1239/2188/613 -f 1245/2193/616 1246/2200/618 1238/2198/618 -f 1243/2196/617 1252/2201/615 1244/2191/615 -f 1261/2202/619 1246/2200/620 1253/2192/619 -f 1246/2200/620 1255/2203/621 1247/2199/621 -f 1247/2199/621 1256/2204/622 1248/2189/622 -f 1256/2204/622 1249/2197/623 1248/2189/622 -f 1257/2205/623 1250/2186/624 1249/2197/623 -f 1258/2206/624 1251/2195/625 1250/2207/624 -f 1259/2208/625 1252/2201/626 1251/2195/625 -f 1260/2209/626 1253/2192/619 1252/2201/626 -f 1260/2209/615 1269/2210/627 1261/2202/616 -f 1258/2206/612 1267/2211/628 1259/2208/617 -f 1256/2204/614 1265/2212/629 1257/2205/611 -f 1254/2213/618 1263/2214/630 1255/2203/613 -f 1261/2202/616 1262/2215/631 1254/2213/618 -f 1259/2208/617 1268/2216/632 1260/2209/615 -f 1258/2217/612 1265/2212/629 1266/2218/633 -f 1255/2203/613 1264/2219/634 1256/2204/614 -f 1263/2214/630 1272/2220/635 1264/2219/634 -f 1262/2215/631 1271/2221/636 1263/2214/630 -f 1277/2222/637 1262/2215/631 1269/2210/627 -f 1276/2223/638 1269/2210/627 1268/2216/632 -f 1275/2224/639 1268/2216/632 1267/2211/628 -f 1266/2225/633 1275/2224/639 1267/2211/628 -f 1264/2219/634 1273/2226/640 1265/2212/629 -f 1265/2212/629 1274/2227/641 1266/2218/633 -f 1273/2226/640 1278/2228/608 1274/2227/641 -f 1272/2220/635 1278/2228/608 1273/2226/640 -f 1271/2221/636 1278/2229/608 1272/2220/635 -f 1270/2230/642 1278/2229/608 1271/2221/636 -f 1277/2222/637 1278/2231/608 1270/2230/642 -f 1276/2223/638 1278/2231/608 1277/2222/637 -f 1274/2232/641 1278/2233/608 1275/2224/639 -f 1275/2224/639 1278/2233/608 1276/2223/638 -f 1282/2234/578 1291/2235/579 1283/2236/579 -f 1280/2237/580 1289/2238/581 1281/2239/581 -f 1285/2240/582 1294/2241/583 1286/2242/583 -f 1283/2243/579 1292/2244/584 1284/2245/584 -f 1281/2239/581 1290/2246/578 1282/2234/578 -f 1279/2247/585 1288/2248/580 1280/2237/580 -f 1286/2242/583 1287/2249/585 1279/2247/585 -f 1284/2245/584 1293/2250/582 1285/2240/582 -f 1302/2251/586 1287/2249/587 1294/2241/586 -f 1295/2252/587 1288/2248/588 1287/2249/587 -f 1288/2248/588 1297/2253/589 1289/2238/589 -f 1297/2253/589 1290/2246/590 1289/2238/589 -f 1298/2254/590 1291/2235/591 1290/2246/590 -f 1291/2255/591 1300/2256/592 1292/2244/592 -f 1300/2256/592 1293/2250/593 1292/2244/592 -f 1301/2257/593 1294/2241/586 1293/2250/593 -f 1301/2257/582 1310/2258/594 1302/2251/583 -f 1299/2259/579 1308/2260/595 1300/2256/584 -f 1297/2253/581 1306/2261/596 1298/2254/578 -f 1295/2252/585 1304/2262/597 1296/2263/580 -f 1302/2251/583 1303/2264/598 1295/2252/585 -f 1300/2256/584 1309/2265/599 1301/2257/582 -f 1298/2254/578 1307/2266/600 1299/2267/579 -f 1296/2263/580 1305/2268/601 1297/2253/581 -f 1304/2262/597 1313/2269/602 1305/2268/601 -f 1303/2264/598 1312/2270/603 1304/2262/597 -f 1318/2271/604 1303/2264/598 1310/2258/594 -f 1317/2272/605 1310/2258/594 1309/2265/599 -f 1316/2273/610 1309/2265/599 1308/2260/595 -f 1307/2274/600 1316/2273/610 1308/2260/595 -f 1313/2269/602 1306/2261/596 1305/2268/601 -f 1314/2275/607 1307/2266/600 1306/2261/596 -f 1314/2275/607 1319/2276/608 1315/2277/606 -f 1313/2269/602 1319/2276/608 1314/2275/607 -f 1312/2270/603 1319/2278/608 1313/2269/602 -f 1311/2279/609 1319/2278/608 1312/2270/603 -f 1318/2271/604 1319/2280/608 1311/2279/609 -f 1317/2272/605 1319/2280/608 1318/2271/604 -f 1315/2281/606 1319/2282/608 1316/2273/610 -f 1316/2273/610 1319/2282/608 1317/2272/605 -f 1323/2283/611 1332/2284/612 1324/2285/612 -f 1321/2286/613 1330/2287/614 1322/2288/614 -f 1326/2289/615 1335/2290/616 1327/2291/616 -f 1324/2292/612 1333/2293/617 1325/2294/617 -f 1322/2288/614 1331/2295/611 1323/2283/611 -f 1320/2296/618 1329/2297/613 1321/2286/613 -f 1327/2291/616 1328/2298/618 1320/2296/618 -f 1325/2294/617 1334/2299/615 1326/2289/615 -f 1335/2290/619 1336/2300/620 1328/2298/620 -f 1328/2298/620 1337/2301/621 1329/2297/621 -f 1337/2301/621 1330/2287/622 1329/2297/621 -f 1338/2302/622 1331/2295/623 1330/2287/622 -f 1339/2303/623 1332/2284/624 1331/2295/623 -f 1340/2304/624 1333/2293/625 1332/2305/624 -f 1333/2293/625 1342/2306/626 1334/2299/626 -f 1334/2299/626 1343/2307/619 1335/2290/619 -f 1342/2306/615 1351/2308/627 1343/2307/616 -f 1340/2304/612 1349/2309/628 1341/2310/617 -f 1338/2302/614 1347/2311/629 1339/2303/611 -f 1336/2300/618 1345/2312/630 1337/2301/613 -f 1343/2307/616 1344/2313/631 1336/2300/618 -f 1341/2310/617 1350/2314/632 1342/2306/615 -f 1339/2303/611 1348/2315/633 1340/2316/612 -f 1337/2301/613 1346/2317/634 1338/2302/614 -f 1353/2318/636 1346/2317/634 1345/2312/630 -f 1352/2319/642 1345/2312/630 1344/2313/631 -f 1359/2320/637 1344/2313/631 1351/2308/627 -f 1358/2321/638 1351/2308/627 1350/2314/632 -f 1357/2322/639 1350/2314/632 1349/2309/628 -f 1356/2323/641 1349/2309/628 1348/2324/633 -f 1354/2325/635 1347/2311/629 1346/2317/634 -f 1355/2326/640 1348/2315/633 1347/2311/629 -f 1355/2326/640 1360/2327/608 1356/2328/641 -f 1354/2325/635 1360/2327/608 1355/2326/640 -f 1353/2318/636 1360/2329/608 1354/2325/635 -f 1352/2319/642 1360/2329/608 1353/2318/636 -f 1359/2320/637 1360/2330/608 1352/2319/642 -f 1358/2321/638 1360/2330/608 1359/2320/637 -f 1356/2323/641 1360/2331/608 1357/2322/639 -f 1357/2322/639 1360/2331/608 1358/2321/638 -f 1364/2332/578 1373/2333/579 1365/2334/579 -f 1362/2335/580 1371/2336/581 1363/2337/581 -f 1367/2338/582 1376/2339/583 1368/2340/583 -f 1365/2341/579 1374/2342/584 1366/2343/584 -f 1363/2337/581 1372/2344/578 1364/2332/578 -f 1361/2345/585 1370/2346/580 1362/2335/580 -f 1368/2340/583 1369/2347/585 1361/2345/585 -f 1366/2343/584 1375/2348/582 1367/2338/582 -f 1384/2349/586 1369/2347/587 1376/2339/586 -f 1369/2347/587 1378/2350/588 1370/2346/588 -f 1370/2346/588 1379/2351/589 1371/2336/589 -f 1379/2351/589 1372/2344/590 1371/2336/589 -f 1380/2352/590 1373/2333/591 1372/2344/590 -f 1381/2353/591 1374/2342/592 1373/2354/591 -f 1374/2342/592 1383/2355/593 1375/2348/593 -f 1383/2355/593 1376/2339/586 1375/2348/593 -f 1383/2355/582 1392/2356/594 1384/2349/583 -f 1381/2353/579 1390/2357/595 1382/2358/584 -f 1379/2351/581 1388/2359/596 1380/2352/578 -f 1377/2360/585 1386/2361/597 1378/2350/580 -f 1384/2349/583 1385/2362/598 1377/2360/585 -f 1382/2358/584 1391/2363/599 1383/2355/582 -f 1381/2364/579 1388/2359/596 1389/2365/600 -f 1379/2351/581 1386/2361/597 1387/2366/601 -f 1394/2367/603 1387/2366/601 1386/2361/597 -f 1385/2362/598 1394/2367/603 1386/2361/597 -f 1400/2368/604 1385/2362/598 1392/2356/594 -f 1391/2363/599 1400/2368/604 1392/2356/594 -f 1398/2369/610 1391/2363/599 1390/2357/595 -f 1397/2370/606 1390/2357/595 1389/2371/600 -f 1395/2372/602 1388/2359/596 1387/2366/601 -f 1388/2359/596 1397/2373/606 1389/2365/600 -f 1396/2374/607 1401/2375/608 1397/2373/606 -f 1395/2372/602 1401/2375/608 1396/2374/607 -f 1394/2367/603 1401/2376/608 1395/2372/602 -f 1393/2377/609 1401/2376/608 1394/2367/603 -f 1400/2368/604 1401/2378/608 1393/2377/609 -f 1399/2379/605 1401/2378/608 1400/2368/604 -f 1397/2370/606 1401/2380/608 1398/2369/610 -f 1398/2369/610 1401/2380/608 1399/2379/605 -f 1405/2381/611 1414/2382/612 1406/2383/612 -f 1403/2384/613 1412/2385/614 1404/2386/614 -f 1408/2387/615 1417/2388/616 1409/2389/616 -f 1406/2390/612 1415/2391/617 1407/2392/617 -f 1404/2386/614 1413/2393/611 1405/2381/611 -f 1402/2394/618 1411/2395/613 1403/2384/613 -f 1409/2389/616 1410/2396/618 1402/2394/618 -f 1407/2392/617 1416/2397/615 1408/2387/615 -f 1425/2398/619 1410/2396/620 1417/2388/619 -f 1410/2396/620 1419/2399/621 1411/2395/621 -f 1411/2395/621 1420/2400/622 1412/2385/622 -f 1420/2400/622 1413/2393/623 1412/2385/622 -f 1421/2401/623 1414/2382/624 1413/2393/623 -f 1422/2402/624 1415/2391/625 1414/2403/624 -f 1415/2391/625 1424/2404/626 1416/2397/626 -f 1424/2404/626 1417/2388/619 1416/2397/626 -f 1424/2404/615 1433/2405/627 1425/2398/616 -f 1422/2402/612 1431/2406/628 1423/2407/617 -f 1420/2400/614 1429/2408/629 1421/2401/611 -f 1418/2409/618 1427/2410/630 1419/2399/613 -f 1425/2398/616 1426/2411/631 1418/2409/618 -f 1423/2407/617 1432/2412/632 1424/2404/615 -f 1421/2401/611 1430/2413/633 1422/2414/612 -f 1420/2400/614 1427/2410/630 1428/2415/634 -f 1427/2410/630 1436/2416/635 1428/2415/634 -f 1426/2411/631 1435/2417/636 1427/2410/630 -f 1441/2418/637 1426/2411/631 1433/2405/627 -f 1440/2419/638 1433/2405/627 1432/2412/632 -f 1439/2420/639 1432/2412/632 1431/2406/628 -f 1438/2421/641 1431/2406/628 1430/2422/633 -f 1436/2416/635 1429/2408/629 1428/2415/634 -f 1437/2423/640 1430/2413/633 1429/2408/629 -f 1437/2423/640 1442/2424/608 1438/2425/641 -f 1436/2416/635 1442/2424/608 1437/2423/640 -f 1435/2417/636 1442/2426/608 1436/2416/635 -f 1434/2427/642 1442/2426/608 1435/2417/636 -f 1441/2418/637 1442/2428/608 1434/2427/642 -f 1440/2419/638 1442/2428/608 1441/2418/637 -f 1438/2421/641 1442/2429/608 1439/2420/639 -f 1439/2420/639 1442/2429/608 1440/2419/638 -f 1446/2430/578 1455/2431/579 1447/2432/579 -f 1444/2433/580 1453/2434/581 1445/2435/581 -f 1449/2436/582 1458/2437/583 1450/2438/583 -f 1447/2439/579 1456/2440/584 1448/2441/584 -f 1445/2435/581 1454/2442/578 1446/2430/578 -f 1443/2443/585 1452/2444/580 1444/2433/580 -f 1450/2438/583 1451/2445/585 1443/2443/585 -f 1448/2441/584 1457/2446/582 1449/2436/582 -f 1466/2447/586 1451/2445/587 1458/2437/586 -f 1451/2445/587 1460/2448/588 1452/2444/588 -f 1460/2448/588 1453/2434/589 1452/2444/588 -f 1461/2449/589 1454/2442/590 1453/2434/589 -f 1462/2450/590 1455/2431/591 1454/2442/590 -f 1455/2451/591 1464/2452/592 1456/2440/592 -f 1456/2440/592 1465/2453/593 1457/2446/593 -f 1457/2446/593 1466/2447/586 1458/2437/586 -f 1465/2453/582 1474/2454/594 1466/2447/583 -f 1463/2455/579 1472/2456/595 1464/2452/584 -f 1461/2449/581 1470/2457/596 1462/2450/578 -f 1459/2458/585 1468/2459/597 1460/2448/580 -f 1466/2447/583 1467/2460/598 1459/2458/585 -f 1465/2453/582 1472/2456/595 1473/2461/599 -f 1462/2450/578 1471/2462/600 1463/2463/579 -f 1460/2448/580 1469/2464/601 1461/2449/581 -f 1476/2465/603 1469/2464/601 1468/2459/597 -f 1475/2466/609 1468/2459/597 1467/2460/598 -f 1474/2454/594 1475/2466/609 1467/2460/598 -f 1481/2467/605 1474/2454/594 1473/2461/599 -f 1480/2468/610 1473/2461/599 1472/2456/595 -f 1471/2469/600 1480/2468/610 1472/2456/595 -f 1477/2470/602 1470/2457/596 1469/2464/601 -f 1470/2457/596 1479/2471/606 1471/2462/600 -f 1478/2472/607 1483/2473/608 1479/2471/606 -f 1477/2470/602 1483/2473/608 1478/2472/607 -f 1476/2465/603 1483/2474/608 1477/2470/602 -f 1475/2466/609 1483/2474/608 1476/2465/603 -f 1482/2475/604 1483/2476/608 1475/2466/609 -f 1481/2467/605 1483/2476/608 1482/2475/604 -f 1479/2477/606 1483/2478/608 1480/2468/610 -f 1480/2468/610 1483/2478/608 1481/2467/605 -f 1200/2136/578 1208/2148/578 1209/2137/579 -f 1198/2139/580 1206/2150/580 1207/2140/581 -f 1203/2142/582 1211/2152/582 1212/2143/583 -f 1201/2145/579 1209/2159/579 1210/2146/584 -f 1199/2141/581 1207/2140/581 1208/2148/578 -f 1197/2149/585 1205/2151/585 1206/2150/580 -f 1204/2144/583 1212/2143/583 1205/2151/585 -f 1202/2147/584 1210/2146/584 1211/2152/582 -f 1220/2153/586 1213/2154/587 1205/2151/587 -f 1213/2154/587 1214/2155/588 1206/2150/588 -f 1214/2155/588 1215/2156/589 1207/2140/589 -f 1215/2156/589 1216/2157/590 1208/2148/590 -f 1216/2157/590 1217/2169/591 1209/2137/591 -f 1217/2158/591 1218/2160/592 1210/2146/592 -f 1218/2160/592 1219/2161/593 1211/2152/593 -f 1211/2152/593 1219/2161/593 1220/2153/586 -f 1219/2161/582 1227/2167/599 1228/2162/594 -f 1217/2158/579 1225/2176/600 1226/2163/595 -f 1215/2156/581 1223/2170/601 1224/2164/596 -f 1213/2154/585 1221/2166/598 1222/2165/597 -f 1220/2153/583 1228/2162/594 1221/2166/598 -f 1218/2160/584 1226/2163/595 1227/2167/599 -f 1216/2157/578 1224/2164/596 1225/2168/600 -f 1214/2155/580 1222/2165/597 1223/2170/601 -f 1222/2165/597 1230/2172/603 1231/2171/602 -f 1221/2166/598 1229/2181/609 1230/2172/603 -f 1236/2173/604 1229/2181/609 1221/2166/598 -f 1235/2174/605 1236/2173/604 1228/2162/594 -f 1226/2163/595 1234/2184/610 1235/2174/605 -f 1233/2175/606 1234/2184/610 1226/2163/595 -f 1231/2171/602 1232/2177/607 1224/2164/596 -f 1232/2177/607 1233/2179/606 1225/2168/600 -f 1241/2185/611 1249/2197/611 1250/2186/612 -f 1239/2188/613 1247/2199/613 1248/2189/614 -f 1244/2191/615 1252/2201/615 1253/2192/616 -f 1242/2194/612 1250/2207/612 1251/2195/617 -f 1240/2190/614 1248/2189/614 1249/2197/611 -f 1238/2198/618 1246/2200/618 1247/2199/613 -f 1245/2193/616 1253/2192/616 1246/2200/618 -f 1243/2196/617 1251/2195/617 1252/2201/615 -f 1261/2202/619 1254/2213/620 1246/2200/620 -f 1246/2200/620 1254/2213/620 1255/2203/621 -f 1247/2199/621 1255/2203/621 1256/2204/622 -f 1256/2204/622 1257/2205/623 1249/2197/623 -f 1257/2205/623 1258/2217/624 1250/2186/624 -f 1258/2206/624 1259/2208/625 1251/2195/625 -f 1259/2208/625 1260/2209/626 1252/2201/626 -f 1260/2209/626 1261/2202/619 1253/2192/619 -f 1260/2209/615 1268/2216/632 1269/2210/627 -f 1258/2206/612 1266/2225/633 1267/2211/628 -f 1256/2204/614 1264/2219/634 1265/2212/629 -f 1254/2213/618 1262/2215/631 1263/2214/630 -f 1261/2202/616 1269/2210/627 1262/2215/631 -f 1259/2208/617 1267/2211/628 1268/2216/632 -f 1258/2217/612 1257/2205/611 1265/2212/629 -f 1255/2203/613 1263/2214/630 1264/2219/634 -f 1263/2214/630 1271/2221/636 1272/2220/635 -f 1262/2215/631 1270/2230/642 1271/2221/636 -f 1277/2222/637 1270/2230/642 1262/2215/631 -f 1276/2223/638 1277/2222/637 1269/2210/627 -f 1275/2224/639 1276/2223/638 1268/2216/632 -f 1266/2225/633 1274/2232/641 1275/2224/639 -f 1264/2219/634 1272/2220/635 1273/2226/640 -f 1265/2212/629 1273/2226/640 1274/2227/641 -f 1282/2234/578 1290/2246/578 1291/2235/579 -f 1280/2237/580 1288/2248/580 1289/2238/581 -f 1285/2240/582 1293/2250/582 1294/2241/583 -f 1283/2243/579 1291/2255/579 1292/2244/584 -f 1281/2239/581 1289/2238/581 1290/2246/578 -f 1279/2247/585 1287/2249/585 1288/2248/580 -f 1286/2242/583 1294/2241/583 1287/2249/585 -f 1284/2245/584 1292/2244/584 1293/2250/582 -f 1302/2251/586 1295/2252/587 1287/2249/587 -f 1295/2252/587 1296/2263/588 1288/2248/588 -f 1288/2248/588 1296/2263/588 1297/2253/589 -f 1297/2253/589 1298/2254/590 1290/2246/590 -f 1298/2254/590 1299/2267/591 1291/2235/591 -f 1291/2255/591 1299/2259/591 1300/2256/592 -f 1300/2256/592 1301/2257/593 1293/2250/593 -f 1301/2257/593 1302/2251/586 1294/2241/586 -f 1301/2257/582 1309/2265/599 1310/2258/594 -f 1299/2259/579 1307/2274/600 1308/2260/595 -f 1297/2253/581 1305/2268/601 1306/2261/596 -f 1295/2252/585 1303/2264/598 1304/2262/597 -f 1302/2251/583 1310/2258/594 1303/2264/598 -f 1300/2256/584 1308/2260/595 1309/2265/599 -f 1298/2254/578 1306/2261/596 1307/2266/600 -f 1296/2263/580 1304/2262/597 1305/2268/601 -f 1304/2262/597 1312/2270/603 1313/2269/602 -f 1303/2264/598 1311/2279/609 1312/2270/603 -f 1318/2271/604 1311/2279/609 1303/2264/598 -f 1317/2272/605 1318/2271/604 1310/2258/594 -f 1316/2273/610 1317/2272/605 1309/2265/599 -f 1307/2274/600 1315/2281/606 1316/2273/610 -f 1313/2269/602 1314/2275/607 1306/2261/596 -f 1314/2275/607 1315/2277/606 1307/2266/600 -f 1323/2283/611 1331/2295/611 1332/2284/612 -f 1321/2286/613 1329/2297/613 1330/2287/614 -f 1326/2289/615 1334/2299/615 1335/2290/616 -f 1324/2292/612 1332/2305/612 1333/2293/617 -f 1322/2288/614 1330/2287/614 1331/2295/611 -f 1320/2296/618 1328/2298/618 1329/2297/613 -f 1327/2291/616 1335/2290/616 1328/2298/618 -f 1325/2294/617 1333/2293/617 1334/2299/615 -f 1335/2290/619 1343/2307/619 1336/2300/620 -f 1328/2298/620 1336/2300/620 1337/2301/621 -f 1337/2301/621 1338/2302/622 1330/2287/622 -f 1338/2302/622 1339/2303/623 1331/2295/623 -f 1339/2303/623 1340/2316/624 1332/2284/624 -f 1340/2304/624 1341/2310/625 1333/2293/625 -f 1333/2293/625 1341/2310/625 1342/2306/626 -f 1334/2299/626 1342/2306/626 1343/2307/619 -f 1342/2306/615 1350/2314/632 1351/2308/627 -f 1340/2304/612 1348/2324/633 1349/2309/628 -f 1338/2302/614 1346/2317/634 1347/2311/629 -f 1336/2300/618 1344/2313/631 1345/2312/630 -f 1343/2307/616 1351/2308/627 1344/2313/631 -f 1341/2310/617 1349/2309/628 1350/2314/632 -f 1339/2303/611 1347/2311/629 1348/2315/633 -f 1337/2301/613 1345/2312/630 1346/2317/634 -f 1353/2318/636 1354/2325/635 1346/2317/634 -f 1352/2319/642 1353/2318/636 1345/2312/630 -f 1359/2320/637 1352/2319/642 1344/2313/631 -f 1358/2321/638 1359/2320/637 1351/2308/627 -f 1357/2322/639 1358/2321/638 1350/2314/632 -f 1356/2323/641 1357/2322/639 1349/2309/628 -f 1354/2325/635 1355/2326/640 1347/2311/629 -f 1355/2326/640 1356/2328/641 1348/2315/633 -f 1364/2332/578 1372/2344/578 1373/2333/579 -f 1362/2335/580 1370/2346/580 1371/2336/581 -f 1367/2338/582 1375/2348/582 1376/2339/583 -f 1365/2341/579 1373/2354/579 1374/2342/584 -f 1363/2337/581 1371/2336/581 1372/2344/578 -f 1361/2345/585 1369/2347/585 1370/2346/580 -f 1368/2340/583 1376/2339/583 1369/2347/585 -f 1366/2343/584 1374/2342/584 1375/2348/582 -f 1384/2349/586 1377/2360/587 1369/2347/587 -f 1369/2347/587 1377/2360/587 1378/2350/588 -f 1370/2346/588 1378/2350/588 1379/2351/589 -f 1379/2351/589 1380/2352/590 1372/2344/590 -f 1380/2352/590 1381/2364/591 1373/2333/591 -f 1381/2353/591 1382/2358/592 1374/2342/592 -f 1374/2342/592 1382/2358/592 1383/2355/593 -f 1383/2355/593 1384/2349/586 1376/2339/586 -f 1383/2355/582 1391/2363/599 1392/2356/594 -f 1381/2353/579 1389/2371/600 1390/2357/595 -f 1379/2351/581 1387/2366/601 1388/2359/596 -f 1377/2360/585 1385/2362/598 1386/2361/597 -f 1384/2349/583 1392/2356/594 1385/2362/598 -f 1382/2358/584 1390/2357/595 1391/2363/599 -f 1381/2364/579 1380/2352/578 1388/2359/596 -f 1379/2351/581 1378/2350/580 1386/2361/597 -f 1394/2367/603 1395/2372/602 1387/2366/601 -f 1385/2362/598 1393/2377/609 1394/2367/603 -f 1400/2368/604 1393/2377/609 1385/2362/598 -f 1391/2363/599 1399/2379/605 1400/2368/604 -f 1398/2369/610 1399/2379/605 1391/2363/599 -f 1397/2370/606 1398/2369/610 1390/2357/595 -f 1395/2372/602 1396/2374/607 1388/2359/596 -f 1388/2359/596 1396/2374/607 1397/2373/606 -f 1405/2381/611 1413/2393/611 1414/2382/612 -f 1403/2384/613 1411/2395/613 1412/2385/614 -f 1408/2387/615 1416/2397/615 1417/2388/616 -f 1406/2390/612 1414/2403/612 1415/2391/617 -f 1404/2386/614 1412/2385/614 1413/2393/611 -f 1402/2394/618 1410/2396/618 1411/2395/613 -f 1409/2389/616 1417/2388/616 1410/2396/618 -f 1407/2392/617 1415/2391/617 1416/2397/615 -f 1425/2398/619 1418/2409/620 1410/2396/620 -f 1410/2396/620 1418/2409/620 1419/2399/621 -f 1411/2395/621 1419/2399/621 1420/2400/622 -f 1420/2400/622 1421/2401/623 1413/2393/623 -f 1421/2401/623 1422/2414/624 1414/2382/624 -f 1422/2402/624 1423/2407/625 1415/2391/625 -f 1415/2391/625 1423/2407/625 1424/2404/626 -f 1424/2404/626 1425/2398/619 1417/2388/619 -f 1424/2404/615 1432/2412/632 1433/2405/627 -f 1422/2402/612 1430/2422/633 1431/2406/628 -f 1420/2400/614 1428/2415/634 1429/2408/629 -f 1418/2409/618 1426/2411/631 1427/2410/630 -f 1425/2398/616 1433/2405/627 1426/2411/631 -f 1423/2407/617 1431/2406/628 1432/2412/632 -f 1421/2401/611 1429/2408/629 1430/2413/633 -f 1420/2400/614 1419/2399/613 1427/2410/630 -f 1427/2410/630 1435/2417/636 1436/2416/635 -f 1426/2411/631 1434/2427/642 1435/2417/636 -f 1441/2418/637 1434/2427/642 1426/2411/631 -f 1440/2419/638 1441/2418/637 1433/2405/627 -f 1439/2420/639 1440/2419/638 1432/2412/632 -f 1438/2421/641 1439/2420/639 1431/2406/628 -f 1436/2416/635 1437/2423/640 1429/2408/629 -f 1437/2423/640 1438/2425/641 1430/2413/633 -f 1446/2430/578 1454/2442/578 1455/2431/579 -f 1444/2433/580 1452/2444/580 1453/2434/581 -f 1449/2436/582 1457/2446/582 1458/2437/583 -f 1447/2439/579 1455/2451/579 1456/2440/584 -f 1445/2435/581 1453/2434/581 1454/2442/578 -f 1443/2443/585 1451/2445/585 1452/2444/580 -f 1450/2438/583 1458/2437/583 1451/2445/585 -f 1448/2441/584 1456/2440/584 1457/2446/582 -f 1466/2447/586 1459/2458/587 1451/2445/587 -f 1451/2445/587 1459/2458/587 1460/2448/588 -f 1460/2448/588 1461/2449/589 1453/2434/589 -f 1461/2449/589 1462/2450/590 1454/2442/590 -f 1462/2450/590 1463/2463/591 1455/2431/591 -f 1455/2451/591 1463/2455/591 1464/2452/592 -f 1456/2440/592 1464/2452/592 1465/2453/593 -f 1457/2446/593 1465/2453/593 1466/2447/586 -f 1465/2453/582 1473/2461/599 1474/2454/594 -f 1463/2455/579 1471/2469/600 1472/2456/595 -f 1461/2449/581 1469/2464/601 1470/2457/596 -f 1459/2458/585 1467/2460/598 1468/2459/597 -f 1466/2447/583 1474/2454/594 1467/2460/598 -f 1465/2453/582 1464/2452/584 1472/2456/595 -f 1462/2450/578 1470/2457/596 1471/2462/600 -f 1460/2448/580 1468/2459/597 1469/2464/601 -f 1476/2465/603 1477/2470/602 1469/2464/601 -f 1475/2466/609 1476/2465/603 1468/2459/597 -f 1474/2454/594 1482/2475/604 1475/2466/609 -f 1481/2467/605 1482/2475/604 1474/2454/594 -f 1480/2468/610 1481/2467/605 1473/2461/599 -f 1471/2469/600 1479/2477/606 1480/2468/610 -f 1477/2470/602 1478/2472/607 1470/2457/596 -f 1470/2457/596 1478/2472/607 1479/2471/606 +f 1217/2136/584 1197/2137/585 1245/2138/585 +f 1215/2139/586 1216/2140/587 1246/2141/587 +f 1199/2142/588 1219/2143/589 1247/2144/589 +f 1197/2145/585 1218/2146/590 1248/2147/590 +f 1216/2140/587 1217/2136/584 1249/2148/584 +f 1198/2149/591 1215/2139/586 1250/2150/586 +f 1219/2143/589 1198/2149/591 1251/2151/591 +f 1218/2146/590 1199/2142/588 1252/2152/588 +f 1253/2153/592 1247/2144/592 1251/2151/593 +f 1254/2154/593 1251/2151/593 1250/2150/594 +f 1255/2155/594 1250/2150/594 1246/2141/595 +f 1256/2156/595 1246/2141/595 1249/2148/596 +f 1257/2157/596 1249/2148/596 1245/2138/597 +f 1258/2158/597 1245/2159/597 1248/2147/598 +f 1259/2160/598 1248/2147/598 1252/2152/599 +f 1252/2152/599 1247/2144/592 1253/2153/592 +f 1260/2161/588 1253/2153/589 1261/2162/600 +f 1258/2158/585 1259/2160/590 1262/2163/601 +f 1256/2156/587 1257/2157/584 1263/2164/602 +f 1254/2154/591 1255/2155/586 1264/2165/603 +f 1253/2153/589 1254/2154/591 1265/2166/604 +f 1259/2160/590 1260/2161/588 1266/2167/605 +f 1257/2157/584 1258/2168/585 1267/2169/606 +f 1255/2155/586 1256/2156/587 1268/2170/607 +f 1264/2165/603 1268/2170/607 1269/2171/608 +f 1265/2166/604 1264/2165/603 1270/2172/609 +f 1271/2173/610 1261/2162/600 1265/2166/604 +f 1272/2174/611 1266/2167/605 1261/2162/600 +f 1262/2163/601 1266/2167/605 1272/2174/611 +f 1273/2175/612 1267/2176/606 1262/2163/601 +f 1269/2171/608 1268/2170/607 1263/2164/602 +f 1274/2177/613 1263/2164/602 1267/2169/606 +f 1274/2177/613 1273/2178/612 1275/2179/614 +f 1269/2171/608 1274/2177/613 1275/2179/614 +f 1270/2172/609 1269/2171/608 1275/2180/614 +f 1276/2181/615 1270/2172/609 1275/2180/614 +f 1271/2173/610 1276/2181/615 1275/2182/614 +f 1272/2174/611 1271/2173/610 1275/2182/614 +f 1273/2175/612 1277/2183/616 1275/2184/614 +f 1277/2183/616 1272/2174/611 1275/2184/614 +f 1222/2185/617 1201/2186/618 1278/2187/618 +f 1220/2188/619 1221/2189/620 1279/2190/620 +f 1223/2191/621 1200/2192/622 1280/2193/622 +f 1201/2194/618 1224/2195/623 1281/2196/623 +f 1221/2189/620 1222/2185/617 1282/2197/617 +f 1202/2198/624 1220/2188/619 1283/2199/619 +f 1200/2192/622 1202/2198/624 1284/2200/624 +f 1224/2195/623 1223/2191/621 1285/2201/621 +f 1286/2202/625 1280/2193/625 1284/2200/626 +f 1284/2200/626 1283/2199/627 1287/2203/627 +f 1283/2199/627 1279/2190/628 1288/2204/628 +f 1288/2204/628 1279/2190/628 1282/2197/629 +f 1289/2205/629 1282/2197/629 1278/2187/630 +f 1290/2206/630 1278/2207/630 1281/2196/631 +f 1291/2208/631 1281/2196/631 1285/2201/632 +f 1292/2209/632 1285/2201/632 1280/2193/625 +f 1292/2209/621 1286/2202/622 1293/2210/633 +f 1290/2206/618 1291/2208/623 1294/2211/634 +f 1288/2204/620 1289/2205/617 1295/2212/635 +f 1296/2213/624 1287/2203/619 1297/2214/636 +f 1286/2202/622 1296/2213/624 1298/2215/637 +f 1291/2208/623 1292/2209/621 1299/2216/638 +f 1290/2217/618 1300/2218/639 1295/2212/635 +f 1287/2203/619 1288/2204/620 1301/2219/640 +f 1297/2214/636 1301/2219/640 1302/2220/641 +f 1298/2215/637 1297/2214/636 1303/2221/642 +f 1304/2222/643 1293/2210/633 1298/2215/637 +f 1305/2223/644 1299/2216/638 1293/2210/633 +f 1306/2224/645 1294/2211/634 1299/2216/638 +f 1300/2225/639 1294/2211/634 1306/2224/645 +f 1301/2219/640 1295/2212/635 1307/2226/646 +f 1295/2212/635 1300/2218/639 1308/2227/647 +f 1307/2226/646 1308/2227/647 1309/2228/614 +f 1302/2220/641 1307/2226/646 1309/2228/614 +f 1303/2221/642 1302/2220/641 1309/2229/614 +f 1310/2230/648 1303/2221/642 1309/2229/614 +f 1304/2222/643 1310/2230/648 1309/2231/614 +f 1305/2223/644 1304/2222/643 1309/2231/614 +f 1308/2232/647 1306/2224/645 1309/2233/614 +f 1306/2224/645 1305/2223/644 1309/2233/614 +f 1227/2234/584 1203/2235/585 1311/2236/585 +f 1225/2237/586 1226/2238/587 1312/2239/587 +f 1205/2240/588 1229/2241/589 1313/2242/589 +f 1203/2243/585 1228/2244/590 1314/2245/590 +f 1226/2238/587 1227/2234/584 1315/2246/584 +f 1204/2247/591 1225/2237/586 1316/2248/586 +f 1229/2241/589 1204/2247/591 1317/2249/591 +f 1228/2244/590 1205/2240/588 1318/2250/588 +f 1319/2251/592 1313/2242/592 1317/2249/593 +f 1320/2252/593 1317/2249/593 1316/2248/594 +f 1316/2248/594 1312/2239/595 1321/2253/595 +f 1321/2253/595 1312/2239/595 1315/2246/596 +f 1322/2254/596 1315/2246/596 1311/2236/597 +f 1311/2255/597 1314/2245/598 1323/2256/598 +f 1323/2256/598 1314/2245/598 1318/2250/599 +f 1324/2257/599 1318/2250/599 1313/2242/592 +f 1324/2257/588 1319/2251/589 1325/2258/600 +f 1326/2259/585 1323/2256/590 1327/2260/601 +f 1321/2253/587 1322/2254/584 1328/2261/602 +f 1320/2252/591 1329/2262/586 1330/2263/603 +f 1319/2251/589 1320/2252/591 1331/2264/604 +f 1323/2256/590 1324/2257/588 1332/2265/605 +f 1322/2254/584 1326/2266/585 1333/2267/606 +f 1329/2262/586 1321/2253/587 1334/2268/607 +f 1330/2263/603 1334/2268/607 1335/2269/608 +f 1331/2264/604 1330/2263/603 1336/2270/609 +f 1337/2271/610 1325/2258/600 1331/2264/604 +f 1338/2272/611 1332/2265/605 1325/2258/600 +f 1339/2273/616 1327/2260/601 1332/2265/605 +f 1333/2274/606 1327/2260/601 1339/2273/616 +f 1335/2269/608 1334/2268/607 1328/2261/602 +f 1340/2275/613 1328/2261/602 1333/2267/606 +f 1340/2275/613 1341/2276/612 1342/2277/614 +f 1335/2269/608 1340/2275/613 1342/2277/614 +f 1336/2270/609 1335/2269/608 1342/2278/614 +f 1343/2279/615 1336/2270/609 1342/2278/614 +f 1337/2271/610 1343/2279/615 1342/2280/614 +f 1338/2272/611 1337/2271/610 1342/2280/614 +f 1341/2281/612 1339/2273/616 1342/2282/614 +f 1339/2273/616 1338/2272/611 1342/2282/614 +f 1232/2283/617 1206/2284/618 1344/2285/618 +f 1230/2286/619 1231/2287/620 1345/2288/620 +f 1208/2289/621 1234/2290/622 1346/2291/622 +f 1206/2292/618 1233/2293/623 1347/2294/623 +f 1231/2287/620 1232/2283/617 1348/2295/617 +f 1207/2296/624 1230/2286/619 1349/2297/619 +f 1234/2290/622 1207/2296/624 1350/2298/624 +f 1233/2293/623 1208/2289/621 1351/2299/621 +f 1346/2291/625 1350/2298/626 1352/2300/626 +f 1350/2298/626 1349/2297/627 1353/2301/627 +f 1353/2301/627 1349/2297/627 1345/2288/628 +f 1354/2302/628 1345/2288/628 1348/2295/629 +f 1355/2303/629 1348/2295/629 1344/2285/630 +f 1356/2304/630 1344/2305/630 1347/2294/631 +f 1347/2294/631 1351/2299/632 1357/2306/632 +f 1351/2299/632 1346/2291/625 1358/2307/625 +f 1357/2306/621 1358/2307/622 1359/2308/633 +f 1356/2304/618 1360/2309/623 1361/2310/634 +f 1354/2302/620 1355/2303/617 1362/2311/635 +f 1352/2300/624 1353/2301/619 1363/2312/636 +f 1358/2307/622 1352/2300/624 1364/2313/637 +f 1360/2309/623 1357/2306/621 1365/2314/638 +f 1355/2303/617 1356/2315/618 1366/2316/639 +f 1353/2301/619 1354/2302/620 1367/2317/640 +f 1368/2318/642 1363/2312/636 1367/2317/640 +f 1369/2319/648 1364/2313/637 1363/2312/636 +f 1370/2320/643 1359/2308/633 1364/2313/637 +f 1371/2321/644 1365/2314/638 1359/2308/633 +f 1372/2322/645 1361/2310/634 1365/2314/638 +f 1373/2323/647 1366/2324/639 1361/2310/634 +f 1374/2325/641 1367/2317/640 1362/2311/635 +f 1375/2326/646 1362/2311/635 1366/2316/639 +f 1375/2326/646 1373/2327/647 1376/2328/614 +f 1374/2325/641 1375/2326/646 1376/2328/614 +f 1368/2318/642 1374/2325/641 1376/2329/614 +f 1369/2319/648 1368/2318/642 1376/2329/614 +f 1370/2320/643 1369/2319/648 1376/2330/614 +f 1371/2321/644 1370/2320/643 1376/2330/614 +f 1373/2323/647 1372/2322/645 1376/2331/614 +f 1372/2322/645 1371/2321/644 1376/2331/614 +f 1237/2332/584 1210/2333/585 1377/2334/585 +f 1235/2335/586 1236/2336/587 1378/2337/587 +f 1238/2338/588 1209/2339/589 1379/2340/589 +f 1210/2341/585 1239/2342/590 1380/2343/590 +f 1236/2336/587 1237/2332/584 1381/2344/584 +f 1211/2345/591 1235/2335/586 1382/2346/586 +f 1209/2339/589 1211/2345/591 1383/2347/591 +f 1239/2342/590 1238/2338/588 1384/2348/588 +f 1385/2349/592 1379/2340/592 1383/2347/593 +f 1383/2347/593 1382/2346/594 1386/2350/594 +f 1382/2346/594 1378/2337/595 1387/2351/595 +f 1387/2351/595 1378/2337/595 1381/2344/596 +f 1388/2352/596 1381/2344/596 1377/2334/597 +f 1389/2353/597 1377/2354/597 1380/2343/598 +f 1380/2343/598 1384/2348/599 1390/2355/599 +f 1390/2355/599 1384/2348/599 1379/2340/592 +f 1390/2355/588 1385/2349/589 1391/2356/600 +f 1389/2353/585 1392/2357/590 1393/2358/601 +f 1387/2351/587 1388/2352/584 1394/2359/602 +f 1395/2360/591 1386/2350/586 1396/2361/603 +f 1385/2349/589 1395/2360/591 1397/2362/604 +f 1392/2357/590 1390/2355/588 1398/2363/605 +f 1389/2364/585 1399/2365/606 1394/2359/602 +f 1387/2351/587 1400/2366/607 1396/2361/603 +f 1401/2367/609 1396/2361/603 1400/2366/607 +f 1397/2362/604 1396/2361/603 1401/2367/609 +f 1402/2368/610 1391/2356/600 1397/2362/604 +f 1398/2363/605 1391/2356/600 1402/2368/610 +f 1403/2369/616 1393/2358/601 1398/2363/605 +f 1404/2370/612 1399/2371/606 1393/2358/601 +f 1405/2372/608 1400/2366/607 1394/2359/602 +f 1394/2359/602 1399/2365/606 1404/2373/612 +f 1406/2374/613 1404/2373/612 1407/2375/614 +f 1405/2372/608 1406/2374/613 1407/2375/614 +f 1401/2367/609 1405/2372/608 1407/2376/614 +f 1408/2377/615 1401/2367/609 1407/2376/614 +f 1402/2368/610 1408/2377/615 1407/2378/614 +f 1409/2379/611 1402/2368/610 1407/2378/614 +f 1404/2370/612 1403/2369/616 1407/2380/614 +f 1403/2369/616 1409/2379/611 1407/2380/614 +f 1242/2381/617 1213/2382/618 1410/2383/618 +f 1240/2384/619 1241/2385/620 1411/2386/620 +f 1243/2387/621 1212/2388/622 1412/2389/622 +f 1213/2390/618 1244/2391/623 1413/2392/623 +f 1241/2385/620 1242/2381/617 1414/2393/617 +f 1214/2394/624 1240/2384/619 1415/2395/619 +f 1212/2388/622 1214/2394/624 1416/2396/624 +f 1244/2391/623 1243/2387/621 1417/2397/621 +f 1418/2398/625 1412/2389/625 1416/2396/626 +f 1416/2396/626 1415/2395/627 1419/2399/627 +f 1415/2395/627 1411/2386/628 1420/2400/628 +f 1420/2400/628 1411/2386/628 1414/2393/629 +f 1421/2401/629 1414/2393/629 1410/2383/630 +f 1422/2402/630 1410/2403/630 1413/2392/631 +f 1413/2392/631 1417/2397/632 1423/2404/632 +f 1423/2404/632 1417/2397/632 1412/2389/625 +f 1423/2404/621 1418/2398/622 1424/2405/633 +f 1422/2402/618 1425/2406/623 1426/2407/634 +f 1420/2400/620 1421/2401/617 1427/2408/635 +f 1428/2409/624 1419/2399/619 1429/2410/636 +f 1418/2398/622 1428/2409/624 1430/2411/637 +f 1425/2406/623 1423/2404/621 1431/2412/638 +f 1421/2401/617 1422/2413/618 1432/2414/639 +f 1420/2400/620 1433/2415/640 1429/2410/636 +f 1429/2410/636 1433/2415/640 1434/2416/641 +f 1430/2411/637 1429/2410/636 1435/2417/642 +f 1436/2418/643 1424/2405/633 1430/2411/637 +f 1437/2419/644 1431/2412/638 1424/2405/633 +f 1438/2420/645 1426/2407/634 1431/2412/638 +f 1439/2421/647 1432/2422/639 1426/2407/634 +f 1434/2416/641 1433/2415/640 1427/2408/635 +f 1440/2423/646 1427/2408/635 1432/2414/639 +f 1440/2423/646 1439/2424/647 1441/2425/614 +f 1434/2416/641 1440/2423/646 1441/2425/614 +f 1435/2417/642 1434/2416/641 1441/2426/614 +f 1442/2427/648 1435/2417/642 1441/2426/614 +f 1436/2418/643 1442/2427/648 1441/2428/614 +f 1437/2419/644 1436/2418/643 1441/2428/614 +f 1439/2421/647 1438/2420/645 1441/2429/614 +f 1438/2420/645 1437/2419/644 1441/2429/614 +f 1443/2430/584 1444/2431/585 1445/2432/585 +f 1446/2433/586 1447/2434/587 1448/2435/587 +f 1449/2436/588 1450/2437/589 1451/2438/589 +f 1444/2439/585 1452/2440/590 1453/2441/590 +f 1447/2434/587 1443/2430/584 1454/2442/584 +f 1455/2443/591 1446/2433/586 1456/2444/586 +f 1450/2437/589 1455/2443/591 1457/2445/591 +f 1452/2440/590 1449/2436/588 1458/2446/588 +f 1459/2447/592 1451/2438/592 1457/2445/593 +f 1457/2445/593 1456/2444/594 1460/2448/594 +f 1460/2448/594 1456/2444/594 1448/2435/595 +f 1461/2449/595 1448/2435/595 1454/2442/596 +f 1462/2450/596 1454/2442/596 1445/2432/597 +f 1445/2451/597 1453/2441/598 1463/2452/598 +f 1453/2441/598 1458/2446/599 1464/2453/599 +f 1458/2446/599 1451/2438/592 1459/2447/592 +f 1464/2453/588 1459/2447/589 1465/2454/600 +f 1466/2455/585 1463/2452/590 1467/2456/601 +f 1461/2449/587 1462/2450/584 1468/2457/602 +f 1469/2458/591 1460/2448/586 1470/2459/603 +f 1459/2447/589 1469/2458/591 1471/2460/604 +f 1464/2453/588 1472/2461/605 1467/2456/601 +f 1462/2450/584 1466/2462/585 1473/2463/606 +f 1460/2448/586 1461/2449/587 1474/2464/607 +f 1475/2465/609 1470/2459/603 1474/2464/607 +f 1476/2466/615 1471/2460/604 1470/2459/603 +f 1465/2454/600 1471/2460/604 1476/2466/615 +f 1477/2467/611 1472/2461/605 1465/2454/600 +f 1478/2468/616 1467/2456/601 1472/2461/605 +f 1473/2469/606 1467/2456/601 1478/2468/616 +f 1479/2470/608 1474/2464/607 1468/2457/602 +f 1468/2457/602 1473/2463/606 1480/2471/612 +f 1481/2472/613 1480/2471/612 1482/2473/614 +f 1479/2470/608 1481/2472/613 1482/2473/614 +f 1475/2465/609 1479/2470/608 1482/2474/614 +f 1476/2466/615 1475/2465/609 1482/2474/614 +f 1483/2475/610 1476/2466/615 1482/2476/614 +f 1477/2467/611 1483/2475/610 1482/2476/614 +f 1480/2477/612 1478/2468/616 1482/2478/614 +f 1478/2468/616 1477/2467/611 1482/2478/614 +f 1217/2136/584 1245/2138/585 1249/2148/584 +f 1215/2139/586 1246/2141/587 1250/2150/586 +f 1199/2142/588 1247/2144/589 1252/2152/588 +f 1197/2145/585 1248/2147/590 1245/2159/585 +f 1216/2140/587 1249/2148/584 1246/2141/587 +f 1198/2149/591 1250/2150/586 1251/2151/591 +f 1219/2143/589 1251/2151/591 1247/2144/589 +f 1218/2146/590 1252/2152/588 1248/2147/590 +f 1253/2153/592 1251/2151/593 1254/2154/593 +f 1254/2154/593 1250/2150/594 1255/2155/594 +f 1255/2155/594 1246/2141/595 1256/2156/595 +f 1256/2156/595 1249/2148/596 1257/2157/596 +f 1257/2157/596 1245/2138/597 1258/2168/597 +f 1258/2158/597 1248/2147/598 1259/2160/598 +f 1259/2160/598 1252/2152/599 1260/2161/599 +f 1252/2152/599 1253/2153/592 1260/2161/599 +f 1260/2161/588 1261/2162/600 1266/2167/605 +f 1258/2158/585 1262/2163/601 1267/2176/606 +f 1256/2156/587 1263/2164/602 1268/2170/607 +f 1254/2154/591 1264/2165/603 1265/2166/604 +f 1253/2153/589 1265/2166/604 1261/2162/600 +f 1259/2160/590 1266/2167/605 1262/2163/601 +f 1257/2157/584 1267/2169/606 1263/2164/602 +f 1255/2155/586 1268/2170/607 1264/2165/603 +f 1264/2165/603 1269/2171/608 1270/2172/609 +f 1265/2166/604 1270/2172/609 1276/2181/615 +f 1271/2173/610 1265/2166/604 1276/2181/615 +f 1272/2174/611 1261/2162/600 1271/2173/610 +f 1262/2163/601 1272/2174/611 1277/2183/616 +f 1273/2175/612 1262/2163/601 1277/2183/616 +f 1269/2171/608 1263/2164/602 1274/2177/613 +f 1274/2177/613 1267/2169/606 1273/2178/612 +f 1222/2185/617 1278/2187/618 1282/2197/617 +f 1220/2188/619 1279/2190/620 1283/2199/619 +f 1223/2191/621 1280/2193/622 1285/2201/621 +f 1201/2194/618 1281/2196/623 1278/2207/618 +f 1221/2189/620 1282/2197/617 1279/2190/620 +f 1202/2198/624 1283/2199/619 1284/2200/624 +f 1200/2192/622 1284/2200/624 1280/2193/622 +f 1224/2195/623 1285/2201/621 1281/2196/623 +f 1286/2202/625 1284/2200/626 1296/2213/626 +f 1284/2200/626 1287/2203/627 1296/2213/626 +f 1283/2199/627 1288/2204/628 1287/2203/627 +f 1288/2204/628 1282/2197/629 1289/2205/629 +f 1289/2205/629 1278/2187/630 1290/2217/630 +f 1290/2206/630 1281/2196/631 1291/2208/631 +f 1291/2208/631 1285/2201/632 1292/2209/632 +f 1292/2209/632 1280/2193/625 1286/2202/625 +f 1292/2209/621 1293/2210/633 1299/2216/638 +f 1290/2206/618 1294/2211/634 1300/2225/639 +f 1288/2204/620 1295/2212/635 1301/2219/640 +f 1296/2213/624 1297/2214/636 1298/2215/637 +f 1286/2202/622 1298/2215/637 1293/2210/633 +f 1291/2208/623 1299/2216/638 1294/2211/634 +f 1290/2217/618 1295/2212/635 1289/2205/617 +f 1287/2203/619 1301/2219/640 1297/2214/636 +f 1297/2214/636 1302/2220/641 1303/2221/642 +f 1298/2215/637 1303/2221/642 1310/2230/648 +f 1304/2222/643 1298/2215/637 1310/2230/648 +f 1305/2223/644 1293/2210/633 1304/2222/643 +f 1306/2224/645 1299/2216/638 1305/2223/644 +f 1300/2225/639 1306/2224/645 1308/2232/647 +f 1301/2219/640 1307/2226/646 1302/2220/641 +f 1295/2212/635 1308/2227/647 1307/2226/646 +f 1227/2234/584 1311/2236/585 1315/2246/584 +f 1225/2237/586 1312/2239/587 1316/2248/586 +f 1205/2240/588 1313/2242/589 1318/2250/588 +f 1203/2243/585 1314/2245/590 1311/2255/585 +f 1226/2238/587 1315/2246/584 1312/2239/587 +f 1204/2247/591 1316/2248/586 1317/2249/591 +f 1229/2241/589 1317/2249/591 1313/2242/589 +f 1228/2244/590 1318/2250/588 1314/2245/590 +f 1319/2251/592 1317/2249/593 1320/2252/593 +f 1320/2252/593 1316/2248/594 1329/2262/594 +f 1316/2248/594 1321/2253/595 1329/2262/594 +f 1321/2253/595 1315/2246/596 1322/2254/596 +f 1322/2254/596 1311/2236/597 1326/2266/597 +f 1311/2255/597 1323/2256/598 1326/2259/597 +f 1323/2256/598 1318/2250/599 1324/2257/599 +f 1324/2257/599 1313/2242/592 1319/2251/592 +f 1324/2257/588 1325/2258/600 1332/2265/605 +f 1326/2259/585 1327/2260/601 1333/2274/606 +f 1321/2253/587 1328/2261/602 1334/2268/607 +f 1320/2252/591 1330/2263/603 1331/2264/604 +f 1319/2251/589 1331/2264/604 1325/2258/600 +f 1323/2256/590 1332/2265/605 1327/2260/601 +f 1322/2254/584 1333/2267/606 1328/2261/602 +f 1329/2262/586 1334/2268/607 1330/2263/603 +f 1330/2263/603 1335/2269/608 1336/2270/609 +f 1331/2264/604 1336/2270/609 1343/2279/615 +f 1337/2271/610 1331/2264/604 1343/2279/615 +f 1338/2272/611 1325/2258/600 1337/2271/610 +f 1339/2273/616 1332/2265/605 1338/2272/611 +f 1333/2274/606 1339/2273/616 1341/2281/612 +f 1335/2269/608 1328/2261/602 1340/2275/613 +f 1340/2275/613 1333/2267/606 1341/2276/612 +f 1232/2283/617 1344/2285/618 1348/2295/617 +f 1230/2286/619 1345/2288/620 1349/2297/619 +f 1208/2289/621 1346/2291/622 1351/2299/621 +f 1206/2292/618 1347/2294/623 1344/2305/618 +f 1231/2287/620 1348/2295/617 1345/2288/620 +f 1207/2296/624 1349/2297/619 1350/2298/624 +f 1234/2290/622 1350/2298/624 1346/2291/622 +f 1233/2293/623 1351/2299/621 1347/2294/623 +f 1346/2291/625 1352/2300/626 1358/2307/625 +f 1350/2298/626 1353/2301/627 1352/2300/626 +f 1353/2301/627 1345/2288/628 1354/2302/628 +f 1354/2302/628 1348/2295/629 1355/2303/629 +f 1355/2303/629 1344/2285/630 1356/2315/630 +f 1356/2304/630 1347/2294/631 1360/2309/631 +f 1347/2294/631 1357/2306/632 1360/2309/631 +f 1351/2299/632 1358/2307/625 1357/2306/632 +f 1357/2306/621 1359/2308/633 1365/2314/638 +f 1356/2304/618 1361/2310/634 1366/2324/639 +f 1354/2302/620 1362/2311/635 1367/2317/640 +f 1352/2300/624 1363/2312/636 1364/2313/637 +f 1358/2307/622 1364/2313/637 1359/2308/633 +f 1360/2309/623 1365/2314/638 1361/2310/634 +f 1355/2303/617 1366/2316/639 1362/2311/635 +f 1353/2301/619 1367/2317/640 1363/2312/636 +f 1368/2318/642 1367/2317/640 1374/2325/641 +f 1369/2319/648 1363/2312/636 1368/2318/642 +f 1370/2320/643 1364/2313/637 1369/2319/648 +f 1371/2321/644 1359/2308/633 1370/2320/643 +f 1372/2322/645 1365/2314/638 1371/2321/644 +f 1373/2323/647 1361/2310/634 1372/2322/645 +f 1374/2325/641 1362/2311/635 1375/2326/646 +f 1375/2326/646 1366/2316/639 1373/2327/647 +f 1237/2332/584 1377/2334/585 1381/2344/584 +f 1235/2335/586 1378/2337/587 1382/2346/586 +f 1238/2338/588 1379/2340/589 1384/2348/588 +f 1210/2341/585 1380/2343/590 1377/2354/585 +f 1236/2336/587 1381/2344/584 1378/2337/587 +f 1211/2345/591 1382/2346/586 1383/2347/591 +f 1209/2339/589 1383/2347/591 1379/2340/589 +f 1239/2342/590 1384/2348/588 1380/2343/590 +f 1385/2349/592 1383/2347/593 1395/2360/593 +f 1383/2347/593 1386/2350/594 1395/2360/593 +f 1382/2346/594 1387/2351/595 1386/2350/594 +f 1387/2351/595 1381/2344/596 1388/2352/596 +f 1388/2352/596 1377/2334/597 1389/2364/597 +f 1389/2353/597 1380/2343/598 1392/2357/598 +f 1380/2343/598 1390/2355/599 1392/2357/598 +f 1390/2355/599 1379/2340/592 1385/2349/592 +f 1390/2355/588 1391/2356/600 1398/2363/605 +f 1389/2353/585 1393/2358/601 1399/2371/606 +f 1387/2351/587 1394/2359/602 1400/2366/607 +f 1395/2360/591 1396/2361/603 1397/2362/604 +f 1385/2349/589 1397/2362/604 1391/2356/600 +f 1392/2357/590 1398/2363/605 1393/2358/601 +f 1389/2364/585 1394/2359/602 1388/2352/584 +f 1387/2351/587 1396/2361/603 1386/2350/586 +f 1401/2367/609 1400/2366/607 1405/2372/608 +f 1397/2362/604 1401/2367/609 1408/2377/615 +f 1402/2368/610 1397/2362/604 1408/2377/615 +f 1398/2363/605 1402/2368/610 1409/2379/611 +f 1403/2369/616 1398/2363/605 1409/2379/611 +f 1404/2370/612 1393/2358/601 1403/2369/616 +f 1405/2372/608 1394/2359/602 1406/2374/613 +f 1394/2359/602 1404/2373/612 1406/2374/613 +f 1242/2381/617 1410/2383/618 1414/2393/617 +f 1240/2384/619 1411/2386/620 1415/2395/619 +f 1243/2387/621 1412/2389/622 1417/2397/621 +f 1213/2390/618 1413/2392/623 1410/2403/618 +f 1241/2385/620 1414/2393/617 1411/2386/620 +f 1214/2394/624 1415/2395/619 1416/2396/624 +f 1212/2388/622 1416/2396/624 1412/2389/622 +f 1244/2391/623 1417/2397/621 1413/2392/623 +f 1418/2398/625 1416/2396/626 1428/2409/626 +f 1416/2396/626 1419/2399/627 1428/2409/626 +f 1415/2395/627 1420/2400/628 1419/2399/627 +f 1420/2400/628 1414/2393/629 1421/2401/629 +f 1421/2401/629 1410/2383/630 1422/2413/630 +f 1422/2402/630 1413/2392/631 1425/2406/631 +f 1413/2392/631 1423/2404/632 1425/2406/631 +f 1423/2404/632 1412/2389/625 1418/2398/625 +f 1423/2404/621 1424/2405/633 1431/2412/638 +f 1422/2402/618 1426/2407/634 1432/2422/639 +f 1420/2400/620 1427/2408/635 1433/2415/640 +f 1428/2409/624 1429/2410/636 1430/2411/637 +f 1418/2398/622 1430/2411/637 1424/2405/633 +f 1425/2406/623 1431/2412/638 1426/2407/634 +f 1421/2401/617 1432/2414/639 1427/2408/635 +f 1420/2400/620 1429/2410/636 1419/2399/619 +f 1429/2410/636 1434/2416/641 1435/2417/642 +f 1430/2411/637 1435/2417/642 1442/2427/648 +f 1436/2418/643 1430/2411/637 1442/2427/648 +f 1437/2419/644 1424/2405/633 1436/2418/643 +f 1438/2420/645 1431/2412/638 1437/2419/644 +f 1439/2421/647 1426/2407/634 1438/2420/645 +f 1434/2416/641 1427/2408/635 1440/2423/646 +f 1440/2423/646 1432/2414/639 1439/2424/647 +f 1443/2430/584 1445/2432/585 1454/2442/584 +f 1446/2433/586 1448/2435/587 1456/2444/586 +f 1449/2436/588 1451/2438/589 1458/2446/588 +f 1444/2439/585 1453/2441/590 1445/2451/585 +f 1447/2434/587 1454/2442/584 1448/2435/587 +f 1455/2443/591 1456/2444/586 1457/2445/591 +f 1450/2437/589 1457/2445/591 1451/2438/589 +f 1452/2440/590 1458/2446/588 1453/2441/590 +f 1459/2447/592 1457/2445/593 1469/2458/593 +f 1457/2445/593 1460/2448/594 1469/2458/593 +f 1460/2448/594 1448/2435/595 1461/2449/595 +f 1461/2449/595 1454/2442/596 1462/2450/596 +f 1462/2450/596 1445/2432/597 1466/2462/597 +f 1445/2451/597 1463/2452/598 1466/2455/597 +f 1453/2441/598 1464/2453/599 1463/2452/598 +f 1458/2446/599 1459/2447/592 1464/2453/599 +f 1464/2453/588 1465/2454/600 1472/2461/605 +f 1466/2455/585 1467/2456/601 1473/2469/606 +f 1461/2449/587 1468/2457/602 1474/2464/607 +f 1469/2458/591 1470/2459/603 1471/2460/604 +f 1459/2447/589 1471/2460/604 1465/2454/600 +f 1464/2453/588 1467/2456/601 1463/2452/590 +f 1462/2450/584 1473/2463/606 1468/2457/602 +f 1460/2448/586 1474/2464/607 1470/2459/603 +f 1475/2465/609 1474/2464/607 1479/2470/608 +f 1476/2466/615 1470/2459/603 1475/2465/609 +f 1465/2454/600 1476/2466/615 1483/2475/610 +f 1477/2467/611 1465/2454/600 1483/2475/610 +f 1478/2468/616 1472/2461/605 1477/2467/611 +f 1473/2469/606 1478/2468/616 1480/2477/612 +f 1479/2470/608 1468/2457/602 1481/2472/613 +f 1468/2457/602 1480/2471/612 1481/2472/613 diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 4af2d408cac6d134ddc95b569d1ff8820a6cdc3a..332f979135d2cb72d10e33dba03a445c37be2286 100644 GIT binary patch literal 18786 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 AO#lD@ literal 18648 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 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_secret.p50_1600.png b/src/main/resources/assets/hbm/textures/items/ammo_secret.p50_1600.png new file mode 100644 index 0000000000000000000000000000000000000000..c170d1c4d2ab347d8df189a0145a6741e8392488 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfch`aj7rPei z`D?$w)S25@uebk{#@Q7Hb7slNDKO}CB@3;!Sbfu6wQ~Q4e6MSvj)msuvaW?1I&AFV z>W(g#{gye6nZf43&gVP_s&1?Cu^-x_mpmbmeZRu1zYbkB3_(w{6&%$XBT~d>IGtN= z8#MWFY3`p5maBK(*7-RnDt+sZ`#l1M7A}W=G45O5ChXO_G!Ezk22WQ%mvv4FO#n~R BV|f4o literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png deleted file mode 100644 index 132e23ffe4f55639145287527daae5f25fbe9779..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf7qH|`V6d^2w3ZSMJ% zX{2vFnJM^$gz_;7&5v3P326q#HcL3%T#EL~EyPd!|+yHm`dgv99c( z`HTbE^?MXebHbREgdS|}+`skOhHGi&9!%;NrGNJp6*S${-~;-A!PC{xWt~$(695Z* BU@-sy diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png deleted file mode 100644 index 307af40459d06c6b153f04f79023f8b421a2c990..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|4tTmahFJI~ zrz{XKX!@eA{_8*c#p37rET26Y6L|C1ElXfdNnLWFt$|17n!%1<1?R5MlOmdK KI;Vst1_l63rCW~x diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png deleted file mode 100644 index 4165c8f4bb3ff057feb6042a6f289e43edddae30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|)_b}*hFJI~ zrz{XKX!;UwdGVjT%j<}crk_g~Hngo>-F<-V#ObakUPeieHHih%j%{0fElwUdb?Q{X zg9D6AB!rA(7VAubBRSF5Wyjg`Sr%S~rTi(*Rm&c^y&ZX7y0GwSU!6)Ch$5rIVCVxR8}5rYv572X0W4I!P(6B=OG34uk#(x zJv6_l=NP!7RPA(qU7Xq^9>>CiyUX88B(}MPdkKlEMa=c;DlhmoHDdY$UY(>ECxa~; zS#^p`giRQx*iGQw*gKtRxp9P*;wgp_=LwfNFS0cpN-q4Z&K6+h*q5}3r$Mz8$nyW@ pBH1u+rvuP>=FZ8f44WDmw&g|(UQ^$GALw)jPgg&ebxsLQ3;_NLR?`3g From d13d0679b773dc4f07944eaa9dcd8ff5615e43a2 Mon Sep 17 00:00:00 2001 From: Toshayo Date: Sun, 2 Mar 2025 21:50:50 +0100 Subject: [PATCH 56/64] Added OpenComputers integration for redstone-over-radio receiver/transmitter --- .../network/TileEntityRadioTorchBase.java | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java index e63a5b6e3..921ddd245 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchBase.java @@ -1,17 +1,24 @@ package com.hbm.tileentity.network; +import com.hbm.handler.CompatHandler; import com.hbm.interfaces.IControlReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.BufferUtil; +import cpw.mods.fml.common.Optional; import io.netty.buffer.ByteBuf; +import li.cil.oc.api.machine.Arguments; +import li.cil.oc.api.machine.Callback; +import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.NetworkManager; import net.minecraft.network.Packet; import net.minecraft.network.play.server.S35PacketUpdateTileEntity; -public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IControlReceiver { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IControlReceiver, SimpleComponent, CompatHandler.OCComponent { /** channel we're broadcasting on/listening to */ public String channel = ""; @@ -103,4 +110,31 @@ public class TileEntityRadioTorchBase extends TileEntityLoadedBase implements IC this.markDirty(); } + + @Override + @Optional.Method(modid = "OpenComputers") + public String getComponentName() { + return "radio_torch"; + } + + @Callback(direct = true, limit = 4, doc = "setChannle(channel: string) -- Set the channel the torch is listening/broadcasting to") + @Optional.Method(modid = "OpenComputers") + public Object[] setChannel(Context context, Arguments args) { + channel = args.checkString(0); + return new Object[] {}; + } + + @Callback(direct = true, limit = 4, doc = "setPolling(value: boolean) -- Switches state change mode to tick-based polling") + @Optional.Method(modid = "OpenComputers") + public Object[] setPolling(Context context, Arguments args) { + polling = args.checkBoolean(0); + return new Object[] {}; + } + + @Callback(direct = true, limit = 4, doc = "setCustomMap(value: boolean) -- Switches redstone passthrough to custom signal mapping") + @Optional.Method(modid = "OpenComputers") + public Object[] setCustomMap(Context context, Arguments args) { + customMap = args.checkBoolean(0); + return new Object[] {}; + } } From 228fbf506d5b3837242e1fa96ea959c616f97066 Mon Sep 17 00:00:00 2001 From: Toshayo Date: Sun, 2 Mar 2025 23:26:01 +0100 Subject: [PATCH 57/64] Added satellite NEI handler --- .../com/hbm/handler/nei/SatelliteHandler.java | 189 ++++++++++++++++++ src/main/java/com/hbm/main/NEIRegistry.java | 1 + .../saveddata/satellites/SatelliteMiner.java | 17 +- 3 files changed, 204 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/SatelliteHandler.java diff --git a/src/main/java/com/hbm/handler/nei/SatelliteHandler.java b/src/main/java/com/hbm/handler/nei/SatelliteHandler.java new file mode 100644 index 000000000..77e0c3cb4 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/SatelliteHandler.java @@ -0,0 +1,189 @@ +package com.hbm.handler.nei; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.imc.ICompatNHNEI; +import com.hbm.itempool.ItemPool; +import com.hbm.itempool.ItemPoolsSatellite; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.saveddata.satellites.SatelliteMiner; +import com.hbm.util.ItemStackUtil; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; +import net.minecraft.util.WeightedRandomChestContent; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; + +import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; + +public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNHNEI { + @Override + public ItemStack[] getMachinesForRecipe() { + return new ItemStack[] { + new ItemStack(ModBlocks.sat_dock) + }; + } + + @Override + public String getRecipeID() { + return "ntmSatellite"; + } + + @Override + public String getRecipeName() { + return "Satellite"; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_anvil.png"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + if(outputId.equals("ntmSatellite")) { + for(Item satelliteItem : new Item[]{ModItems.sat_miner, ModItems.sat_lunar_miner}) { + String poolName = SatelliteMiner.getCargoForItem(satelliteItem); + if(poolName == null) { + continue; + } + this.addRecipeToList(satelliteItem, ItemPool.getPool(poolName)); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + for(Item satelliteItem : new Item[]{ModItems.sat_miner, ModItems.sat_lunar_miner}) { + String poolName = SatelliteMiner.getCargoForItem(satelliteItem); + if(poolName == null) { + continue; + } + WeightedRandomChestContent[] pool = ItemPool.getPool(poolName); + for(WeightedRandomChestContent poolEntry : pool) { + if(NEIServerUtils.areStacksSameTypeCrafting(poolEntry.theItemId, result)) { + this.addRecipeToList(satelliteItem, pool); + break; + } + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + if(inputId.equals("ntmSatellite")) { + loadCraftingRecipes("ntmSatellite"); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + if(ingredient.getItem() == ModItems.sat_miner) { + this.addRecipeToList(ModItems.sat_miner, ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_MINER)); + } else if(ingredient.getItem() == ModItems.sat_lunar_miner) { + this.addRecipeToList(ModItems.sat_lunar_miner, ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_LUNAR)); + } + } + + + private void addRecipeToList(Item poolItem, WeightedRandomChestContent[] poolEntries) { + List outs = new ArrayList<>(); + int weight = Arrays.stream(poolEntries).mapToInt(poolEntry -> poolEntry.itemWeight).sum(); + + for(WeightedRandomChestContent poolEntry : poolEntries) { + ItemStack stack = poolEntry.theItemId.copy(); + + float chance = 100F * poolEntry.itemWeight / weight; + ItemStackUtil.addTooltipToStack(stack, EnumChatFormatting.RED + "" + ((int)(chance * 10F) / 10F) + "%"); + + outs.add(stack); + } + + this.arecipes.add(new RecipeSet(new ItemStack(poolItem), outs)); + } + + @Override + public void drawBackground(int recipe) { + super.drawBackground(recipe); + + drawTexturedModalRect(11, 23, 113, 105, 18, 18); //in + drawTexturedModalRect(47, 5, 5, 87, 108, 54); //out + drawTexturedModalRect(29, 14, 131, 96, 18, 36); //operation + } + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + List input = new ArrayList<>(); + List output = new ArrayList<>(); + PositionedStack satelliteDock; + + public RecipeSet(Object in, List out) { + //not the prettiest of solutions but certainly the most pleasant to work with + int inLine = 1; + int outLine = 1; + int inOX = 0; + int inOY = 0; + int outOX = 0; + int outOY = 0; + int anvX = 0; + int anvY = 31; + + outLine = 6; + inOX = 12; + inOY = 24; + outOX = 48; + outOY = 6; + anvX = 30; + + this.input.add(new PositionedStack(in, inOX, inOY)); + + int overflowCount = out.size() / 18; + for(int i = 0; i < Math.min(out.size(), 18); i++) { + ItemStack[] stacks = new ItemStack[overflowCount + 1]; + for(int j = 0; j < overflowCount + 1 && j * 18 + i < out.size(); j++) { + stacks[j] = out.get(j * 18 + i); + } + this.output.add(new PositionedStack(stacks, outOX + 18 * (i % outLine), outOY + 18 * (i / outLine))); + } + + this.satelliteDock = new PositionedStack(new ItemStack(ModBlocks.sat_dock), anvX, anvY); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 20, input); + } + + @Override + public PositionedStack getResult() { + return output.get(0); + } + + @Override + public List getOtherStacks() { + ArrayList stacks = new ArrayList<>(output); + stacks.add(satelliteDock); + return getCycledIngredients(cycleticks / 20, stacks); + } + } + + private static HashMap getRecipeMap() { + HashMap recipeMap = new HashMap<>(); + ItemStack minerStack = new ItemStack(ModItems.sat_miner); + ItemStack lunarMinerStack = new ItemStack(ModItems.sat_lunar_miner); + Arrays.stream(ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_MINER)).forEach(poolEntry -> recipeMap.put(minerStack, poolEntry.theItemId)); + Arrays.stream(ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_LUNAR)).forEach(poolEntry -> recipeMap.put(lunarMinerStack, poolEntry.theItemId)); + return recipeMap; + } +} diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 79c495534..12d7101c7 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -43,6 +43,7 @@ public class NEIRegistry { handlers.add(new CrucibleCastingHandler()); handlers.add(new ToolingHandler()); handlers.add(new ConstructionHandler()); + handlers.add(new SatelliteHandler()); //universal boyes handlers.add(new ZirnoxRecipeHandler()); diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java index 8481a54e9..daca3b22d 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -2,6 +2,7 @@ package com.hbm.saveddata.satellites; import com.hbm.itempool.ItemPoolsSatellite; import com.hbm.util.WeightedRandomObject; +import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import java.util.HashMap; @@ -13,15 +14,15 @@ public class SatelliteMiner extends Satellite { private static final HashMap, String> CARGO = new HashMap<>(); public long lastOp; - + public SatelliteMiner() { this.satIface = Interfaces.NONE; } - + public void writeToNBT(NBTTagCompound nbt) { nbt.setLong("lastOp", lastOp); } - + public void readFromNBT(NBTTagCompound nbt) { lastOp = nbt.getLong("lastOp"); } @@ -42,6 +43,16 @@ public class SatelliteMiner extends Satellite { return CARGO.get(getClass()); } + /** + * Gets the cargo key for the satellite item. If the item is not a miner satellite null is returned. + * @param satelliteItem - Satellite item + * @return - Returns {@link com.hbm.itempool.ItemPool} key or null if the item is not a mining satellite. + */ + public static String getCargoForItem(Item satelliteItem) { + Class satelliteClass = itemToClass.getOrDefault(satelliteItem, null); + return satelliteClass != null ? CARGO.getOrDefault(satelliteClass, null) : null; + } + static { registerCargo(SatelliteMiner.class, ItemPoolsSatellite.POOL_SAT_MINER); } From 00cacbbadc1bff2ca28da24dadd6b2df63a9fdb0 Mon Sep 17 00:00:00 2001 From: Boblet Date: Mon, 3 Mar 2025 16:05:28 +0100 Subject: [PATCH 58/64] damage fix, mas36 anim error, server config command --- changelog | 33 ++--- .../java/com/hbm/blocks/bomb/Landmine.java | 29 ++++- .../com/hbm/commands/CommandReloadClient.java | 123 ++++-------------- .../com/hbm/commands/CommandReloadConfig.java | 102 +++++++++++++++ .../com/hbm/commands/CommandReloadServer.java | 45 +++++++ .../java/com/hbm/config/ClientConfig.java | 96 +------------- .../java/com/hbm/config/RunningConfig.java | 110 ++++++++++++++++ .../java/com/hbm/config/ServerConfig.java | 58 +++++++++ .../com/hbm/explosion/ExplosionNukeSmall.java | 2 +- src/main/java/com/hbm/items/ModItems.java | 3 +- .../weapon/sedna/factory/XFactory762mm.java | 2 +- src/main/java/com/hbm/main/MainRegistry.java | 3 + .../java/com/hbm/main/ModEventHandler.java | 13 ++ .../hbm/render/anim/BusAnimationSequence.java | 1 + .../java/com/hbm/util/EntityDamageUtil.java | 57 +++++++- .../hbm/textures/blocks/glass_polarized.png | Bin 0 -> 205 bytes .../textures/blocks/glass_polarized_ct.png | Bin 0 -> 260 bytes .../hbm/textures/items/ingot_metal_sheet.png | Bin 6159 -> 6157 bytes 18 files changed, 446 insertions(+), 231 deletions(-) create mode 100644 src/main/java/com/hbm/commands/CommandReloadConfig.java create mode 100644 src/main/java/com/hbm/commands/CommandReloadServer.java create mode 100644 src/main/java/com/hbm/config/RunningConfig.java create mode 100644 src/main/java/com/hbm/config/ServerConfig.java create mode 100644 src/main/resources/assets/hbm/textures/blocks/glass_polarized.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/glass_polarized_ct.png diff --git a/changelog b/changelog index c410ab62a..96cce6458 100644 --- a/changelog +++ b/changelog @@ -1,29 +1,14 @@ ## Added -* A new legendary weapon +* `/ntmserver` + * Functions like `/ntmclient` but for common settings + * Can toggle `DAMAGE_COMPATIBILITY_MODE`, off by default, enables a more compatible (but slightly jankier) version of the bullet damage code + * `MINE__DAMAGE` can be used to adjust landmine damage ## Changed -* Updated russian localization -* Large deposits (hematite, malachite, bauxite) and caves (sulfur, asbestos) can now be toggled in the config -* Removed recipes for most old particle accelerator parts -* Dense coils no longer have recipes either for the most part, all coils with no recipes can be recycled back into dense wires -* Natural gas can now be processed in a pyrolysis oven, 12k of gas yields 8k hydrogen and one graphite ingot -* Saturnite now has an alternate recipe, adding one pile of borax for doubled output -* All mass storage units (except wood) are now substantially cheaper -* Reduced base spread for all 12 and 10 gauge buckshot shells from 0.05 to 0.035 -* Reduced legendary 12 lever action's spread multiplier from x1.35 to x1.15 -* Bullet casings now spawn with randomized angular velocity -* Bullet casings now correctly bounce off walls, and change angles when bouncing -* Two previously unobtainable legendaries are now in the red room loot pool (about 10x less common than most other items) +* Fat mines now use the standardized mini nuke code + * Fat mines now have a base damage of exactly 100, being identical to demolition mini nukes + * Fat mines now gib affected entities +* IV bags now use `setHealth` operations instead of dealing damage, preventing health duplication by just avoiding the damage ## Fixed -* Fixed an issue where `/ntmreload` would load fluids after recipes, meaning that recipes using newly added fluids would not work correctly, as the fluids don't exist by the time the recipe is loaded -* Fixed bedrock coltan being way too common, drowning out almost all other bedrock ores -* Fixed rotary furnace not saving its output stack -* Fixed strand caster water check being incorrect, creating negative water by allowing operations with insufficient cooling -* Fixed radar not using the small remaining amount of power, causing the animation getting stuck -* Fixed the new system structures being way too common -* Fixed RBMKs losing all their flux when reloading the world -* Fixed issue where DODD fuel item stats would only update when the GUI was open -* Fixed muzzle flashes not being fullbright -* Fixed guns having their name permanently visible over the toolbar -* Fixed hangman being absolutely gigantic when dropped \ No newline at end of file +* Fixed animation error on the MAS-36 \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 03a505e55..ec75235b6 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -3,8 +3,8 @@ package com.hbm.blocks.bomb; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.config.ServerConfig; import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; @@ -13,8 +13,13 @@ import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.interfaces.IBomb; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.XFactoryCatapult; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.bomb.TileEntityLandmine; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.BlockFence; @@ -23,6 +28,7 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; @@ -138,7 +144,7 @@ public class Landmine extends BlockContainer implements IBomb { if(this == ModBlocks.mine_ap) { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 10F).setupPiercing(5F, 0.2F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_AP_DAMAGE.get()).setupPiercing(5F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); @@ -146,13 +152,13 @@ public class Landmine extends BlockContainer implements IBomb { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 4F); vnt.setBlockAllocator(new BlockAllocatorStandard()); vnt.setBlockProcessor(new BlockProcessorStandard()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, 35).setupPiercing(15F, 0.2F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, ServerConfig.MINE_HE_DAMAGE.get()).setupPiercing(15F, 0.2F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(15, 3.5F, 1.25F)); vnt.explode(); } else if(this == ModBlocks.mine_shrap) { ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 3F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, 7.5F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(0.5, ServerConfig.MINE_SHRAP_DAMAGE.get())); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(5, 1F, 0.5F)); vnt.explode(); @@ -160,7 +166,20 @@ public class Landmine extends BlockContainer implements IBomb { ExplosionLarge.spawnShrapnelShower(world, x + 0.5, y + 0.5, z + 0.5, 0, 1D, 0, 45, 0.2D); ExplosionLarge.spawnShrapnels(world, x + 0.5, y + 0.5, z + 0.5, 5); } else if(this == ModBlocks.mine_fat) { - ExplosionNukeSmall.explode(world, x + 0.5, y + 0.5, z + 0.5, ExplosionNukeSmall.PARAMS_MEDIUM); + + ExplosionVNT vnt = new ExplosionVNT(world, x + 0.5, y + 0.5, z + 0.5, 10); + vnt.setBlockAllocator(new BlockAllocatorStandard(64)); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, ServerConfig.MINE_NUKE_DAMAGE.get()).withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + XFactoryCatapult.incrementRad(world, x, y, z, 1.5F); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + data.setBoolean("balefire", MainRegistry.polaroidID == 11 || world.rand.nextInt(100) == 0); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + 0.5, y + 0.5, z + 0.5), new TargetPoint(world.provider.dimensionId, x + 0.5, y + 0.5, z + 0.5, 250)); + } } diff --git a/src/main/java/com/hbm/commands/CommandReloadClient.java b/src/main/java/com/hbm/commands/CommandReloadClient.java index 6f0c9672a..84f21988b 100644 --- a/src/main/java/com/hbm/commands/CommandReloadClient.java +++ b/src/main/java/com/hbm/commands/CommandReloadClient.java @@ -1,24 +1,18 @@ package com.hbm.commands; -import java.util.Collections; -import java.util.List; -import java.util.Map.Entry; -import java.util.stream.Collectors; +import java.util.HashMap; import com.hbm.config.ClientConfig; -import com.hbm.config.ClientConfig.ConfigWrapper; +import com.hbm.config.RunningConfig.ConfigWrapper; import cpw.mods.fml.relauncher.FMLLaunchHandler; import cpw.mods.fml.relauncher.Side; -import net.minecraft.command.CommandBase; -import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraftforge.client.ClientCommandHandler; -public class CommandReloadClient extends CommandBase { +public class CommandReloadClient extends CommandReloadConfig { public static void register() { if(FMLLaunchHandler.side() != Side.CLIENT) return; @@ -34,95 +28,26 @@ public class CommandReloadClient extends CommandBase { public String getCommandUsage(ICommandSender sender) { return "/ntmclient help"; } - - @Override - public boolean canCommandSenderUseCommand(ICommandSender sender) { - return sender instanceof EntityPlayer; - } - - @Override - public void processCommand(ICommandSender sender, String[] args) { - - if(args.length < 1) throw new CommandException(getCommandUsage(sender)); - - String operator = args[0]; - - if("help".equals(operator)) { - - if(args.length >= 2) { - String command = args[1]; - if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmclient subcommands.")); - if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all client variable names and values.")); - if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads client variables from the config file.")); - if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); - if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); - } else { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "list")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "reload")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); - } - return; - } - - if("list".equals(operator)) { - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "CLIENT VARIABLES:")); - for(Entry line : ClientConfig.configMap.entrySet()) { - sender.addChatMessage(new ChatComponentText(" " + EnumChatFormatting.GOLD + line.getKey() + ": " + EnumChatFormatting.YELLOW + line.getValue().value)); - } - return; - } - - if("reload".equals(operator)) { - ClientConfig.reload(); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Variables loaded from config file.")); - return; - } - - if(args.length < 2) throw new CommandException(getCommandUsage(sender)); - - String key = args[1]; - - if("get".equals(operator)) { - ConfigWrapper wrapper = ClientConfig.configMap.get(key); - if(wrapper == null) throw new CommandException("Key does not exist."); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + key + ": " + EnumChatFormatting.YELLOW + wrapper.value)); - return; - } - - if(args.length < 3) throw new CommandException(getCommandUsage(sender)); - - String value = args[2]; - - if("set".equals(operator)) { - ConfigWrapper wrapper = ClientConfig.configMap.get(key); - if(wrapper == null) throw new CommandException("Key does not exist."); - - try { - wrapper.update(value); - ClientConfig.refresh(); - sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Value updated.")); - } catch(Exception ex) { - throw new CommandException("Error parsing type for " + wrapper.value.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); - } - - return; - } - - throw new CommandException(getCommandUsage(sender)); - } - - @SuppressWarnings("rawtypes") - @Override - public List addTabCompletionOptions(ICommandSender sender, String[] args) { - if(!(sender instanceof EntityPlayer)) return Collections.emptyList(); - if(args.length < 1) return Collections.emptyList(); - if(args.length == 1) return getListOfStringsMatchingLastWord(args, "list", "reload", "get", "set"); - String operator = args[0]; - if(args.length == 2 && ("get".equals(operator) || "set".equals(operator))) { - return getListOfStringsFromIterableMatchingLastWord(args, ClientConfig.configMap.keySet().stream().map(String::valueOf).collect(Collectors.toList())); - } - return Collections.emptyList(); + + @Override public void help(ICommandSender sender, String[] args) { + if(args.length >= 2) { + String command = args[1]; + if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmclient subcommands.")); + if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all client variable names and values.")); + if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads client variables from the config file.")); + if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); + if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "list")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "reload")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmclient " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); + } } + + @Override public HashMap getConfigMap() { return ClientConfig.configMap; } + @Override public void refresh() { ClientConfig.refresh(); } + @Override public void reload() { ClientConfig.reload(); } + @Override public String getTitle() { return "CLIENT VARIABLES:"; } } diff --git a/src/main/java/com/hbm/commands/CommandReloadConfig.java b/src/main/java/com/hbm/commands/CommandReloadConfig.java new file mode 100644 index 000000000..fbe35111a --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandReloadConfig.java @@ -0,0 +1,102 @@ +package com.hbm.commands; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.stream.Collectors; + +import com.hbm.config.RunningConfig.ConfigWrapper; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +public abstract class CommandReloadConfig extends CommandBase { + + @Override + public boolean canCommandSenderUseCommand(ICommandSender sender) { + return sender instanceof EntityPlayer; + } + + public abstract void help(ICommandSender sender, String[] args); + public abstract HashMap getConfigMap(); + public abstract void refresh(); + public abstract void reload(); + public abstract String getTitle(); + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length < 1) throw new CommandException(getCommandUsage(sender)); + + String operator = args[0]; + + if("help".equals(operator)) { + help(sender, args); + return; + } + + if("list".equals(operator)) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + getTitle())); + for(Entry line : getConfigMap().entrySet()) { + sender.addChatMessage(new ChatComponentText(" " + EnumChatFormatting.GOLD + line.getKey() + ": " + EnumChatFormatting.YELLOW + line.getValue().value)); + } + return; + } + + if("reload".equals(operator)) { + reload(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Variables loaded from config file.")); + return; + } + + if(args.length < 2) throw new CommandException(getCommandUsage(sender)); + + String key = args[1]; + + if("get".equals(operator)) { + ConfigWrapper wrapper = getConfigMap().get(key); + if(wrapper == null) throw new CommandException("Key does not exist."); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.GOLD + key + ": " + EnumChatFormatting.YELLOW + wrapper.value)); + return; + } + + if(args.length < 3) throw new CommandException(getCommandUsage(sender)); + + String value = args[2]; + + if("set".equals(operator)) { + ConfigWrapper wrapper = getConfigMap().get(key); + if(wrapper == null) throw new CommandException("Key does not exist."); + + try { + wrapper.update(value); + refresh(); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Value updated.")); + } catch(Exception ex) { + throw new CommandException("Error parsing type for " + wrapper.value.getClass().getSimpleName() + ": " + ex.getLocalizedMessage()); + } + + return; + } + + throw new CommandException(getCommandUsage(sender)); + } + + @SuppressWarnings("rawtypes") + @Override + public List addTabCompletionOptions(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) return Collections.emptyList(); + if(args.length < 1) return Collections.emptyList(); + if(args.length == 1) return getListOfStringsMatchingLastWord(args, "list", "reload", "get", "set"); + String operator = args[0]; + if(args.length == 2 && ("get".equals(operator) || "set".equals(operator))) { + return getListOfStringsFromIterableMatchingLastWord(args, getConfigMap().keySet().stream().map(String::valueOf).collect(Collectors.toList())); + } + return Collections.emptyList(); + } +} diff --git a/src/main/java/com/hbm/commands/CommandReloadServer.java b/src/main/java/com/hbm/commands/CommandReloadServer.java new file mode 100644 index 000000000..33c572141 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandReloadServer.java @@ -0,0 +1,45 @@ +package com.hbm.commands; + +import java.util.HashMap; + +import com.hbm.config.RunningConfig.ConfigWrapper; +import com.hbm.config.ServerConfig; + +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; + +public class CommandReloadServer extends CommandReloadConfig { + + @Override + public String getCommandName() { + return "ntmserver"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmserver help"; + } + + @Override public void help(ICommandSender sender, String[] args) { + if(args.length >= 2) { + String command = args[1]; + if("help".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows usage for /ntmserver subcommands.")); + if("list".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows all server variable names and values.")); + if("reload".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Reads server variables from the config file.")); + if("get".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Shows value for the specified variable name.")); + if("set".equals(command)) sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "Sets a variable's value and saves it to the config file.")); + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "help " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "list")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "reload")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "get " + EnumChatFormatting.RED + "")); + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "/ntmserver " + EnumChatFormatting.GOLD + "set " + EnumChatFormatting.RED + " ")); + } + } + + @Override public HashMap getConfigMap() { return ServerConfig.configMap; } + @Override public void refresh() { ServerConfig.refresh(); } + @Override public void reload() { ServerConfig.reload(); } + @Override public String getTitle() { return "SERVER VARIABLES:"; } +} diff --git a/src/main/java/com/hbm/config/ClientConfig.java b/src/main/java/com/hbm/config/ClientConfig.java index 4d171cad7..2f5cec902 100644 --- a/src/main/java/com/hbm/config/ClientConfig.java +++ b/src/main/java/com/hbm/config/ClientConfig.java @@ -1,21 +1,12 @@ package com.hbm.config; import com.google.gson.Gson; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; +import com.hbm.config.RunningConfig.ConfigWrapper; import com.hbm.main.MainRegistry; import com.hbm.util.Compat; import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; -import java.util.List; -import java.util.Map.Entry; // https://youtube.com/shorts/XTHZWqZt_AI public class ClientConfig { @@ -86,91 +77,10 @@ public class ClientConfig { } private static void readConfig(File config) { - - try { - JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); - - for(Entry line : configMap.entrySet()) { - - if(json.has(line.getKey())) { - JsonElement value = json.get(line.getKey()); - - try { - - //world's shittiest dynamic type parser - if(configMap.containsKey(line.getKey())) { - if(line.getValue().value instanceof String) configMap.get(line.getKey()).set(value.getAsString()); - if(line.getValue().value instanceof Float) configMap.get(line.getKey()).set(value.getAsFloat()); - if(line.getValue().value instanceof Double) configMap.get(line.getKey()).set(value.getAsDouble()); - if(line.getValue().value instanceof Integer) configMap.get(line.getKey()).set(value.getAsInt()); - if(line.getValue().value instanceof Boolean) configMap.get(line.getKey()).set(value.getAsBoolean()); - } - - //gson doesn't give me the option to read the raw value of a JsonPrimitive so we have to this shit effectively twice - //once to make sure that the parsed data matches with what's determined by the default, - //and a second time in the ConfigWrapper to add ease of reading the data without needing manual casts - - } catch(Exception ex) { - ex.printStackTrace(); - } - } - } - - } catch(Exception ex) { - ex.printStackTrace(); - } + RunningConfig.readConfig(config, configMap); } private static void writeConfig(File config) { - - try { - JsonWriter writer = new JsonWriter(new FileWriter(config)); - writer.setIndent(" "); - writer.beginObject(); - - writer.name("info").value("This file can be edited ingame using the /ntmclient command."); - - List keys = new ArrayList(); - keys.addAll(configMap.keySet()); - Collections.sort(keys); //readability is cool - - for(String key : keys) { - - ConfigWrapper wrapper = configMap.get(key); - Object value = wrapper.value; - //this sucks and i am too stupid to come up with something better - if(value instanceof String) writer.name(key).value((String) value); - if(value instanceof Float) writer.name(key).value((Float) value); - if(value instanceof Double) writer.name(key).value((Double) value); - if(value instanceof Integer) writer.name(key).value((Integer) value); - if(value instanceof Boolean) writer.name(key).value((Boolean) value); - } - - writer.endObject(); - writer.close(); - } catch(IOException e) { - e.printStackTrace(); - } - } - - public static class ConfigWrapper { - public T value; - - public ConfigWrapper(T o) { - this.value = o; - } - - public T get() { return value; } - public void set(T value) { this.value = value; } - - public void update(String param) { - Object stupidBufferObject = null; // wahh wahh can't cast Float to T wahh wahh shut the fuck up - if(value instanceof String) stupidBufferObject = param; - if(value instanceof Float) stupidBufferObject = Float.parseFloat(param); - if(value instanceof Double) stupidBufferObject = Double.parseDouble(param); - if(value instanceof Integer) stupidBufferObject = Integer.parseInt(param); - if(value instanceof Boolean) stupidBufferObject = Boolean.parseBoolean(param); - if(stupidBufferObject != null) this.value = (T) stupidBufferObject; - } + RunningConfig.writeConfig(config, configMap, "This file can be edited ingame using the /ntmclient command."); } } diff --git a/src/main/java/com/hbm/config/RunningConfig.java b/src/main/java/com/hbm/config/RunningConfig.java new file mode 100644 index 000000000..66ebe9193 --- /dev/null +++ b/src/main/java/com/hbm/config/RunningConfig.java @@ -0,0 +1,110 @@ +package com.hbm.config; + +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.Gson; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; + +public class RunningConfig { + + public static final Gson gson = new Gson(); + + public static void readConfig(File config, HashMap configMap) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + + for(Entry line : configMap.entrySet()) { + + if(json.has(line.getKey())) { + JsonElement value = json.get(line.getKey()); + + try { + + //world's shittiest dynamic type parser + if(configMap.containsKey(line.getKey())) { + if(line.getValue().value instanceof String) configMap.get(line.getKey()).set(value.getAsString()); + if(line.getValue().value instanceof Float) configMap.get(line.getKey()).set(value.getAsFloat()); + if(line.getValue().value instanceof Double) configMap.get(line.getKey()).set(value.getAsDouble()); + if(line.getValue().value instanceof Integer) configMap.get(line.getKey()).set(value.getAsInt()); + if(line.getValue().value instanceof Boolean) configMap.get(line.getKey()).set(value.getAsBoolean()); + } + + //gson doesn't give me the option to read the raw value of a JsonPrimitive so we have to this shit effectively twice + //once to make sure that the parsed data matches with what's determined by the default, + //and a second time in the ConfigWrapper to add ease of reading the data without needing manual casts + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + public static void writeConfig(File config, HashMap configMap, String info) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + + writer.name("info").value(info); + + List keys = new ArrayList(); + keys.addAll(configMap.keySet()); + Collections.sort(keys); //readability is cool + + for(String key : keys) { + + ConfigWrapper wrapper = configMap.get(key); + Object value = wrapper.value; + //this sucks and i am too stupid to come up with something better + if(value instanceof String) writer.name(key).value((String) value); + if(value instanceof Float) writer.name(key).value((Float) value); + if(value instanceof Double) writer.name(key).value((Double) value); + if(value instanceof Integer) writer.name(key).value((Integer) value); + if(value instanceof Boolean) writer.name(key).value((Boolean) value); + } + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + public static class ConfigWrapper { + public T value; + + public ConfigWrapper(T o) { + this.value = o; + } + + public T get() { return value; } + public void set(T value) { this.value = value; } + + public void update(String param) { + Object stupidBufferObject = null; // wahh wahh can't cast Float to T wahh wahh shut the fuck up + if(value instanceof String) stupidBufferObject = param; + if(value instanceof Float) stupidBufferObject = Float.parseFloat(param); + if(value instanceof Double) stupidBufferObject = Double.parseDouble(param); + if(value instanceof Integer) stupidBufferObject = Integer.parseInt(param); + if(value instanceof Boolean) stupidBufferObject = Boolean.parseBoolean(param); + if(stupidBufferObject != null) this.value = (T) stupidBufferObject; + } + } +} diff --git a/src/main/java/com/hbm/config/ServerConfig.java b/src/main/java/com/hbm/config/ServerConfig.java new file mode 100644 index 000000000..fd9586113 --- /dev/null +++ b/src/main/java/com/hbm/config/ServerConfig.java @@ -0,0 +1,58 @@ +package com.hbm.config; + +import java.io.File; +import java.util.HashMap; + +import com.google.gson.Gson; +import com.hbm.main.MainRegistry; + +public class ServerConfig extends RunningConfig { + + public static final Gson gson = new Gson(); + public static HashMap configMap = new HashMap(); + + public static ConfigWrapper DAMAGE_COMPATIBILITY_MODE = new ConfigWrapper(false); + public static ConfigWrapper MINE_AP_DAMAGE = new ConfigWrapper(10F); + public static ConfigWrapper MINE_HE_DAMAGE = new ConfigWrapper(35F); + public static ConfigWrapper MINE_SHRAP_DAMAGE = new ConfigWrapper(7.5F); + public static ConfigWrapper MINE_NUKE_DAMAGE = new ConfigWrapper(100F); + + private static void initDefaults() { + configMap.put("DAMAGE_COMPATIBILITY_MODE", DAMAGE_COMPATIBILITY_MODE); + configMap.put("MINE_AP_DAMAGE", MINE_AP_DAMAGE); + configMap.put("MINE_HE_DAMAGE", MINE_HE_DAMAGE); + configMap.put("MINE_SHRAP_DAMAGE", MINE_SHRAP_DAMAGE); + configMap.put("MINE_NUKE_DAMAGE", MINE_NUKE_DAMAGE); + } + + /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ + public static void initConfig() { + initDefaults(); + File folder = MainRegistry.configHbmDir; + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmServer.json"); + if(config.exists()) readConfig(config); + refresh(); + } + + /** Writes over the config file using the running config. */ + public static void refresh() { + File folder = MainRegistry.configHbmDir; + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmServer.json"); + writeConfig(config); + } + + /** Writes over the running config using the config file. */ + public static void reload() { + File folder = MainRegistry.configHbmDir; + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmServer.json"); + if(config.exists()) readConfig(config); + } + + private static void readConfig(File config) { + RunningConfig.readConfig(config, configMap); + } + + private static void writeConfig(File config) { + RunningConfig.writeConfig(config, configMap, "This file can be edited ingame using the /ntmserver command."); + } +} diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java index cca47893b..47067d8b2 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeSmall.java @@ -12,7 +12,7 @@ import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class ExplosionNukeSmall { +@Deprecated public class ExplosionNukeSmall { public static void explode(World world, double posX, double posY, double posZ, MukeParams params) { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 598003562..3b2feed15 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3022,7 +3022,8 @@ public class ModItems { iv_empty = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { if(user.hurtResistantTime <= 0) { ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.syringe", new ItemStack(ModItems.iv_blood)); - user.attackEntityFrom(DamageSource.magic, 5F); + user.setHealth(Math.max(user.getHealth() - 5F, 0F)); + if(user.getHealth() <= 0) user.onDeath(DamageSource.magic); } }).setUnlocalizedName("iv_empty").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_empty"); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java index b17c15d78..f63275b9a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory762mm.java @@ -191,7 +191,7 @@ public class XFactory762mm { .addBus("LIFT", new BusAnimationSequence().hold(200).addPos(30, 0, 0, 500, IType.SIN_FULL).holdUntil(1200).addPos(0, 0, 0, 500, IType.SIN_FULL)) .addBus("SHOW_CLIP", new BusAnimationSequence().setPos(1, 1, 1)) .addBus("CLIP", new BusAnimationSequence().setPos(2, -3, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(400).addPos(-0.5, 0.5, 0, 150).addPos(-3, -3, 0, 250, IType.SIN_UP)) - .addBus("BULLETS", new BusAnimationSequence().setPos(2, -4, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(150).addPos(0, -1.5, 0, 250, IType.SIN_DOWN)); + .addBus("BULLETS", new BusAnimationSequence().setPos(2, -3, 0).hold(250).addPos(0.5, 1, 0, 500, IType.SIN_DOWN).addPos(0, 0, 0, 250, IType.SIN_FULL).hold(150).addPos(0, -1.5, 0, 250, IType.SIN_DOWN)); case JAMMED: return new BusAnimation() .addBus("LIFT", new BusAnimationSequence().hold(250).addPos(-15, 0, 0, 500, IType.SIN_FULL).holdUntil(1650).addPos(0, 0, 0, 500, IType.SIN_FULL)) .addBus("BOLT_TURN", new BusAnimationSequence().hold(250).addPos(0, 0, turn, 150).holdUntil(1250).addPos(0, 0, 0, 150)) diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 94e2e5afa..bb9616014 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -861,7 +861,9 @@ public class MainRegistry { FalloutConfigJSON.initialize(); ItemPoolConfigJSON.initialize(); + ClientConfig.initConfig(); + ServerConfig.initConfig(); TileEntityNukeCustom.registerBombItems(); ArmorUtil.register(); @@ -948,6 +950,7 @@ public class MainRegistry { event.registerServerCommand(new CommandSatellites()); event.registerServerCommand(new CommandRadiation()); event.registerServerCommand(new CommandPacketInfo()); + event.registerServerCommand(new CommandReloadServer()); } @EventHandler diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 292c2a435..bdba621ca 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -114,6 +114,7 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent.Action; import net.minecraftforge.event.entity.player.PlayerUseItemEvent; import net.minecraftforge.event.world.BlockEvent.BreakEvent; +import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.WorldEvent; import org.apache.commons.lang3.math.NumberUtils; import org.apache.logging.log4j.Level; @@ -1231,6 +1232,18 @@ public class ModEventHandler { }*/ } + @SubscribeEvent + public void onChunkLoad(ChunkEvent.Load event) { + + //test for automatic in-world block replacement + + /*for(int x = 0; x < 16; x++) for(int y = 0; y < 255; y++) for(int z = 0; z < 16; z++) { + if(event.getChunk().getBlock(x, y, z) instanceof MachineArcFurnace) { + event.getChunk().func_150807_a(x, y, z, Blocks.air, 0); + } + }*/ + } + @SubscribeEvent public void onPlayerClone(net.minecraftforge.event.entity.player.PlayerEvent.Clone event) { diff --git a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java index 640c22318..bd1630630 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationSequence.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationSequence.java @@ -82,6 +82,7 @@ public class BusAnimationSequence { /** Repeats the previous keyframe for a duration depending on the previous keyframes. Useful for getting different buses to sync up. */ public BusAnimationSequence holdUntil(int end) { int duration = end - getTotalTime(); + //FIXME: holdUntil breaks as soon as the animation speed is not 1 return hold(duration); } diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 03c2363d2..6ba1791ce 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -3,6 +3,8 @@ package com.hbm.util; import java.lang.reflect.Method; import java.util.List; +import com.hbm.config.ServerConfig; + import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; @@ -21,7 +23,8 @@ import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { + /** Shitty hack, if the first attack fails, it retries with damage + previous damage, allowing damage to penetrate */ + @Deprecated public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { if(!victim.attackEntityFrom(src, damage)) { @@ -38,6 +41,7 @@ public class EntityDamageUtil { } } + /** New and improved entity damage calc - only use this one */ public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier, float pierceDT, float pierce) { if(living instanceof EntityPlayerMP && source.getEntity() instanceof EntityPlayer) { EntityPlayerMP playerMP = (EntityPlayerMP) living; @@ -45,14 +49,55 @@ public class EntityDamageUtil { if(!playerMP.canAttackPlayer(attacker)) return false; //handles wack-ass no PVP rule as well as scoreboard friendly fire } DamageResistanceHandler.setup(pierceDT, pierce); - living.attackEntityFrom(source, 0F); boolean ret = attackEntityFromNTInternal(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); - //boolean ret = living.attackEntityFrom(source, amount); DamageResistanceHandler.reset(); return ret; } - + private static boolean attackEntityFromNTInternal(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + boolean superCompatibility = ServerConfig.DAMAGE_COMPATIBILITY_MODE.get(); + return superCompatibility + ? attackEntitySuperCompatibility(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier) + : attackEntitySEDNAPatch(living, source, amount, ignoreIFrame, allowSpecialCancel, knockbackMultiplier); + } + + /** + * MK2 SEDNA damage system, currently untested. An even hackier, yet more compatible solution using the vanilla damage calc directly but tweaking certain apsects. + * Limitation: Does not apply DR piercing to vanilla armor + */ + private static boolean attackEntitySuperCompatibility(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + //disable iframes + if(ignoreIFrame) { living.lastDamage = 0F; living.hurtResistantTime = 0; } + //cache last velocity + double motionX = living.motionX; + double motionY = living.motionX; + double motionZ = living.motionX; + //bam! + boolean ret = living.attackEntityFrom(source, amount); + //restore last velocity + living.motionX = motionX; + living.motionY = motionY; + living.motionZ = motionZ; + //apply own knockback + Entity entity = source.getEntity(); + if(entity != null) { + double deltaX = entity.posX - living.posX; + double deltaZ; + + for(deltaZ = entity.posZ - living.posZ; deltaX * deltaX + deltaZ * deltaZ < 1.0E-4D; deltaZ = (Math.random() - Math.random()) * 0.01D) { + deltaX = (Math.random() - Math.random()) * 0.01D; + } + + living.attackedAtYaw = (float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI) - living.rotationYaw; + if(knockbackMultiplier > 0) knockBack(living, entity, amount, deltaX, deltaZ, knockbackMultiplier); + } + return ret; + } + + /** MK1 SEDNA damage system, basically re-implements the vanilla code (only from Entity, child class code is effectively ignored) with some adjustments */ + private static boolean attackEntitySEDNAPatch(EntityLivingBase living, DamageSource source, float amount, boolean ignoreIFrame, boolean allowSpecialCancel, double knockbackMultiplier) { + living.attackEntityFrom(source, 0F); + if(ignoreIFrame) living.lastDamage = 0F; if(ForgeHooks.onLivingAttack(living, source, amount) && allowSpecialCancel) return false; if(living.isEntityInvulnerable()) return false; if(living.worldObj.isRemote) return false; @@ -183,9 +228,7 @@ public class EntityDamageUtil { return amount; } - public static void damageArmorNT(EntityLivingBase living, float amount) { - - } + public static void damageArmorNT(EntityLivingBase living, float amount) { } /** Currently just a copy of the vanilla damage code */ @Deprecated public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) { diff --git a/src/main/resources/assets/hbm/textures/blocks/glass_polarized.png b/src/main/resources/assets/hbm/textures/blocks/glass_polarized.png new file mode 100644 index 0000000000000000000000000000000000000000..29a0ce9d64fce4fcdfa7454d74e2f6c1ca7d0861 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfh9FE!eBv1c7cgy#~DwY zDf-S7QEIIHtmUfa%*eE`TC;f@>|RW%ciND9+qlW_SU=~tW%lYF97e^R4`#ey)zz^@ z`=qt_M6>gfIEF;D zz75~V<*dkaC8(h2^Z)v@{2#XIq|2K`hsg&`unyr8E46} zUek7Psn$-&V>l3Ho-?~=*TZ1%H;yiP$1H4^8J@i6b6+fGe((9*jK>VCjh;{;OXk;vd$@? F2>@s{YS{n) literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png b/src/main/resources/assets/hbm/textures/items/ingot_metal_sheet.png index 456950b8bb27993d7715bc2f2541a8fff5eec97e..27e251a795ad303b1740fae6e20eec7677a5ec48 100644 GIT binary patch literal 6157 zcmV+o81me^gXgw&y<=3K0shM1EKxhTjH}#%LQvs77h0V_q+n31W5!E z$^ulRtfIt%qWBGG{wVJCR#7Mg*oo2aTCDq{?%wy@v-jD1pMCbdNa6(q6Oev`#5Ax8 zq0s#Ch1(<#=>w-fhBPgjsW3D&BwQ{RF)=aI=HqZUL`+PK06k(``7>jqDS-Me>--Me?sn7_eb5b^QxQ_^qRv`K8* zv?(C|d-m)Rd-m+PXU{xWa5x+yG&D3I3lJI_Ds^>r-PvTR1^)Qsj{{(}S~+?0ouy$Wqu7=JodOGI`qOLaP40^v^yHf-1+s;jFd zS-}1dCz-Tmz-rimS+-^6oyz+|DzE@s( z1%OvyeU-g)O8z+>^++uJAc zjMnL>z3?f~IvrVQsbr<4PEv$uosRa&w-?pb)x7@t>tffgT>ugwgb=*``s?i4wTlfK zHZa%1moXa)paJOZ?WL@&jMCCl8X6kduwjF8v0CUd{0Z>l#f!*37eKGqV=|e@%*j@e<*Zq=2Jk4`R7xP5e6`SJMUdkGU#JBQ zikbI1cdvvGGoJ;twY7OHKvYx|aNBJA6FPW=DnmB8GGyVmw6rMK8jVKfccam$1d;xD z%TUJ^zDl6J&Q~GI%gf2g$N)SshP>}}S zdlj<}V6)jI@c3Z$_25x}nwpwP7NEDc7k|^WJ3*cu$iCZXGzxWmppF4#!JExy<=AXC z^W~RcvTWHh;PzBdtpMPO0~`(q$?G=)P_XJT0GchWbUU52*L(zU$63H%8ncN3+S=NL zroFvgN=ix+aN82dohh4Ze?s@g%9Sg0cGp zQ_kJHcMEyO;xC%N6H-!A6v6rm-ydFj=_LVQU%`WCGy^lX0ABfMIh}f^l&Tuy1;lLf z+0&&r7z{!l@#_7*)cx-z{Y+_P%w{b>2?Ax@ixlr%Kn@1wfH2UJ|4oL=<(lyqr9(C~Cf{KDmO5g8ddYx+5> z2dJp12xv)ms`c=SiV9&g8il+Kl-?g?7oh%A(;JOO#YN1v{ejT?`rtse4u@k_^y+P( zkm-~d;N_QJRu~zLMln-AYcv`~Lqh{uSy{;2+3*98@QaI!QLi+bOeP+i*x$W-w~(iN z#l^(|FCzJ(Wcx3~^^PlE=MtAZLgm3<`sJ(ksex>po12x9I1~CneZLwqy#yZNo6Tl2 zGBU8)Z1nc_DhU-C`}gmcBwV)oPto&rq`c7eW^P_80$#6ICZzvdEJOy$o!B z@ozZzkH43#f>67I*<|9rYA7*)xg>aq@d8B*`KcP zi;IiBO#I1{CzapSZs=|Sr0fDN18iOI8Tr7O7CR@ZP5^MdqkR(HH_`$G0<{Hz$-duY zGD-5tm+Sr1!t{;y10DH$_wJRRfBt#)?%gZ-o1$*pwr!GI@`XGDxZcsu`U#(Zrp2xZ zfBn|=T<>W2I}^B{EkF>!z`%gl$)uztv|8=7MnB*sVD+C`&?b{fl3l`7{y#c8T5%C_ zWzlrazRhNnrdq`;FE971X7Y#1gTIvIsoueV{5=32H{EpH^gO>j1E?uKG$|n@kLbI# zai-VbOK8B;d0}B;UJa66z;q!OY1GuzP*hYzO-;?Dgv_0ye}BT4+cus1$H&JD-)m2v zJSq7*KNaMefGp^A)=Zpl_eun*;c~f{NfJn|$(t_Cy@Ip}A^fdk`Mw6GRtULL=#Qz# zc=9)5#xFRE7Z6YWM&LGl2RV}$i11~4`TkQ0d#dxk^fIQK3KlOQhX2

    P+Btw+@Fx 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 literal 6159 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 Date: Tue, 4 Mar 2025 16:50:33 +0100 Subject: [PATCH 59/64] burned old textures, better sludge --- changelog | 12 +- src/main/java/com/hbm/blocks/ModBlocks.java | 6 +- .../java/com/hbm/blocks/bomb/BlockTaint.java | 241 ++++++------------ .../blocks/generic/BlockGenericStairs.java | 2 +- .../hbm/blocks/generic/BlockMultiSlab.java | 2 +- .../com/hbm/blocks/generic/RedBarrel.java | 5 +- .../blocks/network/BlockCablePaintable.java | 21 +- .../com/hbm/blocks/network/DroneDock.java | 54 ++++ .../blocks/network/FluidDuctPaintable.java | 21 +- .../entity/missile/EntityMissileCustom.java | 5 +- .../entity/missile/EntityMissileTier0.java | 6 +- .../hbm/entity/mob/EntityCreeperTainted.java | 8 +- .../com/hbm/handler/nei/SatelliteHandler.java | 11 - src/main/java/com/hbm/items/ModItems.java | 2 +- .../com/hbm/items/block/ItemTaintBlock.java | 40 --- .../com/hbm/items/weapon/ItemAmmoHIMARS.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 1 - src/main/java/com/hbm/potion/HbmPotion.java | 16 +- .../hbm/render/block/RenderTaintBlock.java | 124 --------- .../assets/hbm/textures/blocks/ams_base.png | Bin 281 -> 0 bytes .../hbm/textures/blocks/ams_emitter.png | Bin 350 -> 0 bytes .../hbm/textures/blocks/ams_limiter.png | Bin 371 -> 0 bytes .../hbm/textures/blocks/block_daffergon.png | Bin 391 -> 0 bytes .../hbm/textures/blocks/block_reiium.png | Bin 370 -> 0 bytes .../hbm/textures/blocks/block_unobtainium.png | Bin 348 -> 0 bytes .../hbm/textures/blocks/block_verticium.png | Bin 339 -> 0 bytes .../hbm/textures/blocks/block_weidanium.png | Bin 348 -> 0 bytes .../assets/hbm/textures/blocks/taint.png | Bin 0 -> 731 bytes .../assets/hbm/textures/blocks/taint_0.png | Bin 476 -> 0 bytes .../assets/hbm/textures/blocks/taint_1.png | Bin 512 -> 0 bytes .../assets/hbm/textures/blocks/taint_10.png | Bin 487 -> 0 bytes .../assets/hbm/textures/blocks/taint_11.png | Bin 489 -> 0 bytes .../assets/hbm/textures/blocks/taint_12.png | Bin 477 -> 0 bytes .../assets/hbm/textures/blocks/taint_13.png | Bin 479 -> 0 bytes .../assets/hbm/textures/blocks/taint_14.png | Bin 463 -> 0 bytes .../assets/hbm/textures/blocks/taint_15.png | Bin 458 -> 0 bytes .../assets/hbm/textures/blocks/taint_2.png | Bin 482 -> 0 bytes .../assets/hbm/textures/blocks/taint_3.png | Bin 499 -> 0 bytes .../assets/hbm/textures/blocks/taint_4.png | Bin 499 -> 0 bytes .../assets/hbm/textures/blocks/taint_5.png | Bin 502 -> 0 bytes .../assets/hbm/textures/blocks/taint_6.png | Bin 497 -> 0 bytes .../assets/hbm/textures/blocks/taint_7.png | Bin 499 -> 0 bytes .../assets/hbm/textures/blocks/taint_8.png | Bin 486 -> 0 bytes .../assets/hbm/textures/blocks/taint_9.png | Bin 483 -> 0 bytes .../assets/hbm/textures/blocks/taint_full.png | Bin 509 -> 0 bytes .../assets/hbm/textures/blocks/taint_low.png | Bin 431 -> 0 bytes .../hbm/textures/blocks/test_bb_bork.png | Bin 427 -> 0 bytes .../hbm/textures/blocks/test_bb_inf.png | Bin 197 -> 0 bytes .../assets/hbm/textures/blocks/test_bomb.png | Bin 254 -> 0 bytes .../hbm/textures/blocks/test_conductor.png | Bin 193 -> 0 bytes .../hbm/textures/blocks/test_container.png | Bin 255 -> 0 bytes .../assets/hbm/textures/blocks/test_nuke.png | Bin 229 -> 0 bytes .../hbm/textures/blocks/test_ticker.png | Bin 216 -> 0 bytes .../hbm/textures/blocks/waste_earth_side.png | Bin 454 -> 0 bytes .../hbm/textures/blocks/waste_earth_top.png | Bin 608 -> 0 bytes .../textures/entity/creeper_armor_taint.png | Bin 1647 -> 2238 bytes .../hbm/textures/entity/creeper_tainted.png | Bin 2274 -> 2922 bytes .../assets/hbm/textures/items/gun_ar15.png | Bin 208 -> 0 bytes .../assets/hbm/textures/items/gun_avenger.png | Bin 320 -> 0 bytes .../assets/hbm/textures/items/gun_b93.png | Bin 297 -> 0 bytes .../assets/hbm/textures/items/gun_bf.png | Bin 328 -> 0 bytes .../hbm/textures/items/gun_bio_revolver.png | Bin 309 -> 0 bytes .../hbm/textures/items/gun_bolt_action.png | Bin 210 -> 0 bytes .../textures/items/gun_bolt_action_green.png | Bin 210 -> 0 bytes .../items/gun_bolt_action_saturnite.png | Bin 210 -> 0 bytes .../hbm/textures/items/gun_calamity.png | Bin 281 -> 0 bytes .../hbm/textures/items/gun_calamity_dual.png | Bin 306 -> 0 bytes .../assets/hbm/textures/items/gun_coilgun.png | Bin 341 -> 0 bytes .../hbm/textures/items/gun_cryolator.png | Bin 405 -> 0 bytes .../assets/hbm/textures/items/gun_deagle.png | Bin 201 -> 0 bytes .../hbm/textures/items/gun_defabricator.png | Bin 194 -> 0 bytes .../textures/items/gun_defabricator_ammo.png | Bin 233 -> 0 bytes .../assets/hbm/textures/items/gun_emp.png | Bin 276 -> 0 bytes .../hbm/textures/items/gun_emp_ammo.png | Bin 360 -> 0 bytes .../hbm/textures/items/gun_euthanasia.png | Bin 318 -> 0 bytes .../textures/items/gun_euthanasia_ammo.png | Bin 156 -> 0 bytes .../assets/hbm/textures/items/gun_fatman.png | Bin 315 -> 0 bytes .../assets/hbm/textures/items/gun_flamer.png | Bin 304 -> 0 bytes .../assets/hbm/textures/items/gun_folly.png | Bin 244 -> 0 bytes .../assets/hbm/textures/items/gun_hk69.png | Bin 278 -> 0 bytes .../assets/hbm/textures/items/gun_hp.png | Bin 318 -> 0 bytes .../assets/hbm/textures/items/gun_hp_ammo.png | Bin 234 -> 0 bytes .../hbm/textures/items/gun_immolator.png | Bin 335 -> 0 bytes .../hbm/textures/items/gun_immolator_ammo.png | Bin 243 -> 0 bytes .../assets/hbm/textures/items/gun_jack.png | Bin 332 -> 0 bytes .../hbm/textures/items/gun_jack_ammo.png | Bin 392 -> 0 bytes .../assets/hbm/textures/items/gun_karl.png | Bin 353 -> 0 bytes .../assets/hbm/textures/items/gun_lacunae.png | Bin 321 -> 0 bytes .../hbm/textures/items/gun_lever_action.png | Bin 257 -> 0 bytes .../textures/items/gun_lever_action_dark.png | Bin 259 -> 0 bytes .../items/gun_lever_action_sonata.png | Bin 245 -> 0 bytes .../assets/hbm/textures/items/gun_minigun.png | Bin 309 -> 0 bytes .../assets/hbm/textures/items/gun_mirv.png | Bin 276 -> 0 bytes .../hbm/textures/items/gun_moist_nugget.png | Bin 479 -> 0 bytes .../assets/hbm/textures/items/gun_mp40.png | Bin 244 -> 0 bytes .../assets/hbm/textures/items/gun_mymy.png | Bin 280 -> 0 bytes .../assets/hbm/textures/items/gun_osipr.png | Bin 335 -> 0 bytes .../hbm/textures/items/gun_osipr_ammo.png | Bin 270 -> 0 bytes .../hbm/textures/items/gun_osipr_ammo2.png | Bin 299 -> 0 bytes .../hbm/textures/items/gun_panzerschreck.png | Bin 327 -> 0 bytes .../assets/hbm/textures/items/gun_pm.png | Bin 271 -> 0 bytes .../assets/hbm/textures/items/gun_pm_ammo.png | Bin 202 -> 0 bytes .../assets/hbm/textures/items/gun_quadro.png | Bin 294 -> 0 bytes .../hbm/textures/items/gun_revolver.png | Bin 291 -> 0 bytes .../hbm/textures/items/gun_revolver_ammo.png | Bin 378 -> 0 bytes .../textures/items/gun_revolver_blackjack.png | Bin 274 -> 0 bytes .../textures/items/gun_revolver_cursed.png | Bin 284 -> 0 bytes .../items/gun_revolver_cursed_ammo.png | Bin 326 -> 0 bytes .../hbm/textures/items/gun_revolver_gold.png | Bin 261 -> 0 bytes .../textures/items/gun_revolver_gold_ammo.png | Bin 316 -> 0 bytes .../textures/items/gun_revolver_inverted.png | Bin 205 -> 0 bytes .../hbm/textures/items/gun_revolver_iron.png | Bin 280 -> 0 bytes .../textures/items/gun_revolver_iron_ammo.png | Bin 364 -> 0 bytes .../hbm/textures/items/gun_revolver_lead.png | Bin 271 -> 0 bytes .../textures/items/gun_revolver_lead_ammo.png | Bin 278 -> 0 bytes .../textures/items/gun_revolver_nightmare.png | Bin 238 -> 0 bytes .../items/gun_revolver_nightmare2.png | Bin 244 -> 0 bytes .../items/gun_revolver_nightmare2_ammo.png | Bin 301 -> 0 bytes .../items/gun_revolver_nightmare_ammo.png | Bin 314 -> 0 bytes .../hbm/textures/items/gun_revolver_nopip.png | Bin 260 -> 0 bytes .../hbm/textures/items/gun_revolver_pip.png | Bin 323 -> 0 bytes .../textures/items/gun_revolver_pip_alt.png | Bin 290 -> 0 bytes .../hbm/textures/items/gun_revolver_red.png | Bin 283 -> 0 bytes .../textures/items/gun_revolver_saturnite.png | Bin 269 -> 0 bytes .../items/gun_revolver_schrabidium.png | Bin 265 -> 0 bytes .../items/gun_revolver_schrabidium_ammo.png | Bin 349 -> 0 bytes .../textures/items/gun_revolver_silver.png | Bin 292 -> 0 bytes .../assets/hbm/textures/items/gun_rpg.png | Bin 365 -> 0 bytes .../assets/hbm/textures/items/gun_rpg_alt.png | Bin 318 -> 0 bytes .../assets/hbm/textures/items/gun_rpg_new.png | Bin 300 -> 0 bytes .../hbm/textures/items/gun_skystinger.png | Bin 324 -> 0 bytes .../assets/hbm/textures/items/gun_spark.png | Bin 374 -> 0 bytes .../hbm/textures/items/gun_spark_ammo.png | Bin 234 -> 0 bytes .../assets/hbm/textures/items/gun_spas12.png | Bin 227 -> 0 bytes .../assets/hbm/textures/items/gun_stinger.png | Bin 315 -> 0 bytes .../hbm/textures/items/gun_super_shotgun.png | Bin 290 -> 0 bytes .../assets/hbm/textures/items/gun_uboinik.png | Bin 376 -> 0 bytes .../assets/hbm/textures/items/gun_uzi.png | Bin 288 -> 0 bytes .../hbm/textures/items/gun_uzi_saturnite.png | Bin 310 -> 0 bytes .../items/gun_uzi_saturnite_silencer.png | Bin 326 -> 0 bytes .../hbm/textures/items/gun_uzi_silencer.png | Bin 301 -> 0 bytes .../assets/hbm/textures/items/gun_xvl1456.png | Bin 336 -> 0 bytes .../hbm/textures/items/gun_xvl1456_ammo.png | Bin 335 -> 0 bytes .../assets/hbm/textures/items/gun_zomg.png | Bin 310 -> 0 bytes 144 files changed, 208 insertions(+), 371 deletions(-) delete mode 100644 src/main/java/com/hbm/items/block/ItemTaintBlock.java delete mode 100644 src/main/java/com/hbm/render/block/RenderTaintBlock.java delete mode 100644 src/main/resources/assets/hbm/textures/blocks/ams_base.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/ams_emitter.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/ams_limiter.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/block_daffergon.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/block_reiium.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/block_unobtainium.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/block_verticium.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/block_weidanium.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/taint.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_0.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_1.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_10.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_11.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_12.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_13.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_14.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_15.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_2.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_3.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_4.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_5.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_6.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_7.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_8.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_9.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_full.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/taint_low.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_bb_inf.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_bomb.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_conductor.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_container.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_nuke.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/test_ticker.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/waste_earth_side.png delete mode 100644 src/main/resources/assets/hbm/textures/blocks/waste_earth_top.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_ar15.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_avenger.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_b93.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_bf.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_bio_revolver.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_bolt_action.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_bolt_action_green.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_bolt_action_saturnite.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_calamity.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_calamity_dual.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_coilgun.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_cryolator.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_deagle.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_defabricator.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_defabricator_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_emp.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_emp_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_euthanasia.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_euthanasia_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_fatman.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_flamer.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_folly.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_hk69.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_hp.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_hp_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_immolator.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_immolator_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_jack.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_jack_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_karl.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_lacunae.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_lever_action.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_lever_action_dark.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_lever_action_sonata.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_minigun.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_mirv.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_moist_nugget.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_mp40.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_mymy.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_osipr.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_osipr_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_osipr_ammo2.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_panzerschreck.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_pm.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_pm_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_quadro.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_blackjack.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_cursed.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_cursed_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_gold.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_gold_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_inverted.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_iron.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_iron_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_lead.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_lead_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_nopip.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_pip.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_pip_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_red.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_saturnite.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_revolver_silver.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_rpg.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_rpg_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_rpg_new.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_skystinger.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_spark.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_spark_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_spas12.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_stinger.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_super_shotgun.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_uboinik.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_uzi.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_uzi_saturnite_silencer.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_uzi_silencer.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_xvl1456.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_xvl1456_ammo.png delete mode 100644 src/main/resources/assets/hbm/textures/items/gun_zomg.png diff --git a/changelog b/changelog index 96cce6458..3122e1cbf 100644 --- a/changelog +++ b/changelog @@ -9,6 +9,16 @@ * Fat mines now have a base damage of exactly 100, being identical to demolition mini nukes * Fat mines now gib affected entities * IV bags now use `setHealth` operations instead of dealing damage, preventing health duplication by just avoiding the damage +* The settings tool can now copy and paste the "paint" from paintable cables and fluid ducts +* Changed the way taint works + * Instead of neon purple vines, taint is bow a greyish sludge + * Taint now actively replaces blocks instead of growing along them + * Taint is still limited in spread, however taint spread is lower underground, taint decays three times faster in intensity if the block is not exposed to air, making taint spread more along the surface + * Taint has a 25% chance of splashing down when replacing a block with no supports, causing structures to collapse and taint to spread faster + * Similar to soil sand, entities will sink in taint and get slowed down + * The sludge consumeth ## Fixed -* Fixed animation error on the MAS-36 \ No newline at end of file +* Fixed animation error on the MAS-36 +* Fixed drone docks, requester and provider crates not dropping their contents when broken +* Fixed all missing texture errors that appear in the startup log \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 6cf108b50..7dac239ef 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2177,7 +2177,7 @@ public class ModBlocks { mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); boxcar = new DecoBlock(Material.iron).setBlockName("boxcar").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boxcar"); - boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":boat"); + boat = new DecoBlock(Material.iron).setBlockName("boat").setStepSound(Block.soundTypeMetal).setHardness(10.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":asphalt"); machine_well = new MachineOilWell().setBlockName("machine_well").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_well"); machine_pumpjack = new MachinePumpjack().setBlockName("machine_pumpjack").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_pumpjack"); @@ -2279,7 +2279,7 @@ public class ModBlocks { crystal_virus = new CrystalVirus(Material.iron).setBlockName("crystal_virus").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_virus"); crystal_hardened = new BlockGeneric(Material.iron).setBlockName("crystal_hardened").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_hardened"); crystal_pulsar = new CrystalPulsar(Material.iron).setBlockName("crystal_pulsar").setHardness(15.0F).setResistance(Float.POSITIVE_INFINITY).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":crystal_pulsar"); - taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null); + taint = new BlockTaint(Material.iron).setBlockName("taint").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":taint"); vent_chlorine = new BlockVent(Material.iron).setBlockName("vent_chlorine").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_chlorine"); vent_cloud = new BlockVent(Material.iron).setBlockName("vent_cloud").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vent_cloud"); @@ -3476,7 +3476,7 @@ public class ModBlocks { GameRegistry.registerBlock(crystal_virus, crystal_virus.getUnlocalizedName()); GameRegistry.registerBlock(crystal_hardened, crystal_hardened.getUnlocalizedName()); GameRegistry.registerBlock(crystal_pulsar, crystal_pulsar.getUnlocalizedName()); - GameRegistry.registerBlock(taint, ItemTaintBlock.class, taint.getUnlocalizedName()); + register(taint); GameRegistry.registerBlock(cheater_virus, cheater_virus.getUnlocalizedName()); GameRegistry.registerBlock(cheater_virus_seed, cheater_virus_seed.getUnlocalizedName()); GameRegistry.registerBlock(ntm_dirt, ntm_dirt.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java index 3b92192de..079058a64 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java @@ -4,169 +4,71 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; -import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.ITooltipProvider; import com.hbm.entity.mob.EntityTaintCrab; import com.hbm.entity.mob.EntityCreeperTainted; import com.hbm.entity.mob.EntityTeslaCrab; import com.hbm.potion.HbmPotion; -import cpw.mods.fml.client.registry.RenderingRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; +import net.minecraft.block.BlockFalling; import net.minecraft.block.material.MapColor; import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.PotionEffect; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class BlockTaint extends Block/*Container*/ { - - @SideOnly(Side.CLIENT) - private IIcon[] icons; +public class BlockTaint extends Block implements ITooltipProvider { - public BlockTaint(Material p_i45386_1_) { - super(p_i45386_1_); - this.setTickRandomly(true); + public BlockTaint(Material mat) { + super(mat); + this.setTickRandomly(true); } - /*@Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityTaint(); - }*/ - - @SideOnly(Side.CLIENT) - public IIcon getIcon(int p_149691_1_, int meta) - { - return this.icons[meta % this.icons.length]; - } - - public int damageDropped(int meta) - { - return 0; - } + @Override public MapColor getMapColor(int meta) { return MapColor.grayColor; } + @Override public Item getItemDropped(int i, Random rand, int j) { return null; } - public static int func_150032_b(int p_150032_0_) - { - return func_150031_c(p_150032_0_); - } - - public static int func_150031_c(int p_150031_0_) - { - return p_150031_0_ & 15; - } - - @SideOnly(Side.CLIENT) - public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) - { - for (int i = 0; i < 16; ++i) - { - p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); - } - } - - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister p_149651_1_) - { - this.icons = new IIcon[16]; - - for (int i = 0; i < this.icons.length; ++i) - { - this.icons[i] = p_149651_1_.registerIcon("hbm:taint_" + i); - } - } - - public MapColor getMapColor(int p_149728_1_) - { - return MapColor.purpleColor; - } - - public static int renderID = RenderingRegistry.getNextAvailableRenderId(); - @Override - public int getRenderType(){ - return renderID; + public void updateTick(World world, int x, int y, int z, Random rand) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta >= 15) return; + + for(int i = -3; i <= 3; i++) for(int j = -3; j <= 3; j++) for(int k = -3; k <= 3; k++) { + if(Math.abs(i) + Math.abs(j) + Math.abs(k) > 4) continue; + if(rand.nextFloat() > 0.25F) continue; + Block b = world.getBlock(x + i, y + j, z + k); + if(!b.isNormalCube() || b.isAir(world, x + i, y + j, z + k)) continue; + int targetMeta = meta + 1; + boolean hasAir = false; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ).isAir(world, x + i + dir.offsetX, y + j + dir.offsetY, z + k + dir.offsetZ)) { + hasAir = true; + break; + } + } + if(!hasAir) targetMeta = meta + 3; + if(targetMeta > 15) continue; + if(b == this && world.getBlockMetadata(x + i, y + j, z + k) >= targetMeta) continue; + world.setBlock(x + i, y + j, z + k, this, targetMeta, 3); + if(rand.nextFloat() < 0.25F && BlockFalling.func_149831_e(world, x + i, y + j - 1, z + k)) { + EntityFallingBlock falling = new EntityFallingBlock(world, x + i + 0.5, y + j + 0.5, z + k + 0.5, this, targetMeta); + world.spawnEntityInWorld(falling); + } + } } - @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) - { - return null; - } - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } - - public void onNeighborBlockChange(World world, int x, int y, int z, Block b) - { - if(!hasPosNeightbour(world, x, y, z) && !world.isRemote) - world.setBlockToAir(x, y, z); - } - - public void updateTick(World world, int x, int y, int z, Random rand) - { - int meta = world.getBlockMetadata(x, y, z); - if(!world.isRemote && meta < 15) { - - for(int i = 0; i < 15; i++) { - int a = rand.nextInt(11) + x - 5; - int b = rand.nextInt(11) + y - 5; - int c = rand.nextInt(11) + z - 5; - if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c)) - world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2); - } - - for(int i = 0; i < 85; i++) { - int a = rand.nextInt(7) + x - 3; - int b = rand.nextInt(7) + y - 3; - int c = rand.nextInt(7) + z - 3; - if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && hasPosNeightbour(world, a, b, c)) - world.setBlock(a, b, c, ModBlocks.taint, meta + 1, 2); - } - } - } - - public static boolean hasPosNeightbour(World world, int x, int y, int z) { - Block b0 = world.getBlock(x + 1, y, z); - Block b1 = world.getBlock(x, y + 1, z); - Block b2 = world.getBlock(x, y, z + 1); - Block b3 = world.getBlock(x - 1, y, z); - Block b4 = world.getBlock(x, y - 1, z); - Block b5 = world.getBlock(x, y, z - 1); - boolean b = (b0.renderAsNormalBlock() && b0.getMaterial().isOpaque()) || - (b1.renderAsNormalBlock() && b1.getMaterial().isOpaque()) || - (b2.renderAsNormalBlock() && b2.getMaterial().isOpaque()) || - (b3.renderAsNormalBlock() && b3.getMaterial().isOpaque()) || - (b4.renderAsNormalBlock() && b4.getMaterial().isOpaque()) || - (b5.renderAsNormalBlock() && b5.getMaterial().isOpaque()); - return b; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return null; - } - - @Override - public AxisAlignedBB getSelectedBoundingBoxFromPool(World par1World, int par2, int par3, int par4) - { - return AxisAlignedBB.getBoundingBox(par2, par3, par4, par2, par3, par4); + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.75, z + 1); } @Override @@ -174,36 +76,43 @@ public class BlockTaint extends Block/*Container*/ { int meta = world.getBlockMetadata(x, y, z); int level = 15 - meta; - - List list = new ArrayList(); - PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level); - effect.setCurativeItems(list); - - if(entity instanceof EntityLivingBase) { - if(world.rand.nextInt(50) == 0) { - ((EntityLivingBase)entity).addPotionEffect(effect); - } - } - - if(entity != null && entity.getClass().equals(EntityCreeper.class)) { - EntityCreeperTainted creep = new EntityCreeperTainted(world); - creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); - if(!world.isRemote) { - entity.setDead(); - world.spawnEntityInWorld(creep); - } - } - - if(entity instanceof EntityTeslaCrab) { - EntityTaintCrab crab = new EntityTaintCrab(world); - crab.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); + entity.motionX *= 0.6; + entity.motionZ *= 0.6; - if(!world.isRemote) { - entity.setDead(); - world.spawnEntityInWorld(crab); - } - } + List list = new ArrayList(); + PotionEffect effect = new PotionEffect(HbmPotion.taint.id, 15 * 20, level); + effect.setCurativeItems(list); + + if(entity instanceof EntityLivingBase) { + if(world.rand.nextInt(50) == 0) { + ((EntityLivingBase) entity).addPotionEffect(effect); + } + } + + if(entity != null && entity.getClass().equals(EntityCreeper.class)) { + EntityCreeperTainted creep = new EntityCreeperTainted(world); + creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); + + if(!world.isRemote) { + entity.setDead(); + world.spawnEntityInWorld(creep); + } + } + + if(entity instanceof EntityTeslaCrab) { + EntityTaintCrab crab = new EntityTaintCrab(world); + crab.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); + + if(!world.isRemote) { + entity.setDead(); + world.spawnEntityInWorld(crab); + } + } } + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add("DO NOT TOUCH, BREATHE OR STARE AT."); + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java b/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java index 7bd3ee8f6..61df2ed89 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java +++ b/src/main/java/com/hbm/blocks/generic/BlockGenericStairs.java @@ -18,6 +18,6 @@ public class BlockGenericStairs extends BlockStairs { recipeGen.add(new Object[] {block, meta, this}); - this.setBlockTextureName(RefStrings.MODID + ":concrete_smooth"); + this.setBlockTextureName(RefStrings.MODID + ":concrete"); } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java index bcc38242d..8374ba803 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMultiSlab.java @@ -39,7 +39,7 @@ public class BlockMultiSlab extends BlockSlab implements IStepTickReceiver { } } - this.setBlockTextureName(RefStrings.MODID + ":concrete_smooth"); + this.setBlockTextureName(RefStrings.MODID + ":concrete"); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/RedBarrel.java b/src/main/java/com/hbm/blocks/generic/RedBarrel.java index 857cb7b55..753e47b09 100644 --- a/src/main/java/com/hbm/blocks/generic/RedBarrel.java +++ b/src/main/java/com/hbm/blocks/generic/RedBarrel.java @@ -4,11 +4,11 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.BlockDetonatable; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.blocks.machine.BlockFluidBarrel; import com.hbm.entity.item.EntityTNTPrimedBase; import com.hbm.explosion.ExplosionThermo; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; @@ -68,7 +68,8 @@ public class RedBarrel extends BlockDetonatable { int a = rand.nextInt(9) - 4 + ix; int b = rand.nextInt(9) - 4 + iy; int c = rand.nextInt(9) - 4 + iz; - if(world.getBlock(a, b, c).isReplaceable(world, a, b, c) && BlockTaint.hasPosNeightbour(world, a, b, c)) { + Block block = world.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(world, a, b, c)) { world.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); } } diff --git a/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java b/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java index 68a0232ee..3587df3c5 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCablePaintable.java @@ -2,6 +2,7 @@ package com.hbm.blocks.network; import api.hbm.block.IToolable; import com.hbm.blocks.IBlockMultiPass; +import com.hbm.interfaces.ICopiable; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityCableBaseNT; @@ -124,7 +125,7 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB return IBlockMultiPass.getRenderType(); } - public static class TileEntityCablePaintable extends TileEntityCableBaseNT { + public static class TileEntityCablePaintable extends TileEntityCableBaseNT implements ICopiable { private Block block; private int meta; @@ -168,5 +169,23 @@ public class BlockCablePaintable extends BlockContainer implements IToolable, IB if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block)); nbt.setInteger("meta", meta); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + if(block != null) { + nbt.setInteger("paintblock", Block.getIdFromBlock(block)); + nbt.setInteger("paintmeta", meta); + } + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("paintblock")) { + this.block = Block.getBlockById(nbt.getInteger("paintblock")); + this.meta = nbt.getInteger("paintmeta"); + } + } } } diff --git a/src/main/java/com/hbm/blocks/network/DroneDock.java b/src/main/java/com/hbm/blocks/network/DroneDock.java index 226d3c3f0..83bb9d68f 100644 --- a/src/main/java/com/hbm/blocks/network/DroneDock.java +++ b/src/main/java/com/hbm/blocks/network/DroneDock.java @@ -9,16 +9,21 @@ import com.hbm.tileentity.network.TileEntityDroneRequester; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.World; import java.util.List; +import java.util.Random; public class DroneDock extends BlockContainer implements ITooltipProvider { @@ -69,4 +74,53 @@ public class DroneDock extends BlockContainer implements ITooltipProvider { public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { this.addStandardInfo(stack, player, list, ext); } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + if(this == ModBlocks.drone_dock) this.dropContents(world, x, y, z, block, meta, 0, 9); + if(this == ModBlocks.drone_crate_provider) this.dropContents(world, x, y, z, block, meta, 0, 9); + if(this == ModBlocks.drone_crate_requester) this.dropContents(world, x, y, z, block, meta, 9, 18); + super.breakBlock(world, x, y, z, block, meta); + } + + private final Random rand = new Random(); + public void dropContents(World world, int x, int y, int z, Block block, int meta, int start, int end) { + ISidedInventory sidedInventory = (ISidedInventory) world.getTileEntity(x, y, z); + + if(sidedInventory != null) { + + for(int i1 = start; i1 < end; ++i1) { + ItemStack stack = sidedInventory.getStackInSlot(i1); + + if(stack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while(stack.stackSize > 0) { + int j1 = this.rand.nextInt(21) + 10; + + if(j1 > stack.stackSize) { + j1 = stack.stackSize; + } + + stack.stackSize -= j1; + EntityItem entity = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(stack.getItem(), j1, stack.getItemDamage())); + + if(stack.hasTagCompound()) { + entity.getEntityItem().setTagCompound((NBTTagCompound) stack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entity.motionX = (float) this.rand.nextGaussian() * f3; + entity.motionY = (float) this.rand.nextGaussian() * f3 + 0.2F; + entity.motionZ = (float) this.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entity); + } + } + } + + world.func_147453_f(x, y, z, block); + } + } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java index 37599923b..0bca70d6b 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctPaintable.java @@ -3,6 +3,7 @@ package com.hbm.blocks.network; import api.hbm.block.IToolable; import com.hbm.blocks.IBlockMultiPass; import com.hbm.blocks.ILookOverlay; +import com.hbm.interfaces.ICopiable; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -163,7 +164,7 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } - public static class TileEntityPipePaintable extends TileEntityPipeBaseNT { + public static class TileEntityPipePaintable extends TileEntityPipeBaseNT implements ICopiable { private Block block; private int meta; @@ -195,5 +196,23 @@ public class FluidDuctPaintable extends FluidDuctBase implements IToolable, IBlo if(block != null) nbt.setInteger("block", Block.getIdFromBlock(block)); nbt.setInteger("meta", meta); } + + @Override + public NBTTagCompound getSettings(World world, int x, int y, int z) { + NBTTagCompound nbt = new NBTTagCompound(); + if(block != null) { + nbt.setInteger("paintblock", Block.getIdFromBlock(block)); + nbt.setInteger("paintmeta", meta); + } + return nbt; + } + + @Override + public void pasteSettings(NBTTagCompound nbt, int index, World world, EntityPlayer player, int x, int y, int z) { + if(nbt.hasKey("paintblock")) { + this.block = Block.getBlockById(nbt.getInteger("paintblock")); + this.meta = nbt.getInteger("paintmeta"); + } + } } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 0b6a51cf8..e929e2fe2 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityNukeExplosionMK5; @@ -22,6 +21,7 @@ import com.hbm.items.weapon.ItemCustomMissilePart.WarheadType; import com.hbm.main.MainRegistry; import api.hbm.entity.IRadarDetectableNT; +import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -211,7 +211,8 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo int a = rand.nextInt(r) + (int) posX - (r / 2 - 1); int b = rand.nextInt(r) + (int) posY - (r / 2 - 1); int c = rand.nextInt(r) + (int) posZ - (r / 2 - 1); - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) { + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index ed2a47309..315f7c30b 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.config.BombConfig; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityCloudFleija; @@ -128,7 +127,10 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { int a = rand.nextInt(11) + (int) this.posX - 5; int b = rand.nextInt(11) + (int) this.posY - 5; int c = rand.nextInt(11) + (int) this.posZ - 5; - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && BlockTaint.hasPosNeightbour(worldObj, a, b, c)) worldObj.setBlock(a, b, c, ModBlocks.taint); + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { + worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); + } } } @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.powder_spark_mix, 1); } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java index 807e6c543..1997caa33 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java @@ -55,8 +55,8 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm int a = rand.nextInt(15) + (int) posX - 7; int b = rand.nextInt(15) + (int) posY - 7; int c = rand.nextInt(15) + (int) posZ - 7; - - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && hasPosNeightbour(worldObj, a, b, c)) { + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { if(!GeneralConfig.enableHardcoreTaint) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2); } else { @@ -71,8 +71,8 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm int a = rand.nextInt(7) + (int) posX - 3; int b = rand.nextInt(7) + (int) posY - 3; int c = rand.nextInt(7) + (int) posZ - 3; - - if(worldObj.getBlock(a, b, c).isReplaceable(worldObj, a, b, c) && hasPosNeightbour(worldObj, a, b, c)) { + Block block = worldObj.getBlock(a, b, c); + if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { if(!GeneralConfig.enableHardcoreTaint) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(6) + 10, 2); } else { diff --git a/src/main/java/com/hbm/handler/nei/SatelliteHandler.java b/src/main/java/com/hbm/handler/nei/SatelliteHandler.java index 77e0c3cb4..7206b10b2 100644 --- a/src/main/java/com/hbm/handler/nei/SatelliteHandler.java +++ b/src/main/java/com/hbm/handler/nei/SatelliteHandler.java @@ -14,12 +14,10 @@ import com.hbm.util.ItemStackUtil; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.MathHelper; import net.minecraft.util.WeightedRandomChestContent; import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.List; import static codechicken.lib.gui.GuiDraw.drawTexturedModalRect; @@ -177,13 +175,4 @@ public class SatelliteHandler extends TemplateRecipeHandler implements ICompatNH return getCycledIngredients(cycleticks / 20, stacks); } } - - private static HashMap getRecipeMap() { - HashMap recipeMap = new HashMap<>(); - ItemStack minerStack = new ItemStack(ModItems.sat_miner); - ItemStack lunarMinerStack = new ItemStack(ModItems.sat_lunar_miner); - Arrays.stream(ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_MINER)).forEach(poolEntry -> recipeMap.put(minerStack, poolEntry.theItemId)); - Arrays.stream(ItemPool.getPool(ItemPoolsSatellite.POOL_SAT_LUNAR)).forEach(poolEntry -> recipeMap.put(lunarMinerStack, poolEntry.theItemId)); - return recipeMap; - } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 3b2feed15..724ddd405 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -3830,7 +3830,7 @@ public class ModItems { gun_b92_ammo = new GunB92Cell().setUnlocalizedName("gun_b92_ammo").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_alt"); gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); - gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); + gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); diff --git a/src/main/java/com/hbm/items/block/ItemTaintBlock.java b/src/main/java/com/hbm/items/block/ItemTaintBlock.java deleted file mode 100644 index 2f048d02a..000000000 --- a/src/main/java/com/hbm/items/block/ItemTaintBlock.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.hbm.items.block; - -import java.util.List; - -import com.hbm.blocks.bomb.BlockTaint; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; - -public class ItemTaintBlock extends ItemBlock -{ - public ItemTaintBlock(Block p_i45358_1_) - { - super(p_i45358_1_); - this.setMaxDamage(0); - this.setHasSubtypes(true); - } - - @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int p_77617_1_) - { - return this.field_150939_a.func_149735_b(2, BlockTaint.func_150032_b(p_77617_1_)); - } - - public int getMetadata(int p_77647_1_) - { - return p_77647_1_; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) - { - list.add("DO NOT TOUCH, BREATHE OR STARE AT."); - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index f50d3ba0f..c372487d2 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -54,7 +54,7 @@ public class ItemAmmoHIMARS extends Item { public ItemAmmoHIMARS() { this.setHasSubtypes(true); this.setCreativeTab(MainRegistry.weaponTab); - this.setTextureName(RefStrings.MODID + ":ammo_rocket"); + this.setTextureName(RefStrings.MODID + ":ammo_standard.rocket_he"); this.setMaxStackSize(1); init(); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 1bc9c8d18..3a4db1cdd 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -771,7 +771,6 @@ public class ClientProxy extends ServerProxy { @Override public void registerBlockRenderer() { - RenderingRegistry.registerBlockHandler(new RenderTaintBlock()); RenderingRegistry.registerBlockHandler(new RenderScaffoldBlock()); RenderingRegistry.registerBlockHandler(new RenderTapeBlock()); RenderingRegistry.registerBlockHandler(new RenderSteelBeam()); diff --git a/src/main/java/com/hbm/potion/HbmPotion.java b/src/main/java/com/hbm/potion/HbmPotion.java index a7688f2da..e27806e1a 100644 --- a/src/main/java/com/hbm/potion/HbmPotion.java +++ b/src/main/java/com/hbm/potion/HbmPotion.java @@ -3,7 +3,6 @@ package com.hbm.potion; import java.lang.reflect.Field; import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.bomb.BlockTaint; import com.hbm.config.GeneralConfig; import com.hbm.config.PotionConfig; import com.hbm.entity.mob.EntityTaintCrab; @@ -19,6 +18,7 @@ import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.relauncher.ReflectionHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.passive.EntityCow; @@ -109,15 +109,13 @@ public class HbmPotion extends Potion { if(GeneralConfig.enableHardcoreTaint && !entity.worldObj.isRemote) { - int x = (int)(entity.posX - 1); - int y = (int)entity.posY; - int z = (int)(entity.posZ); + int x = (int) Math.floor(entity.posX); + int y = (int) Math.floor(entity.posY); + int z = (int) Math.floor(entity.posZ); - if(entity.worldObj.getBlock(x, y, z) - .isReplaceable(entity.worldObj, x, y, z) && - BlockTaint.hasPosNeightbour(entity.worldObj, x, y, z)) { - - entity.worldObj.setBlock(x, y, z, ModBlocks.taint, 14, 2); + Block b = entity.worldObj.getBlock(x, y - 1, z); + if(y > 1 && b.isNormalCube() && !b.isAir(entity.worldObj, x, y - 1, z)) { + entity.worldObj.setBlock(x, y - 1, z, ModBlocks.taint, 14, 2); } } } diff --git a/src/main/java/com/hbm/render/block/RenderTaintBlock.java b/src/main/java/com/hbm/render/block/RenderTaintBlock.java deleted file mode 100644 index b7f6bc240..000000000 --- a/src/main/java/com/hbm/render/block/RenderTaintBlock.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.hbm.render.block; - -import com.hbm.blocks.bomb.BlockTaint; - -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.util.IIcon; -import net.minecraft.world.IBlockAccess; - -public class RenderTaintBlock implements ISimpleBlockRenderingHandler { - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { - - Tessellator tessellator = Tessellator.instance; - IIcon iicon = block.getIcon(0, world.getBlockMetadata(x, y, z)); - - if (renderer.hasOverrideBlockTexture()) - { - iicon = renderer.overrideBlockTexture; - } - - boolean ceil = world.getBlock(x, y + 1, z).isNormalCube(); - boolean floor = world.getBlock(x, y - 1, z).isNormalCube(); - boolean side1 = world.getBlock(x, y, z + 1).isNormalCube(); - boolean side2 = world.getBlock(x - 1, y, z).isNormalCube(); - boolean side3 = world.getBlock(x, y, z - 1).isNormalCube(); - boolean side4 = world.getBlock(x + 1, y, z).isNormalCube(); - - tessellator.setBrightness(block.getMixedBrightnessForBlock(renderer.blockAccess, x, y, z)); - int l = block.colorMultiplier(renderer.blockAccess, x, y, z); - float f = (float)(l >> 16 & 255) / 255.0F; - float f1 = (float)(l >> 8 & 255) / 255.0F; - float f2 = (float)(l & 255) / 255.0F; - tessellator.setColorOpaque_F(f, f1, f2); - double d3 = (double)iicon.getMinU(); - double d4 = (double)iicon.getMinV(); - double d0 = (double)iicon.getMaxU(); - double d1 = (double)iicon.getMaxV(); - double d2 = 0.05D; - renderer.blockAccess.getBlockMetadata(x, y, z); - - if (side2) - { - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 1), d3, d4); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 0), d0, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 0), d0, d4); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 0), d0, d4); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 0), d0, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 0), (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)x + d2, (double)(y + 1), (double)(z + 1), d3, d4); - } - - if (side4) - { - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 1), d0, d1); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 1), d0, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 0), d3, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 0), d3, d1); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 0), d3, d1); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 0), d3, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 1), (double)(z + 1), d0, d4); - tessellator.addVertexWithUV((double)(x + 1) - d2, (double)(y + 0), (double)(z + 1), d0, d1); - } - - if (side3) - { - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)z + d2, d0, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)z + d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)z + d2, d3, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)z + d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)z + d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)z + d2, d3, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)z + d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)z + d2, d0, d1); - } - - if (side1) - { - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)(z + 1) - d2, d3, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)(z + 1) - d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)(z + 1) - d2, d0, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)(z + 1) - d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1), (double)(z + 1) - d2, d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0), (double)(z + 1) - d2, d0, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0), (double)(z + 1) - d2, d3, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1), (double)(z + 1) - d2, d3, d4); - } - - if (ceil) - { - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1) - d2, (double)(z + 0), d3, d4); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 1) - d2, (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1) - d2, (double)(z + 1), d0, d1); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 1) - d2, (double)(z + 0), d0, d4); - } - - if (floor) - { - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0) + d2, (double)(z + 0), d0, d4); - tessellator.addVertexWithUV((double)(x + 0), (double)(y + 0) + d2, (double)(z + 1), d0, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0) + d2, (double)(z + 1), d3, d1); - tessellator.addVertexWithUV((double)(x + 1), (double)(y + 0) + d2, (double)(z + 0), d3, d4); - } - return true; - } - - @Override - public boolean shouldRender3DInInventory(int modelId) { - return false; - } - - @Override - public int getRenderId() { - return BlockTaint.renderID; - } - -} diff --git a/src/main/resources/assets/hbm/textures/blocks/ams_base.png b/src/main/resources/assets/hbm/textures/blocks/ams_base.png deleted file mode 100644 index d0d65f51ff9d5c7b03ce8cb5be480db3edda213b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfKT{qZN%(@r_o-b~@|I?j^r!VP# zU@qr{pYi)2aw#)2M>*~KIFt9>zmJdE5BJO4Uy$u!G}yD@ub@ti#lxiE@r8@DrCk^p Y)H$4#*Ka$27w9(zPgg&ebxsLQ0D{VK7XSbN diff --git a/src/main/resources/assets/hbm/textures/blocks/ams_emitter.png b/src/main/resources/assets/hbm/textures/blocks/ams_emitter.png deleted file mode 100644 index 1e8db25665e052fdb82a3ad642375cdc413396ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350 zcmV-k0iphhP)ojw8CD+YP;MZ zIl>Yw#1sY=6xPB4i~S(TSj4Oend~BqUp2gW^WNiq0|(BL3ykB~0@QWg!_zb!@CU$R z7TR5ow-3*~H>WO=KRI(ge)*^e*zuTCQYex_ZOH<5rjU3=p%@m zIAtnby7>gYfk>=_)u9TZXvyFqsayw1G5*VTi;KmoM! zn`!htN2f|G-@c&u$Jg)4Z zRaQ*>MaIZf064w9FP%XF;P*N@21LdHOs2EKfGYuhucJfDM$cnJr15eF(Dxi2ll9$Q zk1M|TBf~r(h)j;!AIR*_dEfd1%Rod5*WbTa%N6e46fgr|GEF;Qt207*j-7MuM1Fn!)(`?Bf^!b%9M)Py1XX1=5y5+ph*W#F>pCu%3jj^iV2r7fr)lCl zyWMWsloF*B07@ymUaxNxKA9bcff(abqzYPF`O`F^s>@mLJ+|+A4u=D!lm)$Mno9rk z`2=9I*;EDlzQ+QD5dI0fq8!KZt$?cHoO{Dx$3=u;7_e>Iayp&JIisp?P0Tre#0TiQ z4l5#zHeV}*%F~*Nm*lxF2RsBB+DJ8Dg lYlSE+S)@C*P-dd zI)O2=Eb03#Y(79czyRg6Wb&1p8Nf|@ekK+0emVhA6b05=j4`NQ(}!W;k$p7{G6FG1 znD)!%@-Sh|!v12R#Lz36KdUaV84fP)Wq`=$8jD$Kv^Of15NV*h1)GvA>MqLp63&V7?HII>ox3l z(+!KaKMV=n#0Myf9}3p~55M;a*Xz8DL4|;*>!zG@N~>)VHXAq`H0Zr1q6v(n7SE}$ uS|NDo@EmSfZNUPvRqKu+q!6)zrmhUsDC$5g`!x2 z|9F6@aRp%q=QH%Z6)u<9_v`Qhd!0BWPz4Q3F{9d7c*cJ#X!D0T~8xP6N)t z!v12Qc}O~l`MQ~El5?tcB{dFo@J^2`(4-NGHqB@AOLOqH|&J6X4wFpKMW~u>;n|Vj|6M~hwnYe^*TSsFoi(WbyLncmDRQ&n++Te8uVTh@ebpt#dA|w utw6m0P{J_4`JCd0_i&-&zcZF%415E)zJ--_!5(k`0000GU`Ay`6R@?RwWX76_2Q>N(=; z>nnTj(ONSM165T~89^f_g7^G$O|+*^tXk>q&aqUyRKZrB7?VbZ5Ku}nJ||YcK~zXp z@?(hn8YAubNLX$-Idd)z`xKEeA>xPAXU{4ndR(F*sdVHR>HVo8ild~#D+3pbU|l3ZubGL zHKyoU?i*sU=tDk3mk4nrk+8i+m6CaR;@UIPWb!14&lg6NOq0iCfm|$~?oV`{Vay|2 zu~7FGD`xse(RU^P4o@Dp2{YH!;zZa-ga`-&bz5PgL2q(JYB+W+Rz%(^L9qw?yt4#Q zoSBD6-Zk06`yU_dIJU8BmDVY(8e zC+~n%=qh)-QlcmqX8+ByjLcaOM8$3NNMSf%DvC|AJR)n{2zo|o&85Ad*CA2#g1AQ1 z9x!p^UGCR5UPJwm~Mk8jjs$x(3n?H!>72iK!%HXi8#V!;T-v?RXoGrOudA3EIH zlE%auXS}~*g{2fdW$jqDfZW=EY%KWTA zCV4|jml=cS(DnFvBV|ohSF{eS2?T!fOgEN2U>bpI6Ng^n=R4)m@;^d9XtmcBt2zJx N002ovPDHLkV1o2JOws@V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_0.png b/src/main/resources/assets/hbm/textures/blocks/taint_0.png deleted file mode 100644 index 0bbd1263467970ed2921f31bfe1376d793b71ac4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 476 zcmV<20VDp2P)Y4G@1amc}wLMBfq zHS>VyYqlBX;n?59A^gM?M0jh6!GpJk3kI5#$hi_(&J}m*?*YI8z>-B`1WwtbPiDry z=<}8=LUR&19)ag~qA7@sBXGL`uN%?ZlgQT>V94yw_OBa}TWiDfyTatH?OmoI^72V! z$nm9;E=xiU0sE7$`>I~_VdMUO`<3@F7IyxMrhU5uA0 zz1D}<%u3~UQ-Q5fjDVYh$OQu#tiLfQkshUWU-Hk8nOI8}nSzMz4VkUYsX2-C=fk-Y zU2&IEtb^aj`j9+O_0d|}E^c4cO+n<4JeVI=@z!w49`+CHk##=hM-$ic0)TPUWV6dC zS@ChyJ45JV@Gy8w7AZwlW>(*A(B`CKm!b~Epa_3`RRH@ZF^;zGU9oAsV4!b!%Qv>| Sw6|jb00007K4Hw}Y|syx{%Q zV={B7(&n3deEl(+Y^_D#|0Eh}5$jxvHs1sQoJ%o|0JA3mfM(4MQG&@Riz+G zf?Y%j0N`};7X!fMb}&TbZM+`uqPn!x^SlIX<{e!j()T-vl2C{!fo=0mnl&?u^*g#k zB&O8rL;ZSW+N_}#Y4c5Vtz`PGPIZMy{QvDd8FM|}#oNarnVI2S3QYdcJTIZS@ujxS zH*qcn^B!qtR8eQD20000r(IpuRR({mt4CpG5D}Oe^EMb9>goPXj_(!#mUa~) zLRD3};jSL#2$Ih&?JA~kCMnAjj~@@Ft4DFp!F!MM?S)cWjn+60 z3^OBy02^b()BRi0%FKxg0I0@RaNMl zNz^Xwmt~p2&XT67M~TC@tCnD6M1l%_KQX-M+M|ynjCb zz01AA7*nz^T4UDZ_v-__QGFf**RU}h}aWN@g*`)4`67XUDK zt5|E{z26PD^&m%(d~WVmF?};iRaJO;e=u!5h;t4h1e`A?^Yh1x+-^50Gkw$V^W|g; zBEr-Ag8=|$PFvb~kl&xbj1Ct?fe^xu&D^b0lx3M3%Ql%9BbXWI%gJcZT8r!T3TB3L z4$C$fW=4z=1rg!#{yAx7=EMX5RO0`RN<_F*E$TvEZ9NDPCBU*Q5o6rBQ7Bc_3IN`F z^vx)0m-efwN?_;9$yjT@Y*ekPF@yjjO0=07eKSf30oK~IXa}IQj@37##dNgI4{9)uPczt0g@R zE?jsT+&?Jx4+M@3CkO5vrQI`$WXFEb@0su~x_XQv0&6Wq1j{-T4$)S9Jk|{Wyq`a# zwHDs{-RG_z<8jFG9}UeE%d*7l<%PO>jLtc{US0?Qe*QSe=kp0==A6T}Z94|15CT5F z-Ut9hWQX?a_l1d@K#qEA2bs>+g9%Be04J?WR%)E2M-0s)3zqJ+s;JwGtOi{(s zd|8%h*zJBLYb|!P+NzJ<`)^8j^_UR#RbZ1hD^eaqGsT>xqH8@3(Boic-0oLe)|uL> zkGaLlC>Q;t31&_RDrl~})^ee{dW@v|DUvpO@6$!*4jnJjh)8M%0Owp+$@8lb}HVSTeBb49OpS!enKIBY3Z Tt(`Ss00000NkvXXu0mjfd6v|i diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_13.png b/src/main/resources/assets/hbm/textures/blocks/taint_13.png deleted file mode 100644 index 6e0ba09d3948f43c884433a730531316df35fd73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)E_b5Ph~58RrLrjjiD5V1liK*1@Q>_*7haT6hXP8E0X& zI9hBxKVY~T>VkHB&bC7=&Diff&wC1=<;PH%8O9heGqyb{Jk&h+@;KK3@bdIpj4^P| z9WMJZlt+-qd#5lh1pwB|S@|&(Yb}2Nc~$`M^T)5!DznxirG(q<_8%bUjP-I>0Km)# zwtsJbmB`jwBc)VlLZ-W}tIchXiiprk-}b1CF}UCFU}jirvF%YYGl&Q}=Ztyq^#L;< zl!R$1ecyk()SNR;#u&uws^qV2`7xB7a|P_W4n%ZtL&xh{|8I-|066Cmrlp8o((n7e zg2n5qj4?RKng?H;b4V#2y!K*cJZCx8_|D%K42J)UiVoik6d#Ke77YYUiWH4R8!PT3l=WrCHkC}3 zA`JvgWs$-T`vneGrXHEEcU=u_-|x@<&)_eHb`)lYwHC~bd7TXIqN{tkuUA?;UrwfJ znxc7VN4XcV)*|n#@?r=9-h0gJWaf1;RaGGuX_^MijAdDF0*C!EH868A?d#{$Ff)dB zl$WPh2_dA~(2jE0AEhFql$_Ve5K%F8UMFL%#r1jxGbci31`(l(F`}#cf+8n*d)~=* zyM1`n7$Y{;TAVK@qb}qzw4=lrli<8g#yKZl-OIdArmK5Ns%jAcc<(_(h%pwE5BsBp z5FXp8dwK5>LiqPsU9#2|`6Q4NJc_sH-MW~dH<9s=#N#1)b%K{=oSNGzagZ6ZFFY1sI z7FRy(k3vNF_2}002ovPDHLk FV1ma*$Grdm diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_15.png b/src/main/resources/assets/hbm/textures/blocks/taint_15.png deleted file mode 100644 index 9dd944165ae23603e8b4583e31450344e893c226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 458 zcmV;*0X6=KP)b>!3`M_;Oqz9p%<^ixgNGUgi~?PHh3r{!vn&OQ07W`@ zsN>a|c>#?9S9U2CDGf)G`h4V( zaxY@7Mc!BC#Sj9#_n6no%-7p|PK3-1B0?2oL|69(MNabe{4U$=_Tf=u zjM!LfalV|4x{$}vjuK-`g7Z2V=bUtPFY`K?uI?qNszm_cy$2B?##l_=?+y||cxJvlgsS3l=KuiH-UcGVo=ghJ@Uyd0gH;o4GH)X%Q*1RTa5YTb3O}REWv})7}P`^}BMXR;zUOb+or3!#bMHNi272-n%xp z^6g3GPOa{r9O&^mSXIHyzz~abKvsU(QMnEDtNAR;(kDhB}l5*!iXe!oLR z5W)`q5}b%2#v6P}DKj6=8z&+ty_-e5w6ao4cr!1SLRmu{wIncwWg6b3npXg5+dal+ zRg25ktLi;BJ6MR%N7xg&8qW!1rcSU+@N2AGg&`tY*sB*8vE4g z%aCE}REIk1*sN-6r|q1-Evd0twOoHQpv7lk5dkv;%kxl538f0d`Js-=%rEmTB52z^ zOrjk!=C<8u5?}fPfDm>7kmE8-);xq=9yVrv&Vk9BI@K6&`9(5w-m{lE^3x6x;c(u# pm#1pcn3|!EIe{`2o7R2_?jK{`QL~hYFK_?=002ovPDHLkV1jii*k1qu diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_4.png b/src/main/resources/assets/hbm/textures/blocks/taint_4.png deleted file mode 100644 index dd66e62453ce37d36b8fc9898e2bd1ee8839123f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmVW!Tbtg>Q9^xviwtXlHh36@H^BdnO_nV?abW4+n)+Ty{5JziR;K>WPgp@ZP_G zo3iJ1ktMFHCsu7Wa#0j`|I(@{dv?wtgn-jyuRh-bPtycZCU0^-J@!hcl<@wg6#x)X zW@*ZvKfaw3u+|zOgcmhkJ+ZddLZn)25n}`q;q=%m05}f^WsJe|`2-QcIfwIbP(*|n zBXmkBGas*8MMU`y0Mg=rLrp1RBfW?V%V^4;mjt44>4p}m(klRX@6lExi(Qg0iXs;~ zJ@(2NGuwFC-B|jPNvD*uY$8HijT}ONF(wn`0_WkNMAkamYUHI#VejgRkJs(rT)KMV zrtG<`#=Jb2-7TNRskRz=Q5%!CDIp^QV*&mMR3No3dwX?aO`>5xn;hiSkL9 zz4w_!FZ%)j=NtfJyQC#4?wrfZX04s~K;(7x#4*MhyprBlBOk9@)!I2{jKT4`RU2Wx p>~4I&-?4P!Wy-^!GqOYg@B>VKNPD!*GbR84002ovPDHLkV1k~O*ZBYd diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_5.png b/src/main/resources/assets/hbm/textures/blocks/taint_5.png deleted file mode 100644 index 90ba3f39cfbfaef30899fa27c4f30f33ceda5b3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 502 zcmV}IM9imL$~g50)Y1(eKWDd zCHGZTsj7GE;ylv0*WMChA|LkKX&WTM<)f88jN^;&&1aj8<+hj!-e zY4tmop`E#_NA8;`FVA6l%-@n!-%MQIF9ay@37Cjrt<5S@N+?wbPIvXl*4n52CL(z6 zArj>$VfNl<5?%TN0OuS4Izs$UkQTS6sJuwl%7y}|gzqSewb=sf#@m&MJ+-+=( zf%pCnJk%3E4k>YSx3LWQ6m2qEBjIjCPhKKXXLL72&#d>=0drBh0H zd4Ey>Kty@VP*42!`==7H)*2y%J2rE-v9{LcM!&Wy#t0(9@p4eoGsfV0y@H6~oI}61 ziii+ngia~pv_EI9M3k8TfJpqGsVODwM2n6B8YO+*-*g+mB1#^gnLK)<$1Xg${0EL^gb?Q^&B z>&Nq7U*>M(p`LhbmTYKgt{m0aEL`??0+jd!Ohk}~$7bP_QckHHs)u@FYwg{A6A`@k z5Q_4XZ1&#gCA!oF0M0o8$Z?4z8Sb2euSMF;>&LSi?RQTw n*+rozhxJb!MJjTw{o1N8TKh&*cVurs00000NkvXXu0mjfS##lp diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_7.png b/src/main/resources/assets/hbm/textures/blocks/taint_7.png deleted file mode 100644 index 614bee225b0a303d15e35d84ffdbc41a70d99c77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 499 zcmV zjWO`v-+_mE;>RH+Zs|5wV>5GARd{}XQbRqla}FT{94`m;>&FM*ZZ`-sd6Vzs<)Cy* z3D56O3IK>GZyD-|-+up80@hk1gmA}Z={DBZ+T7^ZR>c@WL^xg!N_xf^T(4IU5u9`A z*H#e`VvNu!C7kx>td)o|695p2|1&kEgq>)S6v`UviBn2>ptTk;#=A7MP!+8J;JwG# z%q($9zpAP{?07jSW6XDqr~R2lmpGkL%Cw0HV>5FI0mhiTC=ck@Rtc@g8k?C*ma={6 zHh%ql`RmKlZ9LQykIkG7EzOmq8k?ER{!V}rpMZ%767kr~oKngul|%JVPi(EdyKf?b z_Z~t~ev-}J`@BS#x&XjA2LL%PktD;Na}c)u+Nzx~210M?HjXi7a7le^W`6yAQKS9t p2`0NJ^yIMqiK9qGuC-rV^#v{OMVjWW!gv4x002ovPDHLkV1hUz-3@P)**YPy!&#aI-@BIs#eY&`6nkF~gIjRr>Qc9SQK}k<*4I%;&!59N~j*5s7LO>N`#Qb<> zttq9<1OP32E5#U5*EM2{Sgt|fR`&6v`+EfdyFE!t31iI5 z@Yt?&2Px-vdy<&Djhd#x$MP=5b|tMfoO76tUN8VN<2U}Ej$TwD1bi&-f(Loa*se4k zz2IR0aL&E3+3iV{QYtr=YY^Uhq?9lnz2Kgd5-~=^7@@Vsat$KJ2=6_r5CZJunYE^r zG7|t`iT^V-gn&2J!YPzBwkw4YkWvBwD5c=Ne@UZas-;$A4CZblj!Q}j0BD*fgH1;- z>bm}o(LSEUy4dLuLZ+Qk!rX1-oP(4yFOpLJ0xZ`cnAW}KZljVVZ{O`nU*Dg9ecA0v zW4qGaZQ0P$T)v69+ogpgAzLB-gvB&7t?;h&8$`M}DA?iX3b z7*T4`S_43iizTt4T5B-d7xaqRXa?|lX=sVk-M_5CTh$AB4tjp4)kCypW&zSiX$ Z#1BeII%rbHFKYk*002ovPDHLkV1jj?*m(c| diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_full.png b/src/main/resources/assets/hbm/textures/blocks/taint_full.png deleted file mode 100644 index fce2c72d0755e6e8367232306d9982e26a7c6828..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmVg_$)LPB+`IOJ+10~ZleXq5eV~l~6k^ul_-cyK3UayzY z=EviK>$?8XwASSC-h+q)0KE5@b7HN9TB`wo-n((m;r)JtnGr%j@7*vn=A1aj7<+Qg z*{rp|%qXP@0H{P=+P%gY_);zEg4S9KL?mMj=rWb??#7|0suciIN^s6?yPR_Xfb%@} zWwlmgt^Khv#we;wH$BGK*lR76QslZWIOp~t=Nt|qlHR*ftp8O?kvpYMZ>>qr*&K?e z;h1xx)@t-pP2yT>6U7)stv_jHof!j=+a6wQO;hY+B&-g_L@T8uGvH0PYK)?%#%?>#hVr4;GC zn>i=O7_inN=WPD`ssQ#+q8j!2?uw?h_inxc!QEVDUg%pL00000NkvXXu0mjfOrG(I diff --git a/src/main/resources/assets/hbm/textures/blocks/taint_low.png b/src/main/resources/assets/hbm/textures/blocks/taint_low.png deleted file mode 100644 index 48ee862429fbae41851dd346cf09aeee4ce63bd3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)UR$yT5Dk+cT?UrK3;2&}ab5fG8V#|t6M&-|guQi_Q&-ilL7^Ap55hrRCDldUy) z??FU{h|GDO*g;~97-OK;x_V5lb;cNtvc?#p-@EMdJn??N0RU>%dyj*e7a9>6X1=i! zk#Wx9^?E@>mO>E$GvnyJBZROT#uyNh1)6i7kH_QZPz15zxA+3s75sWR=ef`33qX&9 znNdnHL}WgPtIT`+j|P}|O<&J?m#Voj#$rz?%_F5WpU)?*>oVFPBDZthZK_%&IYb24 zbuA|E{jw55m^tT}Qd(=%4gLJ#YOOQpy!_>yX9!^`&>qv8+Z_OawHBq6udCZZ^;(I@ Z`~_C`7nQcRm}vk2002ovPDHLkV1kfk!ifL? diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png b/src/main/resources/assets/hbm/textures/blocks/test_bb_bork.png deleted file mode 100644 index 411d7960f53fb93d708a447237710de40df849b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 427 zcmV;c0aX5pP)y-EW?6otR+?yPI&1Naj~ZF~eth@=rUiXsStq=_J@Y(o%2 zAZXq|Y%EfWMbN?`1Pk*HZWZiJE7@c+8;h8~-AzPqGce4#_d9b>sQY={<)78CZ47|( z)9jzc#axn1zSL{bzwnl@1i~_V=d6irwvmoRI&J2bR{_u_O-L7N2+Jgut@8BxF(#Id z9J~u`kS^5Fbe&YTil%F*b|+8_3@waeYr4+y?m8!j8^~sxv&$D+UoCbv=Y7L8uUJ?n znjS(ojRCf+6iRjitr}i&k3i$`+2*1Aj;j=V(M1xm@YtY$2E*TWmCHeVh26*k(ve)` z-vCI&!h=CR3!|%YRhQ1s#|2poCK%bXs}$u*opPlP!2Z?}N84*-lsOnM0JzIV z0nmlv3zUz*yXU_6{w5xn#=eOmK|n~RMR|;%m`e__J*~tH2+y6-ux&E=(y!u4^$j3E VuApH1>{ome)q7){1E^l43Z{ti`b7e&&ow;SMDO;WHMlp4#S->oppe zr|^XwxwY>%Pn)t!^W2QHD|Q_)OBTNV%B=JQdowd%(X$lI34-B@-<6L{xofJmTqE)O sgpvaSk2;y%&Odl!m@0Glarr-nlBxCv>-V@k0J?+0)78&qol`;+0Dl!lVgLXD diff --git a/src/main/resources/assets/hbm/textures/blocks/test_bomb.png b/src/main/resources/assets/hbm/textures/blocks/test_bomb.png deleted file mode 100644 index f9b425a24c9ed544c78f9760e4d3d91027cd971e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ=4@yqg0@pd`}n05DWjgJvW68C~z?U{XajidEvyve*LutW{fiR7IBmLb~RY8|M<;; z=|x3v&{2=1OpPhiMa*qtX9_J&n5=a`?OSnn?Zf654fnjy$G#9b__EHw*JWSS0!Klk t@K22o*gnWyKgF=&rA?1@-G@d)zrrKaDt7-`Zw<7X!PC{xWt~$(69BX8S%Clm diff --git a/src/main/resources/assets/hbm/textures/blocks/test_conductor.png b/src/main/resources/assets/hbm/textures/blocks/test_conductor.png deleted file mode 100644 index c1b14c7080dfbe4f2edf5642c3c3dc7663028c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf&fPIq z{^T o=Um^$%yQv%@xPfz&cFY|5T0hKypmC11<(x)p00i_>zopr0NLt8W&i*H diff --git a/src/main/resources/assets/hbm/textures/blocks/test_container.png b/src/main/resources/assets/hbm/textures/blocks/test_container.png deleted file mode 100644 index 3d3f7d32993128432e20088cebfad6fc7d4e4a53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ=4@yqg0@p0#6sm5DWjM-Ht*H20To^|NDnC3mcg2d?9BQ&GcHoI)C3}5s{ZQUJ2gE zOXcoN;ZJC~Ww=4rE8sQT9}BPJsd5)In>e+O9|&B;GBr=(plZOQ0C~>2N^=&3vDM6< u!m{0#LT=By}Z;C1rt33 zJ=4@yqg0@pFi#i95DWjMrvt?r6gXT0zwOUlU8wVrXG+=rCyLt^*M9q*PL<&nKm<9imgis TH{5Cmw1L6X)z4*}Q$iB}q|{6d diff --git a/src/main/resources/assets/hbm/textures/blocks/test_ticker.png b/src/main/resources/assets/hbm/textures/blocks/test_ticker.png deleted file mode 100644 index 4f3c430f982e6c5c2d6a548f7553d19f8d3b315d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 216 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ+nVO$@hV3JUv|;LoEFFc6;(MC~zG4@qhWQm}645l(hcX2zIB;3~P z{`=~t!AzGo=09vVyia-C&OOoKlWY@Pj;0=iCbyizt5@c`LdyP0cL5D$@O1TaS?83{ F1ORLxL?ZwI diff --git a/src/main/resources/assets/hbm/textures/blocks/waste_earth_side.png b/src/main/resources/assets/hbm/textures/blocks/waste_earth_side.png deleted file mode 100644 index eabad09e5ae1360234dcba61afa5b5435e074fa5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 454 zcmV;%0XhDOP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0XIoRK~y+TWsuEk!cY)}@9X#q1$SL_U#QSW z$ihV-bY%=_H9w*un&3tQfsicRxa-^XvnPyc8|F^VIrDq3+wb>fSr$d{`SWeJ+r?s$ zW!dR;LQj%pwOYk-yj(8l^Z918afic!a9!6`RUMDV*>tjAufs5;tnd4_ZRtfeIaH=; z>YAn@>3Y3JQA8*3ZnwiT`FuWiU3a-$puX=1K>%6Y%VSe}8_E2ymtM z#1H@V@ropB85r%9Fcc^Tw@OQeDk^}{)Nzb+Eel9DVC`-bEMRjK8&8&k4R;VXuQimR zsEM};sN;GR>D*R;5DT{RU>eJ);~4>O#|;MVQ(*wqEfUK w9t@B^tfZKLQ7K9gxEELhur6nGjAzryH*`BVSato%umAu607*qoM6N<$g0|AR$^ZZW diff --git a/src/main/resources/assets/hbm/textures/blocks/waste_earth_top.png b/src/main/resources/assets/hbm/textures/blocks/waste_earth_top.png deleted file mode 100644 index 625f45be7b3bd9207e448af97385e4ed5891550a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 608 zcmV-m0-ybfP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&0ntfBK~y+TEz;ReVo?wU(DTW@Fp3NU4GKbw z0upAFNro2!B)mYvkM&aeCXjPa?b<`t4e#&o*X#A|?d{L+Q?J)EnM}1>9SjDoR_pos zxl}4WJw46m^SisdmzS5&Y&Mlgqfxuv?sPiYY}Wtd~C=Z9j#bUA9Y(QhN7_P(N5Tem&u~;Nc;q~d<8sd@ zZmyKVWHM1eg($ZTKN{2EQ~SU z<`%RvApZCFH!@{7n!DZ3jro!_6~na|b^<21$Kz2T!?D|)o6J!Vm3HVCX-&B z{li%~eS(ky)c)-opPC*wKA!P-%$O3-M#Pe{wf=ldY8>CBE!B2F4aDL+(#w6DJCVSE u?IPgY22APJAo}@ywial?tO#Z>82kea?7CfbIn0Rw0000?o5_@PuqIn+ z={du>5O9ac>+;>#?dBpP+G=iG4KDz{OzSM=^*uym=DE>gisl&W7Y_azKrw&psA{zWaI#{Ge zq5)9z0ReZ2Dy1q#J#os%M7l9GYna=NCr`beCAN=7=Kw$>$~5?ubg-zoZO+M4DP7jw zq&l4G55jJD>Qs#(%#k&-aW(dA-bd+Rk%Tds3V#Vnvk$vVOtW{*)wt+ODdUdyoYc(8h6O4lBw~9V+%;TRX7BdC<}aRe@{|n= zbYRC3O8GNXk*Xw&$)u0{rF7X+xYy;QzOKWhf2Loj*}X+QaWZqPyEpAMWrf`u%&aU? zNPkFF8ZVQ4ZB}E$DSt+xbif@_GBkab$H3^vIeAL?Gc-L}CcT-Nf%y-;+;iRw)J(#| zWU>GCirKeqzfo4y6DRrFELEf`RivuvVvN>>ghWD8Cg%LCZoR*IfN~L$3JHm_VSzX& zuVIPW8L>QpMJBbJTtuXlKSQ~*H4m?zr++@onODvm_VLOKsL^`svrnM)%U{6k_zc$ftaW6=0?|F- z&L{T(0Jm@4Qsl1hS!&Ur5= zS~pu$&Ktud3%hm&Q)#?Rxk$}Sye^+1*SIe*XE;4sCSgpbd`u)^OjZsxJy|AwqQP=& zwFzArE>bRH?jM?gmDdlrL)70raDQK+))t(TS2V5uWA8`!h#^d>*^@h4JG}Z5l7}V? zn`Q6q3Ldk9sZlWdXBX9I#;aiLwRGJH2cPLD#+-mVq#XXUhB~CG9UFsL=4lH?aVr~T z2eX>5_U0@)SWz+^EZ$ei-An>zhKb|XDIKhtrE;d;?R_*oS*Daf({Q)N>wofTsDEPT zP~CayV9~PJYJ_1{=h$JLsVkYItofT>3$_Hp&)rPq(bMfyFZ{v}! zhaJg76BG;tG?P0wcH*0^4QN}j0C(@)#f^6=c%plAqIKIg z;IF>p`2FdZY~@T(mg&#C-+u&u>NgIc=AYWz+R^pm4gkQ%S1SO3OP5CR!a%pBtaPwQ z^S;=ERa=%D$K)a+mEZkHNr725Hn?lJ773EF^1dQfX^0zXI5X3CoOW;8OHogpgk)`< zMm4ziF)y(S)v8Ar^~4)yv!gU#re*6EI)GXe;%l3ipz_`=RNlXZw|@@4t{L3k){d7$ zZb!5znLi_{BSO104Z_bnyo7wl~R>jmp$mnMMN4u{k9=V8sbKj zUZnx7mnS4;LkXGkXMadtbm-xA`4kPRJ+nUd)??!MbxQd&3e$u!nS`WFeO-sCzk7h> zYqLtqD(7b@9V{yLUK-aHWcq}PbMngkhLQ4TC>s`Nyx+W9vMPEQye=P2of4F8P(833 zAs?&N2|`k)N~uame|C%t35nDhp;@!FS(ur{9Ja_1H$uxdFMoxY60q)tHKsJtx3=}z z_M<28kD;@;bZOLb3~QQ1J#pH&u@kK;=Hp9iTG6)RLCkAwLFN5hSh@1+ICJ#xn4S6% z0B~a8ag3jS8#6OAji1&8`kJA4dmky;7t;jiaPAyU{DC#6#JB=2BWK82gnQocc^C5|Lx_e55+X7 zPnGN0cYpVQQk>aklbn;Mbg)SIn5eLjDdX~6IqNm7I)A_F7PlT|8fB40-B8Jf1?uk} zpaVOOn3mBj-BuS(>PW>oyNf!00CDYdwKdx~y@kYWm(!4e);fquRvrPp^f(uER>&4Af}JIeB9K lMBgA`UmTS_3w)YN^FQQK6}VI+z#aeq002ovPDHLkV1lY2R6zg$ delta 1615 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 Vf~%PmL0bR-002ovPDHLkV1lXnZSDX7 diff --git a/src/main/resources/assets/hbm/textures/items/gun_ar15.png b/src/main/resources/assets/hbm/textures/items/gun_ar15.png deleted file mode 100644 index 032404fcc8e7c99faecb4ec4eec24fc11c71b4e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf1p=5Jlg{LLjtYrBmTj4!GO&Ds+StsSPPyq>_#>M^LIX z27~XA-fn{n)nU)zN+1Y`O(hYGq{4BLsg|92k3a0ftt!uR_h&fEvg;)se3K;qXPsS9 zxYzZ1Ql!QjyP|NP=QF@AnGe<8YvDTZ}P761*`1 z!2M!@wN@ob;({Q+7=zZ@)pbo(RcbPUh`0xThKM+8t!kPEtu>zK5k*lyHz?@fFbH^@ zYedAwaoqQxmdpM;`U;)o>$^on6hNA$?s>Ih9)t&F1<~c3D4QRb1AZ S!|yu)00001u@(!oh^_y>P_g@RilcW}%({v-Tj&*7Lm2;GD( zl^mdpM=+D=6sXn)h4!1i1l}jl3xQA0ttkB7j0ns1bn^d2L6RgiO(SBV=aFFv;Q-qW zFvbYy902FC++62HwXSO)O#be7j+aZcj$B^sHF-gEYVu8nydms zg~RX9?7RkvRxrj0rIgR}8~|%AQc9$h^nEX)005=b?8RXi7{`$;%dpmpw-o@Ys+xt{ vwiVuc(llk7rg(*Axa+#jUwZ~wg1#~jv!`IRUyK(g00000NkvXXu0mjfsj7g9 diff --git a/src/main/resources/assets/hbm/textures/items/gun_bf.png b/src/main/resources/assets/hbm/textures/items/gun_bf.png deleted file mode 100644 index 67bb9a89f4d405feafba37bcf0c513a8641030a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmV-O0k{5%P)1pw7==FtV@U9<$&(>If(gb`(cr=7C_PZ8opGt~Wyf z==)xZqL6B;q?#((nnZnsT%Io69&Z5Tc@Ds`Eb6m0sSwT1IdyzKvaTxt-g|)Ub&N3* z-=Zi)Yc17ONqw&G*4d?>aU2yumSvnyC-yIU0Im<$O#$Ajq={mZwr#&0_U<^tFh~f2 z5CY>kDy_8uG);rGR{aQw5NoY6#>hO+bX`ZR2w<&M-vUy_fuk9~Ikz24#00001UlY06G3VNqH4A*T0v0edHk&_i z%{nnbs^sWV)4y}mgpS=c{$5l3E`{x1_1^t5N0!tF>2ER-3+}io2Bdz!k!W~5yEMIC zB!O$@m(J6>dzW?zHE7(*I)3re;tXvu1&2v*s;jGo8Gghm*lVqSb=5&Am+3w?%Ykj@ zwcjqBnqt6s;PvgztP4W=7{bqOxxAS5isJOmm%Uc^8*?%2u+U@(aJ{*+`(k@hy>-4s zng4v=^Apd>=*>CxC-%>$A0JJt62u=_3GM2;$Zi}}?>f)za!c_%XQ00sJYD@<);T3K F0RRF~esll; diff --git a/src/main/resources/assets/hbm/textures/items/gun_bolt_action.png b/src/main/resources/assets/hbm/textures/items/gun_bolt_action.png deleted file mode 100644 index a5e4409af92df8775bf55d6b2cf9c191f01c4aac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfhgfBHnh!$Yh*l}&6DvN-%alXwqi zTN$*(tGWzWOI$-(i%f0bg-3#OIAM*lW*ZZ_O=|6g0;%}uEipICSmt_sYVbVRD@ zdPx$G;)~-A4GsTeVq$oJAc8khDTP5?T>S9%{QCu`giRV68ygc3xAFEg%~RsJ+5OpI z(ewq32I>E+es|Z1A2_gn`~D5PnldI>DK>xF)5OPcB+734VTKjkfsSJEboFyt=akR{ E0RL7@l>h($ diff --git a/src/main/resources/assets/hbm/textures/items/gun_bolt_action_saturnite.png b/src/main/resources/assets/hbm/textures/items/gun_bolt_action_saturnite.png deleted file mode 100644 index 6c84794619f770fd2f74ef56c2e162ab09fb52b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 210 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vflx4Zf#u@^F7k3kx$4ggMXPkW^4qJow?!QSLdPSa=hFpyJBq0~uO%y^7U^a&BLQ zOcXPgg&ebxsLQ0NFi8 A`Tzg` diff --git a/src/main/resources/assets/hbm/textures/items/gun_calamity.png b/src/main/resources/assets/hbm/textures/items/gun_calamity.png deleted file mode 100644 index a5ec308bcfaced78165a74bcccad32ffd049bf33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfMnkR-`#X<`!F(H%i>L4LVy~KC$MB#p86mKTbfCg)G^Zg4mvlkCFr(CGcgl{0p>2rSs@=EZsM_p#4g znJ3O*bjapS_Ax$nA>HtpNFzgrl_b-Z33WZk1slGbf4}Fisru%3Uump;G7qCm&`*m# cwojAemM$xNuFA7>BG7LPp00i_>zopr0D)R<#Q*>R diff --git a/src/main/resources/assets/hbm/textures/items/gun_calamity_dual.png b/src/main/resources/assets/hbm/textures/items/gun_calamity_dual.png deleted file mode 100644 index 3f6d18f4204166156cbb1428a008723ed5e20cee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmV-20nPr2P)dfwq7~p*OoD1+D)wXS_>pB4#V^Y_3>8ZBZLaM4lDTVi*d7c@^vA7Zgyz*iz zR!UKpB~P5}Iv8V;Qi>QOLI`4vOw)Af|=H@DUnAq19Xp=p|*7>@wCa_4njcaT5T7cT987)EJ;Q~&?~07*qoM6N<$ Eg5yAbZ2$lO diff --git a/src/main/resources/assets/hbm/textures/items/gun_coilgun.png b/src/main/resources/assets/hbm/textures/items/gun_coilgun.png deleted file mode 100644 index 5c130d10963b9331ac31134f9c52517161628143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmV-b0jmCqP)s^l9Igqb{UsPIb`HJH zbp(&=nC_UO;x(8VTJ&rk=MPtPuu3Q#JbHKe1P zLubzV%V50nxn8)mfmDEplUD!)kja$3HE0D9dhvW~sbO~mz}3Q~Zw<&~%G8NCp5&qq z(9w%wcSBN`0EAA|D#;GOp5)>;h~3L;A+@pAo}rS$q&!Cfb}whV3IKSC9z`Rdl>R1n zsYfQ$ZAY<;XJYS!pSpOGA}P#0^VFGFGe=DTfcwuIGWk)}Z|Ad}e&Y!v*H`-HaJ$*o nzO*qxX<&&BK^F&uhPG@d3W9`ex|{D`2;5t4arf_N z6o-a5A;}>jx^%gIECoUoEeBrG@VgdAPIb_xk|!dOa-5n%iUqaNJknfB%FaM>}Wa z^LcFB=Je!ozCw`w?RBZFt)eI~l9?Q-R0>VgNT<`(>vdFB4XOOuLC_?b$&t-wd1_zc z-d@n{b`f9i3!s{`!3row%T7)@p;V-V-}m%7`{al68CbXaCA8EMZY*aY1@IDWo-?iOQ)QjeKW7@ xH_N1Z60WF9p8s-huPoaGQKw5P z*&n!8Zn64g`1}vU2Z_gjts-l;HZ4h?vqU)S?LIFT8|6x2hG|c;7CF6NT^-l3rdtMb92RdK9y8#gZUtSGg5tnJ@L<$!+;_^SpoC|A`$d zIx-^bV_J_FvK)|bzHAczu9D6A`IgsKNj(fTY_U=g=3Jg*%%G{taBJJ&!oAgp#B6vD zud2W77<>KIUi((YxKzcK1q_!>64x$$|2wwgsY1(w&o<27x7=s*`!}e*HQL}UB)E1} e)>i}bYtl2hy_`gAs@4PD%HZkh=d#Wzp$P!Kvst(R diff --git a/src/main/resources/assets/hbm/textures/items/gun_emp.png b/src/main/resources/assets/hbm/textures/items/gun_emp.png deleted file mode 100644 index b4be7d1f73915533a67494e07dbfe1b7d66de9bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf{PSsPG$3GNg;E}J8}DAV z>cV&1E!Py37!DZl7#vG!JX1V9AYtuU7P;esuXiyq^cenNd+%p7BU0#4{igXFre>^V zWcYk%k?O0`tS15!RhFu@C@b+ltK`ehjdJRG65{_xZMn+A7td`O Yd27=IpXBXa4)hj-r>mdKI;Vst07^@2JOBUy diff --git a/src/main/resources/assets/hbm/textures/items/gun_emp_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_emp_ammo.png deleted file mode 100644 index 15ca8e10fb1e0dcd4bca3320085fa06219c8bac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj)XP)1pw6ox-HT`~m%IzSGf+jQ;$N`^owqzyDAC3p&S2swa{ z(HoSG-m3!y1TunvLAZl0*RrEhh$i#&{_p+2%!4aW61$L6R{q;si&E-h@1Q89tgN*- zmjd9N0bn{k0FdW-ph@~-V^*!`>*bB_&yu^3r?y9kEPxCE-tzhU5I7Se!&(av#JTN9 zFlN;Vc6eA_uOp2{&q4o9AJ7G9Jts{aWx2#T(?;u_frH7Uo~-qp{eFir4)}e<#!wuf z^&FrTZ?~@ioKE)ujK{|~!1nRLVzF+3kHego9C)k7IEuoxbs@6?ikk;?HI3K5A^4u0B6PyptatsYbg10000P)NklLJ|^cY@S1ym_z}-KxuG#ja|McD14wS#24rp z0)iGcpiY6oTd;D~Zhn-4?nsvWEYGJm1H41lTHgA17cWXF1^{CWzXI6-fRvKQalD(o z_aGwCG|lEspta_B9^dP_ehs3O;;%oZO`F8bhpOU_{eA*j>f~Oc_a4?-{yd$;_vM1? z?S=?hD^@%X#u(1B3`8UjRmI2i8AVY%8QQiLivZxahdj?gL?RZNB+0D#DMFNUP7K3< zvMkv-CjcOXfDpo51=9`Yq_yV0?*RZ^*R4lbl9ZAGAWhQ=WV0gV|IKUq0WyYg#Vf8J Qwg3PC07*qoM6N<$g7IR6H2?qr diff --git a/src/main/resources/assets/hbm/textures/items/gun_euthanasia_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_euthanasia_ammo.png deleted file mode 100644 index 7a26309eb284a1cc2603954ed9820532da8678c4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfv2ipQiH3A>r(#$UcT?NenY)GA!_%!l<-4eEtW< z1dB(NOrd4zdJArTpCw&!diLi!u4ns{+U$a&L@%F^WJ&&J8Ui$)!PC{xWt~$(695vs BGSvV8 diff --git a/src/main/resources/assets/hbm/textures/items/gun_fatman.png b/src/main/resources/assets/hbm/textures/items/gun_fatman.png deleted file mode 100644 index 07bade5d1c75fec500fde209c3ece4d2163c5db1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ$^?EDy zT9$4lw9cqqV9E*2fuG@6mGNY%c^w8|Xn|Y?jUy^9LenIVa@+qx&g5ByiO)?RDvw{lA0>0#3}YHdLT;GDxb7uakv04R#W z1Egs>H#zxx;Ze=ZB3ZO;tHkDEficDdeEnVsik1wfCS_TU`@ZjI+ErDJTu|V_100MY z%d#0LvDQ-8wHgZq1o+8w0M7gUsuBfo&GX=H-?y6rFvj?IC2!yRS&0}#3rvu%>#)`? z!T`Hhung2N48(Cvk|Y8AGV(X3Qz>(?I-h*5&G`c~~M_$0000T;K!TC!sPKzS^fO&f7|O8P4=_i6mIoH{Pwm; z-*v1LQjQmfct$k{FnzBLR?d9%VDI+KSub|=70N_TTY8dJzNtf{TWEpCuN_lTYVR`} z@HmHES|)bAl(Ar5`nKsyA}29UiJSEIzWJo2%c`E6nmsreJ<5Yb*1W#8$NO8Y{?U0B q&wVCUzOUae`FzgV&oQMru5r_uBidYCwjKdGo59o7&t;ucLK6VYhh6Xh diff --git a/src/main/resources/assets/hbm/textures/items/gun_hk69.png b/src/main/resources/assets/hbm/textures/items/gun_hk69.png deleted file mode 100644 index a7dabb154e83de8a5c0e832cd953753b703e7571..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf4JHQr5IP}Q`y&tayW`hw4bcMF-SyxuixI4(LBrjV9q%zSrO_tgKNl%)TK zn)*(DpCLz1EAaR$Sl?@OlW&9sS=em*_9CtlI@tVHs+ zd(0QU*M7V=`(T`6i~5b+hE=n6t&5z-`o6Z%%C(^*CDc@rqvPn^Sdr2l(nGe=kwW(#eJo*fuY6k{4ame{KaEAKiKQ%t4Xn| Z;_pd#_H9s?{tomQgQu&X%Q~loCIGofb4CCF diff --git a/src/main/resources/assets/hbm/textures/items/gun_hp.png b/src/main/resources/assets/hbm/textures/items/gun_hp.png deleted file mode 100644 index 9c65ba2e28f422a851339ce65e2703d10f9bcffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmV-E0m1%>P)NklfD2@ls@gSB>6)(IY; zpME9xUyAM8wc$C50tjz!oQO~#DwQOO^E{8DC;-^)c0^GGK$d0dq`(Bes}EIIwAMNi zp)AX;F$_br))UFZ*b>LF(^?NC#+ZrZtY9oL#sHA#`5?18nfxKob0s2O`0e9;(laaQ z?^wOo!12QS_1PngF@f*2)&P|I7xkwJ#)!yZlB=bHR?>g=MVP?9?6aNY8x81fJDj~j QwEzGB07*qoM6N<$g0z5*+yDRo diff --git a/src/main/resources/assets/hbm/textures/items/gun_hp_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_hp_ammo.png deleted file mode 100644 index 4c7f3acf5535fd774fc6698f26b59e5ccc071996..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#%_UtGgSUIn&Mw-qZKF>rFZQ)a;w!mR2s&vgILBAK05b#f`2ehy8ZouID*m z(YLf~&St*3#W6ppOj@~<@y0gZhIOw?PDZWvc7MNDe|J-|Cx@f_`qx#Ta&HScY3yz~ z^=Xc&du7JF`0g~pi#1w1x)~+f7BW=4FP#u{>CX4ROT`5*GaQllx~lx5eogSE#c|>Z gvzC22`JW;Gn~wRSQ-LzxK*ut8y85}Sb4q9e0P;3l5&!@I diff --git a/src/main/resources/assets/hbm/textures/items/gun_immolator.png b/src/main/resources/assets/hbm/textures/items/gun_immolator.png deleted file mode 100644 index 26e05d4d6e5f863711f861b67e01ac15e03be575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmV-V0kHmwP)1-g^ zt5cLx=(>(lin1)VpUREA-X01-k|Y9P+qRrcj=P!NM+X8B$FYp3BME|_A7nfoiSPRo zhM@#O&yho4Und(mghNDRq^nC2Y~Ck4U=D|e0g&r z^;%&Jbqv#B_3}wk6x&{_!6u7nsTo6^dabCdnxiWV$8okMfBxt1CIItUrgd7BUC1I@ hc3ZMtNUvgBz5ra0Vi6Y=-dz9y002ovPDHLkV1jhwj3od7 diff --git a/src/main/resources/assets/hbm/textures/items/gun_immolator_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_immolator_ammo.png deleted file mode 100644 index 33069873c59c18755d900641668ca74f443918d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf zOMUy*&o=l6NSD?~NUY0g-0?`5FFc{QHLtF2&Bd@^AC(I?eqcRmCYNDSr+Ac=2ME6I l*`u*81wJw%o7yKopKHo$4YEg0o8z2Y-U={TD|^@lUw9 z*~uk~QOM#fI2?@{ha)9d@4WO~ngsH^PrgEws;WE_lZAzd_`dHaL$c6ptyRuBrb3j6 z_@XE%%Mz`%5)uD;{0=~V@6=9%adXo&a0K%wNirE4;^xc#oUZGL&9)kZg|$|NX00`K zU6V4CEZ*b`H$2A}vj%C~b|WMoA6RRZh_EWR` z_S~Hv{&~jE{|s<*vhQd4s%y5VxO#XQ?rk*~XZiKB`i@MJ41xu~*d!ScLjbNH-zME1 ea(jBPHppL>M~cEJ38s$#0000As=6u|L+!UdWo2nHc1*ToDsNSzAB&8e>a8h)dGigv6Y zqC>^O!A*!L2AYC8RCpcISc6K^x7=~Z``x<-4^Cp-LjWeje615sv3Y+$&=3irn~7PHw5Yb~qQs(NOWQev$YV~h+212M+PXfzUIi~!ZcQXr?5 m%;$3!i$$&65&}@XT*MF3VyXP7$zkLG0000Eak- z(VLvGK<&mhyI=Mzt7athv~K?Me{wR1@TOWlA;d}5PZy(mXwr`kWf2Y zb7({Qc{#SA7^d%s8lAUGe!7$@p`xlP8MNv9bvBLAWO%z;K`SsRkp8A8Gqe@B_$} znDKvZ;)RRTn^tS<-96l4DlpMhxm$Z>hhahC<^>(erHpzP?mYM~zp;@q&!h0AoZFnl q2L77gzuFh>DB<^fPXJi!@W59KXF0`I-X2B zg-qKbgrNI}rwj&L09;?q8gDn+1lHlF$J>>wpDtS+0E{P7y}!F5j$@)IBG2=6Mgi06 z0O0s&NKq7~EK91Y!a0ZcUcZVqoe@Mt-*`quv=&K{1Zyp6ny&5|Bh+w`>;ka;aX^-3 z09b2TF3wpjFHL6$waAbWB4Pl%_xk>F!OrFgRpsIJtg}Nzr11w%_U35;{?$qp^Nn?Ap@`D2?otL)d?Gq+k(V;MG7KDD12VLqpiop%Gr zEJxw=!w%2toCS9%&K34KH+?n3j=kF(esA<^Xw+D$ar%<8K1pTcVWndd)*M1tCPS^@Q*F6#+S~^7Lt^B* zOnmp&Ixgrtb4>JlxC!U3)GR~KqnOjB*X+?OfRS=PMqJ@)~l(;+o;pUx0{{q6I9lWUhJN|e5tSGj91 s5@XhgDaShw(1!_50W{x>slu6lks_&>u%QJgNB;Ikz8U*nWzxhYax zNtFL2iXs52s#@&5ST+BG+qMNbPU1HObzLifrfC?*5o_&|gkVhokR%DtIhAFZ*IHw( z#TeuJzNhOtwV6Of{9Sm7hQaXFmhSob{KUC00000NkvXX Hu0mjfRC|Qs diff --git a/src/main/resources/assets/hbm/textures/items/gun_mirv.png b/src/main/resources/assets/hbm/textures/items/gun_mirv.png deleted file mode 100644 index 7c03eff97baaa941164a3f791e0d3a2a7ceea4a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfiBSW_CuWinkO*Fca&K-#;mdKI;Vst00B&JF8}}l diff --git a/src/main/resources/assets/hbm/textures/items/gun_moist_nugget.png b/src/main/resources/assets/hbm/textures/items/gun_moist_nugget.png deleted file mode 100644 index ae84c07f163ec59f10e742ed4e263d91069dc144..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmV<50U-W~P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02y>eSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E-^5z3JSmg00B=)L_t(IPkoYUPQx$|g>!&5ZPLJz*;|$t zvEPRsBz6Rd{SHxU%!;o25a z)Z7xwvXL`GfUxSlKTj7ww&0-a9~t` zUbp)8Jn7o|PHLZfnFIa;KxII@9A$R8)VG_}o+}>{JF5~vG6F)aCQ`xCeAk~JVUh&W zhIyVhM+k{P=)vP8bH|_xjv~O*xZ?pt4?qA;7JCMSCIZ07uHOf<_O(Cbz+u%*2`-76l4doG)Hk7dtzTKXT%~?s}0Q>YA$g zXG=;21o;&Ol8>B`IKJ_>*qSe;CoIdCik#_@NPex9?{XycYX22Wm6y}`+7lOCyE&n10^mX)U?rtgu+mq2%_)bw*1H{#4Dq=Y8pz*Pazopr0D$sv5C8xG diff --git a/src/main/resources/assets/hbm/textures/items/gun_osipr.png b/src/main/resources/assets/hbm/textures/items/gun_osipr.png deleted file mode 100644 index f45a4069d6f07d3e3b500b4ed496b5d34c00c68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVT(HTz{ z#}Etur4wxVnhkhbcQQG7_;~Or7%EKjnOW4-7rVRcU7^)igT2#dr=OhW%q95t!%zK6 z{`Rhpe@@+ndyYPp<}yt~&4UNI&dthD zWLoofPWR#~75z(AzMi^EZ^HLD-whWhc8d8v=Gd}!dF8&zopr0I`33)&Kwi diff --git a/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo.png deleted file mode 100644 index 24e644f4408c82b20fe7935cc6fd4c1f893a3663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwt=FTwDi$it0RF978Ppm-cStJ)pqD;;1=sf=0%Q8FsT%X6iir!JYAE;wP`dvk$8$ z&HUTs#i}K`B4j~OqnE++ErxAh@2%bXtm}T@&PUeIZ3D8uF0YVgaj20!-e(x%^%2ae z_;uiyWb!43L!!wX8%-Dl)_>4t3(*Q#>9CY(DpyF|@k`8p;>UX&i`y3hUBck$>gTe~ HDWM4f2Yy}# diff --git a/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo2.png b/src/main/resources/assets/hbm/textures/items/gun_osipr_ammo2.png deleted file mode 100644 index 313abf55653b680ee688dea2ce936499622ee970..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVT(F#u& z#}EturTrVZ4jb^eFrS=tRHFHLU+gdLR=>Y%>k{{Sd<{J3u}RZNR&L*9Kle?YC*paU zAMek@|4u%R;7F zhrJ;S>}Ohi;f{FK!2jF!1=EZJufJV=TYGqNSS$5cBQ!T@GNw3CB?;1UTZf5Xw^>bP0l+XkKc&Tws diff --git a/src/main/resources/assets/hbm/textures/items/gun_panzerschreck.png b/src/main/resources/assets/hbm/textures/items/gun_panzerschreck.png deleted file mode 100644 index d9c5fc51d8845c5222c3eac854d2be894adf849b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf{m z5X%m>BopIB(uWQJ!MT&?KfL{%&31pz+MXL*6&Zw$j%z2|Dl;=PAKrd`z2uGx*UlnK z;avyr+wYf{5qU$RuI~SdhBvZ{cy8Dn{k=c`T-Y&o{W_4P0=XP9#vpB5*jx@Ia!1V3 zYhaBCI~?W~QMKda2WiLY4|q~%D9XIi;o%a>;o;$#aHFs&f{9`^d)kSk(&r_+ zZj~D?s%R8waNSt^hslkvOl${tXBi_i^O0zfKKr_Vjk_CC9Q@i2b2B_D&&f)Cpn4t{ O5)7WMelF{r5}E*D0e}Pm diff --git a/src/main/resources/assets/hbm/textures/items/gun_pm.png b/src/main/resources/assets/hbm/textures/items/gun_pm.png deleted file mode 100644 index a32ee6a14d72780b631b3fbf76b91633bcbc6e95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwt=FTwDi$it0UG978Ppm-ZX-9Z=w5o>{?Yto^?}F)Ey^Yc_+Ib*GG zLV25lq`0d0OpalnYNE1(vPC^67*DGFskM-SlSQ&qdy`POLqo8tz#ElBNzX6$XK!Gc zaHBL#C_Lhes#ceZh?3vy3m>}fTIE%=PQ5X&&F_Vk7+2+zm}v$pYR{^z3kN!d!PC{x JWt~$(69CR;R}}yN diff --git a/src/main/resources/assets/hbm/textures/items/gun_pm_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_pm_ammo.png deleted file mode 100644 index 9309fa68f8f869b721cb5a8fc466eea9891310bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfo#q#c3%JA|go&%DR5cYkMrGu7O4U0t z`P@H0pZ~yq)oPC{H^Nh}J zSu@+vHCB9c`VN-KuHF!lR`yKF;gfNz+Qy{C2{TrlQ&@VEk>Qwxi0*FFdtNZ=e5_>C5JfzdHkr5`Z3M@O1TaS?83{1OQZeZ>9hM diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver.png b/src/main/resources/assets/hbm/textures/items/gun_revolver.png deleted file mode 100644 index f7d5507514988eb4f957881e6a3c9ff520fd488d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJ+nVO$@hV3rg*wIhFJJ7?c2@UV8G*I>{Yg4k-xXQucP}}E)C-g8##7M@^NbZQ&Cw| z(N%NK_NL%P{SblVJ@WIWCNzJa=frVEDbR8C5uRw3G>$CQv>!|dryt>A)T>yp;TbX^ zNI9{&b;=1_>7pe*C}084E0?0o}*o>FVdQ&MBb@0E~TQ8~^|S diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_ammo.png deleted file mode 100644 index 77b64a54eefd8770c0068bd9e329066288ab9eee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~8u&e3978Ppmj)Yh9dZzuvm#XL>80$+RxC{E z+P9*f@=l84_`xuLqT1Y4F8K-UEKHRSQt}fLrg~Z2RGt`oUZ6BFBG26X=G?o+EdoD| zyRH3yQ;y~IQ@4m~PK$VXjk6jJ~q=8zJxvWf(h>;ji%STf?_T`3BA$Z zZ8F0})TP}oLTK{07M7*43oV{*ogTMvw%_#X-#>&ygiQZk&0g|yg4x@^Tl3FL?qC*( VRMp^diU)-#NbFJAbu8X@ z)BpWv-kdvRKlS-erjCxf*`3P{SuVd8)nhm%RdQ{s7~_7Yv}FM&7AdlP`u0Kc(cb0j zUc0{6x@);S_IhFuV?;~NHHLfD495yt6nrn={9LzZiHhfyC~k+#CW*2g9ourHc@H~m z+pDDXYgfwZ2G5`G*c?JbH}l!`6@45F44p%YzL-wmrB!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`94t1EKe85 z5DWjg69f5L6nI>0**Q7QpUh`2c)RX#+LwtkNDq(IfdWCjvZUn7x&mn{ND0 aI?mqycUgCKU!wugl?*~g10?g978Ppmj<8aZ8qR3wQ|ynk!+L{Fg6Hk zOJtkkXko~BiY;$mYhaLqZ}-yW3CHVxh#x-l#U<|d&+RfSzLz%`x^0;KibeHJ>W1RJ z_QVFI3%i9j3GMlwvUcgZ*DG?PSDjKzZI)`TlyN`lu-UWLZlZQzZ~Zg{RmQ~5Cnj!7 zdcRyRUFzXJUm Ty5qMB(3=dNu6{1-oD!M<;M{#h diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_gold.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_gold.png deleted file mode 100644 index 0e6008a26cbb966af6d790584da0a2a5cfe28f8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`94rhv!{z= zh=u>szKgsK3OuYg9j7NL3a1sg9@d&F-V}5zsZ(D3ZKgi2%NK6fc~1?kq|KIyXr%A? zrR=oEEo7%qpy~&=kedzW2 zw@z02=nnCt`!^@Da7S#J)+nG1BDMYo>|mU-_F3t@H5vbb&SCI$^>bP0l+XkKKxkOZ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_gold_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_gold_ammo.png deleted file mode 100644 index fe6b2515482b05e21b6c62ff353393cede6b6c1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~f)_nq978PpmrmZxd&oebb^gr8Hc_QOC9N5a zO_m89Y6%1AV-vj2DNT1eCA!As+R_JH&vqTiHaU{QDH8l(gV}!eCzo#=UEE@m zdaop)+_xUSwk*)eH)O~?Ckx4uV7tDYCL-ODgzKF(O*_yXuT22WQ% Jmvv4FO#m6GdvgE) diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_inverted.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_inverted.png deleted file mode 100644 index 1c99257002bd63e39554bcdc9f1022d1a95e4f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfc&TY*q;$SvWq3pA+6(My`G*~+b@yWHtX_t z1|aa}_V)h935q@^W|dxXkw|fMk(7{-=rC*Hj6I;5EcdvXonOM!kmVg~i6JX%>whjT vuK%8#!aNM!qB9&t+&?}rY{@y>%+J6O8s$@xnBd3*bPt24tDnm{r-UW|3+zA< diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_iron.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_iron.png deleted file mode 100644 index 82974cc4cee5f6968a57db4b23b5ea2c8420bad8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`94t1G*1`D z5DWjMeY<%Z40v2N3yV5m2n@auxS7d0z$K}%=YUA$i2@IgkLrqoM}wafzdPC2QMa&3 z;_=@PYgnZBd>3(AAlAthrJ8m_$nw43cXNXB z)C52M!1=o8YL_KT%Xw-sz1qy;y1~y@H@V!s<~$oGm&UVG4y-~V#i^N&Uh@C| diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_iron_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_iron_ammo.png deleted file mode 100644 index bc25af3a44d0751ca50b5a1b461215d300f6d226..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 364 zcmV-y0h9iTP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!2kdb!2!6DYwZ940Rc%wK~y+TrBg8q zgfI{suNT2z*ocibVrgS(XYUL29d`DXTKNIN#?DG?{DqAV$gxXuoLufs?go|(n=qN3 zO$;Ff{=rS=pYc!-1c9(Di`T<27`(WElY+Xgk)|o)I2IJL{1GRDaU5aWHo`E3>$*%N zx8CAGFwe8mG!3?GgX1_@*Ok>!Yx0N|FD4$xfvT#I=Q)TlNs^CBUdBi_Mp1-mnoyP{ z_I>Ai-}hQ`weLWYn5Ky=%djj96X{5_?|}Ru1=LR4w(vZU%~cbU#~4}y!c~&D1Oy!k zwQ-sbdGIZK-xozu2+Cd8aaMbmKhyJcNSQ2OQ=sDcW)**aXW$Oa>Dy=E{SycP0000< KMNUMnLSTYsFqLBf diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_lead.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_lead.png deleted file mode 100644 index 4ecd5014bcd8166869ea3a2cbaa15ec29af5fa43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVTQIDsK zV~B``p!9NcfG{odWkqZ3&@|+GIKQspN4KIPOnUGh|G6Rbu1Uz4$*#;-Kn`pQ>p$ zm7n`)E)75AdO#;TfW`3GwqB2a-Hy#nU5kwj8rhBpO73`QB_bywb*Av(eKtj)yBIuO L{an^LB{Ts5n9Nn+ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_lead_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_lead_ammo.png deleted file mode 100644 index a123c69877f8b4b563e7bd3bd92b17bfc3892524..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfBPVAd^j@!b2ak9Q$vu5p)Q+mCvQMY4NS(;i~mwaK&WZIT4C%~jxrrYOi zz&X#cU{&JHnR8_u>X~g5(>%40Z&i9Dv?uw2XB1-$pD+W%j%hjz-L9DVY%{*lHQ}Zt zt7L|&h0NLo>ta`2zR4lD&|jEkzsylLvDYhIHVQIa_n*G(b%7 diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare.png deleted file mode 100644 index 8b7241860d68c6f554076d354ef2d9ce83ea0ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfCpe$-`^(YaBu|#1pIja=+US884{0x)cpeo8f=_JL`41> z8yNhNk7?VnV@HC-ffiSOu8I#27#BA+F&&<3UH%~HgkGZJG0|eJITCXFE6-lAcy45~ z@gRe;;@Qv9HUEKn4PthFZF_iodpytO>vLQ$HeYWzBk=ftOiT_B5JZ>?vl=<~{7-L_ fm^^<52O~pBKrE|aiOCzFgBd(s{an^LB{Ts5^lV&~ diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2.png deleted file mode 100644 index 6f440b5b6f8b346af604df16e313daf9f4dc58f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf^%my^%}n=SqwtA z?poI$yIiA7aM7xd))JRYe3g`11di=rc~XyIfsXej6V;Z6jvFG=-b`J+%BW%8>ks$z qt@4)VpR@e6FJAZfF}u(6_b{Gd44mYAEVLi!Yz9wPKbLh*2~7Ys+FZ*3 diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare2_ammo.png deleted file mode 100644 index eb58a2cd72f804d03dfc646aea00da53363f359f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 301 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfpUo{A;>(%Hj~- zsf_SM5I-cMAKD<66a5^rb;9oJ}jx? z>T1AqFq7fTglC>zJZx3lc&4wnPk!(yCCQ?!#=d##Qsw3~Ey5o)!@>@|+`m5hZ+#@^ u^8doKzW-JCG&XbgxYm=yadTE7Bg5@UWh>O{mi+_zm%-E3&t;ucLK6TMp>bpY diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_nightmare_ammo.png deleted file mode 100644 index 75fc19a3bd191d93c90a94a7e169e67252916df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBuf-vKbiP>*~g6BP5978Ppmrl0kYc>#YX_sl>4%o3|;nIZ< zbz&wn?^yVhDTdLjOXWP%=}tz=M3pTyW%JU+EjM3#)h8GIH(Kt(wzr!zrOI>HPkO@m zde^GgR-vIw;~nIcc@8hIIUg$0x>{3!ze3+w`gq`FlamsQE9ceDTKhEMqR{kI#E{>bsMgAU6WcWa__g6xEIqqC%$Dt9+v``epdeE>@>Xez4p@VrP0}`vEfsK z7(7oXvv(LWZOD~o@VzW^tooKpa!h(R~A3+;12F1Pxb=6!QkoY=d#Wz Gp$Pz>S!8|y diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_pip.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_pip.png deleted file mode 100644 index f524b1d6b6079dc0e27bfeef0f64d36f6cc17f75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 323 zcmV-J0lfZ+P)Jjy&x~Jejm8PixBuOGqJ=Q+NaV(za;W!Rynp$_JqwIYsio#mg6=Tdh z$x%wF%T)I9@e@QTCCjp0LN23Tt)r9@*LCrIpQ@^?TfiAIjw5Z`GEEa_$nCM>IF@;y zaU2KW8)Vxynx?VrJHR-O02pHc2*Z%3X{_D+YXX2Mip29g0Lrp_{Jp?ep`s{~VHhMy z5;>Rbc7pH1}K(y9U2f^n60IjuXt^a0zq8D7n VhR8hKa2o&s002ovPDHLkV1iamhZX<; diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_pip_alt.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_pip_alt.png deleted file mode 100644 index dd888d23b20e4aa455ce55b55400dd1e09ae93cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf#|)3{t2-#f|q6e|WEmN{|x z^!*6}Or^2zdp&m*`|VzLSb|xgwPp!}A`3%XBEtfm)9vqTcP?3^aV3h|;j+nRH37lg z+h(tS&vUgyU$hYrKk~Qbc9XmgK~)17a+-ScPRBtRZ=^) z=Ev&BzyA$4TXX-vqShy>VCr@|ZI1iImWAJHMnpIw90aZH=S2@Zjk;*!U)El{{1}Hv^2(+JE`taguS}g#DevX{&z6YWvjqM7=K2QY OVFpiEKbLh*2~7Z(Gi8zh diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_schrabidium.png deleted file mode 100644 index a1e4a87ed67802030e9555db5bd7fde3b92f81fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXZEKj`94rhyQhm| zh=u>szKgsK3Op{72lCw#IHnaEs3*@lHFLs+Zx@8@=WTR5}x{iiMwmH(Sk%7PxEtM?!3tMx$^?(BnD4cKbLh* G2~7Y*~f}cEH978Ppmrge1YcddN`~QtYu8DcZ2BV#u zEM7lTlU7bID4yPO@~AL_xWdG_&Jzqaeq7?8nPKR#<>dT*-@ew`)O9H+{V{%${;%={ zpNoj#thVG`ajfjwZA=DF3Kp#8+SF5Ex4G@koSyKCXO>UWm@DKS>=JO?kTHQRU=qij zycesuE)_N`V)$0w@wiaT$aG`w#aO)w%Y{V*_SxS)`Na5>aJjXDui{~W*x3ET{m09T zbAu&rNOxJN-Fct0M#nq%-H$nwHcDjc9?{semCZyciJ`Iok=YKwYFvn!c{GHwY shR@p)Jd-;%+Q;df)C>FdxtuNTdH!S%W}b6~K;JWXy85}Sb4q9e01bwU4FCWD diff --git a/src/main/resources/assets/hbm/textures/items/gun_revolver_silver.png b/src/main/resources/assets/hbm/textures/items/gun_revolver_silver.png deleted file mode 100644 index b9900ddffcea786212b6600840aeed5fd5b6d6de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmV+<0o(qGP)v6 z2u1}hD+9|AajYGaB5qEv_@x8)`+l5r@44_#t=DG(P%4sdGse9Lf}NOVol2#OZn2ICI^00006FfMEs|Ff6n>Ne-8YoI{lWY+M~)xyW13h zfvEZBI7$d#)+#|%fMIW>06gEl5(EKNl4L7{Z(r;jY+;%vx2KPlAh@2B6}G!gVcWK_ zEK79yE%6&fDT5iCH30ncCk~Hy0XRFkD%2JLuIGsBiyK8Ik$ybYF}BlENGUbHPCV7o z8WEaaXEvE52S}-_nqAKk!`?{I8W8}q$s8>)7Vfn&L4Fna*Aj!c9+Iv{S>1TxE2T$V zjw$_*^qmbuU+{mt!Ls&`_5_eY#sgoeRRKtSh7tFd50!=&Qb>IRTlI8IbP)Nkl8_KwZ}XzmB`UDu6w^Na1|@(3PEI}XVLa#Gb$RTbWQM1)bPH QCjbBd07*qoM6N<$g5w#4T>t<8 diff --git a/src/main/resources/assets/hbm/textures/items/gun_rpg_new.png b/src/main/resources/assets/hbm/textures/items/gun_rpg_new.png deleted file mode 100644 index f707e524265c4df78e0d0d3f1f65271331cffd5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVT(MnGj z#}EtuVHXC`vFX%uZx$FgU?b)3%_%!R*kD zBT`L@42O^GVrgYQykrNhT8iZ{CT(k&ILM}!PC{xWt~$(69Cn)XT1Ob diff --git a/src/main/resources/assets/hbm/textures/items/gun_skystinger.png b/src/main/resources/assets/hbm/textures/items/gun_skystinger.png deleted file mode 100644 index ef3ff8c9d8702480670c92242ac87485e96c6fce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324 zcmV-K0lWT*P)Px#{YgYYR5(v#WPk!QGqeAvPMuJW&KsJPxPndy?hac<>f?)tt0CLGX!#akb^GysO zmw*i6$a%-`+N2AoAs7-MLq0F40E=_1iT}^KMH8<}@H(%tvGITV#V=r&;PMVm13;SV z>+2yd2`c@M%R59TU0mKF+5lviAbW=-1JJ#rn00`GWCLKaqt|tv0hIB`G5|U20|4p} WgR-Fo@?ih~002ovPDHLkV1fWQvxi3j diff --git a/src/main/resources/assets/hbm/textures/items/gun_spark.png b/src/main/resources/assets/hbm/textures/items/gun_spark.png deleted file mode 100644 index d308afeef5434915d73e037dd3ba48999887ddc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 374 zcmV-+0g3*JP)%IG0Yv5p;8?Q@fBvy zZ?V?$y0hXT$?2g_qLlg)<^g&uX8gVDAvgQSK8aGwr3r^6`j_qXRR{3+(jyE*nkO}K zo3mJJS-Na;--G8xA-)9wtSv7%fVbQP?RI<6e0703+QV8)tJM+%6;fT_J%~ay&HU8Z zNOL9?8qQIvI;E7$=kuQ)nTeD>vD4`QptTlKN~g6JnWIQ42d-OV07*qoM6N<$g8d?$-2eap diff --git a/src/main/resources/assets/hbm/textures/items/gun_spark_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_spark_ammo.png deleted file mode 100644 index 150780fcb1caae1901bd94ef1d811d7b03ae59bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfAdmLK(&tTPFn-39wr9hW~gazvbGD g=Rdc7JN}q=$vZ!*q+FmO9Jz~7s z(#0W;_B1I1UCH3->gTe~DWM4f0fAA1 diff --git a/src/main/resources/assets/hbm/textures/items/gun_stinger.png b/src/main/resources/assets/hbm/textures/items/gun_stinger.png deleted file mode 100644 index 4e89b8215beaa4cfe359c738cfd8ca386cd5ed2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 315 zcmV-B0mS}^P)Px#^+`lQR5(v#WPk!QGqeAvPMu6eG$Ixaqb)&QD ziGPjL5DW>BA&2{pfyLK#^8N3Bse{)gc%9eS*!X|z)6HO);PMVm13;SV>+2!WoM!SL zmv@Lxy12YUv;oL2LG}(w2B3Q-K11RH>WdL&42LLFWfU?6-sI~wA N002ovPDHLkV1mvyhKB$E diff --git a/src/main/resources/assets/hbm/textures/items/gun_super_shotgun.png b/src/main/resources/assets/hbm/textures/items/gun_super_shotgun.png deleted file mode 100644 index c8c8f39cb7c4375bfab7500791eebfdc62da9b71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucLCF%=h?3y^w370~qEv>0#LT=By}Z;C1rt33 zJwt=FTwDi$iY9rwIEGmGFP-4X*Py_|QrXeT>3;6d!P)Nr{|l#ha^o-scFnGH9xvXw&gSC)@{56R<)wc^XJM+!Lf1=%PyJI+G3ICy51`xa zx_-YethE?pXfzrJi-=Kr!-+6?&cftGQG~S?Yb~e;w`;lH`o&;4 z5d<}~)bGTu+7oz{e^|exw(pt{;jl{bq7B!wVHLeEV4JkI*O{xwR7S)76(OGM?wAzcLU$} W(|A!waJtF>0000io(c+Q+!&K zFZ_rk%9QrZ)9k>1sO!4))cf)M!F!)V2#+Dz*`xP9Ip=WBG0!uq%Can{-a`X`zVEXT z0^>LWP}lX(8UVCyn*fTUpsFeWhG97PF9A;>rze=~ZVRvLiio_8dkX-FF%o0MKnAgP zw}7T;QdyR4+jfB1u$LQH7+{*F3|^a9(6%^jAR@cb!tmNeRZ-R5djN;(iSLkh+yp%aT00+ncvg8CEdI&bo zkcr6?gOym`%z*x?U?+;Gc;hdBPwzd$f2e7iu=efU?}OGlc<)!6WT~UpIw+-3O7XUP zVi*QKyEgeYN&wLJedfLAlx+d1>w0|!(RuU0IF1-&0NA%(vQjdZ=<#q207X$yRTTj5 z$HNb1HUV(yEwC{rO0sAGFijKAImAdzB;BIH{qsvG%MxpCWFo`PZXhtgNBf$=_a*|$ z7DXOV;Ccf?e+z*IdGT}XJkgzsY=J@5C$0G~p zJ@;^Vv5T+a`RAW^*%(S=*&9?mHM*D@w&n7F-fsSnt*ENW>wVbgO*$PXZu8$|V%YP& z;(g!*r;^>#4xyon=ZohQvv;sn&upB<_-kMPgQ=ZTrrno$T~cI2jQ1FAyq2^!Hl3eA xkn>*kBa1rYe8uwg^%GXlYx}PL_jJutdF`Vq8r(0gRsj9W;OXk;vd$@?2>|oOc%=XU diff --git a/src/main/resources/assets/hbm/textures/items/gun_xvl1456.png b/src/main/resources/assets/hbm/textures/items/gun_xvl1456.png deleted file mode 100644 index 6507efa708f5058739e9dafcea4294f852e7852c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJca`vY<7dnkbVF3&PyyS{wgm+VZFA0SXS%%Hd+q@f zyB9pPk#veQf1ssk^x%~o4966TC!No4yY_k2`O@1?$mW`54ix{Pk zEthNwwAitssfj6K^Nblc{=ayUu|U9y&sEWm$B3onBJaTf4~}LYPY;g<>84P@k3a00 Z8N^x-mviT{2m?LC;OXk;vd$@?2>^g5b#nj! diff --git a/src/main/resources/assets/hbm/textures/items/gun_xvl1456_ammo.png b/src/main/resources/assets/hbm/textures/items/gun_xvl1456_ammo.png deleted file mode 100644 index 77ed27a29e077bc22eb13841aa872a7a1b372f7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL5ULAh?3y^w370~qEv>0#LT=By}Z;C1rt33 zJv8BcI2AUXx;2k2x^dNt18ZL}R_)2OKdC-{ z%7nWidvuKdn4if@`zC(*ndCCxAg_&ciVs)czj#KWA!@ZF%ekF;Z_lr`eK-BurcMT ZE_x&DZI7M&LZDw5JYD@<);T3K0RRpVe6j!l diff --git a/src/main/resources/assets/hbm/textures/items/gun_zomg.png b/src/main/resources/assets/hbm/textures/items/gun_zomg.png deleted file mode 100644 index b0e443d764a6348dae172ae8209ebe3c9f76e2d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C|TkfQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXK1jNi|YVT(PmE< z#}Etur4tOr4lD3DM@nqoxM4$z2DkeA#v&QkprD4;%BHmkFgKi zuvpxn`u$Uz^SAmAiRNBRn-H|>@%9(*QgRngOq1}^EcKSDIuov#+t}g2vF`cDP!D~D zL*j=7nvO_Ra~$|rXxla+E+b8G#%Fb@%M3FT;#zBxq$D`1+CIdlDK29)5w?>%*!iVS zzwCmKg?vl-g*EFfMb|9|j4u{=dm$~stls?&_c#0IIWnzZ^?=T2@O1TaS?83{1OQ<0 Ba325w From 3bf526419ebf56dc13292ece77a79080c146e055 Mon Sep 17 00:00:00 2001 From: KellenHurrey <85083021+KellenHurrey@users.noreply.github.com> Date: Tue, 4 Mar 2025 17:23:43 -0800 Subject: [PATCH 60/64] Make RBMK Rods actually be a SimpleComponent --- .../com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index adda7c8d5..14bff0eb1 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -29,6 +29,7 @@ import io.netty.buffer.ByteBuf; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; +import li.cil.oc.api.network.SimpleComponent; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; @@ -42,7 +43,7 @@ import java.util.ArrayList; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, IInfoProviderEC, CompatHandler.OCComponent { +public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, IInfoProviderEC, SimpleComponent, CompatHandler.OCComponent { // New system!! // Used for receiving flux (calculating outbound flux/burning rods) From e21fe3eeccf8c8fc92919ae16ed53a9f8e387c0f Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 5 Mar 2025 16:57:50 +0100 Subject: [PATCH 61/64] config crap --- README.md | 1 + changelog | 5 +- .../java/com/hbm/config/ClientConfig.java | 13 ++--- .../java/com/hbm/config/GeneralConfig.java | 6 --- .../java/com/hbm/config/RunningConfig.java | 6 +++ .../java/com/hbm/config/ServerConfig.java | 12 ++--- .../hbm/entity/mob/EntityCreeperTainted.java | 6 +-- .../recipes/loader/SerializableRecipe.java | 4 +- .../hbm/items/weapon/sedna/ItemGunBaseNT.java | 3 ++ .../java/com/hbm/main/CraftingManager.java | 48 ++++++++++-------- src/main/java/com/hbm/potion/HbmPotion.java | 4 +- .../hbm/textures/items/syringe_taint.png | Bin 294 -> 354 bytes 12 files changed, 56 insertions(+), 52 deletions(-) diff --git a/README.md b/README.md index 68e85a68e..f86803200 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ * NTM Reloaded: https://github.com/TheOriginalGolem/Hbm-s-Nuclear-Tech-GIT/releases * NTM Extended Edition (Alcater): https://github.com/Alcatergit/Hbm-s-Nuclear-Tech-GIT/releases +* NTM WarFactory: https://github.com/MisterNorwood/Hbm-s-Nuclear-Tech-GIT/releases For 1.18, try Martin's remake: https://codeberg.org/MartinTheDragon/Nuclear-Tech-Mod-Remake/releases diff --git a/changelog b/changelog index 3122e1cbf..087101ec0 100644 --- a/changelog +++ b/changelog @@ -3,6 +3,7 @@ * Functions like `/ntmclient` but for common settings * Can toggle `DAMAGE_COMPATIBILITY_MODE`, off by default, enables a more compatible (but slightly jankier) version of the bullet damage code * `MINE__DAMAGE` can be used to adjust landmine damage + * `TAINT_TRAILS` now replaces the hardcore taint config option, making taint blocks more potent and the potion effect trail taint blocks ## Changed * Fat mines now use the standardized mini nuke code @@ -17,8 +18,10 @@ * Taint has a 25% chance of splashing down when replacing a block with no supports, causing structures to collapse and taint to spread faster * Similar to soil sand, entities will sink in taint and get slowed down * The sludge consumeth +* `enableGuns` config option now applies to SEDNA system guns, simply canceling all gun-related keybinds ## Fixed * Fixed animation error on the MAS-36 * Fixed drone docks, requester and provider crates not dropping their contents when broken -* Fixed all missing texture errors that appear in the startup log \ No newline at end of file +* Fixed all missing texture errors that appear in the startup log +* Potentially fixed a crash with mekanism during the recipe change phase \ No newline at end of file diff --git a/src/main/java/com/hbm/config/ClientConfig.java b/src/main/java/com/hbm/config/ClientConfig.java index 2f5cec902..e5905a135 100644 --- a/src/main/java/com/hbm/config/ClientConfig.java +++ b/src/main/java/com/hbm/config/ClientConfig.java @@ -1,15 +1,13 @@ package com.hbm.config; import com.google.gson.Gson; -import com.hbm.config.RunningConfig.ConfigWrapper; -import com.hbm.main.MainRegistry; import com.hbm.util.Compat; import java.io.File; import java.util.HashMap; // https://youtube.com/shorts/XTHZWqZt_AI -public class ClientConfig { +public class ClientConfig extends RunningConfig { public static final Gson gson = new Gson(); public static HashMap configMap = new HashMap(); @@ -56,23 +54,20 @@ public class ClientConfig { /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ public static void initConfig() { initDefaults(); - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + File config = getConfig("hbmClient.json"); if(config.exists()) readConfig(config); refresh(); } /** Writes over the config file using the running config. */ public static void refresh() { - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + File config = getConfig("hbmClient.json"); writeConfig(config); } /** Writes over the running config using the config file. */ public static void reload() { - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmClient.json"); + File config = getConfig("hbmClient.json"); if(config.exists()) readConfig(config); } diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 916bd9e9c..039384940 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -23,13 +23,11 @@ public class GeneralConfig { public static boolean enableVaults = true; public static boolean enableCataclysm = false; public static boolean enableExtendedLogging = false; - public static boolean enableHardcoreTaint = false; public static boolean enableGuns = true; public static boolean enableVirus = true; public static boolean enableCrosshairs = true; public static boolean enableReflectorCompat = false; public static boolean enableRenderDistCheck = true; - public static boolean enableReEval = true; public static boolean enableSilentCompStackErrors = true; public static boolean enableSkyboxes = true; public static boolean enableImpactWorldProvider = true; @@ -42,7 +40,6 @@ public class GeneralConfig { public static boolean enableSoundExtension = true; public static boolean enableMekanismChanges = true; public static int normalSoundChannels = 200; - public static int hintPos = 0; public static boolean enableExpensiveMode = false; @@ -100,15 +97,12 @@ public class GeneralConfig { enableVaults = config.get(CATEGORY_GENERAL, "1.15_enableVaultSpawn", true, "Allows locked safes to spawn").getBoolean(true); enableCataclysm = config.get(CATEGORY_GENERAL, "1.17_enableCataclysm", false, "Causes satellites to fall whenever a mob dies").getBoolean(false); enableExtendedLogging = config.get(CATEGORY_GENERAL, "1.18_enableExtendedLogging", false, "Logs uses of the detonator, nuclear explosions, missile launches, grenades, etc.").getBoolean(false); - enableHardcoreTaint = config.get(CATEGORY_GENERAL, "1.19_enableHardcoreTaint", false, "Allows tainted mobs to spread taint").getBoolean(false); enableGuns = config.get(CATEGORY_GENERAL, "1.20_enableGuns", true, "Prevents new system guns to be fired").getBoolean(true); enableVirus = config.get(CATEGORY_GENERAL, "1.21_enableVirus", false, "Allows virus blocks to spread").getBoolean(false); enableCrosshairs = config.get(CATEGORY_GENERAL, "1.22_enableCrosshairs", true, "Shows custom crosshairs when an NTM gun is being held").getBoolean(true); enableReflectorCompat = config.get(CATEGORY_GENERAL, "1.24_enableReflectorCompat", false, "Enable old reflector oredict name (\"plateDenseLead\") instead of new \"plateTungCar\"").getBoolean(false); enableRenderDistCheck = config.get(CATEGORY_GENERAL, "1.25_enableRenderDistCheck", true, "Check invalid render distances (over 16, without OptiFine) and fix it").getBoolean(true); - enableReEval = config.get(CATEGORY_GENERAL, "1.27_enableReEval", true, "Allows re-evaluating power networks on link remove instead of destroying and recreating").getBoolean(true); enableSilentCompStackErrors = config.get(CATEGORY_GENERAL, "1.28_enableSilentCompStackErrors", false, "Enabling this will disable log spam created by unregistered items in ComparableStack instances.").getBoolean(false); - hintPos = CommonConfig.createConfigInt(config, CATEGORY_GENERAL, "1.29_hudOverlayPosition", "0: Top left\n1: Top right\n2: Center right\n3: Center Left", 0); enableSkyboxes = config.get(CATEGORY_GENERAL, "1.31_enableSkyboxes", true, "If enabled, will try to use NTM's custom skyboxes.").getBoolean(true); enableImpactWorldProvider = config.get(CATEGORY_GENERAL, "1.32_enableImpactWorldProvider", true, "If enabled, registers custom world provider which modifies lighting and sky colors for post impact effects.").getBoolean(true); enableStatReRegistering = config.get(CATEGORY_GENERAL, "1.33_enableStatReRegistering", true, "If enabled, will re-register item crafting/breaking/usage stats in order to fix a forge bug where modded items just won't show up.").getBoolean(true); diff --git a/src/main/java/com/hbm/config/RunningConfig.java b/src/main/java/com/hbm/config/RunningConfig.java index 66ebe9193..453a123b2 100644 --- a/src/main/java/com/hbm/config/RunningConfig.java +++ b/src/main/java/com/hbm/config/RunningConfig.java @@ -14,10 +14,16 @@ import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.main.MainRegistry; public class RunningConfig { public static final Gson gson = new Gson(); + + public static File getConfig(String name) { + File folder = MainRegistry.configHbmDir; + return new File(folder.getAbsolutePath() + File.separatorChar + name); + } public static void readConfig(File config, HashMap configMap) { diff --git a/src/main/java/com/hbm/config/ServerConfig.java b/src/main/java/com/hbm/config/ServerConfig.java index fd9586113..0ae3d11a2 100644 --- a/src/main/java/com/hbm/config/ServerConfig.java +++ b/src/main/java/com/hbm/config/ServerConfig.java @@ -4,7 +4,6 @@ import java.io.File; import java.util.HashMap; import com.google.gson.Gson; -import com.hbm.main.MainRegistry; public class ServerConfig extends RunningConfig { @@ -16,6 +15,7 @@ public class ServerConfig extends RunningConfig { public static ConfigWrapper MINE_HE_DAMAGE = new ConfigWrapper(35F); public static ConfigWrapper MINE_SHRAP_DAMAGE = new ConfigWrapper(7.5F); public static ConfigWrapper MINE_NUKE_DAMAGE = new ConfigWrapper(100F); + public static ConfigWrapper TAINT_TRAILS = new ConfigWrapper(false); private static void initDefaults() { configMap.put("DAMAGE_COMPATIBILITY_MODE", DAMAGE_COMPATIBILITY_MODE); @@ -23,28 +23,26 @@ public class ServerConfig extends RunningConfig { configMap.put("MINE_HE_DAMAGE", MINE_HE_DAMAGE); configMap.put("MINE_SHRAP_DAMAGE", MINE_SHRAP_DAMAGE); configMap.put("MINE_NUKE_DAMAGE", MINE_NUKE_DAMAGE); + configMap.put("TAINT_TRAILS", TAINT_TRAILS); } /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ public static void initConfig() { initDefaults(); - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmServer.json"); + File config = getConfig("hbmServer.json"); if(config.exists()) readConfig(config); refresh(); } /** Writes over the config file using the running config. */ public static void refresh() { - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmServer.json"); + File config = getConfig("hbmServer.json"); writeConfig(config); } /** Writes over the running config using the config file. */ public static void reload() { - File folder = MainRegistry.configHbmDir; - File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmServer.json"); + File config = getConfig("hbmServer.json"); if(config.exists()) readConfig(config); } diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java index 1997caa33..cbb20b671 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java @@ -1,7 +1,7 @@ package com.hbm.entity.mob; import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; +import com.hbm.config.ServerConfig; import api.hbm.entity.IRadiationImmune; import net.minecraft.block.Block; @@ -57,7 +57,7 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm int c = rand.nextInt(15) + (int) posZ - 7; Block block = worldObj.getBlock(a, b, c); if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { - if(!GeneralConfig.enableHardcoreTaint) { + if(!ServerConfig.TAINT_TRAILS.get()) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2); } else { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3), 2); @@ -73,7 +73,7 @@ public class EntityCreeperTainted extends EntityCreeper implements IRadiationImm int c = rand.nextInt(7) + (int) posZ - 3; Block block = worldObj.getBlock(a, b, c); if(block.isNormalCube() && !block.isAir(worldObj, a, b, c)) { - if(!GeneralConfig.enableHardcoreTaint) { + if(!ServerConfig.TAINT_TRAILS.get()) { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(6) + 10, 2); } else { worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 4, 2); diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 7b99b1b9f..02db7b389 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -33,7 +33,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; //the anti-spaghetti. this class provides so much functionality and saves so much time, i just love you, SerializableRecipe <3 -public abstract class SerializableRecipe { +public abstract class SerializableRecipe { //TODO: #1969 public static final Gson gson = new Gson(); public static List recipeHandlers = new ArrayList(); @@ -141,7 +141,7 @@ public abstract class SerializableRecipe { public abstract void writeRecipe(Object recipe, JsonWriter writer) throws IOException; /** Registers the default recipes */ public abstract void registerDefaults(); - /** Deletes all existing recipes, currenly unused */ + /** Deletes all existing recipes, currently unused */ public abstract void deleteRecipes(); /** A routine called after registering all recipes, whether it's a template or not. Good for IMC functionality. */ public void registerPost() { } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index ce88b06df..96a9b099f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -5,6 +5,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiConsumer; +import com.hbm.config.GeneralConfig; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.interfaces.IItemHUD; import com.hbm.items.IEquipReceiver; @@ -169,6 +170,8 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei } public void handleKeybind(EntityLivingBase entity, IInventory inventory, ItemStack stack, EnumKeybind keybind, boolean newState) { + if(!GeneralConfig.enableGuns) return; + int configs = this.configs_DNA.length; for(int i = 0; i < configs; i++) { diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index dd130b852..240886151 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -1175,30 +1175,34 @@ public class CraftingManager { List toDestroy = new ArrayList(); - for(Object o : net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList()) { - - if(o instanceof IRecipe) { - IRecipe rec = (IRecipe)o; - ItemStack stack = rec.getRecipeOutput(); - - for(ItemStack target : targets) { - if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); + List recipeList = net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList(); + + synchronized(recipeList) { //this is how threading works. i think. + for(Object o : recipeList) { + + if(o instanceof IRecipe) { + IRecipe rec = (IRecipe)o; + ItemStack stack = rec.getRecipeOutput(); + + for(ItemStack target : targets) { + if(stack != null && stack.getItem() == target.getItem() && stack.getItemDamage() == target.getItemDamage()) toDestroy.add(rec); + } } } - } - - if(toDestroy.size() > 0) { - net.minecraft.item.crafting.CraftingManager.getInstance().getRecipeList().removeAll(toDestroy); - } - - if(Loader.isModLoaded("Mekanism")) { - Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); - if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); - } - - if(Loader.isModLoaded("MekanismGenerators")) { - Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); - if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); + + if(toDestroy.size() > 0) { + recipeList.removeAll(toDestroy); + } + + if(Loader.isModLoaded("Mekanism")) { + Item disassembler = (Item) Item.itemRegistry.getObject("Mekanism:AtomicDisassembler"); + if(disassembler != null) addRecipeAuto(new ItemStack(disassembler, 1), "GAG", "EIE", " I ", 'G', GOLD.plateCast(), 'A', "alloyUltimate", 'E', "battery", 'I', "ingotRefinedObsidian"); + } + + if(Loader.isModLoaded("MekanismGenerators")) { + Block generator = (Block) Block.blockRegistry.getObject("MekanismGenerators:Generator"); + if(generator != null) addRecipeAuto(new ItemStack(generator, 1, 6), " T ", "TAT", "BCB", 'T', TI.plateCast(), 'A', "alloyAdvanced", 'B', "battery", 'C', ANY_PLASTIC.ingot()); + } } } } diff --git a/src/main/java/com/hbm/potion/HbmPotion.java b/src/main/java/com/hbm/potion/HbmPotion.java index e27806e1a..c1189b8b6 100644 --- a/src/main/java/com/hbm/potion/HbmPotion.java +++ b/src/main/java/com/hbm/potion/HbmPotion.java @@ -3,8 +3,8 @@ package com.hbm.potion; import java.lang.reflect.Field; import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; import com.hbm.config.PotionConfig; +import com.hbm.config.ServerConfig; import com.hbm.entity.mob.EntityTaintCrab; import com.hbm.entity.mob.EntityCreeperTainted; import com.hbm.explosion.ExplosionLarge; @@ -107,7 +107,7 @@ public class HbmPotion extends Potion { if(!(entity instanceof EntityCreeperTainted) && !(entity instanceof EntityTaintCrab) && entity.worldObj.rand.nextInt(40) == 0) entity.attackEntityFrom(ModDamageSource.taint, (level + 1)); - if(GeneralConfig.enableHardcoreTaint && !entity.worldObj.isRemote) { + if(ServerConfig.TAINT_TRAILS.get() && !entity.worldObj.isRemote) { int x = (int) Math.floor(entity.posX); int y = (int) Math.floor(entity.posY); diff --git a/src/main/resources/assets/hbm/textures/items/syringe_taint.png b/src/main/resources/assets/hbm/textures/items/syringe_taint.png index 51f837e60fc5d17928427d8c5ea96232e302b7df..bfa6a581a3605c0337e5b27be433f59fb7a48227 100644 GIT binary patch delta 312 zcmV-80muHP0^$OYGk*aYNkl1u24ObLr#q}*c?7_4ICQ(0N~wc~K@f-{ zK{Y!(KfNG;*F>{u%-9~Sh~pSZO3i`R+U<(8)-DJFkqbViZ-0EJ23!Ba&Zjt;GPoX~ z+8wqF!EOHmuj=KZg9&ExojC^K41Q&abSaPbH*9K6n(~-Vy~}C)3}XyRDU31uf|K(u zlgXT>@MtWTuv&wJ&vgZ}GW74RP)g-1WVscFSQKbkhNikk~y&l$DthJ0rBT*>G2*c3%zE2#-WHtNr&-ejYx^>Aq!b~mz0000< KMNUMnLSTX)_LXh` delta 251 zcmV*@h;)qG(UGDESSJ#j4PYu4 z(NqJ0ECZC1BQb4SXw$jj2;AFbiG6T{xe`Bc4d#XBu=tfQ#K;!AIBhe;ag3&E{7lmn zL Date: Wed, 5 Mar 2025 21:58:20 +0100 Subject: [PATCH 62/64] alright i'm tired --- .../api/hbm/energymk2/IEnergyProviderMK2.java | 4 ++-- .../api/hbm/energymk2/IEnergyReceiverMK2.java | 4 ++-- .../java/api/hbm/energymk2/Nodespace.java | 4 ++-- .../java/api/hbm/fluidmk2/FluidNetMK2.java | 11 +++++++++ src/main/java/api/hbm/fluidmk2/FluidNode.java | 19 +++++++++++++++ .../hbm/fluidmk2/IFluidConnectorBlockMK2.java | 12 ++++++++++ .../api/hbm/fluidmk2/IFluidConnectorMK2.java | 17 ++++++++++++++ .../java/api/hbm/fluidmk2/IFluidPipeMK2.java | 23 +++++++++++++++++++ .../api/hbm/fluidmk2/IFluidProviderMK2.java | 11 +++++++++ .../api/hbm/fluidmk2/IFluidReceiverMK2.java | 12 ++++++++++ .../java/api/hbm/fluidmk2/package-info.java | 16 +++++++++++++ .../com/hbm/inventory/fluid/FluidType.java | 6 +++++ src/main/java/com/hbm/uninos/GenNode.java | 1 + .../networkproviders/FluidNetProvider.java | 13 +++++++++++ ...werProvider.java => PowerNetProvider.java} | 2 +- 15 files changed, 148 insertions(+), 7 deletions(-) create mode 100644 src/main/java/api/hbm/fluidmk2/FluidNetMK2.java create mode 100644 src/main/java/api/hbm/fluidmk2/FluidNode.java create mode 100644 src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java create mode 100644 src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java create mode 100644 src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java create mode 100644 src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java create mode 100644 src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java create mode 100644 src/main/java/api/hbm/fluidmk2/package-info.java create mode 100644 src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java rename src/main/java/com/hbm/uninos/networkproviders/{PowerProvider.java => PowerNetProvider.java} (73%) diff --git a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java index e933cdf22..291f7954c 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyProviderMK2.java @@ -3,7 +3,7 @@ package api.hbm.energymk2; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.uninos.IGenProvider; -import com.hbm.uninos.networkproviders.PowerProvider; +import com.hbm.uninos.networkproviders.PowerNetProvider; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -14,7 +14,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; /** If it sends energy, use this */ -public interface IEnergyProviderMK2 extends IEnergyHandlerMK2, IGenProvider { +public interface IEnergyProviderMK2 extends IEnergyHandlerMK2, IGenProvider { /** Uses up available power, default implementation has no sanity checking, make sure that the requested power is lequal to the current power */ public default void usePower(long power) { diff --git a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java index 47fb07a89..ec50abd98 100644 --- a/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java +++ b/src/main/java/api/hbm/energymk2/IEnergyReceiverMK2.java @@ -4,7 +4,7 @@ import com.hbm.interfaces.NotableComments; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.uninos.IGenReceiver; -import com.hbm.uninos.networkproviders.PowerProvider; +import com.hbm.uninos.networkproviders.PowerNetProvider; import com.hbm.util.Compat; import api.hbm.energymk2.Nodespace.PowerNode; @@ -16,7 +16,7 @@ import net.minecraftforge.common.util.ForgeDirection; /** If it receives energy, use this */ @NotableComments -public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2, IGenReceiver { +public interface IEnergyReceiverMK2 extends IEnergyHandlerMK2, IGenReceiver { public default long transferPower(long power) { if(power + this.getPower() <= this.getMaxPower()) { diff --git a/src/main/java/api/hbm/energymk2/Nodespace.java b/src/main/java/api/hbm/energymk2/Nodespace.java index 8fadb9745..114c4dd75 100644 --- a/src/main/java/api/hbm/energymk2/Nodespace.java +++ b/src/main/java/api/hbm/energymk2/Nodespace.java @@ -3,7 +3,7 @@ package api.hbm.energymk2; import com.hbm.interfaces.NotableComments; import com.hbm.uninos.GenNode; import com.hbm.uninos.UniNodespace; -import com.hbm.uninos.networkproviders.PowerProvider; +import com.hbm.uninos.networkproviders.PowerNetProvider; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -18,7 +18,7 @@ import net.minecraft.world.World; */ public class Nodespace { - public static final PowerProvider THE_POWER_PROVIDER = new PowerProvider(); + public static final PowerNetProvider THE_POWER_PROVIDER = new PowerNetProvider(); @Deprecated public static PowerNode getNode(World world, int x, int y, int z) { return (PowerNode) UniNodespace.getNode(world, x, y, z, THE_POWER_PROVIDER); diff --git a/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java b/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java new file mode 100644 index 000000000..14052452d --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/FluidNetMK2.java @@ -0,0 +1,11 @@ +package api.hbm.fluidmk2; + +import com.hbm.uninos.NodeNet; + +public class FluidNetMK2 extends NodeNet { + + @Override + public void update() { + + } +} diff --git a/src/main/java/api/hbm/fluidmk2/FluidNode.java b/src/main/java/api/hbm/fluidmk2/FluidNode.java new file mode 100644 index 000000000..a4c0c3141 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/FluidNode.java @@ -0,0 +1,19 @@ +package api.hbm.fluidmk2; + +import com.hbm.uninos.GenNode; +import com.hbm.uninos.INetworkProvider; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +public class FluidNode extends GenNode { + + public FluidNode(INetworkProvider provider, BlockPos... positions) { + super(provider, positions); + } + + @Override + public FluidNode setConnections(DirPos... connections) { + super.setConnections(connections); + return this; + } +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java new file mode 100644 index 000000000..f7a1a47a7 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidConnectorBlockMK2.java @@ -0,0 +1,12 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidConnectorBlockMK2 { + + /** dir is the face that is connected to, the direction going outwards from the block */ + public boolean canConnect(FluidType type, IBlockAccess world, int x, int y, int z, ForgeDirection dir); +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java new file mode 100644 index 000000000..dc0a3dbf3 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidConnectorMK2.java @@ -0,0 +1,17 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; + +import net.minecraftforge.common.util.ForgeDirection; + +public interface IFluidConnectorMK2 { + + /** + * Whether the given side can be connected to + * @param dir + * @return + */ + public default boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN; + } +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java new file mode 100644 index 000000000..d95fb2998 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidPipeMK2.java @@ -0,0 +1,23 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import net.minecraft.tileentity.TileEntity; + +public interface IFluidPipeMK2 { + + public default FluidNode createNode(FluidType type) { + TileEntity tile = (TileEntity) this; + return new FluidNode(type.getNetworkProvider(), new BlockPos(tile.xCoord, tile.yCoord, tile.zCoord)).setConnections( + new DirPos(tile.xCoord + 1, tile.yCoord, tile.zCoord, Library.POS_X), + new DirPos(tile.xCoord - 1, tile.yCoord, tile.zCoord, Library.NEG_X), + new DirPos(tile.xCoord, tile.yCoord + 1, tile.zCoord, Library.POS_Y), + new DirPos(tile.xCoord, tile.yCoord - 1, tile.zCoord, Library.NEG_Y), + new DirPos(tile.xCoord, tile.yCoord, tile.zCoord + 1, Library.POS_Z), + new DirPos(tile.xCoord, tile.yCoord, tile.zCoord - 1, Library.NEG_Z) + ); + } +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java new file mode 100644 index 000000000..c5316a0be --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidProviderMK2.java @@ -0,0 +1,11 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.uninos.IGenProvider; +import com.hbm.uninos.networkproviders.FluidNetProvider; + +public interface IFluidProviderMK2 extends IGenProvider { + + public void useUpFluid(FluidType type, int pressure, long amount); + public long getProviderSpeed(FluidType type, int pressure); +} diff --git a/src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java b/src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java new file mode 100644 index 000000000..f20fba01e --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/IFluidReceiverMK2.java @@ -0,0 +1,12 @@ +package api.hbm.fluidmk2; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.uninos.IGenReceiver; +import com.hbm.uninos.networkproviders.FluidNetProvider; + +public interface IFluidReceiverMK2 extends IGenReceiver { + + /** Sends fluid of the desired type and pressure to the receiver, returns the remainder */ + public long transferFluid(FluidType type, int pressure, long amount); + public long getReceiverSpeed(FluidType type, int pressure); +} diff --git a/src/main/java/api/hbm/fluidmk2/package-info.java b/src/main/java/api/hbm/fluidmk2/package-info.java new file mode 100644 index 000000000..b948336d8 --- /dev/null +++ b/src/main/java/api/hbm/fluidmk2/package-info.java @@ -0,0 +1,16 @@ +/** + * + */ +/** + * @author hbm + * + */ +package api.hbm.fluidmk2; + +/* + +It's rather shrimple: the shiny new energy system using universal nodespace, but hit with a hammer until it works with fluids. +Has a few extra bits and pieces for handling, but the concept is basically the same. +Sounds good? + +*/ \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index f08ae979a..a0175fbd9 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -13,8 +13,10 @@ import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.RefStrings; import com.hbm.render.util.EnumSymbol; +import com.hbm.uninos.INetworkProvider; import com.hbm.util.I18nUtil; +import api.hbm.fluidmk2.FluidNetMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.tileentity.TileEntity; @@ -252,4 +254,8 @@ public class FluidType { public String name() { return this.stringId; } + + public INetworkProvider getNetworkProvider() { + return null; //TBI + } } diff --git a/src/main/java/com/hbm/uninos/GenNode.java b/src/main/java/com/hbm/uninos/GenNode.java index d65f163c1..3e4b0925b 100644 --- a/src/main/java/com/hbm/uninos/GenNode.java +++ b/src/main/java/com/hbm/uninos/GenNode.java @@ -10,6 +10,7 @@ public class GenNode { public N net; public boolean expired = false; public boolean recentlyChanged = true; + /** Used for distinguishing the node type when saving it to UNINOS' node map */ public INetworkProvider networkProvider; public GenNode(INetworkProvider provider, BlockPos... positions) { diff --git a/src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java b/src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java new file mode 100644 index 000000000..95fa480a8 --- /dev/null +++ b/src/main/java/com/hbm/uninos/networkproviders/FluidNetProvider.java @@ -0,0 +1,13 @@ +package com.hbm.uninos.networkproviders; + +import com.hbm.uninos.INetworkProvider; + +import api.hbm.fluidmk2.FluidNetMK2; + +public class FluidNetProvider implements INetworkProvider { + + @Override + public FluidNetMK2 provideNetwork() { + return new FluidNetMK2(); + } +} diff --git a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java b/src/main/java/com/hbm/uninos/networkproviders/PowerNetProvider.java similarity index 73% rename from src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java rename to src/main/java/com/hbm/uninos/networkproviders/PowerNetProvider.java index 0c1218991..da4502e24 100644 --- a/src/main/java/com/hbm/uninos/networkproviders/PowerProvider.java +++ b/src/main/java/com/hbm/uninos/networkproviders/PowerNetProvider.java @@ -4,7 +4,7 @@ import com.hbm.uninos.INetworkProvider; import api.hbm.energymk2.PowerNetMK2; -public class PowerProvider implements INetworkProvider { +public class PowerNetProvider implements INetworkProvider { @Override public PowerNetMK2 provideNetwork() { From 5d24e76601f2c6da587bca3fdb7defad466ac208 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 6 Mar 2025 14:25:30 +0100 Subject: [PATCH 63/64] compat for (hopefully) robust external recipe registering --- changelog | 2 + gradle.properties | 2 +- .../hbm/recipe/IRecipeRegisterListener.java | 13 + .../java/api/hbm/recipe/package-info.java | 17 ++ .../inventory/recipes/ArcWelderRecipes.java | 2 + .../recipes/BlastFurnaceRecipes.java | 2 +- .../hbm/inventory/recipes/BreederRecipes.java | 2 +- .../inventory/recipes/CentrifugeRecipes.java | 2 +- .../inventory/recipes/ChemplantRecipes.java | 2 +- .../hbm/inventory/recipes/CokerRecipes.java | 4 +- .../inventory/recipes/CombinationRecipes.java | 2 +- .../inventory/recipes/CrackingRecipes.java | 2 +- .../recipes/CrystallizerRecipes.java | 6 + .../inventory/recipes/FractionRecipes.java | 6 +- .../hbm/inventory/recipes/HadronRecipes.java | 2 +- .../recipes/HydrotreatingRecipes.java | 2 +- .../recipes/LiquefactionRecipes.java | 2 +- .../inventory/recipes/PyroOvenRecipes.java | 2 +- .../inventory/recipes/ReformingRecipes.java | 2 +- .../recipes/SolidificationRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 4 +- .../recipes/loader/SerializableRecipe.java | 8 +- .../java/com/hbm/util/CompatExternal.java | 12 + .../com/hbm/util/CompatRecipeRegistry.java | 264 ++++++++++++++++++ 24 files changed, 343 insertions(+), 21 deletions(-) create mode 100644 src/main/java/api/hbm/recipe/IRecipeRegisterListener.java create mode 100644 src/main/java/api/hbm/recipe/package-info.java create mode 100644 src/main/java/com/hbm/util/CompatRecipeRegistry.java diff --git a/changelog b/changelog index 087101ec0..8778e076f 100644 --- a/changelog +++ b/changelog @@ -19,6 +19,8 @@ * Similar to soil sand, entities will sink in taint and get slowed down * The sludge consumeth * `enableGuns` config option now applies to SEDNA system guns, simply canceling all gun-related keybinds +* Cinnabar dust, if registered by another mod, can now be acidized into cinnabar using hydrogen peroxide +* Copper wires, like AA and gold, can now be welded into dense wires ## Fixed * Fixed animation error on the MAS-36 diff --git a/gradle.properties b/gradle.properties index 68fe9efe2..57936ce9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,6 +12,7 @@ credits=HbMinecraft,\ \ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, better particle diodes),\ \ Pheo (textures, various machines, models, weapons),\ \ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide, new cyclotron, weapon animations),\ + \ UFFR (RTG pellets, guns, casings, euphemium capacitor, nucleartech.wiki),\ \ LePeep (coilgun model, BDCL QC),\ \ Adam29 (liquid petroleum, ethanol, electric furnace),\ \ Pvndols (thorium fuel recipe, gas turbine),\ @@ -33,7 +34,6 @@ credits=HbMinecraft,\ \ Maksymisio (polish localization)\ \ el3ctro4ndre (italian localization),\ \ Pu-238 (Tom impact effects),\ - \ UFFR (RTG pellets, guns, casings, euphemium capacitor),\ \ Frooz (gun models),\ \ VT-6/24 (models, textures),\ \ Nos (models),\ diff --git a/src/main/java/api/hbm/recipe/IRecipeRegisterListener.java b/src/main/java/api/hbm/recipe/IRecipeRegisterListener.java new file mode 100644 index 000000000..14832ec3a --- /dev/null +++ b/src/main/java/api/hbm/recipe/IRecipeRegisterListener.java @@ -0,0 +1,13 @@ +package api.hbm.recipe; + +public interface IRecipeRegisterListener { + + /** + * Called during SerializableRecipe.initialize(), after the defaults are loaded but before the template is written. + * Due to the way the recipes are handled, calling it once is not enough, it has to be called once for every SerializableRecipe + * instance handled, therefore the load operation passes the type name of the recipe, so that the listeners know what type of recipe + * to register at that point. Note that the actual SerializableRecipe instance is irrelevant, since recipes are static anyway, + * and direct tampering with SerializableRecipes is not recommended. + */ + public void onRecipeLoad(String recipeClassName); +} diff --git a/src/main/java/api/hbm/recipe/package-info.java b/src/main/java/api/hbm/recipe/package-info.java new file mode 100644 index 000000000..53e838a43 --- /dev/null +++ b/src/main/java/api/hbm/recipe/package-info.java @@ -0,0 +1,17 @@ +package api.hbm.recipe; + +/* + +Quick guide on how to make robust and safe recipe integration: +* Implement IRecipeRegisterListener, the resulting class will handle all recipes, and the onRecipeLoad method is called every time the SerializableRecipe system updates +* Register your IRecipeRegisterListener using CompatExternal.registerRecipeRegisterListener, this has to happen before the SerializableRecipe initializes, doing this during PreInit should be safe +* In your IRecipeRegisterListener, check the supplied recipe type string (which will be the class name of the SerializableRecipe currently being registered) and register your custom recipes accordingly using CompatRecipeRegistry + +Explanation: +* Order of operations is important for the recipes to work, if recipes are loaded outside the scope of SerializableRecipe.initialize, they will not work correctly +* If recipes are registered before the init, they are deleted, if they are registered after the init, they will not be part of the config template file, and get deleted when running /ntmreload +* Machines change all the time, so the recipe classes should not be considered API, since the compat would break immediately if a machine is changed or removed +* CompatRecipeRegistry promises to never change its method signatures, and have solid sanity checking when recipes are registered, allowing it to make the bst of whatever data is thrown at it +* Using this dedicated registry class means that even if a machine is changed or removed, the recipes will continue to work to the best of its abilities + +*/ \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 2dacf92dd..669a4bde2 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -46,6 +46,8 @@ public class ArcWelderRecipes extends SerializableRecipe { new OreDictStack(ANY_BISMOIDBRONZE.plateCast(), 2), new OreDictStack(CMB.plateWelded(), 1), new ComparableStack(ModItems.ingot_cft))); //Dense Wires + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_COPPER.id), 100, 10_000L, + new OreDictStack(CU.wireFine(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, new OreDictStack(ALLOY.wireFine(), 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, diff --git a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java index af7032305..1a7599b5d 100644 --- a/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BlastFurnaceRecipes.java @@ -77,7 +77,7 @@ public class BlastFurnaceRecipes extends SerializableRecipe { hiddenRecipes.add(new ComparableStack(ModItems.meteorite_sword_alloyed)); } - private static void addRecipe(Object in1, Object in2, ItemStack out) { + public static void addRecipe(Object in1, Object in2, ItemStack out) { if(in1 instanceof Item) in1 = new ComparableStack((Item) in1); if(in1 instanceof Block) in1 = new ComparableStack((Block) in1); diff --git a/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java b/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java index 7503b3dec..1ff4b65fb 100644 --- a/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/BreederRecipes.java @@ -19,7 +19,7 @@ import net.minecraft.item.ItemStack; public class BreederRecipes extends SerializableRecipe { - private static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index 641008670..027efb67d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -43,7 +43,7 @@ import net.minecraftforge.oredict.OreDictionary; public class CentrifugeRecipes extends SerializableRecipe { - private static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 5331f09d4..7a44817d3 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -38,7 +38,7 @@ public class ChemplantRecipes extends SerializableRecipe { @Override public void registerDefaults() { - //6-30, formerly oil cracking, coal liquefaction and solidifciation + //6-30, formerly oil cracking, coal liquefaction and solidification registerOtherOil(); recipes.add(new ChemRecipe(36, "COOLANT", 50) diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java index ce4c4dfb5..32f1bbd6a 100644 --- a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -25,7 +25,7 @@ import net.minecraft.item.ItemStack; public class CokerRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { @@ -68,7 +68,7 @@ public class CokerRecipes extends SerializableRecipe { registerRecipe(VITRIOL, 4000, new ItemStack(ModItems.powder_iron), new FluidStack(SULFURIC_ACID, 500)); } - private static void registerAuto(FluidType fluid, FluidType type) { + public static void registerAuto(FluidType fluid, FluidType type) { registerSFAuto(fluid, 820_000L, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), type); //3200 burntime * 1.25 burntime bonus * 200 TU/t + 20000TU per operation } private static void registerSFAuto(FluidType fluid, long tuPerSF, ItemStack fuel, FluidType type) { diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index 5698426dc..58cc7784a 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -34,7 +34,7 @@ import net.minecraft.item.ItemStack; public class CombinationRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java index 7bfe680ec..b66cf903d 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrackingRecipes.java @@ -36,7 +36,7 @@ public class CrackingRecipes extends SerializableRecipe { public static final int xyl_crack_aroma = 80; public static final int xyl_crack_petro = 20; - private static Map> cracking = new HashMap(); + public static Map> cracking = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 6d12d8124..e4b8907ba 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -235,6 +235,12 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(P_WHITE.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_phosphorus), utilityTime), new FluidStack(Fluids.AROMATICS, 50)); } + /// COMPAT CINNABAR DUST /// + List dustCinnabar = OreDictionary.getOres(CINNABAR.dust()); + if(dustCinnabar != null && !dustCinnabar.isEmpty()) { + registerRecipe(CINNABAR.dust(), new CrystallizerRecipe(new ItemStack(ModItems.cinnebar), utilityTime), new FluidStack(Fluids.PEROXIDE, 50)); + } + if(!IMCCrystallizer.buffer.isEmpty()) { recipes.putAll(IMCCrystallizer.buffer); MainRegistry.logger.info("Fetched " + IMCCrystallizer.buffer.size() + " IMC crystallizer recipes!"); diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 93e932ef3..dda69009f 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -19,7 +19,7 @@ import net.minecraft.item.ItemStack; public class FractionRecipes extends SerializableRecipe { - private static Map> fractions = new HashMap(); + public static Map> fractions = new HashMap(); @Override public void registerDefaults() { @@ -40,8 +40,8 @@ public class FractionRecipes extends SerializableRecipe { fractions.put(Fluids.OIL_COKER, new Pair(new FluidStack(Fluids.CRACKOIL, 30), new FluidStack(Fluids.HEATINGOIL, 70))); fractions.put(Fluids.NAPHTHA_COKER, new Pair(new FluidStack(Fluids.NAPHTHA_CRACK, 75), new FluidStack(Fluids.LIGHTOIL_CRACK, 25))); fractions.put(Fluids.GAS_COKER, new Pair(new FluidStack(Fluids.AROMATICS, 25), new FluidStack(Fluids.CARBONDIOXIDE, 75))); - fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); - fractions.put(Fluids.BAUXITE_SOLUTION, new Pair(new FluidStack(Fluids.REDMUD, 50), new FluidStack(Fluids.SODIUM_ALUMINATE, 50))); + fractions.put(Fluids.CHLOROCALCITE_MIX, new Pair(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 50), new FluidStack(Fluids.COLLOID, 50))); + fractions.put(Fluids.BAUXITE_SOLUTION, new Pair(new FluidStack(Fluids.REDMUD, 50), new FluidStack(Fluids.SODIUM_ALUMINATE, 50))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java index 0d2c443e1..d2cccc339 100644 --- a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java @@ -14,7 +14,7 @@ import com.hbm.tileentity.machine.TileEntityHadron.EnumHadronState; import net.minecraft.init.Items; import net.minecraft.item.ItemStack; -public class HadronRecipes extends SerializableRecipe { +@Deprecated public class HadronRecipes extends SerializableRecipe { /* * Since we're dealing with like 10 or so recipes, using a HashMap (or to combine two keys, a HashMap *in* a HashMap) diff --git a/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java b/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java index 620d5b490..46f5b2e11 100644 --- a/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HydrotreatingRecipes.java @@ -18,7 +18,7 @@ import net.minecraft.item.ItemStack; public class HydrotreatingRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index feb244d49..ed171ee75 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -27,7 +27,7 @@ import net.minecraftforge.oredict.OreDictionary; public class LiquefactionRecipes extends SerializableRecipe { - private static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java index 616adb05e..1cb68724a 100644 --- a/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PyroOvenRecipes.java @@ -124,7 +124,7 @@ public class PyroOvenRecipes extends SerializableRecipe { .out(new FluidStack(Fluids.HYDROGEN, 8_000)).out(new ItemStack(ModItems.ingot_graphite, 1))); } - private static void registerSFAuto(FluidType fluid) { + public static void registerSFAuto(FluidType fluid) { registerSFAuto(fluid, 1_440_000L, ModItems.solid_fuel); //3200 burntime * 1.5 burntime bonus * 300 TU/t } private static void registerSFAuto(FluidType fluid, long tuPerSF, Item fuel) { diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index ce8b44627..d728bb2de 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -18,7 +18,7 @@ import net.minecraft.item.ItemStack; public class ReformingRecipes extends SerializableRecipe { - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index f3fc6a15d..4e7aed3ad 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -56,7 +56,7 @@ public class SolidificationRecipes extends SerializableRecipe { //aromatics can be idfk wax or soap or sth, perhaps artificial lubricant? //on that note, add more leaded variants - private static HashMap> recipes = new HashMap(); + public static HashMap> recipes = new HashMap(); @Override public void registerDefaults() { diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 47b60d9e2..b30c58bee 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -38,8 +38,8 @@ import net.minecraftforge.oredict.OreDictionary; public class AnvilRecipes extends SerializableRecipe { - private static List smithingRecipes = new ArrayList(); - private static List constructionRecipes = new ArrayList(); + public static List smithingRecipes = new ArrayList(); + public static List constructionRecipes = new ArrayList(); public static void register() { registerSmithing(); diff --git a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index 02db7b389..753fb048f 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -29,14 +29,16 @@ import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Pair; +import api.hbm.recipe.IRecipeRegisterListener; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; //the anti-spaghetti. this class provides so much functionality and saves so much time, i just love you, SerializableRecipe <3 -public abstract class SerializableRecipe { //TODO: #1969 +public abstract class SerializableRecipe { public static final Gson gson = new Gson(); public static List recipeHandlers = new ArrayList(); + public static List additionalListeners = new ArrayList(); public boolean modified = false; @@ -114,6 +116,10 @@ public abstract class SerializableRecipe { //TODO: #1969 MainRegistry.logger.info("No recipe file found, registering defaults for " + recipe.getFileName()); recipe.registerDefaults(); + for(IRecipeRegisterListener listener : additionalListeners) { + listener.onRecipeLoad(recipe.getClass().getSimpleName()); + } + File recTemplate = new File(recDir.getAbsolutePath() + File.separatorChar + "_" + recipe.getFileName()); MainRegistry.logger.info("Writing template file " + recTemplate.getName()); recipe.writeTemplateFile(recTemplate); diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index 2a7f1177c..4105a1482 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -10,11 +10,14 @@ import java.util.function.Consumer; import api.hbm.energymk2.IEnergyHandlerMK2; import api.hbm.energymk2.IEnergyReceiverMK2; import api.hbm.fluid.IFluidUser; +import api.hbm.recipe.IRecipeRegisterListener; + import com.hbm.blocks.BlockDummyable; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.weapon.ItemCustomMissilePart.WarheadType; import com.hbm.tileentity.machine.TileEntityDummy; import com.hbm.tileentity.turret.TileEntityTurretSentry; @@ -186,6 +189,15 @@ public class CompatExternal { public static void setWarheadLabel(WarheadType type, String label) { type.labelCustom = label; } public static void setWarheadImpact(WarheadType type, Consumer impact) { type.impactCustom = impact; } public static void setWarheadUpdate(WarheadType type, Consumer update) { type.updateCustom = update; } + + /** + * Registers an IRecipeRegisterListener to the recipe system. The listener is called every time a SerializableRecipe instance has its recipes loaded, before the + * config files are written, but after the defaults are initialized. + * @param listener + */ + public static void registerRecipeRegisterListener(IRecipeRegisterListener listener) { + SerializableRecipe.additionalListeners.add(listener); + } public static void compatExamples() { // Makes all cows be targeted by turrets if player mode is active in addition to the existing rules. Applies to all entities that inherit EntityCow. diff --git a/src/main/java/com/hbm/util/CompatRecipeRegistry.java b/src/main/java/com/hbm/util/CompatRecipeRegistry.java new file mode 100644 index 000000000..b4f27c3e4 --- /dev/null +++ b/src/main/java/com/hbm/util/CompatRecipeRegistry.java @@ -0,0 +1,264 @@ +package com.hbm.util; + +import java.util.Arrays; + +import com.hbm.interfaces.Untested; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.*; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.*; +import com.hbm.inventory.recipes.AmmoPressRecipes.AmmoPressRecipe; +import com.hbm.inventory.recipes.ArcFurnaceRecipes.ArcFurnaceRecipe; +import com.hbm.inventory.recipes.ArcWelderRecipes.ArcWelderRecipe; +import com.hbm.inventory.recipes.BreederRecipes.BreederRecipe; +import com.hbm.inventory.recipes.CrucibleRecipes.CrucibleRecipe; +import com.hbm.inventory.recipes.CrystallizerRecipes.CrystallizerRecipe; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecipe; +import com.hbm.inventory.recipes.ExposureChamberRecipes.ExposureChamberRecipe; +import com.hbm.inventory.recipes.ParticleAcceleratorRecipes.ParticleAcceleratorRecipe; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalExtraCondition; +import com.hbm.inventory.recipes.PedestalRecipes.PedestalRecipe; +import com.hbm.inventory.recipes.PyroOvenRecipes.PyroOvenRecipe; +import com.hbm.inventory.recipes.RotaryFurnaceRecipes.RotaryFurnaceRecipe; +import com.hbm.inventory.recipes.ChemplantRecipes.ChemRecipe; +import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe; +import com.hbm.inventory.recipes.SolderingRecipes.SolderingRecipe; +import com.hbm.inventory.recipes.anvil.AnvilRecipes; +import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; +import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilOutput; +import com.hbm.inventory.recipes.anvil.AnvilRecipes.OverlayType; +import com.hbm.items.machine.ItemStamp.StampType; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.Tuple.Triplet; + +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; + +/** + * Public methods for registering recipes. Method signature should never change, only the body to reflect any changes to recipes/machines themselves. + * Recipe creation is either 1:1 with the original SerializableRecipe or even simpler (in the case of the compressor, two FluidStacks instead of a ton of loose numbers). + * Call these with a registered IRecipeRegisterListener, otherwise the recipe loading/reloading will break the custom recipes. + * @author hbm + */ +@Untested +public class CompatRecipeRegistry { + + public static void registerPress(StampType stamp, AStack input, ItemStack output) { + PressRecipes.recipes.put(new Pair(input, stamp), output); + } + + /** Same loose rules as BlastFurnaceRecipes, valid inputs are Items, Blocks, ItemStacks, ComparableStacks, Strings (for oredict) and DictFrames */ + public static void registerBlastFurnace(Object[] inputs, ItemStack output) { + if(inputs.length != 2) return; + BlastFurnaceRecipes.addRecipe(inputs[0], inputs[1], output); + } + + public static void registerShredder(AStack input, ItemStack output) { + for(ItemStack allItems : input.extractForNEI()) { + ComparableStack comp = new ComparableStack(allItems); + ShredderRecipes.shredderRecipes.put(comp, output); + } + } + + /** Items should strictly be categorized as pcb, topping or solder. An item that is used as a topping in one recipe should not be a pcb in another. + * This is because the soldering station's item IO will automatically place items based on this category, and having items in more than one category would break it. */ + public static void registerSoldering(ItemStack output, int time, long power, FluidStack fluid, AStack[] toppings, AStack[] pcb, AStack[] solder) { + SolderingRecipes.recipes.add(new SolderingRecipe(output, time, power, fluid, copyFirst(toppings, 3), copyFirst(pcb, 2), copyFirst(solder, 1))); + } + + /** Chemplant recipes need unique IDs, game will crash when an ID collision is detected! */ + public static void registerChemplant(int id, String name, int duration, AStack[] inputItems, FluidStack[] inputFluids, ItemStack[] outputItems, FluidStack[] outputFluids) { + ChemRecipe recipe = new ChemRecipe(id, name, duration); + if(inputItems != null) recipe.inputItems(copyFirst(inputItems, 4)); + if(inputFluids != null) recipe.inputFluids(copyFirst(inputFluids, 2)); + if(outputItems != null) recipe.outputItems(copyFirst(outputItems, 4)); + if(outputFluids != null) recipe.outputFluids(copyFirst(outputFluids, 2)); + ChemplantRecipes.recipes.add(recipe); + } + + /** Either solid or liquid output can be null */ + public static void registerCombination(AStack input, ItemStack output, FluidStack fluid) { + if(output == null && fluid == null) return; + Object o = input instanceof OreDictStack ? ((OreDictStack) input).name : input; + CombinationRecipes.recipes.put(o, new Pair(output, fluid)); + } + + /** Crucible recipes need unique IDs, game will crash when an ID collision is detected! */ + public static void registerCrucible(int index, String name, int frequency, ItemStack icon, MaterialStack[] input, MaterialStack[] output) { + CrucibleRecipe recipe = new CrucibleRecipe(index, name, frequency, icon).inputs(input).outputs(output); + CrucibleRecipes.recipes.add(recipe); + } + + public static void registerCentrifuge(AStack input, ItemStack[] outputs) { + CentrifugeRecipes.recipes.put(input, copyFirst(outputs, 4)); + } + + public static void registerCrystallizer(AStack input, ItemStack output, int time, float productivity, FluidStack fluid) { + CrystallizerRecipe recipe = new CrystallizerRecipe(output, time).prod(productivity); + CrystallizerRecipes.registerRecipe(input instanceof OreDictStack ? ((OreDictStack) input).name : input, recipe, fluid); + } + + /** Fractions always use 100mB of input fluid per operation. None of the outputs can be null. */ + public static void registerFraction(FluidType input, FluidStack[] output) { + if(output.length != 2) return; + FractionRecipes.fractions.put(input, new Pair(output[0], output[1])); + } + + /** Cracking always uses 100mB of input fluid and 200mB of steam per operation. None of the outputs can be null. */ + public static void registerCracking(FluidType input, FluidStack[] output) { + if(output.length != 2) return; + CrackingRecipes.cracking.put(input, new Pair(output[0], output[1])); + } + + /** Reforming always uses 100mB of input fluid per operation. None of the outputs can be null. */ + public static void registerReforming(FluidType input, FluidStack[] output) { + output = copyFirst(output, 3); + if(output.length < 3) return; + ReformingRecipes.recipes.put(input, new Triplet(output[0], output[1], output[2])); + } + + /** Hydrotreating always uses 100mB of input fluid per operation. None of the outputs can be null. */ + public static void registerHydrotreating(FluidType input, FluidStack hydrogen, FluidStack[] output) { + output = copyFirst(output, 2); + if(output.length < 2) return; + HydrotreatingRecipes.recipes.put(input, new Triplet(hydrogen, output[0], output[1])); + } + + public static void registerLiquefaction(AStack input, FluidStack output) { + LiquefactionRecipes.recipes.put(input instanceof OreDictStack ? ((OreDictStack) input).name : input, output); + } + + public static void registerSolidifying(FluidStack input, ItemStack output) { + SolidificationRecipes.recipes.put(input.type, new Pair(input.fill, output)); + } + + public static void registerCoker(FluidStack input, ItemStack output, FluidStack fluid) { + CokerRecipes.recipes.put(input.type, new Triplet(input.fill, output, fluid)); + } + + /** Registers a coker recipe based on the standardized fluid to coke values */ + public static void registerCokerAuto(FluidType input, FluidType output) { + CokerRecipes.registerAuto(input, output); + } + + public static void registerPyro(FluidStack inputFluid, AStack inputItem, FluidStack outputFluid, ItemStack outputItem, int duration) { + PyroOvenRecipes.recipes.add(new PyroOvenRecipe(duration).in(inputFluid).in(inputItem).out(outputFluid).out(outputItem)); + } + + /** Registers a pyro oven recipe based on the standardized fluid to solid fuel values */ + public static void registerPyroAuto(FluidType input) { + PyroOvenRecipes.registerSFAuto(input); + } + + /** Breeding reactor does not handle OreDictStacks */ + public static void registerBreeder(ComparableStack input, ItemStack output, int flux) { + BreederRecipes.recipes.put(input, new BreederRecipe(output, flux)); + } + + public static void registerCyclotron(ComparableStack box, AStack target, ItemStack output, int antimatter) { + CyclotronRecipes.recipes.put(new Pair(box, target), new Pair(output, antimatter)); + } + + /** Fuel pools do not handle OreDictStacks */ + public static void registerFuelPool(ComparableStack input, ItemStack output) { + FuelPoolRecipes.recipes.put(input, output); + } + + //TBI mixer + + public static void registerOutgasser(AStack input, ItemStack output, FluidStack fluid) { + OutgasserRecipes.recipes.put(input, new Pair(output, fluid)); + } + + public static void registerCompressor(FluidStack input, FluidStack output, int time) { + CompressorRecipes.recipes.put(new Pair(input.type, input.pressure), new CompressorRecipe(input.fill, output, time)); + } + + /** Byproduct array can be null, fluid output length must be 2 */ + public static void registerElectrolyzerFluid(FluidStack input, FluidStack[] output, ItemStack[] byproduct, int time) { + output = copyFirst(output, 2); + if(output.length < 2) return; + if(byproduct != null) byproduct = copyFirst(byproduct, 3); + + ElectrolyserFluidRecipes.recipes.put(input.type, new ElectrolysisRecipe(input.fill, output[0], output[1], time, byproduct)); + } + + /** Output array length must be 2, outputs can be null. Byproduct array can be null. */ + public static void registerElectrolyzerMetal(AStack input, MaterialStack[] output, ItemStack[] byproduct, int time) { + output = copyFirst(output, 2); + if(byproduct != null) byproduct = copyFirst(byproduct, 6); + + ElectrolyserMetalRecipes.recipes.put(input, new ElectrolysisMetalRecipe(output[0], output[1], time, byproduct)); + } + + public static void registerArcWelder(ItemStack output, int time, long power, FluidStack fluid, AStack[] inputs) { + ArcWelderRecipes.recipes.add(new ArcWelderRecipe(output, time, power, fluid, copyFirst(inputs, 3))); + } + + public static void registerRotaryFurnace(MaterialStack output, int time, int steam, FluidStack fluid, AStack[] inputs) { + RotaryFurnaceRecipes.recipes.add(new RotaryFurnaceRecipe(output, time, steam, fluid, copyFirst(inputs, 3))); + } + + /** Particles will always perform 8 recipes */ + public static void registerExposureChamber(AStack particle, AStack input, ItemStack output) { + ExposureChamberRecipes.recipes.add(new ExposureChamberRecipe(particle, input, output)); + } + + /** Input needs two AStacks, output can take 1-2 ItemStacks. If the same recipe with different + * momentum should yield different results, register the lower momentum recipes first. */ + public static void registerParticleAccelerator(AStack[] input, int momentum, ItemStack[] output) { + input = copyFirst(input, 2); + if(input.length < 2) return; + output = copyFirst(output, 2); + if(output.length < 1) return; + ParticleAcceleratorRecipes.recipes.add(new ParticleAcceleratorRecipe(input[0], input[1], momentum, output[0], output.length > 1 ? output[1] : null)); + } + + public static void registerAmmoPress(ItemStack output, AStack[] input) { + if(input.length != 9) return; + AmmoPressRecipes.recipes.add(new AmmoPressRecipe(output, input)); + } + + public static void registerAssembler(ItemStack output, AStack[] input, int time) { + AssemblerRecipes.makeRecipe(new ComparableStack(output), copyFirst(input, 12), time); + } + + /** Registers an assembler recipe but with the template only being obtainable via the specified folders */ + public static void registerAssembler(ItemStack output, AStack[] input, int time, Item... folder) { + AssemblerRecipes.makeRecipe(new ComparableStack(output), copyFirst(input, 12), time, folder); + } + + public static void registerAnvilConstruction(AStack[] input, AnvilOutput[] output, int tier, int overlayIndex) { + AnvilRecipes.constructionRecipes.add(new AnvilConstructionRecipe(input, output).setTier(tier).setOverlay(EnumUtil.grabEnumSafely(OverlayType.class, overlayIndex))); + } + + public static void registerAnvilConstruction(AStack[] input, AnvilOutput[] output, int tierLower, int tierUpper, int overlayIndex) { + AnvilRecipes.constructionRecipes.add(new AnvilConstructionRecipe(input, output).setTierRange(tierLower, tierUpper).setOverlay(EnumUtil.grabEnumSafely(OverlayType.class, overlayIndex))); + } + + public static void registerPedestal(ItemStack output, AStack[] input) { + registerPedestal(output, input, 0); + } + + public static void registerPedestal(ItemStack output, AStack[] input, int condition) { + input = copyFirst(input, 9); + if(input.length < 9) return; + PedestalRecipes.recipes.add(new PedestalRecipe(output, input).extra(EnumUtil.grabEnumSafely(PedestalExtraCondition.class, condition))); + } + + /** Either output or fluid can be null */ + public static void registerArcFurnace(AStack input, ItemStack output, MaterialStack fluid) { + if(output == null && fluid == null) return; + ArcFurnaceRecipes.recipeList.add(new Pair(input, new ArcFurnaceRecipe().solid(output).fluid(fluid))); + } + + ///////////////////////////////////////////////////////////////////////////////////////// + + /** If the supplied array exceeds the specified length, creates a copy and trunkates the array. Otherwise, returns the original array */ + private static T[] copyFirst(T[] array, int amount) { + if(array.length <= amount) return array; + return Arrays.copyOf(array, amount); + } +} From 1afe84a87113f2b0f64a0f5d5c22c52f890b96e9 Mon Sep 17 00:00:00 2001 From: George Paton Date: Fri, 7 Mar 2025 16:49:56 +1100 Subject: [PATCH 64/64] shit idiot brain fungus the sequel --- .../com/hbm/render/anim/AnimationLoader.java | 38 +++++-------------- .../hbm/render/anim/BusAnimationKeyframe.java | 4 +- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/src/main/java/com/hbm/render/anim/AnimationLoader.java b/src/main/java/com/hbm/render/anim/AnimationLoader.java index 686e13965..0f99d66b3 100644 --- a/src/main/java/com/hbm/render/anim/AnimationLoader.java +++ b/src/main/java/com/hbm/render/anim/AnimationLoader.java @@ -69,7 +69,7 @@ public class AnimationLoader { if(json.has("rotmode")) { for(Map.Entry root : json.getAsJsonObject("rotmode").entrySet()) { String mode = root.getValue().getAsString(); - + double[] rotMode = new double[3]; rotMode[0] = getRot(mode.charAt(2)); rotMode[1] = getRot(mode.charAt(0)); @@ -115,45 +115,27 @@ public class AnimationLoader { if(json.has("location")) { JsonObject location = json.getAsJsonObject("location"); - if(location.has("x")) { - addToSequence(sequence, Dimension.TX, location.getAsJsonArray("x")); - } - if(location.has("y")) { - addToSequence(sequence, Dimension.TY, location.getAsJsonArray("y")); - } - if(location.has("z")) { - addToSequence(sequence, Dimension.TZ, location.getAsJsonArray("z")); - } + if(location.has("x")) addToSequence(sequence, Dimension.TX, location.getAsJsonArray("x")); + if(location.has("y")) addToSequence(sequence, Dimension.TY, location.getAsJsonArray("y")); + if(location.has("z")) addToSequence(sequence, Dimension.TZ, location.getAsJsonArray("z")); } // Rotation fcurves, only euler at the moment if(json.has("rotation_euler")) { JsonObject rotation = json.getAsJsonObject("rotation_euler"); - if(rotation.has("x")) { - addToSequence(sequence, Dimension.RX, rotation.getAsJsonArray("x")); - } - if(rotation.has("y")) { - addToSequence(sequence, Dimension.RY, rotation.getAsJsonArray("y")); - } - if(rotation.has("z")) { - addToSequence(sequence, Dimension.RZ, rotation.getAsJsonArray("z")); - } + if(rotation.has("x")) addToSequence(sequence, Dimension.RX, rotation.getAsJsonArray("x")); + if(rotation.has("y")) addToSequence(sequence, Dimension.RY, rotation.getAsJsonArray("y")); + if(rotation.has("z")) addToSequence(sequence, Dimension.RZ, rotation.getAsJsonArray("z")); } // Scale fcurves if(json.has("scale")) { JsonObject scale = json.getAsJsonObject("scale"); - if(scale.has("x")) { - addToSequence(sequence, Dimension.SX, scale.getAsJsonArray("x")); - } - if(scale.has("y")) { - addToSequence(sequence, Dimension.SY, scale.getAsJsonArray("y")); - } - if(scale.has("z")) { - addToSequence(sequence, Dimension.SZ, scale.getAsJsonArray("z")); - } + if(scale.has("x")) addToSequence(sequence, Dimension.SX, scale.getAsJsonArray("x")); + if(scale.has("y")) addToSequence(sequence, Dimension.SY, scale.getAsJsonArray("y")); + if(scale.has("z")) addToSequence(sequence, Dimension.SZ, scale.getAsJsonArray("z")); } sequence.offset = offset; diff --git a/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java b/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java index ce55f00e5..e25f5f95e 100644 --- a/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java +++ b/src/main/java/com/hbm/render/anim/BusAnimationKeyframe.java @@ -236,12 +236,12 @@ public class BusAnimationKeyframe { // Blender bezier solvers, but rewritten (pain) private double solveCubic(double c0, double c1, double c2, double c3) { - if(c3 > 0.000001) { + if(c3 > 0.000001 || c3 < -0.000001) { double a = c2 / c3; double b = c1 / c3; double c = c0 / c3; a = a / 3; - + double p = b / 3 - a * a; double q = (2 * a * a * a - a * b + c) / 2; double d = q * q + p * p * p;