diff --git a/.gitignore b/.gitignore index 231f1afed..22222fc39 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,9 @@ build # other run + +# CurseForge configuration +/curseforge.properties + +# Changelog backup +/changelog.bak diff --git a/README.md b/README.md index 39977e9da..2506c1a64 100644 --- a/README.md +++ b/README.md @@ -91,5 +91,20 @@ If you want to make some changes to the mod, follow this guide: * Click **Add Standard VM**; in the JRE home, navigate to the directory where the JDK is installed, then click finish and select it. 10. Code! +## Compatibility notice +NTM has certain behaviors intended to fix vanilla code or to increase compatibility in certain cases where it otherwise would not be possible. These behaviors have the potential of not playing well with other mods, and while no such cases are currently known, here's a list of them. + +### Skybox chainloader +NTM adds a few small things to the skybox using a custom skybox renderer. Minecraft can only have a single skybox renderer loaded, so setting the skybox to the NTM custom one would break compatibility with other mods' skyboxes. To mend this, NTM employs a **chainloader**. This chainloader will detect if a different skybox is loaded, save a reference to that skybox and then use NTM's skybox, which when used will also make sure to run the previous modded skybox renderer. In the event that NTM's skybox were to cause trouble, it can be disabled with the config option `1.31_enableSkyboxes`. + +### Custom world provider +A world provider is a piece of code that minecraft can load to determine certain aspects of how the world should be handled, like light levels, sky color, day/night cycle, etc. In order for the Tom impact effects to work, NTM employs such a world provider, although this is known to cause issues with Hardcore Darkness. The world provider can be disabled with the config option `1.32_enableImpactWorldProvider`. + +### Stat re-registering +An often overlooked aspect of Minecraft is its stats, the game keeps track of how many of an item were crafted, placed, broken, etc. By default, Minecraft can only handle vanilla items, modded items would not show up in the stats window. Forge does little to fix this, and since NTM has to keep track of certain things (such as the use of an acidizer for spawning Mask Man) it will run its own code which re-registers all stats for all modded items. In the event that re-registering causes issues, or another mod already does this better already, this behavior can be disabled with the config option `1.33_enableStatReRegistering`. + +### Keybind overlap +An often annoying aspect of modded Minecraft is its keybinds. Even though multiple binds can be assigned the same key, all but one will show up as "conflicting" and only the non-conflicting one will work. Which one this is is usually arbitrary, and there is no reason to have such limitation. Often times keybinds are only applicable in certain scenarios, and a commonly found degree of overlap is within reason. Therefore, NTM will run its own key handling code which allows conflicting keybinds to work. If there should be any issues with this behavior, it can be disabled with the config option `1.34_enableKeybindOverlap`. + # License This software is licensed under the GNU Lesser General Public License version 3. In short: This software is free, you may run the software freely, create modified versions, distribute this software and distribute modified versions, as long as the modified software too has a free software license (with an exception for linking to this software, as stated by the "Lesser" part of the LGPL, where this may not be required). You win this round, Stallman. The full license can be found in the `LICENSE` and `LICENSE.LESSER` files. diff --git a/build.gradle b/build.gradle index bd386126f..8cd9a478d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,9 @@ +import org.gradle.plugins.ide.eclipse.model.internal.FileReferenceFactory + +import java.nio.file.Files +import java.nio.file.Paths +import java.nio.file.StandardCopyOption + buildscript { repositories { maven { url = 'https://maven.minecraftforge.net/' } @@ -10,6 +16,14 @@ buildscript { } apply plugin: 'forge' +apply plugin: 'curseforge' + + +if(Files.exists(Paths.get("curseforge.properties"))) { + // Load CurseForge configuration + ext.cfprops = parseConfig(file("curseforge.properties")) +} + def version_name = version = mod_version if(!mod_build_number.isEmpty()) { version_name = mod_version + "_X" + mod_build_number @@ -42,7 +56,7 @@ eclipse.classpath.file.whenMerged { cp -> } // Create file reference factory - def fileref = new org.gradle.plugins.ide.eclipse.model.internal.FileReferenceFactory() + def fileref = new FileReferenceFactory() // Find all codechicken development jars cp.entries.findAll { entry -> entry.path.contains("codechicken") && entry.path.endsWith("-dev.jar") }.forEach { entry -> @@ -102,8 +116,50 @@ processResources { } } +// add AT to meta-inf +jar { + manifest { + attributes 'FMLAT': 'HBM_at.cfg' + } +} + task version { doFirst { println project.version } } + +if(Files.exists(Paths.get("curseforge.properties"))) { + curse { + apiKey = cfprops.api_key + projectId = cfprops.project_id + releaseType = "release" + + displayName = "Hbm's Nuclear Tech Mod " + version_name.replace("_", "") + " for Minecraft 1.7.10" + + gameVersions.addAll([ + "Forge", + "Java 8", + "Client", "Server" + ]) + + if (Files.exists(Paths.get("changelog"))) { + changelog = String.join("\r\n", Files.readAllLines(Paths.get("changelog"))) + + // Perform a backup of the changelog and create a new file for next changes + doLast { + Files.move(Paths.get("changelog"), Paths.get("changelog.bak"), StandardCopyOption.REPLACE_EXISTING) + Files.createFile(Paths.get("changelog")) + } + } + } +} + +// Properties file parsing helper +static def parseConfig(File config) { + config.withReader { + def prop = new Properties() + prop.load(it) + return (new ConfigSlurper().parse(prop)) + } +} diff --git a/changelog b/changelog new file mode 100644 index 000000000..e22df7578 --- /dev/null +++ b/changelog @@ -0,0 +1,15 @@ +## Added + +## Changed +* Bedrock ores now spawn in the nether + * Nether bedrock ores include red phosphorus and glowstone, both yielding powders instead of ores + * All current nether bedrock ores are tier 1 and do not require any bore fluid +* Custom machines now show their recipes in NEI + * All it took was battling NEI's source code for 3 hours and my sanity +* Changed energy OC compatibility + * Make sure to update your programs, as the getEnergyStored and getMaxEnergy have been deprecated. + +## Fixed +* Fixed custom machines not sending fluid +* Fixed custom machine item IO not working beyond the first slot +* Fixed target designators not accepting coordinates when not designated first (OC compatibility) diff --git a/curseforge.properties.example b/curseforge.properties.example new file mode 100644 index 000000000..002b2b4f5 --- /dev/null +++ b/curseforge.properties.example @@ -0,0 +1,5 @@ +# CurseForge API token (obtainable from https://legacy.curseforge.com/account/api-tokens) +api_key= + +# CurseForge project ID +project_id= diff --git a/gradle.properties b/gradle.properties index 993e781e8..fb976de9d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,14 +1,18 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4551 +mod_build_number=4671 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ - \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ - \ UFFR (RTGs, guns, casings), Pu-238 (Tom impact effects), Bismarck (chinese localization),\ - \ Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures, various machines, models, weapons), Vær (gas centrifuges,\ - \ better worldgen, ZIRNOX, CP-1 parts, starter guide), Adam29 (liquid petroleum, ethanol, electric furnace),\ - \ Pashtet (russian localization), MartinTheDragon (calculator, chunk-based fallout), haru315 (spiral point algorithm),\ - \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\ - \ OvermindDL1 (project settings), TehTemmie (reacher radiation function), Toshayo (satellite loot system, project settings), Silly541 (config for safe ME drives),\ - \ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen (project settings),\ - \ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips) \ No newline at end of file + \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ + \ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\ + \ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\ + \ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ + \ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\ + \ (calculator, chunk-based fallout), haru315 (spiral point algorithm), Sten89 (models), Pixelguru26\ + \ (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002 (project settings),\ + \ Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie (reacher radiation function),\ + \ Toshayo (satellite loot system, project settings, gradle curse task), Silly541 (config for safe ME drives),\ + \ Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1 (OpenComputers integration), martemen\ + \ (project settings), Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid,\ + \ particle emitter), sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ + \ SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC), Maksymisio (polish localization) diff --git a/src/main/java/api/hbm/block/IBlowable.java b/src/main/java/api/hbm/block/IBlowable.java new file mode 100644 index 000000000..625e8a14a --- /dev/null +++ b/src/main/java/api/hbm/block/IBlowable.java @@ -0,0 +1,10 @@ +package api.hbm.block; + +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IBlowable { //sloppy toppy + + /** Called server-side when a fan blows on an IBlowable in range every tick. */ + public void applyFan(World world, int x, int y, int z, ForgeDirection dir, int dist); +} diff --git a/src/main/java/api/hbm/block/IInsertable.java b/src/main/java/api/hbm/block/IInsertable.java new file mode 100644 index 000000000..b53a4849a --- /dev/null +++ b/src/main/java/api/hbm/block/IInsertable.java @@ -0,0 +1,10 @@ +package api.hbm.block; + +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public interface IInsertable { //uwu + + public boolean insertItem(World world, int x, int y, int z, ForgeDirection dir, ItemStack stack); +} diff --git a/src/main/java/api/hbm/block/IToolable.java b/src/main/java/api/hbm/block/IToolable.java index 3a2a87931..64c57adb7 100644 --- a/src/main/java/api/hbm/block/IToolable.java +++ b/src/main/java/api/hbm/block/IToolable.java @@ -1,6 +1,13 @@ package api.hbm.block; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import com.hbm.inventory.RecipesCommon.ComparableStack; + import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.world.World; public interface IToolable { @@ -12,6 +19,29 @@ public interface IToolable { HAND_DRILL, DEFUSER, WRENCH, - TORCH + TORCH, + BOLT; + + public List stacksForDisplay = new ArrayList(); + private static HashMap map = new HashMap(); + + public void register(ItemStack stack) { + stacksForDisplay.add(stack); + } + + public static ToolType getType(ItemStack stack) { + + if(!map.isEmpty()) { + return map.get(new ComparableStack(stack)); + } + + for(ToolType type : ToolType.values()) { + for(ItemStack tool : type.stacksForDisplay) { + map.put(new ComparableStack(tool), type); + } + } + + return map.get(new ComparableStack(stack)); + } } } diff --git a/src/main/java/api/hbm/energy/IEnergyConnector.java b/src/main/java/api/hbm/energy/IEnergyConnector.java index e3b21e12c..34ed1d175 100644 --- a/src/main/java/api/hbm/energy/IEnergyConnector.java +++ b/src/main/java/api/hbm/energy/IEnergyConnector.java @@ -75,7 +75,7 @@ public interface IEnergyConnector extends ILoadedTile { red = true; } - if(particleDebug) {// + if(particleDebug) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "network"); data.setString("mode", "power"); diff --git a/src/main/java/api/hbm/energy/IEnergyGenerator.java b/src/main/java/api/hbm/energy/IEnergyGenerator.java index 081fc5491..37db6370d 100644 --- a/src/main/java/api/hbm/energy/IEnergyGenerator.java +++ b/src/main/java/api/hbm/energy/IEnergyGenerator.java @@ -10,4 +10,10 @@ public interface IEnergyGenerator extends IEnergyUser { public default long transferPower(long power) { return power; } + + /* should stop making non-receivers from interfering by applying their weight which doesn't even matter */ + @Override + public default long getTransferWeight() { + return 0; + } } diff --git a/src/main/java/api/hbm/energy/IPowerNet.java b/src/main/java/api/hbm/energy/IPowerNet.java index 4b82df2e9..eb9848226 100644 --- a/src/main/java/api/hbm/energy/IPowerNet.java +++ b/src/main/java/api/hbm/energy/IPowerNet.java @@ -1,5 +1,6 @@ package api.hbm.energy; +import java.math.BigInteger; import java.util.List; /** @@ -32,4 +33,5 @@ public interface IPowerNet { public List getSubscribers(); public long transferPower(long power); + public BigInteger getTotalTransfer(); } diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index f9025201b..172e22dde 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -1,5 +1,6 @@ package api.hbm.energy; +import java.math.BigInteger; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -20,6 +21,9 @@ public class PowerNet implements IPowerNet { private HashMap links = new HashMap(); private HashMap proxies = new HashMap(); private List subscribers = new ArrayList(); + + public static List trackingInstances = null; + protected BigInteger totalTransfer = BigInteger.ZERO; @Override public void joinNetworks(IPowerNet network) { @@ -119,6 +123,11 @@ public class PowerNet implements IPowerNet { public boolean isValid() { return this.valid; } + + @Override + public BigInteger getTotalTransfer() { + return this.totalTransfer; + } public long lastCleanup = System.currentTimeMillis(); @@ -129,7 +138,9 @@ public class PowerNet implements IPowerNet { cleanup(this.subscribers); lastCleanup = System.currentTimeMillis(); }*/ - + + trackingInstances = new ArrayList(); + trackingInstances.add(this); return fairTransfer(this.subscribers, power); } @@ -149,6 +160,8 @@ public class PowerNet implements IPowerNet { ConnectionPriority[] priorities = new ConnectionPriority[] {ConnectionPriority.HIGH, ConnectionPriority.NORMAL, ConnectionPriority.LOW}; + long totalTransfer = 0; + for(ConnectionPriority p : priorities) { List subList = new ArrayList(); @@ -186,6 +199,15 @@ public class PowerNet implements IPowerNet { } power -= totalGiven; + totalTransfer += totalGiven; + } + + if(trackingInstances != null) { + + for(int i = 0; i < trackingInstances.size(); i++) { + PowerNet net = trackingInstances.get(i); + net.totalTransfer = net.totalTransfer.add(BigInteger.valueOf(totalTransfer)); + } } return power; diff --git a/src/main/java/api/hbm/fluid/IFluidConductor.java b/src/main/java/api/hbm/fluid/IFluidConductor.java index 95ae30766..d9d1e00c7 100644 --- a/src/main/java/api/hbm/fluid/IFluidConductor.java +++ b/src/main/java/api/hbm/fluid/IFluidConductor.java @@ -9,11 +9,11 @@ public interface IFluidConductor extends IFluidConnector { public void setPipeNet(FluidType type, IPipeNet network); @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { if(this.getPipeNet(type) == null) return amount; - return this.getPipeNet(type).transferFluid(amount); + return this.getPipeNet(type).transferFluid(amount, pressure); } } diff --git a/src/main/java/api/hbm/fluid/IFluidConnector.java b/src/main/java/api/hbm/fluid/IFluidConnector.java index 634412cbf..a47b56def 100644 --- a/src/main/java/api/hbm/fluid/IFluidConnector.java +++ b/src/main/java/api/hbm/fluid/IFluidConnector.java @@ -17,7 +17,7 @@ public interface IFluidConnector { * @param power * @return */ - public long transferFluid(FluidType type, long fluid); + public long transferFluid(FluidType type, int pressure, long fluid); /** * Whether the given side can be connected to @@ -33,7 +33,7 @@ public interface IFluidConnector { * @param type * @return */ - public long getDemand(FluidType type); + public long getDemand(FluidType type, int pressure); /** * Basic implementation of subscribing to a nearby power grid diff --git a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java index e60aca9cd..dc7151daf 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardReceiver.java @@ -14,10 +14,10 @@ import com.hbm.inventory.fluid.tank.FluidTank; public interface IFluidStandardReceiver extends IFluidUser { @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() + (int) amount); if(tank.getFill() > tank.getMaxFill()) { @@ -36,10 +36,10 @@ public interface IFluidStandardReceiver extends IFluidUser { public FluidTank[] getReceivingTanks(); @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getMaxFill() - tank.getFill(); } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardSender.java b/src/main/java/api/hbm/fluid/IFluidStandardSender.java index 46baee9da..57b587370 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardSender.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardSender.java @@ -16,10 +16,10 @@ public interface IFluidStandardSender extends IFluidUser { public FluidTank[] getSendingTanks(); @Override - public default long getTotalFluidForSend(FluidType type) { + public default long getTotalFluidForSend(FluidType type, int pressure) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getFill(); } } @@ -28,10 +28,10 @@ public interface IFluidStandardSender extends IFluidUser { } @Override - public default void removeFluidForTransfer(FluidType type, long amount) { + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() - (int) amount); return; } @@ -39,12 +39,12 @@ public interface IFluidStandardSender extends IFluidUser { } @Override - public default long transferFluid(FluidType type, long fluid) { + public default long transferFluid(FluidType type, int pressure, long fluid) { return fluid; } @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { return 0; } } diff --git a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java index 4cbe6b0a4..4012ab63f 100644 --- a/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java +++ b/src/main/java/api/hbm/fluid/IFluidStandardTransceiver.java @@ -23,10 +23,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { public FluidTank[] getReceivingTanks(); @Override - public default long getTotalFluidForSend(FluidType type) { + public default long getTotalFluidForSend(FluidType type, int pressure) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getFill(); } } @@ -35,10 +35,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default void removeFluidForTransfer(FluidType type, long amount) { + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { for(FluidTank tank : getSendingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() - (int) amount); return; } @@ -46,10 +46,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default long getDemand(FluidType type) { + public default long getDemand(FluidType type, int pressure) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { return tank.getMaxFill() - tank.getFill(); } } @@ -58,10 +58,10 @@ public interface IFluidStandardTransceiver extends IFluidUser { } @Override - public default long transferFluid(FluidType type, long amount) { + public default long transferFluid(FluidType type, int pressure, long amount) { for(FluidTank tank : getReceivingTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { tank.setFill(tank.getFill() + (int) amount); if(tank.getFill() > tank.getMaxFill()) { diff --git a/src/main/java/api/hbm/fluid/IFluidUser.java b/src/main/java/api/hbm/fluid/IFluidUser.java index 2a181f99c..7c4a36a92 100644 --- a/src/main/java/api/hbm/fluid/IFluidUser.java +++ b/src/main/java/api/hbm/fluid/IFluidUser.java @@ -13,7 +13,11 @@ import net.minecraftforge.common.util.ForgeDirection; public interface IFluidUser extends IFluidConnector { - public default void sendFluid(FluidType type, World world, int x, int y, int z, ForgeDirection dir) { + public default void sendFluid(FluidTank tank, World world, int x, int y, int z, ForgeDirection dir) { + sendFluid(tank.getTankType(), tank.getPressure(), world, x, y, z, dir); + } + + public default void sendFluid(FluidType type, int pressure, World world, int x, int y, int z, ForgeDirection dir) { TileEntity te = world.getTileEntity(x, y, z); boolean wasSubscribed = false; @@ -32,9 +36,9 @@ public interface IFluidUser extends IFluidConnector { IFluidConnector con = (IFluidConnector) te; if(con.canConnect(type, dir.getOpposite())) { - long toSend = this.getTotalFluidForSend(type); - long transfer = toSend - con.transferFluid(type, toSend); - this.removeFluidForTransfer(type, transfer); + long toSend = this.getTotalFluidForSend(type, pressure); + long transfer = toSend - con.transferFluid(type, pressure, toSend); + this.removeFluidForTransfer(type, pressure, transfer); red = true; } } @@ -77,15 +81,21 @@ public interface IFluidUser extends IFluidConnector { return null; } - public default void sendFluidToAll(FluidType type, TileEntity te) { + /** Use more common conPos method instead */ + @Deprecated public default void sendFluidToAll(FluidTank tank, TileEntity te) { + sendFluidToAll(tank.getTankType(), tank.getPressure(), te); + } + + /** Use more common conPos method instead */ + @Deprecated public default void sendFluidToAll(FluidType type, int pressure, TileEntity te) { for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { - sendFluid(type, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); + sendFluid(type, pressure, te.getWorldObj(), te.xCoord + dir.offsetX, te.yCoord + dir.offsetY, te.zCoord + dir.offsetZ, dir); } } - public default long getTotalFluidForSend(FluidType type) { return 0; } - public default void removeFluidForTransfer(FluidType type, long amount) { } + public default long getTotalFluidForSend(FluidType type, int pressure) { return 0; } + public default void removeFluidForTransfer(FluidType type, int pressure, long amount) { } public default void subscribeToAllAround(FluidType type, TileEntity te) { subscribeToAllAround(type, te.getWorldObj(), te.xCoord, te.yCoord, te.zCoord); diff --git a/src/main/java/api/hbm/fluid/IPipeNet.java b/src/main/java/api/hbm/fluid/IPipeNet.java index 442ec3a33..45e67b017 100644 --- a/src/main/java/api/hbm/fluid/IPipeNet.java +++ b/src/main/java/api/hbm/fluid/IPipeNet.java @@ -24,7 +24,7 @@ public interface IPipeNet { public boolean isValid(); - public long transferFluid(long fill); + public long transferFluid(long fill, int pressure); public FluidType getType(); public BigInteger getTotalTransfer(); } diff --git a/src/main/java/api/hbm/fluid/PipeNet.java b/src/main/java/api/hbm/fluid/PipeNet.java index 1b3d46f5d..09b63d4f5 100644 --- a/src/main/java/api/hbm/fluid/PipeNet.java +++ b/src/main/java/api/hbm/fluid/PipeNet.java @@ -85,7 +85,7 @@ public class PipeNet implements IPipeNet { } @Override - public long transferFluid(long fill) { + public long transferFluid(long fill, int pressure) { this.subscribers.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid() @@ -97,16 +97,16 @@ public class PipeNet implements IPipeNet { trackingInstances = new ArrayList(); trackingInstances.add(this); List subList = new ArrayList(subscribers); - return fairTransfer(subList, type, fill); + return fairTransfer(subList, type, pressure, fill); } - public static long fairTransfer(List subList, FluidType type, long fill) { + public static long fairTransfer(List subList, FluidType type, int pressure, long fill) { List weight = new ArrayList(); long totalReq = 0; for(IFluidConnector con : subList) { - long req = con.getDemand(type); + long req = con.getDemand(type, pressure); weight.add(req); totalReq += req; } @@ -123,7 +123,7 @@ public class PipeNet implements IPipeNet { long given = (long) Math.floor(fraction * fill); - totalGiven += (given - con.transferFluid(type, given)); + totalGiven += (given - con.transferFluid(type, pressure, given)); } if(trackingInstances != null) { diff --git a/src/main/java/com/hbm/blocks/BlockDummyable.java b/src/main/java/com/hbm/blocks/BlockDummyable.java index 3c1869089..4d7b35b2e 100644 --- a/src/main/java/com/hbm/blocks/BlockDummyable.java +++ b/src/main/java/com/hbm/blocks/BlockDummyable.java @@ -490,12 +490,10 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl int[] pos = this.findCore(world, x, y, z); if(pos == null) return; - TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); - if(tile == null) return; - x = tile.xCoord; - y = tile.yCoord; - z = tile.zCoord; + x = pos[0]; + y = pos[1]; + z = pos[2]; EntityPlayer player = event.player; float interp = event.partialTicks; @@ -503,9 +501,11 @@ public abstract class BlockDummyable extends BlockContainer implements ICustomBl double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) interp; double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; float exp = 0.002F; + + 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(tile.getBlockMetadata() - offset).getRotation(ForgeDirection.UP)).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); + 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); ICustomBlockHighlight.cleanup(); } } diff --git a/src/main/java/com/hbm/blocks/BlockEnumMulti.java b/src/main/java/com/hbm/blocks/BlockEnumMulti.java index bca10f87e..d581bfd2d 100644 --- a/src/main/java/com/hbm/blocks/BlockEnumMulti.java +++ b/src/main/java/com/hbm/blocks/BlockEnumMulti.java @@ -1,9 +1,14 @@ package com.hbm.blocks; +import java.util.Locale; + +import com.hbm.util.EnumUtil; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; public class BlockEnumMulti extends BlockMulti { @@ -31,13 +36,23 @@ public class BlockEnumMulti extends BlockMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US)); } } else { this.blockIcon = reg.registerIcon(this.getTextureName()); } } + public String getUnlocalizedName(ItemStack stack) { + + if(this.multiName) { + Enum num = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); + } + + return this.getUnlocalizedName(); + } + @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int side, int meta) { diff --git a/src/main/java/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index 99d7edadf..6bb64b079 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -7,13 +7,40 @@ public class BlockEnums { ASBESTOS, HEMATITE, MALACHITE, - LIMESTONE + LIMESTONE, + BAUXITE + } + + public static enum EnumBiomeType { + DESERT, + WOODLAND } public static enum EnumStalagmiteType { SULFUR, ASBESTOS } + + public static enum EnumCMMaterials { + STEEL, + ALLOY, + DESH, + TCALLOY + } + + public static enum EnumCMEngines { + STANDARD, + DESH, + BISMUTH + } + + public static enum EnumCMCircuit { + ALUMINIUM, + COPPER, + RED_COPPER, + GOLD, + SCHRABIDIUM + } /** DECO / STRUCTURE ENUMS */ //i apologize in advance diff --git a/src/main/java/com/hbm/blocks/BlockMulti.java b/src/main/java/com/hbm/blocks/BlockMulti.java index 21930f6ff..1741d9316 100644 --- a/src/main/java/com/hbm/blocks/BlockMulti.java +++ b/src/main/java/com/hbm/blocks/BlockMulti.java @@ -31,4 +31,8 @@ public abstract class BlockMulti extends BlockBase implements IBlockMulti { list.add(new ItemStack(item, 1, i)); } } + + public String getUnlocalizedName(ItemStack stack) { + return this.getUnlocalizedName(); + } } diff --git a/src/main/java/com/hbm/blocks/BlockRemap.java b/src/main/java/com/hbm/blocks/BlockRemap.java new file mode 100644 index 000000000..c9d66894f --- /dev/null +++ b/src/main/java/com/hbm/blocks/BlockRemap.java @@ -0,0 +1,41 @@ +package com.hbm.blocks; + +import java.util.ArrayList; +import java.util.Random; + +import com.hbm.lib.RefStrings; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockRemap extends Block implements ILookOverlay { + + public Block remapBlock; + public int remapMeta; + + protected BlockRemap(Block block, int meta) { + super(Material.tnt); + this.remapBlock = block; + this.remapMeta = meta; + this.setTickRandomly(true); + } + + @Override + public Block setBlockName(String name) { + super.setBlockName(name); + this.setBlockTextureName(RefStrings.MODID + ":" + name); + return this; + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + world.setBlock(x, y, z, this.remapBlock, this.remapMeta, 2); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + ILookOverlay.printGeneric(event, "Compatibility block, will convert on update tick.", 0xffff00, 0x404000, new ArrayList()); + } +} diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 3d48508ec..5ccbb3267 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -11,6 +11,12 @@ import com.hbm.blocks.machine.*; import com.hbm.blocks.machine.pile.*; import com.hbm.blocks.machine.rbmk.*; import com.hbm.blocks.network.*; +import com.hbm.blocks.rail.RailNarrowCurve; +import com.hbm.blocks.rail.RailNarrowStraight; +import com.hbm.blocks.rail.RailStandardBuffer; +import com.hbm.blocks.rail.RailStandardCurve; +import com.hbm.blocks.rail.RailStandardRamp; +import com.hbm.blocks.rail.RailStandardStraight; import com.hbm.blocks.siege.*; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; @@ -28,6 +34,7 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockFalling; import net.minecraft.block.material.*; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemBlock; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; @@ -136,6 +143,7 @@ public class ModBlocks { public static Block stone_resource; public static Block stalagmite; public static Block stalactite; + public static Block stone_biome; public static Block stone_deep_cobble; public static Block depth_brick; @@ -201,8 +209,11 @@ public class ModBlocks { public static Block block_aluminium; public static Block block_fluorite; public static Block block_steel; + public static Block block_tcalloy; + public static Block block_cdalloy; public static Block block_lead; public static Block block_bismuth; + public static Block block_cadmium; public static Block block_coltan; public static Block block_tantalium; public static Block block_niobium; @@ -293,6 +304,7 @@ public class ModBlocks { public static Block deco_rbmk_smooth; public static Block deco_emitter; + public static Block part_emitter; public static Block deco_loot; public static Block bobblehead; public static Block snowglobe; @@ -307,10 +319,13 @@ public class ModBlocks { public static Block reinforced_brick; public static Block reinforced_ducrete; public static Block reinforced_glass; + public static Block reinforced_glass_pane; public static Block reinforced_light; public static Block reinforced_sand; public static Block reinforced_lamp_off; public static Block reinforced_lamp_on; + public static Block reinforced_laminate; + public static Block reinforced_laminate_pane; public static Block lamp_tritium_green_off; public static Block lamp_tritium_green_on; @@ -324,6 +339,7 @@ public class ModBlocks { public static Block reinforced_stone; public static Block concrete_smooth; public static Block concrete_colored; + public static Block concrete_colored_ext; public static Block concrete; public static Block concrete_asbestos; public static Block concrete_super; @@ -479,11 +495,13 @@ public class ModBlocks { public static Block glass_ash; public static Block glass_quartz; - public static Block mush; public static Block mush_block; public static Block mush_block_stem; + public static Block glyphid_base; + public static Block glyphid_spawner; + public static Block plant_flower; public static Block plant_tall; public static Block plant_dead; @@ -585,6 +603,7 @@ public class ModBlocks { public static Block vault_door; public static Block blast_door; + public static Block sliding_blast_door; public static Block fire_door; public static Block transition_seal; @@ -618,11 +637,12 @@ public class ModBlocks { public static Block sat_dock; public static Block soyuz_capsule; - + public static Block crate_iron; public static Block crate_steel; public static Block crate_desh; public static Block crate_tungsten; + public static Block crate_template; public static Block safe; public static Block mass_storage; @@ -654,12 +674,15 @@ public class ModBlocks { public static Block machine_sawmill; public static Block machine_crucible; public static Block machine_boiler; + public static Block machine_industrial_boiler; public static Block foundry_mold; public static Block foundry_basin; public static Block foundry_channel; public static Block foundry_tank; public static Block foundry_outlet; + public static Block foundry_slagtap; + public static Block slag; public static Block machine_difurnace_off; public static Block machine_difurnace_on; @@ -720,6 +743,7 @@ public class ModBlocks { public static Block hadron_analysis_glass; public static Block hadron_access; public static Block hadron_core; + public static Block hadron_cooler; public static Block machine_electric_furnace_off; public static Block machine_electric_furnace_on; @@ -738,6 +762,12 @@ public class ModBlocks { public static Block machine_dineutronium_battery; public static Block machine_fensu; public static final int guiID_machine_fensu = 99; + + public static Block capacitor_bus; + public static Block capacitor_copper; + public static Block capacitor_gold; + public static Block capacitor_niobium; + public static Block capacitor_tantalium; public static Block machine_coal_off; public static Block machine_coal_on; @@ -754,18 +784,18 @@ public class ModBlocks { public static Block cable_detector; public static Block cable_diode; public static Block machine_detector; - public static Block oil_duct_solid; - public static Block oil_duct; - public static Block gas_duct_solid; - public static Block gas_duct; public static Block fluid_duct; public static Block fluid_duct_solid; public static Block fluid_duct_neo; public static Block fluid_duct_box; public static Block fluid_duct_paintable; public static Block fluid_duct_gauge; + public static Block fluid_duct_exhaust; + public static Block fluid_valve; + public static Block fluid_switch; public static Block radio_torch_sender; public static Block radio_torch_receiver; + public static Block radio_torch_counter; public static Block conveyor; //public static Block conveyor_classic; @@ -775,12 +805,15 @@ public class ModBlocks { public static Block conveyor_lift; public static Block crane_extractor; public static Block crane_inserter; + public static Block crane_grabber; public static Block crane_router; public static Block crane_boxer; public static Block crane_unboxer; public static Block crane_splitter; public static Block fan; + + public static Block piston_inserter; public static Block chain; @@ -821,6 +854,7 @@ public class ModBlocks { public static Block struct_soyuz_core; public static Block struct_iter_core; public static Block struct_plasma_core; + public static Block struct_watz_core; public static Block factory_titanium_hull; @Deprecated public static Block factory_titanium_furnace; @@ -830,6 +864,14 @@ public class ModBlocks { @Deprecated public static Block factory_advanced_furnace; @Deprecated public static Block factory_advanced_conductor; + public static Block cm_block; + public static Block cm_sheet; + public static Block cm_engine; + public static Block cm_tank; + public static Block cm_circuit; + public static Block cm_port; + public static Block custom_machine; + public static Block reactor_element; public static Block reactor_control; public static Block reactor_hatch; @@ -848,8 +890,9 @@ public class ModBlocks { public static Block iter; public static Block plasma_heater; - + public static Block watz; + public static Block watz_pump; public static Block watz_element; public static Block watz_control; @@ -903,7 +946,6 @@ public class ModBlocks { public static Block field_disturber; public static Block machine_rtg_grey; - public static Block machine_rtg_cyan; public static Block machine_amgen; public static Block machine_geo; public static Block machine_minirtg; @@ -917,6 +959,7 @@ public class ModBlocks { public static Block machine_fracking_tower; public static Block machine_flare; + public static Block chimney_brick; public static Block machine_refinery; public static Block machine_vacuum_distill; @@ -924,6 +967,7 @@ public class ModBlocks { public static Block fraction_spacer; public static Block machine_catalytic_cracker; public static Block machine_catalytic_reformer; + public static Block machine_coker; public static Block machine_boiler_off; public static Block machine_boiler_on; @@ -940,6 +984,7 @@ public class ModBlocks { public static Block machine_liquefactor; public static Block machine_solidifier; + public static Block machine_compressor; public static Block machine_chungus; public static Block machine_condenser; @@ -1079,6 +1124,13 @@ public class ModBlocks { public static Block rail_narrow; public static Block rail_highspeed; public static Block rail_booster; + + public static Block rail_narrow_straight; + public static Block rail_narrow_curve; + public static Block rail_large_straight; + public static Block rail_large_curve; + public static Block rail_large_ramp; + public static Block rail_large_buffer; public static Block statue_elb; public static Block statue_elb_g; @@ -1162,8 +1214,6 @@ public class ModBlocks { public static Block dummy_block_drill; public static Block dummy_port_drill; - public static Block dummy_block_assembler; - public static Block dummy_port_assembler; public static Block dummy_block_ams_limiter; public static Block dummy_port_ams_limiter; public static Block dummy_block_ams_emitter; @@ -1308,6 +1358,7 @@ public class ModBlocks { stone_resource = new BlockResourceStone().setBlockName("stone_resource").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); stalagmite = new BlockStalagmite().setBlockName("stalagmite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); stalactite = new BlockStalagmite().setBlockName("stalactite").setCreativeTab(MainRegistry.blockTab).setHardness(0.5F).setResistance(2.0F); + stone_biome = new BlockBiomeStone().setBlockName("stone_biome").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F); stone_deep_cobble = new BlockDeepCobble().setBlockName("stone_deep_cobble").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(30.0F); basalt = new BlockGeneric(Material.rock).setBlockName("basalt").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":basalt"); @@ -1371,8 +1422,11 @@ public class ModBlocks { block_aluminium = new BlockBeaconable(Material.iron).setBlockName("block_aluminium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_aluminium"); block_fluorite = new BlockBeaconable(Material.iron).setBlockName("block_fluorite").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_fluorite"); block_steel = new BlockBeaconable(Material.iron).setBlockName("block_steel").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); + block_tcalloy = new BlockBeaconable(Material.iron).setBlockName("block_tcalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_tcalloy"); + block_cdalloy = new BlockBeaconable(Material.iron).setBlockName("block_cdalloy").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_cdalloy"); block_lead = new BlockBeaconable(Material.iron).setBlockName("block_lead").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_lead"); block_bismuth = new BlockBeaconable(Material.iron).setBlockName("block_bismuth").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_bismuth"); + block_cadmium = new BlockBeaconable(Material.iron).setBlockName("block_cadmium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_cadmium"); block_coltan = new BlockBeaconable(Material.iron).setBlockName("block_coltan").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_coltan"); block_tantalium = new BlockBeaconable(Material.iron).setBlockName("block_tantalium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); block_niobium = new BlockBeaconable(Material.iron).setBlockName("block_niobium").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(30.0F); @@ -1433,7 +1487,7 @@ public class ModBlocks { block_semtex = new BlockPlasticExplosive(Material.tnt).setBlockName("block_semtex").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_semtex"); block_c4 = new BlockPlasticExplosive(Material.tnt).setBlockName("block_c4").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(2.0F).setResistance(2.0F).setBlockTextureName(RefStrings.MODID + ":block_c4"); block_smore = new BlockPillar(Material.rock, RefStrings.MODID + ":block_smore_top").setBlockName("block_smore").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(900.0F).setBlockTextureName(RefStrings.MODID + ":block_smore_side"); - block_slag = new BlockBeaconable(Material.iron).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); + block_slag = new BlockSlag(Material.rock).setBlockName("block_slag").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeStone).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_slag"); block_australium = new BlockBeaconable(Material.iron).setBlockName("block_australium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_australium"); block_weidanium = new BlockBeaconable(Material.iron).setBlockName("block_weidanium").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":block_weidanium"); @@ -1463,6 +1517,7 @@ public class ModBlocks { deco_rbmk_smooth = new BlockGeneric(Material.iron).setBlockName("deco_rbmk_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":rbmk/rbmk_top"); deco_emitter = new BlockEmitter().setBlockName("deco_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":emitter"); + part_emitter = new PartEmitter().setBlockName("part_emitter").setCreativeTab(MainRegistry.blockTab).setHardness(5.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":part_top"); deco_loot = new BlockLoot().setBlockName("deco_loot").setCreativeTab(null).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); bobblehead = new BlockBobble().setBlockName("bobblehead").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":block_steel"); snowglobe = new BlockSnowglobe().setBlockName("snowglobe").setCreativeTab(MainRegistry.blockTab).setHardness(0.0F).setResistance(0.0F).setBlockTextureName(RefStrings.MODID + ":glass_boron"); @@ -1475,11 +1530,14 @@ public class ModBlocks { reinforced_brick = new BlockGeneric(Material.rock).setBlockName("reinforced_brick").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(8000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_brick"); reinforced_glass = new BlockNTMGlassCT(0, RefStrings.MODID + ":reinforced_glass", Material.rock).setBlockName("reinforced_glass").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(200.0F); + reinforced_glass_pane = new BlockNTMGlassPane(0, RefStrings.MODID + ":reinforced_glass_pane", RefStrings.MODID + ":reinforced_glass_pane_edge", Material.rock, false).setBlockName("reinforced_glass_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(200.0F); reinforced_light = new BlockGeneric(Material.rock).setBlockName("reinforced_light").setCreativeTab(MainRegistry.blockTab).setLightLevel(1.0F).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_light"); reinforced_sand = new BlockGeneric(Material.rock).setBlockName("reinforced_sand").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(400.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_sand"); reinforced_lamp_off = new ReinforcedLamp(Material.rock, false).setBlockName("reinforced_lamp_off").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_off"); reinforced_lamp_on = new ReinforcedLamp(Material.rock, true).setBlockName("reinforced_lamp_on").setHardness(15.0F).setResistance(300.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_lamp_on"); - + reinforced_laminate = new BlockNTMGlassCT(1, RefStrings.MODID + ":reinforced_laminate", Material.rock, true).setBlockName("reinforced_laminate").setCreativeTab(MainRegistry.blockTab).setLightOpacity(0).setHardness(15.0F).setResistance(1000.0F); + reinforced_laminate_pane = new BlockNTMGlassPane(1, RefStrings.MODID + ":reinforced_laminate_pane", RefStrings.MODID + ":reinforced_laminate_pane_edge", Material.rock, true).setBlockName("reinforced_laminate_pane").setCreativeTab(MainRegistry.blockTab).setLightOpacity(1).setHardness(15.0F).setResistance(1000.0F); + lamp_tritium_green_off = new ReinforcedLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_green_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_off"); lamp_tritium_green_on = new ReinforcedLamp(Material.redstoneLight, true).setBlockName("lamp_tritium_green_on").setStepSound(Block.soundTypeGlass).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_green_on"); lamp_tritium_blue_off = new ReinforcedLamp(Material.redstoneLight, false).setBlockName("lamp_tritium_blue_off").setStepSound(Block.soundTypeGlass).setCreativeTab(MainRegistry.blockTab).setHardness(3.0F).setBlockTextureName(RefStrings.MODID + ":lamp_tritium_blue_off"); @@ -1492,13 +1550,14 @@ public class ModBlocks { reinforced_stone = new BlockGeneric(Material.rock).setBlockName("reinforced_stone").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(3000.0F).setBlockTextureName(RefStrings.MODID + ":reinforced_stone"); concrete_smooth = new BlockRadResistant(Material.rock).setBlockName("concrete_smooth").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); concrete_colored = new BlockConcreteColored(Material.rock).setBlockName("concrete_colored").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete"); + concrete_colored_ext = new BlockConcreteColoredExt(Material.rock).setBlockName("concrete_colored_ext").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_colored_ext"); concrete = new BlockGeneric(Material.rock).setBlockName("concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_tile"); concrete_asbestos = new BlockGeneric(Material.rock).setBlockName("concrete_asbestos").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_asbestos"); concrete_super = new BlockUberConcrete().setBlockName("concrete_super").setCreativeTab(MainRegistry.blockTab).setHardness(150.0F).setResistance(10000.0F); concrete_super_broken = new BlockFalling(Material.rock).setBlockName("concrete_super_broken").setCreativeTab(MainRegistry.blockTab).setHardness(10.0F).setResistance(20.0F).setBlockTextureName(RefStrings.MODID + ":concrete_super_broken"); - concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(4000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); - brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); - brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy"); + concrete_pillar = new BlockRotatablePillar(Material.rock, RefStrings.MODID + ":concrete_pillar_top").setBlockName("concrete_pillar").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(6000.0F).setBlockTextureName(RefStrings.MODID + ":concrete_pillar_side"); + brick_concrete = new BlockGeneric(Material.rock).setBlockName("brick_concrete").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); + brick_concrete_mossy = new BlockGeneric(Material.rock).setBlockName("brick_concrete_mossy").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(5000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_mossy"); brick_concrete_cracked = new BlockGeneric(Material.rock).setBlockName("brick_concrete_cracked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(2000.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_cracked"); brick_concrete_broken = new BlockGeneric(Material.rock).setBlockName("brick_concrete_broken").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_broken"); brick_concrete_marked = new BlockWriting(Material.rock, RefStrings.MODID + ":brick_concrete").setBlockName("brick_concrete_marked").setCreativeTab(MainRegistry.blockTab).setHardness(15.0F).setResistance(1500.0F).setBlockTextureName(RefStrings.MODID + ":brick_concrete_marked"); @@ -1649,6 +1708,8 @@ public class ModBlocks { mush = new BlockMush(Material.plants).setBlockName("mush").setCreativeTab(MainRegistry.blockTab).setLightLevel(0.5F).setStepSound(Block.soundTypeGrass).setBlockTextureName(RefStrings.MODID + ":mush"); mush_block = new BlockMushHuge(Material.plants).setBlockName("mush_block").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_skin"); mush_block_stem = new BlockMushHuge(Material.plants).setBlockName("mush_block_stem").setLightLevel(1.0F).setStepSound(Block.soundTypeGrass).setHardness(0.2F).setBlockTextureName(RefStrings.MODID + ":mush_block_stem"); + glyphid_base = new BlockBase(Material.coral).setBlockName("glyphid_base").setStepSound(Block.soundTypeCloth).setHardness(0.5F); + glyphid_spawner = new BlockGlyphidSpawner(Material.coral).setBlockName("glyphid_spawner").setStepSound(Block.soundTypeCloth).setHardness(0.5F).setBlockTextureName(RefStrings.MODID + ":glyphid_base"); plant_flower = new BlockNTMFlower().setBlockName("plant_flower").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); plant_tall = new BlockTallPlant().setBlockName("plant_tall").setCreativeTab(MainRegistry.blockTab).setStepSound(Block.soundTypeGrass).setHardness(0.0F); @@ -1759,12 +1820,15 @@ public class ModBlocks { machine_sawmill = new MachineSawmill().setBlockName("machine_sawmill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_crucible = new MachineCrucible().setBlockName("machine_crucible").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); machine_boiler = new MachineHeatBoiler().setBlockName("machine_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + machine_industrial_boiler = new MachineHeatBoilerIndustrial().setBlockName("machine_industrial_boiler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); foundry_mold = new FoundryMold().setBlockName("foundry_mold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_basin = new FoundryBasin().setBlockName("foundry_basin").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_channel = new FoundryChannel().setBlockName("foundry_channel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_tank = new FoundryTank().setBlockName("foundry_tank").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); foundry_outlet = new FoundryOutlet().setBlockName("foundry_outlet").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + foundry_slagtap = new FoundrySlagtap().setBlockName("foundry_slagtap").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); + slag = new BlockDynamicSlag().setBlockName("slag").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":slag"); machine_difurnace_off = new MachineDiFurnace(false).setBlockName("machine_difurnace_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_difurnace_on = new MachineDiFurnace(true).setBlockName("machine_difurnace_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -1821,6 +1885,7 @@ public class ModBlocks { hadron_analysis_glass = new BlockNTMGlass(0, RefStrings.MODID + ":hadron_analysis_glass", Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_analysis_glass").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_analysis_glass"); hadron_access = new BlockHadronAccess(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_access").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_access"); hadron_core = new BlockHadronCore(Material.iron).setStepSound(Block.soundTypeMetal).setBlockName("hadron_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":hadron_core"); + hadron_cooler = new BlockHadronCooler(Material.iron).setBlockName("hadron_cooler").setCreativeTab(MainRegistry.blockTab).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); @@ -1830,13 +1895,19 @@ public class ModBlocks { //machine_deuterium = new MachineDeuterium(Material.iron).setBlockName("machine_deuterium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_battery_potato = new MachineBattery(Material.iron, 10000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_battery = new MachineBattery(Material.iron, 1000000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_lithium_battery = new MachineBattery(Material.iron, 50000000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_schrabidium_battery = new MachineBattery(Material.iron, 25000000000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_dineutronium_battery = new MachineBattery(Material.iron, 1000000000000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_battery_potato = new MachineBattery(Material.iron, 10_000).setBlockName("machine_battery_potato").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_battery = new MachineBattery(Material.iron, 1_000_000).setBlockName("machine_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_lithium_battery = new MachineBattery(Material.iron, 50_000_000).setBlockName("machine_lithium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_schrabidium_battery = new MachineBattery(Material.iron, 25_000_000_000L).setBlockName("machine_schrabidium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_dineutronium_battery = new MachineBattery(Material.iron, 1_000_000_000_000L).setBlockName("machine_dineutronium_battery").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_fensu = new MachineFENSU(Material.iron).setBlockName("machine_fensu").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_fensu"); + capacitor_bus = new MachineCapacitorBus(Material.iron).setBlockName("capacitor_bus").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + capacitor_copper = new MachineCapacitor(Material.iron, 1_000_000L, "copper").setBlockName("capacitor_copper").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_copper"); + capacitor_gold = new MachineCapacitor(Material.iron, 5_000_000L, "gold").setBlockName("capacitor_gold").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName("gold_block"); + capacitor_niobium = new MachineCapacitor(Material.iron, 25_000_000L, "niobium").setBlockName("capacitor_niobium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_niobium"); + capacitor_tantalium = new MachineCapacitor(Material.iron, 100_000_000L, "tantalium").setBlockName("capacitor_tantalium").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_tantalium"); + machine_coal_off = new MachineCoal(false).setBlockName("machine_coal_off").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_coal_on = new MachineCoal(true).setBlockName("machine_coal_on").setHardness(5.0F).setLightLevel(1.0F).setResistance(10.0F); @@ -1846,20 +1917,13 @@ public class ModBlocks { machine_shredder = new MachineShredder(Material.iron).setBlockName("machine_shredder").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_shredder_large = new MachineShredderLarge(Material.iron).setBlockName("machine_shredder_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":code"); - machine_combine_factory = new MachineCMBFactory(Material.iron).setBlockName("machine_combine_factory").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + machine_combine_factory = new MachineCMBFactory(Material.iron).setBlockName("machine_combine_factory").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null); machine_teleporter = new MachineTeleporter(Material.iron).setBlockName("machine_teleporter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); teleanchor = new MachineTeleanchor().setBlockName("teleanchor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); field_disturber = new MachineFieldDisturber().setBlockName("field_disturber").setHardness(5.0F).setResistance(200.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":field_disturber"); machine_rtg_grey = new MachineRTG(Material.iron).setBlockName("machine_rtg_grey").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg"); - //machine_rtg_red = new MachineRTG(Material.iron).setBlockName("machine_rtg_red").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_orange = new MachineRTG(Material.iron).setBlockName("machine_rtg_orange").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_yellow = new MachineRTG(Material.iron).setBlockName("machine_rtg_yellow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_green = new MachineRTG(Material.iron).setBlockName("machine_rtg_green").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - machine_rtg_cyan = new MachineRTG(Material.iron).setBlockName("machine_rtg_cyan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_blue = new MachineRTG(Material.iron).setBlockName("machine_rtg_blue").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - //machine_rtg_purple = new MachineRTG(Material.iron).setBlockName("machine_rtg_purple").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_amgen = new MachineAmgen(Material.iron).setBlockName("machine_amgen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_geo = new MachineAmgen(Material.iron).setBlockName("machine_geo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); machine_minirtg = new MachineMiniRTG(Material.iron).setBlockName("machine_minirtg").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtg_cell"); @@ -1879,18 +1943,18 @@ public class ModBlocks { cable_detector = new CableDetector(Material.iron).setBlockName("cable_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); cable_diode = new CableDiode(Material.iron).setBlockName("cable_diode").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":cable_diode"); machine_detector = new PowerDetector(Material.iron).setBlockName("machine_detector").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_detector_off"); - oil_duct_solid = new OilDuctSolid(Material.iron).setBlockName("oil_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_solid_alt"); - oil_duct = new BlockOilDuct(Material.iron).setBlockName("oil_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_duct_icon_alt"); - gas_duct_solid = new GasDuctSolid(Material.iron).setBlockName("gas_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_solid"); - gas_duct = new BlockGasDuct(Material.iron).setBlockName("gas_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":gas_duct_icon"); fluid_duct = new BlockFluidDuct(Material.iron).setBlockName("fluid_duct").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_icon"); fluid_duct_solid = new BlockFluidDuctSolid(Material.iron).setBlockName("fluid_duct_solid").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fluid_duct_solid"); fluid_duct_neo = new FluidDuctStandard(Material.iron).setBlockName("fluid_duct_neo").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pipe_neo"); fluid_duct_box = new FluidDuctBox(Material.iron).setBlockName("fluid_duct_box").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); + fluid_duct_exhaust = new FluidDuctBoxExhaust(Material.iron).setBlockName("fluid_duct_exhaust").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fluid_duct_box"); fluid_duct_paintable = new FluidDuctPaintable().setBlockName("fluid_duct_paintable").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); fluid_duct_gauge = new FluidDuctGauge().setBlockName("fluid_duct_gauge").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_valve = new FluidValve(Material.iron).setBlockName("fluid_valve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fluid_switch = new FluidSwitch(Material.iron).setBlockName("fluid_switch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_sender = new RadioTorchSender().setBlockName("radio_torch_sender").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); radio_torch_receiver = new RadioTorchReceiver().setBlockName("radio_torch_receiver").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + radio_torch_counter = new RadioTorchCounter().setBlockName("radio_torch_counter").setHardness(0.1F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":rtty_counter"); conveyor = new BlockConveyor().setBlockName("conveyor").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); //conveyor_classic = new BlockConveyorClassic().setBlockName("conveyor_classic").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); @@ -1900,12 +1964,15 @@ public class ModBlocks { conveyor_lift = new BlockConveyorLift().setBlockName("conveyor_lift").setHardness(2.0F).setResistance(2.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":conveyor"); crane_extractor = new CraneExtractor().setBlockName("crane_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_inserter = new CraneInserter().setBlockName("crane_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_grabber = new CraneGrabber().setBlockName("crane_grabber").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_router = new CraneRouter().setBlockName("crane_router").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); - crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + crane_splitter = new CraneSplitter().setBlockName("crane_splitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":crane_side"); fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + piston_inserter = new PistonInserter().setBlockName("piston_inserter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); ladder_sturdy = new BlockNTMLadder().setBlockName("ladder_sturdy").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":ladder_sturdy"); @@ -1945,6 +2012,7 @@ public class ModBlocks { struct_soyuz_core = new BlockSoyuzStruct(Material.iron).setBlockName("struct_soyuz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":struct_soyuz_core"); struct_iter_core = new BlockITERStruct(Material.iron).setBlockName("struct_iter_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_iter_core"); struct_plasma_core = new BlockPlasmaStruct(Material.iron).setBlockName("struct_plasma_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_plasma_core"); + struct_watz_core = new BlockWatzStruct(Material.iron).setBlockName("struct_watz_core").setLightLevel(1F).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":struct_watz_core"); factory_titanium_hull = new BlockGeneric(Material.iron).setBlockName("factory_titanium_hull").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_hull"); factory_titanium_furnace = new FactoryHatch(Material.iron).setBlockName("factory_titanium_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_titanium_furnace"); @@ -1953,6 +2021,14 @@ public class ModBlocks { factory_advanced_furnace = new FactoryHatch(Material.iron).setBlockName("factory_advanced_furnace").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_furnace"); factory_advanced_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":factory_advanced_conductor").setBlockName("factory_advanced_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":factory_advanced_hull"); + cm_block = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_block").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_block"); + cm_sheet = new BlockCM(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_sheet").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_sheet"); + cm_engine = new BlockCM(Material.iron, EnumCMEngines.class, true, true).setBlockName("cm_engine").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_engine"); + cm_tank = new BlockCMGlass(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_tank").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_tank"); + cm_circuit = new BlockCM(Material.iron, EnumCMCircuit.class, true, true).setBlockName("cm_circuit").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_circuit"); + cm_port = new BlockCMPort(Material.iron, EnumCMMaterials.class, true, true).setBlockName("cm_port").setCreativeTab(MainRegistry.machineTab).setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":cm_port"); + custom_machine = new BlockCustomMachine().setBlockName("custom_machine").setCreativeTab(MainRegistry.machineTab).setLightLevel(1F).setHardness(5.0F).setResistance(10.0F); + reactor_element = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_element_top", RefStrings.MODID + ":reactor_element_base").setBlockName("reactor_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_element_side"); reactor_control = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_control_top").setBlockName("reactor_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_control_side"); reactor_hatch = new ReactorHatch(Material.iron).setBlockName("reactor_hatch").setHardness(5.0F).setResistance(1000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_concrete"); @@ -1961,7 +2037,7 @@ public class ModBlocks { reactor_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":reactor_conductor_top").setBlockName("reactor_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_conductor_side"); reactor_computer = new ReactorCore(Material.iron).setBlockName("reactor_computer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":reactor_computer"); - fusion_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_conductor_top_alt").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor_side_alt"); + fusion_conductor = new BlockToolConversionPillar(Material.iron).addVariant("_welded").setBlockName("fusion_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_conductor"); fusion_center = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_center_top_alt").setBlockName("fusion_center").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_center_side_alt"); fusion_motor = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_motor_top_alt").setBlockName("fusion_motor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_motor_side_alt"); fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side"); @@ -1973,12 +2049,13 @@ public class ModBlocks { watz_element = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_element_top").setBlockName("watz_element").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_element_side"); watz_control = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_control_top").setBlockName("watz_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_control_side"); - watz_cooler = new BlockGeneric(Material.iron).setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler"); - watz_end = new BlockGeneric(Material.iron).setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); + watz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":watz_cooler_top").setBlockName("watz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_cooler_side"); + watz_end = new BlockToolConversion(Material.iron).addVariant("_bolted").setBlockName("watz_end").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_casing"); watz_hatch = new WatzHatch(Material.iron).setBlockName("watz_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_hatch"); watz_conductor = new BlockCableConnect(Material.iron).setBlockName("watz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_conductor_top"); watz_core = new WatzCore(Material.iron).setBlockName("watz_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":watz_computer"); watz = new Watz().setBlockName("watz").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + watz_pump = new WatzPump().setBlockName("watz_pump").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fwatz_conductor = new BlockPillar(Material.iron, RefStrings.MODID + ":block_combine_steel").setBlockName("fwatz_conductor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fwatz_conductor_side"); fwatz_cooler = new BlockPillar(Material.iron, RefStrings.MODID + ":fwatz_cooler_top").setBlockName("fwatz_cooler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fwatz_cooler"); @@ -2012,6 +2089,9 @@ public class ModBlocks { vault_door = new VaultDoor(Material.iron).setBlockName("vault_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":vault_door"); blast_door = new BlastDoor(Material.iron).setBlockName("blast_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":blast_door"); + + sliding_blast_door = new BlockDoorGeneric(Material.iron, DoorDecl.SLIDE_DOOR).setBlockName("sliding_blast_door").setHardness(150.0F).setResistance(7500.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":sliding_blast_door"); + fire_door = new BlockDoorGeneric(Material.iron, DoorDecl.FIRE_DOOR).setBlockName("fire_door").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":fire_door"); transition_seal = new BlockDoorGeneric(Material.iron, DoorDecl.TRANSITION_SEAL).setBlockName("transition_seal").setHardness(10.0F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":transition_seal"); @@ -2100,6 +2180,12 @@ public class ModBlocks { rail_narrow = new RailGeneric().setBlockName("rail_narrow").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_narrow"); rail_highspeed = new RailGeneric().setMaxSpeed(1F).setFlexible(false).setBlockName("rail_highspeed").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_highspeed"); rail_booster = new RailBooster().setBlockName("rail_booster").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":rail_booster"); + rail_narrow_straight = new RailNarrowStraight().setBlockName("rail_narrow_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); + rail_narrow_curve = new RailNarrowCurve().setBlockName("rail_narrow_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_narrow_neo"); + rail_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_ramp = new RailStandardRamp().setBlockName("rail_large_ramp").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_straight"); + rail_large_buffer = new RailStandardBuffer().setBlockName("rail_large_buffer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":rail_standard_buffer"); crate = new BlockCrate(Material.wood).setBlockName("crate").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate"); crate_weapon = new BlockCrate(Material.wood).setBlockName("crate_weapon").setStepSound(Block.soundTypeWood).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.consumableTab).setBlockTextureName(RefStrings.MODID + ":crate_weapon"); @@ -2113,6 +2199,7 @@ public class ModBlocks { crate_steel = new BlockStorageCrate(Material.iron).setBlockName("crate_steel").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crate_desh = new BlockStorageCrate(Material.iron).setBlockName("crate_desh").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crate_tungsten = new BlockStorageCrate(Material.iron).setBlockName("crate_tungsten").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); + crate_template = new BlockStorageCrate(Material.iron).setBlockName("crate_template").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(300.0F).setCreativeTab(MainRegistry.machineTab); safe = new BlockStorageCrate(Material.iron).setBlockName("safe").setStepSound(Block.soundTypeMetal).setHardness(7.5F).setResistance(10000.0F).setCreativeTab(MainRegistry.machineTab); mass_storage = new BlockMassStorage().setBlockName("mass_storage").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); @@ -2125,12 +2212,14 @@ public class ModBlocks { machine_fracking_tower = new MachineFrackingTower().setBlockName("machine_fracking_tower").setHardness(5.0F).setResistance(60.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); oil_pipe = new BlockNoDrop(Material.iron).setBlockName("oil_pipe").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":oil_pipe"); machine_flare = new MachineGasFlare(Material.iron).setBlockName("machine_flare").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + chimney_brick = new MachineChimneyBrick(Material.iron).setBlockName("chimney_brick").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":brick_fire"); machine_refinery = new MachineRefinery(Material.iron).setBlockName("machine_refinery").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_refinery"); machine_vacuum_distill = new MachineVacuumDistill(Material.iron).setBlockName("machine_vacuum_distill").setHardness(5.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_fraction_tower = new MachineFractionTower(Material.iron).setBlockName("machine_fraction_tower").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); fraction_spacer = new FractionSpacer(Material.iron).setBlockName("fraction_spacer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_catalytic_cracker = new MachineCatalyticCracker(Material.iron).setBlockName("machine_catalytic_cracker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_catalytic_reformer = new MachineCatalyticReformer(Material.iron).setBlockName("machine_catalytic_reformer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_coker = new MachineCoker(Material.iron).setBlockName("machine_coker").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_autosaw = new MachineAutosaw().setBlockName("machine_autosaw").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_drill = new MachineMiningDrill(Material.iron).setBlockName("machine_drill").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_drill"); machine_excavator = new MachineExcavator().setBlockName("machine_excavator").setHardness(5.0F).setResistance(100.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); @@ -2172,8 +2261,9 @@ public class ModBlocks { machine_deuterium_extractor = new MachineDeuteriumExtractor(Material.iron).setBlockName("machine_deuterium_extractor").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":machine_deuterium_extractor_side"); machine_deuterium_tower = new DeuteriumTower(Material.iron).setBlockName("machine_deuterium_tower").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":concrete"); - machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); + machine_liquefactor = new MachineLiquefactor().setBlockName("machine_liquefactor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_solidifier = new MachineSolidifier().setBlockName("machine_solidifier").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); + machine_compressor = new MachineCompressor().setBlockName("machine_compressor").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); machine_electrolyser = new MachineElectrolyser().setBlockName("machine_electrolyser").setHardness(10.0F).setResistance(20.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel_machine"); @@ -2280,8 +2370,6 @@ public class ModBlocks { dummy_block_drill = new DummyBlockDrill(Material.iron, false).setBlockName("dummy_block_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); dummy_port_drill = new DummyBlockDrill(Material.iron, true).setBlockName("dummy_port_drill").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_lead"); - dummy_block_assembler = new DummyBlockAssembler(Material.iron, false).setBlockName("dummy_block_assembler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); - dummy_port_assembler = new DummyBlockAssembler(Material.iron, true).setBlockName("dummy_port_assembler").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_steel"); dummy_block_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_block_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_port_ams_limiter = new DummyBlockAMSLimiter(Material.iron).setBlockName("dummy_port_ams_limiter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); dummy_block_ams_emitter = new DummyBlockAMSEmitter(Material.iron).setBlockName("dummy_block_ams_emitter").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":block_copper"); @@ -2444,9 +2532,10 @@ public class ModBlocks { GameRegistry.registerBlock(crystal_trixite, crystal_trixite.getUnlocalizedName()); //Resource-bearing Stones - GameRegistry.registerBlock(stone_resource, ItemBlockBase.class, stone_resource.getUnlocalizedName()); - GameRegistry.registerBlock(stalagmite, ItemBlockBase.class, stalagmite.getUnlocalizedName()); - GameRegistry.registerBlock(stalactite, ItemBlockBase.class, stalactite.getUnlocalizedName()); + register(stone_resource); + register(stalagmite); + register(stalactite); + register(stone_biome); //Stone Variants GameRegistry.registerBlock(stone_porous, stone_porous.getUnlocalizedName()); @@ -2498,8 +2587,11 @@ public class ModBlocks { GameRegistry.registerBlock(block_beryllium, block_beryllium.getUnlocalizedName()); GameRegistry.registerBlock(block_cobalt, block_cobalt.getUnlocalizedName()); GameRegistry.registerBlock(block_steel, block_steel.getUnlocalizedName()); + GameRegistry.registerBlock(block_tcalloy, block_tcalloy.getUnlocalizedName()); + GameRegistry.registerBlock(block_cdalloy, block_cdalloy.getUnlocalizedName()); GameRegistry.registerBlock(block_lead, block_lead.getUnlocalizedName()); GameRegistry.registerBlock(block_bismuth, block_bismuth.getUnlocalizedName()); + GameRegistry.registerBlock(block_cadmium, block_cadmium.getUnlocalizedName()); GameRegistry.registerBlock(block_coltan, block_coltan.getUnlocalizedName()); GameRegistry.registerBlock(block_tantalium, block_tantalium.getUnlocalizedName()); GameRegistry.registerBlock(block_niobium, block_niobium.getUnlocalizedName()); @@ -2585,6 +2677,7 @@ public class ModBlocks { GameRegistry.registerBlock(deco_beryllium, deco_beryllium.getUnlocalizedName()); GameRegistry.registerBlock(deco_asbestos, deco_asbestos.getUnlocalizedName()); GameRegistry.registerBlock(deco_emitter, ItemBlockBase.class, deco_emitter.getUnlocalizedName()); + GameRegistry.registerBlock(part_emitter, ItemBlockBase.class, part_emitter.getUnlocalizedName()); GameRegistry.registerBlock(deco_loot, deco_loot.getUnlocalizedName()); GameRegistry.registerBlock(bobblehead, ItemBlockMeta.class, bobblehead.getUnlocalizedName()); GameRegistry.registerBlock(snowglobe, ItemBlockMeta.class, snowglobe.getUnlocalizedName()); @@ -2610,16 +2703,20 @@ public class ModBlocks { GameRegistry.registerBlock(asphalt_light, ItemBlockBlastInfo.class, asphalt_light.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_brick, ItemBlockBlastInfo.class, reinforced_brick.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_glass, ItemBlockBlastInfo.class, reinforced_glass.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_glass_pane, ItemBlockBlastInfo.class, reinforced_glass_pane.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_light, ItemBlockBlastInfo.class, reinforced_light.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_sand, ItemBlockBlastInfo.class, reinforced_sand.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_lamp_off, ItemBlockBlastInfo.class, reinforced_lamp_off.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_lamp_on, ItemBlockBlastInfo.class, reinforced_lamp_on.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_laminate, ItemBlockBlastInfo.class, reinforced_laminate.getUnlocalizedName()); + GameRegistry.registerBlock(reinforced_laminate_pane,ItemBlockBlastInfo.class, reinforced_laminate_pane.getUnlocalizedName()); //Bricks GameRegistry.registerBlock(reinforced_stone, ItemBlockBlastInfo.class, reinforced_stone.getUnlocalizedName()); GameRegistry.registerBlock(reinforced_ducrete, ItemBlockBlastInfo.class, reinforced_ducrete.getUnlocalizedName()); GameRegistry.registerBlock(concrete_smooth, ItemBlockBlastInfo.class, concrete_smooth.getUnlocalizedName()); GameRegistry.registerBlock(concrete_colored, ItemBlockColoredConcrete.class, concrete_colored.getUnlocalizedName()); + register(concrete_colored_ext); GameRegistry.registerBlock(concrete, ItemBlockBlastInfo.class, concrete.getUnlocalizedName()); GameRegistry.registerBlock(concrete_asbestos, ItemBlockBlastInfo.class, concrete_asbestos.getUnlocalizedName()); GameRegistry.registerBlock(concrete_super, ItemBlockBlastInfo.class, concrete_super.getUnlocalizedName()); @@ -2767,6 +2864,8 @@ public class ModBlocks { GameRegistry.registerBlock(mush, mush.getUnlocalizedName()); GameRegistry.registerBlock(mush_block, mush_block.getUnlocalizedName()); GameRegistry.registerBlock(mush_block_stem, mush_block_stem.getUnlocalizedName()); + GameRegistry.registerBlock(glyphid_base, glyphid_base.getUnlocalizedName()); + GameRegistry.registerBlock(glyphid_spawner, glyphid_spawner.getUnlocalizedName()); GameRegistry.registerBlock(moon_turf, moon_turf.getUnlocalizedName()); //Waste @@ -2916,7 +3015,8 @@ public class ModBlocks { GameRegistry.registerBlock(blast_door, blast_door.getUnlocalizedName()); GameRegistry.registerBlock(fire_door, fire_door.getUnlocalizedName()); GameRegistry.registerBlock(transition_seal, transition_seal.getUnlocalizedName()); - + GameRegistry.registerBlock(sliding_blast_door, sliding_blast_door.getUnlocalizedName()); + //Doors GameRegistry.registerBlock(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerBlock(door_office, door_office.getUnlocalizedName()); @@ -2927,6 +3027,7 @@ public class ModBlocks { register(crate_steel); register(crate_desh); register(crate_tungsten); + register(crate_template); register(safe); register(mass_storage); @@ -2969,11 +3070,14 @@ public class ModBlocks { register(machine_sawmill); register(machine_crucible); register(machine_boiler); + register(machine_industrial_boiler); register(foundry_mold); register(foundry_basin); register(foundry_channel); register(foundry_tank); register(foundry_outlet); + register(foundry_slagtap); + register(slag); register(machine_difurnace_off); register(machine_difurnace_on); register(machine_difurnace_extension); @@ -3040,6 +3144,7 @@ public class ModBlocks { GameRegistry.registerBlock(hadron_analysis_glass, hadron_analysis_glass.getUnlocalizedName()); GameRegistry.registerBlock(hadron_access, hadron_access.getUnlocalizedName()); GameRegistry.registerBlock(hadron_core, hadron_core.getUnlocalizedName()); + register(hadron_cooler); GameRegistry.registerBlock(rbmk_rod, rbmk_rod.getUnlocalizedName()); GameRegistry.registerBlock(rbmk_rod_mod, rbmk_rod_mod.getUnlocalizedName()); @@ -3080,21 +3185,22 @@ public class ModBlocks { GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName()); GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName()); GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName()); - GameRegistry.registerBlock(oil_duct, oil_duct.getUnlocalizedName()); - GameRegistry.registerBlock(oil_duct_solid, oil_duct_solid.getUnlocalizedName()); - GameRegistry.registerBlock(gas_duct, gas_duct.getUnlocalizedName()); - GameRegistry.registerBlock(gas_duct_solid, gas_duct_solid.getUnlocalizedName()); GameRegistry.registerBlock(fluid_duct, fluid_duct.getUnlocalizedName()); register(fluid_duct_neo); register(fluid_duct_box); + register(fluid_duct_exhaust); register(fluid_duct_paintable); register(fluid_duct_gauge); GameRegistry.registerBlock(fluid_duct_solid, fluid_duct_solid.getUnlocalizedName()); + register(fluid_valve); + register(fluid_switch); register(radio_torch_sender); register(radio_torch_receiver); + register(radio_torch_counter); GameRegistry.registerBlock(crane_extractor, crane_extractor.getUnlocalizedName()); GameRegistry.registerBlock(crane_inserter, crane_inserter.getUnlocalizedName()); + GameRegistry.registerBlock(crane_grabber, crane_grabber.getUnlocalizedName()); GameRegistry.registerBlock(crane_router, crane_router.getUnlocalizedName()); GameRegistry.registerBlock(crane_boxer, crane_boxer.getUnlocalizedName()); GameRegistry.registerBlock(crane_unboxer, crane_unboxer.getUnlocalizedName()); @@ -3106,6 +3212,8 @@ public class ModBlocks { GameRegistry.registerBlock(crane_splitter, crane_splitter.getUnlocalizedName()); GameRegistry.registerBlock(fan, fan.getUnlocalizedName()); + GameRegistry.registerBlock(piston_inserter, piston_inserter.getUnlocalizedName()); + GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); GameRegistry.registerBlock(ladder_iron, ladder_iron.getUnlocalizedName()); @@ -3130,6 +3238,11 @@ public class ModBlocks { register(machine_schrabidium_battery); register(machine_dineutronium_battery); register(machine_fensu); + register(capacitor_bus); + register(capacitor_copper); + register(capacitor_gold); + register(capacitor_niobium); + register(capacitor_tantalium); GameRegistry.registerBlock(machine_transformer, machine_transformer.getUnlocalizedName()); GameRegistry.registerBlock(machine_transformer_20, machine_transformer_20.getUnlocalizedName()); GameRegistry.registerBlock(machine_transformer_dnt, machine_transformer_dnt.getUnlocalizedName()); @@ -3164,6 +3277,7 @@ public class ModBlocks { GameRegistry.registerBlock(machine_deuterium_tower, machine_deuterium_tower.getUnlocalizedName()); GameRegistry.registerBlock(machine_liquefactor, ItemBlockBase.class, machine_liquefactor.getUnlocalizedName()); GameRegistry.registerBlock(machine_solidifier, ItemBlockBase.class, machine_solidifier.getUnlocalizedName()); + register(machine_compressor); GameRegistry.registerBlock(machine_electrolyser, machine_electrolyser.getUnlocalizedName()); GameRegistry.registerBlock(machine_deaerator, machine_deaerator.getUnlocalizedName()); GameRegistry.registerBlock(machine_waste_drum, machine_waste_drum.getUnlocalizedName()); @@ -3174,14 +3288,16 @@ public class ModBlocks { register(machine_pumpjack); register(machine_fracking_tower); register(machine_flare); + register(chimney_brick); register(machine_refinery); register(machine_vacuum_distill); - GameRegistry.registerBlock(machine_fraction_tower, machine_fraction_tower.getUnlocalizedName()); - GameRegistry.registerBlock(fraction_spacer, fraction_spacer.getUnlocalizedName()); - GameRegistry.registerBlock(machine_catalytic_cracker, machine_catalytic_cracker.getUnlocalizedName()); + register(machine_fraction_tower); + register(fraction_spacer); + register(machine_catalytic_cracker); register(machine_catalytic_reformer); - GameRegistry.registerBlock(machine_drill, machine_drill.getUnlocalizedName()); - GameRegistry.registerBlock(machine_autosaw, machine_autosaw.getUnlocalizedName()); + register(machine_coker); + register(machine_drill); + register(machine_autosaw); register(machine_excavator); register(machine_mining_laser); register(barricade); @@ -3213,6 +3329,7 @@ public class ModBlocks { GameRegistry.registerBlock(struct_soyuz_core, struct_soyuz_core.getUnlocalizedName()); GameRegistry.registerBlock(struct_iter_core, struct_iter_core.getUnlocalizedName()); GameRegistry.registerBlock(struct_plasma_core, struct_plasma_core.getUnlocalizedName()); + GameRegistry.registerBlock(struct_watz_core, struct_watz_core.getUnlocalizedName()); //Absorbers GameRegistry.registerBlock(absorber, absorber.getUnlocalizedName()); @@ -3230,6 +3347,15 @@ public class ModBlocks { GameRegistry.registerBlock(factory_titanium_hull, factory_titanium_hull.getUnlocalizedName()); GameRegistry.registerBlock(factory_advanced_hull, factory_advanced_hull.getUnlocalizedName()); + //CM stuff + register(custom_machine, ItemCustomMachine.class); + register(cm_block); + register(cm_sheet); + register(cm_engine); + register(cm_tank); + register(cm_circuit); + register(cm_port); + //Multiblock Generators GameRegistry.registerBlock(reactor_element, reactor_element.getUnlocalizedName()); GameRegistry.registerBlock(reactor_control, reactor_control.getUnlocalizedName()); @@ -3239,7 +3365,7 @@ public class ModBlocks { GameRegistry.registerBlock(reactor_conductor, reactor_conductor.getUnlocalizedName()); GameRegistry.registerBlock(reactor_computer, reactor_computer.getUnlocalizedName()); - GameRegistry.registerBlock(fusion_conductor, fusion_conductor.getUnlocalizedName()); + register(fusion_conductor); GameRegistry.registerBlock(fusion_center, fusion_center.getUnlocalizedName()); GameRegistry.registerBlock(fusion_motor, fusion_motor.getUnlocalizedName()); GameRegistry.registerBlock(fusion_heater, fusion_heater.getUnlocalizedName()); @@ -3252,11 +3378,12 @@ public class ModBlocks { GameRegistry.registerBlock(watz_element, watz_element.getUnlocalizedName()); GameRegistry.registerBlock(watz_control, watz_control.getUnlocalizedName()); GameRegistry.registerBlock(watz_cooler, watz_cooler.getUnlocalizedName()); - GameRegistry.registerBlock(watz_end, watz_end.getUnlocalizedName()); + register(watz_end); GameRegistry.registerBlock(watz_hatch, watz_hatch.getUnlocalizedName()); GameRegistry.registerBlock(watz_conductor, watz_conductor.getUnlocalizedName()); GameRegistry.registerBlock(watz_core, watz_core.getUnlocalizedName()); GameRegistry.registerBlock(watz, watz.getUnlocalizedName()); + GameRegistry.registerBlock(watz_pump, watz_pump.getUnlocalizedName()); GameRegistry.registerBlock(fwatz_conductor, fwatz_conductor.getUnlocalizedName()); GameRegistry.registerBlock(fwatz_scaffold, fwatz_scaffold.getUnlocalizedName()); @@ -3311,6 +3438,12 @@ public class ModBlocks { GameRegistry.registerBlock(rail_narrow, ItemBlockBase.class, rail_narrow.getUnlocalizedName()); GameRegistry.registerBlock(rail_highspeed, ItemBlockBase.class, rail_highspeed.getUnlocalizedName()); GameRegistry.registerBlock(rail_booster, ItemBlockBase.class, rail_booster.getUnlocalizedName()); + register(rail_narrow_straight); + register(rail_narrow_curve); + register(rail_large_straight); + register(rail_large_curve); + register(rail_large_ramp); + register(rail_large_buffer); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); @@ -3341,8 +3474,6 @@ public class ModBlocks { //Multiblock Dummy Blocks GameRegistry.registerBlock(dummy_block_drill, dummy_block_drill.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_drill, dummy_port_drill.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_block_assembler, dummy_block_assembler.getUnlocalizedName()); - GameRegistry.registerBlock(dummy_port_assembler, dummy_port_assembler.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_limiter, dummy_block_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_port_ams_limiter, dummy_port_ams_limiter.getUnlocalizedName()); GameRegistry.registerBlock(dummy_block_ams_emitter, dummy_block_ams_emitter.getUnlocalizedName()); @@ -3399,7 +3530,12 @@ public class ModBlocks { GameRegistry.registerBlock(b, ItemBlockBase.class, b.getUnlocalizedName()); } - /*private static void register(Block b, Class clazz) { + private static void register(Block b, Class clazz) { GameRegistry.registerBlock(b, clazz, b.getUnlocalizedName()); - }*/ + } + + public static void addRemap(String unloc, Block block, int meta) { + Block remap = new BlockRemap(block, meta).setBlockName(unloc); + register(remap, ItemBlockRemap.class); + } } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java index cf29f747c..b6ea8e4eb 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTNTBase.java @@ -16,11 +16,13 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.world.Explosion; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public abstract class BlockTNTBase extends BlockFlammable implements IToolable { @@ -44,6 +46,8 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable { if(world.isBlockIndirectlyGettingPowered(x, y, z)) { this.onBlockDestroyedByPlayer(world, x, y, z, 1); world.setBlockToAir(x, y, z); + } else { + checkAndIgnite(world, x, y, z); } } @@ -52,6 +56,19 @@ public abstract class BlockTNTBase extends BlockFlammable implements IToolable { if(world.isBlockIndirectlyGettingPowered(x, y, z)) { this.onBlockDestroyedByPlayer(world, x, y, z, 1); world.setBlockToAir(x, y, z); + } else { + checkAndIgnite(world, x, y, z); + } + } + + public void checkAndIgnite(World world, int x, int y, int z) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) == Blocks.fire) { + this.onBlockDestroyedByPlayer(world, x, y, z, 1); + world.setBlockToAir(x, y, z); + return; + } } } diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java index 469bd6430..3b92192de 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java @@ -6,7 +6,7 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.mob.EntityTaintCrab; -import com.hbm.entity.mob.EntityTaintedCreeper; +import com.hbm.entity.mob.EntityCreeperTainted; import com.hbm.entity.mob.EntityTeslaCrab; import com.hbm.potion.HbmPotion; @@ -185,8 +185,8 @@ public class BlockTaint extends Block/*Container*/ { } } - if(entity instanceof EntityCreeper) { - EntityTaintedCreeper creep = new EntityTaintedCreeper(world); + 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) { diff --git a/src/main/java/com/hbm/blocks/bomb/Landmine.java b/src/main/java/com/hbm/blocks/bomb/Landmine.java index 6d43d6106..85ebdc82c 100644 --- a/src/main/java/com/hbm/blocks/bomb/Landmine.java +++ b/src/main/java/com/hbm/blocks/bomb/Landmine.java @@ -25,7 +25,6 @@ import net.minecraft.world.World; public class Landmine extends BlockContainer implements IBomb { public static boolean safeMode = false; - static Random rand = new Random();; public Landmine(Material p_i45386_1_) { super(p_i45386_1_); @@ -100,18 +99,23 @@ public class Landmine extends BlockContainer implements IBomb { } if(flag) { - this.dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); - world.setBlockToAir(x, y, z); + + if(!safeMode) { + explode(world, x, y, z); + } else { + world.setBlockToAir(x, y, z); + } } } - public void breakBlock(World world, int x, int y, int z, Block block, int i) { + @Override + public void onBlockDestroyedByPlayer(World world, int x, int y, int z, int meta) { if(!safeMode) { explode(world, x, y, z); } - super.breakBlock(world, x, y, z, block, i); + super.onBlockDestroyedByPlayer(world, x, y, z, meta); } public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int i, float fx, float fy, float fz) { diff --git a/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java new file mode 100644 index 000000000..157270048 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java @@ -0,0 +1,55 @@ +package com.hbm.blocks.generic; + +import java.util.Locale; + +import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockEnums.EnumBiomeType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +public class BlockBiomeStone extends BlockEnumMulti { + + public BlockBiomeStone() { + super(Material.rock, EnumBiomeType.class, true, true); + } + + protected IIcon[] iconsTop; + protected IIcon[] iconsLayer; + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + this.iconsTop = new IIcon[enums.length]; + this.iconsLayer = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US)); + this.iconsTop[i] = reg.registerIcon(this.getTextureName() + "_top." + num.name().toLowerCase(Locale.US)); + this.iconsLayer[i] = reg.registerIcon(this.getTextureName() + "_layer." + num.name().toLowerCase(Locale.US)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + int meta = world.getBlockMetadata(x, y, z); + if(side == 0) return this.iconsTop[meta % this.icons.length]; + if(side == 1) return this.iconsTop[meta % this.icons.length]; + + if(world.getBlock(x, y + 1, z) == this && world.getBlockMetadata(x, y + 1, z) == meta) { + return this.getIcon(side, meta); + } else { + return this.iconsLayer[meta % this.icons.length]; + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockBobble.java b/src/main/java/com/hbm/blocks/generic/BlockBobble.java index df84bf616..66e1c5bc9 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockBobble.java +++ b/src/main/java/com/hbm/blocks/generic/BlockBobble.java @@ -1,13 +1,9 @@ package com.hbm.blocks.generic; -import java.util.List; -import java.util.Random; - import com.hbm.inventory.gui.GUIScreenBobble; import com.hbm.items.special.ItemPlasticScrap.ScrapType; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; - import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,6 +29,9 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import java.util.List; +import java.util.Random; + public class BlockBobble extends BlockContainer implements IGUIProvider { public BlockBobble() { @@ -171,27 +170,29 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { public static enum BobbleType { - NONE( "null", "null", null, null, false, ScrapType.BOARD_BLANK), - STRENGTH( "Strength", "Strength", null, "It's essential to give your arguments impact.", false, ScrapType.BRIDGE_BIOS), - PERCEPTION( "Perception", "Perception", null, "Only through observation will you perceive weakness.", false, ScrapType.BRIDGE_NORTH), - ENDURANCE( "Endurance", "Endurance", null, "Always be ready to take one for the team.", false, ScrapType.BRIDGE_SOUTH), - CHARISMA( "Charisma", "Charisma", null, "Nothing says pizzaz like a winning smile.", false, ScrapType.BRIDGE_IO), - INTELLIGENCE( "Intelligence", "Intelligence", null, "It takes the smartest individuals to realize$there's always more to learn.", false, ScrapType.BRIDGE_BUS), - AGILITY( "Agility", "Agility", null, "Never be afraid to dodge the sensitive issues.", false, ScrapType.BRIDGE_CHIPSET), - LUCK( "Luck", "Luck", null, "There's only one way to give 110%.", false, ScrapType.BRIDGE_CMOS), - BOB( "Robert \"The Bobcat\" Katzinsky", "HbMinecraft", "Hbm's Nuclear Tech Mod", "I know where you live, " + System.getProperty("user.name"), false, ScrapType.CPU_SOCKET), - FRIZZLE( "Frooz", "Frooz", "Weapon models", "BLOOD IS FUEL", true, ScrapType.CPU_CLOCK), - PU238( "Pu-238", "Pu-238", "Improved Tom impact mechanics", null, false, ScrapType.CPU_REGISTER), - VT( "VT-6/24", "VT-6/24", "Balefire warhead model and general texturework", "You cannot unfuck a horse.", true, ScrapType.CPU_EXT), - DOC( "The Doctor", "Doctor17PH", "Russian localization, lunar miner", "Perhaps the moon rocks were too expensive", true, ScrapType.CPU_CACHE), - BLUEHAT( "The Blue Hat", "The Blue Hat", "Textures", "payday 2's deagle freeaim champ of the year 2022", true, ScrapType.MEM_16K_A), - PHEO( "Pheo", "Pheonix", "Deuterium machines, tantalium textures, Reliant Rocket", "RUN TO THE BEDROOM, ON THE SUITCASE ON THE LEFT,$YOU'LL FIND MY FAVORITE AXE", true, ScrapType.MEM_16K_B), - ADAM29( "Adam29", "Adam29", "Ethanol, liquid petroleum gas", "You know, nukes are really quite beatiful.$It's like watching a star be born for a split second.", true, ScrapType.MEM_16K_C), - UFFR( "UFFR", "UFFR", "All sorts of things from his PR", "fried shrimp", false, ScrapType.MEM_SOCKET), - VAER( "vaer", "vaer", "ZIRNOX", "taken de family out to the weekend cigarette festival", true, ScrapType.MEM_16K_D), - NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR), - DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC), - CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK); + NONE( "null", "null", null, null, false, ScrapType.BOARD_BLANK), + STRENGTH( "Strength", "Strength", null, "It's essential to give your arguments impact.", false, ScrapType.BRIDGE_BIOS), + PERCEPTION( "Perception", "Perception", null, "Only through observation will you perceive weakness.", false, ScrapType.BRIDGE_NORTH), + ENDURANCE( "Endurance", "Endurance", null, "Always be ready to take one for the team.", false, ScrapType.BRIDGE_SOUTH), + CHARISMA( "Charisma", "Charisma", null, "Nothing says pizzaz like a winning smile.", false, ScrapType.BRIDGE_IO), + INTELLIGENCE( "Intelligence", "Intelligence", null, "It takes the smartest individuals to realize$there's always more to learn.", false, ScrapType.BRIDGE_BUS), + AGILITY( "Agility", "Agility", null, "Never be afraid to dodge the sensitive issues.", false, ScrapType.BRIDGE_CHIPSET), + LUCK( "Luck", "Luck", null, "There's only one way to give 110%.", false, ScrapType.BRIDGE_CMOS), + BOB( "Robert \"The Bobcat\" Katzinsky", "HbMinecraft", "Hbm's Nuclear Tech Mod", "I know where you live, " + System.getProperty("user.name"), false, ScrapType.CPU_SOCKET), + FRIZZLE( "Frooz", "Frooz", "Weapon models", "BLOOD IS FUEL", true, ScrapType.CPU_CLOCK), + PU238( "Pu-238", "Pu-238", "Improved Tom impact mechanics", null, false, ScrapType.CPU_REGISTER), + VT( "VT-6/24", "VT-6/24", "Balefire warhead model and general texturework", "You cannot unfuck a horse.", true, ScrapType.CPU_EXT), + DOC( "The Doctor", "Doctor17PH", "Russian localization, lunar miner", "Perhaps the moon rocks were too expensive", true, ScrapType.CPU_CACHE), + BLUEHAT( "The Blue Hat", "The Blue Hat", "Textures", "payday 2's deagle freeaim champ of the year 2022", true, ScrapType.MEM_16K_A), + PHEO( "Pheo", "Pheonix", "Deuterium machines, tantalium textures, Reliant Rocket", "RUN TO THE BEDROOM, ON THE SUITCASE ON THE LEFT,$YOU'LL FIND MY FAVORITE AXE", true, ScrapType.MEM_16K_B), + ADAM29( "Adam29", "Adam29", "Ethanol, liquid petroleum gas", "You know, nukes are really quite beatiful.$It's like watching a star be born for a split second.", true, ScrapType.MEM_16K_C), + UFFR( "UFFR", "UFFR", "All sorts of things from his PR", "fried shrimp", false, ScrapType.MEM_SOCKET), + VAER( "vaer", "vaer", "ZIRNOX", "taken de family out to the weekend cigarette festival", true, ScrapType.MEM_16K_D), + NOS( "Dr Nostalgia", "Dr Nostalgia", "SSG and Vortex models", "Take a picture, I'ma pose, paparazzi$I've been drinking, moving like a zombie", true, ScrapType.BOARD_TRANSISTOR), + DRILLGON( "Drillgon200", "Drillgon200", "1.12 Port", null, false, ScrapType.CPU_LOGIC), + CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), + MICROWAVE( "Microwave", "Microwave", "OC compat", "they call me the food heater", true, ScrapType.BRIDGE_BIOS), + PEEP( "Peep", "LePeeperSauvage", "Coilgun model", "Fluffy ears can't hide in ash, nor snow.", true, ScrapType.CPU_CLOCK); 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/blocks/generic/BlockConcreteColoredExt.java b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java new file mode 100644 index 000000000..929d2281a --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockConcreteColoredExt.java @@ -0,0 +1,35 @@ +package com.hbm.blocks.generic; + +import com.hbm.blocks.BlockEnumMulti; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.util.IIcon; + +public class BlockConcreteColoredExt extends BlockEnumMulti { + + public BlockConcreteColoredExt(Material mat) { + super(mat, EnumConcreteType.class, true, true); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(meta == EnumConcreteType.MACHINE_STRIPE.ordinal() && (side == 0 || side == 1)) { + return super.getIcon(side, EnumConcreteType.MACHINE.ordinal()); + } + + return super.getIcon(side, meta); + } + + public enum EnumConcreteType { + MACHINE, + MACHINE_STRIPE, + INDIGO, + PURPLE, + PINK, + HAZARD + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java index 4dad6a3a9..ea3780a27 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java +++ b/src/main/java/com/hbm/blocks/generic/BlockDoorGeneric.java @@ -3,6 +3,7 @@ package com.hbm.blocks.generic; import java.util.List; import com.hbm.blocks.BlockDummyable; +import com.hbm.items.special.ItemDoorSkin; import com.hbm.tileentity.DoorDecl; import com.hbm.tileentity.TileEntityDoorGeneric; import com.hbm.util.fauxpointtwelve.BlockPos; @@ -54,12 +55,14 @@ public class BlockDoorGeneric extends BlockDummyable { TileEntityDoorGeneric door = (TileEntityDoorGeneric) world.getTileEntity(pos1[0], pos1[1], pos1[2]); if(door != null) { - return door.tryToggle(playerIn); + if(playerIn.getHeldItem() != null && playerIn.getHeldItem().getItem() instanceof ItemDoorSkin) { + return door.setSkinIndex((byte) playerIn.getHeldItem().getItemDamage()); + } else { + return door.tryToggle(playerIn); + } } } - if(!playerIn.isSneaking()) - return true; - return false; + return !playerIn.isSneaking(); } @Override diff --git a/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java b/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java new file mode 100644 index 000000000..fc053c80c --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockDynamicSlag.java @@ -0,0 +1,278 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +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.items.machine.ItemScraps; +import com.hbm.render.icon.RGBMutatorInterpolatedComponentRemap; +import com.hbm.render.icon.TextureAtlasSpriteMutatable; +import com.hbm.util.Compat; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockDynamicSlag extends BlockContainer { + + private HashMap iconMap = new HashMap(); + + public BlockDynamicSlag() { + super(Material.iron); + this.useNeighborBrightness = true; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntitySlag(); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + + if(reg instanceof TextureMap) { + TextureMap map = (TextureMap) reg; + + for(NTMMaterial mat : Mats.orderedList) { + if(mat.solidColorLight != mat.solidColorDark) { + String placeholderName = this.getTextureName() + "-" + mat.names[0]; + TextureAtlasSpriteMutatable mutableIcon = new TextureAtlasSpriteMutatable(placeholderName, new RGBMutatorInterpolatedComponentRemap(0xFFFFFF, 0x505050, mat.solidColorLight, mat.solidColorDark)).setBlockAtlas(); + map.setTextureEntry(placeholderName, mutableIcon); + iconMap.put(mat, mutableIcon); + } + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null && tile.mat != null) { + IIcon override = iconMap.get(tile.mat); + if(override != null) { + return override; + } + } + + return this.blockIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null && tile.mat != null) { + if(!iconMap.containsKey(tile.mat)) { + return tile.mat.moltenColor; + } + } + + return 0xffffff; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + if(tile != null) { + this.setBlockBounds(0F, 0F, 0F, 1F, (float) tile.amount / (float) TileEntitySlag.maxAmount, 1F); + } + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + if(tile != null) { + this.setBlockBounds(0F, 0F, 0F, 1F, (float) tile.amount / (float) TileEntitySlag.maxAmount, 1F); + } + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public void updateTick(World world, int x, int y, int z, Random rand) { + + TileEntity s = Compat.getTileStandard(world, x, y, z); + TileEntity b = Compat.getTileStandard(world, x, y - 1, z); + + /* Error here, delete the block */ + if(s == null || !(s instanceof TileEntitySlag)) { + world.setBlockToAir(x, y, z); + return; + } + + TileEntitySlag self = (TileEntitySlag) s; + + /* Flow down */ + if(world.getBlock(x, y - 1, z).isReplaceable(world, x, y - 1, z)) { + world.setBlock(x, y - 1, z, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, x, y - 1, z); + tile.mat = self.mat; + tile.amount = self.amount; + world.markBlockForUpdate(x, y - 1, z); + world.setBlockToAir(x, y, z); + return; + } else if(b instanceof TileEntitySlag) { + + TileEntitySlag below = (TileEntitySlag) b; + + if(below.mat == self.mat && below.amount < TileEntitySlag.maxAmount) { + int transfer = Math.min(TileEntitySlag.maxAmount - below.amount, self.amount); + below.amount += transfer; + self.amount -= transfer; + + if(self.amount <= 0){ + world.setBlockToAir(x, y, z); + } else { + world.markBlockForUpdate(x, y, z); + } + + world.markBlockForUpdate(x, y - 1, z); + world.scheduleBlockUpdate(x, y - 1, z, ModBlocks.slag, 1); + return; + } + } + + /* Flow sideways, no neighbors */ + ForgeDirection[] sides = new ForgeDirection[] { ForgeDirection.NORTH, ForgeDirection.SOUTH, ForgeDirection.EAST, ForgeDirection.WEST }; + int count = 0; + for(ForgeDirection dir : sides) { + int iX = x + dir.offsetX; + int iZ = z + dir.offsetZ; + + if(world.getBlock(iX, y, iZ).isReplaceable(world, iX, y, iZ)) { + count++; + } + } + + if(self.amount >= self.maxAmount / 5 && count > 0) { + int toSpread = Math.max(self.amount / (count * 2), 1); + + for(ForgeDirection dir : sides) { + int iX = x + dir.offsetX; + int iZ = z + dir.offsetZ; + + if(world.getBlock(iX, y, iZ).isReplaceable(world, iX, y, iZ)) { + world.setBlock(iX, y, iZ, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, iX, y, iZ); + world.markBlockForUpdate(iX, y, iZ); + world.scheduleBlockUpdate(iX, y, iZ, ModBlocks.slag, 1); + tile.mat = self.mat; + tile.amount = toSpread; + self.amount -= toSpread; + world.markBlockForUpdate(x, y, z); + } + } + } + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + this.dropBlockAsItem(world, x, y, z, meta, 0); + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + ArrayList ret = new ArrayList(); + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null && tile.mat != null && tile.amount > 0) { + ret.add(ItemScraps.create(new MaterialStack(tile.mat, tile.amount))); + } + + return ret; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z, EntityPlayer player) { + + TileEntitySlag tile = (TileEntitySlag) world.getTileEntity(x, y, z); + + if(tile != null) { + return ItemScraps.create(new MaterialStack(tile.mat, tile.amount)); + } + + return super.getPickBlock(target, world, x, y, z, player); + } + + public static class TileEntitySlag extends TileEntity { + + public NTMMaterial mat; + public int amount; + public static int maxAmount = MaterialShapes.BLOCK.q(16); + + @Override + public boolean canUpdate() { + return false; + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.mat = Mats.matById.get(nbt.getInteger("mat")); + this.amount = nbt.getInteger("amount"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + if(this.mat != null) nbt.setInteger("mat", this.mat.id); + nbt.setInteger("amount", this.amount); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java new file mode 100644 index 000000000..f02a8efba --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockGlyphidSpawner.java @@ -0,0 +1,92 @@ +package com.hbm.blocks.generic; + +import java.util.List; +import java.util.Random; + +import com.hbm.config.MobConfig; +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidBehemoth; +import com.hbm.entity.mob.EntityGlyphidBlaster; +import com.hbm.entity.mob.EntityGlyphidBombardier; +import com.hbm.entity.mob.EntityGlyphidBrawler; +import com.hbm.entity.mob.EntityGlyphidBrenda; +import com.hbm.entity.mob.EntityGlyphidNuclear; +import com.hbm.entity.mob.EntityGlyphidScout; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.items.ModItems; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.World; + +public class BlockGlyphidSpawner extends BlockContainer { + + public BlockGlyphidSpawner(Material p_i45386_1_) { + super(p_i45386_1_); + } + + @Override + public Item getItemDropped(int meta, Random rand, int fortune) { + return ModItems.egg_glyphid; + } + + @Override + public int quantityDropped(int meta, int fortune, Random rand) { + return 1 + rand.nextInt(3) + fortune; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityGlpyhidSpawner(); + } + + public static class TileEntityGlpyhidSpawner extends TileEntity { + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && worldObj.getTotalWorldTime() % 60 == 0 && this.worldObj.difficultySetting != EnumDifficulty.PEACEFUL) { + + int count = 0; + + for(Object e : worldObj.loadedEntityList) { + if(e instanceof EntityGlyphid) { + count++; + if(count >= MobConfig.spawnMax) return; + } + } + + float soot = PollutionHandler.getPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT); + List list = worldObj.getEntitiesWithinAABB(EntityGlyphid.class, AxisAlignedBB.getBoundingBox(xCoord - 6, yCoord + 1, zCoord - 6, xCoord + 7, yCoord + 9, zCoord + 7)); + + if(list.size() < 3) { + EntityGlyphid glyphid = createGlyphid(soot); + glyphid.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + this.worldObj.spawnEntityInWorld(glyphid); + } + + if(worldObj.rand.nextInt(20) == 0 && soot >= MobConfig.scoutThreshold) { + EntityGlyphidScout scout = new EntityGlyphidScout(worldObj); + scout.setLocationAndAngles(xCoord + 0.5, yCoord + 1, zCoord + 0.5, worldObj.rand.nextFloat() * 360.0F, 0.0F); + this.worldObj.spawnEntityInWorld(scout); + } + } + } + + public EntityGlyphid createGlyphid(float soot) { + Random rand = new Random(); + + if(soot < MobConfig.tier2Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBombardier(worldObj) : new EntityGlyphid(worldObj); + if(soot < MobConfig.tier3Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBombardier(worldObj) : new EntityGlyphidBrawler(worldObj); + if(soot < MobConfig.tier4Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidBehemoth(worldObj); + if(soot < MobConfig.tier5Threshold) return rand.nextInt(5) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidBrenda(worldObj); + + return rand.nextInt(3) == 0 ? new EntityGlyphidBlaster(worldObj) : new EntityGlyphidNuclear(worldObj); + } + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java b/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java index 440352102..acfdc1521 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java +++ b/src/main/java/com/hbm/blocks/generic/BlockNTMGlass.java @@ -22,19 +22,23 @@ public class BlockNTMGlass extends BlockBreakable { this.doesDrop = doesDrop; } + @Override public int quantityDropped(Random rand) { return doesDrop ? 1 : 0; } + @Override @SideOnly(Side.CLIENT) public int getRenderBlockPass() { return renderLayer; } + @Override public boolean renderAsNormalBlock() { return false; } + @Override protected boolean canSilkHarvest() { return true; } diff --git a/src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java b/src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java new file mode 100644 index 000000000..204064e52 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockNTMGlassPane.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.generic; + +import java.util.Random; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPane; +import net.minecraft.block.material.Material; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockNTMGlassPane extends BlockPane +{ + int renderLayer; + boolean doesDrop = false; + + //NOTE when you have eclipse make the constructor for you it *WILL BE 'protected'* so make sure to make this public like below. + /*public BlockNTMGlassPane(String flatFaceTextureName, String rimTextureName, + Material mat, boolean bool) { + super(flatFaceTextureName, rimTextureName, mat, bool); + // TODO Auto-generated constructor stub + this.setLightOpacity(1); + this.opaque = true; + }*/ + + public BlockNTMGlassPane(int layer, String name, String rimTextureName, Material material, boolean doesDrop) { + super(name, rimTextureName, material, false); + this.renderLayer = layer; + this.doesDrop = doesDrop; + this.opaque = true; + this.setLightOpacity(1); + } + + @Override + public boolean canPaneConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + Block b = world.getBlock(x, y, z); + return super.canPaneConnectTo(world, x, y, z, dir) || b instanceof BlockNTMGlass; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return renderLayer; + } + + @Override + public int quantityDropped(Random rand) { + return doesDrop ? 1 : 0; + } + +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockSlag.java b/src/main/java/com/hbm/blocks/generic/BlockSlag.java new file mode 100644 index 000000000..b18db55b1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockSlag.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockSlag extends BlockBeaconable { + + @SideOnly(Side.CLIENT) + private IIcon iconAlt; + + public BlockSlag(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconAlt = iconRegister.registerIcon(this.getTextureName() + "_broken"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + if(metadata == 1) return this.iconAlt; + + return this.blockIcon; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java index c92ec4f06..f8beed00c 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStalagmite.java @@ -45,6 +45,11 @@ public class BlockStalagmite extends BlockEnumMulti { return null; } + + @Override + public int damageDropped(int meta) { + return 0; + } public static int getMetaFromResource(int meta) { return meta; diff --git a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java index 8844789ea..718f26c54 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java +++ b/src/main/java/com/hbm/blocks/generic/BlockStorageCrate.java @@ -1,21 +1,19 @@ package com.hbm.blocks.generic; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; import java.util.Random; import com.hbm.blocks.IBlockMulti; +import com.hbm.blocks.ITooltipProvider; import com.hbm.blocks.ModBlocks; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemLock; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityLockableBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateDesh; -import com.hbm.tileentity.machine.storage.TileEntityCrateIron; -import com.hbm.tileentity.machine.storage.TileEntityCrateSteel; -import com.hbm.tileentity.machine.storage.TileEntityCrateTungsten; -import com.hbm.tileentity.machine.storage.TileEntitySafe; +import com.hbm.tileentity.machine.storage.*; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; @@ -27,6 +25,8 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -39,7 +39,7 @@ import net.minecraft.util.IIcon; import net.minecraft.util.MathHelper; import net.minecraft.world.World; -public class BlockStorageCrate extends BlockContainer implements IBlockMulti { +public class BlockStorageCrate extends BlockContainer implements IBlockMulti, ITooltipProvider { @SideOnly(Side.CLIENT) private IIcon iconTop; @@ -75,6 +75,9 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top"); this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side"); } + if(this == ModBlocks.crate_template) { + this.iconTop = this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":crate_template"); + } } @Override @@ -93,6 +96,7 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { if(this == ModBlocks.crate_steel) return new TileEntityCrateSteel(); if(this == ModBlocks.crate_desh) return new TileEntityCrateDesh(); if(this == ModBlocks.crate_tungsten) return new TileEntityCrateTungsten(); + if(this == ModBlocks.crate_template) return new TileEntityCrateTemplate(); if(this == ModBlocks.safe) return new TileEntitySafe(); return null; } @@ -140,6 +144,7 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { if(abyte.length > 6000) { player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.RED + "Warning: Container NBT exceeds 6kB, contents will be ejected!")); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(this))); return world.setBlockToAir(x, y, z); } @@ -270,4 +275,45 @@ public class BlockStorageCrate extends BlockContainer implements IBlockMulti { public int getSubCount() { return 0; } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + return Container.calcRedstoneFromInventory((IInventory) world.getTileEntity(x, y, z)); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + if(stack.hasTagCompound()) { + + List contents = new ArrayList(); + int amount = 0; + + for(int i = 0; i < 100; i++) { //whatever the biggest container is, i can't be bothered to check + ItemStack content = ItemStack.loadItemStackFromNBT(stack.stackTagCompound.getCompoundTag("slot" + i)); + + if(content != null) { + amount++; + + if(contents.size() < 10) { + contents.add(EnumChatFormatting.AQUA + " - " + content.getDisplayName() + (content.stackSize > 1 ? (" x" + content.stackSize) : "")); + } + } + } + + if(!contents.isEmpty()) { + list.add(EnumChatFormatting.AQUA + "Contains:"); + list.addAll(contents); + amount -= contents.size(); + + if(amount > 0) { + list.add(EnumChatFormatting.AQUA + "...and " + amount + " more."); + } + } + } + } } diff --git a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java index f9ff43fb0..f52da4c41 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java +++ b/src/main/java/com/hbm/blocks/generic/BlockTallPlant.java @@ -1,6 +1,7 @@ package com.hbm.blocks.generic; import java.util.ArrayList; +import java.util.Locale; import java.util.Random; import com.hbm.blocks.BlockEnumMulti; @@ -87,8 +88,8 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase() + ".upper"); - this.bottomIcons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase() + ".lower"); + this.icons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US) + ".upper"); + this.bottomIcons[i] = reg.registerIcon(this.getTextureName() + "." + num.name().toLowerCase(Locale.US) + ".lower"); } } @@ -177,12 +178,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { if(meta > 7) { - - if(world.getBlock(x, y - 1, z) == this) { - if(!player.capabilities.isCreativeMode) { - this.dropBlockAsItem(world, x, y - 1, z, world.getBlockMetadata(x, y - 1, z), 0); - } - } + // dead } else if(world.getBlock(x, y + 1, z) == this) { if(player.capabilities.isCreativeMode) { @@ -309,7 +305,7 @@ public class BlockTallPlant extends BlockEnumMulti implements IPlantable, IGrowa public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { ArrayList ret = super.getDrops(world, x, y, z, metadata, fortune); - if(rectify(world.getBlockMetadata(x, y, z)) == EnumTallFlower.CD4.ordinal()) { + if(metadata == EnumTallFlower.CD4.ordinal() + 8) { ret.add(DictFrame.fromOne(ModItems.plant_item, com.hbm.items.ItemEnums.EnumPlantType.MUSTARDWILLOW, 3 + world.rand.nextInt(4))); } diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java new file mode 100644 index 000000000..a4c146f6a --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversion.java @@ -0,0 +1,181 @@ +package com.hbm.blocks.generic; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.hbm.blocks.BlockMulti; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.MetaBlock; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.items.ModItems; +import com.hbm.util.I18nUtil; +import com.hbm.util.InventoryUtil; +import com.hbm.util.Tuple.Pair; + +import api.hbm.block.IToolable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class BlockToolConversion extends BlockMulti implements IToolable, ILookOverlay { + + public IIcon[] icons; + public String[] names; + + public BlockToolConversion(Material mat) { + super(mat); + } + + public BlockToolConversion addVariant(String... name) { + this.names = name; + return this; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + + if(names != null) { + icons = new IIcon[names.length]; + for(int i = 0; i < names.length; i++) { + icons[i] = iconRegister.registerIcon(getTextureName() + names[i]); + } + } + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + + int meta = stack.getItemDamage() - 1; + + if(meta == -1 || names == null || meta >= names.length) { + return this.getUnlocalizedName(); + } + + return this.getUnlocalizedName() + names[meta]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + + metadata -= 1; + + if(metadata == -1 || icons == null || metadata >= icons.length) { + return super.getIcon(side, metadata); + } + + return icons[metadata]; + } + + @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(world.isRemote) return false; + + Pair result = conversions.get(new Pair(tool, new MetaBlock(this, world.getBlockMetadata(x, y, z)))); + + if(result == null) return false; + + List list = new ArrayList(); + for(AStack stack : result.key) list.add(stack); + + if(list == null || list.isEmpty() || InventoryUtil.doesPlayerHaveAStacks(player, list, true)) { + world.setBlock(x, y, z, result.value.block, result.value.meta, 3); + return true; + } + + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(Pre event, World world, int x, int y, int z) { + + ItemStack held = Minecraft.getMinecraft().thePlayer.getHeldItem(); + if(held == null) return; + ToolType tool = this.quickLookup(held); + if(tool == null) return; + + Pair result = conversions.get(new Pair(tool, new MetaBlock(this, world.getBlockMetadata(x, y, z)))); + + if(result == null) return; + + List text = new ArrayList(); + text.add(EnumChatFormatting.GOLD + "Requires:"); + List materials = new ArrayList(); + for(AStack stack : result.key) materials.add(stack); + + List tools = tool.stacksForDisplay; + ItemStack displayTool = tools.get((int) (Math.abs(System.currentTimeMillis() / 1000) % tools.size())); + text.add(EnumChatFormatting.BLUE + "- " + displayTool.getDisplayName()); + + for(AStack stack : materials) { + try { + ItemStack display = stack.extractForCyclingDisplay(20); + text.add("- " + display.getDisplayName() + " x" + display.stackSize); + } catch(Exception ex) { + text.add(EnumChatFormatting.RED + "- ERROR"); + } + } + + if(!materials.isEmpty()) { + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(this.getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } + + @Override + public int getSubCount() { + return names != null ? names.length + 1 : 1; + } + + public static ToolType quickLookup(ItemStack stack) { + return ToolType.getType(stack); + } + + public static HashMap, Pair> conversions = new HashMap(); + + public static void registerRecipes() { + conversions.put(new Pair(ToolType.BOLT, new MetaBlock(ModBlocks.watz_end, 0)), new Pair(new AStack[] {new ComparableStack(ModItems.bolt_dura_steel, 4)}, new MetaBlock(ModBlocks.watz_end, 1))); + conversions.put(new Pair(ToolType.TORCH, new MetaBlock(ModBlocks.fusion_conductor, 0)), new Pair(new AStack[] {new OreDictStack(OreDictManager.STEEL.plateCast())}, new MetaBlock(ModBlocks.fusion_conductor, 1))); + } + + public static HashMap bufferedRecipes = new HashMap(); + public static HashMap bufferedTools = new HashMap(); + + public static HashMap getRecipes(boolean recipes) { + + if(!bufferedRecipes.isEmpty()) return recipes ? bufferedRecipes : bufferedTools; + + for(Entry, Pair> entry : conversions.entrySet()) { + + List list = new ArrayList(); + + for(AStack stack : entry.getValue().getKey()) { + list.add(stack); + } + list.add(new ComparableStack(entry.getKey().getValue().block, 1, entry.getKey().getValue().meta)); + + Object[] inputInstance = list.toArray(new AStack[0]); // the instance has to match for the machine lookup to succeed + bufferedRecipes.put(inputInstance, new ItemStack(entry.getValue().getValue().block, 1, entry.getValue().getValue().meta)); + bufferedTools.put(inputInstance, entry.getKey().getKey().stacksForDisplay.toArray(new ItemStack[0])); + } + + return recipes ? bufferedRecipes : bufferedTools; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/BlockToolConversionPillar.java b/src/main/java/com/hbm/blocks/generic/BlockToolConversionPillar.java new file mode 100644 index 000000000..630437faa --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockToolConversionPillar.java @@ -0,0 +1,48 @@ +package com.hbm.blocks.generic; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockToolConversionPillar extends BlockToolConversion { + + public IIcon[] topIcons; + public IIcon topIcon; + + public BlockToolConversionPillar(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + + this.blockIcon = iconRegister.registerIcon(this.getTextureName() + "_side"); + this.topIcon = iconRegister.registerIcon(this.getTextureName() + "_top"); + + if(names != null) { + icons = new IIcon[names.length]; + topIcons = new IIcon[names.length]; + + for(int i = 0; i < names.length; i++) { + icons[i] = iconRegister.registerIcon(getTextureName() + "_side" + names[i]); + topIcons[i] = iconRegister.registerIcon(getTextureName() + "_top" + names[i]); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + + metadata -= 1; + + if(metadata == -1 || icons == null || metadata >= icons.length) { + return side == 0 || side == 1 ? topIcon : blockIcon; + } + + return side == 0 || side == 1 ? topIcons[metadata] : icons[metadata]; + } +} diff --git a/src/main/java/com/hbm/blocks/generic/Guide.java b/src/main/java/com/hbm/blocks/generic/Guide.java index b7a5489a7..744a2d9cd 100644 --- a/src/main/java/com/hbm/blocks/generic/Guide.java +++ b/src/main/java/com/hbm/blocks/generic/Guide.java @@ -94,37 +94,6 @@ public class Guide extends Block implements ILookOverlay { return null; } - private void setDefaultDirection(World world, int x, int y, int z) { - if(!world.isRemote) - { - Block block1 = world.getBlock(x, y, z - 1); - Block block2 = world.getBlock(x, y, z + 1); - Block block3 = world.getBlock(x - 1, y, z); - Block block4 = world.getBlock(x + 1, y, z); - - byte b0 = 3; - - if(block1.func_149730_j() && !block2.func_149730_j()) - { - b0 = 3; - } - if(block2.func_149730_j() && !block1.func_149730_j()) - { - b0 = 2; - } - if(block3.func_149730_j() && !block4.func_149730_j()) - { - b0 = 5; - } - if(block4.func_149730_j() && !block3.func_149730_j()) - { - b0 = 4; - } - - world.setBlockMetadataWithNotify(x, y, z, b0, 2); - } - } - @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; diff --git a/src/main/java/com/hbm/blocks/generic/PartEmitter.java b/src/main/java/com/hbm/blocks/generic/PartEmitter.java new file mode 100644 index 000000000..db823972c --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/PartEmitter.java @@ -0,0 +1,124 @@ +package com.hbm.blocks.generic; + +import java.util.List; + +import com.hbm.blocks.ITooltipProvider; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ParticleUtil; + +import api.hbm.block.IToolable; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +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.EnumChatFormatting; +import net.minecraft.world.World; + +public class PartEmitter extends BlockContainer implements IToolable, ITooltipProvider { + + public PartEmitter() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPartEmitter(); + } + + @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.HAND_DRILL) { + TileEntityPartEmitter te = (TileEntityPartEmitter) world.getTileEntity(x, y, z); + te.effect = (te.effect + 1) % te.effectCount; + te.markDirty(); + return true; + } + + return false; + } + + public static class TileEntityPartEmitter extends TileEntity { + + public static final int range = 150; + public int effect = 0; + public static final int effectCount = 4; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + double x = xCoord + 0.5; + double y = yCoord + 0.5; + double z = zCoord + 0.5; + NBTTagCompound data = new NBTTagCompound(); + + if(effect == 1) { + ParticleUtil.spawnGasFlame(worldObj, xCoord + worldObj.rand.nextDouble(), yCoord + 4.5 + worldObj.rand.nextDouble(), zCoord + worldObj.rand.nextDouble(), worldObj.rand.nextGaussian() * 0.2, 0.1, worldObj.rand.nextGaussian() * 0.2); + } + + if(effect == 2) { + data.setString("type", "tower"); + data.setFloat("lift", 5F); + data.setFloat("base", 0.25F); + data.setFloat("max", 5F); + data.setInteger("life", 560 + worldObj.rand.nextInt(20)); + data.setInteger("color",0x404040); + } + if(effect == 3) { + data.setString("type", "tower"); + data.setFloat("lift", 0.5F); + data.setFloat("base", 1F); + data.setFloat("max", 10F); + data.setInteger("life", 750 + worldObj.rand.nextInt(250)); + + x = xCoord + 0.5 + worldObj.rand.nextDouble() * 3 - 1.5; + y = yCoord + 1; + z = zCoord + 0.5 + worldObj.rand.nextDouble() * 3 - 1.5; + + } + + if(data.hasKey("type")) { + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(this.worldObj.provider.dimensionId, xCoord, yCoord, zCoord, range)); + } + } + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.effect = nbt.getInteger("effect"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("effect", this.effect); + } + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.GOLD + "Use hand drill to cycle special effects"); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/machine/BlockCM.java b/src/main/java/com/hbm/blocks/machine/BlockCM.java new file mode 100644 index 000000000..eb8b23e78 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCM.java @@ -0,0 +1,30 @@ +package com.hbm.blocks.machine; + +import java.util.Locale; + +import com.hbm.blocks.BlockEnumMulti; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; + +public class BlockCM extends BlockEnumMulti { + + public BlockCM(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + Enum[] enums = theEnum.getEnumConstants(); + this.icons = new IIcon[enums.length]; + + for(int i = 0; i < icons.length; i++) { + Enum num = enums[i]; + this.icons[i] = reg.registerIcon(this.getTextureName() + "_" + num.name().toLowerCase(Locale.US)); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMGlass.java b/src/main/java/com/hbm/blocks/machine/BlockCMGlass.java new file mode 100644 index 000000000..af9a116a9 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCMGlass.java @@ -0,0 +1,31 @@ +package com.hbm.blocks.machine; + +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.world.IBlockAccess; + +public class BlockCMGlass extends BlockCM { + + public BlockCMGlass(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @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 ? false : super.shouldSideBeRendered(world, x, y, z, side); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCMPort.java b/src/main/java/com/hbm/blocks/machine/BlockCMPort.java new file mode 100644 index 000000000..b16528a55 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCMPort.java @@ -0,0 +1,32 @@ +package com.hbm.blocks.machine; + +import com.hbm.tileentity.TileEntityProxyCombo; + +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockCMPort extends BlockCM implements ITileEntityProvider { + + public BlockCMPort(Material mat, Class theEnum, boolean multiName, boolean multiTexture) { + super(mat, theEnum, multiName, multiTexture); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityProxyCombo().inventory().power().fluid(); + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x, y, z); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block b, int m) { + super.breakBlock(world, x, y, z, b, m); + world.removeTileEntity(x, y, z); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockCustomMachine.java b/src/main/java/com/hbm/blocks/machine/BlockCustomMachine.java new file mode 100644 index 000000000..72efa3313 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockCustomMachine.java @@ -0,0 +1,206 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.Random; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +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.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class BlockCustomMachine extends BlockContainer { + + @SideOnly(Side.CLIENT) + private IIcon iconFront; + + public BlockCustomMachine() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCustomMachine(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_front"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":cm_terminal_side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + if(metadata >= 100) return side == 3 ? this.iconFront : this.blockIcon; + return metadata == 0 && side == 3 ? this.iconFront : (side == metadata ? this.iconFront : this.blockIcon); + } + + @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) { + return true; + } else if(!player.isSneaking()) { + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null) { + + if(tile.checkStructure()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + } else if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.wand_s) { + tile.buildStructure(); + } + } + return true; + } + + return false; + } + + @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); + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null) { + int id = stack.getItemDamage() - 100; + + if(id >= 0 && id < CustomMachineConfigJSON.customMachines.size()) { + + MachineConfiguration config = CustomMachineConfigJSON.niceList.get(id); + + if(config != null) { + tile.machineType = config.unlocalizedName; + tile.init(); + tile.markChanged(); + } + } + } + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + this.dropBlockAsItem(world, x, y, z, meta, 0); + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + + ArrayList ret = new ArrayList(); + Item item = getItemDropped(metadata, world.rand, fortune); + if(item != null) { + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null) { + ItemStack stack = new ItemStack(item, 1, CustomMachineConfigJSON.niceList.indexOf(tile.config) + 100); + ret.add(stack); + } + } + + return ret; + } + + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { //using the deprecated one to make NEI happy + + TileEntityCustomMachine tile = (TileEntityCustomMachine) world.getTileEntity(x, y, z); + + if(tile != null && tile.machineType != null && !tile.machineType.isEmpty()) { + ItemStack stack = new ItemStack(this, 1, CustomMachineConfigJSON.niceList.indexOf(tile.config) + 100); + return stack; + } + + return super.getPickBlock(target, world, x, y, z); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + + ISidedInventory sided = (ISidedInventory) world.getTileEntity(x, y, z); + Random rand = world.rand; + + if(sided != null) { + for(int i1 = 0; i1 < sided.getSizeInventory(); ++i1) { + + if(i1 >= 10 && i1 <= 15) + continue; // do NOT drop the filters + + ItemStack itemstack = sided.getStackInSlot(i1); + + if(itemstack != null) { + float f = rand.nextFloat() * 0.8F + 0.1F; + float f1 = rand.nextFloat() * 0.8F + 0.1F; + float f2 = rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = rand.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) rand.nextGaussian() * f3; + entityitem.motionY = (float) rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + } + + world.func_147453_f(x, y, z, block); + } + + super.breakBlock(world, x, y, z, block, meta); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java index c5e6e063a..1798b5b59 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java +++ b/src/main/java/com/hbm/blocks/machine/BlockFluidBarrel.java @@ -12,6 +12,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.machine.storage.TileEntityBarrel; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; @@ -164,6 +165,23 @@ public class BlockFluidBarrel extends BlockContainer implements ITooltipProvider player.addExhaustion(0.025F); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityBarrel)) + return 0; + + TileEntityBarrel barrel = (TileEntityBarrel) te; + return barrel.getComparatorPower(); + } + @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); diff --git a/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java new file mode 100644 index 000000000..a242772e2 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockHadronCooler.java @@ -0,0 +1,67 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.BlockMulti; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; + +public class BlockHadronCooler extends BlockMulti implements ITooltipProvider { + + private IIcon[] icons = new IIcon[getSubCount()]; + + public BlockHadronCooler(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + icons[0] = reg.registerIcon(RefStrings.MODID + ":hadron_cooler"); + icons[1] = reg.registerIcon(RefStrings.MODID + ":hadron_cooler_mk2"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return icons[this.rectify(metadata)]; + } + + @Override + public int getSubCount() { + return 2; + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + int meta = this.rectify(stack.getItemDamage()); + + if(meta == 1) return this.getUnlocalizedName() + "_mk2"; + + return this.getUnlocalizedName(); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + for(String s : I18nUtil.resolveKeyArray(this.getUnlocalizedName(stack) + ".desc")) list.add(EnumChatFormatting.YELLOW + s); + } else { + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/BlockITERStruct.java b/src/main/java/com/hbm/blocks/machine/BlockITERStruct.java index 2a909c4dd..c53723bc6 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockITERStruct.java +++ b/src/main/java/com/hbm/blocks/machine/BlockITERStruct.java @@ -17,9 +17,9 @@ public class BlockITERStruct extends BlockContainer { public TileEntity createNewTileEntity(World world, int meta) { return new TileEntityITERStruct(); } - - public boolean isOpaqueCube() { - - return false; - } + + @Override + public boolean isOpaqueCube() { + return false; + } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java index 519011857..d8e2f6773 100644 --- a/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java +++ b/src/main/java/com/hbm/blocks/machine/BlockMassStorage.java @@ -47,8 +47,8 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { - this.iconTop = new IIcon[3]; - this.iconSide = new IIcon[3]; + this.iconTop = new IIcon[4]; + this.iconSide = new IIcon[4]; this.iconTop[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_iron"); this.iconSide[0] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_iron"); @@ -56,14 +56,17 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo this.iconSide[1] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_desh"); this.iconTop[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top"); this.iconSide[2] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side"); + this.iconTop[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_top_wood"); + this.iconSide[3] = iconRegister.registerIcon(RefStrings.MODID + ":mass_storage_side_wood"); } @Override @SideOnly(Side.CLIENT) public void getSubBlocks(Item item, CreativeTabs tab, List list) { - for(int i = 0; i < getSubCount(); ++i) { - list.add(new ItemStack(item, 1, i)); - } + list.add(new ItemStack(item, 1, 3)); + list.add(new ItemStack(item, 1, 0)); + list.add(new ItemStack(item, 1, 1)); + list.add(new ItemStack(item, 1, 2)); } @Override @@ -84,7 +87,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo } public int getCapacity(int meta) { - return meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0; + return meta == 3 ? 100 : meta == 0 ? 10_000 : meta == 1 ? 100_000 : meta == 2 ? 1_000_000 : 0; } @Override @@ -242,7 +245,7 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo @Override public int getSubCount() { - return 3; + return 4; } @Override @@ -286,4 +289,14 @@ public class BlockMassStorage extends BlockContainer implements IBlockMulti, ILo list.add(String.format("%,d", stack.stackTagCompound.getInteger("stack")) + " / " + String.format("%,d", getCapacity(stack.getItemDamage()))); } } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + return ((TileEntityMassStorage) world.getTileEntity(x, y, z)).redstone; + } } diff --git a/src/main/java/com/hbm/blocks/machine/BlockWatzStruct.java b/src/main/java/com/hbm/blocks/machine/BlockWatzStruct.java new file mode 100644 index 000000000..3e278f445 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/BlockWatzStruct.java @@ -0,0 +1,25 @@ +package com.hbm.blocks.machine; + +import com.hbm.tileentity.machine.TileEntityWatzStruct; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockWatzStruct extends BlockContainer { + + public BlockWatzStruct(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityWatzStruct(); + } + + @Override + public boolean isOpaqueCube() { + return false; + } +} diff --git a/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java b/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java index e3e706707..b7530f2d2 100644 --- a/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java +++ b/src/main/java/com/hbm/blocks/machine/DeuteriumTower.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -77,7 +78,7 @@ public class DeuteriumTower extends BlockDummyable implements ILookOverlay { text.add((tower.power < tower.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(tower.power) + "HE"); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase()) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java index bf00c6b60..e692c3bf9 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryChannel.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryChannel.java @@ -131,7 +131,7 @@ public class FoundryChannel extends BlockContainer implements ICrucibleAcceptor if(b == ModBlocks.foundry_outlet && meta == dir.ordinal()) return true; - return b == ModBlocks.foundry_channel || b == ModBlocks.foundry_mold; + return b == ModBlocks.foundry_channel || b == ModBlocks.foundry_mold || b == ModBlocks.foundry_slagtap; } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java index de46f885b..d62f01cb0 100644 --- a/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java +++ b/src/main/java/com/hbm/blocks/machine/FoundryOutlet.java @@ -167,12 +167,12 @@ public class FoundryOutlet extends BlockContainer implements ICrucibleAcceptor, @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { - return ((TileEntityFoundryOutlet) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack); + return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).canAcceptPartialFlow(world, x, y, z, side, stack); } @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { - return ((TileEntityFoundryOutlet) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack); + return ((ICrucibleAcceptor) world.getTileEntity(x, y, z)).flow(world, x, y, z, side, stack); } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java b/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java new file mode 100644 index 000000000..b001d1157 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/FoundrySlagtap.java @@ -0,0 +1,35 @@ +package com.hbm.blocks.machine; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityFoundrySlagtap; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class FoundrySlagtap extends FoundryOutlet { + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_top"); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_side"); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_bottom"); + this.iconInner = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_inner"); + this.iconFront = iconRegister.registerIcon(RefStrings.MODID + ":foundry_slagtap_front"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityFoundrySlagtap(); + } + + @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { return false; } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { return false; } + @Override public void printHook(Pre event, World world, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/blocks/machine/GasDuctSolid.java b/src/main/java/com/hbm/blocks/machine/GasDuctSolid.java deleted file mode 100644 index 8351015a7..000000000 --- a/src/main/java/com/hbm/blocks/machine/GasDuctSolid.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.tileentity.conductor.TileEntityGasDuctSolid; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class GasDuctSolid extends BlockContainer { - - public GasDuctSolid(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityGasDuctSolid(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java b/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java index e502b1a3b..70f1a0b94 100644 --- a/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java +++ b/src/main/java/com/hbm/blocks/machine/HeaterFirebox.java @@ -29,7 +29,7 @@ public class HeaterFirebox extends BlockDummyable implements ITooltipProvider { /*if(lastCore.getX() == lastBlockSet.getX() && lastCore.getY() + 1 == lastBlockSet.getY() && lastCore.getZ() == lastBlockSet.getZ()) return new TileEntityProxyCombo().inventory().heatSource();*/ - return new TileEntityProxyCombo(true, false, false); + return new TileEntityProxyCombo().inventory().fluid(); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineAssembler.java b/src/main/java/com/hbm/blocks/machine/MachineAssembler.java index 881768570..eeaa0e63b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAssembler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAssembler.java @@ -1,296 +1,55 @@ package com.hbm.blocks.machine; -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.MultiblockHandler; -import com.hbm.interfaces.IMultiblock; -import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityMachineAssembler; -import net.minecraft.block.Block; -import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.item.EntityItem; -import net.minecraft.inventory.ISidedInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MathHelper; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class MachineAssembler extends BlockContainer implements IMultiblock { +public class MachineAssembler extends BlockDummyable { public MachineAssembler(Material p_i45386_1_) { super(p_i45386_1_); } @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityMachineAssembler(); - + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineAssembler(); + if(meta >= 6) return new TileEntityProxyCombo().power(); + return null; } @Override - public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { - return Item.getItemFromBlock(ModBlocks.machine_assembler); + public int[] getDimensions() { + return new int[] {1, 0, 2, 1, 2, 1}; } @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, 5, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionEast)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionEast, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x - 1, y, z, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x - 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x - 1, y, z + 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 2, y, z, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x + 2, y, z); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 2, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x + 2, y, z + 1); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 1) { - world.setBlockMetadataWithNotify(x, y, z, 3, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionSouth)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionSouth, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x, y, z - 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x - 1, y, z - 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z + 2, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x, y, z + 2); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 1, y, z + 2, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x - 1, y, z + 2); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 2) { - world.setBlockMetadataWithNotify(x, y, z, 4, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionWest)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionWest, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x + 1, y, z, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x + 1, y, z); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 1, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x + 1, y, z - 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 2, y, z, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x - 2, y, z); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x - 2, y, z - 1, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x - 2, y, z - 1); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } - if (i == 3) { - world.setBlockMetadataWithNotify(x, y, z, 2, 2); - if(MultiblockHandler.checkSpace(world, x, y, z, MultiblockHandler.assemblerDimensionNorth)) { - MultiblockHandler.fillUp(world, x, y, z, MultiblockHandler.assemblerDimensionNorth, ModBlocks.dummy_block_assembler); - - // - DummyBlockAssembler.safeBreak = true; - world.setBlock(x, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te = world.getTileEntity(x, y, z + 1); - if(te instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 1, y, z + 1, ModBlocks.dummy_port_assembler); - TileEntity te2 = world.getTileEntity(x + 1, y, z + 1); - if(te2 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te2; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x, y, z - 2, ModBlocks.dummy_port_assembler); - TileEntity te3 = world.getTileEntity(x, y, z - 2); - if(te3 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te3; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - world.setBlock(x + 1, y, z - 2, ModBlocks.dummy_port_assembler); - TileEntity te4 = world.getTileEntity(x + 1, y, z - 2); - if(te4 instanceof TileEntityDummy) { - TileEntityDummy dummy = (TileEntityDummy)te4; - dummy.targetX = x; - dummy.targetY = y; - dummy.targetZ = z; - } - DummyBlockAssembler.safeBreak = false; - // - - } else - world.func_147480_a(x, y, z, true); - } + public int getOffset() { + return 1; } - private final Random field_149933_a = new Random(); - private static boolean keepInventory; - @Override - public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) - { - if (!keepInventory) - { - ISidedInventory tileentityfurnace = (ISidedInventory)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } - if (tileentityfurnace != null) - { - for (int i1 = 0; i1 < tileentityfurnace.getSizeInventory(); ++i1) - { - ItemStack itemstack = tileentityfurnace.getStackInSlot(i1); + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x -= dir.offsetX; + z -= dir.offsetZ; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - if (itemstack != null) - { - float f = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f1 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - float f2 = this.field_149933_a.nextFloat() * 0.8F + 0.1F; - - while (itemstack.stackSize > 0) - { - int j1 = this.field_149933_a.nextInt(21) + 10; - - if (j1 > itemstack.stackSize) - { - j1 = itemstack.stackSize; - } - - itemstack.stackSize -= j1; - EntityItem entityitem = new EntityItem(p_149749_1_, p_149749_2_ + f, p_149749_3_ + f1, p_149749_4_ + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); - - if (itemstack.hasTagCompound()) - { - entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); - } - - float f3 = 0.05F; - entityitem.motionX = (float)this.field_149933_a.nextGaussian() * f3; - entityitem.motionY = (float)this.field_149933_a.nextGaussian() * f3 + 0.2F; - entityitem.motionZ = (float)this.field_149933_a.nextGaussian() * f3; - p_149749_1_.spawnEntityInWorld(entityitem); - } - } - } - - p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); - } - } - - super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); - } + this.makeExtra(world, x + rot.offsetX * 2, y, z + rot.offsetZ * 2); + this.makeExtra(world, x - rot.offsetX * 1, y, z - rot.offsetZ * 1); + this.makeExtra(world, x + rot.offsetX * 2 - dir.offsetX, y, z + rot.offsetZ * 2 - dir.offsetZ); + this.makeExtra(world, x - rot.offsetX * 1 - dir.offsetX, y, z - rot.offsetZ * 1 - dir.offsetZ); + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java index b2bce040f..fe568c409 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java +++ b/src/main/java/com/hbm/blocks/machine/MachineAutosaw.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.tileentity.machine.TileEntityMachineAutosaw; @@ -50,7 +51,7 @@ public class MachineAutosaw extends BlockContainer implements ILookOverlay { TileEntityMachineAutosaw saw = (TileEntityMachineAutosaw) te; List text = new ArrayList(); - text.add(I18nUtil.resolveKey("hbmfluid." + saw.tank.getTankType().getName().toLowerCase()) + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); + text.add(I18nUtil.resolveKey("hbmfluid." + saw.tank.getTankType().getName().toLowerCase(Locale.US)) + ": " + saw.tank.getFill() + "/" + saw.tank.getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java index 178d0dbb8..782bc09ee 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java +++ b/src/main/java/com/hbm/blocks/machine/MachineBigAssTank9000.java @@ -12,6 +12,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.storage.TileEntityMachineBAT9000; +import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.util.I18nUtil; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -98,6 +99,23 @@ public class MachineBigAssTank9000 extends BlockDummyable implements IPersistent return IPersistentNBT.getDrops(world, x, y, z, this); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineBAT9000)) + return 0; + + TileEntityMachineBAT9000 tank = (TileEntityMachineBAT9000) te; + return tank.getComparatorPower(); + } + @Override public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { FluidTank tank = new FluidTank(Fluids.NONE, 0, 0); diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java new file mode 100644 index 000000000..be083f6e3 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitor.java @@ -0,0 +1,272 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.input.Keyboard; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.IPersistentInfoProvider; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.IPersistentNBT; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.BobMathUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import api.hbm.energy.IEnergyUser; +import cpw.mods.fml.client.registry.RenderingRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.BlockContainer; +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.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.stats.StatList; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCapacitor extends BlockContainer implements ILookOverlay, IPersistentInfoProvider, ITooltipProvider { + + @SideOnly(Side.CLIENT) public IIcon iconTop; + @SideOnly(Side.CLIENT) public IIcon iconSide; + @SideOnly(Side.CLIENT) public IIcon iconBottom; + @SideOnly(Side.CLIENT) public IIcon iconInnerTop; + @SideOnly(Side.CLIENT) public IIcon iconInnerSide; + + protected long power; + String name; + + public MachineCapacitor(Material mat, long power, String name) { + super(mat); + this.power = power; + this.name = name; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconTop = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_top"); + this.iconSide = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_side"); + this.iconBottom = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_bottom"); + this.iconInnerTop = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_inner_top"); + this.iconInnerSide = iconRegister.registerIcon(RefStrings.MODID + ":capacitor_" + name + "_inner_side"); + } + + 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 int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { + return side; + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCapacitor(this.power); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityCapacitor)) + return; + + TileEntityCapacitor battery = (TileEntityCapacitor) te; + List text = new ArrayList(); + text.add(BobMathUtil.getShortNumber(battery.getPower()) + " / " + BobMathUtil.getShortNumber(battery.getMaxPower()) + "HE"); + + double percent = (double) battery.getPower() / (double) battery.getMaxPower(); + int charge = (int) Math.floor(percent * 10_000D); + int color = ((int) (0xFF - 0xFF * percent)) << 16 | ((int)(0xFF * percent) << 8); + text.add("&[" + color + "&]" + (charge / 100D) + "%"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + "+" + BobMathUtil.getShortNumber(battery.powerReceived) + "HE/t"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + "-" + BobMathUtil.getShortNumber(battery.powerSent) + "HE/t"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, NBTTagCompound persistentTag, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.YELLOW + "" + BobMathUtil.getShortNumber(persistentTag.getLong("power")) + "/" + BobMathUtil.getShortNumber(persistentTag.getLong("maxPower")) + "HE"); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + + if(Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { + for(String s : I18nUtil.resolveKeyArray("tile.capacitor.desc")) list.add(EnumChatFormatting.YELLOW + s); + } else { + list.add(EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC +"Hold <" + + EnumChatFormatting.YELLOW + "" + EnumChatFormatting.ITALIC + "LSHIFT" + + EnumChatFormatting.DARK_GRAY + "" + EnumChatFormatting.ITALIC + "> to display more info"); + } + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + return IPersistentNBT.getDrops(world, x, y, z, this); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) { + IPersistentNBT.restoreData(world, x, y, z, itemStack); + } + + @Override + public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + harvesters.set(player); + this.dropBlockAsItem(world, x, y, z, meta, 0); + harvesters.set(null); + } + } + + @Override + public void harvestBlock(World world, EntityPlayer player, int x, int y, int z, int meta) { + player.addStat(StatList.mineBlockStatArray[getIdFromBlock(this)], 1); + player.addExhaustion(0.025F); + } + + public static class TileEntityCapacitor extends TileEntityLoadedBase implements IEnergyUser, INBTPacketReceiver, IPersistentNBT { + + public long power; + protected long maxPower; + public long prevPower; + public long powerReceived; + public long powerSent; + + public TileEntityCapacitor() { } + + public TileEntityCapacitor(long maxPower) { + this.maxPower = maxPower; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + long gain = power - prevPower; + + ForgeDirection opp = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection dir = opp.getOpposite(); + + BlockPos pos = new BlockPos(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + boolean didStep = false; + ForgeDirection last = null; + + while(worldObj.getBlock(pos.getX(), pos.getY(), pos.getZ()) == ModBlocks.capacitor_bus) { + ForgeDirection current = ForgeDirection.getOrientation(worldObj.getBlockMetadata(pos.getX(), pos.getY(), pos.getZ())); + if(!didStep) last = current; + didStep = true; + + if(last != current) { + pos = null; + break; + } + + pos = pos.offset(current); + } + + long preSend = power; + if(pos != null && last != null) { + this.tryUnsubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ()); + this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), last); + } + long sent = preSend - power; + + this.trySubscribe(worldObj, xCoord + opp.offsetX, yCoord+ opp.offsetY, zCoord + opp.offsetZ, opp); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setLong("maxPower", maxPower); + data.setLong("rec", gain); + data.setLong("sent", sent); + INBTPacketReceiver.networkPack(this, data, 15); + + this.prevPower = power; + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + this.powerReceived = nbt.getLong("rec"); + this.powerSent = nbt.getLong("sent"); + } + + @Override + public long getPower() { + return power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public ConnectionPriority getPriority() { + return ConnectionPriority.LOW; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir == ForgeDirection.getOrientation(this.getBlockMetadata()); + } + + @Override + public void writeNBT(NBTTagCompound nbt) { + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setLong("maxPower", maxPower); + nbt.setTag(NBT_PERSISTENT_KEY, data); + } + + @Override + public void readNBT(NBTTagCompound nbt) { + NBTTagCompound data = nbt.getCompoundTag(NBT_PERSISTENT_KEY); + this.power = data.getLong("power"); + this.maxPower = data.getLong("maxPower"); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.power = nbt.getLong("power"); + this.maxPower = nbt.getLong("maxPower"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setLong("maxPower", maxPower); + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java new file mode 100644 index 000000000..fa7aa8dbe --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCapacitorBus.java @@ -0,0 +1,59 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.ITooltipProvider; +import com.hbm.lib.RefStrings; + +import api.hbm.energy.IEnergyConnectorBlock; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +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.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCapacitorBus extends Block implements IEnergyConnectorBlock, ITooltipProvider { + + @SideOnly(Side.CLIENT) private IIcon topIcon; + + public MachineCapacitorBus(Material mat) { + super(mat); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + this.blockIcon = p_149651_1_.registerIcon(RefStrings.MODID + ":capacitor_bus_side"); + this.topIcon = p_149651_1_.registerIcon(RefStrings.MODID + ":capacitor_bus_out"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return side == meta ? topIcon : blockIcon; + } + + @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 + public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + int meta = world.getBlockMetadata(x, y, z); + ForgeDirection busDir = ForgeDirection.getOrientation(meta); + return dir == busDir; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java index 648f9a3b6..247ee608d 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCatalyticCracker.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -70,7 +71,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); cracker.tanks[0].setTankType(type); cracker.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); return true; } @@ -129,7 +130,7 @@ public class MachineCatalyticCracker extends BlockDummyable implements ILookOver List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) - text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); + text.add((i < 2 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java new file mode 100644 index 000000000..ab6bf4bbc --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineChimneyBrick.java @@ -0,0 +1,44 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityChimneyBrick; + +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineChimneyBrick extends BlockDummyable { + + public MachineChimneyBrick(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityChimneyBrick(); + if(meta >= 6) return new TileEntityProxyCombo().fluid(); + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {12, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + this.makeExtra(world, x + dir.offsetX * o + 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o - 1, y, z + dir.offsetZ * o); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o + 1); + this.makeExtra(world, x + dir.offsetX * o, y, z + dir.offsetZ * o - 1); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCoker.java b/src/main/java/com/hbm/blocks/machine/MachineCoker.java new file mode 100644 index 000000000..695698016 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCoker.java @@ -0,0 +1,87 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCoker extends BlockDummyable implements ITooltipProvider { + + public MachineCoker(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityMachineCoker(); + if(meta >= extra) return new TileEntityProxyCombo().inventory().fluid(); + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return standardOpenBehavior(world, x, y, z, player, side); + } + + @Override + public int[] getDimensions() { + return new int[] {22, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + if(super.checkRequirement(world, x, y, z, dir, o)) { + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + return MultiblockHandlerXR.checkSpace(world, x, y + 1, z, new int[] {5, 0, 2, 2, 2, 2}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x + 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x + 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x - 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH) && + MultiblockHandlerXR.checkSpace(world, x - 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, x, y, z, ForgeDirection.NORTH); + } + + return false; + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + MultiblockHandlerXR.fillSpace(world, x, y + 1, z, new int[] {5, 0, 2, 2, 2, 2}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x + 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x + 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x - 2, y + 1, z + 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + MultiblockHandlerXR.fillSpace(world, x - 2, y + 1, z - 2, new int[] {0, 1, 0, 0, 0, 0}, this, ForgeDirection.NORTH); + + this.makeExtra(world, x + 1, y, z + 1); + this.makeExtra(world, x + 1, y, z - 1); + this.makeExtra(world, x - 1, y, z + 1); + this.makeExtra(world, x - 1, y, z - 1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCompressor.java b/src/main/java/com/hbm/blocks/machine/MachineCompressor.java new file mode 100644 index 000000000..f22bc3fc1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineCompressor.java @@ -0,0 +1,66 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineCompressor extends BlockDummyable { + + public MachineCompressor() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityMachineCompressor(); + if(meta >= extra) return new TileEntityProxyCombo().fluid().power(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {2, 0, 1, 2, 1, 1}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { + return this.standardOpenBehavior(world, x, y, z, player, 0); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return super.checkRequirement(world, x, y, z, dir, o) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -3, 1, 1, 1, 1}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {8, -4, 0, 0, 1, 1}, x, y, z, dir); + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -3, 1, 1, 1, 1}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {8, -4, 0, 0, 1, 1}, this, dir); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ); + this.makeExtra(world, x + rot.offsetX, y, z + rot.offsetZ); + this.makeExtra(world, x - rot.offsetX, y, z - rot.offsetZ); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineCondenser.java b/src/main/java/com/hbm/blocks/machine/MachineCondenser.java index b31340f09..e498acde6 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCondenser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCondenser.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.tileentity.machine.TileEntityCondenser; @@ -38,7 +39,7 @@ public class MachineCondenser extends BlockContainer implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < condenser.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + condenser.tanks[i].getTankType().getName().toLowerCase()) + ": " + condenser.tanks[i].getFill() + "/" + condenser.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + condenser.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + condenser.tanks[i].getFill() + "/" + condenser.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineCrucible.java b/src/main/java/com/hbm/blocks/machine/MachineCrucible.java index cde554cd5..b2ccf824c 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineCrucible.java +++ b/src/main/java/com/hbm/blocks/machine/MachineCrucible.java @@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityCrucible; +import api.hbm.block.ICrucibleAcceptor; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -24,8 +25,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.client.event.DrawBlockHighlightEvent; +import net.minecraftforge.common.util.ForgeDirection; -public class MachineCrucible extends BlockDummyable { +public class MachineCrucible extends BlockDummyable implements ICrucibleAcceptor { public MachineCrucible() { super(Material.rock); @@ -151,4 +153,31 @@ public class MachineCrucible extends BlockDummyable { for(AxisAlignedBB aabb : this.bounding) event.context.drawOutlinedBoundingBox(aabb.expand(exp, exp, exp).getOffsetBoundingBox(x - dX + 0.5, y - dY, z - dZ + 0.5), -1); ICustomBlockHighlight.cleanup(); } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return false; + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof TileEntityCrucible)) return false; + TileEntityCrucible crucible = (TileEntityCrucible) tile; + + return crucible.canAcceptPartialPour(world, x, y, z, dX, dY, dZ, side, stack); + } + + @Override + public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return stack; + TileEntity tile = world.getTileEntity(pos[0], pos[1], pos[2]); + if(!(tile instanceof TileEntityCrucible)) return stack; + TileEntityCrucible crucible = (TileEntityCrucible) tile; + + return crucible.pour(world, x, y, z, dX, dY, dZ, side, stack); + } + + @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; } + @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java index f0d3d2d43..a8e0dc586 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDeuteriumExtractor.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.ILookOverlay; import com.hbm.lib.RefStrings; @@ -66,7 +67,7 @@ public class MachineDeuteriumExtractor extends BlockContainer implements ILookOv text.add((extractor.power < extractor.getMaxPower() / 20 ? EnumChatFormatting.RED : EnumChatFormatting.GREEN) + "Power: " + BobMathUtil.getShortNumber(extractor.power) + "HE"); for(int i = 0; i < extractor.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + extractor.tanks[i].getTankType().getName().toLowerCase()) + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + extractor.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + extractor.tanks[i].getFill() + "/" + extractor.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java index 3b8c4208f..7d67a92b5 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDiFurnaceExtension.java @@ -30,7 +30,7 @@ public class MachineDiFurnaceExtension extends BlockContainer implements IProxyC @Override public TileEntity createNewTileEntity(World world, int meta) { - return new TileEntityProxyCombo().inventory(); + return new TileEntityProxyCombo().inventory().fluid(); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java b/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java index fb3ee992f..3c6b7beac 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java +++ b/src/main/java/com/hbm/blocks/machine/MachineElectrolyser.java @@ -20,18 +20,18 @@ public class MachineElectrolyser extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { if(meta >= 12) return new TileEntityElectrolyser(); - if(meta >= 6) return new TileEntityProxyCombo(false, true, true); + if(meta >= 6) return new TileEntityProxyCombo().inventory().power().fluid(); return null; } @Override public int[] getDimensions() { - return new int[] {0, 0, 4, 4, 2, 2}; + return new int[] {0, 0, 5, 5, 1, 3}; } @Override public int getOffset() { - return 4; + return 5; } @Override @@ -42,33 +42,54 @@ public class MachineElectrolyser extends BlockDummyable { @Override public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { super.fillSpace(world, x, y, z, dir, o); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, 0, 4, 4, 1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -1, 4, 4, 0, 0}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 1, -1, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 1, -1, -1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 3, -3, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 3, -3, -1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -1, 1, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -1, 1, -1, 1}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -3, 3, -2, 2}, this, dir); - MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -3, 3, -1, 1}, this, dir); + x += dir.offsetX * o; + z += dir.offsetZ * o; + + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {2, -1, 5, 5, 1, 1}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -3, 5, 5, 0, 0}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 4, -4, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 2, -2, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, 0, 0, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, -2, 2, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y, z, new int[] {3, -1, -4, 4, -3, 3}, this, dir); + MultiblockHandlerXR.fillSpace(world,x + dir.offsetX * 4, y + 3, z + dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world,x + dir.offsetX * 2, y + 3, z + dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x, y + 3, z, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x - dir.offsetX * 2, y + 3, z - dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x - dir.offsetX * 4, y + 3, z - dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, this, dir); + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + this.makeExtra(world, x - dir.offsetX * 5, y, z - dir.offsetZ * 5); + this.makeExtra(world, x - dir.offsetX * 5 + rot.offsetX, y, z - dir.offsetZ * 5 + rot.offsetZ); + this.makeExtra(world, x - dir.offsetX * 5 - rot.offsetX, y, z - dir.offsetZ * 5 - rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 5, y, z + dir.offsetZ * 5); + this.makeExtra(world, x + dir.offsetX * 5 + rot.offsetX, y, z + dir.offsetZ * 5 + rot.offsetZ); + this.makeExtra(world, x + dir.offsetX * 5 - rot.offsetX, y, z + dir.offsetZ * 5 - rot.offsetZ); } @Override protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, 0, 4, 4, 1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, -1, 4, 4, 0, 0}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 1, -1, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 1, -1, -1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, 3, -3, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, 3, -3, -1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -1, 1, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -1, 1, -1, 1}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {3, 0, -3, 3, -2, 2}, x, y, z, dir)) return false; - if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o , 3 + y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {0, 0, -3, 3, -1, 1}, x, y, z, dir)) return false; + x += dir.offsetX * o; + z += dir.offsetZ * o; + + if(!MultiblockHandlerXR.checkSpace(world, x, y , z, getDimensions(), x, y, z, dir)) return false; + + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {2, -1, 5, 5, 1, 1}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -3, 5, 5, 0, 0}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 4, -4, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 2, -2, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, 0, 0, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, -2, 2, -3, 3}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {3, -1, -4, 4, -3, 3}, x, y, z, dir)) return false; + + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * 4, y + 3, z + dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * 2, y + 3, z + dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x, y + 3, z, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x - dir.offsetX * 2, y + 3, z - dir.offsetZ * 2, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; + if(!MultiblockHandlerXR.checkSpace(world, x - dir.offsetX * 4, y + 3, z - dir.offsetZ * 4, new int[] {0, 0, 0, 0, -1, 2}, x, y, z, dir)) return false; return true; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineExcavator.java b/src/main/java/com/hbm/blocks/machine/MachineExcavator.java index 0d27866a6..c91d6bb16 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineExcavator.java +++ b/src/main/java/com/hbm/blocks/machine/MachineExcavator.java @@ -51,7 +51,10 @@ public class MachineExcavator extends BlockDummyable { y += dir.offsetY * o; z += dir.offsetZ * o; - return MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir); + return MultiblockHandlerXR.checkSpace(world, x, y, z, getDimensions(), x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {-1, 3, 3, -2, 3, -2}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {-1, 3, 3, -2, -2, 3}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x, y, z, new int[] {-1, 3, -2, 3, 3, 3}, x, y, z, dir); } @Override diff --git a/src/main/java/com/hbm/blocks/machine/MachineFan.java b/src/main/java/com/hbm/blocks/machine/MachineFan.java index 33e9eaf2c..6a37de202 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFan.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFan.java @@ -2,10 +2,11 @@ package com.hbm.blocks.machine; import java.util.List; +import api.hbm.block.IBlowable; import api.hbm.block.IToolable; -import api.hbm.block.IToolable.ToolType; 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.BlockPistonBase; import net.minecraft.block.material.Material; @@ -80,7 +81,13 @@ public class MachineFan extends BlockContainer implements IToolable { double push = 0.1; for(int i = 1; i <= range; i++) { - if(worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i).isNormalCube()) { + Block block = worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i); + boolean blowable = block instanceof IBlowable; + + if(block.isNormalCube() || blowable) { + if(!worldObj.isRemote && blowable) + ((IBlowable) block).applyFan(worldObj, xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i, dir, i); + break; } @@ -133,9 +140,6 @@ public class MachineFan extends BlockContainer implements IToolable { if(meta == 4) world.setBlockMetadataWithNotify(x, y, z, 5, 3); if(meta == 5) world.setBlockMetadataWithNotify(x, y, z, 4, 3); - //TileEntityFan fan = (TileEntityFan) world.getTileEntity(x, y, z); - //fan.blockMetadata = -1; - return true; } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java index 8b5071525..f6d487718 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFluidTank.java @@ -14,6 +14,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.storage.TileEntityMachineBattery; import com.hbm.tileentity.machine.storage.TileEntityMachineFluidTank; import com.hbm.util.I18nUtil; @@ -135,6 +136,23 @@ public class MachineFluidTank extends BlockDummyable implements IPersistentInfoP } } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityMachineFluidTank)) + return 0; + + TileEntityMachineFluidTank tank = (TileEntityMachineFluidTank) te; + return tank.getComparatorPower(); + } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { diff --git a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java index b8705ead5..af24b1d28 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java +++ b/src/main/java/com/hbm/blocks/machine/MachineFractionTower.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -73,7 +74,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); frac.tanks[0].setTankType(type); frac.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); } return true; @@ -115,7 +116,7 @@ public class MachineFractionTower extends BlockDummyable implements ILookOverlay List text = new ArrayList(); for(int i = 0; i < cracker.tanks.length; i++) - text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase()) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); + text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + cracker.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + cracker.tanks[i].getFill() + "/" + cracker.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java index 4264b777d..a8779573e 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoiler.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IBlockMulti; @@ -68,7 +69,7 @@ public class MachineHeatBoiler extends BlockDummyable implements ILookOverlay, I if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { boiler.tanks[0].setTankType(type); boiler.markDirty(); - player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase())).appendSibling(new ChatComponentText("!"))); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); } return true; } diff --git a/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java new file mode 100644 index 000000000..00b06f50d --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineHeatBoilerIndustrial.java @@ -0,0 +1,126 @@ +package com.hbm.blocks.machine; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.ITooltipProvider; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.trait.FT_Heatable; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.TileEntityProxyCombo; +import com.hbm.tileentity.machine.TileEntityHeatBoilerIndustrial; +import com.hbm.util.I18nUtil; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineHeatBoilerIndustrial extends BlockDummyable implements ILookOverlay, ITooltipProvider { + + public MachineHeatBoilerIndustrial() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + + if(meta >= 12) return new TileEntityHeatBoilerIndustrial(); + if(meta >= extra) return new TileEntityProxyCombo().fluid(); + return null; + } + + @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) { + 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 TileEntityHeatBoilerIndustrial)) + return false; + + TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; + + FluidType type = ((IItemFluidIdentifier) player.getHeldItem().getItem()).getType(world, pos[0], pos[1], pos[2], player.getHeldItem()); + + if(type.hasTrait(FT_Heatable.class) && type.getTrait(FT_Heatable.class).getEfficiency(HeatingType.BOILER) > 0) { + boiler.tanks[0].setTankType(type); + boiler.markDirty(); + player.addChatComponentMessage(new ChatComponentText("Changed type to ").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW)).appendSibling(new ChatComponentTranslation("hbmfluid." + type.getName().toLowerCase(Locale.US))).appendSibling(new ChatComponentText("!"))); + } + return true; + } + return false; + + } else { + return true; + } + } + + @Override + public int[] getDimensions() { + return new int[] {4, 0, 1, 1, 1, 1}; + } + + @Override + public int getOffset() { + return 1; + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + this.makeExtra(world, x - dir.offsetX + 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX - 1, y, z - dir.offsetZ); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ + 1); + this.makeExtra(world, x - dir.offsetX, y, z - dir.offsetZ - 1); + this.makeExtra(world, x - dir.offsetX, y + 4, z - dir.offsetZ); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + int[] pos = this.findCore(world, x, y, z); + + if(pos == null) + return; + + TileEntity te = world.getTileEntity(pos[0], pos[1], pos[2]); + + if(!(te instanceof TileEntityHeatBoilerIndustrial)) + return; + + TileEntityHeatBoilerIndustrial boiler = (TileEntityHeatBoilerIndustrial) te; + + List text = new ArrayList(); + text.add(String.format("%,d", boiler.heat) + "TU"); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[0].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[0].getFill()) + " / " + String.format("%,d", boiler.tanks[0].getMaxFill()) + "mB"); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(boiler.tanks[1].getTankType().getUnlocalizedName()) + ": " + String.format("%,d", boiler.tanks[1].getFill()) + " / " + String.format("%,d", boiler.tanks[1].getMaxFill()) + "mB"); + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + this.addStandardInfo(stack, player, list, ext); + } +} diff --git a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java index b748e3412..6f31472b9 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java +++ b/src/main/java/com/hbm/blocks/machine/MachineHephaestus.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -110,7 +111,7 @@ public class MachineHephaestus extends BlockDummyable implements ILookOverlay { for(int i = 0; i < heatex.getAllTanks().length; i++) { FluidTank tank = heatex.getAllTanks()[i]; - text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tank.getTankType().getName().toLowerCase()) + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB"); + text.add((i == 0 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tank.getTankType().getName().toLowerCase(Locale.US)) + ": " + tank.getFill() + "/" + tank.getMaxFill() + "mB"); } ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); diff --git a/src/main/java/com/hbm/blocks/machine/MachineITER.java b/src/main/java/com/hbm/blocks/machine/MachineITER.java index 98b8f30e3..f049e058f 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineITER.java +++ b/src/main/java/com/hbm/blocks/machine/MachineITER.java @@ -4,6 +4,8 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.material.Mats; +import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityITER; @@ -241,20 +243,23 @@ public class MachineITER extends BlockDummyable { @Override public void breakBlock(World world, int x, int y, int z, Block block, int i) { - - if(i >= 12 && drop) { - - for(int l = 0; l < 4; l++) - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 64))); - - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 36))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_center, 64))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_motor, 4))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.reinforced_glass, 8))); - world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_iter_core, 1))); - } + + if(i >= 12 && drop) { + + for(int l = 0; l < 4; l++) { + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_cast, 64, Mats.MAT_STEEL.id))); + } + + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_conductor, 36))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.plate_cast, 36, Mats.MAT_STEEL.id))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_center, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.fusion_motor, 4))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.reinforced_glass, 8))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_iter_core, 1))); + } super.breakBlock(world, x, y, z, block, i); - } + } } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java b/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java index b3fea11e2..b15c2dc74 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTowerLarge.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -77,7 +78,7 @@ public class MachineTowerLarge extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase()) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java b/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java index ac1dd989e..f13cc49df 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTowerSmall.java @@ -2,6 +2,7 @@ package com.hbm.blocks.machine; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; @@ -74,7 +75,7 @@ public class MachineTowerSmall extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); for(int i = 0; i < tower.tanks.length; i++) - text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase()) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); + text.add((i < 1 ? (EnumChatFormatting.GREEN + "-> ") : (EnumChatFormatting.RED + "<- ")) + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + tower.tanks[i].getTankType().getName().toLowerCase(Locale.US)) + ": " + tower.tanks[i].getFill() + "/" + tower.tanks[i].getMaxFill() + "mB"); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java b/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java index 02c6d7394..b89931cf7 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java +++ b/src/main/java/com/hbm/blocks/machine/MachineTurbineGas.java @@ -6,9 +6,11 @@ import com.hbm.util.I18nUtil; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.fluid.Fluids; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; @@ -85,16 +87,17 @@ public class MachineTurbineGas extends BlockDummyable implements ILookOverlay { List text = new ArrayList(); if(hitCheck(dir, pos[0], pos[1], pos[2], -1, -1, 0, x, y, z) || hitCheck(dir, pos[0], pos[1], pos[2], 1, -1, 0, x, y, z)) { - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[0].getTankType().getName().toLowerCase())); - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[1].getTankType().getName().toLowerCase())); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[0].getTankType().getName().toLowerCase(Locale.US))); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[1].getTankType().getName().toLowerCase(Locale.US))); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey(Fluids.SMOKE.getUnlocalizedName())); } if(hitCheck(dir, pos[0], pos[1], pos[2], -1, 4, 0, x, y, z) || hitCheck(dir, pos[0], pos[1], pos[2], 1, 4, 0, x, y, z)) { - text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[2].getTankType().getName().toLowerCase())); + text.add(EnumChatFormatting.GREEN + "-> " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[2].getTankType().getName().toLowerCase(Locale.US))); } if(hitCheck(dir, pos[0], pos[1], pos[2], 0, 5, 1, x, y, z)) { - text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[3].getTankType().getName().toLowerCase())); + text.add(EnumChatFormatting.RED + "<- " + EnumChatFormatting.RESET + I18nUtil.resolveKey("hbmfluid." + turbine.tanks[3].getTankType().getName().toLowerCase(Locale.US))); } if(hitCheck(dir, pos[0], pos[1], pos[2], 0, -4, 1, x, y, z)) { diff --git a/src/main/java/com/hbm/blocks/machine/OilDuctSolid.java b/src/main/java/com/hbm/blocks/machine/OilDuctSolid.java deleted file mode 100644 index cfec07f2d..000000000 --- a/src/main/java/com/hbm/blocks/machine/OilDuctSolid.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.hbm.blocks.machine; - -import com.hbm.tileentity.conductor.TileEntityOilDuctSolid; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; - -public class OilDuctSolid extends BlockContainer { - - public OilDuctSolid(Material p_i45386_1_) { - super(p_i45386_1_); - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityOilDuctSolid(); - } -} diff --git a/src/main/java/com/hbm/blocks/machine/PistonInserter.java b/src/main/java/com/hbm/blocks/machine/PistonInserter.java new file mode 100644 index 000000000..91e3e25b1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/PistonInserter.java @@ -0,0 +1,386 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockContainerBase; +import com.hbm.tileentity.INBTPacketReceiver; + +import api.hbm.block.IInsertable; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +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; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class PistonInserter extends BlockContainerBase { + + public PistonInserter() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPistonInserter(); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block neighbor) { + this.updateState(world, x, y, z); + } + + protected void updateState(World world, int x, int y, int z) { + if(!world.isRemote) { + ForgeDirection dir = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)); + + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isNormalCube()) + return; //no obstructions allowed! + + boolean flag = checkRedstone(world, x, y, z); + TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); + + if(flag && !piston.lastState && piston.extend <= 0) + piston.isRetracting = false; + + piston.lastState = flag; + } + } + + protected boolean checkRedstone(World world, int x, int y, int z) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getIndirectPowerOutput(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir.ordinal())) + return true; + } + + 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(side != world.getBlockMetadata(x, y, z)) return false; + + if(player.isSneaking()) { + if(!world.isRemote) { + TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); + + if(piston.slot != null && piston.isRetracting) { + ForgeDirection dir = ForgeDirection.getOrientation(piston.getBlockMetadata()); + + EntityItem dust = new EntityItem(world, x + 0.5D + dir.offsetX * 0.75D, y + 0.5D + dir.offsetY * 0.75D, z + 0.5D + dir.offsetZ * 0.75D, piston.slot); + piston.slot = null; + + dust.motionX = dir.offsetX * 0.25; + dust.motionY = dir.offsetY * 0.25; + dust.motionZ = dir.offsetZ * 0.25; + world.spawnEntityInWorld(dust); + } + } + + return true; + } else if(player.getHeldItem() != null) { + if(!world.isRemote) { + TileEntityPistonInserter piston = (TileEntityPistonInserter)world.getTileEntity(x, y, z); + + if(piston.slot == null) { + piston.slot = player.inventory.decrStackSize(player.inventory.currentItem, 1); + player.inventoryContainer.detectAndSendChanges(); + } + } + + return true; + } + + return false; + } + + @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 + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + int meta = world.getBlockMetadata(x, y, z); + return meta != side.ordinal() && meta != side.getOpposite().ordinal(); + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + IInventory tileentityfurnace = (IInventory) world.getTileEntity(x, y, z); + + if(tileentityfurnace != null) { + + ItemStack itemstack = tileentityfurnace.getStackInSlot(0); + + if(itemstack != null) { + float f = world.rand.nextFloat() * 0.8F + 0.1F; + float f1 = world.rand.nextFloat() * 0.8F + 0.1F; + float f2 = world.rand.nextFloat() * 0.8F + 0.1F; + + while(itemstack.stackSize > 0) { + int j1 = world.rand.nextInt(21) + 10; + + if(j1 > itemstack.stackSize) { + j1 = itemstack.stackSize; + } + + itemstack.stackSize -= j1; + EntityItem entityitem = new EntityItem(world, x + f, y + f1, z + f2, new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); + + if(itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (float) world.rand.nextGaussian() * f3; + entityitem.motionY = (float) world.rand.nextGaussian() * f3 + 0.2F; + entityitem.motionZ = (float) world.rand.nextGaussian() * f3; + world.spawnEntityInWorld(entityitem); + } + } + + world.func_147453_f(x, y, z, block); + } + + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + // $%&#$& + // %$&&@$%%#% + //______ $%@--$@@%&$%$ + // | %/ *--$#@&&$$ + // | / --__ %$%@$& + // | (----^`--- $@##% + // | /___\ `-----*#@$ + // | /(()_) / /___\ /__ + // | / \___// (()_) //-,| + // | /____|_ / \___// )_/ + // | \____/ `^-___|___/ | + // | \/ \____/ /_-^-. + // | / _-' |___. \_ + // | / _-' / `\ \\___ + // | `'\____~~+~^/ _)/ \____ + // | \`----' | __/ _) + // | /( /~-' ,-' | + // | / `| | / | + // | / ( ) / `) + // | / `-==-' | | + // | / /| | | + // | / / \ | | + // | / / | | | + // | / / \ _____,.____| | + // | / _ / |<`____, ____,| | + // | / / \_ / _ | <_____/ | ) + // | / / ^/,^=-~---~' `z---..._______/ | + // |--' / /| |/ .^ ,^\ \ ) + // | |_|| || |(_( ) | | + // | \_/`-``-`----'___/_____ | + // |___..---' _|____`-----..-----'\ + // |_____________________| @ | ) + // average coding session involving tile entities + public static class TileEntityPistonInserter extends TileEntity implements IInventory, INBTPacketReceiver { + + public ItemStack slot; + + public int extend; //why don't we just make all these ones serverside? we're never using them on the client anyway + public static final int maxExtend = 25; + public boolean isRetracting = true; + public int delay; + + //prevents funkies from happening with block updates or loading into a server + private boolean lastState; + + //when a fake animatorcel gives you something so 20fps you gotta hit him with the true interpolation stare + @SideOnly(Side.CLIENT) public double renderExtend; + @SideOnly(Side.CLIENT) public double lastExtend; + @SideOnly(Side.CLIENT) private int syncExtend; //what are these for? + @SideOnly(Side.CLIENT) private int turnProgress; + + public TileEntityPistonInserter() { } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(delay <= 0) { + + if(this.isRetracting && this.extend > 0) { + this.extend--; + } else if(!this.isRetracting) { + this.extend++; + + if(this.extend >= this.maxExtend) { + worldObj.playSoundEffect(xCoord, yCoord, zCoord, "hbm:block.pressOperate", 1.0F, 1.5F); + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + Block b = worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord + dir.offsetY * 2, zCoord + dir.offsetZ * 2); + + if(b instanceof IInsertable && ((IInsertable) b).insertItem(worldObj, xCoord + dir.offsetX * 2, yCoord + dir.offsetY * 2, zCoord + dir.offsetZ * 2, dir, slot)) { + this.decrStackSize(0, 1); + } + + this.isRetracting = true; + this.delay = 5; + } + } + + } else { + delay--; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("extend", extend); + if(this.slot != null) { + NBTTagCompound stack = new NBTTagCompound(); + slot.writeToNBT(stack); + data.setTag("stack", stack); + } + + INBTPacketReceiver.networkPack(this, data, 25); + + } else { + this.lastExtend = this.renderExtend; + + if(this.turnProgress > 0) { + this.renderExtend += (this.syncExtend - this.renderExtend) / (double) this.turnProgress; + this.turnProgress--; + } else { + this.renderExtend = this.syncExtend; + } + } + + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.syncExtend = nbt.getInteger("extend"); + + if(nbt.hasKey("stack")) { + NBTTagCompound stack = nbt.getCompoundTag("stack"); + this.slot = ItemStack.loadItemStackFromNBT(stack); + } else + this.slot = null; + + this.turnProgress = 2; + } + + /* :3 NBT stuff */ + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setInteger("extend", extend); + nbt.setBoolean("retract", isRetracting); + nbt.setBoolean("state", lastState); //saved so loading into a world doesn't cause issues + if(this.slot != null) { + NBTTagCompound stack = new NBTTagCompound(); + slot.writeToNBT(stack); + nbt.setTag("stack", stack); + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.extend = nbt.getInteger("extend"); + this.isRetracting = nbt.getBoolean("retract"); + this.lastState = nbt.getBoolean("state"); + if(nbt.hasKey("stack")) { + NBTTagCompound stack = nbt.getCompoundTag("stack"); + this.slot = ItemStack.loadItemStackFromNBT(stack); + } else { + this.slot = null; + } + } + + @SideOnly(Side.CLIENT) + private AxisAlignedBB aabb; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(aabb != null) + return aabb; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + aabb = AxisAlignedBB.getBoundingBox(xCoord, yCoord, zCoord, xCoord + 1, yCoord + 1, zCoord + 1).addCoord(dir.offsetX, dir.offsetY, dir.offsetZ); + return aabb; + } + + /* BS inventory stuff */ + + @Override public int getSizeInventory() { return 1; } + + @Override public ItemStack getStackInSlot(int slot) { return this.slot; } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slot != null) { + if(this.slot.stackSize <= amount) { + ItemStack stack = this.slot; + this.slot = null; + return stack; + } + + ItemStack stack = this.slot.splitStack(amount); + if(this.slot.stackSize == 0) + this.slot = null; + + return stack; + } + + return null; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { return null; } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slot = stack; + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) + stack.stackSize = this.getInventoryStackLimit(); + } + + @Override public String getInventoryName() { return null; } + + @Override public boolean hasCustomInventoryName() { return false; } + + @Override public int getInventoryStackLimit() { return 1; } + + @Override public boolean isUseableByPlayer(EntityPlayer player) { return false; } + + @Override public void openInventory() {} + + @Override public void closeInventory() {} + + @Override public boolean isItemValidForSlot(int slot, ItemStack stack) { return true; } + + } +} diff --git a/src/main/java/com/hbm/blocks/machine/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 76350d2a2..4f195b722 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,12 +1,23 @@ package com.hbm.blocks.machine; +import java.util.Random; + import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.items.ModItems; +import com.hbm.tileentity.TileEntityProxyCombo; import com.hbm.tileentity.machine.TileEntityWatz; +import net.minecraft.block.Block; import net.minecraft.block.material.Material; +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.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class Watz extends BlockDummyable { @@ -17,25 +28,77 @@ public class Watz extends BlockDummyable { @Override public TileEntity createNewTileEntity(World world, int meta) { - if(meta >= 12) - return new TileEntityWatz(); - + if(meta >= 12) return new TileEntityWatz(); + if(meta >= 6) return new TileEntityProxyCombo().inventory().fluid(); + return null; + } + + @Override + public Item getItemDropped(int i, Random rand, int j) { return null; } @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - //return super.standardOpenBehavior(world, x, y, z, player, 0); - return false; + return super.standardOpenBehavior(world, x, y, z, player, 0); } @Override public int[] getDimensions() { - return new int[] {2, 0, 3, 3, 3, 3}; + return new int[] {2, 0, 3, 3, 1, 1}; } @Override public int getOffset() { return 3; } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return super.checkRequirement(world, x, y, z, dir, o) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 2, 2, 2, -2}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 2, 2, -2, 2}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 1, 1, 3, -3}, x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 1, 1, -3, 3}, x, y, z, dir); + } + + @Override + public void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + super.fillSpace(world, x, y, z, dir, o); + + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 2, 2, 2, -2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 2, 2, -2, 2}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 1, 1, 3, -3}, this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[]{2, 0, 1, 1, -3, 3}, this, dir); + + x += dir.offsetX * o; + z += dir.offsetZ * o; + + this.makeExtra(world, x + 2, y, z); + this.makeExtra(world, x - 2, y, z); + this.makeExtra(world, x, y, z + 2); + this.makeExtra(world, x, y, z - 2); + this.makeExtra(world, x + 2, y + 2, z); + this.makeExtra(world, x - 2, y + 2, z); + this.makeExtra(world, x, y + 2, z + 2); + this.makeExtra(world, x, y + 2, z - 2); + this.makeExtra(world, x, y + 2, z); + } + + public static boolean drop = true; + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int i) { + + if(i >= 12 && drop) { + + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_end, 48))); + for(int j = 0; j < 3; j++) world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModItems.bolt_dura_steel, 64))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_element, 36))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.watz_cooler, 26))); + world.spawnEntityInWorld(new EntityItem(world, x + 0.5, y + 0.5, z + 0.5, new ItemStack(ModBlocks.struct_watz_core, 1))); + } + + super.breakBlock(world, x, y, z, block, i); + } } diff --git a/src/main/java/com/hbm/blocks/machine/WatzPump.java b/src/main/java/com/hbm/blocks/machine/WatzPump.java new file mode 100644 index 000000000..69405e861 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/WatzPump.java @@ -0,0 +1,52 @@ +package com.hbm.blocks.machine; + +import com.hbm.blocks.BlockDummyable; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class WatzPump extends BlockDummyable { + + public WatzPump() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + if(meta >= 12) return new TileEntityWatzPump(); + + return null; + } + + @Override + public int[] getDimensions() { + return new int[] {1, 0, 0, 0, 0, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + int meta = world.getBlockMetadata(x, y, z); + return side == ForgeDirection.UP && meta == 1; + } + + public static class TileEntityWatzPump extends TileEntity { + @Override public boolean canUpdate() { return false; } + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } + AxisAlignedBB bb = null; + @Override public AxisAlignedBB getRenderBoundingBox() { + if(bb == null) bb = AxisAlignedBB.getBoundingBox(xCoord - 1, yCoord, zCoord - 1, xCoord + 2, yCoord + 2, zCoord + 2); + return bb; + } + } +} diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java index 45ceb6d10..c5018700a 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphite.java @@ -32,7 +32,7 @@ public class BlockGraphite extends BlockFlammable implements IToolable { PacketDispatcher.wrapper.sendToAllAround(new ParticleBurstPacket(x, y, z, Block.getIdFromBlock(this), 0), new TargetPoint(world.provider.dimensionId, x, y, z, 50)); world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, this.stepSound.func_150496_b(), (this.stepSound.getVolume() + 1.0F) / 2.0F, this.stepSound.getPitch() * 0.8F); - BlockGraphiteRod.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.powder_coal)); + BlockGraphiteRod.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(ModItems.ingot_graphite)); } return true; diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java index 46231bca4..fdfcac709 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteBreedingFuel.java @@ -64,4 +64,5 @@ public class BlockGraphiteBreedingFuel extends BlockGraphiteDrilledTE implements protected Item getInsertedItem() { return ModItems.pile_rod_lithium; } + } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java index 909620e26..58ec7bce2 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteDrilledBase.java @@ -5,9 +5,11 @@ import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockFlammable; +import com.hbm.inventory.RecipesCommon.MetaBlock; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import api.hbm.block.IInsertable; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -17,11 +19,13 @@ 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.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements IToolable { +public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements IToolable, IInsertable { @SideOnly(Side.CLIENT) protected IIcon sideIcon; @@ -89,7 +93,7 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements if(side == cfg * 2 || side == cfg * 2 + 1) { world.setBlock(x, y, z, ModBlocks.block_graphite_drilled, meta & 7, 3); - this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem())); + this.ejectItem(world, x, y, z, ForgeDirection.getOrientation(side), new ItemStack(getInsertedItem(meta))); } } @@ -115,4 +119,115 @@ public abstract class BlockGraphiteDrilledBase extends BlockFlammable implements drops.add(new ItemStack(getInsertedItem(meta), 1)); return drops; } + + //Checks the relationship between specific items and placement. + //kinda cringe but anything other than hardcoding would be overengineering this for no reason so + //all of this is destined to be changed most likely anyway + protected MetaBlock checkInteractions(ItemStack stack) { + Item item = stack.getItem(); //temp + if(item == ModItems.pile_rod_uranium) return new MetaBlock(ModBlocks.block_graphite_fuel); + if(item == ModItems.pile_rod_pu239) return new MetaBlock(ModBlocks.block_graphite_fuel, 0b1000); + if(item == ModItems.pile_rod_plutonium) return new MetaBlock(ModBlocks.block_graphite_plutonium); + if(item == ModItems.pile_rod_source) return new MetaBlock(ModBlocks.block_graphite_source); + if(item == ModItems.pile_rod_boron) return new MetaBlock(ModBlocks.block_graphite_rod); + if(item == ModItems.pile_rod_lithium) return new MetaBlock(ModBlocks.block_graphite_lithium); + if(item == ModItems.cell_tritium) return new MetaBlock(ModBlocks.block_graphite_tritium); + if(item == ModItems.pile_rod_detector) return new MetaBlock(ModBlocks.block_graphite_detector); + return null; + } + + @Override + public boolean insertItem(World world, int x, int y, int z, ForgeDirection dir, ItemStack stack) { + + if(stack == null) return false; + + MetaBlock baseBlock = checkInteractions(stack); + if(baseBlock == null) return false; + + final int side = dir.ordinal(); + final int pureMeta = world.getBlockMetadata(x, y, z) & 3; //in case it's shrouded in aluminum + + if(side == pureMeta * 2 || side == pureMeta * 2 + 1) { + //first, make sure we can even push rods out + for(int i = 0; i <= 3; i++) { //limited to 3 boyos + int ix = x + dir.offsetX * i; + int iy = y + dir.offsetY * i; + int iz = z + dir.offsetZ * i; + + Block b = world.getBlock(ix, iy, iz); + + if(b instanceof BlockGraphiteDrilledBase) { + int baseMeta = world.getBlockMetadata(ix, iy, iz); + if((baseMeta & 3) != pureMeta) //wrong orientation + return false; + + if(((BlockGraphiteDrilledBase)b).getInsertedItem(baseMeta) == null) //if there's nothing to push + break; + else if(i >= 3) //if there is stuff to push and we reach our limit + return false; + } else { + if(b.isNormalCube()) //obstructions + return false; + else //empty space? no need to search + break; + } + } + + //TODO convert old methods to use itemstack for flexibility + int oldMeta = pureMeta | baseBlock.meta; //metablocks are kinda inconvenient to work with so + Block oldBlock = baseBlock.block; + NBTTagCompound oldTag = new NBTTagCompound(); //In case of TEs + oldTag.setInteger("x", x); //giving tags prevents issues and resets any lingering tes. + oldTag.setInteger("y", y); + oldTag.setInteger("z", z); + + //now actually make the change + for(int i = 0; i <= 3; i++) { //yeah yeah we know it's safe but let's be *extra cautious* of infinite loops + int ix = x + dir.offsetX * i; + int iy = y + dir.offsetY * i; + int iz = z + dir.offsetZ * i; + + Block newBlock = world.getBlock(ix, iy, iz); + + if(newBlock instanceof BlockGraphiteDrilledBase) { + int newMeta = world.getBlockMetadata(ix, iy, iz); + NBTTagCompound newTag = new NBTTagCompound(); + + if(newBlock instanceof BlockGraphiteDrilledTE) { + TileEntity te = world.getTileEntity(ix, iy, iz); + te.writeToNBT(newTag); + newTag.setInteger("x", te.xCoord + dir.offsetX); //malformed positions is very very bad and prevents the pile TEs from ticking + newTag.setInteger("y", te.yCoord + dir.offsetY); + newTag.setInteger("z", te.zCoord + dir.offsetZ); + } + + world.setBlock(ix, iy, iz, oldBlock, (oldMeta & ~0b100) | (newMeta & 0b100), 0); + + if(oldBlock instanceof BlockGraphiteDrilledTE && !oldTag.hasNoTags()) { //safety first + TileEntity te = world.getTileEntity(ix, iy, iz); + te.readFromNBT(oldTag); + } + + world.markAndNotifyBlock(ix, iy, iz, world.getChunkFromBlockCoords(ix, iz), newBlock, oldBlock, 3); //in case setBlock returns false due to = meta / block + + oldMeta = newMeta; + oldBlock = newBlock; + oldTag = newTag; + + if(oldBlock instanceof BlockGraphiteDrilled) //if there's no need to eject an item + break; + } else { + Item eject = ((BlockGraphiteDrilledBase) oldBlock).getInsertedItem(oldMeta); //TODO old methods to itemstack + this.ejectItem(world, ix - dir.offsetX, iy - dir.offsetY, iz - dir.offsetZ, dir, new ItemStack(eject)); + world.playSoundEffect(ix + 0.5, iy + 0.5, iz + 0.5, "hbm:item.upgradePlug", 1.25F, 1.0F); + + break; + } + } + + return true; + } + + return false; + } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java index d3b768d6c..cc98534da 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -5,6 +5,7 @@ import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.pile.TileEntityPileFuel; +import api.hbm.block.IBlowable; import api.hbm.block.IToolable; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -16,14 +17,19 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolable { +public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolable, IBlowable { @Override - public TileEntity createNewTileEntity(World world, int mets) { - return new TileEntityPileFuel(); + public TileEntity createNewTileEntity(World world, int meta) { + TileEntityPileFuel pile = new TileEntityPileFuel(); + if((meta & 8) != 0) + pile.progress = pile.maxProgress - 1000; // pu239 rods cringe :( + + return pile; } @Override @@ -33,6 +39,17 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab this.blockIconAluminum = iconRegister.registerIcon(RefStrings.MODID + ":block_graphite_fuel_aluminum"); } + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + TileEntityPileFuel pile = (TileEntityPileFuel)world.getTileEntity(x, y, z); + return MathHelper.clamp_int((pile.progress * 16) / pile.maxProgress, 0, 15); //potentially wip + } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { @@ -68,4 +85,10 @@ public class BlockGraphiteFuel extends BlockGraphiteDrilledTE implements IToolab protected Item getInsertedItem(int meta) { return (meta & 8) == 8 ? ModItems.pile_rod_pu239 : ModItems.pile_rod_uranium; } + + @Override + public void applyFan(World world, int x, int y, int z, ForgeDirection dir, int dist) { + TileEntityPileFuel pile = (TileEntityPileFuel) world.getTileEntity(x, y, z); + pile.heat -= pile.heat * 0.025; + } } diff --git a/src/main/java/com/hbm/blocks/network/BlockCable.java b/src/main/java/com/hbm/blocks/network/BlockCable.java index 92fc65684..60906e5fd 100644 --- a/src/main/java/com/hbm/blocks/network/BlockCable.java +++ b/src/main/java/com/hbm/blocks/network/BlockCable.java @@ -48,12 +48,12 @@ public class BlockCable extends BlockContainer { @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - boolean posX = Library.canConnect(world, x + 1, y, z, Library.NEG_X); - boolean negX = Library.canConnect(world, x - 1, y, z, Library.POS_X); - boolean posY = Library.canConnect(world, x, y + 1, z, Library.NEG_Y); - boolean negY = Library.canConnect(world, x, y - 1, z, Library.POS_Y); - boolean posZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z); - boolean negZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z); + boolean posX = Library.canConnect(world, x + 1, y, z, Library.POS_X); + boolean negX = Library.canConnect(world, x - 1, y, z, Library.NEG_X); + boolean posY = Library.canConnect(world, x, y + 1, z, Library.POS_Y); + boolean negY = Library.canConnect(world, x, y - 1, z, Library.NEG_Y); + boolean posZ = Library.canConnect(world, x, y, z + 1, Library.POS_Z); + boolean negZ = Library.canConnect(world, x, y, z - 1, Library.NEG_Z); setBlockBounds(posX, negX, posY, negY, posZ, negZ); @@ -63,12 +63,12 @@ public class BlockCable extends BlockContainer { @Override public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - boolean posX = Library.canConnect(world, x + 1, y, z, Library.NEG_X); - boolean negX = Library.canConnect(world, x - 1, y, z, Library.POS_X); - boolean posY = Library.canConnect(world, x, y + 1, z, Library.NEG_Y); - boolean negY = Library.canConnect(world, x, y - 1, z, Library.POS_Y); - boolean posZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z); - boolean negZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z); + boolean posX = Library.canConnect(world, x + 1, y, z, Library.POS_X); + boolean negX = Library.canConnect(world, x - 1, y, z, Library.NEG_X); + boolean posY = Library.canConnect(world, x, y + 1, z, Library.POS_Y); + boolean negY = Library.canConnect(world, x, y - 1, z, Library.NEG_Y); + boolean posZ = Library.canConnect(world, x, y, z + 1, Library.POS_Z); + boolean negZ = Library.canConnect(world, x, y, z - 1, Library.NEG_Z); setBlockBounds(posX, negX, posY, negY, posZ, negZ); } diff --git a/src/main/java/com/hbm/blocks/network/BlockGasDuct.java b/src/main/java/com/hbm/blocks/network/BlockGasDuct.java deleted file mode 100644 index f1b85be7d..000000000 --- a/src/main/java/com/hbm/blocks/network/BlockGasDuct.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hbm.blocks.network; - -import com.hbm.tileentity.conductor.TileEntityGasDuct; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class BlockGasDuct extends BlockContainer { - - public BlockGasDuct(Material p_i45386_1_) { - super(p_i45386_1_); - float p = 1F/16F; - this.setBlockBounds(11 * p / 2, 11 * p / 2, 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2); - this.useNeighborBrightness = true; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityGasDuct) { - TileEntityGasDuct cable = (TileEntityGasDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityGasDuct) { - TileEntityGasDuct cable = (TileEntityGasDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityGasDuct(); - } - - @Override - public int getRenderType(){ - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } -} diff --git a/src/main/java/com/hbm/blocks/network/BlockOilDuct.java b/src/main/java/com/hbm/blocks/network/BlockOilDuct.java deleted file mode 100644 index a1b9ca9bd..000000000 --- a/src/main/java/com/hbm/blocks/network/BlockOilDuct.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.hbm.blocks.network; - -import com.hbm.tileentity.conductor.TileEntityOilDuct; - -import net.minecraft.block.BlockContainer; -import net.minecraft.block.material.Material; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.world.IBlockAccess; -import net.minecraft.world.World; - -public class BlockOilDuct extends BlockContainer { - - public BlockOilDuct(Material p_i45386_1_) { - super(p_i45386_1_); - float p = 1F/16F; - this.setBlockBounds(11 * p / 2, 11 * p / 2, 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2, 1 - 11 * p / 2); - this.useNeighborBrightness = true; - } - - @Override - public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityOilDuct) { - TileEntityOilDuct cable = (TileEntityOilDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); - } - - @Override - public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { - if(world.getTileEntity(x, y, z) instanceof TileEntityOilDuct) { - TileEntityOilDuct cable = (TileEntityOilDuct)world.getTileEntity(x, y, z); - - if(cable != null) - { - float p = 1F/16F; - float minX = 11 * p / 2 - (cable.connections[5] != null ? (11 * p / 2) : 0); - float minY = 11 * p / 2 - (cable.connections[1] != null ? (11 * p / 2) : 0); - float minZ = 11 * p / 2 - (cable.connections[2] != null ? (11 * p / 2) : 0); - float maxX = 1 - 11 * p / 2 + (cable.connections[3] != null ? (11 * p / 2) : 0); - float maxY = 1 - 11 * p / 2 + (cable.connections[0] != null ? (11 * p / 2) : 0); - float maxZ = 1 - 11 * p / 2 + (cable.connections[4] != null ? (11 * p / 2) : 0); - - this.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ); - } - } - } - - @Override - public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { - return new TileEntityOilDuct(); - } - - @Override - public int getRenderType(){ - return -1; - } - - @Override - public boolean isOpaqueCube() { - return false; - } - - @Override - public boolean renderAsNormalBlock() { - return false; - } -} diff --git a/src/main/java/com/hbm/blocks/network/CableDiode.java b/src/main/java/com/hbm/blocks/network/CableDiode.java index da65eb314..6771ccf2d 100644 --- a/src/main/java/com/hbm/blocks/network/CableDiode.java +++ b/src/main/java/com/hbm/blocks/network/CableDiode.java @@ -12,6 +12,7 @@ import com.hbm.util.I18nUtil; import api.hbm.block.IToolable; import api.hbm.energy.IEnergyUser; import api.hbm.energy.IEnergyConnector.ConnectionPriority; +import api.hbm.energy.IEnergyConnectorBlock; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -32,7 +33,7 @@ import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; -public class CableDiode extends BlockContainer implements ILookOverlay, IToolable, ITooltipProvider { +public class CableDiode extends BlockContainer implements IEnergyConnectorBlock, ILookOverlay, IToolable, ITooltipProvider { public CableDiode(Material mat) { super(mat); @@ -66,6 +67,11 @@ public class CableDiode extends BlockContainer implements ILookOverlay, IToolabl world.setBlockMetadataWithNotify(x, y, z, l, 2); } + @Override + public boolean canConnect(IBlockAccess world, int x, int y, int z, ForgeDirection dir) { + return true; + } + @Override public boolean onScrew(World world, EntityPlayer player, int x, int y, int z, int side, float fX, float fY, float fZ, ToolType tool) { @@ -179,6 +185,11 @@ public class CableDiode extends BlockContainer implements ILookOverlay, IToolabl } } } + + @Override + public boolean canConnect(ForgeDirection dir) { + return dir != getDir(); + } private boolean recursionBrake = false; private long subBuffer; diff --git a/src/main/java/com/hbm/blocks/network/CraneBoxer.java b/src/main/java/com/hbm/blocks/network/CraneBoxer.java index c9cd865bc..b884bd62f 100644 --- a/src/main/java/com/hbm/blocks/network/CraneBoxer.java +++ b/src/main/java/com/hbm/blocks/network/CraneBoxer.java @@ -2,7 +2,6 @@ package com.hbm.blocks.network; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityCraneBoxer; -import com.hbm.tileentity.network.TileEntityCraneInserter; import api.hbm.conveyor.IConveyorItem; import api.hbm.conveyor.IConveyorPackage; @@ -81,7 +80,7 @@ public class CraneBoxer extends BlockCraneBase implements IEnterableBlock { @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { - return Container.calcRedstoneFromInventory((TileEntityCraneInserter)world.getTileEntity(x, y, z)); + return Container.calcRedstoneFromInventory((TileEntityCraneBoxer)world.getTileEntity(x, y, z)); } @Override diff --git a/src/main/java/com/hbm/blocks/network/CraneGrabber.java b/src/main/java/com/hbm/blocks/network/CraneGrabber.java new file mode 100644 index 000000000..5c0ee4bb1 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/CraneGrabber.java @@ -0,0 +1,56 @@ +package com.hbm.blocks.network; + +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityCraneGrabber; + +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.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +public class CraneGrabber extends BlockCraneBase { + + public CraneGrabber() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityCraneGrabber(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + this.iconDirectional = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_top"); + this.iconDirectionalUp = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_up"); + this.iconDirectionalDown = iconRegister.registerIcon(RefStrings.MODID + ":crane_grabber_side_down"); + this.iconOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_pull"); + this.iconSideOut = iconRegister.registerIcon(RefStrings.MODID + ":crane_side_pull"); + } + + @Override + public int getRotationFromSide(IBlockAccess world, int x, int y, int z, int side) { + int meta = world.getBlockMetadata(x, y, z); + + if(meta > 1 && side == 1) { + if(meta == 2) return 3; + if(meta == 3) return 0; + if(meta == 4) return 1; + if(meta == 5) return 2; + } + + return 0; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + this.dropContents(world, x, y, z, block, meta, 9, 11); + super.breakBlock(world, x, y, z, block, meta); + } +} diff --git a/src/main/java/com/hbm/blocks/network/CraneSplitter.java b/src/main/java/com/hbm/blocks/network/CraneSplitter.java index e0abc2450..11de7afda 100644 --- a/src/main/java/com/hbm/blocks/network/CraneSplitter.java +++ b/src/main/java/com/hbm/blocks/network/CraneSplitter.java @@ -28,9 +28,13 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt @SideOnly(Side.CLIENT) public IIcon iconTopRight; @SideOnly(Side.CLIENT) public IIcon iconFrontLeft; @SideOnly(Side.CLIENT) public IIcon iconFrontRight; - @SideOnly(Side.CLIENT) public IIcon iconBottom; + @SideOnly(Side.CLIENT) public IIcon iconBackLeft; + @SideOnly(Side.CLIENT) public IIcon iconBackRight; + @SideOnly(Side.CLIENT) public IIcon iconLeft; + @SideOnly(Side.CLIENT) public IIcon iconRight; @SideOnly(Side.CLIENT) public IIcon iconBelt; @SideOnly(Side.CLIENT) public IIcon iconInner; + @SideOnly(Side.CLIENT) public IIcon iconInnerSide; public CraneSplitter() { super(Material.iron); @@ -55,7 +59,17 @@ public class CraneSplitter extends BlockDummyable implements IConveyorBelt, IEnt @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iconRegister) { super.registerBlockIcons(iconRegister); + this.iconTopLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_top_left"); + this.iconTopRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_top_right"); + this.iconFrontLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_front_left"); + this.iconFrontRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_front_right"); + this.iconBackLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_back_left"); + this.iconBackRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_back_right"); + this.iconLeft = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_left"); + this.iconRight = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_right"); this.iconBelt = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_belt"); + this.iconInner = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_inner"); + this.iconInnerSide = iconRegister.registerIcon(RefStrings.MODID + ":crane_splitter_inner_side"); } public static int renderID = RenderingRegistry.getNextAvailableRenderId(); diff --git a/src/main/java/com/hbm/blocks/network/CraneUnboxer.java b/src/main/java/com/hbm/blocks/network/CraneUnboxer.java index 530a4b248..558de5654 100644 --- a/src/main/java/com/hbm/blocks/network/CraneUnboxer.java +++ b/src/main/java/com/hbm/blocks/network/CraneUnboxer.java @@ -12,6 +12,7 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.item.EntityItem; +import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; @@ -86,4 +87,14 @@ public class CraneUnboxer extends BlockCraneBase implements IEnterableBlock { } } } + + @Override + public boolean hasComparatorInputOverride() { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int side) { + return Container.calcRedstoneFromInventory((TileEntityCraneUnboxer)world.getTileEntity(x, y, z)); + } } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java index e8675d146..75d01ab6f 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBox.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBox.java @@ -5,8 +5,6 @@ import java.util.List; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.ILookOverlay; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; import com.hbm.tileentity.network.TileEntityPipeBaseNT; @@ -73,21 +71,14 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve @SideOnly(Side.CLIENT) public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { - FluidType type = Fluids.NONE; - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityPipeBaseNT) { - TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - type = pipe.getType(); - } - - boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.NEG_X, type); - boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.POS_X, type); - boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.NEG_Y, type); - boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.POS_Y, type); - boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.NEG_Z, type); - boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.POS_Z, type); + + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); + boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); + boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); + boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); + boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); + boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); @@ -172,59 +163,55 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve List bbs = new ArrayList(); TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TileEntityPipeBaseNT) { - TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - FluidType type = pipe.getType(); - double lower = 0.125D; - double upper = 0.875D; - double jLower = 0.0625D; - double jUpper = 0.9375D; - int meta = world.getBlockMetadata(x, y, z); - - for(int i = 2; i < 13; i += 3) { - - if(meta > i) { - lower += 0.0625D; - upper -= 0.0625D; - jLower += 0.0625D; - jUpper -= 0.0625D; - } - } - - boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, type); - boolean pX = canConnectTo(world, x, y, z, Library.POS_X, type); - boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, type); - boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, type); - boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type); - boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type); - int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); - int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); - - if(mask == 0) { - bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); - } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { - bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); - } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { - bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + 1.0D, z + upper)); - } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { - bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D)); - } else { - - if(count != 2) { - bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); - } else { - bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper)); - } + double lower = 0.125D; + double upper = 0.875D; + double jLower = 0.0625D; + double jUpper = 0.9375D; + int meta = world.getBlockMetadata(x, y, z); - if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); - if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper)); - if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper)); - if(nY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + lower, z + upper)); - if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D)); - if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower)); + for(int i = 2; i < 13; i += 3) { + + if(meta > i) { + lower += 0.0625D; + upper -= 0.0625D; + jLower += 0.0625D; + jUpper -= 0.0625D; } } + + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); + boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); + boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); + boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); + boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); + boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + + if(mask == 0) { + bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); + } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { + bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); + } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { + bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + 1.0D, z + upper)); + } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { + bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + 1.0D)); + } else { + + if(count != 2) { + bbs.add(AxisAlignedBB.getBoundingBox(x + jLower, y + jLower, z + jLower, x + jUpper, y + jUpper, z + jUpper)); + } else { + bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + lower, x + upper, y + upper, z + upper)); + } + + if(pX) bbs.add(AxisAlignedBB.getBoundingBox(x + upper, y + lower, z + lower, x + 1.0D, y + upper, z + upper)); + if(nX) bbs.add(AxisAlignedBB.getBoundingBox(x + 0.0D, y + lower, z + lower, x + lower, y + upper, z + upper)); + if(pY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + upper, z + lower, x + upper, y + 1.0D, z + upper)); + if(nY) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + 0.0D, z + lower, x + upper, y + lower, z + upper)); + if(pZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + upper, x + upper, y + upper, z + 1.0D)); + if(nZ) bbs.add(AxisAlignedBB.getBoundingBox(x + lower, y + lower, z + 0.0D, x + upper, y + upper, z + lower)); + } for(AxisAlignedBB bb : bbs) { if(entityBounding.intersectsWith(bb)) { @@ -244,68 +231,67 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); - if(te instanceof TileEntityPipeBaseNT) { - TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - FluidType type = pipe.getType(); - float lower = 0.125F; - float upper = 0.875F; - float jLower = 0.0625F; - float jUpper = 0.9375F; - int meta = world.getBlockMetadata(x, y, z); + float lower = 0.125F; + float upper = 0.875F; + float jLower = 0.0625F; + float jUpper = 0.9375F; + int meta = world.getBlockMetadata(x, y, z); + + for(int i = 2; i < 13; i += 3) { - for(int i = 2; i < 13; i += 3) { - - if(meta > i) { - lower += 0.0625F; - upper -= 0.0625F; - jLower += 0.0625F; - jUpper -= 0.0625F; - } + if(meta > i) { + lower += 0.0625F; + upper -= 0.0625F; + jLower += 0.0625F; + jUpper -= 0.0625F; } - - boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, type); - boolean pX = canConnectTo(world, x, y, z, Library.POS_X, type); - boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, type); - boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, type); - boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, type); - boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, type); - int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); - int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + } + + boolean nX = canConnectTo(world, x, y, z, Library.NEG_X, te); + boolean pX = canConnectTo(world, x, y, z, Library.POS_X, te); + boolean nY = canConnectTo(world, x, y, z, Library.NEG_Y, te); + boolean pY = canConnectTo(world, x, y, z, Library.POS_Y, te); + boolean nZ = canConnectTo(world, x, y, z, Library.NEG_Z, te); + boolean pZ = canConnectTo(world, x, y, z, Library.POS_Z, te); + int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); + int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); + + if(mask == 0) { + this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper); + } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { + this.setBlockBounds(0F, lower, lower, 1F, upper, upper); + } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { + this.setBlockBounds(lower, 0F, lower, upper, 1F, upper); + } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { + this.setBlockBounds(lower, lower, 0F, upper, upper, 1F); + } else { - if(mask == 0) { - this.setBlockBounds(jLower, jLower, jLower, jUpper, jUpper, jUpper); - } else if(mask == 0b100000 || mask == 0b010000 || mask == 0b110000) { - this.setBlockBounds(0F, lower, lower, 1F, upper, upper); - } else if(mask == 0b001000 || mask == 0b000100 || mask == 0b001100) { - this.setBlockBounds(lower, 0F, lower, upper, 1F, upper); - } else if(mask == 0b000010 || mask == 0b000001 || mask == 0b000011) { - this.setBlockBounds(lower, lower, 0F, upper, upper, 1F); + if(count != 2) { + this.setBlockBounds( + nX ? 0F : jLower, + nY ? 0F : jLower, + nZ ? 0F : jLower, + pX ? 1F : jUpper, + pY ? 1F : jUpper, + pZ ? 1F : jUpper); } else { - - if(count != 2) { - this.setBlockBounds( - nX ? 0F : jLower, - nY ? 0F : jLower, - nZ ? 0F : jLower, - pX ? 1F : jUpper, - pY ? 1F : jUpper, - pZ ? 1F : jUpper); - } else { - this.setBlockBounds( - nX ? 0F : lower, - nY ? 0F : lower, - nZ ? 0F : lower, - pX ? 1F : upper, - pY ? 1F : upper, - pZ ? 1F : upper); - } + this.setBlockBounds( + nX ? 0F : lower, + nY ? 0F : lower, + nZ ? 0F : lower, + pX ? 1F : upper, + pY ? 1F : upper, + pZ ? 1F : upper); } } } - public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, FluidType type) { - return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, type); + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { + if(tile instanceof TileEntityPipeBaseNT) { + return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, ((TileEntityPipeBaseNT) tile).getType()); + } + return false; } @Override @@ -319,7 +305,7 @@ public class FluidDuctBox extends FluidDuctBase implements IBlockMulti, ILookOve TileEntityPipeBaseNT duct = (TileEntityPipeBaseNT) te; List text = new ArrayList(); - text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + text.add("&[" + duct.getType().getColor() + "&]" + I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); } diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java new file mode 100644 index 000000000..3426cf93e --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBoxExhaust.java @@ -0,0 +1,86 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.lib.Library; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityPipeExhaust; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; +import net.minecraftforge.common.util.ForgeDirection; + +public class FluidDuctBoxExhaust extends FluidDuctBox { + + public FluidDuctBoxExhaust(Material mat) { + super(mat); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityPipeExhaust(); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + super.registerBlockIcons(iconRegister); + + iconStraight = new IIcon[1]; + iconEnd = new IIcon[1]; + iconCurveTL = new IIcon[1]; + iconCurveTR = new IIcon[1]; + iconCurveBL = new IIcon[1]; + iconCurveBR = new IIcon[1]; + iconJunction = new IIcon[1]; + + iconStraight[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_straight"); + iconEnd[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_end"); + iconCurveTL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tl"); + iconCurveTR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_tr"); + iconCurveBL[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_bl"); + iconCurveBR[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_curve_br"); + iconJunction[0] = iconRegister.registerIcon(RefStrings.MODID + ":boxduct_exhaust_junction"); + } + + public boolean canConnectTo(IBlockAccess world, int x, int y, int z, ForgeDirection dir, TileEntity tile) { + return Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE) || + Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_LEADED) || + Library.canConnectFluid(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, dir, Fluids.SMOKE_POISON); + } + + @Override + public int getSubCount() { + return 1; + } + + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + for(int i = 0; i < 15; i += 3) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + List text = new ArrayList(); + text.add(I18nUtil.resolveKey(Fluids.SMOKE.getUnlocalizedName())); + text.add(I18nUtil.resolveKey(Fluids.SMOKE_LEADED.getUnlocalizedName())); + text.add(I18nUtil.resolveKey(Fluids.SMOKE_POISON.getUnlocalizedName())); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java index 10e36bf10..f9dc2498f 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctGauge.java @@ -100,7 +100,7 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL public int getRenderType(){ return IBlockMultiPass.getRenderType(); } - + public static class TileEntityPipeGauge extends TileEntityPipeBaseNT implements INBTPacketReceiver { private BigInteger lastMeasurement = BigInteger.valueOf(10); @@ -144,5 +144,6 @@ public class FluidDuctGauge extends FluidDuctBase implements IBlockMultiPass, IL this.deltaTick = Math.max(nbt.getLong("deltaT"), 0); this.deltaLastSecond = Math.max(nbt.getLong("deltaS"), 0); } + } } diff --git a/src/main/java/com/hbm/blocks/network/FluidSwitch.java b/src/main/java/com/hbm/blocks/network/FluidSwitch.java new file mode 100644 index 000000000..c564286c0 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidSwitch.java @@ -0,0 +1,88 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityFluidValve; +import com.hbm.util.I18nUtil; + +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.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class FluidSwitch extends FluidDuctBase implements ILookOverlay { + + @SideOnly(Side.CLIENT) + private IIcon iconOn; + + public FluidSwitch(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_on"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_switch_off"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 1 ? iconOn : blockIcon; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFluidValve(); + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { + + boolean on = world.isBlockIndirectlyGettingPowered(x, y, z); + int meta = world.getBlockMetadata(x, y, z); + + boolean update = false; + + if(on && meta == 0) { + world.setBlockMetadataWithNotify(x, y, z, 1, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); + update = true; + } + + if(!on && meta == 1) { + world.setBlockMetadataWithNotify(x, y, z, 0, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); + update = true; + } + + if(update) { + TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); + te.updateState(); + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityFluidValve)) + return; + + TileEntityFluidValve duct = (TileEntityFluidValve) te; + + List text = new ArrayList(); + text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/FluidValve.java b/src/main/java/com/hbm/blocks/network/FluidValve.java new file mode 100644 index 000000000..be6c879e5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/FluidValve.java @@ -0,0 +1,88 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.network.TileEntityFluidValve; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class FluidValve extends FluidDuctBase implements ILookOverlay { + + @SideOnly(Side.CLIENT) + private IIcon iconOn; + + public FluidValve(Material mat) { + super(mat); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + this.iconOn = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_on"); + this.blockIcon = iconRegister.registerIcon(RefStrings.MODID + ":fluid_valve_off"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return metadata == 1 ? iconOn : blockIcon; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFluidValve(); + } + + @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) return true; + + if(super.onBlockActivated(world, x, y, z, player, side, hitX, hitY, hitZ)) return true; + + if(!player.isSneaking()) { + int meta = world.getBlockMetadata(x, y, z); + if(meta == 0) { + world.setBlockMetadataWithNotify(x, y, z, 1, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 1.0F); + } else { + world.setBlockMetadataWithNotify(x, y, z, 0, 2); + world.playSoundEffect(x, y, z, "hbm:block.reactorStart", 1.0F, 0.85F); + } + + TileEntityFluidValve te = (TileEntityFluidValve) world.getTileEntity(x, y, z); + te.updateState(); + + return true; + } else { + return false; + } + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + + TileEntity te = world.getTileEntity(x, y, z); + + if(!(te instanceof TileEntityFluidValve)) + return; + + TileEntityFluidValve duct = (TileEntityFluidValve) te; + + List text = new ArrayList(); + text.add("&[" + duct.getType().getColor() + "&]" +I18nUtil.resolveKey(duct.getType().getUnlocalizedName())); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java index f6255c271..049bc565b 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchBase.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchBase.java @@ -1,15 +1,11 @@ package com.hbm.blocks.network; -import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ITooltipProvider; -import com.hbm.inventory.gui.GUIScreenRadioTorch; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.network.TileEntityRadioTorchBase; -import com.hbm.util.I18nUtil; import cpw.mods.fml.client.registry.RenderingRegistry; import cpw.mods.fml.common.network.internal.FMLNetworkHandler; @@ -18,25 +14,21 @@ 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.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; import net.minecraftforge.common.util.ForgeDirection; +/** + * Base class for all torch-like RTTY blocks + * @author hbm + */ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvider, ILookOverlay, ITooltipProvider { - @SideOnly(Side.CLIENT) protected IIcon iconOn; - public RadioTorchBase() { super(Material.circuits); } @@ -87,12 +79,6 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi return super.collisionRayTrace(world, x, y, z, vec0, vec1); } - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int metadata) { - return side == 0 ? this.blockIcon : this.iconOn; - } - @Override public int onBlockPlaced(World world, int x, int y, int z, int side, float fX, float fY, float fZ, int meta) { return side; @@ -130,36 +116,9 @@ public abstract class RadioTorchBase extends BlockContainer implements IGUIProvi return !player.isSneaking(); } } - - @Override - @SideOnly(Side.CLIENT) - public void printHook(Pre event, World world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRadioTorchBase) { - TileEntityRadioTorchBase radio = (TileEntityRadioTorchBase) te; - List text = new ArrayList(); - if(radio.channel != null && !radio.channel.isEmpty()) text.add(EnumChatFormatting.AQUA + "Freq: " + radio.channel); - text.add(EnumChatFormatting.RED + "Signal: " + radio.lastState); - ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); - } - } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { addStandardInfo(stack, player, list, ext); } - - @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } - - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - TileEntity te = world.getTileEntity(x, y, z); - - if(te instanceof TileEntityRadioTorchBase) - return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te); - - return null; - } } diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java new file mode 100644 index 000000000..a78aafc4a --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/RadioTorchCounter.java @@ -0,0 +1,70 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.container.ContainerCounterTorch; +import com.hbm.inventory.gui.GUICounterTorch; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.network.TileEntityRadioTorchCounter; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public class RadioTorchCounter extends RadioTorchBase { + + @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()) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z); + return true; + } else { + return !player.isSneaking(); + } + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityRadioTorchCounter(); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICounterTorch(player.inventory, (TileEntityRadioTorchCounter) world.getTileEntity(x, y, z)); + } + + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRadioTorchCounter) { + TileEntityRadioTorchCounter radio = (TileEntityRadioTorchCounter) te; + List text = new ArrayList(); + + for(int i = 0; i < 3; i++) { + if(!radio.channel[i].isEmpty()) { + text.add(EnumChatFormatting.AQUA + "Freq " + (i + 1) + ": " + radio.channel[i]); + text.add(EnumChatFormatting.RED + "Signal " + (i + 1) + ": " + radio.lastCount[i]); + } + } + + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java b/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java new file mode 100644 index 000000000..8199991a5 --- /dev/null +++ b/src/main/java/com/hbm/blocks/network/RadioTorchRWBase.java @@ -0,0 +1,62 @@ +package com.hbm.blocks.network; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.inventory.gui.GUIScreenRadioTorch; +import com.hbm.tileentity.network.TileEntityRadioTorchBase; +import com.hbm.util.I18nUtil; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +/** + * Base class for the basic sender and receiver RTTY torch + * @author hbm + */ +public abstract class RadioTorchRWBase extends RadioTorchBase { + + @SideOnly(Side.CLIENT) protected IIcon iconOn; + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int metadata) { + return side == 0 ? this.blockIcon : this.iconOn; + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(Pre event, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRadioTorchBase) { + TileEntityRadioTorchBase radio = (TileEntityRadioTorchBase) te; + List text = new ArrayList(); + if(radio.channel != null && !radio.channel.isEmpty()) text.add(EnumChatFormatting.AQUA + "Freq: " + radio.channel); + text.add(EnumChatFormatting.RED + "Signal: " + radio.lastState); + ILookOverlay.printGeneric(event, I18nUtil.resolveKey(getUnlocalizedName() + ".name"), 0xffff00, 0x404000, text); + } + } + + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRadioTorchBase) + return new GUIScreenRadioTorch((TileEntityRadioTorchBase) te); + + return null; + } +} diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java b/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java index 7ce90e43f..4d7f28c83 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchReceiver.java @@ -10,7 +10,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; -public class RadioTorchReceiver extends RadioTorchBase { +public class RadioTorchReceiver extends RadioTorchRWBase { public RadioTorchReceiver() { super(); diff --git a/src/main/java/com/hbm/blocks/network/RadioTorchSender.java b/src/main/java/com/hbm/blocks/network/RadioTorchSender.java index 2e5a675d4..2045be8a3 100644 --- a/src/main/java/com/hbm/blocks/network/RadioTorchSender.java +++ b/src/main/java/com/hbm/blocks/network/RadioTorchSender.java @@ -9,7 +9,7 @@ import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -public class RadioTorchSender extends RadioTorchBase { +public class RadioTorchSender extends RadioTorchRWBase { public RadioTorchSender() { super(); diff --git a/src/main/java/com/hbm/blocks/rail/IRailNTM.java b/src/main/java/com/hbm/blocks/rail/IRailNTM.java new file mode 100644 index 000000000..120c3b586 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -0,0 +1,64 @@ +package com.hbm.blocks.rail; + +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/** in retrospect, not the best name i could have chosen */ +public interface IRailNTM { + + /** Returns a vector pointing to the closest snapping position given the starting position */ + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ); + + /** + * Returns a location on the rail based on the train's current X/Y/Z momentum as well as the intended speed along the rail. + * If the train would leave the rail within that tick, the position is the last valid position on that rail. + * Inherently safer than simply adding the motion to the position and then snapping, since that may lead to derailing. + * The motion has to be calculated from the train's rotation (rotated 180° when going backwards), the scalar doesn't matter since it's only used for determining orientation in a clear way. + * Motion ends up being *-1 if the train is going in reverse, still pointing forwards despite the speed being negative. + * Also features a double[] wrapper with size 1 which holds the speed value that overshoots the rail. + * */ + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context); + + /** Returns that rail's gauge. Trains will derail if the gauge does not match. */ + public TrackGauge getGauge(World world, int x, int y, int z); + + public static enum TrackGauge { + STANDARD, //roughly 1.5m + NARROW //roughly 0.75m + } + + /** A wrapper for all relevant info required when leaving a rail */ + public static class RailContext { + /** The angle at which the train ends up being on this rail */ + public float yaw; + /** The amount of blocks still left to travel after completing the rail */ + public double overshoot; + /** The exit position of that rail */ + public BlockPos pos; + public RailContext yaw(float y) { this.yaw = y; return this; } + public RailContext dist(double d) { this.overshoot = d; return this; } + public RailContext pos(BlockPos d) { this.pos = d; return this; } + } + + /** A wrapper for additional information like stopping on rails and what type of check we're doing */ + public static class MoveContext { + public RailCheckType type; + public double collisionBogieDistance; + public boolean collision = false; //if a buffer stop or similar applies + public double overshoot; //how much of the travel distance was cut short + + public MoveContext(RailCheckType type, double collisionBogieDistance) { + this.type = type; + this.collisionBogieDistance = collisionBogieDistance; + } + } + + public static enum RailCheckType { + CORE, + FRONT, + BACK, + OTHER + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java new file mode 100644 index 000000000..ac317b65d --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowCurve.java @@ -0,0 +1,144 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailNarrowCurve extends BlockDummyable implements IRailNTM { + + public RailNarrowCurve() { + super(Material.iron); + } + + @Override + 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 Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double turnRadius = 4.5D; + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * turnRadius; + double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * turnRadius; + + Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); + dist = dist.normalize(); + dist.xCoord *= turnRadius; + dist.zCoord *= turnRadius; + + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + + if(speed == 0) { + info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; + if(dir == Library.NEG_X) angleDeg -= 90; + if(dir == Library.POS_X) angleDeg += 90; + if(dir == Library.POS_Z) angleDeg += 180; + angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); + double length90Deg = turnRadius * Math.PI / 2D; + double angularChange = speed / length90Deg * 90D; + + ForgeDirection moveDir = ForgeDirection.UNKNOWN; + + if(Math.abs(motionX) > Math.abs(motionZ)) { + moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; + } else { + moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; + } + + if(moveDir == dir || moveDir == rot.getOpposite()) { + angularChange *= -1; + } + + double effAngle = angleDeg + angularChange; + moveAngle += angularChange; + + if(effAngle > 90) { + double angleOvershoot = effAngle - 90D; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y, axisZ - dir.offsetZ * turnRadius); + } + + if(effAngle < 0) { + double angleOvershoot = -effAngle; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y, axisZ -rot.offsetZ * turnRadius); + } + + double radianChange = angularChange * Math.PI / 180D; + dist.rotateAroundY((float) radianChange); + + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.NARROW; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 4, 0, 4, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + 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/blocks/rail/RailNarrowStraight.java b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java new file mode 100644 index 000000000..624087974 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailNarrowStraight.java @@ -0,0 +1,115 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailNarrowStraight extends BlockDummyable implements IRailNTM { + + public RailNarrowStraight() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 0, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y; + vec.zCoord = cZ + 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5; + vec.yCoord = y; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.NARROW; + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java new file mode 100644 index 000000000..bb503060a --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardBuffer.java @@ -0,0 +1,137 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardBuffer extends BlockDummyable implements IRailNTM { + + public RailStandardBuffer() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 1, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext(), new MoveContext(RailCheckType.OTHER, 0)); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info, context); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + + double nX = (dir == Library.POS_X ? -1 - context.collisionBogieDistance : 2); + double pX = (dir == Library.NEG_X ? 0 - context.collisionBogieDistance : 3); + double buffer = MathHelper.clamp_double(targetX, cX - nX, cX + pX); + + if(buffer != vec.xCoord) { + context.collision = true; + context.overshoot = Math.abs(buffer - vec.xCoord); + vec.xCoord = buffer; + return vec; + } + + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = y + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + + double nZ = (dir == Library.POS_Z ? -1 - context.collisionBogieDistance : 2); + double pZ = (dir == Library.NEG_Z ? 0 - context.collisionBogieDistance : 3); + double buffer = MathHelper.clamp_double(targetZ, cZ - nZ, cZ + pZ); + + if(buffer != vec.xCoord) { + context.collision = true; + context.overshoot = Math.abs(buffer - vec.zCoord); + vec.zCoord = buffer; + return vec; + } + + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java new file mode 100644 index 000000000..10bed1608 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -0,0 +1,201 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardCurve extends BlockDummyable implements IRailNTM { + + public RailStandardCurve() { + super(Material.iron); + } + + @Override + 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 Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + double turnRadius = 4D; + double axisDist = 4.5D; + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + double axisX = cX + 0.5 + dir.offsetX * 0.5 + rot.offsetX * axisDist; + double axisZ = cZ + 0.5 + dir.offsetZ * 0.5 + rot.offsetZ * axisDist; + + Vec3 dist = Vec3.createVectorHelper(vec.xCoord - axisX, 0, vec.zCoord - axisZ); + dist = dist.normalize(); + dist.xCoord *= turnRadius; + dist.zCoord *= turnRadius; + + double moveAngle = Math.atan2(motionX, motionZ) * 180D / Math.PI + 90; + + if(speed == 0) { + info.dist(0).pos(new BlockPos(x, y, z)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX + dist.xCoord, y, axisZ + dist.zCoord); + } + + double angleDeg = Math.atan2(dist.xCoord, dist.zCoord) * 180D / Math.PI + 90; + if(dir == Library.NEG_X) angleDeg -= 90; + if(dir == Library.POS_X) angleDeg += 90; + if(dir == Library.POS_Z) angleDeg += 180; + angleDeg = MathHelper.wrapAngleTo180_double(angleDeg); + double length90Deg = turnRadius * Math.PI / 2D; + double angularChange = speed / length90Deg * 90D; + + ForgeDirection moveDir = ForgeDirection.UNKNOWN; + + if(Math.abs(motionX) > Math.abs(motionZ)) { + moveDir = motionX > 0 ? Library.POS_X : Library.NEG_X; + } else { + moveDir = motionZ > 0 ? Library.POS_Z : Library.NEG_Z; + } + + if(moveDir == dir || moveDir == rot.getOpposite()) { + angularChange *= -1; + } + + double effAngle = angleDeg + angularChange; + moveAngle += angularChange; + + if(effAngle > 90) { + double angleOvershoot = effAngle - 90D; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX - dir.offsetX * 4 + rot.offsetX * 5, y, cZ - dir.offsetZ * 4 + rot.offsetZ * 5)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - dir.offsetX * turnRadius, y + 0.1875, axisZ - dir.offsetZ * turnRadius); + } + + if(effAngle < 0) { + double angleOvershoot = -effAngle; + moveAngle -= angleOvershoot; + double lengthOvershoot = angleOvershoot * length90Deg / 90D; + info.dist(-lengthOvershoot * Math.signum(speed * angularChange)).pos(new BlockPos(cX + dir.offsetX , y, cZ + dir.offsetZ)).yaw((float) moveAngle); + return Vec3.createVectorHelper(axisX - rot.offsetX * turnRadius, y + 0.1875, axisZ -rot.offsetZ * turnRadius); + } + + double radianChange = angularChange * Math.PI / 180D; + dist.rotateAroundY((float) radianChange); + + return Vec3.createVectorHelper(axisX + dist.xCoord, y + 0.1875, axisZ + dist.zCoord); + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 4, 0, 4, 0}; + } + + @Override + public int getOffset() { + return 0; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + return world.getBlock(x + dX, y, z + dZ).isReplaceable(world, x + dX, y, z + dZ) && + world.getBlock(x + rX, y, z + rZ).isReplaceable(world, x + rX, y, z + rZ) && + world.getBlock(x + dX + rX, y, z + dZ + rZ).isReplaceable(world, x + dX + rX, y, z + dZ + rZ) && + world.getBlock(x + dX + rX * 2, y, z + dZ + rZ * 2).isReplaceable(world, x + dX + rX * 2, y, z + dZ + rZ * 2) && + world.getBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ).isReplaceable(world, x + dX * 2 + rX, y, z + dZ * 2 + rZ) && + world.getBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2).isReplaceable(world, x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2) && + world.getBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ).isReplaceable(world, x + dX * 3 + rX, y, z + dZ * 3 + rZ) && + world.getBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2).isReplaceable(world, x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2) && + world.getBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3).isReplaceable(world, x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3).isReplaceable(world, x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3) && + world.getBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3).isReplaceable(world, x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3) && + world.getBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4).isReplaceable(world, x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4) && + world.getBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4).isReplaceable(world, x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4); + } + + @Override + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + + BlockDummyable.safeRem = true; + + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + dir = dir.getOpposite(); + + int dX = dir.offsetX; + int dZ = dir.offsetZ; + int rX = rot.offsetX; + int rZ = rot.offsetZ; + + world.setBlock(x + dX, y, z + dZ, this, dir.ordinal(), 3); + world.setBlock(x + rX, y, z + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX, y, z + dZ + rZ, this, rot.ordinal(), 3); + world.setBlock(x + dX + rX * 2, y, z + dZ + rZ * 2, this, rot.ordinal(), 3); + world.setBlock(x + dX * 2 + rX, y, z + dZ * 2 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 2, y, z + dZ * 2 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX, y, z + dZ * 3 + rZ, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 2, y, z + dZ * 3 + rZ * 2, this, dir.ordinal(), 3); + world.setBlock(x + dX * 2 + rX * 3, y, z + dZ * 2 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 3, y, z + dZ * 3 + rZ * 3, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 3, y, z + dZ * 4 + rZ * 3, this, dir.ordinal(), 3); + world.setBlock(x + dX * 3 + rX * 4, y, z + dZ * 3 + rZ * 4, this, rot.ordinal(), 3); + world.setBlock(x + dX * 4 + rX * 4, y, z + dZ * 4 + rZ * 4, this, rot.ordinal(), 3); + + BlockDummyable.safeRem = false; + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java new file mode 100644 index 000000000..d6911418c --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardRamp.java @@ -0,0 +1,138 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardRamp extends BlockDummyable implements IRailNTM { + + public RailStandardRamp() { + super(Material.iron); + this.bounding.add(AxisAlignedBB.getBoundingBox(-2.5, 0.0, -1.5, -1.5, 0.1, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-1.5, 0.0, -1.5, -0.5, 0.3, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(-0.5, 0.0, -1.5, 0.5, 0.5, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(0.5, 0.0, -1.5, 1.5, 0.7, 0.5)); + this.bounding.add(AxisAlignedBB.getBoundingBox(1.5, 0.0, -1.5, 2.5, 0.9, 0.5)); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 1, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + double dist = (cX + 0.5 - targetX + 2.5) / 5; + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = MathHelper.clamp_double(dir == Library.POS_X ? cY + dist : cY + 1 - dist, cY, cY + 1) + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), cY + (motionX * speed > 0 ^ dir == Library.POS_X ? 1 : 0), cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + double dist = (cZ + 0.5 - targetZ + 2.5) / 5; + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = MathHelper.clamp_double(dir == Library.POS_Z ? cY + dist : cY + 1 - dist, cY, cY + 1) + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, cY + (motionZ * speed > 0 ^ dir == Library.POS_Z ? 1 : 0), cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } + + protected boolean checkRequirement(World world, int x, int y, int z, ForgeDirection dir, int o) { + return MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), x, y, z, dir) && + MultiblockHandlerXR.checkSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, x, y, z, dir); + } + + protected void fillSpace(World world, int x, int y, int z, ForgeDirection dir, int o) { + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, getDimensions(), this, dir); + MultiblockHandlerXR.fillSpace(world, x + dir.offsetX * o, y + dir.offsetY * o, z + dir.offsetZ * o, new int[] {1, -1, 2, 2, 1, 0}, this, dir); + } +} diff --git a/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java new file mode 100644 index 000000000..b68aedd68 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -0,0 +1,120 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class RailStandardStraight extends BlockDummyable implements IRailNTM { + + public RailStandardStraight() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return null; + } + + public static int renderID = RenderingRegistry.getNextAvailableRenderId(); + + @Override + public int getRenderType() { + return renderID; + } + + @Override + public int[] getDimensions() { + return new int[] {0, 0, 2, 2, 1, 0}; + } + + @Override + public int getOffset() { + return 2; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + this.setBlockBounds(0F, 0F, 0F, 1F, 0.125F, 1F); + return AxisAlignedBB.getBoundingBox(x + this.minX, y + this.minY, z + this.minZ, x + this.maxX, y + this.maxY, z + this.maxZ); + } + + @Override + public Vec3 getSnappingPos(World world, int x, int y, int z, double trainX, double trainY, double trainZ) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, 0, 0, 0, 0, new RailContext()); + } + + @Override + public Vec3 getTravelLocation(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info, MoveContext context) { + return snapAndMove(world, x, y, z, trainX, trainY, trainZ, motionX, motionY, motionZ, speed, info); + } + + /* Very simple function determining the snapping position and adding the motion value to it, if desired. */ + public Vec3 snapAndMove(World world, int x, int y, int z, double trainX, double trainY, double trainZ, double motionX, double motionY, double motionZ, double speed, RailContext info) { + int[] pos = this.findCore(world, x, y, z); + if(pos == null) return Vec3.createVectorHelper(trainX, trainY, trainZ); + int cX = pos[0]; + int cY = pos[1]; + int cZ = pos[2]; + int meta = world.getBlockMetadata(cX, cY, cZ) - this.offset; + ForgeDirection dir = ForgeDirection.getOrientation(meta); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + Vec3 vec = Vec3.createVectorHelper(trainX, trainY, trainZ); + + if(speed == 0) { + //return vec; + } + + if(dir == Library.POS_X || dir == Library.NEG_X) { + double targetX = trainX; + if(motionX > 0) { + targetX += speed; + info.yaw(-90F); + } else { + targetX -= speed; + info.yaw(90F); + } + vec.xCoord = MathHelper.clamp_double(targetX, cX - 2, cX + 3); + vec.yCoord = y + 0.1875; + vec.zCoord = cZ + 0.5 + rot.offsetZ * 0.5; + info.dist(Math.abs(targetX - vec.xCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX + (motionX * speed > 0 ? 3 : -3), y, cZ)); + } else { + double targetZ = trainZ; + if(motionZ > 0) { + targetZ += speed; + info.yaw(0F); + } else { + targetZ -= speed; + info.yaw(180F); + } + vec.xCoord = cX + 0.5 + rot.offsetX * 0.5; + vec.yCoord = y + 0.1875; + vec.zCoord = MathHelper.clamp_double(targetZ, cZ - 2,cZ + 3); + info.dist(Math.abs(targetZ - vec.zCoord) * Math.signum(speed)); + info.pos(new BlockPos(cX, y, cZ + (motionZ * speed > 0 ? 3 : -3))); + } + + return vec; + } + + @Override + public TrackGauge getGauge(World world, int x, int y, int z) { + return TrackGauge.STANDARD; + } +} diff --git a/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java b/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java new file mode 100644 index 000000000..caf5e7673 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandDebugChunkLoad.java @@ -0,0 +1,112 @@ +package com.hbm.commands; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.chunk.Chunk; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.chunk.storage.AnvilChunkLoader; +import net.minecraft.world.chunk.storage.IChunkLoader; +import net.minecraft.world.gen.ChunkProviderServer; + +public class CommandDebugChunkLoad extends CommandBase { + + @Override + public String getCommandName() { + return "ntmloadchunk"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "/ntmloadchunk "; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + + if(args.length != 2) { + return; + } + + int x = this.parseInt(sender, args[0]); + int z = this.parseInt(sender, args[1]); + + IChunkProvider prov = sender.getEntityWorld().getChunkProvider(); + if(prov instanceof ChunkProviderServer) { + ChunkProviderServer serv = (ChunkProviderServer) prov; + IChunkLoader loader = serv.currentChunkLoader; + + if(loader instanceof AnvilChunkLoader) { + AnvilChunkLoader anvil = (AnvilChunkLoader) loader; + + try { + int cX = x >> 4; + int cZ = z >> 4; + + if(prov.chunkExists(cX, cZ)) { + Chunk chunk = sender.getEntityWorld().getChunkFromChunkCoords(cX, cZ); + if(chunk.isChunkLoaded) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Chunk currently loaded.")); + return; + } + } + + Object[] data = anvil.loadChunk__Async(sender.getEntityWorld(), cX, cZ); + //Chunk chunk = (Chunk) data[0]; + NBTTagCompound nbt = (NBTTagCompound) data[1]; + NBTTagCompound level = nbt.getCompoundTag("Level"); + NBTTagList tagList = level.getTagList("TileEntities", 10); + + if(tagList != null) { + + if(tagList.tagCount() <= 0) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Tag list empty")); + } + + for(int i1 = 0; i1 < tagList.tagCount(); ++i1) { + NBTTagCompound tileCompound = tagList.getCompoundTagAt(i1); + int tX = tileCompound.getInteger("x"); + int tY = tileCompound.getInteger("y"); + int tZ = tileCompound.getInteger("z"); + String name = tileCompound.getString("id"); + + int i = tX - cX * 16; + int j = tY; + int k = tZ - cZ * 16; + + EnumChatFormatting color = EnumChatFormatting.GREEN; + + if(i < 0 || i > 15 || j < 0 || j > 255 || k < 0 || k > 15) { + color = EnumChatFormatting.RED; + } + + sender.addChatMessage(new ChatComponentText(color + name + " " + i + " " + j + " " + k)); + + if(i < 0 || i > 15 || j < 0 || j > 255 || k < 0 || k > 15) { + tileCompound.setString("id", "INVALID_POS_" + name); + + NBTTagCompound nbttagcompound = new NBTTagCompound(); + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound.setTag("Level", nbttagcompound1); + // anvil.writeChunkToNBT(chunk, sender.getEntityWorld(), nbttagcompound1); + // anvil.addChunkToPending(chunk.getChunkCoordIntPair(), nbttagcompound); + } + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Tag list null")); + } + + } catch(Exception e) { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "" + e.getLocalizedMessage())); + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Not AnvilChunkLoader")); + } + } else { + sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Not ChunkProviderServer")); + } + } +} diff --git a/src/main/java/com/hbm/commands/CommandSatellites.java b/src/main/java/com/hbm/commands/CommandSatellites.java new file mode 100644 index 000000000..82f474b70 --- /dev/null +++ b/src/main/java/com/hbm/commands/CommandSatellites.java @@ -0,0 +1,87 @@ +package com.hbm.commands; + +import com.hbm.items.ISatChip; +import com.hbm.items.ModItems; +import com.hbm.saveddata.SatelliteSavedData; +import com.hbm.saveddata.satellites.Satellite; +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.ChatStyle; +import net.minecraft.util.EnumChatFormatting; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +public class CommandSatellites extends CommandBase { + @Override + public String getCommandName() { + return "ntmsatellites"; + } + + @Override + public String getCommandUsage(ICommandSender iCommandSender) { + return String.format( + "%s/%s orbit %s- Launch the held satellite\n" + + "%s/%s descend %s- Deletes satellite by frequency.", + EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE, + EnumChatFormatting.GREEN, getCommandName(), EnumChatFormatting.LIGHT_PURPLE + ); + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + if(!(sender instanceof EntityPlayer)) { + sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.should_be_run_as_player").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + return; + } + switch (args[0]) { + case "orbit": + EntityPlayer player = getCommandSenderAsPlayer(sender); + if(player.getHeldItem().getItem() instanceof ISatChip && player.getHeldItem().getItem() != ModItems.sat_chip) { + Satellite.orbit( + player.worldObj, + Satellite.getIDFromItem(player.getHeldItem().getItem()), + ISatChip.getFreqS(player.getHeldItem()), + player.posX, player.posY, player.posZ + ); + player.getHeldItem().stackSize -= 1; + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.satellite_orbited").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); + } else { + sender.addChatMessage(new ChatComponentTranslation("commands.satellite.not_a_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + break; + case "descend": + int freq = parseInt(sender, args[1]); + SatelliteSavedData data = SatelliteSavedData.getData(sender.getEntityWorld()); + if(data.sats.containsKey(freq)) { + data.sats.remove(freq); + data.markDirty(); + sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.satellite_descended").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.GREEN))); + } else { + sender.addChatMessage(new ChatComponentTranslation( "commands.satellite.no_satellite").setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + } + break; + } + } + + @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, "orbit", "descend"); + } + if (args[0].equals("descend")) { + return getListOfStringsFromIterableMatchingLastWord(args, SatelliteSavedData.getData(sender.getEntityWorld()).sats.keySet().stream().map(String::valueOf).collect(Collectors.toList())); + } + return Collections.emptyList(); + } +} diff --git a/src/main/java/com/hbm/config/BombConfig.java b/src/main/java/com/hbm/config/BombConfig.java index df2eda4b6..8c32d0a8d 100644 --- a/src/main/java/com/hbm/config/BombConfig.java +++ b/src/main/java/com/hbm/config/BombConfig.java @@ -27,6 +27,7 @@ public class BombConfig { public static int limitExplosionLifespan = 0; public static int rain = 0; public static int cont = 0; + public static boolean chunkloading = true; public static void loadFromConfig(Configuration config) { @@ -100,5 +101,7 @@ public class BombConfig { Property rainCont = config.get(CATEGORY_NUKE, "6.06_falloutRainRadiation", 0); rainCont.comment = "Radiation in 100th RADs created by fallout rain"; cont = rainCont.getInt(); + + chunkloading = CommonConfig.createConfigBool(config, CATEGORY_NUKE, "6.XX_enableChunkLoading", "Allows all types of procedural explosions to keep the central chunk loaded.", true); } } diff --git a/src/main/java/com/hbm/config/CommonConfig.java b/src/main/java/com/hbm/config/CommonConfig.java index 57495b68a..e1d6ed63c 100644 --- a/src/main/java/com/hbm/config/CommonConfig.java +++ b/src/main/java/com/hbm/config/CommonConfig.java @@ -22,6 +22,7 @@ public class CommonConfig { public static final String CATEGORY_RADIATION = "13_radiation"; public static final String CATEGORY_HAZARD = "14_hazard"; public static final String CATEGORY_STRUCTURES = "15_structures"; + public static final String CATEGORY_POLLUTION = "16_pollution"; public static final String CATEGORY_528 = "528"; public static final String CATEGORY_LBSM = "LESS BULLSHIT MODE"; diff --git a/src/main/java/com/hbm/config/CustomMachineConfigJSON.java b/src/main/java/com/hbm/config/CustomMachineConfigJSON.java new file mode 100644 index 000000000..359eb3db5 --- /dev/null +++ b/src/main/java/com/hbm/config/CustomMachineConfigJSON.java @@ -0,0 +1,257 @@ +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.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.ModBlocks; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition; +import com.hbm.inventory.OreDictManager; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.main.CraftingManager; +import com.hbm.main.MainRegistry; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class CustomMachineConfigJSON { + + public static final Gson gson = new Gson(); + public static HashMap customMachines = new HashMap(); + public static List niceList = new ArrayList(); + + public static void initialize() { + File folder = MainRegistry.configHbmDir; + + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmCustomMachines.json"); + + if(!config.exists()) { + writeDefault(config); + } + + readConfig(config); + } + + public static void writeDefault(File config) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(config)); + writer.setIndent(" "); + writer.beginObject(); + writer.name("machines").beginArray(); + + writer.beginObject(); + writer.name("recipeKey").value("paperPress"); + writer.name("unlocalizedName").value("paperPress"); + writer.name("localizedName").value("Paper Press"); + writer.name("fluidInCount").value(1); + writer.name("fluidInCap").value(1_000); + writer.name("itemInCount").value(1); + writer.name("fluidOutCount").value(0); + writer.name("fluidOutCap").value(0); + writer.name("itemOutCount").value(1); + writer.name("generatorMode").value(false); + writer.name("recipeSpeedMult").value(1.0D); + writer.name("recipeConsumptionMult").value(1.0D); + writer.name("maxPower").value(10_000L); + + writer.name("recipeShape").beginArray(); + writer.value("IPI").value("PCP").value("IPI"); + writer.endArray(); + + writer.name("recipeParts").beginArray().setIndent(""); + writer.value("I"); + SerializableRecipe.writeAStack(new OreDictStack(OreDictManager.STEEL.ingot()), writer); + writer.setIndent(""); + writer.value("P"); + SerializableRecipe.writeAStack(new OreDictStack(OreDictManager.STEEL.plate()), writer); + writer.setIndent(""); + writer.value("C"); + SerializableRecipe.writeAStack(new ComparableStack(ModItems.circuit_aluminium), writer); + writer.endArray().setIndent(" "); + + writer.name("components").beginArray(); + + for(int x = -1; x <= 1; x++) { + for(int y = -1; y <= 1; y++) { + for(int z = 0; z <= 2; z++) { + if(!(x == 0 && y == 0 && z == 1) && !(x == 0 && z == 0)) { + writer.beginObject().setIndent(""); + writer.name("block").value(y == 0 ? "hbm:tile.cm_sheet" : "hbm:tile.cm_block"); + writer.name("x").value(x); + writer.name("y").value(y); + writer.name("z").value(z); + writer.name("metas").beginArray(); + writer.value(0); + writer.endArray(); + writer.endObject().setIndent(" "); + } + } + } + } + + writer.beginObject().setIndent(""); + writer.name("block").value("hbm:tile.cm_port"); + writer.name("x").value(0); + writer.name("y").value(-1); + writer.name("z").value(0); + writer.name("metas").beginArray(); + writer.value(0); + writer.endArray(); + writer.endObject().setIndent(" "); + + writer.beginObject().setIndent(""); + writer.name("block").value("hbm:tile.cm_port"); + writer.name("x").value(0); + writer.name("y").value(1); + writer.name("z").value(0); + writer.name("metas").beginArray(); + writer.value(0); + writer.endArray(); + writer.endObject().setIndent(" "); + + writer.endArray(); + writer.endObject(); + + writer.endArray(); + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + public static void readConfig(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + JsonArray machines = json.get("machines").getAsJsonArray(); + + for(int i = 0; i < machines.size(); i++) { + JsonObject machineObject = machines.get(i).getAsJsonObject(); + + MachineConfiguration configuration = new MachineConfiguration(); + configuration.recipeKey = machineObject.get("recipeKey").getAsString(); + configuration.unlocalizedName = machineObject.get("unlocalizedName").getAsString(); + configuration.localizedName = machineObject.get("localizedName").getAsString(); + configuration.fluidInCount = machineObject.get("fluidInCount").getAsInt(); + configuration.fluidInCap = machineObject.get("fluidInCap").getAsInt(); + configuration.itemInCount = machineObject.get("itemInCount").getAsInt(); + configuration.fluidOutCount = machineObject.get("fluidOutCount").getAsInt(); + configuration.fluidOutCap = machineObject.get("fluidOutCap").getAsInt(); + configuration.itemOutCount = machineObject.get("itemOutCount").getAsInt(); + configuration.generatorMode = machineObject.get("generatorMode").getAsBoolean(); + configuration.recipeSpeedMult = machineObject.get("recipeSpeedMult").getAsDouble(); + configuration.recipeConsumptionMult = machineObject.get("recipeConsumptionMult").getAsDouble(); + configuration.maxPower = machineObject.get("maxPower").getAsLong(); + + if(machineObject.has("recipeShape") && machineObject.has("recipeParts")) { + JsonArray recipeShape = machineObject.get("recipeShape").getAsJsonArray(); + JsonArray recipeParts = machineObject.get("recipeParts").getAsJsonArray(); + + Object[] parts = new Object[recipeShape.size() + recipeParts.size()]; + + for(int j = 0; j < recipeShape.size(); j++) { + parts[j] = recipeShape.get(j).getAsString(); + } + + for(int j = 0; j < recipeParts.size(); j++) { + Object o = null; + + if(j % 2 == 0) { + o = recipeParts.get(j).getAsString().charAt(0); //god is dead and we killed him + } else { + AStack a = SerializableRecipe.readAStack(recipeParts.get(j).getAsJsonArray()); + + if(a instanceof ComparableStack) o = ((ComparableStack) a).toStack(); + if(a instanceof OreDictStack) o = ((OreDictStack) a).name; + } + + parts[j + recipeShape.size()] = o; + } + + ItemStack stack = new ItemStack(ModBlocks.custom_machine, 1, i + 100); + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setString("machineType", configuration.unlocalizedName); + + CraftingManager.addRecipeAuto(stack, parts); + } + + JsonArray components = machineObject.get("components").getAsJsonArray(); + configuration.components = new ArrayList(); + + for(int j = 0; j < components.size(); j++) { + JsonObject compObject = components.get(j).getAsJsonObject(); + ComponentDefinition compDef = new ComponentDefinition(); + compDef.block = (Block) Block.blockRegistry.getObject(compObject.get("block").getAsString()); + compDef.x = compObject.get("x").getAsInt(); + compDef.y = compObject.get("y").getAsInt(); + compDef.z = compObject.get("z").getAsInt(); + compDef.allowedMetas = new HashSet(); + compDef.metas = compObject.get("metas").getAsJsonArray(); + for(int k = 0; k < compDef.metas.size(); k++) { + compDef.allowedMetas.add(compDef.metas.get(k).getAsInt()); + } + + configuration.components.add(compDef); + } + + customMachines.put(configuration.unlocalizedName, configuration); + niceList.add(configuration); + } + + } catch(Exception ex) { + ex.printStackTrace(); + } + } + + public static class MachineConfiguration { + + /** The name of the recipe set that this machine can handle */ + public String recipeKey; + /** The internal name of this machine */ + public String unlocalizedName; + /** The display name of this machine */ + public String localizedName; + + public int fluidInCount; + public int fluidInCap; + public int itemInCount; + public int fluidOutCount; + public int fluidOutCap; + public int itemOutCount; + /** Whether inputs should be used up when the process begins */ + public boolean generatorMode; + + public double recipeSpeedMult = 1D; + public double recipeConsumptionMult = 1D; + public long maxPower; + + /** Definitions of blocks that this machine is composed of */ + public List components; + + public static class ComponentDefinition { + public Block block; + public Set allowedMetas; + public JsonArray metas; + public int x; + public int y; + public int z; + } + } +} diff --git a/src/main/java/com/hbm/config/GeneralConfig.java b/src/main/java/com/hbm/config/GeneralConfig.java index 2e4b79920..97bdee342 100644 --- a/src/main/java/com/hbm/config/GeneralConfig.java +++ b/src/main/java/com/hbm/config/GeneralConfig.java @@ -24,13 +24,13 @@ public class GeneralConfig { public static boolean enableCrosshairs = true; public static boolean enableReflectorCompat = false; public static boolean enableRenderDistCheck = true; - public static boolean enableCustomDashKeybind = false; public static boolean enableReEval = true; public static boolean enableSilentCompStackErrors = true; public static boolean enableChunkyNEIHandler = true; public static boolean enableSkyboxes = true; public static boolean enableImpactWorldProvider = true; public static boolean enableStatReRegistering = true; + public static boolean enableKeybindOverlap = true; public static int hintPos = 0; public static boolean enable528 = false; @@ -81,7 +81,6 @@ public class GeneralConfig { 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); - enableCustomDashKeybind = config.get(CATEGORY_GENERAL, "1.26_enableCustomDashKeybind", false, "Enable custom dash keybind instead of shift").getBoolean(false); 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); @@ -89,6 +88,7 @@ public class GeneralConfig { 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); + enableKeybindOverlap = config.get(CATEGORY_GENERAL, "1.34_enableKeybindOverlap", true, "If enabled, will handle keybinds that would otherwise be ignored due to overlapping.").getBoolean(true); final String CATEGORY_528 = CommonConfig.CATEGORY_528; diff --git a/src/main/java/com/hbm/config/MobConfig.java b/src/main/java/com/hbm/config/MobConfig.java index cd01ac0c8..8ce250f40 100644 --- a/src/main/java/com/hbm/config/MobConfig.java +++ b/src/main/java/com/hbm/config/MobConfig.java @@ -14,6 +14,7 @@ public class MobConfig { public static int raidDelay = 30 * 60 * 60; public static int raidChance = 3; public static int raidAmount = 15; + public static int raidDrones = 5; public static int raidAttackDelay = 40; public static int raidAttackReach = 2; public static int raidAttackDistance = 32; @@ -27,6 +28,17 @@ public class MobConfig { public static boolean enableDucks = true; public static boolean enableMobGear = true; + public static boolean enableHives = true; + public static int hiveSpawn = 256; + public static double scoutThreshold = 0.1; + public static double tier2Threshold = 1; + public static double tier3Threshold = 10; + public static double tier4Threshold = 50; + public static double tier5Threshold = 100; + public static double spawnMax = 50; + public static double targetingThreshold = 1; + + public static void loadFromConfig(Configuration config) { final String CATEGORY = CommonConfig.CATEGORY_MOBS; @@ -44,6 +56,7 @@ public class MobConfig { raidAttackDelay = CommonConfig.createConfigInt(config, CATEGORY, "12.F04_raidAttackDelay", "Time between individual attempts to break machines", 40); raidAttackReach = CommonConfig.createConfigInt(config, CATEGORY, "12.F05_raidAttackReach", "How far away machines can be broken", 2); raidAttackDistance = CommonConfig.createConfigInt(config, CATEGORY, "12.F06_raidAttackDistance", "How far away agents will spawn from the targeted player", 32); + raidDrones = CommonConfig.createConfigInt(config, CATEGORY, "12.F07_raidDrones", "How many quadcopter drones are spawned each raid", 5); enableElementals = CommonConfig.createConfigBool(config, CATEGORY, "12.E00_enableMeltdownElementals", "Whether there should be radiation elementals", true); elementalDelay = CommonConfig.createConfigInt(config, CATEGORY, "12.E01_elementalDelay", "How many world ticks need to pass for a check to be performed", 30 * 60 * 60); @@ -53,5 +66,15 @@ public class MobConfig { enableDucks = CommonConfig.createConfigBool(config, CATEGORY, "12.D00_enableDucks", "Whether pressing O should allow the player to duck", true); enableMobGear = CommonConfig.createConfigBool(config, CATEGORY, "12.D01_enableMobGear", "Whether zombies and skeletons should have additional gear when spawning", true); + + enableHives = CommonConfig.createConfigBool(config, CATEGORY, "12.G00_enableHives", "Whether glyphid hives should spawn", true); + hiveSpawn = CommonConfig.createConfigInt(config, CATEGORY, "12.G01_hiveSpawn", "The average amount of chunks per hive", 256); + scoutThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G02_scoutThreshold", "Minimum amount of soot for scouts to spawn", 0.1); + tier2Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G03_tier2Threshold", "Minimum amount of soot for tier 2 glyphids to spawn", 1); + tier3Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G04_tier3Threshold", "Minimum amount of soot for tier 3 glyphids to spawn", 10); + tier4Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G05_tier4Threshold", "Minimum amount of soot for tier 4 glyphids to spawn", 50); + tier5Threshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G06_tier5Threshold", "Minimum amount of soot for tier 5 glyphids to spawn", 100); + spawnMax = CommonConfig.createConfigDouble(config, CATEGORY, "12.G07_spawnMax", "Maximum amount of glyphids being able to exist at once through natural spawning", 50); + targetingThreshold = CommonConfig.createConfigDouble(config, CATEGORY, "12.G08_targetingThreshold", "Minimum amount of soot required for glyphids' extended targeting range to activate", 1D); } } diff --git a/src/main/java/com/hbm/config/PotionConfig.java b/src/main/java/com/hbm/config/PotionConfig.java index d34c9128c..9cd584ff0 100644 --- a/src/main/java/com/hbm/config/PotionConfig.java +++ b/src/main/java/com/hbm/config/PotionConfig.java @@ -1,5 +1,7 @@ package com.hbm.config; +import java.util.Locale; + import net.minecraftforge.common.config.Configuration; public class PotionConfig { @@ -37,9 +39,9 @@ public class PotionConfig { String s = CommonConfig.createConfigString(config, CATEGORY_POTION, "8.S0_potionSickness", "Valid configs include \"NORMAL\" and \"TERRARIA\", otherwise potion sickness is turned off", "OFF"); - if("normal".equals(s.toLowerCase())) + if("normal".equals(s.toLowerCase(Locale.US))) potionSickness = 1; - if("terraria".equals(s.toLowerCase())) + if("terraria".equals(s.toLowerCase(Locale.US))) potionSickness = 2; } diff --git a/src/main/java/com/hbm/config/RadiationConfig.java b/src/main/java/com/hbm/config/RadiationConfig.java index ad7b0acd7..25be90304 100644 --- a/src/main/java/com/hbm/config/RadiationConfig.java +++ b/src/main/java/com/hbm/config/RadiationConfig.java @@ -22,6 +22,15 @@ public class RadiationConfig { public static boolean disableHydro = false; public static boolean disableBlinding = false; public static boolean disableFibrosis = false; + + public static boolean enablePollution = true; + public static boolean enableLeadFromBlocks = true; + public static boolean enableLeadPoisoning = true; + public static boolean enableSootFog = true; + public static boolean enablePoison = true; + public static double buffMobThreshold = 15D; + public static double sootFogThreshold = 35D; + public static double sootFogDivisor = 120D; public static void loadFromConfig(Configuration config) { @@ -49,5 +58,15 @@ public class RadiationConfig { disableHydro = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_04_disableHydroactive", "When turned off, all hydroactive hazards are disabled", false); disableBlinding = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_05_disableBlinding", "When turned off, all blinding hazards are disabled", false); disableFibrosis = CommonConfig.createConfigBool(config, CATEGORY_HAZ, "HAZ_06_disableFibrosis", "When turned off, all fibrosis hazards are disabled", false); + + final String CATEGORY_POL = CommonConfig.CATEGORY_POLLUTION; + enablePollution = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_00_enablePollution", "If disabled, none of the polltuion related things will work", true); + enableLeadFromBlocks = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_01_enableLeadFromBlocks", "Whether breaking blocks in heavy metal polluted areas will poison the player", true); + enableLeadPoisoning = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_02_enableLeadPoisoning", "Whether being in a heavy metal polluted area will poison the player", true); + enableSootFog = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_03_enableSootFog", "Whether smog should be visible", true); + enablePoison = CommonConfig.createConfigBool(config, CATEGORY_POL, "POL_04_enablePoison", "Whether being in a poisoned area will affect the player", true); + buffMobThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_05_buffMobThreshold", "The amount of soot required to buff naturally spawning mobs", 15D); + sootFogThreshold = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_06_sootFogThreshold", "How much soot is required for smog to become visible", 35D); + sootFogDivisor = CommonConfig.createConfigDouble(config, CATEGORY_POL, "POL_07_sootFogDivisor", "The divisor for smog, higher numbers will require more soot for the same smog density", 120D); } } diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 9f560b536..c2ac4bbb3 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -33,14 +33,23 @@ public class WorldConfig { public static int bedrockOilSpawn = 200; public static int meteoriteSpawn = 500; - public static int bedrockIronSpawn = 200; + public static int bedrockIronSpawn = 100; public static int bedrockCopperSpawn = 200; - public static int bedrockBoraxSpawn = 300; - public static int bedrockAsbestosSpawn = 300; - public static int bedrockNiobiumSpawn = 300; - public static int bedrockTitaniumSpawn = 400; - public static int bedrockTungstenSpawn = 300; - public static int bedrockGoldSpawn = 500; + public static int bedrockBoraxSpawn = 50; + public static int bedrockChlorocalciteSpawn = 35; + public static int bedrockAsbestosSpawn = 50; + public static int bedrockNiobiumSpawn = 50; + public static int bedrockTitaniumSpawn = 100; + public static int bedrockTungstenSpawn = 100; + public static int bedrockGoldSpawn = 50; + public static int bedrockUraniumSpawn = 35; + public static int bedrockThoriumSpawn = 50; + public static int bedrockCoalSpawn = 200; + public static int bedrockNiterSpawn = 50; + public static int bedrockFluoriteSpawn = 50; + public static int bedrockRedstoneSpawn = 50; + public static int bedrockGlowstoneSpawn = 100; + public static int bedrockPhosphorusSpawn = 50; public static int ironClusterSpawn = 4; public static int titaniumClusterSpawn = 2; @@ -71,7 +80,6 @@ public class WorldConfig { public static int dungeonStructure = 64; public static int relayStructure = 500; public static int satelliteStructure = 500; - public static int bunkerStructure = 1000; public static int siloStructure = 1000; public static int factoryStructure = 1000; public static int dudStructure = 500; @@ -133,14 +141,24 @@ public class WorldConfig { bedrockOilSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.22_bedrockOilSpawnRate", "Spawns a bedrock oil node every nTH chunk", 200); meteoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.23_meteoriteSpawnRate", "Spawns a fallen meteorite every nTH chunk", 200); - bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronSpawn", "Spawns a bedrock iron deposit every nTH chunk", 200); - bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperSpawn", "Spawns a bedrock copper deposit every nTH chunk", 200); - bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxSpawn", "Spawns a bedrock borax deposit every nTH chunk", 300); - bedrockAsbestosSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B03_bedrockAsbestosSpawn", "Spawns a bedrock asbestos deposit every nTH chunk", 300); - bedrockNiobiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B04_bedrockNiobiumSpawn", "Spawns a bedrock niobium deposit every nTH chunk", 300); - bedrockTitaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B05_bedrockTitaniumSpawn", "Spawns a bedrock titanium deposit every nTH chunk", 500); - bedrockTungstenSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B06_bedrockTungstenSpawn", "Spawns a bedrock tungsten deposit every nTH chunk", 300); - bedrockGoldSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B07_bedrockGoldSpawn", "Spawns a bedrock gold deposit every nTH chunk", 500); + bedrockIronSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B00_bedrockIronWeight", "Spawn weight for iron bedrock ore", 100); + bedrockCopperSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B01_bedrockCopperWeight", "Spawn weight for copper bedrock ore", 200); + bedrockBoraxSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B02_bedrockBoraxWeight", "Spawn weight for borax bedrock ore", 50); + bedrockAsbestosSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B03_bedrockAsbestosWeight", "Spawn weight for asbestos bedrock ore", 50); + bedrockNiobiumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B04_bedrockNiobiumWeight", "Spawn weight for niobium bedrock ore", 50); + bedrockTitaniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B05_bedrockTitaniumWeight", "Spawn weight for titanium bedrock ore", 100); + bedrockTungstenSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B06_bedrockTungstenWeight", "Spawn weight for tungsten bedrock ore", 100); + bedrockGoldSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B07_bedrockGoldWeight", "Spawn weight for gold bedrock ore", 50); + bedrockUraniumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B08_bedrockUraniumWeight", "Spawn weight for uranium bedrock ore", 35); + bedrockThoriumSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B09_bedrockThoriumWeight", "Spawn weight for thorium bedrock ore", 50); + bedrockCoalSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B10_bedrockCoalWeight", "Spawn weight for coal bedrock ore", 200); + bedrockNiterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B11_bedrockNiterWeight", "Spawn weight for niter bedrock ore", 50); + bedrockFluoriteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B12_bedrockFluoriteWeight", "Spawn weight for fluorite bedrock ore", 50); + bedrockRedstoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B13_bedrockRedstoneWeight", "Spawn weight for redstone bedrock ore", 50); + bedrockChlorocalciteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.B14_bedrockChlorocalciteWeight", "Spawn weight for chlorocalcite bedrock ore", 35); + + bedrockGlowstoneSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN00_bedrockGlowstoneWeight", "Spawn weight for glowstone bedrock ore", 100); + bedrockPhosphorusSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.BN01_bedrockPhosphorusWeight", "Spawn weight for phosphorus bedrock ore", 50); ironClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C00_ironClusterSpawn", "Amount of iron cluster veins per chunk", 4); titaniumClusterSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.C01_titaniumClusterSpawn", "Amount of titanium cluster veins per chunk", 2); @@ -171,7 +189,6 @@ public class WorldConfig { 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); - bunkerStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.07_bunkerSpawn", "Spawn bunker on every nTH chunk", 1000); siloStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.08_siloSpawn", "Spawn missile silo on every nTH chunk", 1000); factoryStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.09_factorySpawn", "Spawn factory on every nTH chunk", 1000); dudStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.10_dudSpawn", "Spawn dud on every nTH chunk", 500); @@ -206,7 +223,6 @@ public class WorldConfig { dungeonStructure = CommonConfig.setDefZero(dungeonStructure, 1000); relayStructure = CommonConfig.setDefZero(relayStructure, 1000); satelliteStructure = CommonConfig.setDefZero(satelliteStructure, 1000); - bunkerStructure = CommonConfig.setDefZero(bunkerStructure, 1000); siloStructure = CommonConfig.setDefZero(siloStructure, 1000); factoryStructure = CommonConfig.setDefZero(factoryStructure, 1000); dudStructure = CommonConfig.setDefZero(dudStructure, 1000); diff --git a/src/main/java/com/hbm/crafting/ArmorRecipes.java b/src/main/java/com/hbm/crafting/ArmorRecipes.java index 40a284856..96b9543b8 100644 --- a/src/main/java/com/hbm/crafting/ArmorRecipes.java +++ b/src/main/java/com/hbm/crafting/ArmorRecipes.java @@ -54,8 +54,8 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.robes_boots, 1), new Object[] { "R R", "P P", 'R', ModItems.rag, 'P', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_helmet, 1), new Object[] { "SSS", "IGI", 'S', STEEL.plate(), 'I', ModItems.plate_polymer, 'G', KEY_ANYPANE }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', POLYMER.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', POLYMER.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_plate, 1), new Object[] { "KWK", "IKI", "WKW", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_legs, 1), new Object[] { "IWI", "K K", "W W", 'K', ModItems.plate_kevlar, 'I', ANY_PLASTIC.ingot(), 'W', new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.security_boots, 1), new Object[] { "P P", "I I", 'P', STEEL.plate(), 'I', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_helmet, 1), new Object[] { "EEE", "EE ", 'E', DNT.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.dnt_plate, 1), new Object[] { "EE ", "EEE", "EEE", 'E', DNT.ingot() }); @@ -68,7 +68,7 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'T', ModItems.gas_empty, 'B', ModItems.titanium_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor, 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_legs }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.t45_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_titanium, 'B', ModItems.titanium_boots }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', ModItems.circuit_targeting_tier4, 'I', POLYMER.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_helmet, 1), new Object[] { "PPC", "PBP", "IXI", 'P', ModItems.plate_armor_ajr, 'C', ModItems.circuit_targeting_tier4, 'I', ANY_PLASTIC.ingot(), 'X', ModItems.gas_mask_m65, 'B', ModItems.alloy_helmet }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_plate, 1), new Object[] { "MPM", "TBT", "PPP", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'T', ModItems.gas_empty, 'B', ModItems.alloy_plate }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_legs, 1), new Object[] { "MPM", "PBP", "P P", 'M', ModItems.motor_desh, 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_legs }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ajr_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_ajr, 'B', ModItems.alloy_boots }); @@ -81,9 +81,9 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_plate_jetpack, 1), new Object[] { "NFN", "TPT", "ICI", 'N', ModItems.plate_armor_lunar, 'F', ModItems.fins_quad_titanium, 'T', new ItemStack(ModItems.fluid_tank_full, 1, Fluids.XENON.getID()), 'P', ModItems.bj_plate, 'I', ModItems.mp_thruster_10_xenon, 'C', ModItems.crystal_phosphorus }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_legs, 1), new Object[] { "MBM", "NSN", "N N", 'N', ModItems.plate_armor_lunar, 'M', ModItems.motor_desh, 'S', ModItems.starmetal_legs, 'B', ModBlocks.block_starmetal }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.bj_boots, 1), new Object[] { "N N", "BSB", 'N', ModItems.plate_armor_lunar, 'S', ModItems.starmetal_boots, 'B', ModBlocks.block_starmetal }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ModItems.plate_polymer, 'F', ModItems.gas_mask_filter }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_plate, 1), new Object[] { "MPM", "IBI", "PPP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_plate, 'I', POLYMER.ingot(), 'M', ModItems.motor_desh }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_legs, 1), new Object[] { "MPM", "IBI", "P P", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_legs, 'I', POLYMER.ingot(), 'M', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_helmet, 1), new Object[] { "PPC", "PBP", "IFI", 'P', ModItems.plate_armor_hev, 'C', ModItems.circuit_targeting_tier4, 'B', ModItems.titanium_helmet, 'I', ANY_PLASTIC.ingot(), 'F', ModItems.gas_mask_filter }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_plate, 1), new Object[] { "MPM", "IBI", "PPP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_plate, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_legs, 1), new Object[] { "MPM", "IBI", "P P", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_legs, 'I', ANY_PLASTIC.ingot(), 'M', ModItems.motor_desh }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.hev_boots, 1), new Object[] { "P P", "PBP", 'P', ModItems.plate_armor_hev, 'B', ModItems.titanium_boots }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_helmet, 1), new Object[] { "PWP", "PBP", "FSF", 'P', ModItems.plate_armor_fau, 'W', new ItemStack(Blocks.wool, 1, 14), 'B', ModItems.starmetal_helmet, 'F', ModItems.gas_mask_filter, 'S', ModItems.pipes_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.fau_plate, 1), new Object[] { "MCM", "PBP", "PSP", 'M', ModItems.motor_desh, 'C', ModItems.demon_core_closed, 'P', ModItems.plate_armor_fau, 'B', ModItems.starmetal_plate, 'S', ModBlocks.ancient_scrap }); @@ -162,7 +162,7 @@ public class ArmorRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_olde, 1), new Object[] { "PPP", "GPG", " F ", 'G', KEY_ANYPANE, 'P', Items.leather, 'F', IRON.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_mask_mono, 1), new Object[] { " P ", "PPP", " F ", 'P', ModItems.plate_polymer, 'F', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_of_infamy, 1), new Object[] { "III", "III", " I ", 'I', IRON.plate() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ModItems.plate_polymer, 'G', ModBlocks.glass_ash, 'P', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ashglasses, 1), new Object[] { "I I", "GPG", 'I', ModItems.plate_polymer, 'G', ModBlocks.glass_ash, 'P', ANY_PLASTIC.ingot() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_rag, 1), new Object[] { "RRR", 'R', ModItems.rag_damp }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.mask_piss, 1), new Object[] { "RRR", 'R', ModItems.rag_piss }); diff --git a/src/main/java/com/hbm/crafting/ConsumableRecipes.java b/src/main/java/com/hbm/crafting/ConsumableRecipes.java index d4dd9d69c..971b29fa1 100644 --- a/src/main/java/com/hbm/crafting/ConsumableRecipes.java +++ b/src/main/java/com/hbm/crafting/ConsumableRecipes.java @@ -201,7 +201,8 @@ public class ConsumableRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gas_tester, 1), new Object[] { "G", "C", "I", 'G', GOLD.plate(), 'C', ModItems.circuit_aluminium, 'I', IRON.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser_gold, 1), new Object[] { "GPG", "PRP", "GPG", 'G', Items.gunpowder, 'P', GOLD.plate(), 'R', "record" }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ballistic_gauntlet, 1), new Object[] { " WS", "WRS", " RS", 'W', ModItems.wire_copper, 'R', ModItems.ring_starmetal, 'S', STEEL.plate() }); - + CraftingManager.addRecipeAuto(new ItemStack(ModItems.night_vision, 1), "P P", "GCG", 'P', ANY_PLASTIC.ingot(), 'G', KEY_ANYGLASS, 'C', ModItems.circuit_gold); + //Stealth boy CraftingManager.addRecipeAuto(new ItemStack(ModItems.stealth_boy, 1), new Object[] { " B", "LI", "LC", 'B', Blocks.stone_button, 'L', Items.leather, 'I', STEEL.ingot(), 'C', ModItems.circuit_red_copper }); diff --git a/src/main/java/com/hbm/crafting/MineralRecipes.java b/src/main/java/com/hbm/crafting/MineralRecipes.java index c35dedfb1..039644891 100644 --- a/src/main/java/com/hbm/crafting/MineralRecipes.java +++ b/src/main/java/com/hbm/crafting/MineralRecipes.java @@ -51,6 +51,9 @@ public class MineralRecipes { add1To9Pair(ModBlocks.block_polymer, ModItems.ingot_polymer); add1To9Pair(ModBlocks.block_bakelite, ModItems.ingot_bakelite); add1To9Pair(ModBlocks.block_rubber, ModItems.ingot_rubber); + add1To9Pair(ModBlocks.block_cadmium, ModItems.ingot_cadmium); + add1To9Pair(ModBlocks.block_tcalloy, ModItems.ingot_tcalloy); + add1To9Pair(ModBlocks.block_cdalloy, ModItems.ingot_cdalloy); for(int i = 0; i < EnumCokeType.values().length; i++) { add1To9PairSameMeta(Item.getItemFromBlock(ModBlocks.block_coke), ModItems.coke, i); @@ -181,12 +184,12 @@ public class MineralRecipes { GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_pu238be, 6), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_beryllium, ModItems.billet_beryllium, ModItems.billet_beryllium })); GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_ra226be, 6), new Object[] { ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_beryllium, ModItems.billet_beryllium, ModItems.billet_beryllium })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_bismuth, 1), new Object[] { "nuggetZirconium", "nuggetZirconium", "nuggetZirconium", "nuggetUranium", "nuggetPlutonium241", ModItems.nugget_bismuth })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_pu241, 1), new Object[] { "nuggetZirconium", "nuggetZirconium", "nuggetZirconium", "nuggetUranium235", "nuggetPlutonium240", "nuggetPlutonium241" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_am_mix, 1), new Object[] { "nuggetZirconium", "nuggetZirconium", "nuggetZirconium", "nuggetPlutonium241", "nuggetPlutonium241", "nuggetAmericiumRG" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_bismuth, 6), new Object[] { ModItems.billet_zirconium, ModItems.billet_zirconium, ModItems.billet_zirconium, ModItems.billet_uranium, ModItems.billet_pu241, ModItems.billet_bismuth })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_pu241, 6), new Object[] { ModItems.billet_zirconium, ModItems.billet_zirconium, ModItems.billet_zirconium, ModItems.billet_u235, ModItems.billet_pu240, ModItems.billet_pu241 })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_am_mix, 6), new Object[] { ModItems.billet_zirconium, ModItems.billet_zirconium, ModItems.billet_zirconium, ModItems.billet_pu241, ModItems.billet_pu241, ModItems.billet_am_mix })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_bismuth, 1), new Object[] { ZR.nugget(), ZR.nugget(), ZR.nugget(), U.nugget(), PU241.nugget(), BI.nugget() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_pu241, 1), new Object[] { ZR.nugget(), ZR.nugget(), ZR.nugget(), U235.nugget(), PU240.nugget(), PU241.nugget() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_am_mix, 1), new Object[] { ZR.nugget(), ZR.nugget(), ZR.nugget(), PU241.nugget(), PU241.nugget(), AMRG.nugget() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_bismuth, 6), new Object[] { ZR.billet(), ZR.billet(), ZR.billet(), U.billet(), PU241.billet(), BI.billet() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_pu241, 6), new Object[] { ZR.billet(), ZR.billet(), ZR.billet(), U235.billet(), PU240.billet(), PU241.billet() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.billet_zfb_am_mix, 6), new Object[] { ZR.billet(), ZR.billet(), ZR.billet(), PU241.billet(), PU241.billet(), AMRG.billet() })); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_uranium, 2), new Object[] { ModItems.billet_uranium_fuel, ModItems.billet_u238 }); @@ -224,16 +227,16 @@ public class MineralRecipes { GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_balefire_gold, 1), new Object[] { ModItems.billet_au198, ModItems.cell_antimatter, ModItems.pellet_charged }); GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_flashlead, 2), new Object[] { ModItems.billet_balefire_gold, ModItems.billet_pb209, ModItems.cell_antimatter }); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_radium), new Object[] { ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_ra226, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_weak), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_pu238, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_strontium), new Object[] { ModItems.billet_sr90, ModItems.billet_sr90, ModItems.billet_sr90, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_cobalt), new Object[] { ModItems.billet_co60, ModItems.billet_co60, ModItems.billet_co60, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_actinium), new Object[] { ModItems.billet_actinium, ModItems.billet_actinium, ModItems.billet_actinium, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_polonium), new Object[] { ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_polonium, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_lead), new Object[] { ModItems.billet_pb209, ModItems.billet_pb209, ModItems.billet_pb209, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_gold), new Object[] { ModItems.billet_au198, ModItems.billet_au198, ModItems.billet_au198, "plateIron" })); - GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_americium), new Object[] { ModItems.billet_am241, ModItems.billet_am241, ModItems.billet_am241, "plateIron" })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg), new Object[] { ModItems.billet_pu238, ModItems.billet_pu238, ModItems.billet_pu238, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_radium), new Object[] { ModItems.billet_ra226, ModItems.billet_ra226, ModItems.billet_ra226, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_weak), new Object[] { ModItems.billet_u238, ModItems.billet_u238, ModItems.billet_pu238, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_strontium), new Object[] { ModItems.billet_sr90, ModItems.billet_sr90, ModItems.billet_sr90, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_cobalt), new Object[] { ModItems.billet_co60, ModItems.billet_co60, ModItems.billet_co60, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_actinium), new Object[] { ModItems.billet_actinium, ModItems.billet_actinium, ModItems.billet_actinium, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_polonium), new Object[] { ModItems.billet_polonium, ModItems.billet_polonium, ModItems.billet_polonium, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_lead), new Object[] { ModItems.billet_pb209, ModItems.billet_pb209, ModItems.billet_pb209, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_gold), new Object[] { ModItems.billet_au198, ModItems.billet_au198, ModItems.billet_au198, IRON.plate() })); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModItems.pellet_rtg_americium), new Object[] { ModItems.billet_am241, ModItems.billet_am241, ModItems.billet_am241, IRON.plate() })); //There's no need for anvil recycling recipes if you simply set the container item GameRegistry.addShapelessRecipe(new ItemStack(ModItems.billet_bismuth, 3), new Object[] { new ItemStack(ModItems.pellet_rtg_depleted, 1, DepletedRTGMaterial.BISMUTH.ordinal()) }); @@ -454,6 +457,10 @@ public class MineralRecipes { add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_SULFUR), new ItemStack(ModItems.sulfur)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_CALCIUM), new ItemStack(ModItems.powder_calcium)); add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_BISMUTH), new ItemStack(ModItems.powder_bismuth)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_RADIUM), new ItemStack(ModItems.powder_ra226)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_TECHNETIUM), new ItemStack(ModItems.billet_technetium)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_POLONIUM), new ItemStack(ModItems.billet_polonium)); + add9To1(DictFrame.fromOne(ModItems.ore_byproduct, EnumByproduct.B_URANIUM), new ItemStack(ModItems.powder_uranium)); } //Bundled 1/9 recipes diff --git a/src/main/java/com/hbm/crafting/PowderRecipes.java b/src/main/java/com/hbm/crafting/PowderRecipes.java index 6c6845ed9..22200d0ef 100644 --- a/src/main/java/com/hbm/crafting/PowderRecipes.java +++ b/src/main/java/com/hbm/crafting/PowderRecipes.java @@ -41,11 +41,11 @@ public class PowderRecipes { CraftingManager.addShapelessAuto(new ItemStack(Items.gunpowder, 3), new Object[] { S.dust(), KNO.dust(), new ItemStack(Items.coal, 1, 1) }); //Blends - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_power, 5), new Object[] { REDSTONE.dust(), "dustGlowstone", DIAMOND.dust(), NP237.dust(), MAGTUNG.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_power, 3), new Object[] { "dustGlowstone", DIAMOND.dust(), MAGTUNG.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { NP237.dust(), I.dust(), TH232.dust(), AT.dust(), ND.dust(), CS.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_nitan_mix, 6), new Object[] { ST.dust(), CO.dust(), BR.dust(), TS.dust(), NB.dust(), CE.dust() }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_spark_mix, 5), new Object[] { DESH.dust(), EUPH.dust(), ModItems.powder_meteorite, ModItems.powder_power, ModItems.powder_nitan_mix }); - CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_meteorite, 5), new Object[] { IRON.dust(), CU.dust(), LI.dust(), W.dust(), U.dust() }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_spark_mix, 3), new Object[] { DESH.dust(), EUPH.dust(), ModItems.powder_power }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_meteorite, 4), new Object[] { IRON.dust(), CU.dust(), LI.dust(), NETHERQUARTZ.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_thermite, 4), new Object[] { IRON.dust(), IRON.dust(), IRON.dust(), AL.dust() }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.powder_desh_mix, 1), new Object[] { B.dustTiny(), B.dustTiny(), LA.dustTiny(), LA.dustTiny(), CE.dustTiny(), CO.dustTiny(), LI.dustTiny(), ND.dustTiny(), NB.dustTiny() }); diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 1928d5b38..06f29fb44 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -3,12 +3,14 @@ package com.hbm.crafting; import static com.hbm.inventory.OreDictManager.*; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.*; +import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; import com.hbm.main.CraftingManager; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; /** @@ -123,6 +125,23 @@ public class RodRecipes { addRBMKRod(ModItems.billet_zfb_pu241, ModItems.rbmk_fuel_zfb_pu241); addRBMKRod(ModItems.billet_zfb_am_mix, ModItems.rbmk_fuel_zfb_am_mix); CraftingManager.addShapelessAuto(new ItemStack(ModItems.rbmk_fuel_drx, 1), new Object[] { ModItems.rbmk_fuel_balefire, ModItems.particle_digamma }); + + addPellet(SA326, EnumWatzType.SCHRABIDIUM); + addPellet(ModItems.ingot_hes, EnumWatzType.HES); + addPellet(ModItems.ingot_schrabidium_fuel, EnumWatzType.MES); + addPellet(ModItems.ingot_les, EnumWatzType.LES); + addPellet(NP237, EnumWatzType.HEN); + addPellet(ModItems.ingot_uranium_fuel, EnumWatzType.MEU); + addPellet(ModItems.ingot_pu_mix, EnumWatzType.MEP); + addPellet(PB, EnumWatzType.LEAD); + addPellet(B, EnumWatzType.BORON); + addPellet(U238, EnumWatzType.DU); + } + + public static void registerInit() { + /* GT6 */ + if(OreDictionary.doesOreNameExist("ingotNaquadah-Enriched")) addPellet(new DictFrame("Naquadah-Enriched"), EnumWatzType.NQD); + if(OreDictionary.doesOreNameExist("ingotNaquadria")) addPellet(new DictFrame("Naquadria"), EnumWatzType.NQR); } //Fill rods with one billet. For fuels only, therefore no unloading or ore dict @@ -223,4 +242,12 @@ public class RodRecipes { public static void addZIRNOXRod(DictFrame mat, EnumZirnoxType num) { CraftingManager.addShapelessAuto(new ItemStack(ModItems.rod_zirnox, 1, num.ordinal()), new Object[] { ModItems.rod_zirnox_empty, mat.billet(), mat.billet() }); } + + /** Watz pellet crafting **/ + public static void addPellet(DictFrame mat, EnumWatzType num) { + CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', mat.ingot(), 'G', GRAPHITE.ingot() }); + } + public static void addPellet(Item item, EnumWatzType num) { + CraftingManager.addRecipeAuto(new ItemStack(ModItems.watz_pellet, 1, num.ordinal()), new Object[] { " I ", "IGI", " I ", 'I', item, 'G', GRAPHITE.ingot() }); + } } diff --git a/src/main/java/com/hbm/crafting/SmeltingRecipes.java b/src/main/java/com/hbm/crafting/SmeltingRecipes.java index 2024919c3..60a709ce0 100644 --- a/src/main/java/com/hbm/crafting/SmeltingRecipes.java +++ b/src/main/java/com/hbm/crafting/SmeltingRecipes.java @@ -22,6 +22,8 @@ public class SmeltingRecipes { public static void AddSmeltingRec() { + GameRegistry.addSmelting(ModItems.glyphid_meat, new ItemStack(ModItems.glyphid_meat_grilled), 1.0F); + GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_thorium), new ItemStack(ModItems.ingot_th232), 3.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium), new ItemStack(ModItems.ingot_uranium), 6.0F); GameRegistry.addSmelting(Item.getItemFromBlock(ModBlocks.ore_uranium_scorched), new ItemStack(ModItems.ingot_uranium), 6.0F); @@ -181,7 +183,7 @@ public class SmeltingRecipes { for(EnumBedrockOre ore : EnumBedrockOre.values()) { int i = ore.ordinal(); - GameRegistry.addSmelting(new ItemStack(ModBlocks.ore_bedrock, 1, i), new ItemStack(Blocks.cobblestone, 16), 0.1F); + GameRegistry.addSmelting(new ItemStack(ModItems.ore_bedrock, 1, i), new ItemStack(Blocks.cobblestone, 16), 0.1F); } for(int i = 0; i < 10; i++) diff --git a/src/main/java/com/hbm/crafting/ToolRecipes.java b/src/main/java/com/hbm/crafting/ToolRecipes.java index 2d6d82b78..7577f03d9 100644 --- a/src/main/java/com/hbm/crafting/ToolRecipes.java +++ b/src/main/java/com/hbm/crafting/ToolRecipes.java @@ -5,6 +5,8 @@ import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.Fluids; import static com.hbm.inventory.OreDictManager.*; + +import com.hbm.items.ItemGenericPart.EnumPartType; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBattery; import com.hbm.items.tool.ItemBlowtorch; @@ -117,6 +119,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.dosimeter, 1), new Object[] { "WGW", "WCW", "WBW", 'W', KEY_PLANKS, 'G', KEY_ANYPANE, 'C', ModItems.circuit_aluminium, 'B', BE.ingot() }); CraftingManager.addShapelessAuto(new ItemStack(ModBlocks.geiger), new Object[] { ModItems.geiger_counter }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.digamma_diagnostic), new Object[] { ModItems.geiger_counter, PO210.billet(), ASBESTOS.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.pollution_detector, 1), new Object[] { "SFS", "SCS", " S ", 'S', STEEL.plate(), 'F', ModItems.filter_coal, 'C', ModItems.circuit_copper }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.defuser, 1), new Object[] { " PS", "P P", " P ", 'P', POLYMER.ingot(), 'S', STEEL.plate() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.coltan_tool, 1), new Object[] { "ACA", "CXC", "ACA", 'A', ALLOY.ingot(), 'C', CINNABAR.crystal(), 'X', Items.compass }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.reacher, 1), new Object[] { "BIB", "P P", "B B", 'B', ModItems.bolt_tungsten, 'I', W.ingot(), 'P', ModItems.plate_polymer }); @@ -137,6 +140,7 @@ public class ToolRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.chemistry_set_boron), new Object[] { "GIG", "GCG", 'G', ModBlocks.glass_boron, 'I', STEEL.ingot(), 'C', CO.ingot() }); CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), new Object[] { "CC ", " I ", "CCC", 'C', CU.plate528(), 'I', IRON.ingot() }); CraftingManager.addRecipeAuto(ItemBlowtorch.getEmptyTool(ModItems.acetylene_torch), new Object[] { "SS ", " PS", " T ", 'S', STEEL.plate528(), 'P', ANY_PLASTIC.ingot(), 'T', ModItems.tank_steel }); + 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', ModItems.hull_small_steel }); //Bobmazon CraftingManager.addShapelessAuto(new ItemStack(ModItems.bobmazon_materials), new Object[] { Items.book, Items.gold_nugget, Items.string }); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 9b740413a..9218f6ee6 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -156,6 +156,13 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fireext, 1), new Object[] { "HB", " T", 'H', ModItems.hull_small_steel, 'B', ModItems.bolt_tungsten, 'T', ModItems.tank_steel }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "TPS", "HHR", " L", 'T', ModItems.bolt_tungsten, 'P', STEEL.plate(), 'S', STEEL.ingot(), 'H', ModItems.hull_small_steel, 'R', ModItems.mechanism_rifle_1, 'L', ANY_PLASTIC.ingot()}); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_glass_cannon, 1), new Object[] { "GGC", "GTM", 'G', Item.getItemFromBlock(ModBlocks.glass_quartz), 'C', ModItems.battery_lithium_cell, 'T', ModItems.crt_display, 'M', ModItems.mechanism_special }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_remington, 1), new Object[] { "PPM", "S L", 'P', STEEL.plate(), 'M', ModItems.mechanism_rifle_1, 'S', KEY_SLAB, 'L', KEY_LOG }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_benelli), new Object[] { "HHP", "SSM", "AAP", 'H', ModItems.ingot_dura_steel, 'S', ModItems.hull_small_steel, 'A', ModItems.hull_small_aluminium, 'P', ModItems.ingot_polymer, 'M', ModItems.mechanism_rifle_2 }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lunatic_marksman), new Object[] { " GN", "SSM", " A", 'G', KEY_ANYPANE, 'N', ModItems.powder_nitan_mix, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'A', ANY_RESISTANTALLOY.plateCast() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_coilgun), new Object[] { "CCC", "SSM", " P", 'C', ModBlocks.capacitor_copper, 'S', BIGMT.plate(), 'M', ModItems.mechanism_special, 'P', ANY_PLASTIC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 0), new Object[] { " T ", "TST", " T ", 'T', W.ingot(), 'S', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 1), new Object[] { " T ", "TST", " T ", 'T', FERRO.ingot(), 'S', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_coilgun, 16, 2), new Object[] { " T ", "TST", " T ", 'T', RUBBER.ingot(), 'S', ANY_PLASTIC.ingot() }); //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); @@ -187,12 +194,11 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_12gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', ModItems.plate_polymer }); CraftingManager.addRecipeAuto(ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.PERCUSSION), new Object[] { "G", "C", "P", 'G', ModItems.ballistite, 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.ammo_4gauge, 12), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ModItems.ballistite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.tnt, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); - CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.det_miner, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_flechette, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.tnt, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(6, Ammo4Gauge.EXPLOSIVE), new Object[] { " I ", "GCL", " P ", 'I', ANY_PLASTICEXPLOSIVE.ingot(), 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); + CraftingManager.addRecipeAuto(ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.MINING), new Object[] { " I ", "GCL", " P ", 'I', ModBlocks.det_miner, 'G', ModItems.cordite, 'C', ModItems.casing_50, 'P', ModItems.primer_50, 'L', ModItems.plate_polymer }); CraftingManager.addShapelessAuto(ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.QUACK), new Object[] { ModItems.ammo_4gauge, ModItems.nugget_bismuth, ModItems.nugget_tantalium, ModItems.ball_dynamite }); CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), new Object[] { " I ", "GCL", " P ", 'I', ModItems.pellet_buckshot, 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); CraftingManager.addRecipeAuto(ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SLUG), new Object[] { " I ", "GCL", " P ", 'I', PB.ingot(), 'G', ANY_SMOKELESS.dust(), 'C', ModItems.casing_buckshot, 'P', ModItems.primer_buckshot, 'L', CU.plate() }); @@ -345,9 +351,10 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_pink_cloud), new Object[] { " S ", "ECE", " E ", 'S', ModItems.powder_spark_mix, 'E', ModItems.powder_magic, 'C', ModItems.grenade_cloud }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.nuclear_waste_pearl), new Object[] { "WWW", "WFW", "WWW", 'W', ModItems.nuclear_waste_tiny, 'F', ModBlocks.block_fallout }); CraftingManager.addShapelessAuto(new ItemStack(ModItems.grenade_kyiv), new Object[] { ModItems.canister_napalm, ModItems.bottle2_empty, ModItems.rag }); - + //Sticks of explosives CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_dynamite, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModItems.safety_fuse, 'P', Items.paper, 'D', ModItems.ball_dynamite }); + CraftingManager.addShapelessAuto(new ItemStack(ModItems.stick_dynamite_fishing, 1), new Object[] { ModItems.stick_dynamite, ModItems.stick_dynamite, ModItems.stick_dynamite, Items.paper, ANY_TAR.any() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_tnt, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModBlocks.det_cord, 'P', Items.paper, 'D', ModItems.ball_tnt }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_semtex, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModBlocks.det_cord, 'P', Items.paper, 'D', ModItems.ingot_semtex }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.stick_c4, 4), new Object[] { " S ", "PDP", "PDP", 'S', ModBlocks.det_cord, 'P', Items.paper, 'D', ModItems.ingot_c4 }); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index e9a261459..c9eb1c210 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,12 +14,18 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; -import com.hbm.entity.qic.*; +import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; +import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; +import com.hbm.entity.train.*; import com.hbm.main.MainRegistry; import com.hbm.util.Tuple.Quartet; import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenBase.SpawnListEntry; public class EntityMappings { @@ -104,7 +110,7 @@ public class EntityMappings { addEntity(EntityTSmokeFX.class, "entity_t_smoke_fx", 1000); addEntity(EntityNukeExplosionMK3.class, "entity_nuke_mk3", 1000); addEntity(EntityVortex.class, "entity_vortex", 250); - addEntity(EntityMeteor.class, "entity_meteor", 1000); + addEntity(EntityMeteor.class, "entity_meteor", 250); addEntity(EntityLaser.class, "entity_laser", 1000); addEntity(EntityBoxcar.class, "entity_boxcar", 1000); addEntity(EntityMissileTaint.class, "entity_missile_taint", 1000); @@ -151,7 +157,7 @@ public class EntityMappings { addEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod_hopwire", 250); addEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod_null", 250); addEntity(EntityFallingNuke.class, "entity_falling_bomb", 1000); - addEntity(EntityBulletBase.class, "entity_bullet_mk2", 250); + addEntity(EntityBulletBaseNT.class, "entity_bullet_mk3", 250, false); addEntity(EntityMinerRocket.class, "entity_miner_lander", 1000); addEntity(EntityFogFX.class, "entity_nuclear_fog", 1000); addEntity(EntityDuchessGambit.class, "entity_duchessgambit", 1000); @@ -201,13 +207,26 @@ public class EntityMappings { addEntity(EntityArtilleryShell.class, "entity_artillery_shell", 1000); addEntity(EntityArtilleryRocket.class, "entity_himars", 1000); addEntity(EntitySiegeTunneler.class, "entity_meme_tunneler", 1000); - addEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 1000); addEntity(EntityCog.class, "entity_stray_cog", 1000); addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); + addEntity(EntityMist.class, "entity_mist", 250, false); + addEntity(EntityAcidBomb.class, "entity_acid_bomb", 1000); + + addEntity(EntityItemWaste.class, "entity_item_waste", 100); + addEntity(EntityItemBuoyant.class, "entity_item_buoyant", 100); + + addEntity(SeatDummyEntity.class, "entity_ntm_seat_dummy", 250, false); + addEntity(BoundingBoxDummyEntity.class, "entity_ntm_bounding_dummy", 250, false); + addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); + addEntity(TrainCargoTramTrailer.class, "entity_ntm_cargo_tram_trailer", 250, false); + addEntity(TrainTunnelBore.class, "entity_ntm_tunnel_bore", 250, false); - addMob(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); - addMob(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); + addMob(EntityCreeperNuclear.class, "entity_mob_nuclear_creeper", 0x204131, 0x75CE00); + addMob(EntityCreeperTainted.class, "entity_mob_tainted_creeper", 0x813b9b, 0xd71fdd); + addMob(EntityCreeperPhosgene.class, "entity_mob_phosgene_creeper", 0xE3D398, 0xB8A06B); + addMob(EntityCreeperVolatile.class, "entity_mob_volatile_creeper", 0xC28153, 0x4D382C); + addMob(EntityCreeperGold.class, "entity_mob_gold_creeper", 0xECC136, 0x9E8B3E); addMob(EntityHunterChopper.class, "entity_mob_hunter_chopper", 0x000020, 0x2D2D72); addMob(EntityCyberCrab.class, "entity_cyber_crab", 0xAAAAAA, 0x444444); addMob(EntityTeslaCrab.class, "entity_tesla_crab", 0xAAAAAA, 0x440000); @@ -216,11 +235,24 @@ public class EntityMappings { addMob(EntityDuck.class, "entity_fucc_a_ducc", 0xd0d0d0, 0xFFBF00); addMob(EntityQuackos.class, "entity_elder_one", 0xd0d0d0, 0xFFBF00); addMob(EntityFBI.class, "entity_ntm_fbi", 0x008000, 0x404040); + addMob(EntityFBIDrone.class, "entity_ntm_fbi_drone", 0x008000, 0x404040); addMob(EntityRADBeast.class, "entity_ntm_radiation_blaze", 0x303030, 0x008000); addMob(EntitySiegeZombie.class, "entity_meme_zombie", 0x303030, 0x008000); addMob(EntitySiegeSkeleton.class, "entity_meme_skeleton", 0x303030, 0x000080); addMob(EntitySiegeUFO.class, "entity_meme_ufo", 0x303030, 0x800000); addMob(EntitySiegeCraft.class, "entity_meme_craft", 0x303030, 0x808000); + addMob(EntityGlyphid.class, "entity_glyphid", 0x724A21, 0xD2BB72); + addMob(EntityGlyphidBrawler.class, "entity_glyphid_brawler", 0x273038, 0xD2BB72); + addMob(EntityGlyphidBehemoth.class, "entity_glyphid_behemoth", 0x267F00, 0xD2BB72); + addMob(EntityGlyphidBrenda.class, "entity_glyphid_brenda", 0x4FC0C0, 0xA0A0A0); + addMob(EntityGlyphidBombardier.class, "entity_glyphid_bombardier", 0xDDD919, 0xDBB79D); + addMob(EntityGlyphidBlaster.class, "entity_glyphid_blaster", 0xD83737, 0xDBB79D); + addMob(EntityGlyphidScout.class, "entity_glyphid_scout", 0x273038, 0xB9E36B); + addMob(EntityGlyphidNuclear.class, "entity_glyphid_nuclear", 0x267F00, 0xA0A0A0); + + addSpawn(EntityCreeperPhosgene.class, 5, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityCreeperVolatile.class, 10, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); + addSpawn(EntityCreeperGold.class, 1, 1, 1, EnumCreatureType.monster, BiomeGenBase.getBiomeGenArray()); int id = 0; for(Quartet, String, Integer, Boolean> entry : entityMappings) { @@ -243,4 +275,26 @@ public class EntityMappings { private static void addMob(Class clazz, String name, int color1, int color2) { mobMappings.add(new Quartet(clazz, name, color1, color2)); } + + public static void addSpawn(Class entityClass, int weightedProb, int min, int max, EnumCreatureType typeOfCreature, BiomeGenBase... biomes) { + + for(BiomeGenBase biome : biomes) { + + if(biome == null) continue; + + List spawns = biome.getSpawnableList(typeOfCreature); + + for(SpawnListEntry entry : spawns) { + // Adjusting an existing spawn entry + if(entry.entityClass == entityClass) { + entry.itemWeight = weightedProb; + entry.minGroupCount = min; + entry.maxGroupCount = max; + break; + } + } + + spawns.add(new SpawnListEntry(entityClass, weightedProb, min, max)); + } + } } diff --git a/src/main/java/com/hbm/entity/effect/EntityMist.java b/src/main/java/com/hbm/entity/effect/EntityMist.java new file mode 100644 index 000000000..ceb2dc014 --- /dev/null +++ b/src/main/java/com/hbm/entity/effect/EntityMist.java @@ -0,0 +1,251 @@ +package com.hbm.entity.effect; + +import java.util.List; + +import com.hbm.extprop.HbmLivingProps; +import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.trait.FT_Corrosive; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.fluid.trait.FT_Poison; +import com.hbm.inventory.fluid.trait.FT_Toxin; +import com.hbm.inventory.fluid.trait.FT_VentRadiation; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Viscous; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.util.ArmorUtil; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +public class EntityMist extends Entity { + + public EntityMist(World world) { + super(world); + this.noClip = true; + } + + public EntityMist setArea(float width, float height) { + this.dataWatcher.updateObject(11, width); + this.dataWatcher.updateObject(12, height); + return this; + } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, new Integer(0)); + this.dataWatcher.addObject(11, new Float(0)); + this.dataWatcher.addObject(12, new Float(0)); + } + + public EntityMist setType(FluidType fluid) { + this.dataWatcher.updateObject(10, fluid.getID()); + return this; + } + + public FluidType getType() { + return Fluids.fromID(this.dataWatcher.getWatchableObjectInt(10)); + } + + + @Override + public void onEntityUpdate() { + + float height = this.dataWatcher.getWatchableObjectFloat(12); + this.yOffset = 0; + this.setSize(this.dataWatcher.getWatchableObjectFloat(11), height); + this.setPosition(this.posX, this.posY, this.posZ); + + if(!worldObj.isRemote) { + + if(this.ticksExisted > this.getMaxAge()) { + this.setDead(); + } + + FluidType type = this.getType(); + + if(type.hasTrait(FT_VentRadiation.class)) { + FT_VentRadiation trait = type.getTrait(FT_VentRadiation.class); + ChunkRadiationManager.proxy.incrementRad(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), trait.getRadPerMB() * 2); + } + + double intensity = 1D - (double) this.ticksExisted / (double) this.getMaxAge(); + + if(type.hasTrait(FT_Flammable.class) && this.isBurning()) { + worldObj.createExplosion(this, posX, posY + height / 2, posZ, (float) intensity * 15F, true); + this.setDead(); + return; + } + + AxisAlignedBB aabb = this.boundingBox.copy(); + List affected = worldObj.getEntitiesWithinAABBExcludingEntity(this, aabb.offset(-this.width / 2, 0, -this.width / 2)); + + for(Entity e : affected) { + this.affect(e, intensity); + } + } else { + + for(int i = 0; i < 2; i++) { + double x = this.boundingBox.minX + (rand.nextDouble() - 0.5) * (this.boundingBox.maxX - this.boundingBox.minX); + double y = this.boundingBox.minY + rand.nextDouble() * (this.boundingBox.maxY - this.boundingBox.minY); + double z = this.boundingBox.minZ + (rand.nextDouble() - 0.5) * (this.boundingBox.maxZ - this.boundingBox.minZ); + + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 0.5F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 2F); + fx.setInteger("life", 50 + worldObj.rand.nextInt(10)); + fx.setInteger("color",this.getType().getColor()); + fx.setDouble("posX", x); + fx.setDouble("posY", y); + fx.setDouble("posZ", z); + MainRegistry.proxy.effectNT(fx); + } + } + } + + /* can't reuse EntityChemical here, while similar or identical in some places, the actual effects are often different */ + protected void affect(Entity e, double intensity) { + + FluidType type = this.getType(); + EntityLivingBase living = e instanceof EntityLivingBase ? (EntityLivingBase) e : null; + + if(type.temperature >= 100) { + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_boil), 5F + (type.temperature - 100) * 0.02F); + + if(type.temperature >= 500) { + e.setFire(10); //afterburn for 10 seconds + } + } + if(type.temperature < -20) { + if(living != null) { //only living things are affected + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_cryolator), 5F + (type.temperature + 20) * -0.05F); //5 damage at -20°C with one extra damage every -20°C + living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); + living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); + } + } + + if(type.hasTrait(Fluids.DELICIOUS.getClass())) { + if(living != null && living.isEntityAlive()) { + living.heal(2F * (float) intensity); + } + } + + if(type.hasTrait(FT_Flammable.class) && type.hasTrait(FT_Liquid.class)) { + if(living != null) { + HbmLivingProps.setOil(living, 200); //doused in oil for 10 seconds + } + } + + if(this.isExtinguishing(type)) { + e.extinguish(); + } + + if(type.hasTrait(FT_Corrosive.class)) { + FT_Corrosive trait = type.getTrait(FT_Corrosive.class); + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, new DamageSource(ModDamageSource.s_acid), trait.getRating() / 20F); + + if(living != null) { + for(int i = 0; i < 4; i++) { + ArmorUtil.damageSuit(living, i, trait.getRating() / 5); + } + } + } + + if(type.hasTrait(FT_VentRadiation.class)) { + FT_VentRadiation trait = type.getTrait(FT_VentRadiation.class); + if(living != null) { + ContaminationUtil.contaminate(living, HazardType.RADIATION, ContaminationType.CREATIVE, trait.getRadPerMB() * 5); + } + } + + if(type.hasTrait(FT_Poison.class)) { + FT_Poison trait = type.getTrait(FT_Poison.class); + + if(living != null) { + living.addPotionEffect(new PotionEffect(trait.isWithering() ? Potion.wither.id : Potion.poison.id, (int) (5 * 20 * intensity))); + } + } + + if(type.hasTrait(FT_Toxin.class)) { + FT_Toxin trait = type.getTrait(FT_Toxin.class); + + if(living != null) { + trait.affect(living, intensity); + } + } + } + + protected boolean isExtinguishing(FluidType type) { + return this.getStyleFromType(type) == SprayStyle.MIST && this.getType().temperature < 50 && !type.hasTrait(FT_Flammable.class); + } + + public int getMaxAge() { + return getStyleFromType(this.getType()) == SprayStyle.GAS ? 600 : 150; + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + this.setType(Fluids.fromID(nbt.getInteger("type"))); + this.setArea(nbt.getFloat("width"), nbt.getFloat("height")); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("type", this.getType().getID()); + nbt.setFloat("width", this.dataWatcher.getWatchableObjectFloat(11)); + nbt.setFloat("height", this.dataWatcher.getWatchableObjectFloat(12)); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean canRenderOnFire() { + return false; + } + + @Override public void moveEntity(double x, double y, double z) { } + @Override public void addVelocity(double x, double y, double z) { } + @Override public void setPosition(double x, double y, double z) { + if(this.ticksExisted == 0) super.setPosition(x, y, z); //honest to fucking god mojang suck my fucking nuts + } + + public static SprayStyle getStyleFromType(FluidType type) { + + if(type.hasTrait(FT_Viscous.class)) { + return SprayStyle.NULL; + } + + if(type.hasTrait(FT_Gaseous.class) || type.hasTrait(FT_Gaseous_ART.class)) { + return SprayStyle.GAS; + } + + if(type.hasTrait(FT_Liquid.class)) { + return SprayStyle.MIST; + } + + return SprayStyle.NULL; + } + + public static enum SprayStyle { + MIST, //liquids that have been sprayed into a mist + GAS, //things that were already gaseous + NULL + } +} diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java index cc440ec35..05f5326dd 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeBouncyGeneric.java @@ -40,7 +40,7 @@ public class EntityGrenadeBouncyGeneric extends EntityGrenadeBouncyBase implemen @Override public void explode() { - getGrenade().explode(worldObj, posX, posY, posZ); + getGrenade().explode(this, this.getThrower(), worldObj, posX, posY, posZ); this.setDead(); } diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java index 5526b87a0..20be9af9c 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeGas.java @@ -5,7 +5,8 @@ import net.minecraft.world.World; import java.util.Random; -import com.hbm.explosion.ExplosionChaos; +import com.hbm.entity.effect.EntityMist; +import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; import com.hbm.items.weapon.ItemGrenade; @@ -30,21 +31,12 @@ public class EntityGrenadeGas extends EntityGrenadeBouncyBase { if (!this.worldObj.isRemote) { this.setDead(); this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 0.0F, true); - // ExplosionChaos.poison(this.worldObj, (int)this.posX, - // (int)this.posY, (int)this.posZ, 5); - // for(int i = 0; 0 < 15; i++) { - - /* - * ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, posZ, - * 50); ExplosionLarge.spawnParticlesRadial(worldObj, posX, posY, - * posZ, 50); ExplosionLarge.spawnParticlesRadial(worldObj, posX, - * posY, posZ, 50); ExplosionLarge.spawnParticlesRadial(worldObj, - * posX, posY, posZ, 50); - */ - - ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, 50, 1.25, 0); - - // } + + EntityMist mist = new EntityMist(worldObj); + mist.setType(Fluids.CHLORINE); + mist.setPosition(posX, posY - 5, posZ); + mist.setArea(15, 10); + worldObj.spawnEntityInWorld(mist); } } diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java index febe81373..82d4e89ca 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeImpactGeneric.java @@ -42,7 +42,7 @@ public class EntityGrenadeImpactGeneric extends EntityGrenadeBase implements IGe public void explode() { if(!this.worldObj.isRemote && getGrenade() != null) { - getGrenade().explode(worldObj, posX, posY, posZ); + getGrenade().explode(this, this.getThrower(), worldObj, posX, posY, posZ); this.setDead(); } } diff --git a/src/main/java/com/hbm/entity/item/EntityItemBuoyant.java b/src/main/java/com/hbm/entity/item/EntityItemBuoyant.java new file mode 100644 index 000000000..9a19b7490 --- /dev/null +++ b/src/main/java/com/hbm/entity/item/EntityItemBuoyant.java @@ -0,0 +1,27 @@ +package com.hbm.entity.item; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityItemBuoyant extends EntityItem { + + public EntityItemBuoyant(World world) { + super(world); + } + + public EntityItemBuoyant(World world, double x, double y, double z, ItemStack stack) { + super(world, x, y, z, stack); + } + + @Override + public void onUpdate() { + + if(worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY - 0.0625), (int) Math.floor(posZ)).getMaterial() == Material.water) { + this.motionY += 0.045D; + } + + super.onUpdate(); + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityBalefire.java b/src/main/java/com/hbm/entity/logic/EntityBalefire.java index 00d0f38e9..73c8e51b2 100644 --- a/src/main/java/com/hbm/entity/logic/EntityBalefire.java +++ b/src/main/java/com/hbm/entity/logic/EntityBalefire.java @@ -7,11 +7,10 @@ import com.hbm.explosion.ExplosionBalefire; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.main.MainRegistry; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityBalefire extends Entity { +public class EntityBalefire extends EntityExplosionChunkloading { public int age = 0; public int destructionRange = 0; @@ -53,48 +52,46 @@ public class EntityBalefire extends Entity { super(p_i1582_1_); } - @Override - public void onUpdate() { - super.onUpdate(); - - if(!this.did) - { - if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) - MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized BF explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!"); - - exp = new ExplosionBalefire((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange); - - this.did = true; - } - - speed += 1; //increase speed to keep up with expansion - - boolean flag = false; - for(int i = 0; i < this.speed; i++) - { - flag = exp.update(); - - if(flag) { - this.setDead(); - } - } - - if(!mute && rand.nextInt(5) == 0) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - - if(!flag) { - - if(!mute) - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); - - ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2); - } - - age++; - } - @Override - protected void entityInit() { } + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); + + if(!this.did) { + if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) + MainRegistry.logger.log(Level.INFO, "[NUKE] Initialized BF explosion at " + posX + " / " + posY + " / " + posZ + " with strength " + destructionRange + "!"); + + exp = new ExplosionBalefire((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange); + + this.did = true; + } + + speed += 1; // increase speed to keep up with expansion + + boolean flag = false; + for(int i = 0; i < this.speed; i++) { + flag = exp.update(); + + if(flag) { + clearChunkLoader(); + this.setDead(); + } + } + + if(!mute && rand.nextInt(5) == 0) + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); + + if(!flag) { + + if(!mute) + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "ambient.weather.thunder", 10000.0F, 0.8F + this.rand.nextFloat() * 0.2F); + + ExplosionNukeGeneric.dealDamage(this.worldObj, this.posX, this.posY, this.posZ, this.destructionRange * 2); + } + + age++; + } public EntityBalefire mute() { this.mute = true; diff --git a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java index 1065b019d..c4ffd67f3 100644 --- a/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityDeathBlast.java @@ -1,6 +1,6 @@ package com.hbm.entity.logic; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -45,7 +45,7 @@ public class EntityDeathBlast extends Entity { Vec3 vec = Vec3.createVectorHelper(0.2, 0, 0); vec.rotateAroundY((float)(2 * Math.PI * i / (float)count)); - EntityBulletBase laser = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); + EntityBulletBaseNT laser = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); laser.setPosition(posX, posY + 2, posZ); laser.motionX = vec.xCoord; laser.motionZ = vec.zCoord; diff --git a/src/main/java/com/hbm/entity/logic/EntityEnvirEffect.java b/src/main/java/com/hbm/entity/logic/EntityEnvirEffect.java deleted file mode 100644 index 75c912a32..000000000 --- a/src/main/java/com/hbm/entity/logic/EntityEnvirEffect.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.hbm.entity.logic; - -import net.minecraft.entity.Entity; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; - -public abstract class EntityEnvirEffect extends Entity { - - public int maxAge = 100; - public int blockRadius = 7; - public int entityRadius = 7; - public int chance = 10; - public boolean hasBlockEffect = true; - public boolean hasEntityEffect = true; - - public EntityEnvirEffect(World p_i1582_1_) { - super(p_i1582_1_); - } - - @Override - protected void entityInit() { - - } - - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - this.ticksExisted = nbt.getInteger("lifetime"); - this.maxAge = nbt.getInteger("lifecap"); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - nbt.setInteger("lifetime", this.ticksExisted); - nbt.setInteger("lifecap", this.maxAge); - } - - public void onUpdate() { - - if(hasBlockEffect && rand.nextInt(chance) == 0) - applyBlockEffect(); - - if(hasEntityEffect && rand.nextInt(chance) == 0) - applyEntityEffect(); - } - - private void applyBlockEffect() { }; - private void applyEntityEffect() { }; - -} diff --git a/src/main/java/com/hbm/entity/logic/EntityEnvirEffectRad.java b/src/main/java/com/hbm/entity/logic/EntityEnvirEffectRad.java deleted file mode 100644 index f67bcaf6a..000000000 --- a/src/main/java/com/hbm/entity/logic/EntityEnvirEffectRad.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.hbm.entity.logic; - -import net.minecraft.world.World; - -public class EntityEnvirEffectRad extends EntityEnvirEffect { - - public EntityEnvirEffectRad(World p_i1582_1_) { - super(p_i1582_1_); - } - - public void randomizeAge(int min, int max) { - this.maxAge = min + rand.nextInt(max - min); - } - -} diff --git a/src/main/java/com/hbm/entity/logic/EntityExplosionChunkloading.java b/src/main/java/com/hbm/entity/logic/EntityExplosionChunkloading.java new file mode 100644 index 000000000..ca2ad6f6f --- /dev/null +++ b/src/main/java/com/hbm/entity/logic/EntityExplosionChunkloading.java @@ -0,0 +1,51 @@ +package com.hbm.entity.logic; + +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.Entity; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeChunkManager; +import net.minecraftforge.common.ForgeChunkManager.Ticket; +import net.minecraftforge.common.ForgeChunkManager.Type; + +public abstract class EntityExplosionChunkloading extends Entity implements IChunkLoader { + + private Ticket loaderTicket; + private ChunkCoordIntPair loadedChunk; + + public EntityExplosionChunkloading(World world) { + super(world); + } + + @Override + protected void entityInit() { + init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); + } + + @Override + public void init(Ticket ticket) { + if(!worldObj.isRemote && ticket != null) { + if(loaderTicket == null) { + loaderTicket = ticket; + loaderTicket.bindEntity(this); + loaderTicket.getModData(); + } + ForgeChunkManager.forceChunk(loaderTicket, new ChunkCoordIntPair(chunkCoordX, chunkCoordZ)); + } + } + + public void loadChunk(int x, int z) { + + if(this.loadedChunk == null) { + this.loadedChunk = new ChunkCoordIntPair(x, z); + ForgeChunkManager.forceChunk(loaderTicket, loadedChunk); + } + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null && loadedChunk != null) { + ForgeChunkManager.unforceChunk(loaderTicket, loadedChunk); + } + } +} diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java index 93335b142..665d9550d 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK3.java @@ -20,14 +20,13 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; @Spaghetti("why???") -public class EntityNukeExplosionMK3 extends Entity { +public class EntityNukeExplosionMK3 extends EntityExplosionChunkloading { public int age = 0; public int destructionRange = 0; @@ -59,31 +58,32 @@ public class EntityNukeExplosionMK3 extends Entity { long time = nbt.getLong("milliTime"); - if(BombConfig.limitExplosionLifespan > 0 && System.currentTimeMillis() - time > BombConfig.limitExplosionLifespan * 1000) + if(BombConfig.limitExplosionLifespan > 0 && System.currentTimeMillis() - time > BombConfig.limitExplosionLifespan * 1000) { + this.clearChunkLoader(); this.setDead(); + } - if(this.waste) - { - exp = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, 0); + if(this.waste) { + exp = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, 0); exp.readFromNbt(nbt, "exp_"); - wst = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, (int)(this.destructionRange * 1.8), this.coefficient, 2); + wst = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, (int) (this.destructionRange * 1.8), this.coefficient, 2); wst.readFromNbt(nbt, "wst_"); - vap = new ExplosionNukeAdvanced((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, (int)(this.destructionRange * 2.5), this.coefficient, 1); + vap = new ExplosionNukeAdvanced((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, (int) (this.destructionRange * 2.5), this.coefficient, 1); vap.readFromNbt(nbt, "vap_"); - } else { + } else { - if(extType == 0) { - expl = new ExplosionFleija((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); + if(extType == 0) { + expl = new ExplosionFleija((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); expl.readFromNbt(nbt, "expl_"); - } - if(extType == 1) { - sol = new ExplosionSolinium((int)this.posX, (int)this.posY, (int)this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); - sol.readFromNbt(nbt, "sol_"); - } - } - - this.did = true; - + } + if(extType == 1) { + sol = new ExplosionSolinium((int) this.posX, (int) this.posY, (int) this.posZ, this.worldObj, this.destructionRange, this.coefficient, this.coefficient2); + sol.readFromNbt(nbt, "sol_"); + } + } + + this.did = true; + } @Override @@ -120,6 +120,8 @@ public class EntityNukeExplosionMK3 extends Entity { @Override public void onUpdate() { super.onUpdate(); + + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); if(!this.did) { @@ -149,25 +151,31 @@ public class EntityNukeExplosionMK3 extends Entity { boolean flag = false; boolean flag3 = false; - for(int i = 0; i < this.speed; i++) - { - if(waste) { - flag = exp.update(); - wst.update(); - flag3 = vap.update(); - - if(flag3) { - this.setDead(); - } - } else { - if(extType == 0) - if(expl.update()) - this.setDead(); - if(extType == 1) - if(sol.update()) - this.setDead(); - } - } + for(int i = 0; i < this.speed; i++) { + if(waste) { + flag = exp.update(); + wst.update(); + flag3 = vap.update(); + + if(flag3) { + this.clearChunkLoader(); + this.setDead(); + } + } else { + if(extType == 0) { + if(expl.update()) { + this.clearChunkLoader(); + this.setDead(); + } + } + if(extType == 1) { + if(sol.update()) { + this.clearChunkLoader(); + this.setDead(); + } + } + } + } if(!flag) { @@ -196,9 +204,6 @@ public class EntityNukeExplosionMK3 extends Entity { age++; } - - @Override - protected void entityInit() { } public static HashMap at = new HashMap(); diff --git a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java index e924e43da..15cb2679b 100644 --- a/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java +++ b/src/main/java/com/hbm/entity/logic/EntityNukeExplosionMK5.java @@ -14,7 +14,6 @@ import com.hbm.util.ContaminationUtil; import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -22,7 +21,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class EntityNukeExplosionMK5 extends Entity { +public class EntityNukeExplosionMK5 extends EntityExplosionChunkloading { //Strength of the blast public int strength; @@ -52,9 +51,12 @@ public class EntityNukeExplosionMK5 extends Entity { public void onUpdate() { if(strength == 0) { + this.clearChunkLoader(); this.setDead(); return; } + + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); for(Object player : this.worldObj.playerEntities) { ((EntityPlayer)player).triggerAchievement(MainRegistry.achManhattan); @@ -92,9 +94,11 @@ public class EntityNukeExplosionMK5 extends Entity { fallout.setScale((int)(this.length * 2.5 + falloutAdd) * BombConfig.falloutRange / 100); this.worldObj.spawnEntityInWorld(fallout); - + + this.clearChunkLoader(); this.setDead(); } else { + this.clearChunkLoader(); this.setDead(); } } diff --git a/src/main/java/com/hbm/entity/logic/EntityTomBlast.java b/src/main/java/com/hbm/entity/logic/EntityTomBlast.java index 4eb855576..093638a6d 100644 --- a/src/main/java/com/hbm/entity/logic/EntityTomBlast.java +++ b/src/main/java/com/hbm/entity/logic/EntityTomBlast.java @@ -8,11 +8,10 @@ import com.hbm.explosion.ExplosionTom; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityTomBlast extends Entity { +public class EntityTomBlast extends EntityExplosionChunkloading { public int age = 0; public int destructionRange = 0; @@ -54,6 +53,8 @@ public class EntityTomBlast extends Entity { public void onUpdate() { super.onUpdate(); + if(!worldObj.isRemote) loadChunk((int) Math.floor(posX / 16D), (int) Math.floor(posZ / 16D)); + if(!this.did) { if(GeneralConfig.enableExtendedLogging && !worldObj.isRemote) @@ -89,8 +90,4 @@ public class EntityTomBlast extends Entity { age++; } - - @Override - protected void entityInit() { - } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java b/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java index cb8af88ae..6264046a9 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java +++ b/src/main/java/com/hbm/entity/missile/EntityMinerRocket.java @@ -10,11 +10,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; public class EntityMinerRocket extends Entity { - //0 landing, 1 unloading, 2 lifting public int timer = 0; - //0 asteroid, 1 moon - public String satelliteClassName = "com.hbm.saveddata.satellites.SatelliteMiner"; public EntityMinerRocket(World p_i1582_1_) { super(p_i1582_1_); @@ -24,13 +21,12 @@ public class EntityMinerRocket extends Entity { @Override protected void entityInit() { - this.dataWatcher.addObject(16, Integer.valueOf(0)); - this.dataWatcher.addObject(17, Integer.valueOf(0)); + this.dataWatcher.addObject(16, 0); + this.dataWatcher.addObject(17, 0); } @Override public void onUpdate() { - if(dataWatcher.getWatchableObjectInt(16) == 0) motionY = -0.75; if(dataWatcher.getWatchableObjectInt(16) == 1) @@ -43,7 +39,6 @@ public class EntityMinerRocket extends Entity { this.setPositionAndRotation(posX + motionX, posY + motionY, posZ + motionZ, 0.0F, 0.0F); - if(dataWatcher.getWatchableObjectInt(16) == 0 && worldObj.getBlock((int)(posX - 0.5), (int)(posY - 0.5), (int)(posZ - 0.5)) == ModBlocks.sat_dock) { dataWatcher.updateObject(16, 1); motionY = 0; @@ -55,7 +50,6 @@ public class EntityMinerRocket extends Entity { } if(dataWatcher.getWatchableObjectInt(16) == 1) { - if(!worldObj.isRemote && ticksExisted % 4 == 0) ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 1 + rand.nextInt(3), 1 + rand.nextGaussian()); @@ -79,7 +73,6 @@ public class EntityMinerRocket extends Entity { dataWatcher.updateObject(16, nbt.getInteger("mode")); dataWatcher.updateObject(17, nbt.getInteger("sat")); timer = nbt.getInteger("timer"); - satelliteClassName = nbt.getString("type"); } @Override @@ -87,7 +80,5 @@ public class EntityMinerRocket extends Entity { nbt.setInteger("mode", dataWatcher.getWatchableObjectInt(16)); nbt.setInteger("sat", dataWatcher.getWatchableObjectInt(17)); nbt.setInteger("timer", timer); - nbt.setString("type", satelliteClassName); } - } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java b/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java index 5c0d93b67..69d128a51 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileBaseAdvanced.java @@ -48,46 +48,36 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk targetZ = (int) posZ; } - public boolean canBeCollidedWith() - { - return true; - } - - public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) - { - if (this.isEntityInvulnerable()) - { - return false; - } - else - { - if (!this.isDead && !this.worldObj.isRemote) - { - health -= p_70097_2_; - - if (this.health <= 0) - { - this.setDead(); - this.killMissile(); - } - } + public boolean canBeCollidedWith() { + return true; + } - return true; - } - } - - private void killMissile() { - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); - ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); - ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); - } + public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { + if(this.isEntityInvulnerable()) { + return false; + } else { + if(!this.isDead && !this.worldObj.isRemote) { + health -= p_70097_2_; + + if(this.health <= 0) { + this.setDead(); + this.killMissile(); + } + } + + return true; + } + } + + private void killMissile() { + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + ExplosionLarge.spawnShrapnelShower(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 15, 0.075); + ExplosionLarge.spawnMissileDebris(worldObj, posX, posY, posZ, motionX, motionY, motionZ, 0.25, getDebris(), getDebrisRareDrop()); + } public EntityMissileBaseAdvanced(World world, float x, float y, float z, int a, int b) { super(world); this.ignoreFrustumCheck = true; - /*this.posX = x; - this.posY = y; - this.posZ = z;*/ this.setLocationAndAngles(x, y, z, 0, 0); startX = (int) x; startZ = (int) z; @@ -95,19 +85,19 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk targetZ = b; this.motionY = 2; - Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); - accelXZ = decelY = 1/vector.lengthVector(); + Vec3 vector = Vec3.createVectorHelper(targetX - startX, 0, targetZ - startZ); + accelXZ = decelY = 1 / vector.lengthVector(); decelY *= 2; - + velocity = 1; - this.setSize(1.5F, 1.5F); + this.setSize(1.5F, 1.5F); } @Override protected void entityInit() { init(ForgeChunkManager.requestTicket(MainRegistry.instance, worldObj, Type.ENTITY)); - this.dataWatcher.addObject(8, Integer.valueOf(this.health)); + this.dataWatcher.addObject(8, Integer.valueOf(this.health)); } @Override @@ -212,7 +202,6 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk } if(!this.worldObj.isRemote) - //this.worldObj.spawnEntityInWorld(new EntitySmokeFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0, 0.0, 0.0)); PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(posX, posY, posZ, 2), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 300)); @@ -220,30 +209,28 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.water && this.worldObj.getBlock((int)this.posX, (int)this.posY, (int)this.posZ) != Blocks.flowing_water) { - if(!this.worldObj.isRemote) - { - onImpact(); - } - this.setDead(); - return; - } - - loadNeighboringChunks((int)(posX / 16), (int)(posZ / 16)); - - if(motionY < -1 && this.isCluster && !worldObj.isRemote) { - cluster(); - this.setDead(); - return; - } + if(!this.worldObj.isRemote) { + onImpact(); + } + this.killAndClear(); + return; + } + + loadNeighboringChunks((int) (posX / 16), (int) (posZ / 16)); + + if(motionY < -1 && this.isCluster && !worldObj.isRemote) { + cluster(); + this.setDead(); + return; + } } - } + } - @Override + @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 500000; - } + public boolean isInRangeToRenderDist(double distance) { + return true; + } public abstract void onImpact(); @@ -272,30 +259,31 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk List loadedChunks = new ArrayList(); - public void loadNeighboringChunks(int newChunkX, int newChunkZ) - { - if(!worldObj.isRemote && loaderTicket != null) - { - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.unforceChunk(loaderTicket, chunk); - } + public void loadNeighboringChunks(int newChunkX, int newChunkZ) { + if(!worldObj.isRemote && loaderTicket != null) { + + clearChunkLoader(); - loadedChunks.clear(); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ - 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX + 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ + 1)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX - 1, newChunkZ)); - loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ - 1)); + loadedChunks.clear(); + loadedChunks.add(new ChunkCoordIntPair(newChunkX, newChunkZ)); + loadedChunks.add(new ChunkCoordIntPair(newChunkX + (int) Math.ceil((this.posX + this.motionX) / 16D), newChunkZ + (int) Math.ceil((this.posZ + this.motionZ) / 16D))); - for(ChunkCoordIntPair chunk : loadedChunks) - { - ForgeChunkManager.forceChunk(loaderTicket, chunk); - } - } - } + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.forceChunk(loaderTicket, chunk); + } + } + } + + public void killAndClear() { + this.setDead(); + this.clearChunkLoader(); + } + + public void clearChunkLoader() { + if(!worldObj.isRemote && loaderTicket != null) { + for(ChunkCoordIntPair chunk : loadedChunks) { + ForgeChunkManager.unforceChunk(loaderTicket, chunk); + } + } + } } diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java index 12a2b845a..6deaa70ce 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileCustom.java @@ -9,7 +9,7 @@ import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityBalefire; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.logic.IChunkLoader; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.handler.BulletConfigSyncingUtil; @@ -371,7 +371,7 @@ public class EntityMissileCustom extends Entity implements IChunkLoader, IRadarD Vec3 vec = Vec3.createVectorHelper(0.5, 0, 0); for(int i = 0; i < count; i++) { - EntityBulletBase blade = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.TURBINE); + EntityBulletBaseNT blade = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.TURBINE); blade.setPositionAndRotation(this.posX - this.motionX, this.posY - this.motionY + rand.nextGaussian(), this.posZ - this.motionZ, 0, 0); blade.motionX = vec.xCoord; blade.motionZ = vec.zCoord; diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java new file mode 100644 index 000000000..70ad6fbe9 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperGold.java @@ -0,0 +1,47 @@ +package com.hbm.entity.mob; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.*; +import com.hbm.items.ModItems; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityCreeperGold extends EntityCreeper { + + public EntityCreeperGold(World world) { + super(world); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, this.getPowered() ? 14 : 7, this); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60, this.getPowered() ? 32 : 16)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(Blocks.gold_ore))); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + } + + @Override + public boolean getCanSpawnHere() { + return super.getCanSpawnHere() && this.posY <= 40; + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + + int amount = byPlayer ? 5 + rand.nextInt(6 + looting * 2) : 3; + for(int i = 0; i < amount; ++i) { + this.entityDropItem(new ItemStack(ModItems.crystal_gold), 0F); + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java new file mode 100644 index 000000000..3be14d073 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperNuclear.java @@ -0,0 +1,137 @@ +package com.hbm.entity.mob; + +import java.util.List; + +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +public class EntityCreeperNuclear extends EntityCreeper { + + public EntityCreeperNuclear(World world) { + super(world); + this.fuseTime = 75; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.3D); + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + // for some reason the nuclear explosion would damage the already dead entity, reviving it and forcing it to play the death animation + if(this.isDead) return false; + + if(source == ModDamageSource.radiation || source == ModDamageSource.mudPoisoning) { + if(this.isEntityAlive()) this.heal(amount); + return false; + } + + return super.attackEntityFrom(source, amount); + } + + @Override + protected Item getDropItem() { + return Item.getItemFromBlock(Blocks.tnt); + } + + @Override + protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { + + super.dropFewItems(p_70628_1_, p_70628_2_); + + if(rand.nextInt(3) == 0) + this.dropItem(ModItems.coin_creeper, 1); + } + + @Override + public void onDeath(DamageSource p_70645_1_) { + super.onDeath(p_70645_1_); + + List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50, 50, 50)); + + for(EntityPlayer player : players) { + player.triggerAchievement(MainRegistry.bossCreeper); + } + + if(p_70645_1_.getEntity() instanceof EntitySkeleton || (p_70645_1_.isProjectile() && p_70645_1_.getEntity() instanceof EntityArrow && ((EntityArrow) (p_70645_1_.getEntity())).shootingEntity == null)) { + this.entityDropItem(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.STOCK), 1); + } + } + + @Override + public void onUpdate() { + + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.expand(5, 5, 5)); + + for(Entity e : list) { + if(e instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) e, HazardType.RADIATION, ContaminationType.CREATIVE, 0.25F); + } + } + + super.onUpdate(); + + if(this.isEntityAlive() && this.getHealth() < this.getMaxHealth() && this.ticksExisted % 10 == 0) { + this.heal(1.0F); + } + } + + @Override + public void func_146077_cc() { + if(!this.worldObj.isRemote) { + + this.setDead(); + + boolean flag = this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); + + if(this.getPowered()) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + worldObj.playSoundEffect(posX, posY + 0.5, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + + if(flag) { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, 50, posX, posY, posZ).mute()); + } else { + ExplosionNukeGeneric.dealDamage(worldObj, posX, posY + 0.5, posZ, 100); + } + } else { + + if(flag) { + ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_MEDIUM); + } else { + ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_SAFE); + } + } + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java b/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java new file mode 100644 index 000000000..dc6015870 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperPhosgene.java @@ -0,0 +1,43 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.effect.EntityMist; +import com.hbm.inventory.fluid.Fluids; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; + +public class EntityCreeperPhosgene extends EntityCreeper { + + public EntityCreeperPhosgene(World world) { + super(world); + this.fuseTime = 20; //ehehehehehe + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(!source.isDamageAbsolute() && !source.isUnblockable()) { + amount -= 4F; + } + + if(amount < 0) return false; + + return super.attackEntityFrom(source, amount); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + worldObj.createExplosion(this, posX, posY + this.height / 2, posZ, 2F, false); + EntityMist mist = new EntityMist(worldObj); + mist.setType(Fluids.PHOSGENE); + mist.setPosition(posX, posY, posZ); + mist.setArea(10, 5); + worldObj.spawnEntityInWorld(mist); + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java new file mode 100644 index 000000000..807e6c543 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperTainted.java @@ -0,0 +1,100 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.config.GeneralConfig; + +import api.hbm.entity.IRadiationImmune; +import net.minecraft.block.Block; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.world.World; + +public class EntityCreeperTainted extends EntityCreeper implements IRadiationImmune { + + public EntityCreeperTainted(World world) { + super(world); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(15.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.35D); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(this.isEntityAlive()) { + + if(this.getHealth() < this.getMaxHealth() && this.ticksExisted % 10 == 0) { + this.heal(1.0F); + } + } + } + + @Override + protected Item getDropItem() { + return Item.getItemFromBlock(Blocks.tnt); + } + + @Override + public void func_146077_cc() { + if(!this.worldObj.isRemote) { + boolean griefing = this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); + + worldObj.newExplosion(this, posX, posY, posZ, 5.0F, false, false); + + if(griefing) { + if(this.getPowered()) { + + for(int i = 0; i < 255; i++) { + 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)) { + if(!GeneralConfig.enableHardcoreTaint) { + worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2); + } else { + worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3), 2); + } + } + } + + } else { + + for(int i = 0; i < 85; i++) { + 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)) { + if(!GeneralConfig.enableHardcoreTaint) { + 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); + } + } + } + } + } + + this.setDead(); + } + } + + 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; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java new file mode 100644 index 000000000..17160b15e --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityCreeperVolatile.java @@ -0,0 +1,44 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.*; +import com.hbm.items.ModItems; + +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class EntityCreeperVolatile extends EntityCreeper { + + public EntityCreeperVolatile(World world) { + super(world); + } + + @Override + public void func_146077_cc() { + + if(!this.worldObj.isRemote) { + this.setDead(); + + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, this.getPowered() ? 14 : 7, this); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60, this.getPowered() ? 32 : 16)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag, 1))); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(0.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode(); + } + } + + @Override + public boolean getCanSpawnHere() { + return super.getCanSpawnHere() && this.posY <= 40; + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + this.entityDropItem(new ItemStack(ModItems.sulfur, 2 + rand.nextInt(3)), 0F); + this.entityDropItem(new ItemStack(ModItems.stick_tnt, 1 + rand.nextInt(2)), 0F); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityCyberCrab.java b/src/main/java/com/hbm/entity/mob/EntityCyberCrab.java index 4d6da1f3e..7af12022a 100644 --- a/src/main/java/com/hbm/entity/mob/EntityCyberCrab.java +++ b/src/main/java/com/hbm/entity/mob/EntityCyberCrab.java @@ -27,7 +27,7 @@ public class EntityCyberCrab extends EntityMob implements IRangedAttackMob, IRad private static final IEntitySelector selector = new IEntitySelector() { public boolean isEntityApplicable(Entity p_82704_1_) { - return !(p_82704_1_ instanceof EntityCyberCrab || p_82704_1_ instanceof EntityCreeper || p_82704_1_ instanceof EntityNuclearCreeper); + return !(p_82704_1_ instanceof EntityCyberCrab || p_82704_1_ instanceof EntityCreeper); } }; diff --git a/src/main/java/com/hbm/entity/mob/EntityFBI.java b/src/main/java/com/hbm/entity/mob/EntityFBI.java index df1ed0755..c6426a6b3 100644 --- a/src/main/java/com/hbm/entity/mob/EntityFBI.java +++ b/src/main/java/com/hbm/entity/mob/EntityFBI.java @@ -7,7 +7,7 @@ import java.util.Set; import com.hbm.blocks.ModBlocks; import com.hbm.config.MobConfig; import com.hbm.entity.mob.ai.EntityAIBreaking; -import com.hbm.entity.mob.ai.EntityAI_MLPF; +import com.hbm.entity.pathfinder.PathFinderUtils; import com.hbm.entity.projectile.EntityBullet; import com.hbm.items.ModItems; @@ -50,7 +50,7 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { this.tasks.addTask(2, new EntityAIArrowAttack(this, 1D, 20, 25, 15.0F)); this.tasks.addTask(3, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, true)); this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D)); - this.tasks.addTask(6, new EntityAI_MLPF(this, EntityPlayer.class, 100, 1D, 16)); + //this.tasks.addTask(6, new EntityAI_MLPF(this, EntityPlayer.class, 100, 1D, 16)); this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); this.tasks.addTask(8, new EntityAILookIdle(this)); @@ -119,6 +119,20 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { protected boolean isAIEnabled() { return true; } + + @Override + protected void updateAITasks() { + super.updateAITasks(); + + if(this.getAttackTarget() == null) { + this.setAttackTarget(this.worldObj.getClosestVulnerablePlayerToEntity(this, 128.0D)); + } + + // hell yeah!! + if(this.getAttackTarget() != null) { + this.getNavigator().setPath(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.getAttackTarget(), 16F, true, false, false, true), 1); + } + } //combat vest = full diamond set public int getTotalArmorValue() { @@ -155,7 +169,6 @@ public class EntityFBI extends EntityMob implements IRangedAttackMob { canDestroy.add(Blocks.trapdoor); canDestroy.add(ModBlocks.machine_press); canDestroy.add(ModBlocks.machine_epress); - canDestroy.add(ModBlocks.dummy_block_assembler); canDestroy.add(ModBlocks.machine_chemplant); canDestroy.add(ModBlocks.machine_crystallizer); canDestroy.add(ModBlocks.machine_turbine); diff --git a/src/main/java/com/hbm/entity/mob/EntityFBIDrone.java b/src/main/java/com/hbm/entity/mob/EntityFBIDrone.java new file mode 100644 index 000000000..97110b54f --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityFBIDrone.java @@ -0,0 +1,64 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.grenade.EntityGrenadeStrong; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityFBIDrone extends EntityUFOBase { + + private int attackCooldown; + + public EntityFBIDrone(World world) { + super(world); + } + + @Override + protected void updateEntityActionState() { + super.updateEntityActionState(); + if(this.courseChangeCooldown > 0) this.courseChangeCooldown--; + if(this.scanCooldown > 0) this.scanCooldown--; + + if(!worldObj.isRemote) { + + if(attackCooldown > 0) attackCooldown--; + + if(this.target != null && attackCooldown <= 0) { + + Vec3 vec = Vec3.createVectorHelper(posX - target.posX, posY - target.posY, posZ - target.posZ); + if(Math.abs(vec.xCoord) < 5 && Math.abs(vec.zCoord) < 5 && vec.yCoord > 3) { + attackCooldown = 60; + EntityGrenadeStrong grenade = new EntityGrenadeStrong(worldObj); + grenade.setPosition(posX, posY, posZ); + worldObj.spawnEntityInWorld(grenade); + } + } + } + + if(this.courseChangeCooldown > 0) { + approachPosition(this.target == null ? 0.25D : 0.5D); + } + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(35.0D); + } + + @Override + protected int getScanRange() { + return 100; + } + + @Override + protected int targetHeightOffset() { + return 7 + rand.nextInt(4); + } + + @Override + protected int wanderHeightOffset() { + return 7 + rand.nextInt(4); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphid.java b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java new file mode 100644 index 000000000..10337b458 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphid.java @@ -0,0 +1,245 @@ +package com.hbm.entity.mob; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import com.hbm.config.MobConfig; +import com.hbm.entity.pathfinder.PathFinderUtils; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureAttribute; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.monster.EntityMob; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphid extends EntityMob { + + public EntityGlyphid(World world) { + super(world); + /*this.tasks.addTask(0, new EntityAISwimming(this)); + this.tasks.addTask(2, new EntityAIAttackOnCollide(this, EntityPlayer.class, 1.0D, false)); + this.tasks.addTask(5, new EntityAIMoveTowardsRestriction(this, 1.0D)); + this.tasks.addTask(7, new EntityAIWander(this, 1.0D)); + this.tasks.addTask(8, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); + this.tasks.addTask(8, new EntityAILookIdle(this)); + this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, true)); + this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true));*/ + this.setSize(1.75F, 1F); + } + + public ResourceLocation getSkin() { + return ResourceManager.glyphid_tex; + } + + public double getScale() { + return 1.0D; + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(16, new Byte((byte) 0)); //wall climbing + this.dataWatcher.addObject(17, new Byte((byte) 0b11111)); //armor + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(30D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(5D); + } + + @Override + protected void dropFewItems(boolean byPlayer, int looting) { + if(rand.nextInt(3) == 0) this.entityDropItem(new ItemStack(ModItems.glyphid_meat, 1 + rand.nextInt(2) + looting), 0F); + } + + @Override + protected Entity findPlayerToAttack() { + EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, useExtendedTargeting() ? 128D : 16D); + return entityplayer != null && this.canEntityBeSeen(entityplayer) ? entityplayer : null; + } + + @Override + protected void updateEntityActionState() { + super.updateEntityActionState(); + + // hell yeah!! + if(useExtendedTargeting() && this.entityToAttack != null && !this.hasPath()) { + this.setPathToEntity(PathFinderUtils.getPathEntityToEntityPartial(worldObj, this, this.entityToAttack, 16F, true, false, false, true)); + } + } + + public boolean useExtendedTargeting() { + return PollutionHandler.getPollution(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), PollutionType.SOOT) >= MobConfig.targetingThreshold; + } + + @Override + protected boolean canDespawn() { + return entityToAttack == null; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + + if(!source.isDamageAbsolute() && !source.isUnblockable() && !worldObj.isRemote && !source.isFireDamage() && !source.getDamageType().equals(ModDamageSource.s_cryolator)) { + byte armor = this.dataWatcher.getWatchableObjectByte(17); + + if(armor != 0) { //if at least one bit of armor is present + + if(amount < getDamageThreshold()) return false; + + int chance = getArmorBreakChance(amount); //chances of armor being broken off + if(this.rand.nextInt(chance) == 0 && amount > 1) { + breakOffArmor(); + amount *= 0.25F; + } + + amount -= getDamageThreshold(); + if(amount < 0) return true; + } + + amount = this.calculateDamage(amount); + } + + if(source.isFireDamage()) amount *= 4F; + + return super.attackEntityFrom(source, amount); + } + + public int getArmorBreakChance(float amount) { + return amount < 10 ? 5 : amount < 20 ? 3 : 2; + } + + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor++; + } + } + + amount /= divisor; + + return amount; + } + + public float getDamageThreshold() { + return 0.5F; + } + + public void breakOffArmor() { + byte armor = this.dataWatcher.getWatchableObjectByte(17); + List indices = Arrays.asList(0, 1, 2, 3, 4); + Collections.shuffle(indices); + + for(Integer i : indices) { + byte bit = (byte) (1 << i); + if((armor & bit) > 0) { + armor &= ~bit; + armor = (byte) (armor & 0b11111); + this.dataWatcher.updateObject(17, armor); + worldObj.playSoundAtEntity(this, "mob.zombie.woodbreak", 1.0F, 1.25F); + break; + } + } + } + + @Override + public boolean attackEntityAsMob(Entity victum) { + if(this.isSwingInProgress) return false; + this.swingItem(); + return super.attackEntityAsMob(victum); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!this.worldObj.isRemote) { + this.setBesideClimbableBlock(this.isCollidedHorizontally); + + if(worldObj.getTotalWorldTime() % 200 == 0) { + this.swingItem(); + } + } + } + + @Override + protected void updateArmSwingProgress() { + int i = this.swingDuration(); + + if(this.isSwingInProgress) { + ++this.swingProgressInt; + + if(this.swingProgressInt >= i) { + this.swingProgressInt = 0; + this.isSwingInProgress = false; + } + } else { + this.swingProgressInt = 0; + } + + this.swingProgress = (float) this.swingProgressInt / (float) i; + } + + public int swingDuration() { + return 15; + } + + @Override + public void setInWeb() { } + + @Override + public boolean isOnLadder() { + return this.isBesideClimbableBlock(); + } + + public boolean isBesideClimbableBlock() { + return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; + } + + public void setBesideClimbableBlock(boolean climbable) { + byte watchable = this.dataWatcher.getWatchableObjectByte(16); + + if(climbable) { + watchable = (byte) (watchable | 1); + } else { + watchable &= -2; + } + + this.dataWatcher.updateObject(16, Byte.valueOf(watchable)); + } + + @Override + public EnumCreatureAttribute getCreatureAttribute() { + return EnumCreatureAttribute.ARTHROPOD; + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setByte("armor", this.dataWatcher.getWatchableObjectByte(17)); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.dataWatcher.updateObject(17, nbt.getByte("armor")); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java new file mode 100644 index 000000000..bf3215059 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBehemoth.java @@ -0,0 +1,60 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBehemoth extends EntityGlyphid { + + public EntityGlyphidBehemoth(World world) { + super(world); + this.setSize(2.25F, 1.25F); + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_behemoth_tex; + } + + @Override + public double getScale() { + return 1.5D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(100D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(25D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 20 ? 10 : amount < 100 ? 5 : amount > 200 ? 1 : 3; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 3; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 2.5F; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java new file mode 100644 index 000000000..5e922ab49 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBlaster.java @@ -0,0 +1,80 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBlaster extends EntityGlyphidBombardier { + + public EntityGlyphidBlaster(World world) { + super(world); + this.setSize(2F, 1.125F); + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_blaster_tex; + } + + @Override + public double getScale() { + return 1.25D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(10D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 10 ? 10 : amount < 25 ? 5 : amount > 100 ? 1 : 3; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 2; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 1.0F; + } + + @Override + public float getBombDamage() { + return 10F; + } + + @Override + public int getBombCount() { + return 20; + } + + @Override + public float getSpreadMult() { + return 0.75F; + } + + @Override + public double getV0() { + return 1.25D; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java new file mode 100644 index 000000000..61750f0ee --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBombardier.java @@ -0,0 +1,101 @@ +package com.hbm.entity.mob; + +import com.hbm.entity.projectile.EntityAcidBomb; +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityGlyphidBombardier extends EntityGlyphid { + + public EntityGlyphidBombardier(World world) { + super(world); + } + + public ResourceLocation getSkin() { + return ResourceManager.glyphid_bombardier_tex; + } + + protected Entity lastTarget; + protected double lastX; + protected double lastY; + protected double lastZ; + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!this.worldObj.isRemote) { + + Entity e = this.getEntityToAttack(); + + if(this.ticksExisted % 20 == 0 && e != null) { + this.lastTarget = e; + this.lastX = e.posX; + this.lastY = e.posY; + this.lastZ = e.posZ; + } + + if(this.ticksExisted % 20 == 1 && e != null) { + + boolean topAttack = rand.nextBoolean(); + + double velX = e.posX - lastX; + double velY = e.posY - lastY; + double velZ = e.posZ - lastZ; + + if(this.lastTarget != e || Vec3.createVectorHelper(velX, velY, velZ).lengthVector() > 30) { + velX = velY = velZ = 0; + } + + int prediction = topAttack ? 60 : 20; + Vec3 delta = Vec3.createVectorHelper(e.posX - posX + velX * prediction, (e.posY + e.height / 2) - (posY + 1) + velY * prediction, e.posZ - posZ + velZ * prediction); + double len = delta.lengthVector(); + if(len < 3) return; + double targetYaw = -Math.atan2(delta.xCoord, delta.zCoord); + + double x = Math.sqrt(delta.xCoord * delta.xCoord + delta.zCoord * delta.zCoord); + double y = delta.yCoord; + double v0 = getV0(); + double v02 = v0 * v0; + double g = 0.04D; + double upperLower = topAttack ? 1 : -1; + double targetPitch = Math.atan((v02 + Math.sqrt(v02*v02 - g*(g*x*x + 2*y*v02)) * upperLower) / (g*x)); + + if(!Double.isNaN(targetPitch)) { + + Vec3 fireVec = Vec3.createVectorHelper(v0, 0, 0); + fireVec.rotateAroundZ((float) -targetPitch); + fireVec.rotateAroundY((float) -(targetYaw + Math.PI * 0.5)); + + for(int i = 0; i < getBombCount(); i++) { + EntityAcidBomb bomb = new EntityAcidBomb(worldObj, posX, posY + 1, posZ); + bomb.setThrowableHeading(fireVec.xCoord, fireVec.yCoord, fireVec.zCoord, (float) v0, i * getSpreadMult()); + bomb.damage = getBombDamage(); + worldObj.spawnEntityInWorld(bomb); + } + + this.swingItem(); + } + } + } + } + + public float getBombDamage() { + return 1.5F; + } + + public int getBombCount() { + return 10; + } + + public float getSpreadMult() { + return 1F; + } + + public double getV0() { + return 1D; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java new file mode 100644 index 000000000..749230a42 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrawler.java @@ -0,0 +1,60 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBrawler extends EntityGlyphid { + + public EntityGlyphidBrawler(World world) { + super(world); + this.setSize(2F, 1.125F); + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_brawler_tex; + } + + @Override + public double getScale() { + return 1.25D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(10D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 10 ? 10 : amount < 25 ? 5 : amount > 100 ? 1 : 3; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 2; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 1.0F; + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java new file mode 100644 index 000000000..bdce3e7bc --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidBrenda.java @@ -0,0 +1,81 @@ +package com.hbm.entity.mob; + +import com.hbm.main.ResourceManager; + +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidBrenda extends EntityGlyphid { + + public EntityGlyphidBrenda(World world) { + super(world); + this.setSize(2.5F, 1.75F); + this.isImmuneToFire = true; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_brenda_tex; + } + + @Override + public double getScale() { + return 2D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(250D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(50D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 25 ? 100 : amount > 1000 ? 1 : 10; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 5; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 10F; + } + + @Override + public void setDead() { + if(!this.worldObj.isRemote && this.getHealth() <= 0.0F) { + for(int i = 0; i < 12; ++i) { + EntityGlyphid glyphid = new EntityGlyphid(worldObj); + glyphid.setLocationAndAngles(this.posX, this.posY + 0.5D, this.posZ, rand.nextFloat() * 360.0F, 0.0F); + glyphid.addPotionEffect(new PotionEffect(Potion.resistance.id, 5 * 60 * 20, 2)); + glyphid.addPotionEffect(new PotionEffect(Potion.fireResistance.id, 5 * 60 * 20, 0)); + glyphid.addPotionEffect(new PotionEffect(Potion.damageBoost.id, 5 * 60 * 20, 4)); + glyphid.addPotionEffect(new PotionEffect(Potion.field_76444_x.id, 5 * 60 * 20, 19)); + this.worldObj.spawnEntityInWorld(glyphid); + glyphid.moveEntity(rand.nextGaussian(), 0, rand.nextGaussian()); + } + } + + super.setDead(); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java new file mode 100644 index 000000000..62a3ae9a6 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidNuclear.java @@ -0,0 +1,108 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockMutatorDebris; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.main.MainRegistry; +import com.hbm.main.ResourceManager; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class EntityGlyphidNuclear extends EntityGlyphid { + + public int deathTicks; + + public EntityGlyphidNuclear(World world) { + super(world); + this.setSize(2.5F, 1.75F); + this.isImmuneToFire = true; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_nuclear_tex; + } + + @Override + public double getScale() { + return 2D; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(20D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.8D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(50D); + } + + @Override + public int getArmorBreakChance(float amount) { + return amount < 25 ? 100 : amount > 1000 ? 1 : 10; + } + + @Override + public float calculateDamage(float amount) { + + byte armor = this.dataWatcher.getWatchableObjectByte(17); + int divisor = 1; + + for(int i = 0; i < 5; i++) { + if((armor & (1 << i)) > 0) { + divisor += 5; + } + } + + amount /= divisor; + + return amount; + } + + @Override + public float getDamageThreshold() { + return 10F; + } + + @Override + protected void onDeathUpdate() { + ++this.deathTicks; + + if(this.deathTicks == 100) { + + if(!worldObj.isRemote) { + ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY, posZ, 25, this); + vnt.setBlockAllocator(new BlockAllocatorStandard(24)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorDebris(ModBlocks.volcanic_lava_block, 0)).setNoDrop()); + vnt.setEntityProcessor(new EntityProcessorStandard().withRangeMod(1.5F)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.explode(); + + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + // if the FX type is "muke", apply random BF effect + if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) { + data.setBoolean("balefire", true); + } + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + } + + this.setDead(); + } else { + if(!worldObj.isRemote && this.deathTicks % 10 == 0) { + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.fstbmbPing", 5.0F, 1.0F); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java new file mode 100644 index 000000000..181156e09 --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityGlyphidScout.java @@ -0,0 +1,157 @@ +package com.hbm.entity.mob; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.world.feature.GlyphidHive; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntityGlyphidScout extends EntityGlyphid { + + public boolean hasHome = false; + public double homeX; + public double homeY; + public double homeZ; + + public EntityGlyphidScout(World world) { + super(world); + this.setSize(1.25F, 0.75F); + } + + @Override + public float getDamageThreshold() { + return 0.0F; + } + + @Override + public ResourceLocation getSkin() { + return ResourceManager.glyphid_scout_tex; + } + + @Override + public double getScale() { + return 0.75D; + } + + @Override + public int getArmorBreakChance(float amount) { + return 1; + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(16D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.5D); + this.getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(2D); + } + + @Override + protected boolean canDespawn() { + return true; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(!this.hasHome) { + this.homeX = posX; + this.homeY = posY; + this.homeZ = posZ; + this.hasHome = true; + } + + if(rand.nextInt(20) == 0) fleeingTick = 2; + + if(this.ticksExisted > 0 && this.ticksExisted % 1200 == 0 && Vec3.createVectorHelper(posX - homeX, posY - homeY, posZ - homeZ).lengthVector() > 8) { + + Block b = worldObj.getBlock((int) Math.floor(posX), (int) Math.floor(posY - 1), (int) Math.floor(posZ)); + + int accuracy = 16; + for(int i = 0; i < accuracy; i++) { + float angle = (float) Math.toRadians(360D / accuracy * i); + Vec3 rot = Vec3.createVectorHelper(0, 0, 16); + rot.rotateAroundY(angle); + Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY + 1, this.posZ); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + rot.xCoord, this.posY + 1, this.posZ + rot.zCoord); + MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + + Block block = worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ); + + if(block == ModBlocks.glyphid_base) { + return; + } + } + } + + if(b.getMaterial() != Material.air && b.isNormalCube() && b != ModBlocks.glyphid_base) { + this.setDead(); + worldObj.newExplosion(this, posX, posY, posZ, 5F, false, false); + GlyphidHive.generate(worldObj, (int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), rand); + } + } + } + } + + @Override + protected void updateWanderPath() { + this.worldObj.theProfiler.startSection("stroll"); + boolean flag = false; + int pathX = -1; + int pathY = -1; + int pathZ = -1; + float maxWeight = -99999.0F; + + for(int l = 0; l < 5; ++l) { + int x = MathHelper.floor_double(this.posX + (double) this.rand.nextInt(25) - 12.0D); + int y = MathHelper.floor_double(this.posY + (double) this.rand.nextInt(11) - 5.0D); + int z = MathHelper.floor_double(this.posZ + (double) this.rand.nextInt(25) - 12.0D); + float weight = this.getBlockPathWeight(x, y, z); + + if(weight > maxWeight) { + maxWeight = weight; + pathX = x; + pathY = y; + pathZ = z; + flag = true; + } + } + + if(flag) { + this.setPathToEntity(this.worldObj.getEntityPathToXYZ(this, pathX, pathY, pathZ, 10.0F, true, false, false, true)); + } + + this.worldObj.theProfiler.endSection(); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setBoolean("hasHome", hasHome); + nbt.setDouble("homeX", homeX); + nbt.setDouble("homeY", homeY); + nbt.setDouble("homeZ", homeZ); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.hasHome = nbt.getBoolean("hasHome"); + this.homeX = nbt.getDouble("homeX"); + this.homeY = nbt.getDouble("homeY"); + this.homeZ = nbt.getDouble("homeZ"); + } +} diff --git a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java b/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java deleted file mode 100644 index fa5f8b85b..000000000 --- a/src/main/java/com/hbm/entity/mob/EntityNuclearCreeper.java +++ /dev/null @@ -1,349 +0,0 @@ -package com.hbm.entity.mob; - -import java.util.List; - -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.entity.mob.ai.EntityAINuclearCreeperSwell; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.explosion.ExplosionNukeSmall; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.AmmoFatman; -import com.hbm.lib.ModDamageSource; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.util.ContaminationUtil; -import com.hbm.util.ContaminationUtil.ContaminationType; -import com.hbm.util.ContaminationUtil.HazardType; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAINearestAttackableTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.monster.EntitySkeleton; -import net.minecraft.entity.passive.EntityOcelot; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.projectile.EntityArrow; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityNuclearCreeper extends EntityMob { - - private int lastActiveTime; - private int timeSinceIgnited; - private int fuseTime = 75; - - public EntityNuclearCreeper(World p_i1733_1_) { - super(p_i1733_1_); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, new EntityAINuclearCreeperSwell(this)); - this.tasks.addTask(3, new EntityAIAttackOnCollide(this, 1.0D, false)); - this.tasks.addTask(4, new EntityAIWander(this, 0.8D)); - this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(6, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); - this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false)); - this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityOcelot.class, 0, true)); - } - - @Override - protected void applyEntityAttributes() { - super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(50.0D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.3D); - } - - @Override - public boolean attackEntityFrom(DamageSource source, float amount) { - - if(source == ModDamageSource.radiation || source == ModDamageSource.mudPoisoning) { - this.heal(amount); - return false; - } - - return super.attackEntityFrom(source, amount); - } - - @Override - public boolean isAIEnabled() { - return true; - } - - @Override - public int getMaxSafePointTries() { - return this.getAttackTarget() == null ? 3 : 3 + (int) (this.getHealth() - 1.0F); - } - - @Override - protected void fall(float p_70069_1_) { - super.fall(p_70069_1_); - this.timeSinceIgnited = (int) (this.timeSinceIgnited + p_70069_1_ * 1.5F); - - if(this.timeSinceIgnited > this.fuseTime - 5) { - this.timeSinceIgnited = this.fuseTime - 5; - } - } - - @Override - protected void entityInit() { - super.entityInit(); - this.dataWatcher.addObject(16, Byte.valueOf((byte) -1)); - this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); - this.dataWatcher.addObject(18, Byte.valueOf((byte) 0)); - } - - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) { - super.writeEntityToNBT(p_70014_1_); - - if(this.dataWatcher.getWatchableObjectByte(17) == 1) { - p_70014_1_.setBoolean("powered", true); - } - - p_70014_1_.setShort("Fuse", (short) this.fuseTime); - p_70014_1_.setBoolean("ignited", this.func_146078_ca()); - } - - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) { - super.readEntityFromNBT(p_70037_1_); - this.dataWatcher.updateObject(17, Byte.valueOf((byte) (p_70037_1_.getBoolean("powered") ? 1 : 0))); - - if(p_70037_1_.hasKey("Fuse", 99)) { - this.fuseTime = p_70037_1_.getShort("Fuse"); - } - - if(p_70037_1_.getBoolean("ignited")) { - this.func_146079_cb(); - } - } - - @Override - public void onUpdate() { - if(this.isDead) { - this.isDead = false; - this.heal(10.0F); - } - - if(this.isEntityAlive()) { - this.lastActiveTime = this.timeSinceIgnited; - - if(this.func_146078_ca()) { - this.setCreeperState(1); - } - - int i = this.getCreeperState(); - - if(i > 0 && this.timeSinceIgnited == 0) { - this.playSound("creeper.primed", 1.0F * 30 / 75, 0.5F); - } - - this.timeSinceIgnited += i; - - if(this.timeSinceIgnited < 0) { - this.timeSinceIgnited = 0; - } - - if(this.timeSinceIgnited >= this.fuseTime) { - this.timeSinceIgnited = this.fuseTime; - this.func_146077_cc(); - } - } - - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - 5, posY - 5, posZ - 5, posX + 5, posY + 5, posZ + 5)); - - for(Entity e : list) - if(e instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) e, HazardType.RADIATION, ContaminationType.CREATIVE, 0.25F); - } - - super.onUpdate(); - - if(this.getHealth() < this.getMaxHealth() && this.ticksExisted % 10 == 0) { - this.heal(1.0F); - } - } - - @Override - protected String getHurtSound() { - return "mob.creeper.say"; - } - - @Override - protected String getDeathSound() { - return "mob.creeper.death"; - } - - @Override - public void onDeath(DamageSource p_70645_1_) { - super.onDeath(p_70645_1_); - - List players = worldObj.getEntitiesWithinAABB(EntityPlayer.class, this.boundingBox.expand(50, 50, 50)); - - for(EntityPlayer player : players) { - player.triggerAchievement(MainRegistry.bossCreeper); - } - - if(p_70645_1_.getEntity() instanceof EntitySkeleton || (p_70645_1_.isProjectile() && p_70645_1_.getEntity() instanceof EntityArrow && ((EntityArrow) (p_70645_1_.getEntity())).shootingEntity == null)) { - int i = rand.nextInt(11); - int j = rand.nextInt(3); - if(i == 0) - this.dropItem(ModItems.nugget_u235, j); - if(i == 1) - this.dropItem(ModItems.nugget_pu238, j); - if(i == 2) - this.dropItem(ModItems.nugget_pu239, j); - if(i == 3) - this.dropItem(ModItems.nugget_neptunium, j); - if(i == 4) - this.dropItem(ModItems.man_core, 1); - if(i == 5) { - this.dropItem(ModItems.sulfur, j * 2); - this.dropItem(ModItems.niter, j * 2); - } - if(i == 6) - this.dropItem(ModItems.syringe_awesome, 1); - if(i == 7) - this.dropItem(ModItems.fusion_core, 1); - if(i == 8) - this.dropItem(ModItems.syringe_metal_stimpak, 1); - if(i == 9) { - switch(rand.nextInt(4)) { - case 0: - this.dropItem(ModItems.t45_helmet, 1); - break; - case 1: - this.dropItem(ModItems.t45_plate, 1); - break; - case 2: - this.dropItem(ModItems.t45_legs, 1); - break; - case 3: - this.dropItem(ModItems.t45_boots, 1); - break; - } - this.dropItem(ModItems.fusion_core, 1); - } - if(i == 10) - this.entityDropItem(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH), 1); - } - } - - @Override - public boolean attackEntityAsMob(Entity p_70652_1_) { - return true; - } - - public boolean getPowered() { - return this.dataWatcher.getWatchableObjectByte(17) == 1; - } - - @SideOnly(Side.CLIENT) - public float getCreeperFlashIntensity(float p_70831_1_) { - return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2); - } - - @Override - protected Item getDropItem() { - return Item.getItemFromBlock(Blocks.tnt); - } - - @Override - protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { - - super.dropFewItems(p_70628_1_, p_70628_2_); - - if(rand.nextInt(3) == 0) - this.dropItem(ModItems.coin_creeper, 1); - } - - public int getCreeperState() { - return this.dataWatcher.getWatchableObjectByte(16); - } - - public void setCreeperState(int p_70829_1_) { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) p_70829_1_)); - } - - @Override - public void onStruckByLightning(EntityLightningBolt p_70077_1_) { - super.onStruckByLightning(p_70077_1_); - this.dataWatcher.updateObject(17, Byte.valueOf((byte) 1)); - } - - @Override - protected boolean interact(EntityPlayer p_70085_1_) { - ItemStack itemstack = p_70085_1_.inventory.getCurrentItem(); - - if(itemstack != null && itemstack.getItem() == Items.flint_and_steel) { - this.worldObj.playSoundEffect(this.posX + 0.5D, this.posY + 0.5D, this.posZ + 0.5D, "fire.ignite", 1.0F, this.rand.nextFloat() * 0.4F + 0.8F); - p_70085_1_.swingItem(); - - if(!this.worldObj.isRemote) { - this.func_146079_cb(); - itemstack.damageItem(1, p_70085_1_); - return true; - } - } - - return super.interact(p_70085_1_); - } - - private void func_146077_cc() { - if(!this.worldObj.isRemote) { - boolean flag = this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); - - if(this.getPowered()) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); - worldObj.playSoundEffect(posX, posY + 0.5, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - - if(flag) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, 50, posX, posY, posZ).mute()); - } else { - ExplosionNukeGeneric.dealDamage(worldObj, posX, posY + 0.5, posZ, 100); - } - } else { - - if(flag) { - ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_MEDIUM); - } else { - ExplosionNukeSmall.explode(worldObj, posX, posY + 0.5, posZ, ExplosionNukeSmall.PARAMS_SAFE); - } - } - - this.setDead(); - } - } - - public boolean func_146078_ca() { - return this.dataWatcher.getWatchableObjectByte(18) != 0; - } - - public void func_146079_cb() { - this.dataWatcher.updateObject(18, Byte.valueOf((byte) 1)); - } - - public void setPowered(int power) { - this.dataWatcher.updateObject(17, power); - } -} diff --git a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java index 9c733ef12..aa0851cc9 100644 --- a/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java +++ b/src/main/java/com/hbm/entity/mob/EntityTaintCrab.java @@ -3,7 +3,7 @@ package com.hbm.entity.mob; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; import com.hbm.packet.AuxParticlePacketNT; @@ -72,7 +72,7 @@ public class EntityTaintCrab extends EntityCyberCrab { @Override public void attackEntityWithRangedAttack(EntityLivingBase entity, float f) { - EntityBulletBase bullet = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.BMG50_STAR, this); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.BMG50_STAR, this); Vec3 motion = Vec3.createVectorHelper(posX - entity.posX, posY - entity.posZ - entity.height / 2, posZ - entity.posZ); motion = motion.normalize(); NBTTagCompound data = new NBTTagCompound(); diff --git a/src/main/java/com/hbm/entity/mob/EntityTaintedCreeper.java b/src/main/java/com/hbm/entity/mob/EntityTaintedCreeper.java deleted file mode 100644 index 12db53858..000000000 --- a/src/main/java/com/hbm/entity/mob/EntityTaintedCreeper.java +++ /dev/null @@ -1,286 +0,0 @@ -package com.hbm.entity.mob; - -import com.hbm.blocks.ModBlocks; -import com.hbm.config.GeneralConfig; -import com.hbm.entity.mob.ai.EntityAITaintedCreeperSwell; - -import api.hbm.entity.IRadiationImmune; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.EntityAIAttackOnCollide; -import net.minecraft.entity.ai.EntityAIHurtByTarget; -import net.minecraft.entity.ai.EntityAILookIdle; -import net.minecraft.entity.ai.EntityAINearestAttackableTarget; -import net.minecraft.entity.ai.EntityAISwimming; -import net.minecraft.entity.ai.EntityAIWander; -import net.minecraft.entity.ai.EntityAIWatchClosest; -import net.minecraft.entity.effect.EntityLightningBolt; -import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.passive.EntityOcelot; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.DamageSource; -import net.minecraft.world.World; - -public class EntityTaintedCreeper extends EntityMob implements IRadiationImmune { - - private int lastActiveTime; - private int timeSinceIgnited; - private int fuseTime = 30; - private int explosionRadius = 20; - - public EntityTaintedCreeper(World p_i1733_1_) { - super(p_i1733_1_); - this.tasks.addTask(1, new EntityAISwimming(this)); - this.tasks.addTask(2, new EntityAITaintedCreeperSwell(this)); - this.tasks.addTask(3, new EntityAIAttackOnCollide(this, 1.0D, false)); - this.tasks.addTask(4, new EntityAIWander(this, 0.8D)); - this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); - this.tasks.addTask(6, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); - this.targetTasks.addTask(2, new EntityAIHurtByTarget(this, false)); - this.targetTasks.addTask(3, new EntityAINearestAttackableTarget(this, EntityOcelot.class, 0, true)); - } - - @Override - protected void applyEntityAttributes() { - super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(15.0D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.35D); - } - - @Override - public boolean isAIEnabled() { - return true; - } - - @Override - public int getMaxSafePointTries() { - return this.getAttackTarget() == null ? 3 : 3 + (int) (this.getHealth() - 1.0F); - } - - @Override - protected void fall(float p_70069_1_) { - super.fall(p_70069_1_); - this.timeSinceIgnited = (int) (this.timeSinceIgnited + p_70069_1_ * 1.5F); - - if(this.timeSinceIgnited > this.fuseTime - 5) { - this.timeSinceIgnited = this.fuseTime - 5; - } - } - - @Override - protected void entityInit() { - super.entityInit(); - this.dataWatcher.addObject(16, Byte.valueOf((byte) -1)); - this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); - this.dataWatcher.addObject(18, Byte.valueOf((byte) 0)); - } - - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) { - super.writeEntityToNBT(p_70014_1_); - - if(this.dataWatcher.getWatchableObjectByte(17) == 1) { - p_70014_1_.setBoolean("powered", true); - } - - p_70014_1_.setShort("Fuse", (short) this.fuseTime); - p_70014_1_.setByte("ExplosionRadius", (byte) this.explosionRadius); - p_70014_1_.setBoolean("ignited", this.func_146078_ca()); - } - - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) { - super.readEntityFromNBT(p_70037_1_); - this.dataWatcher.updateObject(17, Byte.valueOf((byte) (p_70037_1_.getBoolean("powered") ? 1 : 0))); - - if(p_70037_1_.hasKey("Fuse", 99)) { - this.fuseTime = p_70037_1_.getShort("Fuse"); - } - - if(p_70037_1_.hasKey("ExplosionRadius", 99)) { - this.explosionRadius = p_70037_1_.getByte("ExplosionRadius"); - } - - if(p_70037_1_.getBoolean("ignited")) { - this.func_146079_cb(); - } - } - - @Override - public void onUpdate() { - if(this.isEntityAlive()) { - this.lastActiveTime = this.timeSinceIgnited; - - if(this.func_146078_ca()) { - this.setCreeperState(1); - } - - int i = this.getCreeperState(); - - if(i > 0 && this.timeSinceIgnited == 0) { - this.playSound("creeper.primed", 1.0F * 30 / 75, 0.5F); - } - - this.timeSinceIgnited += i; - - if(this.timeSinceIgnited < 0) { - this.timeSinceIgnited = 0; - } - - if(this.timeSinceIgnited >= this.fuseTime) { - this.timeSinceIgnited = this.fuseTime; - this.func_146077_cc(); - } - } - - super.onUpdate(); - - if(this.getHealth() < this.getMaxHealth() && this.ticksExisted % 10 == 0) { - this.heal(1.0F); - } - } - - @Override - protected String getHurtSound() { - return "mob.creeper.say"; - } - - @Override - protected String getDeathSound() { - return "mob.creeper.death"; - } - - @Override - public void onDeath(DamageSource p_70645_1_) { - super.onDeath(p_70645_1_); - } - - @Override - public boolean attackEntityAsMob(Entity p_70652_1_) { - return true; - } - - public boolean getPowered() { - return this.dataWatcher.getWatchableObjectByte(17) == 1; - } - - @SideOnly(Side.CLIENT) - public float getCreeperFlashIntensity(float p_70831_1_) { - return (this.lastActiveTime + (this.timeSinceIgnited - this.lastActiveTime) * p_70831_1_) / (this.fuseTime - 2); - } - - @Override - protected Item getDropItem() { - return Item.getItemFromBlock(Blocks.tnt); - } - - public int getCreeperState() { - return this.dataWatcher.getWatchableObjectByte(16); - } - - public void setCreeperState(int p_70829_1_) { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) p_70829_1_)); - } - - @Override - public void onStruckByLightning(EntityLightningBolt p_70077_1_) { - super.onStruckByLightning(p_70077_1_); - this.dataWatcher.updateObject(17, Byte.valueOf((byte) 1)); - } - - @Override - protected boolean interact(EntityPlayer p_70085_1_) { - ItemStack itemstack = p_70085_1_.inventory.getCurrentItem(); - - if(itemstack != null && itemstack.getItem() == Items.flint_and_steel) { - this.worldObj.playSoundEffect(this.posX + 0.5D, this.posY + 0.5D, this.posZ + 0.5D, "fire.ignite", 1.0F, this.rand.nextFloat() * 0.4F + 0.8F); - p_70085_1_.swingItem(); - - if(!this.worldObj.isRemote) { - this.func_146079_cb(); - itemstack.damageItem(1, p_70085_1_); - return true; - } - } - - return super.interact(p_70085_1_); - } - - private void func_146077_cc() { - if(!this.worldObj.isRemote) { - this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"); - - if(this.getPowered()) { - this.explosionRadius *= 3; - } - - worldObj.newExplosion(this, posX, posY, posZ, 5.0F, false, false); - - if(this.getPowered()) { - - for(int i = 0; i < 255; i++) { - 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)) { - - if(!GeneralConfig.enableHardcoreTaint) - worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3) + 5, 2); - else - worldObj.setBlock(a, b, c, ModBlocks.taint, rand.nextInt(3), 2); - } - } - - } else { - - for(int i = 0; i < 85; i++) { - 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)) { - - if(!GeneralConfig.enableHardcoreTaint) - - 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); - } - } - } - - this.setDead(); - } - } - - 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; - } - - public boolean func_146078_ca() { - return this.dataWatcher.getWatchableObjectByte(18) != 0; - } - - public void func_146079_cb() { - this.dataWatcher.updateObject(18, Byte.valueOf((byte) 1)); - } - - public void setPowered(int power) { - this.dataWatcher.updateObject(17, power); - } -} diff --git a/src/main/java/com/hbm/entity/mob/EntityUFO.java b/src/main/java/com/hbm/entity/mob/EntityUFO.java index 95e03d499..4a8f46ee5 100644 --- a/src/main/java/com/hbm/entity/mob/EntityUFO.java +++ b/src/main/java/com/hbm/entity/mob/EntityUFO.java @@ -3,7 +3,7 @@ package com.hbm.entity.mob; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; @@ -326,8 +326,8 @@ public class EntityUFO extends EntityFlying implements IMob, IBossDisplayData, I Vec3 heading = Vec3.createVectorHelper(e.posX - pivotX, e.posY + e.height / 2 - pivotY, e.posZ - pivotZ); heading = heading.normalize(); - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.WORM_LASER); - bullet.shooter = this; + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.WORM_LASER); + bullet.setThrower(this); bullet.setPosition(pivotX, pivotY, pivotZ); bullet.setThrowableHeading(heading.xCoord, heading.yCoord, heading.zCoord, 2F, 0.02F); this.worldObj.spawnEntityInWorld(bullet); @@ -339,8 +339,8 @@ public class EntityUFO extends EntityFlying implements IMob, IBossDisplayData, I Vec3 heading = Vec3.createVectorHelper(e.posX - this.posX, e.posY + e.height / 2 - posY - 0.5D, e.posZ - this.posZ); heading = heading.normalize(); - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.UFO_ROCKET); - bullet.shooter = this; + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.UFO_ROCKET); + bullet.setThrower(this); bullet.setPosition(this.posX, this.posY - 0.5D, this.posZ); bullet.setThrowableHeading(heading.xCoord, heading.yCoord, heading.zCoord, 2F, 0.02F); bullet.getEntityData().setInteger("homingTarget", e.getEntityId()); @@ -350,7 +350,7 @@ public class EntityUFO extends EntityFlying implements IMob, IBossDisplayData, I @Override public boolean canAttackClass(Class clazz) { - return clazz != this.getClass() && clazz != EntityBulletBase.class; + return clazz != this.getClass() && clazz != EntityBulletBaseNT.class; } @Override diff --git a/src/main/java/com/hbm/entity/mob/EntityUFOBase.java b/src/main/java/com/hbm/entity/mob/EntityUFOBase.java index 125cc1283..2468a5c2b 100644 --- a/src/main/java/com/hbm/entity/mob/EntityUFOBase.java +++ b/src/main/java/com/hbm/entity/mob/EntityUFOBase.java @@ -18,8 +18,8 @@ public abstract class EntityUFOBase extends EntityFlying implements IMob { protected int courseChangeCooldown; protected Entity target; - public EntityUFOBase(World p_i1587_1_) { - super(p_i1587_1_); + public EntityUFOBase(World world) { + super(world); } @Override diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java index a298ce331..e6abf7d7b 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanLasergun.java @@ -1,6 +1,6 @@ package com.hbm.entity.mob.ai; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import net.minecraft.entity.EntityCreature; @@ -52,7 +52,7 @@ public class EntityAIMaskmanLasergun extends EntityAIBase { switch(attack) { case ORB: - EntityBulletBase orb = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ORB, owner, target, 2.0F, 0); + EntityBulletBaseNT orb = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ORB, owner, target, 2.0F, 0); orb.motionY += 0.5D; owner.worldObj.spawnEntityInWorld(orb); @@ -60,7 +60,7 @@ public class EntityAIMaskmanLasergun extends EntityAIBase { break; case MISSILE: - EntityBulletBase missile = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ROCKET, owner, target, 1.0F, 0); + EntityBulletBaseNT missile = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_ROCKET, owner, target, 1.0F, 0); Vec3 vec = Vec3.createVectorHelper(target.posX - owner.posX, 0, target.posZ - owner.posZ); missile.motionX = vec.xCoord * 0.05D; missile.motionY = 0.5D + owner.getRNG().nextDouble() * 0.5D; @@ -73,7 +73,7 @@ public class EntityAIMaskmanLasergun extends EntityAIBase { case SPLASH: for(int i = 0; i < 5; i++) { - EntityBulletBase tracer = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_TRACER, owner, target, 1.0F, 0.05F); + EntityBulletBaseNT tracer = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_TRACER, owner, target, 1.0F, 0.05F); owner.worldObj.spawnEntityInWorld(tracer); } break; diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java index e56037204..c794a1d3b 100644 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java +++ b/src/main/java/com/hbm/entity/mob/ai/EntityAIMaskmanMinigun.java @@ -1,6 +1,6 @@ package com.hbm.entity.mob.ai; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import net.minecraft.entity.EntityCreature; @@ -49,7 +49,7 @@ public class EntityAIMaskmanMinigun extends EntityAIBase { if(timer <= 0) { timer = delay; - EntityBulletBase bullet = new EntityBulletBase(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_BULLET, owner, target, 1.0F, 0); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(owner.worldObj, BulletConfigSyncingUtil.MASKMAN_BULLET, owner, target, 1.0F, 0); owner.worldObj.spawnEntityInWorld(bullet); owner.playSound("hbm:weapon.calShoot", 1.0F, 1.0F); } diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAINuclearCreeperSwell.java b/src/main/java/com/hbm/entity/mob/ai/EntityAINuclearCreeperSwell.java deleted file mode 100644 index 665d9dd88..000000000 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAINuclearCreeperSwell.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.entity.mob.ai; - -import com.hbm.entity.mob.EntityNuclearCreeper; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.ai.EntityAIBase; - -public class EntityAINuclearCreeperSwell extends EntityAIBase { - /** The creeper that is swelling. */ - EntityNuclearCreeper swellingCreeper; - /** The creeper's attack target. This is used for the changing of the creeper's state. */ - EntityLivingBase creeperAttackTarget; - public EntityAINuclearCreeperSwell(EntityNuclearCreeper p_i1655_1_) - { - this.swellingCreeper = p_i1655_1_; - this.setMutexBits(1); - } - - /** - * Returns whether the EntityAIBase should begin execution. - */ - @Override - public boolean shouldExecute() - { - EntityLivingBase entitylivingbase = this.swellingCreeper.getAttackTarget(); - return this.swellingCreeper.getCreeperState() > 0 || entitylivingbase != null && this.swellingCreeper.getDistanceSqToEntity(entitylivingbase) < 9.0D; - } - - /** - * Execute a one shot task or start executing a continuous task - */ - @Override - public void startExecuting() - { - this.swellingCreeper.getNavigator().clearPathEntity(); - this.creeperAttackTarget = this.swellingCreeper.getAttackTarget(); - } - - /** - * Resets the task - */ - @Override - public void resetTask() - { - this.creeperAttackTarget = null; - } - - /** - * Updates the task - */ - @Override - public void updateTask() - { - if (this.creeperAttackTarget == null) - { - this.swellingCreeper.setCreeperState(-1); - } - else if (this.swellingCreeper.getDistanceSqToEntity(this.creeperAttackTarget) > 49.0D) - { - this.swellingCreeper.setCreeperState(-1); - } - else if (!this.swellingCreeper.getEntitySenses().canSee(this.creeperAttackTarget)) - { - this.swellingCreeper.setCreeperState(-1); - } - else - { - this.swellingCreeper.setCreeperState(1); - } - } -} diff --git a/src/main/java/com/hbm/entity/mob/ai/EntityAITaintedCreeperSwell.java b/src/main/java/com/hbm/entity/mob/ai/EntityAITaintedCreeperSwell.java deleted file mode 100644 index 44c749cbe..000000000 --- a/src/main/java/com/hbm/entity/mob/ai/EntityAITaintedCreeperSwell.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.hbm.entity.mob.ai; - -import com.hbm.entity.mob.EntityTaintedCreeper; - -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.ai.EntityAIBase; - -public class EntityAITaintedCreeperSwell extends EntityAIBase { - /** The creeper that is swelling. */ - EntityTaintedCreeper swellingCreeper; - /** The creeper's attack target. This is used for the changing of the creeper's state. */ - EntityLivingBase creeperAttackTarget; - public EntityAITaintedCreeperSwell(EntityTaintedCreeper p_i1655_1_) - { - this.swellingCreeper = p_i1655_1_; - this.setMutexBits(1); - } - - /** - * Returns whether the EntityAIBase should begin execution. - */ - @Override - public boolean shouldExecute() - { - EntityLivingBase entitylivingbase = this.swellingCreeper.getAttackTarget(); - return this.swellingCreeper.getCreeperState() > 0 || entitylivingbase != null && this.swellingCreeper.getDistanceSqToEntity(entitylivingbase) < 9.0D; - } - - /** - * Execute a one shot task or start executing a continuous task - */ - @Override - public void startExecuting() - { - this.swellingCreeper.getNavigator().clearPathEntity(); - this.creeperAttackTarget = this.swellingCreeper.getAttackTarget(); - } - - /** - * Resets the task - */ - @Override - public void resetTask() - { - this.creeperAttackTarget = null; - } - - /** - * Updates the task - */ - @Override - public void updateTask() - { - if (this.creeperAttackTarget == null) - { - this.swellingCreeper.setCreeperState(-1); - } - else if (this.swellingCreeper.getDistanceSqToEntity(this.creeperAttackTarget) > 49.0D) - { - this.swellingCreeper.setCreeperState(-1); - } - else if (!this.swellingCreeper.getEntitySenses().canSee(this.creeperAttackTarget)) - { - this.swellingCreeper.setCreeperState(-1); - } - else - { - this.swellingCreeper.setCreeperState(1); - } - } -} diff --git a/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java b/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java index 1aedbd326..2ec6a830e 100644 --- a/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java +++ b/src/main/java/com/hbm/entity/mob/botprime/EntityBOTPrimeBase.java @@ -1,6 +1,6 @@ package com.hbm.entity.mob.botprime; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import api.hbm.entity.IRadiationImmune; @@ -80,14 +80,14 @@ public abstract class EntityBOTPrimeBase extends EntityWormBaseNT implements IRa for(int i = 0; i < 5; i++) { - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.WORM_LASER, this, living, 1.0F, i * 0.05F); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.WORM_LASER, this, living, 1.0F, i * 0.05F); this.worldObj.spawnEntityInWorld(bullet); } this.playSound("hbm:weapon.ballsLaser", 5.0F, 0.75F); } else { - EntityBulletBase bullet = new EntityBulletBase(this.worldObj, BulletConfigSyncingUtil.WORM_BOLT, this, living, 0.5F, 0.125F); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(this.worldObj, BulletConfigSyncingUtil.WORM_BOLT, this, living, 0.5F, 0.125F); this.worldObj.spawnEntityInWorld(bullet); this.playSound("hbm:weapon.ballsLaser", 5.0F, 1.0F); } diff --git a/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java b/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java new file mode 100644 index 000000000..9d5b2f36c --- /dev/null +++ b/src/main/java/com/hbm/entity/pathfinder/PathFinderUtils.java @@ -0,0 +1,62 @@ +package com.hbm.entity.pathfinder; + +import net.minecraft.entity.Entity; +import net.minecraft.pathfinding.PathEntity; +import net.minecraft.pathfinding.PathFinder; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.ChunkCache; +import net.minecraft.world.World; + +public class PathFinderUtils { + + public static PathEntity getPathEntityToEntityPartial(World world, Entity fromEntity, Entity toEntity, float maxDist, boolean allowDoors, boolean allowBlocked, boolean allowWater, boolean canDrown) { + world.theProfiler.startSection("pathfind"); + int startX = MathHelper.floor_double(fromEntity.posX); + int startY = MathHelper.floor_double(fromEntity.posY + 1.0D); + int startZ = MathHelper.floor_double(fromEntity.posZ); + int maxDistEff = (int) (maxDist + 16.0F); + int minX = startX - maxDistEff; + int minY = startY - maxDistEff; + int minZ = startZ - maxDistEff; + int maxX = startX + maxDistEff; + int maxY = startY + maxDistEff; + int maxZ = startZ + maxDistEff; + ChunkCache chunkcache = new ChunkCache(world, minX, minY, minZ, maxX, maxY, maxZ, 0); + + Vec3 vec = Vec3.createVectorHelper(toEntity.posX - fromEntity.posX, toEntity.posY - fromEntity.posY, toEntity.posZ - fromEntity.posZ); + vec = vec.normalize(); + vec.xCoord *= maxDist; + vec.yCoord *= maxDist; + vec.zCoord *= maxDist; + + int x = (int) Math.floor(fromEntity.posX + vec.xCoord); + int y = (int) Math.floor(fromEntity.posY + vec.yCoord); + int z = (int) Math.floor(fromEntity.posZ + vec.zCoord); + + //this part will adjust the end of the path so it's actually on the ground, it being unreachable causes mobs to slow down + boolean solid = false; + + for(int i = y; i > y - 10; i--) { + if(!world.getBlock(x, i, z).getMaterial().blocksMovement() && world.getBlock(x, i - 1, z).isNormalCube()) { + solid = true; + y = i; + break; + } + + } + + if(!solid) for(int i = y + 10; i > y; i--) { + if(!world.getBlock(x, i, z).getMaterial().blocksMovement() && world.getBlock(x, i - 1, z).isNormalCube()) { + solid = true; + y = i; + break; + } + } + + //PathEntity pathentity = (new PathFinder(chunkcache, allowDoors, allowBlocked, allowWater, canDrown)).createEntityPathTo(fromEntity, toEntity, maxDist); + PathEntity pathentity = (new PathFinder(chunkcache, allowDoors, allowBlocked, allowWater, canDrown)).createEntityPathTo(fromEntity, x, y, z, maxDist); + world.theProfiler.endSection(); + return pathentity; + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java b/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java new file mode 100644 index 000000000..8a688df2d --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityAcidBomb.java @@ -0,0 +1,60 @@ +package com.hbm.entity.projectile; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.lib.ModDamageSource; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; + +public class EntityAcidBomb extends EntityThrowableInterp { + + public float damage = 1.5F; + + public EntityAcidBomb(World world) { + super(world); + } + + public EntityAcidBomb(World world, double x, double y, double z) { + super(world, x, y, z); + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + + if(worldObj.isRemote) return; + + if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + + if(!(mop.entityHit instanceof EntityGlyphid)) { + mop.entityHit.attackEntityFrom(ModDamageSource.acid, damage); + this.setDead(); + } + } + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) + this.setDead(); + } + + @Override + public double getGravityVelocity() { + return 0.04D; + } + + @Override + protected float getAirDrag() { + return 1.0F; + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setFloat("damage", damage); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.damage = nbt.getFloat("damage"); + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBullet.java b/src/main/java/com/hbm/entity/projectile/EntityBullet.java index e4e4a19cc..3bbf98b02 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBullet.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBullet.java @@ -32,7 +32,7 @@ import net.minecraft.world.World; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.RedBarrel; import com.hbm.entity.grenade.EntityGrenadeTau; -import com.hbm.entity.mob.EntityNuclearCreeper; +import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.entity.particle.EntityBSmokeFX; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; @@ -494,7 +494,7 @@ public class EntityBullet extends Entity implements IProjectile { if (entitylivingbase instanceof EntityPlayer && ArmorUtil.checkForHazmat((EntityPlayer) entitylivingbase)) { } else if (entitylivingbase instanceof EntityCreeper) { - EntityNuclearCreeper creep = new EntityNuclearCreeper(this.worldObj); + EntityCreeperNuclear creep = new EntityCreeperNuclear(this.worldObj); creep.setLocationAndAngles(entitylivingbase.posX, entitylivingbase.posY, entitylivingbase.posZ, entitylivingbase.rotationYaw, entitylivingbase.rotationPitch); if (!entitylivingbase.isDead) @@ -509,7 +509,7 @@ public class EntityBullet extends Entity implements IProjectile { if (!this.worldObj.isRemote) this.worldObj.spawnEntityInWorld(creep); } else if (entitylivingbase instanceof EntityLivingBase - && !(entitylivingbase instanceof EntityNuclearCreeper) + && !(entitylivingbase instanceof EntityCreeperNuclear) && !(entitylivingbase instanceof EntityMooshroom) && !(entitylivingbase instanceof EntityZombie)) { entitylivingbase.addPotionEffect(new PotionEffect(Potion.poison.getId(), 2 * 60 * 20, 2)); diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java deleted file mode 100644 index 81e67cac1..000000000 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ /dev/null @@ -1,680 +0,0 @@ -package com.hbm.entity.projectile; - -import java.lang.reflect.Field; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.blocks.generic.RedBarrel; -import com.hbm.entity.effect.EntityCloudFleijaRainbow; -import com.hbm.entity.effect.EntityEMPBlast; -import com.hbm.entity.logic.EntityNukeExplosionMK3; -import com.hbm.entity.logic.EntityNukeExplosionMK5; -import com.hbm.explosion.ExplosionChaos; -import com.hbm.explosion.ExplosionLarge; -import com.hbm.explosion.ExplosionNukeGeneric; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.handler.BulletConfiguration; -import com.hbm.handler.GunConfiguration; -import com.hbm.items.weapon.ItemGunBase; -import com.hbm.main.MainRegistry; -import com.hbm.packet.AuxParticlePacketNT; -import com.hbm.packet.PacketDispatcher; -import com.hbm.potion.HbmPotion; -import com.hbm.util.ArmorUtil; -import com.hbm.util.BobMathUtil; - -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -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.block.material.Material; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.IProjectile; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.PotionEffect; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.EntityDamageSource; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntityBulletBase extends Entity implements IProjectile { - - private BulletConfiguration config; - public EntityLivingBase shooter; - public float overrideDamage; - - public BulletConfiguration getConfig() { - return config; - } - - public EntityBulletBase(World world) { - super(world); - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - } - - public EntityBulletBase(World world, int config) { - super(world); - this.config = BulletConfigSyncingUtil.pullConfig(config); - this.dataWatcher.updateObject(18, config); - this.renderDistanceWeight = 10.0D; - - if(this.config == null) { - this.setDead(); - return; - } - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - - this.setSize(0.5F, 0.5F); - } - - public EntityBulletBase(World world, int config, EntityLivingBase entity) { - super(world); - this.config = BulletConfigSyncingUtil.pullConfig(config); - this.dataWatcher.updateObject(18, config); - shooter = entity; - - ItemStack gun = entity.getHeldItem(); - boolean offsetShot = true; - - if(gun != null && gun.getItem() instanceof ItemGunBase) { - GunConfiguration cfg = ((ItemGunBase) gun.getItem()).mainConfig; - - if(cfg != null && cfg.hasSights && entity.isSneaking()) { - offsetShot = false; - } - } - - this.setLocationAndAngles(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, entity.rotationYaw, entity.rotationPitch); - - if(offsetShot) { - double sideOffset = 0.16D; - - this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; - this.posY -= 0.1D; - this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; - } else { - this.posY -= 0.1D; - } - this.setPosition(this.posX, this.posY, this.posZ); - - this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); - this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); - - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - - this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread * (offsetShot ? 1F : 0.25F)); - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - } - - public EntityBulletBase(World world, int config, EntityLivingBase entity, EntityLivingBase target, float motion, float deviation) { - super(world); - - this.config = BulletConfigSyncingUtil.pullConfig(config); - this.dataWatcher.updateObject(18, config); - this.shooter = entity; - - this.renderDistanceWeight = 10.0D; - this.setSize(0.5F, 0.5F); - - this.posY = entity.posY + entity.getEyeHeight() - 0.10000000149011612D; - double d0 = target.posX - entity.posX; - double d1 = target.boundingBox.minY + target.height / 3.0F - this.posY; - double d2 = target.posZ - entity.posZ; - double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); - - if (d3 >= 1.0E-7D) { - float f2 = (float) (Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; - float f3 = (float) (-(Math.atan2(d1, d3) * 180.0D / Math.PI)); - double d4 = d0 / d3; - double d5 = d2 / d3; - this.setLocationAndAngles(entity.posX + d4, this.posY, entity.posZ + d5, f2, f3); - this.yOffset = 0.0F; - this.setThrowableHeading(d0, d1, d2, motion, deviation); - } - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - } - - public boolean attackEntityFrom(DamageSource source, float amount) { - - this.setBeenAttacked(); - - if(source instanceof EntityDamageSource) { - EntityDamageSource dmg = (EntityDamageSource) source; - - if(dmg.damageType.equals("player")) { - this.motionX *= -1.5; - this.motionY *= -1.5; - this.motionZ *= -1.5; - return true; - } - } - return false; - } - - @Override - public void setThrowableHeading(double moX, double moY, double moZ, float mult1, float mult2) { - - float f2 = MathHelper.sqrt_double(moX * moX + moY * moY + moZ * moZ); - moX /= f2; - moY /= f2; - moZ /= f2; - moX += this.rand.nextGaussian() * mult2; - moY += this.rand.nextGaussian() * mult2; - moZ += this.rand.nextGaussian() * mult2; - moX *= mult1; - moY *= mult1; - moZ *= mult1; - this.motionX = moX; - this.motionY = moY; - this.motionZ = moZ; - - float f3 = MathHelper.sqrt_double(moX * moX + moZ * moZ); - this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(moX, moZ) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(moY, f3) * 180.0D / Math.PI); - } - - @Override - @SideOnly(Side.CLIENT) - public void setPositionAndRotation2(double x, double y, double z, float r0, float r1, int i) { - this.setPosition(x, y, z); - this.setRotation(r0, r1); - } - - @Override - @SideOnly(Side.CLIENT) - public void setVelocity(double x, double y, double z) { - this.motionX = x; - this.motionY = y; - this.motionZ = z; - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { - float f = MathHelper.sqrt_double(x * x + z * z); - this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(x, z) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(y, f) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch; - this.prevRotationYaw = this.rotationYaw; - this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); - } - } - - @Override - protected void entityInit() { - //style - this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); - //trail - this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); - //bullet config sync - this.dataWatcher.addObject(18, Integer.valueOf((int) 0)); - } - - @Override - public void onUpdate() { - super.onUpdate(); - - if(config == null) - config = BulletConfigSyncingUtil.pullConfig(dataWatcher.getWatchableObjectInt(18)); - - if(config == null){ - this.setDead(); - return; - } - - if(this.config.blackPowder && this.ticksExisted == 1) { - - for(int i = 0; i < 15; i++) { - double mod = rand.nextDouble(); - this.worldObj.spawnParticle("smoke", this.posX, this.posY, this.posZ, - (this.motionX + rand.nextGaussian() * 0.05) * mod, - (this.motionY + rand.nextGaussian() * 0.05) * mod, - (this.motionZ + rand.nextGaussian() * 0.05) * mod); - } - - double mod = 0.5; - this.worldObj.spawnParticle("flame", this.posX + this.motionX * mod, this.posY + this.motionY * mod, this.posZ + this.motionZ * mod, 0, 0, 0); - } - - if(config.maxAge == 0) { - - if(this.config.bUpdate != null) - this.config.bUpdate.behaveUpdate(this); - - this.setDead(); - return; - } - - if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) { - float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); - } - - /// ZONE 1 START /// - //entity and block collision, plinking - - /// ZONE 2 START /// - //entity detection - Vec3 vecOrigin = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 vecDestination = Vec3.createVectorHelper(this.posX + this.motionX * this.config.velocity, this.posY + this.motionY * this.config.velocity, this.posZ + this.motionZ * this.config.velocity); - MovingObjectPosition movement = this.worldObj.func_147447_a(vecOrigin, vecDestination, false, true, false); - vecOrigin = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - vecDestination = Vec3.createVectorHelper(this.posX + this.motionX * this.config.velocity, this.posY + this.motionY * this.config.velocity, this.posZ + this.motionZ * this.config.velocity); - - MovingObjectPosition impact = null; - - Entity victim = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX * this.config.velocity, this.motionY * this.config.velocity, this.motionZ * this.config.velocity).expand(1.0D, 1.0D, 1.0D)); - - double d0 = 0.0D; - int i; - float f1; - - for (i = 0; i < list.size(); ++i) { - Entity entity1 = (Entity) list.get(i); - - if (entity1.canBeCollidedWith() && (entity1 != this.shooter)) { - f1 = 0.3F; - AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); - MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vecOrigin, vecDestination); - - if (movingobjectposition1 != null) { - double d1 = vecOrigin.distanceTo(movingobjectposition1.hitVec); - - if (d1 < d0 || d0 == 0.0D) { - victim = entity1; - impact = movingobjectposition1; - d0 = d1; - } - } - } - } - - if (victim != null) { - movement = new MovingObjectPosition(victim); - movement.hitVec.yCoord += victim.height * 0.5D; - } - - /// ZONE 2 END /// - - boolean didBounce = false; - - if(movement != null) { - - //handle entity collision - if(movement.entityHit != null) { - - DamageSource damagesource = this.config.getDamage(this, shooter); - - if(!worldObj.isRemote) { - if(!config.doesPenetrate) { - this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); - onEntityImpact(victim); - } else { - onEntityHurt(victim); - } - } - - float damage = rand.nextFloat() * (config.dmgMax - config.dmgMin) + config.dmgMin; - - if(overrideDamage != 0) - damage = overrideDamage; - - boolean headshot = false; - - if(victim instanceof EntityLivingBase && this.config.headshotMult > 1F) { - EntityLivingBase living = (EntityLivingBase) victim; - double head = living.height - living.getEyeHeight(); - - if(!!living.isEntityAlive() && impact.hitVec != null && impact.hitVec.yCoord > (living.posY + living.height - head * 2)) { - damage *= this.config.headshotMult; - headshot = true; - } - } - - if(victim != null && !victim.attackEntityFrom(damagesource, damage)) { - - try { - Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); - - float dmg = (float) damage + lastDamage.getFloat(victim); - - if(!victim.attackEntityFrom(damagesource, dmg)) { - headshot = false; - } - } catch (Exception x) { } - - } - - if(!worldObj.isRemote && headshot) { - if(victim instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) victim; - double head = living.height - living.getEyeHeight(); - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setInteger("count", 15); - data.setDouble("motion", 0.1D); - data.setString("mode", "blockdust"); - data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, living.posX, living.posY + living.height - head, living.posZ), new TargetPoint(living.dimension, living.posX, living.posY, living.posZ, 50)); - worldObj.playSoundEffect(victim.posX, victim.posY, victim.posZ, "mob.zombie.woodbreak", 1.0F, 0.95F + rand.nextFloat() * 0.2F); - } - } - - //handle block collision - } else if(worldObj.getBlock(movement.blockX, movement.blockY, movement.blockZ).getMaterial() != Material.air) { - - boolean hRic = rand.nextInt(100) < config.HBRC; - boolean doesRic = config.doesRicochet || hRic; - - if(!config.isSpectral && !doesRic) { - this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); - this.onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); - } - - if(doesRic) { - - Vec3 face = null; - - switch(movement.sideHit) { - case 0: - face = Vec3.createVectorHelper(0, -1, 0); break; - case 1: - face = Vec3.createVectorHelper(0, 1, 0); break; - case 2: - face = Vec3.createVectorHelper(0, 0, 1); break; - case 3: - face = Vec3.createVectorHelper(0, 0, -1); break; - case 4: - face = Vec3.createVectorHelper(-1, 0, 0); break; - case 5: - face = Vec3.createVectorHelper(1, 0, 0); break; - } - - if(face != null) { - - Vec3 vel = Vec3.createVectorHelper(motionX, motionY, motionZ); - vel.normalize(); - - boolean lRic = rand.nextInt(100) < config.LBRC; - double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90); - - if(hRic || (angle <= config.ricochetAngle && lRic)) { - switch(movement.sideHit) { - case 0: - case 1: - motionY *= -1; break; - case 2: - case 3: - motionZ *= -1; break; - case 4: - case 5: - motionX *= -1; break; - } - - if(config.plink == 1) - worldObj.playSoundAtEntity(this, "hbm:weapon.ricochet", 0.25F, 1.0F); - if(config.plink == 2) - worldObj.playSoundAtEntity(this, "hbm:weapon.gBounce", 1.0F, 1.0F); - - onRicochet(movement.blockX, movement.blockY, movement.blockZ); - - } else { - if(!worldObj.isRemote) { - this.setPosition(movement.hitVec.xCoord, movement.hitVec.yCoord, movement.hitVec.zCoord); - onBlockImpact(movement.blockX, movement.blockY, movement.blockZ); - } - } - - this.posX += (movement.hitVec.xCoord - this.posX) * 0.6; - this.posY += (movement.hitVec.yCoord - this.posY) * 0.6; - this.posZ += (movement.hitVec.zCoord - this.posZ) * 0.6; - - this.motionX *= config.bounceMod; - this.motionY *= config.bounceMod; - this.motionZ *= config.bounceMod; - - didBounce = true; - } - } - } - - } - - /// ZONE 1 END /// - - if(!didBounce) { - motionY -= config.gravity; - this.posX += this.motionX * this.config.velocity; - this.posY += this.motionY * this.config.velocity; - this.posZ += this.motionZ * this.config.velocity; - this.setPosition(this.posX, this.posY, this.posZ); - } - - /// SPECIAL UPDATE BEHAVIOR /// - if(this.config.bUpdate != null) - this.config.bUpdate.behaveUpdate(this); - - float f2; - this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); - f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); - for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f2) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) - { - ; - } - - while(this.rotationPitch - this.prevRotationPitch >= 180.0F) { - this.prevRotationPitch += 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw < -180.0F) { - this.prevRotationYaw -= 360.0F; - } - - while(this.rotationYaw - this.prevRotationYaw >= 180.0F) { - this.prevRotationYaw += 360.0F; - } - - if(this.ticksExisted > config.maxAge) - this.setDead(); - - if(worldObj.isRemote && !config.vPFX.isEmpty()) { - - double motion = Math.min(Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector(), 0.1); - - for(double d = 0; d < motion; d += 0.0625) { - - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "vanillaExt"); - nbt.setString("mode", config.vPFX); - nbt.setDouble("posX", (this.lastTickPosX - this.posX) * d + this.posX); - nbt.setDouble("posY", (this.lastTickPosY - this.posY) * d + this.posY); - nbt.setDouble("posZ", (this.lastTickPosZ - this.posZ) * d + this.posZ); - MainRegistry.proxy.effectNT(nbt); - } - } - - //this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; - //this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; - } - - //for when a bullet dies by hitting a block - private void onBlockImpact(int bX, int bY, int bZ) { - - if(config.bImpact != null) - config.bImpact.behaveBlockHit(this, bX, bY, bZ); - - if(!worldObj.isRemote && !config.liveAfterImpact) - this.setDead(); - - if(config.incendiary > 0 && !this.worldObj.isRemote) { - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX + 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX + 1, (int)posY, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX - 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX - 1, (int)posY, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY + 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY + 1, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY - 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY - 1, (int)posZ, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ + 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ + 1, Blocks.fire); - if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ - 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ - 1, Blocks.fire); - } - - if(config.emp > 0) - ExplosionNukeGeneric.empBlast(this.worldObj, (int)(this.posX + 0.5D), (int)(this.posY + 0.5D), (int)(this.posZ + 0.5D), config.emp); - - if(config.emp > 3) { - if (!this.worldObj.isRemote) { - - EntityEMPBlast cloud = new EntityEMPBlast(this.worldObj, config.emp); - cloud.posX = this.posX; - cloud.posY = this.posY + 0.5F; - cloud.posZ = this.posZ; - - this.worldObj.spawnEntityInWorld(cloud); - } - } - - if(config.jolt > 0 && !worldObj.isRemote) - ExplosionLarge.jolt(worldObj, posX, posY, posZ, config.jolt, 150, 0.25); - - if(config.explosive > 0 && !worldObj.isRemote) - worldObj.newExplosion(this, posX, posY, posZ, config.explosive, config.incendiary > 0, config.blockDamage); - - if(config.shrapnel > 0 && !worldObj.isRemote) - ExplosionLarge.spawnShrapnels(worldObj, posX, posY, posZ, config.shrapnel); - - if(config.chlorine > 0 && !worldObj.isRemote) { - ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, config.chlorine, 1.5, 0); - worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); - } - - if(config.rainbow > 0 && !worldObj.isRemote) { - EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, config.rainbow); - if(!ex.isDead) { - this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F); - worldObj.spawnEntityInWorld(ex); - - EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(this.worldObj, config.rainbow); - cloud.posX = this.posX; - cloud.posY = this.posY; - cloud.posZ = this.posZ; - this.worldObj.spawnEntityInWorld(cloud); - } - } - - if(config.nuke > 0 && !worldObj.isRemote) { - worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, config.nuke, posX, posY, posZ).mute()); - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "muke"); - if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) data.setBoolean("balefire", true); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); - worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); - } - - if(config.destroysBlocks && !worldObj.isRemote) { - if(worldObj.getBlock(bX, bY, bZ).getBlockHardness(worldObj, bX, bY, bZ) <= 120) - worldObj.func_147480_a(bX, bY, bZ, false); - } else if(config.doesBreakGlass && !worldObj.isRemote) { - if(worldObj.getBlock(bX, bY, bZ) == Blocks.glass || - worldObj.getBlock(bX, bY, bZ) == Blocks.glass_pane || - worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass || - worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass_pane) - worldObj.func_147480_a(bX, bY, bZ, false); - - if(worldObj.getBlock(bX, bY, bZ) == ModBlocks.red_barrel) - ((RedBarrel) ModBlocks.red_barrel).explode(worldObj, bX, bY, bZ); - } - } - - //for when a bullet dies by hitting a block - private void onRicochet(int bX, int bY, int bZ) { - - if(config.bRicochet != null) - config.bRicochet.behaveBlockRicochet(this, bX, bY, bZ); - } - - //for when a bullet dies by hitting an entity - private void onEntityImpact(Entity e) { - onEntityHurt(e); - onBlockImpact(-1, -1, -1); - - if(config.bHit != null) - config.bHit.behaveEntityHit(this, e); - } - - //for when a bullet hurts an entity, not necessarily dying - private void onEntityHurt(Entity e) { - - if(config.bHurt != null) - config.bHurt.behaveEntityHurt(this, e); - - if(config.incendiary > 0 && !worldObj.isRemote) { - e.setFire(config.incendiary); - } - - if(config.leadChance > 0 && !worldObj.isRemote && worldObj.rand.nextInt(100) < config.leadChance && e instanceof EntityLivingBase) { - ((EntityLivingBase)e).addPotionEffect(new PotionEffect(HbmPotion.lead.id, 10 * 20, 0)); - } - - if(e instanceof EntityLivingBase && config.effects != null && !config.effects.isEmpty() && !worldObj.isRemote) { - - for(PotionEffect effect : config.effects) { - ((EntityLivingBase)e).addPotionEffect(new PotionEffect(effect)); - } - } - - if(config.instakill && e instanceof EntityLivingBase && !worldObj.isRemote) { - - if(!(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)) - ((EntityLivingBase)e).setHealth(0.0F); - } - - if(config.caustic > 0 && e instanceof EntityPlayer){ - ArmorUtil.damageSuit((EntityPlayer)e, 0, config.caustic); - ArmorUtil.damageSuit((EntityPlayer)e, 1, config.caustic); - ArmorUtil.damageSuit((EntityPlayer)e, 2, config.caustic); - ArmorUtil.damageSuit((EntityPlayer)e, 3, config.caustic); - } - } - - @Override - protected void readEntityFromNBT(NBTTagCompound nbt) { - - int cfg = nbt.getInteger("config"); - this.config = BulletConfigSyncingUtil.pullConfig(cfg); - - if(this.config == null) { - this.setDead(); - return; - } - - this.overrideDamage = nbt.getFloat("damage"); - - this.dataWatcher.updateObject(18, cfg); - - this.dataWatcher.updateObject(16, (byte)this.config.style); - this.dataWatcher.updateObject(17, (byte)this.config.trail); - } - - @Override - protected void writeEntityToNBT(NBTTagCompound nbt) { - - nbt.setInteger("config", dataWatcher.getWatchableObjectInt(18)); - - nbt.setFloat("damage", this.overrideDamage); - } - -} diff --git a/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java new file mode 100644 index 000000000..65741dbd4 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBaseNT.java @@ -0,0 +1,587 @@ +package com.hbm.entity.projectile; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.RedBarrel; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.entity.effect.EntityEMPBlast; +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.logic.EntityNukeExplosionMK5; +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; +import com.hbm.util.ArmorUtil; +import com.hbm.util.BobMathUtil; +import com.hbm.util.Tuple.Pair; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.ReflectionHelper; +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/** + * MK2 which features several improvements: + * - uses generic throwable code, reducing boilerplate nonsense + * - uses approach-based interpolation, preventing desyncs and making movement silky-smooth + * - new adjustments in the base class allow for multiple MOP impacts per frame + * - also comes with tons of legacy code to ensure compat (sadly) + * @author hbm + */ +public class EntityBulletBaseNT extends EntityThrowableInterp implements IBulletBase { + + @Override public double prevX() { return prevRenderX; } + @Override public double prevY() { return prevRenderY; } + @Override public double prevZ() { return prevRenderZ; } + @Override public void prevX(double d) { prevRenderX = d; } + @Override public void prevY(double d) { prevRenderY = d; } + @Override public void prevZ(double d) { prevRenderZ = d; } + @Override public List> nodes() { return this.trailNodes; } + + private BulletConfiguration config; + public float overrideDamage; + + public double prevRenderX; + public double prevRenderY; + public double prevRenderZ; + public final List> trailNodes = new ArrayList(); + + public BulletConfiguration getConfig() { + return config; + } + + public EntityBulletBaseNT(World world) { + super(world); + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + } + + public EntityBulletBaseNT(World world, int config) { + super(world); + this.config = BulletConfigSyncingUtil.pullConfig(config); + this.dataWatcher.updateObject(18, config); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + this.renderDistanceWeight = 10.0D; + + if(this.config == null) { + this.setDead(); + return; + } + + this.setSize(0.5F, 0.5F); + } + + public EntityBulletBaseNT(World world, int config, EntityLivingBase entity) { + super(world); + this.config = BulletConfigSyncingUtil.pullConfig(config); + this.dataWatcher.updateObject(18, config); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + thrower = entity; + + ItemStack gun = entity.getHeldItem(); + boolean offsetShot = true; + + if(gun != null && gun.getItem() instanceof ItemGunBase) { + GunConfiguration cfg = ((ItemGunBase) gun.getItem()).mainConfig; + + if(cfg != null && cfg.hasSights && entity.isSneaking()) { + offsetShot = false; + } + } + + this.setLocationAndAngles(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ, entity.rotationYaw, entity.rotationPitch); + + if(offsetShot) { + double sideOffset = 0.16D; + + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + this.posY -= 0.1D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * sideOffset; + } else { + this.posY -= 0.1D; + } + this.setPosition(this.posX, this.posY, this.posZ); + + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, 1.0F, this.config.spread * (offsetShot ? 1F : 0.25F)); + } + + public EntityBulletBaseNT(World world, int config, EntityLivingBase entity, EntityLivingBase target, float motion, float deviation) { + super(world); + + this.config = BulletConfigSyncingUtil.pullConfig(config); + this.dataWatcher.updateObject(18, config); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + this.thrower = entity; + + this.renderDistanceWeight = 10.0D; + this.setSize(0.5F, 0.5F); + + this.posY = entity.posY + entity.getEyeHeight() - 0.10000000149011612D; + double d0 = target.posX - entity.posX; + double d1 = target.boundingBox.minY + target.height / 3.0F - this.posY; + double d2 = target.posZ - entity.posZ; + double d3 = MathHelper.sqrt_double(d0 * d0 + d2 * d2); + + if (d3 >= 1.0E-7D) { + float f2 = (float) (Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; + float f3 = (float) (-(Math.atan2(d1, d3) * 180.0D / Math.PI)); + double d4 = d0 / d3; + double d5 = d2 / d3; + this.setLocationAndAngles(entity.posX + d4, this.posY, entity.posZ + d5, f2, f3); + this.yOffset = 0.0F; + this.setThrowableHeading(d0, d1, d2, motion, deviation); + } + } + + @Override + protected void entityInit() { + //style + this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); + //trail + this.dataWatcher.addObject(17, Byte.valueOf((byte) 0)); + //bullet config sync + this.dataWatcher.addObject(18, Integer.valueOf((int) 0)); + } + + @Override + public void onUpdate() { + + if(config == null) config = BulletConfigSyncingUtil.pullConfig(dataWatcher.getWatchableObjectInt(18)); + + if(config == null){ + this.setDead(); + return; + } + + if(worldObj.isRemote && config.style == config.STYLE_TAU) { + if(trailNodes.isEmpty()) { + this.ignoreFrustumCheck = true; + trailNodes.add(new Pair(Vec3.createVectorHelper(-motionX * 2, -motionY * 2, -motionZ * 2), 0D)); + } else { + trailNodes.add(new Pair(Vec3.createVectorHelper(0, 0, 0), 1D)); + } + } + + if(worldObj.isRemote && this.config.blackPowder && this.ticksExisted == 1) { + + for(int i = 0; i < 15; i++) { + double mod = rand.nextDouble(); + this.worldObj.spawnParticle("smoke", this.posX, this.posY, this.posZ, + (this.motionX + rand.nextGaussian() * 0.05) * mod, + (this.motionY + rand.nextGaussian() * 0.05) * mod, + (this.motionZ + rand.nextGaussian() * 0.05) * mod); + } + + double mod = 0.5; + this.worldObj.spawnParticle("flame", this.posX + this.motionX * mod, this.posY + this.motionY * mod, this.posZ + this.motionZ * mod, 0, 0, 0); + } + + if(!worldObj.isRemote) { + + if(config.maxAge == 0) { + if(this.config.bntUpdate != null) this.config.bntUpdate.behaveUpdate(this); + this.setDead(); + return; + } + + if(this.config.bntUpdate != null) this.config.bntUpdate.behaveUpdate(this); + + if(this.ticksExisted > config.maxAge) this.setDead(); + } + + this.prevPosX = posX; + this.prevPosY = posY; + this.prevPosZ = posZ; + + super.onUpdate(); + + if(worldObj.isRemote && !config.vPFX.isEmpty()) { + + Vec3 vec = Vec3.createVectorHelper(posX - prevPosX, posY - prevPosY, posZ - prevPosZ); + double motion = Math.max(vec.lengthVector(), 0.1); + vec = vec.normalize(); + + for(double d = 0; d < motion; d += 0.5) { + + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vanillaExt"); + nbt.setString("mode", config.vPFX); + nbt.setDouble("posX", this.posX - vec.xCoord * d); + nbt.setDouble("posY", this.posY - vec.yCoord * d); + nbt.setDouble("posZ", this.posZ - vec.zCoord * d); + MainRegistry.proxy.effectNT(nbt); + } + } + } + + @Override + protected void onImpact(MovingObjectPosition mop) { + + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { + + boolean hRic = rand.nextInt(100) < config.HBRC; + boolean doesRic = config.doesRicochet || hRic; + + if(!config.isSpectral && !doesRic) { + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + this.onBlockImpact(mop.blockX, mop.blockY, mop.blockZ); + } + + if(doesRic) { + + Vec3 face = null; + + switch(mop.sideHit) { + case 0: face = Vec3.createVectorHelper(0, -1, 0); break; + case 1: face = Vec3.createVectorHelper(0, 1, 0); break; + case 2: face = Vec3.createVectorHelper(0, 0, 1); break; + case 3: face = Vec3.createVectorHelper(0, 0, -1); break; + case 4: face = Vec3.createVectorHelper(-1, 0, 0); break; + case 5: face = Vec3.createVectorHelper(1, 0, 0); break; + } + + if(face != null) { + + Vec3 vel = Vec3.createVectorHelper(motionX, motionY, motionZ); + vel.normalize(); + + boolean lRic = rand.nextInt(100) < config.LBRC; + double angle = Math.abs(BobMathUtil.getCrossAngle(vel, face) - 90); + + if(hRic || (angle <= config.ricochetAngle && lRic)) { + switch(mop.sideHit) { + case 0: + case 1: motionY *= -1; break; + case 2: + case 3: motionZ *= -1; break; + case 4: + case 5: motionX *= -1; break; + } + + if(config.plink == 1) + worldObj.playSoundAtEntity(this, "hbm:weapon.ricochet", 0.25F, 1.0F); + if(config.plink == 2) + worldObj.playSoundAtEntity(this, "hbm:weapon.gBounce", 1.0F, 1.0F); + + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + onRicochet(mop.blockX, mop.blockY, mop.blockZ); + + //worldObj.setBlock((int) Math.floor(posX), (int) Math.floor(posY), (int) Math.floor(posZ), Blocks.dirt); + + } else { + if(!worldObj.isRemote) { + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + onBlockImpact(mop.blockX, mop.blockY, mop.blockZ); + } + } + + /*this.posX += (mop.hitVec.xCoord - this.posX) * 0.6; + this.posY += (mop.hitVec.yCoord - this.posY) * 0.6; + this.posZ += (mop.hitVec.zCoord - this.posZ) * 0.6;*/ + + this.motionX *= config.bounceMod; + this.motionY *= config.bounceMod; + this.motionZ *= config.bounceMod; + } + } + + } + + if(mop.entityHit != null) { + + DamageSource damagesource = this.config.getDamage(this, this.thrower); + Entity victim = mop.entityHit; + + if(!config.doesPenetrate) { + this.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); + onEntityImpact(victim); + } else { + onEntityHurt(victim); + } + + float damage = rand.nextFloat() * (config.dmgMax - config.dmgMin) + config.dmgMin; + + if(overrideDamage != 0) + damage = overrideDamage; + + boolean headshot = false; + + if(victim instanceof EntityLivingBase && this.config.headshotMult > 1F) { + EntityLivingBase living = (EntityLivingBase) victim; + double head = living.height - living.getEyeHeight(); + + if(!!living.isEntityAlive() && mop.hitVec != null && mop.hitVec.yCoord > (living.posY + living.height - head * 2)) { + damage *= this.config.headshotMult; + headshot = true; + } + } + + if(victim != null && !victim.attackEntityFrom(damagesource, damage)) { + + try { + Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); + float dmg = (float) damage + lastDamage.getFloat(victim); + if(!victim.attackEntityFrom(damagesource, dmg)) headshot = false; + } catch (Exception x) { } + + } + + if(!worldObj.isRemote && headshot) { + if(victim instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) victim; + double head = living.height - living.getEyeHeight(); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setInteger("count", 15); + data.setDouble("motion", 0.1D); + data.setString("mode", "blockdust"); + data.setInteger("block", Block.getIdFromBlock(Blocks.redstone_block)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, living.posX, living.posY + living.height - head, living.posZ), new TargetPoint(living.dimension, living.posX, living.posY, living.posZ, 50)); + worldObj.playSoundEffect(victim.posX, victim.posY, victim.posZ, "mob.zombie.woodbreak", 1.0F, 0.95F + rand.nextFloat() * 0.2F); + } + } + } + } + + //for when a bullet dies by hitting a block + private void onBlockImpact(int bX, int bY, int bZ) { + + if(config.bntImpact != null) + config.bntImpact.behaveBlockHit(this, bX, bY, bZ); + + if(!worldObj.isRemote) { + if(!config.liveAfterImpact && !config.isSpectral && bY > -1) this.setDead(); + if(!config.doesPenetrate && bY == -1) this.setDead(); + } + + if(config.incendiary > 0 && !this.worldObj.isRemote) { + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX + 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX + 1, (int)posY, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX - 1, (int)posY, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX - 1, (int)posY, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY + 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY + 1, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY - 1, (int)posZ) == Blocks.air) worldObj.setBlock((int)posX, (int)posY - 1, (int)posZ, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ + 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ + 1, Blocks.fire); + if(worldObj.rand.nextInt(3) == 0 && worldObj.getBlock((int)posX, (int)posY, (int)posZ - 1) == Blocks.air) worldObj.setBlock((int)posX, (int)posY, (int)posZ - 1, Blocks.fire); + } + + if(config.emp > 0) + ExplosionNukeGeneric.empBlast(this.worldObj, (int)(this.posX + 0.5D), (int)(this.posY + 0.5D), (int)(this.posZ + 0.5D), config.emp); + + if(config.emp > 3) { + if (!this.worldObj.isRemote) { + + EntityEMPBlast cloud = new EntityEMPBlast(this.worldObj, config.emp); + cloud.posX = this.posX; + cloud.posY = this.posY + 0.5F; + cloud.posZ = this.posZ; + + this.worldObj.spawnEntityInWorld(cloud); + } + } + + if(config.jolt > 0 && !worldObj.isRemote) + ExplosionLarge.jolt(worldObj, posX, posY, posZ, config.jolt, 150, 0.25); + + if(config.explosive > 0 && !worldObj.isRemote) + worldObj.newExplosion(this, posX, posY, posZ, config.explosive, config.incendiary > 0, config.blockDamage); + + if(config.shrapnel > 0 && !worldObj.isRemote) + ExplosionLarge.spawnShrapnels(worldObj, posX, posY, posZ, config.shrapnel); + + if(config.chlorine > 0 && !worldObj.isRemote) { + ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, config.chlorine, 1.5, 0); + worldObj.playSoundEffect((double)(posX + 0.5F), (double)(posY + 0.5F), (double)(posZ + 0.5F), "random.fizz", 5.0F, 2.6F + (rand.nextFloat() - rand.nextFloat()) * 0.8F); + } + + if(config.rainbow > 0 && !worldObj.isRemote) { + EntityNukeExplosionMK3 ex = EntityNukeExplosionMK3.statFacFleija(worldObj, posX, posY, posZ, config.rainbow); + if(!ex.isDead) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F); + worldObj.spawnEntityInWorld(ex); + + EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(this.worldObj, config.rainbow); + cloud.posX = this.posX; + cloud.posY = this.posY; + cloud.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(cloud); + } + } + + if(config.nuke > 0 && !worldObj.isRemote) { + worldObj.spawnEntityInWorld(EntityNukeExplosionMK5.statFac(worldObj, config.nuke, posX, posY, posZ).mute()); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "muke"); + if(MainRegistry.polaroidID == 11 || rand.nextInt(100) == 0) data.setBoolean("balefire", true); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, posX, posY + 0.5, posZ), new TargetPoint(dimension, posX, posY, posZ, 250)); + worldObj.playSoundEffect(posX, posY, posZ, "hbm:weapon.mukeExplosion", 15.0F, 1.0F); + } + + if(config.destroysBlocks && !worldObj.isRemote) { + if(worldObj.getBlock(bX, bY, bZ).getBlockHardness(worldObj, bX, bY, bZ) <= 120) + worldObj.func_147480_a(bX, bY, bZ, false); + } else if(config.doesBreakGlass && !worldObj.isRemote) { + if(worldObj.getBlock(bX, bY, bZ) == Blocks.glass || + worldObj.getBlock(bX, bY, bZ) == Blocks.glass_pane || + worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass || + worldObj.getBlock(bX, bY, bZ) == Blocks.stained_glass_pane) + worldObj.func_147480_a(bX, bY, bZ, false); + + if(worldObj.getBlock(bX, bY, bZ) == ModBlocks.red_barrel) + ((RedBarrel) ModBlocks.red_barrel).explode(worldObj, bX, bY, bZ); + } + } + + //for when a bullet dies by hitting a block + private void onRicochet(int bX, int bY, int bZ) { + + if(config.bntRicochet != null) + config.bntRicochet.behaveBlockRicochet(this, bX, bY, bZ); + } + + //for when a bullet dies by hitting an entity + private void onEntityImpact(Entity e) { + onEntityHurt(e); + onBlockImpact(-1, -1, -1); + + if(config.bntHit != null) + config.bntHit.behaveEntityHit(this, e); + + //this.setDead(); + } + + //for when a bullet hurts an entity, not necessarily dying + private void onEntityHurt(Entity e) { + + if(config.bntHurt != null) + config.bntHurt.behaveEntityHurt(this, e); + + if(config.incendiary > 0 && !worldObj.isRemote) { + e.setFire(config.incendiary); + } + + if(config.leadChance > 0 && !worldObj.isRemote && worldObj.rand.nextInt(100) < config.leadChance && e instanceof EntityLivingBase) { + ((EntityLivingBase)e).addPotionEffect(new PotionEffect(HbmPotion.lead.id, 10 * 20, 0)); + } + + if(e instanceof EntityLivingBase && config.effects != null && !config.effects.isEmpty() && !worldObj.isRemote) { + + for(PotionEffect effect : config.effects) { + ((EntityLivingBase)e).addPotionEffect(new PotionEffect(effect)); + } + } + + if(config.instakill && e instanceof EntityLivingBase && !worldObj.isRemote) { + + if(!(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode)) + ((EntityLivingBase)e).setHealth(0.0F); + } + + if(config.caustic > 0 && e instanceof EntityPlayer){ + ArmorUtil.damageSuit((EntityPlayer)e, 0, config.caustic); + ArmorUtil.damageSuit((EntityPlayer)e, 1, config.caustic); + ArmorUtil.damageSuit((EntityPlayer)e, 2, config.caustic); + ArmorUtil.damageSuit((EntityPlayer)e, 3, config.caustic); + } + } + + @Override + public boolean doesPenetrate() { + return this.config.doesPenetrate; + } + + @Override + public boolean isSpectral() { + return this.config.isSpectral; + } + + @Override + public int selfDamageDelay() { + return this.config.selfDamageDelay; + } + + @Override + protected double headingForceMult() { + return 1D; + } + + @Override + public double getGravityVelocity() { + return this.config.gravity; + } + + @Override + protected double motionMult() { + return this.config.velocity; + } + + @Override + protected float getAirDrag() { + return 1F; + } + + @Override + protected float getWaterDrag() { + return 1F; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + int cfg = nbt.getInteger("config"); + this.config = BulletConfigSyncingUtil.pullConfig(cfg); + this.dataWatcher.updateObject(16, (byte)this.config.style); + this.dataWatcher.updateObject(17, (byte)this.config.trail); + + if(this.config == null) { + this.setDead(); + return; + } + + this.overrideDamage = nbt.getFloat("damage"); + this.dataWatcher.updateObject(18, cfg); + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("config", dataWatcher.getWatchableObjectInt(18)); + nbt.setFloat("damage", this.overrideDamage); + } + + public static interface IBulletHurtBehaviorNT { public void behaveEntityHurt(EntityBulletBaseNT bullet, Entity hit); } + public static interface IBulletHitBehaviorNT { public void behaveEntityHit(EntityBulletBaseNT bullet, Entity hit); } + public static interface IBulletRicochetBehaviorNT { public void behaveBlockRicochet(EntityBulletBaseNT bullet, int x, int y, int z); } + public static interface IBulletImpactBehaviorNT { public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z); } + public static interface IBulletUpdateBehaviorNT { public void behaveUpdate(EntityBulletBaseNT bullet); } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index 63ce539a4..3eb72cddc 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -12,6 +12,7 @@ import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.inventory.fluid.trait.FT_Corrosive; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FT_Poison; +import com.hbm.inventory.fluid.trait.FT_Toxin; import com.hbm.inventory.fluid.trait.FT_VentRadiation; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; @@ -58,10 +59,6 @@ public class EntityChemical extends EntityThrowableNT { * if CORROSIVE: apply extra acid damage, poison effect as well as armor degradation */ - public double lastClientPosX = -1; - public double lastClientPosY = -1; - public double lastClientPosZ = -1; - public EntityChemical(World world) { super(world); this.ignoreFrustumCheck = true; @@ -178,7 +175,7 @@ public class EntityChemical extends EntityThrowableNT { } if(type.temperature >= 100) { - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_boil), 5F + (type.temperature - 100) * 0.02F); //5 damage at 100°C with one extra damage every 50°C + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_boil), 0.25F + (type.temperature - 100) * 0.001F); //.25 damage at 100°C with one extra damage every 1000°C if(type.temperature >= 500) { e.setFire(10); //afterburn for 10 seconds @@ -188,9 +185,15 @@ public class EntityChemical extends EntityThrowableNT { if(style == ChemicalStyle.LIQUID || style == ChemicalStyle.GAS) { if(type.temperature < -20) { if(living != null) { //only living things are affected - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_cryolator), 5F + (type.temperature + 20) * -0.05F); //5 damage at -20°C with one extra damage every -20°C - living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); - living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); + + HbmLivingProps.setTemperature(living, HbmLivingProps.getTemperature(living) + type.temperature / 20); + + if(HbmLivingProps.isFrozen(living)) { + if(!EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_cryolator), living.getMaxHealth() * -type.temperature / 273 * 0.01F)) + e.attackEntityFrom(getDamage(ModDamageSource.s_cryolator), living.getMaxHealth() * -type.temperature / 273); + living.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 100, 2)); + living.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 100, 4)); + } } } @@ -232,11 +235,11 @@ public class EntityChemical extends EntityThrowableNT { if(type.hasTrait(FT_Corrosive.class)) { FT_Corrosive trait = type.getTrait(FT_Corrosive.class); - EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_acid), trait.getRating() / 20F); + EntityDamageUtil.attackEntityFromIgnoreIFrame(e, getDamage(ModDamageSource.s_acid), trait.getRating() / 50F); if(living != null) { for(int i = 0; i < 4; i++) { - ArmorUtil.damageSuit(living, i, trait.getRating() / 5); + ArmorUtil.damageSuit(living, i, (int) Math.ceil(trait.getRating() / 50)); } } } @@ -257,6 +260,14 @@ public class EntityChemical extends EntityThrowableNT { } } + if(type.hasTrait(FT_Toxin.class)) { + FT_Toxin trait = type.getTrait(FT_Toxin.class); + + if(living != null) { + trait.affect(living, intensity); + } + } + if(type == Fluids.XPJUICE) { if(e instanceof EntityPlayer) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java b/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java index 1c0b0f27c..e9c5dc228 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityCombineBallNT.java @@ -3,7 +3,7 @@ package com.hbm.entity.projectile; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityCombineBallNT extends EntityBulletBase { +public class EntityCombineBallNT extends EntityBulletBaseNT { public EntityCombineBallNT(World world, int config, EntityLivingBase shooter) { super(world, config, shooter); @@ -13,6 +13,6 @@ public class EntityCombineBallNT extends EntityBulletBase { @Override public void setDead() { super.setDead(); - worldObj.createExplosion(shooter, posX, posY, posZ, 2, false); + worldObj.createExplosion(this.getThrower(), posX, posY, posZ, 2, false); } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java index 9638ae585..3fea4e2e3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityMeteor.java +++ b/src/main/java/com/hbm/entity/projectile/EntityMeteor.java @@ -51,7 +51,7 @@ public class EntityMeteor extends Entity { ExplosionLarge.spawnParticles(worldObj, posX, posY, posZ - 5, 75); } - (new Meteorite()).generate(worldObj, rand, (int) Math.round(this.posX - 0.5D), (int) Math.round(this.posY - 0.5D), (int) Math.round(this.posZ - 0.5D), safe, true); + (new Meteorite()).generate(worldObj, rand, (int) Math.round(this.posX - 0.5D), (int) Math.round(this.posY - 0.5D), (int) Math.round(this.posZ - 0.5D), safe, true, true); this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "hbm:entity.oldExplosion", 10000.0F, 0.5F + this.rand.nextFloat() * 0.1F); this.setDead(); } @@ -74,7 +74,7 @@ public class EntityMeteor extends Entity { @Override @SideOnly(Side.CLIENT) public boolean isInRangeToRenderDist(double distance) { - return distance < 500000; + return true; } @Override diff --git a/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java b/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java index c92fb2ae6..0bc62c9e3 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRBMKDebris.java @@ -68,30 +68,6 @@ public class EntityRBMKDebris extends EntityDebrisBase { hasSizeSet = true; } - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - this.motionY -= 0.04D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - - this.lastRot = this.rot; - - if(this.onGround) { - this.motionX *= 0.85D; - this.motionZ *= 0.85D; - this.motionY *= -0.5D; - - } else { - - this.rot += 10F; - - if(rot >= 360F) { - this.rot -= 360F; - this.lastRot -= 360F; - } - } - if(!worldObj.isRemote) { if(this.getType() == DebrisType.LID && motionY > 0) { @@ -133,6 +109,30 @@ public class EntityRBMKDebris extends EntityDebrisBase { if(!RBMKDials.getPermaScrap(worldObj) && this.ticksExisted > getLifetime() + this.getEntityId() % 50) this.setDead(); } + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.motionY -= 0.04D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + this.lastRot = this.rot; + + if(this.onGround) { + this.motionX *= 0.85D; + this.motionZ *= 0.85D; + this.motionY *= -0.5D; + + } else { + + this.rot += 10F; + + if(rot >= 360F) { + this.rot -= 360F; + this.lastRot -= 360F; + } + } } @Override diff --git a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java index 0d07ee058..c7cc1a674 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java +++ b/src/main/java/com/hbm/entity/projectile/EntityShrapnel.java @@ -7,6 +7,7 @@ import com.hbm.lib.ModDamageSource; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -80,10 +81,15 @@ public class EntityShrapnel extends EntityThrowable { } } + } else if(this.dataWatcher.getWatchableObjectByte(16) == 3) { + + if(worldObj.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ).isReplaceable(worldObj, mop.blockX, mop.blockY + 1, mop.blockZ)) { + worldObj.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.mud_block); + } + } else { - for(int i = 0; i < 5; i++) - worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0); + for(int i = 0; i < 5; i++) worldObj.spawnParticle("lava", posX, posY, posZ, 0.0, 0.0, 0.0); } worldObj.playSoundEffect(posX, posY, posZ, "random.fizz", 1.0F, 1.0F); @@ -97,4 +103,19 @@ public class EntityShrapnel extends EntityThrowable { public void setVolcano(boolean b) { this.dataWatcher.updateObject(16, (byte) (b ? 2 : 0)); } + + public void setWatz(boolean b) { + this.dataWatcher.updateObject(16, (byte) (b ? 3 : 0)); + } + + @Override + public boolean writeToNBTOptional(NBTTagCompound nbt) { + return false; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.setDead(); + } } diff --git a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java index 608f999d5..fbd99c23c 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java +++ b/src/main/java/com/hbm/entity/projectile/EntityThrowableNT.java @@ -81,19 +81,27 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { return 1.5F; } + protected double headingForceMult() { + return 0.0075D; + } + protected float throwAngle() { return 0.0F; } + protected double motionMult() { + return 1.0D; + } + @Override public void setThrowableHeading(double motionX, double motionY, double motionZ, float velocity, float inaccuracy) { float throwLen = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ); motionX /= (double) throwLen; motionY /= (double) throwLen; motionZ /= (double) throwLen; - motionX += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; - motionY += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; - motionZ += this.rand.nextGaussian() * 0.0075D * (double) inaccuracy; + motionX += this.rand.nextGaussian() * headingForceMult() * (double) inaccuracy; + motionY += this.rand.nextGaussian() * headingForceMult() * (double) inaccuracy; + motionZ += this.rand.nextGaussian() * headingForceMult() * (double) inaccuracy; motionX *= (double) velocity; motionY *= (double) velocity; motionZ *= (double) velocity; @@ -155,46 +163,61 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { ++this.ticksInAir; Vec3 pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - Vec3 nextPos = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); - MovingObjectPosition mop = this.worldObj.rayTraceBlocks(pos, nextPos); + Vec3 nextPos = Vec3.createVectorHelper(this.posX + this.motionX * motionMult(), this.posY + this.motionY * motionMult(), this.posZ + this.motionZ * motionMult()); + MovingObjectPosition mop = null; + if(!this.isSpectral()) mop = this.worldObj.rayTraceBlocks(pos, nextPos); pos = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); - nextPos = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + nextPos = Vec3.createVectorHelper(this.posX + this.motionX * motionMult(), this.posY + this.motionY * motionMult(), this.posZ + this.motionZ * motionMult()); if(mop != null) { nextPos = Vec3.createVectorHelper(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); } - + if(!this.worldObj.isRemote) { Entity hitEntity = null; - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX * motionMult(), this.motionY * motionMult(), this.motionZ * motionMult()).expand(1.0D, 1.0D, 1.0D)); double nearest = 0.0D; EntityLivingBase thrower = this.getThrower(); + MovingObjectPosition nonPenImpact = null; for(int j = 0; j < list.size(); ++j) { Entity entity = (Entity) list.get(j); - - if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= 5)) { + + if(entity.canBeCollidedWith() && (entity != thrower || this.ticksInAir >= this.selfDamageDelay())) { double hitbox = 0.3F; AxisAlignedBB aabb = entity.boundingBox.expand(hitbox, hitbox, hitbox); MovingObjectPosition hitMop = aabb.calculateIntercept(pos, nextPos); if(hitMop != null) { - double dist = pos.distanceTo(hitMop.hitVec); - - if(dist < nearest || nearest == 0.0D) { - hitEntity = entity; - nearest = dist; + + // if penetration is enabled, run impact for all intersecting entities + if(this.doesPenetrate()) { + this.onImpact(new MovingObjectPosition(entity, hitMop.hitVec)); + } else { + + double dist = pos.distanceTo(hitMop.hitVec); + + if(dist < nearest || nearest == 0.0D) { + hitEntity = entity; + nearest = dist; + nonPenImpact = hitMop; + } } } } } - if(hitEntity != null) { - mop = new MovingObjectPosition(hitEntity); + // if not, only run it for the closest MOP + if(!this.doesPenetrate() && hitEntity != null) { + mop = new MovingObjectPosition(hitEntity, nonPenImpact.hitVec); } } + this.posX += this.motionX * motionMult(); + this.posY += this.motionY * motionMult(); + this.posZ += this.motionZ * motionMult(); + if(mop != null) { if(mop.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK && this.worldObj.getBlock(mop.blockX, mop.blockY, mop.blockZ) == Blocks.portal) { this.setInPortal(); @@ -202,10 +225,6 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { this.onImpact(mop); } } - - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; float hyp = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); this.rotationYaw = (float) (Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); @@ -249,8 +268,16 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { } } - public boolean alowMultiImpact() { - return false; //TODO + public boolean doesPenetrate() { + return false; + } + + public boolean isSpectral() { + return false; + } + + public int selfDamageDelay() { + return 5; } public void getStuck(int x, int y, int z) { @@ -306,6 +333,10 @@ public abstract class EntityThrowableNT extends Entity implements IProjectile { public float getShadowSize() { return 0.0F; } + + public void setThrower(EntityLivingBase thrower) { + this.thrower = thrower; + } public EntityLivingBase getThrower() { if(this.thrower == null && this.throwerName != null && this.throwerName.length() > 0) { diff --git a/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java b/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java index d8501c733..4eed4570b 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java +++ b/src/main/java/com/hbm/entity/projectile/EntityWaterSplash.java @@ -9,24 +9,21 @@ import net.minecraft.world.World; public class EntityWaterSplash extends EntityThrowable { - public EntityWaterSplash(World p_i1773_1_) - { - super(p_i1773_1_); - } + public EntityWaterSplash(World p_i1773_1_) { + super(p_i1773_1_); + } - public EntityWaterSplash(World p_i1774_1_, EntityLivingBase p_i1774_2_) - { - super(p_i1774_1_, p_i1774_2_); - } + public EntityWaterSplash(World p_i1774_1_, EntityLivingBase p_i1774_2_) { + super(p_i1774_1_, p_i1774_2_); + } - @Override + @Override public void entityInit() { - } + } - public EntityWaterSplash(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) - { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } + public EntityWaterSplash(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } @Override public void onUpdate() { @@ -51,9 +48,12 @@ public class EntityWaterSplash extends EntityThrowable { } } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + + @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); this.setDead(); diff --git a/src/main/java/com/hbm/entity/projectile/IBulletBase.java b/src/main/java/com/hbm/entity/projectile/IBulletBase.java new file mode 100644 index 000000000..635ce9a09 --- /dev/null +++ b/src/main/java/com/hbm/entity/projectile/IBulletBase.java @@ -0,0 +1,11 @@ +package com.hbm.entity.projectile; + +import java.util.List; +import com.hbm.util.Tuple.Pair; +import net.minecraft.util.Vec3; + +public interface IBulletBase { + public double prevX(); public double prevY(); public double prevZ(); + public void prevX(double d); public void prevY(double d); public void prevZ(double d); + public List> nodes(); +} diff --git a/src/main/java/com/hbm/entity/qic/EntitySPV.java b/src/main/java/com/hbm/entity/qic/EntitySPV.java deleted file mode 100644 index e82fa07d2..000000000 --- a/src/main/java/com/hbm/entity/qic/EntitySPV.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.hbm.entity.qic; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -public class EntitySPV extends Entity { - - public EntitySPV(World p_i1582_1_) { - super(p_i1582_1_); - this.setSize(0.5F, 0.5F); - } - - @Override - protected void entityInit() { } - - @Override - protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } - - @Override - protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } - - @Override - public void onUpdate() { - - if(this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase && ((EntityLivingBase)this.riddenByEntity).moveForward != 0) { - EntityLivingBase riding = (EntityLivingBase) this.riddenByEntity; - Vec3 vec = riding.getLookVec(); - this.motionX = vec.xCoord * riding.moveForward * 0.25D; - this.motionY = vec.yCoord * riding.moveForward * 0.25D; - this.motionZ = vec.zCoord * riding.moveForward * 0.25D; - - } else if(this.riddenByEntity == null) { - this.motionY -= 0.01D; - - if(this.onGround) { - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - } - - } else { - this.motionX = 0; - this.motionY = 0; - this.motionZ = 0; - } - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - //this.setPositionAndRotation(this.posX + motionX, this.posY + motionY, this.posZ + motionZ, this.rotationYaw, this.rotationPitch); - - super.onUpdate(); - } - - @Override - public boolean canBeCollidedWith() { - return true; - } - - @Override - public boolean interactFirst(EntityPlayer player) { - if(super.interactFirst(player)) { - return true; - } else if(!this.worldObj.isRemote && (this.riddenByEntity == null || this.riddenByEntity == player)) { - player.mountEntity(this); - return true; - } else { - return false; - } - } -} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarBase.java b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java new file mode 100644 index 000000000..f4a301914 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -0,0 +1,891 @@ +package com.hbm.entity.train; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.items.ModItems; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.BlockPos; + +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.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; +import net.minecraftforge.client.event.RenderGameOverlayEvent.Pre; + +public abstract class EntityRailCarBase extends Entity implements ILookOverlay { + + public LogicalTrainUnit ltu; + public int ltuIndex = 0; + public boolean isOnRail = true; + private int turnProgress; + /* Clientside position that should be approached with smooth interpolation */ + private double trainX; + private double trainY; + private double trainZ; + private double trainYaw; + private double trainPitch; + private float movementYaw; + private float movementPitch; + @SideOnly(Side.CLIENT) private double velocityX; + @SideOnly(Side.CLIENT) private double velocityY; + @SideOnly(Side.CLIENT) private double velocityZ; + /* "Actual" position with offset directly between the front and back pos, won't match the standard position on curves */ + public double lastRenderX; + public double lastRenderY; + public double lastRenderZ; + public double renderX; + public double renderY; + public double renderZ; + + public EntityRailCarBase coupledFront; + public EntityRailCarBase coupledBack; + + public boolean initDummies = false; + public BoundingBoxDummyEntity[] dummies = new BoundingBoxDummyEntity[0]; + + public EntityRailCarBase(World world) { + super(world); + } + + @Override protected void entityInit() { } + @Override protected void readEntityFromNBT(NBTTagCompound nbt) { } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + + @Override + public boolean interactFirst(EntityPlayer player) { + + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.coupling_tool) { + + List intersecting = worldObj.getEntitiesWithinAABB(EntityRailCarBase.class, this.boundingBox.expand(2D, 0D, 2D)); + + for(EntityRailCarBase neighbor : intersecting) { + if(neighbor == this) continue; + if(neighbor.getGauge() != this.getGauge()) continue; + + TrainCoupling closestOwnCoupling = null; + TrainCoupling closestNeighborCoupling = null; + double closestDist = Double.POSITIVE_INFINITY; + + for(TrainCoupling ownCoupling : TrainCoupling.values()) { + for(TrainCoupling neighborCoupling : TrainCoupling.values()) { + Vec3 ownPos = this.getCouplingPos(ownCoupling); + Vec3 neighborPos = neighbor.getCouplingPos(neighborCoupling); + if(ownPos != null && neighborPos != null) { + Vec3 delta = Vec3.createVectorHelper(ownPos.xCoord - neighborPos.xCoord, ownPos.yCoord - neighborPos.yCoord, ownPos.zCoord - neighborPos.zCoord); + double length = delta.lengthVector(); + + if(length < 1 && length < closestDist) { + closestDist = length; + closestOwnCoupling = ownCoupling; + closestNeighborCoupling = neighborCoupling; + } + } + } + } + + if(closestOwnCoupling != null && closestNeighborCoupling != null) { + if(this.getCoupledTo(closestOwnCoupling) != null) continue; + if(neighbor.getCoupledTo(closestNeighborCoupling) != null) continue; + this.couple(closestOwnCoupling, neighbor); + neighbor.couple(closestNeighborCoupling, this); + if(this.ltu != null) this.ltu.dissolveTrain(); + if(neighbor.ltu != null) neighbor.ltu.dissolveTrain(); + player.swingItem(); + + player.addChatComponentMessage(new ChatComponentText("Coupled " + this.hashCode() + " (" + closestOwnCoupling.name() + ") to " + neighbor.hashCode() + " (" + closestNeighborCoupling.name() + ")")); + + return true; + } + } + } + + //DEBUG + if(this.ltu != null) { + + String id = Integer.toHexString(ltu.hashCode()); + + for(EntityRailCarBase train : ltu.trains) { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "debug"); + data.setInteger("color", 0x0000ff); + data.setFloat("scale", 1.5F); + data.setString("text", id + " (#" + train.ltuIndex + ")"); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, train.posX, train.posY + 1, train.posZ), new TargetPoint(this.dimension, train.posX, train.posY + 1, train.posZ, 50)); + } + } + + return false; + } + + @Override + public void onUpdate() { + + if(this.worldObj.isRemote) { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + double yaw = MathHelper.wrapAngleTo180_double(this.trainYaw - (double) this.rotationYaw); + this.rotationYaw = (float) ((double) this.rotationYaw + yaw / (double) this.turnProgress); + this.rotationPitch = (float) ((double) this.rotationPitch + (this.trainPitch - (double) this.rotationPitch) / (double) this.turnProgress); + --this.turnProgress; + this.setPosition(x, y, z); + this.setRotation(this.rotationYaw, this.rotationPitch); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + this.setRotation(this.rotationYaw, this.rotationPitch); + } + + BlockPos anchor = this.getCurrentAnchorPos(); + Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan(), new MoveContext(RailCheckType.FRONT, this.getCollisionSpan() - this.getLengthSpan())); + Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan(), new MoveContext(RailCheckType.BACK, this.getCollisionSpan() - this.getLengthSpan())); + + this.lastRenderX = this.renderX; + this.lastRenderY = this.renderY; + this.lastRenderZ = this.renderZ; + + if(frontPos != null && backPos != null) { + this.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; + this.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; + this.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + } + + } else { + + if(this.coupledFront != null && this.coupledFront.isDead) { + this.coupledFront = null; + if(this.ltu != null) this.ltu.dissolveTrain(); + } + if(this.coupledBack != null && this.coupledBack.isDead) { + this.coupledBack = null; + if(this.ltu != null) this.ltu.dissolveTrain(); + } + + if(this.ltu == null && (this.coupledFront == null || this.coupledBack == null)) { + LogicalTrainUnit.generateTrain(this); + } + + DummyConfig[] definitions = this.getDummies(); + + if(!this.initDummies) { + this.dummies = new BoundingBoxDummyEntity[definitions.length]; + + for(int i = 0; i < definitions.length; i++) { + DummyConfig def = definitions[i]; + BoundingBoxDummyEntity dummy = new BoundingBoxDummyEntity(worldObj, this, def.width, def.height); + Vec3 rot = Vec3.createVectorHelper(def.offset.xCoord, def.offset.yCoord, def.offset.zCoord); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + rot.xCoord; + double y = posY + rot.yCoord; + double z = posZ + rot.zCoord; + dummy.setPosition(x, y, z); + dummy.setSize(def.width, def.height); + dummy.velocityChanged = true; + worldObj.spawnEntityInWorld(dummy); + this.dummies[i] = dummy; + } + + this.initDummies = true; + } + + for(int i = 0; i < definitions.length; i++) { + DummyConfig def = definitions[i]; + BoundingBoxDummyEntity dummy = dummies[i]; + Vec3 rot = Vec3.createVectorHelper(def.offset.xCoord, def.offset.yCoord, def.offset.zCoord); + rot.rotateAroundX((float) (this.rotationPitch * Math.PI / 180D)); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + rot.xCoord; + double y = renderY + rot.yCoord; + double z = renderZ + rot.zCoord; + dummy.setPosition(x, y, z); + } + } + } + + public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, MoveContext context) { + return getRelPosAlongRail(anchor, distanceToCover, this.getGauge(), this.worldObj, Vec3.createVectorHelper(posX, posY, posZ), this.rotationYaw, context); + } + + public static Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover, TrackGauge gauge, World worldObj, Vec3 next, float yaw, MoveContext context) { + + if(distanceToCover < 0) { + distanceToCover *= -1; + yaw += 180; + } + + int it = 0; + + do { + + it++; + + if(it > 30) { + return null; + } + + int x = anchor.getX(); + int y = anchor.getY(); + int z = anchor.getZ(); + Block block = worldObj.getBlock(x, y, z); + + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); + rot.rotateAroundY((float) (-yaw * Math.PI / 180D)); + + if(block instanceof IRailNTM) { + IRailNTM rail = (IRailNTM) block; + + if(it == 1) { + next = rail.getTravelLocation(worldObj, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, new RailContext(), context); + } + + boolean flip = distanceToCover < 0; + + if(rail.getGauge(worldObj, x, y, z) == gauge) { + RailContext info = new RailContext(); + Vec3 prev = next; + next = rail.getTravelLocation(worldObj, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, context); + distanceToCover = info.overshoot; + anchor = info.pos; + + yaw = generateYaw(next, prev) * (flip ? -1 : 1); + + } else { + return null; + } + } else { + return null; + } + + } while(distanceToCover != 0); //if there's still length to cover, keep going + + return next; + } + + public static float generateYaw(Vec3 front, Vec3 back) { + double deltaX = front.xCoord - back.xCoord; + double deltaZ = front.zCoord - back.zCoord; + double radians = -Math.atan2(deltaX, deltaZ); + return (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI); + } + + public static void updateMotion(World world) { + Set ltus = new HashSet(); + + /* gather all LTUs */ + for(Object o : world.loadedEntityList) { + if(o instanceof EntityRailCarBase) { + EntityRailCarBase train = (EntityRailCarBase) o; + if(train.ltu != null) ltus.add(train.ltu); + } + } + + /* Move carts together with links */ + //for(LogicalTrainUnit ltu : ltus) ltu.combineWagons(); + + /* Move carts with unified speed */ + //for(LogicalTrainUnit ltu : ltus) ltu.moveTrain(); + + for(LogicalTrainUnit ltu : ltus) { + + double speed = ltu.getTotalSpeed() + ltu.pushForce; + + if(Math.abs(speed) < 0.001) speed = 0; + + if(ltu.trains.length == 1) { + + EntityRailCarBase train = ltu.trains[0]; + + BlockPos anchor = new BlockPos(train.posX, train.posY, train.posZ); + Vec3 newPos = train.getRelPosAlongRail(anchor, speed, new MoveContext(RailCheckType.CORE, 0)); + if(newPos == null) { + train.derail(); + ltu.dissolveTrain(); + continue; + } + train.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord); + anchor = train.getCurrentAnchorPos(); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); + + if(frontPos == null || backPos == null) { + train.derail(); + ltu.dissolveTrain(); + continue; + } else { + ltu.setRenderPos(train, frontPos, backPos); + } + + //ltu.pushForce *= 0.95; + ltu.pushForce = 0; + ltu.collideTrain(speed); + + continue; + } + + if(speed == 0) { + ltu.combineWagons(); + } else { + ltu.moveTrainByApproach(speed); + } + + if(ltu.trains.length != 1) { + //ltu.pushForce *= 0.95; + ltu.pushForce = 0; + ltu.collideTrain(speed); + } + } + } + + /** Returns the amount of blocks that the train should move per tick */ + public abstract double getCurrentSpeed(); + public abstract double getMaxRailSpeed(); + /** Returns the gauge of this train */ + public abstract TrackGauge getGauge(); + /** Returns the length between the core and one of the bogies */ + public abstract double getLengthSpan(); + /** Returns the length between the core and the collision points */ + public abstract double getCollisionSpan(); + /** Returns a collision box, usually smaller than the entity's AABB for rendering, which is used for colliding trains */ + /*public AxisAlignedBB getCollisionBox() { + return this.boundingBox; + }*/ + /** Returns a collision box used for block collisions when derailed */ + /*@Override public AxisAlignedBB getBoundingBox() { + return this.boundingBox; + }*/ + + /** Returns the "true" position of the train, i.e. the block it wants to snap to */ + public BlockPos getCurrentAnchorPos() { + return new BlockPos(posX, posY + 0.25, posZ); + } + + public void derail() { + isOnRail = false; + this.setDead(); + } + + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + //this.trainYaw = (double) yaw; + this.trainPitch = (double) pitch; + this.turnProgress = turnProg + 2; + this.motionX = this.velocityX; + this.motionY = this.velocityY; + this.motionZ = this.velocityZ; + this.trainYaw = this.movementYaw; + this.trainPitch = this.movementPitch; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double mX, double mY, double mZ) { + this.movementYaw = (float) this.motionX * 360F; + this.movementPitch = (float) this.motionY * 360F; + this.velocityX = this.motionX = mX; + this.velocityY = this.motionY = mY; + this.velocityZ = this.motionZ = mZ; + } + + /** Invisible entities that make up the dynamic bounding structure of the train, moving as the train rotates. */ + public static class BoundingBoxDummyEntity extends Entity implements ILookOverlay { + + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + public EntityRailCarBase train; + + public BoundingBoxDummyEntity(World world) { this(world, null, 1F, 1F); } + public BoundingBoxDummyEntity(World world, EntityRailCarBase train, float width, float height) { + super(world); + this.setSize(width, height); + this.train = train; + if(train != null) this.dataWatcher.updateObject(3, train.getEntityId()); + } + + @Override protected void setSize(float width, float height) { + super.setSize(width, height); + this.dataWatcher.updateObject(4, width); + this.dataWatcher.updateObject(5, height); + } + + @Override protected void entityInit() { + this.dataWatcher.addObject(3, new Integer(0)); + this.dataWatcher.addObject(4, new Float(1F)); + this.dataWatcher.addObject(5, new Float(1F)); + } + + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } + @Override public boolean canBePushed() { return true; } + @Override public boolean canBeCollidedWith() { return !this.isDead; } + + @Override public boolean attackEntityFrom(DamageSource source, float amount) { if(train != null) return train.attackEntityFrom(source, amount); return super.attackEntityFrom(source, amount); } + @Override public boolean interactFirst(EntityPlayer player) { if(train != null) return train.interactFirst(player); return super.interactFirst(player); } + + @Override public void onUpdate() { + if(!worldObj.isRemote) { + if(this.train == null || this.train.isDead) { + this.setDead(); + } + } else { + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(x, y, z); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + + this.setSize(this.dataWatcher.getWatchableObjectFloat(4), this.dataWatcher.getWatchableObjectFloat(5)); + } + } + + @Override @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + this.turnProgress = turnProg + 2; + } + @Override + public void printHook(Pre event, World world, int x, int y, int z) { + Entity e = worldObj.getEntityByID(this.dataWatcher.getWatchableObjectInt(3)); + if(e instanceof EntityRailCarBase) { + ((EntityRailCarBase) e).printHook(event, world, x, y, z); + } + } + } + + public DummyConfig[] getDummies() { + return new DummyConfig[0]; + } + + public static class DummyConfig { + public Vec3 offset; + public float width; + public float height; + + public DummyConfig(float width, float height, Vec3 offset) { + this.width = width; + this.height = height; + this.offset = offset; + } + } + + public static enum TrainCoupling { + FRONT, + BACK + } + + public double getCouplingDist(TrainCoupling coupling) { + return 0D; + } + + public Vec3 getCouplingPos(TrainCoupling coupling) { + double dist = this.getCouplingDist(coupling); + + if(dist <= 0) return null; + + if(coupling == TrainCoupling.BACK) dist *= -1; + + Vec3 rot = Vec3.createVectorHelper(0, 0, dist); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180D)); + rot.xCoord += this.renderX; + rot.yCoord += this.renderY; + rot.zCoord += this.renderZ; + return rot; + } + + public EntityRailCarBase getCoupledTo(TrainCoupling coupling) { + return coupling == TrainCoupling.FRONT ? this.coupledFront : coupling == TrainCoupling.BACK ? this.coupledBack : null; + } + + public TrainCoupling getCouplingFrom(EntityRailCarBase coupledTo) { + return coupledTo == this.coupledFront ? TrainCoupling.FRONT : coupledTo == this.coupledBack ? TrainCoupling.BACK : null; + } + + public void couple(TrainCoupling coupling, EntityRailCarBase to) { + if(coupling == TrainCoupling.FRONT) this.coupledFront = to; + if(coupling == TrainCoupling.BACK) this.coupledBack = to; + } + + public static class LogicalTrainUnit { + + protected double pushForce; + protected EntityRailCarBase trains[]; + + /** Assumes that the train is an endpoint, i.e. that only one coupling is in use */ + public static LogicalTrainUnit generateTrain(EntityRailCarBase train) { + List links = new ArrayList(); + Set brake = new HashSet(); + LogicalTrainUnit ltu = new LogicalTrainUnit(); + + if(train.coupledFront == null && train.coupledBack == null) { + ltu.trains = new EntityRailCarBase[] {train}; + train.ltu = ltu; + train.ltuIndex = 0; + return ltu; + } + + EntityRailCarBase current = train; + EntityRailCarBase next = null; + + do { + next = null; + + if(current.coupledFront != null && !brake.contains(current.coupledFront)) next = current.coupledFront; + if(current.coupledBack != null && !brake.contains(current.coupledBack)) next = current.coupledBack; + + links.add(current); + brake.add(current); + + current = next; + + } while(next != null); + + ltu.trains = new EntityRailCarBase[links.size()]; + for(int i = 0; i < ltu.trains.length; i++) { + ltu.trains[i] = links.get(i); + ltu.trains[i].ltu = ltu; + ltu.trains[i].ltuIndex = i; + } + + return ltu; + } + + /** Removes the LTU from all wagons */ + public void dissolveTrain() { + for(EntityRailCarBase train : trains) { + train.ltu = null; + train.ltuIndex = 0; + } + } + + /** Find the center fo the train, then moves all wagons towards that center until the coupling points roughly touch */ + public void combineWagons() { + + if(trains.length <= 1) return; + + boolean odd = trains.length % 2 == 1; + int centerIndex = odd ? trains.length / 2 : trains.length / 2 - 1; + EntityRailCarBase center = trains[centerIndex]; + EntityRailCarBase prev = center; + + for(int i = centerIndex - 1; i >= 0; i--) { + EntityRailCarBase next = trains[i]; + moveWagonTo(prev, next); + prev = next; + } + + prev = center; + for(int i = centerIndex + 1; i < trains.length; i++) { + EntityRailCarBase next = trains[i]; + moveWagonTo(prev, next); + prev = next; + } + } + + /** Moves one wagon to ne next until the coupling points roughly touch */ + public void moveWagonTo(EntityRailCarBase moveTo, EntityRailCarBase moving) { + TrainCoupling prevCouple = moveTo.getCouplingFrom(moving); + TrainCoupling nextCouple = moving.getCouplingFrom(moveTo); + Vec3 prevLoc = moveTo.getCouplingPos(prevCouple); + Vec3 nextLoc = moving.getCouplingPos(nextCouple); + Vec3 delta = Vec3.createVectorHelper(prevLoc.xCoord - nextLoc.xCoord, 0, prevLoc.zCoord - nextLoc.zCoord); + double len = delta.lengthVector(); + //len *= 0.25; //suspension, causes movements to be less rigid + len = (len / (0.5D / (len * len) + 1D)); //smart suspension + BlockPos anchor = new BlockPos(moving.posX, moving.posY, moving.posZ); + Vec3 trainPos = Vec3.createVectorHelper(moving.posX, moving.posY, moving.posZ); + float yaw = EntityRailCarBase.generateYaw(prevLoc, nextLoc); + Vec3 newPos = EntityRailCarBase.getRelPosAlongRail(anchor, len, moving.getGauge(), moving.worldObj, trainPos, yaw, new MoveContext(RailCheckType.CORE, 0)); + moving.setPosition(newPos.xCoord, newPos.yCoord, newPos.zCoord); + anchor = moving.getCurrentAnchorPos(); //reset origin to new position + Vec3 frontPos = moving.getRelPosAlongRail(anchor, moving.getLengthSpan(), new MoveContext(RailCheckType.FRONT, moving.getCollisionSpan() - moving.getLengthSpan())); + Vec3 backPos = moving.getRelPosAlongRail(anchor, -moving.getLengthSpan(), new MoveContext(RailCheckType.BACK, moving.getCollisionSpan() - moving.getLengthSpan())); + + if(frontPos == null || backPos == null) { + moving.derail(); + this.dissolveTrain(); + return; + } else { + setRenderPos(moving, frontPos, backPos); + } + } + + /** Generates the speed of the train, then moves the rain along the rail */ + @Deprecated public void moveTrain() { + + EntityRailCarBase prev = trains[0]; + TrainCoupling dir = prev.getCouplingFrom(null); + double totalSpeed = 0; + double maxSpeed = Double.POSITIVE_INFINITY; + + for(EntityRailCarBase train : this.trains) { + boolean con = train.getCouplingFrom(prev) == dir; + double speed = train.getCurrentSpeed(); + if(!con) speed *= -1; + totalSpeed += speed; + maxSpeed = Math.min(maxSpeed, train.getMaxRailSpeed()); + prev = train; + } + + if(Math.abs(totalSpeed) > maxSpeed) { + totalSpeed = maxSpeed * Math.signum(totalSpeed); + } + + this.moveTrainBy(totalSpeed); + } + + /** Moves the entire train along the rail by a certain speed */ + @Deprecated public void moveTrainBy(double totalSpeed) { + + for(EntityRailCarBase train : this.trains) { + + BlockPos anchor = train.getCurrentAnchorPos(); + Vec3 corePos = train.getRelPosAlongRail(anchor, totalSpeed, new MoveContext(RailCheckType.CORE, 0)); + + if(corePos == null) { + train.derail(); + this.dissolveTrain(); + return; + } else { + train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + anchor = train.getCurrentAnchorPos(); //reset origin to new position + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, 0)); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, 0)); + + if(frontPos == null || backPos == null) { + train.derail(); + this.dissolveTrain(); + return; + } else { + train.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; + train.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; + train.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + train.prevRotationYaw = train.rotationYaw; + train.rotationYaw = train.movementYaw = generateYaw(frontPos, backPos); + train.motionX = train.rotationYaw / 360D; // hijacking this crap for easy syncing + train.velocityChanged = true; + } + } + } + } + + /** Returns the total speed of the LTU, negative if it is backwards compared to the arbitrary "front" wagon */ + public double getTotalSpeed() { + + EntityRailCarBase prev = trains[0]; + double totalSpeed = 0; + double maxSpeed = Double.POSITIVE_INFINITY; + //if the first car is in reverse, flip all subsequent cars as well + boolean reverseTheReverse = prev.getCouplingFrom(null) == TrainCoupling.BACK; + + if(trains.length == 1) { + return prev.getCurrentSpeed(); + } + + for(EntityRailCarBase train : this.trains) { + //if the car's linked indices are the wrong way, it is in reverse and speed applies negatively + boolean reverse = false; + + EntityRailCarBase conFront = train.getCoupledTo(TrainCoupling.FRONT); + EntityRailCarBase conBack = train.getCoupledTo(TrainCoupling.BACK); + + if(conFront != null && conFront.ltuIndex > train.ltuIndex) reverse = true; + if(conBack != null && conBack.ltuIndex < train.ltuIndex) reverse = true; + + reverse ^= reverseTheReverse; + + double speed = train.getCurrentSpeed(); + if(reverse) speed *= -1; + totalSpeed += speed; + maxSpeed = Math.min(maxSpeed, train.getMaxRailSpeed()); + prev = train; + } + + if(Math.abs(totalSpeed) > maxSpeed) { + totalSpeed = maxSpeed * Math.signum(totalSpeed); + } + + return totalSpeed; + } + + /** Determines the "front" wagon based on the movement and moves it, then moves all other wagons towards that */ + public void moveTrainByApproach(double speed) { + boolean forward = speed < 0; + speed = Math.abs(speed); + EntityRailCarBase previous = null; + + EntityRailCarBase first = this.trains[0]; + + for(int i = !forward ? 0 : this.trains.length - 1; !forward ? i < this.trains.length : i >= 0; i += !forward ? 1 : -1) { + EntityRailCarBase current = this.trains[i]; + + if(previous == null) { + + boolean inReverse = first.getCouplingFrom(null) == current.getCouplingFrom(null); + int sigNum = inReverse ? 1 : -1; + BlockPos anchor = current.getCurrentAnchorPos(); + + /*Vec3 frontPos = current.getRelPosAlongRail(anchor, current.getLengthSpan(), new MoveContext(RailCheckType.FRONT)); + + if(frontPos == null) { + current.derail(); + this.dissolveTrain(); + return; + } else { + anchor = current.getCurrentAnchorPos(); //reset origin to new position + Vec3 corePos = current.getRelPosAlongRail(anchor, speed * sigNum, new MoveContext(RailCheckType.CORE)); + current.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + Vec3 backPos = current.getRelPosAlongRail(anchor, -current.getLengthSpan(), new MoveContext(RailCheckType.BACK)); + + if(frontPos == null || backPos == null) { + current.derail(); + this.dissolveTrain(); + return; + } else { + setRenderPos(current, frontPos, backPos); + } + }*/ + + Pair[] checks; + double dist = speed * sigNum; + + if(forward) { + checks = new Pair[] { + new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT), + new Pair(dist, RailCheckType.CORE), + new Pair(dist - current.getLengthSpan(), RailCheckType.BACK) + }; + } else { + checks = new Pair[] { + new Pair(dist - current.getLengthSpan(), RailCheckType.BACK), + new Pair(dist, RailCheckType.CORE), + new Pair(dist + current.getLengthSpan(), RailCheckType.FRONT) + }; + } + + double brake = 0; + + for(Pair check : checks) { + MoveContext ctx = new MoveContext(check.getValue(), current.getCollisionSpan() - current.getLengthSpan()); + current.getRelPosAlongRail(anchor, check.getKey() - (brake * Math.signum(check.getKey())), ctx); + if(ctx.collision) { + brake += ctx.overshoot; + } + } + + } else { + this.moveWagonTo(previous, current); + } + + previous = current; + } + } + + /** Uses the front and back bogey positions to set the render pos and angles of a wagon */ + public void setRenderPos(EntityRailCarBase current, Vec3 frontPos, Vec3 backPos) { + current.renderX = (frontPos.xCoord + backPos.xCoord) / 2D; + current.renderY = (frontPos.yCoord + backPos.yCoord) / 2D; + current.renderZ = (frontPos.zCoord + backPos.zCoord) / 2D; + current.prevRotationYaw = current.rotationYaw; + current.rotationYaw = current.movementYaw = generateYaw(frontPos, backPos); + Vec3 delta = Vec3.createVectorHelper(frontPos.xCoord - backPos.xCoord, frontPos.yCoord - backPos.yCoord, frontPos.zCoord - backPos.zCoord); + current.rotationPitch = current.movementPitch = (float) (Math.asin(delta.yCoord / delta.lengthVector()) * 180D / Math.PI); + current.motionX = current.rotationYaw / 360D; // hijacking this crap for easy syncing + current.motionY = current.rotationPitch / 360D; + current.velocityChanged = true; + } + + public void collideTrain(double speed) { + EntityRailCarBase collidingTrain = speed > 0 ? trains[0] : trains[trains.length - 1]; + List intersect = collidingTrain.worldObj.getEntitiesWithinAABB(EntityRailCarBase.class, collidingTrain.boundingBox.expand(1, 1, 1)); + EntityRailCarBase collidesWith = null; + + for(EntityRailCarBase train : intersect) { + if(train.ltu != null && train.ltu != this) { + collidesWith = train; + break; + } + } + + if(collidesWith == null) return; + + Vec3 delta = Vec3.createVectorHelper(collidingTrain.posX - collidesWith.posX, 0, collidingTrain.posZ - collidesWith.posZ); + double totalSpan = collidingTrain.getCollisionSpan() + collidesWith.getCollisionSpan(); + double diff = delta.lengthVector(); + if(diff > totalSpan) return; + double push = (totalSpan - diff); + + //PacketDispatcher.wrapper.sendToAllAround(new PlayerInformPacket(ChatBuilder.start("" + collidesWith.ltuIndex + " " + collidingTrain.ltuIndex).color(EnumChatFormatting.RED).flush(), 1), + // new TargetPoint(collidingTrain.dimension, collidingTrain.posX, collidingTrain.posY + 1, collidingTrain.posZ, 50)); + + EntityRailCarBase[][] whatever = new EntityRailCarBase[][] {{collidingTrain, collidesWith}, {collidesWith, collidingTrain}}; + for(EntityRailCarBase[] array : whatever) { + LogicalTrainUnit ltu = array[0].ltu; + if(ltu.trains.length == 1) { + Vec3 rot = Vec3.createVectorHelper(0, 0, array[0].getCollisionSpan()); + rot.rotateAroundX((float) (array[0].rotationPitch * Math.PI / 180D)); + rot.rotateAroundY((float) (-array[0].rotationYaw * Math.PI / 180)); + Vec3 forward = Vec3.createVectorHelper(array[1].posX - (array[0].posX + rot.xCoord), 0, array[1].posZ - (array[0].posZ + rot.zCoord)); + Vec3 backward = Vec3.createVectorHelper(array[1].posX - (array[0].posX - rot.xCoord), 0, array[1].posZ - (array[0].posZ - rot.zCoord)); + + if(forward.lengthVector() > backward.lengthVector()) { + ltu.pushForce += push; + } else { + ltu.pushForce -= push; + } + } else { + + if(array[0].ltuIndex < ltu.trains.length / 2) { + ltu.pushForce -= push; + } else { + ltu.pushForce += push; + } + } + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + List text = new ArrayList(); + ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); //none of this shit is going to work anyway + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java new file mode 100644 index 000000000..4bf5f2ee2 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java @@ -0,0 +1,165 @@ +package com.hbm.entity.train; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.world.World; + +public abstract class EntityRailCarCargo extends EntityRailCarBase implements IInventory { + + protected String entityName; + protected ItemStack[] slots = new ItemStack[this.getSizeInventory()]; + + public EntityRailCarCargo(World world) { + super(world); + } + + @Override + protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(10, new Integer(0)); + } + + public int countVacantSlots() { + int slots = 0; + + for(int i = 0; i < this.getSizeInventory(); i++) { + if(this.getStackInSlot(i) != null) slots++; + } + + return slots; + } + + @Override + public ItemStack getStackInSlot(int slot) { + return slots[slot]; + } + + @Override + public ItemStack decrStackSize(int slot, int amount) { + if(this.slots[slot] != null) { + ItemStack itemstack; + + if(this.slots[slot].stackSize <= amount) { + itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + itemstack = this.slots[slot].splitStack(amount); + + if(this.slots[slot].stackSize == 0) { + this.slots[slot] = null; + } + + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return itemstack; + } + } else { + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + if(this.slots[slot] != null) { + ItemStack itemstack = this.slots[slot]; + this.slots[slot] = null; + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return itemstack; + } else { + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack stack) { + this.slots[slot] = stack; + + if(stack != null && stack.stackSize > this.getInventoryStackLimit()) { + stack.stackSize = this.getInventoryStackLimit(); + } + + if(!this.worldObj.isRemote) this.dataWatcher.updateObject(10, this.countVacantSlots()); + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public void markDirty() { } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + return this.isDead ? false : player.getDistanceSqToEntity(this) <= 64.0D; + } + + @Override + public void openInventory() { } + + @Override + public void closeInventory() { } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + return true; + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + NBTTagList nbttaglist = new NBTTagList(); + + for(int i = 0; i < this.slots.length; ++i) { + if(this.slots[i] != null) { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte) i); + this.slots[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + + nbt.setTag("Items", nbttaglist); + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + NBTTagList nbttaglist = nbt.getTagList("Items", 10); + this.slots = new ItemStack[this.getSizeInventory()]; + + for(int i = 0; i < nbttaglist.tagCount(); ++i) { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + int j = nbttagcompound1.getByte("Slot") & 255; + + if(j >= 0 && j < this.slots.length) { + this.slots[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); + } + } + + this.dataWatcher.updateObject(10, this.countVacantSlots()); + } + + @Override + public boolean hasCustomInventoryName() { + return this.entityName != null; + } + + public String getEntityName() { + return this.entityName; + } + + public void setEntityName(String name) { + this.entityName = name; + } + + @Override + public String getCommandSenderName() { + return this.entityName != null ? this.entityName : super.getCommandSenderName(); + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java new file mode 100644 index 000000000..46643b029 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarElectric.java @@ -0,0 +1,70 @@ +package com.hbm.entity.train; + +import com.hbm.items.ModItems; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public abstract class EntityRailCarElectric extends EntityRailCarRidable { + + public EntityRailCarElectric(World world) { + super(world); + } + + public abstract int getMaxPower(); + public abstract int getPowerConsumption(); + + public boolean hasChargeSlot() { return false; } + public int getChargeSlot() { return 0; } + + @Override protected void entityInit() { + super.entityInit(); + this.dataWatcher.addObject(3, new Integer(0)); + } + + @Override public boolean canAccelerate() { + return true; + //return this.getPower() >= this.getPowerConsumption(); + } + + @Override public void consumeFuel() { + //this.setPower(this.getPower() - this.getPowerConsumption()); + } + + public void setPower(int power) { + this.dataWatcher.updateObject(3, power); + } + + public int getPower() { + return this.dataWatcher.getWatchableObjectInt(3); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + if(this.hasChargeSlot()) { + ItemStack stack = this.getStackInSlot(this.getChargeSlot()); + + if(stack != null && stack.getItem() instanceof IBatteryItem) { + IBatteryItem battery = (IBatteryItem) stack.getItem(); + int powerNeeded = this.getMaxPower() - this.getPower(); + long powerProvided = Math.min(battery.getDischargeRate(), battery.getCharge(stack)); + int powerTransfered = (int) Math.min(powerNeeded, powerProvided); + + if(powerTransfered > 0) { + battery.dischargeBattery(stack, powerTransfered); + this.setPower(this.getPower() + powerTransfered); + } + } else if(stack != null) { + if(stack.getItem() == ModItems.battery_creative || stack.getItem() == ModItems.fusion_core_infinite) { + this.setPower(this.getMaxPower()); + } + } + } + } + } +} diff --git a/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java new file mode 100644 index 000000000..da9a66f4e --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -0,0 +1,296 @@ +package com.hbm.entity.train; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.blocks.ILookOverlay; +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.client.event.RenderGameOverlayEvent; + +public abstract class EntityRailCarRidable extends EntityRailCarCargo { + + public double engineSpeed; + public SeatDummyEntity[] passengerSeats; + + public EntityRailCarRidable(World world) { + super(world); + this.passengerSeats = new SeatDummyEntity[this.getPassengerSeats().length]; + } + + /** Returns the linear speed added per tick when using powered movement */ + public abstract double getPoweredAcceleration(); + /** A mulitplier used on the speed either is there is no player in the train or if the parking brake is active */ + public abstract double getPassivBrake(); + /** The parking brake can be toggled, assuming a player is present, otherwise it is implicitly ON */ + public abstract boolean shouldUseEngineBrake(EntityPlayer player); + /** The max speed the engine can provide in both directions */ + public abstract double getMaxPoweredSpeed(); + /** Whether the engine is turned on */ + public abstract boolean canAccelerate(); + /** Called every tick if acceleration is successful */ + public void consumeFuel() { } + + /** An additive to the engine's speed yielding the total speed, caused by uneven surfaces */ + public double getGravitySpeed() { + return 0D; + } + + @Override + public double getCurrentSpeed() { // in its current form, only call once per tick + + if(this.riddenByEntity instanceof EntityPlayer) { + + EntityPlayer player = (EntityPlayer) this.riddenByEntity; + + if(this.canAccelerate()) { + if(player.moveForward > 0) { + engineSpeed += this.getPoweredAcceleration(); + this.consumeFuel(); + } else if(player.moveForward < 0) { + engineSpeed -= this.getPoweredAcceleration(); + this.consumeFuel(); + } else { + if(this.shouldUseEngineBrake(player)) { + engineSpeed *= this.getPassivBrake(); + } else { + this.consumeFuel(); + } + } + } else { + engineSpeed *= this.getPassivBrake(); + } + + } else { + engineSpeed *= this.getPassivBrake(); + } + + double maxSpeed = this.getMaxPoweredSpeed(); + engineSpeed = MathHelper.clamp_double(engineSpeed, -maxSpeed, maxSpeed); + + return engineSpeed + this.getGravitySpeed(); + } + + @Override + public boolean interactFirst(EntityPlayer player) { + + if(super.interactFirst(player)) return true; + if(worldObj.isRemote) return true; + + int nearestSeat = this.getNearestSeat(player); + + if(nearestSeat == -1) { + player.mountEntity(this); + } else if(nearestSeat >= 0) { + SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj, this, nearestSeat); + Vec3 passengerSeat = this.getPassengerSeats()[nearestSeat]; + passengerSeat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + passengerSeat.xCoord; + double y = renderY + passengerSeat.yCoord; + double z = renderZ + passengerSeat.zCoord; + dummySeat.setPosition(x, y - 1, z); + passengerSeats[nearestSeat] = dummySeat; + worldObj.spawnEntityInWorld(dummySeat); + player.mountEntity(dummySeat); + } + + return true; + } + + public int getNearestSeat(EntityPlayer player) { + + double nearestDist = Double.POSITIVE_INFINITY; + int nearestSeat = -3; + + Vec3[] seats = getPassengerSeats(); + Vec3 look = player.getLook(2); + look.xCoord += player.posX; + look.yCoord += player.posY + player.eyeHeight - player.yOffset; + look.zCoord += player.posZ; + + for(int i = 0; i < seats.length; i++) { + + Vec3 seat = seats[i]; + if(seat == null) continue; + if(passengerSeats[i] != null) continue; + + seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + seat.xCoord; + double y = renderY + seat.yCoord; + double z = renderZ + seat.zCoord; + + Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z); + double dist = delta.lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = i; + } + } + + if(this.riddenByEntity == null) { + Vec3 seat = getRiderSeatPosition(); + seat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + seat.xCoord; + double y = renderY + seat.yCoord; + double z = renderZ + seat.zCoord; + + Vec3 delta = Vec3.createVectorHelper(look.xCoord - x, look.yCoord - y, look.zCoord - z); + double dist = delta.lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = -1; + } + } + + if(nearestDist > 180) return -2; + + return nearestSeat; + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(!worldObj.isRemote) { + + Vec3[] seats = this.getPassengerSeats(); + for(int i = 0; i < passengerSeats.length; i++) { + SeatDummyEntity seat = passengerSeats[i]; + + if(seat != null) { + if(seat.riddenByEntity == null) { + passengerSeats[i] = null; + seat.setDead(); + } else { + Vec3 rot = seats[i]; + rot.rotateAroundX((float) (this.rotationPitch * Math.PI / 180)); + rot.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = renderX + rot.xCoord; + double y = renderY + rot.yCoord; + double z = renderZ + rot.zCoord; + seat.setPosition(x, y - 1, z); + } + } + } + } + } + + @Override + public void updateRiderPosition() { + + Vec3 offset = getRiderSeatPosition(); + offset.rotateAroundX((float) (this.rotationPitch * Math.PI / 180)); + offset.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + + if(this.riddenByEntity != null) { + this.riddenByEntity.setPosition(this.renderX + offset.xCoord, this.renderY + offset.yCoord, this.renderZ + offset.zCoord); + } + } + + /** Returns a Vec3 showing the relative position from the driver to the core */ + public abstract Vec3 getRiderSeatPosition(); + + public abstract Vec3[] getPassengerSeats(); + + /** Dynamic seats generated when a player clicks near a seat-spot, moves and rotates with the train as one would expect. */ + public static class SeatDummyEntity extends Entity { + + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + public EntityRailCarRidable train; + + public SeatDummyEntity(World world) { super(world); this.setSize(0.5F, 0.1F);} + public SeatDummyEntity(World world, EntityRailCarRidable train, int index) { + this(world); + this.train = train; + if(train != null) this.dataWatcher.updateObject(3, train.getEntityId()); + this.dataWatcher.updateObject(4, index); + } + + @Override protected void entityInit() { this.dataWatcher.addObject(3, new Integer(0)); this.dataWatcher.addObject(4, new Integer(0)); } + @Override protected void writeEntityToNBT(NBTTagCompound nbt) { } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { this.setDead(); } + + @Override public void onUpdate() { + if(!worldObj.isRemote) { + if(this.train == null || this.train.isDead) { + this.setDead(); + } + } else { + + if(this.turnProgress > 0) { + this.prevRotationYaw = this.rotationYaw; + double x = this.posX + (this.trainX - this.posX) / (double) this.turnProgress; + double y = this.posY + (this.trainY - this.posY) / (double) this.turnProgress; + double z = this.posZ + (this.trainZ - this.posZ) / (double) this.turnProgress; + --this.turnProgress; + this.setPosition(x, y, z); + } else { + this.setPosition(this.posX, this.posY, this.posZ); + } + } + } + + @Override @SideOnly(Side.CLIENT) public void setPositionAndRotation2(double posX, double posY, double posZ, float yaw, float pitch, int turnProg) { + this.trainX = posX; + this.trainY = posY; + this.trainZ = posZ; + this.turnProgress = turnProg + 2; + } + + @Override + public void updateRiderPosition() { + if(this.riddenByEntity != null) { + + if(train == null) { + int eid = this.dataWatcher.getWatchableObjectInt(3); + Entity entity = worldObj.getEntityByID(eid); + if(entity instanceof EntityRailCarRidable) { + train = (EntityRailCarRidable) entity; + } + } + + //fallback for when train is null + if(train == null) { + this.riddenByEntity.setPosition(posX, posY + 1, posZ); + return; + } + + //doing it like this instead of with the position directly removes any discrepancies caused by entity tick order + //mmhmhmhm silky smooth + int index = this.dataWatcher.getWatchableObjectInt(4); + Vec3 rot = this.train.getPassengerSeats()[index]; + rot.rotateAroundX((float) (train.rotationPitch * Math.PI / 180)); + rot.rotateAroundY((float) (-train.rotationYaw * Math.PI / 180)); + double x = train.renderX + rot.xCoord; + double y = train.renderY + rot.yCoord; + double z = train.renderZ + rot.zCoord; + this.riddenByEntity.setPosition(x, y, z); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public void printHook(RenderGameOverlayEvent.Pre event, World world, int x, int y, int z) { + List text = new ArrayList(); + /*text.add("LTU: " + this.ltu); + text.add("Front: " + this.coupledFront); + text.add("Back: " + this.coupledBack);*/ + text.add("Nearest seat: " + this.getNearestSeat(MainRegistry.proxy.me())); + ILookOverlay.printGeneric(event, this.getClass().getSimpleName() + " " + this.hashCode(), 0xffff00, 0x404000, text); + } +} diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTram.java b/src/main/java/com/hbm/entity/train/TrainCargoTram.java new file mode 100644 index 000000000..3b64d7679 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -0,0 +1,214 @@ +package com.hbm.entity.train; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.inventory.gui.GuiInfoContainer; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.IGUIProvider; + +import api.hbm.energy.IBatteryItem; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainCargoTram extends EntityRailCarElectric implements IGUIProvider { + + /* + * + * _________ + * | | \ <-- + * | | |___ + * | | | | | + * _O\|_|_______|__|_____________________________|/O_ + * |____| |____| + * \__________________________________________/ + * '( + )' '( + )' + * + */ + + public TrainCargoTram(World world) { + super(world); + this.setSize(5F, 2F); + } + + @Override public double getPoweredAcceleration() { return 0.01; } + @Override public double getPassivBrake() { return 0.95; } + @Override public boolean shouldUseEngineBrake(EntityPlayer player) { return Math.abs(this.engineSpeed) < 0.1; } + @Override public double getMaxPoweredSpeed() { return 0.5; } + @Override public double getMaxRailSpeed() { return 1; } + + @Override public TrackGauge getGauge() { return TrackGauge.STANDARD; } + @Override public double getLengthSpan() { return 1.5; } + @Override public double getCollisionSpan() { return 2.5; } + @Override public Vec3 getRiderSeatPosition() { return Vec3.createVectorHelper(0.375, 2.375, 0.5); } + @Override public boolean shouldRiderSit() { return false; } + @Override public int getSizeInventory() { return 29; } + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTram"; } + //@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); } + @Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; } + + @Override public int getMaxPower() { return this.getPowerConsumption() * 100; } + @Override public int getPowerConsumption() { return 10; } + @Override public boolean hasChargeSlot() { return true; } + @Override public int getChargeSlot() { return 28; } + + @Override + public DummyConfig[] getDummies() { + return new DummyConfig[] { + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 1.5)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 0)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, -1.5)) + }; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } + + @Override + public Vec3[] getPassengerSeats() { + return new Vec3[] { + Vec3.createVectorHelper(0.5, 1.75, -1.5), + Vec3.createVectorHelper(-0.5, 1.75, -1.5) + }; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerTrainCargoTram(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUITrainCargoTram(player.inventory, this); + } + + /* + * ##### ##### # # ##### ##### ### # # ##### #### + * # # # ## # # # # # ## # # # # + * # # # # # # # ##### # # # # ### #### + * # # # # ## # # # # # ## # # # + * ##### ##### # # # # # ### # # ##### # # + */ + public static class ContainerTrainCargoTram extends Container { + private TrainCargoTram train; + public ContainerTrainCargoTram(InventoryPlayer invPlayer, TrainCargoTram train) { + this.train = train; + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 7; j++) { + this.addSlotToContainer(new Slot(train, i * 7 + j, 8 + j * 18, 18 + i * 18)); + } + } + this.addSlotToContainer(new Slot(train, 28, 152, 72)); + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { + ItemStack stackCopy = null; + Slot slot = (Slot) this.inventorySlots.get(slotIndex); + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + stackCopy = stack.copy(); + if(slotIndex < train.getSizeInventory()) { + if(!this.mergeItemStack(stack, train.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(stackCopy.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(stack, 28, 29, false)) { + return null; + } + } else { + if(!this.mergeItemStack(stack, 0, 28, false)) { + return null; + } + } + } + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + return stackCopy; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return train.isUseableByPlayer(player); + } + } + + /* + * ##### # # ### + * # # # # + * # ## # # # + * # # # # # + * ##### ##### ### + */ + @SideOnly(Side.CLIENT) + public static class GUITrainCargoTram extends GuiInfoContainer { + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/vehicles/gui_cargo_tram.png"); + private TrainCargoTram train; + public GUITrainCargoTram(InventoryPlayer invPlayer, TrainCargoTram train) { + super(new ContainerTrainCargoTram(invPlayer, train)); + this.train = train; + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + this.drawElectricityInfo(this, x, y, guiLeft + 152, guiTop + 18, 16, 52, train.getPower(), train.getMaxPower()); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.train.hasCustomInventoryName() ? this.train.getInventoryName() : I18n.format(this.train.getInventoryName()); + this.fontRendererObj.drawString(name, 140 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float intero, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int i = train.getPower() * 53 / train.getMaxPower(); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - i, 176, 52 - i, 16, i); + + if(train.getPower() > train.getPowerConsumption()) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); + } + } + } +} diff --git a/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java b/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java new file mode 100644 index 000000000..afefb1d9a --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainCargoTramTrailer.java @@ -0,0 +1,183 @@ +package com.hbm.entity.train; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.inventory.gui.GuiInfoContainer; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; + +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainCargoTramTrailer extends EntityRailCarCargo implements IGUIProvider { + + /* + * + * <-- + * + * _O\____________________________________________/O_ + * |____| |____| + * \__________________________________________/ + * '( + )' '( + )' + * + */ + + public TrainCargoTramTrailer(World world) { + super(world); + this.setSize(5F, 2F); + } + + @Override public double getMaxRailSpeed() { return 1; } + @Override public TrackGauge getGauge() { return TrackGauge.STANDARD; } + @Override public double getLengthSpan() { return 1.5; } + @Override public double getCollisionSpan() { return 2.5; } + @Override public int getSizeInventory() { return 45; } + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTramTrailer"; } + //@Override public AxisAlignedBB getCollisionBox() { return AxisAlignedBB.getBoundingBox(renderX, renderY, renderZ, renderX, renderY + 1, renderZ).expand(4, 0, 4); } + @Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; } + @Override public double getCurrentSpeed() { return 0; } + + @Override + public DummyConfig[] getDummies() { + return new DummyConfig[] { + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 1.5)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, 0)), + new DummyConfig(2F, 1F, Vec3.createVectorHelper(0, 0, -1.5)) + }; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } + + @Override + public boolean interactFirst(EntityPlayer player) { + if(super.interactFirst(player)) return false; + + if(!this.worldObj.isRemote) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, this.getEntityId(), 0, 0); + } + + return true; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerTrainCargoTramTrailer(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUITrainCargoTramTrailer(player.inventory, this); + } + + /* + * ##### ##### # # ##### ##### ### # # ##### #### + * # # # ## # # # # # ## # # # # + * # # # # # # # ##### # # # # ### #### + * # # # # ## # # # # # ## # # # + * ##### ##### # # # # # ### # # ##### # # + */ + public static class ContainerTrainCargoTramTrailer extends Container { + private TrainCargoTramTrailer train; + public ContainerTrainCargoTramTrailer(InventoryPlayer invPlayer, TrainCargoTramTrailer train) { + this.train = train; + for(int i = 0; i < 5; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(train, i * 9 + j, 8 + j * 18, 18 + i * 18)); + } + } + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 140 + i * 18)); + } + } + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 198)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { + ItemStack stackCopy = null; + Slot slot = (Slot) this.inventorySlots.get(slotIndex); + if(slot != null && slot.getHasStack()) { + ItemStack stack = slot.getStack(); + stackCopy = stack.copy(); + if(slotIndex < train.getSizeInventory()) { + if(!this.mergeItemStack(stack, train.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else + if(!this.mergeItemStack(stack, 0, 45, false)) { + return null; + } + if(stack.stackSize == 0) { + slot.putStack((ItemStack) null); + } else { + slot.onSlotChanged(); + } + } + return stackCopy; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return train.isUseableByPlayer(player); + } + } + + /* + * ##### # # ### + * # # # # + * # ## # # # + * # # # # # + * ##### ##### ### + */ + @SideOnly(Side.CLIENT) + public static class GUITrainCargoTramTrailer extends GuiInfoContainer { + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/vehicles/gui_cargo_tram_trailer.png"); + private TrainCargoTramTrailer train; + public GUITrainCargoTramTrailer(InventoryPlayer invPlayer, TrainCargoTramTrailer train) { + super(new ContainerTrainCargoTramTrailer(invPlayer, train)); + this.train = train; + this.xSize = 176; + this.ySize = 222; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.train.hasCustomInventoryName() ? this.train.getInventoryName() : I18n.format(this.train.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float intero, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } + } +} diff --git a/src/main/java/com/hbm/entity/train/TrainTunnelBore.java b/src/main/java/com/hbm/entity/train/TrainTunnelBore.java new file mode 100644 index 000000000..f7b10493e --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainTunnelBore.java @@ -0,0 +1,54 @@ +package com.hbm.entity.train; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.DamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainTunnelBore extends EntityRailCarRidable { + + public TrainTunnelBore(World world) { + super(world); + this.setSize(6F, 4F); + } + + @Override public double getPoweredAcceleration() { return 0.01; } + @Override public double getPassivBrake() { return 0.95; } + @Override public boolean shouldUseEngineBrake(EntityPlayer player) { return Math.abs(this.engineSpeed) < 0.1; } + @Override public double getMaxPoweredSpeed() { return 0.5; } + @Override public double getMaxRailSpeed() { return 1; } + + @Override public TrackGauge getGauge() { return TrackGauge.STANDARD; } + @Override public double getLengthSpan() { return 2.5; } + @Override public double getCollisionSpan() { return 4.5; } + @Override public Vec3 getRiderSeatPosition() { return Vec3.createVectorHelper(0.0, 2.375, -2.375); } + @Override public boolean shouldRiderSit() { return true; } + @Override public int getSizeInventory() { return 0; } + @Override public String getInventoryName() { return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTunnelBore"; } + @Override public double getCouplingDist(TrainCoupling coupling) { return coupling != null ? 2.75 : 0; } + + @Override public boolean canAccelerate() { return true; } + @Override public Vec3[] getPassengerSeats() { return new Vec3[0]; } + + @Override + public DummyConfig[] getDummies() { + return new DummyConfig[] { + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, 2.5)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, 1.25)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, 0)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, -1.25)), + new DummyConfig(2F, 3F, Vec3.createVectorHelper(0, 0, -2.5)) + }; + } + + @Override + public boolean attackEntityFrom(DamageSource source, float amount) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } +} diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java index c8c15c8a9..c2a58d0a1 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeGeneric.java @@ -24,7 +24,7 @@ import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.grenade.EntityGrenadeASchrab; import com.hbm.entity.grenade.EntityGrenadeNuclear; import com.hbm.entity.missile.EntityMIRV; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityExplosiveBeam; import com.hbm.interfaces.Spaghetti; import com.hbm.items.ModItems; @@ -108,7 +108,7 @@ public class ExplosionNukeGeneric { e instanceof EntityGrenadeASchrab || e instanceof EntityGrenadeNuclear || e instanceof EntityExplosiveBeam || - e instanceof EntityBulletBase || + e instanceof EntityBulletBaseNT || e instanceof EntityPlayer && ArmorUtil.checkArmor((EntityPlayer) e, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots)) { return true; diff --git a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java index 8f0b72cd7..8077d7dc6 100644 --- a/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java +++ b/src/main/java/com/hbm/explosion/ExplosionNukeRayBatched.java @@ -181,6 +181,8 @@ public class ExplosionNukeRayBatched { Math.abs(posX - (chunkX << 4)), Math.abs(posZ - (chunkZ << 4)))) - 16; //jump ahead to cut back on NOPs + enter = Math.max(enter, 0); + for(FloatTriplet triplet : list) { float x = triplet.xCoord; float y = triplet.yCoord; diff --git a/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java b/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java index b2b2e86b8..0886cb3eb 100644 --- a/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java +++ b/src/main/java/com/hbm/explosion/nt/IExplosionLogic.java @@ -1,5 +1,6 @@ package com.hbm.explosion.nt; +@Deprecated public interface IExplosionLogic { public void updateLogic(); diff --git a/src/main/java/com/hbm/explosion/nt/Mark5.java b/src/main/java/com/hbm/explosion/nt/Mark5.java index 6827b6758..16d2d5ee4 100644 --- a/src/main/java/com/hbm/explosion/nt/Mark5.java +++ b/src/main/java/com/hbm/explosion/nt/Mark5.java @@ -10,6 +10,7 @@ import net.minecraft.init.Blocks; import net.minecraft.util.Vec3; import net.minecraft.world.World; +@Deprecated public class Mark5 implements IExplosionLogic { //holds rays after being calculated up to where the blocks get removed diff --git a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java index 891c10213..e1c217617 100644 --- a/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java +++ b/src/main/java/com/hbm/explosion/vanillant/ExplosionVNT.java @@ -39,10 +39,10 @@ public class ExplosionVNT { //since we want to reduce each effect to the bare minimum (sound, particles, etc. being separate) we definitely need multiple most of the time private IExplosionSFX[] sfx; - protected World world; - protected double posX; - protected double posY; - protected double posZ; + public World world; + public double posX; + public double posY; + public double posZ; public float size; public Entity exploder; diff --git a/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java b/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java index d1e29ecbc..904f01c69 100644 --- a/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java +++ b/src/main/java/com/hbm/explosion/vanillant/interfaces/IBlockMutator.java @@ -2,7 +2,10 @@ package com.hbm.explosion.vanillant.interfaces; import com.hbm.explosion.vanillant.ExplosionVNT; +import net.minecraft.block.Block; + public interface IBlockMutator { - public int mutateAtPosition(ExplosionVNT explosion, int x, int y, int z); + public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z); + public void mutatePost(ExplosionVNT explosion, int x, int y, int z); } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java new file mode 100644 index 000000000..863916f19 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockAllocatorBulkie.java @@ -0,0 +1,89 @@ +package com.hbm.explosion.vanillant.standard; + +import java.util.HashSet; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockAllocator; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkPosition; +import net.minecraft.world.World; + +public class BlockAllocatorBulkie implements IBlockAllocator { + + protected double maximum; + protected int resolution; + + public BlockAllocatorBulkie(double maximum) { + this(maximum, 16); + } + + public BlockAllocatorBulkie(double maximum, int resolution) { + this.resolution = resolution; + this.maximum = maximum; + } + + @Override + public HashSet allocate(ExplosionVNT explosion, World world, double x, double y, double z, float size) { + + HashSet affectedBlocks = new HashSet(); + + for(int i = 0; i < this.resolution; ++i) { + for(int j = 0; j < this.resolution; ++j) { + for(int k = 0; k < this.resolution; ++k) { + + if(i == 0 || i == this.resolution - 1 || j == 0 || j == this.resolution - 1 || k == 0 || k == this.resolution - 1) { + + double d0 = (double) ((float) i / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d1 = (double) ((float) j / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d2 = (double) ((float) k / ((float) this.resolution - 1.0F) * 2.0F - 1.0F); + double d3 = Math.sqrt(d0 * d0 + d1 * d1 + d2 * d2); + + d0 /= d3; + d1 /= d3; + d2 /= d3; + + double currentX = x; + double currentY = y; + double currentZ = z; + + double dist = 0; + + for(float stepSize = 0.3F; dist <= explosion.size;) { + + double deltaX = currentX - x; + double deltaY = currentY - y; + double deltaZ = currentZ - z; + dist = Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ); + + int blockX = MathHelper.floor_double(currentX); + int blockY = MathHelper.floor_double(currentY); + int blockZ = MathHelper.floor_double(currentZ); + + Block block = world.getBlock(blockX, blockY, blockZ); + + if(block.getMaterial() != Material.air) { + float blockResistance = explosion.exploder != null ? explosion.exploder.func_145772_a(explosion.compat, world, blockX, blockY, blockZ, block) : block.getExplosionResistance(explosion.exploder, world, blockX, blockY, blockZ, x, y, z); + if(this.maximum < blockResistance) { + break; + } + } + + if(explosion.exploder == null || explosion.exploder.func_145774_a(explosion.compat, world, blockX, blockY, blockZ, block, explosion.size)) { + affectedBlocks.add(new ChunkPosition(blockX, blockY, blockZ)); + } + + currentX += d0 * (double) stepSize; + currentY += d1 * (double) stepSize; + currentZ += d2 * (double) stepSize; + } + } + } + } + } + + return affectedBlocks; + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java new file mode 100644 index 000000000..8d7a2d77f --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorBulkie.java @@ -0,0 +1,32 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.inventory.RecipesCommon.MetaBlock; + +import net.minecraft.block.Block; +import net.minecraft.util.Vec3; + +public class BlockMutatorBulkie implements IBlockMutator { + + protected MetaBlock metaBlock; + + public BlockMutatorBulkie(Block block) { + this(block, 0); + } + + public BlockMutatorBulkie(Block block, int meta) { + this.metaBlock = new MetaBlock(block, meta); + } + + @Override + public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { + if(!block.isNormalCube()) return; + Vec3 vec = Vec3.createVectorHelper(x + 0.5 - explosion.posX, y + 0.5 - explosion.posY, z + 0.5 - explosion.posZ); + if(vec.lengthVector() >= explosion.size - 0.5) { + explosion.world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3); + } + } + + @Override public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorDebris.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorDebris.java new file mode 100644 index 000000000..9feb9a918 --- /dev/null +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockMutatorDebris.java @@ -0,0 +1,36 @@ +package com.hbm.explosion.vanillant.standard; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.interfaces.IBlockMutator; +import com.hbm.inventory.RecipesCommon.MetaBlock; + +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class BlockMutatorDebris implements IBlockMutator { + + protected MetaBlock metaBlock; + + public BlockMutatorDebris(Block block) { + this(block, 0); + } + + public BlockMutatorDebris(Block block, int meta) { + this.metaBlock = new MetaBlock(block, meta); + } + + @Override public void mutatePre(ExplosionVNT explosion, Block block, int meta, int x, int y, int z) { } + + @Override public void mutatePost(ExplosionVNT explosion, int x, int y, int z) { + + World world = explosion.world; + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + Block b = world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ); + if(b.isNormalCube() && (b != metaBlock.block || world.getBlockMetadata(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ) != metaBlock.meta)) { + world.setBlock(x, y, z, metaBlock.block, metaBlock.meta, 3); + return; + } + } + } +} diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java index ac1fcd7be..8d76b9d9a 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java @@ -63,6 +63,9 @@ public class BlockProcessorStandard implements IBlockProcessor { } block.onBlockExploded(world, blockX, blockY, blockZ, explosion.compat); + if(this.convert != null) this.convert.mutatePre(explosion, block, world.getBlockMetadata(blockX, blockY, blockZ), blockX, blockY, blockZ); + } else { + iterator.remove(); } } @@ -78,7 +81,7 @@ public class BlockProcessorStandard implements IBlockProcessor { Block block = world.getBlock(blockX, blockY, blockZ); if(block.getMaterial() == Material.air) { - this.convert.mutateAtPosition(explosion, blockX, blockY, blockZ); + this.convert.mutatePost(explosion, blockX, blockY, blockZ); } } } diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index 73d5957af..81a44a47a 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -25,6 +25,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.IExtendedEntityProperties; @@ -40,12 +41,15 @@ public class HbmLivingProps implements IExtendedEntityProperties { private int asbestos; public static final int maxAsbestos = 60 * 60 * 20; private int blacklung; - public static final int maxBlacklung = 60 * 60 * 20; + public static final int maxBlacklung = 2 * 60 * 60 * 20; private float radEnv; private float radBuf; private int bombTimer; private int contagion; private int oil; + private int temperature; + private boolean frozen = false; + private boolean burning = false; private List contamination = new ArrayList(); public HbmLivingProps(EntityLivingBase entity) { @@ -270,6 +274,24 @@ public class HbmLivingProps implements IExtendedEntityProperties { public static void setOil(EntityLivingBase entity, int oil) { getData(entity).oil = oil; } + + /// TEMPERATURE /// + public static int getTemperature(EntityLivingBase entity) { + return getData(entity).temperature; + } + + public static void setTemperature(EntityLivingBase entity, int temperature) { + HbmLivingProps data = getData(entity); + temperature = MathHelper.clamp_int(temperature, -2500, 2500); + data.temperature = temperature; + if(temperature > 1000) data.burning = true; + if(temperature < 800) data.burning = false; + if(temperature < -1000) data.frozen = true; + if(temperature > -800) data.frozen = false; + } + + public static boolean isFrozen(EntityLivingBase entity) { return getData(entity).frozen; }; + public static boolean isBurning(EntityLivingBase entity) { return getData(entity).burning; }; @Override public void init(Entity entity, World world) { } diff --git a/src/main/java/com/hbm/extprop/HbmPlayerProps.java b/src/main/java/com/hbm/extprop/HbmPlayerProps.java index 23191641e..63ee89a86 100644 --- a/src/main/java/com/hbm/extprop/HbmPlayerProps.java +++ b/src/main/java/com/hbm/extprop/HbmPlayerProps.java @@ -1,8 +1,11 @@ package com.hbm.extprop; +import com.hbm.entity.train.EntityRailCarBase; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; @@ -63,20 +66,36 @@ public class HbmPlayerProps implements IExtendedEntityProperties { if(!getKeyPressed(key) && pressed) { if(key == EnumKeybind.TOGGLE_JETPACK) { - this.enableBackpack = !this.enableBackpack; - if(this.enableBackpack) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); - else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK); + if(!player.worldObj.isRemote) { + this.enableBackpack = !this.enableBackpack; + + if(this.enableBackpack) + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "Jetpack ON", MainRegistry.proxy.ID_JETPACK); + else + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "Jetpack OFF", MainRegistry.proxy.ID_JETPACK); + } } if(key == EnumKeybind.TOGGLE_HEAD) { - this.enableHUD = !this.enableHUD; - if(this.enableHUD) - MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); - else - MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); + if(!player.worldObj.isRemote) { + this.enableHUD = !this.enableHUD; + + if(this.enableHUD) + MainRegistry.proxy.displayTooltip(EnumChatFormatting.GREEN + "HUD ON", MainRegistry.proxy.ID_HUD); + else + MainRegistry.proxy.displayTooltip(EnumChatFormatting.RED + "HUD OFF", MainRegistry.proxy.ID_HUD); + } + } + + if(key == EnumKeybind.TRAIN) { + + if(!this.player.worldObj.isRemote) { + + if(player.ridingEntity != null && player.ridingEntity instanceof EntityRailCarBase && player.ridingEntity instanceof IGUIProvider) { + FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, player.worldObj, player.ridingEntity.getEntityId(), 0, 0); + } + } } } @@ -133,6 +152,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties { props.setFloat("shield", shield); props.setFloat("maxShield", maxShield); + props.setBoolean("enableBackpack", enableBackpack); + props.setBoolean("enableHUD", enableHUD); nbt.setTag("HbmPlayerProps", props); } @@ -145,6 +166,8 @@ public class HbmPlayerProps implements IExtendedEntityProperties { if(props != null) { this.shield = props.getFloat("shield"); this.maxShield = props.getFloat("maxShield"); + this.enableBackpack = props.getBoolean("enableBackpack"); + this.enableHUD = props.getBoolean("enableHUD"); } } } diff --git a/src/main/java/com/hbm/handler/BossSpawnHandler.java b/src/main/java/com/hbm/handler/BossSpawnHandler.java index 5d981fd0d..5c3a206c7 100644 --- a/src/main/java/com/hbm/handler/BossSpawnHandler.java +++ b/src/main/java/com/hbm/handler/BossSpawnHandler.java @@ -7,6 +7,7 @@ import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; import com.hbm.config.WorldConfig; import com.hbm.entity.mob.EntityFBI; +import com.hbm.entity.mob.EntityFBIDrone; import com.hbm.entity.mob.EntityGhost; import com.hbm.entity.mob.EntityMaskMan; import com.hbm.entity.mob.EntityRADBeast; @@ -97,6 +98,15 @@ public class BossSpawnHandler { trySpawn(world, (float)spawnX, (float)spawnY, (float)spawnZ, new EntityFBI(world)); } + + for(int i = 0; i < MobConfig.raidDrones; i++) { + + double spawnX = player.posX + vec.xCoord + world.rand.nextGaussian() * 5; + double spawnZ = player.posZ + vec.zCoord + world.rand.nextGaussian() * 5; + double spawnY = world.getHeightValue((int)spawnX, (int)spawnZ); + + trySpawn(world, (float)spawnX, (float)spawnY + 10, (float)spawnZ, new EntityFBIDrone(world)); + } } } } diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 06d4afa91..19987ab65 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -77,6 +77,14 @@ public class BulletConfigSyncingUtil { public static int G12_SLEEK = i++; public static int G12_PERCUSSION = i++; + public static int G12HS_NORMAL = i++; + public static int G12HS_INCENDIARY = i++; + public static int G12HS_SHRAPNEL = i++; + public static int G12HS_DU = i++; + public static int G12HS_AM = i++; + public static int G12HS_SLEEK = i++; + public static int G12HS_PERCUSSION = i++; + public static int LR22_NORMAL = i++; public static int LR22_AP = i++; public static int LR22_NORMAL_FIRE = i++; @@ -152,12 +160,18 @@ public class BulletConfigSyncingUtil { public static int SPECIAL_GAUSS_CHARGED = i++; public static int SPECIAL_EMP = i++; + public static int COIL_NORMAL = i++; + public static int COIL_DU = i++; + public static int COIL_RUBBER = i++; + public static int FLAMER_NORMAL = i++; public static int FLAMER_NAPALM = i++; public static int FLAMER_WP = i++; public static int FLAMER_VAPORIZER = i++; public static int FLAMER_GAS = i++; + public static int CRYO_NORMAL = i++; + public static int FEXT_NORMAL = i++; public static int FEXT_FOAM = i++; public static int FEXT_SAND = i++; @@ -359,6 +373,13 @@ public class BulletConfigSyncingUtil { configSet.put(G12_AM, Gun12GaugeFactory.get12GaugeAMConfig()); configSet.put(G12_SLEEK, Gun12GaugeFactory.get12GaugeSleekConfig()); configSet.put(G12_PERCUSSION, Gun12GaugeFactory.get12GaugePercussionConfig()); + configSet.put(G12HS_NORMAL, Gun12GaugeFactory.get12GaugeConfig().setHeadshot(2F)); + configSet.put(G12HS_INCENDIARY, Gun12GaugeFactory.get12GaugeFireConfig().setHeadshot(2F)); + configSet.put(G12HS_SHRAPNEL, Gun12GaugeFactory.get12GaugeShrapnelConfig().setHeadshot(2F)); + configSet.put(G12HS_DU, Gun12GaugeFactory.get12GaugeDUConfig().setHeadshot(2F)); + configSet.put(G12HS_AM, Gun12GaugeFactory.get12GaugeAMConfig().setHeadshot(2F)); + configSet.put(G12HS_SLEEK, Gun12GaugeFactory.get12GaugeSleekConfig().setHeadshot(2F)); + configSet.put(G12HS_PERCUSSION, Gun12GaugeFactory.get12GaugePercussionConfig().setHeadshot(2F)); configSet.put(LR22_NORMAL, Gun22LRFactory.get22LRConfig()); configSet.put(LR22_AP, Gun22LRFactory.get22LRAPConfig()); @@ -435,12 +456,18 @@ public class BulletConfigSyncingUtil { configSet.put(SPECIAL_GAUSS_CHARGED, GunGaussFactory.getAltConfig()); configSet.put(SPECIAL_EMP, GunEnergyFactory.getOrbusConfig()); + configSet.put(COIL_NORMAL, GunEnergyFactory.getCoilConfig()); + configSet.put(COIL_DU, GunEnergyFactory.getCoilDUConfig()); + configSet.put(COIL_RUBBER, GunEnergyFactory.getCoilRubberConfig()); + configSet.put(FLAMER_NORMAL, GunEnergyFactory.getFlameConfig()); configSet.put(FLAMER_NAPALM, GunEnergyFactory.getNapalmConfig()); configSet.put(FLAMER_WP, GunEnergyFactory.getPhosphorusConfig()); configSet.put(FLAMER_VAPORIZER, GunEnergyFactory.getVaporizerConfig()); configSet.put(FLAMER_GAS, GunEnergyFactory.getGasConfig()); + configSet.put(CRYO_NORMAL, GunEnergyFactory.getCryoConfig()); + configSet.put(FEXT_NORMAL, GunEnergyFactory.getFextConfig()); configSet.put(FEXT_FOAM, GunEnergyFactory.getFextFoamConfig()); configSet.put(FEXT_SAND, GunEnergyFactory.getFextSandConfig()); diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index 71c208daa..1a5c07498 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -2,14 +2,9 @@ package com.hbm.handler; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.handler.guncfg.BulletConfigFactory; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletRicochetBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; -import com.hbm.interfaces.Untested; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; @@ -59,14 +54,16 @@ public class BulletConfiguration implements Cloneable { public int HBRC; //how much of the initial velocity is kept after bouncing public double bounceMod; + //how many ticks until the projectile can hurt the shooter + public int selfDamageDelay = 5; //whether or not the bullet should penetrate mobs public boolean doesPenetrate; - //whether or not the bullet should phase through blocks + //disables collisions with blocks entirely public boolean isSpectral; //whether or not the bullet should break glass public boolean doesBreakGlass; - //whether the bullet should stay alive after colliding with a block + //bullets still call the impact function when hitting blocks but do not get destroyed public boolean liveAfterImpact; //creates a "muzzle flash" and a ton of smoke with every projectile spawned @@ -87,11 +84,16 @@ public class BulletConfiguration implements Cloneable { public int caustic; public boolean destroysBlocks; public boolean instakill; - public IBulletHurtBehavior bHurt; + /*public IBulletHurtBehavior bHurt; public IBulletHitBehavior bHit; public IBulletRicochetBehavior bRicochet; public IBulletImpactBehavior bImpact; - public IBulletUpdateBehavior bUpdate; + public IBulletUpdateBehavior bUpdate;*/ + public IBulletHurtBehaviorNT bntHurt; + public IBulletHitBehaviorNT bntHit; + public IBulletRicochetBehaviorNT bntRicochet; + public IBulletImpactBehaviorNT bntImpact; + public IBulletUpdateBehaviorNT bntUpdate; //appearance public int style; @@ -137,6 +139,7 @@ public class BulletConfiguration implements Cloneable { public static final int STYLE_APDS = 14; public static final int STYLE_BLADE = 15; public static final int STYLE_BARREL = 16; + public static final int STYLE_TAU = 17; public static final int PLINK_NONE = 0; public static final int PLINK_BULLET = 1; @@ -172,13 +175,13 @@ public class BulletConfiguration implements Cloneable { public BulletConfiguration setToGuided() { - this.bUpdate = BulletConfigFactory.getLaserSteering(); + this.bntUpdate = BulletConfigFactory.getLaserSteering(); this.doesRicochet = false; return this; } public BulletConfiguration getChlorophyte() { - this.bUpdate = BulletConfigFactory.getHomingBehavior(200, 45); + this.bntUpdate = BulletConfigFactory.getHomingBehavior(200, 45); this.dmgMin *= 1.5F; this.dmgMax *= 1.5F; this.wear *= 0.5; @@ -212,8 +215,7 @@ public class BulletConfiguration implements Cloneable { return this; } - @Untested - public DamageSource getDamage(EntityBulletBase bullet, EntityLivingBase shooter) { + public DamageSource getDamage(EntityBulletBaseNT bullet, EntityLivingBase shooter) { DamageSource dmg; diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 845bbd9a6..467318ff7 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -12,6 +12,8 @@ import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.extprop.HbmLivingProps.ContaminationEffect; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IArmorModDash; import com.hbm.items.armor.ArmorFSB; @@ -19,6 +21,7 @@ import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; +import com.hbm.potion.HbmPotion; import com.hbm.packet.ExtPropPacket; import com.hbm.saveddata.AuxSavedData; import com.hbm.util.ArmorRegistry; @@ -48,42 +51,40 @@ import net.minecraft.world.World; public class EntityEffectHandler { public static void onUpdate(EntityLivingBase entity) { - + + if(entity.ticksExisted % 20 == 0) { + HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); + HbmLivingProps.setRadEnv(entity, 0); + } + + if(entity instanceof EntityPlayerMP) { + HbmLivingProps props = HbmLivingProps.getData(entity); + HbmPlayerProps pprps = HbmPlayerProps.getData((EntityPlayerMP) entity); + NBTTagCompound data = new NBTTagCompound(); + + if(pprps.shield < pprps.maxShield && entity.ticksExisted > pprps.lastDamage + 60) { + int tsd = entity.ticksExisted - (pprps.lastDamage + 60); + pprps.shield += Math.min(pprps.maxShield - pprps.shield, 0.005F * tsd); + } + + if(pprps.shield > pprps.maxShield) + pprps.shield = pprps.maxShield; + + props.saveNBTData(data); + pprps.saveNBTData(data); + PacketDispatcher.wrapper.sendTo(new ExtPropPacket(data), (EntityPlayerMP) entity); + } + if(!entity.worldObj.isRemote) { - - if(entity.ticksExisted % 20 == 0) { - HbmLivingProps.setRadBuf(entity, HbmLivingProps.getRadEnv(entity)); - HbmLivingProps.setRadEnv(entity, 0); - } - - - if(entity instanceof EntityPlayerMP) { - HbmLivingProps props = HbmLivingProps.getData(entity); - HbmPlayerProps pprps = HbmPlayerProps.getData((EntityPlayerMP) entity); - NBTTagCompound data = new NBTTagCompound(); - - if(pprps.shield < pprps.maxShield && entity.ticksExisted > pprps.lastDamage + 60) { - int tsd = entity.ticksExisted - (pprps.lastDamage + 60); - pprps.shield += Math.min(pprps.maxShield - pprps.shield, 0.005F * tsd); - } - - if(pprps.shield > pprps.maxShield) - pprps.shield = pprps.maxShield; - - props.saveNBTData(data); - pprps.saveNBTData(data); - PacketDispatcher.wrapper.sendTo(new ExtPropPacket(data), (EntityPlayerMP) entity); - } - int timer = HbmLivingProps.getTimer(entity); if(timer > 0) { HbmLivingProps.setTimer(entity, timer - 1); - + if(timer == 1) { ExplosionNukeSmall.explode(entity.worldObj, entity.posX, entity.posY, entity.posZ, ExplosionNukeSmall.PARAMS_MEDIUM); } } - + if(GeneralConfig.enable528 && entity instanceof EntityLivingBase && !entity.isImmuneToFire() && entity.worldObj.provider.isHellWorld) { entity.setFire(5); } @@ -95,6 +96,8 @@ public class EntityEffectHandler { handleDigamma(entity); handleLungDisease(entity); handleOil(entity); + handlePollution(entity); + handleTemperature(entity); handleDashing(entity); handlePlinking(entity); @@ -122,13 +125,13 @@ public class EntityEffectHandler { private static void handleRadiation(EntityLivingBase entity) { - if(ContaminationUtil.isRadImmune(entity)) - return; - World world = entity.worldObj; if(!world.isRemote) { + if(ContaminationUtil.isRadImmune(entity)) + return; + int ix = (int)MathHelper.floor_double(entity.posX); int iy = (int)MathHelper.floor_double(entity.posY); int iz = (int)MathHelper.floor_double(entity.posZ); @@ -359,14 +362,19 @@ public class EntityEffectHandler { int bl = HbmLivingProps.getBlackLung(entity); - if(bl > 0 && bl < HbmLivingProps.maxBlacklung * 0.25) + if(bl > 0 && bl < HbmLivingProps.maxBlacklung * 0.5) HbmLivingProps.setBlackLung(entity, HbmLivingProps.getBlackLung(entity) - 1); } double blacklung = Math.min(HbmLivingProps.getBlackLung(entity), HbmLivingProps.maxBlacklung); double asbestos = Math.min(HbmLivingProps.getAsbestos(entity), HbmLivingProps.maxAsbestos); + double soot = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.SOOT); - boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D; + if(!(entity instanceof EntityPlayer)) soot = 0; + + if(ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_COARSE)) soot = 0; + + boolean coughs = blacklung / HbmLivingProps.maxBlacklung > 0.25D || asbestos / HbmLivingProps.maxAsbestos > 0.25D || soot > 30; if(!coughs) return; @@ -377,11 +385,10 @@ public class EntityEffectHandler { double blacklungDelta = 1D - (blacklung / (double)HbmLivingProps.maxBlacklung); double asbestosDelta = 1D - (asbestos / (double)HbmLivingProps.maxAsbestos); + double sootDelta = 1D - Math.min(soot / 100, 1D); double total = 1 - (blacklungDelta * asbestosDelta); - int freq = Math.max((int) (1000 - 950 * total), 20); - World world = entity.worldObj; if(total > 0.75D) { @@ -392,6 +399,9 @@ public class EntityEffectHandler { entity.addPotionEffect(new PotionEffect(Potion.confusion.id, 100, 0)); } + total = 1 - (blacklungDelta * asbestosDelta * sootDelta); + int freq = Math.max((int) (1000 - 950 * total), 20); + if(world.getTotalWorldTime() % freq == entity.getEntityId() % freq) { world.playSoundEffect(entity.posX, entity.posY, entity.posZ, "hbm:player.cough", 1.0F, 1.0F); @@ -416,6 +426,10 @@ public class EntityEffectHandler { } private static void handleOil(EntityLivingBase entity) { + + if(entity.worldObj.isRemote) + return; + int oil = HbmLivingProps.getOil(entity); if(oil > 0) { @@ -433,11 +447,85 @@ public class EntityEffectHandler { nbt.setInteger("count", 1); nbt.setInteger("block", Block.getIdFromBlock(Blocks.coal_block)); nbt.setInteger("entity", entity.getEntityId()); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); } } } + private static void handlePollution(EntityLivingBase entity) { + + if(!RadiationConfig.enablePollution) return; + + if(RadiationConfig.enablePoison && !ArmorRegistry.hasProtection(entity, 3, HazardClass.GAS_CORROSIVE) && entity.ticksExisted % 60 == 0) { + + float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.POISON); + + if(poison > 10) { + + if(poison < 25) { + entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 0)); + } else if(poison < 50) { + entity.addPotionEffect(new PotionEffect(Potion.poison.id, 100, 1)); + } else { + entity.addPotionEffect(new PotionEffect(Potion.wither.id, 100, 2)); + } + } + } + + if(RadiationConfig.enableLeadPoisoning && !ArmorRegistry.hasProtection(entity, 3, HazardClass.PARTICLE_FINE) && entity.ticksExisted % 60 == 0) { + + float poison = PollutionHandler.getPollution(entity.worldObj, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY + entity.getEyeHeight()), (int) Math.floor(entity.posZ), PollutionType.HEAVYMETAL); + + if(poison > 25) { + + if(poison < 50) { + entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0)); + } else if(poison < 75) { + entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2)); + } else { + entity.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2)); + } + } + } + } + + private static void handleTemperature(Entity entity) { + + if(!(entity instanceof EntityLivingBase)) return; + if(entity.worldObj.isRemote) return; + + EntityLivingBase living = (EntityLivingBase) entity; + int temp = HbmLivingProps.getTemperature(living); + + if(temp < 0) HbmLivingProps.setTemperature(living, temp + Math.min(-temp, 5)); + if(temp > 0) HbmLivingProps.setTemperature(living, temp - Math.min(temp, 5)); + + if(HbmLivingProps.isFrozen(living)) { + living.motionX = 0; + living.motionZ = 0; + living.motionY = Math.min(living.motionY, 0); + + if(entity.ticksExisted % 5 == 0) { + NBTTagCompound nbt0 = new NBTTagCompound(); + nbt0.setString("type", "sweat"); + nbt0.setInteger("count", 1); + nbt0.setInteger("block", Block.getIdFromBlock(Blocks.snow)); + nbt0.setInteger("entity", entity.getEntityId()); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(nbt0, 0, 0, 0), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 25)); + + if(entity instanceof EntityPlayerMP) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setString("type", "frozen"); + PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(nbt1, 0, 0, 0), (EntityPlayerMP) entity); + } + } + } + + if(HbmLivingProps.isBurning(living)) { + living.setFire(1); + } + } + private static void handleDashing(Entity entity) { //AAAAAAAAAAAAAAAAAAAAEEEEEEEEEEEEEEEEEEEE @@ -480,16 +568,7 @@ public class EntityEffectHandler { int dashCount = armorDashCount + armorModDashCount; - boolean dashActivated = false; - - - if(!GeneralConfig.enableCustomDashKeybind) { - dashActivated = !player.capabilities.isFlying && player.isSneaking(); - } else { - dashActivated = props.getKeyPressed(EnumKeybind.DASH); - } - - //System.out.println(dashCount); + boolean dashActivated = props.getKeyPressed(EnumKeybind.DASH); if(dashCount * 30 < props.getStamina()) props.setStamina(dashCount * 30); diff --git a/src/main/java/com/hbm/handler/GunConfiguration.java b/src/main/java/com/hbm/handler/GunConfiguration.java index 87f6f9b2f..43a21ce01 100644 --- a/src/main/java/com/hbm/handler/GunConfiguration.java +++ b/src/main/java/com/hbm/handler/GunConfiguration.java @@ -52,6 +52,7 @@ public class GunConfiguration implements Cloneable { public String reloadSound = ""; //sound path to the shooting sound public String firingSound = ""; + public float firingVolume = 1.0F; public float firingPitch = 1.0F; //whether the reload sound should be played at the beginning or at the end of the reload public boolean reloadSoundEnd = true; diff --git a/src/main/java/com/hbm/handler/HTTPHandler.java b/src/main/java/com/hbm/handler/HTTPHandler.java index e12832267..4efc054f4 100644 --- a/src/main/java/com/hbm/handler/HTTPHandler.java +++ b/src/main/java/com/hbm/handler/HTTPHandler.java @@ -17,15 +17,22 @@ public class HTTPHandler { public static String versionNumber = ""; public static void loadStats() { - - try { - - loadVersion(); - loadSoyuz(); - - } catch(IOException e) { - MainRegistry.logger.warn("Version checker failed!"); - } + + Thread versionChecker = new Thread("NTM Version Checker") { + + @Override + public void run() { + try { + loadVersion(); + loadSoyuz(); + } catch(IOException e) { + MainRegistry.logger.warn("Version checker failed!"); + } + } + + }; + + versionChecker.start(); } private static void loadVersion() throws IOException { diff --git a/src/main/java/com/hbm/handler/HbmKeybinds.java b/src/main/java/com/hbm/handler/HbmKeybinds.java index 19ae602f3..6ae2507e1 100644 --- a/src/main/java/com/hbm/handler/HbmKeybinds.java +++ b/src/main/java/com/hbm/handler/HbmKeybinds.java @@ -22,7 +22,8 @@ public class HbmKeybinds { public static KeyBinding jetpackKey = new KeyBinding(category + ".toggleBack", Keyboard.KEY_C, category); public static KeyBinding hudKey = new KeyBinding(category + ".toggleHUD", Keyboard.KEY_V, category); public static KeyBinding reloadKey = new KeyBinding(category + ".reload", Keyboard.KEY_R, category); - public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_F, category); + public static KeyBinding dashKey = new KeyBinding(category + ".dash", Keyboard.KEY_LSHIFT, category); + public static KeyBinding trainKey = new KeyBinding(category + ".trainInv", Keyboard.KEY_R, category); public static KeyBinding craneUpKey = new KeyBinding(category + ".craneMoveUp", Keyboard.KEY_UP, category); public static KeyBinding craneDownKey = new KeyBinding(category + ".craneMoveDown", Keyboard.KEY_DOWN, category); @@ -36,6 +37,7 @@ public class HbmKeybinds { ClientRegistry.registerKeyBinding(hudKey); ClientRegistry.registerKeyBinding(reloadKey); ClientRegistry.registerKeyBinding(dashKey); + ClientRegistry.registerKeyBinding(trainKey); ClientRegistry.registerKeyBinding(craneUpKey); ClientRegistry.registerKeyBinding(craneDownKey); @@ -69,6 +71,7 @@ public class HbmKeybinds { TOGGLE_HEAD, RELOAD, DASH, + TRAIN, CRANE_UP, CRANE_DOWN, CRANE_LEFT, diff --git a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java index c8e3bebd0..01549a613 100644 --- a/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/BulletConfigFactory.java @@ -4,13 +4,12 @@ import java.util.List; import java.util.Random; import com.hbm.entity.particle.EntityBSmokeFX; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.explosion.ExplosionNukeSmall.MukeParams; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ModItems; @@ -144,10 +143,10 @@ public class BulletConfigFactory { bullet.leadChance = 0; bullet.vPFX = "reddust"; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(bullet.worldObj.isRemote) return; @@ -164,9 +163,10 @@ public class BulletConfigFactory { Vec3 motion = Vec3.createVectorHelper(bullet.posX - dx, bullet.posY - dy, bullet.posZ - dz); motion = motion.normalize(); - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.R556_FLECHETTE_DU); + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.R556_FLECHETTE_DU); bolt.setPosition(dx, dy, dz); bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.1F); + bolt.setThrower(bullet.getThrower()); bullet.worldObj.spawnEntityInWorld(bolt); if(i < 30) { @@ -310,12 +310,12 @@ public class BulletConfigFactory { } } - public static IBulletImpactBehavior getPhosphorousEffect(final int radius, final int duration, final int count, final double motion, float hazeChance) { + public static IBulletImpactBehaviorNT getPhosphorousEffect(final int radius, final int duration, final int count, final double motion, float hazeChance) { - IBulletImpactBehavior impact = new IBulletImpactBehavior() { + IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { List hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius)); @@ -352,12 +352,12 @@ public class BulletConfigFactory { return impact; } - public static IBulletImpactBehavior getGasEffect(final int radius, final int duration) { + public static IBulletImpactBehaviorNT getGasEffect(final int radius, final int duration) { - IBulletImpactBehavior impact = new IBulletImpactBehavior() { + IBulletImpactBehaviorNT impact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { List hit = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet, AxisAlignedBB.getBoundingBox(bullet.posX - radius, bullet.posY - radius, bullet.posZ - radius, bullet.posX + radius, bullet.posY + radius, bullet.posZ + radius)); @@ -401,20 +401,20 @@ public class BulletConfigFactory { return impact; } - public static IBulletUpdateBehavior getLaserSteering() { + public static IBulletUpdateBehaviorNT getLaserSteering() { - IBulletUpdateBehavior onUpdate = new IBulletUpdateBehavior() { + IBulletUpdateBehaviorNT onUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { - if(bullet.shooter == null || !(bullet.shooter instanceof EntityPlayer)) + if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return; - if(Vec3.createVectorHelper(bullet.posX - bullet.shooter.posX, bullet.posY - bullet.shooter.posY, bullet.posZ - bullet.shooter.posZ).lengthVector() > 100) + if(Vec3.createVectorHelper(bullet.posX - bullet.getThrower().posX, bullet.posY - bullet.getThrower().posY, bullet.posZ - bullet.getThrower().posZ).lengthVector() > 100) return; - MovingObjectPosition mop = Library.rayTrace((EntityPlayer)bullet.shooter, 200, 1); + MovingObjectPosition mop = Library.rayTrace((EntityPlayer)bullet.getThrower(), 200, 1); if(mop == null || mop.hitVec == null) return; @@ -438,12 +438,12 @@ public class BulletConfigFactory { return onUpdate; } - public static IBulletUpdateBehavior getHomingBehavior(final double range, final double angle) { + public static IBulletUpdateBehaviorNT getHomingBehavior(final double range, final double angle) { - IBulletUpdateBehavior onUpdate = new IBulletUpdateBehavior() { + IBulletUpdateBehaviorNT onUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -467,7 +467,7 @@ public class BulletConfigFactory { } } - private void chooseTarget(EntityBulletBase bullet) { + private void chooseTarget(EntityBulletBaseNT bullet) { List entities = bullet.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, bullet.boundingBox.expand(range, range, range)); @@ -478,7 +478,7 @@ public class BulletConfigFactory { for(EntityLivingBase e : entities) { - if(!e.isEntityAlive() || e == bullet.shooter) + if(!e.isEntityAlive() || e == bullet.getThrower()) continue; Vec3 delta = Vec3.createVectorHelper(e.posX - bullet.posX, e.posY + e.height / 2 - bullet.posY, e.posZ - bullet.posZ); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 12bf84902..424deacfc 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -2,12 +2,9 @@ package com.hbm.handler.guncfg; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo12Gauge; import com.hbm.items.ModItems; @@ -48,6 +45,44 @@ public class Gun12GaugeFactory { CASING12GAUGE = new SpentCasing(CasingType.SHOTGUN).setScale(1.5F).setBounceMotion(0.05F, 0.02F).setupSmoke(0.5F, 0.5D, 60, 20); } + + public static GunConfiguration getRemington870Config() { + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 25; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 10; + config.firingDuration = 5; + config.ammoCap = 5; + config.durability = 1000; + config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.allowsInfinity = true; + config.crosshair = Crosshair.CIRCLE; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.shotgunPump"; + + config.name = "remington870"; + config.manufacturer = EnumGunManufacturer.REMINGTON; + + config.config = HbmCollection.g12hs; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL_TRANSLATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, -2, 100)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + ) + .addBus("PUMP", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 450)) + .addKeyframe(new BusAnimationKeyframe(0, 0, -1.8, 200)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200)) + ) + ); + + config.ejector = EJECTOR_SPAS; + return config; + } public static GunConfiguration getSpas12Config() { @@ -109,7 +144,7 @@ public class Gun12GaugeFactory { config.firingSound = "hbm:weapon.shotgunPump"; config.reloadType = GunConfiguration.RELOAD_SINGLE; - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_SPAS_ALT; @@ -137,7 +172,7 @@ public class Gun12GaugeFactory { config.name = "uboinik"; config.manufacturer = EnumGunManufacturer.METRO; - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_UBOINIK; @@ -190,12 +225,78 @@ public class Gun12GaugeFactory { config.manufacturer = EnumGunManufacturer.UAC; config.comment.add("God-damned ARCH-VILES!"); - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_SSG; return config; } + + public static GunConfiguration getBenelliConfig() { + + GunConfiguration config = getUboinikConfig(); + + config.gunMode = 0; + config.firingMode = 1; + config.rateOfFire = 5; + config.ammoCap = 8; + config.reloadDuration = 8; + config.crosshair = Crosshair.CIRCLE; + config.hasSights = true; + config.durability = 250000; + config.allowsInfinity = true; + config.firingSound = "hbm:weapon.deagleShoot"; + config.firingPitch = 0.75F; + config.reloadType = 2; + config.reloadSoundEnd = true; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(6.25, 0.25, 2.5, 55)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 55)) + ) + .addBus("EJECT", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(25, 0, 0, 100)) + ) + ); + + config.animations.put(AnimType.RELOAD, new BusAnimation() + .addBus("RELOAD", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(60, 0, -10, 400)) + .addKeyframe(new BusAnimationKeyframe(60, 125, -10, 200)) + .addKeyframe(new BusAnimationKeyframe(60, 125, -10, 300)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 300)) + ) + .addBus("PUMP", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 900)) + .addKeyframe(new BusAnimationKeyframe(10, 0, 0, 200)) + .addKeyframe(new BusAnimationKeyframe()) + ) + ); + + config.name = "benelli"; + config.manufacturer = EnumGunManufacturer.BENELLI; + config.comment.add("Eat your heart out SPAS-12"); + config.config = HbmCollection.g12; + + config.ejector = EJECTOR_BENELLI; + + return config; + } + + public static GunConfiguration getBenelliModConfig() { + + GunConfiguration config = getBenelliConfig(); + + config.reloadType = 1; + config.ammoCap = 24; + config.reloadDuration = 20; + config.reloadSound = config.RSOUND_MAG; + config.reloadSoundEnd = true; + config.name += "Drum"; + return config; + } public static BulletConfiguration get12GaugeConfig() { @@ -268,14 +369,10 @@ public class Gun12GaugeFactory { bullet.dmgMax = 500; bullet.leadChance = 50; - bullet.bHurt = new IBulletHurtBehavior() { - - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { + bullet.bntHurt = (bulletnt, hit) -> { - if(hit instanceof EntityLivingBase) - ((EntityLivingBase)hit).addPotionEffect(new PotionEffect(HbmPotion.bang.id, 20, 0)); - } + if(hit instanceof EntityLivingBase) + ((EntityLivingBase)hit).addPotionEffect(new PotionEffect(HbmPotion.bang.id, 20, 0)); }; @@ -309,42 +406,37 @@ public class Gun12GaugeFactory { bullet.spentCasing = CASING12GAUGE.clone().register("12GaPerc").setColor(0x9E1616, SpentCasing.COLOR_CASE_12GA).setupSmoke(1F, 0.5D, 60, 40); - bullet.bUpdate = new IBulletUpdateBehavior() { - - @Override - public void behaveUpdate(EntityBulletBase bullet) { + bullet.bntUpdate = (bulletnt) -> { + + if(!bulletnt.worldObj.isRemote) { + + Vec3 vec = Vec3.createVectorHelper(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ); + double radius = 4; + double x = bulletnt.posX + vec.xCoord; + double y = bulletnt.posY + vec.yCoord; + double z = bulletnt.posZ + vec.zCoord; + AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x, y, z, x, y, z).expand(radius, radius, radius); + List list = bulletnt.worldObj.getEntitiesWithinAABBExcludingEntity(bulletnt.getThrower(), aabb); - if(!bullet.worldObj.isRemote) { - - Vec3 vec = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ); - double radius = 4; - double x = bullet.posX + vec.xCoord; - double y = bullet.posY + vec.yCoord; - double z = bullet.posZ + vec.zCoord; - AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(x, y, z, x, y, z).expand(radius, radius, radius); - List list = bullet.worldObj.getEntitiesWithinAABBExcludingEntity(bullet.shooter, aabb); - - for(Entity e : list) { - DamageSource source = bullet.shooter instanceof EntityPlayer ? DamageSource.causePlayerDamage((EntityPlayer) bullet.shooter) : DamageSource.magic; - e.attackEntityFrom(source, 30F); - } - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "plasmablast"); - data.setFloat("r", 0.75F); - data.setFloat("g", 0.75F); - data.setFloat("b", 0.75F); - data.setFloat("pitch", (float) -bullet.rotationPitch + 90); - data.setFloat("yaw", (float) bullet.rotationYaw); - data.setFloat("scale", 2F); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(bullet.dimension, x, y, z, 100)); - - bullet.setDead(); + for(Entity e : list) { + DamageSource source = bulletnt.getThrower() instanceof EntityPlayer ? DamageSource.causePlayerDamage((EntityPlayer) bulletnt.getThrower()) : DamageSource.magic; + e.attackEntityFrom(source, 30F); } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.75F); + data.setFloat("g", 0.75F); + data.setFloat("b", 0.75F); + data.setFloat("pitch", (float) -bulletnt.rotationPitch + 90); + data.setFloat("yaw", (float) bulletnt.rotationYaw); + data.setFloat("scale", 2F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x, y, z), new TargetPoint(bulletnt.dimension, x, y, z, 100)); + + bulletnt.setDead(); } }; return bullet; } - } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java index b99da2c21..a985bf636 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun20GaugeFactory.java @@ -78,6 +78,8 @@ public class Gun20GaugeFactory { config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.75F; + config.hasSights = true; + config.zoomFOV = 0.75F; config.name = "win1887"; config.manufacturer = EnumGunManufacturer.WINCHESTER; @@ -95,6 +97,8 @@ public class Gun20GaugeFactory { config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; config.firingSound = "hbm:weapon.revolverShootAlt"; config.firingPitch = 0.75F; + config.hasSights = true; + config.zoomFOV = 0.75F; config.name = "win1887Inox"; config.manufacturer = EnumGunManufacturer.WINCHESTER; @@ -104,114 +108,6 @@ public class Gun20GaugeFactory { return config; } - public static GunConfiguration getBoltConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.ammoCap = 1; - config.durability = 3000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick - .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again - ) - ); - - config.name = "win20Inox"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.config = HbmCollection.g20; - - return config; - } - - public static GunConfiguration getBoltGreenConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.ammoCap = 1; - config.durability = 2500; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick - .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again - ) - ); - - config.name = "win20Poly"; - config.manufacturer = EnumGunManufacturer.WINCHESTER; - - config.config = HbmCollection.g20; - - return config; - } - - public static GunConfiguration getBoltSaturniteConfig() { - - GunConfiguration config = getShotgunConfig(); - - config.ammoCap = 1; - config.durability = 4000; - config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; - config.firingSound = "hbm:weapon.revolverShoot"; - config.firingPitch = 0.75F; - - config.animations.put(AnimType.CYCLE, new BusAnimation() - .addBus("RECOIL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) - ) - .addBus("LEVER_PULL", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick - .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt - ) - .addBus("LEVER_ROTATE", new BusAnimationSequence() - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms - .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action - .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again - ) - ); - - config.name = "win20Satur"; - config.manufacturer = EnumGunManufacturer.WINCHESTER_BIGMT; - - config.config = HbmCollection.g20; - - return config; - } - public static BulletConfiguration get20GaugeConfig() { BulletConfiguration bullet = BulletConfigFactory.standardBuckshotConfig(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java index 05ad9902a..a0dff1be2 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun44MagnumFactory.java @@ -5,14 +5,11 @@ import java.util.ArrayList; import com.hbm.entity.particle.EntityBSmokeFX; import com.hbm.entity.projectile.EntityBoxcar; import com.hbm.entity.projectile.EntityBuilding; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.entity.projectile.EntityDuchessGambit; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo44Magnum; @@ -27,7 +24,6 @@ import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; import net.minecraft.util.ResourceLocation; @@ -227,19 +223,15 @@ public class Gun44MagnumFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING44.clone().register("44Phos"); @@ -272,27 +264,21 @@ public class Gun44MagnumFactory { bullet.wear = 25; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { - - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { + bullet.bntHit = (bulletnt, hit) -> { - if(!bullet.worldObj.isRemote) { - EntityBoxcar pippo = new EntityBoxcar(bullet.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 50; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bullet.worldObj, pippo.posX + (bullet.worldObj.rand.nextDouble() - 0.5) * 4, pippo.posY + (bullet.worldObj.rand.nextDouble() - 0.5) * 12, pippo.posZ + (bullet.worldObj.rand.nextDouble() - 0.5) * 4, 0, 0, 0); - bullet.worldObj.spawnEntityInWorld(fx); - } - bullet.worldObj.spawnEntityInWorld(pippo); - - bullet.worldObj.playSoundEffect(pippo.posX, - pippo.posY + 50, - pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); + if(!bulletnt.worldObj.isRemote) { + EntityBoxcar pippo = new EntityBoxcar(bulletnt.worldObj); + pippo.posX = hit.posX; + pippo.posY = hit.posY + 50; + pippo.posZ = hit.posZ; + + for(int j = 0; j < 50; j++) { + EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 4, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 12, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 4, 0, 0, 0); + bulletnt.worldObj.spawnEntityInWorld(fx); } + bulletnt.worldObj.spawnEntityInWorld(pippo); + + bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:alarm.trainHorn", 100F, 1F); } }; @@ -311,29 +297,22 @@ public class Gun44MagnumFactory { bullet.wear = 25; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { - - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { + bullet.bntHit = (bulletnt, hit) -> { - if(!bullet.worldObj.isRemote) { - EntityDuchessGambit pippo = new EntityDuchessGambit(bullet.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 150; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bullet.worldObj, pippo.posX + (bullet.worldObj.rand.nextDouble() - 0.5) * 7, pippo.posY + (bullet.worldObj.rand.nextDouble() - 0.5) * 8, pippo.posZ + (bullet.worldObj.rand.nextDouble() - 0.5) * 18, 0, 0, 0); - bullet.worldObj.spawnEntityInWorld(fx); - } - bullet.worldObj.spawnEntityInWorld(pippo); - - bullet.worldObj.playSoundEffect(pippo.posX, - pippo.posY + 50, - pippo.posZ, "hbm:weapon.boat", 100F, 1F); + if(!bulletnt.worldObj.isRemote) { + EntityDuchessGambit pippo = new EntityDuchessGambit(bulletnt.worldObj); + pippo.posX = hit.posX; + pippo.posY = hit.posY + 50; + pippo.posZ = hit.posZ; + + for(int j = 0; j < 150; j++) { + EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 7, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 8, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 18, 0, 0, 0); + bulletnt.worldObj.spawnEntityInWorld(fx); } + bulletnt.worldObj.spawnEntityInWorld(pippo); + + bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:weapon.boat", 100F, 1F); } - }; bullet.spentCasing = CASING44.clone().register("44BJ").setColor(0x632B2C); @@ -351,29 +330,22 @@ public class Gun44MagnumFactory { bullet.wear = 25; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { - - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { + bullet.bntHit = (bulletnt, hit) -> { - if(!bullet.worldObj.isRemote) { - EntityBuilding pippo = new EntityBuilding(bullet.worldObj); - pippo.posX = hit.posX; - pippo.posY = hit.posY + 50; - pippo.posZ = hit.posZ; - - for(int j = 0; j < 150; j++) { - EntityBSmokeFX fx = new EntityBSmokeFX(bullet.worldObj, pippo.posX + (bullet.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posY + (bullet.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posZ + (bullet.worldObj.rand.nextDouble() - 0.5) * 15, 0, 0, 0); - bullet.worldObj.spawnEntityInWorld(fx); - } - bullet.worldObj.spawnEntityInWorld(pippo); - - bullet.worldObj.playSoundEffect(pippo.posX, - pippo.posY + 50, - pippo.posZ, "hbm:block.debris", 100F, 1F); + if(!bulletnt.worldObj.isRemote) { + EntityBuilding pippo = new EntityBuilding(bulletnt.worldObj); + pippo.posX = hit.posX; + pippo.posY = hit.posY + 50; + pippo.posZ = hit.posZ; + + for(int j = 0; j < 150; j++) { + EntityBSmokeFX fx = new EntityBSmokeFX(bulletnt.worldObj, pippo.posX + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posY + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, pippo.posZ + (bulletnt.worldObj.rand.nextDouble() - 0.5) * 15, 0, 0, 0); + bulletnt.worldObj.spawnEntityInWorld(fx); } + bulletnt.worldObj.spawnEntityInWorld(pippo); + + bulletnt.worldObj.playSoundEffect(pippo.posX, pippo.posY + 50, pippo.posZ, "hbm:block.debris", 100F, 1F); } - }; bullet.spentCasing = CASING44.clone().register("44Silver").setColor(0x2B5963); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java index 21e3db275..b4f25aa06 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun45ACPFactory.java @@ -67,9 +67,11 @@ public class Gun45ACPFactory { config.reloadType = 1; config.allowsInfinity = true; config.hasSights = true; + config.absoluteFOV = true; + config.zoomFOV = 0.5F; config.crosshair = Crosshair.CROSS; - config.reloadSound = "hbm:weapon.pistolReloadPB3"; - config.firingSound = "hbm:weapon.pistolFirePB3"; + config.reloadSound = GunConfiguration.RSOUND_MAG; + config.firingSound = "hbm:weapon.deagleShoot"; config.reloadSoundEnd = true; config.name = "uacPistol"; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java index 191867b61..191c0eb93 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun4GaugeFactory.java @@ -3,7 +3,7 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNT.ExAttrib; @@ -12,9 +12,6 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; @@ -33,7 +30,6 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityCreature; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -209,19 +205,15 @@ public class Gun4GaugeFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING4GAUGE.clone().register("4GaPhos").setColor(0xF6871A, SpentCasing.COLOR_CASE_4GA); @@ -259,22 +251,18 @@ public class Gun4GaugeFactory { bullet.trail = 1; bullet.explosive = 0.0F; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - ExplosionNT explosion = new ExplosionNT(bullet.worldObj, null, bullet.posX, bullet.posY, bullet.posZ, 4); - explosion.atttributes.add(ExAttrib.ALLDROP); - explosion.atttributes.add(ExAttrib.NOHURT); - explosion.doExplosionA(); - explosion.doExplosionB(false); - - ExplosionLarge.spawnParticles(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 15); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + + if(bulletnt.worldObj.isRemote) + return; + + ExplosionNT explosion = new ExplosionNT(bulletnt.worldObj, null, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 4); + explosion.atttributes.add(ExAttrib.ALLDROP); + explosion.atttributes.add(ExAttrib.NOHURT); + explosion.doExplosionA(); + explosion.doExplosionB(false); + + ExplosionLarge.spawnParticles(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 15); }; bullet.spentCasing = CASING4GAUGE.clone().register("4GaSem").setColor(0x5C5C5C, SpentCasing.COLOR_CASE_4GA); @@ -295,21 +283,17 @@ public class Gun4GaugeFactory { bullet.trail = 1; bullet.explosive = 0.0F; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - ExplosionNT explosion = new ExplosionNT(bullet.worldObj, null, bullet.posX, bullet.posY, bullet.posZ, 6); - explosion.atttributes.add(ExAttrib.BALEFIRE); - explosion.doExplosionA(); - explosion.doExplosionB(false); - - ExplosionLarge.spawnParticles(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 30); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + + if(bulletnt.worldObj.isRemote) + return; + + ExplosionNT explosion = new ExplosionNT(bulletnt.worldObj, null, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 6); + explosion.atttributes.add(ExAttrib.BALEFIRE); + explosion.doExplosionA(); + explosion.doExplosionB(false); + + ExplosionLarge.spawnParticles(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 30); }; bullet.spentCasing = CASING4GAUGE.clone().register("4GaBale").setColor(0x7BFF44, SpentCasing.COLOR_CASE_4GA); @@ -348,23 +332,20 @@ public class Gun4GaugeFactory { bullet.trail = 4; bullet.vPFX = "smoke"; - bullet.bUpdate = new IBulletUpdateBehavior() { - - @Override - public void behaveUpdate(EntityBulletBase bullet) { + bullet.bntUpdate = (bulletnt) -> { + + if(!bulletnt.worldObj.isRemote) { - if(!bullet.worldObj.isRemote) { + if(bulletnt.ticksExisted > 10) { + bulletnt.setDead(); - if(bullet.ticksExisted > 10) { - bullet.setDead(); + for(int i = 0; i < 50; i++) { - for(int i = 0; i < 50; i++) { - - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.M44_AP); - bolt.setPosition(bullet.posX, bullet.posY, bullet.posZ); - bolt.setThrowableHeading(bullet.motionX, bullet.motionY, bullet.motionZ, 0.25F, 0.1F); - bullet.worldObj.spawnEntityInWorld(bolt); - } + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.M44_AP); + bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); + bolt.setThrowableHeading(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ, 0.25F, 0.1F); + bolt.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(bolt); } } } @@ -397,25 +378,21 @@ public class Gun4GaugeFactory { bullet.bulletsMax *= 2; bullet.leadChance = 100; - bullet.bHurt = new IBulletHurtBehavior() { - - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { + bullet.bntHurt = (bulletnt, hit) -> { + + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) hit; + float f = living.getHealth(); - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) hit; - float f = living.getHealth(); + if(f > 0) { + f = Math.max(0, f - 2); + living.setHealth(f); - if(f > 0) { - f = Math.max(0, f - 2); - living.setHealth(f); - - if(f == 0) - living.onDeath(ModDamageSource.causeBulletDamage(bullet, hit)); - } + if(f == 0) + living.onDeath(ModDamageSource.causeBulletDamage(bulletnt, hit)); } } }; @@ -437,25 +414,21 @@ public class Gun4GaugeFactory { bullet.leadChance = 100; bullet.style = BulletConfiguration.STYLE_FLECHETTE; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) hit; - - IExtendedEntityProperties prop = player.getExtendedProperties("WitcheryExtendedPlayer"); - - NBTTagCompound blank = new NBTTagCompound(); - blank.setTag("WitcheryExtendedPlayer", new NBTTagCompound()); - - if(prop != null) { - prop.loadNBTData(blank); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) hit; + + IExtendedEntityProperties prop = player.getExtendedProperties("WitcheryExtendedPlayer"); + + NBTTagCompound blank = new NBTTagCompound(); + blank.setTag("WitcheryExtendedPlayer", new NBTTagCompound()); + + if(prop != null) { + prop.loadNBTData(blank); } } }; @@ -476,20 +449,16 @@ public class Gun4GaugeFactory { bullet.bulletsMax *= 2; bullet.leadChance = 0; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { + + if(bulletnt.worldObj.isRemote) + return; - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityPlayer) { - EntityPlayer player = (EntityPlayer) hit; - - player.inventory.dropAllItems(); - player.worldObj.newExplosion(bullet.shooter, player.posX, player.posY, player.posZ, 5.0F, true, true); - } + if(hit instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) hit; + + player.inventory.dropAllItems(); + player.worldObj.newExplosion(bulletnt.getThrower(), player.posX, player.posY, player.posZ, 5.0F, true, true); } }; @@ -512,27 +481,20 @@ public class Gun4GaugeFactory { bullet.trail = 4; bullet.vPFX = "explode"; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - if(bullet.ticksExisted % 2 == 0) { - - List creatures = bullet.worldObj.getEntitiesWithinAABB(EntityCreature.class, bullet.boundingBox.expand(10, 10, 10)); - - for(EntityCreature creature : creatures) { - - if(creature.getClass().getCanonicalName().startsWith("net.minecraft.entity.titan")) { - BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS); + if(!bulletnt.worldObj.isRemote) { + if(bulletnt.ticksExisted % 2 == 0) { - bullet.worldObj.removeEntity(creature); - bullet.worldObj.unloadEntities(new ArrayList() {{ add(creature); }}); - } + List creatures = bulletnt.worldObj.getEntitiesWithinAABB(EntityCreature.class, bulletnt.boundingBox.expand(10, 10, 10)); + for(EntityCreature creature : creatures) { + + if(creature.getClass().getCanonicalName().startsWith("net.minecraft.entity.titan")) { + BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS); + + bulletnt.worldObj.removeEntity(creature); + bulletnt.worldObj.unloadEntities(new ArrayList() {{ add(creature); }}); } - } } } diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index c7d290c35..beda66771 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -2,13 +2,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo50BMG; @@ -31,7 +29,6 @@ import com.hbm.util.ContaminationUtil.ContaminationType; import com.hbm.util.ContaminationUtil.HazardType; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; @@ -65,7 +62,7 @@ public class Gun50BMGFactory { bullet.leadChance = 20; bullet.blockDamage = false; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); + bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaStock"); @@ -79,7 +76,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 1; bullet.incendiary = 10; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); + bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); @@ -94,7 +91,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 2; bullet.explosive = 25; bullet.destroysBlocks = true; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); + bullet.bntImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); @@ -267,19 +264,15 @@ public class Gun50BMGFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING50BMG.clone().register("50BMGPhos"); @@ -363,39 +356,31 @@ public class Gun50BMGFactory { bullet.leadChance = 100; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + if(y == -1) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; bullet.spentCasing = CASING50BMG.clone().register("50BMGIF"); @@ -428,17 +413,13 @@ public class Gun50BMGFactory { bullet.dmgMax = 64; bullet.style = bullet.STYLE_FLECHETTE; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 100F); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 100F); } }; @@ -457,17 +438,13 @@ public class Gun50BMGFactory { bullet.dmgMax = 64; bullet.style = bullet.STYLE_FLECHETTE; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 50F); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + ContaminationUtil.contaminate((EntityLivingBase) hit, HazardType.RADIATION, ContaminationType.RAD_BYPASS, 50F); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java index dec4e5b73..d983998e8 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun556mmFactory.java @@ -2,13 +2,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHitBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo556mm; import com.hbm.items.ModItems; @@ -26,7 +24,6 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; @@ -185,19 +182,15 @@ public class Gun556mmFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING556.clone().register("556Phos"); @@ -261,39 +254,31 @@ public class Gun556mmFactory { bullet.leadChance = 100; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; - - bullet.bImpact = new IBulletImpactBehavior() { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + + if(bulletnt.worldObj.isRemote) + return; + + if(y == -1) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; bullet.spentCasing = CASING556.clone().register("556IF"); @@ -355,19 +340,15 @@ public class Gun556mmFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; bullet.spentCasing = CASING556.clone().register("556FlecPhos"); @@ -402,39 +383,31 @@ public class Gun556mmFactory { bullet.leadChance = 50; bullet.doesPenetrate = false; - bullet.bHit = new IBulletHitBehavior() { + bullet.bntHit = (bulletnt, hit) -> { - @Override - public void behaveEntityHit(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(hit.posX, hit.posY + 30 + meteor.worldObj.rand.nextInt(10), hit.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - if(y == -1) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + if(bulletnt.worldObj.isRemote) + return; + + if(y == -1) + return; + + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; bullet.spentCasing = CASING556.clone().register("556FlecIF"); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java index 89d7f2c7c..b3d9bae6f 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun75BoltFactory.java @@ -2,11 +2,8 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo75Bolt; import com.hbm.items.ModItems; @@ -23,7 +20,6 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.PotionEffect; @@ -96,25 +92,21 @@ public class Gun75BoltFactory { bullet.doesRicochet = false; bullet.explosive = 0.25F; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - EntityLivingBase living = (EntityLivingBase) hit; - float f = living.getHealth(); - - if(f > 0) { - f = Math.max(0, f - 2); - living.setHealth(f); - - if(f == 0) - living.onDeath(ModDamageSource.lead); - } + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) hit; + float f = living.getHealth(); + + if(f > 0) { + f = Math.max(0, f - 2); + living.setHealth(f); + + if(f == 0) + living.onDeath(ModDamageSource.lead); } } }; @@ -142,19 +134,15 @@ public class Gun75BoltFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(eff)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "vanillaburst"); - data.setString("mode", "flame"); - data.setInteger("count", 15); - data.setDouble("motion", 0.05D); - - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), new TargetPoint(bullet.dimension, bullet.posX, bullet.posY, bullet.posZ, 50)); - } + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaburst"); + data.setString("mode", "flame"); + data.setInteger("count", 15); + data.setDouble("motion", 0.05D); + + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), new TargetPoint(bulletnt.dimension, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 50)); }; return bullet; diff --git a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java index 744314be0..4dec2a175 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun762mmFactory.java @@ -9,6 +9,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.Ammo762NATO; import com.hbm.lib.HbmCollection; +import com.hbm.lib.RefStrings; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.particle.SpentCasing; import com.hbm.particle.SpentCasing.CasingType; @@ -20,14 +21,19 @@ import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; import net.minecraft.potion.PotionEffect; +import net.minecraft.util.ResourceLocation; public class Gun762mmFactory { + public static final ResourceLocation scope_bolt = new ResourceLocation(RefStrings.MODID, "textures/misc/scope_bolt.png"); + private static final CasingEjector EJECTOR_RIFLE; + private static final CasingEjector EJECTOR_BOLT; private static final SpentCasing CASING762NATO; static { EJECTOR_RIFLE = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F); + EJECTOR_BOLT = new CasingEjector().setMotion(-0.35, 0.6, 0).setOffset(-0.35, 0, 0.35).setAngleRange(0.01F, 0.03F).setDelay(15); CASING762NATO = new SpentCasing(CasingType.BOTTLENECK).setScale(1.7F).setBounceMotion(0.01F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS); } @@ -157,13 +163,134 @@ public class Gun762mmFactory { return config; } + + public static GunConfiguration getBoltConfig() { + + GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); + + config.ammoCap = 5; + config.durability = 3000; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.revolverShoot"; + config.firingPitch = 0.75F; + config.crosshair = Crosshair.CIRCLE; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + .addBus("LEVER_PULL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick + .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt + ) + .addBus("LEVER_ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again + ) + ); + + config.name = "win20Inox"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; + + config.ejector = EJECTOR_BOLT; + + config.config = HbmCollection.r762; + + return config; + } + + public static GunConfiguration getBoltGreenConfig() { + + GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); + + config.ammoCap = 5; + config.durability = 2500; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.revolverShoot"; + config.firingPitch = 0.75F; + config.crosshair = Crosshair.CIRCLE; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + .addBus("LEVER_PULL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick + .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt + ) + .addBus("LEVER_ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again + ) + ); + + config.name = "win20Poly"; + config.manufacturer = EnumGunManufacturer.WINCHESTER; + + config.ejector = EJECTOR_BOLT; + + config.config = HbmCollection.r762; + + return config; + } + + public static GunConfiguration getBoltSaturniteConfig() { + + GunConfiguration config = Gun20GaugeFactory.getShotgunConfig(); + + config.ammoCap = 5; + config.durability = 4000; + config.reloadSound = GunConfiguration.RSOUND_SHOTGUN; + config.firingSound = "hbm:weapon.revolverShoot"; + config.firingPitch = 0.75F; + config.hasSights = true; + config.absoluteFOV = true; + config.zoomFOV = 0.25F; + config.scopeTexture = scope_bolt; + config.crosshair = Crosshair.CIRCLE; + + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + .addBus("LEVER_PULL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //wait out recoil and lever flick + .addKeyframe(new BusAnimationKeyframe(-1, 0, 0, 375)) //pull back bolt + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 375)) //release bolt + ) + .addBus("LEVER_ROTATE", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250)) //wait out recoil + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 125)) //flick up lever in 125ms + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 750)) //pull action + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 125)) //flick down lever again + ) + ); + + config.name = "win20Satur"; + config.manufacturer = EnumGunManufacturer.WINCHESTER_BIGMT; + + config.ejector = EJECTOR_BOLT; + + config.config = HbmCollection.r762; + + return config; + } public static BulletConfiguration get762NATOConfig() { final BulletConfiguration bullet = Gun556mmFactory.get556Config().clone(); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.STOCK)); - bullet.dmgMax *= 2; - bullet.dmgMin *= 2; + bullet.dmgMax = 20; + bullet.dmgMin = 24; bullet.velocity *= 2.5; bullet.maxAge *= 2; bullet.spread /= 2; @@ -177,8 +304,8 @@ public class Gun762mmFactory { final BulletConfiguration bullet = get762NATOConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.AP)); - bullet.dmgMax *= 1.5; - bullet.dmgMin *= 1.5; + bullet.dmgMax = 24; + bullet.dmgMin = 28; bullet.spentCasing = CASING762NATO.clone().register("762NATOAP"); @@ -189,8 +316,8 @@ public class Gun762mmFactory { final BulletConfiguration bullet = get762NATOConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_762.stackFromEnum(Ammo762NATO.DU)); - bullet.dmgMax *= 2; - bullet.dmgMin *= 2; + bullet.dmgMax = 36; + bullet.dmgMin = 40; bullet.spentCasing = CASING762NATO.clone().register("762NATODU"); diff --git a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java index 42a79013e..2d8710522 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunCannonFactory.java @@ -1,9 +1,7 @@ package com.hbm.handler.guncfg; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.Ammo240Shell; import com.hbm.items.ModItems; @@ -86,12 +84,8 @@ public class GunCannonFactory { bullet.dmgMin = 100; bullet.dmgMax = 150; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); }; bullet.spentCasing = CASINNG240MM; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java index 70c743232..07bcc2878 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDartFactory.java @@ -2,12 +2,10 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletHurtBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.AmmoDart; import com.hbm.items.ModItems; @@ -16,7 +14,6 @@ import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.main.MainRegistry; import com.hbm.render.util.RenderScreenOverlay.Crosshair; -import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.potion.Potion; @@ -103,27 +100,23 @@ public class GunDartFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(Potion.wither.id, 60 * 20, 2)); - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) + if(bulletnt.worldObj.isRemote) + return; + + if(hit instanceof EntityPlayer) { + + if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) return; - - if(hit instanceof EntityPlayer) { - - if(((EntityPlayer) hit).inventory.hasItem(ModItems.ingot_meteorite_forged)) - return; - - if(bullet.shooter instanceof EntityPlayer) { - - EntityPlayer shooter = (EntityPlayer) bullet.shooter; - - if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { - ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer)hit); - shooter.playSound("random.orb", 1.0F, 1.0F); - } + + if(bulletnt.getThrower() instanceof EntityPlayer) { + + EntityPlayer shooter = (EntityPlayer) bulletnt.getThrower(); + + if(shooter.getHeldItem() != null && shooter.getHeldItem().getItem() == ModItems.gun_darter) { + ItemGunDart.writePlayer(shooter.getHeldItem(), (EntityPlayer) hit); + shooter.playSound("random.orb", 1.0F, 1.0F); } } } @@ -146,23 +139,19 @@ public class GunDartFactory { bullet.style = bullet.STYLE_FLECHETTE; bullet.leadChance = 0; - bullet.bHurt = new IBulletHurtBehavior() { + bullet.bntHurt = (bulletnt, hit) -> { - @Override - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit) { - - if(bullet.worldObj.isRemote) - return; - - if(hit instanceof EntityLivingBase) { - - EntityLivingBase e = (EntityLivingBase) hit; + if(bulletnt.worldObj.isRemote) + return; - if(HbmLivingProps.getRadiation(e) < 250) - HbmLivingProps.setRadiation(e, 250); - if(HbmLivingProps.getTimer(e) <= 0) - HbmLivingProps.setTimer(e, MainRegistry.polaroidID * 60 * 20); - } + if(hit instanceof EntityLivingBase) { + + EntityLivingBase e = (EntityLivingBase) hit; + + if(HbmLivingProps.getRadiation(e) < 250) + HbmLivingProps.setRadiation(e, 250); + if(HbmLivingProps.getTimer(e) <= 0) + HbmLivingProps.setTimer(e, MainRegistry.polaroidID * 60 * 20); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java index dad35a32a..ab25f43bc 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunDetonatorFactory.java @@ -2,14 +2,12 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.interfaces.IBomb; import com.hbm.interfaces.IBomb.BombReturnCode; import com.hbm.main.MainRegistry; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.packet.PacketDispatcher; @@ -90,22 +88,20 @@ public class GunDetonatorFactory { bullet.doesRicochet = false; bullet.setToBolt(BulletConfiguration.BOLT_LASER); - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + bullet.bntImpact = (bulletnt, x, y, z) -> { - World world = bullet.worldObj; - if(!world.isRemote && y > 0) { - Block b = world.getBlock(x, y, z); - if(b instanceof IBomb) { - BombReturnCode ret = ((IBomb)b).explode(world, x, y, z); - - if(ret.wasSuccessful() && bullet.shooter instanceof EntityPlayerMP) { - EntityPlayerMP player = (EntityPlayerMP) bullet.shooter; - world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); - PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), (EntityPlayerMP) player); - } + World world = bulletnt.worldObj; + if(!world.isRemote && y > 0) { + Block b = world.getBlock(x, y, z); + if(b instanceof IBomb) { + BombReturnCode ret = ((IBomb) b).explode(world, x, y, z); + + if(ret.wasSuccessful() && bulletnt.getThrower() instanceof EntityPlayerMP) { + EntityPlayerMP player = (EntityPlayerMP) bulletnt.getThrower(); + world.playSoundAtEntity(player, "hbm:item.techBleep", 1.0F, 1.0F); + PacketDispatcher.wrapper.sendTo( + new PlayerInformPacket(ChatBuilder.start("").nextTranslation(ret.getUnlocalizedMessage()).color(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_DETONATOR), + (EntityPlayerMP) player); } } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java index 2fafccbeb..1e7d4342d 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunEnergyFactory.java @@ -3,15 +3,16 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletImpactBehaviorNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletUpdateBehaviorNT; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums.AmmoCoilgun; import com.hbm.items.ItemAmmoEnums.AmmoFireExt; import com.hbm.items.ItemAmmoEnums.AmmoFlamethrower; import com.hbm.items.ModItems; @@ -19,6 +20,7 @@ import com.hbm.lib.HbmCollection.EnumGunManufacturer; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.ExplosionKnockbackPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.render.util.RenderScreenOverlay.Crosshair; @@ -29,11 +31,13 @@ import com.hbm.util.CompatExternal; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.Vec3; public class GunEnergyFactory { @@ -180,6 +184,60 @@ public class GunEnergyFactory { return config; } + public static GunConfiguration getCoilgunConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 5; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 1; + config.durability = 2_500; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.CIRCLE; + config.firingSound = "hbm:weapon.coilgunShoot"; + config.reloadSoundEnd = false; + config.reloadSound = "hbm:weapon.coilgunReload"; + + config.name = "ArmsKore Coilgun"; + config.manufacturer = EnumGunManufacturer.DRG; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.COIL_NORMAL); + config.config.add(BulletConfigSyncingUtil.COIL_DU); + config.config.add(BulletConfigSyncingUtil.COIL_RUBBER); + + return config; + } + + public static GunConfiguration getCryoCannonConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 1; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_AUTO; + config.firingDuration = 0; + config.ammoCap = 1_000; + config.durability = 10_000; + config.reloadType = GunConfiguration.RELOAD_FULL; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_CIRCLE; + + config.name = "Cryo Cannon"; + config.manufacturer = EnumGunManufacturer.DRG; + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.CRYO_NORMAL); + + return config; + } + public static GunConfiguration getVortexConfig() { GunConfiguration config = new GunConfiguration(); @@ -221,6 +279,127 @@ public class GunEnergyFactory { return bullet; } + public static BulletConfiguration getCoilConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.STOCK.ordinal()); + + bullet.velocity = 7.5F; + bullet.spread = 0.0F; + bullet.wear = 10; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.dmgMin = 35; + bullet.dmgMax = 45; + bullet.gravity = 0D; + bullet.maxAge = 50; + bullet.doesPenetrate = true; + bullet.isSpectral = true; + + bullet.style = bullet.STYLE_BOLT; + bullet.trail = bullet.BOLT_NIGHTMARE; + bullet.vPFX = "fireworks"; + + bullet.bntUpdate = (entity) -> breakInPath(entity, 1.25F); + + return bullet; + } + + public static BulletConfiguration getCoilDUConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.DU.ordinal()); + + bullet.velocity = 7.5F; + bullet.spread = 0.0F; + bullet.wear = 25; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.dmgMin = 65; + bullet.dmgMax = 80; + bullet.gravity = 0D; + bullet.maxAge = 50; + bullet.doesPenetrate = true; + bullet.isSpectral = true; + + bullet.style = bullet.STYLE_BOLT; + bullet.trail = bullet.BOLT_NIGHTMARE; + bullet.vPFX = "fireworks"; + + bullet.bntUpdate = (entity) -> breakInPath(entity, 2.5F); + + return bullet; + } + + public static BulletConfiguration getCoilRubberConfig() { + + BulletConfiguration bullet = new BulletConfiguration(); + + bullet.ammo = new ComparableStack(ModItems.ammo_coilgun, 1, AmmoCoilgun.RUBBER.ordinal()); + + bullet.velocity = 5F; + bullet.spread = 0.0F; + bullet.wear = 10; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + bullet.dmgMin = 10; + bullet.dmgMax = 20; + bullet.gravity = 0D; + bullet.maxAge = 50; + bullet.doesPenetrate = false; + bullet.isSpectral = false; + bullet.doesRicochet = true; + bullet.ricochetAngle = 30; + bullet.HBRC = 90; + bullet.LBRC = 100; + bullet.bounceMod = 1; + bullet.selfDamageDelay = 2; + + bullet.style = bullet.STYLE_PELLET; + + bullet.bntHurt = (entity, hit) -> { + Vec3 vec = Vec3.createVectorHelper(entity.motionX, entity.motionY, entity.motionZ); + vec = vec.normalize(); + vec.xCoord *= 10; + vec.yCoord *= 10; + vec.zCoord *= 10; + hit.motionX += vec.xCoord; + hit.motionY += vec.yCoord; + hit.motionZ += vec.zCoord; + + if(hit instanceof EntityPlayerMP) { + PacketDispatcher.wrapper.sendTo(new ExplosionKnockbackPacket(vec), (EntityPlayerMP) hit); + } + }; + + return bullet; + } + + public static void breakInPath(EntityBulletBaseNT entity, float threshold) { + + if(entity.worldObj.isRemote) return; + + Vec3 vec = Vec3.createVectorHelper(entity.posX - entity.prevPosX, entity.posY - entity.prevPosY, entity.posZ - entity.prevPosZ); + double motion = Math.max(vec.lengthVector(), 0.1); + vec = vec.normalize(); + + for(double d = 0; d < motion; d += 0.5) { + + int x = (int) Math.floor(entity.posX - vec.xCoord * d); + int y = (int) Math.floor(entity.posY - vec.yCoord * d); + int z = (int) Math.floor(entity.posZ - vec.zCoord * d); + + Block b = entity.worldObj.getBlock(x, y, z); + float hardness = b.getBlockHardness(entity.worldObj, x, y, z); + + if(b.getMaterial() != Material.air && hardness >= 0 && hardness < threshold) { + entity.worldObj.func_147480_a(x, y, z, false); + } + } + } + public static BulletConfiguration getFlameConfig() { BulletConfiguration bullet = new BulletConfiguration(); @@ -249,10 +428,10 @@ public class GunEnergyFactory { bullet.dmgProj = false; bullet.dmgFire = true; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { NBTTagCompound data = new NBTTagCompound(); @@ -296,7 +475,7 @@ public class GunEnergyFactory { bullet.maxAge = 200; bullet.vPFX = "smoke"; - bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(5, 60 * 20, 25, 0.25, 0.1F); + bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(5, 60 * 20, 25, 0.25, 0.1F); return bullet; } @@ -343,7 +522,7 @@ public class GunEnergyFactory { bullet.dmgFire = false; - bullet.bImpact = BulletConfigFactory.getGasEffect(5, 60 * 20); + bullet.bntImpact = BulletConfigFactory.getGasEffect(5, 60 * 20); return bullet; } @@ -370,12 +549,12 @@ public class GunEnergyFactory { bullet.style = BulletConfiguration.STYLE_NONE; bullet.plink = BulletConfiguration.PLINK_NONE; - bullet.bHurt = (bulletEntity, target) -> { target.extinguish(); }; + bullet.bntHurt = (bulletEntity, target) -> { target.extinguish(); }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { @@ -408,10 +587,10 @@ public class GunEnergyFactory { } }; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) { @@ -450,10 +629,10 @@ public class GunEnergyFactory { bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.FOAM)); bullet.spread = 0.05F; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { @@ -505,10 +684,10 @@ public class GunEnergyFactory { } }; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) { @@ -537,12 +716,12 @@ public class GunEnergyFactory { bullet.ammo = new ComparableStack(ModItems.ammo_fireext.stackFromEnum(AmmoFireExt.SAND)); bullet.spread = 0.1F; - bullet.bHurt = null; // does not extinguish entities + bullet.bntHurt = null; // does not extinguish entities - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { @@ -578,10 +757,10 @@ public class GunEnergyFactory { } }; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) { @@ -630,10 +809,10 @@ public class GunEnergyFactory { bullet.effects = new ArrayList(); bullet.effects.add(new PotionEffect(HbmPotion.bang.id, 10 * 20, 0)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { ExplosionChaos.explodeZOMG(bullet.worldObj, (int)Math.floor(bullet.posX), (int)Math.floor(bullet.posY), (int)Math.floor(bullet.posZ), 5); @@ -645,6 +824,15 @@ public class GunEnergyFactory { return bullet; } + + public static BulletConfiguration getCryoConfig() { + BulletConfiguration bullet = new BulletConfiguration(); + bullet.ammo = new ComparableStack(ModItems.gun_cryolator_ammo); + bullet.ammoCount = 100; + bullet.bulletsMin = 1; + bullet.bulletsMax = 1; + return bullet; + } public static BulletConfiguration getTurbineConfig() { diff --git a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java index 0e8dbbd24..e068b15f4 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunFatmanFactory.java @@ -3,7 +3,8 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.blocks.ModBlocks; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.*; import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNT; import com.hbm.explosion.ExplosionNukeSmall; @@ -12,8 +13,6 @@ import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; import com.hbm.handler.radiation.ChunkRadiationManager; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoFatman; @@ -133,10 +132,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.STOCK)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); } }; @@ -149,10 +148,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.LOW)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_LOW); } }; @@ -165,10 +164,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.HIGH)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_HIGH); } }; @@ -185,10 +184,10 @@ public class GunFatmanFactory { bullet.spread = 0.1F; bullet.style = bullet.STYLE_GRENADE; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); } }; @@ -201,10 +200,10 @@ public class GunFatmanFactory { BulletConfiguration bullet = BulletConfigFactory.standardNukeConfig(); bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.SAFE)); - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_SAFE); } }; @@ -218,10 +217,10 @@ public class GunFatmanFactory { bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.PUMPKIN)); bullet.explosive = 10F; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { @@ -250,10 +249,10 @@ public class GunFatmanFactory { bullet.explosive = 3F; bullet.style = bullet.STYLE_BARREL; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = new IBulletImpactBehaviorNT() { @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { @@ -308,10 +307,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -321,7 +320,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -345,10 +344,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -358,7 +357,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -382,10 +381,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -395,7 +394,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_HIGH); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_HIGH); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -419,10 +418,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -432,7 +431,7 @@ public class GunFatmanFactory { for(int i = 0; i < 6; i++) { - EntityBulletBase nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_SAFE); + EntityBulletBaseNT nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_SAFE); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); double mod = 0.1D; nuke.motionX = bullet.worldObj.rand.nextGaussian() * mod; @@ -456,10 +455,10 @@ public class GunFatmanFactory { bullet.style = BulletConfiguration.STYLE_MIRV; bullet.velocity *= 3; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -469,16 +468,16 @@ public class GunFatmanFactory { for(int i = 0; i < 24; i++) { - EntityBulletBase nuke = null; + EntityBulletBaseNT nuke = null; if(i < 6) - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_LOW); else if(i < 12) - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_TOTS); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_TOTS); else if(i < 18) - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_NORMAL); else - nuke = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.NUKE_AMAT); + nuke = new EntityBulletBaseNT(bullet.worldObj, BulletConfigSyncingUtil.NUKE_AMAT); nuke.setPosition(bullet.posX, bullet.posY, bullet.posZ); @@ -503,8 +502,8 @@ public class GunFatmanFactory { bullet.ammo = new ComparableStack(ModItems.ammo_nuke.stackFromEnum(AmmoFatman.BALEFIRE)); bullet.style = BulletConfiguration.STYLE_BF; - bullet.bImpact = new IBulletImpactBehavior() { - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + bullet.bntImpact = new IBulletImpactBehaviorNT() { + public void behaveBlockHit(EntityBulletBaseNT bullet, int x, int y, int z) { if(!bullet.worldObj.isRemote) { diff --git a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java index 159171a0f..6fee544a6 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGaussFactory.java @@ -8,6 +8,10 @@ import com.hbm.handler.GunConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.HbmCollection.EnumGunManufacturer; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay.Crosshair; public class GunGaussFactory { @@ -25,9 +29,10 @@ public class GunGaussFactory { config.ammoCap = 0; config.reloadType = GunConfiguration.RELOAD_NONE; config.allowsInfinity = true; - config.crosshair = Crosshair.L_RAD; - config.durability = 6000; + config.crosshair = Crosshair.CIRCLE; + config.durability = 15000; config.firingSound = "hbm:weapon.tauShoot"; + config.firingVolume = 0.5F; config.name = "tau"; config.manufacturer = EnumGunManufacturer.BLACK_MESA; @@ -35,6 +40,13 @@ public class GunGaussFactory { config.config = new ArrayList(); config.config.add(BulletConfigSyncingUtil.SPECIAL_GAUSS); + config.animations.put(AnimType.CYCLE, new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 25)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 75)) + ) + ); + return config; } @@ -63,10 +75,9 @@ public class GunGaussFactory { BulletConfiguration bullet = BulletConfigFactory.standardBulletConfig(); bullet.ammo = new ComparableStack(ModItems.gun_xvl1456_ammo); - bullet.dmgMin = 6; - bullet.dmgMax = 9; - bullet.trail = 1; - bullet.vPFX = "fireworksSpark"; + bullet.dmgMin = 18; + bullet.dmgMax = 27; + bullet.style = bullet.STYLE_TAU; bullet.LBRC = 80; bullet.HBRC = 5; @@ -77,7 +88,7 @@ public class GunGaussFactory { BulletConfiguration bullet = getGaussConfig(); - bullet.vPFX = "reddust"; + bullet.trail = 1; return bullet; } diff --git a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java index 0c787f9a9..d65f964e9 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunGrenadeFactory.java @@ -2,13 +2,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoGrenade; @@ -131,7 +129,7 @@ public class GunGrenadeFactory { bullet.trail = 0; bullet.incendiary = 2; - bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); + bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); bullet.spentCasing = CASING40MM.clone().register("40MMPhos"); @@ -213,12 +211,8 @@ public class GunGrenadeFactory { bullet.velocity = 4; bullet.explosive = 0.0F; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_TOTS); }; bullet.spentCasing = CASING40MM.clone().register("40MMNuke"); diff --git a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java index 960ebee81..8a6bffe40 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunNPCFactory.java @@ -3,12 +3,11 @@ package com.hbm.handler.guncfg; import java.util.List; import java.util.Random; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.projectile.EntityBulletBaseNT.IBulletUpdateBehaviorNT; import com.hbm.explosion.ExplosionNukeGeneric; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; @@ -51,30 +50,26 @@ public class GunNPCFactory { bullet.trail = 1; bullet.explosive = 1.5F; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { + + if(bulletnt.worldObj.isRemote) + return; - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(bullet.worldObj.isRemote) - return; - - if(bullet.ticksExisted % 10 != 5) - return; - - List players = bullet.worldObj.getEntitiesWithinAABB(EntityPlayer.class, bullet.boundingBox.expand(50, 50, 50)); - - for(EntityPlayer player : players) { - - Vec3 motion = Vec3.createVectorHelper(player.posX - bullet.posX, (player.posY + player.getEyeHeight()) - bullet.posY, player.posZ - bullet.posZ); - motion = motion.normalize(); - - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); - bolt.shooter = bullet.shooter; - bolt.setPosition(bullet.posX, bullet.posY, bullet.posZ); - bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.05F); - bullet.worldObj.spawnEntityInWorld(bolt); - } + if(bulletnt.ticksExisted % 10 != 5) + return; + + List players = bulletnt.worldObj.getEntitiesWithinAABB(EntityPlayer.class, bulletnt.boundingBox.expand(50, 50, 50)); + + for(EntityPlayer player : players) { + + Vec3 motion = Vec3.createVectorHelper(player.posX - bulletnt.posX, (player.posY + player.getEyeHeight()) - bulletnt.posY, player.posZ - bulletnt.posZ); + motion = motion.normalize(); + + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_BOLT); + bolt.setThrower(bulletnt.getThrower()); + bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); + bolt.setThrowableHeading(motion.xCoord, motion.yCoord, motion.zCoord, 0.5F, 0.05F); + bulletnt.worldObj.spawnEntityInWorld(bolt); } }; @@ -129,20 +124,16 @@ public class GunNPCFactory { bullet.vPFX = "reddust"; bullet.damageType = ModDamageSource.s_laser; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { + + if(bulletnt.worldObj.isRemote) + return; - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - EntityBulletBase meteor = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); - meteor.setPosition(bullet.posX, bullet.posY + 30 + meteor.worldObj.rand.nextInt(10), bullet.posZ); - meteor.motionY = -1D; - meteor.shooter = bullet.shooter; - bullet.worldObj.spawnEntityInWorld(meteor); - } + EntityBulletBaseNT meteor = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.MASKMAN_METEOR); + meteor.setPosition(bulletnt.posX, bulletnt.posY + 30 + meteor.worldObj.rand.nextInt(10), bulletnt.posZ); + meteor.motionY = -1D; + meteor.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(meteor); }; return bullet; @@ -178,25 +169,21 @@ public class GunNPCFactory { bullet.explosive = 2.5F; bullet.style = BulletConfiguration.STYLE_METEOR; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) - return; - - Random rand = bullet.worldObj.rand; - - for(int i = 0; i < 5; i++) { - NBTTagCompound nbt = new NBTTagCompound(); - nbt.setString("type", "vanillaExt"); - nbt.setString("mode", "flame"); - nbt.setDouble("posX", bullet.posX + rand.nextDouble() * 0.5 - 0.25); - nbt.setDouble("posY", bullet.posY + rand.nextDouble() * 0.5 - 0.25); - nbt.setDouble("posZ", bullet.posZ + rand.nextDouble() * 0.5 - 0.25); - MainRegistry.proxy.effectNT(nbt); - } + if(!bulletnt.worldObj.isRemote) + return; + + Random rand = bulletnt.worldObj.rand; + + for(int i = 0; i < 5; i++) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setString("type", "vanillaExt"); + nbt.setString("mode", "flame"); + nbt.setDouble("posX", bulletnt.posX + rand.nextDouble() * 0.5 - 0.25); + nbt.setDouble("posY", bulletnt.posY + rand.nextDouble() * 0.5 - 0.25); + nbt.setDouble("posZ", bulletnt.posZ + rand.nextDouble() * 0.5 - 0.25); + MainRegistry.proxy.effectNT(nbt); } }; @@ -245,13 +232,13 @@ public class GunNPCFactory { bullet.destroysBlocks = false; bullet.explosive = 0F; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = new IBulletUpdateBehaviorNT() { double angle = 90; double range = 100; @Override - public void behaveUpdate(EntityBulletBase bullet) { + public void behaveUpdate(EntityBulletBaseNT bullet) { if(bullet.worldObj.isRemote) return; @@ -265,7 +252,7 @@ public class GunNPCFactory { if(target != null) { if(bullet.getDistanceSqToEntity(target) < 5) { - bullet.getConfig().bImpact.behaveBlockHit(bullet, -1, -1, -1); + bullet.getConfig().bntImpact.behaveBlockHit(bullet, -1, -1, -1); bullet.setDead(); return; } @@ -281,7 +268,7 @@ public class GunNPCFactory { } } - private void chooseTarget(EntityBulletBase bullet) { + private void chooseTarget(EntityBulletBaseNT bullet) { List entities = bullet.worldObj.getEntitiesWithinAABB(EntityLivingBase.class, bullet.boundingBox.expand(range, range, range)); @@ -292,7 +279,7 @@ public class GunNPCFactory { for(EntityLivingBase e : entities) { - if(!e.isEntityAlive() || e == bullet.shooter) + if(!e.isEntityAlive() || e == bullet.getThrower()) continue; Vec3 delta = Vec3.createVectorHelper(e.posX - bullet.posX, e.posY + e.height / 2 - bullet.posY, e.posZ - bullet.posZ); @@ -319,27 +306,23 @@ public class GunNPCFactory { } }; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + bulletnt.worldObj.rand.nextFloat() * 0.2F); + bulletnt.worldObj.playSoundEffect(bulletnt.posX, bulletnt.posY, bulletnt.posZ, "fireworks.blast", 5.0F, 0.5F); + ExplosionNukeGeneric.dealDamage(bulletnt.worldObj, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 10, 50); - bullet.worldObj.playSoundEffect(bullet.posX, bullet.posY, bullet.posZ, "hbm:entity.ufoBlast", 5.0F, 0.9F + bullet.worldObj.rand.nextFloat() * 0.2F); - bullet.worldObj.playSoundEffect(bullet.posX, bullet.posY, bullet.posZ, "fireworks.blast", 5.0F, 0.5F); - ExplosionNukeGeneric.dealDamage(bullet.worldObj, bullet.posX, bullet.posY, bullet.posZ, 10, 50); - - for(int i = 0; i < 3; i++) { - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "plasmablast"); - data.setFloat("r", 0.0F); - data.setFloat("g", 0.75F); - data.setFloat("b", 1.0F); - data.setFloat("pitch", -30F + 30F * i); - data.setFloat("yaw", bullet.worldObj.rand.nextFloat() * 180F); - data.setFloat("scale", 5F); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bullet.posX, bullet.posY, bullet.posZ), - new TargetPoint(bullet.worldObj.provider.dimensionId, bullet.posX, bullet.posY, bullet.posZ, 100)); - } + for(int i = 0; i < 3; i++) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "plasmablast"); + data.setFloat("r", 0.0F); + data.setFloat("g", 0.75F); + data.setFloat("b", 1.0F); + data.setFloat("pitch", -30F + 30F * i); + data.setFloat("yaw", bulletnt.worldObj.rand.nextFloat() * 180F); + data.setFloat("scale", 5F); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, bulletnt.posX, bulletnt.posY, bulletnt.posZ), + new TargetPoint(bulletnt.worldObj.provider.dimensionId, bulletnt.posX, bulletnt.posY, bulletnt.posZ, 100)); } }; diff --git a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java index db093f702..720a57e2c 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunOSIPRFactory.java @@ -101,17 +101,17 @@ public class GunOSIPRFactory { bullet.maxAge = 150; bullet.velocity = 2; - bullet.bHurt = (ball, entity) -> { + bullet.bntHurt = (ball, entity) -> { if(entity instanceof EntityLivingBase) { EntityLivingBase entityLiving = (EntityLivingBase) entity; entity.addVelocity(ball.motionX / 2, ball.motionY / 2, ball.motionZ / 2); - if(entity == ball.shooter) + if(entity == ball.getThrower()) return; if(entityLiving.getHealth() <= 1000) { entityLiving.addPotionEffect(new PotionEffect(HbmPotion.bang.id, 1, 0)); - entityLiving.setLastAttacker(ball.shooter); + entityLiving.setLastAttacker(ball.getThrower()); } else if(entityLiving.getHealth() > 1000) { ball.setDead(); return; @@ -120,14 +120,14 @@ public class GunOSIPRFactory { } }; - bullet.bRicochet = (ball, x, y, z) -> { + bullet.bntRicochet = (ball, x, y, z) -> { Block block = ball.worldObj.getBlock(x, y, z); if(block instanceof RedBarrel) ((RedBarrel) block).explode(ball.worldObj, x, y, z); }; - bullet.bImpact = (ball, x, y, z) -> { + bullet.bntImpact = (ball, x, y, z) -> { final Block block = ball.worldObj.getBlock(x, y, z); if(block instanceof RedBarrel) ((RedBarrel) block).explode(ball.worldObj, x, y, z); diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index 8af201e52..cea0490c3 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -3,14 +3,11 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; import com.hbm.entity.effect.EntitySpear; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletImpactBehavior; -import com.hbm.interfaces.IBulletRicochetBehavior; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoRocket; @@ -287,12 +284,8 @@ public class GunRocketFactory { bullet.incendiary = 0; bullet.trail = 7; - bullet.bImpact = new IBulletImpactBehavior() { - - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - BulletConfigFactory.nuclearExplosion(bullet, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); - } + bullet.bntImpact = (bulletnt, x, y, z) -> { + BulletConfigFactory.nuclearExplosion(bulletnt, x, y, z, ExplosionNukeSmall.PARAMS_MEDIUM); }; return bullet; @@ -331,18 +324,14 @@ public class GunRocketFactory { bullet.LBRC = 100; bullet.doesPenetrate = true; - bullet.bRicochet = new IBulletRicochetBehavior() { + bullet.bntRicochet = (bulletnt, bX, bY, bZ) -> { + World worldObj = bulletnt.worldObj; + if(!worldObj.isRemote && (worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass || + worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves)) + worldObj.func_147480_a(bX, bY, bZ, false); - @Override - public void behaveBlockRicochet(EntityBulletBase bullet, int bX, int bY, int bZ) { - World worldObj = bullet.worldObj; - if(!worldObj.isRemote && - (worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.wood || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.plants || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.glass || - worldObj.getBlock(bX, bY, bZ).getMaterial() == Material.leaves)) - worldObj.func_147480_a(bX, bY, bZ, false);} - }; return bullet; @@ -360,7 +349,7 @@ public class GunRocketFactory { bullet.incendiary = 5; bullet.trail = 9; - bullet.bImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); + bullet.bntImpact = BulletConfigFactory.getPhosphorousEffect(10, 60 * 20, 100, 0.5D, 1F); return bullet; } @@ -375,23 +364,16 @@ public class GunRocketFactory { bullet.explosive = 2F; bullet.trail = 0; - bullet.bUpdate = new IBulletUpdateBehavior() { - - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - if(bullet.ticksExisted > 10) { - bullet.setDead(); - - for(int i = 0; i < 50; i++) { - - EntityBulletBase bolt = new EntityBulletBase(bullet.worldObj, BulletConfigSyncingUtil.M44_AP); - bolt.setPosition(bullet.posX, bullet.posY, bullet.posZ); - bolt.setThrowableHeading(bullet.motionX, bullet.motionY, bullet.motionZ, 0.25F, 0.1F); - bullet.worldObj.spawnEntityInWorld(bolt); - } + bullet.bntUpdate = (bulletnt) -> { + if(!bulletnt.worldObj.isRemote) { + if(bulletnt.ticksExisted > 10) { + bulletnt.setDead(); + for(int i = 0; i < 50; i++) { + EntityBulletBaseNT bolt = new EntityBulletBaseNT(bulletnt.worldObj, BulletConfigSyncingUtil.M44_AP); + bolt.setPosition(bulletnt.posX, bulletnt.posY, bulletnt.posZ); + bolt.setThrowableHeading(bulletnt.motionX, bulletnt.motionY, bulletnt.motionZ, 0.25F, 0.1F); + bolt.setThrower(bulletnt.getThrower()); + bulletnt.worldObj.spawnEntityInWorld(bolt); } } } @@ -413,21 +395,17 @@ public class GunRocketFactory { bullet.incendiary = 0; bullet.trail = 7; - bullet.bImpact = new IBulletImpactBehavior() { + bullet.bntImpact = (bulletnt, x, y, z) -> { - @Override - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z) { - - if(bullet.worldObj.isRemote) - return; - - EntitySpear spear = new EntitySpear(bullet.worldObj); - spear.posX = bullet.posX; - spear.posZ = bullet.posZ; - spear.posY = bullet.posY + 100; - - bullet.worldObj.spawnEntityInWorld(spear); - } + if(bulletnt.worldObj.isRemote) + return; + + EntitySpear spear = new EntitySpear(bulletnt.worldObj); + spear.posX = bulletnt.posX; + spear.posZ = bulletnt.posZ; + spear.posY = bulletnt.posY + 100; + + bulletnt.worldObj.spawnEntityInWorld(spear); }; return bullet; diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java index 9ace3b45f..3e2808d40 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java @@ -2,12 +2,10 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; -import com.hbm.entity.projectile.EntityBulletBase; import com.hbm.entity.projectile.EntityRocketHoming; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; -import com.hbm.interfaces.IBulletUpdateBehavior; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.items.ItemAmmoEnums.AmmoStinger; import com.hbm.items.ModItems; @@ -98,28 +96,24 @@ GunConfiguration config = new GunConfiguration(); bullet.explosive = 4F; bullet.trail = 0; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 0); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 0); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 0); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); - bullet.setDead(); + if(!bulletnt.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 0); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 0); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 0); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); + bulletnt.setDead(); + } }; return bullet; @@ -135,28 +129,24 @@ GunConfiguration config = new GunConfiguration(); bullet.trail = 0; bullet.wear = 15; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 1); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 1); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 1); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); - bullet.setDead(); + if(!bulletnt.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 1); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 1); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 1); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); + bulletnt.setDead(); + } }; return bullet; @@ -172,28 +162,24 @@ GunConfiguration config = new GunConfiguration(); bullet.trail = 0; bullet.wear = 12; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { - - if(!bullet.worldObj.isRemote) { - - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 2); - if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 2); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 2); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); - bullet.setDead(); + if(!bulletnt.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 2); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 2); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 2); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); + bulletnt.setDead(); + } }; return bullet; @@ -209,31 +195,27 @@ GunConfiguration config = new GunConfiguration(); bullet.trail = 0; bullet.wear = 30; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { + if(!bulletnt.worldObj.isRemote) { - if(!bullet.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - - if(player.getDistanceToEntity(bullet) < 16) { - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); + if(player.getDistanceToEntity(bulletnt) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 4); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 4); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 4); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } - bullet.setDead(); - + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); } + bulletnt.setDead(); + } }; return bullet; @@ -248,31 +230,27 @@ GunConfiguration config = new GunConfiguration(); bullet.explosive = 8F; bullet.trail = 0; - bullet.bUpdate = new IBulletUpdateBehavior() { + bullet.bntUpdate = (bulletnt) -> { - @Override - public void behaveUpdate(EntityBulletBase bullet) { + if(!bulletnt.worldObj.isRemote) { - if(!bullet.worldObj.isRemote) { + EntityPlayer player = bulletnt.worldObj.getClosestPlayerToEntity(bulletnt, -1.0D); - EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); - - if(player.getDistanceToEntity(bullet) < 16) { - EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); - if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { - EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); - rocket.setIsCritical(true); - rocket2.setIsCritical(true); - bullet.worldObj.spawnEntityInWorld(rocket2); - } - rocket.homingMod = 5; - rocket.homingRadius = 25; - bullet.worldObj.spawnEntityInWorld(rocket); + if(player.getDistanceToEntity(bulletnt) < 16) { + EntityRocketHoming rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.0F, 5.0F, 42); + if(player.getHeldItem() != null && player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 42); + rocket = new EntityRocketHoming(bulletnt.worldObj, player, 1.5F, 15.0F, 42); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bulletnt.worldObj.spawnEntityInWorld(rocket2); } - bullet.setDead(); - + rocket.homingMod = 5; + rocket.homingRadius = 25; + bulletnt.worldObj.spawnEntityInWorld(rocket); } + bulletnt.setDead(); + } }; return bullet; diff --git a/src/main/java/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java b/src/main/java/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java deleted file mode 100644 index 5390eef46..000000000 --- a/src/main/java/com/hbm/handler/nei/CMBFurnaceRecipeHandler.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.hbm.handler.nei; - -import java.awt.Rectangle; -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -import com.hbm.inventory.gui.GUIMachineCMBFactory; -import com.hbm.inventory.recipes.MachineRecipes; -import com.hbm.lib.RefStrings; - -import codechicken.nei.NEIServerUtils; -import codechicken.nei.PositionedStack; -import codechicken.nei.recipe.TemplateRecipeHandler; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.item.ItemStack; - -public class CMBFurnaceRecipeHandler extends TemplateRecipeHandler { - - public LinkedList transferRectsRec = new LinkedList(); - public LinkedList transferRectsGui = new LinkedList(); - public LinkedList> guiRec = new LinkedList>(); - public LinkedList> guiGui = new LinkedList>(); - - public class SmeltingSet extends TemplateRecipeHandler.CachedRecipe - { - PositionedStack input1; - PositionedStack input2; - PositionedStack result; - - public SmeltingSet(ItemStack input1, ItemStack input2, ItemStack result) { - input1.stackSize = 1; - input2.stackSize = 1; - this.input1 = new PositionedStack(input1, 66, 6); - this.input2 = new PositionedStack(input2, 66, 42); - this.result = new PositionedStack(result, 129, 24); - } - - @Override - public List getIngredients() { - return getCycledIngredients(cycleticks / 48, Arrays.asList(new PositionedStack[] {input1, input2})); - } - - @Override - public PositionedStack getResult() { - return result; - } - } - - @Override - public String getRecipeName() { - return "CMB Steel Furnace"; - } - - @Override - public String getGuiTexture() { - return RefStrings.MODID + ":textures/gui/nei/gui_nei_cmb.png"; - } - - @Override - public void loadCraftingRecipes(String outputId, Object... results) { - if ((outputId.equals("cmbsmelting")) && getClass() == CMBFurnaceRecipeHandler.class) { - Map recipes = MachineRecipes.instance().getCMBRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); - } - } else { - super.loadCraftingRecipes(outputId, results); - } - } - - @Override - public void loadCraftingRecipes(ItemStack result) { - Map recipes = MachineRecipes.instance().getCMBRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - if (NEIServerUtils.areStacksSameType((ItemStack)recipe.getValue(), result)) - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); - } - } - - @Override - public void loadUsageRecipes(String inputId, Object... ingredients) { - if ((inputId.equals("cmbsmelting")) && getClass() == CMBFurnaceRecipeHandler.class) { - loadCraftingRecipes("cmbsmelting", new Object[0]); - } else { - super.loadUsageRecipes(inputId, ingredients); - } - } - - @Override - public void loadUsageRecipes(ItemStack ingredient) { - Map recipes = MachineRecipes.instance().getCMBRecipes(); - for (Map.Entry recipe : recipes.entrySet()) { - if (NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[0]) || NEIServerUtils.areStacksSameType(ingredient, (ItemStack)recipe.getKey()[1])) - this.arecipes.add(new SmeltingSet((ItemStack)recipe.getKey()[0], (ItemStack)recipe.getKey()[1], (ItemStack)recipe.getValue())); - } - } - - @Override - public Class getGuiClass() { - //return GUITestDiFurnace.class; - return null; - } - - @Override - public void loadTransferRects() { - transferRectsGui = new LinkedList(); - guiGui = new LinkedList>(); - - transferRects.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "cmbsmelting")); - transferRectsGui.add(new RecipeTransferRect(new Rectangle(74 + 6 + 18, 23, 24, 18), "cmbsmelting")); - guiGui.add(GUIMachineCMBFactory.class); - RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); - RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); - } - - @Override - public void drawExtras(int recipe) { - - drawProgressBar(83 - (18 * 4) - 9 + 1, 6, 36, 86, 16, 18 * 3 - 2, 480, 7); - drawProgressBar(83 - (18 * 4) - 9 + 1 + 18, 6, 36 + 48, 86, 16, 18 * 3 - 2, 480, 7); - - drawProgressBar(83 - 3 + 16, 5 + 18, 100, 118, 24, 16, 48, 0); - } - - @Override - public TemplateRecipeHandler newInstance() { - return super.newInstance(); - } - -} diff --git a/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java b/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java index 0beaff581..9ef27b9a9 100644 --- a/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java +++ b/src/main/java/com/hbm/handler/nei/ChemplantRecipeHandler.java @@ -45,7 +45,7 @@ public class ChemplantRecipeHandler extends TemplateRecipeHandler { for(int i = 0; i < recipe.inputFluids.length; i++) { FluidStack in = recipe.inputFluids[i]; if(in == null) continue; - ItemStack drop = ItemFluidIcon.make(in.type, in.fill); + ItemStack drop = ItemFluidIcon.make(in); this.fluidIn[i] = new PositionedStack(drop, 30 + (i % 2) * 18, 6); } @@ -58,7 +58,7 @@ public class ChemplantRecipeHandler extends TemplateRecipeHandler { for(int i = 0; i < recipe.outputFluids.length; i++) { FluidStack out = recipe.outputFluids[i]; if(out == null) continue; - ItemStack drop = ItemFluidIcon.make(out.type, out.fill); + ItemStack drop = ItemFluidIcon.make(out); this.fluidOut[i] = new PositionedStack(drop, 120 + (i % 2) * 18, 6); } diff --git a/src/main/java/com/hbm/handler/nei/CokingHandler.java b/src/main/java/com/hbm/handler/nei/CokingHandler.java new file mode 100644 index 000000000..a0227147e --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/CokingHandler.java @@ -0,0 +1,27 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIMachineCoker; +import com.hbm.inventory.recipes.CokerRecipes; + +public class CokingHandler extends NEIUniversalHandler { + + public CokingHandler() { + super("Coking", ModBlocks.machine_coker, CokerRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmCoking"; + } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(55, 15, 36, 18), "ntmCoking")); + guiGui.add(GUIMachineCoker.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } +} diff --git a/src/main/java/com/hbm/handler/nei/CombinationHandler.java b/src/main/java/com/hbm/handler/nei/CombinationHandler.java index 8537c12b0..0c07afbbc 100644 --- a/src/main/java/com/hbm/handler/nei/CombinationHandler.java +++ b/src/main/java/com/hbm/handler/nei/CombinationHandler.java @@ -1,6 +1,9 @@ package com.hbm.handler.nei; +import java.awt.Rectangle; + import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.recipes.CombinationRecipes; public class CombinationHandler extends NEIUniversalHandler { @@ -13,4 +16,12 @@ public class CombinationHandler extends NEIUniversalHandler { public String getKey() { return "ntmCombination"; } + + @Override + public void loadTransferRects() { + super.loadTransferRects(); + transferRectsGui.add(new RecipeTransferRect(new Rectangle(49, 44, 18, 18), "ntmCombination")); + guiGui.add(GUIFurnaceCombo.class); + RecipeTransferRectHandler.registerRectsToGuis(guiGui, transferRectsGui); + } } diff --git a/src/main/java/com/hbm/handler/nei/ConstructionHandler.java b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java new file mode 100644 index 000000000..c845f1601 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ConstructionHandler.java @@ -0,0 +1,98 @@ +package com.hbm.handler.nei; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.material.Mats; +import com.hbm.items.ModItems; +import com.hbm.util.ItemStackUtil; + +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class ConstructionHandler extends NEIUniversalHandler { + + public ConstructionHandler() { + super("Construction", getRecipes(true), getRecipes(false)); + } + + @Override + public String getKey() { + return "ntmConstruction"; + } + + public static HashMap bufferedRecipes = new HashMap(); + public static HashMap bufferedTools = new HashMap(); + + public static HashMap getRecipes(boolean recipes) { + + if(!bufferedRecipes.isEmpty()) { + return recipes ? bufferedRecipes : bufferedTools; + } + + /* WATZ */ + ItemStack[] watz = new ItemStack[] { + new ItemStack(ModBlocks.watz_end, 48), + new ItemStack(ModItems.bolt_dura_steel, 64), + new ItemStack(ModItems.bolt_dura_steel, 64), + new ItemStack(ModItems.bolt_dura_steel, 64), + new ItemStack(ModBlocks.watz_element, 36), + new ItemStack(ModBlocks.watz_cooler, 26), + new ItemStack(ModItems.boltgun)}; + + bufferedRecipes.put(watz, new ItemStack(ModBlocks.watz)); + bufferedTools.put(watz, new ItemStack(ModBlocks.struct_watz_core)); + + /* ITER */ + ItemStack[] iter = new ItemStack[] { + new ItemStack(ModBlocks.fusion_conductor, 36), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.fusion_conductor, 256), EnumChatFormatting.RED + "4x64"), + new ItemStack(ModItems.plate_cast, 36, Mats.MAT_STEEL.id), + ItemStackUtil.addTooltipToStack(new ItemStack(ModItems.plate_cast, 256, Mats.MAT_STEEL.id), EnumChatFormatting.RED + "4x64"), + new ItemStack(ModBlocks.fusion_center, 64), + new ItemStack(ModBlocks.fusion_motor, 4), + new ItemStack(ModBlocks.reinforced_glass, 8), + new ItemStack(ModItems.blowtorch)}; + + bufferedRecipes.put(iter, new ItemStack(ModBlocks.iter)); + bufferedTools.put(iter, new ItemStack(ModBlocks.struct_iter_core)); + + /* PLASMA HEATER */ + ItemStack[] heater = new ItemStack[] { + new ItemStack(ModBlocks.fusion_heater, 7), + new ItemStack(ModBlocks.fusion_heater, 64), + new ItemStack(ModBlocks.fusion_heater, 64) }; + + bufferedRecipes.put(heater, new ItemStack(ModBlocks.plasma_heater)); + bufferedTools.put(heater, new ItemStack(ModBlocks.struct_plasma_core)); + + /* COMPACT LAUNCHER */ + ItemStack[] launcher = new ItemStack[] { new ItemStack(ModBlocks.struct_launcher, 8) }; + + bufferedRecipes.put(launcher, new ItemStack(ModBlocks.compact_launcher)); + bufferedTools.put(launcher, new ItemStack(ModBlocks.struct_launcher_core)); + + /* LAUNCH TABLE */ + ItemStack[] table = new ItemStack[] { + new ItemStack(ModBlocks.struct_launcher, 16), + new ItemStack(ModBlocks.struct_launcher, 64), + new ItemStack(ModBlocks.struct_scaffold, 11)}; + + bufferedRecipes.put(table, new ItemStack(ModBlocks.launch_table)); + bufferedTools.put(table, new ItemStack(ModBlocks.struct_launcher_core_large)); + + /* SOYUZ LAUNCHER */ + ItemStack[] soysauce = new ItemStack[] { + new ItemStack(ModBlocks.struct_launcher, 60), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_launcher, 320), EnumChatFormatting.RED + "5x64"), + new ItemStack(ModBlocks.struct_scaffold, 53), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.struct_scaffold, 384), EnumChatFormatting.RED + "6x64"), + new ItemStack(ModBlocks.concrete_smooth, 8), + ItemStackUtil.addTooltipToStack(new ItemStack(ModBlocks.concrete_smooth, 320), EnumChatFormatting.RED + "5x64"),}; + + bufferedRecipes.put(soysauce, new ItemStack(ModBlocks.soyuz_launcher)); + bufferedTools.put(soysauce, new ItemStack(ModBlocks.struct_soyuz_core)); + + return recipes ? bufferedRecipes : bufferedTools; + } +} diff --git a/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java b/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java index 1f2d9a359..80ccd314b 100644 --- a/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java +++ b/src/main/java/com/hbm/handler/nei/CrucibleAlloyingHandler.java @@ -35,8 +35,8 @@ public class CrucibleAlloyingHandler extends TemplateRecipeHandler { public RecipeSet(CrucibleRecipe recipe) { List inputs = new ArrayList(); List outputs = new ArrayList(); - for(MaterialStack stack : recipe.input) inputs.add(ItemScraps.create(stack)); - for(MaterialStack stack : recipe.output) outputs.add(ItemScraps.create(stack)); + for(MaterialStack stack : recipe.input) inputs.add(ItemScraps.create(stack, true)); + for(MaterialStack stack : recipe.output) outputs.add(ItemScraps.create(stack, true)); this.template = new PositionedStack(new ItemStack(ModItems.crucible_template, 1, recipe.getId()), 75, 6); this.crucible = new PositionedStack(new ItemStack(ModBlocks.machine_crucible), 75, 42); diff --git a/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java new file mode 100644 index 000000000..cf3570f79 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/CustomMachineHandler.java @@ -0,0 +1,208 @@ +package com.hbm.handler.nei; + +import java.awt.Rectangle; +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.recipes.CustomMachineRecipes; +import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.lib.RefStrings; +import com.hbm.util.ItemStackUtil; +import com.hbm.util.Tuple.Pair; + +import codechicken.nei.NEIServerUtils; +import codechicken.nei.PositionedStack; +import codechicken.nei.recipe.TemplateRecipeHandler; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class CustomMachineHandler extends TemplateRecipeHandler { + + public LinkedList transferRectsRec = new LinkedList(); + public LinkedList> guiRec = new LinkedList>(); + + public MachineConfiguration conf; + + @Override + public TemplateRecipeHandler newInstance() { // brick by brick, suck my dick + try { + return new CustomMachineHandler(conf); + } catch(Exception e) { + throw new RuntimeException(e); + } + } + + public CustomMachineHandler(MachineConfiguration conf) { + super(); + this.conf = conf; + loadTransferRects(); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + } + + public class RecipeSet extends TemplateRecipeHandler.CachedRecipe { + + List inputs = new ArrayList(); + PositionedStack machine; + List outputs = new ArrayList(); + + public RecipeSet(CustomMachineRecipe recipe) { + + for(int i = 0; i < 3; i++) if(recipe.inputFluids.length > i) inputs.add(new PositionedStack(ItemFluidIcon.make(recipe.inputFluids[i]), 12 + i * 18, 6)); + for(int i = 0; i < 3; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + i * 18, 24)); + for(int i = 3; i < 6; i++) if(recipe.inputItems.length > i) inputs.add(new PositionedStack(recipe.inputItems[i].extractForNEI(), 12 + i * 18, 42)); + + for(int i = 0; i < 3; i++) if(recipe.outputFluids.length > i) outputs.add(new PositionedStack(ItemFluidIcon.make(recipe.outputFluids[i]), 102 + i * 18, 6)); + + for(int i = 0; i < 3; i++) if(recipe.outputItems.length > i) { + Pair pair = recipe.outputItems[i]; + ItemStack out = pair.getKey(); + if(pair.getValue() != 1) { + ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); + } + outputs.add(new PositionedStack(out, 102 + i * 18, 24)); + } + + for(int i = 3; i < 6; i++) if(recipe.outputItems.length > i) { + Pair pair = recipe.outputItems[i]; + ItemStack out = pair.getKey(); + if(pair.getValue() != 1) { + ItemStackUtil.addTooltipToStack(out, EnumChatFormatting.RED + "" + (((int)(pair.getValue() * 1000)) / 10D) + "%"); + } + outputs.add(new PositionedStack(out, 102 + i * 18, 42)); + } + + this.machine = new PositionedStack(new ItemStack(ModBlocks.custom_machine, 1, 100 + CustomMachineConfigJSON.niceList.indexOf(conf)), 75, 42); + } + + @Override + public List getIngredients() { + return getCycledIngredients(cycleticks / 20, inputs); + } + + @Override + public PositionedStack getResult() { + return outputs.get(0); + } + + @Override + public List getOtherStacks() { + List other = new ArrayList(); + other.addAll(inputs); + other.add(machine); + other.addAll(outputs); + return getCycledIngredients(cycleticks / 20, other); + } + } + + @Override + public String getRecipeName() { + return conf.localizedName; + } + + @Override + public String getGuiTexture() { + return RefStrings.MODID + ":textures/gui/nei/gui_nei_custom.png"; + } + + @Override + public void loadCraftingRecipes(String outputId, Object... results) { + + if(outputId.equals("ntm_" + conf.unlocalizedName)) { + + List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); + + if(recipes != null) for(CustomMachineRecipe recipe : recipes) { + this.arecipes.add(new RecipeSet(recipe)); + } + } else { + super.loadCraftingRecipes(outputId, results); + } + } + + @Override + public void loadCraftingRecipes(ItemStack result) { + + List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); + + System.out.println(conf.recipeKey); + + if(recipes != null) outer:for(CustomMachineRecipe recipe : recipes) { + + for(Pair stack : recipe.outputItems) { + + if(NEIServerUtils.areStacksSameTypeCrafting(stack.getKey(), result)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + + for(FluidStack fluid : recipe.outputFluids) { + ItemStack drop = ItemFluidIcon.make(fluid); + + if(compareFluidStacks(result, drop)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + } + + @Override + public void loadUsageRecipes(String inputId, Object... ingredients) { + + if(inputId.equals("ntm_" + conf.unlocalizedName)) { + loadCraftingRecipes("ntm_" + conf.unlocalizedName, new Object[0]); + } else { + super.loadUsageRecipes(inputId, ingredients); + } + } + + @Override + public void loadUsageRecipes(ItemStack ingredient) { + + List recipes = CustomMachineRecipes.recipes.get(conf.recipeKey); + + if(recipes != null) outer:for(CustomMachineRecipe recipe : recipes) { + + for(AStack stack : recipe.inputItems) { + + List stacks = stack.extractForNEI(); + + for(ItemStack sta : stacks) { + if(NEIServerUtils.areStacksSameTypeCrafting(ingredient, sta)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + + for(FluidStack fluid : recipe.inputFluids) { + ItemStack drop = ItemFluidIcon.make(fluid); + + if(compareFluidStacks(ingredient, drop)) { + this.arecipes.add(new RecipeSet(recipe)); + continue outer; + } + } + } + } + + public static boolean compareFluidStacks(ItemStack sta1, ItemStack sta2) { + return sta1.getItem() == sta2.getItem() && sta1.getItemDamage() == sta2.getItemDamage(); + } + + @Override + public void loadTransferRects() { + if(this.conf == null) return; + transferRects.add(new RecipeTransferRect(new Rectangle(65, 23, 36, 18), "ntm_" + conf.unlocalizedName)); + RecipeTransferRectHandler.registerRectsToGuis(getRecipeTransferRectGuis(), transferRects); + } +} diff --git a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java index b7424e12e..3f4fcbe67 100644 --- a/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java +++ b/src/main/java/com/hbm/handler/nei/NEIUniversalHandler.java @@ -32,12 +32,19 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { public final String display; public final ItemStack[] machine; public final HashMap recipes; + public HashMap machineOverrides; /// SETUP /// - + public NEIUniversalHandler(String display, ItemStack machine[], HashMap recipes) { this.display = display; this.machine = machine; this.recipes = recipes; + this.machineOverrides = null; + } + + public NEIUniversalHandler(String display, HashMap recipes, HashMap machines) { + this(display, (ItemStack[]) null, recipes); + this.machineOverrides = machines; } public NEIUniversalHandler(String display, ItemStack machine, HashMap recipes) { this(display, new ItemStack[]{machine}, recipes); } @@ -50,22 +57,32 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { PositionedStack[] output; PositionedStack machinePositioned; - public RecipeSet(ItemStack[][] in, ItemStack[][] out) { + public RecipeSet(ItemStack[][] in, ItemStack[][] out, Object originalInputInstance /* for custom machine lookup */) { input = new PositionedStack[in.length]; + int[][] inPos = NEIUniversalHandler.getInputCoords(in.length); for(int i = 0; i < in.length; i++) { ItemStack[] sub = in[i]; - this.input[i] = new PositionedStack(sub, 48 + i * -18, 24); + this.input[i] = new PositionedStack(sub, inPos[i][0], inPos[i][1]); } output = new PositionedStack[out.length]; + int[][] outPos = NEIUniversalHandler.getOutputCoords(out.length); for(int i = 0; i < out.length; i++) { ItemStack[] sub = out[i]; - - boolean twos = out.length > 3; - this.output[i] = new PositionedStack(sub, 102 + i * 18 - ((twos && i > 1) ? 36 : 0), 24 + (twos ? (i < 2 ? -9 : 9) : 0)); + this.output[i] = new PositionedStack(sub, outPos[i][0], outPos[i][1]); } - this.machinePositioned = new PositionedStack(machine, 75, 31); + ItemStack[] m = machine; + + if(NEIUniversalHandler.this.machineOverrides != null) { + Object key = NEIUniversalHandler.this.machineOverrides.get(originalInputInstance); + + if(key != null) { + this.machinePositioned = new PositionedStack(key, 75, 31); + } + } + + if(machinePositioned == null) this.machinePositioned = new PositionedStack(m, 75, 31); } @Override @@ -104,16 +121,115 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { super.drawBackground(recipe); RecipeSet rec = (RecipeSet) this.arecipes.get(recipe); - - for(int i = 0; i < rec.input.length; i++) - drawTexturedModalRect(47 + i * -18, 23, 5, 87, 18, 18); - for(int i = 0; i < rec.output.length; i++) { - boolean twos = rec.output.length > 3; - drawTexturedModalRect(101 + i * 18 - ((twos && i > 1) ? 36 : 0), 23 + (twos ? (i < 2 ? -9 : 9) : 0), 5, 87, 18, 18); + + int[][] inPos = NEIUniversalHandler.getInputCoords(rec.input.length); + for(int[] pos : inPos) { + drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18); + } + int[][] outPos = NEIUniversalHandler.getOutputCoords(rec.output.length); + for(int[] pos : outPos) { + drawTexturedModalRect(pos[0] - 1, pos[1] - 1, 5, 87, 18, 18); } drawTexturedModalRect(74, 14, 59, 87, 18, 38); } + + public static int[][] getInputCoords(int count) { + + switch(count) { + case 1: return new int[][] { + {48, 24} + }; + case 2: return new int[][] { + {48, 24}, + {30, 24} + }; + case 3: return new int[][] { + {48, 24}, + {30, 24}, + {12, 24} + }; + case 4: return new int[][] { + {48, 24 - 9}, + {30, 24 - 9}, + {48, 24 + 9}, + {30, 24 + 9} + }; + case 5: return new int[][] { + {48, 24 - 9}, + {30, 24 - 9}, + {12, 24}, + {48, 24 + 9}, + {30, 24 + 9}, + }; + case 6: return new int[][] { + {48, 24 - 9}, + {30, 24 - 9}, + {12, 24 - 9}, + {48, 24 + 9}, + {30, 24 + 9}, + {12, 24 + 9} + }; + case 7: return new int[][] { + {48, 24 - 18}, + {30, 24 - 9}, + {12, 24 - 9}, + {48, 24}, + {30, 24 + 9}, + {12, 24 + 9}, + {48, 24 + 18} + }; + case 8: return new int[][] { + {48, 24 - 18}, + {30, 24 - 18}, + {12, 24 - 9}, + {48, 24}, + {30, 24}, + {12, 24 + 9}, + {48, 24 + 18}, + {30, 24 + 18} + }; + case 9: return new int[][] { + {48, 24 - 18}, + {30, 24 - 18}, + {12, 24 - 18}, + {48, 24}, + {30, 24}, + {12, 24}, + {48, 24 + 18}, + {30, 24 + 18}, + {12, 24 + 18} + }; + } + + return new int[count][2]; + } + + public static int[][] getOutputCoords(int count) { + + switch(count) { + case 1: return new int[][] { + {102, 24} + }; + case 2: return new int[][] { + {102, 24}, + {120, 24} + }; + case 3: return new int[][] { + {102, 24}, + {120, 24}, + {138, 24} + }; + case 4: return new int[][] { + {102, 24 - 9}, + {120, 24 - 9}, + {102, 24 + 9}, + {120, 24 + 9} + }; + } + + return new int[count][2]; + } @Override public void loadCraftingRecipes(String outputId, Object... results) { @@ -123,7 +239,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { for(Entry recipe : recipes.entrySet()) { ItemStack[][] ins = InventoryUtil.extractObject(recipe.getKey()); ItemStack[][] outs = InventoryUtil.extractObject(recipe.getValue()); - this.arecipes.add(new RecipeSet(ins, outs)); + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); } } else { @@ -142,7 +258,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { for(ItemStack[] array : outs) { for(ItemStack stack : array) { if(NEIServerUtils.areStacksSameTypeCrafting(stack, result)) { - this.arecipes.add(new RecipeSet(ins, outs)); + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); break match; } } @@ -170,7 +286,7 @@ public abstract class NEIUniversalHandler extends TemplateRecipeHandler { for(ItemStack[] array : ins) { for(ItemStack stack : array) { if(NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) { - this.arecipes.add(new RecipeSet(ins, outs)); + this.arecipes.add(new RecipeSet(ins, outs, recipe.getKey())); break match; } } diff --git a/src/main/java/com/hbm/handler/nei/ToolingHandler.java b/src/main/java/com/hbm/handler/nei/ToolingHandler.java new file mode 100644 index 000000000..c50074f1e --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/ToolingHandler.java @@ -0,0 +1,15 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.generic.BlockToolConversion; + +public class ToolingHandler extends NEIUniversalHandler { + + public ToolingHandler() { + super("Tooling", BlockToolConversion.getRecipes(true), BlockToolConversion.getRecipes(false)); + } + + @Override + public String getKey() { + return "ntmTooling"; + } +} diff --git a/src/main/java/com/hbm/handler/pollution/PollutionHandler.java b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java new file mode 100644 index 000000000..0ba128f52 --- /dev/null +++ b/src/main/java/com/hbm/handler/pollution/PollutionHandler.java @@ -0,0 +1,332 @@ +package com.hbm.handler.pollution; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map.Entry; +import java.util.UUID; + +import com.hbm.config.RadiationConfig; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; +import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import cpw.mods.fml.relauncher.Side; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.monster.IMob; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import net.minecraft.util.MathHelper; +import net.minecraft.world.ChunkCoordIntPair; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; +import net.minecraftforge.event.entity.living.LivingSpawnEvent; +import net.minecraftforge.event.world.WorldEvent; + +public class PollutionHandler { + + public static final String fileName = "hbmpollution.dat"; + public static HashMap perWorld = new HashMap(); + + /** Baserate of soot generation for a furnace-equivalent machine per second */ + public static final float SOOT_PER_SECOND = 1F / 25F; + /** Baserate of heavy metal generation, balanced around the soot values of combustion engines */ + public static final float HEAVY_METAL_PER_SECOND = 1F / 50F; + + /////////////////////// + /// UTILITY METHODS /// + /////////////////////// + public static void incrementPollution(World world, int x, int y, int z, PollutionType type, float amount) { + + if(!RadiationConfig.enablePollution) return; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + if(data == null) { + data = new PollutionData(); + ppw.pollution.put(pos, data); + } + data.pollution[type.ordinal()] = MathHelper.clamp_float(data.pollution[type.ordinal()] + amount, 0F, 10_000F); + } + + public static void decrementPollution(World world, int x, int y, int z, PollutionType type, float amount) { + incrementPollution(world, x, y, z, type, -amount); + } + + public static void setPollution(World world, int x, int y, int z, PollutionType type, float amount) { + + if(!RadiationConfig.enablePollution) return; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + if(data == null) { + data = new PollutionData(); + ppw.pollution.put(pos, data); + } + data.pollution[type.ordinal()] = amount; + } + + public static float getPollution(World world, int x, int y, int z, PollutionType type) { + + if(!RadiationConfig.enablePollution) return 0; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return 0F; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + if(data == null) return 0F; + return data.pollution[type.ordinal()]; + } + + public static PollutionData getPollutionData(World world, int x, int y, int z) { + + if(!RadiationConfig.enablePollution) return null; + + PollutionPerWorld ppw = perWorld.get(world); + if(ppw == null) return null; + ChunkCoordIntPair pos = new ChunkCoordIntPair(x >> 6, z >> 6); + PollutionData data = ppw.pollution.get(pos); + return data; + } + + ////////////////////// + /// EVENT HANDLING /// + ////////////////////// + @SubscribeEvent + public void onWorldLoad(WorldEvent.Load event) { + if(!event.world.isRemote && RadiationConfig.enablePollution) { + WorldServer world = (WorldServer) event.world; + String dirPath = getDataDir(world); + + try { + File pollutionFile = new File(dirPath, fileName); + + if(pollutionFile != null) { + + if(pollutionFile.exists()) { + FileInputStream io = new FileInputStream(pollutionFile); + NBTTagCompound data = CompressedStreamTools.readCompressed(io); + io.close(); + perWorld.put(event.world, new PollutionPerWorld(data)); + } else { + perWorld.put(event.world, new PollutionPerWorld()); + } + } + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + + @SubscribeEvent + public void onWorldUnload(WorldEvent.Unload event) { + if(!event.world.isRemote) perWorld.remove(event.world); + } + + @SubscribeEvent + public void onWorldSave(WorldEvent.Save event) { + if(!event.world.isRemote) { + WorldServer world = (WorldServer) event.world; + String dirPath = getDataDir(world); + File pollutionFile = new File(dirPath, fileName); + + try { + if(!pollutionFile.getParentFile().exists()) pollutionFile.getParentFile().mkdirs(); + if(!pollutionFile.exists()) pollutionFile.createNewFile(); + NBTTagCompound data = perWorld.get(world).writeToNBT(); + CompressedStreamTools.writeCompressed(data, new FileOutputStream(pollutionFile)); + } catch(Exception ex) { + System.out.println("Failed to write " + pollutionFile.getAbsolutePath()); + ex.printStackTrace(); + } + } + } + + public String getDataDir(WorldServer world) { + String dir = world.getSaveHandler().getWorldDirectory().getAbsolutePath(); + if(world.provider.dimensionId != 0) { + dir += File.separator + "DIM" + world.provider.dimensionId; + } + dir += File.separator + "data"; + return dir; + } + + ////////////////////////// + /// SYSTEM UPDATE LOOP /// + ////////////////////////// + int eggTimer = 0; + @SubscribeEvent + public void updateSystem(TickEvent.ServerTickEvent event) { + + if(event.side == Side.SERVER && event.phase == Phase.END) { + + eggTimer++; + if(eggTimer < 60) return; + eggTimer = 0; + + for(Entry entry : perWorld.entrySet()) { + HashMap newPollution = new HashMap(); + + for(Entry chunk : entry.getValue().pollution.entrySet()) { + int x = chunk.getKey().chunkXPos; + int z = chunk.getKey().chunkZPos; + PollutionData data = chunk.getValue(); + + float[] pollutionForNeightbors = new float[PollutionType.values().length]; + int S = PollutionType.SOOT.ordinal(); + int H = PollutionType.HEAVYMETAL.ordinal(); + int P = PollutionType.POISON.ordinal(); + + /* CALCULATION */ + if(data.pollution[S] > 15) { + pollutionForNeightbors[S] = data.pollution[S] * 0.05F; + data.pollution[S] *= 0.8F; + } else { + data.pollution[S] *= 0.99F; + } + + data.pollution[H] *= 0.9995F; + + if(data.pollution[P] > 10) { + pollutionForNeightbors[P] = data.pollution[P] * 0.025F; + data.pollution[P] *= 0.9F; + } else { + data.pollution[P] *= 0.995F; + } + + /* SPREADING */ + //apply new data to self + PollutionData newData = newPollution.get(chunk.getKey()); + if(newData == null) newData = new PollutionData(); + + boolean shouldPut = false; + for(int i = 0; i < newData.pollution.length; i++) { + newData.pollution[i] += data.pollution[i]; + if(newData.pollution[i] > 0) shouldPut = true; + } + if(shouldPut) newPollution.put(chunk.getKey(), newData); + + //apply neighbor data to neighboring chunks + int[][] offsets = new int[][] {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; + for(int[] offset : offsets) { + ChunkCoordIntPair offPos = new ChunkCoordIntPair(x + offset[0], z + offset[1]); + PollutionData offsetData = newPollution.get(offPos); + if(offsetData == null) offsetData = new PollutionData(); + + shouldPut = false; + for(int i = 0; i < offsetData.pollution.length; i++) { + offsetData.pollution[i] += pollutionForNeightbors[i]; + if(offsetData.pollution[i] > 0) shouldPut = true; + } + if(shouldPut) newPollution.put(offPos, offsetData); + } + } + + entry.getValue().pollution.clear(); + entry.getValue().pollution.putAll(newPollution); + } + } + } + + ////////////////////// + /// DATA STRUCTURE /// + ////////////////////// + public static class PollutionPerWorld { + public HashMap pollution = new HashMap(); + + public PollutionPerWorld() { } + + public PollutionPerWorld(NBTTagCompound data) { + + NBTTagList list = data.getTagList("entries", 10); + + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt = list.getCompoundTagAt(i); + int chunkX = nbt.getInteger("chunkX"); + int chunkZ = nbt.getInteger("chunkZ"); + pollution.put(new ChunkCoordIntPair(chunkX, chunkZ), PollutionData.fromNBT(nbt)); + } + } + + public NBTTagCompound writeToNBT() { + + NBTTagCompound data = new NBTTagCompound(); + + NBTTagList list = new NBTTagList(); + + for(Entry entry : pollution.entrySet()) { + NBTTagCompound nbt = new NBTTagCompound(); + nbt.setInteger("chunkX", entry.getKey().chunkXPos); + nbt.setInteger("chunkZ", entry.getKey().chunkZPos); + entry.getValue().toNBT(nbt); + list.appendTag(nbt); + } + + data.setTag("entries", list); + + return data; + } + } + + public static class PollutionData { + public float[] pollution = new float[PollutionType.values().length]; + + public static PollutionData fromNBT(NBTTagCompound nbt) { + PollutionData data = new PollutionData(); + + for(int i = 0; i < PollutionType.values().length; i++) { + data.pollution[i] = nbt.getFloat(PollutionType.values()[i].name().toLowerCase(Locale.US)); + } + + return data; + } + + public void toNBT(NBTTagCompound nbt) { + for(int i = 0; i < PollutionType.values().length; i++) { + nbt.setFloat(PollutionType.values()[i].name().toLowerCase(Locale.US), pollution[i]); + } + } + } + + public static enum PollutionType { + SOOT, POISON, HEAVYMETAL, FALLOUT; + } + + /////////////////// + /// MOB EFFECTS /// + /////////////////// + + public static final UUID maxHealth = UUID.fromString("25462f6c-2cb2-4ca8-9b47-3a011cc61207"); + public static final UUID attackDamage = UUID.fromString("8f442d7c-d03f-49f6-a040-249ae742eed9"); + + @SubscribeEvent + public void decorateMob(LivingSpawnEvent event) { + + if(!RadiationConfig.enablePollution) return; + + World world = event.world; + if(world.isRemote) return; + EntityLivingBase living = event.entityLiving; + + PollutionData data = getPollutionData(world, (int) Math.floor(event.x), (int) Math.floor(event.y), (int) Math.floor(event.z)); + if(data == null) return; + + if(living instanceof IMob) { + + if(data.pollution[PollutionType.SOOT.ordinal()] > RadiationConfig.buffMobThreshold) { + if(living.getEntityAttribute(SharedMonsterAttributes.maxHealth) != null && living.getEntityAttribute(SharedMonsterAttributes.maxHealth).getModifier(maxHealth) == null) living.getEntityAttribute(SharedMonsterAttributes.maxHealth).applyModifier(new AttributeModifier(maxHealth, "Soot Anger Health Increase", 1D, 1)); + if(living.getEntityAttribute(SharedMonsterAttributes.attackDamage) != null && living.getEntityAttribute(SharedMonsterAttributes.attackDamage).getModifier(attackDamage) == null) living.getEntityAttribute(SharedMonsterAttributes.attackDamage).applyModifier(new AttributeModifier(attackDamage, "Soot Anger Damage Increase", 1.5D, 1)); + living.heal(living.getMaxHealth()); + } + } + } +} diff --git a/src/main/java/com/hbm/hazard/HazardRegistry.java b/src/main/java/com/hbm/hazard/HazardRegistry.java index 7f686ff4c..b670bfde7 100644 --- a/src/main/java/com/hbm/hazard/HazardRegistry.java +++ b/src/main/java/com/hbm/hazard/HazardRegistry.java @@ -9,10 +9,12 @@ import com.hbm.config.GeneralConfig; import com.hbm.hazard.modifier.*; import com.hbm.hazard.transformer.*; import com.hbm.hazard.type.*; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.material.MaterialShapes; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemRTGPelletDepleted.DepletedRTGMaterial; +import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; import com.hbm.items.special.ItemHolotapeImage.EnumHoloImage; import com.hbm.util.Compat; @@ -104,6 +106,7 @@ public class HazardRegistry { public static final float saf = 5.85F; public static final float sas3 = 5F; public static final float gh336 = 5.0F; + public static final float mud = 1.0F; public static final float radsource_mult = 3.0F; public static final float pobe = po210 * radsource_mult; public static final float rabe = ra226 * radsource_mult; @@ -177,7 +180,7 @@ public class HazardRegistry { HazardSystem.register(lamp_demon, makeData(RADIATION, 100_000F)); HazardSystem.register(cell_tritium, makeData(RADIATION, 0.001F)); - HazardSystem.register(cell_sas3, makeData().addEntry(RADIATION, sas3).addEntry(BLINDING, 10F)); + HazardSystem.register(cell_sas3, makeData().addEntry(RADIATION, sas3).addEntry(BLINDING, 60F)); HazardSystem.register(cell_balefire, makeData(RADIATION, 50F)); HazardSystem.register(powder_balefire, makeData(RADIATION, 500F)); HazardSystem.register(egg_balefire_shard, makeData(RADIATION, bf * nugget)); @@ -429,6 +432,17 @@ public class HazardRegistry { registerRBMKPellet(rbmk_pellet_zfb_am_mix, pu241 * billet * 0.1F, wst * billet * 10F); registerRBMKPellet(rbmk_pellet_drx, bf * billet, bf * billet * 100F, true, 0F, 1F/24F); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.SCHRABIDIUM), makeData(RADIATION, sa326 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HES), makeData(RADIATION, saf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MES), makeData(RADIATION, saf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.LES), makeData(RADIATION, saf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.HEN), makeData(RADIATION, np237 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEU), makeData(RADIATION, uf * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.MEP), makeData(RADIATION, purg * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.DU), makeData(RADIATION, u238 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQD), makeData(RADIATION, u235 * ingot * 4)); + HazardSystem.register(DictFrame.fromOne(ModItems.watz_pellet, EnumWatzType.NQR), makeData(RADIATION, pu239 * ingot * 4)); + HazardSystem.register(powder_yellowcake, makeData(RADIATION, yc * powder)); HazardSystem.register(block_yellowcake, makeData(RADIATION, yc * block * powder_mult)); HazardSystem.register(ModItems.fallout, makeData(RADIATION, fo * powder)); diff --git a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java index 2a2dbb9e5..f7d6a3c49 100644 --- a/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java +++ b/src/main/java/com/hbm/hazard/type/HazardTypeHydroactive.java @@ -6,7 +6,6 @@ import com.hbm.config.RadiationConfig; import com.hbm.hazard.modifier.HazardModifier; import com.hbm.util.I18nUtil; -import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -33,7 +32,7 @@ public class HazardTypeHydroactive extends HazardTypeBase { if(RadiationConfig.disableHydro) return; - if(item.worldObj.getBlock((int)Math.floor(item.posX), (int)Math.floor(item.posY), (int)Math.floor(item.posZ)).getMaterial() == Material.water) { + if(item.isWet()) { item.setDead(); item.worldObj.newExplosion(null, item.posX, item.posY + item.height * 0.5, item.posZ, level, false, true); } diff --git a/src/main/java/com/hbm/interfaces/IBulletHitBehavior.java b/src/main/java/com/hbm/interfaces/IBulletHitBehavior.java deleted file mode 100644 index b07aab829..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletHitBehavior.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -import net.minecraft.entity.Entity; - -public interface IBulletHitBehavior { - - //entity is hit, bullet dies - public void behaveEntityHit(EntityBulletBase bullet, Entity hit); - -} diff --git a/src/main/java/com/hbm/interfaces/IBulletHurtBehavior.java b/src/main/java/com/hbm/interfaces/IBulletHurtBehavior.java deleted file mode 100644 index 4aa57a5a2..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletHurtBehavior.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -import net.minecraft.entity.Entity; - -public interface IBulletHurtBehavior { - - //entity is hit - public void behaveEntityHurt(EntityBulletBase bullet, Entity hit); -} diff --git a/src/main/java/com/hbm/interfaces/IBulletImpactBehavior.java b/src/main/java/com/hbm/interfaces/IBulletImpactBehavior.java deleted file mode 100644 index 30c067d79..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletImpactBehavior.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -public interface IBulletImpactBehavior { - - //block is hit, bullet dies - //also called when an entity is hit but with -1 coords, so beware - public void behaveBlockHit(EntityBulletBase bullet, int x, int y, int z); - -} diff --git a/src/main/java/com/hbm/interfaces/IBulletRicochetBehavior.java b/src/main/java/com/hbm/interfaces/IBulletRicochetBehavior.java deleted file mode 100644 index 4f4f5c5f6..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletRicochetBehavior.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -public interface IBulletRicochetBehavior { - - //block is hit, bullet ricochets - public void behaveBlockRicochet(EntityBulletBase bullet, int x, int y, int z); - -} diff --git a/src/main/java/com/hbm/interfaces/IBulletUpdateBehavior.java b/src/main/java/com/hbm/interfaces/IBulletUpdateBehavior.java deleted file mode 100644 index 9f614c41e..000000000 --- a/src/main/java/com/hbm/interfaces/IBulletUpdateBehavior.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.hbm.interfaces; - -import com.hbm.entity.projectile.EntityBulletBase; - -public interface IBulletUpdateBehavior { - - //once every update, for lcokon, steering and other memes - public void behaveUpdate(EntityBulletBase bullet); - -} diff --git a/src/main/java/com/hbm/interfaces/IControlReceiver.java b/src/main/java/com/hbm/interfaces/IControlReceiver.java index 74ff5d0c6..fe49fdf2e 100644 --- a/src/main/java/com/hbm/interfaces/IControlReceiver.java +++ b/src/main/java/com/hbm/interfaces/IControlReceiver.java @@ -10,6 +10,8 @@ import net.minecraft.nbt.NBTTagCompound; public interface IControlReceiver { public boolean hasPermission(EntityPlayer player); - + public void receiveControl(NBTTagCompound data); + /* this was the easiest way of doing this without needing to change all 7 quadrillion implementors */ + public default void receiveControl(EntityPlayer player, NBTTagCompound data) { } } diff --git a/src/main/java/com/hbm/interfaces/IDoor.java b/src/main/java/com/hbm/interfaces/IDoor.java index 2b101dd76..a0c539a28 100644 --- a/src/main/java/com/hbm/interfaces/IDoor.java +++ b/src/main/java/com/hbm/interfaces/IDoor.java @@ -2,19 +2,23 @@ package com.hbm.interfaces; public interface IDoor { - public void open(); - public void close(); - public DoorState getState(); - public void toggle(); - public default boolean setTexture(String tex) { + void open(); + void close(); + DoorState getState(); + void toggle(); + default boolean setTexture(String tex) { + return false; + } + default void setTextureState(byte tex) { } + + default boolean setSkinIndex(byte skinIndex) { return false; } - public default void setTextureState(byte tex) { }; - public enum DoorState { + enum DoorState { CLOSED, OPEN, CLOSING, - OPENING; + OPENING } } diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index aacd3c2f2..ce1c1977e 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; +import com.hbm.config.GeneralConfig; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.Fluids.CD_Canister; @@ -22,6 +23,7 @@ public class FluidContainerRegistry { public static void register() { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.water_bucket), new ItemStack(Items.bucket), Fluids.WATER, 1000)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.potionitem), new ItemStack(Items.glass_bottle), Fluids.WATER, 250)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.lava_bucket), new ItemStack(Items.bucket), Fluids.LAVA, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket), Fluids.WATZ, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket), Fluids.SCHRABIDIC, 1000)); @@ -32,7 +34,7 @@ public class FluidContainerRegistry { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.lox_barrel), new ItemStack(ModItems.tank_steel), Fluids.OXYGEN, 10000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_oil), null, Fluids.OIL, 250)); - FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_gneiss_gas), null, Fluids.PETROLEUM, 250)); + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModBlocks.ore_gneiss_gas), null, Fluids.PETROLEUM, GeneralConfig.enable528 ? 50 : 250)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_deuterium), new ItemStack(ModItems.cell_empty), Fluids.DEUTERIUM, 1000)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.cell_tritium), new ItemStack(ModItems.cell_empty), Fluids.TRITIUM, 1000)); diff --git a/src/main/java/com/hbm/inventory/FluidStack.java b/src/main/java/com/hbm/inventory/FluidStack.java index f508ed0ab..03b001ef4 100644 --- a/src/main/java/com/hbm/inventory/FluidStack.java +++ b/src/main/java/com/hbm/inventory/FluidStack.java @@ -3,9 +3,10 @@ package com.hbm.inventory; import com.hbm.inventory.fluid.FluidType; public class FluidStack { - - public int fill; + public FluidType type; + public int fill; + public int pressure; public FluidStack(int fill, FluidType type) { this.fill = fill; @@ -13,7 +14,12 @@ public class FluidStack { } public FluidStack(FluidType type, int fill) { + this(type, fill, 0); + } + + public FluidStack(FluidType type, int fill, int pressure) { this.fill = fill; this.type = type; + this.pressure = pressure; } } diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index b6c84d700..1f96d0d4b 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -28,9 +28,11 @@ import com.hbm.items.ItemEnums.EnumCokeType; import com.hbm.items.ItemEnums.EnumTarType; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; +import com.hbm.util.Compat; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -90,6 +92,7 @@ public class OreDictManager { public static final String KEY_TOOL_SCREWDRIVER = "ntmscrewdriver"; public static final String KEY_TOOL_HANDDRILL = "ntmhanddrill"; public static final String KEY_TOOL_CHEMISTRYSET = "ntmchemistryset"; + public static final String KEY_TOOL_TORCH = "ntmtorch"; public static final String KEY_CIRCUIT_BISMUTH = "circuitVersatile"; @@ -110,7 +113,7 @@ public class OreDictManager { /* * RADIOACTIVE */ - public static final DictFrame U = new DictFrame("Uranium"); + public static final DictFrame U = new DictFrame(Compat.isModLoaded(Compat.MOD_GT6) ? "Uraninite" : "Uranium"); public static final DictFrame U233 = new DictFrame("Uranium233", "U233"); public static final DictFrame U235 = new DictFrame("Uranium235", "U235"); public static final DictFrame U238 = new DictFrame("Uranium238", "U238"); @@ -137,6 +140,7 @@ public class OreDictManager { public static final DictFrame SBD = new DictFrame("Schrabidate"); public static final DictFrame SRN = new DictFrame("Schraranium"); public static final DictFrame GH336 = new DictFrame("Ghiorsium336", "Gh336"); + public static final DictFrame MUD = new DictFrame("WatzMud"); /* * STABLE */ @@ -206,6 +210,7 @@ public class OreDictManager { public static final DictFrame LIGCOKE = new DictFrame("LigniteCoke"); public static final DictFrame CINNABAR = new DictFrame("Cinnabar"); public static final DictFrame BORAX = new DictFrame("Borax"); + public static final DictFrame CHLOROCALCITE = new DictFrame("Chlorocalcite"); public static final DictFrame VOLCANIC = new DictFrame("Volcanic"); public static final DictFrame HEMATITE = new DictFrame("Hematite"); public static final DictFrame MALACHITE = new DictFrame("Malachite"); @@ -296,7 +301,7 @@ public class OreDictManager { IRON.plate(plate_iron).dust(powder_iron).ore(ore_gneiss_iron); GOLD.plate(plate_gold).dust(powder_gold).ore(ore_gneiss_gold); LAPIS.dust(powder_lapis); - NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz); + NETHERQUARTZ.gem(Items.quartz).dust(powder_quartz).ore(Blocks.quartz_ore); DIAMOND.dust(powder_diamond).ore(gravel_diamond); EMERALD.dust(powder_emerald); @@ -330,6 +335,7 @@ public class OreDictManager { SBD .rad(HazardRegistry.sb) .blinding(50F) .ingot(ingot_schrabidate) .dust(powder_schrabidate) .block(block_schrabidate); SRN .rad(HazardRegistry.sr) .blinding(50F) .ingot(ingot_schraranium) .block(block_schraranium); GH336 .rad(HazardRegistry.gh336) .nugget(nugget_gh336) .billet(billet_gh336) .ingot(ingot_gh336); + MUD .rad(HazardRegistry.mud) .ingot(ingot_mud); /* * STABLE @@ -341,13 +347,13 @@ public class OreDictManager { W .ingot(ingot_tungsten) .dust(powder_tungsten) .block(block_tungsten) .ore(ore_tungsten, ore_nether_tungsten, ore_meteor_tungsten) .oreNether(ore_nether_tungsten); AL .ingot(ingot_aluminium) .dust(powder_aluminium) .plate(plate_aluminium) .block(block_aluminium) .ore(ore_aluminium, ore_meteor_aluminium); STEEL .ingot(ingot_steel) .dustSmall(powder_steel_tiny) .dust(powder_steel) .plate(plate_steel) .block(block_steel); - TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy); - CDALLOY .ingot(ingot_cdalloy); + TCALLOY .ingot(ingot_tcalloy) .dust(powder_tcalloy) .block(block_tcalloy); + CDALLOY .ingot(ingot_cdalloy) .block(block_cdalloy); PB .nugget(nugget_lead) .ingot(ingot_lead) .dust(powder_lead) .plate(plate_lead) .block(block_lead) .ore(ore_lead, ore_meteor_lead); BI .nugget(nugget_bismuth) .ingot(ingot_bismuth) .dust(powder_bismuth); AS .nugget(nugget_arsenic) .ingot(ingot_arsenic); CA .ingot(ingot_calcium) .dust(powder_calcium); - CD .ingot(ingot_cadmium) .dust(powder_cadmium); + CD .ingot(ingot_cadmium) .dust(powder_cadmium) .block(block_cadmium); TA .nugget(nugget_tantalium) .gem(gem_tantalium) .ingot(ingot_tantalium) .dust(powder_tantalium) .block(block_tantalium); COLTAN .ingot(fragment_coltan) .dust(powder_coltan_ore) .block(block_coltan) .ore(ore_coltan); NB .nugget(fragment_niobium) .ingot(ingot_niobium) .dustSmall(powder_niobium_tiny) .dust(powder_niobium) .block(block_niobium); @@ -386,6 +392,7 @@ public class OreDictManager { LIGCOKE .gem(fromOne(coke, EnumCokeType.LIGNITE)) .block(fromOne(block_coke, EnumCokeType.LIGNITE)); CINNABAR .crystal(cinnebar) .gem(cinnebar) .ore(ore_cinnebar, ore_depth_cinnebar); BORAX .dust(powder_borax) .ore(ore_depth_borax); + CHLOROCALCITE .dust(powder_chlorocalcite); VOLCANIC .gem(gem_volcanic) .ore(basalt_gem); HEMATITE .ore(fromOne(stone_resource, EnumStoneType.HEMATITE)); MALACHITE .ore(fromOne(stone_resource, EnumStoneType.MALACHITE)); @@ -448,6 +455,7 @@ public class OreDictManager { ANY_HIGHEXPLOSIVE .ingot(ball_tnt).ingot(ball_tatb); ANY_CONCRETE .any(concrete, concrete_smooth, concrete_asbestos, ducrete, ducrete_smooth); for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored, 1, i)); } + for(int i = 0; i < 16; i++) { ANY_CONCRETE.any(new ItemStack(ModBlocks.concrete_colored_ext, 1, i)); } ANY_COKE .gem(fromAll(coke, EnumCokeType.class)).block(fromAll(block_coke, EnumCokeType.class)); ANY_BISMOID .ingot(ingot_bismuth, ingot_arsenic).nugget(nugget_bismuth, nugget_arsenic).block(block_bismuth); @@ -475,6 +483,8 @@ public class OreDictManager { OreDictionary.registerOre(KEY_TOOL_HANDDRILL, new ItemStack(hand_drill_desh, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre(KEY_TOOL_CHEMISTRYSET, new ItemStack(chemistry_set_boron, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_TORCH, new ItemStack(blowtorch, 1, OreDictionary.WILDCARD_VALUE)); + OreDictionary.registerOre(KEY_TOOL_TORCH, new ItemStack(acetylene_torch, 1, OreDictionary.WILDCARD_VALUE)); /* * CIRCUITS @@ -549,6 +559,7 @@ public class OreDictManager { OreDictionary.registerOre("dyeGray", fromOne(oil_tar, EnumTarType.COAL)); OreDictionary.registerOre("dyeBrown", fromOne(oil_tar, EnumTarType.WOOD)); OreDictionary.registerOre("dyeCyan", fromOne(oil_tar, EnumTarType.WAX)); + OreDictionary.registerOre("dyeWhite", fromOne(oil_tar, EnumTarType.PARAFFIN)); OreDictionary.registerOre("dye", new ItemStack(oil_tar, 1, OreDictionary.WILDCARD_VALUE)); OreDictionary.registerOre("dyeOrange", powder_cadmium); OreDictionary.registerOre("dye", powder_cadmium); @@ -563,6 +574,8 @@ public class OreDictManager { OreDictionary.registerOre("blockGlassLime", glass_trinitite); OreDictionary.registerOre("blockGlassRed", glass_polonium); OreDictionary.registerOre("blockGlassBlack", glass_ash); + + OreDictionary.registerOre("container1000lubricant", bdcl); MaterialShapes.registerCompatShapes(); } @@ -862,18 +875,19 @@ public class OreDictManager { return this; } - public String any() { return ANY + groupName; } - public String nugget() { return NUGGET + groupName; } - public String tiny() { return TINY + groupName; } - public String ingot() { return INGOT + groupName; } - public String dustTiny() { return DUSTTINY + groupName; } - public String dust() { return DUST + groupName; } - public String gem() { return GEM + groupName; } - public String crystal() { return CRYSTAL + groupName; } - public String plate() { return PLATE + groupName; } - public String billet() { return BILLET + groupName; } - public String block() { return BLOCK + groupName; } - public String ore() { return ORE + groupName; } + public String any() { return ANY + groupName; } + public String nugget() { return NUGGET + groupName; } + public String tiny() { return TINY + groupName; } + public String ingot() { return INGOT + groupName; } + public String dustTiny() { return DUSTTINY + groupName; } + public String dust() { return DUST + groupName; } + public String gem() { return GEM + groupName; } + public String crystal() { return CRYSTAL + groupName; } + public String plate() { return PLATE + groupName; } + public String plateCast() { return PLATECAST + groupName; } + public String billet() { return BILLET + groupName; } + public String block() { return BLOCK + groupName; } + public String ore() { return ORE + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/RecipesCommon.java b/src/main/java/com/hbm/inventory/RecipesCommon.java index f26af74e1..9e963743b 100644 --- a/src/main/java/com/hbm/inventory/RecipesCommon.java +++ b/src/main/java/com/hbm/inventory/RecipesCommon.java @@ -169,7 +169,6 @@ public class RecipesCommon { String[] entries = new String[ids.length]; for(int i = 0; i < ids.length; i++) { - entries[i] = OreDictionary.getOreName(ids[i]); } @@ -455,17 +454,41 @@ public class RecipesCommon { this.block = block; this.meta = meta; } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + Block.blockRegistry.getNameForObject(block).hashCode(); + result = prime * result + meta; + return result; + } + + @Override + public boolean equals(Object obj) { + if(this == obj) + return true; + if(obj == null) + return false; + if(getClass() != obj.getClass()) + return false; + MetaBlock other = (MetaBlock) obj; + if(block == null) { + if(other.block != null) + return false; + } else if(!block.equals(other.block)) + return false; + if(meta != other.meta) + return false; + return true; + } public MetaBlock(Block block) { this(block, 0); } - public int getID() { - final int prime = 31; - int result = 1; - result = prime * result + Block.getIdFromBlock(block); - result = prime * result + meta; - return result; + @Deprecated public int getID() { + return hashCode(); } } diff --git a/src/main/java/com/hbm/inventory/SlotCraftingOutput.java b/src/main/java/com/hbm/inventory/SlotCraftingOutput.java index 37c0fd450..46770d660 100644 --- a/src/main/java/com/hbm/inventory/SlotCraftingOutput.java +++ b/src/main/java/com/hbm/inventory/SlotCraftingOutput.java @@ -1,13 +1,10 @@ package com.hbm.inventory; -import com.hbm.blocks.ModBlocks; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; +import com.hbm.util.AchievementHandler; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.Slot; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; public class SlotCraftingOutput extends Slot { @@ -27,40 +24,7 @@ public class SlotCraftingOutput extends Slot { //ugly but nothing to be done public static void checkAchievements(EntityPlayer player, ItemStack stack) { - Item item = stack.getItem(); - - if(item == Item.getItemFromBlock(ModBlocks.machine_chemplant)) - player.triggerAchievement(MainRegistry.achChemplant); - if(item == Item.getItemFromBlock(ModBlocks.concrete) || item == Item.getItemFromBlock(ModBlocks.concrete_asbestos)) - player.triggerAchievement(MainRegistry.achConcrete); - if(item == ModItems.ingot_polymer) - player.triggerAchievement(MainRegistry.achPolymer); - if(item == ModItems.ingot_desh) - player.triggerAchievement(MainRegistry.achDesh); - if(item == ModItems.gem_tantalium) - player.triggerAchievement(MainRegistry.achTantalum); - if(item == Item.getItemFromBlock(ModBlocks.machine_gascent)) - player.triggerAchievement(MainRegistry.achGasCent); - if(item == Item.getItemFromBlock(ModBlocks.machine_centrifuge)) - player.triggerAchievement(MainRegistry.achCentrifuge); - if(item == ModItems.ingot_schrabidium || item == ModItems.nugget_schrabidium) - player.triggerAchievement(MainRegistry.achSchrab); - if(item == Item.getItemFromBlock(ModBlocks.machine_crystallizer)) - player.triggerAchievement(MainRegistry.achAcidizer); - if(item == Item.getItemFromBlock(ModBlocks.machine_silex)) - player.triggerAchievement(MainRegistry.achSILEX); - if(item == ModItems.nugget_technetium) - player.triggerAchievement(MainRegistry.achTechnetium); - if(item == Item.getItemFromBlock(ModBlocks.watz_core)) - player.triggerAchievement(MainRegistry.achWatz); - if(item == ModItems.nugget_bismuth) - player.triggerAchievement(MainRegistry.achBismuth); - if(item == ModItems.nugget_am241 || item == ModItems.nugget_am242) - player.triggerAchievement(MainRegistry.achBreeding); - if(item == ModItems.missile_nuclear || item == ModItems.missile_nuclear_cluster || item == ModItems.missile_doomsday || item == ModItems.mp_warhead_10_nuclear || item == ModItems.mp_warhead_10_nuclear_large || item == ModItems.mp_warhead_15_nuclear || item == ModItems.mp_warhead_15_nuclear_shark || item == ModItems.mp_warhead_15_boxcar) - player.triggerAchievement(MainRegistry.achRedBalloons); - if(item == Item.getItemFromBlock(ModBlocks.struct_iter_core)) - player.triggerAchievement(MainRegistry.achFusion); + AchievementHandler.fire(player, stack); } @Override diff --git a/src/main/java/com/hbm/inventory/container/ContainerCompressor.java b/src/main/java/com/hbm/inventory/container/ContainerCompressor.java new file mode 100644 index 000000000..3f81b4f68 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCompressor.java @@ -0,0 +1,83 @@ +package com.hbm.inventory.container; + +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import api.hbm.energy.IBatteryItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCompressor extends Container { + + private TileEntityMachineCompressor compressor; + + public ContainerCompressor(InventoryPlayer playerInv, TileEntityMachineCompressor tile) { + compressor = tile; + + //Fluid ID + this.addSlotToContainer(new Slot(tile, 0, 17, 72)); + //Battery + this.addSlotToContainer(new Slot(tile, 1, 152, 72)); + //Upgrades + this.addSlotToContainer(new Slot(tile, 2, 52, 72)); + this.addSlotToContainer(new Slot(tile, 3, 70, 72)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return compressor.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(index); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(index < 4) { + if(!this.mergeItemStack(var5, 4, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IBatteryItem) { + if(!this.mergeItemStack(var5, 1, 2, false)) { + return null; + } + } else if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else { + if(!this.mergeItemStack(var5, 2, 4, false)) { + return null; + } + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java b/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java new file mode 100644 index 000000000..56af3c613 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCounterTorch.java @@ -0,0 +1,76 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.network.TileEntityRadioTorchCounter; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCounterTorch extends Container { + + protected TileEntityRadioTorchCounter radio; + + public ContainerCounterTorch(InventoryPlayer invPlayer, TileEntityRadioTorchCounter radio) { + this.radio = radio; + + for(int i = 0; i < 3; i++) { + this.addSlotToContainer(new Slot(radio, i, 138, 18 + 44 * i)); + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 12 + j * 18, 156 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 12 + i * 18, 214)); + } + } + + @Override public ItemStack transferStackInSlot(EntityPlayer player, int slot) { return null; } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return radio.isUseableByPlayer(player); + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + if(index < 0 || index > 2) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + radio.matcher.nextMode(radio.getWorldObj(), slot.getStack(), index); + return ret; + + } else { + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + radio.matcher.initPatternStandard(radio.getWorldObj(), slot.getStack(), index); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java index a0de53617..afab4ad24 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneExtractor.java @@ -14,26 +14,26 @@ public class ContainerCraneExtractor extends Container { protected TileEntityCraneExtractor extractor; - public ContainerCraneExtractor(InventoryPlayer invPlayer, TileEntityCraneExtractor inserter) { - this.extractor = inserter; + public ContainerCraneExtractor(InventoryPlayer invPlayer, TileEntityCraneExtractor extractor) { + this.extractor = extractor; //filter for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { - this.addSlotToContainer(new Slot(inserter, j + i * 3, 71 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new Slot(extractor, j + i * 3, 71 + j * 18, 17 + i * 18)); } } //buffer for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) { - this.addSlotToContainer(new Slot(inserter, 9 + j + i * 3, 8 + j * 18, 17 + i * 18)); + this.addSlotToContainer(new Slot(extractor, 9 + j + i * 3, 8 + j * 18, 17 + i * 18)); } } //upgrades - this.addSlotToContainer(new SlotUpgrade(inserter, 18, 152, 23)); - this.addSlotToContainer(new SlotUpgrade(inserter, 19, 152, 47)); + this.addSlotToContainer(new SlotUpgrade(extractor, 18, 152, 23)); + this.addSlotToContainer(new SlotUpgrade(extractor, 19, 152, 47)); for(int i = 0; i < 3; i++) { for(int j = 0; j < 9; j++) { @@ -102,8 +102,6 @@ public class ContainerCraneExtractor extends Container { //M3: 3 //SHIFT: 1 //DRAG: 5 - //System.out.println("Mode " + mode); - //System.out.println("Slot " + index); if(index < 0 || index > 8) { return super.slotClick(index, button, mode, player); diff --git a/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java new file mode 100644 index 000000000..32c91fd68 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCraneGrabber.java @@ -0,0 +1,126 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotUpgrade; +import com.hbm.items.ModItems; +import com.hbm.tileentity.network.TileEntityCraneGrabber; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerCraneGrabber extends Container { + + protected TileEntityCraneGrabber grabber; + + public ContainerCraneGrabber(InventoryPlayer invPlayer, TileEntityCraneGrabber grabber) { + this.grabber = grabber; + + //filter + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 3; j++) { + this.addSlotToContainer(new Slot(grabber, j + i * 3, 40 + j * 18, 17 + i * 18)); + } + } + + //upgrades + this.addSlotToContainer(new SlotUpgrade(grabber, 9, 121, 23)); + this.addSlotToContainer(new SlotUpgrade(grabber, 10, 121, 47)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int slot) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(slot); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(slot < 9) { //filters + return null; + } + + if(slot <= grabber.getSizeInventory() - 1) { + if(!this.mergeItemStack(var5, grabber.getSizeInventory(), this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() == ModItems.upgrade_stack) { + if(!this.mergeItemStack(var5, 9, 10, false)) + return null; + } else if(var3.getItem() == ModItems.upgrade_ejector) { + if(!this.mergeItemStack(var5, 10, 11, false)) + return null; + } + + return null; + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + + var4.onPickupFromSlot(player, var5); + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return grabber.isUseableByPlayer(player); + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + + if(index < 0 || index > 8) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + grabber.nextMode(index); + return ret; + + } else { + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + grabber.matcher.initPatternStandard(grabber.getWorldObj(), slot.getStack(), index); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java b/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java index d91eb1be0..26bdada96 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateIron.java @@ -10,25 +10,20 @@ public class ContainerCrateIron extends ContainerCrateBase { public ContainerCrateIron(InventoryPlayer invPlayer, TileEntityCrateIron tedf) { super(tedf); - - for(int i = 0; i < 4; i++) - { - for(int j = 0; j < 9; j++) - { + + for(int i = 0; i < 4; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(tedf, j + i * 9, 8 + j * 18, 18 + i * 18)); } } - - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18 + 20)); } } - - for(int i = 0; i < 9; i++) - { + + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142 + 20)); } } diff --git a/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java b/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java new file mode 100644 index 000000000..122c301e4 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerCrateTemplate.java @@ -0,0 +1,29 @@ +package com.hbm.inventory.container; + +import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; + +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; + +public class ContainerCrateTemplate extends ContainerCrateBase { + + public ContainerCrateTemplate(InventoryPlayer invPlayer, TileEntityCrateTemplate tedf) { + super(tedf); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(tedf, j + i * 9, 8 + j * 18, 18 + i * 18)); + } + } + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 86 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 144)); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java new file mode 100644 index 000000000..d52d54c24 --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserFluid.java @@ -0,0 +1,54 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.tileentity.machine.TileEntityElectrolyser; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +public class ContainerElectrolyserFluid extends Container { + + private TileEntityElectrolyser electrolyser; + + public ContainerElectrolyserFluid(InventoryPlayer invPlayer, TileEntityElectrolyser tedf) { + electrolyser = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 186, 109)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 1, 186, 140)); + this.addSlotToContainer(new Slot(tedf, 2, 186, 158)); + //Fluid ID + this.addSlotToContainer(new Slot(tedf, 3, 6, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 4, 6, 54)); + //Input + this.addSlotToContainer(new Slot(tedf, 5, 24, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 6, 24, 54)); + //Output + this.addSlotToContainer(new Slot(tedf, 7, 78, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 8, 78, 54)); + this.addSlotToContainer(new Slot(tedf, 9, 134, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 10, 134, 54)); + //Byproducts + this.addSlotToContainer(new SlotTakeOnly(tedf, 11, 154, 18)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 12, 154, 36)); + this.addSlotToContainer(new SlotTakeOnly(tedf, 13, 154, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return electrolyser.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java new file mode 100644 index 000000000..881f1382c --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerElectrolyserMetal.java @@ -0,0 +1,48 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.tileentity.machine.TileEntityElectrolyser; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; + +public class ContainerElectrolyserMetal extends Container { + + private TileEntityElectrolyser electrolyser; + + public ContainerElectrolyserMetal(InventoryPlayer invPlayer, TileEntityElectrolyser tedf) { + electrolyser = tedf; + + //Battery + this.addSlotToContainer(new Slot(tedf, 0, 186, 109)); + //Upgrades + this.addSlotToContainer(new Slot(tedf, 1, 186, 140)); + this.addSlotToContainer(new Slot(tedf, 2, 186, 158)); + //Input + this.addSlotToContainer(new Slot(tedf, 14, 10, 22)); + //Outputs + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 15, 136, 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 16, 154, 18)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 17, 136, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 18, 154, 36)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 19, 136, 54)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 20, 154, 54)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return electrolyser.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java index a746904c8..41b30d98e 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCatalyticReformer.java @@ -9,7 +9,6 @@ import api.hbm.energy.IBatteryItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; @@ -55,11 +54,6 @@ public class ContainerMachineCatalyticReformer extends Container { } } - @Override - public void addCraftingToCrafters(ICrafting crafting) { - super.addCraftingToCrafters(crafting); - } - @Override public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { ItemStack var3 = null; diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java new file mode 100644 index 000000000..61ea7768e --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCoker.java @@ -0,0 +1,73 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.items.machine.IItemFluidIdentifier; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineCoker extends Container { + + private TileEntityMachineCoker coker; + + public ContainerMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) { + + coker = tedf; + + this.addSlotToContainer(new Slot(tedf, 0, 35, 72)); + this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 1, 97, 27)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 122 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 180)); + } + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) { + ItemStack var3 = null; + Slot var4 = (Slot) this.inventorySlots.get(par2); + + if(var4 != null && var4.getHasStack()) { + ItemStack var5 = var4.getStack(); + var3 = var5.copy(); + + if(par2 <= 1) { + if(!this.mergeItemStack(var5, 2, this.inventorySlots.size(), true)) { + return null; + } + } else { + + if(var3.getItem() instanceof IItemFluidIdentifier) { + if(!this.mergeItemStack(var5, 0, 1, false)) { + return null; + } + } else { + return null; + } + } + + if(var5.stackSize == 0) { + var4.putStack((ItemStack) null); + } else { + var4.onSlotChanged(); + } + } + + return var3; + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return coker.isUseableByPlayer(player); + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java b/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java new file mode 100644 index 000000000..d85a2953f --- /dev/null +++ b/src/main/java/com/hbm/inventory/container/ContainerMachineCustom.java @@ -0,0 +1,109 @@ +package com.hbm.inventory.container; + +import com.hbm.inventory.SlotCraftingOutput; +import com.hbm.inventory.SlotPattern; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class ContainerMachineCustom extends Container { + + private TileEntityCustomMachine custom; + + public ContainerMachineCustom(InventoryPlayer playerInv, TileEntityCustomMachine tile) { + custom = tile; + + //Input + this.addSlotToContainer(new Slot(tile, 0, 150, 72)); + //Fluid IDs + for(int i = 0; i < tile.inputTanks.length; i++) { + this.addSlotToContainer(new Slot(tile, 1 + i, 8 + 18 * i, 54)); + } + //Item inputs + if(tile.config.itemInCount > 0) this.addSlotToContainer(new Slot(tile, 4, 8, 72)); + if(tile.config.itemInCount > 1) this.addSlotToContainer(new Slot(tile, 5, 26, 72)); + if(tile.config.itemInCount > 2) this.addSlotToContainer(new Slot(tile, 6, 44, 72)); + if(tile.config.itemInCount > 3) this.addSlotToContainer(new Slot(tile, 7, 8, 90)); + if(tile.config.itemInCount > 4) this.addSlotToContainer(new Slot(tile, 8, 26, 90)); + if(tile.config.itemInCount > 5) this.addSlotToContainer(new Slot(tile, 9, 44, 90)); + //Templates + if(tile.config.itemInCount > 0) this.addSlotToContainer(new SlotPattern(tile, 10, 8, 108)); + if(tile.config.itemInCount > 1) this.addSlotToContainer(new SlotPattern(tile, 11, 26, 108)); + if(tile.config.itemInCount > 2) this.addSlotToContainer(new SlotPattern(tile, 12, 44, 108)); + if(tile.config.itemInCount > 3) this.addSlotToContainer(new SlotPattern(tile, 13, 8, 126)); + if(tile.config.itemInCount > 4) this.addSlotToContainer(new SlotPattern(tile, 14, 26, 126)); + if(tile.config.itemInCount > 5) this.addSlotToContainer(new SlotPattern(tile, 15, 44, 126)); + //Output + if(tile.config.itemOutCount > 0) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 16, 78, 72)); + if(tile.config.itemOutCount > 1) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 17, 96, 72)); + if(tile.config.itemOutCount > 2) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 18, 114, 72)); + if(tile.config.itemOutCount > 3) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 19, 78, 90)); + if(tile.config.itemOutCount > 4) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 20, 96, 90)); + if(tile.config.itemOutCount > 5) this.addSlotToContainer(new SlotCraftingOutput(playerInv.player, tile, 21, 114, 90)); + + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { + this.addSlotToContainer(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 174 + i * 18)); + } + } + + for(int i = 0; i < 9; i++) { + this.addSlotToContainer(new Slot(playerInv, i, 8 + i * 18, 232)); + } + } + + @Override + public boolean canInteractWith(EntityPlayer player) { + return custom.isUseableByPlayer(player); + } + + @Override + public ItemStack transferStackInSlot(EntityPlayer player, int index) { + return null; + } + + @Override + public ItemStack slotClick(int index, int button, int mode, EntityPlayer player) { + + //L/R: 0 + //M3: 3 + //SHIFT: 1 + //DRAG: 5 + + //TODO: shoot whoever at mojang wrote the container code + if(index < 0 || index >= this.inventorySlots.size() || !(this.inventorySlots.get(index) instanceof SlotPattern)) { + return super.slotClick(index, button, mode, player); + } + + Slot slot = this.getSlot(index); + index = ((Slot) this.inventorySlots.get(index)).getSlotIndex(); + + ItemStack ret = null; + ItemStack held = player.inventory.getItemStack(); + + if(slot.getHasStack()) + ret = slot.getStack().copy(); + + if(button == 1 && mode == 0 && slot.getHasStack()) { + custom.matcher.nextMode(player.worldObj, slot.getStack(), index - 10); + return ret; + + } else { + + slot.putStack(held != null ? held.copy() : null); + + if(slot.getHasStack()) { + slot.getStack().stackSize = 1; + } + + slot.onSlotChanged(); + custom.matcher.initPatternSmart(player.worldObj, slot.getStack(), index - 10); + + return ret; + } + } +} diff --git a/src/main/java/com/hbm/inventory/container/ContainerSatDock.java b/src/main/java/com/hbm/inventory/container/ContainerSatDock.java index 9ee0b37d5..02f02db56 100644 --- a/src/main/java/com/hbm/inventory/container/ContainerSatDock.java +++ b/src/main/java/com/hbm/inventory/container/ContainerSatDock.java @@ -1,7 +1,8 @@ package com.hbm.inventory.container; +import com.hbm.inventory.SlotTakeOnly; +import com.hbm.items.machine.ItemSatChip; import com.hbm.tileentity.machine.TileEntityMachineSatDock; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; @@ -11,41 +12,42 @@ import net.minecraft.item.ItemStack; public class ContainerSatDock extends Container { - private TileEntityMachineSatDock diFurnace; + private final TileEntityMachineSatDock tileSatelliteDock; - public ContainerSatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tedf) { - - diFurnace = tedf; + public ContainerSatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) { + tileSatelliteDock = tesd; //Storage - this.addSlotToContainer(new Slot(tedf, 0, 62, 17)); - this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); - this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); - this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); - this.addSlotToContainer(new Slot(tedf, 4, 134, 17)); - this.addSlotToContainer(new Slot(tedf, 5, 62, 35)); - this.addSlotToContainer(new Slot(tedf, 6, 80, 35)); - this.addSlotToContainer(new Slot(tedf, 7, 98, 35)); - this.addSlotToContainer(new Slot(tedf, 8, 116, 35)); - this.addSlotToContainer(new Slot(tedf, 9, 134, 35)); - this.addSlotToContainer(new Slot(tedf, 10, 62, 53)); - this.addSlotToContainer(new Slot(tedf, 11, 80, 53)); - this.addSlotToContainer(new Slot(tedf, 12, 98, 53)); - this.addSlotToContainer(new Slot(tedf, 13, 116, 53)); - this.addSlotToContainer(new Slot(tedf, 14, 134, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 62, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 80, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 98, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 116, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 134, 17)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 62, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 80, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 98, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 116, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 134, 35)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 62, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 80, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 98, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 116, 53)); + this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 134, 53)); //Chip - this.addSlotToContainer(new Slot(tedf, 15, 26, 35)); + this.addSlotToContainer(new Slot(tesd, 15, 26, 35) { + @Override + public boolean isItemValid(ItemStack stack) { + return stack.getItem() instanceof ItemSatChip; + } + }); - for(int i = 0; i < 3; i++) - { - for(int j = 0; j < 9; j++) - { + for(int i = 0; i < 3; i++) { + for(int j = 0; j < 9; j++) { this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } - for(int i = 0; i < 9; i++) - { + for(int i = 0; i < 9; i++) { this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); } } @@ -56,33 +58,25 @@ public class ContainerSatDock extends Container { } @Override - public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) - { + public ItemStack transferStackInSlot(EntityPlayer player, int par2) { ItemStack var3 = null; Slot var4 = (Slot) this.inventorySlots.get(par2); - if (var4 != null && var4.getHasStack()) - { + if (var4 != null && var4.getHasStack()) { ItemStack var5 = var4.getStack(); var3 = var5.copy(); if (par2 <= 15) { - if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) - { + if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) { return null; } - } - else if (!this.mergeItemStack(var5, 0, 15, false)) - { - return null; + } else if (!this.mergeItemStack(var5, 0, 15, false)) { + return null; } - if (var5.stackSize == 0) - { - var4.putStack((ItemStack) null); - } - else - { + if (var5.stackSize == 0) { + var4.putStack(null); + } else { var4.onSlotChanged(); } } @@ -92,6 +86,6 @@ public class ContainerSatDock extends Container { @Override public boolean canInteractWith(EntityPlayer player) { - return diFurnace.isUseableByPlayer(player); + return tileSatelliteDock.isUseableByPlayer(player); } } diff --git a/src/main/java/com/hbm/inventory/fluid/FluidType.java b/src/main/java/com/hbm/inventory/fluid/FluidType.java index cc52b005d..390fcfede 100644 --- a/src/main/java/com/hbm/inventory/fluid/FluidType.java +++ b/src/main/java/com/hbm/inventory/fluid/FluidType.java @@ -3,6 +3,7 @@ package com.hbm.inventory.fluid; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map.Entry; import org.lwjgl.input.Keyboard; @@ -47,7 +48,7 @@ public class FluidType { public double compression = DEFAULT_COMPRESSION; public HashMap containers = new HashMap(); - private HashMap, FluidTrait> traits = new HashMap(); + public HashMap, FluidTrait> traits = new HashMap(); //public List enumTraits = new ArrayList(); private ResourceLocation texture; @@ -55,12 +56,12 @@ public class FluidType { public FluidType(String name, int color, int p, int f, int r, EnumSymbol symbol) { this.stringId = name; this.color = color; - this.unlocalized = "hbmfluid." + name.toLowerCase(); + this.unlocalized = "hbmfluid." + name.toLowerCase(Locale.US); this.poison = p; this.flammability = f; this.reactivity = r; this.symbol = symbol; - this.texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/fluids/" + name.toLowerCase() + ".png"); + this.texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/fluids/" + name.toLowerCase(Locale.US) + ".png"); this.id = Fluids.registerSelf(this); } @@ -124,7 +125,7 @@ public class FluidType { return this.unlocalized; } public String getDict(int quantity) { - return "container" + quantity + this.stringId.replace("_", "").toLowerCase(); + return "container" + quantity + this.stringId.replace("_", "").toLowerCase(Locale.US); } public boolean isHot() { diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index 882abd686..0c1d523d7 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -1,18 +1,37 @@ package com.hbm.inventory.fluid; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.ArrayList; 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; import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; +import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; +import com.hbm.potion.HbmPotion; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.inventory.fluid.trait.FT_Coolable.CoolingType; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.inventory.fluid.trait.FT_Toxin.*; import com.hbm.render.util.EnumSymbol; +import com.hbm.util.ArmorRegistry.HazardClass; + +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; public class Fluids { + public static final Gson gson = new Gson(); + public static FluidType NONE; public static FluidType WATER; public static FluidType STEAM; @@ -117,12 +136,33 @@ public class Fluids { public static FluidType PHOSGENE; public static FluidType MUSTARDGAS; public static FluidType IONGEL; + public static FluidType OIL_COKER; //heavy fractions from coking, mostly bitumen + public static FluidType NAPHTHA_COKER; //medium fractions from coking, aromatics and fuel oil + public static FluidType GAS_COKER; //light fractions from coking, natgas and co2 + public static FluidType EGG; + public static FluidType CHOLESTEROL; + public static FluidType ESTRADIOL; + public static FluidType FISHOIL; + public static FluidType SUNFLOWEROIL; + public static FluidType NITROGLYCERIN; + public static FluidType REDMUD; + public static FluidType CHLOROCALCITE_SOLUTION; + public static FluidType CHLOROCALCITE_MIX; + public static FluidType CHLOROCALCITE_CLEANED; + public static FluidType POTASSIUM_CHLORIDE; + public static FluidType CALCIUM_CHLORIDE; + public static FluidType CALCIUM_SOLUTION; + public static FluidType SMOKE; + public static FluidType SMOKE_LEADED; + public static FluidType SMOKE_POISON; + public static FluidType HELIUM4; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); protected static final List metaOrder = new ArrayList(); public static final FT_Liquid LIQUID = new FT_Liquid(); + public static final FT_Viscous VISCOUS = new FT_Viscous(); public static final FT_Gaseous_ART EVAP = new FT_Gaseous_ART(); public static final FT_Gaseous GASEOUS = new FT_Gaseous(); public static final FT_Plasma PLASMA = new FT_Plasma(); @@ -131,6 +171,7 @@ public class Fluids { public static final FT_NoContainer NOCON = new FT_NoContainer(); public static final FT_NoID NOID = new FT_NoID(); public static final FT_Delicious DELICIOUS = new FT_Delicious(); + public static final FT_Leaded LEADED = new FT_Leaded(); public static void init() { @@ -154,19 +195,19 @@ public class Fluids { SUPERHOTSTEAM = new FluidType("SUPERHOTSTEAM", 0xE7B7B7, 4, 0, 0, EnumSymbol.NONE).setTemp(450).setCompression(1D).addTraits(GASEOUS); ULTRAHOTSTEAM = new FluidType("ULTRAHOTSTEAM", 0xE39393, 4, 0, 0, EnumSymbol.NONE).setTemp(600).setCompression(10D).addTraits(GASEOUS); COOLANT = new FluidType("COOLANT", 0xd8fcff, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - LAVA = new FluidType("LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200).addTraits(LIQUID); + LAVA = new FluidType("LAVA", 0xFF3300, 4, 0, 0, EnumSymbol.NOWATER).setTemp(1200).addTraits(LIQUID, VISCOUS); DEUTERIUM = new FluidType("DEUTERIUM", 0x0000FF, 3, 4, 0, EnumSymbol.NONE).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS); TRITIUM = new FluidType("TRITIUM", 0x000099, 3, 4, 0, EnumSymbol.RADIATION).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), GASEOUS, new FT_VentRadiation(0.001F)); - OIL = new FluidType("OIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID); - HOTOIL = new FluidType("HOTOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(new FT_Flammable(10_000), LIQUID); - HEAVYOIL = new FluidType("HEAVYOIL", 0x141312, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x513F39)).addTraits(new FT_Flammable(50_000), new FT_Combustible(FuelGrade.LOW, 25_000), LIQUID); - BITUMEN = new FluidType("BITUMEN", 0x1f2426, 2, 0, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5A5877)).addTraits(LIQUID); - SMEAR = new FluidType("SMEAR", 0x190f01, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x624F3B)).addTraits(new FT_Flammable(50_000), LIQUID); - HEATINGOIL = new FluidType("HEATINGOIL", 0x211806, 2, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x694235)).addTraits(new FT_Flammable(150_000), new FT_Combustible(FuelGrade.LOW, 100_000), LIQUID); - RECLAIMED = new FluidType("RECLAIMED", 0x332b22, 2, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xF65723)).addTraits(new FT_Flammable(100_000), new FT_Combustible(FuelGrade.LOW, 200_000), LIQUID); + OIL = new FluidType("OIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID, VISCOUS); + HOTOIL = new FluidType("HOTOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addTraits(new FT_Flammable(10_000), LIQUID, VISCOUS); + HEAVYOIL = new FluidType("HEAVYOIL", 0x141312, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x513F39)).addTraits(new FT_Flammable(50_000), new FT_Combustible(FuelGrade.LOW, 25_000), LIQUID, VISCOUS); + BITUMEN = new FluidType("BITUMEN", 0x1f2426, 2, 0, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5A5877)).addTraits(LIQUID, VISCOUS); + SMEAR = new FluidType("SMEAR", 0x190f01, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x624F3B)).addTraits(new FT_Flammable(50_000), LIQUID, VISCOUS); + HEATINGOIL = new FluidType("HEATINGOIL", 0x211806, 2, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x694235)).addTraits(new FT_Flammable(150_000), new FT_Combustible(FuelGrade.LOW, 100_000), LIQUID, VISCOUS); + RECLAIMED = new FluidType("RECLAIMED", 0x332b22, 2, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xF65723)).addTraits(new FT_Flammable(100_000), new FT_Combustible(FuelGrade.LOW, 200_000), LIQUID, VISCOUS); PETROIL = new FluidType("PETROIL", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2369F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 300_000), LIQUID); LUBRICANT = new FluidType("LUBRICANT", 0x606060, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xF1CC05)).addTraits(LIQUID); - NAPHTHA = new FluidType("NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID); + NAPHTHA = new FluidType("NAPHTHA", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID, VISCOUS); DIESEL = new FluidType("DIESEL", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF2C2C)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 500_000), LIQUID); LIGHTOIL = new FluidType("LIGHTOIL", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID); KEROSENE = new FluidType("KEROSENE", 0xffa5d2, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF377D)).addTraits(new FT_Flammable(300_000), new FT_Combustible(FuelGrade.AERO, 1_250_000), LIQUID); @@ -183,20 +224,20 @@ public class Fluids { AMAT = new FluidType("AMAT", 0x010101, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); ASCHRAB = new FluidType("ASCHRAB", 0xb50000, 5, 0, 5, EnumSymbol.ANTIMATTER).addTraits(ANTI, GASEOUS); ACID = new FluidType("ACID", 0xfff7aa, 3, 0, 3, EnumSymbol.OXIDIZER).addTraits(new FT_Corrosive(40), LIQUID); - WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID); - CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID); + WATZ = new FluidType("WATZ", 0x86653E, 4, 0, 3, EnumSymbol.ACID).addTraits(new FT_Corrosive(60), new FT_VentRadiation(0.1F), LIQUID, VISCOUS); + CRYOGEL = new FluidType("CRYOGEL", 0x32ffff, 2, 0, 0, EnumSymbol.CROYGENIC).setTemp(-170).addTraits(LIQUID, VISCOUS); HYDROGEN = new FluidType("HYDROGEN", 0x4286f4, 3, 4, 0, EnumSymbol.CROYGENIC).setTemp(-260).addContainers(new CD_Gastank(0x4286f4, 0xffffff)).addTraits(new FT_Flammable(5_000), new FT_Combustible(FuelGrade.HIGH, 10_000), LIQUID, EVAP); OXYGEN = new FluidType("OXYGEN", 0x98bdf9, 3, 0, 0, EnumSymbol.CROYGENIC).setTemp(-100).addContainers(new CD_Gastank(0x98bdf9, 0xffffff)).addTraits(LIQUID, EVAP); XENON = new FluidType("XENON", 0xba45e8, 0, 0, 0, EnumSymbol.ASPHYXIANT).addContainers(new CD_Gastank(0x8C21FF, 0x303030)).addTraits(GASEOUS); - BALEFIRE = new FluidType("BALEFIRE", 0x28e02e, 4, 4, 3, EnumSymbol.RADIATION).setTemp(1500).addTraits(new FT_Corrosive(50), new FT_Flammable(1_000_000), new FT_Combustible(FuelGrade.HIGH, 2_500_000), LIQUID); + BALEFIRE = new FluidType("BALEFIRE", 0x28e02e, 4, 4, 3, EnumSymbol.RADIATION).setTemp(1500).addTraits(new FT_Corrosive(50), new FT_Flammable(1_000_000), new FT_Combustible(FuelGrade.HIGH, 2_500_000), LIQUID, VISCOUS); MERCURY = new FluidType("MERCURY", 0x808080, 2, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Poison(false, 2)); - PAIN = new FluidType("PAIN", 0x938541, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(30), new FT_Poison(true, 2), LIQUID); - WASTEFLUID = new FluidType("WASTEFLUID", 0x544400, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, LIQUID); + PAIN = new FluidType("PAIN", 0x938541, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(30), new FT_Poison(true, 2), LIQUID, VISCOUS); + WASTEFLUID = new FluidType("WASTEFLUID", 0x544400, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, LIQUID, VISCOUS); WASTEGAS = new FluidType("WASTEGAS", 0xB8B8B8, 2, 0, 1, EnumSymbol.RADIATION).addTraits(new FT_VentRadiation(0.5F), NOCON, GASEOUS); GASOLINE = new FluidType("GASOLINE", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F7747)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_000_000), LIQUID); COALGAS = new FluidType("COALGAS", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 150_000), LIQUID); SPENTSTEAM = new FluidType("SPENTSTEAM", 0x445772, 2, 0, 0, EnumSymbol.NONE).setCompression(1D).addTraits(NOCON, GASEOUS); - FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(new CD_Canister(0x4F887F)).addTraits(new FT_Corrosive(15), new FT_Poison(false, 0), LIQUID); + FRACKSOL = new FluidType("FRACKSOL", 0x798A6B, 1, 3, 3, EnumSymbol.ACID).addContainers(new CD_Canister(0x4F887F)).addTraits(new FT_Corrosive(15), new FT_Poison(false, 0), LIQUID, VISCOUS); PLASMA_DT = new FluidType("PLASMA_DT", 0xF7AFDE, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3250).addTraits(NOCON, NOID, PLASMA); PLASMA_HD = new FluidType("PLASMA_HD", 0xF0ADF4, 0, 4, 0, EnumSymbol.RADIATION).setTemp(2500).addTraits(NOCON, NOID, PLASMA); PLASMA_HT = new FluidType("PLASMA_HT", 0xD1ABF2, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3000).addTraits(NOCON, NOID, PLASMA); @@ -204,54 +245,73 @@ public class Fluids { PLASMA_BF = new FluidType("PLASMA_BF", 0xA7F1A3, 4, 5, 4, EnumSymbol.ANTIMATTER).setTemp(8500).addTraits(NOCON, NOID, PLASMA); CARBONDIOXIDE = new FluidType("CARBONDIOXIDE", 0x404040, 3, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); PLASMA_DH3 = new FluidType("PLASMA_DH3", 0xFF83AA, 0, 4, 0, EnumSymbol.RADIATION).setTemp(3480).addTraits(NOCON, NOID, PLASMA); - HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 3, 4, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); - DEATH = new FluidType("DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(80), new FT_Poison(true, 4), LEADCON, LIQUID); + HELIUM3 = new FluidType("HELIUM3", 0xFCF0C4, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); + DEATH = new FluidType("DEATH", 0x717A88, 2, 0, 1, EnumSymbol.ACID).setTemp(300).addTraits(new FT_Corrosive(80), new FT_Poison(true, 4), LEADCON, LIQUID, VISCOUS); ETHANOL = new FluidType("ETHANOL", 0xe0ffff, 2, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xEAFFF3)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.HIGH, 200_000), LIQUID); HEAVYWATER = new FluidType("HEAVYWATER", 0x00a0b0, 1, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - CRACKOIL = new FluidType("CRACKOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID); - COALOIL = new FluidType("COALOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID); - HOTCRACKOIL = new FluidType("HOTCRACKOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID); - NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID); + CRACKOIL = new FluidType("CRACKOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID, VISCOUS); + COALOIL = new FluidType("COALOIL", 0x020202, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID, VISCOUS); + HOTCRACKOIL = new FluidType("HOTCRACKOIL", 0x300900, 2, 3, 0, EnumSymbol.NONE).setTemp(350).addContainers(new CD_Canister(0x424242)).addTraits(new FT_Flammable(10_000), LIQUID, VISCOUS); + NAPHTHA_CRACK = new FluidType("NAPHTHA_CRACK", 0x595744, 2, 1, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x5F6D44)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 200_000), LIQUID, VISCOUS); LIGHTOIL_CRACK = new FluidType("LIGHTOIL_CRACK", 0x8c7451, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xB46B52)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.MEDIUM, 500_000), LIQUID); DIESEL_CRACK = new FluidType("DIESEL_CRACK", 0xf2eed5, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xFF2C2C)).addTraits(new FT_Flammable(200_000), new FT_Combustible(FuelGrade.HIGH, 450_000), LIQUID); - AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID); + AROMATICS = new FluidType("AROMATICS", 0x68A09A, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(25_000), LIQUID, VISCOUS); UNSATURATEDS = new FluidType("UNSATURATEDS", 0x628FAE, 1, 4, 1, EnumSymbol.NONE).addTraits(new FT_Flammable(1_000_000), GASEOUS); //acetylene burns as hot as satan's asshole - SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID); - XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2331F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID); - GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F775A)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID); - COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x1E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID); + SALIENT = new FluidType("SALIENT", 0x457F2D, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID, VISCOUS); + XPJUICE = new FluidType("XPJUICE", 0xBBFF09, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + ENDERJUICE = new FluidType("ENDERJUICE", 0x127766, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + PETROIL_LEADED = new FluidType("PETROIL_LEADED", 0x44413d, 1, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2331F6)).addTraits(new FT_Flammable(125_000), new FT_Combustible(FuelGrade.MEDIUM, 450_000), LIQUID, LEADED); + GASOLINE_LEADED = new FluidType("GASOLINE_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x2F775A)).addTraits(new FT_Flammable(400_000), new FT_Combustible(FuelGrade.HIGH, 1_500_000), LIQUID, LEADED); + COALGAS_LEADED = new FluidType("COALGAS_LEADED", 0x445772, 1, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x1E155F)).addTraits(new FT_Flammable(75_000), new FT_Combustible(FuelGrade.MEDIUM, 250_000), LIQUID, LEADED); SULFURIC_ACID = new FluidType("SULFURIC_ACID", 0xB0AA64, 3, 0, 2, EnumSymbol.ACID).addTraits(new FT_Corrosive(50), LIQUID); COOLANT_HOT = new FluidType("COOLANT_HOT", 0x99525E, 1, 0, 0, EnumSymbol.NONE).setTemp(600).addTraits(LIQUID); MUG = new FluidType("MUG", 0x4B2D28, 0, 0, 0, EnumSymbol.NONE).addTraits(DELICIOUS, LIQUID); MUG_HOT = new FluidType("MUG_HOT", 0x6B2A20, 0, 0, 0, EnumSymbol.NONE).setTemp(500).addTraits(DELICIOUS, LIQUID); - WOODOIL = new FluidType("WOODOIL", 0x847D54, 2, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xBF7E4F)).addTraits(LIQUID); - COALCREOSOTE = new FluidType("COALCREOSOTE", 0x51694F, 3, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x285A3F)).addTraits(LIQUID); - SEEDSLURRY = new FluidType("SEEDSLURRY", 0x7CC35E, 0, 0, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x7CC35E)).addTraits(LIQUID); + WOODOIL = new FluidType("WOODOIL", 0x847D54, 2, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xBF7E4F)).addTraits(LIQUID, VISCOUS); + COALCREOSOTE = new FluidType("COALCREOSOTE", 0x51694F, 3, 2, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x285A3F)).addTraits(LIQUID, VISCOUS); + SEEDSLURRY = new FluidType("SEEDSLURRY", 0x7CC35E, 0, 0, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0x7CC35E)).addTraits(LIQUID, VISCOUS); NITRIC_ACID = new FluidType("NITRIC_ACID", 0xBB7A1E, 3, 0, 2, EnumSymbol.OXIDIZER).addTraits(LIQUID, new FT_Corrosive(60)); SOLVENT = new FluidType("SOLVENT", 0xE4E3EF, 2, 3, 0, EnumSymbol.NONE).addContainers(new CD_Canister(0xE4E3EF)).addTraits(LIQUID, new FT_Corrosive(30)); - BLOOD = new FluidType("BLOOD", 0xB22424, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); - BLOOD_HOT = new FluidType("BLOOD_HOT", 0xF22419, 3, 0, 0, EnumSymbol.NONE).addTraits(LIQUID).setTemp(666); //it's funny because it's the satan number + BLOOD = new FluidType("BLOOD", 0xB22424, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + BLOOD_HOT = new FluidType("BLOOD_HOT", 0xF22419, 3, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).setTemp(666); //it's funny because it's the satan number SYNGAS = new FluidType("SYNGAS", 0x131313, 1, 4, 2, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFFFFFF, 0x131313)).addTraits(GASEOUS); OXYHYDROGEN = new FluidType("OXYHYDROGEN", 0x483FC1, 0, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS); RADIOSOLVENT = new FluidType("RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, LEADCON, new FT_Corrosive(50), new FT_VentRadiation(0.01F)); - CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25), new FT_Poison(true, 1)); - HEAVYOIL_VACUUM = new FluidType("HEAVYOIL_VACUUM", 0x131214, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0x513F39)); - REFORMATE = new FluidType("REFORMATE", 0x835472, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xD180D6)); + CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25)); + HEAVYOIL_VACUUM = new FluidType("HEAVYOIL_VACUUM", 0x131214, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0x513F39)); + REFORMATE = new FluidType("REFORMATE", 0x835472, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0xD180D6)); LIGHTOIL_VACUUM = new FluidType("LIGHTOIL_VACUUM", 0x8C8851, 1, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xB46B52)); SOURGAS = new FluidType("SOURGAS", 0xC9BE0D, 4, 4, 0, EnumSymbol.ACID).addContainers(new CD_Gastank(0xC9BE0D, 0x303030)).addTraits(GASEOUS, new FT_Corrosive(10), new FT_Poison(false, 1)); - XYLENE = new FluidType("XYLENE", 0x5C4E76, 2, 3, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xA380D6)); - HEATINGOIL_VACUUM = new FluidType("HEATINGOIL_VACUUM", 0x211D06, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0x694235)); + XYLENE = new FluidType("XYLENE", 0x5C4E76, 2, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0xA380D6)); + HEATINGOIL_VACUUM = new FluidType("HEATINGOIL_VACUUM", 0x211D06, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).addContainers(new CD_Canister(0x694235)); DIESEL_REFORM = new FluidType("DIESEL_REFORM", 0xCDC3C6, 1, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xFFC500)); DIESEL_CRACK_REFORM = new FluidType("DIESEL_CRACK_REFORM",0xCDC3CC, 1, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xFFC500)); KEROSENE_REFORM = new FluidType("KEROSENE_REFORM", 0xFFA5F3, 1, 2, 0, EnumSymbol.NONE).addTraits(LIQUID).addContainers(new CD_Canister(0xFF377D)); REFORMGAS = new FluidType("REFORMGAS", 0x6362AE, 1, 4, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0x9392FF, 0xFFB992)).addTraits(GASEOUS); - COLLOID = new FluidType("COLLOID", 0x787878, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + COLLOID = new FluidType("COLLOID", 0x787878, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); PHOSGENE = new FluidType("PHOSGENE", 0xCFC4A4, 4, 0, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0xCFC4A4, 0x361414)).addTraits(GASEOUS); MUSTARDGAS = new FluidType("MUSTARDGAS", 0xBAB572, 4, 1, 1, EnumSymbol.NONE).addContainers(new CD_Gastank(0xBAB572, 0x361414)).addTraits(GASEOUS); - IONGEL = new FluidType(103, "IONGEL", 0xB8FFFF, 1, 0, 4, EnumSymbol.NONE).addTraits(LIQUID); - + IONGEL = new FluidType("IONGEL", 0xB8FFFF, 1, 0, 4, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + OIL_COKER = new FluidType("OIL_COKER", 0x001802, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + NAPHTHA_COKER = new FluidType("NAPHTHA_COKER", 0x495944, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS); + GAS_COKER = new FluidType("GAS_COKER", 0xDEF4CA, 1, 4, 0, EnumSymbol.NONE).addTraits(GASEOUS); + EGG = new FluidType("EGG", 0xD2C273, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + CHOLESTEROL = new FluidType("CHOLESTEROL", 0xD6D2BD, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + ESTRADIOL = new FluidType("ESTRADIOL", 0xCDD5D8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); + FISHOIL = new FluidType("FISHOIL", 0x4B4A45, 0, 1, 0, EnumSymbol.NONE).addTraits(LIQUID); + SUNFLOWEROIL = new FluidType("SUNFLOWEROIL", 0xCBAD45, 0, 1, 0, EnumSymbol.NONE).addTraits(LIQUID); + NITROGLYCERIN = new FluidType("NITROGLYCERIN", 0x92ACA6, 0, 4, 0, EnumSymbol.NONE).addTraits(LIQUID); + REDMUD = new FluidType("REDMUD", 0xD85638, 3, 0, 4, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, LEADCON, new FT_Corrosive(60), new FT_Flammable(1_000)); + CHLOROCALCITE_SOLUTION = new FluidType("CHLOROCALCITE_SOLUTION", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CHLOROCALCITE_MIX = new FluidType("CHLOROCALCITE_MIX", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CHLOROCALCITE_CLEANED = new FluidType("CHLOROCALCITE_CLEANED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + POTASSIUM_CHLORIDE = new FluidType("POTASSIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CALCIUM_CHLORIDE = new FluidType("CALCIUM_CHLORIDE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + CALCIUM_SOLUTION = new FluidType("CALCIUM_SOLUTION", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, NOCON, new FT_Corrosive(60)); + SMOKE = new FluidType("SMOKE", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); + SMOKE_LEADED = new FluidType("SMOKE_LEADED", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); + SMOKE_POISON = new FluidType("SMOKE_POISON", 0x808080, 0, 0, 0, EnumSymbol.NONE).addTraits(GASEOUS, NOID, NOCON); + HELIUM4 = new FluidType(123,"HELIUM4", 0xE54B0A, 0, 0, 0, EnumSymbol.ASPHYXIANT).addTraits(GASEOUS); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -284,6 +344,7 @@ public class Fluids { metaOrder.add(DEUTERIUM); metaOrder.add(TRITIUM); metaOrder.add(HELIUM3); + metaOrder.add(HELIUM4); metaOrder.add(OXYGEN); metaOrder.add(XENON); metaOrder.add(CHLORINE); @@ -292,12 +353,14 @@ public class Fluids { metaOrder.add(OIL); metaOrder.add(CRACKOIL); metaOrder.add(COALOIL); + metaOrder.add(OIL_COKER); metaOrder.add(HOTOIL); metaOrder.add(HOTCRACKOIL); metaOrder.add(HEAVYOIL); metaOrder.add(HEAVYOIL_VACUUM); metaOrder.add(NAPHTHA); metaOrder.add(NAPHTHA_CRACK); + metaOrder.add(NAPHTHA_COKER); metaOrder.add(REFORMATE); metaOrder.add(LIGHTOIL); metaOrder.add(LIGHTOIL_CRACK); @@ -309,6 +372,7 @@ public class Fluids { metaOrder.add(RECLAIMED); metaOrder.add(LUBRICANT); metaOrder.add(GAS); + metaOrder.add(GAS_COKER); metaOrder.add(PETROLEUM); metaOrder.add(SOURGAS); metaOrder.add(LPG); @@ -335,6 +399,8 @@ public class Fluids { metaOrder.add(BIOGAS); metaOrder.add(BIOFUEL); metaOrder.add(ETHANOL); + metaOrder.add(FISHOIL); + metaOrder.add(SUNFLOWEROIL); metaOrder.add(NITAN); metaOrder.add(BALEFIRE); //processing fluids @@ -354,11 +420,22 @@ public class Fluids { metaOrder.add(PAIN); metaOrder.add(DEATH); metaOrder.add(WATZ); + metaOrder.add(REDMUD); + metaOrder.add(EGG); + metaOrder.add(CHOLESTEROL); + metaOrder.add(CHLOROCALCITE_SOLUTION); + metaOrder.add(CHLOROCALCITE_MIX); + metaOrder.add(CHLOROCALCITE_CLEANED); + metaOrder.add(POTASSIUM_CHLORIDE); + metaOrder.add(CALCIUM_CHLORIDE); + metaOrder.add(CALCIUM_SOLUTION); //solutions and working fluids metaOrder.add(FRACKSOL); //the fun guys metaOrder.add(PHOSGENE); metaOrder.add(MUSTARDGAS); + metaOrder.add(ESTRADIOL); + metaOrder.add(NITROGLYCERIN); //antimatter metaOrder.add(AMAT); metaOrder.add(ASCHRAB); @@ -375,6 +452,17 @@ public class Fluids { metaOrder.add(PLASMA_DH3); metaOrder.add(PLASMA_XM); metaOrder.add(PLASMA_BF); + //smoke + metaOrder.add(SMOKE); + metaOrder.add(SMOKE_LEADED); + metaOrder.add(SMOKE_POISON); + + CHLORINE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 2F, 20, HazardClass.GAS_CHLORINE, false))); + PHOSGENE.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 20, HazardClass.GAS_CHLORINE, false))); + MUSTARDGAS.addTraits(new FT_Toxin().addEntry(new ToxinDirectDamage(ModDamageSource.cloud, 4F, 10, HazardClass.GAS_CORROSIVE, false)) + .addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, true).add(new PotionEffect(Potion.wither.id, 100, 1), new PotionEffect(Potion.confusion.id, 100, 0)))); + ESTRADIOL.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.PARTICLE_FINE, false).add(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)))); + REDMUD.addTraits(new FT_Toxin().addEntry(new ToxinEffects(HazardClass.GAS_CORROSIVE, false).add(new PotionEffect(Potion.wither.id, 30 * 20, 2)))); double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; @@ -426,6 +514,7 @@ public class Fluids { double complexityRefinery = 1.1D; double complexityFraction = 1.05D; double complexityCracking = 1.25D; + double complexityCoker = 1.25D; double complexityChemplant = 1.1D; double complexityLubed = 1.15D; double complexityLeaded = 1.5D; @@ -438,7 +527,9 @@ public class Fluids { /// the allmighty excel spreadsheet has spoken! /// registerCalculatedFuel(OIL, (baseline / 1D * flammabilityLow * demandLow), 0, null); registerCalculatedFuel(CRACKOIL, (baseline / 1D * flammabilityLow * demandLow * complexityCracking), 0, null); + registerCalculatedFuel(OIL_COKER, (baseline / 1D * flammabilityLow * demandLow * complexityCoker), 0, null); registerCalculatedFuel(GAS, (baseline / 1D * flammabilityNormal * demandVeryLow), 1.25, FuelGrade.GAS); + registerCalculatedFuel(GAS_COKER, (baseline / 1D * flammabilityNormal * demandVeryLow * complexityCoker), 1.25, FuelGrade.GAS); registerCalculatedFuel(HEAVYOIL, (baseline / 0.5 * flammabilityLow * demandLow * complexityRefinery), 1.25D, FuelGrade.LOW); registerCalculatedFuel(SMEAR, (baseline / 0.35 * flammabilityLow * demandLow * complexityRefinery * complexityFraction), 1.25D, FuelGrade.LOW); registerCalculatedFuel(RECLAIMED, (baseline / 0.28 * flammabilityLow * demandLow * complexityRefinery * complexityFraction * complexityChemplant), 1.25D, FuelGrade.LOW); @@ -447,6 +538,7 @@ public class Fluids { registerCalculatedFuel(HEATINGOIL, (baseline / 0.31 * flammabilityNormal * demandLow * complexityRefinery * complexityFraction * complexityFraction), 1.25D, FuelGrade.LOW); registerCalculatedFuel(NAPHTHA, (baseline / 0.25 * flammabilityLow * demandLow * complexityRefinery), 1.5D, FuelGrade.MEDIUM); registerCalculatedFuel(NAPHTHA_CRACK, (baseline / 0.40 * flammabilityLow * demandLow * complexityRefinery * complexityCracking), 1.5D, FuelGrade.MEDIUM); + registerCalculatedFuel(NAPHTHA_COKER, (baseline / 0.25 * flammabilityLow * demandLow * complexityCoker), 1.5D, FuelGrade.MEDIUM); registerCalculatedFuel(GASOLINE, (baseline / 0.20 * flammabilityNormal * demandLow * complexityRefinery * complexityChemplant), 2.5D, FuelGrade.HIGH); registerCalculatedFuel(GASOLINE_LEADED, (baseline / 0.20 * flammabilityNormal * demandLow * complexityRefinery * complexityChemplant * complexityLeaded), 2.5D, FuelGrade.HIGH); registerCalculatedFuel(DIESEL, (baseline / 0.21 * flammabilityNormal * demandLow * complexityRefinery * complexityFraction), 2.5D, FuelGrade.HIGH); @@ -488,12 +580,81 @@ public class Fluids { registerCalculatedFuel(WOODOIL, 110_000 /* 20_000 TU per 250mB + a bonus */, 0, null); registerCalculatedFuel(COALCREOSOTE, 250_000 /* 20_000 TU per 100mB + a bonus */, 0, null); + registerCalculatedFuel(FISHOIL, 75_000, 0, null); + registerCalculatedFuel(SUNFLOWEROIL, 50_000, 0, null); registerCalculatedFuel(SOLVENT, 100_000, 0, null); // flammable, sure, but not combustable registerCalculatedFuel(RADIOSOLVENT, 150_000, 0, null); registerCalculatedFuel(SYNGAS, (coalHeat * (1000 /* bucket */ / 100 /* mB per coal */) * flammabilityLow * demandLow * complexityChemplant) * 1.5, 1.25, FuelGrade.GAS); //same as coal oil, +50% bonus registerCalculatedFuel(OXYHYDROGEN, 5_000, 3, FuelGrade.GAS); // whatever + + File folder = MainRegistry.configHbmDir; + + File config = new File(folder.getAbsolutePath() + File.separatorChar + "hbmFluids.json"); + File template = new File(folder.getAbsolutePath() + File.separatorChar + "_hbmFluids.json"); + + if(!config.exists()) { + writeDefault(template); + } else { + readConfig(config); + } + } + + private static void writeDefault(File file) { + + try { + JsonWriter writer = new JsonWriter(new FileWriter(file)); + writer.setIndent(" "); + writer.beginObject(); + + for(FluidType type : metaOrder) { + writer.name(type.getUnlocalizedName()).beginObject(); + + for(Entry, FluidTrait> entry : type.traits.entrySet()) { + writer.name(FluidTrait.traitNameMap.inverse().get(entry.getKey())).beginObject(); + entry.getValue().serializeJSON(writer); + writer.endObject(); + } + + writer.endObject(); + } + + writer.endObject(); + writer.close(); + } catch(IOException e) { + e.printStackTrace(); + } + } + + private static void readConfig(File config) { + + try { + JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); + + for(FluidType type : metaOrder) { + + JsonElement element = json.get(type.getUnlocalizedName()); + if(element != null) { + type.traits.clear(); + JsonObject obj = element.getAsJsonObject(); + + for(Entry entry : obj.entrySet()) { + Class traitClass = FluidTrait.traitNameMap.get(entry.getKey()); + try { + FluidTrait trait = traitClass.newInstance(); + trait.deserializeJSON(entry.getValue().getAsJsonObject()); + type.addTraits(trait); + } catch(Exception ex) { + ex.printStackTrace(); + } + } + } + } + + } catch(Exception ex) { + ex.printStackTrace(); + } } private static void registerCalculatedFuel(FluidType type, double base, double combustMult, FuelGrade grade) { diff --git a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java index 5e7d9187f..ba720d228 100644 --- a/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java +++ b/src/main/java/com/hbm/inventory/fluid/tank/FluidTank.java @@ -19,6 +19,8 @@ import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MathHelper; public class FluidTank { @@ -33,13 +35,22 @@ public class FluidTank { FluidType type; int fluid; int maxFluid; - public int index = 0; + @Deprecated public int index = 0; + int pressure = 0; public FluidTank(FluidType type, int maxFluid) { this.type = type; this.maxFluid = maxFluid; } + public FluidTank withPressure(int pressure) { + + if(this.pressure != pressure) this.setFill(0); + + this.pressure = pressure; + return this; + } + @Deprecated // indices are no longer needed public FluidTank(FluidType type, int maxFluid, int index) { this.type = type; @@ -53,6 +64,10 @@ public class FluidTank { public void setTankType(FluidType type) { + if(type == null) { + type = Fluids.NONE; + } + if(this.type == type) return; @@ -72,6 +87,10 @@ public class FluidTank { return maxFluid; } + public int getPressure() { + return pressure; + } + public int changeTankSize(int size) { maxFluid = size; @@ -85,16 +104,16 @@ public class FluidTank { } //Called on TE update - public void updateTank(TileEntity te) { + @Deprecated public void updateTank(TileEntity te) { updateTank(te, 100); } - public void updateTank(TileEntity te, int range) { + @Deprecated public void updateTank(TileEntity te, int range) { updateTank(te.xCoord, te.yCoord, te.zCoord, te.getWorldObj().provider.dimensionId, range); } - public void updateTank(int x, int y, int z, int dim) { + @Deprecated public void updateTank(int x, int y, int z, int dim) { updateTank(x, y, z, dim, 100); } - public void updateTank(int x, int y, int z, int dim, int range) { + @Deprecated public void updateTank(int x, int y, int z, int dim, int range) { PacketDispatcher.wrapper.sendToAllAround(new TEFluidPacket(x, y, z, fluid, index, type), new TargetPoint(dim, x, y, z, range)); } @@ -104,6 +123,8 @@ public class FluidTank { if(slots[in] == null) return false; + if(this.pressure != 0) return false; //for now, canisters can only be loaded from high-pressure tanks, not unloaded + int prev = this.getFill(); for(FluidLoadingHandler handler : loadingHandlers) { @@ -219,6 +240,10 @@ public class FluidTank { list.add(I18n.format(this.type.getUnlocalizedName())); list.add(fluid + "/" + maxFluid + "mB"); + if(this.pressure != 0) { + list.add(EnumChatFormatting.RED + "Pressure: " + this.pressure + " PU"); + } + type.addInfo(list); gui.drawInfo(list.toArray(new String[0]), mouseX, mouseY); } @@ -229,6 +254,7 @@ public class FluidTank { nbt.setInteger(s, fluid); nbt.setInteger(s + "_max", maxFluid); nbt.setInteger(s + "_type", type.getID()); + nbt.setShort(s + "_p", (short) pressure); } //Called by TE to load fillstate @@ -236,11 +262,15 @@ public class FluidTank { fluid = nbt.getInteger(s); int max = nbt.getInteger(s + "_max"); if(max > 0) - maxFluid = nbt.getInteger(s + "_max"); + maxFluid = max; + + fluid = MathHelper.clamp_int(fluid, 0, max); type = Fluids.fromName(nbt.getString(s + "_type")); //compat if(type == Fluids.NONE) type = Fluids.fromID(nbt.getInteger(s + "_type")); + + this.pressure = nbt.getShort(s + "_p"); } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java index a88ac2c35..a297d40ca 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Combustible.java @@ -1,7 +1,10 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; @@ -11,6 +14,8 @@ public class FT_Combustible extends FluidTrait { protected FuelGrade fuelGrade; protected long combustionEnergy; + public FT_Combustible() { } + public FT_Combustible(FuelGrade grade, long energy) { this.fuelGrade = grade; this.combustionEnergy = energy; @@ -53,4 +58,16 @@ public class FT_Combustible extends FluidTrait { return this.grade; } } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("energy").value(combustionEnergy); + writer.name("grade").value(fuelGrade.name()); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.combustionEnergy = obj.get("energy").getAsLong(); + this.fuelGrade = FuelGrade.valueOf(obj.get("grade").getAsString()); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java index 25bd1488d..f25e77c35 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Coolable.java @@ -1,9 +1,14 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.HashMap; import java.util.List; +import java.util.Map.Entry; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import net.minecraft.util.EnumChatFormatting; @@ -11,10 +16,12 @@ public class FT_Coolable extends FluidTrait { protected HashMap efficiency = new HashMap(); - public final FluidType coolsTo; + public FluidType coolsTo; public int amountReq; public int amountProduced; - public final int heatEnergy; + public int heatEnergy; + + public FT_Coolable() { } public FT_Coolable(FluidType type, int req, int prod, int heat) { this.coolsTo = type; @@ -56,4 +63,28 @@ public class FT_Coolable extends FluidTrait { this.name = name; } } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("coolsTo").value(this.coolsTo.getUnlocalizedName()); + writer.name("amountReq").value(this.amountReq); + writer.name("amountProd").value(this.amountProduced); + writer.name("heatEnergy").value(this.heatEnergy); + + for(Entry entry : this.efficiency.entrySet()) { + writer.name(entry.getKey().name()).value(entry.getValue()); + } + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.coolsTo = Fluids.fromName(obj.get("coolsTo").getAsString()); + this.amountReq = obj.get("amountReq").getAsInt(); + this.amountProduced = obj.get("amountProd").getAsInt(); + this.heatEnergy = obj.get("heatEnergy").getAsInt(); + + for(CoolingType type : CoolingType.values()) { + if(obj.has(type.name())) efficiency.put(type, obj.get(type.name()).getAsDouble()); + } + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java index 4e0354033..2a459e25c 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Corrosive.java @@ -1,7 +1,11 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; + import net.minecraft.util.EnumChatFormatting; public class FT_Corrosive extends FluidTrait { @@ -9,6 +13,8 @@ public class FT_Corrosive extends FluidTrait { /* 0-100 */ private int rating; + public FT_Corrosive() { } + public FT_Corrosive(int rating) { this.rating = rating; } @@ -29,4 +35,14 @@ public class FT_Corrosive extends FluidTrait { else info.add(EnumChatFormatting.YELLOW + "[Corrosive]"); } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("rating").value(rating); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.rating = obj.get("rating").getAsInt(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java index c2b582ae5..82e309ef9 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Flammable.java @@ -1,7 +1,10 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.util.BobMathUtil; import net.minecraft.util.EnumChatFormatting; @@ -11,6 +14,8 @@ public class FT_Flammable extends FluidTrait { /** How much heat energy (usually translates into HE 1:1) 1000mB hold */ private long energy; + public FT_Flammable() { } + public FT_Flammable(long energy) { this.energy = energy; } @@ -28,4 +33,14 @@ public class FT_Flammable extends FluidTrait { if(energy > 0) info.add(EnumChatFormatting.YELLOW + "Provides " + EnumChatFormatting.RED + "" + BobMathUtil.getShortNumber(energy) + "TU " + EnumChatFormatting.YELLOW + "per bucket"); } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("energy").value(energy); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.energy = obj.get("energy").getAsLong(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java index e01169076..310083cf3 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Heatable.java @@ -1,12 +1,18 @@ package com.hbm.inventory.fluid.trait; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; import net.minecraft.util.EnumChatFormatting; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map.Entry; public class FT_Heatable extends FluidTrait { @@ -71,4 +77,45 @@ public class FT_Heatable extends FluidTrait { this.name = name; } } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + + writer.name("steps").beginArray(); + + for(HeatingStep step : steps) { + writer.beginObject(); + writer.name("typeProduced").value(step.typeProduced.getUnlocalizedName()); + writer.name("amountReq").value(step.amountReq); + writer.name("amountProd").value(step.amountProduced); + writer.name("heatReq").value(step.heatReq); + writer.endObject(); + } + + writer.endArray(); + + for(Entry entry : this.efficiency.entrySet()) { + writer.name(entry.getKey().name()).value(entry.getValue()); + } + } + + @Override + public void deserializeJSON(JsonObject obj) { + + JsonArray steps = obj.get("steps").getAsJsonArray(); + + for(int i = 0; i < steps.size(); i++) { + JsonObject step = steps.get(i).getAsJsonObject(); + this.steps.add(new HeatingStep( + step.get("amountReq").getAsInt(), + step.get("heatReq").getAsInt(), + Fluids.fromName(step.get("typeProduced").getAsString()), + step.get("amountProd").getAsInt() + )); + } + + for(HeatingType type : HeatingType.values()) { + if(obj.has(type.name())) efficiency.put(type, obj.get(type.name()).getAsDouble()); + } + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java index a8154c1f5..335c182cb 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Poison.java @@ -1,14 +1,21 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; + import net.minecraft.util.EnumChatFormatting; +@Deprecated //use FT_Toxin instead public class FT_Poison extends FluidTrait { protected boolean withering = false; protected int level = 0; + public FT_Poison() { } + public FT_Poison(boolean withering, int level) { this.withering = withering; this.level = level; @@ -26,4 +33,14 @@ public class FT_Poison extends FluidTrait { public void addInfoHidden(List info) { info.add(EnumChatFormatting.GREEN + "[Toxic Fumes]"); } + + @Override public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("level").value(this.level); + writer.name("withering").value(this.withering); + } + + @Override public void deserializeJSON(JsonObject obj) { + this.level = obj.get("level").getAsInt(); + this.withering = obj.get("withering").getAsBoolean(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java new file mode 100644 index 000000000..354da3175 --- /dev/null +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_Toxin.java @@ -0,0 +1,211 @@ +package com.hbm.inventory.fluid.trait; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.util.ArmorRegistry; +import com.hbm.util.ArmorUtil; +import com.hbm.util.I18nUtil; +import com.hbm.util.ArmorRegistry.HazardClass; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.util.StringUtils; + +public class FT_Toxin extends FluidTrait { + + public List entries = new ArrayList(); + + public FT_Toxin addEntry(ToxinEntry entry) { + entries.add(entry); + return this; + } + + @Override + public void addInfoHidden(List info) { + info.add(EnumChatFormatting.LIGHT_PURPLE + "[Toxin]"); + + for(ToxinEntry entry : entries) { + entry.addInfo(info); + } + } + + public void affect(EntityLivingBase entity, double intensity) { + + for(ToxinEntry entry : entries) { + entry.poison(entity, intensity); + } + } + + public static abstract class ToxinEntry { + + public HazardClass clazz; + public boolean fullBody = false; + + public ToxinEntry(HazardClass clazz, boolean fullBody) { + this.clazz = clazz; + this.fullBody = fullBody; + } + + public boolean isProtected(EntityLivingBase entity) { + + boolean hasMask = clazz == null; + boolean hasSuit = !fullBody; + + if(clazz != null && ArmorRegistry.hasAllProtection(entity, 3, clazz)) { + ArmorUtil.damageGasMaskFilter(entity, 1); + hasMask = true; + } + + if(fullBody && ArmorUtil.checkForHazmat(entity)) { + hasSuit = true; + } + + return hasMask && hasSuit; + } + + public abstract void poison(EntityLivingBase entity, double intensity); + public abstract void addInfo(List info); + } + + public static class ToxinDirectDamage extends ToxinEntry { + + public DamageSource damage; + public float amount; + public int delay; + + public ToxinDirectDamage(DamageSource damage, float amount, int delay, HazardClass clazz, boolean fullBody) { + super(clazz, fullBody); + this.damage = damage; + this.amount = amount; + this.delay = delay; + } + + @Override + public void poison(EntityLivingBase entity, double intensity) { + + if(isProtected(entity)) return; + + if(delay == 0 || entity.worldObj.getTotalWorldTime() % delay == 0) { + entity.attackEntityFrom(damage, (float) (amount * intensity)); + } + } + + @Override + public void addInfo(List info) { + info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" : "") + ": " + EnumChatFormatting.YELLOW + String.format("%,.1f", amount * 20 / delay) + " DPS"); + } + } + + public static class ToxinEffects extends ToxinEntry { + + public List effects = new ArrayList(); + + public ToxinEffects(HazardClass clazz, boolean fullBody) { + super(clazz, fullBody); + } + + public ToxinEffects add(PotionEffect... effs) { + for(PotionEffect eff : effs) this.effects.add(eff); + return this; + } + + @Override + public void poison(EntityLivingBase entity, double intensity) { + + if(isProtected(entity)) return; + + for(PotionEffect eff : effects) { + entity.addPotionEffect(new PotionEffect(eff.getPotionID(), (int) (eff.getDuration() * intensity), eff.getAmplifier())); + } + } + + @Override + public void addInfo(List info) { + info.add(EnumChatFormatting.YELLOW + "- " + I18nUtil.resolveKey(clazz.lang) + (fullBody ? EnumChatFormatting.RED + " (requires hazmat suit)" + EnumChatFormatting.YELLOW : "") + ":"); + + for(PotionEffect eff : effects) { + info.add(EnumChatFormatting.YELLOW + " - " + I18nUtil.resolveKey(eff.getEffectName()) + (eff.getAmplifier() > 0 ? " " + StatCollector.translateToLocal("potion.potency." + eff.getAmplifier()).trim() : "") + " " + StringUtils.ticksToElapsedTime(eff.getDuration())); + } + } + } + + @Override public void serializeJSON(JsonWriter writer) throws IOException { + + writer.name("entries").beginArray(); + + for(ToxinEntry entry : entries) { + writer.beginObject(); + + if(entry instanceof ToxinDirectDamage) { + ToxinDirectDamage e = (ToxinDirectDamage) entry; + writer.name("type").value("directdamage"); + writer.name("amount").value(e.amount); + writer.name("source").value(e.damage.damageType); + writer.name("delay").value(e.delay); + writer.name("hazmat").value(e.fullBody); + writer.name("masktype").value(e.clazz.name()); + } + if(entry instanceof ToxinEffects) { + ToxinEffects e = (ToxinEffects) entry; + writer.name("type").value("effects"); + writer.name("effects").beginArray(); + writer.setIndent(""); + for(PotionEffect effect : e.effects) { + writer.beginArray(); + writer.value(effect.getPotionID()).value(effect.getDuration()).value(effect.getAmplifier()).value(effect.getIsAmbient()); + writer.endArray(); + } + writer.endArray(); + writer.setIndent(" "); + writer.name("hazmat").value(e.fullBody); + writer.name("masktype").value(e.clazz.name()); + } + + writer.endObject(); + } + + writer.endArray(); + } + + @Override public void deserializeJSON(JsonObject obj) { + JsonArray array = obj.get("entries").getAsJsonArray(); + + for(int i = 0; i < array.size(); i++) { + JsonObject entry = array.get(i).getAsJsonObject(); + String name = entry.get("type").getAsString(); + + if(name.equals("directdamage")) { + ToxinDirectDamage e = new ToxinDirectDamage( + new DamageSource(entry.get("source").getAsString()), + entry.get("amount").getAsFloat(), + entry.get("delay").getAsInt(), + HazardClass.valueOf(entry.get("masktype").getAsString()), + entry.get("hazmat").getAsBoolean() + ); + this.entries.add(e); + } + + if(name.equals("effects")) { + ToxinEffects e = new ToxinEffects( + HazardClass.valueOf(entry.get("masktype").getAsString()), + entry.get("hazmat").getAsBoolean() + ); + JsonArray effects = entry.get("effects").getAsJsonArray(); + for(int j = 0; j < effects.size(); j++) { + JsonArray effect = effects.get(j).getAsJsonArray(); + PotionEffect potion = new PotionEffect(effect.get(0).getAsInt(), effect.get(1).getAsInt(), effect.get(2).getAsInt(), effect.get(3).getAsBoolean()); + e.effects.add(potion); + } + this.entries.add(e); + } + } + } +} diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java index de8dd7764..516ef0e81 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FT_VentRadiation.java @@ -1,7 +1,10 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.inventory.fluid.tank.FluidTank; @@ -12,6 +15,8 @@ public class FT_VentRadiation extends FluidTrait { float radPerMB = 0; + public FT_VentRadiation() { } + public FT_VentRadiation(float rad) { this.radPerMB = rad; } @@ -29,4 +34,14 @@ public class FT_VentRadiation extends FluidTrait { public void addInfo(List info) { info.add(EnumChatFormatting.YELLOW + "[Radioactive]"); } + + @Override + public void serializeJSON(JsonWriter writer) throws IOException { + writer.name("radiation").value(radPerMB); + } + + @Override + public void deserializeJSON(JsonObject obj) { + this.radPerMB = obj.get("radiation").getAsFloat(); + } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java index 128e945b0..ba385ad54 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTrait.java @@ -1,12 +1,42 @@ package com.hbm.inventory.fluid.trait; +import java.io.IOException; import java.util.List; +import com.google.common.collect.HashBiMap; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import net.minecraft.world.World; public abstract class FluidTrait { + + public static HashBiMap> traitNameMap = HashBiMap.create(); + + static { + traitNameMap.put("combustible", FT_Combustible.class); // x + traitNameMap.put("coolable", FT_Coolable.class); // x + traitNameMap.put("corrosive", FT_Corrosive.class); // x + traitNameMap.put("flammable", FT_Flammable.class); // x + traitNameMap.put("heatable", FT_Heatable.class); // x + traitNameMap.put("poison", FT_Poison.class); // x + traitNameMap.put("toxin", FT_Toxin.class); // x + traitNameMap.put("ventradiation", FT_VentRadiation.class); // x + + traitNameMap.put("gaseous", FT_Gaseous.class); + traitNameMap.put("gaseous_art", FT_Gaseous_ART.class); + traitNameMap.put("liquid", FT_Liquid.class); + traitNameMap.put("viscous", FT_Viscous.class); + traitNameMap.put("plasma", FT_Plasma.class); + traitNameMap.put("amat", FT_Amat.class); + traitNameMap.put("leadcontainer", FT_LeadContainer.class); + traitNameMap.put("delicious", FT_Delicious.class); + traitNameMap.put("leaded", FT_Leaded.class); + traitNameMap.put("noid", FT_NoID.class); + traitNameMap.put("nocontainer", FT_NoContainer.class); + } /** Important information that should always be displayed */ public void addInfo(List info) { } @@ -14,4 +44,7 @@ public abstract class FluidTrait { public void addInfoHidden(List info) { } public void onFluidRelease(World world, int x, int y, int z, FluidTank tank, int overflowAmount) { } + + public void serializeJSON(JsonWriter writer) throws IOException { } + public void deserializeJSON(JsonObject obj) { } } diff --git a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java index 908005f68..d282cea42 100644 --- a/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java +++ b/src/main/java/com/hbm/inventory/fluid/trait/FluidTraitSimple.java @@ -12,7 +12,8 @@ public class FluidTraitSimple { } } - public static class FT_Gaseous_ART extends FluidTrait { //at room temperature, for cryogenic hydrogen for example + /** gaseous at room temperature, for cryogenic hydrogen for example */ + public static class FT_Gaseous_ART extends FluidTrait { @Override public void addInfoHidden(List info) { info.add(EnumChatFormatting.BLUE + "[Gaseous at Room Temperature]"); } @@ -24,6 +25,13 @@ public class FluidTraitSimple { } } + /** to viscous to be sprayed/turned into a mist */ + public static class FT_Viscous extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.BLUE + "[Viscous]"); + } + } + public static class FT_Plasma extends FluidTrait { @Override public void addInfoHidden(List info) { info.add(EnumChatFormatting.LIGHT_PURPLE + "[Plasma]"); @@ -41,10 +49,18 @@ public class FluidTraitSimple { info.add(EnumChatFormatting.DARK_RED + "[Requires hazardous material tank to hold]"); } } + public static class FT_Delicious extends FluidTrait { @Override public void addInfoHidden(List info) { info.add(EnumChatFormatting.DARK_GREEN + "[Delicious]"); - }} + } + } + + public static class FT_Leaded extends FluidTrait { + @Override public void addInfoHidden(List info) { + info.add(EnumChatFormatting.BLUE + "[Leaded Fuel]"); + } + } public static class FT_NoID extends FluidTrait { } public static class FT_NoContainer extends FluidTrait { } diff --git a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java index b9f77897d..6f8ef4a10 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIAnvil.java +++ b/src/main/java/com/hbm/inventory/gui/GUIAnvil.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; @@ -85,7 +86,7 @@ public class GUIAnvil extends GuiContainer { private void search(String search) { - search = search.toLowerCase(); + search = search.toLowerCase(Locale.US); this.recipes.clear(); @@ -320,7 +321,7 @@ public class GUIAnvil extends GuiContainer { for(AStack stack : recipe.input) { if(stack instanceof ComparableStack) { ItemStack input = ((ComparableStack) stack).toStack(); - list.add(input.getDisplayName().toLowerCase()); + list.add(input.getDisplayName().toLowerCase(Locale.US)); } else if(stack instanceof OreDictStack) { OreDictStack input = (OreDictStack) stack; @@ -328,7 +329,7 @@ public class GUIAnvil extends GuiContainer { if(ores.size() > 0) { for(ItemStack ore : ores) { - list.add(ore.getDisplayName().toLowerCase()); + list.add(ore.getDisplayName().toLowerCase(Locale.US)); } } @@ -336,7 +337,7 @@ public class GUIAnvil extends GuiContainer { } for(AnvilOutput stack : recipe.output) { - list.add(stack.stack.getDisplayName().toLowerCase()); + list.add(stack.stack.getDisplayName().toLowerCase(Locale.US)); } return list; diff --git a/src/main/java/com/hbm/inventory/gui/GUIBookLore.java b/src/main/java/com/hbm/inventory/gui/GUIBookLore.java index b8f203f23..dc628427a 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIBookLore.java +++ b/src/main/java/com/hbm/inventory/gui/GUIBookLore.java @@ -5,134 +5,177 @@ import java.util.List; import org.lwjgl.opengl.GL11; -import com.hbm.items.special.ItemBookLore.*; import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; + import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; -import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; -// and you may ask yourself: vaer, why do this? this is basically just a copy of GUIScreenGuide. -// and I would answer, shut the fuck up nerd, the guide book system is too involved for my small -// brain to use for god knows how many tidbits of lore. i'll settle for a text box and cool textures, thanks public class GUIBookLore extends GuiScreen { - protected int xSize; - protected int ySize; + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/book/book_lore.png"); + protected int guiLeft; protected int guiTop; + protected static int sizeX = 272; + protected static int sizeY = 182; - private NBTTagCompound tag; //Used for save-dependent information, like the MKU recipe - private BookLoreType type; + protected String key; + protected NBTTagCompound tag; - public int itemTexture; + //judgement + protected int color; - protected GUIPage mainPage; - protected GUIPage auxPage; - protected GUIPageButton button; - - int page = 0; - int maxPage; + protected int page; + protected int maxPage; public GUIBookLore(EntityPlayer player) { + ItemStack stack = player.getHeldItem(); + if(!stack.hasTagCompound()) return; + this.tag = stack.getTagCompound(); + this.key = tag.getString("k"); + if(key.isEmpty()) return; - type = BookLoreType.getTypeFromStack(player.getHeldItem()); - tag = player.getHeldItem().getTagCompound(); //compound is created or gotten in method above - GUIAppearance setup = type.appearance; - - mainPage = setup.mainPage; - auxPage = setup.auxPage; - button = setup.button; - itemTexture = setup.itemTexture; - - if(type.pages <= 1) { - xSize = auxPage.sizeX; - ySize = auxPage.sizeY; - } else { - xSize = mainPage.sizeX; - ySize = mainPage.sizeY; - } - - maxPage = mainPage.isTwoPages ? (int)Math.ceil(type.pages / 2D) - 1 : type.pages - 1; + this.color = tag.getInteger("cov_col"); + if(color <= 0) + color = 0x303030; + this.maxPage = (int)Math.ceil(tag.getInteger("p") / 2D) - 1; } @Override public void initGui() { - super.initGui(); - this.guiLeft = (this.width - this.xSize) / 2; - this.guiTop = (this.height - this.ySize) / 2; + if(key == null || key.isEmpty()) this.mc.thePlayer.closeScreen(); + this.guiLeft = (this.width - this.sizeX) / 2; + this.guiTop = (this.height - this.sizeY) / 2; } @Override - public void drawScreen(int mouseX, int mouseY, float f) { + public void drawScreen(int i, int j, float f) { this.drawDefaultBackground(); - this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + this.drawGuiContainerBackgroundLayer(f, i, j); GL11.glDisable(GL11.GL_LIGHTING); - this.drawGuiContainerForegroundLayer(mouseX, mouseY); + this.drawGuiContainerForegroundLayer(i, j); GL11.glEnable(GL11.GL_LIGHTING); } protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - if(page == maxPage && (page + 1) * 2 > type.pages) { //odd numbered pages - Minecraft.getMinecraft().getTextureManager().bindTexture(auxPage.texture); - func_146110_a(guiLeft, guiTop, auxPage.u, auxPage.v, auxPage.sizeX, auxPage.sizeY, 512, 512); - } else { - Minecraft.getMinecraft().getTextureManager().bindTexture(mainPage.texture); - func_146110_a(guiLeft, guiTop, mainPage.u, mainPage.v, mainPage.sizeX, mainPage.sizeY, 512, 512); + float r = (float)(color >> 16 & 255) / 255F; + float g = (float)(color >> 8 & 255) / 255F; + float b = (float)(color & 255) / 255F; + GL11.glColor4f(r, g, b, 1.0F); + func_146110_a(guiLeft, guiTop, 0, 0, sizeX, sizeY, 512, 512); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + func_146110_a(guiLeft + 7, guiTop + 7, 0, 182, 258, 165, 512, 512); + + final boolean overY = j >= guiTop + 155 && j < guiTop + 165; + if(page > 0) { + if(overY && i >= guiLeft + 24 && i <= guiLeft + 42) + func_146110_a(guiLeft + 24, guiTop + 155, 295, 13, 18, 10, 512, 512); + else + func_146110_a(guiLeft + 24, guiTop + 155, 272, 13, 18, 10, 512, 512); } - int width = page == maxPage && (page + 1) * 2 > type.pages ? auxPage.sizeX : mainPage.sizeX; - - if(page > 0) - button.renderButton(this, width, guiLeft, guiTop, false, i, j); - - if(page < maxPage) - button.renderButton(this, width, guiLeft, guiTop, true, i, j); + if(page < maxPage) { + if(overY && i >= guiLeft + 230 && i <= guiLeft + 248) + func_146110_a(guiLeft + 230, guiTop + 155, 295, 0, 18, 10, 512, 512); + else + func_146110_a(guiLeft + 230, guiTop + 155, 272, 0, 18, 10, 512, 512); + } } protected void drawGuiContainerForegroundLayer(int x, int y) { - String key = "book_lore." + type.keyI18n + ".page."; + String k = "book_lore." + key + ".page."; - if(mainPage.isTwoPages) { - int defacto = page * 2 + 1; - String text = type.resolveKey(key + defacto, tag); + for(int i = 0; i < 2; i++) { + int defacto = this.page * 2 + i; - if((page + 1) * 2 <= type.pages) { //Checks if text should be rendered as an aux or a main page - mainPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); + if(defacto < tag.getInteger("p")) { + String text; + NBTTagCompound argTag = tag.getCompoundTag("p" + defacto); - text = type.resolveKey(key + (defacto + 1), tag); //kinda awkward, but no way around it - mainPage.renderText(text, fontRendererObj, guiLeft, guiTop, true); - } else - auxPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); - - } else { - String text = type.resolveKey(key + (page + 1), tag); - - if(page < maxPage) - mainPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); - else - auxPage.renderText(text, fontRendererObj, guiLeft, guiTop, false); + if(argTag.hasNoTags()) + text = I18nUtil.resolveKey(k + defacto); + else { + List args = new ArrayList(); + int index = 1; + String arg = argTag.getString("a1"); + + while(!arg.isEmpty()) { + args.add(arg); + index++; + arg = argTag.getString("a" + index); + } + + text = I18nUtil.resolveKey(k + defacto, args.toArray()); + } + + float scale = 1; + int width = 100; + int widthScaled = (int) (width * scale); + + List lines = new ArrayList(); + String[] words = text.split(" "); + + lines.add(words[0]); + int indent = this.fontRendererObj.getStringWidth(words[0]); + + for(int w = 1; w < words.length; w++) { + if(words[w].equals("$")) { + if(w + 1 < words.length && !words[w + 1].equals("$")) { + lines.add(words[++w]); + indent = this.fontRendererObj.getStringWidth(words[w]); + } else + lines.add(""); + + continue; + } + + indent += this.fontRendererObj.getStringWidth(" " + words[w]); + + if(indent <= widthScaled) { + String last = lines.get(lines.size() - 1); + lines.set(lines.size() - 1, last += (" " + words[w])); + } else { + lines.add(words[w]); + indent = this.fontRendererObj.getStringWidth(words[w]); + } + } + + GL11.glPushMatrix(); + GL11.glScalef(1F/scale, 1F/scale, 1F); + + for(int l = 0; l < lines.size(); l++) { + this.fontRendererObj.drawString(lines.get(l), + (int)((guiLeft + 20 + i * 130) * scale), + (int)((guiTop + 20) * scale + (9 * l)), + 0x0F0F0F); + } + + GL11.glPopMatrix(); + } } } @Override protected void mouseClicked(int i, int j, int k) { - int q = 0; //if both buttons are somehow simultaneously clicked then obviously something's wrong already + if(j < guiTop + 155 || j >= guiTop + 165) return; - if(page > 0) - q = button.handleInput(xSize, guiLeft, guiTop, false, i, j); - - if(page < maxPage && q == 0) - q = button.handleInput(xSize, guiLeft, guiTop, true, i, j); - - if(q != 0) { + if(page > 0 && i >= guiLeft + 24 && i <= guiLeft + 42) { + page--; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + } + + if(page < maxPage && i >= guiLeft + 230 && i <= guiLeft + 248) { + page++; mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); - this.page += q; } } @@ -142,208 +185,4 @@ public class GUIBookLore extends GuiScreen { this.mc.thePlayer.closeScreen(); } } - - // turn page buttons, one-page, both page textures, sizes, positions, etc. - public enum GUIAppearance { - GUIDEBOOK(new GUIPage(272, 182, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/book.png")).setScale(2F).setMargins(20, 20, 20), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 0), //Guide Book - LOOSEPAPER(new GUIPage(130, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(12, 10, 16).setUV(133, 0), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 1), //Singular loose page - LOOSEPAPERS(new GUIPage(133, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(12, 10, 16), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 2), //Collection of loose pages - NOTEBOOK(new GUIPage(133, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(10, 10, 16).setUV(0, 165), - new GUIPage(133, 165, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png"), false).setMargins(10, 10, 16).setUV(133, 165), - new GUIPageButton(18, 10, 17, 148, new ResourceLocation(RefStrings.MODID + ":textures/gui/book/notebook_and_papers.png")).setUV(263, 0, 512, 512), - 3); - - public int itemTexture; - - protected GUIPage mainPage; //"Main" page, usually two pages. GUI accounts for one-paged main pages. - protected GUIPage auxPage; //"Aux" page, AKA the final page if the max pages is oddly numbered. - //If two-sided, text will be positioned on the left page. - protected GUIPageButton button; - - private GUIAppearance(GUIPage main, GUIPage aux, GUIPageButton button, int texture) { - this.mainPage = main; - this.auxPage = aux; - this.button = button; - this.itemTexture = texture; - } - - private GUIAppearance(GUIPage main, GUIPageButton button, int texture) { - this.mainPage = main; - this.auxPage = main; - this.button = button; - this.itemTexture = texture; - } - - } - - private static class GUIPage { - protected ResourceLocation texture; - - //UV positioning - protected int u = 0; //X/U pos in texture - protected int v = 0; //Y/V pos in texture - - protected int sizeX; //X size of the page - protected int sizeY; //Y size of the page - - //Text positioning - protected int marginInner = 10; //Margin from inner edge of page - protected int marginOuter = 10; //Margin from outer edge of page - protected int marginY = 20; //Margin from upper edge of page - protected boolean isTwoPages = true; //Has two pages to display text - protected float scale = 1.0F; //Scale of the text; larger values are smaller - protected int spacing = 9; //12 is a more comfortable spacing - - protected GUIPage(int x, int y, ResourceLocation texture, boolean twoPages) { - this.sizeX = x; - this.sizeY = y; - this.texture = texture; - this.isTwoPages = twoPages; - } - - protected GUIPage(int x, int y, ResourceLocation texture) { - this.sizeX = x; - this.sizeY = y; - this.texture = texture; - } - - protected GUIPage setUV(int u, int v) { - this.u = u; - this.v = v; - return this; - } - - protected GUIPage setScale(float scale) { - this.scale = scale; - return this; - } - - protected GUIPage setMargins(int inner, int outer, int upper) { - this.marginInner = inner; - this.marginOuter = outer; - this.marginY = upper; - return this; - } - - protected GUIPage setSpacing(int spacing) { - this.spacing = spacing; - return this; - } - - protected void renderText(String text, FontRenderer renderer, int left, int top, boolean secondPage) { - int width = (isTwoPages ? sizeX / 2 : sizeX) - marginInner - marginOuter; - int widthScaled = (int) (width * scale); - - List lines = new ArrayList(); - String[] words = text.split(" "); - - lines.add(words[0]); - int indent = renderer.getStringWidth(words[0]); - - for(int w = 1; w < words.length; w++) { - - if(words[w].equals("$")) { - if(w + 1 < words.length && !words[w + 1].equals("$")) { - lines.add(words[++w]); - indent = renderer.getStringWidth(words[w]); - } else - lines.add(""); - - continue; - } - - indent += renderer.getStringWidth(" " + words[w]); - - if(indent <= widthScaled) { - String last = lines.get(lines.size() - 1); - lines.set(lines.size() - 1, last += (" " + words[w])); - } else { - lines.add(words[w]); - indent = renderer.getStringWidth(words[w]); - } - } - - GL11.glPushMatrix(); - GL11.glScalef(1F/scale, 1F/scale, 1F); - - int sideOffset = secondPage ? sizeX / 2 + marginInner : marginOuter; - - for(int l = 0; l < lines.size(); l++) { - renderer.drawString(lines.get(l), (int)((left + sideOffset) * scale), (int)((top + marginY) * scale + (spacing * l)), 4210752); - } - - GL11.glPopMatrix(); - } - } - - private static class GUIPageButton { - protected ResourceLocation texture; - - protected int sizeX; //size of a single button; full texture is 2*sizeX : 2*sizeZ - protected int sizeY; - protected int x; //x position on page, relative to edge of the page it is on. - protected int y; //y position on page, relative to the top edge of the page. - - /* Left, Unsel | Right, Unsel - * Left, Sel | Right, Sel - */ - protected int u = 0; //upper lefthand corner where the button textures lie. - protected int v = 0; //assumes uniform size for each. - protected int sizeU = sizeX * 2; //Size of UV texture - protected int sizeV = sizeY * 2; - - protected GUIPageButton(int sizeX, int sizeY, int x, int y, ResourceLocation tex) { - this.sizeX = sizeX; - this.sizeY = sizeY; - this.x = x; - this.y = y; - this.texture = tex; - } - - protected GUIPageButton setUV(int u, int v, int sizeU, int sizeV) { - this.u = u; - this.v = v; - this.sizeU = sizeU; - this.sizeV = sizeV; - return this; - } - - protected void renderButton(GuiScreen screen, int width, int left, int top, boolean rightPage, int i, int j) { - Minecraft.getMinecraft().getTextureManager().bindTexture(texture); - boolean overY = j >= top + y && j < top + y + sizeY; - - if(!rightPage) { - if(i >= left + x && i < left + x + sizeX && overY) { - func_146110_a(left + x, top + y, u, v + sizeY, sizeX, sizeY, sizeU, sizeV); - } else { - func_146110_a(left + x, top + y, u, v, sizeX, sizeY, sizeU, sizeV); - } - } else { - if(i >= left + width - x - sizeX && i < left + width - x && overY) { - func_146110_a(left + width - x - sizeX, top + y, u + sizeX, v + sizeY, sizeX, sizeY, sizeU, sizeV); - } else { - func_146110_a(left + width - x - sizeX, top + y, u + sizeX, v, sizeX, sizeY, sizeU, sizeV); - } - } - } - - protected int handleInput(int width, int left, int top, boolean rightPage, int i, int j) { - boolean overY = j >= top + y && j < top + y + sizeY; - if(!rightPage) { - if(i >= left + x && i < left + x + sizeX && overY) - return -1; - } else { - if(i >= left + width - x - sizeX && i < left + width - x && overY) - return 1; - } - - return 0; - } - } } \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/gui/GUICompressor.java b/src/main/java/com/hbm/inventory/gui/GUICompressor.java new file mode 100644 index 000000000..66e72609b --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICompressor.java @@ -0,0 +1,88 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCompressor; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUICompressor extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_compressor.png"); + private TileEntityMachineCompressor compressor; + + public GUICompressor(InventoryPlayer invPlayer, TileEntityMachineCompressor tedf) { + super(new ContainerCompressor(invPlayer, tedf)); + compressor = tedf; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + compressor.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 17, guiTop + 18, 16, 52); + compressor.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 107, guiTop + 18, 16, 52); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 18, 16, 52, compressor.power, compressor.maxPower); + + for(int j = 0; j < 5; j++) drawCustomInfoStat(mouseX, mouseY, guiLeft + 43 + j * 11, guiTop + 46, 8, 14, mouseX, mouseY, j + " PU -> " + (j + 1) + " PU"); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + for(int j = 0; j < 5; j++) { + + if(guiLeft + 43 + j * 11 <= x && guiLeft + 43 + 8 + j * 11 > x && guiTop + 46 < y && guiTop + 46 + 14 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("compression", j); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, compressor.xCoord, compressor.yCoord, compressor.zCoord)); + } + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + + String name = this.compressor.hasCustomInventoryName() ? this.compressor.getInventoryName() : I18n.format(this.compressor.getInventoryName()); + + this.fontRendererObj.drawString(name, 70 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(compressor.power >= compressor.powerRequirement) { + drawTexturedModalRect(guiLeft + 156, guiTop + 4, 176, 52, 9, 12); + } + + drawTexturedModalRect(guiLeft + 43 + compressor.tanks[0].getPressure() * 11, guiTop + 46, 193, 18, 8, 124); + + int i = compressor.progress * 55 / compressor.processTime; + drawTexturedModalRect(guiLeft + 42, guiTop + 26, 192, 0, i, 17); + + int j = (int) (compressor.power * 52 / compressor.maxPower); + drawTexturedModalRect(guiLeft + 152, guiTop + 70 - j, 176, 52 - j, 16, j); + + compressor.tanks[0].renderTank(guiLeft + 17, guiTop + 70, this.zLevel, 16, 52); + compressor.tanks[1].renderTank(guiLeft + 107, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java new file mode 100644 index 000000000..b4c4dd7b2 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICounterTorch.java @@ -0,0 +1,151 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCounterTorch; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityRadioTorchCounter; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiTextField; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUICounterTorch extends GuiInfoContainer { + + protected static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_rtty_counter.png"); + + protected TileEntityRadioTorchCounter counter; + protected GuiTextField[] frequency; + + public GUICounterTorch(InventoryPlayer invPlayer, TileEntityRadioTorchCounter counter) { + super(new ContainerCounterTorch(invPlayer, counter)); + this.counter = counter; + + this.xSize = 218; + this.ySize = 238; + } + + @Override + public void initGui() { + super.initGui(); + + Keyboard.enableRepeatEvents(true); + + this.frequency = new GuiTextField[3]; + + for(int i = 0; i < 3; i++) { + + this.frequency[i] = new GuiTextField(this.fontRendererObj, guiLeft + 29, guiTop + 21 + 44 * i, 86, 14); + this.frequency[i].setTextColor(0x00ff00); + this.frequency[i].setDisabledTextColour(0x00ff00); + this.frequency[i].setEnableBackgroundDrawing(false); + this.frequency[i].setMaxStringLength(10); + this.frequency[i].setText(counter.channel[i] == null ? "" : counter.channel[i]); + } + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 8 < y && guiTop + 8 + 18 >= y) { + func_146283_a(Arrays.asList(new String[] { counter.polling ? "Polling" : "State Change" }), x, y); + } + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 30 < y && guiTop + 30 + 18 >= y) { + func_146283_a(Arrays.asList(new String[] { "Save Settings" }), x, y); + } + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 3; ++i) { + 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); + } + } + } + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + for(int j = 0; j < 3; j++) this.frequency[j].mouseClicked(x, y, i); + + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 8 < y && guiTop + 8 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("polling", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, counter.xCoord, counter.yCoord, counter.zCoord)); + } + + if(guiLeft + 193 <= x && guiLeft + 193 + 18 > x && guiTop + 30 < y && guiTop + 30 + 18 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + + for(int j = 0; j < 3; j++) data.setString("c" + j, this.frequency[j].getText()); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, counter.xCoord, counter.yCoord, counter.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int x, int y) { + String name = I18nUtil.resolveKey(this.counter.getInventoryName()); + this.fontRendererObj.drawString(name, 184 / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 16, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(counter.polling) { + drawTexturedModalRect(guiLeft + 193, guiTop + 8, 218, 0, 18, 18); + } + + for(int i = 0; i < 3; i++) this.frequency[i].drawTextBox(); + } + + @Override + protected void keyTyped(char c, int i) { + + for(int j = 0; j < 3; j++) if(this.frequency[j].textboxKeyTyped(c, i)) return; + + super.keyTyped(c, i); + } + + @Override + public void onGuiClosed() { + super.onGuiClosed(); + Keyboard.enableRepeatEvents(false); + } + + @Override + public boolean doesGuiPauseGame() { + return false; + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java index ea927d377..e6937c829 100644 --- a/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java +++ b/src/main/java/com/hbm/inventory/gui/GUICraneExtractor.java @@ -22,11 +22,11 @@ import net.minecraft.util.ResourceLocation; public class GUICraneExtractor extends GuiInfoContainer { private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crane_ejector.png"); - private TileEntityCraneExtractor inserter; + private TileEntityCraneExtractor ejector; public GUICraneExtractor(InventoryPlayer invPlayer, TileEntityCraneExtractor tedf) { super(new ContainerCraneExtractor(invPlayer, tedf)); - inserter = tedf; + ejector = tedf; this.xSize = 176; this.ySize = 185; @@ -40,14 +40,14 @@ public class GUICraneExtractor extends GuiInfoContainer { for(int i = 0; i < 9; ++i) { Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); - if(this.isMouseOverSlot(slot, x, y) && inserter.matcher.modes[i] != null) { + if(this.isMouseOverSlot(slot, x, y) && ejector.matcher.modes[i] != null) { String label = EnumChatFormatting.YELLOW + ""; - switch(inserter.matcher.modes[i]) { + 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: " + inserter.matcher.modes[i]; 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); @@ -65,13 +65,13 @@ public class GUICraneExtractor extends GuiInfoContainer { mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); NBTTagCompound data = new NBTTagCompound(); data.setBoolean("whitelist", true); - PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, inserter.xCoord, inserter.yCoord, inserter.zCoord)); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, ejector.xCoord, ejector.yCoord, ejector.zCoord)); } } @Override protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.inserter.hasCustomInventoryName() ? this.inserter.getInventoryName() : I18n.format(this.inserter.getInventoryName()); + String name = this.ejector.hasCustomInventoryName() ? this.ejector.getInventoryName() : I18n.format(this.ejector.getInventoryName()); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); } @@ -82,7 +82,7 @@ public class GUICraneExtractor extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - if(inserter.isWhitelist) { + if(ejector.isWhitelist) { drawTexturedModalRect(guiLeft + 139, guiTop + 33, 176, 0, 3, 6); } else { drawTexturedModalRect(guiLeft + 139, guiTop + 47, 176, 0, 3, 6); diff --git a/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java new file mode 100644 index 000000000..ef1465205 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICraneGrabber.java @@ -0,0 +1,91 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCraneGrabber; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.network.TileEntityCraneGrabber; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUICraneGrabber extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crane_grabber.png"); + private TileEntityCraneGrabber grabber; + + public GUICraneGrabber(InventoryPlayer invPlayer, TileEntityCraneGrabber tedf) { + super(new ContainerCraneGrabber(invPlayer, tedf)); + grabber = tedf; + + this.xSize = 176; + this.ySize = 185; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < 9; ++i) { + 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); + } + } + } + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 97 <= x && guiLeft + 97 + 14 > x && guiTop + 30 < y && guiTop + 30 + 26 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("whitelist", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, grabber.xCoord, grabber.yCoord, grabber.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.grabber.hasCustomInventoryName() ? this.grabber.getInventoryName() : I18n.format(this.grabber.getInventoryName()); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(grabber.isWhitelist) { + drawTexturedModalRect(guiLeft + 108, guiTop + 33, 176, 0, 3, 6); + } else { + drawTexturedModalRect(guiLeft + 108, guiTop + 47, 176, 0, 3, 6); + } + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUICrateTemplate.java b/src/main/java/com/hbm/inventory/gui/GUICrateTemplate.java new file mode 100644 index 000000000..9968d461c --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUICrateTemplate.java @@ -0,0 +1,42 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerCrateTemplate; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUICrateTemplate extends GuiContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/storage/gui_crate_template.png"); + private TileEntityCrateTemplate diFurnace; + + public GUICrateTemplate(InventoryPlayer invPlayer, TileEntityCrateTemplate tedf) { + super(new ContainerCrateTemplate(invPlayer, tedf)); + diFurnace = tedf; + + this.xSize = 176; + this.ySize = 168; + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java new file mode 100644 index 000000000..fa4964eed --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserFluid.java @@ -0,0 +1,80 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerElectrolyserFluid; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityElectrolyser; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; + +public class GUIElectrolyserFluid extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_electrolyser_fluid.png"); + private TileEntityElectrolyser electrolyser; + + public GUIElectrolyserFluid(InventoryPlayer invPlayer, TileEntityElectrolyser electrolyser) { + super(new ContainerElectrolyserFluid(invPlayer, electrolyser)); + this.electrolyser = electrolyser; + + this.xSize = 210; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + electrolyser.tanks[0].renderTankInfo(this, mouseX, mouseY, guiLeft + 42, guiTop + 18, 16, 52); + electrolyser.tanks[1].renderTankInfo(this, mouseX, mouseY, guiLeft + 96, guiTop + 18, 16, 52); + electrolyser.tanks[2].renderTankInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 18, 16, 52); + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 89, electrolyser.power, electrolyser.maxPower); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 8 <= x && guiLeft + 8 + 54 > x && guiTop + 82 < y && guiTop + 82 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("sgm", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, electrolyser.xCoord, electrolyser.yCoord, electrolyser.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.electrolyser.hasCustomInventoryName() ? this.electrolyser.getInventoryName() : I18n.format(this.electrolyser.getInventoryName()); + + this.fontRendererObj.drawString(name, (this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2) - 16, 7, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 94, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = (int) (electrolyser.power * 89 / electrolyser.maxPower); + drawTexturedModalRect(guiLeft + 186, guiTop + 107 - p, 210, 89 - p, 16, p); + + if(electrolyser.power >= electrolyser.usage) + drawTexturedModalRect(guiLeft + 190, guiTop + 4, 226, 40, 9, 12); + + int e = electrolyser.progressFluid * 41 / electrolyser.processFluidTime; + drawTexturedModalRect(guiLeft + 62, guiTop + 26, 226, 0, 12, e); + + electrolyser.tanks[0].renderTank(guiLeft + 42, guiTop + 70, this.zLevel, 16, 52); + electrolyser.tanks[1].renderTank(guiLeft + 96, guiTop + 70, this.zLevel, 16, 52); + electrolyser.tanks[2].renderTank(guiLeft + 116, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java new file mode 100644 index 000000000..b132811e1 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIElectrolyserMetal.java @@ -0,0 +1,110 @@ +package com.hbm.inventory.gui; + +import java.awt.Color; + +import org.lwjgl.input.Keyboard; +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerElectrolyserMetal; +import com.hbm.inventory.material.Mats; +import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.tileentity.machine.TileEntityElectrolyser; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIElectrolyserMetal extends GuiInfoContainer { + + public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_electrolyser_metal.png"); + private TileEntityElectrolyser electrolyser; + + public GUIElectrolyserMetal(InventoryPlayer invPlayer, TileEntityElectrolyser electrolyser) { + super(new ContainerElectrolyserMetal(invPlayer, electrolyser)); + this.electrolyser = electrolyser; + + this.xSize = 210; + this.ySize = 204; + } + + @Override + public void drawScreen(int mouseX, int mouseY, float f) { + super.drawScreen(mouseX, mouseY, f); + + electrolyser.tanks[3].renderTankInfo(this, mouseX, mouseY, guiLeft + 36, guiTop + 18, 16, 52); + + if(electrolyser.leftStack != null) { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 58, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.YELLOW + I18nUtil.resolveKey(electrolyser.leftStack.material.getUnlocalizedName()) + ": " + Mats.formatAmount(electrolyser.leftStack.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } else { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 58, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.RED + "Empty"); + } + + if(electrolyser.rightStack != null) { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.YELLOW + I18nUtil.resolveKey(electrolyser.rightStack.material.getUnlocalizedName()) + ": " + Mats.formatAmount(electrolyser.rightStack.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } else { + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 96, guiTop + 18, 34, 42, mouseX, mouseY, EnumChatFormatting.RED + "Empty"); + } + + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 186, guiTop + 18, 16, 89, electrolyser.power, electrolyser.maxPower); + } + + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 8 <= x && guiLeft + 8 + 54 > x && guiTop + 82 < y && guiTop + 82 + 12 >= y) { + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("sgf", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, electrolyser.xCoord, electrolyser.yCoord, electrolyser.zCoord)); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.electrolyser.hasCustomInventoryName() ? this.electrolyser.getInventoryName() : I18n.format(this.electrolyser.getInventoryName()); + + this.fontRendererObj.drawString(name, (this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2) - 16, 7, 0xffffff); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 94, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(electrolyser.leftStack != null) { + int p = electrolyser.leftStack.amount * 42 / electrolyser.maxMaterial; + Color color = new Color(electrolyser.leftStack.material.moltenColor); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 58, guiTop + 60 - p, 210, 131 - p, 34, p); + } + + if(electrolyser.rightStack != null) { + int p = electrolyser.rightStack.amount * 42 / electrolyser.maxMaterial; + Color color = new Color(electrolyser.rightStack.material.moltenColor); + GL11.glColor3f(color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F); + drawTexturedModalRect(guiLeft + 96, guiTop + 60 - p, 210, 131 - p, 34, p); + } + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + int p = (int) (electrolyser.power * 89 / electrolyser.maxPower); + drawTexturedModalRect(guiLeft + 186, guiTop + 107 - p, 210, 89 - p, 16, p); + + if(electrolyser.power >= electrolyser.usage) + drawTexturedModalRect(guiLeft + 190, guiTop + 4, 226, 25, 9, 12); + + int o = electrolyser.progressOre * 26 / electrolyser.processOreTime; + drawTexturedModalRect(guiLeft + 7, guiTop + 71 - o, 226, 25 - o, 22, o); + + electrolyser.tanks[3].renderTank(guiLeft + 36, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index d77a5bb3f..f932ba665 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import org.lwjgl.opengl.GL11; @@ -51,7 +52,7 @@ public class GUIHadron extends GuiInfoContainer { List stats = new ArrayList(); stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hadron.stats")); - stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.stat_state.name().toLowerCase())); + stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.stat_state.name().toLowerCase(Locale.US))); if(this.hadron.state.showCoord) stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hadron.stats_coord", hadron.stat_x, hadron.stat_y, hadron.stat_z)); stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", String.format("%,d", hadron.stat_charge))); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 41, guiTop + 92, 25, 11, mouseX, mouseY, stats.toArray(new String[0])); @@ -89,7 +90,7 @@ public class GUIHadron extends GuiInfoContainer { this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); - String state = I18n.format("hadron." + this.hadron.state.name().toLowerCase()); + String state = I18n.format("hadron." + this.hadron.state.name().toLowerCase(Locale.US)); this.fontRendererObj.drawString(state, this.xSize / 2 - this.fontRendererObj.getStringWidth(state) / 2, 76, this.hadron.state.color); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java b/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java index 145174fad..31ebd23ec 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineAssembler.java @@ -30,7 +30,7 @@ public class GUIMachineAssembler extends GuiInfoContainer { public void drawScreen(int mouseX, int mouseY, float f) { super.drawScreen(mouseX, mouseY, f); - this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 70 - 52, 16, 52, assembler.power, assembler.maxPower); + this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 116, guiTop + 70 - 52, 16, 52, assembler.power, assembler.getMaxPower()); if(assembler.getStackInSlot(4) == null || assembler.getStackInSlot(4).getItem()!= ModItems.assembly_template) { @@ -63,14 +63,15 @@ public class GUIMachineAssembler extends GuiInfoContainer { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int i = (int)assembler.getPowerScaled(52); + int i = (int) (assembler.power * 52 / assembler.getMaxPower()); drawTexturedModalRect(guiLeft + 116, guiTop + 70 - i, 176, 52 - i, 16, i); - int j = assembler.getProgressScaled(83); - drawTexturedModalRect(guiLeft + 45, guiTop + 82, 2, 222, j, 32); + if(assembler.isProgressing) { + int j = assembler.progress[0] * 83 / assembler.maxProgress[0]; + drawTexturedModalRect(guiLeft + 45, guiTop + 82, 2, 222, j, 32); + } if(assembler.getStackInSlot(4) == null || assembler.getStackInSlot(4).getItem()!= ModItems.assembly_template) { - this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 6); } diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java new file mode 100644 index 000000000..b9b2d5d1f --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCoker.java @@ -0,0 +1,61 @@ +package com.hbm.inventory.gui; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.container.ContainerMachineCoker; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.oil.TileEntityMachineCoker; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineCoker extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_coker.png"); + private TileEntityMachineCoker refinery; + + public GUIMachineCoker(InventoryPlayer invPlayer, TileEntityMachineCoker tedf) { + super(new ContainerMachineCoker(invPlayer, tedf)); + refinery = tedf; + + this.xSize = 176; + this.ySize = 204; + } + + @Override + public void drawScreen(int x, int y, float f) { + super.drawScreen(x, y, f); + + refinery.tanks[0].renderTankInfo(this, x, y, guiLeft + 35, guiTop + 18, 16, 52); + refinery.tanks[1].renderTankInfo(this, x, y, guiLeft + 125, guiTop + 18, 16, 52); + + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 45, 54, 7, x, y, new String[] { String.format("%,d", refinery.progress) + " / " + String.format("%,d", refinery.processTime) + "TU" }); + this.drawCustomInfoStat(x, y, guiLeft + 60, guiTop + 54, 54, 7, x, y, new String[] { String.format("%,d", refinery.heat) + " / " + String.format("%,d", refinery.maxHeat) + "TU" }); + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.refinery.hasCustomInventoryName() ? this.refinery.getInventoryName() : I18n.format(this.refinery.getInventoryName()); + + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0xC7C1A3); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = refinery.progress * 53 / refinery.processTime; + drawTexturedModalRect(guiLeft + 61, guiTop + 46, 176, 0, p, 5); + + int h = refinery.heat * 52 / refinery.maxHeat; + drawTexturedModalRect(guiLeft + 61, guiTop + 55, 176, 5, h, 5); + + refinery.tanks[0].renderTank(guiLeft + 35, guiTop + 70, this.zLevel, 16, 52); + refinery.tanks[1].renderTank(guiLeft + 125, guiTop + 70, this.zLevel, 16, 52); + } +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java new file mode 100644 index 000000000..7b658c150 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineCustom.java @@ -0,0 +1,121 @@ +package com.hbm.inventory.gui; + +import java.util.Arrays; + +import org.lwjgl.opengl.GL11; + +import com.hbm.inventory.SlotPattern; +import com.hbm.inventory.container.ContainerMachineCustom; +import com.hbm.lib.RefStrings; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Slot; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.ResourceLocation; + +public class GUIMachineCustom extends GuiInfoContainer { + + private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/processing/gui_custom.png"); + private TileEntityCustomMachine custom; + + public GUIMachineCustom(InventoryPlayer invPlayer, TileEntityCustomMachine tedf) { + super(new ContainerMachineCustom(invPlayer, tedf)); + custom = tedf; + + this.xSize = 176; + this.ySize = 256; + } + + @Override + public void drawScreen(int x, int y, float interp) { + super.drawScreen(x, y, interp); + + this.drawElectricityInfo(this, x, y, guiLeft + 150, guiTop + 18, 16, 52, custom.power, custom.config.maxPower); + + if(this.mc.thePlayer.inventory.getItemStack() == null) { + for(int i = 0; i < this.inventorySlots.inventorySlots.size(); ++i) { + Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i); + 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); + } + } + } + + for(int i = 0; i < custom.inputTanks.length; i++) { + custom.inputTanks[i].renderTankInfo(this, x, y, guiLeft + 8 + 18 * i, guiTop + 18, 16, 34); + } + + for(int i = 0; i < custom.outputTanks.length; i++) { + custom.outputTanks[i].renderTankInfo(this, x, y, guiLeft + 78 + 18 * i, guiTop + 18, 16, 34); + } + } + + @Override + protected void drawGuiContainerForegroundLayer(int i, int j) { + String name = this.custom.getInventoryName(); + this.fontRendererObj.drawString(name, 68 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + } + + @Override + protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + int p = custom.progress * 90 / custom.maxProgress; + drawTexturedModalRect(guiLeft + 78, guiTop + 119, 192, 0, Math.min(p, 44), 16); + if(p > 44) { + p-= 44; + drawTexturedModalRect(guiLeft + 78 + 44, guiTop + 119, 192, 16, p, 16); + } + + int e = (int) (custom.power * 52 / custom.config.maxPower); + drawTexturedModalRect(guiLeft + 150, guiTop + 70 - e, 176, 52 - e, 16, e); + + for(int i = 0; i < 2; i++) { + for(int j = 0; j < 3; j++) { + int index = i * 3 + j; + if(custom.config.itemInCount <= index) { + drawTexturedModalRect(guiLeft + 7 + j * 18, guiTop + 71 + i * 18, 192 + j * 18, 86 + i * 18, 18, 18); + drawTexturedModalRect(guiLeft + 7 + j * 18, guiTop + 107 + i * 18, 192 + j * 18, 86 + i * 18, 18, 18); + } + if(custom.config.itemOutCount <= index) { + drawTexturedModalRect(guiLeft + 77 + j * 18, guiTop + 71 + i * 18, 192 + j * 18, 86 + i * 18, 18, 18); + } + } + } + + for(int i = 0; i < 3; i++) { + if(custom.config.fluidInCount <= i) { + drawTexturedModalRect(guiLeft + 7 + i * 18, guiTop + 17, 192 + i * 18, 32, 18, 54); + } + if(custom.config.fluidOutCount <= i) { + drawTexturedModalRect(guiLeft + 77 + i * 18, guiTop + 17, 192 + i * 18, 32, 18, 36); + } + } + + for(int i = 0; i < custom.inputTanks.length; i++) { + custom.inputTanks[i].renderTank(guiLeft + 8 + 18 * i, guiTop + 52, this.zLevel, 16, 34); + } + + for(int i = 0; i < custom.outputTanks.length; i++) { + custom.outputTanks[i].renderTank(guiLeft + 78 + 18 * i, guiTop + 52, this.zLevel, 16, 34); + } + } + +} diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java index 0197e0409..4b78d4aa5 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineExcavator.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.NBTControlPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineExcavator; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.PositionedSoundRecord; @@ -32,6 +33,12 @@ public class GUIMachineExcavator extends GuiInfoContainer { @Override public void drawScreen(int x, int y, float interp) { super.drawScreen(x, y, interp); + + this.drawCustomInfoStat(x, y, guiLeft + 6, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.drill")); + this.drawCustomInfoStat(x, y, guiLeft + 30, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.crusher")); + this.drawCustomInfoStat(x, y, guiLeft + 54, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.walling")); + this.drawCustomInfoStat(x, y, guiLeft + 78, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.veinminer")); + this.drawCustomInfoStat(x, y, guiLeft + 102, guiTop + 42, 20, 40, x, y, I18nUtil.resolveKey("excavator.silktouch")); this.drawElectricityInfo(this, x, y, guiLeft + 220, guiTop + 18, 16, 52, drill.getPower(), drill.maxPower); this.drill.tank.renderTankInfo(this, x, y, guiLeft + 202, guiTop + 18, 16, 52); diff --git a/src/main/java/com/hbm/inventory/gui/GUIMixer.java b/src/main/java/com/hbm/inventory/gui/GUIMixer.java index ae109391e..15dd31b72 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMixer.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMixer.java @@ -1,14 +1,25 @@ package com.hbm.inventory.gui; +import java.util.ArrayList; +import java.util.List; + import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMixer; +import com.hbm.inventory.recipes.MixerRecipes; +import com.hbm.inventory.recipes.MixerRecipes.MixerRecipe; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.machine.TileEntityMachineMixer; +import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMixer extends GuiInfoContainer { @@ -29,12 +40,38 @@ public class GUIMixer extends GuiInfoContainer { super.drawScreen(x, y, interp); this.drawElectricityInfo(this, x, y, guiLeft + 23, guiTop + 23, 16, 52, mixer.getPower(), mixer.getMaxPower()); + + MixerRecipe[] recipes = MixerRecipes.getOutput(mixer.tanks[2].getTankType()); + + if(recipes != null && recipes.length > 1) { + List label = new ArrayList(); + label.add(EnumChatFormatting.YELLOW + "Current recipe (" + (mixer.recipeIndex + 1) + "/" + recipes.length + "):"); + MixerRecipe recipe = recipes[mixer.recipeIndex % recipes.length]; + if(recipe.input1 != null) label.add("-" + I18nUtil.resolveKey(recipe.input1.type.getUnlocalizedName())); + if(recipe.input2 != null) label.add("-" + I18nUtil.resolveKey(recipe.input2.type.getUnlocalizedName())); + if(recipe.solidInput != null) label.add("-" + recipe.solidInput.extractForCyclingDisplay(20).getDisplayName()); + label.add(EnumChatFormatting.RED + "Click to change!"); + this.drawCustomInfoStat(x, y, guiLeft + 62, guiTop + 22, 12, 12, x, y, label); + } mixer.tanks[0].renderTankInfo(this, x, y, guiLeft + 43, guiTop + 23, 7, 52); mixer.tanks[1].renderTankInfo(this, x, y, guiLeft + 52, guiTop + 23, 7, 52); mixer.tanks[2].renderTankInfo(this, x, y, guiLeft + 117, guiTop + 23, 16, 52); } + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 62 <= x && guiLeft + 62 + 12 > x && guiTop + 22 < y && guiTop + 22 + 12 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("toggle", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(data, mixer.xCoord, mixer.yCoord, mixer.zCoord)); + } + } + @Override protected void drawGuiContainerForegroundLayer( int i, int j) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java index 8d9bda1d3..85be6afb7 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java +++ b/src/main/java/com/hbm/inventory/gui/GUIRBMKConsole.java @@ -3,6 +3,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import org.apache.commons.lang3.math.NumberUtils; import org.lwjgl.input.Keyboard; @@ -96,7 +97,7 @@ public class GUIRBMKConsole extends GuiScreen { for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j++) { int id = i * 2 + j + 1; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6 + 40 * j, guiTop + 8 + 21 * i, 18, 18, mouseX, mouseY, new String[]{ EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.console." + console.screens[id - 1].type.name().toLowerCase(), id) } ); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 6 + 40 * j, guiTop + 8 + 21 * i, 18, 18, mouseX, mouseY, new String[]{ EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.console." + console.screens[id - 1].type.name().toLowerCase(Locale.US), id) } ); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 24 + 40 * j, guiTop + 8 + 21 * i, 18, 18, mouseX, mouseY, new String[]{ I18nUtil.resolveKey("rbmk.console.assign", id) } ); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUISatDock.java b/src/main/java/com/hbm/inventory/gui/GUISatDock.java index 3276564df..369530b2f 100644 --- a/src/main/java/com/hbm/inventory/gui/GUISatDock.java +++ b/src/main/java/com/hbm/inventory/gui/GUISatDock.java @@ -1,24 +1,22 @@ package com.hbm.inventory.gui; -import org.lwjgl.opengl.GL11; - import com.hbm.inventory.container.ContainerSatDock; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineSatDock; - import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; public class GUISatDock extends GuiInfoContainer { - public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); - private TileEntityMachineSatDock diFurnace; + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); + private final TileEntityMachineSatDock tileSatelliteDock; - public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tedf) { - super(new ContainerSatDock(invPlayer, tedf)); - diFurnace = tedf; + public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) { + super(new ContainerSatDock(invPlayer, tesd)); + tileSatelliteDock = tesd; this.xSize = 176; this.ySize = 168; @@ -36,10 +34,10 @@ public class GUISatDock extends GuiInfoContainer { @Override protected void drawGuiContainerForegroundLayer(int i, int j) { - String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); + String name = this.tileSatelliteDock.hasCustomInventoryName() ? this.tileSatelliteDock.getInventoryName() : I18n.format(this.tileSatelliteDock.getInventoryName()); - this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); - this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); + this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040); + this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0x404040); } @Override diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java index 24a00b973..7a35749db 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenFluid.java @@ -2,6 +2,7 @@ package com.hbm.inventory.gui; import java.awt.Color; import java.util.Arrays; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -166,10 +167,10 @@ public class GUIScreenFluid extends GuiScreen { this.searchArray = new FluidType[9]; int next = 0; - String subs = this.search.getText().toLowerCase(); + String subs = this.search.getText().toLowerCase(Locale.US); for(FluidType type : Fluids.getInNiceOrder()) { - String name = I18nUtil.resolveKey(type.getUnlocalizedName()).toLowerCase(); + String name = I18nUtil.resolveKey(type.getUnlocalizedName()).toLowerCase(Locale.US); if(name.contains(subs) && !type.hasNoID()) { this.searchArray[next] = type; diff --git a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java index 6872d9f9a..4d09369be 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java +++ b/src/main/java/com/hbm/inventory/gui/GUIScreenTemplateFolder.java @@ -3,6 +3,7 @@ package com.hbm.inventory.gui; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; @@ -122,7 +123,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { return; } - sub = sub.toLowerCase(); + sub = sub.toLowerCase(Locale.US); outer: for(ItemStack stack : allStacks) { @@ -132,7 +133,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { if(o instanceof String) { String text = (String) o; - if(text.toLowerCase().contains(sub)) { + if(text.toLowerCase(Locale.US).contains(sub)) { stacks.add(stack); continue outer; } @@ -142,7 +143,7 @@ public class GUIScreenTemplateFolder extends GuiScreen { if(stack.getItem() == ModItems.fluid_identifier) { FluidType fluid = Fluids.fromID(stack.getItemDamage()); - if(I18nUtil.resolveKey(fluid.getUnlocalizedName()).toLowerCase().contains(sub)) { + if(I18nUtil.resolveKey(fluid.getUnlocalizedName()).toLowerCase(Locale.US).contains(sub)) { stacks.add(stack); } } diff --git a/src/main/java/com/hbm/inventory/gui/GUIWatz.java b/src/main/java/com/hbm/inventory/gui/GUIWatz.java index db0cbc54b..5153b1032 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIWatz.java +++ b/src/main/java/com/hbm/inventory/gui/GUIWatz.java @@ -4,11 +4,18 @@ import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerWatz; import com.hbm.lib.RefStrings; +import com.hbm.packet.NBTControlPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.util.GaugeUtil; +import com.hbm.render.util.GaugeUtil.Gauge; import com.hbm.tileentity.machine.TileEntityWatz; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; public class GUIWatz extends GuiInfoContainer { @@ -40,16 +47,31 @@ public class GUIWatz extends GuiInfoContainer { protected void drawGuiContainerForegroundLayer(int i, int j) { this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 93, 4210752); - String flux = "" + ((int)(watz.fluxDisplay * 10)) / 10.0D; - this.fontRendererObj.drawString(flux, 159 - this.fontRendererObj.getStringWidth(flux), 105, 0x00ff00); + double scale = 1.25; + String flux = String.format("%,.1f", watz.fluxDisplay); + GL11.glScaled(1 / scale, 1 / scale, 1); + this.fontRendererObj.drawString(flux, (int) (161 * scale - this.fontRendererObj.getStringWidth(flux)), (int)(107 * scale), 0x00ff00); + GL11.glScaled(scale, scale, 1); + } + + @Override + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 142 <= x && guiLeft + 142 + 18 > x && guiTop + 70 < y && guiTop + 70 + 18 >= y) { + NBTTagCompound control = new NBTTagCompound(); + control.setBoolean("lock", true); + PacketDispatcher.wrapper.sendToServer(new NBTControlPacket(control, watz.xCoord, watz.yCoord, watz.zCoord)); + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1F)); + } } @Override protected void drawGuiContainerBackgroundLayer(float interp, int x, int y) { Minecraft.getMinecraft().getTextureManager().bindTexture(texture); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - //float col = (float) (Math.sin(System.currentTimeMillis() / 500D) * 0.5 + 0.5); - //GL11.glColor4f(1.0F, col, col, 1.0F); + float col = MathHelper.clamp_float(1 - (float) Math.log(watz.heat / 100_000D + 1) * 0.4F, 0F, 1F); + GL11.glColor4f(1.0F, col, col, 1.0F); drawTexturedModalRect(guiLeft, guiTop, 0, 0, 131, 122); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -59,6 +81,11 @@ public class GUIWatz extends GuiInfoContainer { drawTexturedModalRect(guiLeft + 105, guiTop + 96, 185, 26, 30, 26); drawTexturedModalRect(guiLeft + 9, guiTop + 96, 184, 0, 26, 26); + if(watz.isOn) drawTexturedModalRect(guiLeft + 147, guiTop + 8, 176, 0, 8, 8); + if(watz.isLocked) drawTexturedModalRect(guiLeft + 142, guiTop + 70, 210, 0, 18, 18); + + GaugeUtil.renderGauge(Gauge.ROUND_SMALL, guiLeft + 13, guiTop + 100, this.zLevel, 1 - col); + watz.tanks[0].renderTank(guiLeft + 143, guiTop + 69, this.zLevel, 4, 43); watz.tanks[1].renderTank(guiLeft + 149, guiTop + 69, this.zLevel, 4, 43); watz.tanks[2].renderTank(guiLeft + 155, guiTop + 69, this.zLevel, 4, 43); diff --git a/src/main/java/com/hbm/inventory/material/MatDistribution.java b/src/main/java/com/hbm/inventory/material/MatDistribution.java index 71116ec6c..11a636399 100644 --- a/src/main/java/com/hbm/inventory/material/MatDistribution.java +++ b/src/main/java/com/hbm/inventory/material/MatDistribution.java @@ -69,7 +69,7 @@ public class MatDistribution extends SerializableRecipe { registerOre(OreDictManager.AL.ore(), MAT_ALUMINIUM, INGOT.q(2), MAT_STONE, QUART.q(1)); } - registerOre(OreDictManager.COAL.ore(), MAT_COAL, GEM.q(4), MAT_STONE, QUART.q(1)); + registerOre(OreDictManager.COAL.ore(), MAT_CARBON, GEM.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.GOLD.ore(), MAT_GOLD, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.U.ore(), MAT_URANIUM, INGOT.q(2), MAT_LEAD, NUGGET.q(3), MAT_STONE, QUART.q(1)); registerOre(OreDictManager.TH232.ore(), MAT_THORIUM, INGOT.q(2), MAT_URANIUM, NUGGET.q(3), MAT_STONE, QUART.q(1)); @@ -84,6 +84,7 @@ public class MatDistribution extends SerializableRecipe { registerEntry(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.LIMESTONE), MAT_FLUX, DUST.q(10)); registerEntry(ModItems.powder_flux, MAT_FLUX, DUST.q(1)); + registerEntry(new ItemStack(Items.coal, 1, 1), MAT_CARBON, NUGGET.q(3)); } public static void registerEntry(Object key, Object... matDef) { diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index 665a65372..58ccaad64 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -99,7 +99,7 @@ public class Mats { public static final NTMMaterial MAT_TUNGSTEN = makeSmeltable(7400, W, 0x868686, 0x000000, 0x977474).setShapes(WIRE, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ALUMINIUM = makeSmeltable(1300, AL, 0xFFFFFF, 0x344550, 0xD0B8EB).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_LEAD = makeSmeltable(8200, PB, 0xA6A6B2, 0x03030F, 0x646470).setShapes(NUGGET, INGOT, DUST, PLATE, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, df("Bismuth"), 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_BISMUTH = makeSmeltable(8300, BI, 0xB200FF).setShapes(NUGGET, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_ARSENIC = makeSmeltable(3300, AS, 0x6CBABA, 0x242525, 0x558080).setShapes(NUGGET, INGOT); public static final NTMMaterial MAT_TANTALIUM = makeSmeltable(7300, TA, 0xFFFFFF, 0x1D1D36, 0xA89B74).setShapes(NUGGET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_NIOBIUM = makeSmeltable(4100, NB, 0xB76EC9, 0x2F2D42, 0xD576B1).setShapes(NUGGET, DUSTTINY, INGOT, DUST, BLOCK); @@ -107,6 +107,7 @@ public class Mats { public static final NTMMaterial MAT_COBALT = makeSmeltable(2700, CO, 0xC2D1EE, 0x353554, 0x8F72AE).setShapes(NUGGET, DUSTTINY, BILLET, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_BORON = makeSmeltable(500, B, 0xBDC8D2, 0x29343E, 0xAD72AE).setShapes(DUSTTINY, INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CADMIUM = makeSmeltable(4800, CD, 0xFFFADE, 0x350000, 0xA85600).setShapes(INGOT, DUST); + public static final NTMMaterial MAT_OSMIRIDIUM = makeSmeltable(7699, OSMIRIDIUM, 0xDBE3EF, 0x7891BE, 0xACBDD9).setShapes(NUGGET, INGOT, CASTPLATE); //Alloys public static final NTMMaterial MAT_STEEL = makeSmeltable(_AS + 0, STEEL, 0xAFAFAF, 0x0F0F0F, 0x4A4A4A).setShapes(DUSTTINY, INGOT, DUST, PLATE, CASTPLATE, BLOCK); @@ -114,15 +115,16 @@ public class Mats { public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setShapes(WIRE, INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x4DA3AF, 0x00000C, 0x4DA3AF).setShapes(INGOT, DUST, BLOCK); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setShapes(INGOT, DUST, BLOCK); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setShapes(INGOT); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setShapes(INGOT, DUST, CASTPLATE); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setShapes(INGOT, DUST, BLOCK); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setShapes(INGOT, DUST, PLATE, CASTPLATE, BLOCK); public static final NTMMaterial MAT_FLUX = makeAdditive(_AS + 10, df("Flux"), 0xF1E0BB, 0x6F6256, 0xDECCAD).setShapes(DUST); public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setShapes(BLOCK); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setShapes(INGOT, DUST, CASTPLATE, BLOCK); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setShapes(INGOT, CASTPLATE); + public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).setShapes(INGOT); @Deprecated public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } @Deprecated public static NTMMaterial makeAdditive(int id, DictFrame dict, int color) { return makeAdditive(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/material/NTMMaterial.java b/src/main/java/com/hbm/inventory/material/NTMMaterial.java index 35940e7b2..0f953871b 100644 --- a/src/main/java/com/hbm/inventory/material/NTMMaterial.java +++ b/src/main/java/com/hbm/inventory/material/NTMMaterial.java @@ -1,6 +1,7 @@ package com.hbm.inventory.material; import java.util.HashSet; +import java.util.Locale; import java.util.Set; import com.hbm.inventory.OreDictManager.DictFrame; @@ -45,7 +46,7 @@ public class NTMMaterial { } public String getUnlocalizedName() { - return "hbmmat." + this.names[0].toLowerCase(); + return "hbmmat." + this.names[0].toLowerCase(Locale.US); } public NTMMaterial setConversion(NTMMaterial mat, int in, int out) { diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index b3e31dae2..de0d35584 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -1,18 +1,5 @@ package com.hbm.inventory.recipes; -import java.io.File; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -21,7 +8,6 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.inventory.OreDictManager; -import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -33,7 +19,6 @@ import com.hbm.items.machine.ItemDrillbit.EnumDrillType; import com.hbm.items.machine.ItemPistons.EnumPistonType; import com.hbm.items.weapon.ItemAmmoHIMARS; import com.hbm.main.MainRegistry; - import cpw.mods.fml.common.Loader; import net.minecraft.block.Block; import net.minecraft.init.Blocks; @@ -42,6 +27,15 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.util.*; +import java.util.Map.Entry; + +import static com.hbm.inventory.OreDictManager.*; + public class AssemblerRecipes { public static File config; @@ -285,8 +279,9 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_well, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 20), new ComparableStack(ModBlocks.steel_beam, 8), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.pipes_steel, 3), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.wire_red_copper, 6), },250); makeRecipe(new ComparableStack(ModBlocks.machine_pumpjack, 1), new AStack[] {new ComparableStack(ModBlocks.steel_scaffold, 8), new OreDictStack(STEEL.block(), 8), new ComparableStack(ModItems.pipes_steel, 4), new ComparableStack(ModItems.tank_steel, 4), new OreDictStack(STEEL.ingot(), 24), new OreDictStack(STEEL.plate(), 16), new OreDictStack(AL.plate(), 6), new ComparableStack(ModItems.drill_titanium, 1), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_red_copper, 8), },400); makeRecipe(new ComparableStack(ModBlocks.machine_flare, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 12), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 4), new ComparableStack(ModItems.tank_steel, 1), new ComparableStack(ModBlocks.deco_pipe_quad, 8), new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(ModItems.thermo_element, 3), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_coker, 1), new AStack[] {new OreDictStack(STEEL.plate(), 24), new OreDictStack(IRON.ingot(), 12), new OreDictStack(CU.plate528(), 8), new OreDictStack(RUBBER.ingot(), 4), new ComparableStack(ModItems.tank_steel, 2), new ComparableStack(ModBlocks.steel_grate, 4) },200); makeRecipe(new ComparableStack(ModBlocks.machine_refinery, 1), new AStack[] {new OreDictStack(STEEL.plate528(), 16), new OreDictStack(CU.plate(), 16), new ComparableStack(ModItems.hull_big_steel, 6), new ComparableStack(ModItems.pipes_steel, 2), new ComparableStack(ModItems.plate_polymer, 8), new ComparableStack(ModItems.circuit_red_copper, 1) },350); - makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new ComparableStack(ModItems.canister_full, 1, Fluids.LUBRICANT.getID()), },160); + makeRecipe(new ComparableStack(ModBlocks.machine_epress, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.plate_polymer, 4), new ComparableStack(ModItems.bolt_tungsten, 4), new ComparableStack(ModItems.coil_copper, 2), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.circuit_copper, 1), new OreDictStack(Fluids.LUBRICANT.getDict(1000)), },160); makeRecipe(new ComparableStack(ModBlocks.machine_chemplant, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(CU.plate528(), 6), new ComparableStack(ModItems.tank_steel, 4), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.coil_tungsten, 3), new ComparableStack(ModItems.circuit_copper, 2), new ComparableStack(ModItems.circuit_red_copper, 1), new ComparableStack(ModItems.plate_polymer, 8), },200); makeRecipe(new ComparableStack(ModBlocks.machine_crystallizer, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(DESH.ingot(), 4), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.blades_advanced_alloy, 2), new OreDictStack(STEEL.ingot(), 16), new OreDictStack(TI.plate(), 16), new ComparableStack(Blocks.glass, 4), new ComparableStack(ModItems.circuit_gold, 1), },400); makeRecipe(new ComparableStack(ModBlocks.machine_fluidtank, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.hull_big_steel, 4), new OreDictStack(ANY_TAR.any(), 4), },150); @@ -298,18 +293,13 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_turbinegas, 1), new AStack[] {new ComparableStack(ModItems.hull_big_steel, 4), new ComparableStack(ModItems.hull_small_steel, 6), new ComparableStack(ModItems.generator_steel, 2), new ComparableStack(ModItems.bolt_compound, 4), new ComparableStack(ModBlocks.steel_scaffold, 8), new ComparableStack(ModBlocks.deco_pipe_quad, 4), new ComparableStack(ModItems.turbine_tungsten, 3), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.ingot_rubber, 4), new ComparableStack(ModItems.circuit_red_copper, 3)}, 600); makeRecipe(new ComparableStack(ModBlocks.machine_teleporter, 1), new AStack[] {new OreDictStack(TI.ingot(), 8), new OreDictStack(ALLOY.plate528(), 12), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.entanglement_kit, 1), new ComparableStack(ModBlocks.machine_battery, 1) },300); makeRecipe(new ComparableStack(ModBlocks.machine_schrabidium_transmutator, 1), new AStack[] {new OreDictStack(MAGTUNG.ingot(), 1), new OreDictStack(TI.ingot(), 24), new OreDictStack(ALLOY.plate(), 18), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModItems.plate_desh, 6), new OreDictStack(RUBBER.ingot(), 8), new ComparableStack(ModBlocks.machine_battery, 5), new ComparableStack(ModItems.circuit_gold, 5), },500); - makeRecipe(new ComparableStack(ModBlocks.machine_combine_factory, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 8), new OreDictStack(ANY_PLASTIC.ingot(), 6), new OreDictStack(TI.plate(), 4), new OreDictStack(CU.plate(), 6), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.coil_advanced_alloy, 8), new ComparableStack(ModItems.coil_tungsten, 4), new OreDictStack(MAGTUNG.ingot(), 12), },150); - makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.coil_advanced_alloy, 5), },150); + makeRecipe(new ComparableStack(ModBlocks.fusion_conductor, 1), new AStack[] {new ComparableStack(ModItems.coil_advanced_alloy, 5), }, 100); makeRecipe(new ComparableStack(ModBlocks.fusion_center, 1), new AStack[] {new OreDictStack(ANY_HARDPLASTIC.ingot(), 4), new OreDictStack(STEEL.plate528(), 6), new ComparableStack(ModItems.wire_advanced_alloy, 24), },200); makeRecipe(new ComparableStack(ModBlocks.fusion_motor, 1), new AStack[] {new OreDictStack(TI.ingot(), 4), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.motor, 4), },250); makeRecipe(new ComparableStack(ModBlocks.fusion_heater, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(STEEL.plate528(), 2), new OreDictStack(OreDictManager.getReflector(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.magnetron, 1), new ComparableStack(ModItems.wire_advanced_alloy, 4), },150); - makeRecipe(new ComparableStack(ModBlocks.watz_element, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(ALLOY.plate(), 4), new ComparableStack(ModItems.rod_empty, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 2), new ComparableStack(ModItems.wire_advanced_alloy, 4), },200); - makeRecipe(new ComparableStack(ModBlocks.watz_control, 1), new AStack[] {new OreDictStack(W.ingot(), 4), new OreDictStack(ALLOY.ingot(), 4), new OreDictStack(PB.ingot(), 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 4), new ComparableStack(ModItems.wire_advanced_alloy, 2), },250); - makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new OreDictStack(KNO.dust(), 4), },300); - makeRecipe(new ComparableStack(ModBlocks.watz_end, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(PB.ingot(), 2), new OreDictStack(STEEL.ingot(), 3), },150); - makeRecipe(new ComparableStack(ModBlocks.watz_hatch, 1), new AStack[] {new ComparableStack(ModBlocks.reinforced_brick, 1), new OreDictStack(TI.plate(), 6), },200); - makeRecipe(new ComparableStack(ModBlocks.watz_conductor, 1), new AStack[] {new OreDictStack(W.ingot(), 2), new OreDictStack(PB.ingot(), 2), new OreDictStack(STEEL.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 6), new ComparableStack(ModItems.wire_magnetized_tungsten, 2), new ComparableStack(ModItems.fuse, 4), },250); - makeRecipe(new ComparableStack(ModBlocks.watz_core, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.circuit_gold, 5), new ComparableStack(ModItems.circuit_schrabidium, 2), new ComparableStack(ModItems.wire_magnetized_tungsten, 12), },350); + makeRecipe(new ComparableStack(ModBlocks.watz_element, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(ZR.ingot(), 2), new OreDictStack(BIGMT.ingot(), 2), new OreDictStack(ANY_HARDPLASTIC.ingot(), 4)},200); + makeRecipe(new ComparableStack(ModBlocks.watz_cooler, 3), new AStack[] {new OreDictStack(STEEL.plateCast(), 2), new OreDictStack(CU.plateCast(), 4), new OreDictStack(RUBBER.ingot(), 2), }, 200); + makeRecipe(new ComparableStack(ModBlocks.watz_end, 3), new AStack[] {new OreDictStack(ANY_RESISTANTALLOY.plateCast()), new OreDictStack(B.ingot(), 3), new OreDictStack(STEEL.plate(), 9), }, 100); makeRecipe(new ComparableStack(ModBlocks.fwatz_hatch, 1), new AStack[] {new OreDictStack(W.ingot(), 6), new OreDictStack(CMB.plate(), 4), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_conductor, 1), new AStack[] {new OreDictStack(CMB.plate(), 2), new ComparableStack(ModItems.coil_magnetized_tungsten, 5), },250); makeRecipe(new ComparableStack(ModBlocks.fwatz_computer, 1), new AStack[] {new ComparableStack(ModBlocks.block_meteor, 1), new ComparableStack(ModItems.wire_magnetized_tungsten, 16), new OreDictStack(DIAMOND.dust(), 6), new OreDictStack(MAGTUNG.dust(), 6), new OreDictStack(DESH.dust(), 4), },300); @@ -539,6 +529,26 @@ public class AssemblerRecipes { new OreDictStack(DIAMOND.dust(), 32) }, 100); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), new AStack[] { + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 20), + new OreDictStack(DESH.ingot(), 12), + new OreDictStack(RUBBER.ingot(), 8) + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.TCALLOY.ordinal()), + new OreDictStack(DIAMOND.dust(), 48) + }, 100); + + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), new AStack[] { + new OreDictStack(FERRO.ingot(), 24), + new OreDictStack(ANY_RESISTANTALLOY.ingot(), 12), + new OreDictStack(BI.ingot(), 4), + }, 200); + makeRecipe(new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO_DIAMOND.ordinal()), new AStack[] { + new ComparableStack(ModItems.drillbit, 1, EnumDrillType.FERRO.ordinal()), + new OreDictStack(DIAMOND.dust(), 56) + }, 100); + makeRecipe(new ComparableStack(ModBlocks.machine_large_turbine, 1), new AStack[] { new OreDictStack(STEEL.plate528(), 12), new OreDictStack(RUBBER.ingot(), 4), @@ -856,6 +866,14 @@ public class AssemblerRecipes { new OreDictStack(OreDictManager.getReflector(), 12), new ComparableStack(ModItems.circuit_copper, 12) }, 100); + makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.SMALL_LAVA), new AStack[] { + new OreDictStack(STEEL.plate(), 24), + new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), + new ComparableStack(ModItems.rocket_fuel, 32), + new ComparableStack(ModItems.ball_tatb, 4), + new OreDictStack(VOLCANIC.gem(), 1), + new ComparableStack(ModItems.circuit_copper, 6) + }, 100); makeRecipe(new ComparableStack(ModItems.ammo_himars, 1, ItemAmmoHIMARS.LARGE), new AStack[] { new OreDictStack(STEEL.plate(), 24), new OreDictStack(ANY_HARDPLASTIC.ingot(), 12), @@ -963,7 +981,7 @@ public class AssemblerRecipes { new ComparableStack(ModItems.sphere_steel, 1), new ComparableStack(ModItems.pipes_steel, 1), new ComparableStack(ModItems.motor_desh, 3), - new ComparableStack(ModItems.circuit_gold, 1) + new OreDictStack(KEY_CIRCUIT_BISMUTH, 1) }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_catalytic_reformer, 1), new AStack[] { new OreDictStack(STEEL.plateCast(), 12), @@ -976,6 +994,23 @@ public class AssemblerRecipes { new ComparableStack(ModItems.circuit_red_copper, 3) }, 200); + makeRecipe(new ComparableStack(ModBlocks.machine_compressor, 1), new AStack[] { + new OreDictStack(STEEL.plateCast(), 8), + new OreDictStack(CU.plate528(), 4), + new ComparableStack(ModItems.hull_big_steel, 2), + new ComparableStack(ModItems.motor, 3), + new ComparableStack(ModItems.circuit_red_copper, 1) + }, 200); + + makeRecipe(new ComparableStack(ModItems.euphemium_capacitor, 1), new AStack[] + { + new OreDictStack(NB.ingot(), 4), + new ComparableStack(ModItems.redcoil_capacitor, 1), + new ComparableStack(ModItems.ingot_euphemium, 4), + new ComparableStack(ModItems.circuit_tantalium, 6), + new ComparableStack(ModItems.powder_nitan_mix, 18), + }, 600); + makeRecipe(new ComparableStack(ModBlocks.block_cap_nuka, 1), new AStack[] { new ComparableStack(ModItems.cap_nuka, 128) }, 10); makeRecipe(new ComparableStack(ModBlocks.block_cap_quantum, 1), new AStack[] { new ComparableStack(ModItems.cap_quantum, 128) }, 10); makeRecipe(new ComparableStack(ModBlocks.block_cap_sparkle, 1), new AStack[] { new ComparableStack(ModItems.cap_sparkle, 128) }, 10); @@ -1155,6 +1190,15 @@ public class AssemblerRecipes { new ComparableStack(ModItems.bolt_dura_steel, 12), new OreDictStack(KEY_YELLOW, 4) }, 1200); + + makeRecipe(new ComparableStack(ModBlocks.sliding_blast_door, 1), new AStack[] { + new OreDictStack(STEEL.plate(), 16), + new OreDictStack(W.ingot(), 8), + new ComparableStack(ModBlocks.reinforced_glass, 4), + new ComparableStack(ModItems.plate_polymer, 4), + new ComparableStack(ModItems.bolt_dura_steel, 8), + new ComparableStack(ModItems.motor, 2) + }, 200); if(Loader.isModLoaded("Mekanism")) { diff --git a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java index d36b1ad1e..992ed2e3e 100644 --- a/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CentrifugeRecipes.java @@ -12,6 +12,7 @@ import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; import com.hbm.handler.imc.IMCCentrifuge; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon; import com.hbm.inventory.RecipesCommon.AStack; @@ -19,6 +20,7 @@ import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; +import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.items.special.ItemByproduct.EnumByproduct; import com.hbm.main.MainRegistry; @@ -133,6 +135,73 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.nugget_pu238, 1), new ItemStack(ModItems.nugget_technetium, 1), new ItemStack(ModItems.nuclear_waste_tiny, 6) }); + + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.SCHRABIDIUM)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 15), + new ItemStack(ModItems.nugget_euphemium, 3), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HES)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 17), + new ItemStack(ModItems.nugget_euphemium, 1), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MES)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 12), + new ItemStack(ModItems.nugget_tantalium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LES)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_solinium, 9), + new ItemStack(ModItems.nugget_tantalium, 9), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.HEN)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_pu239, 12), + new ItemStack(ModItems.nugget_technetium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEU)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_pu239, 12), + new ItemStack(ModItems.nugget_bismuth, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.MEP)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_pu241, 12), + new ItemStack(ModItems.nugget_bismuth, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.LEAD)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_lead, 6), + new ItemStack(ModItems.nugget_bismuth, 12), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.BORON)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.powder_coal_tiny, 12), + new ItemStack(ModItems.nugget_co60, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.DU)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_polonium, 12), + new ItemStack(ModItems.nugget_pu238, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + + if(OreDictionary.doesOreNameExist("nuggetNaquadria")) { + ItemStack nuggetNQR = OreDictionary.getOres("nuggetNaquadria").get(0); + ItemStack copy = nuggetNQR.copy(); + copy.stackSize = 12; + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQD)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + copy, + new ItemStack(ModItems.nugget_euphemium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.watz_pellet_depleted, EnumWatzType.NQR)), new ItemStack[] { + new ItemStack(ModItems.ingot_mud, 1), + new ItemStack(ModItems.nugget_co60, 12), + new ItemStack(ModItems.nugget_euphemium, 6), + new ItemStack(ModItems.nuclear_waste, 2) }); + } recipes.put(new ComparableStack(ModItems.powder_cloud), new ItemStack[] { new ItemStack(ModItems.powder_copper, 1), @@ -140,115 +209,115 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.dust, 1), new ItemStack(ModItems.dust, 1) }); - recipes.put(new OreDictStack("oreCoal"), new ItemStack[] { + recipes.put(new OreDictStack(COAL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), new ItemStack(ModItems.powder_coal, 2), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreLignite"), new ItemStack[] { + recipes.put(new OreDictStack(LIGNITE.ore()), new ItemStack[] { new ItemStack(ModItems.powder_lignite, 2), new ItemStack(ModItems.powder_lignite, 2), new ItemStack(ModItems.powder_lignite, 2), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreIron"), new ItemStack[] { + recipes.put(new OreDictStack(IRON.ore()), new ItemStack[] { new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreGold"), new ItemStack[] { + recipes.put(new OreDictStack(GOLD.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_gold, 2) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(ModItems.powder_gold, 1), lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreDiamond"), new ItemStack[] { + recipes.put(new OreDictStack(DIAMOND.ore()), new ItemStack[] { new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(ModItems.powder_diamond, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreEmerald"), new ItemStack[] { + recipes.put(new OreDictStack(EMERALD.ore()), new ItemStack[] { new ItemStack(ModItems.powder_emerald, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreTitanium"), new ItemStack[] { + recipes.put(new OreDictStack(TI.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), lbs ? new ItemStack(ModItems.powder_titanium, 2) : new ItemStack(ModItems.powder_titanium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreQuartz"), new ItemStack[] { + recipes.put(new OreDictStack(NETHERQUARTZ.ore()), new ItemStack[] { new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_quartz, 1), new ItemStack(ModItems.powder_lithium_tiny, 1), new ItemStack(Blocks.netherrack, 1) }); - recipes.put(new OreDictStack("oreTungsten"), new ItemStack[] { + recipes.put(new OreDictStack(W.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_tungsten, 2) : new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_tungsten, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreCopper"), new ItemStack[] { + recipes.put(new OreDictStack(CU.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_copper, 2) : new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_copper, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreAluminum"), new ItemStack[] { + recipes.put(new OreDictStack(AL.ore()), new ItemStack[] { new ItemStack(ModItems.powder_aluminium, 1), new ItemStack(ModItems.powder_aluminium, 1), new ItemStack(ModItems.powder_iron, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreLead"), new ItemStack[] { + recipes.put(new OreDictStack(PB.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_lead, 2) : new ItemStack(ModItems.powder_lead, 1), lbs ? new ItemStack(ModItems.nugget_bismuth, 1) : new ItemStack(ModItems.powder_lead, 1), new ItemStack(ModItems.powder_gold, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreSchrabidium"), new ItemStack[] { + recipes.put(new OreDictStack(SA326.ore()), new ItemStack[] { new ItemStack(ModItems.powder_schrabidium, 1), new ItemStack(ModItems.powder_schrabidium, 1), new ItemStack(ModItems.nugget_solinium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new ComparableStack(ModBlocks.ore_rare), new ItemStack[] { + recipes.put(new OreDictStack("oreRareEarth"), new ItemStack[] { new ItemStack(ModItems.powder_desh_mix, 1), new ItemStack(ModItems.nugget_zirconium, 1), new ItemStack(ModItems.nugget_zirconium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("orePlutonium"), new ItemStack[] { + recipes.put(new OreDictStack(PU.ore()), new ItemStack[] { new ItemStack(ModItems.powder_plutonium, 1), new ItemStack(ModItems.powder_plutonium, 1), new ItemStack(ModItems.nugget_polonium, 3), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreUranium"), new ItemStack[] { + recipes.put(new OreDictStack(U.ore()), new ItemStack[] { lbs ? new ItemStack(ModItems.powder_uranium, 2) : new ItemStack(ModItems.powder_uranium, 1), lbs ? new ItemStack(ModItems.nugget_technetium, 2) : new ItemStack(ModItems.powder_uranium, 1), lbs ? new ItemStack(ModItems.nugget_ra226, 2) : new ItemStack(ModItems.nugget_ra226, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreThorium"), new ItemStack[] { + recipes.put(new OreDictStack(TH232.ore()), new ItemStack[] { new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_thorium, 1), new ItemStack(ModItems.powder_uranium, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreBeryllium"), new ItemStack[] { + recipes.put(new OreDictStack(BE.ore()), new ItemStack[] { new ItemStack(ModItems.powder_beryllium, 1), new ItemStack(ModItems.powder_beryllium, 1), new ItemStack(ModItems.powder_emerald, 1), new ItemStack(Blocks.gravel, 1) }); - recipes.put(new OreDictStack("oreRedstone"), new ItemStack[] { + recipes.put(new OreDictStack(REDSTONE.ore()), new ItemStack[] { new ItemStack(Items.redstone, 3), new ItemStack(Items.redstone, 3), lbs ? new ItemStack(ModItems.ingot_mercury, 3) : new ItemStack(ModItems.ingot_mercury, 1), @@ -260,7 +329,7 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.powder_niobium, 2), new ItemStack(Blocks.end_stone, 1) }); - recipes.put(new OreDictStack("oreLapis"), new ItemStack[] { + recipes.put(new OreDictStack(LAPIS.ore()), new ItemStack[] { new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_lapis, 3), new ItemStack(ModItems.powder_cobalt_tiny, 1), @@ -284,7 +353,7 @@ public class CentrifugeRecipes extends SerializableRecipe { new ItemStack(ModItems.ingot_phosphorus), new ItemStack(Blocks.netherrack) }); - recipes.put(new OreDictStack("oreCobalt"), new ItemStack[] { + recipes.put(new OreDictStack(CO.ore()), new ItemStack[] { new ItemStack(ModItems.powder_cobalt, 2), new ItemStack(ModItems.powder_iron, 1), new ItemStack(ModItems.powder_copper, 1), diff --git a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java index 979ff7f1e..62ba87dfa 100644 --- a/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ChemplantRecipes.java @@ -91,22 +91,22 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.wire_schrabidium, 4), new OreDictStack(DIAMOND.dust()), new OreDictStack(DESH.ingot())) - .inputFluids(new FluidStack(Fluids.ACID, 800), new FluidStack(Fluids.MERCURY, 200)) + .inputFluids(new FluidStack(Fluids.ACID, 800, GeneralConfig.enable528 ? 1 : 0), new FluidStack(Fluids.MERCURY, 200)) .outputItems(new ItemStack(ModItems.circuit_schrabidium))); recipes.add(new ChemRecipe(43, "POLYMER", 100) .inputItems( new OreDictStack(COAL.dust(), 2), new OreDictStack(F.dust())) - .inputFluids(new FluidStack(Fluids.PETROLEUM, 500)) + .inputFluids(new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_polymer))); recipes.add(new ChemRecipe(81, "BAKELITE", 100) .inputFluids( - new FluidStack(Fluids.AROMATICS, 500), - new FluidStack(Fluids.PETROLEUM, 500)) + new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0), + new FluidStack(Fluids.PETROLEUM, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_bakelite))); recipes.add(new ChemRecipe(82, "RUBBER", 100) .inputItems(new OreDictStack(S.dust())) - .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500)) + .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_rubber))); /*recipes.add(new ChemRecipe(94, "PET", 100) .inputItems(new OreDictStack(AL.dust())) @@ -114,16 +114,26 @@ public class ChemplantRecipes extends SerializableRecipe { new FluidStack(Fluids.XYLENE, 500), new FluidStack(Fluids.OXYGEN, 100)) .outputItems(new ItemStack(ModItems.ingot_pet)));*/ + + //Laminate Glass going here + recipes.add(new ChemRecipe(97, "LAMINATE", 100) + .inputFluids( + new FluidStack(Fluids.XYLENE, 250), + new FluidStack(Fluids.PHOSGENE, 250)) + .inputItems( + new ComparableStack(com.hbm.blocks.ModBlocks.reinforced_glass), + new ComparableStack(com.hbm.items.ModItems.bolt_tungsten, 4)) + .outputItems(new ItemStack(com.hbm.blocks.ModBlocks.reinforced_laminate))); recipes.add(new ChemRecipe(94, "PC", 100) .inputFluids( - new FluidStack(Fluids.XYLENE, 500), - new FluidStack(Fluids.PHOSGENE, 500)) + new FluidStack(Fluids.XYLENE, 500, GeneralConfig.enable528 ? 2 : 0), + new FluidStack(Fluids.PHOSGENE, 500, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_pc))); recipes.add(new ChemRecipe(96, "PVC", 100) .inputItems(new OreDictStack(CD.dust())) .inputFluids( - new FluidStack(Fluids.UNSATURATEDS, 250), - new FluidStack(Fluids.CHLORINE, 250)) + new FluidStack(Fluids.UNSATURATEDS, 250, GeneralConfig.enable528 ? 2 : 0), + new FluidStack(Fluids.CHLORINE, 250, GeneralConfig.enable528 ? 2 : 0)) .outputItems(new ItemStack(ModItems.ingot_pvc, 2))); recipes.add(new ChemRecipe(89, "DYNAMITE", 50) .inputItems( @@ -133,15 +143,15 @@ public class ChemplantRecipes extends SerializableRecipe { .outputItems(new ItemStack(ModItems.ball_dynamite, 2))); recipes.add(new ChemRecipe(83, "TNT", 150) .inputItems(new OreDictStack(KNO.dust())) - .inputFluids(new FluidStack(Fluids.AROMATICS, 500)) + .inputFluids(new FluidStack(Fluids.AROMATICS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ball_tnt, 4))); recipes.add(new ChemRecipe(95, "TATB", 50) .inputItems(new ComparableStack(ModItems.ball_tnt)) - .inputFluids(new FluidStack(Fluids.SOURGAS, 200), new FluidStack(Fluids.NITRIC_ACID, 10)) + .inputFluids(new FluidStack(Fluids.SOURGAS, 200, 1), new FluidStack(Fluids.NITRIC_ACID, 10)) .outputItems(new ItemStack(ModItems.ball_tatb))); recipes.add(new ChemRecipe(84, "C4", 150) .inputItems(new OreDictStack(KNO.dust())) - .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500)) + .inputFluids(new FluidStack(Fluids.UNSATURATEDS, 500, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.ingot_c4, 4))); //44, formerly deuterium //45, formerly steam @@ -190,13 +200,13 @@ public class ChemplantRecipes extends SerializableRecipe { recipes.add(new ChemRecipe(55, "CONCRETE", 100) .inputItems( new ComparableStack(Blocks.gravel, 8), - new ComparableStack(Blocks.sand, 8)) + new OreDictStack(KEY_SAND, 8)) .inputFluids(new FluidStack(Fluids.WATER, 2000)) .outputItems(new ItemStack(ModBlocks.concrete_smooth, 16))); recipes.add(new ChemRecipe(56, "CONCRETE_ASBESTOS", 100) .inputItems( new ComparableStack(Blocks.gravel, 2), - new ComparableStack(Blocks.sand, 2), + new OreDictStack(KEY_SAND, 2), (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? new OreDictStack(ASBESTOS.ingot(), 1) : new OreDictStack(ASBESTOS.ingot(), 4)) @@ -204,7 +214,7 @@ public class ChemplantRecipes extends SerializableRecipe { .outputItems(new ItemStack(ModBlocks.concrete_asbestos, 16))); recipes.add(new ChemRecipe(79, "DUCRETE", 150) .inputItems( - new ComparableStack(Blocks.sand, 8), + new OreDictStack(KEY_SAND, 8), new OreDictStack(U238.billet(), 2), new ComparableStack(Items.clay_ball, 4)) .inputFluids(new FluidStack(Fluids.WATER, 2000)) @@ -214,7 +224,7 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.solid_fuel, 2), new OreDictStack(KNO.dust()), new OreDictStack(REDSTONE.dust())) - .inputFluids(new FluidStack(Fluids.PETROLEUM, 200)) + .inputFluids(new FluidStack(Fluids.PETROLEUM, 200, GeneralConfig.enable528 ? 1 : 0)) .outputItems(new ItemStack(ModItems.rocket_fuel, 4))); recipes.add(new ChemRecipe(58, "ELECTROLYSIS", 150) .inputFluids(new FluidStack(Fluids.WATER, 8000)) @@ -229,14 +239,11 @@ public class ChemplantRecipes extends SerializableRecipe { .outputFluids(new FluidStack(Fluids.XENON, 50))); recipes.add(new ChemRecipe(61, "SATURN", 60) .inputItems( - new ComparableStack(ModItems.powder_dura_steel), - new OreDictStack(P_RED.dust())) - .inputFluids( - new FluidStack(Fluids.ACID, 100), - (GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleChemsitry) ? - new FluidStack(Fluids.WATER, 200) : - new FluidStack(Fluids.MERCURY, 50)) - .outputItems(new ItemStack(ModItems.ingot_saturnite, 2))); + new OreDictStack(DURA.dust(), 2), + new OreDictStack(CU.dust(), 1), + new OreDictStack(COAL.dust(), 1)) + .inputFluids(new FluidStack(Fluids.SULFURIC_ACID, 100)) + .outputItems(new ItemStack(ModItems.ingot_saturnite, 4))); recipes.add(new ChemRecipe(62, "BALEFIRE", 100) .inputItems(new ComparableStack(ModItems.egg_balefire_shard)) .inputFluids(new FluidStack(Fluids.KEROSENE, 6000)) @@ -345,8 +352,8 @@ public class ChemplantRecipes extends SerializableRecipe { new ComparableStack(ModItems.powder_paleogenite), new OreDictStack(F.dust(), 8), new ComparableStack(ModItems.nugget_bismuth, 4)) - .inputFluids(new FluidStack(Fluids.ACID, 1000)) - .outputFluids(new FluidStack(Fluids.DEATH, 1000))); + .inputFluids(new FluidStack(Fluids.ACID, 1000, 5)) + .outputFluids(new FluidStack(Fluids.DEATH, 1000, GeneralConfig.enable528 ? 5 : 0))); //one bucket of ethanol equals 275_000 TU using the diesel baseline0 //the coal baseline is 400_000 per piece //if we assume a burntime of 1.5 ops (300 ticks) for sugar at 100 TU/t that would equal a total of 30_000 TU @@ -373,6 +380,34 @@ public class ChemplantRecipes extends SerializableRecipe { .inputItems(new OreDictStack(DIAMOND.dust(), 1)) .inputFluids(new FluidStack(Fluids.XPJUICE, 500)) .outputFluids(new FluidStack(Fluids.ENDERJUICE, 100))); + recipes.add(new ChemRecipe(98, "SHELL_CHLORINE", 100) + .inputItems( + new ComparableStack(ModItems.ammo_arty, 1, 0), + new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.CHLORINE, 4000)) + .outputItems(new ItemStack(ModItems.ammo_arty, 1, 9))); + recipes.add(new ChemRecipe(99, "SHELL_PHOSGENE", 100) + .inputItems( + new ComparableStack(ModItems.ammo_arty, 1, 0), + new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.PHOSGENE, 4000)) + .outputItems(new ItemStack(ModItems.ammo_arty, 1, 10))); + recipes.add(new ChemRecipe(100, "SHELL_MUSTARD", 100) + .inputItems( + new ComparableStack(ModItems.ammo_arty, 1, 0), + new OreDictStack(ANY_PLASTIC.ingot(), 1)) + .inputFluids(new FluidStack(Fluids.MUSTARDGAS, 4000)) + .outputItems(new ItemStack(ModItems.ammo_arty, 1, 11))); + recipes.add(new ChemRecipe(101, "CC_CENTRIFUGE", 200) + .inputFluids(new FluidStack(Fluids.CHLOROCALCITE_CLEANED, 500), new FluidStack(Fluids.WATER, 1_000)) + .outputFluids(new FluidStack(Fluids.POTASSIUM_CHLORIDE, 250), new FluidStack(Fluids.CALCIUM_CHLORIDE, 250))); + recipes.add(new ChemRecipe(102, "PC_ELECTROLYSIS", 200) + .inputFluids(new FluidStack(Fluids.POTASSIUM_CHLORIDE, 250)) + .outputItems(new ItemStack(ModItems.dust)) + .outputFluids(new FluidStack(Fluids.CHLORINE, 125))); + recipes.add(new ChemRecipe(103, "CC_ELECTROLYSIS", 200) + .inputFluids(new FluidStack(Fluids.CALCIUM_CHLORIDE, 250)) + .outputFluids(new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.CALCIUM_SOLUTION, 125))); } public static void registerFuelProcessing() { diff --git a/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java new file mode 100644 index 000000000..3696d82d4 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -0,0 +1,153 @@ +package com.hbm.inventory.recipes; + +import static com.hbm.inventory.fluid.Fluids.*; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.items.ItemEnums.EnumCokeType; +import com.hbm.items.machine.ItemFluidIcon; +import com.hbm.util.Tuple.Triplet; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class CokerRecipes extends SerializableRecipe { + + private static HashMap> recipes = new HashMap(); + + @Override + public void registerDefaults() { + + registerAuto(HEAVYOIL, OIL_COKER); + registerAuto(HEAVYOIL_VACUUM, REFORMATE); + registerAuto(COALCREOSOTE, NAPHTHA_COKER); + registerAuto(SMEAR, OIL_COKER); + registerAuto(HEATINGOIL, OIL_COKER); + registerAuto(HEATINGOIL_VACUUM, OIL_COKER); + registerAuto(RECLAIMED, NAPHTHA_COKER); + registerAuto(NAPHTHA, NAPHTHA_COKER); + registerAuto(NAPHTHA_CRACK, NAPHTHA_COKER); + registerAuto(DIESEL, NAPHTHA_COKER); + registerAuto(DIESEL_REFORM, NAPHTHA_COKER); + registerAuto(DIESEL_CRACK, GAS_COKER); + registerAuto(DIESEL_CRACK_REFORM, GAS_COKER); + registerAuto(LIGHTOIL, GAS_COKER); + registerAuto(LIGHTOIL_CRACK, GAS_COKER); + registerAuto(LIGHTOIL_VACUUM, GAS_COKER); + registerAuto(BIOFUEL, GAS_COKER); + registerAuto(AROMATICS, GAS_COKER); + registerAuto(REFORMATE, GAS_COKER); + registerAuto(XYLENE, GAS_COKER); + registerAuto(FISHOIL, MERCURY); + registerAuto(SUNFLOWEROIL, GAS_COKER); + + registerSFAuto(WOODOIL, 340_000L, new ItemStack(Items.coal, 1, 1), GAS_COKER); + + registerRecipe(WATZ, 4_000, new ItemStack(ModItems.ingot_mud, 4), null); + registerRecipe(REDMUD, 1_000, new ItemStack(Items.iron_ingot, 2), new FluidStack(MERCURY, 50)); + registerRecipe(BITUMEN, 16_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_600)); + registerRecipe(LUBRICANT, 12_000, DictFrame.fromOne(ModItems.coke, EnumCokeType.PETROLEUM), new FluidStack(OIL_COKER, 1_200)); + registerRecipe(CALCIUM_SOLUTION, 125, new ItemStack(ModItems.powder_calcium), new FluidStack(SPENTSTEAM, 100)); + } + + private 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) { + long tuFlammable = fluid.hasTrait(FT_Flammable.class) ? fluid.getTrait(FT_Flammable.class).getHeatEnergy() : 0; + long tuCombustible = fluid.hasTrait(FT_Combustible.class) ? fluid.getTrait(FT_Combustible.class).getCombustionEnergy() : 0; + + long tuPerBucket = Math.max(tuFlammable, tuCombustible); + + double penalty = 1;//1.1D; //no penalty + + int mB = (int) (tuPerSF * 1000L * penalty / tuPerBucket); + + if(mB > 10_000) mB -= (mB % 1000); + else if(mB > 1_000) mB -= (mB % 100); + else if(mB > 100) mB -= (mB % 10); + + FluidStack byproduct = type == null ? null : new FluidStack(type, Math.max(10, mB / 10)); + + registerRecipe(fluid, mB, fuel, byproduct); + } + private static void registerRecipe(FluidType type, int quantity, ItemStack output, FluidStack byproduct) { + recipes.put(type, new Triplet(quantity, output, byproduct)); + } + + public static Triplet getOutput(FluidType type) { + return recipes.get(type); + } + + public static HashMap getRecipes() { + + HashMap recipes = new HashMap(); + + for(Entry> entry : CokerRecipes.recipes.entrySet()) { + + FluidType type = entry.getKey(); + int amount = entry.getValue().getX(); + ItemStack out = entry.getValue().getY().copy(); + FluidStack byproduct = entry.getValue().getZ(); + + + if(out != null && byproduct != null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out, ItemFluidIcon.make(byproduct)}); + if(out != null && byproduct == null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {out}); + if(out == null && byproduct != null) recipes.put(ItemFluidIcon.make(type, amount), new ItemStack[] {ItemFluidIcon.make(byproduct)}); + } + + return recipes; + } + + @Override + public String getFileName() { + return "hbmCoker.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + FluidStack in = this.readFluidStack(obj.get("input").getAsJsonArray()); + ItemStack out = obj.has("output") ? this.readItemStack(obj.get("output").getAsJsonArray()) : null; + FluidStack byproduct = obj.has("byproduct") ? this.readFluidStack(obj.get("byproduct").getAsJsonArray()) : null; + recipes.put(in.type, new Triplet(in.fill, out, byproduct)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry> rec = (Entry>) recipe; + FluidStack in = new FluidStack(rec.getKey(), rec.getValue().getX()); + writer.name("input"); + this.writeFluidStack(in, writer); + if(rec.getValue().getY() != null) { + writer.name("output"); + this.writeItemStack(rec.getValue().getY(), writer); + } + if(rec.getValue().getZ() != null) { + writer.name("byproduct"); + this.writeFluidStack(rec.getValue().getZ(), writer); + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java index fa3b7ffaa..f1d5d7658 100644 --- a/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CombinationRecipes.java @@ -9,6 +9,8 @@ import static com.hbm.inventory.OreDictManager.*; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import com.hbm.blocks.BlockEnums.EnumStoneType; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; @@ -40,9 +42,11 @@ public class CombinationRecipes extends SerializableRecipe { recipes.put(LIGNITE.gem(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); recipes.put(LIGNITE.dust(), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 50))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.briquette, EnumBriquetteType.LIGNITE)), new Pair(DictFrame.fromOne(ModItems.coke, EnumCokeType.LIGNITE), new FluidStack(Fluids.COALCREOSOTE, 100))); - + recipes.put(CINNABAR.crystal(), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.MERCURY, 100))); + //recipes.put(CHLOROCALCITE.dust(), new Pair(new ItemStack(ModItems.powder_calcium), new FluidStack(Fluids.CHLORINE, 250))); recipes.put(new ComparableStack(Items.glowstone_dust), new Pair(new ItemStack(ModItems.sulfur), new FluidStack(Fluids.CHLORINE, 50))); + recipes.put(new ComparableStack(DictFrame.fromOne(ModBlocks.stone_resource, EnumStoneType.BAUXITE)), new Pair(new ItemStack(ModItems.ingot_aluminium, 2), new FluidStack(Fluids.REDMUD, 250))); recipes.put(KEY_LOG, new Pair(new ItemStack(Items.coal, 1 ,1), new FluidStack(Fluids.WOODOIL, 250))); recipes.put(KEY_SAPLING, new Pair(null, new FluidStack(Fluids.WOODOIL, 50))); diff --git a/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java new file mode 100644 index 000000000..c1cc077d9 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CompressorRecipes.java @@ -0,0 +1,81 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.util.Tuple.Pair; + +public class CompressorRecipes extends SerializableRecipe { + + public static HashMap, CompressorRecipe> recipes = new HashMap(); + + @Override + public void registerDefaults() { + recipes.put(new Pair(Fluids.STEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.HOTSTEAM, 100))); + recipes.put(new Pair(Fluids.HOTSTEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.SUPERHOTSTEAM, 100))); + recipes.put(new Pair(Fluids.SUPERHOTSTEAM, 0), new CompressorRecipe(1_000, new FluidStack(Fluids.ULTRAHOTSTEAM, 100))); + + recipes.put(new Pair(Fluids.PETROLEUM, 0), new CompressorRecipe(2_000, new FluidStack(Fluids.PETROLEUM, 2_000, 1), 20)); + recipes.put(new Pair(Fluids.PETROLEUM, 1), new CompressorRecipe(2_000, new FluidStack(Fluids.LPG, 1_000, 0), 20)); + } + + public static class CompressorRecipe { + + public FluidStack output; + public int inputAmount; + public int duration; + + public CompressorRecipe(int input, FluidStack output, int duration) { + this.output = output; + this.inputAmount = input; + this.duration = duration; + } + + public CompressorRecipe(int input, FluidStack output) { + this(input, output, 100); + } + } + + @Override + public String getFileName() { + return "hbmCompressor.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + FluidStack input = this.readFluidStack(obj.get("input").getAsJsonArray()); + FluidStack output = this.readFluidStack(obj.get("output").getAsJsonArray()); + + recipes.put(new Pair(input.type, input.pressure), new CompressorRecipe(input.fill, output)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry, CompressorRecipe> entry = (Entry) recipe; + + writer.name("input"); + this.writeFluidStack(new FluidStack(entry.getKey().getKey(), entry.getValue().inputAmount, entry.getKey().getValue()), writer); + writer.name("output"); + this.writeFluidStack(entry.getValue().output, writer); + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java index 42f2dc872..fecbd9e20 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrucibleRecipes.java @@ -96,6 +96,10 @@ public class CrucibleRecipes extends SerializableRecipe { .inputs(new MaterialStack(Mats.MAT_STEEL, n * 8), new MaterialStack(Mats.MAT_CADMIUM, n)) .outputs(new MaterialStack(Mats.MAT_CDALLOY, i))); + recipes.add(new CrucibleRecipe(13, "crucible.cmb", 3, new ItemStack(ModItems.ingot_combine_steel)) + .inputs(new MaterialStack(Mats.MAT_MAGTUNG, n * 6), new MaterialStack(Mats.MAT_MUD, n * 3)) + .outputs(new MaterialStack(Mats.MAT_CMB, i))); + registerMoldsForNEI(); } @@ -182,11 +186,11 @@ public class CrucibleRecipes extends SerializableRecipe { input[i] = new MaterialStack(Mats.matByName.get(matname), amount); } MaterialStack[] output = new MaterialStack[obj.get("output").getAsJsonArray().size()]; - for(int i = 0; i < input.length; i++) { + for(int i = 0; i < output.length; i++) { JsonArray entry = obj.get("output").getAsJsonArray().get(i).getAsJsonArray(); String matname = entry.get(0).getAsString(); int amount = entry.get(1).getAsInt(); - input[i] = new MaterialStack(Mats.matByName.get(matname), amount); + output[i] = new MaterialStack(Mats.matByName.get(matname), amount); } recipes.add(new CrucibleRecipe(id, name, freq, icon).inputs(input).outputs(output)); } @@ -244,7 +248,7 @@ public class CrucibleRecipes extends SerializableRecipe { if(!ores.isEmpty()) { List stacks = new ArrayList(); - stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)))); + stacks.add(ItemScraps.create(new MaterialStack(convert, (int) (shape.q(1) * out / in)), true)); map.put(new OreDictStack(name), stacks); } } @@ -253,7 +257,7 @@ public class CrucibleRecipes extends SerializableRecipe { for(Entry> entry : Mats.materialOreEntries.entrySet()) { List stacks = new ArrayList(); for(MaterialStack mat : entry.getValue()) { - stacks.add(ItemScraps.create(mat)); + stacks.add(ItemScraps.create(mat, true)); } map.put(new OreDictStack(entry.getKey()), stacks); } @@ -261,7 +265,7 @@ public class CrucibleRecipes extends SerializableRecipe { for(Entry> entry : Mats.materialEntries.entrySet()) { List stacks = new ArrayList(); for(MaterialStack mat : entry.getValue()) { - stacks.add(ItemScraps.create(mat)); + stacks.add(ItemScraps.create(mat, true)); } map.put(entry.getKey().copy(), stacks); } @@ -289,7 +293,7 @@ public class CrucibleRecipes extends SerializableRecipe { for(Mold mold : ItemMold.molds) { ItemStack out = mold.getOutput(material); if(out != null) { - ItemStack scrap = ItemScraps.create(new MaterialStack(material, mold.getCost())); + ItemStack scrap = ItemScraps.create(new MaterialStack(material, mold.getCost()), true); ItemStack shape = new ItemStack(ModItems.mold, 1, mold.id); ItemStack basin = new ItemStack(mold.size == 0 ? ModBlocks.foundry_mold : mold.size == 1 ? ModBlocks.foundry_basin : Blocks.fire); ItemStack[] entry = new ItemStack[] {scrap, shape, basin, out}; diff --git a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index c4930766a..69c7652e1 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -102,6 +102,7 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.powder_semtex_mix), new CrystallizerRecipe(ModItems.ingot_semtex, baseTime)); 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, baseTime), new FluidStack(Fluids.FISHOIL, 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)); @@ -126,27 +127,39 @@ public class CrystallizerRecipes extends SerializableRecipe { registerRecipe(new ComparableStack(ModItems.ore_nitrocrystalline, 1, i), new CrystallizerRecipe(new ItemStack(ModItems.ore_seared, 1, i), oreTime), hiperf); } - FluidStack woodOil = new FluidStack(Fluids.WOODOIL, 100); - registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), 20), woodOil); - registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), 20), woodOil); - registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), 20), woodOil); - registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), 20), woodOil); - registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), woodOil); - registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), woodOil); + FluidStack[] dyes = new FluidStack[] {new FluidStack(Fluids.WOODOIL, 100), new FluidStack(Fluids.FISHOIL, 100)}; + for(FluidStack dye : dyes) { + registerRecipe(COAL.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLACK, 4), 20), dye); + registerRecipe(TI.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.WHITE, 4), 20), dye); + registerRecipe(IRON.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.RED, 4), 20), dye); + registerRecipe(W.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.YELLOW, 4), 20), dye); + registerRecipe(CU.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.GREEN, 4), 20), dye); + registerRecipe(CO.dust(), new CrystallizerRecipe(DictFrame.fromOne(ModItems.chemical_dye, EnumChemDye.BLUE, 4), 20), 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)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); - registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); + 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)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)), new CrystallizerRecipe(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX), 20), new FluidStack(Fluids.CHLORINE, 100)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new CrystallizerRecipe(new ItemStack(ModItems.pellet_charged), 200), new FluidStack(Fluids.IONGEL, 500)); + registerRecipe(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)), new CrystallizerRecipe(new ItemStack(ModItems.pill_red), 200), new FluidStack(Fluids.ESTRADIOL, 250)); registerRecipe(KEY_SAND, new CrystallizerRecipe(Blocks.clay, 20), new FluidStack(Fluids.COLLOID, 1_000)); + registerRecipe(new ComparableStack(ModBlocks.sand_quartz), new CrystallizerRecipe(new ItemStack(ModItems.ball_dynamite, 16), 20), new FluidStack(Fluids.NITROGLYCERIN, 1_000)); + registerRecipe(NETHERQUARTZ.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ball_dynamite, 4), 20), new FluidStack(Fluids.NITROGLYCERIN, 250)); + /// COMPAT CERTUS QUARTZ /// List quartz = OreDictionary.getOres("crystalCertusQuartz"); - if(quartz != null && !quartz.isEmpty()) { ItemStack qItem = quartz.get(0).copy(); qItem.stackSize = 12; registerRecipe("oreCertusQuartz", new CrystallizerRecipe(qItem, baseTime)); } + + /// COMPAT WHITE PHOSPHORUS DUST /// + List dustWhitePhosphorus = OreDictionary.getOres(P_WHITE.dust()); + if(dustWhitePhosphorus != null && !dustWhitePhosphorus.isEmpty()) { + registerRecipe(P_WHITE.dust(), new CrystallizerRecipe(new ItemStack(ModItems.ingot_phosphorus), utilityTime), new FluidStack(Fluids.AROMATICS, 50)); + } if(!IMCCrystallizer.buffer.isEmpty()) { recipes.putAll(IMCCrystallizer.buffer); diff --git a/src/main/java/com/hbm/inventory/recipes/CustomMachineRecipes.java b/src/main/java/com/hbm/inventory/recipes/CustomMachineRecipes.java new file mode 100644 index 000000000..e3fe13cef --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CustomMachineRecipes.java @@ -0,0 +1,127 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.util.Tuple.Pair; + +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; + +public class CustomMachineRecipes extends SerializableRecipe { + + public static HashMap> recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put("paperPress", new ArrayList() {{ + CustomMachineRecipe recipe = new CustomMachineRecipe(); + recipe.inputFluids = new FluidStack[] {new FluidStack(Fluids.WATER, 250)}; + recipe.inputItems = new AStack[] {new ComparableStack(ModItems.powder_sawdust)}; + recipe.outputFluids = new FluidStack[0]; + recipe.outputItems = new Pair[] {new Pair(new ItemStack(Items.paper, 3), 1F)}; + recipe.duration = 60; + recipe.consumptionPerTick = 10; + add(recipe); + }}); + } + + @Override + public String getFileName() { + return "hbmCustomMachines.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = recipe.getAsJsonObject(); + + String name = obj.get("recipeKey").getAsString(); + List list = new ArrayList(); + JsonArray array = obj.get("recipes").getAsJsonArray(); + + for(int i = 0; i < array.size(); i++) { + JsonObject rec = array.get(i).getAsJsonObject(); + CustomMachineRecipe recipeInstance = new CustomMachineRecipe(); + recipeInstance.inputFluids = this.readFluidArray(rec.get("inputFluids").getAsJsonArray()); + recipeInstance.inputItems = this.readAStackArray(rec.get("inputItems").getAsJsonArray()); + recipeInstance.outputFluids = this.readFluidArray(rec.get("outputFluids").getAsJsonArray()); + recipeInstance.outputItems = this.readItemStackArrayChance(rec.get("outputItems").getAsJsonArray()); + recipeInstance.duration = rec.get("duration").getAsInt(); + recipeInstance.consumptionPerTick = rec.get("consumptionPerTick").getAsInt(); + list.add(recipeInstance); + } + + recipes.put(name, list); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry> entry = (Entry) recipe; + + writer.name("recipeKey").value(entry.getKey()); + writer.name("recipes").beginArray(); + + for(CustomMachineRecipe recipeInstance : entry.getValue()) { + writer.beginObject(); + + writer.name("inputFluids").beginArray(); + for(FluidStack stack : recipeInstance.inputFluids) this.writeFluidStack(stack, writer); + writer.endArray(); + + writer.name("inputItems").beginArray(); + for(AStack stack : recipeInstance.inputItems) this.writeAStack(stack, writer); + writer.endArray(); + + writer.name("outputFluids").beginArray(); + for(FluidStack stack : recipeInstance.outputFluids) this.writeFluidStack(stack, writer); + writer.endArray(); + + writer.name("outputItems").beginArray(); + for(Pair stack : recipeInstance.outputItems) this.writeItemStackChance(stack, writer); + writer.endArray(); + + writer.name("duration").value(recipeInstance.duration); + writer.name("consumptionPerTick").value(recipeInstance.consumptionPerTick); + + writer.endObject(); + } + + writer.endArray(); + } + + public static class CustomMachineRecipe { + + public FluidStack[] inputFluids; + public AStack[] inputItems; + public FluidStack[] outputFluids; + public Pair[] outputItems; + + public int duration; + public int consumptionPerTick; + } + +} diff --git a/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java b/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java index d552e73d6..f5030c34f 100644 --- a/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CyclotronRecipes.java @@ -10,6 +10,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -41,8 +42,8 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack("dustPolonium"), new ItemStack(ModItems.powder_astatine), liA); makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack("dustLanthanium"), new ItemStack(ModItems.powder_cerium), liA); makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack("dustActinium"), new ItemStack(ModItems.powder_thorium), liA); - makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack("dustUranium"), new ItemStack(ModItems.powder_neptunium), liA); - makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack("dustNeptunium"), new ItemStack(ModItems.powder_plutonium), liA); + makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack(U.dust()), new ItemStack(ModItems.powder_neptunium), liA); + makeRecipe(new ComparableStack(ModItems.part_lithium), new OreDictStack(NP237.dust()), new ItemStack(ModItems.powder_plutonium), liA); makeRecipe(new ComparableStack(ModItems.part_lithium), new ComparableStack(ModItems.powder_reiium), new ItemStack(ModItems.powder_weidanium), liA); /// LITHIUM END /// @@ -68,7 +69,7 @@ public class CyclotronRecipes extends SerializableRecipe { makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_caesium), new ItemStack(ModItems.powder_lanthanium), caA); makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_neodymium), new ItemStack(ModItems.powder_gold), caA); makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.ingot_mercury), new ItemStack(ModItems.powder_polonium), caA); - makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_lead), new ItemStack(ModItems.powder_ra226),caA); + makeRecipe(new ComparableStack(ModItems.part_carbon), new OreDictStack(PB.dust()), new ItemStack(ModItems.powder_ra226),caA); makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_astatine), new ItemStack(ModItems.powder_actinium), caA); makeRecipe(new ComparableStack(ModItems.part_carbon), new ComparableStack(ModItems.powder_australium), new ItemStack(ModItems.powder_verticium), caA); /// CARBON END /// @@ -93,7 +94,7 @@ public class CyclotronRecipes extends SerializableRecipe { int plA = 100; makeRecipe(new ComparableStack(ModItems.part_plutonium), new OreDictStack("dustPhosphorus"), new ItemStack(ModItems.powder_tennessine), plA); - makeRecipe(new ComparableStack(ModItems.part_plutonium), new OreDictStack("dustPlutonium"), new ItemStack(ModItems.powder_tennessine), plA); + makeRecipe(new ComparableStack(ModItems.part_plutonium), new OreDictStack(PU.dust()), new ItemStack(ModItems.powder_tennessine), plA); makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.powder_tennessine), new ItemStack(ModItems.powder_reiium), plA); makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.pellet_charged), new ItemStack(ModItems.nugget_schrabidium), 1000); makeRecipe(new ComparableStack(ModItems.part_plutonium), new ComparableStack(ModItems.powder_unobtainium), new ItemStack(ModItems.powder_daffergon), plA); diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserFluidRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserFluidRecipes.java new file mode 100644 index 000000000..6eee6ba55 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserFluidRecipes.java @@ -0,0 +1,88 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map.Entry; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; + +import net.minecraft.item.ItemStack; + +public class ElectrolyserFluidRecipes extends SerializableRecipe { + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + recipes.put(Fluids.WATER, new ElectrolysisRecipe(1_000, new FluidStack(Fluids.HYDROGEN, 100), new FluidStack(Fluids.OXYGEN, 100))); + recipes.put(Fluids.HEAVYWATER, new ElectrolysisRecipe(1_000, new FluidStack(Fluids.DEUTERIUM, 50), new FluidStack(Fluids.OXYGEN, 50))); + + recipes.put(Fluids.POTASSIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.NONE, 0), new ItemStack(ModItems.dust))); + recipes.put(Fluids.CALCIUM_CHLORIDE, new ElectrolysisRecipe(250, new FluidStack(Fluids.CHLORINE, 125), new FluidStack(Fluids.CALCIUM_SOLUTION, 125))); + } + + @Override + public String getFileName() { + return "hbmElectrolyzerFluid.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + FluidStack input = this.readFluidStack(obj.get("input").getAsJsonArray()); + FluidStack output1 = this.readFluidStack(obj.get("output1").getAsJsonArray()); + FluidStack output2 = this.readFluidStack(obj.get("output2").getAsJsonArray()); + + ItemStack[] byproducts = new ItemStack[0]; + if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray()); + + recipes.put(input.type, new ElectrolysisRecipe(input.fill, output1, output2, byproducts)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input"); this.writeFluidStack(new FluidStack(rec.getKey(), rec.getValue().amount), writer); + writer.name("output1"); this.writeFluidStack(rec.getValue().output1, writer); + writer.name("output2"); this.writeFluidStack(rec.getValue().output2, writer); + + if(rec.getValue().byproduct != null && rec.getValue().byproduct.length > 0) { + writer.name("byproducts").beginArray(); + for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer); + writer.endArray(); + } + } + + public static class ElectrolysisRecipe { + public FluidStack output1; + public FluidStack output2; + public int amount; + public ItemStack[] byproduct; + + public ElectrolysisRecipe(int amount, FluidStack output1, FluidStack output2, ItemStack... byproduct) { + this.output1 = output1; + this.output2 = output2; + this.amount = amount; + this.byproduct = byproduct; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java new file mode 100644 index 000000000..d5d3fe492 --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/ElectrolyserMetalRecipes.java @@ -0,0 +1,134 @@ +package com.hbm.inventory.recipes; + +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.loader.SerializableRecipe; +import com.hbm.items.ModItems; +import com.hbm.util.ItemStackUtil; + +import net.minecraft.item.ItemStack; + +public class ElectrolyserMetalRecipes extends SerializableRecipe { + + public static HashMap recipes = new HashMap(); + + @Override + public void registerDefaults() { + + recipes.put(new ComparableStack(ModItems.crystal_iron), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_TITANIUM, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 1))); + recipes.put(new ComparableStack(ModItems.crystal_gold), new ElectrolysisMetalRecipe( + new MaterialStack(Mats.MAT_IRON, MaterialShapes.INGOT.q(6)), + new MaterialStack(Mats.MAT_LEAD, MaterialShapes.INGOT.q(2)), + new ItemStack(ModItems.powder_lithium_tiny, 1), + new ItemStack(ModItems.ingot_mercury, 1))); + } + + public static ElectrolysisMetalRecipe getRecipe(ItemStack stack) { + + ComparableStack comp = new ComparableStack(stack).makeSingular(); + + if(recipes.containsKey(comp)) return recipes.get(comp); + + List names = ItemStackUtil.getOreDictNames(stack); + + for(String name : names) { + OreDictStack ore = new OreDictStack(name); + if(recipes.containsKey(ore)) return recipes.get(ore); + } + + return null; + } + + @Override + public String getFileName() { + return "hbmElectrolyzerMetal.json"; + } + + @Override + public Object getRecipeObject() { + return recipes; + } + + @Override + public void deleteRecipes() { + recipes.clear(); + } + + @Override + public void readRecipe(JsonElement recipe) { + JsonObject obj = (JsonObject) recipe; + + AStack input = this.readAStack(obj.get("input").getAsJsonArray()); + + JsonArray out1 = obj.get("output1").getAsJsonArray(); + String name1 = out1.get(0).getAsString(); + int amount1 = out1.get(1).getAsInt(); + MaterialStack output1 = new MaterialStack(Mats.matByName.get(name1), amount1); + + JsonArray out2 = obj.get("output2").getAsJsonArray(); + String name2 = out2.get(0).getAsString(); + int amount2 = out2.get(1).getAsInt(); + MaterialStack output2 = new MaterialStack(Mats.matByName.get(name2), amount2); + + ItemStack[] byproducts = new ItemStack[0]; + if(obj.has("byproducts")) byproducts = this.readItemStackArray(obj.get("byproducts").getAsJsonArray()); + + recipes.put(input, new ElectrolysisMetalRecipe(output1, output2, byproducts)); + } + + @Override + public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { + Entry rec = (Entry) recipe; + + writer.name("input"); this.writeAStack(rec.getKey(), writer); + + writer.name("output1"); + writer.beginArray(); + writer.setIndent(""); + writer.value(rec.getValue().output1.material.names[0]).value(rec.getValue().output1.amount); + writer.endArray(); + writer.setIndent(" "); + + writer.name("output2"); + writer.beginArray(); + writer.setIndent(""); + writer.value(rec.getValue().output2.material.names[0]).value(rec.getValue().output2.amount); + writer.endArray(); + writer.setIndent(" "); + + if(rec.getValue().byproduct != null && rec.getValue().byproduct.length > 0) { + writer.name("byproducts").beginArray(); + for(ItemStack stack : rec.getValue().byproduct) this.writeItemStack(stack, writer); + writer.endArray(); + } + } + + public static class ElectrolysisMetalRecipe { + + public MaterialStack output1; + public MaterialStack output2; + public ItemStack[] byproduct; + + public ElectrolysisMetalRecipe(MaterialStack output1, MaterialStack output2, ItemStack... byproduct) { + this.output1 = output1; + this.output2 = output2; + this.byproduct = byproduct; + } + } +} diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 95e8a5f86..b3b673a6a 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -47,18 +47,23 @@ public class FractionRecipes extends SerializableRecipe { @Override public void registerDefaults() { - fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, heavy_frac_bitu), new FluidStack(Fluids.SMEAR, heavy_frac_smear))); - fractions.put(Fluids.SMEAR, new Pair(new FluidStack(Fluids.HEATINGOIL, smear_frac_heat), new FluidStack(Fluids.LUBRICANT, smear_frac_lube))); - fractions.put(Fluids.NAPHTHA, new Pair(new FluidStack(Fluids.HEATINGOIL, napht_frac_heat), new FluidStack(Fluids.DIESEL, napht_frac_diesel))); - fractions.put(Fluids.NAPHTHA_CRACK, new Pair(new FluidStack(Fluids.HEATINGOIL, ncrack_frac_heat), new FluidStack(Fluids.DIESEL_CRACK, ncrack_frac_diesel))); - fractions.put(Fluids.LIGHTOIL, new Pair(new FluidStack(Fluids.DIESEL, light_frac_diesel), new FluidStack(Fluids.KEROSENE, light_frac_kero))); - fractions.put(Fluids.LIGHTOIL_CRACK, new Pair(new FluidStack(Fluids.KEROSENE, lcrack_frac_kero), new FluidStack(Fluids.PETROLEUM, lcrack_frac_petro))); - fractions.put(Fluids.COALOIL, new Pair(new FluidStack(Fluids.COALGAS, coal_frac_coalgas), new FluidStack(Fluids.OIL, coal_frac_oil))); - fractions.put(Fluids.COALCREOSOTE, new Pair(new FluidStack(Fluids.COALOIL, creo_frac_coaloil), new FluidStack(Fluids.BITUMEN, creo_frac_bitu))); - fractions.put(Fluids.HEAVYOIL_VACUUM, new Pair(new FluidStack(Fluids.SMEAR, hvac_frac_smear), new FluidStack(Fluids.HEATINGOIL_VACUUM, hvac_frac_heat))); - fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, reform_frac_arom), new FluidStack(Fluids.XYLENE, reform_frac_xyle))); - fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, lvac_frac_kero), new FluidStack(Fluids.REFORMGAS, lvac_frac_gas))); - fractions.put(Fluids.SOURGAS, new Pair(new FluidStack(Fluids.GAS, 30), new FluidStack(Fluids.PETROLEUM, 20))); + fractions.put(Fluids.HEAVYOIL, new Pair(new FluidStack(Fluids.BITUMEN, heavy_frac_bitu), new FluidStack(Fluids.SMEAR, heavy_frac_smear))); + fractions.put(Fluids.SMEAR, new Pair(new FluidStack(Fluids.HEATINGOIL, smear_frac_heat), new FluidStack(Fluids.LUBRICANT, smear_frac_lube))); + fractions.put(Fluids.NAPHTHA, new Pair(new FluidStack(Fluids.HEATINGOIL, napht_frac_heat), new FluidStack(Fluids.DIESEL, napht_frac_diesel))); + fractions.put(Fluids.NAPHTHA_CRACK, new Pair(new FluidStack(Fluids.HEATINGOIL, ncrack_frac_heat), new FluidStack(Fluids.DIESEL_CRACK, ncrack_frac_diesel))); + fractions.put(Fluids.LIGHTOIL, new Pair(new FluidStack(Fluids.DIESEL, light_frac_diesel), new FluidStack(Fluids.KEROSENE, light_frac_kero))); + fractions.put(Fluids.LIGHTOIL_CRACK, new Pair(new FluidStack(Fluids.KEROSENE, lcrack_frac_kero), new FluidStack(Fluids.PETROLEUM, lcrack_frac_petro))); + fractions.put(Fluids.COALOIL, new Pair(new FluidStack(Fluids.COALGAS, coal_frac_coalgas), new FluidStack(Fluids.OIL, coal_frac_oil))); + fractions.put(Fluids.COALCREOSOTE, new Pair(new FluidStack(Fluids.COALOIL, creo_frac_coaloil), new FluidStack(Fluids.BITUMEN, creo_frac_bitu))); + fractions.put(Fluids.HEAVYOIL_VACUUM, new Pair(new FluidStack(Fluids.SMEAR, hvac_frac_smear), new FluidStack(Fluids.HEATINGOIL_VACUUM, hvac_frac_heat))); + fractions.put(Fluids.REFORMATE, new Pair(new FluidStack(Fluids.AROMATICS, reform_frac_arom), new FluidStack(Fluids.XYLENE, reform_frac_xyle))); + fractions.put(Fluids.LIGHTOIL_VACUUM, new Pair(new FluidStack(Fluids.KEROSENE, lvac_frac_kero), new FluidStack(Fluids.REFORMGAS, lvac_frac_gas))); + fractions.put(Fluids.SOURGAS, new Pair(new FluidStack(Fluids.GAS, 30), new FluidStack(Fluids.PETROLEUM, 20))); + fractions.put(Fluids.EGG, new Pair(new FluidStack(Fluids.CHOLESTEROL, 50), new FluidStack(Fluids.RADIOSOLVENT, 50))); + 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))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java index abbdea91a..7b7743f2c 100644 --- a/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/GasCentrifugeRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.util.HashMap; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; @@ -60,7 +61,7 @@ public class GasCentrifugeRecipes { } public String getName() { - return I18nUtil.resolveKey("hbmpseudofluid.".concat(this.toString().toLowerCase())); + return I18nUtil.resolveKey("hbmpseudofluid.".concat(this.toString().toLowerCase(Locale.US))); } public boolean getIfHighSpeed() { diff --git a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java index bd6698749..a35f15425 100644 --- a/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/LiquefactionRecipes.java @@ -23,6 +23,7 @@ import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.ItemFood; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; public class LiquefactionRecipes extends SerializableRecipe { @@ -51,11 +52,14 @@ public class LiquefactionRecipes extends SerializableRecipe { recipes.put(new ComparableStack(Blocks.ice), new FluidStack(1000, Fluids.WATER)); recipes.put(new ComparableStack(Blocks.packed_ice), new FluidStack(1000, Fluids.WATER)); recipes.put(new ComparableStack(Items.ender_pearl), new FluidStack(100, Fluids.ENDERJUICE)); + recipes.put(new ComparableStack(ModItems.pellet_charged), new FluidStack(4000, Fluids.HELIUM4)); recipes.put(new ComparableStack(Items.sugar), new FluidStack(100, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 3), new FluidStack(150, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModBlocks.plant_flower, 1, 4), new FluidStack(50, Fluids.ETHANOL)); recipes.put(new ComparableStack(ModItems.biomass), new FluidStack(125, Fluids.BIOGAS)); + recipes.put(new ComparableStack(Items.fish, 1, OreDictionary.WILDCARD_VALUE), new FluidStack(100, Fluids.FISHOIL)); + recipes.put(new ComparableStack(Blocks.double_plant, 1, 0), new FluidStack(100, Fluids.SUNFLOWEROIL)); recipes.put(new ComparableStack(Items.wheat_seeds), new FluidStack(50, Fluids.SEEDSLURRY)); recipes.put(new ComparableStack(Blocks.tallgrass, 1, 1), new FluidStack(100, Fluids.SEEDSLURRY)); @@ -78,6 +82,10 @@ public class LiquefactionRecipes extends SerializableRecipe { return recipes.get(comp); String[] dictKeys = comp.getDictKeys(); + comp = new ComparableStack(stack.getItem(), 1, OreDictionary.WILDCARD_VALUE); + + if(recipes.containsKey(comp)) + return recipes.get(comp); for(String key : dictKeys) { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index 6ccbd510a..0a68397d6 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map.Entry; +import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; @@ -21,48 +22,82 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraftforge.oredict.OreDictionary; + public class MixerRecipes extends SerializableRecipe { - public static HashMap recipes = new HashMap(); + public static HashMap recipes = new HashMap(); @Override public void registerDefaults() { - recipes.put(Fluids.COOLANT, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.WATER, 1_800)).setSolid(new OreDictStack(KNO.dust()))); - recipes.put(Fluids.CRYOGEL, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.COOLANT, 1_800)).setSolid(new ComparableStack(ModItems.powder_ice))); - recipes.put(Fluids.NITAN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 600)).setStack2(new FluidStack(Fluids.MERCURY, 200)).setSolid(new ComparableStack(ModItems.powder_nitan_mix))); - recipes.put(Fluids.FRACKSOL, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 900)).setStack2(new FluidStack(Fluids.PETROLEUM, 100))); - recipes.put(Fluids.ENDERJUICE, new MixerRecipe(100, 100).setStack1(new FluidStack(Fluids.XPJUICE, 500)).setSolid(new OreDictStack(DIAMOND.dust()))); - recipes.put(Fluids.SALIENT, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.SEEDSLURRY, 500)).setStack2(new FluidStack(Fluids.BLOOD, 500))); - recipes.put(Fluids.COLLOID, new MixerRecipe(500, 20).setStack1(new FluidStack(Fluids.WATER, 500)).setSolid(new ComparableStack(ModItems.dust))); - recipes.put(Fluids.PHOSGENE, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.UNSATURATEDS, 500)).setStack2(new FluidStack(Fluids.CHLORINE, 500))); - recipes.put(Fluids.MUSTARDGAS, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)).setSolid(new OreDictStack(S.dust()))); - recipes.put(Fluids.IONGEL, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.HYDROGEN, 200)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.COOLANT, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.WATER, 1_800)).setSolid(new OreDictStack(KNO.dust()))); + register(Fluids.CRYOGEL, new MixerRecipe(2_000, 50).setStack1(new FluidStack(Fluids.COOLANT, 1_800)).setSolid(new ComparableStack(ModItems.powder_ice))); + register(Fluids.NITAN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 600)).setStack2(new FluidStack(Fluids.MERCURY, 200)).setSolid(new ComparableStack(ModItems.powder_nitan_mix))); + register(Fluids.FRACKSOL, + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 900)).setStack2(new FluidStack(Fluids.PETROLEUM, 100)), + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.PETROLEUM, 100)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.ENDERJUICE, new MixerRecipe(100, 100).setStack1(new FluidStack(Fluids.XPJUICE, 500)).setSolid(new OreDictStack(DIAMOND.dust()))); + register(Fluids.SALIENT, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.SEEDSLURRY, 500)).setStack2(new FluidStack(Fluids.BLOOD, 500))); + register(Fluids.COLLOID, new MixerRecipe(500, 20).setStack1(new FluidStack(Fluids.WATER, 500)).setSolid(new ComparableStack(ModItems.dust))); + register(Fluids.PHOSGENE, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.UNSATURATEDS, 500)).setStack2(new FluidStack(Fluids.CHLORINE, 500))); + register(Fluids.MUSTARDGAS, new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.IONGEL, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.WATER, 1000)).setStack2(new FluidStack(Fluids.HYDROGEN, 200)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.EGG, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(Items.egg))); + register(Fluids.FISHOIL, new MixerRecipe(100, 50).setSolid(new ComparableStack(Items.fish, 1, OreDictionary.WILDCARD_VALUE))); + register(Fluids.SUNFLOWEROIL, new MixerRecipe(100, 50).setSolid(new ComparableStack(Blocks.double_plant, 1, 0))); - recipes.put(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); - recipes.put(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); - recipes.put(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); - recipes.put(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); - recipes.put(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); + register(Fluids.SOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.NAPHTHA, 500)).setStack2(new FluidStack(Fluids.AROMATICS, 500))); + register(Fluids.SULFURIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.ACID, 800)).setSolid(new OreDictStack(S.dust()))); + register(Fluids.NITRIC_ACID, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.SULFURIC_ACID, 500)).setSolid(new OreDictStack(KNO.dust()))); + register(Fluids.RADIOSOLVENT, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.REFORMGAS, 750)).setStack2(new FluidStack(Fluids.CHLORINE, 250))); + register(Fluids.SCHRABIDIC, new MixerRecipe(16_000, 100).setStack1(new FluidStack(Fluids.SAS3, 8_000)).setStack2(new FluidStack(Fluids.ACID, 6_000)).setSolid(new ComparableStack(ModItems.pellet_charged))); - recipes.put(Fluids.LUBRICANT, new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500))); - recipes.put(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); + register(Fluids.PETROIL, new MixerRecipe(1_000, 30).setStack1(new FluidStack(Fluids.RECLAIMED, 800)).setStack2(new FluidStack(Fluids.LUBRICANT, 200))); + register(Fluids.LUBRICANT, + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.HEATINGOIL, 500)).setStack2(new FluidStack(Fluids.UNSATURATEDS, 500)), + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.FISHOIL, 800)).setStack2(new FluidStack(Fluids.ETHANOL, 200)), + new MixerRecipe(1_000, 20).setStack1(new FluidStack(Fluids.SUNFLOWEROIL, 800)).setStack2(new FluidStack(Fluids.ETHANOL, 200))); + register(Fluids.BIOFUEL, + new MixerRecipe(250, 20).setStack1(new FluidStack(Fluids.FISHOIL, 500)).setStack2(new FluidStack(Fluids.WOODOIL, 500)), + new MixerRecipe(200, 20).setStack1(new FluidStack(Fluids.SUNFLOWEROIL, 500)).setStack2(new FluidStack(Fluids.WOODOIL, 500))); + register(Fluids.NITROGLYCERIN, + new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.PETROLEUM, 1_000)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 1_000)), + new MixerRecipe(1000, 20).setStack1(new FluidStack(Fluids.FISHOIL, 500)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 500))); - recipes.put(Fluids.SYNGAS, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.COALOIL, 500)).setStack2(new FluidStack(Fluids.STEAM, 500))); - recipes.put(Fluids.OXYHYDROGEN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.HYDROGEN, 500)).setStack2(new FluidStack(Fluids.OXYGEN, 500))); + register(Fluids.SYNGAS, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.COALOIL, 500)).setStack2(new FluidStack(Fluids.STEAM, 500))); + register(Fluids.OXYHYDROGEN, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.HYDROGEN, 500)).setStack2(new FluidStack(Fluids.OXYGEN, 500))); - recipes.put(Fluids.PETROIL_LEADED, new MixerRecipe(1_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 800)).setSolid(new ComparableStack(ModItems.antiknock))); - recipes.put(Fluids.GASOLINE_LEADED, new MixerRecipe(1_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 800)).setSolid(new ComparableStack(ModItems.antiknock))); - recipes.put(Fluids.COALGAS_LEADED, new MixerRecipe(1_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 800)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.PETROIL_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.PETROIL, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.GASOLINE_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.GASOLINE, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); + register(Fluids.COALGAS_LEADED, new MixerRecipe(12_000, 40).setStack1(new FluidStack(Fluids.COALGAS, 10_000)).setSolid(new ComparableStack(ModItems.antiknock))); - recipes.put(Fluids.DIESEL_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); - recipes.put(Fluids.DIESEL_CRACK_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL_CRACK, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); - recipes.put(Fluids.KEROSENE_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + register(Fluids.DIESEL_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + register(Fluids.DIESEL_CRACK_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.DIESEL_CRACK, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + register(Fluids.KEROSENE_REFORM, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.KEROSENE, 900)).setStack2(new FluidStack(Fluids.REFORMATE, 100))); + + + register(Fluids.CHLOROCALCITE_SOLUTION, new MixerRecipe(500, 50).setStack1(new FluidStack(Fluids.WATER, 250)).setStack2(new FluidStack(Fluids.NITRIC_ACID, 250)).setSolid(new OreDictStack(CHLOROCALCITE.dust()))); + register(Fluids.CHLOROCALCITE_MIX, new MixerRecipe(1000, 50).setStack1(new FluidStack(Fluids.CHLOROCALCITE_SOLUTION, 500)).setStack2(new FluidStack(Fluids.SULFURIC_ACID, 500))); } - public static MixerRecipe getOutput(FluidType type) { + public static void register(FluidType type, MixerRecipe... rec) { + recipes.put(type, rec); + } + + public static MixerRecipe[] getOutput(FluidType type) { return recipes.get(type); } + public static MixerRecipe getOutput(FluidType type, int index) { + MixerRecipe[] recs = recipes.get(type); + + if(recs == null) return null; + + return recs[index % recs.length]; + } + @Override public String getFileName() { return "hbmMixer.json"; @@ -82,47 +117,65 @@ public class MixerRecipes extends SerializableRecipe { public void readRecipe(JsonElement recipe) { JsonObject obj = (JsonObject) recipe; - FluidStack output = this.readFluidStack(obj.get("output").getAsJsonArray()); - MixerRecipe mix = new MixerRecipe(output.fill, obj.get("duration").getAsInt()); - - if(obj.has("input1")) mix.setStack1(this.readFluidStack(obj.get("input1").getAsJsonArray())); - if(obj.has("input2")) mix.setStack2(this.readFluidStack(obj.get("input2").getAsJsonArray())); - if(obj.has("solidInput")) mix.setSolid(this.readAStack(obj.get("solidInput").getAsJsonArray())); + FluidType outputType = Fluids.fromName(obj.get("outputType").getAsString()); + JsonArray recipeArray = obj.get("recipes").getAsJsonArray(); + MixerRecipe[] array = new MixerRecipe[recipeArray.size()]; - recipes.put(output.type, mix); + for(int i = 0; i < recipeArray.size(); i++) { + JsonObject sub = recipeArray.get(i).getAsJsonObject(); + MixerRecipe mix = new MixerRecipe(sub.get("outputAmount").getAsInt(), sub.get("duration").getAsInt()); + + if(sub.has("input1")) mix.setStack1(this.readFluidStack(sub.get("input1").getAsJsonArray())); + if(sub.has("input2")) mix.setStack2(this.readFluidStack(sub.get("input2").getAsJsonArray())); + if(sub.has("solidInput")) mix.setSolid(this.readAStack(sub.get("solidInput").getAsJsonArray())); + + array[i] = mix; + + } + + recipes.put(outputType, array); } @Override public void writeRecipe(Object recipe, JsonWriter writer) throws IOException { - Entry rec = (Entry) recipe; - MixerRecipe mix = rec.getValue(); - FluidStack output = new FluidStack(rec.getKey(), mix.output); + Entry rec = (Entry) recipe; + MixerRecipe[] recipes = rec.getValue(); - writer.name("duration").value(mix.processTime); - writer.name("output"); - this.writeFluidStack(output, writer); + writer.name("outputType").value(rec.getKey().getName()); + writer.name("recipes").beginArray(); - if(mix.input1 != null) { writer.name("input1"); this.writeFluidStack(mix.input1, writer); } - if(mix.input2 != null) { writer.name("input2"); this.writeFluidStack(mix.input2, writer); } - if(mix.solidInput != null) { writer.name("solidInput"); this.writeAStack(mix.solidInput, writer); } + for(MixerRecipe mix : recipes) { + writer.beginObject(); + writer.name("duration").value(mix.processTime); + writer.name("outputAmount").value(mix.output); + + if(mix.input1 != null) { writer.name("input1"); this.writeFluidStack(mix.input1, writer); } + if(mix.input2 != null) { writer.name("input2"); this.writeFluidStack(mix.input2, writer); } + if(mix.solidInput != null) { writer.name("solidInput"); this.writeAStack(mix.solidInput, writer); } + writer.endObject(); + } + writer.endArray(); } public static HashMap getRecipes() { HashMap recipes = new HashMap(); - for(Entry entry : MixerRecipes.recipes.entrySet()) { + for(Entry entry : MixerRecipes.recipes.entrySet()) { FluidType type = entry.getKey(); - MixerRecipe recipe = entry.getValue(); - FluidStack output = new FluidStack(type, recipe.output); - - List objects = new ArrayList(); - if(recipe.input1 != null) objects.add(ItemFluidIcon.make(recipe.input1)); - if(recipe.input2 != null) objects.add(ItemFluidIcon.make(recipe.input2)); - if(recipe.solidInput != null) objects.add(recipe.solidInput); + MixerRecipe[] recs = entry.getValue(); - recipes.put(objects.toArray(), ItemFluidIcon.make(output)); + for(MixerRecipe recipe : recs) { + FluidStack output = new FluidStack(type, recipe.output); + + List objects = new ArrayList(); + if(recipe.input1 != null) objects.add(ItemFluidIcon.make(recipe.input1)); + if(recipe.input2 != null) objects.add(ItemFluidIcon.make(recipe.input2)); + if(recipe.solidInput != null) objects.add(recipe.solidInput); + + recipes.put(objects.toArray(), ItemFluidIcon.make(output)); + } } return recipes; diff --git a/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java b/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java index 1f1c72505..491a8595f 100644 --- a/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/OutgasserRecipes.java @@ -56,6 +56,8 @@ public class OutgasserRecipes extends SerializableRecipe { recipes.put(new OreDictStack(COAL.gem()), new Pair(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL, 1), new FluidStack(Fluids.SYNGAS, 50))); recipes.put(new OreDictStack(COAL.dust()), new Pair(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL, 1), new FluidStack(Fluids.SYNGAS, 50))); recipes.put(new OreDictStack(COAL.block()), new Pair(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL, 9), new FluidStack(Fluids.SYNGAS, 500))); + + recipes.put(new OreDictStack(PVC.ingot()), new Pair(new ItemStack(ModItems.ingot_c4), new FluidStack(Fluids.COLLOID, 250))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL)), new Pair(null, new FluidStack(Fluids.COALOIL, 100))); recipes.put(new ComparableStack(DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WAX)), new Pair(null, new FluidStack(Fluids.RADIOSOLVENT, 100))); diff --git a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java index 1186eb481..15f16e04c 100644 --- a/src/main/java/com/hbm/inventory/recipes/PressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/PressRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.HashMap; +import java.util.Locale; import java.util.Map.Entry; import static com.hbm.inventory.OreDictManager.*; @@ -151,7 +152,7 @@ public class PressRecipes extends SerializableRecipe { writer.name("input"); this.writeAStack(entry.getKey().getKey(), writer); - writer.name("stamp").value(entry.getKey().getValue().name().toLowerCase()); + writer.name("stamp").value(entry.getKey().getValue().name().toLowerCase(Locale.US)); writer.name("output"); this.writeItemStack(entry.getValue(), writer); } diff --git a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java index 314e50d56..427f4a329 100644 --- a/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RefineryRecipes.java @@ -58,7 +58,7 @@ public class RefineryRecipes { public static HashMap getVacuumRecipe() { HashMap recipes = new HashMap(); - recipes.put(ItemFluidIcon.make(Fluids.OIL, 1000), + recipes.put(ItemFluidIcon.make(Fluids.OIL, 1000, 2), new ItemStack[] { ItemFluidIcon.make(Fluids.HEAVYOIL_VACUUM, vac_frac_heavy * 10), ItemFluidIcon.make(Fluids.REFORMATE, vac_frac_reform * 10), diff --git a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java index 5d0b047aa..238e5bca9 100644 --- a/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ReformingRecipes.java @@ -42,6 +42,11 @@ public class ReformingRecipes extends SerializableRecipe { new FluidStack(Fluids.PETROLEUM, 10), new FluidStack(Fluids.HYDROGEN, 15) )); + recipes.put(Fluids.CHOLESTEROL, new Triplet( + new FluidStack(Fluids.ESTRADIOL, 50), + new FluidStack(Fluids.REFORMGAS, 35), + new FluidStack(Fluids.HYDROGEN, 15) + )); } public static Triplet getOutput(FluidType type) { diff --git a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java index 6cdaa21ba..adb944df5 100644 --- a/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SILEXRecipes.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import static com.hbm.inventory.OreDictManager.*; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.fluid.Fluids; @@ -29,8 +30,8 @@ public class SILEXRecipes { public static void register() { itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.UF6.getID()), new ComparableStack(ModItems.ingot_uranium)); - dictTranslation.put("dustUranium", "ingotUranium"); - recipes.put("ingotUranium", new SILEXRecipe(900, 100, EnumWavelengths.UV) + dictTranslation.put(U.dust(), U.ingot()); + recipes.put(U.ingot(), new SILEXRecipe(900, 100, EnumWavelengths.UV) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u235), 1)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_u238), 11)) ); @@ -46,8 +47,8 @@ public class SILEXRecipes { ); itemTranslation.put(new ComparableStack(ModItems.fluid_icon, 1, Fluids.PUF6.getID()), new ComparableStack(ModItems.ingot_plutonium)); - dictTranslation.put("dustPlutonium", "ingotPlutonium"); - recipes.put("ingotPlutonium", new SILEXRecipe(900, 100, 2) + dictTranslation.put(PU.dust(), PU.ingot()); + recipes.put(PU.ingot(), new SILEXRecipe(900, 100, 2) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu238), 3)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu239), 4)) .addOut(new WeightedRandomObject(new ItemStack(ModItems.nugget_pu240), 2)) diff --git a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java index 2c0150b5d..457bddf9b 100644 --- a/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ShredderRecipes.java @@ -286,10 +286,6 @@ public class ShredderRecipes extends SerializableRecipe { ShredderRecipes.setRecipe(ModBlocks.chain, new ItemStack(ModItems.powder_steel_tiny, 1)); ShredderRecipes.setRecipe(ModBlocks.steel_grate, new ItemStack(ModItems.powder_steel_tiny, 3)); ShredderRecipes.setRecipe(ModItems.pipes_steel, new ItemStack(ModItems.powder_steel, 27)); - ShredderRecipes.setRecipe(ModBlocks.oil_duct, new ItemStack(ModItems.powder_steel_tiny, 3)); - ShredderRecipes.setRecipe(ModBlocks.oil_duct_solid, new ItemStack(ModItems.powder_steel_tiny, 3)); - ShredderRecipes.setRecipe(ModBlocks.gas_duct, new ItemStack(ModItems.powder_steel, 1)); - ShredderRecipes.setRecipe(ModBlocks.gas_duct_solid, new ItemStack(ModItems.powder_steel, 1)); ShredderRecipes.setRecipe(ModBlocks.machine_fluidtank, new ItemStack(ModItems.powder_steel, 32)); /* Sellafite scrapping */ diff --git a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 05385ff54..2612ba3c3 100644 --- a/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java @@ -35,7 +35,7 @@ public class SolidificationRecipes extends SerializableRecipe { public static final int SF_HEATING = 50; public static final int SF_RECLAIMED = 100; public static final int SF_PETROIL = 125; - public static final int SF_LUBE = 125; + public static final int SF_LUBE = 100; public static final int SF_NAPH = 150; public static final int SF_DIESEL = 200; public static final int SF_LIGHT = 225; @@ -66,6 +66,8 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(BIOGAS, 250, ModItems.biomass_compressed); registerRecipe(SALIENT, 1280, new ItemStack(ModItems.bio_wafer, 8)); //4 (food val) * 2 (sat mod) * 2 (constant) * 10 (quanta) * 8 (batch size) registerRecipe(ENDERJUICE, 100, Items.ender_pearl); + registerRecipe(WATZ, 1000, ModItems.ingot_mud); + registerRecipe(REDMUD, 1000, Items.iron_ingot); registerRecipe(OIL, SF_OIL, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(CRACKOIL, SF_CRACK, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRACK)); @@ -75,6 +77,7 @@ public class SolidificationRecipes extends SerializableRecipe { registerRecipe(BITUMEN, SF_BITUMEN, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.CRUDE)); registerRecipe(COALCREOSOTE, SF_CREOSOTE, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.COAL)); registerRecipe(WOODOIL, SF_WOOD, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.WOOD)); + registerRecipe(LUBRICANT, SF_LUBE, DictFrame.fromOne(ModItems.oil_tar, EnumTarType.PARAFFIN)); registerRecipe(BALEFIRE, 250, ModItems.solid_fuel_bf); @@ -93,13 +96,13 @@ public class SolidificationRecipes extends SerializableRecipe { registerSFAuto(LIGHTOIL_CRACK); registerSFAuto(LIGHTOIL_VACUUM); registerSFAuto(KEROSENE); - registerSFAuto(GAS); + //registerSFAuto(GAS); registerSFAuto(SOURGAS); registerSFAuto(REFORMGAS); registerSFAuto(SYNGAS); registerSFAuto(PETROLEUM); registerSFAuto(LPG); - registerSFAuto(BIOGAS); + //registerSFAuto(BIOGAS); registerSFAuto(BIOFUEL); registerSFAuto(AROMATICS); registerSFAuto(UNSATURATEDS); @@ -110,7 +113,7 @@ public class SolidificationRecipes extends SerializableRecipe { } private static void registerSFAuto(FluidType fluid) { - registerSFAuto(fluid, 144000L, ModItems.solid_fuel); //3200 burntime * 1.5 burntime bonus * 300 TU/t + 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) { long tuPerBucket = fluid.getTrait(FT_Flammable.class).getHeatEnergy(); 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 4becbaf45..bc29c1fc2 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -330,6 +330,13 @@ public class AnvilRecipes { new ComparableStack(ModItems.plate_polymer, 8) }, new AnvilOutput(new ItemStack(ModBlocks.machine_boiler))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plateCast(), 8), + new OreDictStack(CU.ingot(), 8), + new OreDictStack(ANY_PLASTIC.ingot(), 4) + }, new AnvilOutput(new ItemStack(ModBlocks.machine_industrial_boiler))).setTier(3)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new OreDictStack(STEEL.plate(), 4), @@ -417,6 +424,13 @@ public class AnvilRecipes { }, new AnvilOutput(new ItemStack(ModBlocks.substation))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( + new AStack[] { + new OreDictStack(STEEL.plate(), 4), + new ComparableStack(Blocks.brick_block, 16) + }, + new AnvilOutput(new ItemStack(ModBlocks.chimney_brick))).setTier(2)); + constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { new ComparableStack(ModItems.tank_steel, 1), @@ -444,7 +458,7 @@ public class AnvilRecipes { new AStack[] {new ComparableStack(ModItems.nugget_bismuth, 2), new OreDictStack(U238.billet(), 2), new OreDictStack(NB.dust(), 1)}, new AnvilOutput(new ItemStack(ModItems.plate_bismuth, 1))).setTier(4)); constructionRecipes.add(new AnvilConstructionRecipe( - new AStack[] {new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 2), new OreDictStack(VOLCANIC.gem(), 1)}, + new AStack[] {new OreDictStack(EUPH.ingot(), 4), new OreDictStack(AT.dust(), 3), new OreDictStack(BI.dust(), 1), new OreDictStack(VOLCANIC.gem(), 1), new ComparableStack(ModItems.ingot_osmiridium)}, new AnvilOutput(new ItemStack(ModItems.plate_euphemium, 4))).setTier(6)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] {new OreDictStack(DNT.ingot(), 4), new ComparableStack(ModItems.powder_spark_mix, 2), new OreDictStack(DESH.ingot(), 1)}, @@ -490,6 +504,9 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_box, 1, i), new AnvilOutput(new ItemStack(ModItems.plate_iron))).setTier(2).setOverlay(OverlayType.RECYCLING)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_box, 1, i + 1), new AnvilOutput(new ItemStack(ModItems.plate_copper))).setTier(2).setOverlay(OverlayType.RECYCLING)); constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_box, 1, i + 2), new AnvilOutput(new ItemStack(ModItems.plate_aluminium))).setTier(2).setOverlay(OverlayType.RECYCLING)); + + constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] {new OreDictStack(IRON.plate(), 1), new ComparableStack(ModItems.plate_polymer)}, new AnvilOutput(new ItemStack(ModBlocks.fluid_duct_exhaust, 8, i))).setTier(2).setOverlay(OverlayType.CONSTRUCTION)); + constructionRecipes.add(new AnvilConstructionRecipe(new ComparableStack(ModBlocks.fluid_duct_exhaust, 8, i), new AnvilOutput[] {new AnvilOutput(new ItemStack(ModItems.plate_iron)), new AnvilOutput(new ItemStack(ModItems.plate_polymer))}).setTier(2)); } } @@ -932,6 +949,14 @@ public class AnvilRecipes { new AnvilOutput(new ItemStack(ModItems.plate_lead, 2)), new AnvilOutput(new ItemStack(ModItems.nuclear_waste_vitrified, 10)) }).setTier(3)); + + constructionRecipes.add(new AnvilConstructionRecipe( + new ComparableStack(ModItems.egg_glyphid), new AnvilOutput[] { + new AnvilOutput(new ItemStack(ModItems.glyphid_meat, 2)), + new AnvilOutput(new ItemStack(ModItems.glyphid_meat, 1), 0.5F), + new AnvilOutput(new ItemStack(Items.bone, 1), 0.75F), + new AnvilOutput(new ItemStack(Items.experience_bottle, 1), 0.5F) + }).setTier(1)); } public static void pullFromAssembler(ComparableStack result, int tier) { diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java index b5f44ece0..5dd1bef82 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilSmithingMold.java @@ -36,7 +36,7 @@ public class AnvilSmithingMold extends AnvilSmithingRecipe { for(String otherPrefix : OreNames.prefixes) { if(otherPrefix.length() > matchesPrefix.name.length() && name.startsWith(otherPrefix)) { - continue; //ignore if there's a longer prefix that matches (i.e. a more accurate match) + return false; //ignore if there's a longer prefix that matches (i.e. a more accurate match) } } diff --git a/src/main/java/com/hbm/inventory/recipes/loader/JSONLoaderBase.java b/src/main/java/com/hbm/inventory/recipes/loader/JSONLoaderBase.java deleted file mode 100644 index a2e8bc316..000000000 --- a/src/main/java/com/hbm/inventory/recipes/loader/JSONLoaderBase.java +++ /dev/null @@ -1,177 +0,0 @@ -package com.hbm.inventory.recipes.loader; - -import java.io.File; -import java.io.FileReader; -import java.io.IOException; - -import com.google.gson.Gson; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.stream.JsonWriter; -import com.hbm.inventory.RecipesCommon.AStack; -import com.hbm.inventory.RecipesCommon.ComparableStack; -import com.hbm.inventory.RecipesCommon.OreDictStack; -import com.hbm.main.MainRegistry; - -import net.minecraft.item.Item; -import net.minecraftforge.oredict.OreDictionary; - -@Deprecated -public abstract class JSONLoaderBase { - - public File config; - public File template; - private final Gson gson = new Gson(); - - public JSONLoaderBase() { - - } - - public void loadRecipes() { - registerDefaults(); - //saveTemplateJSON(template); - - if(config != null) { - loadJSONRecipes(); - } - } - - protected abstract void registerDefaults(); - - protected void loadJSONRecipes() { - - try { - JsonObject json = gson.fromJson(new FileReader(config), JsonObject.class); - JsonElement recipes = json.get("recipes"); - - if(recipes instanceof JsonArray) { - - JsonArray recArray = recipes.getAsJsonArray(); - for(JsonElement recipe : recArray) { - - if(recipe.isJsonObject()) { - - } - } - } - } catch (Exception e) { } - } - - protected static AStack aStackFromArray(JsonArray array) { - - boolean dict = false; - String item = ""; - int stacksize = 1; - int meta = 0; - - if(array.size() < 2) - return null; - - /* - * EVAL "dict" OR "item" - */ - if(array.get(0).isJsonPrimitive()) { - - if(array.get(0).getAsString().equals("item")) { - dict = false; - } else if(array.get(0).getAsString().equals("dict")) { - dict = true; - } else { - MainRegistry.logger.error("Error reading recipe, stack array does not have 'item' or 'dict' label!"); - return null; - } - - } else { - MainRegistry.logger.error("Error reading recipe, label is not a valid data type!"); - return null; - } - - /* - * EVAL NAME - */ - if(array.get(1).isJsonPrimitive()) { - item = array.get(1).getAsString(); - } else { - MainRegistry.logger.error("Error reading recipe, item string is not a valid data type!"); - return null; - } - - /* - * EVAL STACKSIZE - */ - if(array.size() > 2 && array.get(2).isJsonPrimitive()) { - if(array.get(2).getAsJsonPrimitive().isNumber()) { - stacksize = Math.max(1, array.get(2).getAsJsonPrimitive().getAsNumber().intValue()); - } else { - MainRegistry.logger.error("Error reading recipe, stack size is not a valid data type!"); - return null; - } - } - - /* - * RESOLVE OREDICT - */ - if(dict) { - - if(OreDictionary.doesOreNameExist(item)) { - return new OreDictStack(item, stacksize); - } else { - - MainRegistry.logger.error("Error reading recipe, ore dict name does not exist!"); - return null; - } - - /* - * RESOLVE COMPARABLE - */ - } else { - - /* - * EVAL META - */ - if(array.size() > 3 && array.get(3).isJsonPrimitive()) { - if(array.get(3).getAsJsonPrimitive().isNumber()) { - meta = Math.max(0, array.get(3).getAsJsonPrimitive().getAsNumber().intValue()); - } else { - MainRegistry.logger.error("Error reading recipe, metadata is not a valid data type!"); - return null; - } - } - - Item it = (Item)Item.itemRegistry.getObject(item); - if(it == null) { - MainRegistry.logger.error("Item could not be found!"); - return null; - } - - return new ComparableStack(it, stacksize, meta); - } - } - - protected static void writeAStack(AStack astack, JsonWriter writer) throws IOException { - - writer.beginArray(); - writer.setIndent(""); - - if(astack instanceof ComparableStack) { - ComparableStack comp = (ComparableStack) astack; - - writer.value("item"); //ITEM identifier - writer.value(Item.itemRegistry.getNameForObject(comp.toStack().getItem())); //item name - if(comp.stacksize != 1) writer.value(comp.stacksize); //stack size - if(comp.meta > 0) writer.value(comp.meta); //metadata - } - - if(astack instanceof OreDictStack) { - OreDictStack ore = (OreDictStack) astack; - - writer.value("dict"); //DICT identifier - writer.value(ore.name); //dict name - writer.value(ore.stacksize); //stacksize - } - - writer.endArray(); - writer.setIndent(" "); - } -} 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 dd64e10ca..cf6ed2490 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -25,6 +25,7 @@ import com.hbm.inventory.material.MatDistribution; import com.hbm.inventory.recipes.*; import com.hbm.items.ModItems; import com.hbm.main.MainRegistry; +import com.hbm.util.Tuple.Pair; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -53,13 +54,19 @@ public abstract class SerializableRecipe { recipeHandlers.add(new ReformingRecipes()); recipeHandlers.add(new LiquefactionRecipes()); recipeHandlers.add(new SolidificationRecipes()); + recipeHandlers.add(new CokerRecipes()); recipeHandlers.add(new BreederRecipes()); recipeHandlers.add(new CyclotronRecipes()); recipeHandlers.add(new HadronRecipes()); recipeHandlers.add(new FuelPoolRecipes()); recipeHandlers.add(new MixerRecipes()); recipeHandlers.add(new OutgasserRecipes()); + recipeHandlers.add(new CompressorRecipes()); + recipeHandlers.add(new ElectrolyserFluidRecipes()); + recipeHandlers.add(new ElectrolyserMetalRecipes()); + recipeHandlers.add(new MatDistribution()); + recipeHandlers.add(new CustomMachineRecipes()); } public static void initialize() { @@ -164,7 +171,9 @@ public abstract class SerializableRecipe { writer.endArray(); //end recipe array writer.endObject(); //final '}' writer.close(); - } catch(Exception ex) { } + } catch(Exception ex) { + ex.printStackTrace(); + } } public void readRecipeFile(File file) { @@ -182,7 +191,7 @@ public abstract class SerializableRecipe { * JSON IO UTIL */ - protected static AStack readAStack(JsonArray array) { + public static AStack readAStack(JsonArray array) { try { String type = array.get(0).getAsString(); int stacksize = array.size() > 2 ? array.get(2).getAsInt() : 1; @@ -200,7 +209,7 @@ public abstract class SerializableRecipe { return new ComparableStack(ModItems.nothing); } - protected static AStack[] readAStackArray(JsonArray array) { + public static AStack[] readAStackArray(JsonArray array) { try { AStack[] items = new AStack[array.size()]; for(int i = 0; i < items.length; i++) { items[i] = readAStack((JsonArray) array.get(i)); } @@ -210,7 +219,7 @@ public abstract class SerializableRecipe { return new AStack[0]; } - protected static void writeAStack(AStack astack, JsonWriter writer) throws IOException { + public static void writeAStack(AStack astack, JsonWriter writer) throws IOException { writer.beginArray(); writer.setIndent(""); if(astack instanceof ComparableStack) { @@ -230,7 +239,7 @@ public abstract class SerializableRecipe { writer.setIndent(" "); } - protected static ItemStack readItemStack(JsonArray array) { + public static ItemStack readItemStack(JsonArray array) { try { Item item = (Item) Item.itemRegistry.getObject(array.get(0).getAsString()); int stacksize = array.size() > 1 ? array.get(1).getAsInt() : 1; @@ -241,7 +250,19 @@ public abstract class SerializableRecipe { return new ItemStack(ModItems.nothing); } - protected static ItemStack[] readItemStackArray(JsonArray array) { + public static Pair readItemStackChance(JsonArray array) { + try { + Item item = (Item) Item.itemRegistry.getObject(array.get(0).getAsString()); + int stacksize = array.size() > 2 ? array.get(1).getAsInt() : 1; + int meta = array.size() > 3 ? array.get(2).getAsInt() : 0; + float chance = array.get(array.size() - 1).getAsFloat(); + if(item != null) return new Pair(new ItemStack(item, stacksize, meta), chance); + } catch(Exception ex) { } + MainRegistry.logger.error("Error reading stack array " + array.toString() + " - defaulting to NOTHING item!"); + return new Pair(new ItemStack(ModItems.nothing), 1F); + } + + public static ItemStack[] readItemStackArray(JsonArray array) { try { ItemStack[] items = new ItemStack[array.size()]; for(int i = 0; i < items.length; i++) { items[i] = readItemStack((JsonArray) array.get(i)); } @@ -251,7 +272,17 @@ public abstract class SerializableRecipe { return new ItemStack[0]; } - protected static void writeItemStack(ItemStack stack, JsonWriter writer) throws IOException { + public static Pair[] readItemStackArrayChance(JsonArray array) { + try { + Pair[] items = new Pair[array.size()]; + for(int i = 0; i < items.length; i++) { items[i] = readItemStackChance((JsonArray) array.get(i)); } + return items; + } catch(Exception ex) { } + MainRegistry.logger.error("Error reading stack array " + array.toString()); + return new Pair[0]; + } + + public static void writeItemStack(ItemStack stack, JsonWriter writer) throws IOException { writer.beginArray(); writer.setIndent(""); writer.value(Item.itemRegistry.getNameForObject(stack.getItem())); //item name @@ -261,17 +292,29 @@ public abstract class SerializableRecipe { writer.setIndent(" "); } - protected static FluidStack readFluidStack(JsonArray array) { + public static void writeItemStackChance(Pair stack, JsonWriter writer) throws IOException { + writer.beginArray(); + writer.setIndent(""); + writer.value(Item.itemRegistry.getNameForObject(stack.getKey().getItem())); //item name + if(stack.getKey().stackSize != 1 || stack.getKey().getItemDamage() != 0) writer.value(stack.getKey().stackSize); //stack size + if(stack.getKey().getItemDamage() != 0) writer.value(stack.getKey().getItemDamage()); //metadata + writer.value(stack.value); //chance + writer.endArray(); + writer.setIndent(" "); + } + + public static FluidStack readFluidStack(JsonArray array) { try { FluidType type = Fluids.fromName(array.get(0).getAsString()); int fill = array.get(1).getAsInt(); - return new FluidStack(type, fill); + int pressure = array.size() < 3 ? 0 : array.get(2).getAsInt(); + return new FluidStack(type, fill, pressure); } catch(Exception ex) { } MainRegistry.logger.error("Error reading fluid array " + array.toString()); return new FluidStack(Fluids.NONE, 0); } - protected static FluidStack[] readFluidArray(JsonArray array) { + public static FluidStack[] readFluidArray(JsonArray array) { try { FluidStack[] fluids = new FluidStack[array.size()]; for(int i = 0; i < fluids.length; i++) { fluids[i] = readFluidStack((JsonArray) array.get(i)); } @@ -281,11 +324,12 @@ public abstract class SerializableRecipe { return new FluidStack[0]; } - protected static void writeFluidStack(FluidStack stack, JsonWriter writer) throws IOException { + public static void writeFluidStack(FluidStack stack, JsonWriter writer) throws IOException { writer.beginArray(); writer.setIndent(""); writer.value(stack.type.getName()); //fluid type writer.value(stack.fill); //amount in mB + if(stack.pressure != 0) writer.value(stack.pressure); writer.endArray(); writer.setIndent(" "); } diff --git a/src/main/java/com/hbm/items/IAnimatedItem.java b/src/main/java/com/hbm/items/IAnimatedItem.java new file mode 100644 index 000000000..e92ffa459 --- /dev/null +++ b/src/main/java/com/hbm/items/IAnimatedItem.java @@ -0,0 +1,14 @@ +package com.hbm.items; + +import com.hbm.render.anim.BusAnimation; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public interface IAnimatedItem { + + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack); +} diff --git a/src/main/java/com/hbm/items/ItemAmmoEnums.java b/src/main/java/com/hbm/items/ItemAmmoEnums.java index d42eb4015..8ef0638d7 100644 --- a/src/main/java/com/hbm/items/ItemAmmoEnums.java +++ b/src/main/java/com/hbm/items/ItemAmmoEnums.java @@ -748,6 +748,23 @@ public class ItemAmmoEnums { } } + public enum AmmoCoilgun implements IAmmoItemEnum { + STOCK("ammo_coilgun"), + DU("ammo_coilgun_du", AmmoItemTrait.PRO_HEAVY_DAMAGE, AmmoItemTrait.CON_HEAVY_WEAR), + RUBBER("ammo_coilgun_rubber", AmmoItemTrait.NEU_MORE_BOUNCY, AmmoItemTrait.CON_DAMAGE); + + private final Set traits; + private final String unloc; + + private AmmoCoilgun(String unloc, AmmoItemTrait... traits) { + this.traits = safeAssign(traits); + this.unloc = unloc; + } + + @Override public Set getTraits() { return traits; } + @Override public String getInternalName() { return unloc; } + } + public interface IAmmoItemEnum { public Set getTraits(); public String getInternalName(); diff --git a/src/main/java/com/hbm/items/ItemEnumMulti.java b/src/main/java/com/hbm/items/ItemEnumMulti.java index f3f81d997..8085625d1 100644 --- a/src/main/java/com/hbm/items/ItemEnumMulti.java +++ b/src/main/java/com/hbm/items/ItemEnumMulti.java @@ -1,6 +1,7 @@ package com.hbm.items; import java.util.List; +import java.util.Locale; import com.hbm.lib.RefStrings; import com.hbm.util.EnumUtil; @@ -54,7 +55,7 @@ public class ItemEnumMulti extends Item { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "." + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "." + num.name().toLowerCase(Locale.US)); } } else { this.itemIcon = reg.registerIcon(this.getIconString()); @@ -91,7 +92,7 @@ public class ItemEnumMulti extends Item { if(multiName) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); } else { return super.getUnlocalizedName(stack); } diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index 5db68070c..c1424f43f 100644 --- a/src/main/java/com/hbm/items/ItemEnums.java +++ b/src/main/java/com/hbm/items/ItemEnums.java @@ -19,7 +19,8 @@ public class ItemEnums { CRACK, COAL, WOOD, - WAX + WAX, + PARAFFIN } public static enum EnumBriquetteType { @@ -39,4 +40,16 @@ public class ItemEnums { ROPE, MUSTARDWILLOW } + + public static enum EnumAchievementType { + GOFISH, + ACID, + BALLS, + DIGAMMASEE, + DIGAMMAFEEL, + DIGAMMAKNOW, + DIGAMMAKAUAIMOHO, + DIGAMMAUPONTOP, + DIGAMMAFOROURRIGHT + } } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index c9708afcd..bf30755ad 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -17,7 +17,6 @@ import com.hbm.items.armor.*; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; import com.hbm.items.bomb.*; import com.hbm.items.food.*; -import com.hbm.items.food.ItemConserve.EnumFoodType; import com.hbm.items.machine.*; import com.hbm.items.machine.ItemFELCrystal.EnumWavelengths; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; @@ -359,6 +358,7 @@ public class ModItems { public static Item ingot_cadmium; public static Item powder_cadmium; public static Item powder_bismuth; + public static Item ingot_mud; public static Item ingot_lanthanium; public static Item ingot_actinium; @@ -512,6 +512,7 @@ public class ModItems { public static Item powder_paleogenite_tiny; public static Item powder_impure_osmiridium; public static Item powder_borax; + public static Item powder_chlorocalcite; public static Item powder_lanthanium; public static Item powder_actinium; @@ -551,6 +552,7 @@ public class ModItems { public static Item tank_steel; public static Item motor; public static Item motor_desh; + public static Item motor_bismuth; public static Item centrifuge_element; //public static Item centrifuge_tower; public static Item reactor_core; @@ -762,6 +764,11 @@ public class ModItems { public static Item stamp_9; public static Item stamp_50; + public static Item stamp_desh_357; + public static Item stamp_desh_44; + public static Item stamp_desh_9; + public static Item stamp_desh_50; + public static Item blades_steel; public static Item blades_titanium; public static Item blades_advanced_alloy; @@ -948,6 +955,7 @@ public class ModItems { public static Item med_bag; public static Item pill_iodine; public static Item plan_c; + public static Item pill_red; public static Item stealth_boy; public static Item gas_mask_filter; public static Item gas_mask_filter_mono; @@ -998,6 +1006,7 @@ public class ModItems { public static Item cap_sunset; public static Item cap_star; public static Item ring_pull; + public static Item bdcl; //public static Item canned_beef; //public static Item canned_tuna; //public static Item canned_mystery; @@ -1029,6 +1038,7 @@ public class ModItems { public static Item can_key; public static Item cart; + public static Item train; public static Item coin_creeper; public static Item coin_radiation; @@ -1244,11 +1254,13 @@ public class ModItems { public static Item dosimeter; public static Item geiger_counter; public static Item digamma_diagnostic; + public static Item pollution_detector; public static Item survey_scanner; public static Item mirror_tool; public static Item rbmk_tool; public static Item coltan_tool; public static Item power_net_tool; + public static Item coupling_tool; public static Item template_folder; public static Item journal_pip; @@ -1493,6 +1505,7 @@ public class ModItems { public static ItemEnumMulti ammo_dart; public static ItemEnumMulti ammo_stinger_rocket; public static ItemEnumMulti ammo_luna_sniper; + public static ItemEnumMulti ammo_coilgun; public static Item ammo_cell; @@ -1544,8 +1557,10 @@ public class ModItems { public static Item gun_uzi_saturnite; public static Item gun_uzi_saturnite_silencer; public static Item gun_uboinik; + public static Item gun_remington; public static Item gun_spas12; public static Item gun_supershotgun; + public static Item gun_benelli; public static Item gun_ks23; public static Item gun_sauer; public static Item gun_lever_action; @@ -1558,6 +1573,7 @@ public class ModItems { public static Item gun_b92; public static Item gun_b92_ammo; public static Item gun_b93; + public static Item gun_coilgun; public static Item gun_xvl1456; public static Item gun_xvl1456_ammo; public static Item gun_osipr; @@ -1567,6 +1583,7 @@ public class ModItems { public static Item gun_immolator_ammo; public static Item gun_flamer; public static Item gun_cryolator; + public static Item gun_cryocannon; public static Item gun_cryolator_ammo; public static Item gun_fireext; public static Item gun_mp; @@ -1600,6 +1617,7 @@ public class ModItems { public static Item gun_glass_cannon; public static Item gun_m2; public static Item gun_lunatic_marksman; + public static Item gun_uac_pistol; // We'll figure this part out later //public static Item gun_llr, gun_mlr, gun_hlr, gun_twr, gun_lunatic, gun_lunatic_shotty; @@ -1609,6 +1627,7 @@ public class ModItems { public static Item crucible; public static Item stick_dynamite; + public static Item stick_dynamite_fishing; public static Item stick_tnt; public static Item stick_semtex; public static Item stick_c4; @@ -1658,7 +1677,7 @@ public class ModItems { public static Item grenade_mirv; public static Item grenade_breach; public static Item grenade_burst; - + public static Item nuclear_waste_pearl; public static Item weaponized_starblaster_cell; @@ -1687,6 +1706,9 @@ public class ModItems { public static Item marshmallow; public static Item cheese; public static Item quesadilla; + public static Item glyphid_meat; + public static Item glyphid_meat_grilled; + public static Item egg_glyphid; public static Item med_ipecac; public static Item med_ptsd; @@ -1790,6 +1812,7 @@ public class ModItems { public static Item energy_core; public static Item fuse; public static Item redcoil_capacitor; + public static Item euphemium_capacitor; public static Item titanium_filter; //by using these in crafting table recipes, i'm running the risk of making my recipes too greg-ian (which i don't like) //in the event that i forget about the meaning of the word "sparingly", please throw a brick at my head @@ -1802,6 +1825,7 @@ public class ModItems { public static Item chemistry_set_boron; public static Item blowtorch; public static Item acetylene_torch; + public static Item boltgun; public static Item overfuse; public static Item arc_electrode; public static Item arc_electrode_burnt; @@ -1944,6 +1968,10 @@ public class ModItems { public static Item bj_plate_jetpack; public static Item bj_legs; public static Item bj_boots; + public static Item envsuit_helmet; + public static Item envsuit_plate; + public static Item envsuit_legs; + public static Item envsuit_boots; public static Item hev_helmet; public static Item hev_plate; public static Item hev_legs; @@ -2153,6 +2181,7 @@ public class ModItems { public static Item gas_tester; public static Item defuser_gold; public static Item ballistic_gauntlet; + public static Item night_vision; public static Item hazmat_helmet; public static Item hazmat_plate; @@ -2305,7 +2334,9 @@ public class ModItems { public static Item door_metal; public static Item door_office; public static Item door_bunker; - + + public static Item sliding_blast_door_skin; + public static Item record_lc; public static Item record_ss; public static Item record_vc; @@ -2429,18 +2460,13 @@ public class ModItems { public static Item nothing; public static Item void_anim; + public static Item achievement_icon; public static Item bob_metalworks; public static Item bob_assembly; public static Item bob_chemistry; public static Item bob_oil; public static Item bob_nuclear; - public static Item digamma_see; - public static Item digamma_feel; - public static Item digamma_know; - public static Item digamma_kauai_moho; - public static Item digamma_up_on_top; - public static Item mysteryshovel; public static Item memory; @@ -2650,6 +2676,7 @@ public class ModItems { ingot_cadmium = new Item().setUnlocalizedName("ingot_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_cadmium"); powder_cadmium = new Item().setUnlocalizedName("powder_cadmium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_cadmium"); powder_bismuth = new Item().setUnlocalizedName("powder_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_bismuth"); + ingot_mud = new Item().setUnlocalizedName("ingot_mud").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":ingot_mud"); ore_byproduct = new ItemByproduct().setUnlocalizedName("ore_byproduct").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":byproduct"); @@ -2903,6 +2930,7 @@ public class ModItems { powder_paleogenite_tiny = new Item().setUnlocalizedName("powder_paleogenite_tiny").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_paleogenite_tiny"); powder_impure_osmiridium = new Item().setUnlocalizedName("powder_impure_osmiridium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_impure_osmiridium"); powder_borax = new Item().setUnlocalizedName("powder_borax").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_borax"); + powder_chlorocalcite = new Item().setUnlocalizedName("powder_chlorocalcite").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":powder_chlorocalcite"); fragment_neodymium = new Item().setUnlocalizedName("fragment_neodymium").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_neodymium"); fragment_cobalt = new Item().setUnlocalizedName("fragment_cobalt").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":fragment_cobalt"); @@ -2925,6 +2953,7 @@ public class ModItems { tank_steel = new Item().setUnlocalizedName("tank_steel").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":tank_steel"); motor = new Item().setUnlocalizedName("motor").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor"); motor_desh = new Item().setUnlocalizedName("motor_desh").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_desh"); + motor_bismuth = new Item().setUnlocalizedName("motor_bismuth").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":motor_bismuth"); centrifuge_element = new Item().setUnlocalizedName("centrifuge_element").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_element"); //centrifuge_tower = new Item().setUnlocalizedName("centrifuge_tower").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":centrifuge_tower"); reactor_core = new Item().setUnlocalizedName("reactor_core").setCreativeTab(MainRegistry.partsTab).setTextureName(RefStrings.MODID + ":reactor_core"); @@ -3215,6 +3244,11 @@ public class ModItems { stamp_9 = new ItemStamp(1000, StampType.C9).setUnlocalizedName("stamp_9").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_9"); stamp_50 = new ItemStamp(1000, StampType.C50).setUnlocalizedName("stamp_50").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_50"); + stamp_desh_357 = new ItemStamp(0, StampType.C357).setUnlocalizedName("stamp_desh_357").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_357_desh"); + stamp_desh_44 = new ItemStamp(0, StampType.C44).setUnlocalizedName("stamp_desh_44").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_44_desh"); + stamp_desh_9 = new ItemStamp(0, StampType.C9).setUnlocalizedName("stamp_desh_9").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_9_desh"); + stamp_desh_50 = new ItemStamp(0, StampType.C50).setUnlocalizedName("stamp_desh_50").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":stamp_50_desh"); + blades_steel = new ItemBlades(200).setUnlocalizedName("blades_steel").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":blades_steel"); blades_titanium = new ItemBlades(350).setUnlocalizedName("blades_titanium").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":blades_titanium"); blades_advanced_alloy = new ItemBlades(700).setUnlocalizedName("blades_advanced_alloy").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":blades_advanced_alloy"); @@ -3274,7 +3308,7 @@ public class ModItems { }).setUnlocalizedName("iv_blood").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":iv_blood"); iv_xp_empty = new ItemSimpleConsumable().setUseActionServer((stack, user) -> { - if(user.experienceTotal >= 100) { + if(EnchantmentUtil.getTotalExperience(user) >= 100) { ItemSimpleConsumable.giveSoundAndDecrement(stack, user, "hbm:item.syringe", new ItemStack(ModItems.iv_xp)); EnchantmentUtil.setExperience(user, EnchantmentUtil.getTotalExperience(user) - 100); } @@ -3309,6 +3343,7 @@ public class ModItems { five_htp = new ItemPill(0).setUnlocalizedName("five_htp").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":5htp"); pill_iodine = new ItemPill(0).setUnlocalizedName("pill_iodine").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pill_iodine"); plan_c = new ItemPill(0).setUnlocalizedName("plan_c").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":plan_c"); + pill_red = new ItemPill(0).setUnlocalizedName("pill_red").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pill_red"); stealth_boy = new ItemStarterKit().setUnlocalizedName("stealth_boy").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":stealth_boy"); gas_mask_filter = new ItemFilter().setUnlocalizedName("gas_mask_filter").setTextureName(RefStrings.MODID + ":gas_mask_filter"); gas_mask_filter_mono = new ItemFilter().setUnlocalizedName("gas_mask_filter_mono").setTextureName(RefStrings.MODID + ":gas_mask_filter_mono"); @@ -3321,6 +3356,7 @@ public class ModItems { cbt_device = new ItemSyringe().setUnlocalizedName("cbt_device").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":cbt_device"); cigarette = new ItemCigarette().setUnlocalizedName("cigarette").setFull3D().setMaxStackSize(16).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cigarette"); crackpipe = new ItemCigarette().setUnlocalizedName("crackpipe").setFull3D().setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":crackpipe"); + bdcl = new ItemBDCL().setUnlocalizedName("bdcl").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":bdcl"); attachment_mask = new ItemModGasmask().setUnlocalizedName("attachment_mask").setTextureName(RefStrings.MODID + ":attachment_mask"); attachment_mask_mono = new ItemModGasmask().setUnlocalizedName("attachment_mask_mono").setTextureName(RefStrings.MODID + ":attachment_mask_mono"); @@ -3380,6 +3416,7 @@ public class ModItems { gas_tester = new ItemModSensor().setUnlocalizedName("gas_tester").setTextureName(RefStrings.MODID + ":gas_tester"); defuser_gold = new ItemModDefuser().setUnlocalizedName("defuser_gold").setTextureName(RefStrings.MODID + ":defuser_gold"); ballistic_gauntlet = new ItemModTwoKick().setUnlocalizedName("ballistic_gauntlet").setTextureName(RefStrings.MODID + ":ballistic_gauntlet"); + night_vision = new ItemModNightVision().setUnlocalizedName("night_vision").setTextureName(RefStrings.MODID + ":night_vision"); cap_nuka = new Item().setUnlocalizedName("cap_nuka").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_nuka"); cap_quantum = new Item().setUnlocalizedName("cap_quantum").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cap_quantum"); @@ -3418,38 +3455,11 @@ public class ModItems { coffee = new ItemEnergy().setUnlocalizedName("coffee").setTextureName(RefStrings.MODID + ":coffee"); coffee_radium = new ItemEnergy().setUnlocalizedName("coffee_radium").setTextureName(RefStrings.MODID + ":coffee_radium"); chocolate = new ItemPill(0).setUnlocalizedName("chocolate").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":chocolate"); - - //canned_beef = new ItemLemon(8, 5, false).setUnlocalizedName("canned_beef").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_beef"); - //canned_tuna = new ItemLemon(4, 5, false).setUnlocalizedName("canned_tuna").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_tuna"); - //canned_mystery = new ItemLemon(6, 5, false).setUnlocalizedName("canned_mystery").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_mystery"); - //canned_pashtet = new ItemLemon(4, 5, false).setUnlocalizedName("canned_pashtet").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_pashtet"); - //canned_cheese = new ItemLemon(3, 5, false).setUnlocalizedName("canned_cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_cheese"); - //canned_jizz = new ItemLemon(15, 5, false).setUnlocalizedName("canned_jizz").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_jizz"); - //canned_milk = new ItemLemon(5, 5, false).setUnlocalizedName("canned_milk").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_milk"); - //canned_ass = new ItemLemon(6, 5, false).setUnlocalizedName("canned_ass").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_ass"); - //canned_pizza = new ItemLemon(8, 5, false).setUnlocalizedName("canned_pizza").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_pizza"); - //canned_tube = new ItemLemon(2, 5, false).setUnlocalizedName("canned_tube").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_tube"); - //canned_tomato = new ItemLemon(4, 5, false).setUnlocalizedName("canned_tomato").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_tomato"); - //canned_asbestos = new ItemLemon(7, 5, false).setUnlocalizedName("canned_asbestos").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_asbestos"); - //canned_bhole = new ItemLemon(10, 5, false).setUnlocalizedName("canned_bhole").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_bhole"); - //canned_hotdogs = new ItemLemon(5, 5, false).setUnlocalizedName("canned_hotdogs").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_hotdogs"); - //canned_leftovers = new ItemLemon(1, 5, false).setUnlocalizedName("canned_leftovers").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_leftovers"); - //canned_yogurt = new ItemLemon(3, 5, false).setUnlocalizedName("canned_yogurt").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_yogurt"); - //canned_stew = new ItemLemon(5, 5, false).setUnlocalizedName("canned_stew").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_stew"); - //canned_chinese = new ItemLemon(6, 5, false).setUnlocalizedName("canned_chinese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_chinese"); - //canned_oil = new ItemLemon(3, 5, false).setUnlocalizedName("canned_oil").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_oil"); - //canned_fist = new ItemLemon(6, 5, false).setUnlocalizedName("canned_fist").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_fist"); - //canned_spam = new ItemLemon(8, 5, false).setUnlocalizedName("canned_spam").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_spam"); - //canned_fried = new ItemLemon(10, 5, false).setUnlocalizedName("canned_fried").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_fried"); - //canned_napalm = new ItemLemon(6, 5, false).setUnlocalizedName("canned_napalm").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_napalm"); - //canned_diesel = new ItemLemon(6, 5, false).setUnlocalizedName("canned_diesel").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_diesel"); - //canned_kerosene = new ItemLemon(6, 5, false).setUnlocalizedName("canned_kerosene").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_kerosene"); - //canned_recursion = new ItemLemon(1, 5, false).setUnlocalizedName("canned_recursion").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_recursion"); - //canned_bark = new ItemLemon(2, 5, false).setUnlocalizedName("canned_bark").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned_bark"); canned_conserve = (ItemEnumMulti) new ItemConserve().setUnlocalizedName("canned_conserve").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":canned"); can_key = new Item().setUnlocalizedName("can_key").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":can_key"); cart = new ItemModMinecart().setUnlocalizedName("cart"); + train = new ItemTrain().setUnlocalizedName("train"); coin_creeper = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_creeper").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_creeper"); coin_radiation = new ItemCustomLore().setRarity(EnumRarity.uncommon).setUnlocalizedName("coin_radiation").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coin_radiation"); @@ -4100,6 +4110,7 @@ public class ModItems { ammo_fuel = new ItemAmmo(AmmoFlamethrower.class).setUnlocalizedName("ammo_fuel"); ammo_fireext = new ItemAmmo(AmmoFireExt.class).setUnlocalizedName("ammo_fireext"); ammo_cell = new ItemCustomLore().setCreativeTab(MainRegistry.weaponTab).setUnlocalizedName("ammo_cell").setMaxStackSize(16); + ammo_coilgun = new ItemAmmo(AmmoCoilgun.class).setUnlocalizedName("ammo_coilgun"); ammo_dart = (ItemEnumMulti) new ItemAmmo(AmmoDart.class).setUnlocalizedName("ammo_dart").setMaxStackSize(16); ammo_stinger_rocket = new ItemAmmo(AmmoStinger.class).setUnlocalizedName("ammo_stinger_rocket"); ammo_luna_sniper = new ItemAmmo(AmmoLunaticSniper.class).setUnlocalizedName("ammo_luna_sniper"); @@ -4151,20 +4162,23 @@ public class ModItems { gun_uzi_saturnite = new ItemGunBase(Gun22LRFactory.getSaturniteConfig()).setUnlocalizedName("gun_uzi_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite"); gun_uzi_saturnite_silencer = new ItemGunBase(Gun22LRFactory.getSaturniteConfig().silenced()).setUnlocalizedName("gun_uzi_saturnite_silencer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uzi_saturnite_silencer"); gun_uboinik = new ItemGunBase(Gun12GaugeFactory.getUboinikConfig()).setUnlocalizedName("gun_uboinik").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); + gun_remington = new ItemGunBase(Gun12GaugeFactory.getRemington870Config()).setUnlocalizedName("gun_remington").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); gun_spas12 = new ItemGunBase(Gun12GaugeFactory.getSpas12Config(), Gun12GaugeFactory.getSpas12AltConfig()).setUnlocalizedName("gun_spas12").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); + gun_benelli = new ItemGunBase(Gun12GaugeFactory.getBenelliModConfig()).setUnlocalizedName("gun_benelli").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_spas12"); gun_supershotgun = new ItemGunShotty(Gun12GaugeFactory.getShottyConfig()).setUnlocalizedName("gun_supershotgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_ks23 = new ItemGunBase(Gun4GaugeFactory.getKS23Config()).setUnlocalizedName("gun_ks23").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_sauer = new ItemGunBase(Gun4GaugeFactory.getSauerConfig()).setUnlocalizedName("gun_sauer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_uboinik"); gun_lever_action = new ItemGunBase(Gun20GaugeFactory.getMareConfig()).setUnlocalizedName("gun_lever_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action"); gun_lever_action_dark = new ItemGunBase(Gun20GaugeFactory.getMareDarkConfig()).setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); gun_lever_action_sonata = new GunLeverActionS().setUnlocalizedName("gun_lever_action_sonata").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_lever_action_sonata"); - gun_bolt_action = new ItemGunBase(Gun20GaugeFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); - gun_bolt_action_green = new ItemGunBase(Gun20GaugeFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); - gun_bolt_action_saturnite = new ItemGunBase(Gun20GaugeFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); + gun_bolt_action = new ItemGunBase(Gun762mmFactory.getBoltConfig()).setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action"); + gun_bolt_action_green = new ItemGunBase(Gun762mmFactory.getBoltGreenConfig()).setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); + gun_bolt_action_saturnite = new ItemGunBase(Gun762mmFactory.getBoltSaturniteConfig()).setUnlocalizedName("gun_bolt_action_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolt_action_saturnite"); gun_mymy = new ItemGunBase(GunDartFactory.getMymyConfig()).setUnlocalizedName("gun_mymy").setFull3D().setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_mymy"); 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_b93 = new GunB93().setUnlocalizedName("gun_b93").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b93"); + gun_coilgun = new ItemCoilgun(GunEnergyFactory.getCoilgunConfig()).setUnlocalizedName("gun_coilgun").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_coilgun"); gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); gun_xvl1456 = new ItemGunGauss(GunGaussFactory.getXVLConfig(), GunGaussFactory.getChargedConfig()).setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_xvl1456"); gun_osipr_ammo = new Item().setUnlocalizedName("gun_osipr_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_osipr_ammo"); @@ -4175,6 +4189,7 @@ public class ModItems { gun_flamer = new ItemGunBase(GunEnergyFactory.getFlamerConfig()).setUnlocalizedName("gun_flamer").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_flamer"); gun_cryolator_ammo = new Item().setUnlocalizedName("gun_cryolator_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator_ammo"); gun_cryolator = new GunCryolator().setUnlocalizedName("gun_cryolator").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryolator"); + gun_cryocannon = new ItemCryoCannon(GunEnergyFactory.getCryoCannonConfig()).setUnlocalizedName("gun_cryocannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_cryocannon"); gun_fireext = new ItemGunBase(GunEnergyFactory.getExtConfig()).setUnlocalizedName("gun_fireext").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_fireext"); gun_mp = new ItemGunBase(Gun556mmFactory.getEuphieConfig()).setUnlocalizedName("gun_mp").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_pm"); gun_bolter = new ItemGunBase(Gun75BoltFactory.getBolterConfig()).setUnlocalizedName("gun_bolter").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_bolter"); @@ -4206,11 +4221,13 @@ public class ModItems { gun_glass_cannon = new ItemEnergyGunBase(GunPoweredFactory.getGlassCannonConfig()).setFull3D().setUnlocalizedName("gun_glass_cannon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_m2 = new ItemGunBase(Gun50BMGFactory.getM2Config()).setFull3D().setUnlocalizedName("gun_m2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_darter"); gun_lunatic_marksman = new ItemGunBase(Gun50BMGFactory.getLunaticMarksman()).setFull3D().setUnlocalizedName("gun_lunatic_marksman").setCreativeTab(MainRegistry.weaponTab); + gun_uac_pistol = new ItemGunBase(Gun45ACPFactory.getUACPistolConfig()).setFull3D().setUnlocalizedName("gun_uac_pistol").setCreativeTab(MainRegistry.weaponTab); ToolMaterial matCrucible = EnumHelper.addToolMaterial("CRUCIBLE", 10, 3, 50.0F, 100.0F, 0); crucible = new ItemCrucible(5000, 1F, matCrucible).setUnlocalizedName("crucible").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":crucible"); stick_dynamite = new ItemGrenade(3).setUnlocalizedName("stick_dynamite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_dynamite"); + stick_dynamite_fishing = new ItemGrenadeFishing(3).setUnlocalizedName("stick_dynamite_fishing").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_dynamite_fishing"); stick_tnt = new Item().setUnlocalizedName("stick_tnt").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_tnt"); stick_semtex = new Item().setUnlocalizedName("stick_semtex").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_semtex"); stick_c4 = new Item().setUnlocalizedName("stick_c4").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":stick_c4"); @@ -4295,6 +4312,9 @@ public class ModItems { cheese = new ItemLemon(5, 10, false).setUnlocalizedName("cheese").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":cheese"); quesadilla = new ItemLemon(8, 10, false).setUnlocalizedName("cheese_quesadilla").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":quesadilla"); mucho_mango = new ItemMuchoMango(10).setUnlocalizedName("mucho_mango").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mucho_mango"); + glyphid_meat = new ItemLemon(3, 3, true).setUnlocalizedName("glyphid_meat").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat"); + glyphid_meat_grilled = new ItemLemon(8, 8, true).setPotionEffect(Potion.damageBoost.id, 180, 1, 1F).setUnlocalizedName("glyphid_meat_grilled").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glyphid_meat_grilled"); + egg_glyphid = new Item().setUnlocalizedName("egg_glyphid").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":egg_glyphid"); defuser = new ItemTooling(ToolType.DEFUSER, 100).setUnlocalizedName("defuser").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.nukeTab).setTextureName(RefStrings.MODID + ":defuser"); reacher = new Item().setUnlocalizedName("reacher").setMaxStackSize(1).setFull3D().setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":reacher"); @@ -4398,6 +4418,7 @@ public class ModItems { energy_core = new ItemBattery(10000000, 0, 1000).setUnlocalizedName("energy_core").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":energy_core"); fuse = new ItemCustomLore().setUnlocalizedName("fuse").setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":fuse"); redcoil_capacitor = new ItemCapacitor(10).setUnlocalizedName("redcoil_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor"); + euphemium_capacitor = new ItemCustomLore().setRarity(EnumRarity.epic).setUnlocalizedName("euphemium_capacitor").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":redcoil_capacitor_euphemium"); titanium_filter = new ItemCapacitor(6 * 60 * 60 * 20).setUnlocalizedName("titanium_filter").setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setTextureName(RefStrings.MODID + ":titanium_filter"); screwdriver = new ItemTooling(ToolType.SCREWDRIVER, 100).setUnlocalizedName("screwdriver"); screwdriver_desh = new ItemTooling(ToolType.SCREWDRIVER, 0).setUnlocalizedName("screwdriver_desh"); @@ -4408,6 +4429,7 @@ public class ModItems { chemistry_set_boron = new ItemCraftingDegradation(0).setUnlocalizedName("chemistry_set_boron"); blowtorch = new ItemBlowtorch().setUnlocalizedName("blowtorch"); acetylene_torch = new ItemBlowtorch().setUnlocalizedName("acetylene_torch"); + boltgun = new ItemBoltgun().setUnlocalizedName("boltgun"); overfuse = new ItemCustomLore().setUnlocalizedName("overfuse").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":overfuse"); arc_electrode = new ItemCustomLore().setUnlocalizedName("arc_electrode").setMaxDamage(250).setCreativeTab(MainRegistry.controlTab).setMaxStackSize(1).setCreativeTab(MainRegistry.controlTab).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode"); arc_electrode_burnt = new Item().setUnlocalizedName("arc_electrode_burnt").setMaxStackSize(1).setFull3D().setTextureName(RefStrings.MODID + ":arc_electrode_burnt"); @@ -4563,11 +4585,13 @@ public class ModItems { dosimeter = new ItemDosimeter().setUnlocalizedName("dosimeter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":dosimeter"); geiger_counter = new ItemGeigerCounter().setUnlocalizedName("geiger_counter").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":geiger_counter"); digamma_diagnostic = new ItemDigammaDiagnostic().setUnlocalizedName("digamma_diagnostic").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":digamma_diagnostic"); + pollution_detector = new ItemPollutionDetector().setUnlocalizedName("pollution_detector").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":pollution_detector"); survey_scanner = new ItemSurveyScanner().setUnlocalizedName("survey_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":survey_scanner"); mirror_tool = new ItemMirrorTool().setUnlocalizedName("mirror_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":mirror_tool"); rbmk_tool = new ItemRBMKTool().setUnlocalizedName("rbmk_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":rbmk_tool"); coltan_tool = new ItemColtanCompass().setUnlocalizedName("coltan_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coltass"); power_net_tool = new ItemPowerNetTool().setUnlocalizedName("power_net_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":power_net_tool"); + coupling_tool = new ItemCouplingTool().setUnlocalizedName("coupling_tool").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":coupling_tool"); key = new ItemKey().setUnlocalizedName("key").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":key"); key_red = new ItemCustomLore().setUnlocalizedName("key_red").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":key_red"); @@ -4840,6 +4864,20 @@ public class ModItems { bj_legs = new ArmorBJ(aMatBJ, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_legs").setTextureName(RefStrings.MODID + ":bj_legs"); bj_boots = new ArmorBJ(aMatBJ, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 10000000, 10000, 1000, 100).cloneStats((ArmorFSB) bj_helmet).setUnlocalizedName("bj_boots").setTextureName(RefStrings.MODID + ":bj_boots"); + ArmorMaterial aMatEnv = EnumHelper.addArmorMaterial("HBM_ENV", 150, new int[] { 3, 8, 6, 3 }, 100); + aMatEnv.customCraftingMaterial = ModItems.plate_armor_hev; + envsuit_helmet = new ArmorEnvsuit(aMatEnv, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).setMod(0.5F).setThreshold(2.0F) + .addEffect(new PotionEffect(Potion.moveSpeed.id, 20, 1)) + .addEffect(new PotionEffect(Potion.jump.id, 20, 0)) + .addResistance("fall", 0.75F) + .addResistance("monoxide", 0F) + .addResistance("onFire", 0F) + .hides(EnumPlayerPart.HAT) + .setUnlocalizedName("envsuit_helmet").setTextureName(RefStrings.MODID + ":hev_helmet"); + envsuit_plate = new ArmorEnvsuit(aMatEnv, 1, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_plate").setTextureName(RefStrings.MODID + ":hev_plate"); + envsuit_legs = new ArmorEnvsuit(aMatEnv, 2, RefStrings.MODID + ":textures/armor/starmetal_2.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_legs").setTextureName(RefStrings.MODID + ":hev_legs"); + envsuit_boots = new ArmorEnvsuit(aMatEnv, 3, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).cloneStats((ArmorFSB) envsuit_helmet).setUnlocalizedName("envsuit_boots").setTextureName(RefStrings.MODID + ":hev_boots"); + ArmorMaterial aMatHEV = EnumHelper.addArmorMaterial("HBM_HEV", 150, new int[] { 3, 8, 6, 3 }, 100); aMatHEV.customCraftingMaterial = ModItems.plate_armor_hev; hev_helmet = new ArmorHEV(aMatHEV, 0, RefStrings.MODID + ":textures/armor/starmetal_1.png", 1000000, 10000, 2500, 0).setMod(0.20F).setCap(4.0F).setThreshold(2.0F) @@ -5322,13 +5360,15 @@ public class ModItems { door_office = new ItemModDoor().setUnlocalizedName("door_office").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_office"); door_bunker = new ItemModDoor().setUnlocalizedName("door_bunker").setCreativeTab(MainRegistry.blockTab).setTextureName(RefStrings.MODID + ":door_bunker"); + sliding_blast_door_skin = new ItemSlidingBlastDoorSkin().setUnlocalizedName("sliding_blast_door_skin").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":sliding_blast_door_default"); + record_lc = new ItemModRecord("lc").setUnlocalizedName("record_lc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_lc"); record_ss = new ItemModRecord("ss").setUnlocalizedName("record_ss").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_ss"); record_vc = new ItemModRecord("vc").setUnlocalizedName("record_vc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_vc"); record_glass = new ItemModRecord("glass").setUnlocalizedName("record_glass").setCreativeTab(null).setTextureName(RefStrings.MODID + ":record_glass"); book_guide = new ItemGuideBook().setUnlocalizedName("book_guide").setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":book_guide"); - book_lore = new ItemBookLore().setUnlocalizedName("book_lore").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); + book_lore = new ItemBookLore().setUnlocalizedName("book_lore").setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_pages"); holotape_image = new ItemHolotapeImage().setUnlocalizedName("holotape_image").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape"); holotape_damaged = new Item().setUnlocalizedName("holotape_damaged").setCreativeTab(null).setTextureName(RefStrings.MODID + ":holotape_damaged"); @@ -5437,25 +5477,22 @@ public class ModItems { nothing = new Item().setUnlocalizedName("nothing").setTextureName(RefStrings.MODID + ":nothing"); void_anim = new Item().setUnlocalizedName("void_anim").setTextureName(RefStrings.MODID + ":void_anim"); + + achievement_icon = new ItemEnumMulti(ItemEnums.EnumAchievementType.class, true, true).setUnlocalizedName("achievement_icon"); bob_metalworks = new Item().setUnlocalizedName("bob_metalworks").setTextureName(RefStrings.MODID + ":bob_metalworks"); bob_assembly = new Item().setUnlocalizedName("bob_assembly").setTextureName(RefStrings.MODID + ":bob_assembly"); bob_chemistry = new Item().setUnlocalizedName("bob_chemistry").setTextureName(RefStrings.MODID + ":bob_chemistry"); bob_oil = new Item().setUnlocalizedName("bob_oil").setTextureName(RefStrings.MODID + ":bob_oil"); bob_nuclear = new Item().setUnlocalizedName("bob_nuclear").setTextureName(RefStrings.MODID + ":bob_nuclear"); - digamma_see = new Item().setUnlocalizedName("digamma_see").setTextureName(RefStrings.MODID + ":digamma_see"); - digamma_feel = new Item().setUnlocalizedName("digamma_feel").setTextureName(RefStrings.MODID + ":digamma_feel"); - digamma_know = new Item().setUnlocalizedName("digamma_know").setTextureName(RefStrings.MODID + ":digamma_know"); - digamma_kauai_moho = new Item().setUnlocalizedName("digamma_kauai_moho").setTextureName(RefStrings.MODID + ":digamma_kauai_moho"); - digamma_up_on_top = new Item().setUnlocalizedName("digamma_up_on_top").setTextureName(RefStrings.MODID + ":digamma_up_on_top"); mysteryshovel = new ItemMS().setUnlocalizedName("mysteryshovel").setFull3D().setMaxStackSize(1).setTextureName(RefStrings.MODID + ":cursed_shovel"); memory = new ItemBattery(Long.MAX_VALUE / 100L, 100000000000000L, 100000000000000L).setUnlocalizedName("memory").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mo8_anim"); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid)); - FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.mud_fluid, 1000), new ItemStack(ModItems.bucket_mud), new ItemStack(Items.bucket)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.acid_fluid, 1000), new ItemStack(ModItems.bucket_acid), new ItemStack(Items.bucket)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.toxic_fluid, 1000), new ItemStack(ModItems.bucket_toxic), new ItemStack(Items.bucket)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.schrabidic_fluid, 1000), new ItemStack(ModItems.bucket_schrabidic_acid), new ItemStack(Items.bucket)); + FluidContainerRegistry.registerFluidContainer(new FluidStack(ModBlocks.sulfuric_acid_fluid, 1000), new ItemStack(ModItems.bucket_sulfuric_acid), new ItemStack(Items.bucket)); BucketHandler.INSTANCE.buckets.put(ModBlocks.mud_block, ModItems.bucket_mud); BucketHandler.INSTANCE.buckets.put(ModBlocks.acid_block, ModItems.bucket_acid); BucketHandler.INSTANCE.buckets.put(ModBlocks.toxic_block, ModItems.bucket_toxic); @@ -5538,6 +5575,7 @@ public class ModItems { //GameRegistry.registerItem(ingot_pet, ingot_pet.getUnlocalizedName()); GameRegistry.registerItem(ingot_pc, ingot_pc.getUnlocalizedName()); GameRegistry.registerItem(ingot_pvc, ingot_pvc.getUnlocalizedName()); + GameRegistry.registerItem(ingot_mud, ingot_mud.getUnlocalizedName()); GameRegistry.registerItem(ingot_schraranium, ingot_schraranium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidium, ingot_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(ingot_schrabidate, ingot_schrabidate.getUnlocalizedName()); @@ -5707,6 +5745,7 @@ public class ModItems { GameRegistry.registerItem(powder_paleogenite_tiny, powder_paleogenite_tiny.getUnlocalizedName()); GameRegistry.registerItem(powder_impure_osmiridium, powder_impure_osmiridium.getUnlocalizedName()); GameRegistry.registerItem(powder_borax, powder_borax.getUnlocalizedName()); + GameRegistry.registerItem(powder_chlorocalcite, powder_chlorocalcite.getUnlocalizedName()); GameRegistry.registerItem(powder_yellowcake, powder_yellowcake.getUnlocalizedName()); GameRegistry.registerItem(powder_beryllium, powder_beryllium.getUnlocalizedName()); GameRegistry.registerItem(powder_dura_steel, powder_dura_steel.getUnlocalizedName()); @@ -5978,6 +6017,7 @@ public class ModItems { GameRegistry.registerItem(tank_steel, tank_steel.getUnlocalizedName()); GameRegistry.registerItem(motor, motor.getUnlocalizedName()); GameRegistry.registerItem(motor_desh, motor_desh.getUnlocalizedName()); + GameRegistry.registerItem(motor_bismuth, motor_bismuth.getUnlocalizedName()); GameRegistry.registerItem(centrifuge_element, centrifuge_element.getUnlocalizedName()); //GameRegistry.registerItem(centrifuge_tower, centrifuge_tower.getUnlocalizedName()); //GameRegistry.registerItem(magnet_dee, magnet_dee.getUnlocalizedName()); @@ -6369,6 +6409,11 @@ public class ModItems { GameRegistry.registerItem(stamp_44, stamp_44.getUnlocalizedName()); GameRegistry.registerItem(stamp_9, stamp_9.getUnlocalizedName()); GameRegistry.registerItem(stamp_50, stamp_50.getUnlocalizedName()); + + GameRegistry.registerItem(stamp_desh_357, stamp_desh_357.getUnlocalizedName()); + GameRegistry.registerItem(stamp_desh_44, stamp_desh_44.getUnlocalizedName()); + GameRegistry.registerItem(stamp_desh_9, stamp_desh_9.getUnlocalizedName()); + GameRegistry.registerItem(stamp_desh_50, stamp_desh_50.getUnlocalizedName()); //Molds GameRegistry.registerItem(mold_base, mold_base.getUnlocalizedName()); @@ -6422,6 +6467,7 @@ public class ModItems { //Machine Items GameRegistry.registerItem(fuse, fuse.getUnlocalizedName()); GameRegistry.registerItem(redcoil_capacitor, redcoil_capacitor.getUnlocalizedName()); + GameRegistry.registerItem(euphemium_capacitor, euphemium_capacitor.getUnlocalizedName()); GameRegistry.registerItem(titanium_filter, titanium_filter.getUnlocalizedName()); GameRegistry.registerItem(screwdriver, screwdriver.getUnlocalizedName()); GameRegistry.registerItem(screwdriver_desh, screwdriver_desh.getUnlocalizedName()); @@ -6431,15 +6477,12 @@ public class ModItems { GameRegistry.registerItem(chemistry_set_boron, chemistry_set_boron.getUnlocalizedName()); GameRegistry.registerItem(blowtorch, blowtorch.getUnlocalizedName()); GameRegistry.registerItem(acetylene_torch, acetylene_torch.getUnlocalizedName()); + GameRegistry.registerItem(boltgun, boltgun.getUnlocalizedName()); GameRegistry.registerItem(overfuse, overfuse.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode, arc_electrode.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode_burnt, arc_electrode_burnt.getUnlocalizedName()); GameRegistry.registerItem(arc_electrode_desh, arc_electrode_desh.getUnlocalizedName()); - //Particle Collider Items - //GameRegistry.registerItem(crystal_energy, crystal_energy.getUnlocalizedName()); - //GameRegistry.registerItem(pellet_coolant, pellet_coolant.getUnlocalizedName()); - //Particle Collider Fuel GameRegistry.registerItem(part_lithium, part_lithium.getUnlocalizedName()); GameRegistry.registerItem(part_beryllium, part_beryllium.getUnlocalizedName()); @@ -6711,9 +6754,11 @@ public class ModItems { GameRegistry.registerItem(rbmk_tool, rbmk_tool.getUnlocalizedName()); GameRegistry.registerItem(coltan_tool, coltan_tool.getUnlocalizedName()); GameRegistry.registerItem(power_net_tool, power_net_tool.getUnlocalizedName()); + GameRegistry.registerItem(coupling_tool, coupling_tool.getUnlocalizedName()); GameRegistry.registerItem(dosimeter, dosimeter.getUnlocalizedName()); GameRegistry.registerItem(geiger_counter, geiger_counter.getUnlocalizedName()); GameRegistry.registerItem(digamma_diagnostic, digamma_diagnostic.getUnlocalizedName()); + GameRegistry.registerItem(pollution_detector, pollution_detector.getUnlocalizedName()); GameRegistry.registerItem(containment_box, containment_box.getUnlocalizedName()); //Keys and Locks @@ -6928,6 +6973,7 @@ public class ModItems { GameRegistry.registerItem(gun_revolver_red, gun_revolver_red.getUnlocalizedName()); GameRegistry.registerItem(gun_bio_revolver, gun_bio_revolver.getUnlocalizedName()); GameRegistry.registerItem(gun_deagle, gun_deagle.getUnlocalizedName()); + GameRegistry.registerItem(gun_uac_pistol, gun_uac_pistol.getUnlocalizedName()); GameRegistry.registerItem(gun_flechette, gun_flechette.getUnlocalizedName()); GameRegistry.registerItem(gun_ar15, gun_ar15.getUnlocalizedName()); GameRegistry.registerItem(gun_calamity, gun_calamity.getUnlocalizedName()); @@ -6956,7 +7002,9 @@ public class ModItems { GameRegistry.registerItem(gun_uzi_saturnite, gun_uzi_saturnite.getUnlocalizedName()); GameRegistry.registerItem(gun_uzi_saturnite_silencer,gun_uzi_saturnite_silencer.getUnlocalizedName()); GameRegistry.registerItem(gun_uboinik, gun_uboinik.getUnlocalizedName()); + GameRegistry.registerItem(gun_remington, gun_remington.getUnlocalizedName()); GameRegistry.registerItem(gun_spas12, gun_spas12.getUnlocalizedName()); + GameRegistry.registerItem(gun_benelli, gun_benelli.getUnlocalizedName()); GameRegistry.registerItem(gun_supershotgun, gun_supershotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_ks23, gun_ks23.getUnlocalizedName()); GameRegistry.registerItem(gun_sauer, gun_sauer.getUnlocalizedName()); @@ -6967,11 +7015,13 @@ public class ModItems { GameRegistry.registerItem(gun_bolt_action_green, gun_bolt_action_green.getUnlocalizedName()); GameRegistry.registerItem(gun_bolt_action_saturnite, gun_bolt_action_saturnite.getUnlocalizedName()); GameRegistry.registerItem(gun_mymy, gun_mymy.getUnlocalizedName()); + GameRegistry.registerItem(gun_coilgun, gun_coilgun.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456, gun_xvl1456.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr, gun_osipr.getUnlocalizedName()); GameRegistry.registerItem(gun_immolator, gun_immolator.getUnlocalizedName()); GameRegistry.registerItem(gun_flamer, gun_flamer.getUnlocalizedName()); GameRegistry.registerItem(gun_cryolator, gun_cryolator.getUnlocalizedName()); + GameRegistry.registerItem(gun_cryocannon, gun_cryocannon.getUnlocalizedName()); GameRegistry.registerItem(gun_fireext, gun_fireext.getUnlocalizedName()); GameRegistry.registerItem(gun_mp, gun_mp.getUnlocalizedName()); GameRegistry.registerItem(gun_bolter, gun_bolter.getUnlocalizedName()); @@ -7056,6 +7106,7 @@ public class ModItems { GameRegistry.registerItem(ammo_rocket, ammo_rocket.getUnlocalizedName()); GameRegistry.registerItem(ammo_stinger_rocket, ammo_stinger_rocket.getUnlocalizedName()); GameRegistry.registerItem(ammo_luna_sniper, ammo_luna_sniper.getUnlocalizedName()); + GameRegistry.registerItem(ammo_coilgun, ammo_coilgun.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); GameRegistry.registerItem(ammo_shell, ammo_shell.getUnlocalizedName()); @@ -7250,6 +7301,7 @@ public class ModItems { //Grenades GameRegistry.registerItem(stick_dynamite, stick_dynamite.getUnlocalizedName()); //heave-ho! + GameRegistry.registerItem(stick_dynamite_fishing, stick_dynamite_fishing.getUnlocalizedName()); GameRegistry.registerItem(stick_tnt, stick_tnt.getUnlocalizedName()); GameRegistry.registerItem(stick_semtex, stick_semtex.getUnlocalizedName()); GameRegistry.registerItem(stick_c4, stick_c4.getUnlocalizedName()); @@ -7446,6 +7498,7 @@ public class ModItems { GameRegistry.registerItem(fmn, fmn.getUnlocalizedName()); GameRegistry.registerItem(five_htp, five_htp.getUnlocalizedName()); GameRegistry.registerItem(plan_c, plan_c.getUnlocalizedName()); + GameRegistry.registerItem(pill_red, pill_red.getUnlocalizedName()); GameRegistry.registerItem(stealth_boy, stealth_boy.getUnlocalizedName()); GameRegistry.registerItem(gas_mask_filter, gas_mask_filter.getUnlocalizedName()); GameRegistry.registerItem(gas_mask_filter_mono, gas_mask_filter_mono.getUnlocalizedName()); @@ -7481,6 +7534,9 @@ public class ModItems { GameRegistry.registerItem(marshmallow, marshmallow.getUnlocalizedName()); GameRegistry.registerItem(cheese, cheese.getUnlocalizedName()); GameRegistry.registerItem(quesadilla, quesadilla.getUnlocalizedName()); + GameRegistry.registerItem(glyphid_meat, glyphid_meat.getUnlocalizedName()); + GameRegistry.registerItem(glyphid_meat_grilled, glyphid_meat_grilled.getUnlocalizedName()); + GameRegistry.registerItem(egg_glyphid, egg_glyphid.getUnlocalizedName()); GameRegistry.registerItem(med_ipecac, med_ipecac.getUnlocalizedName()); GameRegistry.registerItem(med_ptsd, med_ptsd.getUnlocalizedName()); GameRegistry.registerItem(canteen_13, canteen_13.getUnlocalizedName()); @@ -7577,12 +7633,14 @@ public class ModItems { GameRegistry.registerItem(gas_tester, gas_tester.getUnlocalizedName()); GameRegistry.registerItem(defuser_gold, defuser_gold.getUnlocalizedName()); GameRegistry.registerItem(ballistic_gauntlet, ballistic_gauntlet.getUnlocalizedName()); - + GameRegistry.registerItem(night_vision, night_vision.getUnlocalizedName()); + //Chaos GameRegistry.registerItem(chocolate_milk, chocolate_milk.getUnlocalizedName()); GameRegistry.registerItem(cbt_device, cbt_device.getUnlocalizedName()); GameRegistry.registerItem(cigarette, cigarette.getUnlocalizedName()); GameRegistry.registerItem(crackpipe, crackpipe.getUnlocalizedName()); + GameRegistry.registerItem(bdcl, bdcl.getUnlocalizedName()); //Armor mods GameRegistry.registerItem(attachment_mask, attachment_mask.getUnlocalizedName()); @@ -7638,6 +7696,7 @@ public class ModItems { //Minecarts GameRegistry.registerItem(cart, cart.getUnlocalizedName()); + GameRegistry.registerItem(train, train.getUnlocalizedName()); //High Explosive Lenses GameRegistry.registerItem(early_explosive_lenses, early_explosive_lenses.getUnlocalizedName()); @@ -7751,6 +7810,10 @@ public class ModItems { GameRegistry.registerItem(bj_plate_jetpack, bj_plate_jetpack.getUnlocalizedName()); GameRegistry.registerItem(bj_legs, bj_legs.getUnlocalizedName()); GameRegistry.registerItem(bj_boots, bj_boots.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_helmet, envsuit_helmet.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_plate, envsuit_plate.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_legs, envsuit_legs.getUnlocalizedName()); + GameRegistry.registerItem(envsuit_boots, envsuit_boots.getUnlocalizedName()); GameRegistry.registerItem(hev_helmet, hev_helmet.getUnlocalizedName()); GameRegistry.registerItem(hev_plate, hev_plate.getUnlocalizedName()); GameRegistry.registerItem(hev_legs, hev_legs.getUnlocalizedName()); @@ -7926,7 +7989,8 @@ public class ModItems { GameRegistry.registerItem(door_metal, door_metal.getUnlocalizedName()); GameRegistry.registerItem(door_office, door_office.getUnlocalizedName()); GameRegistry.registerItem(door_bunker, door_bunker.getUnlocalizedName()); - + GameRegistry.registerItem(sliding_blast_door_skin, sliding_blast_door_skin.getUnlocalizedName()); + //Records GameRegistry.registerItem(record_lc, record_lc.getUnlocalizedName()); GameRegistry.registerItem(record_ss, record_ss.getUnlocalizedName()); @@ -8037,48 +8101,15 @@ public class ModItems { GameRegistry.registerItem(ln2_10, ln2_10.getUnlocalizedName()); GameRegistry.registerItem(nothing, nothing.getUnlocalizedName()); GameRegistry.registerItem(void_anim, void_anim.getUnlocalizedName()); + GameRegistry.registerItem(achievement_icon, achievement_icon.getUnlocalizedName()); GameRegistry.registerItem(bob_metalworks, bob_metalworks.getUnlocalizedName()); GameRegistry.registerItem(bob_assembly, bob_assembly.getUnlocalizedName()); GameRegistry.registerItem(bob_chemistry, bob_chemistry.getUnlocalizedName()); GameRegistry.registerItem(bob_oil, bob_oil.getUnlocalizedName()); GameRegistry.registerItem(bob_nuclear, bob_nuclear.getUnlocalizedName()); - GameRegistry.registerItem(digamma_see, digamma_see.getUnlocalizedName()); - GameRegistry.registerItem(digamma_feel, digamma_feel.getUnlocalizedName()); - GameRegistry.registerItem(digamma_know, digamma_know.getUnlocalizedName()); - GameRegistry.registerItem(digamma_kauai_moho, digamma_kauai_moho.getUnlocalizedName()); - GameRegistry.registerItem(digamma_up_on_top, digamma_up_on_top.getUnlocalizedName()); GameRegistry.registerItem(mysteryshovel, mysteryshovel.getUnlocalizedName()); GameRegistry.registerItem(memory, memory.getUnlocalizedName()); - //CONSERVE REMAP - addRemap("canned_beef", canned_conserve, EnumFoodType.BEEF); - addRemap("canned_tuna", canned_conserve, EnumFoodType.TUNA); - addRemap("canned_mystery", canned_conserve, EnumFoodType.MYSTERY); - addRemap("canned_pashtet", canned_conserve, EnumFoodType.PASHTET); - addRemap("canned_cheese", canned_conserve, EnumFoodType.CHEESE); - addRemap("canned_jizz", canned_conserve, EnumFoodType.JIZZ); - addRemap("canned_milk", canned_conserve, EnumFoodType.MILK); - addRemap("canned_ass", canned_conserve, EnumFoodType.ASS); - addRemap("canned_pizza", canned_conserve, EnumFoodType.PIZZA); - addRemap("canned_tube", canned_conserve, EnumFoodType.TUBE); - addRemap("canned_tomato", canned_conserve, EnumFoodType.TOMATO); - addRemap("canned_asbestos", canned_conserve, EnumFoodType.ASBESTOS); - addRemap("canned_bhole", canned_conserve, EnumFoodType.BHOLE); - addRemap("canned_hotdogs", canned_conserve, EnumFoodType.HOTDOGS); - addRemap("canned_leftovers", canned_conserve, EnumFoodType.LEFTOVERS); - addRemap("canned_yogurt", canned_conserve, EnumFoodType.YOGURT); - addRemap("canned_stew", canned_conserve, EnumFoodType.STEW); - addRemap("canned_chinese", canned_conserve, EnumFoodType.CHINESE); - addRemap("canned_oil", canned_conserve, EnumFoodType.OIL); - addRemap("canned_fist", canned_conserve, EnumFoodType.FIST); - addRemap("canned_spam", canned_conserve, EnumFoodType.SPAM); - addRemap("canned_fried", canned_conserve, EnumFoodType.FRIED); - addRemap("canned_napalm", canned_conserve, EnumFoodType.NAPALM); - addRemap("canned_diesel", canned_conserve, EnumFoodType.DIESEL); - addRemap("canned_kerosene", canned_conserve, EnumFoodType.KEROSENE); - addRemap("canned_recursion", canned_conserve, EnumFoodType.RECURSION); - addRemap("canned_bark", canned_conserve, EnumFoodType.BARK); - addRemap("rod_zirnox_natural_uranium_fuel", rod_zirnox, EnumZirnoxType.NATURAL_URANIUM_FUEL); addRemap("rod_zirnox_uranium_fuel", rod_zirnox, EnumZirnoxType.URANIUM_FUEL); addRemap("rod_zirnox_th232", rod_zirnox, EnumZirnoxType.TH232); @@ -8094,10 +8125,8 @@ public class ModItems { addRemap("gas_petroleum", gas_full, Fluids.PETROLEUM.getID()); addRemap("gas_biogas", gas_full, Fluids.BIOGAS.getID()); addRemap("gas_lpg", gas_full, Fluids.LPG.getID()); - } - - public static void addRemap(String unloc, int removoingTheseWouldTakeForever, Item item, Enum sub) { - addRemap(unloc, item, sub.ordinal()); + + addRemap("gun_coilgun_ammo", ammo_coilgun, AmmoCoilgun.STOCK); } public static void addRemap(String unloc, Item item, Enum sub) { diff --git a/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java new file mode 100644 index 000000000..158ab3059 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorEnvsuit.java @@ -0,0 +1,86 @@ +package com.hbm.items.armor; + +import java.util.UUID; + +import com.google.common.collect.Multimap; +import com.hbm.items.ModItems; +import com.hbm.render.model.ModelArmorEnvsuit; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ArmorEnvsuit extends ArmorFSBPowered { + + public ArmorEnvsuit(ArmorMaterial material, int slot, String texture, long maxPower, long chargeRate, long consumption, long drain) { + super(material, slot, texture, maxPower, chargeRate, consumption, drain); + } + + @SideOnly(Side.CLIENT) + ModelArmorEnvsuit[] models; + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(models == null) { + models = new ModelArmorEnvsuit[4]; + + for(int i = 0; i < 4; i++) + models[i] = new ModelArmorEnvsuit(i); + } + + return models[armorSlot]; + } + + private static final UUID speed = UUID.fromString("6ab858ba-d712-485c-bae9-e5e765fc555a"); + + @Override + public void onArmorTick(World world, EntityPlayer player, ItemStack stack) { + + super.onArmorTick(world, player, stack); + + if(this != ModItems.envsuit_plate) + return; + + /// SPEED /// + Multimap multimap = super.getAttributeModifiers(stack); + multimap.put(SharedMonsterAttributes.movementSpeed.getAttributeUnlocalizedName(), new AttributeModifier(speed, "SQUIRREL SPEED", 0.1, 0)); + player.getAttributeMap().removeAttributeModifiers(multimap); + + if(this.hasFSBArmor(player)) { + + if(player.isSprinting()) player.getAttributeMap().applyAttributeModifiers(multimap); + + if(player.isInWater()) { + + player.setAir(300); + + player.addPotionEffect(new PotionEffect(Potion.nightVision.id, 15 * 20, 0)); + + double mo = 0.1 * player.moveForward; + Vec3 vec = player.getLookVec(); + vec.xCoord *= mo; + vec.yCoord *= mo; + vec.zCoord *= mo; + + player.motionX += vec.xCoord; + player.motionY += vec.yCoord; + player.motionZ += vec.zCoord; + } else { + if(player.isPotionActive(Potion.nightVision.id) && player.getActivePotionEffect(Potion.nightVision).getDuration() > 15 * 20) { + player.removePotionEffect(Potion.nightVision.id); + } + } + } + } +} diff --git a/src/main/java/com/hbm/items/armor/ItemModNightVision.java b/src/main/java/com/hbm/items/armor/ItemModNightVision.java new file mode 100644 index 000000000..6df89d2a6 --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ItemModNightVision.java @@ -0,0 +1,41 @@ +package com.hbm.items.armor; + +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.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; + +import java.util.List; + +public class ItemModNightVision extends ItemArmorMod { + public ItemModNightVision() { + super(ArmorModHandler.helmet_only, true, false, false, false); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.AQUA + I18n.format("item.night_vision.description.item")); + list.add(""); + super.addInformation(itemstack, player, list, bool); + } + + @Override + public void addDesc(List list, ItemStack stack, ItemStack armor) { + list.add(EnumChatFormatting.YELLOW + I18n.format("item.night_vision.description.in_armor", stack.getDisplayName())); + } + + @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(entity.getRNG().nextInt(50) == 0) { + armor.damageItem(1, entity); + } + } + } +} diff --git a/src/main/java/com/hbm/items/block/ItemBlockBase.java b/src/main/java/com/hbm/items/block/ItemBlockBase.java index 04823443b..e04959cff 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockBase.java +++ b/src/main/java/com/hbm/items/block/ItemBlockBase.java @@ -2,12 +2,11 @@ package com.hbm.items.block; import java.util.List; -import com.hbm.blocks.BlockEnumMulti; +import com.hbm.blocks.BlockMulti; import com.hbm.blocks.IBlockMulti; import com.hbm.blocks.IPersistentInfoProvider; import com.hbm.blocks.ITooltipProvider; import com.hbm.tileentity.IPersistentNBT; -import com.hbm.util.EnumUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -41,10 +40,8 @@ public class ItemBlockBase extends ItemBlock { @Override public String getUnlocalizedName(ItemStack stack) { - if(field_150939_a instanceof BlockEnumMulti && ((BlockEnumMulti)field_150939_a).multiName) { - - Enum num = EnumUtil.grabEnumSafely(((BlockEnumMulti)field_150939_a).theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + if(field_150939_a instanceof BlockMulti) { + return ((BlockMulti)field_150939_a).getUnlocalizedName(stack); } else { return super.getUnlocalizedName(stack); } diff --git a/src/main/java/com/hbm/items/block/ItemBlockRemap.java b/src/main/java/com/hbm/items/block/ItemBlockRemap.java new file mode 100644 index 000000000..bda77f379 --- /dev/null +++ b/src/main/java/com/hbm/items/block/ItemBlockRemap.java @@ -0,0 +1,34 @@ +package com.hbm.items.block; + +import java.util.List; + +import com.hbm.blocks.BlockRemap; + +import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemBlockRemap extends ItemBlockBase { + + public ItemBlockRemap(Block block) { + super(block); + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean held) { + + if(!(entity instanceof EntityPlayer) || !(this.field_150939_a instanceof BlockRemap)) return; + + EntityPlayer player = (EntityPlayer) entity; + BlockRemap remap = (BlockRemap) this.field_150939_a; + player.inventory.setInventorySlotContents(slot, new ItemStack(remap.remapBlock, stack.stackSize, remap.remapMeta)); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { + list.add(EnumChatFormatting.RED + "Compatibility item, hold in inventory to convert!"); + } +} diff --git a/src/main/java/com/hbm/items/block/ItemCustomMachine.java b/src/main/java/com/hbm/items/block/ItemCustomMachine.java new file mode 100644 index 000000000..61b1cf00c --- /dev/null +++ b/src/main/java/com/hbm/items/block/ItemCustomMachine.java @@ -0,0 +1,46 @@ +package com.hbm.items.block; + +import java.util.List; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class ItemCustomMachine extends ItemBlock { + + public ItemCustomMachine(Block block) { + super(block); + } + + @SideOnly(Side.CLIENT) + public void getSubItems(Item item, CreativeTabs tab, List list) { + + for(int i = 0; i < CustomMachineConfigJSON.niceList.size(); i++) { + ItemStack stack = new ItemStack(item, 1, i + 100); + list.add(stack); + } + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + + int id = stack.getItemDamage() - 100; + + if(id >= 0 && id < CustomMachineConfigJSON.customMachines.size()) { + MachineConfiguration conf = CustomMachineConfigJSON.niceList.get(id); + + if(conf != null) { + return conf.localizedName; + } + } + + return "INVALID MACHINE CONTROLLER"; + } +} diff --git a/src/main/java/com/hbm/items/food/ItemBDCL.java b/src/main/java/com/hbm/items/food/ItemBDCL.java new file mode 100644 index 000000000..1ec41d032 --- /dev/null +++ b/src/main/java/com/hbm/items/food/ItemBDCL.java @@ -0,0 +1,34 @@ +package com.hbm.items.food; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemBDCL extends Item { + + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 32; + } + + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) { + return EnumAction.drink; + } + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + player.setItemInUse(stack, this.getMaxItemUseDuration(stack)); + return stack; + } + + @Override + public ItemStack onEaten(ItemStack stack, World world, EntityPlayer player) { + + if(!player.capabilities.isCreativeMode) { + --stack.stackSize; + } + return stack; + } +} diff --git a/src/main/java/com/hbm/items/food/ItemConserve.java b/src/main/java/com/hbm/items/food/ItemConserve.java index a8a7a5af1..11b2c9bb7 100644 --- a/src/main/java/com/hbm/items/food/ItemConserve.java +++ b/src/main/java/com/hbm/items/food/ItemConserve.java @@ -1,6 +1,7 @@ package com.hbm.items.food; import java.util.List; +import java.util.Locale; import com.hbm.entity.effect.EntityVortex; import com.hbm.items.ItemEnumMulti; @@ -93,14 +94,14 @@ public class ItemConserve extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return "item.canned_" + num.name().toLowerCase(); + return "item.canned_" + num.name().toLowerCase(Locale.US); } public static enum EnumFoodType { diff --git a/src/main/java/com/hbm/items/food/ItemCrayon.java b/src/main/java/com/hbm/items/food/ItemCrayon.java index c03282985..f9f7d0760 100644 --- a/src/main/java/com/hbm/items/food/ItemCrayon.java +++ b/src/main/java/com/hbm/items/food/ItemCrayon.java @@ -1,6 +1,7 @@ package com.hbm.items.food; import java.util.List; +import java.util.Locale; import com.hbm.items.machine.ItemChemicalDye.EnumChemDye; import com.hbm.lib.RefStrings; @@ -44,7 +45,7 @@ public class ItemCrayon extends ItemFood { @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(EnumChemDye.class, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + num.name().toLowerCase(); + return super.getUnlocalizedName() + "." + num.name().toLowerCase(Locale.US); } @Override diff --git a/src/main/java/com/hbm/items/food/ItemFlask.java b/src/main/java/com/hbm/items/food/ItemFlask.java index c2d727da0..9ecdb4fc2 100644 --- a/src/main/java/com/hbm/items/food/ItemFlask.java +++ b/src/main/java/com/hbm/items/food/ItemFlask.java @@ -1,5 +1,7 @@ package com.hbm.items.food; +import java.util.Locale; + import com.hbm.extprop.HbmPlayerProps; import com.hbm.items.ItemEnumMulti; @@ -30,7 +32,7 @@ public class ItemFlask extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @@ -47,8 +49,8 @@ public class ItemFlask extends ItemEnumMulti { if(stack.getItemDamage() == EnumInfusion.SHIELD.ordinal()) { float infusion = 5F; HbmPlayerProps props = HbmPlayerProps.getData(player); - props.maxShield = Math.min(props.shieldCap, props.shield + infusion); - props.shield += infusion; + props.maxShield = Math.min(props.shieldCap, props.maxShield + infusion); + props.shield = Math.min(props.shield + infusion, props.maxShield); } return stack; diff --git a/src/main/java/com/hbm/items/food/ItemPill.java b/src/main/java/com/hbm/items/food/ItemPill.java index 6ec669491..3c7508e47 100644 --- a/src/main/java/com/hbm/items/food/ItemPill.java +++ b/src/main/java/com/hbm/items/food/ItemPill.java @@ -50,6 +50,10 @@ public class ItemPill extends ItemFood { player.attackEntityFrom(rand.nextBoolean() ? ModDamageSource.euthanizedSelf : ModDamageSource.euthanizedSelf2, 1000); } + if(this == ModItems.pill_red) { + player.addPotionEffect(new PotionEffect(HbmPotion.death.id, 60 * 60 * 20, 0)); + } + if(this == ModItems.radx) { player.addPotionEffect(new PotionEffect(HbmPotion.radx.id, 3 * 60 * 20, 0)); } diff --git a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java index 12ad0569e..432141d9d 100644 --- a/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java +++ b/src/main/java/com/hbm/items/machine/ItemChemistryTemplate.java @@ -75,7 +75,8 @@ public class ItemChemistryTemplate extends Item { for(int i = 0; i < 2; i++) { if(recipe.outputFluids[i] != null) { - list.add(recipe.outputFluids[i].fill + "mB " + I18n.format(recipe.outputFluids[i].type.getUnlocalizedName())); + int p = recipe.outputFluids[i].pressure; + list.add(recipe.outputFluids[i].fill + "mB " + I18n.format(recipe.outputFluids[i].type.getUnlocalizedName()) + (p != 0 ? (" at " + p + "PU") : "")); } } @@ -89,7 +90,8 @@ public class ItemChemistryTemplate extends Item { for(int i = 0; i < 2; i++) { if(recipe.inputFluids[i] != null) { - list.add(recipe.inputFluids[i].fill + "mB " + I18n.format(recipe.inputFluids[i].type.getUnlocalizedName())); + int p = recipe.inputFluids[i].pressure; + list.add(recipe.inputFluids[i].fill + "mB " + I18n.format(recipe.inputFluids[i].type.getUnlocalizedName()) + (p != 0 ? (" at " + p + "PU") : "")); } } diff --git a/src/main/java/com/hbm/items/machine/ItemDrillbit.java b/src/main/java/com/hbm/items/machine/ItemDrillbit.java index b992fd052..7dd8d3bdd 100644 --- a/src/main/java/com/hbm/items/machine/ItemDrillbit.java +++ b/src/main/java/com/hbm/items/machine/ItemDrillbit.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ItemEnumMulti; import com.hbm.util.EnumUtil; @@ -27,14 +28,14 @@ public class ItemDrillbit extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java index f15d2ad05..1e121dd96 100644 --- a/src/main/java/com/hbm/items/machine/ItemFluidIcon.java +++ b/src/main/java/com/hbm/items/machine/ItemFluidIcon.java @@ -14,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; @@ -38,39 +39,47 @@ public class ItemFluidIcon extends Item { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { if(stack.hasTagCompound()) { - if(stack.getTagCompound().getInteger("fill") > 0) - list.add(stack.getTagCompound().getInteger("fill") + "mB"); + if(getQuantity(stack) > 0) list.add(getQuantity(stack) + "mB"); + if(getPressure(stack) > 0) list.add(EnumChatFormatting.RED + "" + getPressure(stack) + "PU"); } Fluids.fromID(stack.getItemDamage()).addInfo(list); } public static ItemStack addQuantity(ItemStack stack, int i) { - - if(!stack.hasTagCompound()) - stack.stackTagCompound = new NBTTagCompound(); - + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); stack.getTagCompound().setInteger("fill", i); + return stack; + } + public static ItemStack addPressure(ItemStack stack, int i) { + if(!stack.hasTagCompound()) stack.stackTagCompound = new NBTTagCompound(); + stack.getTagCompound().setInteger("pressure", i); return stack; } public static ItemStack make(FluidStack stack) { - return make(stack.type, stack.fill); + return make(stack.type, stack.fill, stack.pressure); } public static ItemStack make(FluidType fluid, int i) { - return addQuantity(new ItemStack(ModItems.fluid_icon, 1, fluid.ordinal()), i); + return make(fluid, i, 0); + } + + public static ItemStack make(FluidType fluid, int i, int pressure) { + return addPressure(addQuantity(new ItemStack(ModItems.fluid_icon, 1, fluid.ordinal()), i), pressure); } public static int getQuantity(ItemStack stack) { - - if(!stack.hasTagCompound()) - return 0; - + if(!stack.hasTagCompound()) return 0; return stack.getTagCompound().getInteger("fill"); } + public static int getPressure(ItemStack stack) { + if(!stack.hasTagCompound()) return 0; + return stack.getTagCompound().getInteger("pressure"); + } + @Override public String getItemStackDisplayName(ItemStack stack) { String s = (StatCollector.translateToLocal(Fluids.fromID(stack.getItemDamage()).getUnlocalizedName())).trim(); diff --git a/src/main/java/com/hbm/items/machine/ItemPistons.java b/src/main/java/com/hbm/items/machine/ItemPistons.java index e47d8a53b..4736b5cdd 100644 --- a/src/main/java/com/hbm/items/machine/ItemPistons.java +++ b/src/main/java/com/hbm/items/machine/ItemPistons.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.items.ItemEnumMulti; @@ -28,14 +29,14 @@ public class ItemPistons extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); } @Override diff --git a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java index a83ed86c5..68158958f 100644 --- a/src/main/java/com/hbm/items/machine/ItemRBMKRod.java +++ b/src/main/java/com/hbm/items/machine/ItemRBMKRod.java @@ -205,7 +205,7 @@ public class ItemRBMKRod extends Item { double avg = (heat + hullHeat + coreHeat) / 3D; this.setCoreHeat(stack, avg); this.setHullHeat(stack, avg); - return avg; + return avg - heat; } if(hullHeat <= heat) @@ -275,7 +275,7 @@ public class ItemRBMKRod extends Item { break; case ARCH: function = "(%1$s - %1$s² / 10000) / 100 * %2$s [0;∞]"; break; - case SIGMOID: function = "%2$s / (1 + e^(-(%1$s - 50) / 10)"; + case SIGMOID: function = "%2$s / (1 + e^(-(%1$s - 50) / 10))"; break; case SQUARE_ROOT: function = "sqrt(%1$s) * %2$s / 10"; break; diff --git a/src/main/java/com/hbm/items/machine/ItemScraps.java b/src/main/java/com/hbm/items/machine/ItemScraps.java index 3e6134ffa..5c3436148 100644 --- a/src/main/java/com/hbm/items/machine/ItemScraps.java +++ b/src/main/java/com/hbm/items/machine/ItemScraps.java @@ -9,25 +9,39 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.Mats.MaterialStack; import com.hbm.items.ModItems; import com.hbm.items.special.ItemAutogen; +import com.hbm.lib.RefStrings; import com.hbm.util.I18nUtil; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.material.NTMMaterial.SmeltingBehavior; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; import net.minecraft.util.StatCollector; public class ItemScraps extends ItemAutogen { + + @SideOnly(Side.CLIENT) public IIcon liquidIcon; + @SideOnly(Side.CLIENT) public IIcon addiviceIcon; public ItemScraps() { super(null); } + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + super.registerIcons(reg); + this.liquidIcon = reg.registerIcon(RefStrings.MODID + ":scraps_liquid"); + this.addiviceIcon = reg.registerIcon(RefStrings.MODID + ":scraps_additive"); + } + @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { @@ -38,8 +52,48 @@ public class ItemScraps extends ItemAutogen { } } + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int layer) { + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + + NTMMaterial mat = Mats.matById.get(stack.getItemDamage()); + + if(mat != null) { + return mat.moltenColor; + } + } + + return super.getColorFromItemStack(stack, layer); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconIndex(ItemStack stack) { + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + + NTMMaterial mat = Mats.matById.get(stack.getItemDamage()); + + if(mat != null) { + if(mat.smeltable == mat.smeltable.SMELTABLE) return this.liquidIcon; + if(mat.smeltable == mat.smeltable.ADDITIVE) return this.addiviceIcon; + } + } + + return this.getIconFromDamage(stack.getItemDamage()); + } + @Override public String getItemStackDisplayName(ItemStack stack) { + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + MaterialStack contents = getMats(stack); + if(contents != null) { + return I18nUtil.resolveKey(contents.material.getUnlocalizedName()); + } + } + return ("" + StatCollector.translateToLocal(this.getUnlocalizedNameInefficiently(stack) + ".name")).trim(); } @@ -48,7 +102,13 @@ public class ItemScraps extends ItemAutogen { MaterialStack contents = getMats(stack); if(contents != null) { - list.add(I18nUtil.resolveKey(contents.material.getUnlocalizedName()) + ", " + Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + + if(stack.hasTagCompound() && stack.stackTagCompound.getBoolean("liquid")) { + list.add(Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + if(contents.material.smeltable == contents.material.smeltable.ADDITIVE) list.add(EnumChatFormatting.DARK_RED + "Additive, not castable!"); + } else { + list.add(I18nUtil.resolveKey(contents.material.getUnlocalizedName()) + ", " + Mats.formatAmount(contents.amount, Keyboard.isKeyDown(Keyboard.KEY_LSHIFT))); + } } } @@ -69,11 +129,16 @@ public class ItemScraps extends ItemAutogen { } public static ItemStack create(MaterialStack stack) { + return create(stack, false); + } + + public static ItemStack create(MaterialStack stack, boolean liquid) { if(stack.material == null) return new ItemStack(ModItems.nothing); //why do i bother adding checks for fucking everything when they don't work ItemStack scrap = new ItemStack(ModItems.scraps, 1, stack.material.id); scrap.stackTagCompound = new NBTTagCompound(); scrap.stackTagCompound.setInteger("amount", stack.amount); + if(liquid) scrap.stackTagCompound.setBoolean("liquid", true); return scrap; } } diff --git a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index d56bfa6e9..be5e0ad7f 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ItemEnumMulti; import com.hbm.items.ModItems; @@ -35,16 +36,18 @@ public class ItemWatzPellet extends ItemEnumMulti { public static enum EnumWatzType { - //TODO: durability - SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 10D, new FunctionLogarithmic(10), null, null), - HES( 0x66DCD6, 0x023933, 1_500, 10D, null, null, null), - LES( 0xABB4A8, 0x0C1105, 500, 10D, null, null, null), - MES( 0xCBEADF, 0x28473C, 1_000, 10D, null, null, null), - NP( 0xA6B2A6, 0x030F03, 0, 10D, null, null, null), - MEU( 0xC1C7BD, 0x2B3227, 0, 10D, null, null, null), - MEP( 0x9AA3A0, 0x111A17, 0, 10D, null, null, null), - LEAD( 0xA6A6B2, 0x03030F, 0, 0, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient - DU( 0xC1C7BD, 0x2B3227, 0, 0, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)); //absorber with positive coefficient + SCHRABIDIUM( 0x32FFFF, 0x005C5C, 2_000, 20D, 0.01D, new FunctionLinear(1.5D), new FunctionSqrtFalling(10D), null), + HES( 0x66DCD6, 0x023933, 1_750, 20D, 0.005D, new FunctionLinear(1.25D), new FunctionSqrtFalling(15D), null), + MES( 0xCBEADF, 0x28473C, 1_500, 15D, 0.0025D, new FunctionLinear(1.15D), new FunctionSqrtFalling(15D), null), + LES( 0xABB4A8, 0x0C1105, 1_250, 15D, 0.00125D, new FunctionLinear(1D), new FunctionSqrtFalling(20D), null), + HEN( 0xA6B2A6, 0x030F03, 0, 10D, 0.0005D, new FunctionSqrt(100), new FunctionSqrtFalling(10D), null), + MEU( 0xC1C7BD, 0x2B3227, 0, 10D, 0.0005D, new FunctionSqrt(75), new FunctionSqrtFalling(10D), null), + MEP( 0x9AA3A0, 0x111A17, 0, 15D, 0.0005D, new FunctionSqrt(150), new FunctionSqrtFalling(10D), null), + LEAD( 0xA6A6B2, 0x03030F, 0, 0, 0.0025D, null, null, new FunctionSqrt(10)), //standard absorber, negative coefficient + BORON( 0xBDC8D2, 0x29343E, 0, 0, 0.0025D, null, null, new FunctionLinear(10)), //improved absorber, linear + DU( 0xC1C7BD, 0x2B3227, 0, 0, 0.0025D, null, null, new FunctionQuadratic(1D, 1D).withDiv(100)), //absorber with positive coefficient + NQD( 0x4B4B4B, 0x121212, 2_000, 20, 0.01D, new FunctionLinear(2D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null), + NQR( 0x2D2D2D, 0x0B0B0B, 2_500, 30, 0.01D, new FunctionLinear(1.5D), new FunctionSqrt(1D/25D).withOff(25D * 25D), null); public double yield = 1_000_000_000; public int colorLight; @@ -53,16 +56,17 @@ public class ItemWatzPellet extends ItemEnumMulti { public double passive; //base flux emission public double heatEmission; //reactivity(1) to heat (heat per outgoing flux) public Function burnFunc; //flux to reactivity(0) (classic reactivity) - public Function heatMult; //reactivity(0) to reactivity(1) based on heat (temperature coefficient) + public Function heatDiv; //reactivity(0) to reactivity(1) based on heat (temperature coefficient) public Function absorbFunc; //flux to heat (flux absobtion for non-active component) - private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, Function burnFunction, Function heatMultiplier, Function absorbFunction) { + private EnumWatzType(int colorLight, int colorDark, double passive, double heatEmission, double mudContent, Function burnFunction, Function heatDivisor, Function absorbFunction) { this.colorLight = colorLight; this.colorDark = colorDark; this.passive = passive; this.heatEmission = heatEmission; + this.mudContent = mudContent; this.burnFunc = burnFunction; - this.heatMult = heatMultiplier; + this.heatDiv = heatDivisor; this.absorbFunc = absorbFunction; } } @@ -119,24 +123,32 @@ public class ItemWatzPellet extends ItemEnumMulti { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + if(this != ModItems.watz_pellet) return; + EnumWatzType num = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + list.add(EnumChatFormatting.GREEN + "Depletion: " + String.format(Locale.US, "%.1f", getDurabilityForDisplay(stack) * 100D) + "%"); + String color = EnumChatFormatting.GOLD + ""; String reset = EnumChatFormatting.RESET + ""; - if(num.passive > 0) list.add(color + "Base fission rate: " + reset + num.passive); + if(num.passive > 0){ + list.add(color + "Base fission rate: " + reset + num.passive); + list.add(EnumChatFormatting.RED + "Self-igniting!"); + } if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { list.add(color + "Reacton function: " + reset + num.burnFunc.getLabelForFuel()); list.add(color + "Fuel type: " + reset + num.burnFunc.getDangerFromFuel()); } - if(num.heatMult != null) list.add(color + "Thermal coefficient: " + reset + num.heatMult.getLabelForFuel()); + if(num.heatDiv != null) list.add(color + "Thermal multiplier: " + reset + num.heatDiv.getLabelForFuel() + " TU⁻¹"); if(num.absorbFunc != null) list.add(color + "Flux capture: " + reset + num.absorbFunc.getLabelForFuel()); } @Override public boolean showDurabilityBar(ItemStack stack) { - return getDurabilityForDisplay(stack) > 0D; + return this == ModItems.watz_pellet && getDurabilityForDisplay(stack) > 0D; } @Override @@ -175,6 +187,7 @@ public class ItemWatzPellet extends ItemEnumMulti { @Override public void onCreated(ItemStack stack, World world, EntityPlayer player) { + if(this != ModItems.watz_pellet) return; setNBTDefaults(stack); //minimize the window where NBT screwups can happen } } diff --git a/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java b/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java index 3856016fa..d2a50f20d 100644 --- a/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java +++ b/src/main/java/com/hbm/items/machine/ItemZirnoxRod.java @@ -1,6 +1,7 @@ package com.hbm.items.machine; import java.util.List; +import java.util.Locale; import com.hbm.items.ItemEnumMulti; import com.hbm.util.BobMathUtil; @@ -87,14 +88,14 @@ public class ItemZirnoxRod extends ItemEnumMulti { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_" + num.name().toLowerCase(Locale.US)); } } @Override public String getUnlocalizedName(ItemStack stack) { Enum num = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); - return super.getUnlocalizedName() + "_" + num.name().toLowerCase(); + return super.getUnlocalizedName() + "_" + num.name().toLowerCase(Locale.US); } public static enum EnumZirnoxType { diff --git a/src/main/java/com/hbm/items/special/ItemAutogen.java b/src/main/java/com/hbm/items/special/ItemAutogen.java index 9ddf38798..1e1f1d075 100644 --- a/src/main/java/com/hbm/items/special/ItemAutogen.java +++ b/src/main/java/com/hbm/items/special/ItemAutogen.java @@ -99,7 +99,7 @@ public class ItemAutogen extends Item { NTMMaterial mat = Mats.matById.get(stack.getItemDamage()); if(mat != null) { - return mat.solidColorLight; + return mat.moltenColor; } return 0xffffff; diff --git a/src/main/java/com/hbm/items/special/ItemBedrockOre.java b/src/main/java/com/hbm/items/special/ItemBedrockOre.java index 61fc2bd96..9d12bade0 100644 --- a/src/main/java/com/hbm/items/special/ItemBedrockOre.java +++ b/src/main/java/com/hbm/items/special/ItemBedrockOre.java @@ -3,6 +3,9 @@ package com.hbm.items.special; import com.hbm.items.ItemEnumMulti; import com.hbm.items.special.ItemByproduct.EnumByproduct; import static com.hbm.items.special.ItemByproduct.EnumByproduct.*; + +import java.util.Locale; + import com.hbm.lib.RefStrings; import com.hbm.util.EnumUtil; @@ -57,7 +60,7 @@ public class ItemBedrockOre extends ItemEnumMulti { public String getItemStackDisplayName(ItemStack stack) { EnumBedrockOre ore = EnumUtil.grabEnumSafely(EnumBedrockOre.class, stack.getItemDamage()); - String oreName = StatCollector.translateToLocal("item.ore." + ore.oreName.toLowerCase()); + String oreName = StatCollector.translateToLocal("item.ore." + ore.oreName.toLowerCase(Locale.US)); return StatCollector.translateToLocalFormatted(this.getUnlocalizedNameInefficiently(stack) + ".name", oreName); } @@ -81,15 +84,18 @@ public class ItemBedrockOre extends ItemEnumMulti { */ public static enum EnumBedrockOre { - //Ore Byproduct 1, 2, 3 - IRON("Iron", 0xE2C0AA, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite - COPPER("Copper", 0xEC9A63, B_SULFUR, B_SULFUR, B_SULFUR), //sulfur sulfur sulfur sulfur - BORAX("Borax", 0xE4BE74, B_LITHIUM, B_CALCIUM, B_CALCIUM), //calcium from ulexite, uhhh lithium? - ASBESTOS("Asbestos", 0xBFBFB9, B_SILICON, B_SILICON, B_SILICON), //quartz i guess? - NIOBIUM("Niobium", 0xAF58D8, B_IRON, B_IRON, B_IRON), //iron in columbite, often found along tantalite - TITANIUM("Titanium", 0xF2EFE2, B_SILICON, B_CALCIUM, B_ALUMINIUM), //titanite is titanium + calcium + silicon with traces of iron and aluminium - TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten - GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH); //occurs with copper, lead and rare bismuthide + //Ore Byproduct 1, 2, 3 + IRON("Iron", 0xE2C0AA, B_SULFUR, B_TITANIUM, B_TITANIUM), //titanium, sulfur from pyrite + COPPER("Copper", 0xEC9A63, B_SULFUR, B_SULFUR, B_SULFUR), //sulfur sulfur sulfur sulfur + BORAX("Borax", 0xE4BE74, B_LITHIUM, B_CALCIUM, B_CALCIUM), //calcium from ulexite, uhhh lithium? + ASBESTOS("Asbestos", 0xBFBFB9, B_SILICON, B_SILICON, B_SILICON), //quartz i guess? + NIOBIUM("Niobium", 0xAF58D8, B_IRON, B_IRON, B_IRON), //iron in columbite, often found along tantalite + TITANIUM("Titanium", 0xF2EFE2, B_SILICON, B_CALCIUM, B_ALUMINIUM), //titanite is titanium + calcium + silicon with traces of iron and aluminium + TUNGSTEN("Tungsten", 0x2C293C, B_LEAD, B_IRON, B_BISMUTH), //ferberite has iron, raspite has lead, russelite is bismuth tungsten + GOLD("Gold", 0xF9D738, B_LEAD, B_COPPER, B_BISMUTH), //occurs with copper, lead and rare bismuthide + URANIUM("Uranium", 0x868D82, B_LEAD, B_RADIUM, B_POLONIUM), //uranium and its decay products + THORIUM("Thorium", 0x7D401D, B_SILICON, B_URANIUM, B_TECHNETIUM), //thorium occours with uraninite and decay products + CHLOROCALCITE("Chlorocalcite", 0xCDE036, B_LITHIUM, B_SILICON, B_SILICON); //i guess? public String oreName; public int color; diff --git a/src/main/java/com/hbm/items/special/ItemBookLore.java b/src/main/java/com/hbm/items/special/ItemBookLore.java index b34aa2598..866bd0866 100644 --- a/src/main/java/com/hbm/items/special/ItemBookLore.java +++ b/src/main/java/com/hbm/items/special/ItemBookLore.java @@ -3,7 +3,7 @@ package com.hbm.items.special; import java.util.List; import com.hbm.inventory.gui.GUIBookLore; -import com.hbm.inventory.gui.GUIBookLore.GUIAppearance; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; @@ -42,47 +42,71 @@ public class ItemBookLore extends Item implements IGUIProvider { @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { - BookLoreType type = BookLoreType.getTypeFromStack(stack); + if(!stack.hasTagCompound()) return; + String key = stack.stackTagCompound.getString("k"); + if(key.isEmpty()) return; - if(type.hasAuthor) { - String unloc = I18nUtil.resolveKey("book_lore.author", I18nUtil.resolveKey("book_lore." + type.keyI18n + ".author")); - - list.add(unloc); - } + key = "book_lore." + key + ".author"; + String loc = I18nUtil.resolveKey(key); + if(!loc.equals(key)) + list.add(I18nUtil.resolveKey("book_lore.author", loc)); } @Override public String getUnlocalizedName(ItemStack stack) { - BookLoreType type = BookLoreType.getTypeFromStack(stack); + if(!stack.hasTagCompound()) return "book_lore.test"; + String key = stack.stackTagCompound.getString("k"); - return "book_lore." + type.keyI18n; + return "book_lore." + (key.isEmpty() ? "test" : key); } - protected IIcon[] icons; + //Textures - public final static String[] itemTextures = new String[] { ":book_guide", ":paper_loose", ":papers_loose", ":notebook" }; + @SideOnly(Side.CLIENT) protected IIcon[] overlays; + @Override @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { - String[] iconStrings = itemTextures; - this.icons = new IIcon[itemTextures.length]; + super.registerIcons(reg); - for(int i = 0; i < icons.length; i++) { - this.icons[i] = reg.registerIcon(RefStrings.MODID + itemTextures[i]); + this.overlays = new IIcon[2]; + this.overlays[0] = reg.registerIcon(RefStrings.MODID + ":book_cover"); + this.overlays[1] = reg.registerIcon(RefStrings.MODID + ":book_title"); + } + + @Override + @SideOnly(Side.CLIENT) + public boolean requiresMultipleRenderPasses() { return true; } + + @Override + public int getRenderPasses(int metadata) { return 3; } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamageForRenderPass(int meta, int pass) { + if(pass == 0) return this.itemIcon; + return overlays[pass - 1]; + } + + @Override + @SideOnly(Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) { + switch(pass) { + default: return 0xFFFFFF; + case 1: //book cover + if(stack.hasTagCompound()) { + int color = stack.stackTagCompound.getInteger("cov_col"); + if(color > 0) return color; + } + return 0x303030; + case 2: //title color + if(stack.hasTagCompound()) { + int color = stack.stackTagCompound.getInteger("tit_col"); + if(color > 0) return color; + } + return 0xFFFFFF; } } - - @Override - public IIcon getIconIndex(ItemStack stack) { - return this.getIcon(stack, 1); - } - - @Override - public IIcon getIcon(ItemStack stack, int pass) { - BookLoreType type = BookLoreType.getTypeFromStack(stack); - - return this.icons[type.appearance.itemTexture]; - } @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { @@ -95,88 +119,25 @@ public class ItemBookLore extends Item implements IGUIProvider { return new GUIBookLore(player); } - public enum BookLoreType { - TEST(true, "test", 5, GUIAppearance.NOTEBOOK), - BOOK_IODINE(true, "book_iodine", 3, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_PHOSPHOROUS(true, "book_phosphorous", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_DUST(true, "book_dust", 3, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_MERCURY(true, "book_mercury", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_FLOWER(true, "book_flower", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - BOOK_SYRINGE(true, "book_syringe", 2, GUIAppearance.LOOSEPAPERS) { - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag.getInteger("mku_slot")); - }}, - RESIGNATION_NOTE(true, "resignation_note", 3, GUIAppearance.NOTEBOOK), - MEMO_STOCKS(false, "memo_stocks", 1, GUIAppearance.LOOSEPAPER), - MEMO_SCHRAB_GSA(false, "memo_schrab_gsa", 2, GUIAppearance.LOOSEPAPERS), - MEMO_SCHRAB_RD(false, "memo_schrab_rd", 4, GUIAppearance.LOOSEPAPERS), - MEMO_SCHRAB_NUKE(true, "memo_schrab_nuke", 3, GUIAppearance.LOOSEPAPERS), - ; + public static ItemStack createBook(String key, int pages, int colorCov, int colorTit) { + ItemStack book = new ItemStack(ModItems.book_lore); + NBTTagCompound tag = new NBTTagCompound(); + tag.setString("k", key); + tag.setShort("p", (short)pages); + tag.setInteger("cov_col", colorCov); + tag.setInteger("tit_col", colorTit); - //Why? it's quite simple; i am too burnt out and also doing it the other way - //is too inflexible for my taste - public final GUIAppearance appearance; //gui and item texture appearance - - public boolean hasAuthor = false; - public final String keyI18n; - public final int pages; - - private BookLoreType(Boolean author, String key, int max, GUIAppearance appearance) { - this.hasAuthor = author; - this.keyI18n = key; - this.pages = max; - this.appearance = appearance; + book.stackTagCompound = tag; + return book; + } + + public static void addArgs(ItemStack book, int page, String... args) { + if(!book.hasTagCompound()) return; + NBTTagCompound data = new NBTTagCompound(); + for(int i = 0; i < args.length; i++) { + data.setString("a" + (i + 1), args[i]); } - private BookLoreType(String key, int max, GUIAppearance appearance) { - this.keyI18n = key; - this.pages = max; - this.appearance = appearance; - } - - /** Function to resolve I18n keys using potential save-dependent information, a la format specifiers. */ - public String resolveKey(String key, NBTTagCompound tag) { - return I18nUtil.resolveKey(key, tag); - } - - public static BookLoreType getTypeFromStack(ItemStack stack) { - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - - NBTTagCompound tag = stack.getTagCompound(); - int ordinal = tag.getInteger("Book_Lore_Type"); - - return BookLoreType.values()[Math.abs(ordinal) % BookLoreType.values().length]; - } - - public static ItemStack setTypeForStack(ItemStack stack, BookLoreType num) { - - if(stack.getItem() instanceof ItemBookLore) { - if(!stack.hasTagCompound()) { - stack.stackTagCompound = new NBTTagCompound(); - } - - NBTTagCompound tag = stack.getTagCompound(); - tag.setInteger("Book_Lore_Type", num.ordinal()); - } - - return stack; - } + book.stackTagCompound.setTag("p" + page, data); } } diff --git a/src/main/java/com/hbm/items/special/ItemByproduct.java b/src/main/java/com/hbm/items/special/ItemByproduct.java index 049c8f20e..6b513884f 100644 --- a/src/main/java/com/hbm/items/special/ItemByproduct.java +++ b/src/main/java/com/hbm/items/special/ItemByproduct.java @@ -31,7 +31,11 @@ public class ItemByproduct extends ItemEnumMulti { B_ALUMINIUM(0xE8F2F9), B_SULFUR(0xEAD377), B_CALCIUM(0xCFCFA6), - B_BISMUTH(0x8D8577); + B_BISMUTH(0x8D8577), + B_RADIUM(0xE9FAF6), + B_TECHNETIUM(0xCADFDF), + B_POLONIUM(0xCADFDF), + B_URANIUM(0x868D82); public int color; diff --git a/src/main/java/com/hbm/items/special/ItemDoorSkin.java b/src/main/java/com/hbm/items/special/ItemDoorSkin.java new file mode 100644 index 000000000..c7211473f --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemDoorSkin.java @@ -0,0 +1,36 @@ +package com.hbm.items.special; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; + +import java.util.List; + +public class ItemDoorSkin extends Item { + protected final IIcon[] icons; + + public ItemDoorSkin(int skinCount) { + setMaxStackSize(1); + icons = new IIcon[skinCount]; + } + + @Override + public boolean getHasSubtypes() { + return true; + } + + @Override + public void getSubItems(Item item, CreativeTabs creativeTabs, List list) { + for(int i = 0; i < icons.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int meta) { + return icons[meta]; + } +} diff --git a/src/main/java/com/hbm/items/special/ItemSlidingBlastDoorSkin.java b/src/main/java/com/hbm/items/special/ItemSlidingBlastDoorSkin.java new file mode 100644 index 000000000..36008e132 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemSlidingBlastDoorSkin.java @@ -0,0 +1,28 @@ +package com.hbm.items.special; + +import com.hbm.lib.RefStrings; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; + +public class ItemSlidingBlastDoorSkin extends ItemDoorSkin { + public ItemSlidingBlastDoorSkin() { + super(3); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister reg) { + this.itemIcon = reg.registerIcon(this.getIconString()); + + this.icons[0] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_default"); + this.icons[1] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_variant1"); + this.icons[2] = reg.registerIcon(RefStrings.MODID + ":sliding_blast_door_variant2"); + } + + @Override + public String getUnlocalizedName(ItemStack stack) { + return super.getUnlocalizedName(stack) + "." + stack.getItemDamage(); + } +} diff --git a/src/main/java/com/hbm/items/special/ItemTeleLink.java b/src/main/java/com/hbm/items/special/ItemTeleLink.java index baf9880ce..6ed12b051 100644 --- a/src/main/java/com/hbm/items/special/ItemTeleLink.java +++ b/src/main/java/com/hbm/items/special/ItemTeleLink.java @@ -42,7 +42,7 @@ public class ItemTeleLink extends Item { if(!stack.hasTagCompound()) { world.playSoundAtEntity(player, "hbm:item.techBoop", 1.0F, 1.0F); - player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[TeleLink] No destiation set!")); + player.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "[TeleLink] No destination set!")); return false; } diff --git a/src/main/java/com/hbm/items/special/ItemTrain.java b/src/main/java/com/hbm/items/special/ItemTrain.java new file mode 100644 index 000000000..007d31a91 --- /dev/null +++ b/src/main/java/com/hbm/items/special/ItemTrain.java @@ -0,0 +1,100 @@ +package com.hbm.items.special; + +import java.util.List; + +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.entity.train.TrainCargoTram; +import com.hbm.entity.train.TrainCargoTramTrailer; +import com.hbm.entity.train.TrainTunnelBore; +import com.hbm.items.ItemEnumMulti; +import com.hbm.util.EnumUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class ItemTrain extends ItemEnumMulti { + + public ItemTrain() { + super(EnumTrainType.class, true, true); + this.setCreativeTab(CreativeTabs.tabTransport); + this.setMaxStackSize(1); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + EnumTrainType train = EnumUtil.grabEnumSafely(this.theEnum, stack.getItemDamage()); + + if(train.engine != null) list.add(EnumChatFormatting.GREEN + "Engine: " + EnumChatFormatting.RESET + train.engine); + list.add(EnumChatFormatting.GREEN + "Gauge: " + EnumChatFormatting.RESET + train.gauge); + if(train.maxSpeed != null) list.add(EnumChatFormatting.GREEN + "Max Speed: " + EnumChatFormatting.RESET + train.maxSpeed); + if(train.acceleration != null) list.add(EnumChatFormatting.GREEN + "Acceleration: " + EnumChatFormatting.RESET + train.acceleration); + if(train.brakeThreshold != null) list.add(EnumChatFormatting.GREEN + "Engine Brake Threshold: " + EnumChatFormatting.RESET + train.brakeThreshold); + if(train.parkingBrake != null) list.add(EnumChatFormatting.GREEN + "Parking Brake: " + EnumChatFormatting.RESET + train.parkingBrake); + } + + public static enum EnumTrainType { + + // Engine Gauge Max Speed Accel. Eng. Brake Parking Brake + CARGO_TRAM(TrainCargoTram.class, "Electric", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"), + CARGO_TRAM_TRAILER(TrainCargoTramTrailer.class, null, "Standard Gauge", "Yes", null, null, "No"), + TUNNEL_BORE(TrainTunnelBore.class, "NONE", "Standard Gauge", "10m/s", "0.2m/s", "<1m/s", "Yes"); + + public Class train; + public String engine; + public String maxSpeed; + public String acceleration; + public String brakeThreshold; + public String parkingBrake; + public String gauge; + private EnumTrainType(Class train, String engine, String gauge, String maxSpeed, String acceleration, String brakeThreshold, String parkingBrake) { + this.train = train; + this.engine = engine; + this.maxSpeed = maxSpeed; + this.acceleration = acceleration; + this.brakeThreshold = brakeThreshold; + this.parkingBrake = parkingBrake; + this.gauge = gauge; + } + } + + @Override + public boolean onItemUse(ItemStack stack, EntityPlayer entity, 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 IRailNTM) { + + EnumTrainType type = EnumUtil.grabEnumSafely(theEnum, stack.getItemDamage()); + EntityRailCarBase train = null; + try { train = type.train.getConstructor(World.class).newInstance(world); } catch(Exception e) { } + + if(train != null && train.getGauge() == ((IRailNTM) b).getGauge(world, x, y, z)) { + if(!world.isRemote) { + train.setPosition(x + fx, y + fy, z + fz); + BlockPos anchor = train.getCurrentAnchorPos(); + train.rotationYaw = entity.rotationYaw; + Vec3 corePos = train.getRelPosAlongRail(anchor, 0, new MoveContext(RailCheckType.CORE, 0)); + train.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + Vec3 frontPos = train.getRelPosAlongRail(anchor, train.getLengthSpan(), new MoveContext(RailCheckType.FRONT, train.getCollisionSpan() - train.getLengthSpan())); + Vec3 backPos = train.getRelPosAlongRail(anchor, -train.getLengthSpan(), new MoveContext(RailCheckType.BACK, train.getCollisionSpan() - train.getLengthSpan())); + train.rotationYaw = train.generateYaw(frontPos, backPos); + world.spawnEntityInWorld(train); + } + + stack.stackSize--; + return true; + } + } + + return false; + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java index 3e2285ec6..211a203c6 100644 --- a/src/main/java/com/hbm/items/tool/ItemBlowtorch.java +++ b/src/main/java/com/hbm/items/tool/ItemBlowtorch.java @@ -28,8 +28,11 @@ import net.minecraft.world.World; public class ItemBlowtorch extends Item implements IFillableItem { public ItemBlowtorch() { + this.setMaxStackSize(1); this.setFull3D(); this.setCreativeTab(MainRegistry.controlTab); + + ToolType.TORCH.register(new ItemStack(this)); } @Override @@ -134,7 +137,7 @@ public class ItemBlowtorch extends Item implements IFillableItem { if(!world.isRemote) { if(this == ModItems.blowtorch) { - this.setFill(stack, Fluids.GAS, this.getFill(stack, Fluids.GAS) - 1000); + this.setFill(stack, Fluids.GAS, this.getFill(stack, Fluids.GAS) - 250); } if(this == ModItems.acetylene_torch) { diff --git a/src/main/java/com/hbm/items/tool/ItemBoltgun.java b/src/main/java/com/hbm/items/tool/ItemBoltgun.java new file mode 100644 index 000000000..34440b70a --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemBoltgun.java @@ -0,0 +1,134 @@ +package com.hbm.items.tool; + +import com.hbm.blocks.ModBlocks; +import com.hbm.items.IAnimatedItem; +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.util.EntityDamageUtil; + +import api.hbm.block.IToolable; +import api.hbm.block.IToolable.ToolType; +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.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class ItemBoltgun extends Item implements IAnimatedItem { + + public ItemBoltgun() { + this.setMaxStackSize(1); + this.setCreativeTab(MainRegistry.controlTab); + + ToolType.BOLT.register(new ItemStack(this)); + } + + @Override + public Item setUnlocalizedName(String unlocalizedName) { + super.setUnlocalizedName(unlocalizedName); + this.setTextureName(RefStrings.MODID + ":"+ unlocalizedName); + return this; + } + + @Override + public boolean onLeftClickEntity(ItemStack stack, EntityPlayer player, Entity entity) { + + World world = player.worldObj; + if(!entity.isEntityAlive()) return false; + + Item[] bolts = new Item[] { ModItems.bolt_dura_steel, ModItems.bolt_tungsten, Item.getItemFromBlock(ModBlocks.steel_beam) }; + + for(Item item : bolts) { + for(int i = 0; i < player.inventory.getSizeInventory(); i++) { + ItemStack slot = player.inventory.getStackInSlot(i); + + if(slot != null) { + if(slot.getItem() == item) { + if(!world.isRemote) { + world.playSoundAtEntity(entity, "hbm:item.boltgun", 1.0F, 1.0F); + player.inventory.decrStackSize(i, 1); + player.inventoryContainer.detectAndSendChanges(); + EntityDamageUtil.attackEntityFromIgnoreIFrame(entity, DamageSource.causePlayerDamage(player).setDamageBypassesArmor(), 10F); + + if(!entity.isEntityAlive() && entity instanceof EntityPlayer) { + ((EntityPlayer) entity).triggerAchievement(MainRegistry.achGoFish); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.height / 2 - entity.yOffset, entity.posZ), new TargetPoint(world.provider.dimensionId, entity.posX, entity.posY, entity.posZ, 50)); + } else { + // doing this on the client outright removes the packet delay and makes the animation silky-smooth + NBTTagCompound d0 = new NBTTagCompound(); + d0.setString("type", "anim"); + d0.setString("mode", "generic"); + MainRegistry.proxy.effectNT(d0); + } + return true; + } + } + } + } + + return false; + } + + @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 IToolable && ((IToolable)b).onScrew(world, player, x, y, z, side, fX, fY, fZ, ToolType.BOLT)) { + + if(!world.isRemote) { + + world.playSoundAtEntity(player, "hbm:item.boltgun", 1.0F, 1.0F); + player.inventoryContainer.detectAndSendChanges(); + ForgeDirection dir = ForgeDirection.getOrientation(side); + double off = 0.25; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "largeexplode"); + data.setFloat("size", 1F); + data.setByte("count", (byte)1); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, x + fX + dir.offsetX * off, y + fY + dir.offsetY * off, z + fZ + dir.offsetZ * off), new TargetPoint(world.provider.dimensionId, x, y, z, 50)); + + NBTTagCompound d0 = new NBTTagCompound(); + d0.setString("type", "anim"); + d0.setString("mode", "generic"); + PacketDispatcher.wrapper.sendTo(new AuxParticlePacketNT(d0, 0, 0, 0), (EntityPlayerMP) player); + } + + return false; + } + + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack) { + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 1, 50)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 1, 100))); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemCouplingTool.java b/src/main/java/com/hbm/items/tool/ItemCouplingTool.java new file mode 100644 index 000000000..c6295697d --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemCouplingTool.java @@ -0,0 +1,5 @@ +package com.hbm.items.tool; + +import net.minecraft.item.Item; + +public class ItemCouplingTool extends Item { } diff --git a/src/main/java/com/hbm/items/tool/ItemModMinecart.java b/src/main/java/com/hbm/items/tool/ItemModMinecart.java index c065c189f..4bc248f8c 100644 --- a/src/main/java/com/hbm/items/tool/ItemModMinecart.java +++ b/src/main/java/com/hbm/items/tool/ItemModMinecart.java @@ -1,6 +1,7 @@ package com.hbm.items.tool; import java.util.List; +import java.util.Locale; import com.hbm.entity.cart.*; import com.hbm.items.ModItems; @@ -103,7 +104,7 @@ public class ItemModMinecart extends Item { @Override public String getUnlocalizedName(ItemStack stack) { EnumMinecart cart = EnumUtil.grabEnumSafely(EnumMinecart.class, stack.getItemDamage()); - return super.getUnlocalizedName() + "." + cart.name().toLowerCase(); + return super.getUnlocalizedName() + "." + cart.name().toLowerCase(Locale.US); } @Override @@ -126,7 +127,7 @@ public class ItemModMinecart extends Item { for(int i = 0; i < EnumCartBase.values().length; i++) { EnumCartBase base = EnumCartBase.values()[i]; - bases[i] = reg.registerIcon(this.getIconString() + "." + base.name().toLowerCase()); + bases[i] = reg.registerIcon(this.getIconString() + "." + base.name().toLowerCase(Locale.US)); } EnumMinecart[] enums = EnumMinecart.values(); @@ -134,7 +135,7 @@ public class ItemModMinecart extends Item { for(int i = 0; i < icons.length; i++) { Enum num = enums[i]; - this.icons[i] = reg.registerIcon(this.getIconString() + "_overlay." + num.name().toLowerCase()); + this.icons[i] = reg.registerIcon(this.getIconString() + "_overlay." + num.name().toLowerCase(Locale.US)); } } diff --git a/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java new file mode 100644 index 000000000..4ff3cc55f --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemPollutionDetector.java @@ -0,0 +1,42 @@ +package com.hbm.items.tool; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionData; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.world.World; + +public class ItemPollutionDetector extends Item { + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean bool) { + + if(!(entity instanceof EntityPlayerMP) || world.getTotalWorldTime() % 10 != 0) return; + + PollutionData data = PollutionHandler.getPollutionData(world, (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ)); + if(data == null) data = new PollutionData(); + + float soot = data.pollution[PollutionType.SOOT.ordinal()]; + float poison = data.pollution[PollutionType.POISON.ordinal()]; + float heavymetal = data.pollution[PollutionType.HEAVYMETAL.ordinal()]; + float fallout = data.pollution[PollutionType.FALLOUT.ordinal()]; + + soot = ((int) (soot * 100)) / 100F; + poison = ((int) (poison * 100)) / 100F; + heavymetal = ((int) (heavymetal * 100)) / 100F; + fallout = ((int) (fallout * 100)) / 100F; + + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Soot: " + soot).color(EnumChatFormatting.YELLOW).flush(), 100, 4000), (EntityPlayerMP) entity); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Poison: " + poison).color(EnumChatFormatting.YELLOW).flush(), 101, 4000), (EntityPlayerMP) entity); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Heavy metal: " + heavymetal).color(EnumChatFormatting.YELLOW).flush(), 102, 4000), (EntityPlayerMP) entity); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("Fallout: " + fallout).color(EnumChatFormatting.YELLOW).flush(), 103, 4000), (EntityPlayerMP) entity); + } +} diff --git a/src/main/java/com/hbm/items/tool/ItemToolAbility.java b/src/main/java/com/hbm/items/tool/ItemToolAbility.java index e5b006909..f0c4496ad 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolAbility.java +++ b/src/main/java/com/hbm/items/tool/ItemToolAbility.java @@ -3,6 +3,7 @@ package com.hbm.items.tool; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.Locale; import java.util.Set; import com.google.common.collect.HashMultimap; @@ -10,6 +11,10 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.hbm.handler.ToolAbility; import com.hbm.handler.ToolAbility.*; +import com.hbm.main.MainRegistry; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ChatBuilder; import com.hbm.handler.WeaponAbility; import api.hbm.item.IDepthRockTool; @@ -21,14 +26,12 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.init.Blocks; import net.minecraft.item.EnumRarity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemTool; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -90,7 +93,7 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc this.setHarvestLevel("pickaxe", material.getHarvestLevel()); this.setHarvestLevel("shovel", material.getHarvestLevel()); } else { - this.setHarvestLevel(type.toString().toLowerCase(), material.getHarvestLevel()); + this.setHarvestLevel(type.toString().toLowerCase(Locale.US), material.getHarvestLevel()); } } @@ -238,18 +241,17 @@ public class ItemToolAbility extends ItemTool implements IItemAbility, IDepthRoc while(getCurrentAbility(stack) != null && !getCurrentAbility(stack).isAllowed()) { - player.addChatComponentMessage(new ChatComponentText("[Ability ").appendSibling(new ChatComponentTranslation(getCurrentAbility(stack).getName(), new Object[0])) - .appendSibling(new ChatComponentText(getCurrentAbility(stack).getExtension() + " is blacklisted!]")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("[Ability ").nextTranslation(getCurrentAbility(stack).getName()).next(getCurrentAbility(stack).getExtension() + " is blacklisted!]").colorAll(EnumChatFormatting.RED).flush(), MainRegistry.proxy.ID_TOOLABILITY), (EntityPlayerMP) player); + i++; setAbility(stack, i % this.breakAbility.size()); } if(getCurrentAbility(stack) != null) { - player.addChatComponentMessage(new ChatComponentText("[Enabled ").appendSibling(new ChatComponentTranslation(getCurrentAbility(stack).getName(), new Object[0])) - .appendSibling(new ChatComponentText(getCurrentAbility(stack).getExtension() + "]")).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.YELLOW))); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("[Enabled ").nextTranslation(getCurrentAbility(stack).getName()).next(getCurrentAbility(stack).getExtension() + "]").colorAll(EnumChatFormatting.YELLOW).flush(), MainRegistry.proxy.ID_TOOLABILITY), (EntityPlayerMP) player); } else { - player.addChatComponentMessage(new ChatComponentText(EnumChatFormatting.GOLD + "[Tool ability deactivated]")); + PacketDispatcher.wrapper.sendTo(new PlayerInformPacket(ChatBuilder.start("[Tool ability deactivated]").color(EnumChatFormatting.GOLD).flush(), MainRegistry.proxy.ID_TOOLABILITY), (EntityPlayerMP) player); } world.playSoundAtEntity(player, "random.orb", 0.25F, getCurrentAbility(stack) == null ? 0.75F : 1.25F); diff --git a/src/main/java/com/hbm/items/tool/ItemTooling.java b/src/main/java/com/hbm/items/tool/ItemTooling.java index f0c4119da..58bfd687a 100644 --- a/src/main/java/com/hbm/items/tool/ItemTooling.java +++ b/src/main/java/com/hbm/items/tool/ItemTooling.java @@ -18,6 +18,8 @@ public class ItemTooling extends ItemCraftingDegradation { this.type = type; this.setFull3D(); this.setCreativeTab(MainRegistry.controlTab); + + type.register(new ItemStack(this)); } @Override diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 9401b7b76..4c80ccab4 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,8 +2,9 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.lib.Library; -import com.hbm.world.feature.OilSpot; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -23,6 +24,16 @@ public class ItemWandD extends Item { if(pos != null) { + /*ExplosionVNT vnt = new ExplosionVNT(world, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 7); + vnt.setBlockAllocator(new BlockAllocatorBulkie(60)); + vnt.setBlockProcessor(new BlockProcessorStandard().withBlockEffect(new BlockMutatorBulkie(ModBlocks.block_slag)).setNoDrop()); + vnt.setEntityProcessor(new EntityProcessorStandard()); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectStandard()); + vnt.explode();*/ + + PollutionHandler.incrementPollution(world, pos.blockX, pos.blockY, pos.blockZ, PollutionType.SOOT, 15); + /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); @@ -43,23 +54,6 @@ public class ItemWandD extends Item { tom.destructionRange = 600; world.spawnEntityInWorld(tom);*/ - /*ItemStack itemStack = new ItemStack(ModItems.book_lore); - BookLoreType.setTypeForStack(itemStack, BookLoreType.BOOK_IODINE); - - player.inventory.addItemStackToInventory(itemStack); - player.inventoryContainer.detectAndSendChanges();*/ - - //use sparingly - /*int k = ((pos.blockX >> 4) << 4) + 8; - int l = ((pos.blockZ >> 4) << 4) + 8; - - MapGenBunker.Start start = new MapGenBunker.Start(world, world.rand, pos.blockX >> 4, pos.blockZ >> 4); - start.generateStructure(world, world.rand, new StructureBoundingBox(k - 124, l - 124, k + 15 + 124, l + 15 + 124));*/ - //MapGenStronghold.Start startS = new MapGenStronghold.Start(world, world.rand, pos.blockX >> 4, pos.blockZ >> 4); - //startS.generateStructure(world, world.rand, new StructureBoundingBox(k - 124, l - 124, k + 15 + 124, l + 15 + 124)); - - OilSpot.generateOilSpot(world, pos.blockX, pos.blockZ, 3, 50, true); - /*EntityNukeTorex torex = new EntityNukeTorex(world); torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0); torex.getDataWatcher().updateObject(10, 1.5F); diff --git a/src/main/java/com/hbm/items/tool/ItemWiring.java b/src/main/java/com/hbm/items/tool/ItemWiring.java index fc694ee82..cd6b5d787 100644 --- a/src/main/java/com/hbm/items/tool/ItemWiring.java +++ b/src/main/java/com/hbm/items/tool/ItemWiring.java @@ -60,17 +60,24 @@ public class ItemWiring extends Item { TileEntityPylonBase first = (TileEntityPylonBase) world.getTileEntity(x1, y1, z1); TileEntityPylonBase second = ((TileEntityPylonBase) te); - - if(TileEntityPylonBase.canConnect(first, second)) { - - first.addConnection(x, y, z); - second.addConnection(x1, y1, z1); - player.addChatMessage(new ChatComponentText("Wire end")); - - } else { - player.addChatMessage(new ChatComponentText("Wire error")); + + switch (TileEntityPylonBase.canConnect(first, second)) { + case 0: + first.addConnection(x, y, z); + second.addConnection(x1, y1, z1); + player.addChatMessage(new ChatComponentText("Wire end")); + break; + case 1: + player.addChatMessage(new ChatComponentText("Wire error - Pylons are not the same type")); + break; + case 2: + player.addChatMessage(new ChatComponentText("Wire error - Cannot connect to the same pylon")); + break; + case 3: + player.addChatMessage(new ChatComponentText("Wire error - Pylon is too far away")); + break; } - + stack.stackTagCompound = null; } else { diff --git a/src/main/java/com/hbm/items/weapon/GunFolly.java b/src/main/java/com/hbm/items/weapon/GunFolly.java index 9fa3a0a8a..b796d477a 100644 --- a/src/main/java/com/hbm/items/weapon/GunFolly.java +++ b/src/main/java/com/hbm/items/weapon/GunFolly.java @@ -1,7 +1,7 @@ package com.hbm.items.weapon; import com.hbm.entity.particle.EntitySSmokeFX; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.interfaces.IHoldableWeapon; import com.hbm.items.ModItems; @@ -63,7 +63,7 @@ public class GunFolly extends Item implements IHoldableWeapon { player.motionZ -= player.getLookVec().zCoord * mult; if (!world.isRemote) { - EntityBulletBase bullet = new EntityBulletBase(world, BulletConfigSyncingUtil.TEST_CONFIG, player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, BulletConfigSyncingUtil.TEST_CONFIG, player); world.spawnEntityInWorld(bullet); for(int i = 0; i < 25; i++) { diff --git a/src/main/java/com/hbm/items/weapon/GunLeverAction.java b/src/main/java/com/hbm/items/weapon/GunLeverAction.java deleted file mode 100644 index a0980d7b5..000000000 --- a/src/main/java/com/hbm/items/weapon/GunLeverAction.java +++ /dev/null @@ -1,271 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunLeverAction extends Item { - - Random rand = new Random(); - - public int dmgMin = 8; - public int dmgMax = 16; - - public GunLeverAction() { - - this.maxStackSize = 1; - - if(this == ModItems.gun_lever_action) - this.setMaxDamage(500); - if(this == ModItems.gun_lever_action_dark) - this.setMaxDamage(750); - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_20gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - EntityBulletBase entityarrow1; - EntityBulletBase entityarrow2; - EntityBulletBase entityarrow3; - EntityBulletBase entityarrow4; - EntityBulletBase entityarrow5; - EntityBulletBase entityarrow6; - EntityBulletBase entityarrow7; - EntityBulletBase entityarrow8; - EntityBulletBase entityarrow9; - EntityBulletBase entityarrow10; - - if (!p_77615_3_.isSneaking()) { - entityarrow1 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow2 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow3 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow4 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow5 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow6 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow7 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow8 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow9 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow10 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - } else { - entityarrow1 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow2 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow3 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow4 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow5 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow6 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow7 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow8 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow9 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - entityarrow10 = new EntityBulletBase(p_77615_2_, BulletConfigSyncingUtil.TEST_CONFIG, p_77615_3_); - } - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.revolverShootAlt", 5.0F, 0.75F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_20gauge); - } - - if (!p_77615_2_.isRemote) { - p_77615_2_.spawnEntityInWorld(entityarrow1); - p_77615_2_.spawnEntityInWorld(entityarrow2); - p_77615_2_.spawnEntityInWorld(entityarrow3); - p_77615_2_.spawnEntityInWorld(entityarrow4); - - if (!p_77615_3_.isSneaking()) { - - p_77615_2_.spawnEntityInWorld(entityarrow5); - p_77615_2_.spawnEntityInWorld(entityarrow6); - - int i = rand.nextInt(5); - - if(i >= 1) - p_77615_2_.spawnEntityInWorld(entityarrow7); - if(i >= 2) - p_77615_2_.spawnEntityInWorld(entityarrow8); - if(i >= 3) - p_77615_2_.spawnEntityInWorld(entityarrow9); - if(i >= 4) - p_77615_2_.spawnEntityInWorld(entityarrow10); - } - } - - setAnim(p_77615_1_, 1); - } - } - - - @Override - public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { - int j = getAnim(stack); - - if(j > 0) { - if(j < 30) - setAnim(stack, j + 1); - else - setAnim(stack, 0); - - if(j == 15) - world.playSoundAtEntity(entity, "hbm:weapon.leverActionReload", 2F, 0.85F); - } - - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - if(this.getAnim(p_77659_1_) == 0) - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(this == ModItems.gun_lever_action) - list.add("Universal head-to-spaghetti-sauce converter."); - if(this == ModItems.gun_lever_action_dark) - list.add("Blow your legs off!"); - list.add(""); - list.add("Ammo: 12x74 Buckshot"); - list.add("Damage: 8 - 16"); - list.add("Projectiles: 6 - 10"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } - - private static int getAnim(ItemStack stack) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - return 0; - } - - return stack.stackTagCompound.getInteger("animation"); - - } - - private static void setAnim(ItemStack stack, int i) { - if(stack.stackTagCompound == null) { - stack.stackTagCompound = new NBTTagCompound(); - } - - stack.stackTagCompound.setInteger("animation", i); - - } - - public static float getRotationFromAnim(ItemStack stack) { - float rad = 0.0174533F; - rad *= 7.5F; - int i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return rad * i; - else - return (rad * 10) - (rad * (i - 10)); - } - - public static float getOffsetFromAnim(ItemStack stack) { - float i = getAnim(stack); - - if(i < 10) - return 0; - i -= 10; - - if(i < 10) - return i / 10; - else - return 2 - (i / 10); - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunOSIPR.java b/src/main/java/com/hbm/items/weapon/GunOSIPR.java deleted file mode 100644 index bae321b8e..000000000 --- a/src/main/java/com/hbm/items/weapon/GunOSIPR.java +++ /dev/null @@ -1,129 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.entity.projectile.EntityCombineBall; -import com.hbm.items.ModItems; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunOSIPR extends Item { - - Random rand = new Random(); - - public GunOSIPR() - { - this.maxStackSize = 1; - this.setMaxDamage(2500); - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - if (!player.isSneaking()) { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo)) && count % 3 == 0) { - EntityBullet entityarrow = new EntityBullet(world, player, 3.0F, 5, 15, false, "chopper"); - entityarrow.setDamage(5 + rand.nextInt(10)); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.osiprShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - } else { - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo2)) && count % 30 == 0 && (this.getMaxItemUseDuration(stack) - count) != 0) { - EntityCombineBall entityarrow = new EntityCombineBall(player.worldObj, player, 3.0F); - entityarrow.setDamage(35 + rand.nextInt(45 - 35)); - - //world.playSoundAtEntity(player, "tile.piston.in", 1.0F, 0.75F); - world.playSoundAtEntity(player, "hbm:weapon.singFlyby", 1.0F, 1F); - - if (flag) { - entityarrow.canBePickedUp = 2; - } else { - player.inventory.consumeInventoryItem(ModItems.gun_osipr_ammo2); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(entityarrow); - } - } - - if((this.getMaxItemUseDuration(stack) - count) % 30 == 15 && (player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.gun_osipr_ammo2))) - world.playSoundAtEntity(player, "hbm:weapon.osiprCharging", 1.0F, 1F); - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Hold right mouse button"); - list.add("to shoot,"); - list.add("sneak to shoot a"); - list.add("dark energy ball!"); - list.add(""); - list.add("Ammo: Dark Energy Plugs"); - list.add("Secondary Ammo: Combine Ball"); - list.add("Damage: 5 - 15"); - list.add("Secondary Damage: 1000"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 5, 0)); - return multimap; - } - -} diff --git a/src/main/java/com/hbm/items/weapon/GunSMG.java b/src/main/java/com/hbm/items/weapon/GunSMG.java deleted file mode 100644 index e5cb4cf58..000000000 --- a/src/main/java/com/hbm/items/weapon/GunSMG.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.handler.BulletConfigSyncingUtil; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunSMG extends Item { - - Random rand = new Random(); - - public GunSMG() - { - this.maxStackSize = 1; - } - - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - new ArrowNockEvent(p_77659_3_, p_77659_1_); - { - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - } - - return p_77659_1_; - } - - @Override - public void onUsingTick(ItemStack stack, EntityPlayer player, int count) - { - World world = player.worldObj; - - boolean flag = player.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, stack) > 0; - if ((player.capabilities.isCreativeMode || player.inventory.hasItem(ModItems.ammo_9mm)) - && count % 2 == 0) { - - EntityBulletBase bullet = new EntityBulletBase(world, BulletConfigSyncingUtil.TEST_CONFIG, player); - //EntityArrow bullet = new EntityArrow(world, player, 3.0F); - - //world.playSoundAtEntity(player, "random.explode", 1.0F, 1.5F + (rand.nextFloat() / 4)); - world.playSoundAtEntity(player, "hbm:weapon.rifleShoot", 1.0F, 0.8F + (rand.nextFloat() * 0.4F)); - - if (flag) { - } else { - player.inventory.consumeInventoryItem(ModItems.ammo_9mm); - } - - if (!world.isRemote) { - world.spawnEntityInWorld(bullet); - } - } - } - - @Override - public int getItemEnchantability() { - return 0; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - list.add("Ratatatatatatatata!!"); - list.add(""); - list.add("Ammo: SMG Round"); - list.add("Damage: 2 - 8"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/GunShotgun.java b/src/main/java/com/hbm/items/weapon/GunShotgun.java deleted file mode 100644 index fe9b604d1..000000000 --- a/src/main/java/com/hbm/items/weapon/GunShotgun.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityBullet; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.SharedMonsterAttributes; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.ArrowLooseEvent; -import net.minecraftforge.event.entity.player.ArrowNockEvent; - -public class GunShotgun extends Item { - Random rand = new Random(); - - public int dmgMin = 3; - public int dmgMax = 7; - - public GunShotgun() { - - this.maxStackSize = 1; - - if (this == ModItems.gun_uboinik) { - this.setMaxDamage(500); - } - } - - /** - * called when the player releases the use item button. Args: itemstack, - * world, entityplayer, itemInUseCount - */ - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; - - ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); - MinecraftForge.EVENT_BUS.post(event); - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.ammo_12gauge)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 10.0D) { - return; - } - - if (j > 10.0F) { - f = 10.0F; - } - - EntityBullet entityarrow1 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow1.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow2 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow2.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow3 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow3.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow4 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow4.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow5 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow5.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow6 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow6.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow7 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow7.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow8 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow8.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow9 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow9.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow10 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow10.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow11 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow11.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - EntityBullet entityarrow12 = new EntityBullet(p_77615_2_, p_77615_3_, 3.0F); - entityarrow12.setDamage(dmgMin + rand.nextInt(dmgMax - dmgMin)); - - p_77615_1_.damageItem(1, p_77615_3_); - - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.shotgunShoot", 1.0F, 1.0F); - - if (flag) { } else { - p_77615_3_.inventory.consumeInventoryItem(ModItems.ammo_12gauge); - } - - if (!p_77615_2_.isRemote) { - p_77615_2_.spawnEntityInWorld(entityarrow1); - p_77615_2_.spawnEntityInWorld(entityarrow2); - p_77615_2_.spawnEntityInWorld(entityarrow3); - p_77615_2_.spawnEntityInWorld(entityarrow4); - p_77615_2_.spawnEntityInWorld(entityarrow5); - p_77615_2_.spawnEntityInWorld(entityarrow6); - - int i = rand.nextInt(7); - - if(i >= 1) - p_77615_2_.spawnEntityInWorld(entityarrow7); - if(i >= 2) - p_77615_2_.spawnEntityInWorld(entityarrow8); - if(i >= 3) - p_77615_2_.spawnEntityInWorld(entityarrow9); - if(i >= 4) - p_77615_2_.spawnEntityInWorld(entityarrow10); - if(i >= 5) - p_77615_2_.spawnEntityInWorld(entityarrow11); - if(i >= 6) - p_77615_2_.spawnEntityInWorld(entityarrow12); - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - /** - * How long it takes to use or consume an item - */ - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - /** - * returns the action that specifies what animation to play when the items - * is being used - */ - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - /** - * Called whenever this item is equipped and the right mouse button is - * pressed. Args: itemStack, world, entityPlayer - */ - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - /** - * Return the enchantability factor of the item, most of the time is based - * on material. - */ - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - //list.add("POW! Haha!"); - list.add("Abracadabra Tomanakara!"); - list.add(""); - list.add("Ammo: 12x70 Buckshot"); - list.add("Damage: 3 - 7"); - list.add("Projectiles: 6 - 12"); - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmo.java b/src/main/java/com/hbm/items/weapon/ItemAmmo.java index 1917cfa1c..f83ea596c 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmo.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmo.java @@ -3,6 +3,7 @@ package com.hbm.items.weapon; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.Locale; import java.util.Set; import com.hbm.items.ItemAmmoEnums.AmmoRocket; @@ -108,7 +109,7 @@ public class ItemAmmo extends ItemEnumMulti { public String key = "desc.item.ammo."; private AmmoItemTrait() { - key += this.toString().toLowerCase(); + key += this.toString().toLowerCase(Locale.US); } } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 8a96ce169..d4d263fa5 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -3,7 +3,9 @@ package com.hbm.items.weapon; import java.util.List; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.config.BombConfig; +import com.hbm.entity.effect.EntityMist; import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.logic.EntityNukeExplosionMK5; import com.hbm.entity.projectile.EntityArtilleryShell; @@ -12,10 +14,14 @@ 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.BlockMutatorDebris; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; @@ -46,8 +52,7 @@ import net.minecraft.util.MovingObjectPosition.MovingObjectType; public class ItemAmmoArty extends Item { public static Random rand = new Random(); - public static ArtilleryShell[] itemTypes = new ArtilleryShell[ /* >>> */ 9 /* <<< */ ]; - //public static ArtilleryShell[] shellTypes = new ArtilleryShell[ /* >>> */ 8 /* <<< */ ]; + public static ArtilleryShell[] itemTypes = new ArtilleryShell[ /* >>> */ 12 /* <<< */ ]; /* item types */ public final int NORMAL = 0; public final int CLASSIC = 1; @@ -58,6 +63,9 @@ public class ItemAmmoArty extends Item { public final int MINI_NUKE_MULTI = 6; public final int PHOSPHORUS_MULTI = 7; public final int CARGO = 8; + public final int CHLORINE = 9; + public final int PHOSGENE = 10; + public final int MUSTARD = 11; /* non-item shell types */ public ItemAmmoArty() { @@ -78,6 +86,9 @@ public class ItemAmmoArty extends Item { list.add(new ItemStack(item, 1, MINI_NUKE_MULTI)); list.add(new ItemStack(item, 1, NUKE)); list.add(new ItemStack(item, 1, CARGO)); + list.add(new ItemStack(item, 1, CHLORINE)); + list.add(new ItemStack(item, 1, PHOSGENE)); + list.add(new ItemStack(item, 1, MUSTARD)); } @Override @@ -195,7 +206,7 @@ public class ItemAmmoArty extends Item { ExplosionVNT xnt = new ExplosionVNT(shell.worldObj, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, size); if(breaksBlocks) { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); - xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); + xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(ModBlocks.block_slag, 1))); } xnt.setEntityProcessor(new EntityProcessorCross(7.5D).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); @@ -298,6 +309,65 @@ public class ItemAmmoArty extends Item { } }}; + /* GAS */ + this.itemTypes[CHLORINE] = new ArtilleryShell("ammo_arty_chlorine", SpentCasing.COLOR_CASE_16INCH) { + public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.killAndClear(); + Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); + shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false); + EntityMist mist = new EntityMist(shell.worldObj); + mist.setType(Fluids.CHLORINE); + mist.setPosition(mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord - 3, mop.hitVec.zCoord - vec.zCoord); + mist.setArea(15, 7.5F); + shell.worldObj.spawnEntityInWorld(mist); + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.HEAVYMETAL, 5F); + } + }; + this.itemTypes[PHOSGENE] = new ArtilleryShell("ammo_arty_phosgene", SpentCasing.COLOR_CASE_16INCH_NUKE) { + public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.killAndClear(); + Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); + shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false); + for(int i = 0; i < 3; i++) { + EntityMist mist = new EntityMist(shell.worldObj); + mist.setType(Fluids.PHOSGENE); + double x = mop.hitVec.xCoord - vec.xCoord; + double z = mop.hitVec.zCoord - vec.zCoord; + if(i > 0) { + x += rand.nextGaussian() * 15; + z += rand.nextGaussian() * 15; + } + mist.setPosition(x, mop.hitVec.yCoord - vec.yCoord - 5, z); + mist.setArea(15, 10); + shell.worldObj.spawnEntityInWorld(mist); + } + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.HEAVYMETAL, 10F); + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.POISON, 15F); + } + }; + this.itemTypes[MUSTARD] = new ArtilleryShell("ammo_arty_mustard_gas", SpentCasing.COLOR_CASE_16INCH_NUKE) { + public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.killAndClear(); + Vec3 vec = Vec3.createVectorHelper(shell.motionX, shell.motionY, shell.motionZ).normalize(); + shell.worldObj.createExplosion(shell, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, 5F, false); + for(int i = 0; i < 5; i++) { + EntityMist mist = new EntityMist(shell.worldObj); + mist.setType(Fluids.MUSTARDGAS); + double x = mop.hitVec.xCoord - vec.xCoord; + double z = mop.hitVec.zCoord - vec.zCoord; + if(i > 0) { + x += rand.nextGaussian() * 25; + z += rand.nextGaussian() * 25; + } + mist.setPosition(x, mop.hitVec.yCoord - vec.yCoord - 5, z); + mist.setArea(20, 10); + shell.worldObj.spawnEntityInWorld(mist); + } + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.HEAVYMETAL, 15F); + PollutionHandler.incrementPollution(shell.worldObj, mop.blockX, mop.blockY, mop.blockZ, PollutionType.POISON, 30F); + } + }; + /* CLUSTER SHELLS */ this.itemTypes[PHOSPHORUS_MULTI] = new ArtilleryShell("ammo_arty_phosphorus_multi", SpentCasing.COLOR_CASE_16INCH_PHOS) { public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { ItemAmmoArty.this.itemTypes[PHOSPHORUS].onImpact(shell, mop); } diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java index 9d2b1dba1..4eac7ec1f 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoHIMARS.java @@ -2,12 +2,14 @@ package com.hbm.items.weapon; import java.util.List; +import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityArtilleryRocket; import com.hbm.explosion.ExplosionChaos; 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.BlockMutatorDebris; import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; import com.hbm.explosion.vanillant.standard.EntityProcessorCross; import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; @@ -21,6 +23,7 @@ import com.hbm.potion.HbmPotion; 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.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -37,7 +40,7 @@ import net.minecraft.util.Vec3; public class ItemAmmoHIMARS extends Item { - public static HIMARSRocket[] itemTypes = new HIMARSRocket[ /* >>> */ 7 /* <<< */ ]; + public static HIMARSRocket[] itemTypes = new HIMARSRocket[ /* >>> */ 8 /* <<< */ ]; public static final int SMALL = 0; public static final int LARGE = 1; @@ -46,6 +49,7 @@ public class ItemAmmoHIMARS extends Item { public static final int SMALL_TB = 4; public static final int LARGE_TB = 5; public static final int SMALL_MINI_NUKE = 6; + public static final int SMALL_LAVA = 7; public ItemAmmoHIMARS() { this.setHasSubtypes(true); @@ -62,6 +66,7 @@ public class ItemAmmoHIMARS extends Item { list.add(new ItemStack(item, 1, SMALL_HE)); list.add(new ItemStack(item, 1, SMALL_WP)); list.add(new ItemStack(item, 1, SMALL_TB)); + list.add(new ItemStack(item, 1, SMALL_LAVA)); list.add(new ItemStack(item, 1, SMALL_MINI_NUKE)); list.add(new ItemStack(item, 1, LARGE)); list.add(new ItemStack(item, 1, LARGE_TB)); @@ -101,6 +106,11 @@ public class ItemAmmoHIMARS extends Item { list.add(r + "Deals nuclear damage"); list.add(r + "Destroys blocks"); break; + case SMALL_LAVA: + list.add(y + "Strength: 20"); + list.add(r + "Creates volcanic lava"); + list.add(r + "Destroys blocks"); + break; case LARGE: list.add(y + "Strength: 50"); list.add(y + "Damage modifier: 5x"); @@ -137,13 +147,13 @@ public class ItemAmmoHIMARS extends Item { public void onUpdate(EntityArtilleryRocket rocket) { } } - public static void standardExplosion(EntityArtilleryRocket rocket, MovingObjectPosition mop, float size, float rangeMod, boolean breaksBlocks) { + public static void standardExplosion(EntityArtilleryRocket rocket, MovingObjectPosition mop, float size, float rangeMod, boolean breaksBlocks, Block slag, int slagMeta) { rocket.worldObj.playSoundEffect(rocket.posX, rocket.posY, rocket.posZ, "hbm:weapon.explosionMedium", 20.0F, 0.9F + rocket.worldObj.rand.nextFloat() * 0.2F); Vec3 vec = Vec3.createVectorHelper(rocket.motionX, rocket.motionY, rocket.motionZ).normalize(); ExplosionVNT xnt = new ExplosionVNT(rocket.worldObj, mop.hitVec.xCoord - vec.xCoord, mop.hitVec.yCoord - vec.yCoord, mop.hitVec.zCoord - vec.zCoord, size); if(breaksBlocks) { xnt.setBlockAllocator(new BlockAllocatorStandard(48)); - xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop()); + xnt.setBlockProcessor(new BlockProcessorStandard().setNoDrop().withBlockEffect(new BlockMutatorDebris(slag, slagMeta))); } xnt.setEntityProcessor(new EntityProcessorCross(7.5).withRangeMod(rangeMod)); xnt.setPlayerProcessor(new PlayerProcessorStandard()); @@ -161,9 +171,10 @@ public class ItemAmmoHIMARS extends Item { private void init() { /* STANDARD ROCKETS */ - this.itemTypes[SMALL] = new HIMARSRocket("standard", "himars_standard", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, false); }}; - this.itemTypes[SMALL_HE] = new HIMARSRocket("standard_he", "himars_standard_he", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, true); }}; - this.itemTypes[LARGE] = new HIMARSRocket("single", "himars_single", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 50F, 5F, true); }}; + this.itemTypes[SMALL] = new HIMARSRocket("standard", "himars_standard", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, false, ModBlocks.block_slag, 1); }}; + this.itemTypes[SMALL_HE] = new HIMARSRocket("standard_he", "himars_standard_he", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, true, ModBlocks.block_slag, 1); }}; + this.itemTypes[SMALL_LAVA] = new HIMARSRocket("standard_lava", "himars_standard_lava", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 20F, 3F, true, ModBlocks.volcanic_lava_block, 0); }}; + this.itemTypes[LARGE] = new HIMARSRocket("single", "himars_single", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { standardExplosion(rocket, mop, 50F, 5F, true, ModBlocks.block_slag, 1); }}; this.itemTypes[SMALL_MINI_NUKE] = new HIMARSRocket("standard_mini_nuke", "himars_standard_mini_nuke", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { @@ -175,7 +186,7 @@ public class ItemAmmoHIMARS extends Item { this.itemTypes[SMALL_WP] = new HIMARSRocket("standard_wp", "himars_standard_wp", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 20F, 3F, false); + standardExplosion(rocket, mop, 20F, 3F, false, ModBlocks.block_slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); ExplosionChaos.burn(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 20); int radius = 30; @@ -198,14 +209,14 @@ public class ItemAmmoHIMARS extends Item { this.itemTypes[SMALL_TB] = new HIMARSRocket("standard_tb", "himars_standard_tb", 0) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 20F, 10F, true); + standardExplosion(rocket, mop, 20F, 10F, true, ModBlocks.block_slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); standardMush(rocket, mop, 20); }}; this.itemTypes[LARGE_TB] = new HIMARSRocket("single_tb", "himars_single_tb", 1) { public void onImpact(EntityArtilleryRocket rocket, MovingObjectPosition mop) { - standardExplosion(rocket, mop, 50F, 12F, true); + standardExplosion(rocket, mop, 50F, 12F, true, ModBlocks.slag, 1); ExplosionLarge.spawnShrapnels(rocket.worldObj, (int) mop.hitVec.xCoord, (int) mop.hitVec.yCoord, (int) mop.hitVec.zCoord, 30); standardMush(rocket, mop, 35); }}; diff --git a/src/main/java/com/hbm/items/weapon/ItemCoilgun.java b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java new file mode 100644 index 000000000..9bce20e0e --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemCoilgun.java @@ -0,0 +1,41 @@ +package com.hbm.items.weapon; + +import com.hbm.handler.GunConfiguration; +import com.hbm.render.anim.BusAnimation; +import com.hbm.render.anim.BusAnimationKeyframe; +import com.hbm.render.anim.BusAnimationSequence; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.item.ItemStack; + +public class ItemCoilgun extends ItemGunBase { + + public ItemCoilgun(GunConfiguration config) { + super(config); + } + + @Override + @SideOnly(Side.CLIENT) + public BusAnimation getAnimation(ItemStack stack, AnimType type) { + + if(type == AnimType.CYCLE) { + return new BusAnimation() + .addBus("RECOIL", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 100)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 200))); + } + + if(type == AnimType.RELOAD) { + return new BusAnimation() + .addBus("RELOAD", new BusAnimationSequence() + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 250)) + .addKeyframe(new BusAnimationKeyframe(1, 0, 0, 500)) + .addKeyframe(new BusAnimationKeyframe(0, 0, 0, 250))); + } + + GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig; + return config.animations.get(type); + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java new file mode 100644 index 000000000..6e9bf1de7 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemCryoCannon.java @@ -0,0 +1,118 @@ +package com.hbm.items.weapon; + +import com.hbm.entity.projectile.EntityChemical; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.packet.GunAnimationPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.anim.HbmAnimations.AnimType; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +public class ItemCryoCannon extends ItemGunBase { + + public ItemCryoCannon(GunConfiguration config) { + super(config); + } + + @Override + protected void fire(ItemStack stack, World world, EntityPlayer player) { + + if(this.getPressure(stack) >= 1000) return; + if(this.getTurbine(stack) < 100) return; + + BulletConfiguration config = null; + + if(mainConfig.reloadType == mainConfig.RELOAD_NONE) { + config = getBeltCfg(player, stack, true); + } else { + config = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); + } + + int bullets = config.bulletsMin; + + for(int k = 0; k < mainConfig.roundsPerCycle; k++) { + + if(!hasAmmo(stack, player, true)) + break; + + if(config.bulletsMax > config.bulletsMin) + bullets += world.rand.nextInt(config.bulletsMax - config.bulletsMin); + + for(int i = 0; i < bullets; i++) { + spawnProjectile(world, player, stack, BulletConfigSyncingUtil.getKey(config)); + } + + useUpAmmo(player, stack, true); + player.inventoryContainer.detectAndSendChanges(); + + int wear = (int) Math.ceil(config.wear / (1F + EnchantmentHelper.getEnchantmentLevel(Enchantment.unbreaking.effectId, stack))); + setItemWear(stack, getItemWear(stack) + wear); + } + + world.playSoundAtEntity(player, mainConfig.firingSound, mainConfig.firingVolume, mainConfig.firingPitch); + + if(mainConfig.ejector != null && !mainConfig.ejector.getAfterReload()) + queueCasing(player, mainConfig.ejector, config, stack); + } + + @Override + protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { + + EntityChemical chem = new EntityChemical(world, player); + chem.setFluid(Fluids.OXYGEN); + world.spawnEntityInWorld(chem); + + int pressure = this.getPressure(stack); + pressure += 5; + pressure = MathHelper.clamp_int(pressure, 0, 1000); + this.setPressure(stack, pressure); + + if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); + } + + @Override + protected void updateServer(ItemStack stack, World world, EntityPlayer player, int slot, boolean isCurrentItem) { + + int turbine = this.getTurbine(stack); + int pressure = this.getPressure(stack); + + if(this.getIsMouseDown(stack)) { + turbine += 10; + } else { + turbine -= 5; + pressure -= 5; + } + + turbine = MathHelper.clamp_int(turbine, 0, 100); + pressure = MathHelper.clamp_int(pressure, 0, 1000); + this.setTurbine(stack, turbine); + this.setPressure(stack, pressure); + + super.updateServer(stack, world, player, slot, isCurrentItem); + } + + public static void setTurbine(ItemStack stack, int i) { + writeNBT(stack, "turbine", i); + } + + public static int getTurbine(ItemStack stack) { + return readNBT(stack, "turbine"); + } + + public static void setPressure(ItemStack stack, int i) { + writeNBT(stack, "pressure", i); + } + + public static int getPressure(ItemStack stack) { + return readNBT(stack, "pressure"); + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java b/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java index e7f417999..c300075f8 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java +++ b/src/main/java/com/hbm/items/weapon/ItemGenericGrenade.java @@ -3,6 +3,8 @@ package com.hbm.items.weapon; import com.hbm.entity.grenade.EntityGrenadeBouncyGeneric; import com.hbm.entity.grenade.EntityGrenadeImpactGeneric; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -33,7 +35,7 @@ public class ItemGenericGrenade extends ItemGrenade { return stack; } - public void explode(World world, double x, double y, double z) { } + public void explode(Entity grenade, EntityLivingBase thrower, World world, double x, double y, double z) { } public int getMaxTimer() { return this.fuse * 20; diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenade.java b/src/main/java/com/hbm/items/weapon/ItemGrenade.java index f26ee698e..4bca576fe 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGrenade.java +++ b/src/main/java/com/hbm/items/weapon/ItemGrenade.java @@ -2,49 +2,7 @@ package com.hbm.items.weapon; import java.util.List; -import com.hbm.entity.grenade.EntityGrenadeASchrab; -import com.hbm.entity.grenade.EntityGrenadeBlackHole; -import com.hbm.entity.grenade.EntityGrenadeBreach; -import com.hbm.entity.grenade.EntityGrenadeBurst; -import com.hbm.entity.grenade.EntityGrenadeCloud; -import com.hbm.entity.grenade.EntityGrenadeCluster; -import com.hbm.entity.grenade.EntityGrenadeDynamite; -import com.hbm.entity.grenade.EntityGrenadeElectric; -import com.hbm.entity.grenade.EntityGrenadeFire; -import com.hbm.entity.grenade.EntityGrenadeFlare; -import com.hbm.entity.grenade.EntityGrenadeFrag; -import com.hbm.entity.grenade.EntityGrenadeGas; -import com.hbm.entity.grenade.EntityGrenadeGascan; -import com.hbm.entity.grenade.EntityGrenadeGeneric; -import com.hbm.entity.grenade.EntityGrenadeIFBouncy; -import com.hbm.entity.grenade.EntityGrenadeIFBrimstone; -import com.hbm.entity.grenade.EntityGrenadeIFConcussion; -import com.hbm.entity.grenade.EntityGrenadeIFGeneric; -import com.hbm.entity.grenade.EntityGrenadeIFHE; -import com.hbm.entity.grenade.EntityGrenadeIFHopwire; -import com.hbm.entity.grenade.EntityGrenadeIFImpact; -import com.hbm.entity.grenade.EntityGrenadeIFIncendiary; -import com.hbm.entity.grenade.EntityGrenadeIFMystery; -import com.hbm.entity.grenade.EntityGrenadeIFNull; -import com.hbm.entity.grenade.EntityGrenadeIFSpark; -import com.hbm.entity.grenade.EntityGrenadeIFSticky; -import com.hbm.entity.grenade.EntityGrenadeIFToxic; -import com.hbm.entity.grenade.EntityGrenadeLemon; -import com.hbm.entity.grenade.EntityGrenadeMIRV; -import com.hbm.entity.grenade.EntityGrenadeMk2; -import com.hbm.entity.grenade.EntityGrenadeNuclear; -import com.hbm.entity.grenade.EntityGrenadeNuke; -import com.hbm.entity.grenade.EntityGrenadePC; -import com.hbm.entity.grenade.EntityGrenadePlasma; -import com.hbm.entity.grenade.EntityGrenadePoison; -import com.hbm.entity.grenade.EntityGrenadePulse; -import com.hbm.entity.grenade.EntityGrenadeSchrabidium; -import com.hbm.entity.grenade.EntityGrenadeShrapnel; -import com.hbm.entity.grenade.EntityGrenadeSmart; -import com.hbm.entity.grenade.EntityGrenadeStrong; -import com.hbm.entity.grenade.EntityGrenadeTau; -import com.hbm.entity.grenade.EntityGrenadeZOMG; -import com.hbm.entity.grenade.EntityWastePearl; +import com.hbm.entity.grenade.*; import com.hbm.items.ModItems; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenadeFishing.java b/src/main/java/com/hbm/items/weapon/ItemGrenadeFishing.java new file mode 100644 index 000000000..a04d29f7e --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/ItemGrenadeFishing.java @@ -0,0 +1,60 @@ +package com.hbm.items.weapon; + +import java.util.Random; + +import com.hbm.entity.item.EntityItemBuoyant; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; + +public class ItemGrenadeFishing extends ItemGenericGrenade { + + public ItemGrenadeFishing(int fuse) { + super(fuse); + } + + @Override + public void explode(Entity grenade, EntityLivingBase thrower, World world, double x, double y, double z) { + world.newExplosion(null, x, y + 0.25D, z, 3F, false, false); + + int iX = (int) Math.floor(x); + int iY = (int) Math.floor(y); + int iZ = (int) Math.floor(z); + + for(int i = 0; i < 15; i++) { + + int rX = iX + world.rand.nextInt(15) - 7; + int rY = iY + world.rand.nextInt(15) - 7; + int rZ = iZ + world.rand.nextInt(15) - 7; + + if(world.getBlock(rX, rY, rZ).getMaterial() == Material.water) { + ItemStack loot = this.getRandomLoot(world.rand); + if(loot != null) { + EntityItemBuoyant item = new EntityItemBuoyant(world, rX + 0.5, rY + 0.5, rZ + 0.5, loot.copy()); + item.motionY = 1; + world.spawnEntityInWorld(item); + } + } + } + } + + public static ItemStack getRandomLoot(Random rand) { + float chance = rand.nextFloat(); + int luck = 0; + int speed = 100; //reduces both the junk and treasure chance to near zero + return net.minecraftforge.common.FishingHooks.getRandomFishable(rand, chance, luck, speed); + } + + @Override + public int getMaxTimer() { + return 60; + } + + @Override + public double getBounceMod() { + return 0.5D; + } +} diff --git a/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java b/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java index 1adcdb3dc..bd5ecda87 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java +++ b/src/main/java/com/hbm/items/weapon/ItemGrenadeKyiv.java @@ -1,5 +1,7 @@ package com.hbm.items.weapon; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; public class ItemGrenadeKyiv extends ItemGenericGrenade { @@ -8,7 +10,8 @@ public class ItemGrenadeKyiv extends ItemGenericGrenade { super(fuse); } - public void explode(World world, double x, double y, double z) { - world.newExplosion(null, x, y, z, 5F, true, true); + @Override + public void explode(Entity grenade, EntityLivingBase thrower, World world, double x, double y, double z) { + world.newExplosion(grenade, x, y, z, 5F, true, true); } } diff --git a/src/main/java/com/hbm/items/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 507b1a603..e2b428c7e 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -5,7 +5,7 @@ import java.util.List; import org.lwjgl.input.Mouse; import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; @@ -164,7 +164,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu //whether or not the gun can shoot in its current state protected boolean tryShoot(ItemStack stack, World world, EntityPlayer player, boolean main) { - if(getIsReloading(stack) && mainConfig.reloadType == mainConfig.RELOAD_SINGLE) { + //cancel reload when trying to shoot if it's a single reload weapon and at least one round is loaded + if(getIsReloading(stack) && mainConfig.reloadType == mainConfig.RELOAD_SINGLE && this.getMag(stack) > 0) { setReloadCycle(stack, 0); setIsReloading(stack, false); } @@ -229,7 +230,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu setItemWear(stack, getItemWear(stack) + wear); } - world.playSoundAtEntity(player, mainConfig.firingSound, 1.0F, mainConfig.firingPitch); + world.playSoundAtEntity(player, mainConfig.firingSound, mainConfig.firingVolume, mainConfig.firingPitch); if(mainConfig.ejector != null && !mainConfig.ejector.getAfterReload()) queueCasing(player, mainConfig.ejector, config, stack); @@ -263,7 +264,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu setItemWear(stack, getItemWear(stack) + config.wear); } - world.playSoundAtEntity(player, altConfig.firingSound, 1.0F, altConfig.firingPitch); + world.playSoundAtEntity(player, altConfig.firingSound, mainConfig.firingVolume, altConfig.firingPitch); if(altConfig.ejector != null) queueCasing(player, altConfig.ejector, config, stack); @@ -272,7 +273,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu //spawns the actual projectile, can be overridden to change projectile entity protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - EntityBulletBase bullet = new EntityBulletBase(world, config, player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, config, player); world.spawnEntityInWorld(bullet); if(player instanceof EntityPlayerMP) @@ -458,6 +459,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu { final BulletConfiguration bulletConfig = BulletConfigSyncingUtil.pullConfig(mainConfig.config.get(getMagType(stack))); list.add(I18nUtil.resolveKey(HbmCollection.gunDamage, bulletConfig.dmgMin, bulletConfig.dmgMax)); + if(bulletConfig.bulletsMax != 1) + list.add(I18nUtil.resolveKey(HbmCollection.gunPellets, bulletConfig.bulletsMin, bulletConfig.bulletsMax)); int dura = Math.max(mainConfig.durability - getItemWear(stack), 0); list.add(I18nUtil.resolveKey(HbmCollection.durability, dura + " / " + mainConfig.durability)); @@ -690,7 +693,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu GunConfiguration gcfg = gun.mainConfig; if(type == ElementType.HOTBAR) { - BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(ItemGunBase.getMagType(stack))); + int mag = ItemGunBase.getMagType(stack); + if(gun.mainConfig.config.size() == 0) return; + BulletConfiguration bcfg = BulletConfigSyncingUtil.pullConfig(gun.mainConfig.config.get(mag < gun.mainConfig.config.size() ? mag : 0)); if(bcfg == null) { return; diff --git a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java index 880813acd..e58c89eee 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunChemthrower.java @@ -84,7 +84,8 @@ public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { public boolean canReload(ItemStack stack, World world, EntityPlayer player) { return false; } - + + @Override protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { //spawn fluid projectile @@ -96,6 +97,7 @@ public class ItemGunChemthrower extends ItemGunBase implements IFillableItem { if(player instanceof EntityPlayerMP) PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); } + @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java index 63f347527..7dd20b1a0 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java @@ -1,13 +1,17 @@ package com.hbm.items.weapon; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.GunConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.ModDamageSource; import com.hbm.main.MainRegistry; +import com.hbm.packet.GunAnimationPacket; +import com.hbm.packet.PacketDispatcher; +import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.sound.AudioWrapper; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -22,17 +26,20 @@ public class ItemGunGauss extends ItemGunBase { public void endAction(ItemStack stack, World world, EntityPlayer player, boolean main) { if(getHasShot(stack)) { - world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 1.0F, 1.0F); + world.playSoundAtEntity(player, "hbm:weapon.sparkShoot", 2.0F, 1.0F); setHasShot(stack, false); } if(!main && getStored(stack) > 0) { - EntityBulletBase bullet = new EntityBulletBase(world, altConfig.config.get(0), player); - bullet.overrideDamage = Math.min(getStored(stack), 13) * 3.5F; + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, altConfig.config.get(0), player); + bullet.overrideDamage = Math.max(getStored(stack), 1) * 10F; world.spawnEntityInWorld(bullet); - world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 1.0F, 0.75F); + world.playSoundAtEntity(player, "hbm:weapon.tauShoot", 0.5F, 0.75F); setItemWear(stack, getItemWear(stack) + (getCharge(stack)) * 2); setCharge(stack, 0); + + if(player instanceof EntityPlayerMP) + PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.CYCLE.ordinal()), (EntityPlayerMP) player); } } @@ -52,7 +59,7 @@ public class ItemGunGauss extends ItemGunBase { public void startActionClient(ItemStack stack, World world, EntityPlayer player, boolean main) { if(!main && getItemWear(stack) < mainConfig.durability && player.inventory.hasItem(ModItems.gun_xvl1456_ammo)) { - chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 0.75F); + chargeLoop = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, 1.0F, 5F, 0.75F); world.playSoundAtEntity(player, "hbm:weapon.tauChargeLoop2", 1.0F, 0.75F); if(chargeLoop != null) { @@ -107,13 +114,13 @@ public class ItemGunGauss extends ItemGunBase { chargeLoop = rebootAudio(chargeLoop, player); } chargeLoop.updatePosition((float)player.posX, (float)player.posY, (float)player.posZ); - chargeLoop.updatePitch(chargeLoop.getPitch() + 0.01F); + chargeLoop.updatePitch(1 + (getCharge(stack)) * 0.01F); } } public AudioWrapper rebootAudio(AudioWrapper wrapper, EntityPlayer player) { wrapper.stopSound(); - AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getPitch()); + AudioWrapper audio = MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop2", (float)player.posX, (float)player.posY, (float)player.posZ, wrapper.getVolume(), wrapper.getRange(), wrapper.getPitch()); audio.startSound(); return audio; } diff --git a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java index 21dc8448a..e137eda14 100644 --- a/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java +++ b/src/main/java/com/hbm/items/weapon/gununified/ItemEnergyGunBase.java @@ -5,7 +5,7 @@ import java.util.List; import org.lwjgl.input.Mouse; import com.hbm.config.GeneralConfig; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; @@ -140,7 +140,7 @@ public class ItemEnergyGunBase extends ItemGunBase implements IBatteryItem { protected void spawnProjectile(World world, EntityPlayer player, ItemStack stack, int config) { - EntityBulletBase bullet = new EntityBulletBase(world, config, player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(world, config, player); world.spawnEntityInWorld(bullet); if(this.mainConfig.animations.containsKey(AnimType.CYCLE) && player instanceof EntityPlayerMP) diff --git a/src/main/java/com/hbm/lib/HbmChestContents.java b/src/main/java/com/hbm/lib/HbmChestContents.java index 185495790..cdd0a61cd 100644 --- a/src/main/java/com/hbm/lib/HbmChestContents.java +++ b/src/main/java/com/hbm/lib/HbmChestContents.java @@ -1,16 +1,20 @@ package com.hbm.lib; +import java.util.Random; + import com.hbm.blocks.ModBlocks; import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ItemAmmoEnums.Ammo357Magnum; import com.hbm.items.ItemAmmoEnums.AmmoFatman; import com.hbm.items.ModItems; -import com.hbm.items.machine.ItemBreedingRod.*; +import com.hbm.items.machine.ItemBreedingRod.BreedingRodType; import com.hbm.items.machine.ItemZirnoxRod.EnumZirnoxType; -import com.hbm.items.special.ItemBookLore.BookLoreType; +import com.hbm.items.special.ItemBookLore; +import com.hbm.items.tool.ItemBlowtorch; import net.minecraft.init.Items; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.WeightedRandomChestContent; public class HbmChestContents { @@ -136,12 +140,8 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.nugget_pu240, 0, 3, 8, 5), new WeightedRandomChestContent(ModItems.nugget_neptunium, 0, 1, 4, 3), new WeightedRandomChestContent(ModItems.rod, BreedingRodType.U238.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod, BreedingRodType.NP237.ordinal(), 1, 1, 4), - new WeightedRandomChestContent(ModItems.rod, BreedingRodType.RGP.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.U238.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.RGP.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.U238.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.RGP.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.bottle_quantum, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.gas_mask_m65, 60, 1, 1, 5), new WeightedRandomChestContent(ModItems.hazmat_kit, 0, 1, 1, 1), @@ -150,17 +150,14 @@ public class HbmChestContents { public static WeightedRandomChestContent[] nuclearFuel = new WeightedRandomChestContent[] { new WeightedRandomChestContent(ModItems.billet_uranium, 0, 1, 4, 4), - new WeightedRandomChestContent(ModItems.billet_pu_mix, 0, 1, 2, 4), new WeightedRandomChestContent(ModItems.billet_th232, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.billet_uranium_fuel, 0, 1, 3, 5), new WeightedRandomChestContent(ModItems.billet_mox_fuel, 0, 1, 3, 5), - new WeightedRandomChestContent(ModItems.billet_plutonium_fuel, 0, 1, 3, 4), new WeightedRandomChestContent(ModItems.billet_thorium_fuel, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.billet_ra226be, 0, 1, 2, 2), new WeightedRandomChestContent(ModItems.billet_beryllium, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.nugget_u233, 0, 1, 1, 1), - new WeightedRandomChestContent(ModItems.nugget_u235, 0, 1, 1, 1), - new WeightedRandomChestContent(ModItems.nugget_pu239, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.nugget_uranium_fuel, 0, 1, 1, 1), new WeightedRandomChestContent(ModItems.rod_zirnox_empty, 0, 1, 3, 3), new WeightedRandomChestContent(ModItems.ingot_graphite, 0, 1, 4, 3), new WeightedRandomChestContent(ModItems.pile_rod_uranium, 0, 2, 5, 3), @@ -172,15 +169,11 @@ public class HbmChestContents { public static WeightedRandomChestContent[] nuclear = new WeightedRandomChestContent[] { new WeightedRandomChestContent(ModItems.nugget_u235, 0, 3, 12, 5), new WeightedRandomChestContent(ModItems.nugget_pu238, 0, 3, 12, 5), - new WeightedRandomChestContent(ModItems.nugget_pu239, 0, 3, 12, 5), + new WeightedRandomChestContent(ModItems.nugget_ra226, 0, 3, 6, 5), new WeightedRandomChestContent(ModItems.rod, BreedingRodType.U235.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod, BreedingRodType.PU239.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.U235.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_dual, BreedingRodType.PU239.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.U235.ordinal(), 1, 1, 3), - new WeightedRandomChestContent(ModItems.rod_quad, BreedingRodType.PU239.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.URANIUM_FUEL.ordinal(), 1, 1, 4), - new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.PLUTONIUM_FUEL.ordinal(), 1, 1, 4), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.MOX_FUEL.ordinal(), 1, 1, 4), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.LITHIUM.ordinal(), 1, 1, 3), new WeightedRandomChestContent(ModItems.rod_zirnox, EnumZirnoxType.THORIUM_FUEL.ordinal(), 1, 1, 3), @@ -366,15 +359,87 @@ public class HbmChestContents { new WeightedRandomChestContent(ModItems.ink, 0, 1, 1, 1), //make that mf rare; 1:555 weight }; - /** ITEMBOOKLORE ARRAYS */ - //might make a wrapper class for this, if game-state knowledge using the nbt system becomes that relevant - public final static BookLoreType[] books_office_sch = new BookLoreType[] { - BookLoreType.RESIGNATION_NOTE, - BookLoreType.MEMO_STOCKS, - BookLoreType.MEMO_SCHRAB_GSA, - BookLoreType.MEMO_SCHRAB_RD, - BookLoreType.MEMO_SCHRAB_NUKE, + public static WeightedRandomChestContent[] solidFuel = new WeightedRandomChestContent[] { + new WeightedRandomChestContent(ModItems.solid_fuel, 0, 1, 5, 1), + new WeightedRandomChestContent(ModItems.solid_fuel_presto, 0, 1, 2, 2), + new WeightedRandomChestContent(ModItems.ball_dynamite, 0, 1, 4, 2), + new WeightedRandomChestContent(Items.redstone, 0, 1, 3, 1), + new WeightedRandomChestContent(ModItems.niter, 0, 1, 3, 1) }; + public static WeightedRandomChestContent[] labVault = new WeightedRandomChestContent[] { + new WeightedRandomChestContent(ItemBlowtorch.getEmptyTool(ModItems.blowtorch), 1, 1, 4), + new WeightedRandomChestContent(ModItems.chemistry_set, 0, 1, 1, 15), + new WeightedRandomChestContent(ModItems.screwdriver, 0, 1, 1, 10), + new WeightedRandomChestContent(ModItems.nugget_mercury, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.morning_glory, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.filter_coal, 0, 1, 1, 5), + new WeightedRandomChestContent(ModItems.dust, 0, 1, 3, 25), + new WeightedRandomChestContent(Items.paper, 0, 1, 2, 15), + new WeightedRandomChestContent(ModItems.cell_empty, 0, 1, 1, 5), + new WeightedRandomChestContent(Items.glass_bottle, 0, 1, 1, 5), + new WeightedRandomChestContent(ModItems.powder_iodine, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_bromine, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_cobalt, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_neodymium, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.powder_boron, 0, 1, 1, 1), + }; + public static WeightedRandomChestContent[] lockersVault = new WeightedRandomChestContent[] { + new WeightedRandomChestContent(ModItems.robes_helmet, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.robes_plate, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.robes_legs, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.robes_boots, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.jackt, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.jackt2, 0, 1, 1, 1), + new WeightedRandomChestContent(ModItems.gas_mask_m65, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.gas_mask_mono, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.goggles, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.gas_mask_filter, 0, 1, 1, 4), + new WeightedRandomChestContent(ModItems.flame_opinion, 0, 1, 3, 5), + new WeightedRandomChestContent(ModItems.flame_conspiracy, 0, 1, 3, 5), + new WeightedRandomChestContent(ModItems.flame_politics, 0, 1, 3, 5), + new WeightedRandomChestContent(ModItems.cigarette, 0, 1, 8, 5), + new WeightedRandomChestContent(ModItems.canteen_13, 0, 1, 1, 2), + new WeightedRandomChestContent(ModItems.armor_polish, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.gun_kit_1, 0, 1, 1, 3), + new WeightedRandomChestContent(ModItems.rag, 0, 1, 3, 5), + new WeightedRandomChestContent(Items.paper, 0, 1, 6, 7), + new WeightedRandomChestContent(Items.clock, 0, 1, 1, 3), + new WeightedRandomChestContent(Items.book, 0, 1, 5, 10), + new WeightedRandomChestContent(Items.experience_bottle, 0, 1, 3, 1), + }; + + /** ITEMBOOKLORE SHIT */ + //one downside of all this huge flexibility, make a wrapper if it's too annoying + public static ItemStack generateOfficeBook(Random rand) { //TODO rework this lore in general + String key; + int pages; + switch(rand.nextInt(10)) { + case 0: + key = "resignation_note"; pages = 3; break; + case 1: + key = "memo_stocks"; pages = 1; break; + case 2: + key = "memo_schrab_gsa"; pages = 2; break; + case 3: + key = "memo_schrab_rd"; pages = 4; break; + case 4: + key = "memo_schrab_nuke"; pages = 3; break; + case 5: + key = "bf_bomb_1"; pages = 4; break; + case 6: + key = "bf_bomb_2"; pages = 6; break; + case 7: + key = "bf_bomb_3"; pages = 6; break; + case 8: + key = "bf_bomb_4"; pages = 5; break; + case 9: + key = "bf_bomb_5"; pages = 9; break; + default: + return null; + } + + return ItemBookLore.createBook(key, pages, 0x6BC8FF, 0x0A0A0A); + } } diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index 2e037769a..dba947b9b 100644 --- a/src/main/java/com/hbm/lib/HbmCollection.java +++ b/src/main/java/com/hbm/lib/HbmCollection.java @@ -24,6 +24,7 @@ public class HbmCollection { // SHOTGUNS /** 12 GAUGE **/ public static final List g12 = ImmutableList.of(BulletConfigSyncingUtil.G12_NORMAL, BulletConfigSyncingUtil.G12_INCENDIARY, BulletConfigSyncingUtil.G12_SHRAPNEL, BulletConfigSyncingUtil.G12_DU, BulletConfigSyncingUtil.G12_AM, BulletConfigSyncingUtil.G12_SLEEK, BulletConfigSyncingUtil.G12_PERCUSSION); + public static final List g12hs = ImmutableList.of(BulletConfigSyncingUtil.G12HS_NORMAL, BulletConfigSyncingUtil.G12HS_INCENDIARY, BulletConfigSyncingUtil.G12HS_SHRAPNEL, BulletConfigSyncingUtil.G12HS_DU, BulletConfigSyncingUtil.G12HS_AM, BulletConfigSyncingUtil.G12HS_SLEEK, BulletConfigSyncingUtil.G12HS_PERCUSSION); /** 20 GAUGE **/ public static final List g20 = ImmutableList.of(BulletConfigSyncingUtil.G20_NORMAL, BulletConfigSyncingUtil.G20_SLUG, BulletConfigSyncingUtil.G20_FLECHETTE, BulletConfigSyncingUtil.G20_FIRE, BulletConfigSyncingUtil.G20_SHRAPNEL, BulletConfigSyncingUtil.G20_EXPLOSIVE, BulletConfigSyncingUtil.G20_CAUSTIC, BulletConfigSyncingUtil.G20_SHOCK, BulletConfigSyncingUtil.G20_WITHER, BulletConfigSyncingUtil.G20_SLEEK); /** 4 GAUGE **/ @@ -94,6 +95,8 @@ public class HbmCollection { COMBINE, /**Cube 2: Sauerbraten**/ CUBE, + /**Deep Rock Galactic**/ + DRG, /**Enzinger Union**/ ENZINGER, /**Equestria Missile Systems**/ @@ -140,6 +143,8 @@ public class HbmCollection { LUNA, /**Raytheon Missile Systems**/ RAYTHEON, + /**Remingotn Arms**/ + REMINGTON, /**Rockwell International Corporation**/ ROCKWELL, /**Rockwell International Corporation?**/ @@ -181,6 +186,7 @@ public class HbmCollection { public static final String gunName = "desc.item.gun.name"; public static final String gunMaker = "desc.item.gun.manufacturer"; public static final String gunDamage = "desc.item.gun.damage"; + public static final String gunPellets = "desc.item.gun.pellets"; // MISC public static final String capacity = "desc.block.barrel.capacity"; public static final String durability = "desc.item.durability"; diff --git a/src/main/java/com/hbm/lib/HbmWorld.java b/src/main/java/com/hbm/lib/HbmWorld.java index 44bea3667..4a24a192f 100644 --- a/src/main/java/com/hbm/lib/HbmWorld.java +++ b/src/main/java/com/hbm/lib/HbmWorld.java @@ -1,14 +1,17 @@ package com.hbm.lib; -import com.hbm.world.worldgen.MapGenNTMFeatures; -import com.hbm.world.worldgen.NTMWorldGenerator; -import com.hbm.world.worldgen.components.CivilianFeatures; -import com.hbm.world.worldgen.components.OfficeFeatures; -import com.hbm.world.worldgen.components.RuinFeatures; +import com.hbm.world.gen.MapGenNTMFeatures; +import com.hbm.world.gen.NTMWorldGenerator; +import com.hbm.world.gen.component.BunkerComponents; +import com.hbm.world.gen.component.CivilianFeatures; +import com.hbm.world.gen.component.OfficeFeatures; +import com.hbm.world.gen.component.RuinFeatures; +import com.hbm.world.gen.component.BunkerComponents.BunkerStart; import cpw.mods.fml.common.IWorldGenerator; import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraftforge.common.MinecraftForge; public class HbmWorld { @@ -21,10 +24,14 @@ public class HbmWorld { //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(); registerWorldGen(new HbmWorldGen(), 1); - registerWorldGen(new NTMWorldGenerator(), 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator + + NTMWorldGenerator worldGenerator = new NTMWorldGenerator(); + registerWorldGen(worldGenerator, 1); //Ideally, move everything over from HbmWorldGen to NTMWorldGenerator + MinecraftForge.EVENT_BUS.register(worldGenerator); //registerWorldGen(new WorldGenTest(), 1); } @@ -37,5 +44,6 @@ public class HbmWorld { CivilianFeatures.registerComponents(); OfficeFeatures.registerComponents(); RuinFeatures.registerComponents(); + BunkerComponents.registerComponents(); } } diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index 083a409b1..323e01b0c 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -7,20 +7,18 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; import com.hbm.config.GeneralConfig; +import com.hbm.config.MobConfig; import com.hbm.config.WorldConfig; -import com.hbm.inventory.FluidStack; -import com.hbm.inventory.fluid.Fluids; import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.machine.storage.TileEntitySafe; import com.hbm.tileentity.machine.storage.TileEntitySoyuzCapsule; +import com.hbm.util.WeightedRandomGeneric; import com.hbm.world.dungeon.AncientTomb; import com.hbm.world.dungeon.Antenna; import com.hbm.world.dungeon.ArcticVault; import com.hbm.world.dungeon.Barrel; -import com.hbm.world.dungeon.Bunker; import com.hbm.world.dungeon.CrashedVertibird; import com.hbm.world.dungeon.DesertAtom001; import com.hbm.world.dungeon.Factory; @@ -32,10 +30,12 @@ import com.hbm.world.dungeon.Silo; import com.hbm.world.dungeon.Spaceship; import com.hbm.world.dungeon.Vertibird; import com.hbm.world.feature.BedrockOre; +import com.hbm.world.feature.BedrockOre.BedrockOreDefinition; import com.hbm.world.feature.DepthDeposit; import com.hbm.world.feature.Dud; import com.hbm.world.feature.Geyser; import com.hbm.world.feature.GeyserLarge; +import com.hbm.world.feature.GlyphidHive; import com.hbm.world.feature.Meteorite; import com.hbm.world.feature.OilBubble; import com.hbm.world.feature.OilSandBubble; @@ -49,6 +49,7 @@ 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; import net.minecraft.world.biome.BiomeGenBase; @@ -115,21 +116,22 @@ public class HbmWorldGen implements IWorldGenerator { if(WorldConfig.alexandriteSpawn > 0 && rand.nextInt(WorldConfig.alexandriteSpawn) == 0) DungeonToolbox.generateOre(world, rand, i, j, 1, 3, 10, 5, ModBlocks.ore_alexandrite); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_iron, rand, 24); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_titanium, rand, 32); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_tungsten, rand, 32); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_cinnebar, rand, 16); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_zirconium, rand, 16); - DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_borax, rand, 16); - if(WorldConfig.overworldOre) { + + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_iron, rand, 24); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_titanium, rand, 32); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.6D, ModBlocks.cluster_depth_tungsten, rand, 32); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_cinnebar, rand, 16); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_zirconium, rand, 16); + DepthDeposit.generateConditionOverworld(world, i, 0, 3, j, 5, 0.8D, ModBlocks.ore_depth_borax, rand, 16); + DungeonToolbox.generateOre(world, rand, i, j, 25, 6, 30, 10, ModBlocks.ore_gneiss_iron, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, 10, 6, 30, 10, ModBlocks.ore_gneiss_gold, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.uraniumSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_uranium, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_copper, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.asbestosSpawn * 3, 6, 30, 10, ModBlocks.ore_gneiss_asbestos, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.lithiumSpawn, 6, 30, 10, ModBlocks.ore_gneiss_lithium, ModBlocks.stone_gneiss); - DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.rareSpawn, 6, 30, 10, ModBlocks.ore_gneiss_asbestos, ModBlocks.stone_gneiss); + DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.rareSpawn, 6, 30, 10, ModBlocks.ore_gneiss_rare, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.gassshaleSpawn * 3, 10, 30, 10, ModBlocks.ore_gneiss_gas, ModBlocks.stone_gneiss); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.uraniumSpawn, 5, 5, 20, ModBlocks.ore_uranium); @@ -154,18 +156,16 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); - //DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.hematiteSpawn, 10, 4, 80, ModBlocks.stone_resource, EnumStoneType.HEMATITE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.malachiteSpawn, 10, 6, 40, ModBlocks.stone_resource, EnumStoneType.MALACHITE.ordinal()); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.limestoneSpawn, 12, 25, 30, ModBlocks.stone_resource, EnumStoneType.LIMESTONE.ordinal()); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.IRON, 1, WorldConfig.bedrockIronSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.COPPER, 1, WorldConfig.bedrockCopperSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.BORAX, new FluidStack(Fluids.SULFURIC_ACID, 500), 3, WorldConfig.bedrockBoraxSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.ASBESTOS, 2, WorldConfig.bedrockAsbestosSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.NIOBIUM, new FluidStack(Fluids.ACID, 1_000), 2, WorldConfig.bedrockNiobiumSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.TITANIUM, new FluidStack(Fluids.SULFURIC_ACID, 500), 2, WorldConfig.bedrockTitaniumSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.TUNGSTEN, new FluidStack(Fluids.ACID, 1_000), 2, WorldConfig.bedrockTungstenSpawn); - DungeonToolbox.generateBedrockOreWithChance(world, rand, i, j, EnumBedrockOre.GOLD, 1, WorldConfig.bedrockGoldSpawn); + if(rand.nextInt(3) == 0) { + WeightedRandomGeneric item = (WeightedRandomGeneric) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOres); + BedrockOreDefinition def = item.get(); + int randPosX = i + rand.nextInt(2) + 8; + int randPosZ = j + rand.nextInt(2) + 8; + BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier); + } for(int k = 0; k < WorldConfig.randomSpawn; k++) { BlockMotherOfAllOres.shuffleOverride(rand); @@ -219,6 +219,13 @@ public class HbmWorldGen implements IWorldGenerator { } if(GeneralConfig.enableDungeons && world.provider.isSurfaceWorld()) { + + if(MobConfig.enableHives && rand.nextInt(MobConfig.hiveSpawn) == 0) { + int x = i + rand.nextInt(16) + 8; + int z = j + rand.nextInt(16) + 8; + int y = world.getHeightValue(x, z); + if(world.getBlock(x, y - 1, z).isNormalCube()) GlyphidHive.generate(world, x, y, z, rand); + } if(biome == BiomeGenBase.plains || biome == BiomeGenBase.desert) { if(WorldConfig.radioStructure > 0 && rand.nextInt(WorldConfig.radioStructure) == 0) { @@ -316,14 +323,6 @@ public class HbmWorldGen implements IWorldGenerator { } } - if(WorldConfig.bunkerStructure > 0 && rand.nextInt(WorldConfig.bunkerStructure) == 0) { - int x = i + rand.nextInt(16); - int z = j + rand.nextInt(16); - int y = world.getHeightValue(x, z); - - new Bunker().generate(world, rand, x, y, z); - } - if(WorldConfig.siloStructure > 0 && rand.nextInt(WorldConfig.siloStructure) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); @@ -630,7 +629,7 @@ public class HbmWorldGen implements IWorldGenerator { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z) - rand.nextInt(10); - (new Meteorite()).generate(world, rand, x, y, z, false, true); + (new Meteorite()).generate(world, rand, x, y, z, false, true, false); } if (GeneralConfig.enableNITAN) { @@ -723,10 +722,18 @@ public class HbmWorldGen implements IWorldGenerator { if(GeneralConfig.enablePlutoniumOre) DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.netherPlutoniumSpawn, 4, 0, 127, ModBlocks.ore_nether_plutonium, Blocks.netherrack); - } + + if(rand.nextInt(10) == 0) { + WeightedRandomGeneric item = (WeightedRandomGeneric) WeightedRandom.getRandomItem(rand, BedrockOre.weightedOresNether); + BedrockOreDefinition def = item.get(); + int randPosX = i + rand.nextInt(2) + 8; + int randPosZ = j + rand.nextInt(2) + 8; + BedrockOre.generate(world, randPosX, randPosZ, def.stack, def.acid, def.color, def.tier, ModBlocks.stone_depth_nether); + } - DepthDeposit.generateConditionNether(world, i, 0, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); - DepthDeposit.generateConditionNether(world, i, 125, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); + DepthDeposit.generateConditionNether(world, i, 0, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); + DepthDeposit.generateConditionNether(world, i, 125, 3, j, 7, 0.6D, ModBlocks.ore_depth_nether_neodymium, rand, 16); + } for(int k = 0; k < 30; k++){ int x = i + rand.nextInt(16); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index bd96c150b..28416dc2e 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -19,10 +19,6 @@ import com.hbm.items.ModItems; import com.hbm.tileentity.TileEntityProxyBase; import com.hbm.tileentity.TileEntityProxyInventory; import com.hbm.tileentity.conductor.TileEntityFluidDuctSimple; -import com.hbm.tileentity.conductor.TileEntityGasDuct; -import com.hbm.tileentity.conductor.TileEntityGasDuctSolid; -import com.hbm.tileentity.conductor.TileEntityOilDuct; -import com.hbm.tileentity.conductor.TileEntityOilDuctSolid; import com.hbm.tileentity.machine.TileEntityDummy; import api.hbm.energy.IBatteryItem; @@ -484,102 +480,6 @@ public class Library { ((TileEntityFluidDuctSimple)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); } } - if(tileentity instanceof TileEntityGasDuct && ((TileEntityGasDuct)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityGasDuct)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityGasDuct)tileentity).uoteab.size(); i++) - { - if(((TileEntityGasDuct)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityGasDuct)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityGasDuct)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityGasDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } - if(tileentity instanceof TileEntityOilDuct && ((TileEntityOilDuct)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityOilDuct)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityOilDuct)tileentity).uoteab.size(); i++) - { - if(((TileEntityOilDuct)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityOilDuct)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityOilDuct)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityOilDuct)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } - if(tileentity instanceof TileEntityGasDuctSolid && ((TileEntityGasDuctSolid)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityGasDuctSolid)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityGasDuctSolid)tileentity).uoteab.size(); i++) - { - if(((TileEntityGasDuctSolid)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityGasDuctSolid)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityGasDuctSolid)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityGasDuctSolid)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } - if(tileentity instanceof TileEntityOilDuctSolid && ((TileEntityOilDuctSolid)tileentity).type.name().equals(type.name())) - { - if(Library.checkUnionListForFluids(((TileEntityOilDuctSolid)tileentity).uoteab, that)) - { - for(int i = 0; i < ((TileEntityOilDuctSolid)tileentity).uoteab.size(); i++) - { - if(((TileEntityOilDuctSolid)tileentity).uoteab.get(i).source == that) - { - if(((TileEntityOilDuctSolid)tileentity).uoteab.get(i).ticked != newTact) - { - ((TileEntityOilDuctSolid)tileentity).uoteab.get(i).ticked = newTact; - transmitFluid(x, y + 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y - 1, z, that.getTact(), that, worldObj, type); - transmitFluid(x - 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x + 1, y, z, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z - 1, that.getTact(), that, worldObj, type); - transmitFluid(x, y, z + 1, that.getTact(), that, worldObj, type); - } - } - } - } else { - ((TileEntityOilDuctSolid)tileentity).uoteab.add(new UnionOfTileEntitiesAndBooleansForFluids(that, newTact)); - } - } } if(tileentity instanceof IFluidAcceptor && newTact && ((IFluidAcceptor)tileentity).getMaxFluidFillForReceive(type) > 0 && diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 07fe66f57..81bc67970 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 (4551)"; + public static final String VERSION = "1.0.27 BETA (4671)"; //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 6c4ea730a..c31870b9c 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -19,6 +19,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -48,6 +49,8 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; +import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; import com.hbm.entity.cart.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; @@ -59,11 +62,16 @@ import com.hbm.entity.mob.botprime.*; import com.hbm.entity.mob.siege.*; import com.hbm.entity.particle.*; import com.hbm.entity.projectile.*; +import com.hbm.entity.train.*; +import com.hbm.entity.train.EntityRailCarBase.BoundingBoxDummyEntity; +import com.hbm.entity.train.EntityRailCarRidable.SeatDummyEntity; import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.items.IAnimatedItem; import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; import com.hbm.particle.*; import com.hbm.particle.psys.engine.EventHandlerParticleEngine; import com.hbm.render.anim.*; @@ -204,6 +212,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCyclotron.class, new RenderCyclotron()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineOilWell.class, new RenderDerrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineGasFlare.class, new RenderGasFlare()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityChimneyBrick.class, new RenderChimneyBrick()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningDrill.class, new RenderMiningDrill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineMiningLaser.class, new RenderLaserMiner()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAssembler.class, new RenderAssembler()); @@ -247,6 +256,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticCracker.class, new RenderCatalyticCracker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineLiquefactor.class, new RenderLiquefactor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineSolidifier.class, new RenderSolidifier()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCompressor.class, new RenderCompressor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineRadiolysis.class, new RenderRadiolysis()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityElectrolyser.class, new RenderElectrolyser()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFurnaceIron.class, new RenderFurnaceIron()); @@ -261,6 +271,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySawmill.class, new RenderSawmill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCrucible.class, new RenderCrucible()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoiler.class, new RenderBoiler()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityHeatBoilerIndustrial.class, new RenderIndustrialBoiler()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySteamEngine.class, new RenderSteamEngine()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineDiesel.class, new RenderDieselGen()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCombustionEngine.class, new RenderCombustionEngine()); @@ -270,7 +281,9 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineVacuumDistill.class, new RenderVacuumDistill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCoker.class, new RenderCoker()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPistonInserter.class, new RenderPistonInserter()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); @@ -295,8 +308,6 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzLauncher.class, new RenderSoyuzLauncher()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzCapsule.class, new RenderCapsule()); //network - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityOilDuct.class, new RenderOilDuct()); - ClientRegistry.bindTileEntitySpecialRenderer(TileEntityGasDuct.class, new RenderGasDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFluidDuct.class, new RenderFluidDuct()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRFDuct.class, new RenderRFCable()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPylon.class, new RenderPylon()); @@ -313,6 +324,8 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntitySoyuzStruct.class, new RenderSoyuzMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITERStruct.class, new RenderITERMultiblock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityPlasmaStruct.class, new RenderPlasmaMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzStruct.class, new RenderWatzMultiblock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityCustomMachine.class, new RenderCustomMachine()); //RBMK ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlManual.class, new RenderRBMKControlRod()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRBMKControlAuto.class, new RenderRBMKControlRod()); @@ -332,7 +345,9 @@ public class ClientProxy extends ServerProxy { //ITER ClientRegistry.bindTileEntitySpecialRenderer(TileEntityITER.class, new RenderITER()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachinePlasmaHeater.class, new RenderPlasmaHeater()); + //Watz ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatz.class, new RenderWatz()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityWatzPump.class, new RenderWatzPump()); //doors ClientRegistry.bindTileEntitySpecialRenderer(TileEntityVaultDoor.class, new RenderVaultDoor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBlastDoor.class, new RenderBlastDoor()); @@ -424,6 +439,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.mese_gavel, new ItemRenderGavel()); MinecraftForgeClient.registerItemRenderer(ModItems.crucible, new ItemRenderCrucible()); MinecraftForgeClient.registerItemRenderer(ModItems.chainsaw, new ItemRenderChainsaw()); + MinecraftForgeClient.registerItemRenderer(ModItems.boltgun, new ItemRenderBoltgun()); //guns MinecraftForgeClient.registerItemRenderer(ModItems.gun_rpg, new ItemRenderRpg()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_karl, new ItemRenderRpg()); @@ -441,7 +457,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_proto, new ItemRenderFatMan()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_mirv, new ItemRenderMIRVLauncher()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bf, new ItemRenderBFLauncher()); - MinecraftForgeClient.registerItemRenderer(ModItems.gun_xvl1456, new ItemRenderXVL1456()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_xvl1456, new ItemRenderWeaponTau()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_zomg, new ItemRenderZOMG()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_osipr, new ItemRenderOSIPR()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_mp, new ItemRenderMP()); @@ -494,6 +510,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_ar15, new ItemRenderWeaponAR15()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_detonator, new ItemRenderDetonatorLaser()); MinecraftForgeClient.registerItemRenderer(ModItems.detonator_laser, new ItemRenderDetonatorLaser()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_remington, new ItemRenderWeaponRemington()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_spas12, new ItemRenderWeaponSpas12()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_glass_cannon, new ItemRenderWeaponGlass()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_chemthrower, new ItemRenderWeaponChemthrower()); @@ -504,6 +521,10 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_silver, new ItemRenderWeaponNovac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_revolver_red, new ItemRenderWeaponNovac()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lunatic_marksman, new ItemRenderLunaticSniper()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_benelli, new ItemRenderBenelli()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_uac_pistol, new ItemRenderUACPistol()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon()); //multitool MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); @@ -527,7 +548,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityRocket.class, new RenderSnowball(ModItems.man_core)); RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); RenderingRegistry.registerEntityRenderingHandler(EntityBullet.class, new RenderRocket()); - RenderingRegistry.registerEntityRenderingHandler(EntityBulletBase.class, new RenderBullet()); + RenderingRegistry.registerEntityRenderingHandler(EntityBulletBaseNT.class, new RenderBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityRainbow.class, new RenderRainbow()); RenderingRegistry.registerEntityRenderingHandler(EntityNightmareBlast.class, new RenderOminousBullet()); RenderingRegistry.registerEntityRenderingHandler(EntityFire.class, new RenderFireball(ModItems.energy_ball)); @@ -571,6 +592,8 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityCog.class, new RenderCog()); RenderingRegistry.registerEntityRenderingHandler(EntitySawblade.class, new RenderSawblade()); RenderingRegistry.registerEntityRenderingHandler(EntityChemical.class, new RenderChemical()); + RenderingRegistry.registerEntityRenderingHandler(EntityMist.class, new RenderMist()); + RenderingRegistry.registerEntityRenderingHandler(EntityAcidBomb.class, new RenderSnowball(Items.slime_ball)); //grenades RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeGeneric.class, new RenderSnowball(ModItems.grenade_generic)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeStrong.class, new RenderSnowball(ModItems.grenade_strong)); @@ -671,32 +694,50 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMinecartCrate.class, new RenderMinecart()); RenderingRegistry.registerEntityRenderingHandler(EntityMinecartNTM.class, new RenderNeoCart()); RenderingRegistry.registerEntityRenderingHandler(EntityMagnusCartus.class, new RenderMagnusCartus()); + //trains + RenderingRegistry.registerEntityRenderingHandler(SeatDummyEntity.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(BoundingBoxDummyEntity.class, new RenderEmpty()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTram.class, new RenderTrainCargoTram()); + RenderingRegistry.registerEntityRenderingHandler(TrainCargoTramTrailer.class, new RenderTrainCargoTramTrailer()); + RenderingRegistry.registerEntityRenderingHandler(TrainTunnelBore.class, new RenderTunnelBore()); //items RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); RenderingRegistry.registerEntityRenderingHandler(EntityTNTPrimedBase.class, new RenderTNTPrimedBase()); //mobs - RenderingRegistry.registerEntityRenderingHandler(EntityNuclearCreeper.class, new RenderNuclearCreeper()); - RenderingRegistry.registerEntityRenderingHandler(EntityTaintedCreeper.class, new RenderTaintedCreeper()); - RenderingRegistry.registerEntityRenderingHandler(EntityHunterChopper.class, new RenderHunterChopper()); - RenderingRegistry.registerEntityRenderingHandler(EntityCyberCrab.class, new RenderCyberCrab()); - RenderingRegistry.registerEntityRenderingHandler(EntityTeslaCrab.class, new RenderTeslaCrab()); - RenderingRegistry.registerEntityRenderingHandler(EntityTaintCrab.class, new RenderTaintCrab()); - RenderingRegistry.registerEntityRenderingHandler(EntityMaskMan.class, new RenderMaskMan()); - RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeHead.class, new RenderWormHead()); - RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeBody.class, new RenderWormBody()); - RenderingRegistry.registerEntityRenderingHandler(EntityDuck.class, new RenderDuck(new ModelChicken(), 0.3F)); - RenderingRegistry.registerEntityRenderingHandler(EntityQuackos.class, new RenderQuacc(new ModelChicken(), 7.5F)); - RenderingRegistry.registerEntityRenderingHandler(EntityFBI.class, new RenderFBI()); - RenderingRegistry.registerEntityRenderingHandler(EntityRADBeast.class, new RenderRADBeast()); - RenderingRegistry.registerEntityRenderingHandler(EntityBlockSpider.class, new RenderBlockSpider()); - RenderingRegistry.registerEntityRenderingHandler(EntityUFO.class, new RenderUFO()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeZombie.class, new RenderSiegeZombie()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeUFO.class, new RenderSiegeUFO()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeCraft.class, new RenderSiegeCraft()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeSkeleton.class, new RenderSiegeSkeleton()); - RenderingRegistry.registerEntityRenderingHandler(EntitySiegeTunneler.class, new RenderSiegeTunneler()); - RenderingRegistry.registerEntityRenderingHandler(EntityGhost.class, new RenderGhost()); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperNuclear.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor.png").setSwellMod(5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperTainted.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png", RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperPhosgene.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_phosgene.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperVolatile.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_volatile.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityCreeperGold.class, new RenderCreeperUniversal(RefStrings.MODID + ":" + "textures/entity/creeper_gold.png", "textures/entity/creeper/creeper_armor.png")); + RenderingRegistry.registerEntityRenderingHandler(EntityHunterChopper.class, new RenderHunterChopper()); + RenderingRegistry.registerEntityRenderingHandler(EntityCyberCrab.class, new RenderCyberCrab()); + RenderingRegistry.registerEntityRenderingHandler(EntityTeslaCrab.class, new RenderTeslaCrab()); + RenderingRegistry.registerEntityRenderingHandler(EntityTaintCrab.class, new RenderTaintCrab()); + RenderingRegistry.registerEntityRenderingHandler(EntityMaskMan.class, new RenderMaskMan()); + RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeHead.class, new RenderWormHead()); + RenderingRegistry.registerEntityRenderingHandler(EntityBOTPrimeBody.class, new RenderWormBody()); + RenderingRegistry.registerEntityRenderingHandler(EntityDuck.class, new RenderDuck(new ModelChicken(), 0.3F)); + RenderingRegistry.registerEntityRenderingHandler(EntityQuackos.class, new RenderQuacc(new ModelChicken(), 7.5F)); + RenderingRegistry.registerEntityRenderingHandler(EntityFBI.class, new RenderFBI()); + RenderingRegistry.registerEntityRenderingHandler(EntityRADBeast.class, new RenderRADBeast()); + RenderingRegistry.registerEntityRenderingHandler(EntityBlockSpider.class, new RenderBlockSpider()); + RenderingRegistry.registerEntityRenderingHandler(EntityUFO.class, new RenderUFO()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeZombie.class, new RenderSiegeZombie()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeUFO.class, new RenderSiegeUFO()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeCraft.class, new RenderSiegeCraft()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeSkeleton.class, new RenderSiegeSkeleton()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeTunneler.class, new RenderSiegeTunneler()); + RenderingRegistry.registerEntityRenderingHandler(EntityGhost.class, new RenderGhost()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphid.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrawler.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBehemoth.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBrenda.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBombardier.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidBlaster.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidScout.class, new RenderGlyphid()); + RenderingRegistry.registerEntityRenderingHandler(EntityGlyphidNuclear.class, new RenderGlyphidNuclear()); + RenderingRegistry.registerEntityRenderingHandler(EntityFBIDrone.class, new RenderDrone()); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); RenderingRegistry.registerEntityRenderingHandler(EntityBSmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.b_smoke1, ModItems.b_smoke2, ModItems.b_smoke3, ModItems.b_smoke4, ModItems.b_smoke5, ModItems.b_smoke6, ModItems.b_smoke7, ModItems.b_smoke8 })); @@ -753,12 +794,20 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderRTTY()); RenderingRegistry.registerBlockHandler(new RenderDiFurnaceExtension()); RenderingRegistry.registerBlockHandler(new RenderSplitter()); + RenderingRegistry.registerBlockHandler(new RenderCapacitor()); RenderingRegistry.registerBlockHandler(new RenderFoundryBasin()); RenderingRegistry.registerBlockHandler(new RenderFoundryMold()); RenderingRegistry.registerBlockHandler(new RenderFoundryChannel()); RenderingRegistry.registerBlockHandler(new RenderFoundryTank()); RenderingRegistry.registerBlockHandler(new RenderFoundryOutlet()); + + RenderingRegistry.registerBlockHandler(new RenderNarrowStraightRail()); + RenderingRegistry.registerBlockHandler(new RenderNarrowCurveRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardStraightRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardCurveRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardRampRail()); + RenderingRegistry.registerBlockHandler(new RenderStandardBufferRail()); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_dynamite.getRenderType(), ResourceManager.charge_dynamite)); RenderingRegistry.registerBlockHandler(new RenderBlockRotated(ModBlocks.charge_c4.getRenderType(), ResourceManager.charge_c4)); @@ -1132,6 +1181,10 @@ public class ClientProxy extends ServerProxy { fx = new net.minecraft.client.particle.EntityReddustFX(world, x, y, z, 0.01F, 0.5F, 0.1F); } + if("fireworks".equals(data.getString("mode"))) { + fx = new EntityFireworkSparkFX(world, x, y, z, 0, 0, 0, Minecraft.getMinecraft().effectRenderer); + } + if("largeexplode".equals(data.getString("mode"))) { @@ -1626,8 +1679,10 @@ public class ClientProxy extends ServerProxy { if("anim".equals(type)) { + String mode = data.getString("mode"); + /* crucible deploy */ - if("crucible".equals(data.getString("mode")) && player.getHeldItem() != null) { + if("crucible".equals(mode) && player.getHeldItem() != null) { BusAnimation animation = new BusAnimation() .addBus("GUARD_ROT", new BusAnimationSequence() @@ -1639,7 +1694,7 @@ public class ClientProxy extends ServerProxy { } /* crucible swing */ - if("cSwing".equals(data.getString("mode"))) { + if("cSwing".equals(mode)) { if(HbmAnimations.getRelevantTransformation("SWING_ROT")[0] == 0) { @@ -1662,7 +1717,7 @@ public class ClientProxy extends ServerProxy { } /* chainsaw swing */ - if("sSwing".equals(data.getString("mode")) || "lSwing".equals(data.getString("mode"))) { //temp for lance + if("sSwing".equals(mode) || "lSwing".equals(mode)) { //temp for lance int forward = 150; int sideways = 100; @@ -1705,6 +1760,19 @@ public class ClientProxy extends ServerProxy { HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), animation); } } + + if("generic".equals(mode)) { + ItemStack stack = player.getHeldItem(); + + if(stack != null && stack.getItem() instanceof IAnimatedItem) { + IAnimatedItem item = (IAnimatedItem) stack.getItem(); + BusAnimation anim = item.getAnimation(data, stack); + + if(anim != null) { + HbmAnimations.hotbar[player.inventory.currentItem] = new Animation(player.getHeldItem().getItem().getUnlocalizedName(), System.currentTimeMillis(), anim); + } + } + } } if("tau".equals(type)) { @@ -1816,6 +1884,14 @@ public class ClientProxy extends ServerProxy { ParticleFoundry sploosh = new ParticleFoundry(man, world, x, y, z, color, dir, length, base, offset); Minecraft.getMinecraft().effectRenderer.addEffect(sploosh); } + + if("frozen".equals(type)) { + player.motionX = 0; + player.motionZ = 0; + player.motionY = Math.min(player.motionY, 0); + player.moveForward = 0; + player.moveStrafing = 0; + } } private HashMap vanished = new HashMap(); @@ -1837,13 +1913,23 @@ public class ClientProxy extends ServerProxy { } @Override - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { AudioWrapperClient audio = new AudioWrapperClient(new ResourceLocation(sound)); audio.updatePosition(x, y, z); + audio.updateVolume(volume); + audio.updateRange(range); return audio; } + @Override + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { + AudioWrapper audio = getLoopedSound(sound, x, y, z, volume, range, pitch); + audio.setKeepAlive(keepAlive); + return audio; + } + + /** Only used for doors */ @Override public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { AudioWrapperClientStartStop audio = new AudioWrapperClientStartStop(world, sound == null ? null : new ResourceLocation(sound), start, stop, volume * 5); @@ -1872,6 +1958,7 @@ public class ClientProxy extends ServerProxy { case TOGGLE_HEAD: return HbmKeybinds.hudKey.getIsKeyPressed(); case RELOAD: return HbmKeybinds.reloadKey.getIsKeyPressed(); case DASH: return HbmKeybinds.dashKey.getIsKeyPressed(); + case TRAIN: return HbmKeybinds.trainKey.getIsKeyPressed(); case CRANE_UP: return HbmKeybinds.craneUpKey.getIsKeyPressed(); case CRANE_DOWN: return HbmKeybinds.craneDownKey.getIsKeyPressed(); case CRANE_LEFT: return HbmKeybinds.craneLeftKey.getIsKeyPressed(); @@ -1919,5 +2006,10 @@ public class ClientProxy extends ServerProxy { public boolean getImpact(World world) { return ImpactWorldHandler.getImpactForClient(world); } + + @Override + public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { + Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(new ResourceLocation(sound), volume, pitch, (float) x, (float) y, (float) z)); + } } diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index b01dd9c46..1a4b56848 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -5,6 +5,7 @@ import java.util.List; import com.hbm.blocks.BlockEnums.DecoCabinetEnum; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockConcreteColoredExt.EnumConcreteType; import com.hbm.blocks.generic.BlockGenericStairs; import com.hbm.blocks.generic.BlockMultiSlab; import com.hbm.blocks.generic.BlockNTMFlower.EnumFlowerType; @@ -188,6 +189,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", "ITI", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', IRON.plate(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModItems.motor, 2), new Object[] { " R ", "ICI", " T ", 'R', ModItems.wire_red_copper, 'T', ModItems.coil_copper_torus, 'I', STEEL.plate(), 'C', ModItems.coil_copper }); addRecipeAuto(new ItemStack(ModItems.motor_desh, 1), new Object[] { "PCP", "DMD", "PCP", 'P', ANY_PLASTIC.ingot(), 'C', ModItems.coil_gold_torus, 'D', DESH.ingot(), 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModItems.motor_bismuth, 1), new Object[] { "BCB", "SDS", "BCB", 'B', BI.nugget(), 'C', ModBlocks.hadron_coil_alloy, 'S', STEEL.plateCast(), 'D', DURA.ingot() }); //addRecipeAuto(new ItemStack(ModItems.centrifuge_element, 1), new Object[] { " T ", "WTW", "RMR", 'R', ModItems.wire_red_copper, 'T', ModItems.tank_steel, 'M', ModItems.motor, 'W', ModItems.coil_tungsten }); //addRecipeAuto(new ItemStack(ModItems.centrifuge_tower, 1), new Object[] { "LL", "EE", "EE", 'E', ModItems.centrifuge_element, 'L', KEY_BLUE }); //addRecipeAuto(new ItemStack(ModItems.reactor_core, 1), new Object[] { "LNL", "N N", "LNL", 'N', getReflector(), 'L', PB.plate() }); @@ -251,6 +253,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.radio_torch_sender, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', NETHERQUARTZ.gem() }); addRecipeAuto(new ItemStack(ModBlocks.radio_torch_receiver, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', IRON.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.radio_torch_counter, 4), new Object[] { "G", "R", "I", 'G', "dustGlowstone", 'R', Blocks.redstone_torch, 'I', ModItems.circuit_aluminium }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "LLL", "I I", "LLL", 'L', Items.leather, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.conveyor, 16), new Object[] { "RSR", "I I", "RSR", 'I', IRON.ingot(), 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', IRON.plate() }); @@ -279,12 +282,18 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.machine_battery_potato, 1), new Object[] { "PCP", "WRW", "PCP", 'P', ItemBattery.getEmptyBattery(ModItems.battery_potato), 'C', CU.ingot(), 'R', REDSTONE.block(), 'W', KEY_PLANKS }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_bus, 1), new Object[] { "PIP", "PIP", "PIP", 'P', ModItems.plate_polymer, 'I', MINGRADE.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_copper, 1), new Object[] { "PPP", "PCP", "WWW", 'P', STEEL.plate(), 'C', CU.block(), 'W', KEY_PLANKS }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_gold, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_PLASTIC.ingot(), 'C', GOLD.block(), 'W', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_niobium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', RUBBER.ingot(), 'C', NB.block(), 'W', STEEL.ingot() }); + addRecipeAuto(new ItemStack(ModBlocks.capacitor_tantalium, 1), new Object[] { "PPP", "ICI", "WWW", 'P', STEEL.plate(), 'I', ANY_RESISTANTALLOY.ingot(), 'C', TA.block(), 'W', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_coal_off, 1), new Object[] { "STS", "SCS", "SFS", 'S', STEEL.ingot(), 'T', ModItems.tank_steel, 'C', MINGRADE.ingot(), 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', STEEL.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', Blocks.furnace }); addRecipeAuto(new ItemStack(ModBlocks.machine_boiler_electric_off, 1), new Object[] { "SPS", "TFT", "SPS", 'S', DESH.ingot(), 'P', ModItems.board_copper, 'T', ModItems.tank_steel, 'F', ModBlocks.machine_electric_furnace_off }); addRecipeAuto(new ItemStack(ModBlocks.machine_turbine, 1), new Object[] { "SMS", "PTP", "SMS", 'S', STEEL.ingot(), 'T', ModItems.turbine_titanium, 'M', ModItems.coil_copper, 'P', ANY_PLASTIC.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_converter_he_rf, 1), new Object[] { "SSS", "CRB", "SSS", 'S', STEEL.ingot(), 'C', ModItems.coil_copper, 'R', ModItems.coil_copper_torus, 'B', REDSTONE.block() }); addRecipeAuto(new ItemStack(ModBlocks.machine_converter_rf_he, 1), new Object[] { "SSS", "BRC", "SSS", 'S', BE.ingot(), 'C', ModItems.coil_copper, 'R', ModItems.coil_copper_torus, 'B', REDSTONE.block() }); + addRecipeAuto(new ItemStack(ModBlocks.crate_template, 1), new Object[] { "IPI", "P P", "IPI", 'I', IRON.ingot(), 'P', Items.paper }); addRecipeAuto(new ItemStack(ModBlocks.crate_iron, 1), new Object[] { "PPP", "I I", "III", 'P', IRON.plate(), 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.crate_steel, 1), new Object[] { "PPP", "I I", "III", 'P', STEEL.plate(), 'I', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.crate_desh, 1), new Object[] { " D ", "DSD", " D ", 'D', ModItems.plate_desh, 'S', ModBlocks.crate_steel }); @@ -293,6 +302,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 0), new Object[] { "ICI", "CLC", "ICI", 'I', TI.ingot(), 'C', ModBlocks.crate_steel, 'L', ModItems.circuit_copper }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 1), new Object[] { "PCP", "PMP", "PPP", 'P', DESH.ingot(), 'C', ModItems.circuit_red_copper, 'M', new ItemStack(ModBlocks.mass_storage, 1, 0) }); addRecipeAuto(new ItemStack(ModBlocks.mass_storage, 1, 2), new Object[] { "PCP", "PMP", "PPP", 'P', ANY_RESISTANTALLOY.ingot(), 'C', ModItems.circuit_gold, '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', ModItems.circuit_copper, 'M', ModItems.motor, 'W', Blocks.crafting_table }); addRecipeAuto(new ItemStack(ModBlocks.machine_waste_drum, 1), new Object[] { "LRL", "BRB", "LRL", 'L', PB.ingot(), 'B', Blocks.iron_bars, 'R', ModItems.rod_quad_empty }); addRecipeAuto(new ItemStack(ModBlocks.machine_press, 1), new Object[] { "IRI", "IPI", "IBI", 'I', IRON.ingot(), 'R', Blocks.furnace, 'B', IRON.block(), 'P', Blocks.piston }); @@ -308,7 +318,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate(), 'R', REDSTONE.dust() }); - + addRecipeAuto(new ItemStack(ModBlocks.piston_inserter), new Object[] { "ITI", "TPT", "ITI", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', IRON.plate(), 'T', ModItems.bolt_tungsten }); + addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ModItems.plate_polymer, 'W', Blocks.wool }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.factory_titanium_hull), 8), new Object[] { "PIP", "I I", "PIP", 'P', TI.plate(), 'I', TI.ingot() }); @@ -366,7 +377,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_1, 1), new Object[] { "TTT", "SSS", "BBI", 'T', TI.plate(), 'S', STEEL.ingot(), 'B', ModItems.bolt_tungsten, 'I', MINGRADE.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_launcher_2, 1), new Object[] { "TTT", "SSS", "BBI", 'T', ALLOY.plate(), 'S', ANY_PLASTIC.ingot(), 'B', ModItems.bolt_dura_steel, 'I', DESH.ingot() }); addRecipeAuto(new ItemStack(ModItems.mechanism_special, 1), new Object[] { "PCI", "ISS", "PCI", 'P', ModItems.plate_desh, 'C', ModItems.coil_advanced_alloy, 'I', STAR.ingot(), 'S', ModItems.circuit_targeting_tier3 }); - + + addRecipeAuto(new ItemStack(ModBlocks.watz_pump, 1), new Object[] { "MPM", "PCP", "PSP", 'M', ModItems.motor_desh, 'P', ANY_RESISTANTALLOY.plateCast(), 'C', KEY_CIRCUIT_BISMUTH, 'S', ModItems.pipes_steel }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_cooler), 1), new Object[] { "IPI", "IPI", "IPI", 'I', TI.ingot(), 'P', TI.plate() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_tank), 1), new Object[] { "CGC", "GGG", "CGC", 'C', CMB.plate(), 'G', KEY_ANYPANE }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.fwatz_scaffold), 1), new Object[] { "IPI", "P P", "IPI", 'I', W.ingot(), 'P', getReflector() }); @@ -404,9 +416,16 @@ public class CraftingManager { for(int i = 0; i < 16; i++) { String dyeName = "dye" + dyes[15 - i]; addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_smooth, 'D', dyeName }); - addRecipeAuto(new ItemStack(ModBlocks.concrete_colored, 8, i), new Object[] { "CCC", "CDC", "CCC", 'C', ModBlocks.concrete_colored, 'D', dyeName }); } addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored }); + addShapelessAuto(new ItemStack(ModBlocks.concrete_smooth, 1), new Object[] { ModBlocks.concrete_colored_ext }); + + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_GRAY }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.MACHINE_STRIPE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BROWN, '2', KEY_BLACK }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.INDIGO.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_BLUE, '2', KEY_PURPLE }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PURPLE.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PURPLE, '2', KEY_PURPLE }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.PINK.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_PINK, '2', KEY_RED }); + addRecipeAuto(new ItemStack(ModBlocks.concrete_colored_ext, 6, EnumConcreteType.HAZARD.ordinal()), new Object[] { "CCC", "1 2", "CCC", 'C', ModBlocks.concrete_smooth, '1', KEY_YELLOW, '2', KEY_BLACK }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_tile, 4), new Object[] { "CC", "CC", 'C', ModBlocks.stone_gneiss }); addRecipeAuto(new ItemStack(ModBlocks.gneiss_brick, 4), new Object[] { "CC", "CC", 'C', ModBlocks.gneiss_tile }); @@ -423,6 +442,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_brick), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', ModBlocks.brick_concrete }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_compound), 4), new Object[] { "FBF", "BTB", "FBF", 'F', ModItems.bolt_tungsten, 'B', ModBlocks.reinforced_brick, 'T', ANY_TAR.any() }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.glass }); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_glass_pane), 16), new Object[] { " ", "GGG", "GGG", 'G', ModBlocks.reinforced_glass}); + addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_laminate_pane), 16), new Object[] { " ", "LLL", "LLL", 'L', ModBlocks.reinforced_laminate}); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_light), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.glowstone }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_lamp_off), 1), new Object[] { "FFF", "FBF", "FFF", 'F', Blocks.iron_bars, 'B', Blocks.redstone_lamp }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.reinforced_sand), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.sandstone }); @@ -468,6 +489,11 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.stamp_9, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_9 }); addRecipeAuto(new ItemStack(ModItems.stamp_50, 1), new Object[] { "RSR", "III", " C ", 'R', REDSTONE.dust(), 'S', ModItems.stamp_iron_flat, 'I', ModItems.plate_polymer, 'C', ModItems.casing_50 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_357, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_357 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_44, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_44 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_9, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_9 }); + addRecipeAuto(new ItemStack(ModItems.stamp_desh_50, 1), new Object[] { "RSR", "III", " C ", 'R', ModItems.ingot_dura_steel, 'S', ModItems.stamp_desh_flat, 'I', ModItems.ingot_saturnite, 'C', ModItems.casing_50 }); + addRecipeAuto(new ItemStack(ModBlocks.sat_dock, 1), new Object[] { "SSS", "PCP", 'S', STEEL.ingot(), 'P', ANY_PLASTIC.ingot(), 'C', ModBlocks.crate_iron }); addRecipeAuto(new ItemStack(ModBlocks.book_guide, 1), new Object[] { "IBI", "LBL", "IBI", 'B', Items.book, 'I', KEY_BLACK, 'L', KEY_BLUE }); @@ -512,7 +538,7 @@ public class CraftingManager { addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium), new Object[] { "A A", "PLP", "PSP", 'A', ModItems.wire_gold, 'P', TI.plate(), 'S', LI.dust(), 'L', CO.dust() }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium), new Object[] { " A ", "PNP", "PSP", 'A', ModItems.wire_schrabidium, 'P', SA326.plate(), 'S', SA326.dust(), 'N', NP237.dust() }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium), new Object[] { " A ", "PSP", "PNP", 'A', ModItems.wire_schrabidium, 'P', SA326.plate(), 'S', SA326.dust(), 'N', NP237.dust() }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark), new Object[] { " A ", "PSP", "PSP", 'A', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark), new Object[] { "P", "S", "S", 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PSP", "PTP", 'A', ModItems.wire_aluminium, 'P', AL.plate(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_trixite), new Object[] { " A ", "PTP", "PSP", 'A', ModItems.wire_aluminium, 'P', AL.plate(), 'S', ModItems.powder_power, 'T', ModItems.crystal_trixite }); addRecipeAuto(ItemBattery.getFullBattery(ModItems.energy_core), new Object[] { "PCW", "TRD", "PCW", 'P', ALLOY.plate(), 'C', ModItems.coil_advanced_alloy, 'W', ModItems.wire_advanced_alloy, 'R', ModItems.cell_tritium, 'D', ModItems.cell_deuterium, 'T', W.ingot() }); @@ -534,13 +560,13 @@ public class CraftingManager { addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_12), new Object[] { "WPW", "BBB", "WPW", 'W', ModItems.wire_red_copper, 'P', CU.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_advanced_cell_4) }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_6), new Object[] { "WPW", "BWB", "WPW", 'W', ModItems.wire_gold, 'P', TI.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_lithium_cell_3) }); addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_4), new Object[] { "WPW", "BWB", "WPW", 'W', ModItems.wire_schrabidium, 'P', SA326.plate(), 'B', ItemBattery.getEmptyBattery(ModItems.battery_schrabidium_cell_2) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6), new Object[] { "BBW", "BBP", "BBW", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25), new Object[] { " WW", "PCC", "BCC", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark), 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), new Object[] { "W W", "BPB", "BPB", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), new Object[] { "CCC", "CSC", "CCC", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100) }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), new Object[] { "CVC", "PSP", "CVC", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), 'P', ModItems.plate_dineutronium }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), new Object[] { "PVP", "VSV", "PVP", 'S', ModItems.singularity_spark, 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), 'P', ModItems.plate_dineutronium }); - addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_power), new Object[] { "CCC", "CSC", "CCC", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6), new Object[] { "BW", "PW", "BW", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.powder_spark_mix, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25), new Object[] { "W W", "SCS", "PSP", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_6) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), new Object[] { "W W", "BPB", "SSS", 'W', ModItems.wire_magnetized_tungsten, 'P', ModItems.plate_dineutronium, 'S', ModItems.powder_spark_mix, 'B', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_25) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), new Object[] { "PCP", "CSC", "PCP", 'S', ModItems.singularity_spark, 'P', ModItems.powder_spark_mix, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100) }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), new Object[] { "SCS", "CVC", "SCS", 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_100), 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_1000), 'S', ModItems.powder_spark_mix }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), new Object[] { "OSO", "SVS", "OSO", 'S', ModItems.singularity_spark, 'V', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_2500), 'O', ModItems.ingot_osmiridium }); + addRecipeAuto(ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_power), new Object[] { "YSY", "SCS", "YSY", 'S', ModItems.singularity_spark, 'C', ItemBattery.getEmptyBattery(ModItems.battery_spark_cell_10000), 'Y', ModItems.billet_yharonite }); addRecipeAuto(ItemBattery.getFullBattery(ModItems.battery_su), new Object[] { "P", "R", "C", 'P', Items.paper, 'R', REDSTONE.dust(), 'C', COAL.dust() }); addRecipeAuto(ItemBattery.getFullBattery(ModItems.battery_su), new Object[] { "P", "C", "R", 'P', Items.paper, 'R', REDSTONE.dust(), 'C', COAL.dust() }); @@ -568,7 +594,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModItems.gun_kit_2, 1), new Object[] { "III", "GLG", "PPP", 'I', ModItems.plate_polymer, 'L', ModItems.ducttape, 'G', ModItems.gun_kit_1, 'P', IRON.plate() }); addRecipeAuto(new ItemStack(ModItems.igniter, 1), new Object[] { " W", "SC", "CE", 'S', STEEL.plate(), 'W', ModItems.wire_schrabidium, 'C', ModItems.circuit_schrabidium, 'E', EUPH.ingot() }); - addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LEL", "EWE", "LEL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock }); + addRecipeAuto(new ItemStack(ModItems.watch, 1), new Object[] { "LYL", "EWE", "LYL", 'E', EUPH.ingot(), 'L', KEY_BLUE, 'W', Items.clock, 'Y', ModItems.billet_yharonite }); addRecipeAuto(new ItemStack(ModItems.key, 1), new Object[] { " B", " B ", "P ", 'P', STEEL.plate(), 'B', ModItems.bolt_tungsten }); addRecipeAuto(new ItemStack(ModItems.key_kit, 1), new Object[] { "PKP", "DTD", "PKP", 'P', GOLD.plate(), 'K', ModItems.key, 'D', DESH.dust(), 'T', KEY_TOOL_SCREWDRIVER }); @@ -598,6 +624,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " D ", "SAS", 'S', STEEL.plate(), 'A', AL.plate(), 'D', ModItems.ducttape }); addShapelessAuto(new ItemStack(ModBlocks.fluid_duct_neo, 1, 0), new Object[] { ModBlocks.fluid_duct }); addRecipeAuto(new ItemStack(ModBlocks.fluid_duct_solid, 8), new Object[] { "SAS", "ADA", "SAS", 'S', STEEL.ingot(), 'A', AL.plate(), 'D', ModItems.ducttape }); + addRecipeAuto(new ItemStack(ModBlocks.fluid_valve, 1), new Object[] { "S", "W", 'S', Blocks.lever, 'W', ModBlocks.fluid_duct_paintable }); + addRecipeAuto(new ItemStack(ModBlocks.fluid_switch, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.fluid_duct_paintable }); addRecipeAuto(new ItemStack(ModItems.template_folder, 1), new Object[] { "LPL", "BPB", "LPL", 'P', Items.paper, 'L', "dye", 'B', "dye" }); addRecipeAuto(new ItemStack(ModItems.pellet_antimatter, 1), new Object[] { "###", "###", "###", '#', ModItems.cell_antimatter }); addRecipeAuto(new ItemStack(ModItems.fluid_tank_empty, 8), new Object[] { "121", "1G1", "121", '1', AL.plate(), '2', IRON.plate(), 'G', KEY_ANYPANE }); @@ -753,10 +781,10 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.ams_catalyst_schrabidium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_dagaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, SA326.dust(), SA326.dust(), SA326.dust(), SA326.dust() }); addShapelessAuto(new ItemStack(ModItems.ams_catalyst_dineutronium, 1), new Object[] { ModItems.ams_catalyst_blank, ModItems.rune_hagalaz, ModItems.rune_hagalaz, ModItems.rune_thurisaz, ModItems.rune_thurisaz, DNT.dust(), DNT.dust(), DNT.dust(), DNT.dust() }); addRecipeAuto(new ItemStack(ModBlocks.dfc_core, 1), new Object[] { "DLD", "LML", "DLD", 'D', ModItems.ingot_bismuth, 'L', DNT.block(), 'M', KEY_CIRCUIT_BISMUTH }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', new ItemStack(ModBlocks.sellafield, 1, 5), 'L', ModItems.hull_small_steel }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); - addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.ingot(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_emitter, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', ModItems.crystal_xen, 'L', ModItems.sat_head_laser }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_receiver, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModBlocks.machine_transformer_dnt, 'X', new ItemStack(ModBlocks.sellafield, 1, 5), 'L', ModItems.hull_small_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_injector, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', CMB.plate(), 'T', ModBlocks.machine_fluidtank, 'X', ModItems.motor, 'L', ModItems.pipes_steel }); + addRecipeAuto(new ItemStack(ModBlocks.dfc_stabilizer, 1), new Object[] { "SDS", "TXL", "SDS", 'S', OSMIRIDIUM.plateCast(), 'D', ModItems.plate_desh, 'T', ModItems.singularity_spark, 'X', ModItems.magnet_circular, 'L', ModItems.crystal_xen }); addRecipeAuto(new ItemStack(ModBlocks.barrel_plastic, 1), new Object[] { "IPI", "I I", "IPI", 'I', ModItems.plate_polymer, 'P', AL.plate() }); addRecipeAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { "IPI", "I I", "IPI", 'I', IRON.plate(), 'P', IRON.ingot() }); addShapelessAuto(new ItemStack(ModBlocks.barrel_iron, 1), new Object[] { ModBlocks.barrel_corroded, ANY_TAR.any() }); @@ -765,6 +793,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.barrel_antimatter, 1), new Object[] { "IPI", "IBI", "IPI", 'I', BIGMT.plate(), 'P', ModItems.coil_advanced_torus, 'B', ModItems.battery_sc_technetium }); addRecipeAuto(new ItemStack(ModBlocks.tesla, 1), new Object[] { "CCC", "PIP", "WTW", 'C', ModItems.coil_copper, 'I', IRON.ingot(), 'P', ANY_PLASTIC.ingot(), 'T', ModBlocks.machine_transformer, 'W', KEY_PLANKS }); addRecipeAuto(new ItemStack(ModBlocks.struct_plasma_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_gold, 'B', ModBlocks.machine_lithium_battery, 'H', ModBlocks.fusion_heater }); + addRecipeAuto(new ItemStack(ModBlocks.struct_watz_core, 1), new Object[] { "CBC", "BHB", "CBC", 'C', ModItems.circuit_schrabidium, 'B', ANY_RESISTANTALLOY.plateCast(), 'H', ModBlocks.watz_cooler }); addShapelessAuto(new ItemStack(ModBlocks.fusion_heater), new Object[] { ModBlocks.fusion_hatch }); addShapelessAuto(new ItemStack(ModItems.energy_core), new Object[] { ModItems.fusion_core, ModItems.fuse }); addRecipeAuto(new ItemStack(ModItems.catalytic_converter, 1), new Object[] { "PCP", "PBP", "PCP", 'P', ANY_HARDPLASTIC.ingot(), 'C', CO.dust(), 'B', BI.ingot() }); @@ -811,6 +840,8 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.hadron_analysis, 1), new Object[] { "IPI", "PCP", "IPI", 'I', TI.ingot(), 'P', getReflector(), 'C', ModItems.circuit_gold }); 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', ModItems.circuit_aluminium, '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', ModItems.circuit_gold, '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(ModItems.ingot_schrabidium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', U.ingot(), 'P', new ItemStack(ModItems.particle_higgs).setStackDisplayName("Higgs Boson (Temporary Recipe)") }); addRecipeAuto(new ItemStack(ModItems.ingot_euphemium, 8), new Object[] { "UUU", "UPU", "UUU", 'U', PU.ingot(), 'P', new ItemStack(ModItems.particle_dark).setStackDisplayName("Dark Matter (Temporary Recipe)") }); @@ -898,7 +929,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(Items.lead, 4), new Object[] { "RSR", 'R', DictFrame.fromOne(ModItems.plant_item, EnumPlantType.ROPE), 'S', KEY_SLIME }); addRecipeAuto(new ItemStack(ModItems.rag, 4), new Object[] { "SW", "WS", 'S', Items.string, 'W', Blocks.wool }); - addShapelessAuto(new ItemStack(ModItems.solid_fuel, 2), new Object[] { Fluids.HEATINGOIL.getDict(1000), KEY_TOOL_CHEMISTRYSET }); + addShapelessAuto(new ItemStack(ModItems.solid_fuel, 3), new Object[] { Fluids.HEATINGOIL.getDict(16000), KEY_TOOL_CHEMISTRYSET }); addShapelessAuto(new ItemStack(ModItems.canister_full, 2, Fluids.LUBRICANT.getID()), new Object[] { Fluids.HEATINGOIL.getDict(1000), Fluids.UNSATURATEDS.getDict(1000), ModItems.canister_empty, ModItems.canister_empty, KEY_TOOL_CHEMISTRYSET }); addRecipeAuto(new ItemStack(ModBlocks.machine_condenser), new Object[] { "SIS", "ICI", "SIS", 'S', STEEL.ingot(), 'I', IRON.plate(), 'C', ModItems.board_copper }); @@ -935,11 +966,13 @@ public class CraftingManager { int amount = (int) craneCasing[i * 2 + 1]; addRecipeAuto(new ItemStack(ModBlocks.crane_inserter, amount), new Object[] { "CCC", "C C", "CBC", 'C', casing, 'B', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.crane_extractor, amount), new Object[] { "CCC", "CPC", "CBC", 'C', casing, 'B', ModBlocks.conveyor, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC) }); + addRecipeAuto(new ItemStack(ModBlocks.crane_grabber, amount), new Object[] { "C C", "P P", "CBC", 'C', casing, 'B', ModBlocks.conveyor, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC) }); } addRecipeAuto(new ItemStack(ModBlocks.crane_boxer), new Object[] { "WWW", "WPW", "CCC", 'W', KEY_PLANKS, 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'C', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.crane_unboxer), new Object[] { "WWW", "WPW", "CCC", 'W', KEY_STICK, 'P', Items.shears, 'C', ModBlocks.conveyor }); addRecipeAuto(new ItemStack(ModBlocks.crane_router), new Object[] { "PIP", "ICI", "PIP", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', ModItems.plate_polymer, 'C', ModItems.circuit_copper }); + addRecipeAuto(new ItemStack(ModBlocks.crane_splitter), new Object[] { "III", "PCP", "III", 'P', DictFrame.fromOne(ModItems.part_generic, EnumPartType.PISTON_PNEUMATIC), 'I', STEEL.ingot(), 'C', ModItems.circuit_aluminium }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1), new Object[] { ModItems.ingot_chainsteel, ASBESTOS.ingot(), ModItems.gem_alexandrite }); addShapelessAuto(DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER1, 3), new Object[] { DictFrame.fromOne(ModItems.parts_legendary, EnumLegendaryType.TIER2) }); @@ -956,6 +989,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.foundry_channel, 4), new Object[] { "B B", " S ", 'B', ModItems.ingot_firebrick, 'S', Blocks.stone_slab }); addRecipeAuto(new ItemStack(ModBlocks.foundry_tank), new Object[] { "B B", "I I", "BSB", 'B', ModItems.ingot_firebrick, 'I', STEEL.ingot(), 'S', Blocks.stone_slab }); addShapelessAuto(new ItemStack(ModBlocks.foundry_outlet), new Object[] { ModBlocks.foundry_channel, STEEL.plate() }); + addShapelessAuto(new ItemStack(ModBlocks.foundry_slagtap), new Object[] { ModBlocks.foundry_channel, Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModItems.mold_base), new Object[] { " B ", "BIB", " B ", 'B', ModItems.ingot_firebrick, 'I', IRON.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.brick_fire), new Object[] { "BB", "BB", 'B', ModItems.ingot_firebrick }); addShapelessAuto(new ItemStack(ModItems.ingot_firebrick, 4), new Object[] { ModBlocks.brick_fire }); @@ -968,6 +1002,8 @@ public class CraftingManager { addShapelessAuto(new ItemStack(ModItems.upgrade_5g), new Object[] { ModItems.upgrade_template, ModItems.gem_alexandrite }); + addShapelessAuto(new ItemStack(ModItems.bdcl), new Object[] { ANY_TAR.any(), Fluids.WATER.getDict(1_000), KEY_WHITE }); + if(GeneralConfig.enableLBSM && GeneralConfig.enableLBSMSimpleCrafting) { addShapelessAuto(new ItemStack(ModItems.cordite, 3), new Object[] { ModItems.ballistite, Items.gunpowder, new ItemStack(Blocks.wool, 1, OreDictionary.WILDCARD_VALUE) }); addShapelessAuto(new ItemStack(ModItems.ingot_semtex, 3), new Object[] { Items.slime_ball, Blocks.tnt, KNO.dust() }); @@ -1055,6 +1091,31 @@ public class CraftingManager { ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_TRANSISTOR), ModItems.circuit_star_piece.stackFromEnum(ScrapType.BOARD_BLANK) }); + + addRecipeAuto(new ItemStack(ModItems.sliding_blast_door_skin), "SPS", "DPD", "SPS", 'P', Items.paper, 'D', "dye", 'S', STEEL.plate()); + addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin, 1, 1), new ItemStack(ModItems.sliding_blast_door_skin, 1, 0)); + addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin, 1, 2), new ItemStack(ModItems.sliding_blast_door_skin, 1, 1)); + addShapelessAuto(new ItemStack(ModItems.sliding_blast_door_skin), new ItemStack(ModItems.sliding_blast_door_skin, 1, 2)); + + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 0), " I ", "IPI", " I ", 'I', STEEL.ingot(), 'P', STEEL.plateCast()); + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 1), " I ", "IPI", " I ", 'I', ALLOY.ingot(), 'P', ALLOY.plateCast()); + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 2), " I ", "IPI", " I ", 'I', DESH.ingot(), 'P', DESH.plateCast()); + addRecipeAuto(new ItemStack(ModBlocks.cm_block, 4, 3), " I ", "IPI", " I ", 'I', ANY_RESISTANTALLOY.ingot(), 'P', ANY_RESISTANTALLOY.plateCast()); + + for(int i = 0; i < 4; i++) { + addRecipeAuto(new ItemStack(ModBlocks.cm_sheet, 16, i), "BB", "BB", 'B', new ItemStack(ModBlocks.cm_block, 1, i)); + addRecipeAuto(new ItemStack(ModBlocks.cm_tank, 4, i), " B ", "BGB", " B ", 'B', new ItemStack(ModBlocks.cm_block, 1, i), 'G', KEY_ANYGLASS); + addRecipeAuto(new ItemStack(ModBlocks.cm_port, 1, i), "P", "B", "P", 'B', new ItemStack(ModBlocks.cm_block, 1, i), 'P', IRON.plate()); + } + + addRecipeAuto(new ItemStack(ModBlocks.cm_engine, 1, 0), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.motor); + addRecipeAuto(new ItemStack(ModBlocks.cm_engine, 1, 1), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.motor_desh); + addRecipeAuto(new ItemStack(ModBlocks.cm_engine, 1, 2), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.motor_bismuth); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 0), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_aluminium); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 1), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_copper); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 2), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_red_copper); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 3), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_gold); + addRecipeAuto(new ItemStack(ModBlocks.cm_circuit, 1, 4), " I ", "IMI", " I ", 'I', STEEL.ingot(), 'M', ModItems.circuit_schrabidium); } public static void crumple() { diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 17d3dae1f..6b7451986 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -1,5 +1,6 @@ package com.hbm.main; +import com.hbm.commands.CommandSatellites; import net.minecraft.block.BlockDispenser; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.dispenser.BehaviorDefaultDispenseItem; @@ -46,8 +47,11 @@ import com.google.common.collect.ImmutableList; import com.hbm.blocks.BlockEnums.EnumStoneType; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres; +import com.hbm.blocks.generic.BlockToolConversion; +import com.hbm.commands.CommandDebugChunkLoad; import com.hbm.commands.CommandReloadRecipes; import com.hbm.config.*; +import com.hbm.crafting.RodRecipes; import com.hbm.creativetabs.*; import com.hbm.entity.EntityMappings; import com.hbm.entity.grenade.*; @@ -55,16 +59,20 @@ import com.hbm.entity.logic.*; import com.hbm.entity.mob.siege.*; import com.hbm.handler.*; import com.hbm.handler.imc.*; +import com.hbm.handler.pollution.PollutionHandler; import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.hazard.HazardRegistry; import com.hbm.inventory.*; +import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.*; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.tool.ItemFertilizer; +import com.hbm.items.weapon.ItemGenericGrenade; import com.hbm.items.ItemAmmoEnums.Ammo4Gauge; +import com.hbm.items.ItemEnums.EnumAchievementType; import com.hbm.lib.HbmWorld; import com.hbm.lib.Library; import com.hbm.lib.RefStrings; @@ -75,6 +83,7 @@ import com.hbm.tileentity.TileMappings; import com.hbm.tileentity.bomb.TileEntityNukeCustom; import com.hbm.tileentity.machine.*; import com.hbm.tileentity.machine.rbmk.RBMKDials; +import com.hbm.util.AchievementHandler; import com.hbm.util.ArmorUtil; import com.hbm.util.Compat; import com.hbm.util.StatHelper; @@ -183,6 +192,7 @@ public class MainRegistry { public static Achievement achSlimeball; public static Achievement achSulfuric; public static Achievement achWitchtaunter; + public static Achievement achGoFish; public static Achievement achNo9; public static Achievement achInferno; public static Achievement bobHidden; @@ -253,7 +263,6 @@ public class MainRegistry { logger.info("Let us celebrate the fact that the logger finally works again!"); // Reroll Polaroid - if(generalOverride > 0 && generalOverride < 19) { polaroidID = generalOverride; } else { @@ -611,6 +620,18 @@ public class MainRegistry { return new EntityGrenadeDynamite(world, position.getX(), position.getY(), position.getZ()); } }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_kyiv, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World world, IPosition position) { + return new EntityGrenadeImpactGeneric(world, position.getX(), position.getY(), position.getZ()).setType((ItemGenericGrenade) ModItems.grenade_kyiv); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.stick_dynamite_fishing, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World world, IPosition position) { + return new EntityGrenadeImpactGeneric(world, position.getX(), position.getY(), position.getZ()).setType((ItemGenericGrenade) ModItems.stick_dynamite_fishing); + } + }); BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.powder_fertilizer, new BehaviorDefaultDispenseItem() { private boolean dispenseSound = true; @@ -636,10 +657,13 @@ public class MainRegistry { @EventHandler public static void load(FMLInitializationEvent event) { + + RodRecipes.registerInit(); 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(); + achGoFish = new Achievement("achievement.goFish", "goFish", 5, 10, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.GOFISH), null).initIndependentStat().setSpecial().registerStat(); achFreytag = new Achievement("achievement.freytag", "freytag", 0, -4, ModItems.gun_mp40, null).initIndependentStat().setSpecial().registerStat(); achPotato = new Achievement("achievement.potato", "potato", -2, -2, ModItems.battery_potatos, null).initIndependentStat().setSpecial().registerStat(); achC44 = new Achievement("achievement.c44", "c44", 2, -4, ModItems.gun_revolver_pip, null).initIndependentStat().setSpecial().registerStat(); @@ -651,8 +675,8 @@ public class MainRegistry { achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat(); achNo9 = new Achievement("achievement.no9", "no9", -8, 12, ModItems.no9, null).initIndependentStat().registerStat(); - achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, Items.slime_ball, null).initIndependentStat().registerStat(); - achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, ModItems.bucket_sulfuric_acid, achSlimeball).initIndependentStat().setSpecial().registerStat(); + achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.ACID), null).initIndependentStat().registerStat(); + achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.BALLS), achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); bobHidden = new Achievement("achievement.hidden", "hidden", 15, -4, ModItems.gun_dampfmaschine, null).initIndependentStat().registerStat(); @@ -672,11 +696,11 @@ public class MainRegistry { achSomeWounds = new Achievement("achievement.someWounds", "someWounds", -2, 10, ModItems.injector_knife, null).initIndependentStat().registerStat(); - digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -1, 8, ModItems.digamma_see, null).initIndependentStat().registerStat(); - digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 1, 8, ModItems.digamma_feel, digammaSee).initIndependentStat().registerStat(); - digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 3, 8, ModItems.digamma_know, digammaFeel).initIndependentStat().registerStat().setSpecial(); - digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 5, 8, ModItems.digamma_kauai_moho, digammaKnow).initIndependentStat().registerStat().setSpecial(); - digammaUpOnTop = new Achievement("achievement.digammaUpOnTop", "digammaUpOnTop", 7, 8, ModItems.digamma_up_on_top, digammaKauaiMoho).initIndependentStat().registerStat().setSpecial(); + digammaSee = new Achievement("achievement.digammaSee", "digammaSee", -1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMASEE), null).initIndependentStat().registerStat(); + digammaFeel = new Achievement("achievement.digammaFeel", "digammaFeel", 1, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAFEEL), digammaSee).initIndependentStat().registerStat(); + digammaKnow = new Achievement("achievement.digammaKnow", "digammaKnow", 3, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKNOW), digammaFeel).initIndependentStat().registerStat().setSpecial(); + digammaKauaiMoho = new Achievement("achievement.digammaKauaiMoho", "digammaKauaiMoho", 5, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAKAUAIMOHO), digammaKnow).initIndependentStat().registerStat().setSpecial(); + digammaUpOnTop = new Achievement("achievement.digammaUpOnTop", "digammaUpOnTop", 7, 8, DictFrame.fromOne(ModItems.achievement_icon, EnumAchievementType.DIGAMMAUPONTOP), digammaKauaiMoho).initIndependentStat().registerStat().setSpecial(); //progression achieves achBurnerPress = new Achievement("achievement.burnerPress", "burnerPress", 0, 0, new ItemStack(ModBlocks.machine_press), null).initIndependentStat().registerStat(); @@ -715,6 +739,7 @@ public class MainRegistry { achSacrifice, achImpossible, achTOB, + achGoFish, achFreytag, achPotato, achC44, @@ -814,6 +839,8 @@ public class MainRegistry { AnvilRecipes.register(); RefineryRecipes.registerRefinery(); GasCentrifugeRecipes.register(); + + CustomMachineConfigJSON.initialize(); //the good stuff SerializableRecipe.registerAllHandlers(); @@ -829,6 +856,8 @@ public class MainRegistry { HazmatRegistry.registerHazmats(); FluidContainerRegistry.register(); TileEntityMachineReactorLarge.registerAll(); + BlockToolConversion.registerRecipes(); + AchievementHandler.register(); proxy.registerMissileItems(); @@ -842,8 +871,11 @@ public class MainRegistry { 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()); + 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 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(); Compat.handleRailcraftNonsense(); SuicideThreadDump.register(); @@ -875,6 +907,10 @@ public class MainRegistry { ChunkRadiationManager radiationSystem = new ChunkRadiationManager(); MinecraftForge.EVENT_BUS.register(radiationSystem); FMLCommonHandler.instance().bus().register(radiationSystem); + + PollutionHandler pollution = new PollutionHandler(); + MinecraftForge.EVENT_BUS.register(pollution); + FMLCommonHandler.instance().bus().register(pollution); if(event.getSide() == Side.CLIENT) { HbmKeybinds.register(); @@ -890,6 +926,8 @@ public class MainRegistry { RBMKDials.createDials(world); SiegeOrchestrator.createGameRules(world); event.registerServerCommand(new CommandReloadRecipes()); + event.registerServerCommand(new CommandDebugChunkLoad()); + event.registerServerCommand(new CommandSatellites()); } @EventHandler @@ -898,6 +936,7 @@ public class MainRegistry { if(GeneralConfig.enableStatReRegistering) { logger.info("Attempting to re-register item stats..."); StatHelper.resetStatShitFuck(); //shit yourself + logger.info("Item stats re-registered"); } } @@ -1084,6 +1123,44 @@ public class MainRegistry { ignoreMappings.add("hbm:item.gun_revolver_lead_ammo"); ignoreMappings.add("hbm:item.gun_revolver_schrabidium_ammo"); ignoreMappings.add("hbm:item.tank_waste"); + ignoreMappings.add("hbm:item.digamma_see"); + ignoreMappings.add("hbm:item.digamma_feel"); + ignoreMappings.add("hbm:item.digamma_know"); + ignoreMappings.add("hbm:item.digamma_kauai_moho"); + ignoreMappings.add("hbm:item.digamma_up_on_top"); + ignoreMappings.add("hbm:tile.oil_duct_solid"); + ignoreMappings.add("hbm:tile.oil_duct"); + ignoreMappings.add("hbm:tile.gas_duct_solid"); + ignoreMappings.add("hbm:tile.gas_duct"); + ignoreMappings.add("hbm:tile.dummy_block_assembler"); + ignoreMappings.add("hbm:tile.dummy_port_assembler"); + ignoreMappings.add("hbm:item.canned_beef"); + ignoreMappings.add("hbm:item.canned_tuna"); + ignoreMappings.add("hbm:item.canned_mystery"); + ignoreMappings.add("hbm:item.canned_pashtet"); + ignoreMappings.add("hbm:item.canned_cheese"); + ignoreMappings.add("hbm:item.canned_jizz"); + ignoreMappings.add("hbm:item.canned_milk"); + ignoreMappings.add("hbm:item.canned_ass"); + ignoreMappings.add("hbm:item.canned_pizza"); + ignoreMappings.add("hbm:item.canned_tube"); + ignoreMappings.add("hbm:item.canned_tomato"); + ignoreMappings.add("hbm:item.canned_asbestos"); + ignoreMappings.add("hbm:item.canned_bhole"); + ignoreMappings.add("hbm:item.canned_hotdogs"); + ignoreMappings.add("hbm:item.canned_leftovers"); + ignoreMappings.add("hbm:item.canned_yogurt"); + ignoreMappings.add("hbm:item.canned_stew"); + ignoreMappings.add("hbm:item.canned_chinese"); + ignoreMappings.add("hbm:item.canned_oil"); + ignoreMappings.add("hbm:item.canned_fist"); + ignoreMappings.add("hbm:item.canned_spam"); + ignoreMappings.add("hbm:item.canned_fried"); + ignoreMappings.add("hbm:item.canned_napalm"); + ignoreMappings.add("hbm:item.canned_diesel"); + ignoreMappings.add("hbm:item.canned_kerosene"); + ignoreMappings.add("hbm:item.canned_recursion"); + ignoreMappings.add("hbm:item.canned_bark"); /// REMAP /// remapItems.put("hbm:item.gadget_explosive8", ModItems.early_explosive_lenses); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index e352f2a77..7197df144 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -6,6 +6,7 @@ import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Random; @@ -18,15 +19,17 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; import com.hbm.config.GeneralConfig; import com.hbm.config.MobConfig; +import com.hbm.config.RadiationConfig; import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.entity.mob.EntityCyberCrab; import com.hbm.entity.mob.EntityDuck; -import com.hbm.entity.mob.EntityNuclearCreeper; +import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.entity.mob.EntityQuackos; -import com.hbm.entity.mob.EntityTaintedCreeper; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.mob.EntityCreeperTainted; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityBurningFOEQ; +import com.hbm.entity.train.EntityRailCarBase; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; @@ -38,6 +41,9 @@ import com.hbm.handler.EntityEffectHandler; import com.hbm.hazard.HazardSystem; import com.hbm.interfaces.IBomb; import com.hbm.handler.HTTPHandler; +import com.hbm.handler.HbmKeybinds.EnumKeybind; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.handler.SiegeOrchestrator; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; @@ -61,17 +67,21 @@ import com.hbm.packet.PlayerInformPacket; import com.hbm.potion.HbmPotion; import com.hbm.saveddata.AuxSavedData; import com.hbm.tileentity.network.RTTYSystem; +import com.hbm.util.AchievementHandler; +import com.hbm.util.ArmorRegistry; import com.hbm.util.ArmorUtil; import com.hbm.util.ContaminationUtil; import com.hbm.util.EnchantmentUtil; import com.hbm.util.EntityDamageUtil; import com.hbm.util.EnumUtil; import com.hbm.util.InventoryUtil; +import com.hbm.util.ArmorRegistry.HazardClass; import com.hbm.world.generator.TimedGenerator; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.PlayerEvent; +import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerChangedDimensionEvent; import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; @@ -190,7 +200,7 @@ public class ModEventHandler { } @SubscribeEvent - public void onEntityConstructing(EntityEvent.EntityConstructing event) { + public void onEntityConstructing(EntityEvent.EntityConstructing event) { if(event.entity instanceof EntityPlayer) { @@ -207,6 +217,14 @@ public class ModEventHandler { HbmLivingProps.getData(living); //ditto } } + + @SubscribeEvent + public void onPlayerChangeDimension(PlayerChangedDimensionEvent event) { + EntityPlayer player = event.player; + HbmPlayerProps data = HbmPlayerProps.getData(player); + data.setKeyPressed(EnumKeybind.JETPACK, false); + data.setKeyPressed(EnumKeybind.DASH, false); + } @SubscribeEvent(priority = EventPriority.HIGHEST) public void onEntityDeathFirst(LivingDeathEvent event) { @@ -274,7 +292,7 @@ public class ModEventHandler { event.entity.dropItem(ModItems.book_of_, 1); } - if(event.entity instanceof EntityTaintedCreeper && event.source == ModDamageSource.boxcar) { + if(event.entity instanceof EntityCreeperTainted && event.source == ModDamageSource.boxcar) { for(Object o : event.entity.worldObj.getEntitiesWithinAABB(EntityPlayer.class, event.entity.boundingBox.expand(50, 50, 50))) { EntityPlayer player = (EntityPlayer)o; @@ -465,11 +483,7 @@ public class ModEventHandler { @SubscribeEvent public void onLivingUpdate(LivingUpdateEvent event) { - ItemStack[] prevArmor = null; - - try { - prevArmor = (ItemStack[]) ReflectionHelper.findField(EntityLivingBase.class, "field_82180_bT", "previousEquipment").get(event.entityLiving); - } catch(Exception e) { } + ItemStack[] prevArmor = event.entityLiving.previousEquipment; if(event.entityLiving instanceof EntityPlayer && prevArmor != null && event.entityLiving.getHeldItem() != null && (prevArmor[0] == null || prevArmor[0].getItem() != event.entityLiving.getHeldItem().getItem()) @@ -564,10 +578,10 @@ public class ModEventHandler { float eRad = HbmLivingProps.getRadiation(entity); - if(entity instanceof EntityCreeper && eRad >= 200 && entity.getHealth() > 0) { + if(entity.getClass().equals(EntityCreeper.class) && eRad >= 200 && entity.getHealth() > 0) { if(event.world.rand.nextInt(3) == 0 ) { - EntityNuclearCreeper creep = new EntityNuclearCreeper(event.world); + EntityCreeperNuclear creep = new EntityCreeperNuclear(event.world); creep.setLocationAndAngles(entity.posX, entity.posY, entity.posZ, entity.rotationYaw, entity.rotationPitch); if(!entity.isDead) @@ -680,6 +694,11 @@ public class ModEventHandler { */ } /// RADIATION STUFF END /// + + + if(event.phase == Phase.END) { + EntityRailCarBase.updateMotion(event.world); + } } if(event.phase == Phase.START) { @@ -825,7 +844,7 @@ public class ModEventHandler { } for(int i = 0; i < bullets; i++) { - EntityBulletBase bullet = new EntityBulletBase(player.worldObj, BulletConfigSyncingUtil.getKey(firedConfig), player); + EntityBulletBaseNT bullet = new EntityBulletBaseNT(player.worldObj, BulletConfigSyncingUtil.getKey(firedConfig), player); player.worldObj.spawnEntityInWorld(bullet); } @@ -1100,31 +1119,12 @@ public class ModEventHandler { @SubscribeEvent public void itemCrafted(PlayerEvent.ItemCraftedEvent e) { - - Item item = e.crafting.getItem(); - - if(item == ModItems.gun_mp40) { - e.player.addStat(MainRegistry.achFreytag, 1); - } - if(item == ModItems.piston_selenium || item == ModItems.gun_b92) { - e.player.addStat(MainRegistry.achSelenium, 1); - } - if(item == ModItems.battery_potatos) { - e.player.addStat(MainRegistry.achPotato, 1); - } - if(item == ModItems.gun_revolver_pip) { - e.player.addStat(MainRegistry.achC44, 1); - } - if(item == Item.getItemFromBlock(ModBlocks.machine_press)) { - e.player.triggerAchievement(MainRegistry.achBurnerPress); - } - if(item == ModItems.rbmk_fuel_empty) { - e.player.triggerAchievement(MainRegistry.achRBMK); - } + AchievementHandler.fire(e.player, e.crafting); } @SubscribeEvent public void itemSmelted(PlayerEvent.ItemSmeltedEvent e) { + AchievementHandler.fire(e.player, e.smelting); if(!e.player.worldObj.isRemote && e.smelting.getItem() == Items.iron_ingot && e.player.getRNG().nextInt(64) == 0) { @@ -1154,10 +1154,12 @@ public class ModEventHandler { @SubscribeEvent public void onBlockBreak(BreakEvent event) { - if(!(event.getPlayer() instanceof EntityPlayerMP)) + EntityPlayer player = event.getPlayer(); + + if(!(player instanceof EntityPlayerMP)) return; - if(event.block == ModBlocks.stone_gneiss && !((EntityPlayerMP) event.getPlayer()).func_147099_x().hasAchievementUnlocked(MainRegistry.achStratum)) { + if(event.block == ModBlocks.stone_gneiss && !((EntityPlayerMP) player).func_147099_x().hasAchievementUnlocked(MainRegistry.achStratum)) { event.getPlayer().triggerAchievement(MainRegistry.achStratum); event.setExpToDrop(500); } @@ -1174,6 +1176,23 @@ public class ModEventHandler { event.world.setBlock(x, y, z, ModBlocks.gas_coal); } } + + if(RadiationConfig.enablePollution && RadiationConfig.enableLeadFromBlocks) { + if(!ArmorRegistry.hasProtection(player, 3, HazardClass.PARTICLE_FINE)) { + + float metal = PollutionHandler.getPollution(player.worldObj, event.x, event.y, event.z, PollutionType.HEAVYMETAL); + + if(metal < 5) return; + + if(metal < 10) { + player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 0)); + } else if(metal < 25) { + player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 1)); + } else { + player.addPotionEffect(new PotionEffect(HbmPotion.lead.id, 100, 2)); + } + } + } } private static final String hash = "41eb77f138ce350932e33b6b26b233df9aad0c0c80c6a49cb9a54ddd8fae3f83"; @@ -1300,7 +1319,7 @@ public class ModEventHandler { String[] msg = message.split(" "); - String m = msg[0].substring(1, msg[0].length()).toLowerCase(); + String m = msg[0].substring(1, msg[0].length()).toLowerCase(Locale.US); if("gv".equals(m)) { diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9e8872aec..17a4e9682 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -3,6 +3,7 @@ package com.hbm.main; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Random; import org.lwjgl.input.Keyboard; @@ -12,10 +13,15 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ILookOverlay; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockAshes; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.MoveContext; +import com.hbm.blocks.rail.IRailNTM.RailCheckType; +import com.hbm.blocks.rail.IRailNTM.RailContext; import com.hbm.config.GeneralConfig; import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.mob.EntityHunterChopper; import com.hbm.entity.projectile.EntityChopperMine; +import com.hbm.entity.train.EntityRailCarRidable; import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.handler.ArmorModHandler; @@ -64,6 +70,7 @@ import com.hbm.tileentity.machine.TileEntityNukeFurnace; import com.hbm.util.I18nUtil; import com.hbm.util.ItemStackUtil; import com.hbm.util.LoggingUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.wiaj.GuiWorldInAJar; import com.hbm.wiaj.cannery.CanneryBase; import com.hbm.wiaj.cannery.Jars; @@ -81,15 +88,19 @@ import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.InputEvent; import cpw.mods.fml.common.gameevent.InputEvent.KeyInputEvent; import cpw.mods.fml.common.gameevent.TickEvent.ClientTickEvent; import cpw.mods.fml.common.gameevent.TickEvent.Phase; +import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; 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.client.entity.AbstractClientPlayer; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.client.gui.GuiMainMenu; import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.multiplayer.WorldClient; @@ -97,12 +108,16 @@ import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderPlayer; +import net.minecraft.client.settings.KeyBinding; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.inventory.Slot; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import net.minecraft.network.play.client.C03PacketPlayer; +import net.minecraft.network.play.client.C0CPacketInput; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.EnumChatFormatting; @@ -116,6 +131,7 @@ import net.minecraft.world.WorldProviderSurface; import net.minecraftforge.client.GuiIngameForge; import net.minecraftforge.client.IRenderHandler; import net.minecraftforge.client.event.FOVUpdateEvent; +import net.minecraftforge.client.event.GuiOpenEvent; import net.minecraftforge.client.event.MouseEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType; @@ -161,13 +177,22 @@ public class ModEventHandlerClient { World world = mc.theWorld; MovingObjectPosition mop = mc.objectMouseOver; - if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK ) { + if(mop != null) { - if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) { - ((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + if(mop.typeOfHit == mop.typeOfHit.BLOCK) { - } else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) { - ((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + if(player.getHeldItem() != null && player.getHeldItem().getItem() instanceof ILookOverlay) { + ((ILookOverlay) player.getHeldItem().getItem()).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + + } else if(world.getBlock(mop.blockX, mop.blockY, mop.blockZ) instanceof ILookOverlay) { + ((ILookOverlay) world.getBlock(mop.blockX, mop.blockY, mop.blockZ)).printHook(event, world, mop.blockX, mop.blockY, mop.blockZ); + } + } else if(mop.typeOfHit == mop.typeOfHit.ENTITY) { + Entity entity = mop.entityHit; + + if(entity instanceof ILookOverlay) { + ((ILookOverlay) entity).printHook(event, world, 0, 0, 0); + } } } @@ -200,6 +225,71 @@ public class ModEventHandlerClient { GL11.glPopMatrix(); Minecraft.getMinecraft().renderEngine.bindTexture(Gui.icons); }*/ + + /*List text = new ArrayList(); + MovingObjectPosition pos = Library.rayTrace(player, 500, 1, false, true, false); + + for(int i = 0; i < 2; i++) if(pos != null && pos.typeOfHit == pos.typeOfHit.BLOCK) { + + float yaw = player.rotationYaw; + + Vec3 next = Vec3.createVectorHelper(pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord); + int it = 0; + + BlockPos anchor = new BlockPos(pos.blockX, pos.blockY, pos.blockZ); + + double distanceToCover = 4D * (i == 0 ? 1 : -1); + + do { + + it++; + + if(it > 30) { + world.createExplosion(player, pos.hitVec.xCoord, pos.hitVec.yCoord, pos.hitVec.zCoord, 5F, false); + break; + } + + int x = anchor.getX(); + int y = anchor.getY(); + int z = anchor.getZ(); + Block block = world.getBlock(x, y, z); + + Vec3 rot = Vec3.createVectorHelper(0, 0, 1); + rot.rotateAroundY((float) (-yaw * Math.PI / 180D)); + + if(block instanceof IRailNTM) { + IRailNTM rail = (IRailNTM) block; + RailContext info = new RailContext(); + + boolean flip = distanceToCover < 0; + + if(it == 1) { + Vec3 snap = next = rail.getTravelLocation(world, x, y, z, next.xCoord, next.yCoord, next.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, 0, info, new MoveContext(RailCheckType.CORE, 0)); + if(i == 0) world.spawnParticle("reddust", snap.xCoord, snap.yCoord + 0.25, snap.zCoord, 0.1, 1, 0.1); + } + + Vec3 prev = next; + next = rail.getTravelLocation(world, x, y, z, prev.xCoord, prev.yCoord, prev.zCoord, rot.xCoord, rot.yCoord, rot.zCoord, distanceToCover, info, new MoveContext(i == 0 ? RailCheckType.FRONT : RailCheckType.BACK, 0)); + distanceToCover = info.overshoot; + anchor = info.pos; + if(i == 0) world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 0); + else world.spawnParticle("reddust", next.xCoord, next.yCoord + 0.25, next.zCoord, 0, distanceToCover != 0 ? 0.5 : 0, 1); + + double deltaX = next.xCoord - prev.xCoord; + double deltaZ = next.zCoord - prev.zCoord; + double radians = -Math.atan2(deltaX, deltaZ); + yaw = (float) MathHelper.wrapAngleTo180_double(radians * 180D / Math.PI + (flip ? 180 : 0)); + + text.add(it + ": " + yaw); + + } else { + break; + } + + } while(distanceToCover != 0); + + ILookOverlay.printGeneric(event, "DEBUG", 0xffff00, 0x4040000, text); + }*/ } /// HANLDE ANIMATION BUSES /// @@ -376,7 +466,7 @@ public class ModEventHandlerClient { if(invis != null && invis.getAmplifier() > 0) event.setCanceled(true); - if(player.getDisplayName().toLowerCase().equals("martmn")) { + if(player.getDisplayName().toLowerCase(Locale.US).equals("martmn")) { event.setCanceled(true); @@ -863,21 +953,73 @@ public class ModEventHandlerClient { if(event.phase == Phase.START && GeneralConfig.enableSkyboxes) { World world = Minecraft.getMinecraft().theWorld; + if(world == null) return; - if(world != null && world.provider instanceof WorldProviderSurface) { - - IRenderHandler sky = world.provider.getSkyRenderer(); + IRenderHandler sky = world.provider.getSkyRenderer(); + + if(world.provider instanceof WorldProviderSurface) { if(ImpactWorldHandler.getDustForClient(world) > 0 || ImpactWorldHandler.getFireForClient(world) > 0) { //using a chainloader isn't necessary since none of the sky effects should render anyway if(!(sky instanceof RenderNTMSkyboxImpact)) { world.provider.setSkyRenderer(new RenderNTMSkyboxImpact()); + return; } - } else { + } + } + + if(world.provider.dimensionId == 0) { + + if(!(sky instanceof RenderNTMSkyboxChainloader)) { + world.provider.setSkyRenderer(new RenderNTMSkyboxChainloader(sky)); + } + } + } + } - if(!(sky instanceof RenderNTMSkyboxChainloader)) { - world.provider.setSkyRenderer(new RenderNTMSkyboxChainloader(sky)); + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onMouseClicked(InputEvent.KeyInputEvent event) { + + Minecraft mc = Minecraft.getMinecraft(); + if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { + boolean state = Mouse.getEventButtonState(); + int keyCode = Mouse.getEventButton() - 100; + + //if anything errors here, run ./gradlew clean setupDecompWorkSpace + for(Object o : KeyBinding.keybindArray) { + KeyBinding key = (KeyBinding) o; + + if(key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { + + key.pressed = state; + if(state) { + key.pressTime++; + } + } + } + } + } + + @SideOnly(Side.CLIENT) + @SubscribeEvent + public void onKeyTyped(InputEvent.KeyInputEvent event) { + + Minecraft mc = Minecraft.getMinecraft(); + if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) { + boolean state = Keyboard.getEventKeyState(); + int keyCode = Keyboard.getEventKey(); + + //if anything errors here, run ./gradlew clean setupDecompWorkSpace + for(Object o : KeyBinding.keybindArray) { + KeyBinding key = (KeyBinding) o; + + if(keyCode != 0 && key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) { + + key.pressed = state; + if(state) { + key.pressTime++; } } } @@ -1092,4 +1234,48 @@ public class ModEventHandlerClient { GL11.glEnable(GL11.GL_LIGHTING); } } + + @SubscribeEvent + public void worldTick(WorldTickEvent event) { + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + if(player != null && player.ridingEntity instanceof EntityRailCarRidable && player instanceof EntityClientPlayerMP) { + EntityRailCarRidable train = (EntityRailCarRidable) player.ridingEntity; + EntityClientPlayerMP client = (EntityClientPlayerMP) player; + + //mojank compensation, because apparently the "this makes the render work" method also determines the fucking input + if(!train.shouldRiderSit()) { + client.sendQueue.addToSendQueue(new C03PacketPlayer.C05PacketPlayerLook(client.rotationYaw, client.rotationPitch, client.onGround)); + client.sendQueue.addToSendQueue(new C0CPacketInput(client.moveStrafing, client.moveForward, client.movementInput.jump, client.movementInput.sneak)); + } + } + } + + @SubscribeEvent + public void onOpenGUI(GuiOpenEvent event) { + + if(event.gui instanceof GuiMainMenu) { + GuiMainMenu main = (GuiMainMenu) event.gui; + int rand = (int)(Math.random() * 150); + + switch(rand) { + case 0: main.splashText = "Floppenheimer!"; break; + case 1: main.splashText = "i should dip my balls in sulfuric acid"; break; + case 2: main.splashText = "All answers are popbob!"; break; + case 3: main.splashText = "None shall enter The Orb!"; break; + case 4: main.splashText = "Wacarb was here"; break; + case 5: main.splashText = "SpongeBoy me Bob I am overdosing on keramine agagagagaga"; break; + case 6: main.splashText = EnumChatFormatting.RED + "I know where you live, " + System.getProperty("user.name"); break; + case 7: main.splashText = "Nice toes, now hand them over."; break; + case 8: main.splashText = "I smell burnt toast!"; break; + case 9: main.splashText = "There are bugs under your skin!"; break; + case 10: main.splashText = "Fentanyl!"; break; + case 11: main.splashText = "Do drugs!"; break; + //case 12: main.splashText = "post this on r/feedthememes for free internet points!"; break; + } + + if(Math.random() < 0.1) main.splashText = "Visit r/feedthebeast if you hate yourself!"; + } + } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 5ab4434c7..7dd68dd4c 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -1,16 +1,21 @@ package com.hbm.main; import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GLContext; import com.hbm.blocks.ICustomBlockHighlight; +import com.hbm.config.RadiationConfig; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.items.armor.IArmorDisableModel; import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart; -import com.hbm.potion.HbmPotion; +import com.hbm.packet.PermaSyncHandler; import com.hbm.render.model.ModelMan; import cpw.mods.fml.common.eventhandler.EventPriority; import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.entity.RenderManager; @@ -23,6 +28,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.client.event.DrawBlockHighlightEvent; +import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors; +import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity; import net.minecraftforge.client.event.RenderPlayerEvent; public class ModEventHandlerRenderer { @@ -36,7 +43,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; RenderPlayer renderer = event.renderer; - boolean isManly = player.isPotionActive(HbmPotion.death.id); + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); for(int j = 0; j < 7; j++) { @@ -78,7 +85,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; RenderPlayer renderer = event.renderer; - boolean isManly = player.isPotionActive(HbmPotion.death.id); + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); if(isManly) { if(manlyModel == null) @@ -117,7 +124,7 @@ public class ModEventHandlerRenderer { EntityPlayer player = event.entityPlayer; //RenderPlayer renderer = event.renderer; - boolean isManly = player.isPotionActive(HbmPotion.death.id); + boolean isManly = PermaSyncHandler.boykissers.contains(player.getEntityId()); if(!isManly) return; @@ -318,4 +325,56 @@ public class ModEventHandlerRenderer { GL11.glPopMatrix(); } }*/ + + float renderSoot = 0; + + @SubscribeEvent + public void worldTick(WorldTickEvent event) { + + if(event.phase == event.phase.START && RadiationConfig.enableSootFog) { + + float step = 0.05F; + float soot = PermaSyncHandler.pollution[PollutionType.SOOT.ordinal()]; + + if(Math.abs(renderSoot - soot) < step) { + renderSoot = soot; + } else if(renderSoot < soot) { + renderSoot += step; + } else if(renderSoot > soot) { + renderSoot -= step; + } + } + } + + @SubscribeEvent(priority = EventPriority.LOW) + public void thickenFog(FogDensity event) { + float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); + if(soot > 0 && RadiationConfig.enableSootFog) { + + float farPlaneDistance = (float) (Minecraft.getMinecraft().gameSettings.renderDistanceChunks * 16); + float fogDist = farPlaneDistance / (1 + soot * 5F / (float) RadiationConfig.sootFogDivisor); + GL11.glFogf(GL11.GL_FOG_START, 0); + GL11.glFogf(GL11.GL_FOG_END, fogDist); + + if(GLContext.getCapabilities().GL_NV_fog_distance) { + GL11.glFogi(34138, 34139); + } + //GL11.glFogi(GL11.GL_FOG_MODE, GL11.GL_EXP); + //GL11.glFogf(GL11.GL_FOG_DENSITY, 2F); + event.setCanceled(true); + } + } + + @SubscribeEvent(priority = EventPriority.LOW) + public void tintFog(FogColors event) { + float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold); + float sootColor = 0.15F; + float sootReq = (float) RadiationConfig.sootFogDivisor; + if(soot > 0 && RadiationConfig.enableSootFog) { + float interp = Math.min(soot / sootReq, 1F); + event.red = event.red * (1 - interp) + sootColor * interp; + event.green = event.green * (1 - interp) + sootColor * interp; + event.blue = event.blue * (1 - interp) + sootColor * interp; + } + } } diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 29e4cc9de..c5bc758a2 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -4,6 +4,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; import com.hbm.config.VersatileConfig; import com.hbm.handler.nei.*; import com.hbm.items.ModItems; @@ -14,6 +16,8 @@ import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; import codechicken.nei.api.IHighlightHandler; import codechicken.nei.api.ItemInfo.Layout; +import codechicken.nei.recipe.GuiCraftingRecipe; +import codechicken.nei.recipe.GuiUsageRecipe; import codechicken.nei.recipe.ICraftingHandler; import codechicken.nei.recipe.IUsageHandler; import net.minecraft.entity.player.EntityPlayer; @@ -32,7 +36,6 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new CentrifugeRecipeHandler()); registerHandler(new GasCentrifugeRecipeHandler()); registerHandler(new BreederRecipeHandler()); - registerHandler(new CMBFurnaceRecipeHandler()); registerHandler(new CyclotronRecipeHandler()); registerHandler(new AssemblerRecipeHandler()); registerHandler(new RefineryRecipeHandler()); @@ -53,6 +56,8 @@ public class NEIConfig implements IConfigureNEI { registerHandler(new CrucibleSmeltingHandler()); registerHandler(new CrucibleAlloyingHandler()); registerHandler(new CrucibleCastingHandler()); + registerHandler(new ToolingHandler()); + registerHandler(new ConstructionHandler()); //universal boyes registerHandler(new ZirnoxRecipeHandler()); @@ -61,17 +66,18 @@ public class NEIConfig implements IConfigureNEI { } registerHandler(new LiquefactionHandler()); registerHandler(new SolidificationHandler()); + registerHandler(new CokingHandler()); registerHandler(new FractioningHandler()); registerHandler(new BoilingHandler()); registerHandler(new CombinationHandler()); registerHandler(new SawmillHandler()); registerHandler(new MixerHandler()); registerHandler(new OutgasserHandler()); + + for(MachineConfiguration conf : CustomMachineConfigJSON.niceList) registerHandlerBypass(new CustomMachineHandler(conf)); //fluids registerHandler(new FluidRecipeHandler()); - - //registerHandler(new ChunkyHandler()); //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); @@ -92,13 +98,13 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.transission_hatch)); API.hideItem(new ItemStack(ModItems.euphemium_kit)); API.hideItem(new ItemStack(ModItems.bobmazon_hidden)); + API.hideItem(new ItemStack(ModItems.book_lore)); //the broken nbt-less one shouldn't show up in normal play anyway if(MainRegistry.polaroidID != 11) { API.hideItem(new ItemStack(ModItems.book_secret)); API.hideItem(new ItemStack(ModItems.book_of_)); API.hideItem(new ItemStack(ModItems.burnt_bark)); API.hideItem(new ItemStack(ModItems.ams_core_thingy)); } - API.hideItem(new ItemStack(ModBlocks.dummy_block_assembler)); API.hideItem(new ItemStack(ModBlocks.dummy_block_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_block_ams_emitter)); @@ -107,7 +113,6 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.dummy_block_blast)); API.hideItem(new ItemStack(ModBlocks.dummy_block_uf6)); API.hideItem(new ItemStack(ModBlocks.dummy_block_puf6)); - API.hideItem(new ItemStack(ModBlocks.dummy_port_assembler)); API.hideItem(new ItemStack(ModBlocks.dummy_port_drill)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_base)); API.hideItem(new ItemStack(ModBlocks.dummy_port_ams_emitter)); @@ -154,6 +159,12 @@ public class NEIConfig implements IConfigureNEI { API.registerRecipeHandler((ICraftingHandler) o); API.registerUsageHandler((IUsageHandler) o); } + + /** Bypasses the utterly useless restriction of one registered handler per class */ + public static void registerHandlerBypass(Object o) { + GuiCraftingRecipe.craftinghandlers.add((ICraftingHandler) o); + GuiUsageRecipe.usagehandlers.add((IUsageHandler) o); + } @Override public String getName() { diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 88ff8c69f..3fc1955e0 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -48,6 +48,7 @@ public class ResourceManager { public static final IModelCustom crucible_heat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/crucible.obj")); public static final IModelCustom boiler = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler.obj")); public static final IModelCustom boiler_burst = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/boiler_burst.obj")); + public static final IModelCustom boiler_industrial = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/industrial_boiler.obj")); public static final IModelCustom hephaestus = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/hephaestus.obj")); //Furnaces @@ -76,9 +77,12 @@ public class ResourceManager { public static final IModelCustom catalytic_reformer = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/catalytic_reformer.obj")); public static final IModelCustom liquefactor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/liquefactor.obj")); public static final IModelCustom solidifier = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/solidifier.obj")); + public static final IModelCustom compressor = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/compressor.obj")); + public static final IModelCustom coker = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/coker.obj")); //Flare Stack public static final IModelCustom oilflare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/flare_stack.obj")); + public static final IModelCustom chimney_brick = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/chimney_brick.obj")); //Tank public static final IModelCustom fluidtank = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/fluidtank.obj")); @@ -127,7 +131,7 @@ public class ResourceManager { public static final IModelCustom assemfac = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/assemfac.obj")); //Chemplant - public static final IModelCustom chemplant_body = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj")); + public static final IModelCustom chemplant_body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_body.obj")); public static final IModelCustom chemplant_spinner = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_spinner.obj")); public static final IModelCustom chemplant_piston = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_piston.obj")); public static final IModelCustom chemplant_fluid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/chemplant_new_fluid.hmf")); @@ -190,6 +194,9 @@ public class ResourceManager { //Fan public static final IModelCustom fan = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fan.obj")); + //Piston Inserter + public static final IModelCustom piston_inserter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/piston_inserter.obj")); + //Sphere public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj")); public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj")); @@ -214,6 +221,7 @@ public class ResourceManager { //Watz public static final IModelCustom watz = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/reactors/watz.obj")); + public static final IModelCustom watz_pump = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/watz_pump.obj")); //FENSU public static final IModelCustom fensu = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/machines/fensu.obj")); @@ -284,7 +292,15 @@ public class ResourceManager { public static final IModelCustom blast_door_tooth = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_tooth.obj")); public static final IModelCustom blast_door_slider = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_slider.obj")); public static final IModelCustom blast_door_block = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blast_door_block.obj")); - + + //Sliding Blast Door + public static final ResourceLocation sliding_blast_door_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door.png"); + public static final ResourceLocation sliding_blast_door_variant1_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door_variant1.png"); + public static final ResourceLocation sliding_blast_door_variant2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/doors/sliding_blast_door_variant2.png"); + + public static AnimatedModel sliding_blast_door; + public static Animation sliding_blast_door_anim; + //Doors public static AnimatedModel transition_seal; public static Animation transition_seal_anim; @@ -299,6 +315,8 @@ public class ResourceManager { public static final IModelCustom ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/ufo.obj")); public static final IModelCustom mini_ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/mini_ufo.obj")); public static final IModelCustom siege_ufo = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/siege_ufo.obj")); + public static final IModelCustom glyphid = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/glyphid.obj")); + public static final IModelCustom drone = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/mobs/quadcopter.obj")); //ZIRNOX public static final IModelCustom zirnox = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/zirnox.obj")); @@ -379,6 +397,7 @@ public class ResourceManager { public static final ResourceLocation sawmill_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/sawmill.png"); public static final ResourceLocation crucible_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/crucible_heat.png"); public static final ResourceLocation boiler_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/boiler.png"); + public static final ResourceLocation boiler_industrial_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/industrial_boiler.png"); public static final ResourceLocation hephaestus_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/hephaestus.png"); //Furnaces @@ -400,9 +419,12 @@ public class ResourceManager { public static final ResourceLocation catalytic_reformer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/catalytic_reformer.png"); public static final ResourceLocation liquefactor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/liquefactor.png"); public static final ResourceLocation solidifier_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/solidifier.png"); + public static final ResourceLocation compressor_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/compressor.png"); + public static final ResourceLocation coker_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/coker.png"); //Flare Stack public static final ResourceLocation oilflare_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/flare_stack.png"); + public static final ResourceLocation chimney_brick_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/chimney_brick.png"); //Tank public static final ResourceLocation tank_tex = new ResourceLocation(RefStrings.MODID, "textures/models/tank.png"); @@ -535,6 +557,9 @@ public class ResourceManager { //Fan public static final ResourceLocation fan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fan.png"); + //Piston_Inserter + public static final ResourceLocation piston_inserter_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/piston_inserter.png"); + //Radgen public static final ResourceLocation radgen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radgen.png"); @@ -561,6 +586,7 @@ public class ResourceManager { //Watz public static final ResourceLocation watz_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz.png"); + public static final ResourceLocation watz_pump_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/watz_pump.png"); //FENSU public static final ResourceLocation fensu_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fensu.png"); @@ -646,6 +672,14 @@ public class ResourceManager { public static final ResourceLocation iou = new ResourceLocation(RefStrings.MODID, "textures/entity/iou.png"); public static final ResourceLocation spider_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/blockspider.png"); public static final ResourceLocation ufo_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/ufo.png"); + public static final ResourceLocation glyphid_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid.png"); + public static final ResourceLocation glyphid_brawler_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_brawler.png"); + public static final ResourceLocation glyphid_behemoth_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_behemoth.png"); + public static final ResourceLocation glyphid_brenda_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_brenda.png"); + public static final ResourceLocation glyphid_bombardier_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_bombardier.png"); + public static final ResourceLocation glyphid_blaster_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_blaster.png"); + public static final ResourceLocation glyphid_scout_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_scout.png"); + public static final ResourceLocation glyphid_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/glyphid_nuclear.png"); //ZIRNOX public static final ResourceLocation zirnox_tex = new ResourceLocation(RefStrings.MODID, "textures/models/zirnox.png"); @@ -679,6 +713,7 @@ public class ResourceManager { public static final IModelCustom gavel = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/gavel.obj")); public static final IModelCustom crucible = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/crucible.obj")); public static final IModelCustom chainsaw = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/chainsaw.obj"), false); + public static final IModelCustom boltgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/boltgun.obj")); public static final IModelCustom hk69 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/hk69.obj")); public static final IModelCustom deagle = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/deagle.obj")); @@ -703,6 +738,7 @@ public class ResourceManager { public static final IModelCustom rem700sat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/rem700sat.obj")); public static final IModelCustom cursed_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cursed.obj")); public static final IModelCustom detonator_laser = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/detonator_laser.obj")); + public static final IModelCustom remington = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/remington.obj")); public static final IModelCustom spas_12 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/spas-12.obj")); public static final IModelCustom nightmare_dark = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/nightmare_dark.obj")); public static final IModelCustom glass_cannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/glass_cannon.obj")); @@ -712,6 +748,11 @@ public class ResourceManager { public static final IModelCustom novac_scoped = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/novac_scoped.obj")); public static final IModelCustom m2 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/m2_browning.obj")).asDisplayList(); //large fella should be a display list public static final IModelCustom lunatic_sniper = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lunatic_sniper.obj")).asDisplayList(); + public static final IModelCustom tau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/tau.obj")); + public static final IModelCustom benelli = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/benelli_new.obj")).asDisplayList(); + public static final IModelCustom coilgun = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/coilgun.obj")).asDisplayList(); + public static final IModelCustom cryocannon = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cryo_cannon.obj")).asDisplayList(); + public static final IModelCustom uac_pistol = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/UAC pistol.obj")).asDisplayList(); public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -734,6 +775,7 @@ public class ResourceManager { public static final IModelCustom armor_wings = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/murk.obj")); public static final IModelCustom armor_solstice = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/solstice.obj")); public static final IModelCustom player_manly_af = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/armor/player_fem.obj")); + public static final IModelCustom armor_envsuit = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/envsuit.obj")); ////Texture Items @@ -752,6 +794,7 @@ public class ResourceManager { public static final ResourceLocation crucible_guard = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/crucible_guard.png"); public static final ResourceLocation crucible_blade = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/crucible_blade.png"); public static final ResourceLocation chainsaw_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/chainsaw.png"); + public static final ResourceLocation boltgun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/boltgun.png"); public static final ResourceLocation hk69_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/hk69.png"); public static final ResourceLocation deagle_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/deagle.png"); @@ -787,6 +830,7 @@ public class ResourceManager { public static final ResourceLocation rem700poly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/rem700poly.png"); public static final ResourceLocation rem700sat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/rem700sat.png"); public static final ResourceLocation detonator_laser_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/detonator_laser.png"); + public static final ResourceLocation remington_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/remington.png"); public static final ResourceLocation spas_12_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/spas-12.png"); public static final ResourceLocation glass_cannon_panel_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/glass_cannon_panel.png"); public static final ResourceLocation bio_revolver_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/bio_revolver.png"); @@ -799,6 +843,11 @@ public class ResourceManager { public static final ResourceLocation red_key_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/red_key.png"); public static final ResourceLocation m2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/m2_browning.png"); public static final ResourceLocation lunatic_sniper_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lunatic_sniper.png"); + public static final ResourceLocation tau_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/tau.png"); + public static final ResourceLocation benelli_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/benelli_tex.png"); + public static final ResourceLocation coilgun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/coilgun.png"); + public static final ResourceLocation cryocannon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon.png"); + public static final ResourceLocation uac_pistol_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/pistol_texture.png"); public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -825,6 +874,12 @@ public class ResourceManager { public static final ResourceLocation bj_jetpack = new ResourceLocation(RefStrings.MODID, "textures/armor/bj_jetpack.png"); public static final ResourceLocation bj_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/bj_arm.png"); + public static final ResourceLocation envsuit_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_helmet.png"); + public static final ResourceLocation envsuit_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_leg.png"); + public static final ResourceLocation envsuit_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_chest.png"); + public static final ResourceLocation envsuit_arm = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_arm.png"); + public static final ResourceLocation envsuit_tail = new ResourceLocation(RefStrings.MODID, "textures/armor/envsuit_tail.png"); + public static final ResourceLocation hev_helmet = new ResourceLocation(RefStrings.MODID, "textures/armor/hev_helmet.png"); public static final ResourceLocation hev_leg = new ResourceLocation(RefStrings.MODID, "textures/armor/hev_leg.png"); public static final ResourceLocation hev_chest = new ResourceLocation(RefStrings.MODID, "textures/armor/hev_chest.png"); @@ -995,6 +1050,9 @@ public class ResourceManager { public static final IModelCustom cart = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart.obj")); public static final IModelCustom cart_destroyer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_destroyer.obj")); public static final IModelCustom cart_powder = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/cart_powder.obj")); + public static final IModelCustom train_cargo_tram = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram.obj")); + public static final IModelCustom train_cargo_tram_trailer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/vehicles/tram_trailer.obj")); + public static final IModelCustom tunnel_bore = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/vehicles/tunnel_bore.obj")); ////Texture Entities @@ -1268,6 +1326,8 @@ public class ResourceManager { public static final ResourceLocation cart_powder_tex = new ResourceLocation(RefStrings.MODID, "textures/blocks/block_gunpowder.png"); public static final ResourceLocation cart_semtex_side = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_side.png"); public static final ResourceLocation cart_semtex_top = new ResourceLocation(RefStrings.MODID, "textures/blocks/semtex_bottom.png"); + public static final ResourceLocation train_tram = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram.png"); + public static final ResourceLocation tram_trailer = new ResourceLocation(RefStrings.MODID, "textures/models/trains/tram_trailer.png"); //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); @@ -1307,6 +1367,13 @@ public class ResourceManager { public static final IModelCustom pipe_neo = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/pipe_neo.obj")); public static final IModelCustom difurnace_extension = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/difurnace_extension.obj")); public static final IModelCustom splitter = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/splitter.obj")); + public static final IModelCustom rail_narrow_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow.obj")); + public static final IModelCustom rail_narrow_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_narrow_bend.obj")); + public static final IModelCustom rail_standard_straight = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard.obj")); + public static final IModelCustom rail_standard_curve = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_bend.obj")); + public static final IModelCustom rail_standard_ramp = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_ramp.obj")); + public static final IModelCustom rail_standard_buffer = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/rail_standard_buffer.obj")); + public static final IModelCustom capacitor = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/capacitor.obj")); public static final IModelCustom charge_dynamite = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_dynamite.obj")); public static final IModelCustom charge_c4 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/charge_c4.obj")); @@ -1328,5 +1395,8 @@ public class ResourceManager { public static void loadAnimatedModels(){ transition_seal = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae"), true); transition_seal_anim = ColladaLoader.loadAnim(24040, new ResourceLocation(RefStrings.MODID, "models/doors/seal.dae")); + + sliding_blast_door = ColladaLoader.load(new ResourceLocation(RefStrings.MODID, "models/doors/sliding_blast_door.dae")); + sliding_blast_door_anim = ColladaLoader.loadAnim(1200, new ResourceLocation(RefStrings.MODID, "models/doors/sliding_blast_door.dae")); } } diff --git a/src/main/java/com/hbm/main/ServerProxy.java b/src/main/java/com/hbm/main/ServerProxy.java index d479b8790..7695b401f 100644 --- a/src/main/java/com/hbm/main/ServerProxy.java +++ b/src/main/java/com/hbm/main/ServerProxy.java @@ -24,8 +24,9 @@ public class ServerProxy { public static final int ID_HUD = 5; public static final int ID_DETONATOR = 6; public static final int ID_FLUID_ID = 7; - public static final int ID_GUN_MODE = 8; - public static final int ID_GAS_HAZARD = 9; + public static final int ID_TOOLABILITY = 8; + public static final int ID_GUN_MODE = 9; + public static final int ID_GAS_HAZARD = 10; public void registerRenderInfo() { } public void registerTileEntitySpecialRenderer() { } @@ -41,7 +42,8 @@ public class ServerProxy { public void registerMissileItems() { } - public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float pitch) { return null; } + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch) { return null; } + public AudioWrapper getLoopedSound(String sound, float x, float y, float z, float volume, float range, float pitch, int keepAlive) { return null; } public AudioWrapper getLoopedSoundStartStop(World world, String sound, String start, String stop, float x, float y, float z, float volume, float pitch) { return null; } public void playSound(String sound, Object data) { } @@ -82,4 +84,6 @@ public class ServerProxy { public boolean getImpact(World world) { return TomSaveData.forWorld(world).impact; } + + public void playSoundClient(double x, double y, double z, String sound, float volume, float pitch) { } } \ No newline at end of file diff --git a/src/main/java/com/hbm/packet/AnvilCraftPacket.java b/src/main/java/com/hbm/packet/AnvilCraftPacket.java index bc1719702..d8b1049a4 100644 --- a/src/main/java/com/hbm/packet/AnvilCraftPacket.java +++ b/src/main/java/com/hbm/packet/AnvilCraftPacket.java @@ -1,12 +1,9 @@ package com.hbm.packet; -import com.hbm.blocks.ModBlocks; import com.hbm.inventory.container.ContainerAnvil; import com.hbm.inventory.recipes.anvil.AnvilRecipes; import com.hbm.inventory.recipes.anvil.AnvilRecipes.AnvilConstructionRecipe; -import com.hbm.items.ItemAmmoEnums; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; +import com.hbm.util.AchievementHandler; import com.hbm.util.InventoryUtil; import cpw.mods.fml.common.network.simpleimpl.IMessage; @@ -14,7 +11,6 @@ import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; import io.netty.buffer.ByteBuf; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; public class AnvilCraftPacket implements IMessage { @@ -65,15 +61,7 @@ public class AnvilCraftPacket implements IMessage { if(InventoryUtil.doesPlayerHaveAStacks(p, recipe.input, true)) { InventoryUtil.giveChanceStacksToPlayer(p, recipe.output); - - if(recipe.output.get(0).stack.getItem() == Item.getItemFromBlock(ModBlocks.machine_difurnace_off)) - p.triggerAchievement(MainRegistry.achBlastFurnace); - if(recipe.output.get(0).stack.getItem() == Item.getItemFromBlock(ModBlocks.machine_assembler)) - p.triggerAchievement(MainRegistry.achAssembly); - if(recipe.output.get(0).stack.getItem() == ModItems.billet_pu_mix) - p.triggerAchievement(MainRegistry.achChicagoPile); - if(recipe.output.get(0).stack.getItem() == ModItems.ammo_4gauge && recipe.output.get(0).stack.getItemDamage() == ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()) - p.triggerAchievement(MainRegistry.achWitchtaunter); + AchievementHandler.fire(p, recipe.output.get(0).stack); } else { break; diff --git a/src/main/java/com/hbm/packet/NBTControlPacket.java b/src/main/java/com/hbm/packet/NBTControlPacket.java index 8ce47aa3c..226b3eae1 100644 --- a/src/main/java/com/hbm/packet/NBTControlPacket.java +++ b/src/main/java/com/hbm/packet/NBTControlPacket.java @@ -32,7 +32,6 @@ public class NBTControlPacket implements IMessage { try { buffer.writeNBTTagCompoundToBuffer(nbt); - } catch (IOException e) { e.printStackTrace(); } @@ -45,9 +44,8 @@ public class NBTControlPacket implements IMessage { y = buf.readInt(); z = buf.readInt(); - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } + if(buffer == null) buffer = new PacketBuffer(Unpooled.buffer()); + buffer.writeBytes(buf); } @@ -58,9 +56,8 @@ public class NBTControlPacket implements IMessage { buf.writeInt(y); buf.writeInt(z); - if (buffer == null) { - buffer = new PacketBuffer(Unpooled.buffer()); - } + if (buffer == null) buffer = new PacketBuffer(Unpooled.buffer()); + buf.writeBytes(buffer); } @@ -85,8 +82,10 @@ public class NBTControlPacket implements IMessage { IControlReceiver tile = (IControlReceiver)te; - if(tile.hasPermission(p)) + if(tile.hasPermission(p)) { + tile.receiveControl(p, nbt); tile.receiveControl(nbt); + } } } diff --git a/src/main/java/com/hbm/packet/PermaSyncHandler.java b/src/main/java/com/hbm/packet/PermaSyncHandler.java index a3db60ecf..bcd566e72 100644 --- a/src/main/java/com/hbm/packet/PermaSyncHandler.java +++ b/src/main/java/com/hbm/packet/PermaSyncHandler.java @@ -1,6 +1,14 @@ package com.hbm.packet; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + import com.hbm.handler.ImpactWorldHandler; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionData; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.potion.HbmPotion; import com.hbm.saveddata.TomSaveData; import io.netty.buffer.ByteBuf; @@ -14,6 +22,9 @@ import net.minecraft.world.World; * @author hbm */ public class PermaSyncHandler { + + public static HashSet boykissers = new HashSet(); + public static float[] pollution = new float[PollutionType.values().length]; public static void writePacket(ByteBuf buf, World world, EntityPlayerMP player) { @@ -23,6 +34,26 @@ public class PermaSyncHandler { buf.writeFloat(data.dust); buf.writeBoolean(data.impact); /// TOM IMPACT DATA /// + + /// SHITTY MEMES /// + List ids = new ArrayList(); + for(Object o : world.playerEntities) { + EntityPlayer p = (EntityPlayer) o; + if(p.isPotionActive(HbmPotion.death.id)) { + ids.add(p.getEntityId()); + } + } + buf.writeShort((short) ids.size()); + for(Integer i : ids) buf.writeInt(i); + /// SHITTY MEMES /// + + /// POLLUTION /// + PollutionData pollution = PollutionHandler.getPollutionData(world, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)); + if(pollution == null) pollution = new PollutionData(); + for(int i = 0; i < PollutionType.values().length; i++) { + buf.writeFloat(pollution.pollution[i]); + } + /// POLLUTION /// } public static void readPacket(ByteBuf buf, World world, EntityPlayer player) { @@ -33,5 +64,17 @@ public class PermaSyncHandler { ImpactWorldHandler.dust = buf.readFloat(); ImpactWorldHandler.impact = buf.readBoolean(); /// TOM IMPACT DATA /// + + /// SHITTY MEMES /// + boykissers.clear(); + int ids = buf.readShort(); + for(int i = 0; i < ids; i++) boykissers.add(buf.readInt()); + /// SHITTY MEMES /// + + /// POLLUTION /// + for(int i = 0; i < PollutionType.values().length; i++) { + pollution[i] = buf.readFloat(); + } + /// POLLUTION /// } } diff --git a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java b/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java index 9ffa77c65..7321aa015 100644 --- a/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java +++ b/src/main/java/com/hbm/packet/TEDoorAnimationPacket.java @@ -15,20 +15,22 @@ public class TEDoorAnimationPacket implements IMessage { public int x, y, z; public byte state; + public byte skinIndex; public byte texture; public TEDoorAnimationPacket() { } public TEDoorAnimationPacket(int x, int y, int z, byte state) { - this(x, y, z, state, (byte) -1); + this(x, y, z, state, (byte) 0, (byte) -1); } - public TEDoorAnimationPacket(int x, int y, int z, byte state, byte tex) { + public TEDoorAnimationPacket(int x, int y, int z, byte state, byte skinIndex, byte tex) { this.x = x; this.y = y; this.z = z; this.state = state; + this.skinIndex = skinIndex; this.texture = tex; } @@ -38,6 +40,7 @@ public class TEDoorAnimationPacket implements IMessage { y = buf.readInt(); z = buf.readInt(); state = buf.readByte(); + skinIndex = buf.readByte(); if(buf.readableBytes() == 1){ texture = buf.readByte(); } @@ -49,6 +52,7 @@ public class TEDoorAnimationPacket implements IMessage { buf.writeInt(y); buf.writeInt(z); buf.writeByte(state); + buf.writeByte(skinIndex); if(texture != -1){ buf.writeByte(texture); } @@ -63,6 +67,7 @@ public class TEDoorAnimationPacket implements IMessage { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); if(te instanceof IAnimatedDoor){ ((IAnimatedDoor) te).handleNewState(m.state); + ((IAnimatedDoor) te).setSkinIndex(m.skinIndex); ((IAnimatedDoor) te).setTextureState(m.texture); } diff --git a/src/main/java/com/hbm/packet/TEFluidPacket.java b/src/main/java/com/hbm/packet/TEFluidPacket.java index 078729c9f..49338eab5 100644 --- a/src/main/java/com/hbm/packet/TEFluidPacket.java +++ b/src/main/java/com/hbm/packet/TEFluidPacket.java @@ -11,6 +11,7 @@ import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; +@Deprecated public class TEFluidPacket implements IMessage { int x; diff --git a/src/main/java/com/hbm/particle/psys/engine/PSysFX.java b/src/main/java/com/hbm/particle/psys/engine/PSysFX.java index 4abb6412c..685f17835 100644 --- a/src/main/java/com/hbm/particle/psys/engine/PSysFX.java +++ b/src/main/java/com/hbm/particle/psys/engine/PSysFX.java @@ -2,6 +2,7 @@ package com.hbm.particle.psys.engine; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; /** @@ -10,7 +11,7 @@ import net.minecraft.world.World; * @author hbm */ @SideOnly(Side.CLIENT) -public class PSysFX { +public abstract class PSysFX { public World world; public double posX; @@ -19,14 +20,62 @@ public class PSysFX { public double prevPosX; public double prevPosY; public double prevPosZ; - public double motionX; - public double motionY; - public double motionZ; public static double interpPosX; public static double interpPosY; public static double interpPosZ; - - public PSysFX() { + public AxisAlignedBB boundingBox; + public int particleAge; + public int particleMaxAge; + public boolean isExpired = false; + public boolean shouldExpireWhenUnloaded = true; + public boolean isUnloaded = false; + + public PSysFX(World world, double x, double y, double z) { + this.world = world; + this.posX = x; + this.posY = y; + this.posZ = z; + } + + public void updateParticle() { + this.prevPosX = posX; + this.prevPosY = posY; + this.prevPosZ = posZ; + this.isUnloaded = !world.getChunkProvider().chunkExists((int) Math.floor(posX) >> 4, (int) Math.floor(posZ) >> 4); + this.particleAge++; + + if(this.particleAge >= this.particleMaxAge) { + this.expire(); + } + + if(this.shouldExpireWhenUnloaded && this.isUnloaded) { + this.expire(); + } + } + + public abstract void renderParticle(); + + public AxisAlignedBB getBoundingBox() { + return this.boundingBox; + } + + public void setBoundingBox(AxisAlignedBB bb) { + this.boundingBox = bb; + } + + protected void setPosToAABB() { + AxisAlignedBB aabb = this.getBoundingBox(); + this.posX = (aabb.minX + aabb.maxX) / 2.0D; + this.posY = aabb.minY; + this.posZ = (aabb.minZ + aabb.maxZ) / 2.0D; + } + + public void expire() { + this.isExpired = true; + } + + public void setExpireOnUnload(boolean expire) { + this.shouldExpireWhenUnloaded = expire; } } diff --git a/src/main/java/com/hbm/particle/psys/engine/PSysFXMoving.java b/src/main/java/com/hbm/particle/psys/engine/PSysFXMoving.java new file mode 100644 index 000000000..9922b3575 --- /dev/null +++ b/src/main/java/com/hbm/particle/psys/engine/PSysFXMoving.java @@ -0,0 +1,87 @@ +package com.hbm.particle.psys.engine; + +import java.util.List; + +import com.hbm.lib.Library; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public abstract class PSysFXMoving extends PSysFX { + + public double motionX; + public double motionY; + public double motionZ; + boolean noClip = false; + /* using the forgedirection's ordinal as an index, this tells us what side of a block the particle has collided with */ + public boolean collisionData[] = new boolean[6]; + + public PSysFXMoving(World world, double x, double y, double z, double mX, double mY, double mZ) { + super(world, x, y, z); + this.motionX = mX; + this.motionY = mY; + this.motionZ = mZ; + } + + public double getParticleGravity() { + return 0.04D; + } + + public double getParticleDrag() { + return 0.98D; + } + + public void updateParticle() { + super.updateParticle(); + + if(!this.isUnloaded) { + this.motionX -= this.getParticleGravity(); + this.motionX *= this.getParticleDrag(); + this.motionY *= this.getParticleDrag(); + this.motionZ *= this.getParticleDrag(); + + this.move(motionX, motionY, motionZ); + } + } + + public void move(double x, double y, double z) { + + double x0 = x; + double y0 = y; + double z0 = z; + + this.collisionData = new boolean[6]; + + if(!noClip) { + List list = this.world.getCollidingBoundingBoxes(null, this.getBoundingBox().expand(x, y, z)); + + for(AxisAlignedBB aabb : list) y = aabb.calculateYOffset(this.getBoundingBox(), y); + this.setBoundingBox(this.getBoundingBox().offset(0.0D, y, 0.0D)); + + for(AxisAlignedBB aabb : list) x = aabb.calculateXOffset(this.getBoundingBox(), x); + this.setBoundingBox(this.getBoundingBox().offset(x, 0.0D, 0.0D)); + + for(AxisAlignedBB aabb : list) z = aabb.calculateZOffset(this.getBoundingBox(), z); + this.setBoundingBox(this.getBoundingBox().offset(0.0D, 0.0D, z)); + + } else { + this.setBoundingBox(this.getBoundingBox().offset(x, y, z)); + } + + this.setPosToAABB(); + + if(x0 != x && x > 0) this.collisionData[Library.NEG_X.ordinal()] = true; + if(x0 != x && x < 0) this.collisionData[Library.POS_X.ordinal()] = true; + if(y0 != y && y > 0) this.collisionData[Library.NEG_Y.ordinal()] = true; + if(y0 != y && y < 0) this.collisionData[Library.POS_Y.ordinal()] = true; + if(z0 != z && z > 0) this.collisionData[Library.NEG_Z.ordinal()] = true; + if(z0 != z && z < 0) this.collisionData[Library.POS_Z.ordinal()] = true; + + if(x0 != x) this.motionX = 0.0D; + if(y0 != y) this.motionY = 0.0D; + if(z0 != z) this.motionZ = 0.0D; + } +} diff --git a/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java b/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java index 6c46b7b19..8f2742ad3 100644 --- a/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java +++ b/src/main/java/com/hbm/particle/psys/engine/ParticleEngine.java @@ -29,17 +29,17 @@ public class ParticleEngine { } public void updateParticles() { - + for(FXLayer layer : layers) layer.updateLayer(); } public void renderParticles(float interp) { - + for(FXLayer layer : layers) layer.renderLayer(interp); } public static class FXLayer { protected ResourceLocation batchTexture; - protected List particles; + protected List particles; public FXLayer() { } @@ -51,7 +51,7 @@ public class ParticleEngine { } - protected void renderLayer() { + protected void renderLayer(float interp) { } } diff --git a/src/main/java/com/hbm/potion/HbmPotion.java b/src/main/java/com/hbm/potion/HbmPotion.java index 084826705..a7688f2da 100644 --- a/src/main/java/com/hbm/potion/HbmPotion.java +++ b/src/main/java/com/hbm/potion/HbmPotion.java @@ -7,7 +7,7 @@ import com.hbm.blocks.bomb.BlockTaint; import com.hbm.config.GeneralConfig; import com.hbm.config.PotionConfig; import com.hbm.entity.mob.EntityTaintCrab; -import com.hbm.entity.mob.EntityTaintedCreeper; +import com.hbm.entity.mob.EntityCreeperTainted; import com.hbm.explosion.ExplosionLarge; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; @@ -47,10 +47,10 @@ public class HbmPotion extends Potion { } public static void init() { - taint = registerPotion(PotionConfig.taintID, true, 8388736, "potion.hbm_taint", 0, 0); - radiation = registerPotion(PotionConfig.radiationID, true, 8700200, "potion.hbm_radiation", 1, 0); - bang = registerPotion(PotionConfig.bangID, true, 1118481, "potion.hbm_bang", 3, 0); - mutation = registerPotion(PotionConfig.mutationID, false, 8388736, "potion.hbm_mutation", 2, 0); + taint = registerPotion(PotionConfig.taintID, true, 0x800080, "potion.hbm_taint", 0, 0); + radiation = registerPotion(PotionConfig.radiationID, true, 0x84C128, "potion.hbm_radiation", 1, 0); + bang = registerPotion(PotionConfig.bangID, true, 0x111111, "potion.hbm_bang", 3, 0); + mutation = registerPotion(PotionConfig.mutationID, false, 0x800080, "potion.hbm_mutation", 2, 0); radx = registerPotion(PotionConfig.radxID, false, 0xBB4B00, "potion.hbm_radx", 5, 0); lead = registerPotion(PotionConfig.leadID, true, 0x767682, "potion.hbm_lead", 6, 0); radaway = registerPotion(PotionConfig.radawayID, false, 0xBB4B00, "potion.hbm_radaway", 7, 0); @@ -58,7 +58,7 @@ public class HbmPotion extends Potion { phosphorus = registerPotion(PotionConfig.phosphorusID, true, 0xFFFF00, "potion.hbm_phosphorus", 1, 1); stability = registerPotion(PotionConfig.stabilityID, false, 0xD0D0D0, "potion.hbm_stability", 2, 1); potionsickness = registerPotion(PotionConfig.potionsicknessID, false, 0xff8080, "potion.hbm_potionsickness", 3, 1); - death = registerPotion(PotionConfig.deathID, false, 1118481, "potion.hbm_death", 4, 1); + death = registerPotion(PotionConfig.deathID, false, 0x111111, "potion.hbm_death", 4, 1); } public static HbmPotion registerPotion(int id, boolean isBad, int color, String name, int x, int y) { @@ -99,10 +99,12 @@ public class HbmPotion extends Potion { } public void performEffect(EntityLivingBase entity, int level) { + + if(entity.worldObj.isRemote) return; if(this == taint) { - if(!(entity instanceof EntityTaintedCreeper) && !(entity instanceof EntityTaintCrab) && entity.worldObj.rand.nextInt(40) == 0) + 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) { @@ -123,7 +125,6 @@ public class HbmPotion extends Potion { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, (float)(level + 1F) * 0.05F); } if(this == radaway) { - HbmLivingProps.incrementRadiation(entity, -(level + 1)); } @@ -145,22 +146,9 @@ public class HbmPotion extends Potion { } } if(this == lead) { - entity.attackEntityFrom(ModDamageSource.lead, (level + 1)); } - /*if(this == telekinesis) { - - int remaining = entity.getActivePotionEffect(this).getDuration(); - - if(remaining > 1) { - entity.motionY = 0.5; - } else { - entity.motionY = -2; - entity.fallDistance = 50; - } - }*/ - if(this == phosphorus && !entity.worldObj.isRemote) { - + if(this == phosphorus) { entity.setFire(1); } } diff --git a/src/main/java/com/hbm/render/block/RenderBoxDuct.java b/src/main/java/com/hbm/render/block/RenderBoxDuct.java index eb0d53002..c8c8f8915 100644 --- a/src/main/java/com/hbm/render/block/RenderBoxDuct.java +++ b/src/main/java/com/hbm/render/block/RenderBoxDuct.java @@ -23,7 +23,7 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { Tessellator tessellator = Tessellator.instance; FluidDuctBox duct = (FluidDuctBox) block; - int type = metadata % 3; + int type = duct.rectify(metadata); float lower = 0.125F; float upper = 0.875F; @@ -65,7 +65,23 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); int meta = world.getBlockMetadata(x, y, z); + boolean pX = false; + boolean nX = false; + boolean pY = false; + boolean nY = false; + boolean pZ = false; + boolean nZ = false; + FluidDuctBox.cachedColor = 0xffffff; + FluidDuctBox duct = (FluidDuctBox) block; + + pX = duct.canConnectTo(world, x, y, z, Library.POS_X, te); + nX = duct.canConnectTo(world, x, y, z, Library.NEG_X, te); + pY = duct.canConnectTo(world, x, y, z, Library.POS_Y, te); + nY = duct.canConnectTo(world, x, y, z, Library.NEG_Y, te); + pZ = duct.canConnectTo(world, x, y, z, Library.POS_Z, te); + nZ = duct.canConnectTo(world, x, y, z, Library.NEG_Z, te); + if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; type = pipe.getType(); @@ -74,13 +90,6 @@ public class RenderBoxDuct implements ISimpleBlockRenderingHandler { } } - boolean pX = Library.canConnectFluid(world, x + 1, y, z, Library.POS_X, type); - boolean nX = Library.canConnectFluid(world, x - 1, y, z, Library.NEG_X, type); - boolean pY = Library.canConnectFluid(world, x, y + 1, z, Library.POS_Y, type); - boolean nY = Library.canConnectFluid(world, x, y - 1, z, Library.NEG_Y, type); - boolean pZ = Library.canConnectFluid(world, x, y, z + 1, Library.POS_Z, type); - boolean nZ = Library.canConnectFluid(world, x, y, z - 1, Library.NEG_Z, type); - int mask = 0 + (pX ? 32 : 0) + (nX ? 16 : 0) + (pY ? 8 : 0) + (nY ? 4 : 0) + (pZ ? 2 : 0) + (nZ ? 1 : 0); int count = 0 + (pX ? 1 : 0) + (nX ? 1 : 0) + (pY ? 1 : 0) + (nY ? 1 : 0) + (pZ ? 1 : 0) + (nZ ? 1 : 0); diff --git a/src/main/java/com/hbm/render/block/RenderCapacitor.java b/src/main/java/com/hbm/render/block/RenderCapacitor.java new file mode 100644 index 000000000..227bf140c --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderCapacitor.java @@ -0,0 +1,89 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.machine.MachineCapacitor; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderCapacitor implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + tessellator.setColorOpaque_F(1, 1, 1); + + MachineCapacitor capacitor = (MachineCapacitor) block; + + tessellator.startDrawingQuads(); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Top", capacitor.iconTop, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Side", capacitor.iconSide, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Bottom", capacitor.iconBottom, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerTop", capacitor.iconInnerTop, tessellator, 0, false); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerSide", capacitor.iconInnerSide, tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + MachineCapacitor capacitor = (MachineCapacitor) block; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float flip = 0; + float rotation = 0; + + int meta = world.getBlockMetadata(x, y, z); + + if(meta == 0) + flip = (float)Math.PI; + + if(meta == 2) + rotation = 90F / 180F * (float) Math.PI; + + if(meta == 3) + rotation = 270F / 180F * (float) Math.PI; + + if(meta == 4) + rotation = 180F / 180F * (float)Math.PI; + + if(rotation != 0F || meta == 5) + flip = (float)Math.PI * 0.5F; + + tessellator.addTranslation(x + 0.5F, y + 0.5F, z + 0.5F); + + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Top", capacitor.iconTop, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Side", capacitor.iconSide, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "Bottom", capacitor.iconBottom, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerTop", capacitor.iconInnerTop, tessellator, rotation, flip, true); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.capacitor, "InnerSide", capacitor.iconInnerSide, tessellator, rotation, flip, true); + + tessellator.addTranslation(-x - 0.5F, -y - 0.5F, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return MachineCapacitor.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java b/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java index 743ba6306..1e5b52354 100644 --- a/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java +++ b/src/main/java/com/hbm/render/block/RenderFoundryOutlet.java @@ -10,6 +10,7 @@ import net.minecraft.block.Block; import net.minecraft.client.renderer.EntityRenderer; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { @@ -82,7 +83,8 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { FoundryOutlet outlet = (FoundryOutlet) block; int meta = world.getBlockMetadata(x, y, z); - TileEntityFoundryOutlet tile = (TileEntityFoundryOutlet) world.getTileEntity(x, y, z); + TileEntity tile = world.getTileEntity(x, y, z); + TileEntityFoundryOutlet tileOutlet = tile instanceof TileEntityFoundryOutlet ? (TileEntityFoundryOutlet) tile : null; int brightness = block.getMixedBrightnessForBlock(world, x, y, z); tessellator.setBrightness(brightness); @@ -105,13 +107,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, x, y, z, outlet.iconFront); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.96875D, 0.0625, 0.375D, 0.96875D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.9375D, 0.0625, 0.375D, 0.9375D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconLock); renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock); @@ -136,13 +138,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, x, y, z, outlet.iconFront); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.03125D, 0.0625, 0.375D, 0.03125D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceXNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.0625D, 0.0625, 0.375D, 0.0625D, top, 0.625D); renderer.renderFaceXPos(block, x, y, z, outlet.iconLock); renderer.renderFaceXNeg(block, x, y, z, outlet.iconLock); @@ -167,13 +169,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceZPos(block, x, y, z, outlet.iconFront); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.375D, 0.0625, 0.96875D, 0.625D, top, 0.96875D); renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.375D, 0.0625, 0.9375D, 0.625D, top, 0.9375D); renderer.renderFaceZPos(block, x, y, z, outlet.iconLock); renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock); @@ -198,13 +200,13 @@ public class RenderFoundryOutlet implements ISimpleBlockRenderingHandler { renderer.renderFaceZPos(block, x, y, z, outlet.iconFront); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFront); - if(tile.filter != null) { + if(tileOutlet != null && tileOutlet.filter != null) { renderer.setRenderBounds(0.375D, 0.0625D, 0.03125, 0.625D, top, 0.03125D); renderer.renderFaceZPos(block, x, y, z, outlet.iconFilter); renderer.renderFaceZNeg(block, x, y, z, outlet.iconFilter); } - if(tile.isClosed()) { + if(tileOutlet != null && tileOutlet.isClosed()) { renderer.setRenderBounds(0.375D, 0.0625, 0.0625D, 0.625D, top, 0.0625D); renderer.renderFaceZPos(block, x, y, z, outlet.iconLock); renderer.renderFaceZNeg(block, x, y, z, outlet.iconLock); diff --git a/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java b/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java new file mode 100644 index 000000000..0cb029690 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderNarrowCurveRail.java @@ -0,0 +1,69 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailNarrowCurve; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderNarrowCurveRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glScaled(0.2, 0.2, 0.2); + GL11.glTranslated(2.5, -0.0625, -1.5); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 12) + rotation = 90F / 180F * (float) Math.PI; + if(meta == 14) + rotation = 180F / 180F * (float) Math.PI; + if(meta == 13) + rotation = 270F / 180F * (float) Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_curve, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailNarrowCurve.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java b/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java new file mode 100644 index 000000000..3f2c40c78 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderNarrowStraightRail.java @@ -0,0 +1,62 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailNarrowStraight; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderNarrowStraightRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + int meta = world.getBlockMetadata(x, y, z); + + float rotation = 0; + + if(meta == 2 || meta == 3 || meta == 12 || meta == 13) + rotation = 90F / 180F * (float) Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_narrow_straight, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailNarrowStraight.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderSplitter.java b/src/main/java/com/hbm/render/block/RenderSplitter.java index 3b85f3e18..9ec29dfe4 100644 --- a/src/main/java/com/hbm/render/block/RenderSplitter.java +++ b/src/main/java/com/hbm/render/block/RenderSplitter.java @@ -2,7 +2,6 @@ package com.hbm.render.block; import org.lwjgl.opengl.GL11; -import com.hbm.blocks.ModBlocks; import com.hbm.blocks.network.CraneSplitter; import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; @@ -11,7 +10,6 @@ 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; import net.minecraftforge.client.model.obj.WavefrontObject; @@ -28,11 +26,11 @@ public class RenderSplitter implements ISimpleBlockRenderingHandler { GL11.glRotated(-90, 0, 1, 0); GL11.glTranslatef(0F, -0.5F, 0.5F); tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.splitter, ModBlocks.block_steel.getIcon(0, 0), tessellator, 0, false); + drawSplitter(tessellator, block, true, 0, false); tessellator.draw(); GL11.glTranslatef(0F, 0F, -1F); tessellator.startDrawingQuads(); - ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.splitter, ModBlocks.block_steel.getIcon(0, 0), tessellator, 0, false); + drawSplitter(tessellator, block, false, 0, false); tessellator.draw(); GL11.glPopMatrix(); @@ -54,26 +52,26 @@ public class RenderSplitter implements ISimpleBlockRenderingHandler { if(meta == 14 || meta == 3) rotation = 180F / 180F * (float)Math.PI; boolean isLeft = meta >= 12; - - CraneSplitter splitter = (CraneSplitter) block; - IIcon conveyor = splitter.iconBelt; - - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Top", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Bottom", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - if(isLeft) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Left", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - if(!isLeft) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Right", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Back", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Front", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Inner", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerLeft", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerRight", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerTop", ModBlocks.block_steel.getIcon(0, 0), tessellator, rotation, true); - ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerBottom", conveyor, tessellator, rotation, true); - + drawSplitter(tessellator, block, isLeft, rotation, true); tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); return true; } + + private static void drawSplitter(Tessellator tessellator, Block block, boolean isLeft, float rotation, boolean shadeNormals) { + CraneSplitter splitter = (CraneSplitter) block; + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Top", isLeft ? splitter.iconTopLeft : splitter.iconTopRight, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Bottom", isLeft ? splitter.iconTopRight : splitter.iconTopLeft , tessellator, rotation, shadeNormals); + if(isLeft) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Left", splitter.iconLeft, tessellator, rotation, shadeNormals); + if(!isLeft) ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Right", splitter.iconRight, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Back", isLeft ? splitter.iconBackLeft : splitter.iconBackRight, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Front", isLeft ? splitter.iconFrontLeft : splitter.iconFrontRight, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "Inner", splitter.iconInner, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerLeft", splitter.iconInnerSide, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerRight", splitter.iconInnerSide, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerTop", splitter.iconInnerSide, tessellator, rotation, shadeNormals); + ObjUtil.renderPartWithIcon((WavefrontObject) ResourceManager.splitter, "InnerBottom", splitter.iconBelt, tessellator, rotation, shadeNormals); + } @Override public boolean shouldRender3DInInventory(int modelId) { diff --git a/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java new file mode 100644 index 000000000..5cf6381e1 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardBufferRail.java @@ -0,0 +1,77 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardBuffer; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardBufferRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 12) rotation = (float) Math.PI; + if(meta == 14) rotation = 270F / 180F * (float) Math.PI; + if(meta == 15) rotation = 90F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_buffer, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardBuffer.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java b/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java new file mode 100644 index 000000000..a238d461d --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardCurveRail.java @@ -0,0 +1,70 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardCurve; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardCurveRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glScaled(0.2, 0.2, 0.2); + GL11.glTranslated(2.5, -0.0625, -1.5); + GL11.glRotated(90, 0, 1, 0); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 15) + rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) + rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) + rotation = 270F / 180F * (float) Math.PI; + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_curve, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardCurve.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardRampRail.java b/src/main/java/com/hbm/render/block/RenderStandardRampRail.java new file mode 100644 index 000000000..eb1e245fd --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardRampRail.java @@ -0,0 +1,80 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardRamp; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardRampRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 15) + rotation = 90F / 180F * (float) Math.PI; + if(meta == 12) + rotation = 180F / 180F * (float) Math.PI; + if(meta == 14) + rotation = 270F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_ramp, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardRamp.renderID; + } +} diff --git a/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java b/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java new file mode 100644 index 000000000..5108aaea2 --- /dev/null +++ b/src/main/java/com/hbm/render/block/RenderStandardStraightRail.java @@ -0,0 +1,75 @@ +package com.hbm.render.block; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.rail.RailStandardStraight; +import com.hbm.main.ResourceManager; +import com.hbm.render.util.ObjUtil; + +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.world.IBlockAccess; +import net.minecraftforge.client.model.obj.WavefrontObject; + +public class RenderStandardStraightRail implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + Tessellator tessellator = Tessellator.instance; + + GL11.glTranslated(0, -0.0625, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glScaled(0.3, 0.3, 0.3); + tessellator.startDrawingQuads(); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, 0, false); + tessellator.draw(); + + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + + int meta = world.getBlockMetadata(x, y, z); + if(meta < 12) return true; + + Tessellator tessellator = Tessellator.instance; + + tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z)); + tessellator.setColorOpaque_F(1, 1, 1); + + float rotation = 0; + + if(meta == 14 || meta == 15) rotation = 90F / 180F * (float) Math.PI; + + if(meta == 12) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, -0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, 0.5F); + + tessellator.addTranslation(x + 0.5F, y, z + 0.5F); + ObjUtil.renderWithIcon((WavefrontObject) ResourceManager.rail_standard_straight, block.getIcon(1, 0), tessellator, rotation, true); + tessellator.addTranslation(-x - 0.5F, -y, -z - 0.5F); + + if(meta == 12) tessellator.addTranslation(-0.5F, 0F, 0F); + if(meta == 13) tessellator.addTranslation(0.5F, 0F, 0F); + if(meta == 14) tessellator.addTranslation(0F, 0F, 0.5F); + if(meta == 15) tessellator.addTranslation(0F, 0F, -0.5F); + + return true; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return RailStandardStraight.renderID; + } +} diff --git a/src/main/java/com/hbm/render/entity/effect/RenderMist.java b/src/main/java/com/hbm/render/entity/effect/RenderMist.java new file mode 100644 index 000000000..89230a555 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/effect/RenderMist.java @@ -0,0 +1,18 @@ +package com.hbm.render.entity.effect; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderMist extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return null; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java new file mode 100644 index 000000000..93cb9cf29 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -0,0 +1,58 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderTrainCargoTram extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + + EntityRailCarBase train = (EntityRailCarBase) entity; + double iX = train.prevPosX + (train.posX - train.prevPosX) * interp; + double iY = train.prevPosY + (train.posY - train.prevPosY) * interp; + double iZ = train.prevPosZ + (train.posZ - train.prevPosZ) * interp; + double rX = train.lastRenderX + (train.renderX - train.lastRenderX) * interp; + double rY = train.lastRenderY + (train.renderY - train.lastRenderY) * interp; + double rZ = train.lastRenderZ + (train.renderZ - train.lastRenderZ) * interp; + x -= iX - rX; + y -= iY - rY; + z -= iZ - rZ; + + GL11.glTranslated(x, y, z); + + float yaw = entity.rotationYaw; + float prevYaw = entity.prevRotationYaw; + + if(yaw - prevYaw > 180) yaw -= 360; + if(prevYaw - yaw > 180) prevYaw -= 360; + + float yawInterp = prevYaw + (yaw - prevYaw) * interp - 720; + + GL11.glRotated(-yawInterp, 0, 1, 0); + + float pitch = entity.rotationPitch; + float prevPitch = entity.prevRotationPitch; + float pitchInterp = prevPitch + (pitch - prevPitch) * interp; + GL11.glRotated(-pitchInterp, 1, 0, 0); + + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.train_tram); + ResourceManager.train_cargo_tram.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.train_tram; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTramTrailer.java b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTramTrailer.java new file mode 100644 index 000000000..867a396ba --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTramTrailer.java @@ -0,0 +1,133 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; + +public class RenderTrainCargoTramTrailer extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + + EntityRailCarBase train = (EntityRailCarBase) entity; + double iX = train.prevPosX + (train.posX - train.prevPosX) * interp; + double iY = train.prevPosY + (train.posY - train.prevPosY) * interp; + double iZ = train.prevPosZ + (train.posZ - train.prevPosZ) * interp; + double rX = train.lastRenderX + (train.renderX - train.lastRenderX) * interp; + double rY = train.lastRenderY + (train.renderY - train.lastRenderY) * interp; + double rZ = train.lastRenderZ + (train.renderZ - train.lastRenderZ) * interp; + x -= iX - rX; + y -= iY - rY; + z -= iZ - rZ; + + GL11.glTranslated(x, y, z); + + float yaw = entity.rotationYaw; + float prevYaw = entity.prevRotationYaw; + + if(yaw - prevYaw > 180) yaw -= 360; + if(prevYaw - yaw > 180) prevYaw -= 360; + + float yawInterp = prevYaw + (yaw - prevYaw) * interp - 720; + + GL11.glRotated(-yawInterp, 0, 1, 0); + + float pitch = entity.rotationPitch; + float prevPitch = entity.prevRotationPitch; + float pitchInterp = prevPitch + (pitch - prevPitch) * interp; + GL11.glRotated(-pitchInterp, 1, 0, 0); + + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.tram_trailer); + ResourceManager.train_cargo_tram_trailer.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + + int slots = entity.getDataWatcher().getWatchableObjectInt(10); + + if(slots > 0) { + + EntityItem dummy = new EntityItem(entity.worldObj, 0, 0, 0, new ItemStack(ModBlocks.crate)); + dummy.hoverStart = 0.0F; + + RenderItem.renderInFrame = true; + double scale = 2; + GL11.glScaled(scale, scale, scale); + + if(slots <= 5) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.375D, 0.0D, 0.0F, 0.0F); + } else if(slots <= 10) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.25D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.25D, 0.0F, 0.0F); + } else if(slots <= 15) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.1D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.375D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, -0.375D, 0.0F, 0.0F); + } else if(slots <= 20) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.2D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F); + } else if(slots <= 25) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.2D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.3D, 0.0F, 0.0F); + } else if(slots <= 30) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.6D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.6D, 0.0F, 0.0F); + } else if(slots <= 35) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F); + } else if(slots <= 40) { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F); + } else { + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, 0.0D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.2D, 0.375D, -0.4D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, 0.3D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.1D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.2D, 0.375D, -0.5D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, -0.25D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, 0.0D, 0.6875D, 0.15D, 0.0F, 0.0F); + RenderManager.instance.renderEntityWithPosYaw(dummy, -0.1D, 0.375D, 0.8D, 0.0F, 0.0F); + } + + RenderItem.renderInFrame = false; + } + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.tram_trailer; + } +} diff --git a/src/main/java/com/hbm/render/entity/item/RenderTunnelBore.java b/src/main/java/com/hbm/render/entity/item/RenderTunnelBore.java new file mode 100644 index 000000000..98c8c1f69 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTunnelBore.java @@ -0,0 +1,60 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.train.EntityRailCarBase; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderTunnelBore extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float swing, float interp) { + GL11.glPushMatrix(); + + EntityRailCarBase train = (EntityRailCarBase) entity; + double iX = train.prevPosX + (train.posX - train.prevPosX) * interp; + double iY = train.prevPosY + (train.posY - train.prevPosY) * interp; + double iZ = train.prevPosZ + (train.posZ - train.prevPosZ) * interp; + double rX = train.lastRenderX + (train.renderX - train.lastRenderX) * interp; + double rY = train.lastRenderY + (train.renderY - train.lastRenderY) * interp; + double rZ = train.lastRenderZ + (train.renderZ - train.lastRenderZ) * interp; + x -= iX - rX; + y -= iY - rY; + z -= iZ - rZ; + + GL11.glTranslated(x, y - 0.0625D, z); + + float yaw = entity.rotationYaw; + float prevYaw = entity.prevRotationYaw; + + if(yaw - prevYaw > 180) yaw -= 360; + if(prevYaw - yaw > 180) prevYaw -= 360; + + float yawInterp = prevYaw + (yaw - prevYaw) * interp - 720; + + GL11.glRotated(-yawInterp, 0, 1, 0); + + float pitch = entity.rotationPitch; + float prevPitch = entity.prevRotationPitch; + float pitchInterp = prevPitch + (pitch - prevPitch) * interp; + GL11.glRotated(-pitchInterp, 1, 0, 0); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.universal); + ResourceManager.tunnel_bore.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.universal; + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderCreeperUniversal.java b/src/main/java/com/hbm/render/entity/mob/RenderCreeperUniversal.java new file mode 100644 index 000000000..198be27b0 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderCreeperUniversal.java @@ -0,0 +1,92 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.entity.RenderCreeper; +import net.minecraft.entity.monster.EntityCreeper; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderCreeperUniversal extends RenderCreeper { + + private final ResourceLocation creeperTextures; + private final ResourceLocation armoredCreeperTextures; + private float swellMod = 1.0F; + + public RenderCreeperUniversal(String texture, String overlay) { + super(); + + creeperTextures = new ResourceLocation(texture); + armoredCreeperTextures = new ResourceLocation(overlay); + } + + public RenderCreeperUniversal setSwellMod(float mod) { + this.swellMod = mod; + return this; + } + + @Override + protected void preRenderCallback(EntityCreeper creeper, float interp) { + float swell = creeper.getCreeperFlashIntensity(interp); + float flash = 1.0F + MathHelper.sin(swell * 100.0F) * swell * 0.01F; + + if(swell < 0.0F) { + swell = 0.0F; + } + + if(swell > 1.0F) { + swell = 1.0F; + } + + swell *= swell; + swell *= swell; + swell *= swellMod; + float scaleHorizontal = (1.0F + swell * 0.4F) * flash; + float scaleVertical = (1.0F + swell * 0.1F) / flash; + GL11.glScalef(scaleHorizontal, scaleVertical, scaleHorizontal); + } + + @Override + protected int shouldRenderPass(EntityCreeper creeper, int pass, float interp) { + if(creeper.getPowered()) { + if(creeper.isInvisible()) { + GL11.glDepthMask(false); + } else { + GL11.glDepthMask(true); + } + + if(pass == 1) { + float time = (float) creeper.ticksExisted + interp; + this.bindTexture(armoredCreeperTextures); + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + float x = time * 0.01F; + float y = time * 0.01F; + GL11.glTranslatef(x, y, 0.0F); + this.setRenderPassModel(this.creeperModel); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glEnable(GL11.GL_BLEND); + float flashColor = 0.5F; + GL11.glColor4f(flashColor, flashColor, flashColor, 1.0F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + return 1; + } + + if(pass == 2) { + GL11.glMatrixMode(GL11.GL_TEXTURE); + GL11.glLoadIdentity(); + GL11.glMatrixMode(GL11.GL_MODELVIEW); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + } + } + + return -1; + } + + @Override + protected ResourceLocation getEntityTexture(EntityCreeper p_110775_1_) { + return creeperTextures; + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderDrone.java b/src/main/java/com/hbm/render/entity/mob/RenderDrone.java new file mode 100644 index 000000000..664bb4275 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderDrone.java @@ -0,0 +1,45 @@ +package com.hbm.render.entity.mob; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.mob.EntityFBIDrone; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderDrone extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y + 0.25, z); + + this.bindTexture(getEntityTexture(entity)); + + Random rand = new Random(entity.getEntityId()); + GL11.glRotated(rand.nextDouble() * 360D, 0, 1, 0); + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDisable(GL11.GL_CULL_FACE); + ResourceManager.drone.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return this.getEntityTexture((EntityFBIDrone) entity); + } + + protected ResourceLocation getEntityTexture(EntityFBIDrone entity) { + return new ResourceLocation(RefStrings.MODID + ":textures/entity/quadcopter.png"); + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java new file mode 100644 index 000000000..c64649c77 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphid.java @@ -0,0 +1,172 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderGlyphid extends RenderLiving { + + public RenderGlyphid() { + super(new ModelGlyphid(), 1.0F); + this.shadowOpaque = 0.0F; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + EntityGlyphid glyphid = (EntityGlyphid) entity; + return glyphid.getSkin(); + } + + public static class ModelGlyphid extends ModelBase { + + double bite = 0; + + @Override + public void setLivingAnimations(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float interp) { + bite = entity.getSwingProgress(interp); + } + + @Override + public void render(Entity entity, float limbSwing, float limbSwingAmount, float rotationYaw, float rotationHeadYaw, float rotationPitch, float scale) { + GL11.glPushMatrix(); + + GL11.glRotatef(180, 1, 0, 0); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + double s = ((EntityGlyphid) entity).getScale(); + GL11.glScaled(s, s, s); + + EntityLivingBase living = (EntityLivingBase) entity; + byte armor = living.getDataWatcher().getWatchableObjectByte(17); + //MainRegistry.proxy.displayTooltip("" + limbSwingAmount, 999); + + double walkCycle = limbSwing; + + double speed = 100000D; + double chewing = 200000D; + double cy0 = Math.sin(walkCycle % (Math.PI * 2)); + double cy1 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.5); + double cy2 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI); + double cy3 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.75); + + double bite = MathHelper.clamp_double(Math.sin(this.bite * Math.PI * 2 - Math.PI * 0.5), 0, 1) * 20; + double headTilt = Math.sin(this.bite * Math.PI) * 30; + + ResourceManager.glyphid.renderPart("Body"); + if((armor & (1 << 0)) > 0) ResourceManager.glyphid.renderPart("ArmorFront"); + if((armor & (1 << 1)) > 0) ResourceManager.glyphid.renderPart("ArmorLeft"); + if((armor & (1 << 2)) > 0) ResourceManager.glyphid.renderPart("ArmorRight"); + + /// LEFT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.625, 0.0625); + GL11.glRotated(10, 0, 1, 0); + GL11.glRotated(35 + cy1 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmLeftUpper"); + GL11.glTranslated(0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy1 * 20 + cy0 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmLeftMid"); + GL11.glTranslated(0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy0 * 45, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmLeftLower"); + if((armor & (1 << 3)) > 0) ResourceManager.glyphid.renderPart("ArmLeftArmor"); + GL11.glPopMatrix(); + + /// RIGHT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0.625, 0.0625); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(35 + cy2 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmRightUpper"); + GL11.glTranslated(-0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy2 * 20 + cy3 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmRightMid"); + GL11.glTranslated(-0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy3 * 45, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmRightLower"); + if((armor & (1 << 4)) > 0) ResourceManager.glyphid.renderPart("ArmRightArmor"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(headTilt, 0, 0, 1); + GL11.glTranslated(0, -0.5, -0.25); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawTop"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawRight"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + double steppy = 15; + double bend = 60; + + for(int i = 0; i < 3; i++) { + + double c0 = cy0 * (i == 1 ? -1 : 1); + double c1 = cy1 * (i == 1 ? -1 : 1); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 15 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftUpper"); + GL11.glTranslated(0.5625, 0.25, 0); + GL11.glRotated(-bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(-0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftLower"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 45 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(-steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightUpper"); + GL11.glTranslated(-0.5625, 0.25, 0); + GL11.glRotated(bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightLower"); + GL11.glPopMatrix(); + } + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java b/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java new file mode 100644 index 000000000..5c91e44a1 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderGlyphidNuclear.java @@ -0,0 +1,236 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.mob.EntityGlyphid; +import com.hbm.entity.mob.EntityGlyphidNuclear; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +public class RenderGlyphidNuclear extends RenderLiving { + + public RenderGlyphidNuclear() { + super(new ModelGlyphid(), 1.0F); + this.shadowOpaque = 0.0F; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + EntityGlyphid glyphid = (EntityGlyphid) entity; + return glyphid.getSkin(); + } + + @Override + protected void preRenderCallback(EntityLivingBase entity, float interp) { + this.preRenderCallback((EntityGlyphidNuclear) entity, interp); + } + + protected void preRenderCallback(EntityGlyphidNuclear entity, float interp) { + float swell = (float) (entity.deathTicks + interp) / 95F; + float flash = 1.0F + MathHelper.sin(swell * 100.0F) * swell * 0.01F; + + if(swell < 0.0F) { + swell = 0.0F; + } + + if(swell > 1.0F) { + swell = 1.0F; + } + + swell *= swell; + swell *= swell; + + float scaleHorizontal = (1.0F + swell * 0.4F) * flash; + float scaleVertical = (1.0F + swell * 0.1F) / flash; + GL11.glScalef(scaleHorizontal, scaleVertical, scaleHorizontal); + } + + @Override + protected int getColorMultiplier(EntityLivingBase entity, float lightBrightness, float interp) { + return this.getColorMultiplier((EntityGlyphidNuclear) entity, lightBrightness, interp); + } + + protected int getColorMultiplier(EntityGlyphidNuclear entity, float lightBrightness, float interp) { + float swell = (float) (entity.deathTicks + interp) / 20F; + + + + + int a = (int) (swell * 0.2F * 255.0F); + + if((int) (swell * 10.0F) % 4 < 2) + return a *= 0.75; + + if(a < 0) { + a = 0; + } + + if(a > 255) { + a = 255; + } + + short r = 255; + short g = 255; + short b = 255; + return a << 24 | r << 16 | g << 8 | b; + } + + public static class ModelGlyphid extends ModelBase { + + double bite = 0; + + @Override + public void setLivingAnimations(EntityLivingBase entity, float limbSwing, float limbSwingAmount, float interp) { + bite = entity.getSwingProgress(interp); + } + + @Override + public void render(Entity entity, float limbSwing, float limbSwingAmount, float rotationYaw, float rotationHeadYaw, float rotationPitch, float scale) { + GL11.glPushMatrix(); + + GL11.glRotatef(180, 1, 0, 0); + GL11.glTranslatef(0, -1.5F, 0); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + double s = ((EntityGlyphid) entity).getScale(); + GL11.glScaled(s, s, s); + + EntityLivingBase living = (EntityLivingBase) entity; + byte armor = living.getDataWatcher().getWatchableObjectByte(17); + + double walkCycle = limbSwing; + + double speed = 100000D; + double chewing = 200000D; + double cy0 = Math.sin(walkCycle % (Math.PI * 2)); + double cy1 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.5); + double cy2 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI); + double cy3 = Math.sin(walkCycle % (Math.PI * 2) - Math.PI * 0.75); + + double bite = MathHelper.clamp_double(Math.sin(this.bite * Math.PI * 2 - Math.PI * 0.5), 0, 1) * 20; + double headTilt = Math.sin(this.bite * Math.PI) * 30; + + ResourceManager.glyphid.renderPart("Body"); + if((armor & (1 << 0)) > 0) ResourceManager.glyphid.renderPart("ArmorFront"); + if((armor & (1 << 1)) > 0) ResourceManager.glyphid.renderPart("ArmorLeft"); + if((armor & (1 << 2)) > 0) ResourceManager.glyphid.renderPart("ArmorRight"); + + /// LEFT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.625, 0.0625); + GL11.glRotated(10, 0, 1, 0); + GL11.glRotated(35 + cy1 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmLeftUpper"); + GL11.glTranslated(0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy1 * 20 + cy0 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmLeftMid"); + GL11.glTranslated(0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy0 * 45, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmLeftLower"); + if((armor & (1 << 3)) > 0) ResourceManager.glyphid.renderPart("ArmLeftArmor"); + GL11.glPopMatrix(); + + /// RIGHT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0.625, 0.0625); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(35 + cy2 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmRightUpper"); + GL11.glTranslated(-0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy2 * 20 + cy3 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmRightMid"); + GL11.glTranslated(-0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy3 * 45, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmRightLower"); + if((armor & (1 << 4)) > 0) ResourceManager.glyphid.renderPart("ArmRightArmor"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(headTilt, 0, 0, 1); + GL11.glTranslated(0, -0.5, -0.25); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawTop"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-bite, 0, 1, 0); + GL11.glRotated(bite, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawRight"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + double steppy = 15; + double bend = 60; + + for(int i = 0; i < 3; i++) { + + double c0 = cy0 * (i == 1 ? -1 : 1); + double c1 = cy1 * (i == 1 ? -1 : 1); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 15 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftUpper"); + GL11.glTranslated(0.5625, 0.25, 0); + GL11.glRotated(-bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(-0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftLower"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 45 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(-steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightUpper"); + GL11.glTranslated(-0.5625, 0.25, 0); + GL11.glRotated(bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightLower"); + GL11.glPopMatrix(); + } + + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glTranslated(0, 1, 0); + GL11.glRotated(90, 1, 0, 0); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.mini_nuke_tex); + ResourceManager.projectiles.renderPart("MiniNuke"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderNuclearCreeper.java b/src/main/java/com/hbm/render/entity/mob/RenderNuclearCreeper.java deleted file mode 100644 index 54bba99bb..000000000 --- a/src/main/java/com/hbm/render/entity/mob/RenderNuclearCreeper.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.hbm.render.entity.mob; - -import org.lwjgl.opengl.GL11; - -import com.hbm.entity.mob.EntityNuclearCreeper; -import com.hbm.lib.RefStrings; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelCreeper; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; - -public class RenderNuclearCreeper extends RenderLiving -{ - private static final ResourceLocation armoredCreeperTextures = new ResourceLocation(RefStrings.MODID + ":" + "textures/entity/creeper_armor.png"); - private static final ResourceLocation creeperTextures = new ResourceLocation(RefStrings.MODID + ":" + "textures/entity/creeper.png"); - /** The creeper model. */ - private ModelBase creeperModel = new ModelCreeper(2.0F); - - public RenderNuclearCreeper() - { - super(new ModelCreeper(), 0.5F); - } - - /** - * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: - * entityLiving, partialTickTime - */ - protected void preRenderCallback(EntityNuclearCreeper p_77041_1_, float p_77041_2_) - { - float f1 = p_77041_1_.getCreeperFlashIntensity(p_77041_2_); - float f2 = 1.0F + MathHelper.sin(f1 * 100.0F) * f1 * 0.01F; - - if (f1 < 0.0F) - { - f1 = 0.0F; - } - - if (f1 > 1.0F) - { - f1 = 1.0F; - } - - f1 *= f1; - f1 *= f1; - float f3 = (1.0F + f1 * 0.4F) * f2; - float f4 = (1.0F + f1 * 0.1F) / f2; - GL11.glScalef(f3, f4, f3); - } - - /** - * Returns an ARGB int color back. Args: entityLiving, lightBrightness, partialTickTime - */ - protected int getColorMultiplier(EntityNuclearCreeper p_77030_1_, float p_77030_2_, float p_77030_3_) - { - float f2 = p_77030_1_.getCreeperFlashIntensity(p_77030_3_); - - if ((int)(f2 * 10.0F) % 2 == 0) - { - return 0; - } - else - { - int i = (int)(f2 * 0.2F * 255.0F); - - if (i < 0) - { - i = 0; - } - - if (i > 255) - { - i = 255; - } - - short short1 = 255; - short short2 = 255; - short short3 = 255; - return i << 24 | short1 << 16 | short2 << 8 | short3; - } - } - - /** - * Queries whether should render the specified pass or not. - */ - protected int shouldRenderPass(EntityNuclearCreeper p_77032_1_, int p_77032_2_, float p_77032_3_) - { - if (p_77032_1_.getPowered()) - { - if (p_77032_1_.isInvisible()) - { - GL11.glDepthMask(false); - } - else - { - GL11.glDepthMask(true); - } - - if (p_77032_2_ == 1) - { - float f1 = p_77032_1_.ticksExisted + p_77032_3_; - this.bindTexture(armoredCreeperTextures); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glLoadIdentity(); - float f2 = f1 * 0.01F; - float f3 = f1 * 0.01F; - GL11.glTranslatef(f2, f3, 0.0F); - this.setRenderPassModel(this.creeperModel); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glEnable(GL11.GL_BLEND); - float f4 = 0.5F; - GL11.glColor4f(f4, f4, f4, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - return 1; - } - - if (p_77032_2_ == 2) - { - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glLoadIdentity(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - } - } - - return -1; - } - - protected int inheritRenderPass(EntityNuclearCreeper p_77035_1_, int p_77035_2_, float p_77035_3_) - { - return -1; - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - protected ResourceLocation getEntityTexture(EntityNuclearCreeper p_110775_1_) - { - return creeperTextures; - } - - /** - * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: - * entityLiving, partialTickTime - */ - @Override - protected void preRenderCallback(EntityLivingBase p_77041_1_, float p_77041_2_) - { - this.preRenderCallback((EntityNuclearCreeper)p_77041_1_, p_77041_2_); - } - - /** - * Returns an ARGB int color back. Args: entityLiving, lightBrightness, partialTickTime - */ - @Override - protected int getColorMultiplier(EntityLivingBase p_77030_1_, float p_77030_2_, float p_77030_3_) - { - return this.getColorMultiplier((EntityNuclearCreeper)p_77030_1_, p_77030_2_, p_77030_3_); - } - - /** - * Queries whether should render the specified pass or not. - */ - @Override - protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) - { - return this.shouldRenderPass((EntityNuclearCreeper)p_77032_1_, p_77032_2_, p_77032_3_); - } - - @Override - protected int inheritRenderPass(EntityLivingBase p_77035_1_, int p_77035_2_, float p_77035_3_) - { - return this.inheritRenderPass((EntityNuclearCreeper)p_77035_1_, p_77035_2_, p_77035_3_); - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return this.getEntityTexture((EntityNuclearCreeper)p_110775_1_); - } -} diff --git a/src/main/java/com/hbm/render/entity/mob/RenderTaintedCreeper.java b/src/main/java/com/hbm/render/entity/mob/RenderTaintedCreeper.java deleted file mode 100644 index ecdd0f3e4..000000000 --- a/src/main/java/com/hbm/render/entity/mob/RenderTaintedCreeper.java +++ /dev/null @@ -1,189 +0,0 @@ -package com.hbm.render.entity.mob; - -import org.lwjgl.opengl.GL11; - -import com.hbm.entity.mob.EntityTaintedCreeper; -import com.hbm.lib.RefStrings; - -import net.minecraft.client.model.ModelBase; -import net.minecraft.client.model.ModelCreeper; -import net.minecraft.client.renderer.entity.RenderLiving; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.MathHelper; -import net.minecraft.util.ResourceLocation; - -public class RenderTaintedCreeper extends RenderLiving -{ - private static final ResourceLocation armoredCreeperTextures = new ResourceLocation(RefStrings.MODID + ":" + "textures/entity/creeper_armor_taint.png"); - private static final ResourceLocation creeperTextures = new ResourceLocation(RefStrings.MODID + ":" + "textures/entity/creeper_tainted.png"); - /** The creeper model. */ - private ModelBase creeperModel = new ModelCreeper(2.0F); - - public RenderTaintedCreeper() - { - super(new ModelCreeper(), 0.5F); - } - - /** - * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: - * entityLiving, partialTickTime - */ - protected void preRenderCallback(EntityTaintedCreeper p_77041_1_, float p_77041_2_) - { - float f1 = p_77041_1_.getCreeperFlashIntensity(p_77041_2_); - float f2 = 1.0F + MathHelper.sin(f1 * 100.0F) * f1 * 0.01F; - - if (f1 < 0.0F) - { - f1 = 0.0F; - } - - if (f1 > 1.0F) - { - f1 = 1.0F; - } - - f1 *= f1; - f1 *= f1; - float f3 = (1.0F + f1 * 0.4F) * f2; - float f4 = (1.0F + f1 * 0.1F) / f2; - GL11.glScalef(f3, f4, f3); - } - - /** - * Returns an ARGB int color back. Args: entityLiving, lightBrightness, partialTickTime - */ - protected int getColorMultiplier(EntityTaintedCreeper p_77030_1_, float p_77030_2_, float p_77030_3_) - { - float f2 = p_77030_1_.getCreeperFlashIntensity(p_77030_3_); - - if ((int)(f2 * 10.0F) % 2 == 0) - { - return 0; - } - else - { - int i = (int)(f2 * 0.2F * 255.0F); - - if (i < 0) - { - i = 0; - } - - if (i > 255) - { - i = 255; - } - - short short1 = 255; - short short2 = 255; - short short3 = 255; - return i << 24 | short1 << 16 | short2 << 8 | short3; - } - } - - /** - * Queries whether should render the specified pass or not. - */ - protected int shouldRenderPass(EntityTaintedCreeper p_77032_1_, int p_77032_2_, float p_77032_3_) - { - if (p_77032_1_.getPowered()) - { - if (p_77032_1_.isInvisible()) - { - GL11.glDepthMask(false); - } - else - { - GL11.glDepthMask(true); - } - - if (p_77032_2_ == 1) - { - float f1 = p_77032_1_.ticksExisted + p_77032_3_; - this.bindTexture(armoredCreeperTextures); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glLoadIdentity(); - float f2 = f1 * 0.01F; - float f3 = f1 * 0.01F; - GL11.glTranslatef(f2, f3, 0.0F); - this.setRenderPassModel(this.creeperModel); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glEnable(GL11.GL_BLEND); - float f4 = 0.5F; - GL11.glColor4f(f4, f4, f4, 1.0F); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); - return 1; - } - - if (p_77032_2_ == 2) - { - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glLoadIdentity(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - } - } - - return -1; - } - - protected int inheritRenderPass(EntityTaintedCreeper p_77035_1_, int p_77035_2_, float p_77035_3_) - { - return -1; - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - protected ResourceLocation getEntityTexture(EntityTaintedCreeper p_110775_1_) - { - return creeperTextures; - } - - /** - * Allows the render to do any OpenGL state modifications necessary before the model is rendered. Args: - * entityLiving, partialTickTime - */ - @Override - protected void preRenderCallback(EntityLivingBase p_77041_1_, float p_77041_2_) - { - this.preRenderCallback((EntityTaintedCreeper)p_77041_1_, p_77041_2_); - } - - /** - * Returns an ARGB int color back. Args: entityLiving, lightBrightness, partialTickTime - */ - @Override - protected int getColorMultiplier(EntityLivingBase p_77030_1_, float p_77030_2_, float p_77030_3_) - { - return this.getColorMultiplier((EntityTaintedCreeper)p_77030_1_, p_77030_2_, p_77030_3_); - } - - /** - * Queries whether should render the specified pass or not. - */ - @Override - protected int shouldRenderPass(EntityLivingBase p_77032_1_, int p_77032_2_, float p_77032_3_) - { - return this.shouldRenderPass((EntityTaintedCreeper)p_77032_1_, p_77032_2_, p_77032_3_); - } - - @Override - protected int inheritRenderPass(EntityLivingBase p_77035_1_, int p_77035_2_, float p_77035_3_) - { - return this.inheritRenderPass((EntityTaintedCreeper)p_77035_1_, p_77035_2_, p_77035_3_); - } - - /** - * Returns the location of an entity's texture. Doesn't seem to be called unless you call Render.bindEntityTexture. - */ - @Override - protected ResourceLocation getEntityTexture(Entity p_110775_1_) - { - return this.getEntityTexture((EntityTaintedCreeper)p_110775_1_); - } -} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java index 3d11f351c..d8c59d98f 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java @@ -4,6 +4,7 @@ import java.util.Random; import org.lwjgl.opengl.GL11; +import com.hbm.entity.projectile.IBulletBase; import com.hbm.handler.BulletConfiguration; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; @@ -11,6 +12,7 @@ import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelBaleflare; import com.hbm.render.model.ModelBullet; import com.hbm.render.util.RenderSparks; +import com.hbm.util.Tuple.Pair; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.Tessellator; @@ -19,8 +21,10 @@ import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.Vec3; public class RenderBullet extends Render { @@ -37,10 +41,8 @@ public class RenderBullet extends Render { GL11.glPushMatrix(); GL11.glTranslatef((float) x, (float) y, (float) z); - GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * f1 - 90.0F, - 0.0F, 1.0F, 0.0F); - GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * f1 + 180, - 0.0F, 0.0F, 1.0F); + GL11.glRotatef(bullet.prevRotationYaw + (bullet.rotationYaw - bullet.prevRotationYaw) * f1 - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(bullet.prevRotationPitch + (bullet.rotationPitch - bullet.prevRotationPitch) * f1 + 180, 0.0F, 0.0F, 1.0F); GL11.glScalef(1.5F, 1.5F, 1.5F); int style = bullet.getDataWatcher().getWatchableObjectByte(16); @@ -69,6 +71,7 @@ public class RenderBullet extends Render { case BulletConfiguration.STYLE_APDS: renderAPDS(); break; case BulletConfiguration.STYLE_BLADE: renderBlade(); break; case BulletConfiguration.STYLE_BARREL: renderNuke(3); break; + case BulletConfiguration.STYLE_TAU: renderTau(bullet, trail, f1); break; default: renderBullet(trail); break; } @@ -450,11 +453,11 @@ public class RenderBullet extends Render { tess.addVertex(0, -0.5, -0.5); tess.draw(); - GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDepthMask(true); GL11.glPopMatrix(); } @@ -479,6 +482,113 @@ public class RenderBullet extends Render { GL11.glPopMatrix(); } + private void renderTau(Entity bullet, int trail, float interp) { + + Tessellator tessellator = Tessellator.instance; + + float scale = 0.125F; + + double pX = bullet.prevPosX + (bullet.posX - bullet.prevPosX) * interp; + double pY = bullet.prevPosY + (bullet.posY - bullet.prevPosY) * interp; + double pZ = bullet.prevPosZ + (bullet.posZ - bullet.prevPosZ) * interp; + + IBulletBase iface = (IBulletBase) bullet; + + if(iface.prevY() == 0) { + iface.prevX(pX); + iface.prevY(pY); + iface.prevZ(pZ); + } + + double deltaX = iface.prevX() - pX; + double deltaY = iface.prevY() - pY; + double deltaZ = iface.prevZ() - pZ; + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + double dX = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double)interp; + double dY = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double)interp; + double dZ = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double)interp; + + GL11.glPopMatrix(); + GL11.glPushMatrix(); + GL11.glTranslated(pX - dX, pY - dY, pZ - dZ); + + float r = 1F; + float g = 0.5F; + float b = 0F; + + if(trail == 1) { + r = 1; + g = 1; + b = 1; + } + + for(Pair pair : iface.nodes()) { + Vec3 pos = pair.getKey(); + + double mult = 1D; + pos.xCoord += deltaX * mult; + pos.yCoord += deltaY * mult; + pos.zCoord += deltaZ * mult; + } + + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 1F, 0F); + + for(int i = 0; i < iface.nodes().size() - 1; i++) { + final Pair node = iface.nodes().get(i), past = iface.nodes().get(i + 1); + final Vec3 nodeLoc = node.getKey(), pastLoc = past.getKey(); + float nodeAlpha = node.getValue().floatValue(); + float pastAlpha = past.getValue().floatValue(); + + double timeAlpha = Math.max(2D - bullet.ticksExisted * 0.2, 0D); + nodeAlpha *= timeAlpha; + pastAlpha *= timeAlpha; + float outerAlpha = 0.25F; + + if(nodeAlpha == 0 && pastAlpha == 0) { + break; + } + + tessellator.setNormal(0F, 1F, 0F); + tessellator.setColorRGBA_F(r, g, b, nodeAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, nodeAlpha * outerAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord + scale, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha * outerAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord + scale, pastLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord, pastLoc.zCoord); + + tessellator.setColorRGBA_F(r, g, b, nodeAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, nodeAlpha * outerAlpha); + tessellator.addVertex(nodeLoc.xCoord, nodeLoc.yCoord - scale, nodeLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha * outerAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord - scale, pastLoc.zCoord); + tessellator.setColorRGBA_F(r, g, b, pastAlpha); + tessellator.addVertex(pastLoc.xCoord, pastLoc.yCoord, pastLoc.zCoord); + } + + GL11.glColor3f(1F, 1F, 1F); + GL11.glDepthMask(true); + GL11.glAlphaFunc(GL11.GL_GREATER, 0F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + tessellator.draw(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_BLEND); + GL11.glAlphaFunc(GL11.GL_GEQUAL, 0.1F); + + iface.prevX(pX); + iface.prevY(pY); + iface.prevZ(pZ); + } + @Override protected ResourceLocation getEntityTexture(Entity p_110775_1_) { return new ResourceLocation(RefStrings.MODID + ":textures/models/bullet.png"); diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderChemical.java b/src/main/java/com/hbm/render/entity/projectile/RenderChemical.java index ac68222fe..58bc4da95 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderChemical.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderChemical.java @@ -29,12 +29,6 @@ public class RenderChemical extends Render { EntityChemical chem = (EntityChemical) entity; ChemicalStyle style = chem.getStyle(); - if(chem.lastClientPosX == -1 && chem.lastClientPosY == -1 && chem.lastClientPosZ == -1) { - chem.lastClientPosX = chem.posX - chem.motionX; - chem.lastClientPosY = chem.posY - chem.motionY; - chem.lastClientPosZ = chem.posZ - chem.motionZ; - } - if(style == ChemicalStyle.AMAT || style == ChemicalStyle.LIGHTNING) renderAmatBeam(chem, f1); @@ -47,10 +41,6 @@ public class RenderChemical extends Render { this.bindEntityTexture(chem); renderGasFire(chem, f1); } - - chem.lastClientPosX = chem.prevPosX + (chem.posX - chem.prevPosX) * f1; - chem.lastClientPosY = chem.prevPosX + (chem.posY - chem.prevPosY) * f1; - chem.lastClientPosZ = chem.prevPosX + (chem.posZ - chem.prevPosZ) * f1; GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java b/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java index 8bc74b359..69c387e22 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderShrapnel.java @@ -29,7 +29,7 @@ public class RenderShrapnel extends Render { bindTexture(new ResourceLocation(RefStrings.MODID + ":textures/entity/shrapnel.png")); if(rocket instanceof EntityShrapnel) { - if(rocket.getDataWatcher().getWatchableObjectByte(16) == 2) { //scale up lava blobs + if(rocket.getDataWatcher().getWatchableObjectByte(16) >= 2) { //scale up lava blobs GL11.glScaled(3, 3, 3); } } diff --git a/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java b/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java index 5a0e97ee2..3c596db64 100644 --- a/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java +++ b/src/main/java/com/hbm/render/icon/TextureAtlasSpriteMutatable.java @@ -52,7 +52,8 @@ public class TextureAtlasSpriteMutatable extends TextureAtlasSprite { if(mutator != null) { for(int i = 0; i < frames.length; i++) { BufferedImage frame = frames[i]; - mutator.mutate(frame, i, frames.length); + + if(frame != null) mutator.mutate(frame, i, frames.length); } } diff --git a/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java b/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java new file mode 100644 index 000000000..64d8831e1 --- /dev/null +++ b/src/main/java/com/hbm/render/item/ItemRenderBoltgun.java @@ -0,0 +1,103 @@ +package com.hbm.render.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderBoltgun implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.boltgun_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.15D; + GL11.glTranslated(0.5, 0.35, -0.25F); + GL11.glRotated(15, 0, 0, 1); + GL11.glRotated(80, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + GL11.glPushMatrix(); + double[] anim = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(0, 0, -anim[0]); + if(anim[0] != 0) player.isSwingInProgress = false; + ResourceManager.boltgun.renderPart("Barrel"); + GL11.glPopMatrix(); + + break; + + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotated(10, 0, 1, 0); + GL11.glRotated(10, 0, 0, 1); + GL11.glRotated(10, 1, 0, 0); + GL11.glTranslated(1.5, -0.25, 1); + + break; + + case ENTITY: + + double s1 = 0.1D; + GL11.glScaled(s1, s1, s1); + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 1.75D; + GL11.glTranslated(7, 10, 0); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-135, 1, 0, 0); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + ResourceManager.boltgun.renderPart("Gun"); + if(type != type.EQUIPPED_FIRST_PERSON) { + ResourceManager.boltgun.renderPart("Barrel"); + } + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java index 9e15b0a08..52222f734 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderLibrary.java +++ b/src/main/java/com/hbm/render/item/ItemRenderLibrary.java @@ -257,7 +257,9 @@ public class ItemRenderLibrary { } public void renderCommon() { GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); bindTexture(ResourceManager.chemplant_body_tex); ResourceManager.chemplant_body.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); bindTexture(ResourceManager.chemplant_piston_tex); ResourceManager.chemplant_piston.renderAll(); bindTexture(ResourceManager.chemplant_spinner_tex); GL11.glTranslated(-0.625, 0, 0.625); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java new file mode 100644 index 000000000..712cc58ab --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderBenelli.java @@ -0,0 +1,115 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderBenelli implements IItemRenderer +{ + public ItemRenderBenelli() {} + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch (type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: + return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + static final String body = "Body.001_Cube.001"; + static final String frontGrip = "Pump_Cylinder.003"; + static final String slide = "Cylinder"; + static final String barrelAndTube = "Body_Cube.002"; + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + int magSize = ItemGunBase.getMag(item); + EntityPlayer player = Minecraft.getMinecraft().thePlayer; + GL11.glPushMatrix(); + + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.benelli_tex); + final float scale1 = 0.2F; + final double scale2 = 0.065D; + final double scale3 = 0.52D; + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + double[] feedNew = HbmAnimations.getRelevantTransformation("PUMP"); + + switch (type) { + case EQUIPPED_FIRST_PERSON:// In hand from POV + GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); + if (player.isSneaking()) { + GL11.glRotatef(25.0F, 1.0F, 0.0F, 0.0F); + GL11.glRotatef(-5F, 0.0F, 1.0F, 0.0F); + GL11.glTranslatef(-1.007F, 0F, -2.5F); + } + else { + GL11.glRotatef(30.0F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.0F, -1F, -2.5F); + } + GL11.glScalef(scale1, scale1, scale1); + // Move on recoil + GL11.glTranslated(0, recoil[1], recoil[2]); + GL11.glRotated(recoil[0], 1, 0, 0); + // Move up for reload + GL11.glPushMatrix(); + ResourceManager.benelli.renderAll(); + // Pump new round if empty + if (magSize == 0) + GL11.glTranslated(feedNew[0], feedNew[1], feedNew[2]); + ResourceManager.benelli.renderPart(slide); + GL11.glPopMatrix(); + // Eject spent shell + GL11.glPushMatrix(); + GL11.glPopMatrix(); + break; + case EQUIPPED:// In hand from other's POV + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(-0.4F, 0.05F, -0.5F); + GL11.glRotated(recoil[0], 1, 0, 0); + GL11.glScaled(scale2 - scale2 * 2, scale2, scale2); + + GL11.glPushMatrix(); + GL11.glPopMatrix(); + break; + case ENTITY:// Dropped entity + GL11.glScaled(0.0625D, 0.0625D, 0.0625D); + break; + case INVENTORY:// Inventory icon + GL11.glScaled(scale3, scale3, -scale3); + GL11.glTranslatef(14.4F, 15.0F, 0.0F); + GL11.glRotatef(270.0F, 10.0F, 0.0F, 0.0F); + GL11.glRotatef(52.5F, 0.0F, 10.0F, 0.0F); + GL11.glRotatef(270.0F, 0.0F, 0.0F, 10.0F); + default: + break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) + ResourceManager.benelli.renderAll(); + GL11.glPopMatrix(); + + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderChainsaw.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderChainsaw.java index 26522b8ef..f758b99b8 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderChainsaw.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderChainsaw.java @@ -12,8 +12,6 @@ import net.minecraft.util.MathHelper; import net.minecraftforge.client.IItemRenderer; public class ItemRenderChainsaw implements IItemRenderer { - - public ItemRenderChainsaw() { } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { @@ -29,7 +27,6 @@ public class ItemRenderChainsaw implements IItemRenderer { @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); } diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java new file mode 100644 index 000000000..2ce940cc0 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderUACPistol.java @@ -0,0 +1,109 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderUACPistol implements IItemRenderer { + Minecraft mc = Minecraft.getMinecraft(); + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return type == ItemRenderType.FIRST_PERSON_MAP ? false : true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION); + } + + static final String lower = "lower_pistol_0"; + static final String mag = "mag_pistol_0"; + static final String slide = "slide_pistol_0"; + static final String trigger = "trigger_pistol_0"; + static final String hammer = "bool_obj_bool_obj_data.002"; + + static final float scale1 = 0.05F; + static final float scale2 = 0.025F; + static final float scale3 = 0.05F; + static final float scale4 = 0.55F; + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + GL11.glPushMatrix(); + mc.renderEngine.bindTexture(ResourceManager.uac_pistol_tex); + EntityPlayer player = mc.thePlayer; + GL11.glShadeModel(GL11.GL_SMOOTH); + + double[] slideAnim = HbmAnimations.getRelevantTransformation("SLIDE"); + double[] hammerAnim = HbmAnimations.getRelevantTransformation("HAMMER"); + + switch(type) { + case ENTITY:// Dropped item + GL11.glScalef(scale1, scale1, scale1); + break; + case EQUIPPED:// In hand from other's POV + GL11.glScalef(scale2, scale2, scale2); + GL11.glRotatef(90F, 0F, 1F, 0F); + GL11.glRotatef(-45F, 1F, 0F, 0F); + GL11.glTranslatef(0F, -12F, 30F); + + GL11.glPushMatrix(); + ResourceManager.uac_pistol.renderOnly(trigger, mag, lower); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(slideAnim[0], slideAnim[1], slideAnim[2] * 2); + ResourceManager.uac_pistol.renderPart(slide); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(hammerAnim[0], 1F, 0F, 0F); + ResourceManager.uac_pistol.renderPart(hammer); + GL11.glPopMatrix(); + break; + case EQUIPPED_FIRST_PERSON:// In hand from POV + GL11.glScalef(scale3, scale3, scale3); + GL11.glRotatef(90F, 0F, 1F, 0F); + if(player.isSneaking()) { + GL11.glRotatef(-25F, 1F, 0F, 0F); + GL11.glRotatef(-5F, 0F, 1F, 0F); + GL11.glTranslatef(20.15F, 3.5F, 18F); + } else { + GL11.glRotatef(-25F, 1F, 0F, 0F); + GL11.glTranslatef(-3F, -5F, 20F); + } + GL11.glPushMatrix(); + GL11.glTranslated(slideAnim[0], slideAnim[1], slideAnim[2] * 2); + ResourceManager.uac_pistol.renderPart(slide); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glRotated(hammerAnim[0], 1F, 0F, 0F); + ResourceManager.uac_pistol.renderPart(hammer); + GL11.glPopMatrix(); + break; + case INVENTORY: + GL11.glScalef(scale4, scale4, scale4); + GL11.glRotatef(90F, 0F, 1F, 0F); + GL11.glRotatef(150F, 1F, 0F, 0F); + GL11.glTranslatef(0F, -8F, -24F); + break; + default: + break; + } + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON && type != ItemRenderType.EQUIPPED) + ResourceManager.uac_pistol.renderAll(); + else + ResourceManager.uac_pistol.renderOnly(trigger, mag, lower); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glPopMatrix(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java new file mode 100644 index 000000000..4bca0361c --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCoilgun.java @@ -0,0 +1,100 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponCoilgun implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.coilgun_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(20, 0, 0, 1); + GL11.glTranslated(0.75, 0.3, -0.5); + GL11.glRotated(-10, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(-1.5 - recoil[0] * 0.5, 0, 0); + GL11.glRotated(recoil[0] * 45, 0, 0, 1); + GL11.glTranslated(1.5, 0, 0); + + double[] reload = HbmAnimations.getRelevantTransformation("RELOAD"); + GL11.glTranslated(-2.5, 0, 0); + GL11.glRotated(reload[0] * -45, 0, 0, 1); + GL11.glTranslated(2.5, 0, 0); + + break; + + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(1.25F, 0.5F, -1.75F); + + break; + + case ENTITY: + + double s1 = 0.2D; + GL11.glScaled(s1, s1, s1); + + break; + + case INVENTORY: + + double s = 3.5D; + GL11.glTranslated(6, 8, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.coilgun.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCryoCannon.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCryoCannon.java new file mode 100644 index 000000000..b368c30f5 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponCryoCannon.java @@ -0,0 +1,118 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemCryoCannon; +import com.hbm.items.weapon.ItemGunBase; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponCryoCannon implements IItemRenderer { + + public static final ResourceLocation[] fill_tex = new ResourceLocation[15]; + public static final ResourceLocation[] pressure_tex = new ResourceLocation[12]; + public static final ResourceLocation[] turbine_tex = new ResourceLocation[9]; + + public ItemRenderWeaponCryoCannon() { + for(int i = 0; i < fill_tex.length; i++) fill_tex[i] = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon/fill_" + i + ".png"); + for(int i = 0; i < pressure_tex.length; i++) pressure_tex[i] = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon/pressure_" + i + ".png"); + for(int i = 0; i < turbine_tex.length; i++) turbine_tex[i] = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/cryo_cannon/turbine_" + i + ".png"); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.cryocannon_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.25D; + GL11.glRotated(25, 0, 0, 1); + GL11.glTranslated(1, 0, -0.3); + GL11.glRotated(80, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + ItemGunBase gun = (ItemGunBase) item.getItem(); + + ResourceManager.cryocannon.renderPart("Gun"); + ResourceManager.cryocannon.renderPart("Rotor"); + Minecraft.getMinecraft().renderEngine.bindTexture(fill_tex[MathHelper.clamp_int(ItemGunBase.getMag(item) * fill_tex.length / gun.mainConfig.ammoCap, 0, fill_tex.length - 1)]); + ResourceManager.cryocannon.renderPart("Fuel"); + Minecraft.getMinecraft().renderEngine.bindTexture(turbine_tex[MathHelper.clamp_int(turbine_tex.length - 1 - ItemCryoCannon.getTurbine(item) * turbine_tex.length / 100, 0, turbine_tex.length - 1)]); + ResourceManager.cryocannon.renderPart("Spin"); + Minecraft.getMinecraft().renderEngine.bindTexture(pressure_tex[MathHelper.clamp_int(ItemCryoCannon.getPressure(item) * pressure_tex.length / 1000, 0, pressure_tex.length - 1)]); + ResourceManager.cryocannon.renderPart("Pressure"); + + break; + + case EQUIPPED: + + double scale = 0.5D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(15F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(0.75F, -2.5F, 3.5F); + + break; + + case ENTITY: + + double s1 = 0.25D; + GL11.glScaled(s1, s1, s1); + GL11.glTranslated(0, 0, 3); + + break; + + case INVENTORY: + + double s = 2.5D; + GL11.glTranslated(1, 6, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glRotated(-90, 0, 1, 0); + GL11.glScaled(s, s, -s); + + break; + + default: break; + } + + if(type != ItemRenderType.EQUIPPED_FIRST_PERSON) ResourceManager.cryocannon.renderAll(); + + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java index 4573ea079..d1c7b88aa 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFBolt.java @@ -2,6 +2,7 @@ package com.hbm.render.item.weapon; import org.lwjgl.opengl.GL11; +import com.hbm.items.ModItems; import com.hbm.render.anim.HbmAnimations; import net.minecraft.client.Minecraft; @@ -52,6 +53,11 @@ public class ItemRenderWeaponFFBolt implements IItemRenderer { case EQUIPPED_FIRST_PERSON: + if(item.getItem() == ModItems.gun_bolt_action_saturnite && Minecraft.getMinecraft().thePlayer.isSneaking()) { + GL11.glPopMatrix(); + return; + } + double s0 = 0.5D; GL11.glTranslated(0.5, 0.25, -0.2); GL11.glScaled(s0, s0, s0); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java index b95260b35..f63f1d68e 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponFFMaresLeg.java @@ -67,6 +67,9 @@ public class ItemRenderWeaponFFMaresLeg implements IItemRenderer { GL11.glTranslated(-0.71, 0.375, 0); GL11.glRotated(25, 1, 0, 0); GL11.glRotated(1, 0, 1, 0); + GL11.glRotated(-3, 0, 0, 1); + GL11.glRotated(0.2, 0, 1, 0); + GL11.glTranslated(-0.006, -0.005, 0.4); } double[] recoil = HbmAnimations.getRelevantTransformation("LEVER_RECOIL"); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java new file mode 100644 index 000000000..e49b57531 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponRemington.java @@ -0,0 +1,108 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponRemington implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.remington_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double[] recoilT = HbmAnimations.getRelevantTransformation("RECOIL_TRANSLATE"); + double[] pump = HbmAnimations.getRelevantTransformation("PUMP"); + + double s0 = 0.35D; + GL11.glRotated(25, 0, 0, 1); + GL11.glRotated(-10, 0, 1, 0); + GL11.glTranslated(1.25, -1.25, -0.25); + GL11.glScaled(s0, s0, s0); + + GL11.glTranslated(recoilT[2], 0, 0); + + ResourceManager.remington.renderPart("Gun"); + + GL11.glTranslated(pump[2] * 0.5, 0, 0); + + ResourceManager.remington.renderPart("Pump"); + + break; + + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-80, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(2.5F, -3.5F, -2F); + + ResourceManager.remington.renderAll(); + + break; + + case ENTITY: + + double s1 = 0.25D; + GL11.glScaled(s1, s1, s1); + GL11.glTranslated(0, -3, 0); + + ResourceManager.remington.renderAll(); + + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 1.25D; + GL11.glTranslated(4, 11, 0); + GL11.glRotated(-135, 0, 0, 1); + GL11.glScaled(s, s, -s); + + ResourceManager.remington.renderAll(); + + break; + + default: break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java index 555795bc4..33de43282 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponSpas12.java @@ -112,5 +112,4 @@ public class ItemRenderWeaponSpas12 implements IItemRenderer { GL11.glPopMatrix(); } - } diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java new file mode 100644 index 000000000..b46f19474 --- /dev/null +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderWeaponTau.java @@ -0,0 +1,116 @@ +package com.hbm.render.item.weapon; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemGunGauss; +import com.hbm.main.ResourceManager; +import com.hbm.render.anim.HbmAnimations; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; + +public class ItemRenderWeaponTau implements IItemRenderer { + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + + return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING); + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.tau_tex); + + switch(type) { + + case EQUIPPED_FIRST_PERSON: + + double s0 = 0.35D; + GL11.glRotated(25, 0, 0, 1); + GL11.glTranslated(1.5, 0, 0.1); + GL11.glRotated(80, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + + double[] recoil = HbmAnimations.getRelevantTransformation("RECOIL"); + GL11.glTranslated(0, 0, recoil[0] * -1); + GL11.glTranslated(0, 0, -3); + GL11.glRotated(recoil[0] * -5, 1, 0, 0); + GL11.glTranslated(0, 0, 3); + + ResourceManager.tau.renderPart("Body"); + + if(ItemGunGauss.getCharge(item) > 0) { + GL11.glTranslated(0, -0.2, 0); + GL11.glRotated(System.currentTimeMillis() % 360D, 0, 0, 1); + GL11.glTranslated(0, 0.2, 0); + } + + ResourceManager.tau.renderPart("Rotor"); + + break; + + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(10, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(2F, 1F, 3F); + + ResourceManager.tau.renderAll(); + + break; + + case ENTITY: + + double s1 = 0.25D; + GL11.glScaled(s1, s1, s1); + GL11.glTranslated(0, 1, 0); + + ResourceManager.tau.renderAll(); + + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 1.6D; + GL11.glTranslated(8, 7, 0); + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(-135, 1, 0, 0); + GL11.glScaled(s, s, -s); + + ResourceManager.tau.renderAll(); + + break; + + default: break; + } + + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderXVL1456.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderXVL1456.java deleted file mode 100644 index dacfc20b4..000000000 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderXVL1456.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.hbm.render.item.weapon; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.render.model.ModelXVL1456; - -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumAction; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.IItemRenderer; - -public class ItemRenderXVL1456 implements IItemRenderer { - - protected ModelXVL1456 swordModel; - - public ItemRenderXVL1456() { - swordModel = new ModelXVL1456(); - } - - @Override - public boolean handleRenderType(ItemStack item, ItemRenderType type) { - switch(type) { - case EQUIPPED: - case EQUIPPED_FIRST_PERSON: - case ENTITY: - return true; - default: return false; - } - } - - @Override - public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { - return false; - } - - @Override - public void renderItem(ItemRenderType type, ItemStack item, Object... data) { - float f = 0; - if((Entity)data[1] instanceof EntityPlayer) - //f = ((EntityPlayer)data[1]).getItemInUseCount() > 0 && ((Entity)data[1]).isSneaking() ? 0.05F : 0; - f = (((EntityPlayer)data[1]).getItemInUse() != null &&((EntityPlayer)data[1]).getItemInUse().getItemUseAction() == EnumAction.bow) ? 0.05F : 0; - switch(type) { - case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelXVL1456.png")); - GL11.glRotatef(-150.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.9F, -0.1F, -0.1F); - GL11.glScalef(0.3F, 0.3F, 0.3F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - GL11.glPopMatrix(); - break; - case EQUIPPED: - case ENTITY: - GL11.glPushMatrix(); - GL11.glEnable(GL11.GL_CULL_FACE); - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelXVL1456.png")); - GL11.glTranslatef(0.25F, 0F, 1F); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, -0.2F, -0.2F); - GL11.glScalef(0.75F, 0.75F, 0.75F); - swordModel.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, f); - GL11.glPopMatrix(); - default: break; - } - } -} diff --git a/src/main/java/com/hbm/render/model/ModelArmorBase.java b/src/main/java/com/hbm/render/model/ModelArmorBase.java index 70134b4f6..81af0edba 100644 --- a/src/main/java/com/hbm/render/model/ModelArmorBase.java +++ b/src/main/java/com/hbm/render/model/ModelArmorBase.java @@ -39,16 +39,16 @@ public class ModelArmorBase extends ModelBiped { rightFoot = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); } - public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity entity) { + public void setRotationAngles(float walkCycle, float walkAmplitude, float idleCycle, float headYaw, float headPitch, float scale, Entity entity) { - head.rotateAngleY = p_78087_4_ / (180F / (float) Math.PI); - head.rotateAngleX = p_78087_5_ / (180F / (float) Math.PI); - rightArm.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F + (float) Math.PI) * 2.0F * p_78087_2_ * 0.5F; - leftArm.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F) * 2.0F * p_78087_2_ * 0.5F; + head.rotateAngleY = headYaw / (180F / (float) Math.PI); + head.rotateAngleX = headPitch / (180F / (float) Math.PI); + rightArm.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F + (float) Math.PI) * 2.0F * walkAmplitude * 0.5F; + leftArm.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F) * 2.0F * walkAmplitude * 0.5F; rightArm.rotateAngleZ = 0.0F; leftArm.rotateAngleZ = 0.0F; - rightFoot.rotateAngleX = rightLeg.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F) * 1.4F * p_78087_2_; - leftFoot.rotateAngleX = leftLeg.rotateAngleX = MathHelper.cos(p_78087_1_ * 0.6662F + (float) Math.PI) * 1.4F * p_78087_2_; + rightFoot.rotateAngleX = rightLeg.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F) * 1.4F * walkAmplitude; + leftFoot.rotateAngleX = leftLeg.rotateAngleX = MathHelper.cos(walkCycle * 0.6662F + (float) Math.PI) * 1.4F * walkAmplitude; rightFoot.rotateAngleY = rightLeg.rotateAngleY = 0.0F; leftFoot.rotateAngleY = leftLeg.rotateAngleY = 0.0F; @@ -143,10 +143,10 @@ public class ModelArmorBase extends ModelBiped { head.offsetY = 0.0F; } - rightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - leftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - rightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; - leftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + rightArm.rotateAngleZ += MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + leftArm.rotateAngleZ -= MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + rightArm.rotateAngleX += MathHelper.sin(idleCycle * 0.067F) * 0.05F; + leftArm.rotateAngleX -= MathHelper.sin(idleCycle * 0.067F) * 0.05F; if(this.aimedBow) { f6 = 0.0F; @@ -159,10 +159,10 @@ public class ModelArmorBase extends ModelBiped { leftArm.rotateAngleX = -((float) Math.PI / 2F) + head.rotateAngleX; rightArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; leftArm.rotateAngleX -= f6 * 1.2F - f7 * 0.4F; - rightArm.rotateAngleZ += MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - leftArm.rotateAngleZ -= MathHelper.cos(p_78087_3_ * 0.09F) * 0.05F + 0.05F; - rightArm.rotateAngleX += MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; - leftArm.rotateAngleX -= MathHelper.sin(p_78087_3_ * 0.067F) * 0.05F; + rightArm.rotateAngleZ += MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + leftArm.rotateAngleZ -= MathHelper.cos(idleCycle * 0.09F) * 0.05F + 0.05F; + rightArm.rotateAngleX += MathHelper.sin(idleCycle * 0.067F) * 0.05F; + leftArm.rotateAngleX -= MathHelper.sin(idleCycle * 0.067F) * 0.05F; } } diff --git a/src/main/java/com/hbm/render/model/ModelArmorEnvsuit.java b/src/main/java/com/hbm/render/model/ModelArmorEnvsuit.java new file mode 100644 index 000000000..0f5e0aa7a --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelArmorEnvsuit.java @@ -0,0 +1,80 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.Entity; + +public class ModelArmorEnvsuit extends ModelArmorBase { + + ModelRendererObj lamps; + + public ModelArmorEnvsuit(int type) { + super(type); + + head = new ModelRendererObj(ResourceManager.armor_envsuit, "Helmet"); + lamps = new ModelRendererObj(ResourceManager.armor_envsuit, "Lamps"); + body = new ModelRendererObj(ResourceManager.armor_envsuit, "Chest"); + leftArm = new ModelRendererObj(ResourceManager.armor_envsuit, "LeftArm").setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(ResourceManager.armor_envsuit, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(ResourceManager.armor_envsuit, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(ResourceManager.armor_envsuit, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(ResourceManager.armor_envsuit, "LeftFoot").setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(ResourceManager.armor_envsuit, "RightFoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + head.copyTo(lamps); + + GL11.glPushMatrix(); + + if(type == 0) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_helmet); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + head.render(par7); + GL11.glDisable(GL11.GL_BLEND); + + /// START GLOW /// + float lastX = OpenGlHelper.lastBrightnessX; + float lastY = OpenGlHelper.lastBrightnessY; + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 0.8F); + lamps.render(par7); + GL11.glColor3f(1F, 1F, 1F); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, lastX, lastY); + /// END GLOW /// + } + if(type == 1) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_chest); + body.render(par7); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_arm); + leftArm.render(par7); + rightArm.render(par7); + } + if(type == 2) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_leg); + leftLeg.render(par7); + rightLeg.render(par7); + } + if(type == 3) { + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.envsuit_leg); + leftFoot.render(par7); + rightFoot.render(par7); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderAssembler.java b/src/main/java/com/hbm/render/tileentity/RenderAssembler.java index b03698a8b..7f9436fd9 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderAssembler.java +++ b/src/main/java/com/hbm/render/tileentity/RenderAssembler.java @@ -33,16 +33,16 @@ public class RenderAssembler extends TileEntitySpecialRenderer { GL11.glRotatef(180, 0F, 1F, 0F); switch(tileEntity.getBlockMetadata()) { - case 2: + case 14: GL11.glRotatef(180, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; - case 4: + case 13: GL11.glRotatef(270, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; - case 3: + case 15: GL11.glRotatef(0, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; - case 5: + case 12: GL11.glRotatef(90, 0F, 1F, 0F); GL11.glTranslated(0.5D, 0.0D, -0.5D); break; } @@ -99,15 +99,15 @@ public class RenderAssembler extends TileEntitySpecialRenderer { GL11.glRotatef(180, 0F, 1F, 0F); switch(tileEntity.getBlockMetadata()) { - case 2: + case 14: GL11.glTranslated(-1, 0, 0); GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: + case 13: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: + case 15: GL11.glTranslated(0, 0, -1); GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: + case 12: GL11.glTranslated(-1, 0, -1); GL11.glRotatef(90, 0F, 1F, 0F); break; } @@ -150,15 +150,15 @@ public class RenderAssembler extends TileEntitySpecialRenderer { GL11.glRotatef(180, 0F, 1F, 0F); switch(tileEntity.getBlockMetadata()) { - case 2: + case 14: GL11.glTranslated(-1, 0, 0); GL11.glRotatef(180, 0F, 1F, 0F); break; - case 4: + case 13: GL11.glRotatef(270, 0F, 1F, 0F); break; - case 3: + case 15: GL11.glTranslated(0, 0, -1); GL11.glRotatef(0, 0F, 1F, 0F); break; - case 5: + case 12: GL11.glTranslated(-1, 0, -1); GL11.glRotatef(90, 0F, 1F, 0F); break; } diff --git a/src/main/java/com/hbm/render/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index 58f96d995..5d2e0ea14 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -45,6 +45,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { public static final ResourceLocation bobble_nos = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/nos.png"); public static final ResourceLocation bobble_drillgon = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/drillgon200.png"); public static final ResourceLocation bobble_cirno = new ResourceLocation(RefStrings.MODID, "textures/models/trinkets/cirno.png"); + 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"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { @@ -94,6 +96,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { case VAER: bindTexture(bobble_vaer); break; case NOS: bindTexture(bobble_nos); break; case DRILLGON: bindTexture(bobble_drillgon); break; + case MICROWAVE: bindTexture(bobble_microwave); break; + case PEEP: bindTexture(bobble_peep); break; default: bindTexture(ResourceManager.universal); } @@ -197,6 +201,9 @@ public class RenderBobble extends TileEntitySpecialRenderer { case VAER: rotLeftArm = new double[]{0, -5, 45}; rotRightArm = new double[]{0, 15, 45}; + case PEEP: + rotLeftArm = new double[]{0, 0, 1}; + rotRightArm = new double[]{0, 0, 1}; break; } } @@ -209,6 +216,8 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glPushMatrix(); GL11.glRotated(rotBody, 0, 1, 0); + if(type == BobbleType.PEEP) bobble.renderPart("PeepTail"); + GL11.glDisable(GL11.GL_CULL_FACE); String suffix = type.skinLayers ? "" : "17"; @@ -278,9 +287,9 @@ public class RenderBobble extends TileEntitySpecialRenderer { GL11.glTranslated(0, -1.75, 0); bobble.renderPart("Head" + suffix); - - if(type == BobbleType.VT) - bobble.renderPart("Horn"); + + if(type == BobbleType.VT) bobble.renderPart("Horn"); + if(type == BobbleType.PEEP) bobble.renderPart("PeepHat"); if(type == BobbleType.VAER) { GL11.glTranslated(0.25, 1.9, 0.075); @@ -311,19 +320,19 @@ public class RenderBobble extends TileEntitySpecialRenderer { public void renderPellet(BobbleType type) { GL11.glEnable(GL11.GL_CULL_FACE); - + GL11.glPushMatrix(); GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); GL11.glDisable(GL11.GL_LIGHTING); bobble.renderPart("Pellet"); - + GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_BLEND); 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(System.currentTimeMillis() * 0.001D) * 0.05F); bobble.renderPart("PelletShine"); GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); @@ -395,9 +404,9 @@ public class RenderBobble extends TileEntitySpecialRenderer { renderItem(new ItemStack(ModItems.coin_maskman, 1, 5)); break; case ADAM29: - GL11.glTranslated(0.45, 1.15, 0.4); + GL11.glTranslated(0.4, 1.15, 0.4); GL11.glScaled(0.5, 0.5, 0.5); - renderItem(new ItemStack(ModItems.coffee)); + renderItem(new ItemStack(ModItems.can_redbomb)); break; case PHEO: GL11.glTranslated(0.5, 1.15, 0.45); diff --git a/src/main/java/com/hbm/render/tileentity/RenderChemplant.java b/src/main/java/com/hbm/render/tileentity/RenderChemplant.java index da86e40ec..6a1a936ac 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderChemplant.java +++ b/src/main/java/com/hbm/render/tileentity/RenderChemplant.java @@ -42,7 +42,9 @@ public class RenderChemplant extends TileEntitySpecialRenderer { bindTexture(ResourceManager.chemplant_body_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.chemplant_body.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderChimneyBrick.java b/src/main/java/com/hbm/render/tileentity/RenderChimneyBrick.java new file mode 100644 index 000000000..bbab3e1ad --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderChimneyBrick.java @@ -0,0 +1,56 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderChimneyBrick extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glRotatef(180, 0F, 1F, 0F); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_brick_tex); + ResourceManager.chimney_brick.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.chimney_brick); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.25, 2.25, 2.25); + } + public void renderCommon() { + GL11.glScaled(0.5, 0.5, 0.5); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.chimney_brick_tex); + ResourceManager.chimney_brick.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCoker.java b/src/main/java/com/hbm/render/tileentity/RenderCoker.java new file mode 100644 index 000000000..0ed00d812 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCoker.java @@ -0,0 +1,54 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderCoker extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.coker_tex); + ResourceManager.coker.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_coker); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -5, 0); + GL11.glScaled(2.75, 2.75, 2.75); + } + public void renderCommon() { + GL11.glScaled(0.25, 0.25, 0.25); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.coker_tex); + ResourceManager.coker.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCompressor.java b/src/main/java/com/hbm/render/tileentity/RenderCompressor.java new file mode 100644 index 000000000..13e9d2c64 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCompressor.java @@ -0,0 +1,99 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.tileentity.machine.TileEntityMachineCompressor; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderCompressor extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + switch(tile.getBlockMetadata() - BlockDummyable.offset) { + case 3: GL11.glRotatef(270, 0F, 1F, 0F); break; + case 5: GL11.glRotatef(0, 0F, 1F, 0F); break; + case 2: GL11.glRotatef(90, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(180, 0F, 1F, 0F); break; + } + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.compressor_tex); + ResourceManager.compressor.renderPart("Compressor"); + + TileEntityMachineCompressor compressor = (TileEntityMachineCompressor) tile; + float lift = compressor.prevPiston + (compressor.piston - compressor.prevPiston) * interp; + float fan = compressor.prevFanSpin + (compressor.fanSpin - compressor.prevFanSpin) * interp; + + GL11.glPushMatrix(); + GL11.glTranslatef(0, lift * 3 - 3, 0); + ResourceManager.compressor.renderPart("Pump"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 0); + GL11.glRotatef(fan, 1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.compressor.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_compressor); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -4, 0); + GL11.glScaled(3, 3, 3); + } + public void renderCommon() { + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_SMOOTH); + + GL11.glScaled(0.5, 0.5, 0.5); + + bindTexture(ResourceManager.compressor_tex); + ResourceManager.compressor.renderPart("Compressor"); + + double lift = (System.currentTimeMillis() * 0.005) % 9; + + if(lift > 3) lift = 3 - (lift - 3) / 2D; + + GL11.glPushMatrix(); + GL11.glTranslated(0, -lift, 0); + ResourceManager.compressor.renderPart("Pump"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 1.5, 0); + GL11.glRotated((System.currentTimeMillis() * 0.25) % 360D, 1, 0, 0); + GL11.glTranslated(0, -1.5, 0); + ResourceManager.compressor.renderPart("Fan"); + GL11.glPopMatrix(); + + GL11.glShadeModel(GL11.GL_FLAT); + GL11.glEnable(GL11.GL_CULL_FACE); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderCustomMachine.java b/src/main/java/com/hbm/render/tileentity/RenderCustomMachine.java new file mode 100644 index 000000000..1c5d6835a --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderCustomMachine.java @@ -0,0 +1,50 @@ +package com.hbm.render.tileentity; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.render.util.SmallBlockPronter; +import com.hbm.tileentity.machine.TileEntityCustomMachine; + +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; + +public class RenderCustomMachine extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + + TileEntityCustomMachine custom = (TileEntityCustomMachine) tile; + CustomMachineConfigJSON.MachineConfiguration config = custom.config; + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + if(config != null && !custom.structureOK) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + bindTexture(TextureMap.locationBlocksTexture); + SmallBlockPronter.startDrawing(); + for(CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition comp : config.components) { + int rx = -dir.offsetX * comp.x + rot.offsetX * comp.x; + int ry = +comp.y; + int rz = -dir.offsetZ * comp.z + rot.offsetZ * comp.z; + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + rx = +dir.offsetZ * comp.z - rot.offsetZ * comp.z; + rz = +dir.offsetX * comp.x - rot.offsetX * comp.x; + } + + int index = (int) ((System.currentTimeMillis() / 1000) % comp.metas.size()); + SmallBlockPronter.drawSmolBlockAt(comp.block, comp.metas.get(index).getAsInt(), rx, ry, rz); + + } + + SmallBlockPronter.draw(); + + GL11.glPopMatrix(); + } + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java b/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java index 1849842df..080be2114 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java +++ b/src/main/java/com/hbm/render/tileentity/RenderDoorGeneric.java @@ -65,7 +65,7 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer { AnimatedModel animModel = door.getAnimatedModel(); if(animModel != null){ Animation anim = door.getAnim(); - bindTexture(door.getTextureForPart("")); + bindTexture(door.getTextureForPart(te.getSkinIndex(), "")); long time = System.currentTimeMillis(); long startTime = te.state > 1 ? te.animStartTime : time; boolean reverse = te.state == 1 || te.state == 2; @@ -83,14 +83,14 @@ public class RenderDoorGeneric extends TileEntitySpecialRenderer { if(!door.doesRender(p.getLeft(), false)) continue; GL11.glPushMatrix(); - bindTexture(door.getTextureForPart(p.getLeft())); + bindTexture(door.getTextureForPart(te.getSkinIndex(), p.getLeft())); doPartTransform(door, p.getLeft(), openTicks, false); GL11.glCallList(p.getRight()); for(String name : door.getChildren(p.getLeft())){ if(!door.doesRender(name, true)) continue; GL11.glPushMatrix(); - bindTexture(door.getTextureForPart(name)); + bindTexture(door.getTextureForPart(te.getSkinIndex(), name)); doPartTransform(door, name, openTicks, true); model.renderPart(name); GL11.glPopMatrix(); diff --git a/src/main/java/com/hbm/render/tileentity/RenderGasDuct.java b/src/main/java/com/hbm/render/tileentity/RenderGasDuct.java deleted file mode 100644 index 460d20b52..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderGasDuct.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.conductor.TileEntityGasDuct; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -public class RenderGasDuct extends TileEntitySpecialRenderer { - - public ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/blocks/gas_duct.png"); - float pixel = 1F/16F; - float textureP = 1F / 32F; - - @Override - public void renderTileEntityAt(TileEntity tileentity, double offsetX, double offsetY, double offsetZ, float f) { - GL11.glTranslated(offsetX, offsetY, offsetZ); - GL11.glDisable(GL11.GL_LIGHTING); - this.bindTexture(texture); - drawCore(tileentity); - TileEntityGasDuct cable = (TileEntityGasDuct) tileentity; - for(int i = 0; i < cable.connections.length; i++) - { - if(cable.connections[i] != null) - { - drawConnection(cable.connections[i]); - } - } - GL11.glTranslated(-offsetX, -offsetY, -offsetZ); - GL11.glEnable(GL11.GL_LIGHTING); - - } - - public void drawCore(TileEntity tileentity) { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - tesseract.draw(); - } - - public void drawConnection(ForgeDirection direction) - { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.draw(); - - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(-180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(-270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(-90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(-270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(-90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java b/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java index 225cddd2c..c4cad00da 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java +++ b/src/main/java/com/hbm/render/tileentity/RenderITERMultiblock.java @@ -3,14 +3,12 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; -import com.hbm.render.util.IconUtil; import com.hbm.render.util.SmallBlockPronter; import com.hbm.tileentity.machine.TileEntityITERStruct; -import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; public class RenderITERMultiblock extends TileEntitySpecialRenderer { @@ -19,50 +17,35 @@ public class RenderITERMultiblock extends TileEntitySpecialRenderer { GL11.glPushMatrix(); - GL11.glTranslatef((float)x, (float)y, (float)z); + GL11.glTranslated(x, y, z); + + bindTexture(TextureMap.locationBlocksTexture); + SmallBlockPronter.startDrawing(); + + int[][][] layout = TileEntityITERStruct.layout; + + for(int iy = -2; iy <= 2; iy++) { + int iny = 2 - Math.abs(iy); + + for(int ix = 0; ix < layout[0].length; ix++) { + for(int iz = 0; iz < layout[0][0].length; iz++) { + + int block = layout[iny][ix][iz]; + + switch(block) { + case 0: + continue; + case 1: SmallBlockPronter.drawSmolBlockAt(ModBlocks.fusion_conductor, 1, ix - 7F, iy + 2, iz - 7F); break; + case 2: SmallBlockPronter.drawSmolBlockAt(ModBlocks.fusion_center, 0, ix - 7F, iy + 2, iz - 7F); break; + case 3: SmallBlockPronter.drawSmolBlockAt(ModBlocks.fusion_motor, 0, ix - 7F, iy + 2, iz - 7F); break; + case 4: SmallBlockPronter.drawSmolBlockAt(ModBlocks.reinforced_glass, 0, ix - 7F, iy + 2, iz - 7F); break; + } + } + } + } + + SmallBlockPronter.draw(); - GL11.glEnable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_CULL_FACE); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); - GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); - GL11.glDisable(GL11.GL_ALPHA_TEST); - GL11.glDepthMask(false); - - ResourceLocation magnet = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_conductor, 2); - ResourceLocation solenoid = IconUtil.getTextureFromBlockAndSide(ModBlocks.fusion_center, 2); - ResourceLocation motor = IconUtil.getTextureFromBlock(ModBlocks.fusion_motor); - ResourceLocation glass = IconUtil.getTextureFromBlock(ModBlocks.reinforced_glass); - - int[][][] layout = TileEntityITERStruct.layout; - - for(int iy = -2; iy <= 2; iy ++) { - - int iny = 2 - Math.abs(iy); - - for(int ix = 0; ix < layout[0].length; ix++) { - - for(int iz = 0; iz < layout[0][0].length; iz++) { - - int block = layout[iny][ix][iz]; - - switch(block) { - case 0: continue; - case 1: bindTexture(magnet); break; - case 2: bindTexture(solenoid); break; - case 3: bindTexture(motor); break; - case 4: bindTexture(glass); break; - } - - SmallBlockPronter.renderSmolBlockAt(ix - 6F, iy + 3, iz - 7F); - } - } - } - - GL11.glDisable(GL11.GL_BLEND); - GL11.glEnable(GL11.GL_ALPHA_TEST); - GL11.glDepthMask(true); - - GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/tileentity/RenderIndustrialBoiler.java b/src/main/java/com/hbm/render/tileentity/RenderIndustrialBoiler.java new file mode 100644 index 000000000..f2d0da729 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderIndustrialBoiler.java @@ -0,0 +1,51 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderIndustrialBoiler extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.boiler_industrial_tex); + ResourceManager.boiler_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.machine_industrial_boiler); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase( ) { + public void renderInventory() { + GL11.glTranslated(0, -3, 0); + GL11.glScaled(2.5, 2.5, 2.5); + } + public void renderCommonWithStack(ItemStack item) { + GL11.glRotatef(90, 0F, 1F, 0F); + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.boiler_industrial_tex); + ResourceManager.boiler_industrial.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java b/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java index cfdc25b26..fbe36e6e2 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java +++ b/src/main/java/com/hbm/render/tileentity/RenderMicrowave.java @@ -10,36 +10,35 @@ import net.minecraft.tileentity.TileEntity; public class RenderMicrowave extends TileEntitySpecialRenderer { - @Override - public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) - { - GL11.glPushMatrix(); - GL11.glTranslated(x + 0.5D, y - 0.75, z + 0.5D); - GL11.glEnable(GL11.GL_LIGHTING); - + @Override + public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5D, y - 0.785, z + 0.5D); + GL11.glEnable(GL11.GL_LIGHTING); + switch(tileEntity.getBlockMetadata()) { case 2: GL11.glRotatef(0, 0F, 1F, 0F); break; 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; } - GL11.glTranslated(-0.5D, 0.0D, 0.5D); - - TileEntityMicrowave mic = (TileEntityMicrowave)tileEntity; + GL11.glTranslated(-0.5D, 0.0D, 0.65D); + + TileEntityMicrowave mic = (TileEntityMicrowave) tileEntity; bindTexture(ResourceManager.microwave_tex); - ResourceManager.microwave.renderPart("mainbody_Cube.001"); - ResourceManager.microwave.renderPart("window_Cube.002"); + ResourceManager.microwave.renderPart("mainbody_Cube.001"); + ResourceManager.microwave.renderPart("window_Cube.002"); - double rot = (System.currentTimeMillis() * mic.speed / 10D) % 360; - - if(mic.time > 0) { - GL11.glTranslated(0.575D, 0.0D, -0.45D); + double rot = (System.currentTimeMillis() * mic.speed / 10D) % 360; + + if(mic.time > 0) { + GL11.glTranslated(0.575D, 0.0D, -0.45D); GL11.glRotated(rot, 0F, 1F, 0F); - GL11.glTranslated(-0.575D, 0.0D, 0.45D); - } - ResourceManager.microwave.renderPart("plate_Cylinder"); + GL11.glTranslated(-0.575D, 0.0D, 0.45D); + } + ResourceManager.microwave.renderPart("plate_Cylinder"); - GL11.glPopMatrix(); - } + GL11.glPopMatrix(); + } } diff --git a/src/main/java/com/hbm/render/tileentity/RenderOilDuct.java b/src/main/java/com/hbm/render/tileentity/RenderOilDuct.java deleted file mode 100644 index ec867972c..000000000 --- a/src/main/java/com/hbm/render/tileentity/RenderOilDuct.java +++ /dev/null @@ -1,153 +0,0 @@ -package com.hbm.render.tileentity; - -import org.lwjgl.opengl.GL11; - -import com.hbm.lib.RefStrings; -import com.hbm.tileentity.conductor.TileEntityOilDuct; - -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.util.ForgeDirection; - -public class RenderOilDuct extends TileEntitySpecialRenderer { - - public ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/blocks/oil_duct_alt.png"); - float pixel = 1F/16F; - float textureP = 1F / 32F; - - @Override - public void renderTileEntityAt(TileEntity tileentity, double offsetX, double offsetY, double offsetZ, float f) { - GL11.glTranslated(offsetX, offsetY, offsetZ); - GL11.glDisable(GL11.GL_LIGHTING); - this.bindTexture(texture); - drawCore(tileentity); - TileEntityOilDuct cable = (TileEntityOilDuct) tileentity; - for(int i = 0; i < cable.connections.length; i++) - { - if(cable.connections[i] != null) - { - drawConnection(cable.connections[i]); - } - } - GL11.glTranslated(-offsetX, -offsetY, -offsetZ); - GL11.glEnable(GL11.GL_LIGHTING); - - } - - public void drawCore(TileEntity tileentity) { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 11 * pixel / 2, 0 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 11 * pixel / 2, 1 - 11 * pixel / 2, 0 * textureP, 5 * textureP); - tesseract.draw(); - } - - public void drawConnection(ForgeDirection direction) - { - Tessellator tesseract = Tessellator.instance; - tesseract.startDrawingQuads(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 0 * textureP); - - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 1 - 11 * pixel / 2, 5 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 1 - 11 * pixel / 2, 10 * textureP, 5 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1, 11 * pixel / 2, 10 * textureP, 0 * textureP); - tesseract.addVertexWithUV(11 * pixel / 2, 1 - 11 * pixel / 2, 11 * pixel / 2, 5 * textureP, 0 * textureP); - tesseract.draw(); - - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - if(direction.equals(ForgeDirection.UP)) - { - - } - if(direction.equals(ForgeDirection.DOWN)) - { - GL11.glRotatef(-180, 1, 0, 0); - } - if(direction.equals(ForgeDirection.NORTH)) - { - GL11.glRotatef(-270, 1, 0, 0); - } - if(direction.equals(ForgeDirection.SOUTH)) - { - GL11.glRotatef(-90, 1, 0, 0); - } - if(direction.equals(ForgeDirection.EAST)) - { - GL11.glRotatef(-270, 0, 0, 1); - } - if(direction.equals(ForgeDirection.WEST)) - { - GL11.glRotatef(-90, 0, 0, 1); - } - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - } -} diff --git a/src/main/java/com/hbm/render/tileentity/RenderPistonInserter.java b/src/main/java/com/hbm/render/tileentity/RenderPistonInserter.java new file mode 100644 index 000000000..e09129898 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderPistonInserter.java @@ -0,0 +1,100 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; +import com.hbm.render.util.RenderDecoItem; + +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderPistonInserter extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + switch(tile.getBlockMetadata()) { + case 0: GL11.glRotatef(180, 1F, 0F, 0F); break; + case 1: break; + case 2: GL11.glRotatef(-90, 1F, 0F, 0F); + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 0F, 1F); + GL11.glRotatef(-90, 0F, 1F, 0F); break; + case 3: GL11.glRotatef(90, 1F, 0F, 0F); break; + case 5: GL11.glRotatef(-90, 0F, 0F, 1F); + GL11.glRotatef(90, 0F, 1F, 0F); break; + } + + GL11.glTranslated(0D, -0.5, 0D); + + bindTexture(ResourceManager.piston_inserter_tex); + ResourceManager.piston_inserter.renderPart("Frame"); + + TileEntityPistonInserter piston = (TileEntityPistonInserter)tile; + double e = (piston.lastExtend + (piston.renderExtend - piston.lastExtend) * interp) / (double) piston.maxExtend; + GL11.glTranslated(0, e * 0.9375D, 0); + ResourceManager.piston_inserter.renderPart("Piston"); + + RenderItem itemRenderer = new RenderDecoItem(this); + itemRenderer.setRenderManager(RenderManager.instance); + + if(piston.slot != null) { + ItemStack stack = piston.slot.copy(); + + EntityItem item = new EntityItem(null, 0.0D, 0.0D, 0.0D, stack); + item.getEntityItem().stackSize = 1; + item.hoverStart = 0.0F; + + if(stack.getItem() instanceof ItemBlock) { + GL11.glTranslated(0.0D, 1.125D, 0.0D); + } else { + GL11.glTranslated(0.0D, 1.0625D, 0.1D); + if(!RenderManager.instance.options.fancyGraphics) + GL11.glTranslated(0.0D, 0.01D, 0.0D); + + GL11.glRotated(90, -1, 0, 0); + } + + RenderItem.renderInFrame = true; + itemRenderer.doRender(item, 0.0D, 0.0D, 0.0D, 0.0F, 0.0F); + RenderItem.renderInFrame = false; + } + + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.piston_inserter); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + double scale = 5; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + bindTexture(ResourceManager.piston_inserter_tex); + ResourceManager.piston_inserter.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderWatz.java b/src/main/java/com/hbm/render/tileentity/RenderWatz.java index b37cf2761..4fae3299a 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderWatz.java +++ b/src/main/java/com/hbm/render/tileentity/RenderWatz.java @@ -26,5 +26,4 @@ public class RenderWatz extends TileEntitySpecialRenderer { GL11.glPopMatrix(); } - } diff --git a/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java b/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java new file mode 100644 index 000000000..51159d7bc --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderWatzMultiblock.java @@ -0,0 +1,62 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.render.util.SmallBlockPronter; + +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; + +public class RenderWatzMultiblock extends TileEntitySpecialRenderer { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + bindTexture(TextureMap.locationBlocksTexture); + SmallBlockPronter.startDrawing(); + + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 0F, 1F, 0F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 0F, 2F, 0F); + + for(int i = 0; i < 3; i++) { + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 1F, i, 0F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 2F, i, 0F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 0F, i, 1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 0F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, -1F, i, 0F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, -2F, i, 0F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 0F, i, -1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 0F, i, -2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 1F, i, 1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, 1F, i, -1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, -1F, i, 1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_element, 0, -1F, i, -1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 2F, i, 1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 2F, i, -1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 1F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -1F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -2F, i, 1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -2F, i, -1F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, 1F, i, -2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_cooler, 0, -1F, i, -2F); + for(int j = -1; j < 2; j++) { + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 3F, i, j); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, 3F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -3F, i, j); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, j, i, -3F); + } + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, 2F, i, -2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, 2F); + SmallBlockPronter.drawSmolBlockAt(ModBlocks.watz_end, 1, -2F, i, -2F); + } + + SmallBlockPronter.draw(); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RenderWatzPump.java b/src/main/java/com/hbm/render/tileentity/RenderWatzPump.java new file mode 100644 index 000000000..4805281fe --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderWatzPump.java @@ -0,0 +1,54 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderWatzPump extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) { + + GL11.glPushMatrix(); + + GL11.glTranslatef((float) x + 0.5F, (float) y, (float) z + 0.5F); + + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.watz_pump_tex); + ResourceManager.watz_pump.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.watz_pump); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -1.5, 0); + double scale = 5; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.watz_pump_tex); + ResourceManager.watz_pump.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + }}; + } +} diff --git a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java index 26a0d0625..eabd2569a 100644 --- a/src/main/java/com/hbm/render/tileentity/RendererObjTester.java +++ b/src/main/java/com/hbm/render/tileentity/RendererObjTester.java @@ -6,44 +6,24 @@ import org.lwjgl.BufferUtils; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -import com.hbm.items.ModItems; -import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; -import com.hbm.render.util.HorsePronter; -import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.RenderHelper; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.IIcon; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.model.AdvancedModelLoader; -import net.minecraftforge.client.model.IModelCustom; public class RendererObjTester extends TileEntitySpecialRenderer { - private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); - //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/Prototype.obj"); - private IModelCustom objTesterModel; - private ResourceLocation objTesterTexture; - - public RendererObjTester() - { - objTesterModel = AdvancedModelLoader.loadModel(objTesterModelRL); - objTesterTexture = new ResourceLocation(RefStrings.MODID, "textures/models/TestObj.png"); - //objTesterTexture = new ResourceLocation(RefStrings.MODID, "textures/models/Prototype.png"); - } + //private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/TestObj.obj"); - @Override + @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) { GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y, z + 0.5); GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glTranslated(0, 0, 0.75); + /*GL11.glTranslated(0, 0, 0.75); this.bindTexture(new ResourceLocation(RefStrings.MODID, "textures/models/horse/dyx.png")); HorsePronter.reset(); //HorsePronter.pose(HorsePronter.id_lfl, 0, System.currentTimeMillis() % 360 / 10D, 0); @@ -71,7 +51,126 @@ public class RendererObjTester extends TileEntitySpecialRenderer { float f15 = icon.getMaxU(); float f4 = icon.getMinV(); float f5 = icon.getMaxV(); - ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F); + ItemRenderer.renderItemIn2D(Tessellator.instance, f15, f4, f14, f5, icon.getIconWidth(), icon.getIconHeight(), 0.0625F);*/ + + double speed = 100D; + double chewing = 200D; + double cy0 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2)); + double cy1 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2) - Math.PI * 0.5); + double cy2 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2) - Math.PI); + double cy3 = Math.sin(System.currentTimeMillis() / speed % (Math.PI * 2) - Math.PI * 0.75); + + double cy4 = Math.sin(System.currentTimeMillis() / chewing % (Math.PI * 2)); + double cy5 = Math.sin(System.currentTimeMillis() / chewing % (Math.PI * 2) - Math.PI * 0.5); + + this.bindTexture(ResourceManager.glyphid_tex); + ResourceManager.glyphid.renderPart("Body"); + ResourceManager.glyphid.renderPart("ArmorFront"); + ResourceManager.glyphid.renderPart("ArmorLeft"); + ResourceManager.glyphid.renderPart("ArmorRight"); + + /// LEFT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(0.25, 0.625, 0.0625); + GL11.glRotated(10, 0, 1, 0); + GL11.glRotated(35 + cy1 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmLeftUpper"); + GL11.glTranslated(0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy1 * 20 + cy0 * 20, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmLeftMid"); + GL11.glTranslated(0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy0 * 45, 1, 0, 0); + GL11.glTranslated(-0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmLeftLower"); + ResourceManager.glyphid.renderPart("ArmLeftArmor"); + GL11.glPopMatrix(); + + /// RIGHT ARM /// + GL11.glPushMatrix(); + GL11.glTranslated(-0.25, 0.625, 0.0625); + GL11.glRotated(-10, 0, 1, 0); + GL11.glRotated(35 + cy2 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.0625); + ResourceManager.glyphid.renderPart("ArmRightUpper"); + GL11.glTranslated(-0.25, 0.625, 0.4375); + GL11.glRotated(-75 - cy2 * 20 + cy3 * 20, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.4375); + ResourceManager.glyphid.renderPart("ArmRightMid"); + GL11.glTranslated(-0.25, 0.625, 0.9375); + GL11.glRotated(90 - cy3 * 45, 1, 0, 0); + GL11.glTranslated(0.25, -0.625, -0.9375); + ResourceManager.glyphid.renderPart("ArmRightLower"); + ResourceManager.glyphid.renderPart("ArmRightArmor"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(cy5 * 15 + 15, 0, 0, 1); + GL11.glTranslated(0, -0.5, -0.25); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-7.5 - cy4 * 7.5, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawTop"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(7.5 + cy4 * 7.5, 0, 1, 0); + GL11.glRotated(7.5 + cy4 * 7.5, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawLeft"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.5, 0.25); + GL11.glRotated(-7.5 - cy4 * 7.5, 0, 1, 0); + GL11.glRotated(7.5 + cy4 * 7.5, 1, 0, 0); + GL11.glTranslated(0, -0.5, -0.25); + ResourceManager.glyphid.renderPart("JawRight"); + GL11.glPopMatrix(); + GL11.glPopMatrix(); + + double steppy = 15; + double bend = 60; + + for(int i = 0; i < 3; i++) { + + double c0 = cy0 * (i == 1 ? -1 : 1); + double c1 = cy1 * (i == 1 ? -1 : 1); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 15 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftUpper"); + GL11.glTranslated(0.5625, 0.25, 0); + GL11.glRotated(-bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(-0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegLeftLower"); + GL11.glPopMatrix(); + + GL11.glPushMatrix(); + GL11.glTranslated(0, 0.25, 0); + GL11.glRotated(i * 30 - 45 + c0 * 7.5, 0, 1, 0); + GL11.glRotated(-steppy + c1 * steppy, 0, 0, 1); + GL11.glTranslated(0, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightUpper"); + GL11.glTranslated(-0.5625, 0.25, 0); + GL11.glRotated(bend - c1 * steppy, 0, 0, 1); + GL11.glTranslated(0.5625, -0.25, 0); + ResourceManager.glyphid.renderPart("LegRightLower"); + GL11.glPopMatrix(); + } + + this.bindTexture(ResourceManager.universal); + GL11.glScaled(0.05, 0.05, 0.05); + ResourceManager.sphere_uv.renderAll(); GL11.glPopMatrix(); } diff --git a/src/main/java/com/hbm/render/util/SmallBlockPronter.java b/src/main/java/com/hbm/render/util/SmallBlockPronter.java index 7c19b3441..50486e05b 100644 --- a/src/main/java/com/hbm/render/util/SmallBlockPronter.java +++ b/src/main/java/com/hbm/render/util/SmallBlockPronter.java @@ -2,19 +2,26 @@ package com.hbm.render.util; import org.lwjgl.opengl.GL11; +import com.hbm.interfaces.Spaghetti; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraftforge.common.util.ForgeDirection; public class SmallBlockPronter { static float pixel = 1F/16F; /** - * Bind the required texture yourself bruh + * Bind the required texture yourself bruh <- ding dong, 2023 bob speaking, fuck this guy * @param loc * @param x * @param y * @param z */ + @Deprecated @Spaghetti("this is horseshit") public static void renderSmolBlockAt(float x, float y, float z) { GL11.glPushMatrix(); GL11.glTranslatef(x - 1, y - 1, z); @@ -64,4 +71,65 @@ public class SmallBlockPronter { GL11.glPopMatrix(); } + + public static void startDrawing() { + GL11.glEnable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_CULL_FACE); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.75F); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(false); + Tessellator.instance.startDrawingQuads(); + } + + public static void draw() { + Tessellator.instance.draw(); + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glDepthMask(true); + GL11.glEnable(GL11.GL_LIGHTING); + } + + public static void drawSmolBlockAt(Block b, int meta, float x, float y, float z) { + + Tessellator tesseract = Tessellator.instance; + IIcon iconTop = b.getIcon(ForgeDirection.UP.ordinal(), meta); + IIcon iconBottom = b.getIcon(ForgeDirection.DOWN.ordinal(), meta); + IIcon iconNorth = b.getIcon(ForgeDirection.NORTH.ordinal(), meta); + IIcon iconSouth = b.getIcon(ForgeDirection.SOUTH.ordinal(), meta); + IIcon iconEast = b.getIcon(ForgeDirection.EAST.ordinal(), meta); + IIcon iconWest = b.getIcon(ForgeDirection.WEST.ordinal(), meta); + + tesseract.setNormal(0F, 1F, 0F); + + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconSouth.getMaxU(), iconSouth.getMinV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconSouth.getMinU(), iconSouth.getMinV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconSouth.getMinU(), iconSouth.getMaxV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconSouth.getMaxU(), iconSouth.getMaxV()); + + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 11 * pixel / 2, iconEast.getMaxU(), iconEast.getMinV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconEast.getMinU(), iconEast.getMinV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconEast.getMinU(), iconEast.getMaxV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 11 * pixel / 2, z + 11 * pixel / 2, iconEast.getMaxU(), iconEast.getMaxV()); + + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 11 * pixel / 2, iconNorth.getMaxU(), iconNorth.getMinV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 11 * pixel / 2, iconNorth.getMinU(), iconNorth.getMinV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2,y + 11 * pixel / 2, z + 11 * pixel / 2, iconNorth.getMinU(), iconNorth.getMaxV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 11 * pixel / 2, z + 11 * pixel / 2, iconNorth.getMaxU(), iconNorth.getMaxV()); + + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconWest.getMaxU(), iconWest.getMinV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 11 * pixel / 2, iconWest.getMinU(), iconWest.getMinV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 11 * pixel / 2, z + 11 * pixel / 2, iconWest.getMinU(), iconWest.getMaxV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconWest.getMaxU(), iconWest.getMaxV()); + + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 11 * pixel / 2, iconTop.getMaxU(), iconTop.getMinV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 11 * pixel / 2, iconTop.getMinU(), iconTop.getMinV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconTop.getMinU(), iconTop.getMaxV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 1 - 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconTop.getMaxU(), iconTop.getMaxV()); + + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 11 * pixel / 2, z + 11 * pixel / 2, iconBottom.getMaxU(), iconBottom.getMinV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 11 * pixel / 2, z + 11 * pixel / 2, iconBottom.getMinU(), iconBottom.getMinV()); + tesseract.addVertexWithUV(x + 1 - 11 * pixel / 2, y + 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconBottom.getMinU(), iconBottom.getMaxV()); + tesseract.addVertexWithUV(x + 11 * pixel / 2, y + 11 * pixel / 2, z + 1 - 11 * pixel / 2, iconBottom.getMaxU(), iconBottom.getMaxV()); + } } diff --git a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java index 2e5fe33c1..a0dd2a624 100644 --- a/src/main/java/com/hbm/saveddata/SatelliteSavedData.java +++ b/src/main/java/com/hbm/saveddata/SatelliteSavedData.java @@ -1,35 +1,38 @@ package com.hbm.saveddata; -import java.util.HashMap; -import java.util.Map.Entry; - import com.hbm.saveddata.satellites.Satellite; - import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraft.world.WorldSavedData; +import java.util.HashMap; +import java.util.Map.Entry; + public class SatelliteSavedData extends WorldSavedData { - public HashMap sats = new HashMap(); + public final HashMap sats = new HashMap<>(); - public SatelliteSavedData(String p_i2141_1_) { - super(p_i2141_1_); + /** + * Constructor used for deserialization + * @param name - Map data name + */ + public SatelliteSavedData(String name) { + super(name); } - public SatelliteSavedData() - { + /** + * Default constructor for satellites map data. + */ + public SatelliteSavedData() { super("satellites"); this.markDirty(); } public boolean isFreqTaken(int freq) { - return getSatFromFreq(freq) != null; } public Satellite getSatFromFreq(int freq) { - return sats.get(freq); } @@ -38,7 +41,6 @@ public class SatelliteSavedData extends WorldSavedData { int satCount = nbt.getInteger("satCount"); for(int i = 0; i < satCount; i++) { - Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i)); sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i)); @@ -55,7 +57,6 @@ public class SatelliteSavedData extends WorldSavedData { int i = 0; for(Entry struct : sats.entrySet()) { - NBTTagCompound data = new NBTTagCompound(); struct.getValue().writeToNBT(data); @@ -67,7 +68,6 @@ public class SatelliteSavedData extends WorldSavedData { } public static SatelliteSavedData getData(World worldObj) { - SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); if(data == null) { worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); @@ -77,5 +77,4 @@ public class SatelliteSavedData extends WorldSavedData { return data; } - } diff --git a/src/main/java/com/hbm/saveddata/satellites/Satellite.java b/src/main/java/com/hbm/saveddata/satellites/Satellite.java index 70c65e0ac..e1a3ff431 100644 --- a/src/main/java/com/hbm/saveddata/satellites/Satellite.java +++ b/src/main/java/com/hbm/saveddata/satellites/Satellite.java @@ -1,23 +1,22 @@ package com.hbm.saveddata.satellites; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - import com.hbm.items.ModItems; import com.hbm.saveddata.SatelliteSavedData; - import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + public abstract class Satellite { - public static List satellites = new ArrayList(); - public static HashMap itemToClass = new HashMap(); + public static final List> satellites = new ArrayList<>(); + public static final HashMap> itemToClass = new HashMap<>(); - public static enum InterfaceActions { + public enum InterfaceActions { HAS_MAP, //lets the interface display loaded chunks CAN_CLICK, //enables onClick events SHOW_COORDS, //enables coordinates as a mouse tooltip @@ -25,18 +24,18 @@ public abstract class Satellite { HAS_ORES //like HAS_MAP but only shows ores } - public static enum CoordActions { + public enum CoordActions { HAS_Y //enables the Y-coord field which is disabled by default } - public static enum Interfaces { + public enum Interfaces { NONE, //does not interact with any sat interface (i.e. asteroid miners) SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications) SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions) } - public List ifaceAcs = new ArrayList(); - public List coordAcs = new ArrayList(); + public List ifaceAcs = new ArrayList<>(); + public List coordAcs = new ArrayList<>(); public Interfaces satIface = Interfaces.NONE; public static void register() { @@ -64,10 +63,13 @@ public abstract class Satellite { } public static void orbit(World world, int id, int freq, double x, double y, double z) { - + if(world.isRemote) { + return; + } + Satellite sat = create(id); - if(sat != null && !world.isRemote) { + if(sat != null) { SatelliteSavedData data = SatelliteSavedData.getData(world); data.sats.put(freq, sat); sat.onOrbit(world, x, y, z); @@ -76,25 +78,22 @@ public abstract class Satellite { } public static Satellite create(int id) { - Satellite sat = null; try { - Class c = satellites.get(id); - sat = (Satellite) c.newInstance(); - } catch(Exception ex) { - + Class c = satellites.get(id); + sat = c.newInstance(); + } catch(Exception e) { + e.printStackTrace(); } return sat; } public static int getIDFromItem(Item item) { - Class sat = itemToClass.get(item); - int i = satellites.indexOf(sat); - - return i; + + return satellites.indexOf(sat); } public int getID() { diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java index 99195b6d5..59b2d3f3d 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteLunarMiner.java @@ -1,3 +1,20 @@ package com.hbm.saveddata.satellites; -public class SatelliteLunarMiner extends SatelliteMiner { } \ No newline at end of file +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.util.WeightedRandomObject; +import net.minecraft.item.ItemStack; + +public class SatelliteLunarMiner extends SatelliteMiner { + static { + registerCargo(SatelliteLunarMiner.class, new WeightedRandomObject[] { + new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 48), 5), + new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 32), 7), + new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 16), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_lithium, 3), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 5), + new WeightedRandomObject(new ItemStack(ModItems.crystal_iron, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 1), 1) + }); + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java index f54beb254..c1ee0f836 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteMiner.java @@ -1,9 +1,20 @@ package com.hbm.saveddata.satellites; +import com.hbm.blocks.ModBlocks; +import com.hbm.items.ModItems; +import com.hbm.util.WeightedRandomObject; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import java.util.HashMap; + public class SatelliteMiner extends Satellite { - + /** + * {@link WeightedRandomObject} array with loot the satellite will deliver. + */ + private static final HashMap, WeightedRandomObject[]> CARGO = new HashMap<>(); + public long lastOp; public SatelliteMiner() { @@ -17,4 +28,52 @@ public class SatelliteMiner extends Satellite { public void readFromNBT(NBTTagCompound nbt) { lastOp = nbt.getLong("lastOp"); } + + /** + * Replaces cargo of the satellite. + * @param cargo - Array of {@link WeightedRandomObject} representing the loot that will be delivered. + */ + public static void registerCargo(Class minerSatelliteClass, WeightedRandomObject[] cargo) { + CARGO.put(minerSatelliteClass, cargo); + } + + /** + * Gets items the satellite can deliver. + * @return - Array of {@link WeightedRandomObject} of satellite loot. + */ + public WeightedRandomObject[] getCargo() { + return CARGO.get(getClass()); + } + + static { + registerCargo(SatelliteMiner.class, new WeightedRandomObject[] { + new WeightedRandomObject(new ItemStack(ModItems.powder_aluminium, 3), 10), + new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 10), + new WeightedRandomObject(new ItemStack(ModItems.powder_titanium, 2), 8), + new WeightedRandomObject(new ItemStack(ModItems.crystal_tungsten, 2), 7), + new WeightedRandomObject(new ItemStack(ModItems.powder_coal, 4), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_uranium, 2), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_plutonium, 1), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_thorium, 2), 7), + new WeightedRandomObject(new ItemStack(ModItems.powder_desh_mix, 3), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_diamond, 2), 7), + new WeightedRandomObject(new ItemStack(Items.redstone, 5), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_nitan_mix, 2), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_power, 2), 5), + new WeightedRandomObject(new ItemStack(ModItems.powder_copper, 5), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_lead, 3), 10), + new WeightedRandomObject(new ItemStack(ModItems.fluorite, 4), 15), + new WeightedRandomObject(new ItemStack(ModItems.powder_lapis, 4), 10), + new WeightedRandomObject(new ItemStack(ModItems.powder_combine_steel, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_aluminium, 1), 5), + new WeightedRandomObject(new ItemStack(ModItems.crystal_gold, 1), 5), + new WeightedRandomObject(new ItemStack(ModItems.crystal_phosphorus, 1), 10), + new WeightedRandomObject(new ItemStack(ModBlocks.gravel_diamond, 1), 3), + new WeightedRandomObject(new ItemStack(ModItems.crystal_uranium, 1), 3), + new WeightedRandomObject(new ItemStack(ModItems.crystal_plutonium, 1), 3), + new WeightedRandomObject(new ItemStack(ModItems.crystal_trixite, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_starmetal, 1), 1), + new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 2), 4) + }); + } } diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteMinerCargoRegistry.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteMinerCargoRegistry.java deleted file mode 100644 index 7caf98f02..000000000 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteMinerCargoRegistry.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.hbm.saveddata.satellites; - -import com.hbm.blocks.ModBlocks; -import com.hbm.items.ModItems; -import com.hbm.util.WeightedRandomObject; -import net.minecraft.init.Items; -import net.minecraft.item.ItemStack; - -import java.util.HashMap; - -public class SatelliteMinerCargoRegistry { - private static final HashMap cargo = new HashMap() {{ - put(SatelliteMiner.class.getName(), new WeightedRandomObject[] { - new WeightedRandomObject(new ItemStack(ModItems.powder_aluminium, 3), 10), - new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 10), - new WeightedRandomObject(new ItemStack(ModItems.powder_titanium, 2), 8), - new WeightedRandomObject(new ItemStack(ModItems.crystal_tungsten, 2), 7), - new WeightedRandomObject(new ItemStack(ModItems.powder_coal, 4), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_uranium, 2), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_plutonium, 1), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_thorium, 2), 7), - new WeightedRandomObject(new ItemStack(ModItems.powder_desh_mix, 3), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_diamond, 2), 7), - new WeightedRandomObject(new ItemStack(Items.redstone, 5), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_nitan_mix, 2), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_power, 2), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_copper, 5), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_lead, 3), 10), - new WeightedRandomObject(new ItemStack(ModItems.fluorite, 4), 15), - new WeightedRandomObject(new ItemStack(ModItems.powder_lapis, 4), 10), - new WeightedRandomObject(new ItemStack(ModItems.powder_combine_steel, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_aluminium, 1), 5), - new WeightedRandomObject(new ItemStack(ModItems.crystal_gold, 1), 5), - new WeightedRandomObject(new ItemStack(ModItems.crystal_phosphorus, 1), 10), - new WeightedRandomObject(new ItemStack(ModBlocks.gravel_diamond, 1), 3), - new WeightedRandomObject(new ItemStack(ModItems.crystal_uranium, 1), 3), - new WeightedRandomObject(new ItemStack(ModItems.crystal_plutonium, 1), 3), - new WeightedRandomObject(new ItemStack(ModItems.crystal_trixite, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_starmetal, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 2), 4) - }); - put(SatelliteLunarMiner.class.getName(), new WeightedRandomObject[] { - new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 48), 5), - new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 32), 7), - new WeightedRandomObject(new ItemStack(ModBlocks.moon_turf, 16), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_lithium, 3), 5), - new WeightedRandomObject(new ItemStack(ModItems.powder_iron, 3), 5), - new WeightedRandomObject(new ItemStack(ModItems.crystal_iron, 1), 1), - new WeightedRandomObject(new ItemStack(ModItems.crystal_lithium, 1), 1), - }); - }}; - - /** - * Register cargo for specified satellite object - * @param o - Satellite object - * @param cargo - WeightedRandomObject array with loot - */ - public static void register(Object o, WeightedRandomObject[] cargo) { - SatelliteMinerCargoRegistry.cargo.put(o.getClass().getName(), cargo); - } - - /** - * Register cargo for specified satellite class - * @param c - Satellite class - * @param cargo - WeightedRandomObject array with loot - */ - public static void register(Class c, WeightedRandomObject[] cargo) { - SatelliteMinerCargoRegistry.cargo.put(c.getName(), cargo); - } - - /** - * Get loot by satellite class name - * @param satelliteName - Satellite class name, like com.hbm.saveddata.satellites.SatelliteMiner - * @return - WeightedRandomObject array with loot - */ - public static WeightedRandomObject[] getCargo(String satelliteName) { - if(cargo.containsKey(satelliteName)) { - return cargo.get(satelliteName); - } - return new WeightedRandomObject[0]; - } -} diff --git a/src/main/java/com/hbm/sound/AudioDynamic.java b/src/main/java/com/hbm/sound/AudioDynamic.java index 8bc976d0d..3799b7d05 100644 --- a/src/main/java/com/hbm/sound/AudioDynamic.java +++ b/src/main/java/com/hbm/sound/AudioDynamic.java @@ -10,14 +10,18 @@ import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) public class AudioDynamic extends MovingSound { - - public float intendedVolume; + + public float maxVolume = 1; + public float range; + public int keepAlive; + public int timeSinceKA;; + public boolean shouldExpire = false;; protected AudioDynamic(ResourceLocation loc) { super(loc); this.repeat = true; - this.field_147666_i = ISound.AttenuationType.LINEAR; - this.intendedVolume = 10; + this.field_147666_i = ISound.AttenuationType.NONE; + this.range = 10; } public void setPosition(float x, float y, float z) { @@ -34,9 +38,18 @@ public class AudioDynamic extends MovingSound { if(player != null) { f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); - volume = func(f, intendedVolume); + volume = func(f); } else { - volume = intendedVolume; + volume = maxVolume; + } + + if(this.shouldExpire) { + + if(this.timeSinceKA > this.keepAlive) { + this.stop(); + } + + this.timeSinceKA++; } } @@ -49,15 +62,28 @@ public class AudioDynamic extends MovingSound { } public void setVolume(float volume) { - this.intendedVolume = volume; + this.volume = volume; + } + + public void setRange(float range) { + this.range = range; + } + + public void setKeepAlive(int keepAlive) { + this.keepAlive = keepAlive; + this.shouldExpire = true; + } + + public void keepAlive() { + this.timeSinceKA = 0; } public void setPitch(float pitch) { this.field_147663_c = pitch; } - public float func(float f, float v) { - return (f / v) * -2 + 2; + public float func(float dist) { + return (dist / range) * -maxVolume + maxVolume; } public boolean isPlaying() { diff --git a/src/main/java/com/hbm/sound/AudioWrapper.java b/src/main/java/com/hbm/sound/AudioWrapper.java index 9c99bf096..e3830d5d8 100644 --- a/src/main/java/com/hbm/sound/AudioWrapper.java +++ b/src/main/java/com/hbm/sound/AudioWrapper.java @@ -1,14 +1,19 @@ package com.hbm.sound; public class AudioWrapper { + + public void setKeepAlive(int keepAlive) { } + public void keepAlive() { } public void updatePosition(float x, float y, float z) { } - + public void updateVolume(float volume) { } + public void updateRange(float range) { } public void updatePitch(float pitch) { } - + public float getVolume() { return 0F; } + public float getRange() { return 0F; } public float getPitch() { return 0F; } diff --git a/src/main/java/com/hbm/sound/AudioWrapperClient.java b/src/main/java/com/hbm/sound/AudioWrapperClient.java index 34a72dc06..bc259c1dd 100644 --- a/src/main/java/com/hbm/sound/AudioWrapperClient.java +++ b/src/main/java/com/hbm/sound/AudioWrapperClient.java @@ -14,6 +14,18 @@ public class AudioWrapperClient extends AudioWrapper { sound = new AudioDynamic(source); } + @Override + public void setKeepAlive(int keepAlive) { + if(sound != null) + sound.setKeepAlive(keepAlive); + } + + @Override + public void keepAlive() { + if(sound != null) + sound.keepAlive(); + } + @Override public void updatePosition(float x, float y, float z) { if(sound != null) @@ -26,6 +38,12 @@ public class AudioWrapperClient extends AudioWrapper { sound.setVolume(volume); } + @Override + public void updateRange(float range) { + if(sound != null) + sound.setRange(range); + } + @Override public void updatePitch(float pitch) { if(sound != null) diff --git a/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java b/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java index 663981b9e..6df22c652 100644 --- a/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java +++ b/src/main/java/com/hbm/sound/AudioWrapperClientStartStop.java @@ -3,6 +3,7 @@ package com.hbm.sound; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; +/** Only used for doors */ public class AudioWrapperClientStartStop extends AudioWrapperClient { public String start; diff --git a/src/main/java/com/hbm/tileentity/DoorDecl.java b/src/main/java/com/hbm/tileentity/DoorDecl.java index b770acb68..b7683d828 100644 --- a/src/main/java/com/hbm/tileentity/DoorDecl.java +++ b/src/main/java/com/hbm/tileentity/DoorDecl.java @@ -1,306 +1,423 @@ package com.hbm.tileentity; -import org.lwjgl.opengl.GL11; - import com.hbm.animloader.AnimatedModel; import com.hbm.animloader.Animation; import com.hbm.main.ResourceManager; import com.hbm.render.loader.WavefrontObjDisplayList; import com.hbm.util.BobMathUtil; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; public abstract class DoorDecl { - -public static final DoorDecl TRANSITION_SEAL = new DoorDecl(){ - - @Override - public String getOpenSoundStart() { - return "hbm:door.TransitionSealOpen"; - }; - - @Override - public float getSoundVolume(){ - return 6; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(!partName.equals("base")){ - set(trans, 0, 3.5F*getNormTime(openTicks), 0); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0, 0, 0.5); - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return super.getClippingPlanes(); - }; - - @Override - public int timeToOpen() { - return 480; - }; - - @Override - public int[][] getDoorOpenRanges(){ - //3 is tall - //4 is wide - return new int[][]{{-9, 2, 0, 20, 20, 1}}; - } - @Override - public int[] getDimensions(){ - return new int[]{23, 0, 0, 0, 13, 12}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - return super.getBlockBound(x, y, z, open); - }; + public static final DoorDecl TRANSITION_SEAL = new DoorDecl() { - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.transition_seal_tex; - } + @Override + public String getOpenSoundStart() { + return "hbm:door.TransitionSealOpen"; + } - @Override - @SideOnly(Side.CLIENT) - public Animation getAnim() { - return ResourceManager.transition_seal_anim; - }; - - @Override - @SideOnly(Side.CLIENT) - public AnimatedModel getAnimatedModel() { - return ResourceManager.transition_seal; - }; - - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return null; - } - }; - -public static final DoorDecl FIRE_DOOR = new DoorDecl(){ - - @Override - public String getOpenSoundEnd() { - return "hbm:door.wghStop"; - }; - @Override - public String getOpenSoundLoop() { - return "hbm:door.wghStart"; - }; - @Override - public String getSoundLoop2() { - return "hbm:door.alarm6"; - }; - - @Override - public float getSoundVolume(){ - return 2; - } - - @Override - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { - if(!partName.equals("frame")){ - set(trans, 0, 3*getNormTime(openTicks), 0); - } else { - super.getTranslation(partName, openTicks, child, trans); - } - }; - - @Override - @SideOnly(Side.CLIENT) - public void doOffsetTransform() { - GL11.glTranslated(0, 0, 0.5); - }; - - @Override - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes() { - return new double[][]{{0, -1, 0, 3.0001}}; - }; - - @Override - public int timeToOpen() { - return 160; - }; - - @Override - public int[][] getDoorOpenRanges(){ - return new int[][]{{-1, 0, 0, 3, 4, 1}}; - } + @Override + public float getSoundVolume() { + return 6; + } - @Override - public int[] getDimensions(){ - return new int[]{2, 0, 0, 0, 2, 1}; - } - - @Override - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { - if(!open) - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - if(z == 1){ - return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1); - } else if(z == -2){ - return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1); - } else if(y > 1){ - return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1); - } else if(y == 0) { - return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1); - } else { - return super.getBlockBound(x, y, z, open); - } - }; + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if (!partName.equals("base")) { + set(trans, 0, 3.5F * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + } - @Override - @SideOnly(Side.CLIENT) - public ResourceLocation getTextureForPart(String partName){ - return ResourceManager.fire_door_tex; - } + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + } - @Override - @SideOnly(Side.CLIENT) - public WavefrontObjDisplayList getModel(){ - return ResourceManager.fire_door; - } - }; + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return super.getClippingPlanes(); + } - //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) - public abstract int[][] getDoorOpenRanges(); - - public abstract int[] getDimensions(); - - public float getDoorRangeOpenTime(int ticks, int idx){ - return getNormTime(ticks); - } - - public int timeToOpen(){ - return 20; - } - - public float getNormTime(float time){ - return getNormTime(time, 0, timeToOpen()); - } - - public float getNormTime(float time, float min, float max){ - return BobMathUtil.remap01_clamp(time, min, max); - } - - @SideOnly(Side.CLIENT) - public abstract ResourceLocation getTextureForPart(String partName); - - @SideOnly(Side.CLIENT) - public abstract WavefrontObjDisplayList getModel(); - - @SideOnly(Side.CLIENT) - public AnimatedModel getAnimatedModel(){ - return null; - } - - @SideOnly(Side.CLIENT) - public Animation getAnim(){ - return null; - } - - @SideOnly(Side.CLIENT) - public void getTranslation(String partName, float openTicks, boolean child, float[] trans){ - set(trans, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public void getRotation(String partName, float openTicks, float[] rot){ - set(rot, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public void getOrigin(String partName, float[] orig){ - set(orig, 0, 0, 0); - } - - @SideOnly(Side.CLIENT) - public boolean doesRender(String partName, boolean child){ - return true; - } - - private static final String[] nothing = new String[]{}; - - @SideOnly(Side.CLIENT) - public String[] getChildren(String partName){ - return nothing; - } - - @SideOnly(Side.CLIENT) - public double[][] getClippingPlanes(){ - return new double[][]{}; - } - - @SideOnly(Side.CLIENT) - public void doOffsetTransform(){ - } - - public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open){ - return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); - } - - public boolean isLadder(boolean open){ - return false; - } - - public String getOpenSoundLoop(){ - return null; - } - - //Hack - public String getSoundLoop2(){ - return null; - } - - public String getCloseSoundLoop(){ - return getOpenSoundLoop(); - } - - public String getOpenSoundStart(){ - return null; - } - - public String getCloseSoundStart(){ - return getOpenSoundStart(); - } - - public String getOpenSoundEnd(){ - return null; - } - - public String getCloseSoundEnd(){ - return getOpenSoundEnd(); - } - - public float getSoundVolume(){ - return 1; - } - - public float[] set(float[] f, float x, float y, float z){ - f[0] = x; - f[1] = y; - f[2] = z; - return f; - }; + @Override + public int timeToOpen() { + return 480; + } + + @Override + public int[][] getDoorOpenRanges() { + //3 is tall + //4 is wide + return new int[][]{{-9, 2, 0, 20, 20, 1}}; + } + + @Override + public int[] getDimensions() { + return new int[]{23, 0, 0, 0, 13, 12}; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + return super.getBlockBound(x, y, z, open); + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.transition_seal_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public Animation getAnim() { + return ResourceManager.transition_seal_anim; + } + + @Override + @SideOnly(Side.CLIENT) + public AnimatedModel getAnimatedModel() { + return ResourceManager.transition_seal; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return null; + } + }; + + public static final DoorDecl FIRE_DOOR = new DoorDecl() { + + @Override + public String getOpenSoundEnd() { + return "hbm:door.wghStop"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.wghStart"; + } + + @Override + public String getSoundLoop2() { + return "hbm:door.alarm6"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + if (!partName.equals("frame")) { + set(trans, 0, 3 * getNormTime(openTicks), 0); + } else { + super.getTranslation(partName, openTicks, child, trans); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glTranslated(0, 0, 0.5); + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{{0, -1, 0, 3.0001}}; + } + + @Override + public int timeToOpen() { + return 160; + } + + @Override + public int[][] getDoorOpenRanges() { + return new int[][]{{-1, 0, 0, 3, 4, 1}}; + } + + @Override + public int[] getDimensions() { + return new int[]{2, 0, 0, 0, 2, 1}; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if (!open) + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + if (z == 1) { + return AxisAlignedBB.getBoundingBox(0.5, 0, 0, 1, 1, 1); + } else if (z == -2) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 0.5, 1, 1); + } else if (y > 1) { + return AxisAlignedBB.getBoundingBox(0, 0.75, 0, 1, 1, 1); + } else if (y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.1, 1); + } else { + return super.getBlockBound(x, y, z, open); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return ResourceManager.fire_door_tex; + } + + @Override + @SideOnly(Side.CLIENT) + public WavefrontObjDisplayList getModel() { + return ResourceManager.fire_door; + } + }; + + public static final DoorDecl SLIDE_DOOR = new DoorDecl() { + @Override + public String getOpenSoundEnd() { + return "hbm:door.sliding_door_opened"; + } + + @Override + public String getCloseSoundEnd() { + return "hbm:door.sliding_door_shut"; + } + + @Override + public String getOpenSoundLoop() { + return "hbm:door.sliding_door_opening"; + } + + @Override + public String getSoundLoop2() { + return "hbm:door.sliding_door_opening"; + } + + @Override + public float getSoundVolume() { + return 2; + } + + @Override + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + GL11.glRotated(-90, 0, 1, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{ + {-1, 0, 0, 3.50001}, + {1, 0, 0, 3.50001} + }; + } + + @Override + public int timeToOpen() { + return 24; + } + + @Override + public int[][] getDoorOpenRanges() { + return new int[][]{{-2, 0, 0, 4, 5, 1}}; + } + + @Override + public int[] getDimensions() { + return new int[]{3, 0, 0, 0, 3, 3}; + } + + @Override + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + if (open) { + if (y == 3) { + return AxisAlignedBB.getBoundingBox(0, 0.5, 0, 1, 1, 1); + } else if (y == 0) { + return AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 0.08, 1); + } + } + return super.getBlockBound(x, y, z, open); + } + + @Override + public boolean hasSkins() { + return true; + } + + @Override + public int getSkinCount() { + return 3; + } + + @Override + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(int skinIndex, String partName) { + return new ResourceLocation[] { + ResourceManager.sliding_blast_door_tex, + ResourceManager.sliding_blast_door_variant1_tex, + ResourceManager.sliding_blast_door_variant2_tex + }[skinIndex]; + } + + @Override + public WavefrontObjDisplayList getModel() { + return null; + } + + @Override + public Animation getAnim() { + return ResourceManager.sliding_blast_door_anim; + } + + @Override + public AnimatedModel getAnimatedModel() { + return ResourceManager.sliding_blast_door; + } + }; + + //Format: x, y, z, tangent amount 1 (how long the door would be if it moved up), tangent amount 2 (door places blocks in this direction), axis (0-x, 1-y, 2-z) + public abstract int[][] getDoorOpenRanges(); + + public abstract int[] getDimensions(); + + public float getDoorRangeOpenTime(int ticks, int idx) { + return getNormTime(ticks); + } + + public int timeToOpen() { + return 20; + } + + public float getNormTime(float time) { + return getNormTime(time, 0, timeToOpen()); + } + + public float getNormTime(float time, float min, float max) { + return BobMathUtil.remap01_clamp(time, min, max); + } + + public boolean hasSkins() { + return false; + } + + public int getSkinCount() { + return 0; + } + + @SideOnly(Side.CLIENT) + public ResourceLocation getTextureForPart(String partName) { + return getTextureForPart(0, partName); + } + + @SideOnly(Side.CLIENT) + public abstract ResourceLocation getTextureForPart(int skinIndex, String partName); + + @SideOnly(Side.CLIENT) + public abstract WavefrontObjDisplayList getModel(); + + @SideOnly(Side.CLIENT) + public AnimatedModel getAnimatedModel() { + return null; + } + + @SideOnly(Side.CLIENT) + public Animation getAnim() { + return null; + } + + @SideOnly(Side.CLIENT) + public void getTranslation(String partName, float openTicks, boolean child, float[] trans) { + set(trans, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public void getRotation(String partName, float openTicks, float[] rot) { + set(rot, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public void getOrigin(String partName, float[] orig) { + set(orig, 0, 0, 0); + } + + @SideOnly(Side.CLIENT) + public boolean doesRender(String partName, boolean child) { + return true; + } + + private static final String[] nothing = new String[]{}; + + @SideOnly(Side.CLIENT) + public String[] getChildren(String partName) { + return nothing; + } + + @SideOnly(Side.CLIENT) + public double[][] getClippingPlanes() { + return new double[][]{}; + } + + @SideOnly(Side.CLIENT) + public void doOffsetTransform() { + } + + public AxisAlignedBB getBlockBound(int x, int y, int z, boolean open) { + return open ? AxisAlignedBB.getBoundingBox(0, 0, 0, 0, 0, 0) : AxisAlignedBB.getBoundingBox(0, 0, 0, 1, 1, 1); + } + + public boolean isLadder(boolean open) { + return false; + } + + public String getOpenSoundLoop() { + return null; + } + + //Hack + public String getSoundLoop2() { + return null; + } + + public String getCloseSoundLoop() { + return getOpenSoundLoop(); + } + + public String getOpenSoundStart() { + return null; + } + + public String getCloseSoundStart() { + return getOpenSoundStart(); + } + + public String getOpenSoundEnd() { + return null; + } + + public String getCloseSoundEnd() { + return getOpenSoundEnd(); + } + + public float getSoundVolume() { + return 1; + } + + public float[] set(float[] f, float x, float y, float z) { + f[0] = x; + f[1] = y; + f[2] = z; + return f; + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java index 386737ab3..5968d685e 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java +++ b/src/main/java/com/hbm/tileentity/TileEntityDoorGeneric.java @@ -33,6 +33,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn public long animStartTime = 0; public int redstonePower; public boolean shouldUseBB = false; + private byte skinIndex = 0; + public Set activatedBlocks = new HashSet<>(4); private AudioWrapper audio; @@ -52,9 +54,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn } } - if(worldObj.isRemote) { - - } else { + if(!worldObj.isRemote) { BlockPos pos = new BlockPos(this); @@ -140,7 +140,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn if(state == 2 && openTicks == 0) { state = 0; } - PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100)); + PacketDispatcher.wrapper.sendToAllAround(new TEDoorAnimationPacket(xCoord, yCoord, zCoord, state, skinIndex, (byte)(shouldUseBB ? 1 : 0)), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 100)); if(redstonePower == -1 && state == 0){ tryToggle(-1); @@ -282,10 +282,22 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn //Ah yes piggy backing on this packet @Override public void setTextureState(byte tex){ - if(tex > 0) - shouldUseBB = true; - else - shouldUseBB = false; + shouldUseBB = tex > 0; + } + + public int getSkinIndex() { + return skinIndex; + } + + @Override + public boolean setSkinIndex(byte skinIndex) { + if(!getDoorType().hasSkins()) + return false; + if(getDoorType().getSkinCount() < skinIndex) { + return false; + } + this.skinIndex = skinIndex; + return true; } @Override @@ -305,6 +317,7 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn this.animStartTime = tag.getInteger("animStartTime"); this.redstonePower = tag.getInteger("redstoned"); this.shouldUseBB = tag.getBoolean("shouldUseBB"); + this.skinIndex = tag.getByte("skin"); NBTTagCompound activatedBlocks = tag.getCompoundTag("activatedBlocks"); this.activatedBlocks.clear(); for(int i = 0; i < activatedBlocks.func_150296_c().size()/3; i ++){ @@ -322,6 +335,8 @@ public class TileEntityDoorGeneric extends TileEntityLockableBase implements IAn tag.setLong("animStartTime", animStartTime); tag.setInteger("redstoned", redstonePower); tag.setBoolean("shouldUseBB", shouldUseBB); + if(getDoorType().hasSkins()) + tag.setByte("skin", skinIndex); NBTTagCompound activatedBlocks = new NBTTagCompound(); int i = 0; for(BlockPos p : this.activatedBlocks){ diff --git a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java index baec2d8d4..f2ab912aa 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityLoadedBase.java @@ -1,5 +1,7 @@ package com.hbm.tileentity; +import com.hbm.sound.AudioWrapper; + import api.hbm.energy.ILoadedTile; import net.minecraft.tileentity.TileEntity; @@ -17,4 +19,13 @@ public class TileEntityLoadedBase extends TileEntity implements ILoadedTile { super.onChunkUnload(); this.isLoaded = false; } + + public AudioWrapper createAudioLoop() { return null; } + + public AudioWrapper rebootAudio(AudioWrapper wrapper) { + wrapper.stopSound(); + AudioWrapper audio = createAudioLoop(); + audio.startSound(); + return audio; + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java index 5c5c26d5d..988d683b8 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityMachineBase.java @@ -4,7 +4,6 @@ import com.hbm.blocks.ModBlocks; import com.hbm.packet.AuxGaugePacket; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; -import com.hbm.sound.AudioWrapper; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.player.EntityPlayer; @@ -84,11 +83,10 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=128; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 128; } } @@ -222,13 +220,4 @@ public abstract class TileEntityMachineBase extends TileEntityLoadedBase impleme return Math.max(volume, 0); } - - public AudioWrapper createAudioLoop() { return null; } - - public AudioWrapper rebootAudio(AudioWrapper wrapper) { - wrapper.stopSound(); - AudioWrapper audio = createAudioLoop(); - audio.startSound(); - return audio; - } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityMachinePolluting.java b/src/main/java/com/hbm/tileentity/TileEntityMachinePolluting.java new file mode 100644 index 000000000..ffba5d8a1 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/TileEntityMachinePolluting.java @@ -0,0 +1,67 @@ +package com.hbm.tileentity; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; + +import api.hbm.fluid.IFluidUser; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.util.ForgeDirection; + +public abstract class TileEntityMachinePolluting extends TileEntityMachineBase implements IFluidUser { + + public FluidTank smoke; + public FluidTank smoke_leaded; + public FluidTank smoke_poison; + + public TileEntityMachinePolluting(int scount, int buffer) { + super(scount); + smoke = new FluidTank(Fluids.SMOKE, buffer); + smoke_leaded = new FluidTank(Fluids.SMOKE_LEADED, buffer); + smoke_poison = new FluidTank(Fluids.SMOKE_POISON, buffer); + } + + 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()); + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, type, overflow / 100F); + + if(worldObj.rand.nextInt(3) == 0) worldObj.playSoundEffect(xCoord, yCoord, zCoord, "random.fizz", 0.1F, 1.5F); + } + } + + public void sendSmoke(int x, int y, int z, ForgeDirection dir) { + if(this.smoke.getFill() > 0) this.sendFluid(smoke, worldObj, x, y, z, dir); + if(this.smoke_leaded.getFill() > 0) this.sendFluid(smoke_leaded, worldObj, x, y, z, dir); + if(this.smoke_poison.getFill() > 0) this.sendFluid(smoke_poison, worldObj, x, y, z, dir); + } + + public FluidTank[] getSmokeTanks() { + return new FluidTank[] {smoke, smoke_leaded, smoke_poison}; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + smoke.readFromNBT(nbt, "smoke0"); + smoke_leaded.readFromNBT(nbt, "smoke1"); + smoke_poison.readFromNBT(nbt, "smoke2"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + smoke.writeToNBT(nbt, "smoke0"); + smoke_leaded.writeToNBT(nbt, "smoke1"); + smoke_poison.writeToNBT(nbt, "smoke2"); + } +} diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java index 182e1f1bc..36a123851 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyBase.java @@ -3,16 +3,27 @@ package com.hbm.tileentity; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.IProxyController; import com.hbm.util.Compat; +import com.hbm.util.fauxpointtwelve.BlockPos; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; public class TileEntityProxyBase extends TileEntityLoadedBase { + + public BlockPos cachedPosition; public boolean canUpdate() { return false; } public TileEntity getTE() { + + if(cachedPosition != null) { + TileEntity te = Compat.getTileStandard(worldObj, cachedPosition.getX(), cachedPosition.getY(), cachedPosition.getZ()); + if(te != null && !(te instanceof TileEntityProxyBase)) return te; + cachedPosition = null; + this.markDirty(); + } if(this.getBlockType() instanceof BlockDummyable) { @@ -23,7 +34,7 @@ public class TileEntityProxyBase extends TileEntityLoadedBase { if(pos != null) { TileEntity te = Compat.getTileStandard(worldObj, pos[0], pos[1], pos[2]); - if(te != null && te != this) return te; + if(te != null && !(te instanceof TileEntityProxyBase)) return te; } } @@ -31,9 +42,28 @@ public class TileEntityProxyBase extends TileEntityLoadedBase { IProxyController controller = (IProxyController) this.getBlockType(); TileEntity tile = controller.getCore(worldObj, xCoord, yCoord, zCoord); - if(tile != null && tile != this) return tile; + if(tile != null && !(tile instanceof TileEntityProxyBase)) return tile; } return null; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + if(nbt.getBoolean("hasPos")) cachedPosition = new BlockPos(nbt.getInteger("pX"), nbt.getInteger("pY"), nbt.getInteger("pZ")); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + if(this.cachedPosition != null) { + nbt.setBoolean("hasPos", true); + nbt.setInteger("pX", this.cachedPosition.getX()); + nbt.setInteger("pY", this.cachedPosition.getY()); + nbt.setInteger("pZ", this.cachedPosition.getZ()); + } + } } diff --git a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java index 4a1786e53..18d109586 100644 --- a/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java +++ b/src/main/java/com/hbm/tileentity/TileEntityProxyCombo.java @@ -217,7 +217,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy return ((IEnergyConnector)getTile()).canConnect(dir); } - return false; + return true; } @Override @@ -427,25 +427,25 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { if(!this.fluid) return fluid; if(getTile() instanceof IFluidConnector) { - return ((IFluidConnector)getTile()).transferFluid(type, fluid); + return ((IFluidConnector)getTile()).transferFluid(type, pressure, fluid); } return fluid; } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { if(!this.fluid) return 0; if(getTile() instanceof IFluidConnector) { - return ((IFluidConnector)getTile()).getDemand(type); + return ((IFluidConnector)getTile()).getDemand(type, pressure); } return 0; } @@ -459,7 +459,7 @@ public class TileEntityProxyCombo extends TileEntityProxyBase implements IEnergy if(getTile() instanceof IFluidConnector) { return ((IFluidConnector)getTile()).canConnect(type, dir); } - return false; + return true; } @Override diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b4e7437c3..8498efeaa 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -7,11 +7,17 @@ import java.util.List; import com.hbm.blocks.bomb.BlockVolcano.TileEntityVolcanoCore; 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.BlockGlyphidSpawner.TileEntityGlpyhidSpawner; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.generic.PartEmitter.TileEntityPartEmitter; +import com.hbm.blocks.machine.MachineCapacitor.TileEntityCapacitor; import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.blocks.machine.PistonInserter.TileEntityPistonInserter; +import com.hbm.blocks.machine.WatzPump.TileEntityWatzPump; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -57,6 +63,7 @@ public class TileMappings { put(TileEntityDecoPoleTop.class, "tileentity_poletop"); put(TileEntityDecoPoleSatelliteReceiver.class, "tileentity_satellitereceicer"); put(TileEntityMachineBattery.class, "tileentity_battery"); + put(TileEntityCapacitor.class, "tileentity_capacitor"); put(TileEntityMachineCoal.class, "tileentity_coal"); put(TileEntityRedBarrel.class, "tileentity_barrel"); put(TileEntityYellowBarrel.class, "tileentity_nukebarrel"); @@ -77,12 +84,9 @@ public class TileMappings { put(TileEntityMachineTeleporter.class, "tileentity_teleblock"); put(TileEntityHatch.class, "tileentity_seal_lid"); put(TileEntityMachineIGenerator.class, "tileentity_igenerator"); + put(TileEntityPartEmitter.class, "tileentity_partemitter"); put(TileEntityDummy.class, "tileentity_dummy"); put(TileEntityMachineCyclotron.class, "tileentity_cyclotron"); - put(TileEntityOilDuct.class, "tileentity_oil_duct"); - put(TileEntityOilDuctSolid.class, "tileentity_oil_duct_solid"); - put(TileEntityGasDuct.class, "tileentity_gas_duct"); - put(TileEntityGasDuctSolid.class, "tileentity_gas_duct_solid"); put(TileEntityMachineRTG.class, "tileentity_machine_rtg"); put(TileEntityStructureMarker.class, "tileentity_structure_marker"); put(TileEntityMachineMiningDrill.class, "tileentity_mining_drill"); @@ -92,6 +96,7 @@ public class TileMappings { put(TileEntityMachineFluidTank.class, "tileentity_fluid_tank"); put(TileEntityMachineTurbofan.class, "tileentity_machine_turbofan"); put(TileEntityMachineTurbineGas.class, "tileentity_machine_gasturbine"); + put(TileEntityCrateTemplate.class, "tileentity_crate_template"); put(TileEntityCrateIron.class, "tileentity_crate_iron"); put(TileEntityCrateSteel.class, "tileentity_crate_steel"); put(TileEntityCrateDesh.class, "tileentity_crate_desh"); @@ -165,6 +170,7 @@ public class TileMappings { put(TileEntityMachineFENSU.class, "tileentity_fensu"); put(TileEntityTrappedBrick.class, "tileentity_trapped_brick"); put(TileEntityPlasmaStruct.class, "tileentity_plasma_struct"); + put(TileEntityWatzStruct.class, "tileentity_watz_struct"); put(TileEntityHadronDiode.class, "tileentity_hadron_diode"); put(TileEntityHadronPower.class, "tileentity_hadron_power"); put(TileEntityHadron.class, "tileentity_hadron"); @@ -183,9 +189,12 @@ public class TileMappings { put(TileEntityPipeBaseNT.class, "tileentity_pipe_base"); put(TileEntityPipePaintable.class, "tileentity_pipe_paintable"); put(TileEntityPipeGauge.class, "tileentity_pipe_gauge"); - put(TileEntityWatz.class, "tileentity_watz"); + put(TileEntityPipeExhaust.class, "tileentity_pipe_exhaust"); + put(TileEntityFluidValve.class, "tileentity_pipe_valve"); put(TileEntityMachineBAT9000.class, "tileentity_bat9000"); put(TileEntityMachineOrbus.class, "tileentity_orbus"); + put(TileEntityGlpyhidSpawner.class, "tileentity_glyphid_spawner"); + put(TileEntityCustomMachine.class, "tileentity_custom_machine"); put(TileEntityLoot.class, "tileentity_ntm_loot"); put(TileEntityBobble.class, "tileentity_ntm_bobblehead"); @@ -258,12 +267,15 @@ public class TileMappings { put(TileEntitySawmill.class, "tileentity_sawmill"); put(TileEntityCrucible.class, "tileentity_crucible"); put(TileEntityHeatBoiler.class, "tileentity_heat_boiler"); + put(TileEntityHeatBoilerIndustrial.class, "tileentity_heat_boiler_industrial"); put(TileEntityFoundryMold.class, "tileentity_foundry_mold"); put(TileEntityFoundryBasin.class, "tileentity_foundry_basin"); put(TileEntityFoundryChannel.class, "tileentity_foundry_channel"); put(TileEntityFoundryTank.class, "tileentity_foundry_tank"); put(TileEntityFoundryOutlet.class, "tileentity_foundry_outlet"); + put(TileEntityFoundrySlagtap.class, "tileentity_foundry_slagtap"); + put(TileEntitySlag.class, "tileentity_foundry_slag"); put(TileEntityMachineAutocrafter.class, "tileentity_autocrafter"); put(TileEntityDiFurnaceRTG.class, "tileentity_rtg_difurnace"); @@ -278,6 +290,7 @@ public class TileMappings { put(TileEntityDeuteriumTower.class, "tileentity_deuterium_tower"); put(TileEntityMachineLiquefactor.class, "tileentity_liquefactor"); put(TileEntityMachineSolidifier.class, "tileentity_solidifier"); + put(TileEntityMachineCompressor.class, "tileentity_compressor"); put(TileEntityElectrolyser.class, "tileentity_electrolyser"); put(TileEntityMachineMixer.class, "tileentity_mixer"); @@ -303,9 +316,14 @@ public class TileMappings { put(TileEntitySpacer.class, "tileentity_fraction_spacer"); put(TileEntityMachineCatalyticCracker.class, "tileentity_catalytic_cracker"); put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer"); + put(TileEntityMachineCoker.class, "tileentity_coker"); + put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); 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() { @@ -347,14 +365,17 @@ public class TileMappings { put(TileEntityCraneInserter.class, "tileentity_inserter"); put(TileEntityCraneExtractor.class, "tileentity_extractor"); + put(TileEntityCraneGrabber.class, "tileentity_grabber"); put(TileEntityCraneBoxer.class, "tileentity_boxer"); put(TileEntityCraneUnboxer.class, "tileentity_unboxer"); put(TileEntityCraneRouter.class, "tileentity_router"); put(TileEntityCraneSplitter.class, "tileentity_splitter"); put(TileEntityFan.class, "tileentity_fan"); + put(TileEntityPistonInserter.class, "tileentity_piston_inserter"); put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender"); put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); + put(TileEntityRadioTorchCounter.class, "tileentity_rtty_counter"); } private static void put(Class clazz, String... names) { diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index 9e7084101..e69f71203 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -4,6 +4,8 @@ import com.hbm.blocks.ModBlocks; import com.hbm.blocks.bomb.LaunchPad; import com.hbm.inventory.container.ContainerLaunchPadTier1; import com.hbm.inventory.gui.GUILaunchPadTier1; +import com.hbm.items.ModItems; +import com.hbm.items.tool.ItemDesingator; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; @@ -280,40 +282,54 @@ public class TileEntityLaunchPad extends TileEntityLoadedBase implements ISidedI @Callback @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] getCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { - int xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); - int zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + int xCoord2; + int zCoord2; + if (slots[1].stackTagCompound != null) { + xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + } else + return new Object[] {false}; // Not sure if i should have this + /* if(xCoord2 == xCoord && zCoord2 == zCoord) { xCoord2 += 1; } - + */ + return new Object[] {xCoord2, zCoord2}; } - return new Object[] {"Designator not found"}; + return new Object[] {false, "Designator not found"}; } @Callback @Optional.Method(modid = "OpenComputers") public Object[] setCoords(Context context, Arguments args) { if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound = new NBTTagCompound(); slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); - - return new Object[] {"Success"}; + + return new Object[] {true}; } - return new Object[] {"Designator not found"}; + return new Object[] {false, "Designator not found"}; } @Callback diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java index 71a0d7289..fa1018dc7 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchTable.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.bomb; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.LaunchPad; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.handler.MissileStruct; import com.hbm.interfaces.IFluidAcceptor; @@ -28,9 +30,14 @@ import com.hbm.tileentity.TileEntityLoadedBase; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; import api.hbm.item.IDesignatorItem; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -43,7 +50,8 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISidedInventory, IEnergyUser, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IGUIProvider, SimpleComponent { private ItemStack slots[]; @@ -597,6 +605,86 @@ public class TileEntityLaunchTable extends TileEntityLoadedBase implements ISide return tanks; } + // do some opencomputer stuff + @Override + public String getComponentName() { + return "large_launch_pad"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyStored(Context context, Arguments args) { + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxEnergy(Context context, Arguments args) { + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getContents(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[0].getMaxFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getMaxFill(), tanks[1].getTankType().getName(), solid, maxSolid}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getLaunchInfo(Context context, Arguments args) { + return new Object[] {canLaunch(), isMissileValid(), hasDesignator(), hasFuel()}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + int xCoord2; + int zCoord2; + if (slots[1].stackTagCompound != null) { + xCoord2 = slots[1].stackTagCompound.getInteger("xCoord"); + zCoord2 = slots[1].stackTagCompound.getInteger("zCoord"); + } else + return new Object[] {false}; + + // Not sure if i should have this + /* + if(xCoord2 == xCoord && zCoord2 == zCoord) { + xCoord2 += 1; + } + */ + + return new Object[] {xCoord2, zCoord2}; + } + return new Object[] {false, "Designator not found"}; + } + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] setCoords(Context context, Arguments args) { + if (slots[1] != null && slots[1].getItem() instanceof IDesignatorItem) { + slots[1].stackTagCompound = new NBTTagCompound(); + slots[1].stackTagCompound.setInteger("xCoord", args.checkInteger(0)); + slots[1].stackTagCompound.setInteger("zCoord", args.checkInteger(1)); + + return new Object[] {true}; + } + return new Object[] {false, "Designator not found"}; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] launch(Context context, Arguments args) { + //worldObj.getBlock(xCoord, yCoord, zCoord).explode(worldObj, xCoord, yCoord, zCoord); + ((LaunchPad) ModBlocks.launch_pad).explode(worldObj, xCoord, yCoord, zCoord); + return new Object[] {}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerLaunchTable(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java index 60e93c1fd..9027eca23 100644 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java +++ b/src/main/java/com/hbm/tileentity/conductor/TileEntityFluidDuctSimple.java @@ -21,7 +21,6 @@ import net.minecraftforge.common.util.ForgeDirection; public class TileEntityFluidDuctSimple extends TileEntity implements IFluidDuct { - private FluidType lastType = Fluids.NONE; protected FluidType type = Fluids.NONE; public List uoteab = new ArrayList(); diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuct.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuct.java deleted file mode 100644 index bcc06b8a4..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuct.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.Library; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityGasDuct extends TileEntity implements IFluidDuct { - - public ForgeDirection[] connections = new ForgeDirection[6]; - public FluidType type = Fluids.GAS; - public List uoteab = new ArrayList(); - - @Override - public void updateEntity() { - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_neo, 1, 3); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - public void updateConnections() { - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) - connections[0] = ForgeDirection.UP; - else - connections[0] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) - connections[1] = ForgeDirection.DOWN; - else - connections[1] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) - connections[2] = ForgeDirection.NORTH; - else - connections[2] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) - connections[3] = ForgeDirection.EAST; - else - connections[3] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) - connections[4] = ForgeDirection.SOUTH; - else - connections[4] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) - connections[5] = ForgeDirection.WEST; - else - connections[5] = null; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - type = Fluids.GAS; - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuctSolid.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuctSolid.java deleted file mode 100644 index a78c2a6e3..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityGasDuctSolid.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import net.minecraft.tileentity.TileEntity; - -public class TileEntityGasDuctSolid extends TileEntity implements IFluidDuct { - - public FluidType type = Fluids.GAS; - public List uoteab = new ArrayList(); - - @Override - public void updateEntity() { - - //if(!worldObj.isRemote) - // PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type)); - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_paintable); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuct.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuct.java deleted file mode 100644 index 9db606172..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuct.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.lib.Library; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.util.ForgeDirection; - -public class TileEntityOilDuct extends TileEntity implements IFluidDuct { - - public ForgeDirection[] connections = new ForgeDirection[6]; - public FluidType type = Fluids.OIL; - public List uoteab = new ArrayList(); - - public TileEntityOilDuct() { - - } - - @Override - public void updateEntity() { - - //if(!worldObj.isRemote) - // PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type)); - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_neo, 2, 3); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - public void updateConnections() { - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord + 1, zCoord, type)) connections[0] = ForgeDirection.UP; - else connections[0] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord - 1, zCoord, type)) connections[1] = ForgeDirection.DOWN; - else connections[1] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord - 1, type)) connections[2] = ForgeDirection.NORTH; - else connections[2] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord + 1, yCoord, zCoord, type)) connections[3] = ForgeDirection.EAST; - else connections[3] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord, yCoord, zCoord + 1, type)) connections[4] = ForgeDirection.SOUTH; - else connections[4] = null; - - if(Library.checkFluidConnectables(this.worldObj, xCoord - 1, yCoord, zCoord, type)) connections[5] = ForgeDirection.WEST; - else connections[5] = null; - } - - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - type = Fluids.OIL; - } - - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - } - - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { - return 65536.0D; - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuctSolid.java b/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuctSolid.java deleted file mode 100644 index 940494cbc..000000000 --- a/src/main/java/com/hbm/tileentity/conductor/TileEntityOilDuctSolid.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.hbm.tileentity.conductor; - -import java.util.ArrayList; -import java.util.List; - -import com.hbm.blocks.ModBlocks; -import com.hbm.calc.UnionOfTileEntitiesAndBooleansForFluids; -import com.hbm.interfaces.IFluidDuct; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; -import com.hbm.tileentity.network.TileEntityPipeBaseNT; - -import net.minecraft.tileentity.TileEntity; - -public class TileEntityOilDuctSolid extends TileEntity implements IFluidDuct { - - public FluidType type = Fluids.OIL; - public List uoteab = new ArrayList(); - - @Override - public void updateEntity() { - - //if(!worldObj.isRemote) - // PacketDispatcher.wrapper.sendToAll(new TEFluidPipePacket(xCoord, yCoord, zCoord, type)); - - //this.updateConnections(); - - worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.fluid_duct_paintable); - - TileEntity tile = worldObj.getTileEntity(xCoord, yCoord, zCoord); - if(tile instanceof TileEntityPipeBaseNT) { - ((TileEntityPipeBaseNT) tile).setType(this.type); - } - } - - @Override - public FluidType getType() { - return type; - } - - @Override - public boolean setType(FluidType type) { - return false; - } -} diff --git a/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java b/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java index af014a09c..5dcef1aad 100644 --- a/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java +++ b/src/main/java/com/hbm/tileentity/deco/TileEntityTrappedBrick.java @@ -6,7 +6,7 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.TrappedBrick.Trap; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.entity.projectile.EntityRubble; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.items.ModItems; @@ -77,7 +77,7 @@ public class TileEntityTrappedBrick extends TileEntity { worldObj.setBlock(xCoord, yCoord - 1 - i, zCoord, ModBlocks.concrete_pillar); break; case POISON_DART: - EntityBulletBase dart = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.G20_CAUSTIC); + EntityBulletBaseNT dart = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.G20_CAUSTIC); dart.setPosition(xCoord + 0.5 + dir.offsetX, yCoord + 0.5, zCoord + 0.5 + dir.offsetZ); dart.motionX = dir.offsetX; dart.motionZ = dir.offsetZ; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java new file mode 100644 index 000000000..7d636a718 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChimneyBrick.java @@ -0,0 +1,124 @@ +package com.hbm.tileentity.machine; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; + +import api.hbm.fluid.IFluidUser; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityChimneyBrick extends TileEntityLoadedBase implements IFluidUser, INBTPacketReceiver { + + public int onTicks; + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + FluidType[] types = new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; + + for(FluidType type : types) { + this.trySubscribe(type, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); + this.trySubscribe(type, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); + this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); + this.trySubscribe(type, worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("onTicks", onTicks); + INBTPacketReceiver.networkPack(this, data, 150); + + if(onTicks > 0) onTicks--; + + } else { + + if(onTicks > 0) { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.5F); + fx.setFloat("max", 3F); + fx.setInteger("life", 250 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 12); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); + } + } + } + } + + public void networkUnpack(NBTTagCompound nbt) { + this.onTicks = nbt.getInteger("onTicks"); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return (dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH || dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) && + (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON); + } + + @Override + public long transferFluid(FluidType type, int pressure, long fluid) { + onTicks = 20; + + fluid *= 0.25; + + if(type == Fluids.SMOKE) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, fluid / 100F); + if(type == Fluids.SMOKE_LEADED) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, fluid / 100F); + if(type == Fluids.SMOKE_POISON) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.POISON, fluid / 100F); + + return 0; + } + + @Override + public long getDemand(FluidType type, int pressure) { + return 1_000_000; + } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[] {}; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 13, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java index fdc95bc0e..4a0226d96 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityChungus.java @@ -81,7 +81,7 @@ public class TileEntityChungus extends TileEntityLoadedBase implements IFluidAcc this.sendPower(worldObj, xCoord - dir.offsetX * 11, yCoord, zCoord - dir.offsetZ * 11, dir.getOpposite()); for(DirPos pos : this.getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java index 20f0d3915..8b42674b0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCondenser.java @@ -60,7 +60,7 @@ public class TileEntityCondenser extends TileEntityLoadedBase implements IFluidA } this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); fillFluidInit(tanks[1].getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 5dd663165..95b972949 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -1,20 +1,15 @@ package com.hbm.tileentity.machine; -import java.util.List; - -import com.hbm.interfaces.IFluidAcceptor; +import api.hbm.block.ILaserable; +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.inventory.container.ContainerCoreEmitter; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUICoreEmitter; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.block.ILaserable; -import api.hbm.energy.IEnergyUser; -import api.hbm.fluid.IFluidStandardReceiver; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -35,8 +30,10 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.List; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { public long power; public static final long maxPower = 1000000000L; @@ -69,8 +66,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne watts = MathHelper.clamp_int(watts, 1, 100); long demand = maxPower * watts / 2000; - - tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); beam = 0; @@ -178,6 +173,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne data.setLong("prev", prev); data.setInteger("beam", beam); data.setBoolean("isOn", isOn); + tank.writeToNBT(data, "tank"); this.networkPack(data, 250); } } @@ -189,6 +185,7 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne prev = data.getLong("prev"); beam = data.getInteger("beam"); isOn = data.getBoolean("isOn"); + tank.readFromNBT(data, "tank"); } public long getPowerScaled(long i) { @@ -199,38 +196,6 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return (watts * i) / 100; } - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if(type.name().equals(tank.getTankType().name())) - return tank.getFill(); - else - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type.name().equals(tank.getTankType().name())) - return tank.getMaxFill(); - else - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - @Override public void setPower(long i) { this.power = i; @@ -311,50 +276,56 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne return "dfc_emitter"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower(), tank.getFill(), watts, isOn}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] isActive(Context context, Arguments args) { return new Object[] {isOn}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] setActive(Context context, Arguments args) { isOn = args.checkBoolean(0); return new Object[] {}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java index 5b7e90266..b4fffdb9c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -200,22 +200,22 @@ public class TileEntityCoreInjector extends TileEntityMachineBase implements IFl return "dfc_injector"; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") - public Object[] getFirstFuel(Context context, Arguments args) { - return new Object[] {tanks[0].getFill()}; + public Object[] getFuel(Context context, Arguments args) { + return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") - public Object[] getSecondFuel(Context context, Arguments args) { - return new Object[] {tanks[1].getFill()}; + public Object[] getTypes(Context context, Arguments args) { + return new Object[] {tanks[0].getTankType().getName(), tanks[1].getTankType().getName()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {tanks[0].getFill(), tanks[1].getFill()}; + return new Object[] {tanks[0].getFill(), tanks[0].getTankType().getName(), tanks[1].getFill(), tanks[1].getTankType().getName()}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index d3e203e67..57fef61d5 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -191,28 +191,34 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn return "dfc_receiver"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { - return new Object[] {joules}; + return new Object[] {joules, "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getOutput(Context context, Arguments args) { - return new Object[] {power}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {joules, getPower()}; //literally only doing this for the consistency between components + } + + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryogel(Context context, Arguments args) { return new Object[] {tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {joules, power, tank.getFill()}; + return new Object[] {joules, getPower(), tank.getFill()}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 27f060d89..82ce38079 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -173,25 +173,31 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return "dfc_stabilizer"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {power}; + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {maxPower}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInput(Context context, Arguments args) { return new Object[] {watts}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getDurability(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() == ModItems.ams_lens && ItemLens.getLensDamage(slots[0]) < ((ItemLens)ModItems.ams_lens).maxDamage) { @@ -200,7 +206,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object lens_damage_buf; @@ -212,7 +218,7 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I return new Object[] {power, maxPower, watts, lens_damage_buf}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] setInput(Context context, Arguments args) { int newOutput = args.checkInteger(0); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java index 6ee9c5d3b..a6ee9501c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -7,6 +7,8 @@ import java.util.List; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerCrucible; import com.hbm.inventory.gui.GUICrucible; import com.hbm.inventory.material.MaterialShapes; @@ -23,6 +25,7 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.CrucibleUtil; +import api.hbm.block.ICrucibleAcceptor; import api.hbm.tile.IHeatSource; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -41,7 +44,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, IConfigurableMachine { +public class TileEntityCrucible extends TileEntityMachineBase implements IGUIProvider, ICrucibleAcceptor, IConfigurableMachine { public int heat; public int progress; @@ -168,6 +171,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } + + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F); } /* pour recipe stack */ @@ -206,6 +211,8 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 1.875D, yCoord, zCoord + 0.5D + dir.offsetZ * 1.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); } + + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND / 2F); } /* clean up stacks */ @@ -529,4 +536,58 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + CrucibleRecipe recipe = getLoadedRecipe(); + + if(recipe == null) { + return getQuantaFromType(this.wasteStack, null) < this.wasteZCapacity; + } + + int recipeContent = recipe.getInputAmount(); + int recipeInputRequired = getQuantaFromType(recipe.input, stack.material); + int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; + int amountStored = getQuantaFromType(recipeStack, stack.material); + + return amountStored < matMaximum && getQuantaFromType(this.recipeStack, null) < this.recipeZCapacity; + } + + @Override + public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { + + CrucibleRecipe recipe = getLoadedRecipe(); + + if(recipe == null) { + + int amount = getQuantaFromType(this.wasteStack, null); + + if(amount + stack.amount <= this.wasteZCapacity) { + this.addToStack(this.wasteStack, stack.copy()); + return null; + } else { + int toAdd = this.wasteZCapacity - amount; + this.addToStack(this.wasteStack, new MaterialStack(stack.material, toAdd)); + return new MaterialStack(stack.material, stack.amount - toAdd); + } + } + + int recipeContent = recipe.getInputAmount(); + int recipeInputRequired = getQuantaFromType(recipe.input, stack.material); + int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; + + if(recipeInputRequired + stack.amount <= matMaximum) { + this.addToStack(this.recipeStack, stack.copy()); + return null; + } + + int toAdd = matMaximum - stack.amount; + toAdd = Math.min(toAdd, this.recipeZCapacity - getQuantaFromType(this.recipeStack, null)); + this.addToStack(this.recipeStack, new MaterialStack(stack.material, toAdd)); + return new MaterialStack(stack.material, stack.amount - toAdd); + } + + @Override public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return false; } + @Override public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { return null; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java new file mode 100644 index 000000000..4803e6e38 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCustomMachine.java @@ -0,0 +1,498 @@ +package com.hbm.tileentity.machine; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.config.CustomMachineConfigJSON; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration; +import com.hbm.config.CustomMachineConfigJSON.MachineConfiguration.ComponentDefinition; +import com.hbm.inventory.container.ContainerMachineCustom; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineCustom; +import com.hbm.inventory.recipes.CustomMachineRecipes; +import com.hbm.inventory.recipes.CustomMachineRecipes.CustomMachineRecipe; +import com.hbm.lib.Library; +import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityProxyBase; +import com.hbm.util.Compat; +import com.hbm.util.fauxpointtwelve.BlockPos; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCustomMachine extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyUser, IGUIProvider { + + public String machineType; + public MachineConfiguration config; + + public long power; + public int progress; + public int maxProgress = 1; + public FluidTank[] inputTanks; + public FluidTank[] outputTanks; + public ModulePatternMatcher matcher; + public int structureCheckDelay; + public boolean structureOK = false; + public CustomMachineRecipe cachedRecipe; + + public List connectionPos = new ArrayList(); + + public TileEntityCustomMachine() { + /* + * 0: Battery + * 1-3: Fluid IDs + * 4-9: Inputs + * 10-15: Template + * 16-21: Output + */ + super(22); + } + + public void init() { + MachineConfiguration config = CustomMachineConfigJSON.customMachines.get(this.machineType); + + if(config != null) { + this.config = config; + + inputTanks = new FluidTank[config.fluidInCount]; + for(int i = 0; i < inputTanks.length; i++) inputTanks[i] = new FluidTank(Fluids.NONE, config.fluidInCap); + outputTanks = new FluidTank[config.fluidOutCount]; + for(int i = 0; i < outputTanks.length; i++) outputTanks[i] = new FluidTank(Fluids.NONE, config.fluidOutCap); + + matcher = new ModulePatternMatcher(config.itemInCount); + + } else { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + } + } + + @Override + public String getName() { + return config != null ? config.localizedName : "INVALID"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(config == null) { + worldObj.func_147480_a(xCoord, yCoord, zCoord, false); + return; + } + + this.power = Library.chargeTEFromItems(slots, 0, power, this.config.maxPower); + + if(this.inputTanks.length > 0) this.inputTanks[0].setType(1, slots); + if(this.inputTanks.length > 1) this.inputTanks[1].setType(2, slots); + if(this.inputTanks.length > 2) this.inputTanks[2].setType(3, slots); + + this.structureCheckDelay--; + if(this.structureCheckDelay <= 0) this.checkStructure(); + + if(this.worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : this.connectionPos) { + for(FluidTank tank : this.inputTanks) { + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + if(!config.generatorMode) this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + for(DirPos pos : this.connectionPos) { + if(config.generatorMode && power > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(FluidTank tank : this.outputTanks) if(tank.getFill() > 0) this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + if(this.structureOK) { + + if(config.generatorMode) { + if(this.cachedRecipe == null) { + CustomMachineRecipe recipe = this.getMatchingRecipe(); + if(recipe != null && this.hasRequiredQuantities(recipe) && this.hasSpace(recipe)) { + this.cachedRecipe = recipe; + this.useUpInput(recipe); + } + } + + if(this.cachedRecipe != null) { + this.maxProgress = (int) Math.max(cachedRecipe.duration / this.config.recipeSpeedMult, 1); + int powerReq = (int) Math.max(cachedRecipe.consumptionPerTick * this.config.recipeConsumptionMult, 1); + + this.progress++; + this.power += powerReq; + if(power > config.maxPower) power = config.maxPower; + + if(progress >= this.maxProgress) { + this.progress = 0; + this.processRecipe(cachedRecipe); + this.cachedRecipe = null; + } + } + + } else { + CustomMachineRecipe recipe = this.getMatchingRecipe(); + + if(recipe != null) { + this.maxProgress = (int) Math.max(recipe.duration / this.config.recipeSpeedMult, 1); + int powerReq = (int) Math.max(recipe.consumptionPerTick * this.config.recipeConsumptionMult, 1); + + if(this.power >= powerReq && this.hasRequiredQuantities(recipe) && this.hasSpace(recipe)) { + this.progress++; + this.power -= powerReq; + + if(progress >= this.maxProgress) { + this.progress = 0; + this.useUpInput(recipe); + this.processRecipe(recipe); + } + } + } else { + this.progress = 0; + } + } + } else { + this.progress = 0; + } + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", this.machineType); + data.setLong("power", power); + data.setBoolean("structureOK", structureOK); + data.setInteger("progress", progress); + data.setInteger("maxProgress", maxProgress); + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].writeToNBT(data, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].writeToNBT(data, "o" + i); + this.matcher.writeToNBT(data); + this.networkPack(data, 50); + } + } + + /** Only accepts inputs in a fixed order, saves a ton of performance because there's no permutations to check for */ + public CustomMachineRecipe getMatchingRecipe() { + List recipes = CustomMachineRecipes.recipes.get(this.machineType); + if(recipes == null || recipes.isEmpty()) return null; + + outer: + for(CustomMachineRecipe recipe : recipes) { + for(int i = 0; i < recipe.inputFluids.length; i++) { + if(this.inputTanks[i].getTankType() != recipe.inputFluids[i].type || this.inputTanks[i].getPressure() != recipe.inputFluids[i].pressure) continue outer; + } + + for(int i = 0; i < recipe.inputItems.length; i++) { + if(recipe.inputItems[i] != null && slots[i + 4] == null) continue outer; + if(!recipe.inputItems[i].matchesRecipe(slots[i + 4], true)) continue outer; + } + + return recipe; + } + + return null; + } + + public boolean hasRequiredQuantities(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.inputFluids.length; i++) { + if(this.inputTanks[i].getFill() < recipe.inputFluids[i].fill) return false; + } + + for(int i = 0; i < recipe.inputItems.length; i++) { + if(slots[i + 4] != null && slots[i + 4].stackSize < recipe.inputItems[i].stacksize) return false; + } + + return true; + } + + public boolean hasSpace(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.outputFluids.length; i++) { + if(this.outputTanks[i].getTankType() == recipe.outputFluids[i].type && this.outputTanks[i].getFill() + recipe.outputFluids[i].fill > this.outputTanks[i].getMaxFill()) return false; + } + + for(int i = 0; i < recipe.outputItems.length; i++) { + if(slots[i + 16] != null && (slots[i + 16].getItem() != recipe.outputItems[i].key.getItem() || slots[i + 16].getItemDamage() != recipe.outputItems[i].key.getItemDamage())) return false; + if(slots[i + 16] != null && slots[16 + i].stackSize + recipe.outputItems[i].key.stackSize > slots[i + 16].getMaxStackSize()) return false; + } + + return true; + } + + public void useUpInput(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.inputFluids.length; i++) { + this.inputTanks[i].setFill(this.inputTanks[i].getFill() - recipe.inputFluids[i].fill); + } + + for(int i = 0; i < recipe.inputItems.length; i++) { + this.decrStackSize(i + 4, recipe.inputItems[i].stacksize); + } + } + + public void processRecipe(CustomMachineRecipe recipe) { + + for(int i = 0; i < recipe.outputFluids.length; i++) { + if(this.outputTanks[i].getTankType() != recipe.outputFluids[i].type) this.outputTanks[i].setTankType(recipe.outputFluids[i].type); + this.outputTanks[i].setFill(this.outputTanks[i].getFill() + recipe.outputFluids[i].fill); + } + + for(int i = 0; i < recipe.outputItems.length; i++) { + + if(worldObj.rand.nextFloat() < recipe.outputItems[i].value) { + if(slots[i + 16] == null) { + slots[i + 16] = recipe.outputItems[i].key.copy(); + } else { + slots[i + 16].stackSize += recipe.outputItems[i].key.stackSize; + } + } + } + } + + public boolean checkStructure() { + + this.connectionPos.clear(); + this.structureCheckDelay = 300; + this.structureOK = false; + if(this.config == null) return false; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(ComponentDefinition comp : config.components) { + + /* vvv precisely the same method used for defining ports vvv */ + int x = xCoord - dir.offsetX * comp.x + rot.offsetX * comp.x; + int y = yCoord + comp.y; + int z = zCoord - dir.offsetZ * comp.z + rot.offsetZ * comp.z; + /* but for EW directions it just stops working entirely */ + /* there is absolutely zero reason why this should be required */ + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + x = xCoord + dir.offsetZ * comp.z - rot.offsetZ * comp.z; + z = zCoord + dir.offsetX * comp.x - rot.offsetX * comp.x; + } + /* i wholeheartedly believe it is the computer who is wrong here */ + + Block b = worldObj.getBlock(x, y, z); + if(b != comp.block) return false; + + int meta = worldObj.getBlockMetadata(x, y, z); + if(!comp.allowedMetas.contains(meta)) return false; + + TileEntity tile = Compat.getTileStandard(worldObj, x, y, z); + if(tile instanceof TileEntityProxyBase) { + TileEntityProxyBase proxy = (TileEntityProxyBase) tile; + proxy.cachedPosition = new BlockPos(xCoord, yCoord, zCoord); + proxy.markDirty(); + + for(ForgeDirection facing : ForgeDirection.VALID_DIRECTIONS) { + this.connectionPos.add(new DirPos(x + facing.offsetX, y + facing.offsetY, z + facing.offsetZ, facing)); + } + } + } + + for(ForgeDirection facing : ForgeDirection.VALID_DIRECTIONS) { + this.connectionPos.add(new DirPos(xCoord + facing.offsetX, yCoord + facing.offsetY, zCoord + facing.offsetZ, facing)); + } + + this.structureOK = true; + return true; + } + + public void buildStructure() { + + if(this.config == null) return; + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(ComponentDefinition comp : config.components) { + + int x = xCoord - dir.offsetX * comp.x + rot.offsetX * comp.x; + int y = yCoord + comp.y; + int z = zCoord - dir.offsetZ * comp.z + rot.offsetZ * comp.z; + if(dir == ForgeDirection.EAST || dir == ForgeDirection.WEST) { + x = xCoord + dir.offsetZ * comp.z - rot.offsetZ * comp.z; + z = zCoord + dir.offsetX * comp.x - rot.offsetX * comp.x; + } + + worldObj.setBlock(x, y, z, comp.block, (int) comp.allowedMetas.toArray()[0], 3); + } + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + if(this.config == null) return new int[] { }; + if(this.config.itemInCount > 5) return new int[] { 4, 5, 6, 7, 8, 9, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 4) return new int[] { 4, 5, 6, 7, 8, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 3) return new int[] { 4, 5, 6, 7, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 2) return new int[] { 4, 5, 6, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 1) return new int[] { 4, 5, 16, 17, 18, 19, 20, 21 }; + if(this.config.itemInCount > 0) return new int[] { 4, 16, 17, 18, 19, 20, 21 }; + return new int[] { }; + } + + @Override + public boolean canExtractItem(int i, ItemStack stack, int j) { + return i >= 16 && i <= 21; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack stack) { + if(slot < 4 || slot > 9) return false; + + int index = slot - 4; + int filterSlot = slot + 6; + + if(slots[filterSlot] == null) return true; + + return matcher.isValidForFilter(slots[filterSlot], index, stack); + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.machineType = nbt.getString("type"); + if(this.config == null) this.init(); + + this.power = nbt.getLong("power"); + this.progress = nbt.getInteger("progress"); + this.structureOK = nbt.getBoolean("structureOK"); + this.maxProgress = nbt.getInteger("maxProgress"); + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].readFromNBT(nbt, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); + + this.matcher.readFromNBT(nbt); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + + this.machineType = nbt.getString("machineType"); + this.init(); + + super.readFromNBT(nbt); + + if(this.config != null) { + + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].readFromNBT(nbt, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].readFromNBT(nbt, "o" + i); + + this.matcher.readFromNBT(nbt); + } + + int index = nbt.getInteger("cachedIndex"); + if(index != -1) { + this.cachedRecipe = CustomMachineRecipes.recipes.get(this.machineType).get(index); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + + if(machineType == null || this.config == null) { + super.writeToNBT(nbt); + return; + } + + nbt.setString("machineType", machineType); + + super.writeToNBT(nbt); + + for(int i = 0; i < inputTanks.length; i++) inputTanks[i].writeToNBT(nbt, "i" + i); + for(int i = 0; i < outputTanks.length; i++) outputTanks[i].writeToNBT(nbt, "o" + i); + + this.matcher.writeToNBT(nbt); + + if(this.cachedRecipe != null) { + int index = CustomMachineRecipes.recipes.get(this.machineType).indexOf(this.cachedRecipe); + nbt.setInteger("cachedIndex", index); + } else { + nbt.setInteger("cachedIndex", -1); + } + } + + @Override + public FluidTank[] getAllTanks() { + + FluidTank[] all = new FluidTank[inputTanks.length + outputTanks.length]; + + for(int i = 0; i < inputTanks.length; i++) all[i] = inputTanks[i]; + for(int i = 0; i < outputTanks.length; i++) all[inputTanks.length + i] = outputTanks[i]; + + return all; + } + + @Override + public FluidTank[] getSendingTanks() { + return outputTanks != null ? outputTanks : new FluidTank[0]; + } + + @Override + public FluidTank[] getReceivingTanks() { + return inputTanks != null ? inputTanks : new FluidTank[0]; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(this.config == null) return null; + return new ContainerMachineCustom(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + if(this.config == null) return null; + return new GUIMachineCustom(player.inventory, this); + } + + @Override + public long getPower() { + return this.power; + } + + @Override + public long getMaxPower() { + return this.config != null ? this.config.maxPower : 1; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long transferPower(long power) { + if(this.config != null && this.config.generatorMode) return power; + + this.setPower(this.getPower() + power); + + if(this.getPower() > this.getMaxPower()) { + + long overshoot = this.getPower() - this.getMaxPower(); + this.setPower(this.getMaxPower()); + return overshoot; + } + + return 0; + } + + @Override + public long getTransferWeight() { + if(this.config != null && this.config.generatorMode) return 0; + + return Math.max(getMaxPower() - getPower(), 0); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java index 6258575a7..b902dfd3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumExtractor.java @@ -1,14 +1,7 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; - -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.lib.Library; import com.hbm.tileentity.TileEntityMachineBase; import api.hbm.energy.IEnergyUser; @@ -16,17 +9,16 @@ import api.hbm.fluid.IFluidStandardTransceiver; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IEnergyUser, IFluidStandardTransceiver { +public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver { public long power = 0; public FluidTank[] tanks; - public List list = new ArrayList(); public TileEntityDeuteriumExtractor() { super(0); tanks = new FluidTank[2]; - tanks[0] = new FluidTank(Fluids.WATER, 1000, 0); - tanks[1] = new FluidTank(Fluids.HEAVYWATER, 100, 1); + tanks[0] = new FluidTank(Fluids.WATER, 1000); + tanks[1] = new FluidTank(Fluids.HEAVYWATER, 100); } @Override @@ -51,8 +43,7 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen } this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); - fillFluidInit(tanks[1].getTankType()); + this.sendFluidToAll(tanks[1], this); NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); @@ -99,66 +90,6 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen tanks[1].writeToNBT(nbt, "heavyWater"); } - - @Override - public void fillFluidInit(FluidType type) { - - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - fillFluid(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, getTact(), type); - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 20 < 10; - } - - @Override - public void setFluidFill(int i, FluidType type) { - if(type == tanks[0].getTankType()) - tanks[0].setFill(i); - else if(type == tanks[1].getTankType()) - tanks[1].setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getFill(); - else if(type == tanks[1].getTankType()) - return tanks[1].getFill(); - - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getMaxFill(); - - return 0; - } - - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public List getFluidList(FluidType type) { - return list; - } - - @Override - public void clearFluidList(FluidType type) { - list.clear(); - } - @Override public void setPower(long i) { power = i; @@ -171,7 +102,7 @@ public class TileEntityDeuteriumExtractor extends TileEntityMachineBase implemen @Override public long getMaxPower() { - return 100000; + return 10_000; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java index 3afa73370..a05b6fe01 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDeuteriumTower.java @@ -21,56 +21,7 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { tanks[1] = new FluidTank(Fluids.HEAVYWATER, 5000, 1); } - public void fillFluidInit(FluidType type) { - - int offsetX = 0; - int offsetZ = 0; - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - offsetX = -dir.offsetX; - offsetZ = -rot.offsetZ; - - if(dir == ForgeDirection.NORTH || dir == ForgeDirection.SOUTH) { - offsetX = rot.offsetX; - offsetZ = dir.offsetZ; - } - - /*fillFluid(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 0, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord - dir.offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord + dir.offsetZ * 1, getTact(), type); - fillFluid(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 0, getTact(), type); - fillFluid(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 1, getTact(), type);*/ - - /*worldObj.setBlock(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 1, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 2, this.yCoord, this.zCoord - dir.offsetZ * 0, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 2, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord - dir.offsetZ * 2, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 1, Blocks.dirt); - worldObj.setBlock(this.xCoord + rot.offsetX * 0, this.yCoord, this.zCoord + dir.offsetZ * 1, Blocks.dirt); - worldObj.setBlock(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord + dir.offsetZ * 0, Blocks.dirt); - worldObj.setBlock(this.xCoord - rot.offsetX * 1, this.yCoord, this.zCoord - dir.offsetZ * 1, Blocks.dirt);*/ - - /* I'm never doing an even sided fluid machine ever again - * - * this was pain - * - * - pheo */ - - - fillFluid(this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + offsetX * 2, this.yCoord, this.zCoord - offsetZ * 0, getTact(), type); - fillFluid(this.xCoord + offsetX * 1, this.yCoord, this.zCoord - offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + offsetX * 0, this.yCoord, this.zCoord - offsetZ * 2, getTact(), type); - fillFluid(this.xCoord + offsetX * 1, this.yCoord, this.zCoord + offsetZ * 1, getTact(), type); - fillFluid(this.xCoord + offsetX * 0, this.yCoord, this.zCoord + offsetZ * 1, getTact(), type); - fillFluid(this.xCoord - offsetX * 1, this.yCoord, this.zCoord + offsetZ * 0, getTact(), type); - fillFluid(this.xCoord - offsetX * 1, this.yCoord, this.zCoord - offsetZ * 1, getTact(), type); - } - + @Override protected void updateConnections() { for(DirPos pos : getConPos()) { @@ -78,17 +29,19 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { } } + @Override public void subscribeToAllAround(FluidType type, World world, int x, int y, int z) { for(DirPos pos : getConPos()) { this.trySubscribe(type, world, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } - - public void sendFluidToAll(FluidType type, TileEntity te) { + + @Override + public void sendFluidToAll(FluidTank tank, TileEntity te) { for(DirPos pos : getConPos()) { - this.sendFluid(type, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -139,6 +92,6 @@ public class TileEntityDeuteriumTower extends TileEntityDeuteriumExtractor { @Override public long getMaxPower() { - return 1000000; + return 100_000; } } \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java index a2da04057..1a10e1a7e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityDiFurnace.java @@ -2,14 +2,18 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineDiFurnace; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerDiFurnace; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIDiFurnace; import com.hbm.inventory.recipes.BlastFurnaceRecipes; import com.hbm.items.ModItems; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.INBTPacketReceiver; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; +import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -21,8 +25,9 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityDiFurnace extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider { public int progress; public int fuel; @@ -35,7 +40,7 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr public byte sideLower = 1; public TileEntityDiFurnace() { - super(4); + super(4, 50); } @Override @@ -181,6 +186,14 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr public void updateEntity() { if(!worldObj.isRemote) { + + boolean extension = worldObj.getBlock(xCoord, yCoord + 1, zCoord) == ModBlocks.machine_difurnace_extension; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } + + if(extension) this.sendSmoke(xCoord, yCoord + 2, zCoord, ForgeDirection.UP); boolean markDirty = false; @@ -196,7 +209,6 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr } if(canProcess()) { - boolean extension = worldObj.getBlock(xCoord, yCoord + 1, zCoord) == ModBlocks.machine_difurnace_extension; //fuel -= extension ? 2 : 1; fuel -= 1; //switch it up on me, fuel efficiency, on fumes i'm running - running - running - running @@ -211,6 +223,8 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr if(fuel < 0) { fuel = 0; } + + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (extension ? 3 : 1)); } else { progress = 0; @@ -259,4 +273,14 @@ public class TileEntityDiFurnace extends TileEntityMachineBase implements IGUIPr public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIDiFurnace(player.inventory, this); } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[0]; + } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java index c2eb12a1a..26762787e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityElectrolyser.java @@ -4,29 +4,48 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; -import com.hbm.inventory.container.ContainerElectrolyser; -import com.hbm.inventory.fluid.FluidType; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerElectrolyserFluid; +import com.hbm.inventory.container.ContainerElectrolyserMetal; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; -import com.hbm.inventory.gui.GUIElectrolyser; +import com.hbm.inventory.gui.GUIElectrolyserFluid; +import com.hbm.inventory.gui.GUIElectrolyserMetal; +import com.hbm.inventory.material.MaterialShapes; +import com.hbm.inventory.material.Mats; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes; +import com.hbm.inventory.recipes.ElectrolyserFluidRecipes.ElectrolysisRecipe; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes; +import com.hbm.inventory.recipes.ElectrolyserMetalRecipes.ElectrolysisMetalRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CrucibleUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.common.network.internal.FMLNetworkHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IGUIProvider /* TODO: new fluid API */ { +public class TileEntityElectrolyser extends TileEntityMachineBase implements IEnergyUser, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public long power; public static final long maxPower = 20000000; @@ -39,15 +58,45 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn public int progressOre; public static final int processOreTimeBase = 1000; public int processOreTime; + + public MaterialStack leftStack; + public MaterialStack rightStack; + public int maxMaterial = MaterialShapes.BLOCK.q(16); public FluidTank[] tanks; public TileEntityElectrolyser() { - super(24); - tanks = new FluidTank[3]; - tanks[0] = new FluidTank(Fluids.WATER, 16000, 0); - tanks[1] = new FluidTank(Fluids.HYDROGEN, 16000, 1); - tanks[2] = new FluidTank(Fluids.OXYGEN, 16000, 2); + //0: Battery + //1-2: Upgrades + //// FLUID + //3-4: Fluid ID + //5-10: Fluid IO + //11-13: Byproducts + //// METAL + //14: Crystal + //15-20: Outputs + super(21); + tanks = new FluidTank[4]; + tanks[0] = new FluidTank(Fluids.WATER, 16000); + tanks[1] = new FluidTank(Fluids.HYDROGEN, 16000); + tanks[2] = new FluidTank(Fluids.OXYGEN, 16000); + tanks[3] = new FluidTank(Fluids.NITRIC_ACID, 16000); + } + + @Override + public int[] getAccessibleSlotsFromSide(int meta) { + return new int[] { 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + if(i == 14) return ElectrolyserMetalRecipes.getRecipe(itemStack) != null; + return false; + } + + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return i != 14; } @Override @@ -60,8 +109,98 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn if(!worldObj.isRemote) { - this.tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); + this.tanks[0].setType(3, 4, slots); + this.tanks[0].loadTank(5, 6, slots); + this.tanks[1].unloadTank(7, 8, slots); + this.tanks[2].unloadTank(9, 10, slots); + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : this.getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + UpgradeManager.eval(slots, 1, 2); + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + + processFluidTime = processFluidTimeBase - processFluidTimeBase * speedLevel / 4; + processOreTime = processOreTimeBase - processOreTimeBase * speedLevel / 4; + usage = usageBase - usageBase * powerLevel / 4; + + if(this.canProcessFluid()) { + this.progressFluid++; + this.power -= this.usage; + + if(this.progressFluid >= this.processFluidTime) { + this.processFluids(); + this.progressFluid = 0; + this.markChanged(); + } + } + + if(this.canProcesMetal()) { + this.progressOre++; + this.power -= this.usage; + + if(this.progressOre >= this.processOreTime) { + this.processMetal(); + this.progressOre = 0; + this.markChanged(); + } + } + + if(this.leftStack != null) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + List toCast = new ArrayList(); + toCast.add(this.leftStack); + + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(1), impact); + + if(didPour != null) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", didPour.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + + if(this.leftStack.amount <= 0) this.leftStack = null; + } + } + + if(this.rightStack != null) { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + List toCast = new ArrayList(); + toCast.add(this.rightStack); + + Vec3 impact = Vec3.createVectorHelper(0, 0, 0); + MaterialStack didPour = CrucibleUtil.pourFullStack(worldObj, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2D, zCoord + 0.5D + dir.offsetZ * 5.875D, 6, true, toCast, MaterialShapes.NUGGET.q(1), impact); + + if(didPour != null) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", didPour.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.625F); + data.setFloat("base", 0.625F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(impact.yCoord) - 0.875) + 2)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D + dir.offsetX * 5.875D, yCoord + 2, zCoord + 0.5D + dir.offsetZ * 5.875D), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 50)); + + if(this.rightStack.amount <= 0) this.rightStack = null; + } + } NBTTagCompound data = new NBTTagCompound(); data.setLong("power", this.power); @@ -70,25 +209,163 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn data.setInteger("usage", this.usage); data.setInteger("processFluidTime", this.processFluidTime); data.setInteger("processOreTime", this.processOreTime); + if(this.leftStack != null) { + data.setInteger("leftType", leftStack.material.id); + data.setInteger("leftAmount", leftStack.amount); + } + if(this.rightStack != null) { + data.setInteger("rightType", rightStack.material.id); + data.setInteger("rightAmount", rightStack.amount); + } + for(int i = 0; i < 4; i++) tanks[i].writeToNBT(data, "t" + i); this.networkPack(data, 50); - - fillFluidInit(tanks[1].getTankType()); - fillFluidInit(tanks[2].getTankType()); } - } - @Override - public void fillFluidInit(FluidType type) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord - dir.offsetX * 6, yCoord, zCoord - dir.offsetZ * 6, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 6 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 + rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 6 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 6 - rot.offsetZ, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 6, yCoord, zCoord + dir.offsetZ * 6, dir), + new DirPos(xCoord + dir.offsetX * 6 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 + rot.offsetZ, dir), + new DirPos(xCoord + dir.offsetX * 6 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 6 - rot.offsetZ, dir) + }; + } - fillFluid(xCoord + dir.offsetX * 5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * -1, getTact(), type); - fillFluid(xCoord + dir.offsetX * 5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * 1, getTact(), type); - fillFluid(xCoord + dir.offsetX * -5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * -1, getTact(), type); - fillFluid(xCoord + dir.offsetX * -5 + rot.offsetX * -1, yCoord-1, zCoord + dir.offsetZ * 5 + rot.offsetZ * 1, getTact(), type); - + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.progressFluid = nbt.getInteger("progressFluid"); + this.progressOre = nbt.getInteger("progressOre"); + this.usage = nbt.getInteger("usage"); + this.processFluidTime = nbt.getInteger("processFluidTime"); + this.processOreTime = nbt.getInteger("processOreTime"); + if(nbt.hasKey("leftType")) this.leftStack = new MaterialStack(Mats.matById.get(nbt.getInteger("leftType")), nbt.getInteger("leftAmount")); + else this.leftStack = null; + if(nbt.hasKey("rightType")) this.rightStack = new MaterialStack(Mats.matById.get(nbt.getInteger("rightType")), nbt.getInteger("rightAmount")); + else this.rightStack = null; + for(int i = 0; i < 4; i++) tanks[i].readFromNBT(nbt, "t" + i); + } + + public boolean canProcessFluid() { + + if(this.power < usage) return false; + + ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); + + if(recipe == null) return false; + if(recipe.amount > tanks[0].getFill()) return false; + if(recipe.output1.type == tanks[1].getTankType() && recipe.output1.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; + if(recipe.output2.type == tanks[2].getTankType() && recipe.output2.fill + tanks[2].getFill() > tanks[2].getMaxFill()) return false; + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[11 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) continue; + if(!slot.isItemEqual(byproduct)) return false; + if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; + } + } + + return true; + } + + public void processFluids() { + + ElectrolysisRecipe recipe = ElectrolyserFluidRecipes.recipes.get(tanks[0].getTankType()); + tanks[0].setFill(tanks[0].getFill() - recipe.amount); + tanks[1].setTankType(recipe.output1.type); + tanks[2].setTankType(recipe.output2.type); + tanks[1].setFill(tanks[1].getFill() + recipe.output1.fill); + tanks[2].setFill(tanks[2].getFill() + recipe.output2.fill); + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[11 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) { + slots[11 + i] = byproduct.copy(); + } else { + slots[11 + i].stackSize += byproduct.stackSize; + } + } + } + } + + public boolean canProcesMetal() { + + if(slots[14] == null) return false; + if(this.power < usage) return false; + if(this.tanks[3].getFill() < 100) return false; + + ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + + if(leftStack != null) { + if(recipe.output1.material != leftStack.material) return false; + if(recipe.output1.amount + leftStack.amount > this.maxMaterial) return false; + } + + if(rightStack != null) { + if(recipe.output2.material != rightStack.material) return false; + if(recipe.output2.amount + rightStack.amount > this.maxMaterial) return false; + } + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[15 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) continue; + if(!slot.isItemEqual(byproduct)) return false; + if(slot.stackSize + byproduct.stackSize > slot.getMaxStackSize()) return false; + } + } + + return true; + } + + public void processMetal() { + + ElectrolysisMetalRecipe recipe = ElectrolyserMetalRecipes.getRecipe(slots[14]); + + if(leftStack == null) { + leftStack = new MaterialStack(recipe.output1.material, recipe.output1.amount); + } else { + leftStack.amount += recipe.output1.amount; + } + + if(rightStack == null) { + rightStack = new MaterialStack(recipe.output2.material, recipe.output2.amount); + } else { + rightStack.amount += recipe.output2.amount; + } + + if(recipe.byproduct != null) { + + for(int i = 0; i < recipe.byproduct.length; i++) { + ItemStack slot = slots[15 + i]; + ItemStack byproduct = recipe.byproduct[i]; + + if(slot == null) { + slots[15 + i] = byproduct.copy(); + } else { + slots[15 + i].stackSize += byproduct.stackSize; + } + } + } + + this.tanks[3].setFill(this.tanks[3].getFill() - 100); + this.decrStackSize(14, 1); } AxisAlignedBB bb = null; @@ -98,12 +375,12 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn if(bb == null) { bb = AxisAlignedBB.getBoundingBox( - xCoord - 3, + xCoord - 5, yCoord - 0, - zCoord - 4, - xCoord + 3, + zCoord - 5, + xCoord + 6, yCoord + 4, - zCoord + 4 + zCoord + 6 ); } @@ -126,79 +403,51 @@ public class TileEntityElectrolyser extends TileEntityMachineBase implements IEn return maxPower; } - @Override - public void setFillForSync(int fill, int index) { - tanks[index].setFill(fill); - - } - - @Override - public void setFluidFill(int fill, FluidType type) { - for(int i = 0; i < 3; i++) { - if(type == tanks[i].getTankType()) - tanks[i].setFill(fill); - } - - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tanks[index].setTankType(type); - - } - - @Override - public int getFluidFill(FluidType type) { - for(int i = 0; i < 3; i++) { - if(type == tanks[i].getTankType() && tanks[i].getFill() != 0) - return tanks[i].getFill(); - } - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - for(int i = 0; i < 3; i++) { - if(type == tanks[i].getTankType() && tanks[i].getMaxFill() != 0) - return tanks[i].getMaxFill(); - } - return 0; - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 20 < 10; - } - - @Override - public List getFluidList(FluidType type) { - return new ArrayList(); - } - - @Override - public void clearFluidList(FluidType type) { - return; - } - @Override public void setPower(long power) { this.power = power; } + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1], tanks[2]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[3]}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerElectrolyser(player.inventory, this); + if(ID == 0) return new ContainerElectrolyserFluid(player.inventory, this); + return new ContainerElectrolyserMetal(player.inventory, this); } @Override @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUIElectrolyser(player.inventory, this); + if(ID == 0) return new GUIElectrolyserFluid(player.inventory, this); + return new GUIElectrolyserMetal(player.inventory, this); } + @Override + public void receiveControl(NBTTagCompound data) { } + + @Override + public void receiveControl(EntityPlayer player, NBTTagCompound data) { + + if(data.hasKey("sgm")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord); + if(data.hasKey("sgf")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, worldObj, xCoord, yCoord, zCoord); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java index 9fb40234e..e34d8eb8e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFireboxBase.java @@ -1,10 +1,15 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.module.ModuleBurnTime; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; +import api.hbm.fluid.IFluidStandardSender; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -14,7 +19,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; -public abstract class TileEntityFireboxBase extends TileEntityMachineBase implements IGUIProvider, IHeatSource { +public abstract class TileEntityFireboxBase extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider, IHeatSource { public int maxBurnTime; public int burnTime; @@ -29,7 +34,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem public TileEntityFireboxBase() { - super(2); + super(2, 50); } @Override @@ -47,6 +52,15 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem if(!worldObj.isRemote) { + for(int i = 2; i < 6; i++) { + ForgeDirection dir = ForgeDirection.getOrientation(i); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + for(int j = -1; j <= 1; j++) { + this.sendSmoke(xCoord + dir.offsetX * 2 + rot.offsetX * j, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + } + } + wasOn = false; if(burnTime <= 0) { @@ -74,6 +88,7 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem if(this.heatEnergy < getMaxHeat()) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } this.wasOn = true; @@ -198,4 +213,19 @@ public abstract class TileEntityFireboxBase extends TileEntityMachineBase implem public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank[] getAllTanks() { + return new FluidTank[0]; + } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN && dir != ForgeDirection.DOWN; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java new file mode 100644 index 000000000..ef09f7257 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFoundrySlagtap.java @@ -0,0 +1,115 @@ +package com.hbm.tileentity.machine; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockDynamicSlag.TileEntitySlag; +import com.hbm.inventory.material.Mats.MaterialStack; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; +import com.hbm.util.Compat; + +import api.hbm.block.ICrucibleAcceptor; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import net.minecraft.block.Block; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityFoundrySlagtap extends TileEntity implements ICrucibleAcceptor { + + @Override + public boolean canAcceptPartialFlow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { + + Vec3 start = Vec3.createVectorHelper(x + 0.5, y - 0.125, z + 0.5); + Vec3 end = Vec3.createVectorHelper(x + 0.5, y + 0.125 - 15, z + 0.5); + + MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true); + + if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) { + return false; + } + + return true; + } + + @Override + public MaterialStack flow(World world, int x, int y, int z, ForgeDirection side, MaterialStack stack) { + + if(stack == null || stack.material == null || stack.amount <= 0) { + return null; + } + + Vec3 start = Vec3.createVectorHelper(x + 0.5, y - 0.125, z + 0.5); + Vec3 end = Vec3.createVectorHelper(x + 0.5, y + 0.125 - 15, z + 0.5); + + MovingObjectPosition mop = world.func_147447_a(start, end, true, true, true); + + if(mop == null || mop.typeOfHit != mop.typeOfHit.BLOCK) { + return null; + } + + Block hit = world.getBlock(mop.blockX, mop.blockY, mop.blockZ); + Block above = world.getBlock(mop.blockX, mop.blockY + 1, mop.blockZ); + + boolean didFlow = false; + + if(hit == ModBlocks.slag) { + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY, mop.blockZ); + if(tile.mat == stack.material) { + int transfer = Math.min(tile.maxAmount - tile.amount, stack.amount); + tile.amount += transfer; + stack.amount -= transfer; + didFlow = didFlow || transfer > 0; + world.markBlockForUpdate(mop.blockX, mop.blockY, mop.blockZ); + world.scheduleBlockUpdate(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag, 1); + } + } else if(hit.isReplaceable(world, mop.blockX, mop.blockY, mop.blockZ)) { + world.setBlock(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY, mop.blockZ); + tile.mat = stack.material; + int transfer = Math.min(tile.maxAmount, stack.amount); + tile.amount += transfer; + stack.amount -= transfer; + didFlow = didFlow || transfer > 0; + world.markBlockForUpdate(mop.blockX, mop.blockY, mop.blockZ); + world.scheduleBlockUpdate(mop.blockX, mop.blockY, mop.blockZ, ModBlocks.slag, 1); + } + + if(stack.amount > 0 && above.isReplaceable(world, mop.blockX, mop.blockY + 1, mop.blockZ)) { + world.setBlock(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.slag); + TileEntitySlag tile = (TileEntitySlag) Compat.getTileStandard(world, mop.blockX, mop.blockY + 1, mop.blockZ); + tile.mat = stack.material; + int transfer = Math.min(tile.maxAmount, stack.amount); + tile.amount += transfer; + stack.amount -= transfer; + didFlow = didFlow || transfer > 0; + world.markBlockForUpdate(mop.blockX, mop.blockY + 1, mop.blockZ); + world.scheduleBlockUpdate(mop.blockX, mop.blockY + 1, mop.blockZ, ModBlocks.slag, 1); + } + + if(didFlow) { + ForgeDirection dir = side.getOpposite(); + double hitY = mop.blockY; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "foundry"); + data.setInteger("color", stack.material.moltenColor); + data.setByte("dir", (byte) dir.ordinal()); + data.setFloat("off", 0.375F); + data.setFloat("base", 0F); + data.setFloat("len", Math.max(1F, yCoord - (float) (Math.ceil(hitY)))); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5D - dir.offsetX * 0.125, yCoord + 0.125, zCoord + 0.5D - dir.offsetZ * 0.125), new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord, zCoord + 0.5, 50)); + } + + if(stack.amount <= 0) { + stack = null; + } + + return stack; + } + + @Override public boolean canAcceptPartialPour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return false; } + @Override public MaterialStack pour(World world, int x, int y, int z, double dX, double dY, double dZ, ForgeDirection side, MaterialStack stack) { return stack; } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 3ca96f521..de325d440 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.FluidStack; import com.hbm.inventory.container.ContainerFurnaceCombo; import com.hbm.inventory.fluid.Fluids; @@ -9,7 +11,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIFurnaceCombo; import com.hbm.inventory.recipes.CombinationRecipes; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.Tuple.Pair; import api.hbm.fluid.IFluidStandardSender; @@ -27,7 +29,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityFurnaceCombination extends TileEntityMachineBase implements IFluidStandardSender, IGUIProvider { +public class TileEntityFurnaceCombination extends TileEntityMachinePolluting implements IFluidStandardSender, IGUIProvider { public boolean wasOn; public int progress; @@ -40,7 +42,7 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen public FluidTank tank; public TileEntityFurnaceCombination() { - super(4); + super(4, 50); this.tank = new FluidTank(Fluids.NONE, 24_000); } @@ -62,14 +64,16 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen for(int y = yCoord; y <= yCoord + 1; y++) { for(int j = -1; j <= 1; j++) { - if(tank.getFill() > 0) this.sendFluid(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + if(tank.getFill() > 0) this.sendFluid(tank, worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); + this.sendSmoke(xCoord + dir.offsetX * 2 + rot.offsetX * j, y, zCoord + dir.offsetZ * 2 + rot.offsetZ * j, dir); } } } for(int x = xCoord - 1; x <= xCoord + 1; x++) { for(int z = zCoord - 1; z <= zCoord + 1; z++) { - if(tank.getFill() > 0) this.sendFluid(tank.getTankType(), worldObj, x, yCoord + 2, z, ForgeDirection.UP); + if(tank.getFill() > 0) this.sendFluid(tank, worldObj, x, yCoord + 2, z, ForgeDirection.UP); + this.sendSmoke(x, yCoord + 2, z, ForgeDirection.UP); } } } @@ -119,6 +123,8 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen if(worldObj.getTotalWorldTime() % 10 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 1, this.zCoord, "hbm:weapon.flamethrowerShoot", 0.25F, 0.5F); } + + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 3); } else { this.progress = 0; } @@ -215,12 +221,16 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.tank.readFromNBT(nbt, "tank"); + this.progress = nbt.getInteger("prog"); + this.heat = nbt.getInteger("heat"); } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); this.tank.writeToNBT(nbt, "tank"); + nbt.setInteger("prog", progress); + nbt.setInteger("heat", heat); } @Override @@ -266,6 +276,6 @@ public class TileEntityFurnaceCombination extends TileEntityMachineBase implemen @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] {tank}; + return new FluidTank[] {tank, smoke, smoke_leaded, smoke_poison}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index 2fde9b86e..aafd90a83 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -1,5 +1,7 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerFurnaceIron; import com.hbm.inventory.gui.GUIFurnaceIron; @@ -65,7 +67,6 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI if(slots[i] != null) { int fuel = burnModule.getBurnTime(slots[i]); - //int fuel = TileEntityFurnace.getItemBurnTime(slots[i]); if(fuel > 0) { this.maxBurnTime = this.burnTime = fuel; @@ -104,6 +105,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI this.progress = 0; this.markDirty(); } + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); } else { this.progress = 0; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java index ff6bffa73..77d212d9e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceSteel.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.container.ContainerFurnaceSteel; import com.hbm.inventory.gui.GUIFurnaceSteel; import com.hbm.tileentity.IGUIProvider; @@ -67,6 +69,7 @@ public class TileEntityFurnaceSteel extends TileEntityMachineBase implements IGU progress[i] += burn; this.heat -= burn; this.wasOn = true; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 2); } lastItems[i] = slots[i]; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index e9b9e17db..ac7bddef0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -4,9 +4,15 @@ import java.util.ArrayList; import java.util.List; import com.hbm.handler.radiation.ChunkRadiationManager; +import cpw.mods.fml.common.Optional; +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.tileentity.TileEntity; -public class TileEntityGeiger extends TileEntity { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityGeiger extends TileEntity implements SimpleComponent { int timer = 0; int ticker = 0; @@ -57,5 +63,15 @@ public class TileEntityGeiger extends TileEntity { int rads = (int)Math.ceil(ChunkRadiationManager.proxy.getRadiation(worldObj, xCoord, yCoord, zCoord)); return rads; } + @Override + public String getComponentName() { + return "ntm_geiger"; + } + + @Callback + @Optional.Method(modid = "OpenComputers") + public Object[] getRads(Context context, Arguments args) { + return new Object[] {check()}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 215f5d766..0c87a90b0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -322,6 +322,8 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs int charge; int analysis; boolean isCheckExempt = false; + int cl0 = 0; + int cl1 = 0; boolean expired = false; @@ -375,6 +377,34 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(charge < 0) this.expire(EnumHadronState.ERROR_NO_CHARGE); + + if(cl0 > 0) cl0--; + if(cl1 > 0) cl1--; + } + + public void incrementCharge(Block block, int meta, int coilVal) { + + if(block == ModBlocks.hadron_cooler) { + if(meta == 0) cl0 += 10; + if(meta == 1) cl1 += 5; + } + + //not the best code ever made but it works, dammit + if(cl1 > 0) { + + double mult = 2D - (cl1 - 15D) * (cl1 - 15D) / 225D; + mult = Math.max(mult, 0.1D); + coilVal *= mult; + + } else if(cl0 > 0) { + if(cl0 > 10) { + coilVal *= 0.75; + } else { + coilVal *= 1.10; + } + } + + this.momentum += coilVal; } } @@ -414,7 +444,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(block == ModBlocks.hadron_diode) p.isCheckExempt = true; - if(coilValue(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) > 0) + if(isValidCoil(worldObj.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ))) p.isCheckExempt = true; } @@ -445,6 +475,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs for(int c = z - dZ * 2; c <= z + dZ * 2;c++) { Block block = worldObj.getBlock(a, b, c); + int meta = worldObj.getBlockMetadata(a, b, c); /** ignore the center for now */ if(a == x && b == y && c == z) { @@ -479,11 +510,11 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs int coilVal = coilValue(block); //not a valid coil: kablam! - if(coilVal == 0) { + if(!isValidCoil(block)) { p.expire(EnumHadronState.ERROR_EXPECTED_COIL); } else { - p.momentum += coilVal; p.charge -= coilVal; + p.incrementCharge(block, meta, coilVal); } continue; @@ -641,7 +672,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs return; //so, the next block is most certainly a wall. not good. perhaps we could try turning? - if(coilValue(next) > 0) { + if(isValidCoil(next)) { ForgeDirection validDir = ForgeDirection.UNKNOWN; @@ -692,6 +723,14 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs return dirs; } + public boolean isValidCoil(Block b) { + if(coilValue(b) > 0) return true; + + if(b == ModBlocks.hadron_cooler) return true; + + return false; + } + public int coilValue(Block b) { if(b instanceof BlockHadronCoil) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java index a2325f6af..39b72b06c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoiler.java @@ -20,7 +20,9 @@ import com.hbm.inventory.fluid.trait.FT_Heatable; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.saveddata.TomSaveData; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -41,18 +43,22 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid public int heat; public FluidTank[] tanks; public List list = new ArrayList(); + public boolean isOn; public boolean hasExploded = false; + private AudioWrapper audio; + private int audioTime; + /* CONFIGURABLE */ - public static int maxHeat = 12_800_000; //the heat required to turn 64k of water into steam + public static int maxHeat = 3_200_000; public static double diffusion = 0.1D; public static boolean canExplode = true; public TileEntityHeatBoiler() { this.tanks = new FluidTank[2]; - this.tanks[0] = new FluidTank(Fluids.WATER, 64_000, 0); - this.tanks[1] = new FluidTank(Fluids.STEAM, 64_000 * 100, 1); + this.tanks[0] = new FluidTank(Fluids.WATER, 16_000); + this.tanks[1] = new FluidTank(Fluids.STEAM, 16_000 * 100); } @Override @@ -76,6 +82,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid data.setInteger("heat", lastHeat); tanks[0].writeToNBT(data, "0"); + this.isOn = false; this.tryConvert(); tanks[1].writeToNBT(data, "1"); @@ -84,9 +91,59 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid fillFluidInit(tanks[1].getTankType()); } } - + data.setBoolean("exploded", this.hasExploded); + data.setBoolean("isOn", this.isOn); INBTPacketReceiver.networkPack(this, data, 25); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -96,6 +153,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid this.heat = nbt.getInteger("heat"); this.tanks[0].readFromNBT(nbt, "0"); this.tanks[1].readFromNBT(nbt, "1"); + this.isOn = nbt.getBoolean("isOn"); } protected void tryPullHeat() { @@ -159,6 +217,10 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F); } + if(ops > 0) { + this.isOn = true; + } + if(outputOps == 0 && canExplode) { this.hasExploded = true; BlockDummyable.safeRem = true; @@ -193,7 +255,7 @@ public class TileEntityHeatBoiler extends TileEntityLoadedBase implements IFluid private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java new file mode 100644 index 000000000..fa447da65 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeatBoilerIndustrial.java @@ -0,0 +1,303 @@ +package com.hbm.tileentity.machine; + +import java.io.IOException; + +import com.google.gson.JsonObject; +import com.google.gson.stream.JsonWriter; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.fluid.trait.FT_Heatable; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingStep; +import com.hbm.inventory.fluid.trait.FT_Heatable.HeatingType; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.saveddata.TomSaveData; +import com.hbm.sound.AudioWrapper; +import com.hbm.tileentity.IConfigurableMachine; +import com.hbm.tileentity.INBTPacketReceiver; +import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.tile.IHeatSource; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.EnumSkyBlock; + +public class TileEntityHeatBoilerIndustrial extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver, IConfigurableMachine { + + public int heat; + public FluidTank[] tanks; + public boolean isOn; + + private AudioWrapper audio; + private int audioTime; + + /* CONFIGURABLE */ + public static int maxHeat = 12_800_000; + public static double diffusion = 0.1D; + + public TileEntityHeatBoilerIndustrial() { + this.tanks = new FluidTank[2]; + + this.tanks[0] = new FluidTank(Fluids.WATER, 64_000, 0); + this.tanks[1] = new FluidTank(Fluids.STEAM, 64_000 * 100, 1); + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + NBTTagCompound data = new NBTTagCompound(); + this.setupTanks(); + this.updateConnections(); + this.tryPullHeat(); + int lastHeat = this.heat; + + int light = this.worldObj.getSavedLightValue(EnumSkyBlock.Sky, this.xCoord, this.yCoord, this.zCoord); + if(light > 7 && TomSaveData.forWorld(worldObj).fire > 1e-5) { + this.heat += ((maxHeat - heat) * 0.000005D); //constantly heat up 0.0005% of the remaining heat buffer for rampant but diminishing heating + } + + data.setInteger("heat", lastHeat); + + tanks[0].writeToNBT(data, "0"); + this.isOn = false; + this.tryConvert(); + tanks[1].writeToNBT(data, "1"); + + if(this.tanks[1].getFill() > 0) { + this.sendFluid(); + } + + data.setBoolean("isOn", this.isOn); + INBTPacketReceiver.networkPack(this, data, 25); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.125F, 10F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.heat = nbt.getInteger("heat"); + this.tanks[0].readFromNBT(nbt, "0"); + this.tanks[1].readFromNBT(nbt, "1"); + this.isOn = nbt.getBoolean("isOn"); + } + + protected void tryPullHeat() { + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(con instanceof IHeatSource) { + IHeatSource source = (IHeatSource) con; + int diff = source.getHeatStored() - this.heat; + + if(diff == 0) { + return; + } + + if(diff > 0) { + diff = (int) Math.ceil(diff * diffusion); + source.useUpHeat(diff); + this.heat += diff; + if(this.heat > this.maxHeat) + this.heat = this.maxHeat; + return; + } + } + + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); + } + + protected void setupTanks() { + + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + if(trait.getEfficiency(HeatingType.BOILER) > 0) { + HeatingStep entry = trait.getFirstStep(); + tanks[1].setTankType(entry.typeProduced); + tanks[1].changeTankSize(tanks[0].getMaxFill() * entry.amountProduced / entry.amountReq); + return; + } + } + + tanks[0].setTankType(Fluids.NONE); + tanks[1].setTankType(Fluids.NONE); + } + + protected void tryConvert() { + + if(tanks[0].getTankType().hasTrait(FT_Heatable.class)) { + FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); + if(trait.getEfficiency(HeatingType.BOILER) > 0) { + + HeatingStep entry = trait.getFirstStep(); + int inputOps = this.tanks[0].getFill() / entry.amountReq; + int outputOps = (this.tanks[1].getMaxFill() - this.tanks[1].getFill()) / entry.amountProduced; + int heatOps = this.heat / entry.heatReq; + + int ops = Math.min(inputOps, Math.min(outputOps, heatOps)); + + this.tanks[0].setFill(this.tanks[0].getFill() - entry.amountReq * ops); + this.tanks[1].setFill(this.tanks[1].getFill() + entry.amountProduced * ops); + this.heat -= entry.heatReq * ops; + + if(ops > 0 && worldObj.rand.nextInt(400) == 0) { + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.boilerGroan", 0.5F, 1.0F); + } + + if(ops > 0) { + this.isOn = true; + } + } + } + } + + private void updateConnections() { + + for(DirPos pos : getConPos()) { + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + private void sendFluid() { + + for(DirPos pos : getConPos()) { + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir().getOpposite()); + } + } + + private DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord, yCoord + 5, zCoord, Library.POS_Y), + }; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + tanks[0].readFromNBT(nbt, "water"); + tanks[1].readFromNBT(nbt, "steam"); + heat = nbt.getInteger("heat"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + tanks[0].writeToNBT(nbt, "water"); + tanks[1].writeToNBT(nbt, "steam"); + nbt.setInteger("heat", heat); + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 5, + zCoord + 2 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public String getConfigName() { + return "boilerIndustrial"; + } + + @Override + public void readIfPresent(JsonObject obj) { + maxHeat = IConfigurableMachine.grab(obj, "I:maxHeat", maxHeat); + diffusion = IConfigurableMachine.grab(obj, "D:diffusion", diffusion); + } + + @Override + public void writeConfig(JsonWriter writer) throws IOException { + writer.name("I:maxHeat").value(maxHeat); + writer.name("D:diffusion").value(diffusion); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java index 7a3dacf54..35569da50 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java @@ -1,6 +1,8 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; @@ -17,7 +19,10 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public long power; public int heatEnergy; + public boolean isOn; protected int setting = 0; + + private AudioWrapper audio; @Override public void updateEntity() { @@ -32,16 +37,64 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH this.heatEnergy *= 0.999; this.tryPullHeat(); - + + this.isOn = false; if(setting > 0 && this.power >= this.getConsumption()) { this.power -= this.getConsumption(); this.heatEnergy += getHeatGen(); + this.isOn = true; } NBTTagCompound data = new NBTTagCompound(); data.setByte("s", (byte) this.setting); data.setInteger("h", this.heatEnergy); + data.setBoolean("o", isOn); INBTPacketReceiver.networkPack(this, data, 25); + } else { + + if(isOn) { + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.electricHum", xCoord, yCoord, zCoord, 0.25F, 7.5F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -49,6 +102,7 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public void networkUnpack(NBTTagCompound nbt) { this.setting = nbt.getByte("s"); this.heatEnergy = nbt.getInteger("h"); + this.isOn = nbt.getBoolean("o"); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java index 7d0656c7e..e1dffc2b1 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterHeatex.java @@ -65,7 +65,7 @@ public class TileEntityHeaterHeatex extends TileEntityMachineBase implements IHe INBTPacketReceiver.networkPack(this, data, 25); for(DirPos pos : getConPos()) { - if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 535d5939b..41bb5ed92 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -1,18 +1,20 @@ package com.hbm.tileentity.machine; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerOilburner; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUIOilburner; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.fauxpointtwelve.DirPos; -import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.tile.IHeatSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -23,7 +25,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityHeaterOilburner extends TileEntityMachineBase implements IGUIProvider, IFluidStandardReceiver, IHeatSource, IControlReceiver, IFluidAcceptor { +public class TileEntityHeaterOilburner extends TileEntityMachinePolluting implements IGUIProvider, IFluidStandardTransceiver, IHeatSource, IControlReceiver { public boolean isOn = false; public FluidTank tank; @@ -33,14 +35,23 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements public static final int maxHeatEnergy = 100_000; public TileEntityHeaterOilburner() { - super(3); - tank = new FluidTank(Fluids.HEATINGOIL, 16000, 0); + super(3, 100); + tank = new FluidTank(Fluids.HEATINGOIL, 16000); } @Override public String getName() { return "container.heaterOilburner"; } + + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; + } @Override public void updateEntity() { @@ -50,10 +61,10 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements tank.loadTank(0, 1, slots); tank.setType(2, slots); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + for(DirPos pos : this.getConPos()) { + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } boolean shouldCool = true; @@ -70,6 +81,11 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements int heat = (int)(type.getHeatEnergy() / 1000); this.heatEnergy += heat * toBurn; + + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * burnRate * 0.5F); + if(tank.getTankType().hasTrait(FT_Leaded.class)) this.pollute(PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * burnRate * 0.5F); + } shouldCool = false; } @@ -149,28 +165,6 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements this.heatEnergy = Math.max(0, this.heatEnergy - heat); } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == tank.getTankType()) - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { - return type == tank.getTankType() ? tank.getFill() : 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type == tank.getTankType() ? tank.getMaxFill() : 0; - } - @Override public boolean hasPermission(EntityPlayer player) { return player.getDistanceSq(xCoord, yCoord, zCoord) <= 256; @@ -213,4 +207,9 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java index fe47229b1..9802070ac 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITER.java @@ -156,7 +156,7 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser for(DirPos pos : getConPos()) { if(tanks[1].getFill() > 0) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -293,6 +293,8 @@ public class TileEntityITER extends TileEntityMachineBase implements IEnergyUser if(progress > this.duration) { + this.progress = 0; + if(slots[2] != null) { slots[2].stackSize++; } else { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java index 530de6de6..901cc4195 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityITERStruct.java @@ -151,9 +151,10 @@ public class TileEntityITERStruct extends TileEntity { int b = layout[ly][x][z]; Block block = worldObj.getBlock(xCoord + x - width, yCoord + y, zCoord + z - width); + int meta = worldObj.getBlockMetadata(xCoord + x - width, yCoord + y, zCoord + z - width); switch(b) { - case 1: if(block != ModBlocks.fusion_conductor) { return; } break; + case 1: if(block != ModBlocks.fusion_conductor || meta != 1) { return; } break; case 2: if(block != ModBlocks.fusion_center) { return; } break; case 3: if(block != ModBlocks.fusion_motor) { return; } break; case 4: if(block != ModBlocks.reinforced_glass) { return; } break; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java index 826bf7ffd..452a614e9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssembler.java @@ -1,60 +1,38 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; import java.util.Random; +import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; -import com.hbm.inventory.RecipesCommon.AStack; +import com.hbm.handler.MultiblockHandlerXR; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMachineAssembler; import com.hbm.inventory.gui.GUIMachineAssembler; import com.hbm.inventory.recipes.AssemblerRecipes; -import com.hbm.items.ModItems; import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; -import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateBase; -import com.hbm.tileentity.machine.storage.TileEntityCrateIron; -import com.hbm.tileentity.machine.storage.TileEntityCrateSteel; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyUser; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.tileentity.TileEntityHopper; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssembler extends TileEntityMachineBase implements IEnergyUser, IGUIProvider { +public class TileEntityMachineAssembler extends TileEntityMachineAssemblerBase { + + public int recipe = -1; - public long power; - public static final long maxPower = 100000; - public int progress; - public int maxProgress = 100; - public boolean isProgressing; - int age = 0; - int consumption = 100; - int speed = 100; - - @SideOnly(Side.CLIENT) - public int recipe; - - private AudioWrapper audio; - Random rand = new Random(); public TileEntityMachineAssembler() { @@ -78,55 +56,33 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements return false; } - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - this.power = nbt.getLong("powerTime"); - this.progress = nbt.getInteger("progress"); - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - nbt.setLong("powerTime", power); - nbt.setInteger("progress", progress); - } - - public long getPowerScaled(long i) { - return (power * i) / maxPower; - } - - public int getProgressScaled(int i) { - return (progress * i) / maxProgress; - } - @Override public void updateEntity() { + super.updateEntity(); if(!worldObj.isRemote) { + //meta below 12 means that it's an old multiblock configuration + if(this.getBlockMetadata() < 12) { + int meta = this.getBlockMetadata(); + if(meta == 2 || meta == 14) meta = 4; + else if(meta == 4 || meta == 13) meta = 3; + else if(meta == 3 || meta == 15) meta = 5; + else if(meta == 5 || meta == 12) meta = 2; + //get old direction + ForgeDirection dir = ForgeDirection.getOrientation(meta); + //remove tile from the world to prevent inventory dropping + worldObj.removeTileEntity(xCoord, yCoord, zCoord); + //use fillspace to create a new multiblock configuration + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.machine_assembler, dir.ordinal() + 10, 3); + MultiblockHandlerXR.fillSpace(worldObj, xCoord, yCoord, zCoord, ((BlockDummyable) ModBlocks.machine_assembler).getDimensions(), ModBlocks.machine_assembler, dir); + //load the tile data to restore the old values + NBTTagCompound data = new NBTTagCompound(); + this.writeToNBT(data); + worldObj.getTileEntity(xCoord, yCoord, zCoord).readFromNBT(data); + return; + } + this.updateConnections(); this.consumption = 100; @@ -145,77 +101,6 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements speed /= (overLevel + 1); consumption *= (overLevel + 1); - isProgressing = false; - power = Library.chargeTEFromItems(slots, 0, power, maxPower); - - if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null && AssemblerRecipes.getRecipeFromTempate(slots[4]) != null) { - this.maxProgress = (ItemAssemblyTemplate.getProcessTime(slots[4]) * speed) / 100; - - if(power >= consumption && removeItems(AssemblerRecipes.getRecipeFromTempate(slots[4]), cloneItemStackProper(slots))) { - - if(slots[5] == null || (slots[5] != null && slots[5].getItem() == AssemblerRecipes.getOutputFromTempate(slots[4]).copy().getItem()) && slots[5].stackSize + AssemblerRecipes.getOutputFromTempate(slots[4]).copy().stackSize <= slots[5].getMaxStackSize()) { - progress++; - isProgressing = true; - - if(progress >= maxProgress) { - progress = 0; - if(slots[5] == null) { - slots[5] = AssemblerRecipes.getOutputFromTempate(slots[4]).copy(); - } else { - slots[5].stackSize += AssemblerRecipes.getOutputFromTempate(slots[4]).copy().stackSize; - } - - removeItems(AssemblerRecipes.getRecipeFromTempate(slots[4]), slots); - - if(slots[0] != null && slots[0].getItem() == ModItems.meteorite_sword_alloyed) - slots[0] = new ItemStack(ModItems.meteorite_sword_machined); - } - - power -= consumption; - } - } else - progress = 0; - } else - progress = 0; - - int meta = worldObj.getBlockMetadata(this.xCoord, this.yCoord, this.zCoord); - - TileEntity te1 = null; - TileEntity te2 = null; - - if(meta == 2) { - te1 = worldObj.getTileEntity(xCoord - 2, yCoord, zCoord); - te2 = worldObj.getTileEntity(xCoord + 3, yCoord, zCoord - 1); - } - if(meta == 3) { - te1 = worldObj.getTileEntity(xCoord + 2, yCoord, zCoord); - te2 = worldObj.getTileEntity(xCoord - 3, yCoord, zCoord + 1); - } - if(meta == 4) { - te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord + 2); - te2 = worldObj.getTileEntity(xCoord - 1, yCoord, zCoord - 3); - } - if(meta == 5) { - te1 = worldObj.getTileEntity(xCoord, yCoord, zCoord - 2); - te2 = worldObj.getTileEntity(xCoord + 1, yCoord, zCoord + 3); - } - - tryExchangeTemplates(te1, te2); - - //OUTPUT - if(te1 instanceof TileEntityCrateBase || te1 instanceof TileEntityChest) { - IInventory chest = (IInventory)te1; - tryFillContainer(chest, 5); - } - - if(te2 instanceof TileEntityCrateBase || te2 instanceof TileEntityChest) { - IInventory chest = (IInventory)te2; - - for(int i = 0; i < chest.getSizeInventory(); i++) - if(tryFillAssembler(chest, i)) - break; - } - int rec = -1; if(AssemblerRecipes.getOutputFromTempate(slots[4]) != null) { ComparableStack comp = ItemAssemblyTemplate.readType(slots[4]); @@ -224,8 +109,8 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); - data.setInteger("progress", progress); - data.setInteger("maxProgress", maxProgress); + data.setIntArray("progress", this.progress); + data.setIntArray("maxProgress", this.maxProgress); data.setBoolean("isProgressing", isProgressing); data.setInteger("recipe", rec); this.networkPack(data, 150); @@ -253,341 +138,99 @@ public class TileEntityMachineAssembler extends TileEntityMachineBase implements } } } - + @Override - public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 1.0F); - } - - private void updateConnections() { - this.getBlockMetadata(); - - if(this.blockMetadata == 5) { - this.trySubscribe(worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(worldObj, xCoord - 2, yCoord, zCoord + 1, Library.NEG_X); - this.trySubscribe(worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord + 3, yCoord, zCoord + 1, Library.POS_X); - - } else if(this.blockMetadata == 3) { - this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - this.trySubscribe(worldObj, xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z); - this.trySubscribe(worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); - this.trySubscribe(worldObj, xCoord - 1, yCoord, zCoord + 3, Library.POS_Z); - - } else if(this.blockMetadata == 4) { - this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(worldObj, xCoord + 2, yCoord, zCoord - 1, Library.POS_X); - this.trySubscribe(worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(worldObj, xCoord - 3, yCoord, zCoord - 1, Library.NEG_X); - - } else if(this.blockMetadata == 2) { - this.trySubscribe(worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord + 1, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); - this.trySubscribe(worldObj, xCoord + 1, yCoord, zCoord - 3, Library.NEG_Z); - } - } - - public void onChunkUnload() { - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - - public void invalidate() { - - super.invalidate(); - - if(audio != null) { - audio.stopSound(); - audio = null; - } - } - public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); - this.progress = nbt.getInteger("progress"); - this.maxProgress = nbt.getInteger("maxProgress"); + this.progress = nbt.getIntArray("progress"); + this.maxProgress = nbt.getIntArray("maxProgress"); this.isProgressing = nbt.getBoolean("isProgressing"); this.recipe = nbt.getInteger("recipe"); } - private boolean removeItems(List stack, ItemStack[] array) { - - if(stack == null) - return false; - - for(int i = 0; i < stack.size(); i++) { - for(int j = 0; j < stack.get(i).stacksize; j++) { - AStack sta = stack.get(i).copy(); - sta.stacksize = 1; - - if(!canRemoveItemFromArray(sta, array)) - return false; - } - } - - return true; - } - - public boolean canRemoveItemFromArray(AStack stack, ItemStack[] array) { - - AStack st = stack.copy(); - - if(st == null) - return true; - - for(int i = 6; i < 18; i++) { - - if(array[i] != null) { - - ItemStack sta = array[i].copy(); - sta.stackSize = 1; - - if(sta != null && st.isApplicable(sta) && array[i].stackSize > 0) { - array[i].stackSize--; - - if(array[i].stackSize <= 0) - array[i] = null; - - return true; - } - } - } - - return false; - } - - public boolean tryExchangeTemplates(TileEntity te1, TileEntity te2) { - //validateTe sees if it's a valid inventory tile entity - boolean te1Valid = validateTe(te1); - boolean te2Valid = validateTe(te2); - - if(te1Valid && te2Valid){ - IInventory iTe1 = (IInventory)te1; - IInventory iTe2 = (IInventory)te2; - boolean openSlot = false; - boolean existingTemplate = false; - boolean filledContainer = false; - //Check if there's an existing template and an open slot - for(int i = 0; i < iTe1.getSizeInventory(); i++){ - if(iTe1.getStackInSlot(i) == null){ - openSlot = true; - - } - - } - if(this.slots[4] != null){ - existingTemplate = true; - } - //Check if there's a template in input - for(int i = 0; i < iTe2.getSizeInventory(); i++){ - if(iTe2.getStackInSlot(i) != null && iTe2.getStackInSlot(i).getItem() instanceof ItemAssemblyTemplate){ - if(openSlot && existingTemplate){ - filledContainer = tryFillContainer(iTe1, 4); - - } - if(filledContainer){ - ItemStack copy = iTe2.getStackInSlot(i).copy(); - iTe2.setInventorySlotContents(i, null); - this.slots[4] = copy; - } - } - - } - - - } - return false; - - } - - private boolean validateTe(TileEntity te) { - if(te instanceof TileEntityChest) { - return true; - } - - if(te instanceof TileEntityHopper) { - return true; - } - - if(te instanceof TileEntityCrateIron) { - return true; - } - - if(te instanceof TileEntityCrateSteel) { - return true; - } - - return false; - } - - //I can't believe that worked. - public ItemStack[] cloneItemStackProper(ItemStack[] array) { - ItemStack[] stack = new ItemStack[array.length]; - - for(int i = 0; i < array.length; i++) - if(array[i] != null) - stack[i] = array[i].copy(); - else - stack[i] = null; - - return stack; - } - - //Unloads output into chests - public boolean tryFillContainer(IInventory inventory, int slot) { - - int size = inventory.getSizeInventory(); - - for(int i = 0; i < size; i++) { - if(inventory.getStackInSlot(i) != null) { - - if(slots[slot] == null) - return false; - - ItemStack sta1 = inventory.getStackInSlot(i).copy(); - ItemStack sta2 = slots[slot].copy(); - if(sta1 != null && sta2 != null) { - sta1.stackSize = 1; - sta2.stackSize = 1; - - if(ItemStack.areItemStacksEqual(sta1, sta2) && ItemStack.areItemStackTagsEqual(sta1, sta2) && inventory.getStackInSlot(i).stackSize < inventory.getStackInSlot(i).getMaxStackSize()) { - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - ItemStack sta3 = inventory.getStackInSlot(i).copy(); - sta3.stackSize++; - inventory.setInventorySlotContents(i, sta3); - - return true; - } - } - } - } - for(int i = 0; i < size; i++) { - - if(slots[slot] == null) - return false; - - ItemStack sta2 = slots[slot].copy(); - if(inventory.getStackInSlot(i) == null && sta2 != null) { - sta2.stackSize = 1; - slots[slot].stackSize--; - - if(slots[slot].stackSize <= 0) - slots[slot] = null; - - inventory.setInventorySlotContents(i, sta2); - - return true; - } - } - - return false; - } - - public boolean tryFillAssembler(IInventory inventory, int slot) { - - if(AssemblerRecipes.getOutputFromTempate(slots[4]) == null || AssemblerRecipes.getRecipeFromTempate(slots[4]) == null) - return false; - else { - List list = copyItemStackList(AssemblerRecipes.getRecipeFromTempate(slots[4])); - - for(int i = 0; i < list.size(); i++) - list.get(i).stacksize = 1; - - - if(inventory.getStackInSlot(slot) == null) - return false; - - ItemStack stack = inventory.getStackInSlot(slot).copy(); - stack.stackSize = 1; - - boolean flag = false; - - for(int i = 0; i < list.size(); i++) - if(list.get(i).isApplicable(stack)) - flag = true; - - if(!flag) - return false; - - } - - for(int i = 6; i < 18; i++) { - - if(slots[i] != null) { - - ItemStack sta1 = inventory.getStackInSlot(slot).copy(); - ItemStack sta2 = slots[i].copy(); - if(sta1 != null && sta2 != null) { - sta1.stackSize = 1; - sta2.stackSize = 1; - - if(sta1.isItemEqual(sta2) && slots[i].stackSize < slots[i].getMaxStackSize()) { - ItemStack sta3 = inventory.getStackInSlot(slot).copy(); - sta3.stackSize--; - if(sta3.stackSize <= 0) - sta3 = null; - inventory.setInventorySlotContents(slot, sta3); - - slots[i].stackSize++; - return true; - } - } - } - } - - for(int i = 6; i < 18; i++) { - - ItemStack sta2 = inventory.getStackInSlot(slot).copy(); - if(slots[i] == null && sta2 != null) { - sta2.stackSize = 1; - slots[i] = sta2.copy(); - - ItemStack sta3 = inventory.getStackInSlot(slot).copy(); - sta3.stackSize--; - if(sta3.stackSize <= 0) - sta3 = null; - inventory.setInventorySlotContents(slot, sta3); - - return true; - } - } - - return false; - } - - public static List copyItemStackList(List list){ - List newList = new ArrayList(); - if(list == null || list.isEmpty()) - return newList; - for(AStack stack : list){ - newList.add(stack.copy()); - } - return newList; - } - @Override - public void setPower(long i) { - power = i; + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.assemblerOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); + } + + private void updateConnections() { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); + ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord + rot.offsetX * 3 + dir.offsetX, yCoord, zCoord + rot.offsetZ * 3 + dir.offsetZ, rot), + new DirPos(xCoord - rot.offsetX * 2 + dir.offsetX, yCoord, zCoord - rot.offsetZ * 2 + dir.offsetZ, rot.getOpposite()) + }; } @Override - public long getPower() { - return power; - + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + private AudioWrapper audio; + + @Override + public int getRecipeCount() { + return 1; + } + + @Override + public int getTemplateIndex(int index) { + return 4; + } + + @Override + public int[] getSlotIndicesFromIndex(int index) { + return new int[] {6, 17, 5}; + } + + @Override + public ChunkCoordinates[] getInputPositions() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + return new ChunkCoordinates[] {new ChunkCoordinates(xCoord - dir.offsetX * 3 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 3 + rot.offsetZ)}; + } + + @Override + public ChunkCoordinates[] getOutputPositions() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + return new ChunkCoordinates[] {new ChunkCoordinates(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2)}; + } + + @Override + public int getPowerSlot() { + return 0; } @Override public long getMaxPower() { - return maxPower; + return 100_000; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java index 587b14e85..aa5c7fec8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemblerBase.java @@ -9,6 +9,7 @@ import com.hbm.items.machine.ItemAssemblyTemplate; import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.machine.storage.TileEntityCrateTemplate; import com.hbm.util.InventoryUtil; import api.hbm.energy.IEnergyUser; @@ -24,6 +25,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa public int[] progress; public int[] maxProgress; public boolean isProgressing; + public boolean[] needsTemplateSwitch; int consumption = 100; int speed = 100; @@ -35,6 +37,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa progress = new int[count]; maxProgress = new int[count]; + needsTemplateSwitch = new boolean[count]; } @Override @@ -45,11 +48,11 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa int count = this.getRecipeCount(); this.isProgressing = false; - this.power = Library.chargeTEFromItems(slots, 0, power, this.getMaxPower()); + this.power = Library.chargeTEFromItems(slots, getPowerSlot(), power, this.getMaxPower()); for(int i = 0; i < count; i++) { - loadItems(i); unloadItems(i); + loadItems(i); } @@ -114,6 +117,7 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa consumeItems(recipe, index); produceItems(output, index); this.progress[index] = 0; + this.needsTemplateSwitch[index] = true; this.markDirty(); } } @@ -140,53 +144,76 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa private void loadItems(int index) { int template = getTemplateIndex(index); - if(slots[template] == null || slots[template].getItem() != ModItems.assembly_template) - return; - List recipe = AssemblerRecipes.getRecipeFromTempate(slots[template]); - - if(recipe != null) { - - ChunkCoordinates[] positions = getInputPositions(); - int[] indices = getSlotIndicesFromIndex(index); - - for(ChunkCoordinates coord : positions) { + ChunkCoordinates[] positions = getInputPositions(); + int[] indices = getSlotIndicesFromIndex(index); + + for(ChunkCoordinates coord : positions) { + + TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); - TileEntity te = worldObj.getTileEntity(coord.posX, coord.posY, coord.posZ); - - if(te instanceof IInventory) { + if(te instanceof IInventory) { + + IInventory inv = (IInventory) te; + ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; + boolean templateCrate = te instanceof TileEntityCrateTemplate; + + if(templateCrate && slots[template] == null) { + + for(int i = 0; i < inv.getSizeInventory(); i++) { + ItemStack stack = inv.getStackInSlot(i); + + if(stack != null && stack.getItem() == ModItems.assembly_template && (sided == null || sided.canExtractItem(i, stack, 0))) { + slots[template] = stack.copy(); + sided.setInventorySlotContents(i, null); + this.needsTemplateSwitch[index] = false; + break; + } + } + } - IInventory inv = (IInventory) te; - ISidedInventory sided = inv instanceof ISidedInventory ? (ISidedInventory) inv : null; - - for(AStack ingredient : recipe) { - - if(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { - - for(int i = 0; i < inv.getSizeInventory(); i++) { - - ItemStack stack = inv.getStackInSlot(i); - if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { - - for(int j = indices[0]; j <= indices[1]; j++) { - - if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { - inv.decrStackSize(i, 1); - slots[j].stackSize++; - return; + boolean noTemplate = slots[template] == null || slots[template].getItem() != ModItems.assembly_template; + + if(!noTemplate) { + + List recipe = AssemblerRecipes.getRecipeFromTempate(slots[template]); + + if(recipe != null) { + + for(AStack ingredient : recipe) { + + outer: while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { + + boolean found = false; + + for(int i = 0; i < inv.getSizeInventory(); i++) { + + ItemStack stack = inv.getStackInSlot(i); + if(ingredient.matchesRecipe(stack, true) && (sided == null || sided.canExtractItem(i, stack, 0))) { + found = true; + + for(int j = indices[0]; j <= indices[1]; j++) { + + if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { + inv.decrStackSize(i, 1); + slots[j].stackSize++; + continue outer; + } } - } - - for(int j = indices[0]; j <= indices[1]; j++) { - - if(slots[j] == null) { - slots[j] = stack.copy(); - slots[j].stackSize = 1; - inv.decrStackSize(i, 1); - return; + + for(int j = indices[0]; j <= indices[1]; j++) { + + if(slots[j] == null) { + slots[j] = stack.copy(); + slots[j].stackSize = 1; + inv.decrStackSize(i, 1); + continue outer; + } } } } + + if(!found) return; } } } @@ -209,8 +236,13 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa IInventory inv = (IInventory) te; int i = indices[2]; - ItemStack out = slots[i]; + + int template = getTemplateIndex(index); + if(this.needsTemplateSwitch[index] && te instanceof TileEntityCrateTemplate && slots[template] != null) { + out = slots[template]; + i = template; + } if(out != null) { @@ -266,4 +298,5 @@ public abstract class TileEntityMachineAssemblerBase extends TileEntityMachineBa public abstract int[] getSlotIndicesFromIndex(int index); public abstract ChunkCoordinates[] getInputPositions(); public abstract ChunkCoordinates[] getOutputPositions(); + public abstract int getPowerSlot(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java index 9dd81d815..a7f8b6f1e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineAssemfac.java @@ -1,21 +1,15 @@ package com.hbm.tileentity.machine; -import java.util.ArrayList; -import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerAssemfac; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIAssemfac; import com.hbm.items.machine.ItemMachineUpgrade; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; -import com.hbm.lib.Library; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.fluid.IFluidStandardTransceiver; @@ -31,7 +25,7 @@ import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver, IFluidAcceptor, IFluidSource { +public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase implements IFluidStandardTransceiver { public AssemblerArm[] arms; @@ -46,8 +40,8 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im arms[i] = new AssemblerArm(i % 3 == 1 ? 1 : 0); //the second of every group of three becomes a welder } - water = new FluidTank(Fluids.WATER, 64_000, 0); - steam = new FluidTank(Fluids.SPENTSTEAM, 64_000, 1); + water = new FluidTank(Fluids.WATER, 64_000); + steam = new FluidTank(Fluids.SPENTSTEAM, 64_000); } @Override @@ -91,11 +85,7 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im this.consumption *= (overLevel + 1); for(DirPos pos : getConPos()) { - this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - } - - if(steam.getFill() > 0) { - this.fillFluidInit(steam.getTankType()); + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); @@ -402,6 +392,11 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im return outpos; } + @Override + public int getPowerSlot() { + return 0; + } + @Override public FluidTank[] getSendingTanks() { return new FluidTank[] { steam }; @@ -412,59 +407,6 @@ public class TileEntityMachineAssemfac extends TileEntityMachineAssemblerBase im return new FluidTank[] { water }; } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { - if(type == water.getTankType()) water.setFill(fill); - if(type == steam.getTankType()) steam.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { - if(type == water.getTankType()) return water.getFill(); - if(type == steam.getTankType()) return steam.getFill(); - return 0; - } - - @Override - public void fillFluidInit(FluidType type) { - for(DirPos pos : getConPos()) { - this.fillFluid(pos.getX(), pos.getY(), pos.getZ(), this.getTact(), type); - } - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 2 == 0; - } - - private List list = new ArrayList(); - - @Override - public List getFluidList(FluidType type) { - return type == steam.getTankType() ? this.list : new ArrayList(); - } - - @Override - public void clearFluidList(FluidType type) { - this.list.clear(); - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type == water.getTankType() ? water.getMaxFill() : 0; - } - @Override public FluidTank[] getAllTanks() { return new FluidTank[] { water, steam }; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java index 50571797e..3323f4bce 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoiler.java @@ -5,6 +5,8 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.MachineBoiler; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -218,7 +220,7 @@ public class TileEntityMachineBoiler extends TileEntityLoadedBase implements ISi if(!worldObj.isRemote) { this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); age++; if(age >= 20) @@ -253,6 +255,7 @@ public class TileEntityMachineBoiler extends TileEntityLoadedBase implements ISi if(burnTime > 0) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); heat += 50; flag1 = true; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java index 38616f5a8..e29757724 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineBoilerElectric.java @@ -233,7 +233,7 @@ public class TileEntityMachineBoilerElectric extends TileEntityLoadedBase implem { this.updateConnections(); this.subscribeToAllAround(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); age++; if(age >= 20) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java index b35ad6c76..8add21027 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCentrifuge.java @@ -223,15 +223,17 @@ public class TileEntityMachineCentrifuge extends TileEntityMachineBase implement } } } - + + @Override public void networkUnpack(NBTTagCompound data) { this.power = data.getLong("power"); this.progress = data.getInteger("progress"); this.isProgressing = data.getBoolean("isProgressing"); } - + + @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 2.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.centrifugeOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java index 69215202a..539ea2f42 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemfac.java @@ -1,15 +1,12 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Random; import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerChemfac; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIChemfac; @@ -76,7 +73,7 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { for(DirPos pos : getConPos()) for(FluidTank tank : outTanks()) { if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { - this.sendFluid(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -217,58 +214,6 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return conPos; } - @Override - public void fillFluidInit(FluidType type) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - for(int i = 0; i < 6; i++) { - fillFluid(xCoord + dir.offsetX * (2 - i) + rot.offsetX * 3, yCoord + 4, zCoord + dir.offsetZ * (2 - i) + rot.offsetZ * 3, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * (2 - i) - rot.offsetX * 2, yCoord + 4, zCoord + dir.offsetZ * (2 - i) - rot.offsetZ * 2, this.getTact(), type); - - for(int j = 0; j < 2; j++) { - fillFluid(xCoord + dir.offsetX * (2 - i) + rot.offsetX * 5, yCoord + 1 + j, zCoord + dir.offsetZ * (2 - i) + rot.offsetZ * 5, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * (2 - i) - rot.offsetX * 4, yCoord + 1 + j, zCoord + dir.offsetZ * (2 - i) - rot.offsetZ * 4, this.getTact(), type); - } - } - } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return this.worldObj.getTotalWorldTime() % 20 < 10; - } - - private HashMap> fluidMap = new HashMap(); - - @Override - public List getFluidList(FluidType type) { - - List list = fluidMap.get(type); - - if(list == null) { - list = new ArrayList(); - fluidMap.put(type, list); - } - - return list; - } - - @Override - public void clearFluidList(FluidType type) { - - List list = fluidMap.get(type); - - if(list != null) { - list.clear(); - } - } - @Override public int getRecipeCount() { return 8; @@ -366,11 +311,6 @@ public class TileEntityMachineChemfac extends TileEntityMachineChemplantBase { return outTanks; } - - @Override - public int getMaxFluidFillForReceive(FluidType type) { - return super.getMaxFluidFillForReceive(type); - } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index a1b29e28e..379a95c1b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -93,8 +93,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.isProgressing = false; this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); - if(!tanks[0].loadTank(17, 19, slots)) tanks[0].unloadTank(17, 19, slots); - if(!tanks[1].loadTank(18, 20, slots)) tanks[1].unloadTank(18, 20, slots); + if(!tanks[0].loadTank(17, 19, slots) && (slots[17] == null || slots[17].getItem() != ModItems.fluid_barrel_infinite)) tanks[0].unloadTank(17, 19, slots); + if(!tanks[1].loadTank(18, 20, slots) && (slots[18] == null || slots[18].getItem() != ModItems.fluid_barrel_infinite)) tanks[1].unloadTank(18, 20, slots); tanks[2].unloadTank(9, 11, slots); tanks[3].unloadTank(10, 12, slots); @@ -111,8 +111,8 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } for(DirPos pos : getConPos()) { - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[3].getFill() > 0) this.sendFluid(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[3].getFill() > 0) this.sendFluid(tanks[3], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } UpgradeManager.eval(slots, 1, 3); @@ -162,7 +162,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements worldObj.spawnParticle("cloud", x, y, z, 0.0, 0.1, 0.0); } - float volume = this.getVolume(2); + float volume = 1;//this.getVolume(2); if(isProgressing && volume > 0) { @@ -187,7 +187,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.chemplantOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } @Override @@ -266,10 +266,10 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements } private void setupTanks(ChemRecipe recipe) { - if(recipe.inputFluids[0] != null) tanks[0].setTankType(recipe.inputFluids[0].type); else tanks[0].setTankType(Fluids.NONE); - if(recipe.inputFluids[1] != null) tanks[1].setTankType(recipe.inputFluids[1].type); else tanks[1].setTankType(Fluids.NONE); - if(recipe.outputFluids[0] != null) tanks[2].setTankType(recipe.outputFluids[0].type); else tanks[2].setTankType(Fluids.NONE); - if(recipe.outputFluids[1] != null) tanks[3].setTankType(recipe.outputFluids[1].type); else tanks[3].setTankType(Fluids.NONE); + if(recipe.inputFluids[0] != null) tanks[0].withPressure(recipe.inputFluids[0].pressure).setTankType(recipe.inputFluids[0].type); else tanks[0].setTankType(Fluids.NONE); + if(recipe.inputFluids[1] != null) tanks[1].withPressure(recipe.inputFluids[1].pressure).setTankType(recipe.inputFluids[1].type); else tanks[1].setTankType(Fluids.NONE); + if(recipe.outputFluids[0] != null) tanks[2].withPressure(recipe.outputFluids[0].pressure).setTankType(recipe.outputFluids[0].type); else tanks[2].setTankType(Fluids.NONE); + if(recipe.outputFluids[1] != null) tanks[3].withPressure(recipe.outputFluids[1].pressure).setTankType(recipe.outputFluids[1].type); else tanks[3].setTankType(Fluids.NONE); } private boolean hasRequiredFluids(ChemRecipe recipe) { @@ -364,7 +364,10 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements for(AStack ingredient : recipe.inputs) { - if(!InventoryUtil.doesArrayHaveIngredients(slots, 13, 16, ingredient)) { + outer: + while(!InventoryUtil.doesArrayHaveIngredients(slots, 13, 16, ingredient)) { + + boolean found = false; for(int i = 0; i < inv.getSizeInventory(); i++) { @@ -376,7 +379,7 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { inv.decrStackSize(i, 1); slots[j].stackSize++; - return; + continue outer; } } @@ -386,11 +389,13 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements slots[j] = stack.copy(); slots[j].stackSize = 1; inv.decrStackSize(i, 1); - return; + continue outer; } } } } + + if(!found) return; } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java index 1a32bf626..d91102d51 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplantBase.java @@ -3,8 +3,6 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; @@ -34,7 +32,7 @@ import net.minecraft.util.ChunkCoordinates; * Tanks follow the order R1(I1, I2, O1, O2), R2(I1, I2, O1, O2) ... * @author hbm */ -public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidSource, IFluidAcceptor, IFluidUser, IGUIProvider { +public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBase implements IEnergyUser, IFluidUser, IGUIProvider { public long power; public int[] progress; @@ -74,15 +72,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa loadItems(i); unloadItems(i); } - - if(worldObj.getTotalWorldTime() % 10 == 0) { - - for(FluidTank tank : this.outTanks()) { - if(tank.getTankType() != Fluids.NONE && tank.getFill() > 0) { - this.fillFluidInit(tank.getTankType()); - } - } - } for(int i = 0; i < count; i++) { @@ -120,10 +109,10 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } private void setupTanks(ChemRecipe recipe, int index) { - if(recipe.inputFluids[0] != null) tanks[index * 4].setTankType(recipe.inputFluids[0].type); - if(recipe.inputFluids[1] != null) tanks[index * 4 + 1].setTankType(recipe.inputFluids[1].type); - if(recipe.outputFluids[0] != null) tanks[index * 4 + 2].setTankType(recipe.outputFluids[0].type); - if(recipe.outputFluids[1] != null) tanks[index * 4 + 3].setTankType(recipe.outputFluids[1].type); + if(recipe.inputFluids[0] != null) tanks[index * 4].withPressure(recipe.inputFluids[0].pressure).setTankType(recipe.inputFluids[0].type); else tanks[index * 4].setTankType(Fluids.NONE); + if(recipe.inputFluids[1] != null) tanks[index * 4 + 1].withPressure(recipe.inputFluids[1].pressure).setTankType(recipe.inputFluids[1].type); else tanks[index * 4 + 1].setTankType(Fluids.NONE); + if(recipe.outputFluids[0] != null) tanks[index * 4 + 2].withPressure(recipe.outputFluids[0].pressure).setTankType(recipe.outputFluids[0].type); else tanks[index * 4 + 2].setTankType(Fluids.NONE); + if(recipe.outputFluids[1] != null) tanks[index * 4 + 3].withPressure(recipe.outputFluids[1].pressure).setTankType(recipe.outputFluids[1].type); else tanks[index * 4 + 3].setTankType(Fluids.NONE); } private boolean hasRequiredFluids(ChemRecipe recipe, int index) { @@ -225,7 +214,10 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa for(AStack ingredient : recipe.inputs) { - if(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { + outer: + while(!InventoryUtil.doesArrayHaveIngredients(slots, indices[0], indices[1], ingredient)) { + + boolean found = false; for(int i = 0; i < inv.getSizeInventory(); i++) { @@ -237,7 +229,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa if(slots[j] != null && slots[j].stackSize < slots[j].getMaxStackSize() & InventoryUtil.doesStackDataMatch(slots[j], stack)) { inv.decrStackSize(i, 1); slots[j].stackSize++; - return; + continue outer; } } @@ -247,11 +239,13 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa slots[j] = stack.copy(); slots[j].stackSize = 1; inv.decrStackSize(i, 1); - return; + continue outer; } } } } + + if(!found) return; } } } @@ -322,17 +316,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa this.power = power; } - @Override - public void setFillForSync(int fill, int index) { } - - @Override - public void setFluidFill(int fill, FluidType type) { } - - @Override - public void setTypeForSync(FluidType type, int index) { } - - @Override - public int getFluidFill(FluidType type) { + /*public int getFluidFill(FluidType type) { int fill = 0; @@ -349,10 +333,9 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } return fill; - } + }*/ /* For input only! */ - @Override public int getMaxFluidFill(FluidType type) { int maxFill = 0; @@ -365,20 +348,6 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return maxFill; } - - @Override - public int getFluidFillForReceive(FluidType type) { - - int fill = 0; - - for(FluidTank tank : inTanks()) { - if(tank.getTankType() == type) { - fill += tank.getFill(); - } - } - - return fill; - } protected List inTanks() { @@ -394,8 +363,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return inTanks; } - @Override - public void receiveFluid(int amount, FluidType type) { + /*public void receiveFluid(int amount, FluidType type) { if(amount <= 0) return; @@ -431,15 +399,14 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa tank.setFill(tank.getFill() + part); } - } + }*/ - @Override - public int getFluidFillForTransfer(FluidType type) { + public int getFluidFillForTransfer(FluidType type, int pressure) { int fill = 0; for(FluidTank tank : outTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { fill += tank.getFill(); } } @@ -447,8 +414,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa return fill; } - @Override - public void transferFluid(int amount, FluidType type) { + public void transferFluid(int amount, FluidType type, int pressure) { /* * this whole new fluid mumbo jumbo extra abstraction layer might just be a bandaid @@ -462,7 +428,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa List send = new ArrayList(); for(FluidTank tank : outTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { send.add(tank); } } @@ -524,7 +490,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { int amount = (int) fluid; if(amount <= 0) @@ -533,7 +499,7 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa List rec = new ArrayList(); for(FluidTank tank : inTanks()) { - if(tank.getTankType() == type) { + if(tank.getTankType() == type && tank.getPressure() == pressure) { rec.add(tank); } } @@ -567,18 +533,18 @@ public abstract class TileEntityMachineChemplantBase extends TileEntityMachineBa } @Override - public long getDemand(FluidType type) { - return getMaxFluidFill(type) - getFluidFillForTransfer(type); + public long getDemand(FluidType type, int pressure) { + return getMaxFluidFill(type) - getFluidFillForTransfer(type, pressure); } @Override - public long getTotalFluidForSend(FluidType type) { - return getFluidFillForTransfer(type); + public long getTotalFluidForSend(FluidType type, int pressure) { + return getFluidFillForTransfer(type, pressure); } @Override - public void removeFluidForTransfer(FluidType type, long amount) { - this.transferFluid((int) amount, type); + public void removeFluidForTransfer(FluidType type, int pressure, long amount) { + this.transferFluid((int) amount, type, pressure); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java index 3abf74d1f..b13e35d18 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCoal.java @@ -5,27 +5,22 @@ import java.io.IOException; import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.machine.MachineCoal; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidContainer; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.container.ContainerMachineCoal; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineCoal; import com.hbm.items.ModItems; import com.hbm.lib.Library; -import com.hbm.packet.AuxElectricityPacket; -import com.hbm.packet.AuxGaugePacket; -import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -35,15 +30,12 @@ import net.minecraft.inventory.Container; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISidedInventory, IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine, IGUIProvider { +public class TileEntityMachineCoal extends TileEntityMachinePolluting implements ISidedInventory, IEnergyGenerator, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider { - private ItemStack slots[]; - public long power; public int burnTime; public static final long maxPower = 100000; @@ -53,84 +45,21 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide private static final int[] slots_bottom = new int[] {0, 2}; private static final int[] slots_side = new int[] {0, 2}; - private String customName; - /* CONFIGURABLE CONSTANTS */ public static int waterCap = 5000; public static int genRate = 25; public static double fuelMod = 0.5D; public TileEntityMachineCoal() { - slots = new ItemStack[4]; + super(4, 50); tank = new FluidTank(Fluids.WATER, waterCap, 0); } @Override - public int getSizeInventory() { - return slots.length; + public String getName() { + return "container.machineCoal"; } - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { - itemStack.stackSize = getInventoryStackLimit(); - } - } - - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.machineCoal"; - } - - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } - - @Override - public int getInventoryStackLimit() { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { - return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} - @Override public boolean isItemValidForSlot(int i, ItemStack stack) { if(i == 0) @@ -146,46 +75,12 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide return false; } - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { - slots[i] = null; - } - - return itemStack1; - } else { - return null; - } - } - @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); this.power = nbt.getLong("powerTime"); tank.readFromNBT(nbt, "water"); - slots = new ItemStack[getSizeInventory()]; - - for(int i = 0; i < list.tagCount(); i++) - { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } } @Override @@ -193,26 +88,12 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide super.writeToNBT(nbt); nbt.setLong("powerTime", power); tank.writeToNBT(nbt, "water"); - NBTTagList list = new NBTTagList(); - - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { - return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); - } + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); + } @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { @@ -240,8 +121,10 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide if(!worldObj.isRemote) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } this.subscribeToAllAround(Fluids.WATER, this); @@ -255,23 +138,31 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide boolean trigger = true; - if(isItemValid() && this.burnTime == 0) - { + if(isItemValid() && this.burnTime == 0) { trigger = false; } - - if(trigger) - { - MachineCoal.updateBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); - } - - PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); - PacketDispatcher.wrapper.sendToAllAround(new AuxGaugePacket(xCoord, yCoord, zCoord, burnTime, 0), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50)); + + if(trigger) { + MachineCoal.updateBlockState(this.burnTime > 0, this.worldObj, this.xCoord, this.yCoord, this.zCoord); + } generate(); + + NBTTagCompound data = new NBTTagCompound(); + data.setLong("power", power); + data.setInteger("burnTime", burnTime); + tank.writeToNBT(data, "tank"); + this.networkPack(data, 15); } } + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.power = nbt.getLong("power"); + this.burnTime = nbt.getInteger("burnTime"); + this.tank.readFromNBT(nbt, "tank"); + } + public void generate() { if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0 && burnTime <= 0) @@ -290,6 +181,8 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide if(burnTime > 0) { burnTime--; + if(worldObj.getTotalWorldTime() % 20 == 0) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND); + if(tank.getFill() > 0) { tank.setFill(tank.getFill() - 1); @@ -303,8 +196,7 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide public boolean isItemValid() { - if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0) - { + if(slots[1] != null && TileEntityFurnace.getItemBurnTime(slots[1]) > 0) { return true; } @@ -326,37 +218,16 @@ public class TileEntityMachineCoal extends TileEntityLoadedBase implements ISide return this.maxPower; } - @Override - public void setFluidFill(int i, FluidType type) { - if(type.name().equals(tank.getTankType().name())) - tank.setFill(i); - } - - @Override - public int getFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getFill() : 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - return type.name().equals(this.tank.getTankType().name()) ? tank.getMaxFill() : 0; - } - - @Override - public void setFillForSync(int fill, int index) { - tank.setFill(fill); - } - - @Override - public void setTypeForSync(FluidType type, int index) { - tank.setTankType(type); - } - @Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } + @Override public FluidTank[] getAllTanks() { return new FluidTank[] { tank }; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java index 592854660..38fce4e2a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCombustionEngine.java @@ -1,12 +1,15 @@ package com.hbm.tileentity.machine; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerCombustionEngine; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Combustible; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUICombustionEngine; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemPistons.EnumPistonType; @@ -14,12 +17,12 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.EnumUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -31,7 +34,7 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCombustionEngine extends TileEntityMachineBase implements IEnergyGenerator, IFluidStandardReceiver, IControlReceiver, IGUIProvider { +public class TileEntityMachineCombustionEngine extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidStandardTransceiver, IControlReceiver, IGUIProvider { public boolean isOn = false; public static long maxPower = 2_500_000; @@ -49,7 +52,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp public int tenth = 0; public TileEntityMachineCombustionEngine() { - super(5); + super(5, 50); this.tank = new FluidTank(Fluids.DIESEL, 24_000, 0); } @@ -84,6 +87,11 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp this.power += toBurn * (trait.getCombustionEnergy() / 10_000D) * eff; fill -= toBurn; + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * setting * 0.1F); + if(tank.getTankType().hasTrait(FT_Leaded.class)) this.pollute(PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * setting * 0.1F); + } + if(toBurn > 0) { wasOn = true; } @@ -101,6 +109,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(power > maxPower) @@ -134,6 +143,8 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp audio = rebootAudio(audio); } + audio.keepAlive(); + } else { if(audio != null) { @@ -157,7 +168,7 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp } public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 2.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.igeneratorOperate", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F, 20); } @Override @@ -265,6 +276,11 @@ public class TileEntityMachineCombustionEngine extends TileEntityMachineBase imp public FluidTank[] getReceivingTanks() { return new FluidTank[] {tank}; } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java new file mode 100644 index 000000000..89be677fc --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCompressor.java @@ -0,0 +1,331 @@ +package com.hbm.tileentity.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.UpgradeManager; +import com.hbm.inventory.container.ContainerCompressor; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUICompressor; +import com.hbm.inventory.recipes.CompressorRecipes; +import com.hbm.inventory.recipes.CompressorRecipes.CompressorRecipe; +import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityMachineCompressor extends TileEntityMachineBase implements IGUIProvider, IControlReceiver, IEnergyUser, IFluidStandardTransceiver { + + public FluidTank[] tanks; + public long power; + public static final long maxPower = 100_000; + public boolean isOn; + public int progress; + public int processTime = 100; + public static final int processTimeBase = 100; + public int powerRequirement; + public static final int powerRequirementBase = 2_500; + + public float fanSpin; + public float prevFanSpin; + public float piston; + public float prevPiston; + public boolean pistonDir; + + public TileEntityMachineCompressor() { + super(4); + this.tanks = new FluidTank[2]; + this.tanks[0] = new FluidTank(Fluids.NONE, 16_000); + this.tanks[1] = new FluidTank(Fluids.NONE, 16_000).withPressure(1); + } + + @Override + public String getName() { + return "container.machineCompressor"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 20 == 0) { + this.updateConnections(); + } + + this.power = Library.chargeTEFromItems(slots, 1, power, maxPower); + this.tanks[0].setType(0, slots); + this.setupTanks(); + + UpgradeManager.eval(slots, 1, 3); + + int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); + int powerLevel = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); + int overLevel = UpgradeManager.getLevel(UpgradeType.OVERDRIVE); + + CompressorRecipe rec = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + int timeBase = this.processTimeBase; + if(rec != null) timeBase = rec.duration; + + //there is a reason to do this but i'm not telling you + if(timeBase == this.processTimeBase) this.processTime = speedLevel == 3 ? 10 : speedLevel == 2 ? 20 : speedLevel == 1 ? 60 : timeBase; + else this.processTime = timeBase / (speedLevel + 1); + this.powerRequirement = this.powerRequirementBase / (powerLevel + 1); + this.processTime = this.processTime / (overLevel + 1); + this.powerRequirement = this.powerRequirement * ((overLevel * 2) + 1); + + if(processTime <= 0) processTime = 1; + + if(canProcess()) { + this.progress++; + this.isOn = true; + this.power -= powerRequirement; + + if(progress >= this.processTime) { + progress = 0; + this.process(); + this.markChanged(); + } + + } else { + this.progress = 0; + this.isOn = false; + } + + for(DirPos pos : getConPos()) { + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setInteger("progress", progress); + data.setInteger("processTime", processTime); + data.setInteger("powerRequirement", powerRequirement); + data.setLong("power", power); + tanks[0].writeToNBT(data, "0"); + tanks[1].writeToNBT(data, "1"); + data.setBoolean("isOn", isOn); + this.networkPack(data, 100); + + } else { + + this.prevFanSpin = this.fanSpin; + this.prevPiston = this.piston; + + if(this.isOn) { + this.fanSpin += 15; + + if(this.fanSpin >= 360) { + this.prevFanSpin -= 360; + this.fanSpin -= 360; + } + + if(this.pistonDir) { + this.piston -= randSpeed; + if(this.piston <= 0) { + MainRegistry.proxy.playSoundClient(xCoord, yCoord, zCoord, "hbm:item.boltgun", 0.5F, 0.75F); + this.pistonDir = !this.pistonDir; + } + } else { + this.piston += 0.05F; + if(this.piston >= 1) { + this.randSpeed = 0.085F + worldObj.rand.nextFloat() * 0.03F; + this.pistonDir = !this.pistonDir; + } + } + + this.piston = MathHelper.clamp_float(this.piston, 0F, 1F); + } + } + } + + private float randSpeed = 0.1F; + + public void networkUnpack(NBTTagCompound nbt) { + this.progress = nbt.getInteger("progress"); + this.processTime = nbt.getInteger("processTime"); + this.powerRequirement = nbt.getInteger("powerRequirement"); + this.power = nbt.getLong("power"); + tanks[0].readFromNBT(nbt, "0"); + tanks[1].readFromNBT(nbt, "1"); + this.isOn = nbt.getBoolean("isOn"); + } + + private void updateConnections() { + for(DirPos pos : getConPos()) { + this.trySubscribe(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + public DirPos[] getConPos() { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + rot.offsetX * 2, yCoord, zCoord + rot.offsetZ * 2, rot), + new DirPos(xCoord - rot.offsetX * 2, yCoord, zCoord - rot.offsetZ * 2, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2, yCoord, zCoord - dir.offsetZ * 2, dir.getOpposite()), + }; + } + + public boolean canProcess() { + + if(this.power <= powerRequirement) return false; + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + + if(recipe == null) { + return tanks[0].getFill() >= 1000 && tanks[1].getFill() + 1000 <= tanks[1].getMaxFill(); + } + + return tanks[0].getFill() > recipe.inputAmount && tanks[1].getFill() + recipe.output.fill <= tanks[1].getMaxFill(); + } + + public void process() { + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + + if(recipe == null) { + tanks[0].setFill(tanks[0].getFill() - 1_000); + tanks[1].setFill(tanks[1].getFill() + 1_000); + } else { + tanks[0].setFill(tanks[0].getFill() - recipe.inputAmount); + tanks[1].setFill(tanks[1].getFill() + recipe.output.fill); + } + } + + protected void setupTanks() { + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), tanks[0].getPressure())); + + if(recipe == null) { + tanks[1].withPressure(tanks[0].getPressure() + 1).setTankType(tanks[0].getTankType()); + } else { + tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); + } + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + power = nbt.getLong("power"); + progress = nbt.getInteger("progress"); + tanks[0].readFromNBT(nbt, "0"); + tanks[1].readFromNBT(nbt, "1"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setLong("power", power); + nbt.setInteger("progress", progress); + tanks[0].writeToNBT(nbt, "0"); + tanks[1].writeToNBT(nbt, "1"); + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCompressor(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICompressor(player.inventory, this); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + int compression = data.getInteger("compression"); + + if(compression != tanks[0].getPressure()) { + tanks[0].withPressure(compression); + + CompressorRecipe recipe = CompressorRecipes.recipes.get(new Pair(tanks[0].getTankType(), compression)); + + if(recipe == null) { + tanks[1].withPressure(compression + 1); + } else { + tanks[1].withPressure(recipe.output.pressure).setTankType(recipe.output.type); + } + + this.markChanged(); + } + } + + @Override + public long getPower() { + return power; + } + + @Override + public void setPower(long power) { + this.power = power; + } + + @Override + public long getMaxPower() { + return maxPower; + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[1]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0]}; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 9, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index 05459da78..0fa7a053f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -173,7 +173,7 @@ public class TileEntityMachineCyclotron extends TileEntityMachineBase implements private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(amat.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(amat, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index 1ec212628..f1c7097e7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -6,6 +6,8 @@ import java.util.HashMap; import com.google.gson.JsonArray; 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.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.FluidContainerRegistry; @@ -15,16 +17,17 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Combustible; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUIMachineDiesel; import com.hbm.items.ModItems; import com.hbm.lib.Library; import com.hbm.tileentity.IConfigurableMachine; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import api.hbm.energy.IBatteryItem; import api.hbm.energy.IEnergyGenerator; -import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -35,7 +38,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineDiesel extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IConfigurableMachine, IGUIProvider { +public class TileEntityMachineDiesel extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IConfigurableMachine, IGUIProvider { public long power; public int soundCycle = 0; @@ -58,7 +61,7 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE private static final int[] slots_side = new int[] { 2 }; public TileEntityMachineDiesel() { - super(5); + super(5, 100); tank = new FluidTank(Fluids.DIESEL, 4_000, 0); } @@ -127,8 +130,10 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE if(!worldObj.isRemote) { - for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + this.sendSmoke(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); + } //Tank Management FluidType last = tank.getTankType(); @@ -203,6 +208,9 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE tank.setFill(tank.getFill() - 1); if(tank.getFill() < 0) tank.setFill(0); + + this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 0.5F); + if(tank.getTankType().hasTrait(FT_Leaded.class)) this.pollute(PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * 0.5F); if(power + getHEFromFuel() <= powerCap) { power += getHEFromFuel(); @@ -312,4 +320,9 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIMachineDiesel(player.inventory, this); } + + @Override + public FluidTank[] getSendingTanks() { + return this.getSmokeTanks(); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java index c99db935b..01ba0af31 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineEPress.java @@ -171,8 +171,8 @@ public class TileEntityMachineEPress extends TileEntityMachineBase implements IE @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(stack.getItem() instanceof ItemStamp && i == 1) - return true; + if(stack.getItem() instanceof ItemStamp) + return i == 1; return i == 2; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java index 3a51328b0..53e8c3f74 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineElectricFurnace.java @@ -166,7 +166,7 @@ public class TileEntityMachineElectricFurnace extends TileEntityMachineBase impl power = Library.chargeTEFromItems(slots, 0, power, maxPower); - this.updateConnections(); + if(worldObj.getTotalWorldTime() % 40 == 0) this.updateConnections(); this.consumption = 50; this.maxProgress = 100; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java index 242d316cd..f629c577b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineHephaestus.java @@ -72,7 +72,7 @@ public class TileEntityMachineHephaestus extends TileEntityLoadedBase implements if(output.getFill() > 0) { for(DirPos pos : getConPos()) { - this.sendFluid(output.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(output, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } data.setInteger("heat", this.getTotalHeat()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java index dd49bbf75..f980ca60b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineIGenerator.java @@ -64,11 +64,11 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public static int coalGenRate = 20; public static double rtgHeatMult = 0.15D; public static double waterPowerMult = 1.0D; - public static double lubePowerMult = 1.0D; - public static double heatExponent = 1.1D; + public static double lubePowerMult = 1.5D; + public static double heatExponent = 1.15D; public static int waterRate = 10; public static int lubeRate = 1; - public static long fluidHeatDiv = 5_000L; + public static long fluidHeatDiv = 1_000L; @Override public String getConfigName() { @@ -275,7 +275,7 @@ public class TileEntityMachineIGenerator extends TileEntityMachineBase implement public int getPowerFromFuel(boolean con) { FluidType type = tanks[1].getTankType(); - return type.hasTrait(FT_Flammable.class) ? (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() / (con ? 1000L : fluidHeatDiv)) : 0; + return type.hasTrait(FT_Flammable.class) ? (int)(type.getTrait(FT_Flammable.class).getHeatEnergy() / (con ? 5000L : fluidHeatDiv)) : 0; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java index 4e43bfcb0..5f37053e9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineLargeTurbine.java @@ -74,7 +74,7 @@ public class TileEntityMachineLargeTurbine extends TileEntityMachineBase impleme ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); this.sendPower(worldObj, xCoord + dir.offsetX * -4, yCoord, zCoord + dir.offsetZ * -4, dir.getOpposite()); for(DirPos pos : getConPos()) this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - for(DirPos pos : getConPos()) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + for(DirPos pos : getConPos()) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); tanks[0].setType(0, 1, slots); tanks[0].loadTank(2, 3, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java index b8d708c5e..82076c1cf 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMiningLaser.java @@ -99,10 +99,10 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if (age == 9 || age == 19) fillFluidInit(tank.getTankType()); - this.sendFluid(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); + this.sendFluid(tank, worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); + this.sendFluid(tank, worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); + this.sendFluid(tank, worldObj, xCoord, yCoord + 2, zCoord, Library.POS_Z); + this.sendFluid(tank, worldObj, xCoord, yCoord - 2, zCoord, Library.NEG_Z); power = Library.chargeTEFromItems(slots, 0, power, maxPower); tank.updateTank(xCoord, yCoord, zCoord, this.worldObj.provider.dimensionId); @@ -262,7 +262,9 @@ public class TileEntityMachineMiningLaser extends TileEntityMachineBase implemen if(hasCrystallizer()) { CrystallizerRecipe result = CrystallizerRecipes.getOutput(stack, Fluids.ACID); - if(result != null && result.output.getItem() != ModItems.scrap) { + if(result == null) result = CrystallizerRecipes.getOutput(stack, Fluids.SULFURIC_ACID); + + if(result != null) { worldObj.spawnEntityInWorld(new EntityItem(worldObj, targetX + 0.5, targetY + 0.5, targetZ + 0.5, result.output.copy())); normal = false; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 9204a1dbd..4f62b9aa8 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine; +import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.UpgradeManager; import com.hbm.inventory.container.ContainerMixer; import com.hbm.inventory.fluid.Fluids; @@ -26,12 +27,13 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver { +public class TileEntityMachineMixer extends TileEntityMachineBase implements INBTPacketReceiver, IControlReceiver, IGUIProvider, IEnergyUser, IFluidStandardTransceiver { public long power; public static final long maxPower = 10_000; public int progress; public int processTime; + public int recipeIndex; public float rotation; public float prevRotation; @@ -100,13 +102,14 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } for(DirPos pos : getConPos()) { - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); data.setLong("power", power); data.setInteger("processTime", processTime); data.setInteger("progress", progress); + data.setInteger("recipe", recipeIndex); data.setBoolean("wasOn", wasOn); for(int i = 0; i < 3; i++) { tanks[i].writeToNBT(data, i + ""); @@ -133,6 +136,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB this.power = nbt.getLong("power"); this.processTime = nbt.getInteger("processTime"); this.progress = nbt.getInteger("progress"); + this.recipeIndex = nbt.getInteger("recipe"); this.wasOn = nbt.getBoolean("wasOn"); for(int i = 0; i < 3; i++) { tanks[i].readFromNBT(nbt, i + ""); @@ -140,29 +144,26 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB } public boolean canProcess() { - - MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); - - if(recipe == null) return false; - - if(recipe.input1 != null) { - - if(recipe.input1.type != tanks[0].getTankType()) { - tanks[0].setTankType(recipe.input1.type); - } - - if(tanks[0].getFill() < recipe.input1.fill) return false; + + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); + if(recipes == null || recipes.length <= 0) { + this.recipeIndex = 0; + return false; } - if(recipe.input2 != null) { - - if(recipe.input2.type != tanks[1].getTankType()) { - tanks[1].setTankType(recipe.input2.type); - } - - if(tanks[1].getFill() < recipe.input2.fill) return false; + this.recipeIndex = this.recipeIndex % recipes.length; + MixerRecipe recipe = recipes[this.recipeIndex]; + if(recipe == null) { + this.recipeIndex = 0; + return false; } + tanks[0].setTankType(recipe.input1 != null ? recipe.input1.type : Fluids.NONE); + tanks[1].setTankType(recipe.input2 != null ? recipe.input2.type : Fluids.NONE); + + if(recipe.input1 != null && tanks[0].getFill() < recipe.input1.fill) return false; + if(recipe.input2 != null && tanks[1].getFill() < recipe.input2.fill) return false; + /* simplest check would usually go first, but fluid checks also do the setup and we want that to happen even without power */ if(this.power < getConsumption()) return false; @@ -181,7 +182,8 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB protected void process() { - MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); + MixerRecipe recipe = recipes[this.recipeIndex % recipes.length]; if(recipe.input1 != null) tanks[0].setFill(tanks[0].getFill() - recipe.input1.fill); if(recipe.input2 != null) tanks[1].setFill(tanks[1].getFill() - recipe.input2.fill); @@ -197,9 +199,9 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB return new DirPos[] { new DirPos(xCoord, yCoord - 1, zCoord, Library.NEG_Y), new DirPos(xCoord + 1, yCoord, zCoord, Library.POS_X), - new DirPos(xCoord - 1, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 1, yCoord, zCoord, Library.NEG_X), new DirPos(xCoord, yCoord, zCoord + 1, Library.POS_Z), - new DirPos(xCoord, yCoord, zCoord - 1, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 1, Library.NEG_Z), }; } @@ -211,8 +213,10 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB @Override public boolean isItemValidForSlot(int i, ItemStack itemStack) { - MixerRecipe recipe = MixerRecipes.getOutput(tanks[2].getTankType()); + MixerRecipe[] recipes = MixerRecipes.getOutput(tanks[2].getTankType()); + if(recipes == null || recipes.length <= 0) return false; + MixerRecipe recipe = recipes[this.recipeIndex % recipes.length]; if(recipe == null || recipe.solidInput == null) return false; return recipe.solidInput.matchesRecipe(itemStack, true); @@ -225,6 +229,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB this.power = nbt.getLong("power"); this.progress = nbt.getInteger("progress"); this.processTime = nbt.getInteger("processTime"); + this.recipeIndex = nbt.getInteger("recipe"); for(int i = 0; i < 3; i++) this.tanks[i].readFromNBT(nbt, i + ""); } @@ -235,6 +240,7 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB nbt.setLong("power", power); nbt.setInteger("progress", progress); nbt.setInteger("processTime", processTime); + nbt.setInteger("recipe", recipeIndex); for(int i = 0; i < 3; i++) this.tanks[i].writeToNBT(nbt, i + ""); } @@ -296,4 +302,15 @@ public class TileEntityMachineMixer extends TileEntityMachineBase implements INB public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public boolean hasPermission(EntityPlayer player) { + return player.getDistance(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5) <= 16; + } + + @Override + public void receiveControl(NBTTagCompound data) { + + if(data.hasKey("toggle")) this.recipeIndex++; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java index 0f91fdfb6..2ddf52c34 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePlasmaHeater.java @@ -69,7 +69,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme int powerReq = 10000; int convert = Math.min(tanks[0].getFill(), tanks[1].getFill()); - convert = Math.min(convert, (plasma.getMaxFill() - plasma.getFill())); + convert = Math.min(convert, (plasma.getMaxFill() - plasma.getFill()) / 2); convert = Math.min(convert, maxConv); convert = (int) Math.min(convert, power / powerReq); convert = Math.max(0, convert); @@ -174,7 +174,7 @@ public class TileEntityMachinePlasmaHeater extends TileEntityMachineBase impleme plasma.setTankType(Fluids.PLASMA_HT); return; } - if(types.contains(Fluids.XENON) && types.contains(Fluids.MERCURY)) { + if(types.contains(Fluids.HELIUM4) && types.contains(Fluids.OXYGEN)) { plasma.setTankType(Fluids.PLASMA_XM); return; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 354fef320..c049d696e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java @@ -124,7 +124,12 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU if(slots[0] != null && burnTime < 200 && TileEntityFurnace.getItemBurnTime(slots[0]) > 0) { // less than one operation stored? burn more fuel! burnTime += TileEntityFurnace.getItemBurnTime(slots[0]); - this.decrStackSize(0, 1); + + if(slots[0].stackSize == 1 && slots[0].getItem().hasContainerItem(slots[0])) { + slots[0] = slots[0].getItem().getContainerItem(slots[0]).copy(); + } else { + this.decrStackSize(0, 1); + } this.markChanged(); } @@ -186,8 +191,8 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - if(stack.getItem() instanceof ItemStamp && i == 1) - return true; + if(stack.getItem() instanceof ItemStamp) + return i == 1; if(TileEntityFurnace.getItemBurnTime(stack) > 0 && i == 0) return true; @@ -197,7 +202,7 @@ public class TileEntityMachinePress extends TileEntityMachineBase implements IGU @Override public int[] getAccessibleSlotsFromSide(int side) { - return side == 0 ? new int[] { 3 } : new int[] { 0, 1, 2 }; + return new int[] { 0, 1, 2, 3 }; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java index b770c4111..63f6ec905 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRTG.java @@ -139,7 +139,7 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided super.readFromNBT(nbt); NBTTagList list = nbt.getTagList("items", 10); - power = nbt.getInteger("power"); + power = nbt.getLong("power"); heat = nbt.getInteger("heat"); slots = new ItemStack[getSizeInventory()]; @@ -157,16 +157,14 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - nbt.setInteger("power", (short) (power)); - nbt.setInteger("heat", (short) (heat)); + nbt.setLong("power", power); + nbt.setInteger("heat", heat); NBTTagList list = new NBTTagList(); - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte)i); + nbt1.setByte("slot", (byte) i); slots[i].writeToNBT(nbt1); list.appendTag(nbt1); } @@ -175,9 +173,9 @@ public class TileEntityMachineRTG extends TileEntityLoadedBase implements ISided } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_){ - return slot_io; - } + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return slot_io; + } @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java index fb3d4b4e0..d68ae05e9 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -184,8 +184,8 @@ public class TileEntityMachineRadar extends TileEntityTickingBase implements IEn for(int i = 0; i < nearbyMissiles.size(); i++) { - if(nearbyMissiles.get(i)[3] + 1 > power) { - power = nearbyMissiles.get(i)[3] + 1; + if(nearbyMissiles.get(i)[2] + 1 > power) { + power = nearbyMissiles.get(i)[2] + 1; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 8812d1714..1cbe50ab4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -142,8 +142,8 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(),pos.getZ(), pos.getDir()); } NBTTagCompound data = new NBTTagCompound(); @@ -222,14 +222,20 @@ public class TileEntityMachineRadiolysis extends TileEntityMachineBase implement if(slots[12].stackSize <= 0) slots[12] = null; slots[13] = output; - slots[13].stackTagCompound.setBoolean("ntmContagion", false); + slots[13].stackTagCompound.removeTag("ntmContagion"); + if(slots[13].stackTagCompound.hasNoTags()) { + slots[13].stackTagCompound = null; + } } else if(slots[13].isItemEqual(output) && slots[13].stackSize + output.stackSize <= slots[13].getMaxStackSize()) { slots[12].stackSize -= output.stackSize; if(slots[12].stackSize <= 0) slots[12] = null; slots[13].stackSize += output.stackSize; - slots[13].stackTagCompound.setBoolean("ntmContagion", false); + slots[13].stackTagCompound.removeTag("ntmContagion"); + if(slots[13].stackTagCompound.hasNoTags()) { + slots[13].stackTagCompound = null; + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java index ee0e824d8..9cfafeb0d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineReactorLarge.java @@ -771,7 +771,7 @@ public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implemen if(worldObj.getBlock(xCoord + dir.offsetX * 2, yCoord, zCoord + dir.offsetZ * 2) == ModBlocks.reactor_hatch) { fillFluid(this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, getTact(), type); for(int i = 0; i < 2; i++) this.trySubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); + this.sendFluid(tanks[2], worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3, Library.NEG_X); } else { for(int i = 0; i < 2; i++) this.tryUnsubscribe(tanks[i].getTankType(), worldObj, this.xCoord + dir.offsetX * 3, this.yCoord, this.zCoord + dir.offsetZ * 3); } @@ -780,8 +780,8 @@ public class TileEntityMachineReactorLarge extends TileEntityLoadedBase implemen fillFluid(this.xCoord, this.yCoord + height + 1, this.zCoord, getTact(), type); fillFluid(this.xCoord, this.yCoord - depth - 1, this.zCoord, getTact(), type); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); - this.sendFluid(tanks[2].getTankType(), worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); + this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord + height + 1, this.zCoord, Library.POS_Y); + this.sendFluid(tanks[2], worldObj, this.xCoord, this.yCoord - depth - 1, this.zCoord, Library.NEG_Y); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java index 47dd95969..0fd248320 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatDock.java @@ -1,8 +1,5 @@ package com.hbm.tileentity.machine; -import java.util.List; -import java.util.Random; - import com.hbm.entity.missile.EntityMinerRocket; import com.hbm.explosion.ExplosionNukeSmall; import com.hbm.inventory.container.ContainerSatDock; @@ -11,14 +8,11 @@ import com.hbm.items.ISatChip; import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.SatelliteMiner; -import com.hbm.saveddata.satellites.SatelliteMinerCargoRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.util.WeightedRandomObject; - import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; -import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.IInventory; @@ -31,355 +25,323 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.WeightedRandom; import net.minecraft.world.World; +import java.util.List; + public class TileEntityMachineSatDock extends TileEntity implements ISidedInventory, IGUIProvider { + private ItemStack[] slots; - private ItemStack[] slots; - - private static final int[] access = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 }; - - private String customName; - - public TileEntityMachineSatDock() { - slots = new ItemStack[16]; + private static final int[] access = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; + + private String customName; + + private AxisAlignedBB renderBoundingBox; + + public TileEntityMachineSatDock() { + slots = new ItemStack[16]; + } + + @Override + public int getSizeInventory() { + return slots.length; + } + + @Override + public ItemStack getStackInSlot(int i) { + return slots[i]; + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) { + if (slots[i] != null) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } else { + return null; + } + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemStack) { + slots[i] = itemStack; + if (itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { + itemStack.stackSize = getInventoryStackLimit(); + } + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.satDock"; + } + + @Override + public boolean hasCustomInventoryName() { + return this.customName != null && this.customName.length() > 0; + } + + public void setCustomName(String name) { + this.customName = name; + } + + @Override + public int getInventoryStackLimit() { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer player) { + if (worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { + return false; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; + } + } + + //You scrubs aren't needed for anything (right now) + @Override + public void openInventory() { + } + + @Override + public void closeInventory() { + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemStack) { + return i != 2 && i != 3 && i != 4 && i != 5; } - @Override - public int getSizeInventory() { - return slots.length; - } + @Override + public ItemStack decrStackSize(int i, int j) { + if (slots[i] != null) { + if (slots[i].stackSize <= j) { + ItemStack itemStack = slots[i]; + slots[i] = null; + return itemStack; + } + ItemStack itemStack1 = slots[i].splitStack(j); + if (slots[i].stackSize == 0) { + slots[i] = null; + } - @Override - public ItemStack getStackInSlot(int i) { - return slots[i]; - } + return itemStack1; + } else { + return null; + } + } - @Override - public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } else { - return null; - } - } + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + NBTTagList list = nbt.getTagList("items", 10); - @Override - public void setInventorySlotContents(int i, ItemStack itemStack) { - slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { - itemStack.stackSize = getInventoryStackLimit(); - } - } + slots = new ItemStack[getSizeInventory()]; - @Override - public String getInventoryName() { - return this.hasCustomInventoryName() ? this.customName : "container.satDock"; - } + for (int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if (b0 >= 0 && b0 < slots.length) { + slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } + } + } - @Override - public boolean hasCustomInventoryName() { - return this.customName != null && this.customName.length() > 0; - } - - public void setCustomName(String name) { - this.customName = name; - } + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + NBTTagList list = new NBTTagList(); - @Override - public int getInventoryStackLimit() { - return 64; - } + for (int i = 0; i < slots.length; i++) { + if (slots[i] != null) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte) i); + slots[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("items", list); + } - @Override - public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { - return false; - } else { - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; - } - } - - //You scrubs aren't needed for anything (right now) - @Override - public void openInventory() {} - @Override - public void closeInventory() {} + @Override + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { + return access; + } - @Override - public boolean isItemValidForSlot(int i, ItemStack itemStack) { - if(i == 2 || i == 3 || i == 4 || i == 5) { - return false; - } + @Override + public boolean canInsertItem(int i, ItemStack itemStack, int j) { + return this.isItemValidForSlot(i, itemStack); + } - return true; - } + @Override + public boolean canExtractItem(int i, ItemStack itemStack, int j) { + return true; + } - @Override - public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) { - if(slots[i].stackSize <= j) { - ItemStack itemStack = slots[i]; - slots[i] = null; - return itemStack; - } - ItemStack itemStack1 = slots[i].splitStack(j); - if(slots[i].stackSize == 0) { - slots[i] = null; - } + @Override + public void updateEntity() { + if (!worldObj.isRemote) { + SatelliteSavedData data = SatelliteSavedData.getData(worldObj); - return itemStack1; - } else { - return null; - } - } - - @Override - public void readFromNBT(NBTTagCompound nbt) { - super.readFromNBT(nbt); - NBTTagList list = nbt.getTagList("items", 10); + if (slots[15] != null) { + int freq = ISatChip.getFreqS(slots[15]); - slots = new ItemStack[getSizeInventory()]; + Satellite sat = data.getSatFromFreq(freq); - for(int i = 0; i < list.tagCount(); i++) { - NBTTagCompound nbt1 = list.getCompoundTagAt(i); - byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) { - slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); - } - } - } - - @Override - public void writeToNBT(NBTTagCompound nbt) { - super.writeToNBT(nbt); - NBTTagList list = new NBTTagList(); + int delay = 10 * 60 * 1000; - for(int i = 0; i < slots.length; i++) { - if(slots[i] != null) { - NBTTagCompound nbt1 = new NBTTagCompound(); - nbt1.setByte("slot", (byte) i); - slots[i].writeToNBT(nbt1); - list.appendTag(nbt1); - } - } - nbt.setTag("items", list); - } - - @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) { - return access; - } + if (sat instanceof SatelliteMiner) { + SatelliteMiner miner = (SatelliteMiner) sat; - @Override - public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); - } + if (miner.lastOp + delay < System.currentTimeMillis()) { + EntityMinerRocket rocket = new EntityMinerRocket(worldObj); + rocket.posX = xCoord + 0.5; + rocket.posY = 300; + rocket.posZ = zCoord + 0.5; - @Override - public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; - } - - SatelliteSavedData data = null; - - @Override - public void updateEntity() { + rocket.getDataWatcher().updateObject(17, freq); + worldObj.spawnEntityInWorld(rocket); + miner.lastOp = System.currentTimeMillis(); + data.markDirty(); + } + } + } - if(!worldObj.isRemote) { + @SuppressWarnings("unchecked") + List list = worldObj.getEntitiesWithinAABBExcludingEntity( + null, + AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5), + entity -> entity instanceof EntityMinerRocket + ); - if(data == null) - data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); + for (EntityMinerRocket rocket : list) { + if (slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { + rocket.setDead(); + ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.PARAMS_TOTS); + break; + } - if(data == null) { - worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); - data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); - } - data.markDirty(); + if (rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { + Satellite sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15])); + unloadCargo((SatelliteMiner) sat); + } + } - if(data != null && slots[15] != null) { - int freq = ISatChip.getFreqS(slots[15]); + ejectInto(xCoord + 2, yCoord, zCoord); + ejectInto(xCoord - 2, yCoord, zCoord); + ejectInto(xCoord, yCoord, zCoord + 2); + ejectInto(xCoord, yCoord, zCoord - 2); + } + } - Satellite sat = data.getSatFromFreq(freq); + private void unloadCargo(SatelliteMiner satellite) { + int itemAmount = worldObj.rand.nextInt(6) + 10; - int delay = 10 * 60 * 1000; + WeightedRandomObject[] cargo = satellite.getCargo(); - if(sat instanceof SatelliteMiner) { + for (int i = 0; i < itemAmount; i++) { + ItemStack stack = ((WeightedRandomObject) WeightedRandom.getRandomItem(worldObj.rand, cargo)).asStack(); + addToInv(stack.copy()); + } + } - SatelliteMiner miner = (SatelliteMiner) sat; + private void addToInv(ItemStack stack) { + for (int i = 0; i < 15; i++) { + if (slots[i] != null && slots[i].getItem() == stack.getItem() && slots[i].getItemDamage() == stack.getItemDamage() && slots[i].stackSize < slots[i].getMaxStackSize()) { + int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); - if(miner.lastOp + delay < System.currentTimeMillis()) { + slots[i].stackSize += toAdd; + stack.stackSize -= toAdd; - EntityMinerRocket rocket = new EntityMinerRocket(worldObj); - rocket.posX = xCoord + 0.5; - rocket.posY = 300; - rocket.posZ = zCoord + 0.5; + if (stack.stackSize <= 0) return; + } + } - rocket.satelliteClassName = miner.getClass().getName(); + for (int i = 0; i < 15; i++) { + if (slots[i] == null) { + slots[i] = new ItemStack(stack.getItem(), 1, stack.getItemDamage()); + return; + } + } + } - rocket.getDataWatcher().updateObject(17, freq); - worldObj.spawnEntityInWorld(rocket); - miner.lastOp = System.currentTimeMillis(); - data.markDirty(); - } - } - } + private void ejectInto(int x, int y, int z) { + TileEntity te = worldObj.getTileEntity(x, y, z); - List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5)); + if (te instanceof IInventory) { + IInventory chest = (IInventory) te; - for(Entity e : list) { + for (int i = 0; i < 15; i++) { + if (slots[i] != null) { + for (int j = 0; j < chest.getSizeInventory(); j++) { + ItemStack sta = slots[i].copy(); + sta.stackSize = 1; - if(e instanceof EntityMinerRocket) { + if (chest.getStackInSlot(j) != null && chest.getStackInSlot(j).isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(chest.getStackInSlot(j), slots[i]) && + chest.getStackInSlot(j).stackSize < chest.getStackInSlot(j).getMaxStackSize()) { - EntityMinerRocket rocket = (EntityMinerRocket) e; + slots[i].stackSize--; - if(slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { - rocket.setDead(); - ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.PARAMS_TOTS); - break; - } + if (slots[i].stackSize <= 0) + slots[i] = null; - if(rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) { - unloadCargo(rocket.satelliteClassName); - } - } - } + chest.getStackInSlot(j).stackSize++; + return; + } + } + } + } - ejectInto(xCoord + 2, yCoord, zCoord); - ejectInto(xCoord - 2, yCoord, zCoord); - ejectInto(xCoord, yCoord, zCoord + 2); - ejectInto(xCoord, yCoord, zCoord - 2); - } - } - - static Random rand = new Random(); - - private void unloadCargo(String satelliteClassName) { - int items = rand.nextInt(6) + 10; + for (int i = 0; i < 15; i++) { + if (slots[i] != null) { + for (int j = 0; j < chest.getSizeInventory(); j++) { + ItemStack sta = slots[i].copy(); + sta.stackSize = 1; - WeightedRandomObject[] cargo = SatelliteMinerCargoRegistry.getCargo(satelliteClassName); + if (chest.getStackInSlot(j) == null && chest.isItemValidForSlot(j, sta)) { + slots[i].stackSize--; - for(int i = 0; i < items; i++) { + if (slots[i].stackSize <= 0) + slots[i] = null; - ItemStack stack = ((WeightedRandomObject)WeightedRandom.getRandomItem(rand, cargo)).asStack(); - addToInv(stack.copy()); - } - } - - private void addToInv(ItemStack stack) { - - for(int i = 0; i < 15; i++) { - - if(slots[i] != null && slots[i].getItem() == stack.getItem() && slots[i].getItemDamage() == stack.getItemDamage() && slots[i].stackSize < slots[i].getMaxStackSize()) { - - int toAdd = Math.min(slots[i].getMaxStackSize() - slots[i].stackSize, stack.stackSize); - - slots[i].stackSize += toAdd; - stack.stackSize -= toAdd; - - if(stack.stackSize <= 0) return; - } - } - - for(int i = 0; i < 15; i++) { - - if(slots[i] == null) { - slots[i] = new ItemStack(stack.getItem(), 1, stack.getItemDamage()); - return; - } - } - } - - private void ejectInto(int x, int y, int z) { + chest.setInventorySlotContents(j, sta); + return; + } + } + } + } + } + } - TileEntity te = worldObj.getTileEntity(x, y, z); - - if(te instanceof IInventory) { - - IInventory chest = (IInventory)te; - - for(int i = 0; i < 15; i++) { - - if(slots[i] != null) { - - for(int j = 0; j < chest.getSizeInventory(); j++) { - - ItemStack sta = slots[i].copy(); - sta.stackSize = 1; - - if(chest.getStackInSlot(j) != null && chest.getStackInSlot(j).isItemEqual(slots[i]) && ItemStack.areItemStackTagsEqual(chest.getStackInSlot(j), slots[i]) && - chest.getStackInSlot(j).stackSize < chest.getStackInSlot(j).getMaxStackSize()) { - - slots[i].stackSize--; - - if(slots[i].stackSize <= 0) - slots[i] = null; - - chest.getStackInSlot(j).stackSize++; - return; - } - } - } - } - - for(int i = 0; i < 15; i++) { - - if(slots[i] != null) { - - for(int j = 0; j < chest.getSizeInventory(); j++) { - - ItemStack sta = slots[i].copy(); - sta.stackSize = 1; - - if(chest.getStackInSlot(j) == null && chest.isItemValidForSlot(j, sta)) { - - slots[i].stackSize--; - - if(slots[i].stackSize <= 0) - slots[i] = null; - - chest.setInventorySlotContents(j, sta); - return; - } - } - } - } - } - } - - AxisAlignedBB bb = null; - - @Override - public AxisAlignedBB getRenderBoundingBox() { - - if(bb == null) { - bb = AxisAlignedBB.getBoundingBox( - xCoord - 1, - yCoord, - zCoord - 1, - xCoord + 2, - yCoord + 1, - zCoord + 2 - ); - } - - return bb; - } + @Override + public AxisAlignedBB getRenderBoundingBox() { + if (renderBoundingBox == null) { + renderBoundingBox = AxisAlignedBB.getBoundingBox( + xCoord - 1, + yCoord, + zCoord - 1, + xCoord + 2, + yCoord + 1, + zCoord + 2 + ); + } - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { - return 65536.0D; - } + return renderBoundingBox; + } - @Override - public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new ContainerSatDock(player.inventory, this); - } + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } - @Override - @SideOnly(Side.CLIENT) - public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { - return new GUISatDock(player.inventory, this); - } + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerSatDock(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUISatDock(player.inventory, this); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java index 2fd404480..8c3583106 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSatLinker.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine; import com.hbm.inventory.container.ContainerMachineSatLinker; import com.hbm.inventory.gui.GUIMachineSatLinker; import com.hbm.items.ISatChip; +import com.hbm.saveddata.SatelliteSavedData; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.relauncher.Side; @@ -18,8 +19,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; public class TileEntityMachineSatLinker extends TileEntity implements ISidedInventory, IGUIProvider { - - private ItemStack slots[]; + private ItemStack[] slots; //public static final int maxFill = 64 * 3; @@ -45,21 +45,19 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public ItemStack getStackInSlotOnClosing(int i) { - if(slots[i] != null) - { + if(slots[i] != null) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } else { - return null; + return null; } } @Override public void setInventorySlotContents(int i, ItemStack itemStack) { slots[i] = itemStack; - if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) - { + if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) { itemStack.stackSize = getInventoryStackLimit(); } } @@ -85,11 +83,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public boolean isUseableByPlayer(EntityPlayer player) { - if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) - { + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) { return false; - }else{ - return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; + } else { + return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64; } } @@ -105,17 +102,14 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public ItemStack decrStackSize(int i, int j) { - if(slots[i] != null) - { - if(slots[i].stackSize <= j) - { + if(slots[i] != null) { + if(slots[i].stackSize <= j) { ItemStack itemStack = slots[i]; slots[i] = null; return itemStack; } ItemStack itemStack1 = slots[i].splitStack(j); - if (slots[i].stackSize == 0) - { + if (slots[i].stackSize == 0) { slots[i] = null; } @@ -132,12 +126,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve slots = new ItemStack[getSizeInventory()]; - for(int i = 0; i < list.tagCount(); i++) - { + for(int i = 0; i < list.tagCount(); i++) { NBTTagCompound nbt1 = list.getCompoundTagAt(i); byte b0 = nbt1.getByte("slot"); - if(b0 >= 0 && b0 < slots.length) - { + if(b0 >= 0 && b0 < slots.length) { slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); } } @@ -148,10 +140,8 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve super.writeToNBT(nbt); NBTTagList list = new NBTTagList(); - for(int i = 0; i < slots.length; i++) - { - if(slots[i] != null) - { + for(int i = 0; i < slots.length; i++) { + if(slots[i] != null) { NBTTagCompound nbt1 = new NBTTagCompound(); nbt1.setByte("slot", (byte)i); slots[i].writeToNBT(nbt1); @@ -162,8 +152,7 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve } @Override - public int[] getAccessibleSlotsFromSide(int p_94128_1_) - { + public int[] getAccessibleSlotsFromSide(int p_94128_1_) { return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); } @@ -179,15 +168,17 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve @Override public void updateEntity() { - - if(!worldObj.isRemote) - { + if(!worldObj.isRemote) { if(slots[0] != null && slots[1] != null && slots[0].getItem() instanceof ISatChip && slots[1].getItem() instanceof ISatChip) { ISatChip.setFreqS(slots[1], ISatChip.getFreqS(slots[0])); } if(slots[2] != null && slots[2].getItem() instanceof ISatChip) { - ISatChip.setFreqS(slots[2], worldObj.rand.nextInt(100000)); + SatelliteSavedData satelliteData = SatelliteSavedData.getData(worldObj); + int newId = worldObj.rand.nextInt(100000); + if(!satelliteData.isFreqTaken(newId)) { + ISatChip.setFreqS(slots[2], newId); + } } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java index 8a0bfc0ac..ba08db645 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSchrabidiumTransmutator.java @@ -1,6 +1,7 @@ package com.hbm.tileentity.machine; import com.hbm.config.VersatileConfig; +import com.hbm.inventory.OreDictManager; import com.hbm.inventory.container.ContainerMachineSchrabidiumTransmutator; import com.hbm.inventory.gui.GUIMachineSchrabidiumTransmutator; import com.hbm.inventory.recipes.MachineRecipes; @@ -50,11 +51,11 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB public boolean isItemValidForSlot(int i, ItemStack stack) { switch (i) { case 0: - if (MachineRecipes.mODE(stack, "ingotUranium")) + if (MachineRecipes.mODE(stack, OreDictManager.U.ingot())) return true; break; case 2: - if (stack.getItem() == ModItems.redcoil_capacitor) + if (stack.getItem() == ModItems.redcoil_capacitor || stack.getItem() == ModItems.euphemium_capacitor) return true; break; case 3: @@ -88,7 +89,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB @Override public boolean canExtractItem(int i, ItemStack stack, int j) { - if (i == 2 && stack.getItem() != null && stack.getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(stack) <= 0) { + if (i == 2 && stack.getItem() != null && (stack.getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(stack) <= 0) || stack.getItem() == ModItems.euphemium_capacitor) { return true; } @@ -113,9 +114,8 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } public boolean canProcess() { - if (power >= 4990000 && slots[0] != null && MachineRecipes.mODE(slots[0], "ingotUranium") && slots[2] != null - && slots[2].getItem() == ModItems.redcoil_capacitor - && ItemCapacitor.getDura(slots[2]) > 0 + if (power >= 4990000 && slots[0] != null && MachineRecipes.mODE(slots[0], OreDictManager.U.ingot()) && slots[2] != null + && (slots[2].getItem() == ModItems.redcoil_capacitor && ItemCapacitor.getDura(slots[2]) > 0 || slots[2].getItem() == ModItems.euphemium_capacitor) && (slots[1] == null || (slots[1] != null && slots[1].getItem() == VersatileConfig.getTransmutatorItem() && slots[1].stackSize < slots[1].getMaxStackSize()))) { return true; @@ -145,7 +145,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } else { slots[1].stackSize++; } - if (slots[2] != null) { + if (slots[2] != null && slots[2].getItem() == ModItems.redcoil_capacitor) { ItemCapacitor.setDura(slots[2], ItemCapacitor.getDura(slots[2]) - 1); } @@ -194,8 +194,9 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } } + @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:weapon.tauChargeLoop", xCoord, yCoord, zCoord, 1.0F, 10F, 1.0F); } private void updateConnections() { @@ -204,6 +205,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB this.trySubscribe(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } + @Override public void onChunkUnload() { if(audio != null) { @@ -212,6 +214,7 @@ public class TileEntityMachineSchrabidiumTransmutator extends TileEntityMachineB } } + @Override public void invalidate() { super.invalidate(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java index 2a9f08a8b..eb4d3f731 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbine.java @@ -261,7 +261,7 @@ public class TileEntityMachineTurbine extends TileEntityLoadedBase implements IS if(!valid) tanks[1].setTankType(Fluids.NONE); if(power > maxPower) power = maxPower; - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[1], this); tanks[1].unloadTank(5, 6, slots); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java index 79334c4b6..b98d7daf0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbineGas.java @@ -3,6 +3,8 @@ package com.hbm.tileentity.machine; import java.util.HashMap; import com.hbm.blocks.BlockDummyable; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Combustible; @@ -16,7 +18,7 @@ import com.hbm.lib.Library; import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; @@ -31,7 +33,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbineGas extends TileEntityMachineBase implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { +public class TileEntityMachineTurbineGas extends TileEntityMachinePolluting implements IFluidStandardTransceiver, IEnergyGenerator, IControlReceiver, IGUIProvider { public long power; public static final long maxPower = 1000000L; @@ -60,13 +62,14 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement fuelMaxCons.put(Fluids.GAS, 50D); // natgas doesn't burn well so it burns faster to compensate fuelMaxCons.put(Fluids.SYNGAS, 10D); // syngas just fucks fuelMaxCons.put(Fluids.OXYHYDROGEN, 100D); // oxyhydrogen is terrible so it needs to burn a ton for the bare minimum + fuelMaxCons.put(Fluids.REFORMGAS, 2.5D); // halved because it's too powerful // default to 5 if not in list } //TODO particles from heat exchanger maybe? maybe in a future public TileEntityMachineTurbineGas() { - super(2); + super(2, 200); this.tanks = new FluidTank[4]; tanks[0] = new FluidTank(Fluids.GAS, 100000); tanks[1] = new FluidTank(Fluids.LUBRICANT, 16000); @@ -121,7 +124,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement ForgeDirection rot = dir.getRotation(ForgeDirection.UP); NBTTagCompound data = new NBTTagCompound(); - data.setLong("power", this.power); //set first to get an unmodified view of how much power was generated before deductions from the net + data.setLong("power", Math.min(this.power, this.maxPower)); //set first to get an unmodified view of how much power was generated before deductions from the net //do net/battery deductions first... power = Library.chargeItemsFromTE(slots, 0, power, maxPower); @@ -134,15 +137,15 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement for(int i = 0; i < 2; i++) { //fuel and lube this.trySubscribe(tanks[i].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()); this.trySubscribe(tanks[i].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir); + + this.sendSmoke(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()); + this.sendSmoke(xCoord + dir.offsetX * 2 + rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ, dir); } //water this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord - dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * -4, dir.getOpposite()); this.trySubscribe(tanks[2].getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -4, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -4, dir); //steam - this.sendFluid(tanks[3].getTankType(), worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); - - //if(audio != null) // audio shouldn't even exist serverside - // audio.updatePitch((float) (0.45 + 0.05 * rpm / 10)); + this.sendFluid(tanks[3], worldObj, xCoord + dir.offsetZ * 6, yCoord + 1, zCoord - dir.offsetX * 6, rot.getOpposite()); data.setInteger("rpm", this.rpm); data.setInteger("temp", this.temp); @@ -170,12 +173,12 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement if(audio == null) { //if there is no sound playing, start it - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 1.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); audio.startSound(); } else if(!audio.isPlaying()) { audio.stopSound(); - audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 1.0F); + audio = MainRegistry.proxy.getLoopedSound("hbm:block.turbinegasRunning", xCoord, yCoord, zCoord, 1.0F, 20F, 1.0F); audio.startSound(); } @@ -300,6 +303,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement } double consumption = fuelMaxCons.containsKey(tanks[0].getTankType()) ? fuelMaxCons.get(tanks[0].getTankType()) : 5D; + if(worldObj.getTotalWorldTime() % 20 == 0 && tanks[0].getTankType() != Fluids.OXYHYDROGEN) this.pollute(PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * (float) consumption * 0.25F); makePower(consumption, throttle); } @@ -532,7 +536,7 @@ public class TileEntityMachineTurbineGas extends TileEntityMachineBase implement @Override public FluidTank[] getSendingTanks() { - return new FluidTank[] { tanks[3] }; + return new FluidTank[] { tanks[3], smoke, smoke_leaded, smoke_poison }; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 262bfb654..53e056569 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -5,6 +5,8 @@ import java.util.List; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.inventory.UpgradeManager; @@ -24,7 +26,7 @@ import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; -import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.tileentity.TileEntityMachinePolluting; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; @@ -44,7 +46,7 @@ import net.minecraft.util.DamageSource; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbofan extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider { +public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider { public long power; public static final long maxPower = 1_000_000; @@ -62,7 +64,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements private AudioWrapper audio; public TileEntityMachineTurbofan() { - super(5); + super(5, 150); tank = new FluidTank(Fluids.KEROSENE, 24000); blood = new FluidTank(Fluids.BLOOD, 24000); } @@ -161,6 +163,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements this.wasOn = true; this.tank.setFill(this.tank.getFill() - amountToBurn); this.power += burnValue * amountToBurn; + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * amountToBurn); } power = Library.chargeItemsFromTE(slots, 3, power, power); @@ -168,7 +172,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(this.blood.getFill() > 0) this.sendFluid(blood.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.blood.getFill() > 0) this.sendFluid(blood, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendSmoke(pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(burnValue > 0 && amountToBurn > 0) { @@ -309,6 +314,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements audio = rebootAudio(audio); } + audio.keepAlive(); audio.updateVolume(momentum); audio.updatePitch(momentum / 200F + 0.5F + this.afterburner * 0.16F); @@ -325,9 +331,9 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements * Otherwise this could lead to desync since the motion is never sent form the server */ if(tank.getFill() > 0 && !MainRegistry.proxy.me().capabilities.isCreativeMode) { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10).getRotation(ForgeDirection.UP); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - + double minX = this.xCoord + 0.5 - dir.offsetX * 3.5 - rot.offsetX * 1.5; double maxX = this.xCoord + 0.5 - dir.offsetX * 19.5 + rot.offsetX * 1.5; double minZ = this.zCoord + 0.5 - dir.offsetZ * 3.5 - rot.offsetZ * 1.5; @@ -382,7 +388,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements } public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 5.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.turbofanOperate", xCoord, yCoord, zCoord, 1.0F, 50F, 1.0F, 20); } @Override @@ -469,7 +475,7 @@ public class TileEntityMachineTurbofan extends TileEntityMachineBase implements @Override public FluidTank[] getAllTanks() { - return new FluidTank[] { tank, blood }; + return new FluidTank[] { tank, blood, smoke, smoke_leaded, smoke_poison }; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java index b2ca2d267..8a513a99b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityRadiobox.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine; import java.util.List; +import com.hbm.entity.mob.EntityFBI; +import com.hbm.entity.mob.EntityFBIDrone; import com.hbm.inventory.container.ContainerRadiobox; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; @@ -42,8 +44,13 @@ public class TileEntityRadiobox extends TileEntityLoadedBase implements IEnergyU int range = 15; List entities = worldObj.getEntitiesWithinAABB(IMob.class, AxisAlignedBB.getBoundingBox(xCoord - range, yCoord - range, zCoord - range, xCoord + range, yCoord + range, zCoord + range)); - for(IMob entity : entities) + + for(IMob entity : entities) { + + if(entity instanceof EntityFBI || entity instanceof EntityFBIDrone) continue; + ((Entity)entity).attackEntityFrom(ModDamageSource.enervation, 20.0F); + } } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java index aae6849e0..3e17bf1e0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorResearch.java @@ -400,7 +400,7 @@ public class TileEntityReactorResearch extends TileEntityMachineBase implements @Callback @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { - return new Object[] {level}; + return new Object[] {level * 100}; } @Callback diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java index 143795070..c605f96d6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityReactorZirnox.java @@ -230,7 +230,7 @@ public class TileEntityReactorZirnox extends TileEntityMachineBase implements IF } for(DirPos pos : getConPos()) { - this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } checkIfMeltdown(); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java index e906bc154..f0b6a5500 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySawmill.java @@ -273,7 +273,7 @@ public class TileEntitySawmill extends TileEntityMachineBase { } if(names.contains("plankWood")) { - return new ItemStack(Items.stick, 4); + return new ItemStack(Items.stick, 6); } if(names.contains("treeSapling")) { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java index 2ceec4118..ab91d87c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySolarBoiler.java @@ -56,8 +56,8 @@ public class TileEntitySolarBoiler extends TileEntityLoadedBase implements IFlui water.setFill(water.getFill() - process); steam.setFill(steam.getFill() + process * 100); - this.sendFluid(steam.getTankType(), worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); - this.sendFluid(steam.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); + this.sendFluid(steam, worldObj, xCoord, yCoord + 3, zCoord, Library.POS_Y); + this.sendFluid(steam, worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); heat = 0; } else { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java index 20204ca0d..6f85b34fd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySoyuzLauncher.java @@ -171,7 +171,7 @@ public class TileEntitySoyuzLauncher extends TileEntityMachineBase implements IS @Override public AudioWrapper createAudioLoop() { - return MainRegistry.proxy.getLoopedSound("hbm:block.soyuzReady", xCoord, yCoord, zCoord, 1.0F, 1.0F); + return MainRegistry.proxy.getLoopedSound("hbm:block.soyuzReady", xCoord, yCoord, zCoord, 2.0F, 100F, 1.0F); } public void onChunkUnload() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java index f3c99b090..2d70dc4c6 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntitySteamEngine.java @@ -120,7 +120,7 @@ public class TileEntitySteamEngine extends TileEntityLoadedBase implements IFlui if(this.powerBuffer > 0) this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(tanks[1].getFill() > 0) fillFluidInit(tanks[1].getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java index e157188be..9b9a4432c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStorageDrum.java @@ -148,8 +148,8 @@ public class TileEntityStorageDrum extends TileEntityMachineBase implements IFlu fillFluidInit(tanks[1].getTankType()); } - this.sendFluidToAll(tanks[0].getTankType(), this); - this.sendFluidToAll(tanks[1].getTankType(), this); + this.sendFluidToAll(tanks[0], this); + this.sendFluidToAll(tanks[1], this); tanks[0].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); tanks[1].updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index c40358133..f3c930d3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -5,7 +5,6 @@ import java.util.List; import com.hbm.blocks.ModBlocks; import com.hbm.entity.mob.EntityCyberCrab; -import com.hbm.entity.mob.EntityNuclearCreeper; import com.hbm.entity.mob.EntityTaintCrab; import com.hbm.entity.mob.EntityTeslaCrab; import com.hbm.lib.Library; @@ -126,18 +125,16 @@ public class TileEntityTesla extends TileEntityMachineBase implements IEnergyUse continue; } + if(e instanceof EntityCreeper) { + ((EntityCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); + ret.add(new double[] {e.posX, e.posY + e.height / 2, e.posZ}); + continue; + } + if(!(e instanceof EntityPlayer && ArmorUtil.checkForFaraday((EntityPlayer)e))) if(e.attackEntityFrom(ModDamageSource.electricity, MathHelper.clamp_float(e.getMaxHealth() * 0.5F, 3, 20) / (float)targets.size())) worldObj.playSoundAtEntity(e, "hbm:weapon.tesla", 1.0F, 1.0F); - if(e instanceof EntityCreeper) { - ((EntityCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); - } - - if(e instanceof EntityNuclearCreeper) { - ((EntityNuclearCreeper)e).getDataWatcher().updateObject(17, Byte.valueOf((byte)1)); - } - double offset = 0; if(source != null && e instanceof EntityPlayer && worldObj.isRemote) diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java index 5fd40bbe0..03b16cf88 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerLarge.java @@ -68,14 +68,14 @@ public class TileEntityTowerLarge extends TileEntityCondenser { } @Override - public void sendFluidToAll(FluidType type, TileEntity te) { + public void sendFluidToAll(FluidTank tank, TileEntity te) { for(int i = 2; i < 6; i++) { ForgeDirection dir = ForgeDirection.getOrientation(i); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + dir.offsetX * 5, yCoord, zCoord + dir.offsetZ * 5, dir); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * 3, dir); - this.sendFluid(this.tanks[1].getTankType(),worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * -3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * -3, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5, yCoord, zCoord + dir.offsetZ * 5, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * 3, dir); + this.sendFluid(this.tanks[1], worldObj, xCoord + dir.offsetX * 5 + rot.offsetX * -3, yCoord, zCoord + dir.offsetZ * 5 + rot.offsetZ * -3, dir); } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java index 05849023a..7dbb010bb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTowerSmall.java @@ -53,11 +53,11 @@ public class TileEntityTowerSmall extends TileEntityCondenser { } @Override - public void sendFluidToAll(FluidType type, TileEntity te) { - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); - this.sendFluid(this.tanks[1].getTankType(), worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); + public void sendFluidToAll(FluidTank tank, TileEntity te) { + this.sendFluid(this.tanks[1], worldObj, xCoord + 3, yCoord, zCoord, Library.POS_X); + this.sendFluid(this.tanks[1], worldObj, xCoord - 3, yCoord, zCoord, Library.NEG_X); + this.sendFluid(this.tanks[1], worldObj, xCoord, yCoord, zCoord + 3, Library.POS_Z); + this.sendFluid(this.tanks[1], worldObj, xCoord, yCoord, zCoord - 3, Library.NEG_Z); } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java index f5e8f68de..8b3e4baeb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatz.java @@ -2,7 +2,11 @@ package com.hbm.tileentity.machine; import java.util.ArrayList; import java.util.List; +import java.util.Random; +import com.hbm.blocks.ModBlocks; +import com.hbm.entity.projectile.EntityShrapnel; +import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.interfaces.IControlReceiver; import com.hbm.inventory.container.ContainerWatz; import com.hbm.inventory.fluid.Fluids; @@ -13,6 +17,9 @@ import com.hbm.inventory.gui.GUIWatz; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemWatzPellet; import com.hbm.items.machine.ItemWatzPellet.EnumWatzType; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.Compat; @@ -21,13 +28,17 @@ import com.hbm.util.fauxpointtwelve.DirPos; import com.hbm.util.function.Function; import api.hbm.fluid.IFluidStandardTransceiver; +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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; @@ -40,6 +51,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand public double fluxLastBase; //flux created by the previous passive emission, only used for display public double fluxLastReaction; //flux created by the previous reaction, used for the next reaction public double fluxDisplay; + public boolean isOn; /* lock types for item IO */ public boolean isLocked = false; @@ -64,6 +76,7 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand if(!worldObj.isRemote && !updateLock()) { + boolean turnedOn = worldObj.getBlock(xCoord, yCoord + 3, zCoord) == ModBlocks.watz_pump && worldObj.getIndirectPowerLevelTo(xCoord, yCoord + 5, zCoord, 0) > 0; List segments = new ArrayList(); segments.add(this); this.subscribeToTop(); @@ -97,11 +110,18 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand } /* update reaction, top to bottom */ - this.updateReaction(null, sharedTanks); + this.updateReaction(null, sharedTanks, turnedOn); for(int i = 1; i < segments.size(); i++) { TileEntityWatz segment = segments.get(i); TileEntityWatz above = segments.get(i - 1); - segment.updateReaction(above, sharedTanks); + segment.updateReaction(above, sharedTanks, turnedOn); + } + + /* send sync packets (order doesn't matter) */ + for(TileEntityWatz segment : segments) { + segment.isOn = turnedOn; + segment.sendPacket(sharedTanks); + segment.heat *= 0.99; //cool 1% per tick } /* re-distribute fluid from shared tanks back into actual tanks, bottom to top */ @@ -109,34 +129,47 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand TileEntityWatz segment = segments.get(i); for(int j = 0; j < 3; j++) { int min = Math.min(segment.tanks[j].getMaxFill(), sharedTanks[j].getFill()); - segment.tanks[j].setFill(min); sharedTanks[j].setFill(sharedTanks[j].getFill() - min); + segment.tanks[j].setFill(min); } } - /* send sync packets (order doesn't matter) */ - for(TileEntityWatz segment : segments) { - segment.sendPacket(sharedTanks); - segment.heat *= 0.99; //cool 1% per tick - } - segments.get(segments.size() - 1).sendOutBottom(); + + /* explode on mud overflow */ + if(sharedTanks[2].getFill() > 0) { + for(int x = -3; x <= 3; x++) { + for(int y = 3; y < 6; y++) { + for(int z = -3; z <= 3; z++) { + worldObj.setBlock(xCoord + x, yCoord + y, zCoord + z, Blocks.air); + } + } + } + this.disassemble(); + + ChunkRadiationManager.proxy.incrementRad(worldObj, xCoord, yCoord + 1, zCoord, 1_000F); + + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 2, zCoord + 0.5, "hbm:block.rbmk_explosion", 50.0F, 1.0F); + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "rbmkmush"); + data.setFloat("scale", 5); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.5, yCoord + 2, zCoord + 0.5), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 250)); + MainRegistry.proxy.effectNT(data); + + return; + } } } /** basic sanity checking, usually wouldn't do anything except when NBT loading borks */ public void setupCoolant() { - - if(!tanks[0].getTankType().hasTrait(FT_Heatable.class)) { - tanks[0].setTankType(Fluids.COOLANT); - } - + tanks[0].setTankType(Fluids.COOLANT); tanks[1].setTankType(tanks[0].getTankType().getTrait(FT_Heatable.class).getFirstStep().typeProduced); } public void updateCoolant(FluidTank[] tanks) { - double coolingFactor = 0.05D; //20% per tick, TEMP + double coolingFactor = 0.1D; //10% per tick, TEMP double heatToUse = this.heat * coolingFactor; FT_Heatable trait = tanks[0].getTankType().getTrait(FT_Heatable.class); @@ -148,73 +181,87 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand int cycles = Math.min(heatCycles, Math.min(hotCycles, coolCycles)); this.heat -= cycles * step.heatReq; - tanks[0].setFill(tanks[0].getFill() - coolCycles * step.amountReq); - tanks[1].setFill(tanks[1].getFill() + hotCycles * step.amountProduced); + tanks[0].setFill(tanks[0].getFill() - cycles * step.amountReq); + tanks[1].setFill(tanks[1].getFill() + cycles * step.amountProduced); } /** enforces strict top to bottom update order (instead of semi-random based on placement) */ - public void updateReaction(TileEntityWatz above, FluidTank[] tanks) { + public void updateReaction(TileEntityWatz above, FluidTank[] tanks, boolean turnedOn) { - List pellets = new ArrayList(); + if(turnedOn) { + List pellets = new ArrayList(); + + for(int i = 0; i < 24; i++) { + ItemStack stack = slots[i]; + if(stack != null && stack.getItem() == ModItems.watz_pellet) { + pellets.add(stack); + } + } + + double baseFlux = 0D; + + /* init base flux */ + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + baseFlux += type.passive; + } + + double inputFlux = baseFlux + fluxLastReaction; + double addedFlux = 0D; + double addedHeat = 0D; + + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + Function burnFunc = type.burnFunc; + Function heatDiv = type.heatDiv; + + if(burnFunc != null) { + double div = heatDiv != null ? heatDiv.effonix(heat) : 1D; + double burn = burnFunc.effonix(inputFlux) / div; + ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); + addedFlux += burn; + addedHeat += type.heatEmission * burn; + tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * burn)); + } + } + + for(ItemStack stack : pellets) { + EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); + Function absorbFunc = type.absorbFunc; + + if(absorbFunc != null) { + double absorb = absorbFunc.effonix(baseFlux + fluxLastReaction); + addedHeat += absorb; + ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - absorb); + tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * absorb)); + } + } + + this.heat += addedHeat; + this.fluxLastBase = baseFlux; + this.fluxLastReaction = addedFlux; + + } else { + this.fluxLastBase = 0; + this.fluxLastReaction = 0; + + } for(int i = 0; i < 24; i++) { ItemStack stack = slots[i]; - if(stack != null && stack.getItem() == ModItems.watz_pellet) { - pellets.add(stack); - } - } - - double baseFlux = 0D; - - /* init base flux */ - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - baseFlux += type.passive; - } - - double inputFlux = baseFlux + fluxLastReaction; - double addedFlux = 0D; - double addedHeat = 0D; - - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - Function burnFunc = type.burnFunc; - Function heatMod = type.heatMult; - if(burnFunc != null) { - double mod = heatMod != null ? heatMod.effonix(heat) : 1D; - double burn = burnFunc.effonix(inputFlux) * mod; - ItemWatzPellet.setYield(stack, ItemWatzPellet.getYield(stack) - burn); - addedFlux += burn; - addedHeat += type.heatEmission * burn; - tanks[2].setFill(tanks[2].getFill() + (int) Math.round(type.mudContent * burn)); + /* deplete */ + if(stack != null && stack.getItem() == ModItems.watz_pellet && ItemWatzPellet.getEnrichment(stack) <= 0) { + slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stack.getItemDamage()); + continue; // depleted pellets may persist for one tick } } - for(ItemStack stack : pellets) { - EnumWatzType type = EnumUtil.grabEnumSafely(EnumWatzType.class, stack.getItemDamage()); - Function absorbFunc = type.absorbFunc; - - if(absorbFunc != null) { - addedHeat += absorbFunc.effonix(baseFlux + fluxLastReaction); - } - } - - this.heat += addedHeat; - this.fluxLastBase = baseFlux; - this.fluxLastReaction = addedFlux; - if(above != null) { for(int i = 0; i < 24; i++) { ItemStack stackBottom = slots[i]; ItemStack stackTop = above.slots[i]; - /* deplete */ - if(stackBottom != null && stackBottom.getItem() == ModItems.watz_pellet && ItemWatzPellet.getYield(stackBottom) <= 0) { - slots[i] = new ItemStack(ModItems.watz_pellet_depleted, 1, stackBottom.getItemDamage()); - continue; // depleted pellets may persist for one tick - } - /* items fall down if the bottom slot is empty */ if(stackBottom == null && stackTop != null) { slots[i] = stackTop.copy(); @@ -235,12 +282,25 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand NBTTagCompound data = new NBTTagCompound(); data.setInteger("heat", this.heat); + data.setBoolean("isOn", isOn); + data.setBoolean("lock", isLocked); data.setDouble("flux", this.fluxLastReaction + this.fluxLastBase); for(int i = 0; i < tanks.length; i++) { tanks[i].writeToNBT(data, "t" + i); } this.networkPack(data, 25); } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.heat = nbt.getInteger("heat"); + this.isOn = nbt.getBoolean("isOn"); + this.isLocked = nbt.getBoolean("lock"); + this.fluxDisplay = nbt.getDouble("flux"); + for(int i = 0; i < tanks.length; i++) { + tanks[i].readFromNBT(nbt, "t" + i); + } + } /** Prevent manual updates when another segment is above this one */ public boolean updateLock() { @@ -258,8 +318,8 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand protected void sendOutBottom() { for(DirPos pos : getSendingPos()) { - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -272,14 +332,51 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand new DirPos(xCoord, yCoord - 1, zCoord - 2, ForgeDirection.DOWN) }; } - + @Override - public void networkUnpack(NBTTagCompound nbt) { - this.heat = nbt.getInteger("heat"); - this.fluxDisplay = nbt.getDouble("flux"); - for(int i = 0; i < tanks.length; i++) { - tanks[i].readFromNBT(nbt, "t" + i); + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + + NBTTagList list = nbt.getTagList("locks", 10); + + for(int i = 0; i < list.tagCount(); i++) { + NBTTagCompound nbt1 = list.getCompoundTagAt(i); + byte b0 = nbt1.getByte("slot"); + if(b0 >= 0 && b0 < slots.length) { + locks[b0] = ItemStack.loadItemStackFromNBT(nbt1); + } } + + for(int i = 0; i < tanks.length; i++) tanks[i].readFromNBT(nbt, "t" + i); + this.heat = nbt.getInteger("heat"); + this.fluxLastBase = nbt.getDouble("lastFluxB"); + this.fluxLastReaction = nbt.getDouble("lastFluxR"); + + this.isLocked = nbt.getBoolean("isLocked"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + + NBTTagList list = new NBTTagList(); + + for(int i = 0; i < locks.length; i++) { + if(locks[i] != null) { + NBTTagCompound nbt1 = new NBTTagCompound(); + nbt1.setByte("slot", (byte) i); + locks[i].writeToNBT(nbt1); + list.appendTag(nbt1); + } + } + nbt.setTag("locks", list); + + for(int i = 0; i < tanks.length; i++) tanks[i].writeToNBT(nbt, "t" + i); + nbt.setInteger("heat", this.heat); + nbt.setDouble("lastFluxB", fluxLastBase); + nbt.setDouble("lastFluxR", fluxLastReaction); + + nbt.setBoolean("isLocked", isLocked); } @Override @@ -307,7 +404,9 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand @Override public boolean isItemValidForSlot(int i, ItemStack stack) { - return stack.getItem() == ModItems.watz_pellet; + if(stack.getItem() != ModItems.watz_pellet) return false; + if(!this.isLocked) return true; + return this.locks[i] != null && this.locks[i].getItem() == stack.getItem() && locks[i].getItemDamage() == stack.getItemDamage(); } @Override @@ -344,6 +443,73 @@ public class TileEntityWatz extends TileEntityMachineBase implements IFluidStand return bb; } + private void disassemble() { + + int count = 20; + Random rand = worldObj.rand; + for(int i = 0; i < count * 5; i++) { + EntityShrapnel shrapnel = new EntityShrapnel(worldObj); + shrapnel.posX = xCoord + 0.5; + shrapnel.posY = yCoord + 3; + shrapnel.posZ = zCoord + 0.5; + shrapnel.motionY = ((rand.nextFloat() * 0.5) + 0.5) * (1 + (count / (15 + rand.nextInt(21)))) + (rand.nextFloat() / 50 * count); + shrapnel.motionX = rand.nextGaussian() * 1 * (1 + (count / 100)); + shrapnel.motionZ = rand.nextGaussian() * 1 * (1 + (count / 100)); + shrapnel.setWatz(true); + worldObj.spawnEntityInWorld(shrapnel); + } + + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.mud_block); + worldObj.setBlock(xCoord, yCoord + 1, zCoord, ModBlocks.mud_block); + worldObj.setBlock(xCoord, yCoord + 2, zCoord, ModBlocks.mud_block); + + setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, 2, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 1); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, 2); + setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, -2, 0); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -1); + setBrokenColumn(0, ModBlocks.watz_element, 0, 0, -2); + setBrokenColumn(0, ModBlocks.watz_element, 0, 1, 1); + setBrokenColumn(0, ModBlocks.watz_element, 0, 1, -1); + setBrokenColumn(0, ModBlocks.watz_element, 0, -1, 1); + setBrokenColumn(0, ModBlocks.watz_element, 0, -1, -1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, 1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 2, -1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, 2); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, 2); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, 1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -2, -1); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, 1, -2); + setBrokenColumn(0, ModBlocks.watz_cooler, 0, -1, -2); + + for(int j = -1; j < 2; j++) { + setBrokenColumn(1, ModBlocks.watz_end, 1, 3, j); + setBrokenColumn(1, ModBlocks.watz_end, 1, j, 3); + setBrokenColumn(1, ModBlocks.watz_end, 1, -3, j); + setBrokenColumn(1, ModBlocks.watz_end, 1, j, -3); + } + setBrokenColumn(1, ModBlocks.watz_end, 1, 2, 2); + setBrokenColumn(1, ModBlocks.watz_end, 1, 2, -2); + setBrokenColumn(1, ModBlocks.watz_end, 1, -2, 2); + setBrokenColumn(1, ModBlocks.watz_end, 1, -2, -2); + } + + private void setBrokenColumn(int minHeight, Block b, int meta, int x, int z) { + + int height = minHeight + worldObj.rand.nextInt(3 - minHeight); + + for(int i = 0; i < 3; i++) { + + if(i <= height) { + worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, b, meta, 3); + } else { + worldObj.setBlock(xCoord + x, yCoord + i, zCoord + z, ModBlocks.mud_block); + } + } + } + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java index 8411a1c76..95db0d668 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzCore.java @@ -565,10 +565,10 @@ public class TileEntityWatzCore extends TileEntityLoadedBase implements ISidedIn this.sendPower(worldObj, xCoord, yCoord + 7, zCoord, ForgeDirection.UP); this.sendPower(worldObj, xCoord, yCoord - 7, zCoord, ForgeDirection.DOWN); - this.sendFluid(tank.getTankType(), worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); - this.sendFluid(tank.getTankType(), worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); - this.sendFluid(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); + this.sendFluid(tank, worldObj, xCoord + 4, yCoord, zCoord, Library.POS_X); + this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord + 4, Library.POS_Z); + this.sendFluid(tank, worldObj, xCoord - 4, yCoord, zCoord, Library.NEG_X); + this.sendFluid(tank, worldObj, xCoord, yCoord, zCoord - 4, Library.NEG_Z); if (age == 9 || age == 19) { fillFluidInit(tank.getTankType()); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java new file mode 100644 index 000000000..e3bb5f800 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityWatzStruct.java @@ -0,0 +1,112 @@ +package com.hbm.tileentity.machine; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.Watz; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityWatzStruct extends TileEntity { + + @Override + public void updateEntity() { + + if(worldObj.isRemote) return; + if(worldObj.getTotalWorldTime() % 20 != 0) return; + + /* + * skeptics may say that his is shit. i don't necessarily disagree, but it was both easy and quick to do + * and it remains readable and not terribly long, so who the fuck cares. + */ + if(!cbr(ModBlocks.watz_cooler, 0, 1, 0)) return; + if(!cbr(ModBlocks.watz_cooler, 0, 2, 0)) return; + + for(int i = 0; i < 3; i++) { + if(!cbr(ModBlocks.watz_element, 1, i, 0)) return; + if(!cbr(ModBlocks.watz_element, 2, i, 0)) return; + if(!cbr(ModBlocks.watz_element, 0, i, 1)) return; + if(!cbr(ModBlocks.watz_element, 0, i, 2)) return; + if(!cbr(ModBlocks.watz_element, -1, i, 0)) return; + if(!cbr(ModBlocks.watz_element, -2, i, 0)) return; + if(!cbr(ModBlocks.watz_element, 0, i, -1)) return; + if(!cbr(ModBlocks.watz_element, 0, i, -2)) return; + if(!cbr(ModBlocks.watz_element, 1, i, 1)) return; + if(!cbr(ModBlocks.watz_element, 1, i, -1)) return; + if(!cbr(ModBlocks.watz_element, -1, i, 1)) return; + if(!cbr(ModBlocks.watz_element, -1, i, -1)) return; + if(!cbr(ModBlocks.watz_cooler, 2, i, 1)) return; + if(!cbr(ModBlocks.watz_cooler, 2, i, -1)) return; + if(!cbr(ModBlocks.watz_cooler, 1, i, 2)) return; + if(!cbr(ModBlocks.watz_cooler, -1, i, 2)) return; + if(!cbr(ModBlocks.watz_cooler, -2, i, 1)) return; + if(!cbr(ModBlocks.watz_cooler, -2, i, -1)) return; + if(!cbr(ModBlocks.watz_cooler, 1, i, -2)) return; + if(!cbr(ModBlocks.watz_cooler, -1, i, -2)) return; + + for(int j = -1; j < 2; j++) { + if(!cbr(ModBlocks.watz_end, 1, 3, i, j)) return; + if(!cbr(ModBlocks.watz_end, 1, j, i, 3)) return; + if(!cbr(ModBlocks.watz_end, 1, -3, i, j)) return; + if(!cbr(ModBlocks.watz_end, 1, j, i, -3)) return; + } + if(!cbr(ModBlocks.watz_end, 1, 2, i, 2)) return; + if(!cbr(ModBlocks.watz_end, 1, 2, i, -2)) return; + if(!cbr(ModBlocks.watz_end, 1, -2, i, 2)) return; + if(!cbr(ModBlocks.watz_end, 1, -2, i, -2)) return; + } + + Watz watz = (Watz)ModBlocks.watz; + BlockDummyable.safeRem = true; + worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.watz, 12, 3); + watz.fillSpace(worldObj, xCoord, yCoord, zCoord, ForgeDirection.NORTH, 0); + BlockDummyable.safeRem = false; + } + + /** [G]et [B]lock at [R]elative position */ + private Block gbr(int x, int y, int z) { + return worldObj.getBlock(xCoord + x, yCoord + y, zCoord + z); + } + + /** [G]et [M]eta at [R]elative position */ + private int gmr(int x, int y, int z) { + return worldObj.getBlockMetadata(xCoord + x, yCoord + y, zCoord + z); + } + + /** [C]heck [B]lock at [R]elative position */ + private boolean cbr(Block b, int x, int y, int z) { + return b == gbr(x, y, z); + } + private boolean cbr(Block b, int meta, int x, int y, int z) { + return b == gbr(x, y, z) && meta == gmr(x, y, z); + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 3, + yCoord, + zCoord - 3, + xCoord + 4, + yCoord + 3, + zCoord + 4 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java index 980717cce..37f9f4fb0 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java @@ -1,17 +1,10 @@ package com.hbm.tileentity.machine.oil; -import java.util.ArrayList; -import java.util.List; - import com.hbm.blocks.BlockDummyable; -import com.hbm.interfaces.IFluidAcceptor; -import com.hbm.interfaces.IFluidSource; import com.hbm.inventory.FluidStack; -import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.recipes.CrackingRecipes; -import com.hbm.lib.Library; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.util.Tuple.Pair; @@ -24,20 +17,17 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase implements IFluidSource, IFluidAcceptor, INBTPacketReceiver, IFluidStandardTransceiver { +public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase implements INBTPacketReceiver, IFluidStandardTransceiver { public FluidTank[] tanks; - public List list1 = new ArrayList(); - public List list2 = new ArrayList(); - public List list3 = new ArrayList(); public TileEntityMachineCatalyticCracker() { tanks = new FluidTank[5]; - tanks[0] = new FluidTank(Fluids.BITUMEN, 4000, 0); - tanks[1] = new FluidTank(Fluids.STEAM, 8000, 1); - tanks[2] = new FluidTank(Fluids.OIL, 4000, 2); - tanks[3] = new FluidTank(Fluids.PETROLEUM, 4000, 3); - tanks[4] = new FluidTank(Fluids.SPENTSTEAM, 800, 4); + tanks[0] = new FluidTank(Fluids.BITUMEN, 4000); + tanks[1] = new FluidTank(Fluids.STEAM, 8000); + tanks[2] = new FluidTank(Fluids.OIL, 4000); + tanks[3] = new FluidTank(Fluids.PETROLEUM, 4000); + tanks[4] = new FluidTank(Fluids.SPENTSTEAM, 800); } @Override @@ -51,18 +41,15 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl updateConnections(); this.worldObj.theProfiler.endStartSection("catalyticCracker_do_recipe"); - if(worldObj.getTotalWorldTime() % 20 == 0) + if(worldObj.getTotalWorldTime() % 5 == 0) crack(); this.worldObj.theProfiler.endStartSection("catalyticCracker_send_fluid"); if(worldObj.getTotalWorldTime() % 10 == 0) { - fillFluidInit(tanks[2].getTankType()); - fillFluidInit(tanks[3].getTankType()); - fillFluidInit(tanks[4].getTankType()); for(DirPos pos : getConPos()) { for(int i = 2; i <= 4; i++) { - if(tanks[i].getFill() > 0) this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[i].getFill() > 0) this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -149,63 +136,6 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl for(int i = 0; i < 5; i++) tanks[i].writeToNBT(nbt, "tank" + i); } - - @Override - public void setFillForSync(int fill, int index) { - if(index < 5 && tanks[index] != null) - tanks[index].setFill(fill); - } - - @Override - public void setFluidFill(int fill, FluidType type) { - for(FluidTank tank : tanks) { - if(tank.getTankType() == type) { - tank.setFill(fill); - } - } - } - - @Override - public void setTypeForSync(FluidType type, int index) { - this.tanks[index].setTankType(type); - } - - @Override - public int getFluidFill(FluidType type) { - for(FluidTank tank : tanks) { - if(tank.getTankType() == type) { - return tank.getFill(); - } - } - return 0; - } - - @Override - public int getMaxFluidFill(FluidType type) { - if(type == tanks[0].getTankType()) - return tanks[0].getMaxFill(); - else if(type == tanks[1].getTankType()) - return tanks[1].getMaxFill(); - else - return 0; - } - - @Override - public void fillFluidInit(FluidType type) { - - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); - ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - - fillFluid(xCoord + dir.offsetX * 4 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 1, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * 4 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 2, this.getTact(), type); - fillFluid(xCoord - dir.offsetX * 4 + rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 4 + rot.offsetZ * 1, this.getTact(), type); - fillFluid(xCoord - dir.offsetX * 4 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 4 - rot.offsetZ * 2, this.getTact(), type); - - fillFluid(xCoord + dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 3, this.getTact(), type); - fillFluid(xCoord + dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 4, this.getTact(), type); - fillFluid(xCoord - dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 3, this.getTact(), type); - fillFluid(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, this.getTact(), type); - } protected DirPos[] getConPos() { @@ -223,31 +153,6 @@ public class TileEntityMachineCatalyticCracker extends TileEntityLoadedBase impl new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()) }; } - - @Override - public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { - Library.transmitFluid(x, y, z, newTact, this, worldObj, type); - } - - @Override - public boolean getTact() { - return worldObj.getTotalWorldTime() % 20 < 10; - } - - @Override - public List getFluidList(FluidType type) { - if(type == tanks[2].getTankType()) return list1; - if(type == tanks[3].getTankType()) return list2; - if(type == tanks[4].getTankType()) return list3; - return new ArrayList(); - } - - @Override - public void clearFluidList(FluidType type) { - if(type == tanks[2].getTankType()) list1.clear(); - if(type == tanks[3].getTankType()) list2.clear(); - if(type == tanks[4].getTankType()) list3.clear(); - } AxisAlignedBB bb = null; diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java index f35883f09..04e534de5 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -69,7 +69,7 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im for(DirPos pos : getConPos()) { for(int i = 1; i < 4; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } @@ -133,8 +133,8 @@ public class TileEntityMachineCatalyticReformer extends TileEntityMachineBase im new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ, dir), new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ, dir.getOpposite()), new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ, dir.getOpposite()), - new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, dir), - new DirPos(xCoord - rot.offsetX * 3, yCoord, zCoord - rot.offsetZ * 3, dir) + new DirPos(xCoord + rot.offsetX * 3, yCoord, zCoord + rot.offsetZ * 3, rot), + new DirPos(xCoord - rot.offsetX * 3, yCoord, zCoord - rot.offsetZ * 3, rot.getOpposite()) }; } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java new file mode 100644 index 000000000..f2adcb771 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -0,0 +1,290 @@ +package com.hbm.tileentity.machine.oil; + +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; +import com.hbm.inventory.FluidStack; +import com.hbm.inventory.container.ContainerMachineCoker; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.inventory.gui.GUIMachineCoker; +import com.hbm.inventory.recipes.CokerRecipes; +import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Tuple.Triplet; +import com.hbm.util.fauxpointtwelve.DirPos; + +import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.tile.IHeatSource; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class TileEntityMachineCoker extends TileEntityMachineBase implements IFluidStandardTransceiver, IGUIProvider { + + public boolean wasOn; + public int progress; + public static int processTime = 20_000; + + public int heat; + public static int maxHeat = 100_000; + public static double diffusion = 0.25D; + + public FluidTank[] tanks; + + public TileEntityMachineCoker() { + super(2); + tanks = new FluidTank[2]; + tanks[0] = new FluidTank(Fluids.HEAVYOIL, 16_000); + tanks[1] = new FluidTank(Fluids.OIL_COKER, 8_000); + } + + @Override + public String getName() { + return "container.machineCoker"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + this.tryPullHeat(); + this.tanks[0].setType(0, slots); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + for(DirPos pos : getConPos()) { + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + + this.wasOn = false; + + if(canProcess()) { + int burn = heat / 100; + + if(burn > 0) { + this.wasOn = true; + this.progress += burn; + this.heat -= burn; + + if(progress >= processTime) { + this.markChanged(); + progress -= this.processTime; + + Triplet recipe = CokerRecipes.getOutput(tanks[0].getTankType()); + int fillReq = recipe.getX(); + ItemStack output = recipe.getY(); + FluidStack byproduct = recipe.getZ(); + + if(output != null) { + if(slots[1] == null) { + slots[1] = output.copy(); + } else { + slots[1].stackSize += output.stackSize; + } + } + + if(byproduct != null) { + tanks[1].setFill(tanks[1].getFill() + byproduct.fill); + } + + tanks[0].setFill(tanks[0].getFill() - fillReq); + } + } + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 20); + } + + for(DirPos pos : getConPos()) { + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("wasOn", this.wasOn); + data.setInteger("heat", this.heat); + data.setInteger("progress", this.progress); + tanks[0].writeToNBT(data, "t0"); + tanks[1].writeToNBT(data, "t1"); + this.networkPack(data, 25); + } else { + + if(this.wasOn) { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + NBTTagCompound fx = new NBTTagCompound(); + fx.setString("type", "tower"); + fx.setFloat("lift", 10F); + fx.setFloat("base", 0.75F); + fx.setFloat("max", 3F); + fx.setInteger("life", 200 + worldObj.rand.nextInt(50)); + fx.setInteger("color",0x404040); + fx.setDouble("posX", xCoord + 0.5); + fx.setDouble("posY", yCoord + 22); + fx.setDouble("posZ", zCoord + 0.5); + MainRegistry.proxy.effectNT(fx); + } + } + } + } + + public DirPos[] getConPos() { + + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord + 1, Library.POS_X), + new DirPos(xCoord + 2, yCoord, zCoord - 1, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord + 1, Library.NEG_X), + new DirPos(xCoord - 2, yCoord, zCoord - 1, Library.NEG_X), + new DirPos(xCoord + 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord - 1, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord + 1, yCoord, zCoord - 2, Library.NEG_Z), + new DirPos(xCoord - 1, yCoord, zCoord - 2, Library.NEG_Z) + }; + } + + public boolean canProcess() { + Triplet recipe = CokerRecipes.getOutput(tanks[0].getTankType()); + + if(recipe == null) return false; + + int fillReq = recipe.getX(); + ItemStack output = recipe.getY(); + FluidStack byproduct = recipe.getZ(); + + if(byproduct != null) tanks[1].setTankType(byproduct.type); + + if(tanks[0].getFill() < fillReq) return false; + if(byproduct != null && byproduct.fill + tanks[1].getFill() > tanks[1].getMaxFill()) return false; + + if(output != null && slots[1] != null) { + if(output.getItem() != slots[1].getItem()) return false; + if(output.getItemDamage() != slots[1].getItemDamage()) return false; + if(output.stackSize + slots[1].stackSize > output.getMaxStackSize()) return false; + } + + return true; + } + + @Override + public void networkUnpack(NBTTagCompound nbt) { + this.wasOn = nbt.getBoolean("wasOn"); + this.heat = nbt.getInteger("heat"); + this.progress = nbt.getInteger("progress"); + tanks[0].readFromNBT(nbt, "t0"); + tanks[1].readFromNBT(nbt, "t1"); + } + + protected void tryPullHeat() { + + if(this.heat >= this.maxHeat) return; + + TileEntity con = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord); + + if(con instanceof IHeatSource) { + IHeatSource source = (IHeatSource) con; + int diff = source.getHeatStored() - this.heat; + + if(diff == 0) { + return; + } + + if(diff > 0) { + diff = (int) Math.ceil(diff * diffusion); + source.useUpHeat(diff); + this.heat += diff; + if(this.heat > this.maxHeat) + this.heat = this.maxHeat; + return; + } + } + + this.heat = Math.max(this.heat - Math.max(this.heat / 1000, 1), 0); + } + + @Override + public boolean canExtractItem(int slot, ItemStack stack, int side) { + return true; + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) { + return new int[] { 1 }; + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.tanks[0].readFromNBT(nbt, "t0"); + this.tanks[1].readFromNBT(nbt, "t1"); + this.progress = nbt.getInteger("prog"); + this.heat = nbt.getInteger("heat"); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + this.tanks[0].writeToNBT(nbt, "t0"); + this.tanks[1].writeToNBT(nbt, "t1"); + nbt.setInteger("prog", progress); + nbt.setInteger("heat", heat); + } + + @Override + public FluidTank[] getAllTanks() { + return tanks; + } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] { tanks[1] }; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] { tanks[0] }; + } + + AxisAlignedBB bb = null; + + @Override + public AxisAlignedBB getRenderBoundingBox() { + + if(bb == null) { + bb = AxisAlignedBB.getBoundingBox( + xCoord - 2, + yCoord, + zCoord - 2, + xCoord + 3, + yCoord + 23, + zCoord + 3 + ); + } + + return bb; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() { + return 65536.0D; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerMachineCoker(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUIMachineCoker(player.inventory, this); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java index c963381a2..19ed18ecd 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineFractionTower.java @@ -104,8 +104,8 @@ public class TileEntityMachineFractionTower extends TileEntityLoadedBase impleme private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[2], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index e340df841..39f928faf 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -2,6 +2,8 @@ package com.hbm.tileentity.machine.oil; import java.util.List; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -13,6 +15,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.gui.GUIMachineGasFlare; import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; @@ -20,6 +23,7 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; @@ -92,15 +96,10 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(!worldObj.isRemote) { - this.sendPower(worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.sendPower(worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.sendPower(worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.sendPower(worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); - - this.trySubscribe(tank.getTankType(), worldObj, xCoord + 2, yCoord, zCoord, Library.POS_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord - 2, yCoord, zCoord, Library.NEG_X); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord + 2, Library.POS_Z); - this.trySubscribe(tank.getTankType(), worldObj, xCoord, yCoord, zCoord - 2, Library.NEG_Z); + for(DirPos pos : getConPos()) { + this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } tank.setType(3, slots); tank.loadTank(1, 2, slots); @@ -157,6 +156,11 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(worldObj.getTotalWorldTime() % 3 == 0) this.worldObj.playSoundEffect(this.xCoord, this.yCoord + 11, this.zCoord, "hbm:weapon.flamethrowerShoot", 1.5F, 0.75F); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); + if(tank.getTankType().hasTrait(FT_Leaded.class)) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * 5); + } } } } @@ -213,7 +217,15 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements } } } - + } + + public DirPos[] getConPos() { + return new DirPos[] { + new DirPos(xCoord + 2, yCoord, zCoord, Library.POS_X), + new DirPos(xCoord - 2, yCoord, zCoord, Library.NEG_X), + new DirPos(xCoord, yCoord, zCoord + 2, Library.POS_Z), + new DirPos(xCoord, yCoord, zCoord - 2, Library.NEG_Z) + }; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java index 2092b4805..edfeeff30 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineLiquefactor.java @@ -67,7 +67,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen int power = Math.min(UpgradeManager.getLevel(UpgradeType.POWER), 3); this.processTime = processTimeBase - (processTimeBase / 4) * speed; - this.usage = (usageBase + (usageBase * speed)) / (power + 1); + this.usage = (usageBase + (usageBase * speed)) / (power + 1); if(this.canProcess()) this.process(); @@ -97,7 +97,7 @@ public class TileEntityMachineLiquefactor extends TileEntityMachineBase implemen private void sendFluid() { for(DirPos pos : getConPos()) { - this.sendFluid(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tank, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java index a345a43d4..27e48d4a1 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineRefinery.java @@ -7,6 +7,8 @@ import java.util.Random; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IControlReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; @@ -24,6 +26,8 @@ import com.hbm.inventory.gui.GUIMachineRefinery; import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.IPersistentNBT; @@ -65,6 +69,10 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements public boolean hasExploded = false; public boolean onFire = false; public Explosion lastExplosion = null; + + private AudioWrapper audio; + private int audioTime; + public boolean isOn; private static final int[] slot_access = new int[] {11}; @@ -138,6 +146,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements if(!worldObj.isRemote) { + this.isOn = false; + if(this.getBlockMetadata() < 12) { ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getRotation(ForgeDirection.DOWN); worldObj.removeTileEntity(xCoord, yCoord, zCoord); @@ -174,7 +184,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(DirPos pos : getConPos()) { for(int i = 1; i < 5; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } @@ -193,6 +203,10 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(Entity e : affected) e.setFire(5); Random rand = worldObj.rand; ParticleUtil.spawnGasFlame(worldObj, xCoord + rand.nextDouble(), yCoord + 1.5 + rand.nextDouble() * 3, zCoord + rand.nextDouble(), rand.nextGaussian() * 0.05, 0.1, rand.nextGaussian() * 0.05); + + if(worldObj.getTotalWorldTime() % 20 == 0) { + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 70); + } } } @@ -201,7 +215,57 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); data.setBoolean("exploded", hasExploded); data.setBoolean("onFire", onFire); + data.setBoolean("isOn", this.isOn); this.networkPack(data, 150); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @@ -211,6 +275,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); this.hasExploded = nbt.getBoolean("exploded"); this.onFire = nbt.getBoolean("onFire"); + this.isOn = nbt.getBoolean("isOn"); } private void refine() { @@ -233,6 +298,7 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements } } + this.isOn = true; tanks[0].setFill(tanks[0].getFill() - 100); for(int i = 0; i < stacks.length; i++) @@ -259,6 +325,8 @@ public class TileEntityMachineRefinery extends TileEntityMachineBase implements this.markDirty(); } + + if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 5); this.power -= 5; } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java index 400e5c98f..9fc45de36 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineVacuumDistill.java @@ -7,6 +7,8 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIMachineVacuumDistill; import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; +import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; @@ -30,12 +32,16 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem public static final long maxPower = 1_000_000; public FluidTank[] tanks; + + private AudioWrapper audio; + private int audioTime; + public boolean isOn; public TileEntityMachineVacuumDistill() { super(11); this.tanks = new FluidTank[5]; - this.tanks[0] = new FluidTank(Fluids.OIL, 64_000); + this.tanks[0] = new FluidTank(Fluids.OIL, 64_000).withPressure(2); this.tanks[1] = new FluidTank(Fluids.HEAVYOIL_VACUUM, 24_000); this.tanks[2] = new FluidTank(Fluids.REFORMATE, 24_000); this.tanks[3] = new FluidTank(Fluids.LIGHTOIL_VACUUM, 24_000); @@ -52,6 +58,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem if(!worldObj.isRemote) { + this.isOn = false; + this.updateConnections(); power = Library.chargeTEFromItems(slots, 0, power, maxPower); tanks[0].loadTank(1, 2, slots); @@ -66,21 +74,72 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem for(DirPos pos : getConPos()) { for(int i = 1; i < 5; i++) { if(tanks[i].getFill() > 0) { - this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.sendFluid(tanks[i], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } } NBTTagCompound data = new NBTTagCompound(); data.setLong("power", this.power); + data.setBoolean("isOn", this.isOn); for(int i = 0; i < 5; i++) tanks[i].writeToNBT(data, "" + i); this.networkPack(data, 150); + } else { + + if(this.isOn) audioTime = 20; + + if(audioTime > 0) { + + audioTime--; + + if(audio == null) { + audio = createAudioLoop(); + audio.startSound(); + } else if(!audio.isPlaying()) { + audio = rebootAudio(audio); + } + + audio.keepAlive(); + + } else { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + } + } + + @Override + public AudioWrapper createAudioLoop() { + return MainRegistry.proxy.getLoopedSound("hbm:block.boiler", xCoord, yCoord, zCoord, 0.25F, 15F, 1.0F, 20); + } + + @Override + public void onChunkUnload() { + + if(audio != null) { + audio.stopSound(); + audio = null; + } + } + + @Override + public void invalidate() { + + super.invalidate(); + + if(audio != null) { + audio.stopSound(); + audio = null; } } @Override public void networkUnpack(NBTTagCompound nbt) { this.power = nbt.getLong("power"); + this.isOn = nbt.getBoolean("isOn"); for(int i = 0; i < 5; i++) tanks[i].readFromNBT(nbt, "" + i); } @@ -92,7 +151,8 @@ public class TileEntityMachineVacuumDistill extends TileEntityMachineBase implem if(tanks[2].getFill() + RefineryRecipes.vac_frac_reform > tanks[2].getMaxFill()) return; if(tanks[3].getFill() + RefineryRecipes.vac_frac_light > tanks[3].getMaxFill()) return; if(tanks[4].getFill() + RefineryRecipes.vac_frac_sour > tanks[4].getMaxFill()) return; - + + this.isOn = true; power -= 10_000; tanks[0].setFill(tanks[0].getFill() - 100); tanks[1].setFill(tanks[1].getFill() + RefineryRecipes.vac_frac_heavy); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java index 307c87f9e..11d36657f 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityOilDrillBase.java @@ -132,8 +132,8 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple this.fillFluidInit(tanks[1].getTankType()); for(DirPos pos : getConPos()) { - if(tanks[0].getFill() > 0) this.sendFluid(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); - if(tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[0].getFill() > 0) this.sendFluid(tanks[0], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[1].getFill() > 0) this.sendFluid(tanks[1], worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } if(this.power >= this.getPowerReqEff() && this.tanks[0].getFill() < this.tanks[0].getMaxFill() && this.tanks[1].getFill() < this.tanks[1].getMaxFill()) { @@ -199,7 +199,7 @@ public abstract class TileEntityOilDrillBase extends TileEntityMachineBase imple public int getDelayEff() { int delay = getDelay(); - return Math.max((delay - (delay / 4 * this.speedLevel) + (delay / 10 * this.energyLevel) / this.overLevel), 1); + return Math.max((delay - (delay / 4 * this.speedLevel) + (delay / 10 * this.energyLevel)) / this.overLevel, 1); } public abstract int getPowerReq(); 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 90d3cd483..8c06fd658 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileBase.java @@ -21,11 +21,8 @@ public abstract class TileEntityPileBase extends TileEntity { public abstract void updateEntity(); protected void castRay(int flux, int range) { - Random rand = worldObj.rand; - int[] vecVals = { 0, 0, 0,}; - vecVals[rand.nextInt(3)] = 1; - Vec3 vec = Vec3.createVectorHelper(vecVals[0], vecVals[1], vecVals[2]); + Vec3 vec = Vec3.createVectorHelper(1, 0, 0); vec.rotateAroundZ((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundY((float)(rand.nextDouble() * Math.PI * 2D)); vec.rotateAroundX((float)(rand.nextDouble() * Math.PI * 2D)); @@ -47,13 +44,14 @@ public abstract class TileEntityPileBase extends TileEntity { prevY = y; prevZ = z; - /*if(i == range) { + /*if(i == range || i == 1) { NBTTagCompound data2 = new NBTTagCompound(); data2.setString("type", "vanillaExt"); - data2.setString("mode", "greendust"); - data2.setDouble("posX", xCoord + 0.5 + vec.xCoord * range); - data2.setDouble("posY", yCoord + 0.5 + vec.yCoord * range); - data2.setDouble("posZ", zCoord + 0.5 + vec.zCoord * range); + data2.setString("mode", i == range ? "greendust" : + i == 1 ? "reddust" : "bluedust"); + data2.setDouble("posX", xCoord + 0.5 + vec.xCoord * i); + data2.setDouble("posY", yCoord + 0.5 + vec.yCoord * i); + data2.setDouble("posZ", zCoord + 0.5 + vec.zCoord * i); MainRegistry.proxy.effectNT(data2); }*/ @@ -91,7 +89,7 @@ public abstract class TileEntityPileBase extends TileEntity { if(entities != null) for(EntityLivingBase e : entities) { - ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, flux / 2); + ContaminationUtil.contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, flux / 4F); } } } diff --git a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java index 7a48e4f83..15233ad0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java +++ b/src/main/java/com/hbm/tileentity/machine/pile/TileEntityPileFuel.java @@ -2,9 +2,14 @@ package com.hbm.tileentity.machine.pile; import com.hbm.blocks.ModBlocks; import com.hbm.config.GeneralConfig; +import com.hbm.main.MainRegistry; +import com.hbm.packet.AuxParticlePacketNT; +import com.hbm.packet.PacketDispatcher; import api.hbm.block.IPileNeutronReceiver; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutronReceiver { @@ -13,14 +18,14 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr public int neutrons; public int lastNeutrons; public int progress; - public static final int maxProgress = GeneralConfig.enable528 ? 75000 : 50000; + public static final int maxProgress = GeneralConfig.enable528 ? 75000 : 50000; //might double to reduce compact setup's effectiveness @Override public void updateEntity() { if(!worldObj.isRemote) { dissipateHeat(); - react(); + checkRedstone(react()); transmute(); if(this.heat >= this.maxHeat) { @@ -28,32 +33,54 @@ public class TileEntityPileFuel extends TileEntityPileBase implements IPileNeutr worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.gas_radon_dense); } + if(worldObj.rand.nextFloat() * 2F <= this.heat / (float)this.maxHeat) { + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "smoke"); + data.setDouble("mY", 0.05); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, xCoord + 0.25 + worldObj.rand.nextDouble() * 0.5, yCoord + 1, zCoord + 0.25 + worldObj.rand.nextDouble() * 0.5), + new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.5, yCoord + 1, zCoord + 0.5, 20)); + MainRegistry.proxy.effectNT(data); + } + if(this.progress >= this.maxProgress) { worldObj.setBlock(xCoord, yCoord, zCoord, ModBlocks.block_graphite_plutonium, this.getBlockMetadata() & 7, 3); } } + } private void dissipateHeat() { this.heat -= (this.getBlockMetadata() & 4) == 4 ? heat * 0.065 : heat * 0.05; //remove 5% of the stored heat per tick; 6.5% for windscale } - private void react() { + private int react() { int reaction = (int) (this.neutrons * (1D - ((double)this.heat / (double)this.maxHeat) * 0.5D)); //max heat reduces reaction by 50% due to thermal expansion this.lastNeutrons = this.neutrons; this.neutrons = 0; + int lastProgress = this.progress; + this.progress += reaction; if(reaction <= 0) - return; + return lastProgress; this.heat += reaction; for(int i = 0; i < 12; i++) this.castRay((int) Math.max(reaction * 0.25, 1), 5); + + return lastProgress; + } + + private void checkRedstone(int lastProgress) { + int lastLevel = MathHelper.clamp_int((lastProgress * 16) / maxProgress, 0, 15); + int newLevel = MathHelper.clamp_int((progress * 16) / maxProgress, 0, 15); + if(lastLevel != newLevel) + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, this.getBlockType()); } private void transmute() { diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java index 3a8f715f1..344464db8 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityCraneConsole.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.List; - import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.extprop.HbmPlayerProps; @@ -10,10 +8,14 @@ import com.hbm.items.machine.ItemRBMKRod; import com.hbm.packet.NBTPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.INBTPacketReceiver; - +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -23,11 +25,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraftforge.common.util.ForgeDirection; -import cpw.mods.fml.common.Optional; -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 java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityCraneConsole extends TileEntity implements INBTPacketReceiver, SimpleComponent { @@ -341,7 +339,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return "rbmk_crane"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] move(Context context, Arguments args) { if(setUpCrane == true) { @@ -371,7 +369,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] load(Context context, Arguments args) { if (setUpCrane == true) { @@ -381,7 +379,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"Crane not found"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { @@ -390,7 +388,7 @@ public class TileEntityCraneConsole extends TileEntity implements INBTPacketRece return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(loadedItem != null && loadedItem.getItem() instanceof ItemRBMKRod) { 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 2674b87bf..9e7b3d63e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBase.java @@ -1,14 +1,8 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.lwjgl.opengl.GL11; - +import api.hbm.fluid.IFluidConductor; +import api.hbm.fluid.IFluidConnector; +import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.blocks.machine.rbmk.RBMKBase; import com.hbm.entity.effect.EntitySpear; @@ -25,10 +19,6 @@ import com.hbm.tileentity.TileEntityLoadedBase; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Compat; import com.hbm.util.I18nUtil; - -import api.hbm.fluid.IFluidConductor; -import api.hbm.fluid.IFluidConnector; -import api.hbm.fluid.IPipeNet; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -46,6 +36,9 @@ import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; import net.minecraftforge.client.event.RenderGameOverlayEvent; import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; + +import java.util.*; /** * Base class for all RBMK components, active or passive. Handles heat and the explosion sequence diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index f3457b1e3..654c7878e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -1,8 +1,8 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.fluid.IFluidUser; +import api.hbm.fluid.IPipeNet; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.interfaces.IControlReceiver; @@ -16,10 +16,6 @@ import com.hbm.inventory.gui.GUIRBMKBoiler; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; -import api.hbm.fluid.IFluidUser; -import api.hbm.fluid.IPipeNet; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -34,6 +30,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Vec3; import net.minecraft.world.World; +import java.util.ArrayList; +import java.util.List; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent { @@ -96,7 +95,7 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I this.trySubscribe(feed.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); for(DirPos pos : getOutputPos()) { - if(this.steam.getFill() > 0) this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.steam.getFill() > 0) this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -333,35 +332,41 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return "rbmk_boiler"; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getSteamMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getWaterMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { FluidType type = steam.getTankType(); @@ -370,21 +375,23 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I else if(type == Fluids.HOTSTEAM) {type_1 = "1";} else if(type == Fluids.SUPERHOTSTEAM) {type_1 = "2";} else if(type == Fluids.ULTRAHOTSTEAM) {type_1 = "3";} - else {type_1 = "Unknown Error";} - return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1}; + else {type_1 = "Steam out-of-bounds";} + return new Object[] {heat, steam.getFill(), steam.getMaxFill(), feed.getFill(), feed.getMaxFill(), type_1, xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { FluidType type = steam.getTankType(); - if(type == Fluids.STEAM) {return new Object[] {"0"};} - else if(type == Fluids.HOTSTEAM) {return new Object[] {"1"};} - else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {"2"};} - else if(type == Fluids.ULTRAHOTSTEAM) {return new Object[] {"3"};} + if(type == Fluids.STEAM) {return new Object[] {0};} + else if(type == Fluids.HOTSTEAM) {return new Object[] {1};} + else if(type == Fluids.SUPERHOTSTEAM) {return new Object[] {2};} + else if(type == Fluids.ULTRAHOTSTEAM) {return new Object[] {3};} else {return new Object[] {"Unknown Error"};} } + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") public Object[] setSteamType(Context context, Arguments args) { int type = args.checkInteger(0); if(type > 3) { @@ -394,16 +401,20 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I } if(type == 0) { steam.setTankType(Fluids.STEAM); - return new Object[] {"true"}; + steam.setFill(0); //too lazy to add a ton of additional code to divide the fill amount, fuck your steam + return new Object[] {true}; } else if(type == 1) { steam.setTankType(Fluids.HOTSTEAM); - return new Object[] {"true"}; + steam.setFill(0); + return new Object[] {true}; } else if(type == 2) { steam.setTankType(Fluids.SUPERHOTSTEAM); - return new Object[] {"true"}; + steam.setFill(0); + return new Object[] {true}; } else { steam.setTankType(Fluids.ULTRAHOTSTEAM); - return new Object[] {"true"}; + steam.setFill(0); + return new Object[] {true}; } } 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 f44cfb151..4ce54e100 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKConsole.java @@ -3,6 +3,7 @@ package com.hbm.tileentity.machine.rbmk; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Set; import com.hbm.interfaces.IControlReceiver; @@ -389,7 +390,7 @@ public class TileEntityRBMKConsole extends TileEntityMachineBase implements ICon short col = this.data.getShort("color"); if(col >= 0 && col < RBMKColor.values().length) - stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control." + RBMKColor.values()[col].name().toLowerCase())); + stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("rbmk.control." + RBMKColor.values()[col].name().toLowerCase(Locale.US))); } case CONTROL_AUTO: diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java index 40966dc5c..945638b7e 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControl.java @@ -1,16 +1,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; - +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.nbt.NBTTagCompound; - -import cpw.mods.fml.common.Optional; 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.nbt.NBTTagCompound; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase implements SimpleComponent { @@ -128,32 +126,37 @@ public abstract class TileEntityRBMKControl extends TileEntityRBMKSlottedBase im return "rbmk_control_rod"; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {getMult() * 100}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel * 100}; } + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, getMult() * 100, targetLevel * 100}; + return new Object[] {heat, getMult() * 100, targetLevel * 100, xCoord, yCoord, zCoord}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] setLevel(Context context, Arguments args) { double newLevel = args.checkDouble(0)/100.0; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java index d9fb3bfe0..f22e00b47 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKControlManual.java @@ -133,7 +133,7 @@ public class TileEntityRBMKControlManual extends TileEntityRBMKControl implement return data; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getColor(Context context, Arguments args) { return new Object[] {this.color}; diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 476c0d967..8c15cd8d7 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java @@ -1,7 +1,5 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.List; - import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.fluid.FluidType; @@ -9,16 +7,17 @@ import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; - +import cpw.mods.fml.common.Optional; +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.Entity; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.DamageSource; -import cpw.mods.fml.common.Optional; -import li.cil.oc.api.machine.Arguments; -import li.cil.oc.api.machine.Callback; -import li.cil.oc.api.machine.Context; + +import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAcceptor, IFluidStandardReceiver, SimpleComponent { @@ -150,27 +149,33 @@ public class TileEntityRBMKCooler extends TileEntityRBMKBase implements IFluidAc return "rbmk_cooler"; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[]{heat}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCryo(Context context, Arguments args) { return new Object[]{tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCryoMax(Context context, Arguments args) { return new Object[]{tank.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[]{heat, tank.getFill(), tank.getMaxFill()}; + return new Object[]{heat, tank.getFill(), tank.getMaxFill(), xCoord, yCoord, zCoord}; } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java index 15469487b..e9699b87f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKHeater.java @@ -1,8 +1,6 @@ package com.hbm.tileentity.machine.rbmk; -import java.util.ArrayList; -import java.util.List; - +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.interfaces.IFluidAcceptor; @@ -18,20 +16,21 @@ import com.hbm.inventory.gui.GUIRBMKHeater; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import cpw.mods.fml.common.Optional; -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 java.util.ArrayList; +import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, SimpleComponent { @@ -87,7 +86,7 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I this.trySubscribe(feed.getTankType(), worldObj, xCoord, yCoord - 1, zCoord, Library.NEG_Y); for(DirPos pos : getOutputPos()) { - if(this.steam.getFill() > 0) this.sendFluid(steam.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.steam.getFill() > 0) this.sendFluid(steam, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -281,51 +280,57 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return "rbmk_heater"; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFill(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFillMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getExport(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getExportMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { - return new Object[] {feed.getTankType().getID()}; + return new Object[] {feed.getTankType().getName()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { - return new Object[] {steam.getTankType().getID()}; + return new Object[] {steam.getTankType().getName()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getID(), steam.getTankType().getID()}; + return new Object[] {heat, feed.getFill(), feed.getMaxFill(), steam.getFill(), steam.getMaxFill(), feed.getTankType().getName(), steam.getTankType().getName(), xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java index 85ae56fce..8dbaa6360 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutgasser.java @@ -1,5 +1,6 @@ package com.hbm.tileentity.machine.rbmk; +import api.hbm.fluid.IFluidStandardSender; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.inventory.FluidStack; @@ -12,8 +13,6 @@ import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Tuple.Pair; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardSender; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -55,7 +54,7 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement } for(DirPos pos : getOutputPos()) { - if(this.gas.getFill() > 0) this.sendFluid(gas.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(this.gas.getFill() > 0) this.sendFluid(gas, worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } } @@ -227,28 +226,40 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return "rbmk_outgasser"; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getGas(Context context, Arguments args) { return new Object[] {gas.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getGasMax(Context context, Arguments args) { return new Object[] {gas.getMaxFill()}; } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getGasType(Context context, Arguments args) { + return new Object[] {gas.getTankType().getID()}; + } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getProgress(Context context, Arguments args) { return new Object[] {progress}; } - @Callback + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { - return new Object[] {gas.getFill(), gas.getMaxFill(), progress}; + return new Object[] {gas.getFill(), gas.getMaxFill(), progress, gas.getTankType().getID(), xCoord, yCoord, zCoord}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java index f852e31bd..2c047cfd1 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKOutlet.java @@ -54,7 +54,7 @@ public class TileEntityRBMKOutlet extends TileEntityLoadedBase implements IFluid } fillFluidInit(this.steam.getTankType()); - this.sendFluidToAll(steam.getTankType(), this); + this.sendFluidToAll(steam, this); } } 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 7f8e7e5a4..f13f34952 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -11,7 +11,6 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Compat; - import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -385,25 +384,25 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return "rbmk_fuel_rod"; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getFluxSlow(Context context, Arguments args) { return new Object[] {fluxSlow}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getFluxFast(Context context, Arguments args) { return new Object[] {fluxFast}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -411,17 +410,8 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM } return new Object[] {"N/A"}; } - - @Callback - @Optional.Method(modid = "OpenComputers") - public Object[] getFuelType(Context context, Arguments args) { - if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { - return new Object[] {slots[0].getItem()}; - } - return new Object[] {"N/A"}; - } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -430,7 +420,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getCoreHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -439,7 +429,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getSkinHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -448,22 +438,37 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 16) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; Object OC_poison_buf; - Object OC_fuelType; + Object OC_hull_buf; + Object OC_core_buf; if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { OC_enrich_buf = ItemRBMKRod.getEnrichment(slots[0]); OC_poison_buf = ItemRBMKRod.getPoison(slots[0]); - OC_fuelType = slots[0].getItem(); + OC_hull_buf = ItemRBMKRod.getHullHeat(slots[0]); + OC_core_buf = ItemRBMKRod.getCoreHeat(slots[0]); } else { OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; - OC_fuelType = "N/A"; + OC_hull_buf = "N/A"; + OC_core_buf = "N/A"; } - return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, OC_fuelType}; + return new Object[] {heat, OC_hull_buf, OC_core_buf, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getModerated(Context context, Arguments args) { + return new Object[] {((RBMKRod)this.getBlockType()).moderated}; + } + + @Callback(direct = true, limit = 16) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index 1806d06a7..baa22c2c3 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java @@ -4,16 +4,21 @@ import com.hbm.inventory.container.ContainerRBMKStorage; import com.hbm.inventory.gui.GUIRBMKStorage; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; - +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements IRBMKLoadable, SimpleComponent { public TileEntityRBMKStorage() { super(12); @@ -86,6 +91,35 @@ public class TileEntityRBMKStorage extends TileEntityRBMKSlottedBase implements slots[0] = null; } + @Override + public String getComponentName() { + return "rbmk_storage_rod"; + } + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getStored(Context context, Arguments args) { + return new Object[] {slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11]}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[] {heat, slots[0], slots[1], slots[2], slots[3], slots[4], slots[5], slots[6], slots[7], slots[8], slots[9], slots[10], slots[11], xCoord, yCoord, zCoord}; + } + @Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return new ContainerRBMKStorage(player.inventory, this); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java index 9c26e28d9..360d25ebe 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityBarrel.java @@ -1,10 +1,6 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import api.hbm.fluid.*; import com.hbm.blocks.ModBlocks; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidSource; @@ -20,15 +16,15 @@ import com.hbm.saveddata.TomSaveData; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidConductor; -import api.hbm.fluid.IFluidConnector; -import api.hbm.fluid.IFluidStandardTransceiver; -import api.hbm.fluid.IPipeNet; -import api.hbm.fluid.PipeNet; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; @@ -36,10 +32,17 @@ import net.minecraft.inventory.Container; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; -public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) +public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcceptor, IFluidSource, SimpleComponent, IFluidStandardTransceiver, IPersistentNBT, IGUIProvider { public FluidTank tank; public short mode = 0; @@ -47,6 +50,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public int age = 0; public List list = new ArrayList(); protected boolean sendingBrake = false; + public byte lastRedstone = 0; public TileEntityBarrel() { super(6); @@ -63,18 +67,29 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc return "container.barrel"; } + public byte getComparatorPower() { + if(tank.getFill() == 0) return 0; + double frac = (double) tank.getFill() / (double) tank.getMaxFill() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); + } + @Override public void updateEntity() { if(!worldObj.isRemote) { - + + byte comp = this.getComparatorPower(); //do comparator shenanigans + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + tank.setType(0, 1, slots); tank.loadTank(2, 3, slots); tank.unloadTank(4, 5, slots); tank.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); this.sendingBrake = true; - tank.setFill(transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + tank.setFill(transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; age++; @@ -105,10 +120,12 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc }; } - protected static int transmitFluidFairly(World world, FluidType type, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { + protected static int transmitFluidFairly(World world, FluidTank tank, IFluidConnector that, int fill, boolean connect, boolean send, DirPos[] connections) { Set nets = new HashSet(); Set consumers = new HashSet(); + FluidType type = tank.getTankType(); + int pressure = tank.getPressure(); for(DirPos pos : connections) { @@ -133,6 +150,8 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc if(fill > 0 && send) { List con = new ArrayList(); con.addAll(consumers); + + con.removeIf(x -> x == null || !(x instanceof TileEntity) || ((TileEntity)x).isInvalid()); if(PipeNet.trackingInstances == null) { PipeNet.trackingInstances = new ArrayList(); @@ -143,7 +162,7 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc if(x instanceof PipeNet) PipeNet.trackingInstances.add((PipeNet) x); }); - fill = (int) PipeNet.fairTransfer(con, type, fill); + fill = (int) PipeNet.fairTransfer(con, type, pressure, fill); } //resubscribe to buffered nets, if necessary @@ -349,4 +368,33 @@ public class TileEntityBarrel extends TileEntityMachineBase implements IFluidAcc public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIBarrel(player.inventory, this); } + + @Override + public String getComponentName() { + return "ntm_fluid_tank"; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluidStored(Context context, Arguments args) { + return new Object[] {tank.getFill()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxStored(Context context, Arguments args) { + return new Object[] {tank.getMaxFill()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getTypeStored(Context context, Arguments args) { + return new Object[] {tank.getTankType().getName()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java index aec9bf3f2..23e079344 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateIron.java @@ -31,6 +31,4 @@ public class TileEntityCrateIron extends TileEntityCrateBase { public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICrateIron(player.inventory, this); } - - } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java index 940f689c6..abb9cf0cb 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateSteel.java @@ -8,10 +8,9 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.world.World; -public class TileEntityCrateSteel extends TileEntityCrateBase implements ISidedInventory { +public class TileEntityCrateSteel extends TileEntityCrateBase { public TileEntityCrateSteel() { super(54); diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java new file mode 100644 index 000000000..c22a6e669 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityCrateTemplate.java @@ -0,0 +1,34 @@ +package com.hbm.tileentity.machine.storage; + +import com.hbm.inventory.container.ContainerCrateTemplate; +import com.hbm.inventory.gui.GUICrateTemplate; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.world.World; + +public class TileEntityCrateTemplate extends TileEntityCrateBase { + + public TileEntityCrateTemplate() { + super(27); + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.customName : "container.crateTemplate"; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCrateTemplate(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICrateTemplate(player.inventory, this); + } +} 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 5704599fa..2d05bbf25 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java @@ -1,10 +1,8 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - +import api.hbm.energy.*; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.bomb.LaunchPad; import com.hbm.blocks.machine.MachineBattery; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; @@ -12,13 +10,6 @@ import com.hbm.lib.Library; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; - -import api.hbm.energy.IBatteryItem; -import api.hbm.energy.IEnergyConductor; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyUser; -import api.hbm.energy.IPowerNet; -import api.hbm.energy.PowerNet; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,6 +17,7 @@ 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.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; @@ -36,6 +28,11 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) public class TileEntityMachineBattery extends TileEntityMachineBase implements IEnergyUser, IPersistentNBT, SimpleComponent, IGUIProvider { @@ -222,7 +219,10 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I //if it's just a consumer, buffer it as a subscriber } else if(te instanceof IEnergyConnector) { - consumers.add((IEnergyConnector) te); + IEnergyConnector con = (IEnergyConnector) te; + if(con.canConnect(dir.getOpposite())) { + consumers.add((IEnergyConnector) te); + } } } @@ -230,6 +230,16 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(this.power > 0 && (mode == mode_buffer || mode == mode_output)) { List con = new ArrayList(); con.addAll(consumers); + + if(PowerNet.trackingInstances == null) { + PowerNet.trackingInstances = new ArrayList(); + } + PowerNet.trackingInstances.clear(); + + nets.forEach(x -> { + if(x instanceof PowerNet) PowerNet.trackingInstances.add((PowerNet) x); + }); + this.power = PowerNet.fairTransfer(con, this.power); } @@ -259,9 +269,17 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I if(mode == mode_buffer || mode == mode_output) { if(te instanceof IEnergyConnector) { IEnergyConnector con = (IEnergyConnector) te; + + long max = getMaxTransfer(); + long toTransfer = Math.min(max, this.power); + long remainder = this.power - toTransfer; + this.power = toTransfer; + long oldPower = this.power; long transfer = this.power - con.transferPower(this.power); this.power = oldPower - transfer; + + power += remainder; } } @@ -281,6 +299,10 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I } } } + + public long getMaxTransfer() { + return this.getMaxPower(); + } @Override public void networkUnpack(NBTTagCompound nbt) { @@ -373,22 +395,28 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I // do some opencomputer stuff @Override public String getComponentName() { - return "ntm_energy_storage"; // need a way to somehow detect the first word of the energy storage block so people wont get confused when it comes to multiple energy storage blocks + return "ntm_energy_storage"; //ok if someone else can figure out how to do this that'd be nice (change the component name based on the type of storage block) } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") - public Object[] getEnergyStored(Context context, Arguments args) { - return new Object[] {getPower()}; + public Object[] getEnergyStored(Context context, Arguments args) { //TODO for gamma: when ready remove these deprecated functions in all components + return new Object[] {getPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { - return new Object[] {getMaxPower()}; + return new Object[] {getMaxPower(), "Consider switching to the main function 'getEnergyInfo', as this function is deprecated and will soon be removed."}; } - @Callback + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getEnergyInfo(Context context, Arguments args) { + return new Object[] {getPower(), getMaxPower()}; + } + + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { return new Object[] {getPower(), getMaxPower()}; diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java index 541e4c9ad..b936d41b8 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFENSU.java @@ -23,18 +23,40 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { if(!worldObj.isRemote) { - this.transmitPower(); + long prevPower = this.power; - power = Library.chargeTEFromItems(slots, 0, power, getMaxPower()); power = Library.chargeItemsFromTE(slots, 1, power, getMaxPower()); + ////////////////////////////////////////////////////////////////////// + this.transmitPowerFairly(); + ////////////////////////////////////////////////////////////////////// + + byte comp = this.getComparatorPower(); + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + + power = Library.chargeTEFromItems(slots, 0, power, getMaxPower()); + + long avg = (power / 2 + prevPower / 2); + this.delta = avg - this.log[0]; + + for(int i = 1; i < this.log.length; i++) { + this.log[i - 1] = this.log[i]; + } + + this.log[19] = avg; + NBTTagCompound nbt = new NBTTagCompound(); - nbt.setLong("power", power); + nbt.setLong("power", avg); + nbt.setLong("delta", delta); nbt.setShort("redLow", redLow); nbt.setShort("redHigh", redHigh); nbt.setByte("priority", (byte) this.priority.ordinal()); - this.networkPack(nbt, 250); - } else { + this.networkPack(nbt, 20); + } + + if(worldObj.isRemote) { this.prevRotation = this.rotation; this.rotation += this.getSpeed(); @@ -42,16 +64,10 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { rotation -= 360; prevRotation -= 360; } - - for(int i = 1; i < this.log.length; i++) { - this.log[i - 1] = this.log[i]; - } - - this.log[19] = this.power; } } - protected void transmitPower() { + @Deprecated protected void transmitPower() { short mode = (short) this.getRelevantMode(); @@ -127,8 +143,7 @@ public class TileEntityMachineFENSU extends TileEntityMachineBattery { @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } } diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 0036b77d2..9332cb750 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -1,13 +1,12 @@ package com.hbm.tileentity.machine.storage; -import java.util.ArrayList; -import java.util.List; -import java.util.Random; - +import api.hbm.fluid.IFluidStandardTransceiver; import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.handler.MultiblockHandlerXR; +import com.hbm.handler.pollution.PollutionHandler; +import com.hbm.handler.pollution.PollutionHandler.PollutionType; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.interfaces.IFluidContainer; import com.hbm.interfaces.IFluidSource; @@ -21,6 +20,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Amat; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Gaseous_ART; +import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Leaded; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUIMachineFluidTank; import com.hbm.inventory.fluid.Fluids; @@ -33,24 +33,34 @@ import com.hbm.tileentity.IOverpressurable; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.I18nUtil; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; - -import api.hbm.fluid.IFluidStandardTransceiver; +import cpw.mods.fml.common.Optional; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +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.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; import net.minecraft.world.Explosion; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "opencomputers")}) +public class TileEntityMachineFluidTank extends TileEntityMachineBase implements IFluidContainer, SimpleComponent, IFluidSource, IFluidAcceptor, IFluidStandardTransceiver, IPersistentNBT, IOverpressurable, IGUIProvider, IRepairable { public FluidTank tank; public short mode = 0; @@ -58,7 +68,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public boolean hasExploded = false; protected boolean sendingBrake = false; public boolean onFire = false; - + public byte lastRedstone = 0; public Explosion lastExplosion = null; public int age = 0; @@ -73,7 +83,13 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements public String getName() { return "container.fluidtank"; } - + + public byte getComparatorPower() { + if(tank.getFill() == 0) return 0; + double frac = (double) tank.getFill() / (double) tank.getMaxFill() * 15D; + return (byte) (MathHelper.clamp_int((int) frac + 1, 0, 15)); + } + @Override public void updateEntity() { @@ -102,7 +118,7 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements age = 0; this.sendingBrake = true; - tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank.getTankType(), this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); + tank.setFill(TileEntityBarrel.transmitFluidFairly(worldObj, tank, this, tank.getFill(), this.mode == 0 || this.mode == 1, this.mode == 1 || this.mode == 2, getConPos())); this.sendingBrake = false; if((mode == 1 || mode == 2) && (age == 9 || age == 19)) @@ -111,7 +127,12 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements tank.loadTank(2, 3, slots); tank.setType(0, 1, slots); } - + + byte comp = this.getComparatorPower(); //comparator shit + if(comp != this.lastRedstone) + this.markDirty(); + this.lastRedstone = comp; + if(tank.getFill() > 0) { if(tank.getTankType().isAntimatter()) { new ExplosionVNT(worldObj, xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, 5F).makeAmat().setBlockAllocator(null).setBlockProcessor(null).explode(); @@ -174,6 +195,11 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements Random rand = worldObj.rand; ParticleUtil.spawnGasFlame(worldObj, xCoord + rand.nextDouble(), yCoord + 0.5 + rand.nextDouble(), zCoord + rand.nextDouble(), rand.nextGaussian() * 0.2, 0.1, rand.nextGaussian() * 0.2); + if(worldObj.getTotalWorldTime() % 20 == 0) { + PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * 50); + if(type.hasTrait(FT_Leaded.class)) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.HEAVYMETAL, PollutionHandler.HEAVY_METAL_PER_SECOND * 50); + } + } else if(type.hasTrait(FT_Gaseous.class) || type.hasTrait(FT_Gaseous_ART.class)) { if(worldObj.getTotalWorldTime() % 5 == 0) { @@ -354,18 +380,20 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements } @Override - public long transferFluid(FluidType type, long fluid) { - long toTransfer = Math.min(getDemand(type), fluid); + public long transferFluid(FluidType type, int pressure, long fluid) { + long toTransfer = Math.min(getDemand(type, pressure), fluid); tank.setFill(tank.getFill() + (int) toTransfer); return fluid - toTransfer; } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { if(this.mode == 2 || this.mode == 3 || this.sendingBrake) return 0; + if(tank.getPressure() != pressure) return 0; + return type == tank.getTankType() ? tank.getMaxFill() - tank.getFill() : 0; } @@ -438,4 +466,33 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements this.hasExploded = false; this.markChanged(); } -} + + @Override + public String getComponentName() { + return "ntm_tank"; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getFluidStored(Context context, Arguments args) { + return new Object[] {tank.getFill()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getMaxStored(Context context, Arguments args) { + return new Object[] {tank.getMaxFill()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getTypeStored(Context context, Arguments args) { + return new Object[] {tank.getTankType().getName()}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getInfo(Context context, Arguments args) { + return new Object[]{tank.getFill(), tank.getMaxFill(), tank.getTankType().getName()}; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java index 2b38ee9a0..61af46838 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMassStorage.java @@ -21,6 +21,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa private int stack = 0; public boolean output = false; private int capacity; + public int redstone = 0; @SideOnly(Side.CLIENT) public ItemStack type; @@ -43,6 +44,13 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa if(!worldObj.isRemote) { + int newRed = this.getStockpile() * 15 / this.capacity; + + if(newRed != this.redstone) { + this.redstone = newRed; + this.markDirty(); + } + if(slots[0] != null && slots[0].getItem() == ModItems.fluid_barrel_infinite) { this.stack = this.getCapacity(); } @@ -132,6 +140,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa this.stack = nbt.getInteger("stack"); this.output = nbt.getBoolean("output"); this.capacity = nbt.getInteger("capacity"); + this.redstone = nbt.getByte("redstone"); if(this.capacity <= 0) { this.capacity = 10_000; @@ -144,6 +153,7 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa nbt.setInteger("stack", stack); nbt.setBoolean("output", output); nbt.setInteger("capacity", capacity); + nbt.setByte("redstone", (byte) redstone); } @Override diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java index 0949504e7..7346c5066 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityConverterRfHe.java @@ -40,7 +40,7 @@ public class TileEntityConverterRfHe extends TileEntityLoadedBase implements IEn return 0; if(simulate) - return 0; + return maxReceive; recursionBrake = true; diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java new file mode 100644 index 000000000..ba50abcea --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityCraneGrabber.java @@ -0,0 +1,195 @@ +package com.hbm.tileentity.network; + +import java.util.List; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.network.CraneInserter; +import com.hbm.entity.item.EntityMovingItem; +import com.hbm.interfaces.IControlReceiver; +import com.hbm.inventory.container.ContainerCraneGrabber; +import com.hbm.inventory.gui.GUICraneGrabber; +import com.hbm.items.ModItems; +import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.IGUIProvider; +import com.hbm.tileentity.TileEntityMachineBase; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityCraneGrabber extends TileEntityMachineBase implements IGUIProvider, IControlReceiver { + + public boolean isWhitelist = false; + public ModulePatternMatcher matcher; + + public TileEntityCraneGrabber() { + super(11); + this.matcher = new ModulePatternMatcher(9); + } + + public void nextMode(int i) { + this.matcher.nextMode(worldObj, slots[i], i); + } + + @Override + public String getName() { + return "container.craneGrabber"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + + int delay = 20; + + if(slots[10] != null && slots[10].getItem() == ModItems.upgrade_ejector) { + switch(slots[10].getItemDamage()) { + case 0: delay = 10; break; + case 1: delay = 5; break; + case 2: delay = 2; break; + } + } + + if(worldObj.getTotalWorldTime() % delay == 0 && !this.worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { + int amount = 1; + + if(slots[9] != null && slots[9].getItem() == ModItems.upgrade_stack) { + switch(slots[9].getItemDamage()) { + case 0: amount = 4; break; + case 1: amount = 16; break; + case 2: amount = 64; break; + } + } + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + TileEntity te = worldObj.getTileEntity(xCoord - dir.offsetX, yCoord - dir.offsetY, zCoord - dir.offsetZ); + + int[] access = null; + ISidedInventory sided = null; + + if(te instanceof ISidedInventory) { + sided = (ISidedInventory) te; + access = CraneInserter.masquerade(sided, dir.ordinal()); + } + + if(te instanceof IInventory) { + + /* + * due to this really primitive way of just offsetting the AABB instead of contracting it, there's a wacky + * edge-case where it's possible to feed the grabber by inserting items from the side if there's a triple + * lane conveyor in front of the grabbing end. this is such a non-issue that i'm not going to bother trying + * to fuck with the AABB further, since that's just a major headache for no practical benefit + */ + double reach = 1D; + if(this.getBlockMetadata() > 1) { //ignore if pointing up or down + Block b = worldObj.getBlock(xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + if(b == ModBlocks.conveyor_double) reach = 0.5D; + if(b == ModBlocks.conveyor_triple) reach = 0.33D; + } + + double x = xCoord + dir.offsetX * reach; + double y = yCoord + dir.offsetY * reach; + double z = zCoord + dir.offsetZ * reach; + List items = worldObj.getEntitiesWithinAABB(EntityMovingItem.class, AxisAlignedBB.getBoundingBox(x + 0.1875D, y + 0.1875D, z + 0.1875D, x + 0.8125D, y + 0.8125D, z + 0.8125D)); + + for(EntityMovingItem item : items) { + ItemStack stack = item.getItemStack(); + boolean match = this.matchesFilter(stack); + if(this.isWhitelist && !match || !this.isWhitelist && match) continue; + + ItemStack copy = stack.copy(); + int toAdd = Math.min(stack.stackSize, amount); + copy.stackSize = toAdd; + ItemStack ret = CraneInserter.addToInventory((IInventory) te, access, copy, dir.ordinal()); + int didAdd = toAdd - (ret != null ? ret.stackSize : 0); + stack.stackSize -= didAdd; + + if(stack.stackSize <= 0) { + item.setDead(); + } + + amount -= didAdd; + if(amount <= 0) { + break; + } + } + } + } + + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("isWhitelist", isWhitelist); + this.matcher.writeToNBT(data); + this.networkPack(data, 15); + } + } + + public void networkUnpack(NBTTagCompound nbt) { + this.isWhitelist = nbt.getBoolean("isWhitelist"); + this.matcher.modes = new String[this.matcher.modes.length]; + this.matcher.readFromNBT(nbt); + } + + public boolean matchesFilter(ItemStack stack) { + + for(int i = 0; i < 9; i++) { + ItemStack filter = slots[i]; + + if(filter != null && this.matcher.isValidForFilter(filter, i, stack)) { + return true; + } + } + + return false; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new ContainerCraneGrabber(player.inventory, this); + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + return new GUICraneGrabber(player.inventory, this); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.isWhitelist = nbt.getBoolean("isWhitelist"); + this.matcher.readFromNBT(nbt); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("isWhitelist", this.isWhitelist); + this.matcher.writeToNBT(nbt); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20; + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("whitelist")) { + this.isWhitelist = !this.isWhitelist; + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java new file mode 100644 index 000000000..6e1a226dd --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityFluidValve.java @@ -0,0 +1,27 @@ +package com.hbm.tileentity.network; + +import api.hbm.fluid.PipeNet; + +public class TileEntityFluidValve extends TileEntityPipeBaseNT { + + @Override + public boolean canUpdate() { + return this.worldObj != null && this.getBlockMetadata() == 1 && super.canUpdate(); + } + + public void updateState() { + + if(this.getBlockMetadata() == 0 && this.network != null) { + this.network.destroy(); + this.network = null; + } + + if(this.getBlockMetadata() == 1) { + this.connect(); + + if(this.getPipeNet(type) == null) { + new PipeNet(type).joinLink(this); + } + } + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java index 71e0c0104..c238da297 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeBaseNT.java @@ -107,16 +107,16 @@ public class TileEntityPipeBaseNT extends TileEntity implements IFluidConductor } @Override - public long transferFluid(FluidType type, long fluid) { + public long transferFluid(FluidType type, int pressure, long fluid) { if(this.network == null) return fluid; - return this.network.transferFluid(fluid); + return this.network.transferFluid(fluid, pressure); } @Override - public long getDemand(FluidType type) { + public long getDemand(FluidType type, int pressure) { return 0; } diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPipeExhaust.java b/src/main/java/com/hbm/tileentity/network/TileEntityPipeExhaust.java new file mode 100644 index 000000000..992aca682 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPipeExhaust.java @@ -0,0 +1,115 @@ +package com.hbm.tileentity.network; + +import com.hbm.inventory.fluid.FluidType; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.util.Compat; + +import api.hbm.fluid.IFluidConductor; +import api.hbm.fluid.IPipeNet; +import api.hbm.fluid.PipeNet; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityPipeExhaust extends TileEntity implements IFluidConductor { + + public IPipeNet[] nets = new IPipeNet[3]; + + public FluidType[] getSmokes() { + return new FluidType[] {Fluids.SMOKE, Fluids.SMOKE_LEADED, Fluids.SMOKE_POISON}; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote && canUpdate()) { + + for(int i = 0; i < 3; i++) nets[i] = null; + + for(FluidType type : getSmokes()) { + this.connect(type); + + if(this.getPipeNet(type) == null) { + this.setPipeNet(type, new PipeNet(type).joinLink(this)); + } + } + } + } + + protected void connect(FluidType type) { + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + + TileEntity te = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + + if(te instanceof IFluidConductor) { + + IFluidConductor conductor = (IFluidConductor) te; + + if(!conductor.canConnect(type, dir.getOpposite())) + continue; + + if(this.getPipeNet(type) == null && conductor.getPipeNet(type) != null) { + conductor.getPipeNet(type).joinLink(this); + } + + if(this.getPipeNet(type) != null && conductor.getPipeNet(type) != null && this.getPipeNet(type) != conductor.getPipeNet(type)) { + conductor.getPipeNet(type).joinNetworks(this.getPipeNet(type)); + } + } + } + } + + @Override + public void invalidate() { + super.invalidate(); + + if(!worldObj.isRemote) { + + for(int i = 0; i < 3; i++) { + if(nets[i] != null) { + nets[i].destroy(); + } + } + } + } + @Override + public boolean canUpdate() { + + if(this.isInvalid()) return false; + + for(IPipeNet net : nets) { + if(net == null || !net.isValid()) { + return true; + } + } + + return false; + } + + @Override + public boolean canConnect(FluidType type, ForgeDirection dir) { + return dir != ForgeDirection.UNKNOWN && (type == Fluids.SMOKE || type == Fluids.SMOKE_LEADED || type == Fluids.SMOKE_POISON); + } + + @Override + public long getDemand(FluidType type, int pressure) { + return 0; + } + + @Override + public IPipeNet getPipeNet(FluidType type) { + + if(type == Fluids.SMOKE) return nets[0]; + if(type == Fluids.SMOKE_LEADED) return nets[1]; + if(type == Fluids.SMOKE_POISON) return nets[2]; + return null; + } + + @Override + public void setPipeNet(FluidType type, IPipeNet network) { + + if(type == Fluids.SMOKE) nets[0] = network; + if(type == Fluids.SMOKE_LEADED) nets[1] = network; + if(type == Fluids.SMOKE_POISON) nets[2] = network; + } +} diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java index c55fe51d7..09e335094 100644 --- a/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java +++ b/src/main/java/com/hbm/tileentity/network/TileEntityPylonBase.java @@ -19,13 +19,13 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { public List connected = new ArrayList(); - public static boolean canConnect(TileEntityPylonBase first, TileEntityPylonBase second) { + public static int canConnect(TileEntityPylonBase first, TileEntityPylonBase second) { if(first.getConnectionType() != second.getConnectionType()) - return false; + return 1; if(first == second) - return false; + return 2; double len = Math.min(first.getMaxWireLength(), second.getMaxWireLength()); @@ -38,7 +38,7 @@ public abstract class TileEntityPylonBase extends TileEntityCableBaseNT { (secondPos.zCoord) - (firstPos.zCoord) ); - return len >= delta.lengthVector(); + return len >= delta.lengthVector() ? 0 : 3; } public void addConnection(int x, int y, int z) { diff --git a/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java new file mode 100644 index 000000000..809fec28f --- /dev/null +++ b/src/main/java/com/hbm/tileentity/network/TileEntityRadioTorchCounter.java @@ -0,0 +1,125 @@ +package com.hbm.tileentity.network; + +import com.hbm.interfaces.IControlReceiver; +import com.hbm.module.ModulePatternMatcher; +import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.Compat; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.util.ForgeDirection; + +public class TileEntityRadioTorchCounter extends TileEntityMachineBase implements IControlReceiver { + + public String[] channel; + public int[] lastCount; + public boolean polling = false; + public ModulePatternMatcher matcher; + + public TileEntityRadioTorchCounter() { + super(3); + this.channel = new String[3]; + for(int i = 0; i < 3; i++) this.channel[i] = ""; + this.lastCount = new int[3]; + this.matcher = new ModulePatternMatcher(3); + } + + @Override + public String getName() { + return "container.rttyCounter"; + } + + @Override + public void updateEntity() { + + if(!worldObj.isRemote) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()).getOpposite(); + + TileEntity tile = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ); + if(tile instanceof IInventory) { + IInventory inv = (IInventory) tile; + ItemStack[] invSlots = new ItemStack[inv.getSizeInventory()]; + for(int i = 0; i < invSlots.length; i++) invSlots[i] = inv.getStackInSlot(i); + + for(int i = 0; i < 3; i++) { + if(channel[i].isEmpty()) continue; + if(slots[i] == null) continue; + ItemStack pattern = slots[i]; + + int count = 0; + + for(int j = 0; j < invSlots.length; j++) { + if(invSlots[j] != null && matcher.isValidForFilter(pattern, i, invSlots[j])) { + count += invSlots[j].stackSize; + } + } + + if(this.polling || this.lastCount[i] != count) { + RTTYSystem.broadcast(worldObj, this.channel[i], count); + } + + this.lastCount[i] = count; + } + } + + NBTTagCompound data = new NBTTagCompound(); + data.setBoolean("polling", polling); + data.setIntArray("last", lastCount); + this.matcher.writeToNBT(data); + for(int i = 0; i < 3; i++) if(channel[i] != null) data.setString("c" + i, channel[i]); + this.networkPack(data, 15); + } + } + + public void networkUnpack(NBTTagCompound nbt) { + this.polling = nbt.getBoolean("polling"); + this.lastCount = nbt.getIntArray("last"); + this.matcher.modes = new String[this.matcher.modes.length]; + this.matcher.readFromNBT(nbt); + for(int i = 0; i < 3; i++) this.channel[i] = nbt.getString("c" + i); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + this.polling = nbt.getBoolean("p"); + for(int i = 0; i < 3; i++) { + this.channel[i] = nbt.getString("c" + i); + this.lastCount[i] = nbt.getInteger("l" + i); + } + this.matcher.readFromNBT(nbt); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + nbt.setBoolean("p", polling); + for(int i = 0; i < 3; i++) { + if(channel[i] != null) nbt.setString("c" + i, channel[i]); + nbt.setInteger("l" + i, lastCount[i]); + } + this.matcher.writeToNBT(nbt); + } + + @Override + public boolean hasPermission(EntityPlayer player) { + return this.isUseableByPlayer(player); + } + + @Override + public void receiveControl(NBTTagCompound data) { + if(data.hasKey("polling")) { + this.polling = !this.polling; + this.markChanged(); + } else { + System.out.println("guh"); + for(int i = 0; i < 3; i++) { + this.channel[i] = data.getString("c" + i); + } + this.markChanged(); + } + } +} diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 568431479..62580710e 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -3,13 +3,15 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.function.BiFunction; import com.hbm.blocks.BlockDummyable; import com.hbm.entity.logic.EntityBomber; import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.entity.missile.EntityMissileCustom; import com.hbm.entity.missile.EntitySiegeDropship; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; +import com.hbm.entity.train.EntityRailCarBase; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.CasingEjector; @@ -24,6 +26,7 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.particle.SpentCasing; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatExternal; import api.hbm.energy.IEnergyUser; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; @@ -272,17 +275,17 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple ForgeDirection rot = dir.getRotation(ForgeDirection.UP); //how did i even make this? what??? - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, dir.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, dir.getOpposite()); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, rot.getOpposite()); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, rot); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, rot); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, ForgeDirection.UNKNOWN); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, ForgeDirection.UNKNOWN); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, dir); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); } @Override @@ -353,7 +356,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBase proj = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.getKey(bullet)); + EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity, bullet.spread); @@ -592,8 +595,20 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e.isDead || !e.isEntityAlive()) return false; - + for(Class c : CompatExternal.turretTargetBlacklist) if(c.isAssignableFrom(e.getClass())) return false; + + for(Class c : CompatExternal.turretTargetCondition.keySet()) { + if(c.isAssignableFrom(e.getClass())) { + BiFunction lambda = CompatExternal.turretTargetCondition.get(c); + if(lambda != null) { + int result = lambda.apply(e, this); + if(result == -1) return false; + if(result == 1) return true; + } + } + } + List wl = getWhitelist(); if(wl != null) { @@ -613,6 +628,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof IAnimals) return true; if(e instanceof INpc) return true; + for(Class c : CompatExternal.turretTargetFriendly) if(c.isAssignableFrom(e.getClass())) return true; } if(targetMobs) { @@ -621,6 +637,7 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof EntityDragon) return false; if(e instanceof EntityDragonPart) return true; if(e instanceof IMob) return true; + for(Class c : CompatExternal.turretTargetHostile) if(c.isAssignableFrom(e.getClass())) return true; } if(targetMachines) { @@ -628,16 +645,19 @@ public abstract class TileEntityTurretBaseNT extends TileEntityMachineBase imple if(e instanceof EntityMissileBaseAdvanced) return true; if(e instanceof EntityMissileCustom) return true; if(e instanceof EntityMinecart) return true; + if(e instanceof EntityRailCarBase) return true; if(e instanceof EntityBomber) return true; if(e instanceof EntitySiegeDropship) return true; + for(Class c : CompatExternal.turretTargetMachine) if(c.isAssignableFrom(e.getClass())) return true; } - if(targetPlayers && e instanceof EntityPlayer) { + if(targetPlayers ) { if(e instanceof FakePlayer) return false; - return true; + if(e instanceof EntityPlayer) return true; + for(Class c : CompatExternal.turretTargetPlayer) if(c.isAssignableFrom(e.getClass())) return true; } return false; diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 5863b119f..01a63ffab 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -4,7 +4,7 @@ import java.util.ArrayList; import java.util.List; import com.hbm.blocks.BlockDummyable; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.interfaces.IFluidAcceptor; @@ -113,7 +113,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBase proj = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.getKey(conf)); + EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(conf)); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.overrideDamage = (float) (trait.getHeatEnergy() / 500_000F); @@ -161,23 +161,23 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset).getOpposite(); ForgeDirection rot = dir.getRotation(ForgeDirection.UP); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, ForgeDirection.SOUTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, ForgeDirection.SOUTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, ForgeDirection.NORTH); - this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, ForgeDirection.NORTH); - - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, ForgeDirection.SOUTH); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, ForgeDirection.SOUTH); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, ForgeDirection.WEST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, ForgeDirection.EAST); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, ForgeDirection.NORTH); - this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, ForgeDirection.NORTH); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, dir.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, dir.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, rot); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, rot); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, dir); + this.trySubscribe(worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); + + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * 0, dir.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * -1 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * -1 + rot.offsetZ * -1, dir.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * -2, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * -2, rot.getOpposite()); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 0 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 0 + rot.offsetZ * 1, rot); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 1 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 1 + rot.offsetZ * 1, rot); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * 0, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 0, dir); + this.trySubscribe(tank.getTankType(), worldObj, xCoord + dir.offsetX * 2 + rot.offsetX * -1, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * -1, dir); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java index c23f2595e..f6c95d847 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretRichard.java @@ -3,7 +3,7 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityBulletBaseNT; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.inventory.RecipesCommon.ComparableStack; @@ -155,7 +155,7 @@ public class TileEntityTurretRichard extends TileEntityTurretBaseNT { vec.rotateAroundZ((float) -this.rotationPitch); vec.rotateAroundY((float) -(this.rotationYaw + Math.PI * 0.5)); - EntityBulletBase proj = new EntityBulletBase(worldObj, BulletConfigSyncingUtil.getKey(bullet)); + EntityBulletBaseNT proj = new EntityBulletBaseNT(worldObj, BulletConfigSyncingUtil.getKey(bullet)); proj.setPositionAndRotation(pos.xCoord + vec.xCoord, pos.yCoord + vec.yCoord, pos.zCoord + vec.zCoord, 0.0F, 0.0F); proj.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, bullet.velocity * 0.75F, bullet.spread); diff --git a/src/main/java/com/hbm/util/AchievementHandler.java b/src/main/java/com/hbm/util/AchievementHandler.java new file mode 100644 index 000000000..3d395a43e --- /dev/null +++ b/src/main/java/com/hbm/util/AchievementHandler.java @@ -0,0 +1,67 @@ +package com.hbm.util; + +import java.util.HashMap; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ItemAmmoEnums; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; + +public class AchievementHandler { + + public static HashMap craftingAchievements = new HashMap(); + + public static void register() { + craftingAchievements.put(new ComparableStack(ModItems.gun_mp40), MainRegistry.achFreytag); + craftingAchievements.put(new ComparableStack(ModItems.piston_selenium), MainRegistry.achSelenium); + craftingAchievements.put(new ComparableStack(ModItems.gun_b92), MainRegistry.achSelenium); + craftingAchievements.put(new ComparableStack(ModItems.battery_potatos), MainRegistry.achPotato); + craftingAchievements.put(new ComparableStack(ModItems.gun_revolver_pip), MainRegistry.achC44); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_press), MainRegistry.achBurnerPress); + craftingAchievements.put(new ComparableStack(ModItems.rbmk_fuel_empty), MainRegistry.achRBMK); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_chemplant), MainRegistry.achChemplant); + craftingAchievements.put(new ComparableStack(ModBlocks.concrete_smooth), MainRegistry.achConcrete); + craftingAchievements.put(new ComparableStack(ModBlocks.concrete_asbestos), MainRegistry.achConcrete); + craftingAchievements.put(new ComparableStack(ModItems.ingot_polymer), MainRegistry.achPolymer); + craftingAchievements.put(new ComparableStack(ModItems.ingot_desh), MainRegistry.achDesh); + craftingAchievements.put(new ComparableStack(ModItems.gem_tantalium), MainRegistry.achTantalum); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_gascent), MainRegistry.achGasCent); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_centrifuge), MainRegistry.achCentrifuge); + craftingAchievements.put(new ComparableStack(ModItems.ingot_schrabidium), MainRegistry.achSchrab); + craftingAchievements.put(new ComparableStack(ModItems.nugget_schrabidium), MainRegistry.achSchrab); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_crystallizer), MainRegistry.achAcidizer); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_silex), MainRegistry.achSILEX); + craftingAchievements.put(new ComparableStack(ModItems.nugget_technetium), MainRegistry.achTechnetium); + craftingAchievements.put(new ComparableStack(ModBlocks.struct_watz_core), MainRegistry.achWatz); + craftingAchievements.put(new ComparableStack(ModItems.nugget_bismuth), MainRegistry.achBismuth); + craftingAchievements.put(new ComparableStack(ModItems.nugget_am241), MainRegistry.achBreeding); + craftingAchievements.put(new ComparableStack(ModItems.nugget_am242), MainRegistry.achBreeding); + craftingAchievements.put(new ComparableStack(ModItems.missile_nuclear), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.missile_nuclear_cluster), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.missile_doomsday), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_10_nuclear), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_10_nuclear_large), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_15_nuclear), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_15_nuclear_shark), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModItems.mp_warhead_15_boxcar), MainRegistry.achRedBalloons); + craftingAchievements.put(new ComparableStack(ModBlocks.struct_iter_core), MainRegistry.achFusion); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_difurnace_off), MainRegistry.achBlastFurnace); + craftingAchievements.put(new ComparableStack(ModBlocks.machine_assembler), MainRegistry.achAssembly); + craftingAchievements.put(new ComparableStack(ModItems.billet_pu_mix), MainRegistry.achChicagoPile); + craftingAchievements.put(new ComparableStack(ModItems.ammo_4gauge, 1, ItemAmmoEnums.Ammo4Gauge.VAMPIRE.ordinal()), MainRegistry.achWitchtaunter); + } + + public static void fire(EntityPlayer player, ItemStack stack) { + if(player.worldObj.isRemote) return; + ComparableStack comp = new ComparableStack(stack).makeSingular(); + Achievement achievement = craftingAchievements.get(comp); + if(achievement != null) { + player.triggerAchievement(achievement); + } + } +} diff --git a/src/main/java/com/hbm/util/ArmorRegistry.java b/src/main/java/com/hbm/util/ArmorRegistry.java index 06e69f8a9..fc1a20601 100644 --- a/src/main/java/com/hbm/util/ArmorRegistry.java +++ b/src/main/java/com/hbm/util/ArmorRegistry.java @@ -117,13 +117,4 @@ public class ArmorRegistry { this.lang = lang; } } - - /*public static enum ArmorClass { - MASK_FILTERED, - MASK_OXY, - GOGGLES, - HAZMAT_HEAT, - HAZMAT_RADIATION, - HAZMAT_BIO; - }*/ } diff --git a/src/main/java/com/hbm/util/ArmorUtil.java b/src/main/java/com/hbm/util/ArmorUtil.java index 21bba6f78..6ece2e502 100644 --- a/src/main/java/com/hbm/util/ArmorUtil.java +++ b/src/main/java/com/hbm/util/ArmorUtil.java @@ -2,6 +2,7 @@ package com.hbm.util; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import com.hbm.handler.ArmorModHandler; import com.hbm.handler.HazmatRegistry; @@ -241,7 +242,7 @@ public class ArmorUtil { for(String metal : metals) { - if(name.toLowerCase().contains(metal)) + if(name.toLowerCase(Locale.US).contains(metal)) return true; } diff --git a/src/main/java/com/hbm/util/BobMathUtil.java b/src/main/java/com/hbm/util/BobMathUtil.java index bfb8cc6f6..dde5fe762 100644 --- a/src/main/java/com/hbm/util/BobMathUtil.java +++ b/src/main/java/com/hbm/util/BobMathUtil.java @@ -1,5 +1,6 @@ package com.hbm.util; +import java.lang.reflect.Field; import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; @@ -9,6 +10,7 @@ import java.util.List; import javax.annotation.Nonnegative; +import cpw.mods.fml.relauncher.ReflectionHelper; import net.minecraft.util.MathHelper; import net.minecraft.util.Vec3; import net.minecraftforge.common.util.ForgeDirection; @@ -193,4 +195,15 @@ public class BobMathUtil { public static double squirt(double x) { return Math.sqrt(x + 1D / ((x + 2D) * (x + 2D))) - 1D / (x + 2D); } + + /** A convenient way to re-define the value of pi, should the laws of nature change. */ + public static void setPi(double pi) { + Field field = ReflectionHelper.findField(Math.class, "PI"); + try { field.setDouble(null, pi); } catch(Exception e) { } + } + + public static double angularDifference(double alpha, double beta) { + double delta = (beta - alpha + 180) % 360 - 180; + return delta < -180 ? delta + 360 : delta; + } } diff --git a/src/main/java/com/hbm/util/ChatBuilder.java b/src/main/java/com/hbm/util/ChatBuilder.java index 0140af364..9fc0c6169 100644 --- a/src/main/java/com/hbm/util/ChatBuilder.java +++ b/src/main/java/com/hbm/util/ChatBuilder.java @@ -1,10 +1,15 @@ package com.hbm.util; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + import net.minecraft.util.ChatComponentStyle; import net.minecraft.util.ChatComponentText; import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.ChatStyle; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; public class ChatBuilder { @@ -46,6 +51,24 @@ public class ChatBuilder { return this; } + /** Will recursively go over all IChatComponents added to the root and then set the style */ + public ChatBuilder colorAll(EnumChatFormatting format) { + + List list = new ArrayList(); + list.add(text); + + ListIterator it = list.listIterator(); + + while(it.hasNext()) { + Object o = it.next(); + IChatComponent component = (IChatComponent) o; + component.getChatStyle().setColor(format); + for(Object s : component.getSiblings()) it.add(s); + } + + return this; + } + public ChatComponentText flush() { return this.text; } diff --git a/src/main/java/com/hbm/util/Compat.java b/src/main/java/com/hbm/util/Compat.java index ff7da1c9d..3a8a4a9a6 100644 --- a/src/main/java/com/hbm/util/Compat.java +++ b/src/main/java/com/hbm/util/Compat.java @@ -100,24 +100,25 @@ public class Compat { public static List scrapeItemFromME(ItemStack meDrive) { List stacks = new ArrayList(); - if(meDrive != null && meDrive.hasTagCompound()) { - NBTTagCompound nbt = meDrive.getTagCompound(); - int types = nbt.getShort("it"); //ITEM_TYPE_TAG - - for(int i = 0; i < types; i++) { - NBTBase stackTag = nbt.getTag("#" + i); + try { + if(meDrive != null && meDrive.hasTagCompound()) { + NBTTagCompound nbt = meDrive.getTagCompound(); + int types = nbt.getShort("it"); //ITEM_TYPE_TAG - if(stackTag instanceof NBTTagCompound) { - NBTTagCompound compound = (NBTTagCompound) stackTag; - ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + for(int i = 0; i < types; i++) { + NBTBase stackTag = nbt.getTag("#" + i); - int count = nbt.getInteger("@" + i); - stack.stackSize = count; - - stacks.add(stack); + if(stackTag instanceof NBTTagCompound) { + NBTTagCompound compound = (NBTTagCompound) stackTag; + ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + + int count = nbt.getInteger("@" + i); + stack.stackSize = count; + stacks.add(stack); + } } } - } + } catch(Exception ex) { } return stacks; } diff --git a/src/main/java/com/hbm/util/CompatExternal.java b/src/main/java/com/hbm/util/CompatExternal.java index 00d1425ee..46f1fab61 100644 --- a/src/main/java/com/hbm/util/CompatExternal.java +++ b/src/main/java/com/hbm/util/CompatExternal.java @@ -1,15 +1,24 @@ package com.hbm.util; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; +import java.util.function.BiFunction; import com.hbm.blocks.BlockDummyable; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.tileentity.machine.TileEntityDummy; +import com.hbm.tileentity.turret.TileEntityTurretSentry; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidUser; import net.minecraft.block.Block; +import net.minecraft.entity.Entity; +import net.minecraft.entity.passive.EntityChicken; +import net.minecraft.entity.passive.EntityCow; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -125,4 +134,60 @@ public class CompatExternal { return list; } + + public static Set turretTargetPlayer = new HashSet(); + public static Set turretTargetFriendly = new HashSet(); + public static Set turretTargetHostile = new HashSet(); + public static Set turretTargetMachine = new HashSet(); + + /** + * Registers a class for turret targeting + * @param clazz is the class that should be targeted. + * @param type determines what setting the turret needs to have enabled to target this class. 0 is player, 1 is friendly, 2 is hostile and 3 is machine. + */ + public static void registerTurretTargetSimple(Class clazz, int type) { + + switch(type) { + case 0: turretTargetPlayer.add(clazz); break; + case 1: turretTargetFriendly.add(clazz); break; + case 2: turretTargetHostile.add(clazz); break; + case 3: turretTargetMachine.add(clazz); break; + } + } + + public static Set turretTargetBlacklist = new HashSet(); + + /** + * Registers a class to be fully ignored by turrets + * @param clazz is the class that should be ignored. + */ + public static void registerTurretTargetBlacklist(Class clazz) { + turretTargetBlacklist.add(clazz); + } + + public static HashMap> turretTargetCondition = new HashMap(); + + /** + * Registers a BiFunction lambda for more complex targeting compatibility + * @param clazz is the class that this rule should apply to + * @param bi is the lambda. The function should return 0 to continue with other targeting checks (i.e. do nothing), -1 to ignore this entity or 1 to target it. + * The params for this lambda are the entity and the turret in question. The type for the turret is omitted on purpose as to not require any reference of the tile entity + * class on the side of whoever is adding compat, allowing the compat class to be used entirely with reflection. + */ + public static void registerTurretTargetingCondition(Class clazz, BiFunction bi) { + turretTargetBlacklist.add(clazz); + } + + 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. + CompatExternal.registerTurretTargetSimple(EntityCow.class, 0); + // Makes all chickens ignored by turrets, also applies to entities that inherit EntityChicken like ducks. + CompatExternal.registerTurretTargetBlacklist(EntityChicken.class); + // An example for more complex turret behavior. Turrets will always target players named "Target Practice", and sentry turrets will never target players. + CompatExternal.registerTurretTargetingCondition(EntityPlayer.class, (entity, turret) -> { + if(entity.getCommandSenderName().equals("Target Practice")) return 1; + if(turret instanceof TileEntityTurretSentry) return -1; + return 0; + }); + } } diff --git a/src/main/java/com/hbm/util/ContaminationUtil.java b/src/main/java/com/hbm/util/ContaminationUtil.java index 612d8b23b..c09b3ba4a 100644 --- a/src/main/java/com/hbm/util/ContaminationUtil.java +++ b/src/main/java/com/hbm/util/ContaminationUtil.java @@ -3,7 +3,7 @@ package com.hbm.util; import java.util.HashSet; import com.hbm.entity.mob.EntityDuck; -import com.hbm.entity.mob.EntityNuclearCreeper; +import com.hbm.entity.mob.EntityCreeperNuclear; import com.hbm.entity.mob.EntityQuackos; import com.hbm.extprop.HbmLivingProps; import com.hbm.handler.HazmatRegistry; @@ -65,7 +65,7 @@ public class ContaminationUtil { return true; if(immuneEntities.isEmpty()) { - immuneEntities.add(EntityNuclearCreeper.class); + immuneEntities.add(EntityCreeperNuclear.class); immuneEntities.add(EntityMooshroom.class); immuneEntities.add(EntityZombie.class); immuneEntities.add(EntitySkeleton.class); diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index f7cb5d36e..e1c299c7c 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -1,48 +1,24 @@ package com.hbm.util; -import java.lang.reflect.Field; +import java.lang.reflect.Method; import com.hbm.handler.ArmorModHandler; import com.hbm.items.ModItems; import cpw.mods.fml.relauncher.ReflectionHelper; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; +import net.minecraft.potion.Potion; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSource; +import net.minecraftforge.common.ForgeHooks; public class EntityDamageUtil { - public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { - - if(!victim.attackEntityFrom(src, damage)) { - try { - Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); - - float dmg = (float) damage + lastDamage.getFloat(victim); - - return victim.attackEntityFrom(src, dmg); - } catch (Exception x) { - return false; - } - } else { - return true; - } - } - - public static float getLastDamage(Entity victim) { - - try { - Field lastDamage = ReflectionHelper.findField(EntityLivingBase.class, "lastDamage", "field_110153_bc"); - - return lastDamage.getFloat(victim); - } catch(Exception x) { - return 0F; - } - } - public static boolean wasAttackedByV1(DamageSource source) { if(source instanceof EntityDamageSource) { @@ -64,4 +40,238 @@ public class EntityDamageUtil { return false; } + + /** + * Attacks the given entity twice, based on a piecring percentage. The second hit sets the damage source to bypass armor. + * The damage source is modified, so you can't reuse damage source instances. + */ + public static boolean attackEntityFromArmorPiercing(Entity victim, DamageSource src, float damage, float piercing) { + + if(src.isUnblockable() || piercing == 0) return victim.attackEntityFrom(src, damage); + + if(piercing == 1) { + src.setDamageBypassesArmor(); + return victim.attackEntityFrom(src, damage); + } + + boolean ret = false; + + ret |= victim.attackEntityFrom(src, damage * (1F - piercing)); + src.setDamageBypassesArmor(); + ret |= victim.attackEntityFrom(src, damage * piercing); + return ret; + } + + public static boolean attackEntityFromIgnoreIFrame(Entity victim, DamageSource src, float damage) { + + if(!victim.attackEntityFrom(src, damage)) { + + if(victim instanceof EntityLivingBase) { + damage += ((EntityLivingBase) victim).lastDamage; + } + return victim.attackEntityFrom(src, damage); + } else { + return true; + } + } + + /** Currently just a copy of the vanilla damage code */ + public static boolean attackEntityFromNT(EntityLivingBase living, DamageSource source, float amount) { + + if(ForgeHooks.onLivingAttack(living, source, amount)) + return false; + if(living.isEntityInvulnerable()) { + return false; + } else if(living.worldObj.isRemote) { + return false; + } else { + living.entityAge = 0; + + if(living.getHealth() <= 0.0F) { + return false; + } else if(source.isFireDamage() && living.isPotionActive(Potion.fireResistance)) { + return false; + } else { + if((source == DamageSource.anvil || source == DamageSource.fallingBlock) && living.getEquipmentInSlot(4) != null) { + living.getEquipmentInSlot(4).damageItem((int) (amount * 4.0F + living.getRNG().nextFloat() * amount * 2.0F), living); + amount *= 0.75F; + } + + living.limbSwingAmount = 1.5F; + boolean flag = true; + + if((float) living.hurtResistantTime > (float) living.maxHurtResistantTime / 2.0F) { + if(amount <= living.lastDamage) { + return false; + } + + damageEntity(living, source, amount - living.lastDamage); //# + living.lastDamage = amount; + flag = false; + } else { + living.lastDamage = amount; + living.prevHealth = living.getHealth(); + living.hurtResistantTime = living.maxHurtResistantTime; + damageEntity(living, source, amount); //# + living.hurtTime = living.maxHurtTime = 10; + } + + living.attackedAtYaw = 0.0F; + Entity entity = source.getEntity(); + + if(entity != null) { + if(entity instanceof EntityLivingBase) { + living.setRevengeTarget((EntityLivingBase) entity); + } + + if(entity instanceof EntityPlayer) { + living.recentlyHit = 100; + living.attackingPlayer = (EntityPlayer) entity; + } else if(entity instanceof net.minecraft.entity.passive.EntityTameable) { + net.minecraft.entity.passive.EntityTameable entitywolf = (net.minecraft.entity.passive.EntityTameable) entity; + + if(entitywolf.isTamed()) { + living.recentlyHit = 100; + living.attackingPlayer = null; + } + } + } + + if(flag) { + living.worldObj.setEntityState(living, (byte) 2); + + if(source != DamageSource.drown) { + setBeenAttacked(living); //# + } + + if(entity != null) { + double d1 = entity.posX - living.posX; + double d0; + + for(d0 = entity.posZ - living.posZ; d1 * d1 + d0 * d0 < 1.0E-4D; d0 = (Math.random() - Math.random()) * 0.01D) { + d1 = (Math.random() - Math.random()) * 0.01D; + } + + living.attackedAtYaw = (float) (Math.atan2(d0, d1) * 180.0D / Math.PI) - living.rotationYaw; + living.knockBack(entity, amount, d1, d0); + } else { + living.attackedAtYaw = (float) ((int) (Math.random() * 2.0D) * 180); + } + } + + String s; + + if(living.getHealth() <= 0.0F) { + s = getDeathSound(living); //# + + if(flag && s != null) { + living.playSound(s, getSoundVolume(living), getSoundPitch(living)); //# + } + + living.onDeath(source); + } else { + s = getHurtSound(living); //# + + if(flag && s != null) { + living.playSound(s, getSoundVolume(living), getSoundPitch(living)); //# + } + } + + return true; + } + } + } + + // in this household we drink gasoline and sniff glue + public static String getDeathSound(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70673_aS", "getDeathSound"}); + try { return (String) m.invoke(living); } catch(Exception e) { } return "game.neutral.die"; + } + + public static String getHurtSound(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70621_aR", "getHurtSound"}); + try { return (String) m.invoke(living); } catch(Exception e) { } return "game.neutral.hurt"; + } + + public static float getSoundVolume(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70599_aP", "getSoundVolume"}); + try { return (float) m.invoke(living); } catch(Exception e) { } return 1F; + } + + public static float getSoundPitch(EntityLivingBase living) { + Method m = ReflectionHelper.findMethod(EntityLivingBase.class, living, new String[] {"func_70647_i", "getSoundPitch"}); + try { return (float) m.invoke(living); } catch(Exception e) { } return 1F; + } + + public static void damageEntity(EntityLivingBase living, DamageSource source, float amount) { + if(!living.isEntityInvulnerable()) { + amount = ForgeHooks.onLivingHurt(living, source, amount); + if(amount <= 0) + return; + amount = applyArmorCalculations(living, source, amount); //# + amount = applyPotionDamageCalculations(living, source, amount); //# + float f1 = amount; + amount = Math.max(amount - living.getAbsorptionAmount(), 0.0F); + living.setAbsorptionAmount(living.getAbsorptionAmount() - (f1 - amount)); + + if(amount != 0.0F) { + float f2 = living.getHealth(); + living.setHealth(f2 - amount); + living.func_110142_aN().func_94547_a(source, f2, amount); + living.setAbsorptionAmount(living.getAbsorptionAmount() - amount); + } + } + } + + public static float applyArmorCalculations(EntityLivingBase living, DamageSource source, float amount) { + if(!source.isUnblockable()) { + int i = 25 - living.getTotalArmorValue(); + float armor = amount * (float) i; + //living.damageArmor(p_70655_2_); //unused + amount = armor / 25.0F; + } + + return amount; + } + + public static float applyPotionDamageCalculations(EntityLivingBase living, DamageSource source, float amount) { + if(source.isDamageAbsolute()) { + return amount; + } else { + + int resistance; + int j; + float f1; + + if(living.isPotionActive(Potion.resistance) && source != DamageSource.outOfWorld) { + resistance = (living.getActivePotionEffect(Potion.resistance).getAmplifier() + 1) * 5; + j = 25 - resistance; + f1 = amount * (float) j; + amount = f1 / 25.0F; + } + + if(amount <= 0.0F) { + return 0.0F; + } else { + + resistance = EnchantmentHelper.getEnchantmentModifierDamage(living.getLastActiveItems(), source); + + if(resistance > 20) { + resistance = 20; + } + + if(resistance > 0 && resistance <= 20) { + j = 25 - resistance; + f1 = amount * (float) j; + amount = f1 / 25.0F; + } + + return amount; + } + } + } + + public static void setBeenAttacked(EntityLivingBase living) { + living.velocityChanged = living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue(); + } } diff --git a/src/main/java/com/hbm/util/StatHelper.java b/src/main/java/com/hbm/util/StatHelper.java index f938aca8d..356d1da0a 100644 --- a/src/main/java/com/hbm/util/StatHelper.java +++ b/src/main/java/com/hbm/util/StatHelper.java @@ -50,7 +50,7 @@ public class StatHelper { initBlockMineStats(); initItemUseStats(); initItemBreakStats(); - } catch(Exception ex) { } // just to be sure + } catch(Throwable ex) { } // just to be sure } /** @@ -69,7 +69,7 @@ public class StatHelper { int i = Item.getIdFromItem(item); try { StatList.objectCraftStats[i] = registerStat(new StatCrafting("stat.craftItem." + i, new ChatComponentTranslation("stat.craftItem", new Object[] { (new ItemStack(item)).func_151000_E() }), item)); - } catch(Exception ex) { } + } catch(Throwable ex) { } } } @@ -89,7 +89,7 @@ public class StatHelper { StatList.mineBlockStatArray[i] = registerStat(new StatCrafting("stat.mineBlock." + i, new ChatComponentTranslation("stat.mineBlock", new Object[] { (new ItemStack(block)).func_151000_E() }), Item.getItemFromBlock(block))); StatList.objectMineStats.add((StatCrafting) StatList.mineBlockStatArray[i]); } - } catch(Exception ex) { } + } catch(Throwable ex) { } } } @@ -109,7 +109,7 @@ public class StatHelper { if(!(item instanceof ItemBlock)) { StatList.itemStats.add((StatCrafting) StatList.objectUseStats[i]); } - } catch(Exception ex) { } + } catch(Throwable ex) { } } } @@ -128,7 +128,7 @@ public class StatHelper { if(item.isDamageable()) { StatList.objectBreakStats[i] = registerStat(new StatCrafting("stat.breakItem." + i, new ChatComponentTranslation("stat.breakItem", new Object[] { (new ItemStack(item)).func_151000_E() }), item)); } - } catch(Exception ex) { } + } catch(Throwable ex) { } } } diff --git a/src/main/java/com/hbm/util/WeightedRandomGeneric.java b/src/main/java/com/hbm/util/WeightedRandomGeneric.java new file mode 100644 index 000000000..e72a7e6e8 --- /dev/null +++ b/src/main/java/com/hbm/util/WeightedRandomGeneric.java @@ -0,0 +1,17 @@ +package com.hbm.util; + +import net.minecraft.util.WeightedRandom; + +public class WeightedRandomGeneric extends WeightedRandom.Item { + + T item; + + public WeightedRandomGeneric(T o, int weight) { + super(weight); + item = o; + } + + public T get() { + return item; + } +} diff --git a/src/main/java/com/hbm/util/function/Function.java b/src/main/java/com/hbm/util/function/Function.java index c9825d3e4..544328e5c 100644 --- a/src/main/java/com/hbm/util/function/Function.java +++ b/src/main/java/com/hbm/util/function/Function.java @@ -27,8 +27,8 @@ public abstract class Function { public String getXName(boolean brackets) { String x = "x"; boolean mod = false; - if(div != 1D) x += " / " + div; - if(off != 0D) x += " + " + off; + if(div != 1D) x += " / " + String.format("%,.1f", div); + if(off != 0D) x += " + " + String.format("%,.1f", off); if(mod && brackets) x = "(" + x + ")"; return x; } @@ -46,28 +46,35 @@ public abstract class Function { public static class FunctionLogarithmic extends FunctionSingleArg { public FunctionLogarithmic(double level) { super(level); this.withOff(1D); } @Override public double effonix(double x) { return Math.log10(getX(x)) * level; } - @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + level; } + @Override public String getLabelForFuel() { return "log10(" + getXName(false) + ") * " + String.format("%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / LOGARITHMIC"; } } public static class FunctionPassive extends FunctionSingleArg { public FunctionPassive(double level) { super(level); } @Override public double effonix(double x) { return this.level; } - @Override public String getLabelForFuel() { return "" + level; } + @Override public String getLabelForFuel() { return "" + String.format("%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.DARK_GREEN + "SAFE / PASSIVE"; } } public static class FunctionSqrt extends FunctionSingleArg { public FunctionSqrt(double level) { super(level); } @Override public double effonix(double x) { return BobMathUtil.squirt(getX(x)) * this.level; } - @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + this.level; } //not entirely correct but good enough + @Override public String getLabelForFuel() { return "sqrt(" + getXName(false) + ") * " + String.format("%,.3f", this.level); } //not entirely correct but good enough @Override public String getDangerFromFuel() { return EnumChatFormatting.YELLOW + "MEDIUM / SQUARE ROOT"; } } + public static class FunctionSqrtFalling extends FunctionSqrt { + public FunctionSqrtFalling(double fallFactor) { + super(1D / fallFactor); + this.withOff(fallFactor * fallFactor); + } + } + public static class FunctionLinear extends FunctionSingleArg { public FunctionLinear(double level) { super(level); } @Override public double effonix(double x) { return getX(x) * this.level; } - @Override public String getLabelForFuel() { return getXName(true) + " * " + this.level; } + @Override public String getLabelForFuel() { return getXName(true) + " * " + String.format("%,.1f", this.level); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / LINEAR"; } } @@ -75,7 +82,7 @@ public abstract class Function { public FunctionQuadratic(double level) { super(level, 0D); } public FunctionQuadratic(double level, double vOff) { super(level, vOff); } @Override public double effonix(double x) { return getX(x) * getX(x) * this.level + this.vOff; } - @Override public String getLabelForFuel() { return getXName(true) + "² * " + this.level + (vOff != 0 ? (" + " + vOff) : ""); } + @Override public String getLabelForFuel() { return getXName(true) + "² * " + String.format("%,.1f", this.level) + (vOff != 0 ? (" + " + String.format("%,.1f", vOff)) : ""); } @Override public String getDangerFromFuel() { return EnumChatFormatting.RED + "DANGEROUS / QUADRATIC"; } } } diff --git a/src/main/java/com/hbm/wiaj/cannery/Dummies.java b/src/main/java/com/hbm/wiaj/cannery/Dummies.java index adbc22ee6..879a3fd3a 100644 --- a/src/main/java/com/hbm/wiaj/cannery/Dummies.java +++ b/src/main/java/com/hbm/wiaj/cannery/Dummies.java @@ -11,8 +11,8 @@ public class Dummies { public static class JarDummyConnector extends TileEntity implements IEnergyConnector, IFluidConnector { @Override public boolean isLoaded() { return false; } - @Override public long transferFluid(FluidType type, long fluid) { return 0; } - @Override public long getDemand(FluidType type) { return 0; } + @Override public long transferFluid(FluidType type, int pressure, long fluid) { return 0; } + @Override public long getDemand(FluidType type, int pressure) { return 0; } @Override public long transferPower(long power) { return 0; } @Override public long getPower() { return 0; } @Override public long getMaxPower() { return 0; } diff --git a/src/main/java/com/hbm/world/dungeon/Bunker.java b/src/main/java/com/hbm/world/dungeon/Bunker.java deleted file mode 100644 index 3290d5ebd..000000000 --- a/src/main/java/com/hbm/world/dungeon/Bunker.java +++ /dev/null @@ -1,1596 +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.blocks.generic.BlockBobble.BobbleType; -import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; -import com.hbm.config.GeneralConfig; -import com.hbm.lib.HbmChestContents; -import com.hbm.lib.Library; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.init.Blocks; -import net.minecraft.item.ItemDoor; -import net.minecraft.tileentity.TileEntityChest; -import net.minecraft.util.WeightedRandomChestContent; -import net.minecraft.world.World; -import net.minecraft.world.gen.feature.WorldGenerator; - -public class Bunker extends WorldGenerator { - Block Block1 = ModBlocks.reinforced_brick; - Block Block3 = ModBlocks.reinforced_light; - Block Block4 = ModBlocks.deco_steel; - Block Block5 = ModBlocks.deco_tungsten; - - protected Block[] GetValidSpawnBlocks() { - return new Block[] { Blocks.grass, Blocks.dirt, Blocks.stone, Blocks.sand, Blocks.sandstone, }; - } - - @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 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; - } - - public boolean generate_r0(World world, Random rand, int x, int y, int z) { - y += 1; - - if(!LocationIsValidSpawn(world, x + 9, y, z + 9)) { - return false; - } - - if(!LocationIsValidSpawn(world, x, y, z)) - { - return false; - } - - for(int i = 0; i < 11; i++) { - for(int j = 0; j < 9; j++) { - for(int k = 0; k < 15; k++) { - world.setBlock(x + i, y + j - 25, z + k, Blocks.air, 0, 3); - } - } - } - - world.setBlock(x + 0, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -25, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -24, z + 1, Blocks.chest, 3, 3); - world.setBlockMetadataWithNotify(x + 2, y + -24, z + 1, 3, 3); - if(world.getBlock(x + 2, y + -24, z + 1) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.expensive, (TileEntityChest) world.getTileEntity(x + 2, y + -24, z + 1), rand.nextInt(2) + 6); - } - - if(world.rand.nextInt(10) > 0) { - world.setBlock(x + 2, y + -23, z + 1, ModBlocks.geiger, 2, 3); - } else { - world.setBlock(x + 2, y + -23, z + 1, ModBlocks.bobblehead, 0, 3); - TileEntityBobble bobble = (TileEntityBobble) world.getTileEntity(x + 2, y + -23, z + 1); - - if(bobble != null) { - bobble.type = BobbleType.values()[world.rand.nextInt(BobbleType.values().length - 1) + 1]; - bobble.markDirty(); - } - } - - world.setBlock(x + 3, y + -24, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -24, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 2, Blocks.chest, 5, 3); - world.setBlockMetadataWithNotify(x + 1, y + -24, z + 5, 3, 3); - if(world.getBlock(x + 2, y + -24, z + 1) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 1, y + -24, z + 2), 8); - } - world.setBlock(x + 3, y + -24, z + 2, Blocks.chest, 4, 3); - world.setBlockMetadataWithNotify(x + 3, y + -24, z + 2, 4, 3); - if(world.getBlock(x + 3, y + -24, z + 2) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 3, y + -24, z + 2), 8); - } - world.setBlock(x + 4, y + -24, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 3, Blocks.chest, 5, 3); - world.setBlockMetadataWithNotify(x + 1, y + -24, z + 3, 5, 3); - if(world.getBlock(x + 1, y + -24, z + 3) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 1, y + -24, z + 3), 8); - } - world.setBlock(x + 3, y + -24, z + 3, Blocks.chest, 4, 3); - world.setBlockMetadataWithNotify(x + 3, y + -24, z + 3, 5, 3); - if(world.getBlock(x + 3, y + -24, z + 3) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 3, y + -24, z + 3), 8); - } - world.setBlock(x + 4, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 3, Blocks.iron_door, 5, 3); - ItemDoor.placeDoorBlock(world, x + 9, y + -24, z + 3, 5, Blocks.iron_door); - world.setBlock(x + 10, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -24, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 4, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -24, z + 5, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 2, y + -24, z + 5, 3, Blocks.iron_door); - world.setBlock(x + 3, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 11, y + -24, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 6, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 7, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 11, y + -24, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 8, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 9, Blocks.iron_door, 1, 3); - ItemDoor.placeDoorBlock(world, x + 7, y + -24, z + 9, 1, Blocks.iron_door); - world.setBlock(x + 10, y + -24, z + 9, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 11, y + -24, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 10, Blocks.hopper, 4, 3); - world.setBlock(x + 6, y + -24, z + 10, Blocks.cauldron, 0, 3); - world.setBlock(x + 7, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 10, Blocks.cauldron, 0, 3); - world.setBlock(x + 11, y + -24, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -24, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 0, Block3, 0, 3); - world.setBlock(x + 7, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -23, z + 0, Block3, 0, 3); - world.setBlock(x + 10, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -23, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -23, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -23, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -23, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -23, z + 3, Block1, 0, 3); - // world.setBlock(x + 9, y + -23, z + 3, Blocks.iron_door, 8, 3); - world.setBlock(x + 10, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -23, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 5, Block1, 0, 3); - // world.setBlock(x + 2, y + -23, z + 5, Blocks.iron_door, 8, 3); - world.setBlock(x + 3, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 5, Block3, 0, 3); - world.setBlock(x + 7, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -23, z + 9, Block3, 0, 3); - // world.setBlock(x + 7, y + -23, z + 9, Blocks.iron_door, 8, 3); - world.setBlock(x + 11, y + -23, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 10, Blocks.trapdoor, 7, 3); - world.setBlock(x + 7, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -23, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -23, z + 14, Block1, 0, 3); - // prevent geiger displacement - // world.setBlock(x + 2, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -23, z + 14, Block3, 0, 3); - world.setBlock(x + 5, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -23, z + 14, Block3, 0, 3); - world.setBlock(x + 8, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -23, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -22, z + 1, Block3, 0, 3); - world.setBlock(x + 3, y + -22, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -22, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -22, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 2, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -22, z + 2, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -22, z + 4, Block3, 0, 3); - world.setBlock(x + 3, y + -22, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 4, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -22, z + 4, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 6, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 6, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 6, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 8, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 8, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -22, z + 10, Block3, 0, 3); - world.setBlock(x + 11, y + -22, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 5, y + -22, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 2, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 6, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -22, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -22, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -22, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -21, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 1, Blocks.chest, 5, 3); - world.setBlockMetadataWithNotify(x + 4, y + -20, z + 1, 5, 3); - if(world.getBlock(x + 4, y + -20, z + 1) == Blocks.chest) { - WeightedRandomChestContent.generateChestContents(rand, HbmChestContents.modGeneric, (TileEntityChest) world.getTileEntity(x + 4, y + -20, z + 1), 12); - } - world.setBlock(x + 8, y + -20, z + 1, Block4, 0, 3); - world.setBlock(x + 9, y + -20, z + 1, Block4, 0, 3); - world.setBlock(x + 10, y + -20, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + -20, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 2, Block4, 0, 3); - world.setBlock(x + 9, y + -20, z + 2, Block4, 0, 3); - world.setBlock(x + 10, y + -20, z + 2, Block4, 0, 3); - world.setBlock(x + 11, y + -20, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 3, Block4, 0, 3); - world.setBlock(x + 9, y + -20, z + 3, Block4, 0, 3); - world.setBlock(x + 10, y + -20, z + 3, Block4, 0, 3); - world.setBlock(x + 11, y + -20, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 4, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 5, y + -20, z + 4, 3, Blocks.iron_door); - world.setBlock(x + 6, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 6, Blocks.iron_door, 0, 3); - ItemDoor.placeDoorBlock(world, x + 3, y + -20, z + 6, 0, Blocks.iron_door); - world.setBlock(x + 11, y + -20, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 7, Blocks.iron_door, 1, 3); - ItemDoor.placeDoorBlock(world, x + 8, y + -20, z + 7, 1, Blocks.iron_door); - world.setBlock(x + 10, y + -20, z + 7, Blocks.iron_door, 1, 3); - ItemDoor.placeDoorBlock(world, x + 10, y + -20, z + 7, 1, Blocks.iron_door); - world.setBlock(x + 11, y + -20, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 4, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 6, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 6, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 8, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 8, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 10, y + -20, z + 8, Blocks.iron_door, 3, 3); - ItemDoor.placeDoorBlock(world, x + 10, y + -20, z + 8, 3, Blocks.iron_door); - world.setBlock(x + 11, y + -20, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -20, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -19, z + 0, Block3, 0, 3); - world.setBlock(x + 7, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -19, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 1, Block4, 0, 3); - world.setBlock(x + 9, y + -19, z + 1, Block4, 0, 3); - world.setBlock(x + 10, y + -19, z + 1, Block4, 0, 3); - world.setBlock(x + 11, y + -19, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 8, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 9, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 10, y + -19, z + 2, Block5, 0, 3); - world.setBlock(x + 11, y + -19, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -19, z + 3, Block4, 0, 3); - world.setBlock(x + 9, y + -19, z + 3, Block4, 0, 3); - world.setBlock(x + 10, y + -19, z + 3, Block4, 0, 3); - world.setBlock(x + 11, y + -19, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 4, Block1, 0, 3); - // world.setBlock(x + 5, y + -19, z + 4, Blocks.iron_door, 8, 3); - world.setBlock(x + 6, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 4, Block3, 0, 3); - world.setBlock(x + 10, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 6, Block1, 0, 3); - // world.setBlock(x + 3, y + -19, z + 6, Blocks.iron_door, 8, 3); - world.setBlock(x + 11, y + -19, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 7, Block3, 0, 3); - // world.setBlock(x + 8, y + -19, z + 7, Blocks.iron_door, 8, 3); - // world.setBlock(x + 10, y + -19, z + 7, Blocks.iron_door, 8, 3); - world.setBlock(x + 11, y + -19, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 8, Block1, 0, 3); - // world.setBlock(x + 4, y + -19, z + 8, Blocks.iron_door, 8, 3); - // world.setBlock(x + 6, y + -19, z + 8, Blocks.iron_door, 8, 3); - // world.setBlock(x + 8, y + -19, z + 8, Blocks.iron_door, 8, 3); - // world.setBlock(x + 10, y + -19, z + 8, Blocks.iron_door, 9, 3); - world.setBlock(x + 11, y + -19, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -19, z + 11, Block3, 0, 3); - world.setBlock(x + 6, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 11, Block3, 0, 3); - world.setBlock(x + 10, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -19, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -19, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 2, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 1, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 2, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 2, Block4, 0, 3); - world.setBlock(x + 9, y + -18, z + 2, Block4, 0, 3); - world.setBlock(x + 10, y + -18, z + 2, Block4, 0, 3); - world.setBlock(x + 11, y + -18, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 3, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 5, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -18, z + 5, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 5, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 6, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 7, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 8, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 3, y + -18, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 9, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 9, y + -18, z + 10, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 7, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 8, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 10, y + -18, z + 12, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 13, Blocks.web, 0, 3); - world.setBlock(x + 11, y + -18, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -18, z + 14, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 0, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 1, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 2, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 3, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 4, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 5, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 6, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 7, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 8, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 9, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 10, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 11, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 12, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 13, Block1, 0, 3); - world.setBlock(x + 0, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 2, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 3, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 4, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 5, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 6, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 7, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 8, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 9, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 10, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 11, y + -17, z + 14, Block1, 0, 3); - world.setBlock(x + 1, y + -16, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -16, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -16, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -16, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + -16, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -16, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -16, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -16, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -15, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -15, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -15, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -15, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -15, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -15, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -15, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -15, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -14, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -14, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -14, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -14, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -14, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -14, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -14, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -14, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -13, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -13, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -13, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -13, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -13, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -13, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -13, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -13, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -12, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -12, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -12, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -12, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -12, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -12, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -12, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -12, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -11, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -11, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -11, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -11, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -11, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -11, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -11, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -11, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -10, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -10, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -10, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -10, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + -10, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -10, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -10, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -10, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -9, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -9, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -9, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -9, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -9, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -9, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -9, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -9, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -8, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -8, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -8, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -8, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -8, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -8, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -8, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -8, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -7, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -7, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -7, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -7, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -7, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -7, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -7, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -7, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -6, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -6, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -6, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -6, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -6, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -6, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -6, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -6, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -5, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -5, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -5, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -5, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -5, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -5, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -5, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -5, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -4, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -4, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -4, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -4, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + -4, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -4, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -4, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -4, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -3, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -3, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -3, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -3, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + -1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + -1, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + -1, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + -1, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 0, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 0, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 0, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 0, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 0, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 0, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 1, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 1, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 2, Block3, 0, 3); - world.setBlock(x + 3, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 2, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 3, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 0, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 4, y + 2, z + 4, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 2, z + 5, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 1, y + 3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 3, y + 3, z + 0, Library.getRandomConcrete(), 0, 3); - world.setBlock(x + 2, y + 3, z + 1, Blocks.trapdoor, 1, 3); - - generate_r02_last(world, rand, x, y, z); - return true; - - } - - public boolean generate_r02_last(World world, Random rand, int x, int y, int z) { - - world.setBlock(x + 10, y + -24, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -24, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 8, y + -23, z + 2, Blocks.lever, 12, 3); - world.setBlock(x + 10, y + -23, z + 4, Blocks.lever, 10, 3); - world.setBlock(x + 10, y + -23, z + 6, Blocks.lever, 10, 3); - world.setBlock(x + 10, y + -23, z + 8, Blocks.lever, 10, 3); - world.setBlock(x + 6, y + -23, z + 10, Blocks.lever, 12, 3); - world.setBlock(x + 10, y + -23, z + 10, Blocks.lever, 10, 3); - world.setBlock(x + 10, y + -23, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -23, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -22, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -22, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -21, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -21, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -20, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -20, z + 12, Blocks.ladder, 4, 3); - world.setBlock(x + 10, y + -20, z + 13, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -19, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -19, z + 5, Blocks.lever, 2, 3); - world.setBlock(x + 5, y + -19, z + 5, Blocks.wall_sign, 3, 3); - world.setBlock(x + 2, y + -18, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -17, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -16, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -15, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -14, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -13, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -12, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -11, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -10, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -9, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -8, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -7, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -6, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -5, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -4, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -3, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -2, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + -1, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + 0, z + 1, Blocks.ladder, 3, 3); - world.setBlock(x + 2, y + 0, z + 2, Blocks.ladder, 4, 3); - world.setBlock(x + 2, y + 1, z + 1, Blocks.ladder, 3, 3); - world.setBlock(x + 2, y + 2, z + 1, Blocks.ladder, 3, 3); - world.setBlock(x + 8, y + -20, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 10, y + -20, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 8, y + -20, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 10, y + -20, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 4, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 6, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 8, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 10, y + -20, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 4, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 6, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 8, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 10, y + -20, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 8, y + -19, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 10, y + -19, z + 5, Blocks.bed, 10, 3); - world.setBlock(x + 8, y + -19, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 10, y + -19, z + 6, Blocks.bed, 2, 3); - world.setBlock(x + 4, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 6, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 8, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 10, y + -19, z + 9, Blocks.bed, 0, 3); - world.setBlock(x + 4, y + -19, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 6, y + -19, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 8, y + -19, z + 10, Blocks.bed, 8, 3); - world.setBlock(x + 10, y + -19, z + 10, Blocks.bed, 8, 3); - if(GeneralConfig.enableDebugMode) - System.out.print("[Debug] Successfully spawned bunker at " + x + " " + y + " " + z + "\n"); - return true; - - } - -} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/feature/BedrockOre.java b/src/main/java/com/hbm/world/feature/BedrockOre.java index 71cd87a12..15077d50f 100644 --- a/src/main/java/com/hbm/world/feature/BedrockOre.java +++ b/src/main/java/com/hbm/world/feature/BedrockOre.java @@ -1,17 +1,60 @@ package com.hbm.world.feature; +import java.util.ArrayList; +import java.util.List; + import com.hbm.blocks.ModBlocks; import com.hbm.blocks.generic.BlockBedrockOreTE.TileEntityBedrockOre; +import com.hbm.config.WorldConfig; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager.DictFrame; +import com.hbm.inventory.fluid.Fluids; +import com.hbm.items.ModItems; +import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; +import com.hbm.util.WeightedRandomGeneric; import net.minecraft.block.Block; import net.minecraft.init.Blocks; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class BedrockOre { + public static List> weightedOres = new ArrayList(); + public static List> weightedOresNether = new ArrayList(); + + public static void init() { + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.IRON, 1), WorldConfig.bedrockIronSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.COPPER, 1), WorldConfig.bedrockCopperSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.BORAX, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockBoraxSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.CHLOROCALCITE, 3, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockChlorocalciteSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.ASBESTOS, 2), WorldConfig.bedrockAsbestosSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.NIOBIUM, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiobiumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TITANIUM, 2, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockTitaniumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.TUNGSTEN, 2, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockTungstenSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.GOLD, 1), WorldConfig.bedrockGoldSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.URANIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockUraniumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(EnumBedrockOre.THORIUM, 4, new FluidStack(Fluids.SULFURIC_ACID, 500)), WorldConfig.bedrockThoriumSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.coal, 4), 1, 0x202020), WorldConfig.bedrockCoalSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.niter, 4), 2, 0x808080, new FluidStack(Fluids.ACID, 500)), WorldConfig.bedrockNiterSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(ModItems.fluorite, 4), 1, 0xd0d0d0), WorldConfig.bedrockFluoriteSpawn); + registerBedrockOre(weightedOres, new BedrockOreDefinition(new ItemStack(Items.redstone, 4), 1, 0xd01010), WorldConfig.bedrockRedstoneSpawn); + + registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(Items.glowstone_dust, 4), 1, 0xF9FF4D), WorldConfig.bedrockGlowstoneSpawn); + registerBedrockOre(weightedOresNether, new BedrockOreDefinition(new ItemStack(ModItems.powder_fire, 4), 1, 0xD7341F), WorldConfig.bedrockPhosphorusSpawn); + } + + public static void registerBedrockOre(List list, BedrockOreDefinition def, int weight) { + WeightedRandomGeneric weighted = new WeightedRandomGeneric(def, weight); + list.add(weighted); + } + public static void generate(World world, int x, int z, ItemStack stack, FluidStack acid, int color, int tier) { + generate(world, x, z, stack, acid, color, tier, ModBlocks.stone_depth); + } + + public static void generate(World world, int x, int z, ItemStack stack, FluidStack acid, int color, int tier, Block depthRock) { for(int ix = x - 1; ix <= x + 1; ix++) { for(int iz = z - 1; iz <= z + 1; iz++) { @@ -42,11 +85,40 @@ public class BedrockOre { Block b = world.getBlock(ix, iy, iz); if(b.isReplaceableOreGen(world, ix, iy, iz, Blocks.stone) || b.isReplaceableOreGen(world, ix, iy, iz, Blocks.bedrock)) { - world.setBlock(ix, iy, iz, ModBlocks.stone_depth); + world.setBlock(ix, iy, iz, depthRock); } } } } } } + + public static class BedrockOreDefinition { + public ItemStack stack; + public FluidStack acid; + public int tier; + public int color; + + public BedrockOreDefinition(ItemStack stack, int tier, int color) { + this(stack, tier, color, null); + } + + public BedrockOreDefinition(ItemStack stack, int tier, int color, FluidStack acid) { + this.stack = stack; + this.tier = tier; + this.color = color; + this.acid = acid; + } + + public BedrockOreDefinition(EnumBedrockOre type, int tier) { + this(type, tier, null); + } + + public BedrockOreDefinition(EnumBedrockOre type, int tier, FluidStack acid) { + this.stack = DictFrame.fromOne(ModItems.ore_bedrock, type); + this.color = type.color; + this.tier = tier; + this.acid = acid; + } + } } diff --git a/src/main/java/com/hbm/world/feature/BiomeCave.java b/src/main/java/com/hbm/world/feature/BiomeCave.java new file mode 100644 index 000000000..0add71808 --- /dev/null +++ b/src/main/java/com/hbm/world/feature/BiomeCave.java @@ -0,0 +1,124 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.BlockEnums.EnumBiomeType; +import com.hbm.blocks.ModBlocks; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.BiomeGenBase.TempCategory; +import net.minecraft.world.gen.NoiseGeneratorPerlin; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.terraingen.DecorateBiomeEvent; + +public class BiomeCave { + + private NoiseGeneratorPerlin noise; + /** The number that is being deducted flat from the result of the perlin noise before all other processing. Increase this to make strata rarer. */ + private double threshold = 2D; + /** The mulitplier for the remaining bit after the threshold has been deducted. Increase to make strata wavier. */ + private int rangeMult = 3; + /** The maximum range after multiplying - anything above this will be subtracted from (maxRange * 2) to yield the proper range. Increase this to make strata thicker. */ + private int maxRange = 4; + /** The y-level around which the stratum is centered. */ + private int yLevel = 30; + + public BiomeCave() { + MinecraftForge.EVENT_BUS.register(this); + } + + public BiomeCave setThreshold(double threshold) { + this.threshold = threshold; + return this; + } + + public BiomeCave setRangeMult(int rangeMult) { + this.rangeMult = rangeMult; + return this; + } + + public BiomeCave setMaxRange(int maxRange) { + this.maxRange = maxRange; + return this; + } + + public BiomeCave setYLevel(int yLevel) { + this.yLevel = yLevel; + return this; + } + + @SubscribeEvent + public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != 0) return; + + if(this.noise == null) { + this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() - 1916169 + yLevel), 2); + } + + int cX = event.chunkX; + int cZ = event.chunkZ; + + double scale = 0.01D; + + for(int x = cX + 8; x < cX + 24; x++) { + for(int z = cZ + 8; z < cZ + 24; z++) { + + BiomeGenBase biome = world.getBiomeGenForCoords(x, z); + EnumBiomeType type = getTypeFromBiome(biome); + + double n = noise.func_151601_a(x * scale, z * scale); + + if(type != null && n > threshold) { + int range = (int)((n - threshold) * rangeMult); + + if(range > maxRange) + range = (maxRange * 2) - range; + + if(range < 0) + continue; + + for(int y = yLevel - range; y <= yLevel + range; y++) { + handleBiome(world, x, y, z, type); + } + } + } + } + } + + private static void handleBiome(World world, int x, int y, int z, EnumBiomeType type) { + Block target = world.getBlock(x, y, z); + + if(target.isNormalCube()) { + + boolean shouldGen = false; + + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + if(world.getBlock(x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ).isAir(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ)) { + shouldGen = true; break; + } + if(world.getBlock(x + dir.offsetX * 2, y + dir.offsetY * 2, z + dir.offsetZ * 2).isAir(world, x + dir.offsetX * 2, y + dir.offsetY * 2, z + dir.offsetZ * 2)) { + shouldGen = true; break; + } + } + + if(shouldGen) { + world.setBlock(x, y, z, ModBlocks.stone_biome, type.ordinal(), 2); + } + } + } + + private static EnumBiomeType getTypeFromBiome(BiomeGenBase biome) { + + if(biome.temperature >= 1 && biome.rainfall < 0.25) return EnumBiomeType.DESERT; + if(biome.temperature >= 0.5 && biome.rainfall > 0.25 && biome.getTempCategory() != TempCategory.OCEAN) return EnumBiomeType.WOODLAND; + + return null; + } +} diff --git a/src/main/java/com/hbm/world/feature/DeepLayer.java b/src/main/java/com/hbm/world/feature/DeepLayer.java index 5e50efd0d..b8f29cf41 100644 --- a/src/main/java/com/hbm/world/feature/DeepLayer.java +++ b/src/main/java/com/hbm/world/feature/DeepLayer.java @@ -19,15 +19,13 @@ public class DeepLayer { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; + if(world.provider == null || world.provider.dimensionId != 0) return; if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 19), 4); } - - World world = event.world; - - if(world.provider.dimensionId != 0) - return; int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/GlyphidHive.java b/src/main/java/com/hbm/world/feature/GlyphidHive.java new file mode 100644 index 000000000..5c60e3ff2 --- /dev/null +++ b/src/main/java/com/hbm/world/feature/GlyphidHive.java @@ -0,0 +1,128 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.ModBlocks; + +import net.minecraft.init.Blocks; +import net.minecraft.world.World; + +public class GlyphidHive { + + public static final int[][][] schematic = new int[][][] { + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,1,9,9,9,9,9,1,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,3,1,9,9,9,9,9,1,5,0}, + {0,3,9,9,9,9,9,9,9,5,0}, + {0,3,1,9,9,9,9,9,1,5,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,1,9,1,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + }, + { + {0,0,0,0,0,4,0,0,0,0,0}, + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,4,9,4,1,0,0,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,3,3,9,9,9,9,9,5,5,0}, + {3,3,9,9,9,9,9,9,9,5,5}, + {0,3,3,9,9,9,9,9,5,5,0}, + {0,0,1,1,9,9,9,1,1,0,0}, + {0,0,0,1,2,9,2,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + {0,0,0,0,0,2,0,0,0,0,0}, + }, + { + {0,0,0,0,4,4,4,0,0,0,0}, + {0,0,0,1,4,4,4,1,0,0,0}, + {0,0,1,1,4,9,4,1,1,0,0}, + {0,1,1,1,9,9,0,1,1,1,0}, + {3,3,3,9,9,9,9,9,5,5,5}, + {3,3,9,9,9,9,9,9,9,5,5}, + {3,3,3,9,9,9,9,9,5,5,5}, + {0,1,1,1,9,9,9,1,1,1,0}, + {0,0,1,1,2,9,2,1,1,0,0}, + {0,0,0,1,2,2,2,1,0,0,0}, + {0,0,0,0,2,2,2,0,0,0,0}, + }, + { + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1}, + {1,1,1,1,1,1,1,1,1,1,1}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + }, + { + {0,0,0,0,0,0,0,0,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,1,1,1,1,1,1,1,1,1,0}, + {0,0,1,1,1,1,1,1,1,0,0}, + {0,0,0,1,1,1,1,1,0,0,0}, + {0,0,0,0,1,1,1,0,0,0,0}, + {0,0,0,0,0,0,0,0,0,0,0}, + } + }; + + public static void generate(World world, int x, int y, int z, Random rand) { + + int orientation = rand.nextInt(4) + 2; + + for(int i = 0; i < 11; i++) { + for(int j = 0; j < 7; j++) { + for(int k = 0; k < 11; k++) { + + int block = schematic[6 - j][i][k]; + + if(block == 1 || (block != orientation && block > 1 && block < 6)) { + world.setBlock(x + i - 5, y + j - 2, z + k - 5, ModBlocks.glyphid_base); + } + if(block == 9) { + world.setBlock(x + i - 5, y + j - 2, z + k - 5, Blocks.air); + } + } + } + } + + world.setBlock(x, y - 1, z, ModBlocks.glyphid_spawner); + } +} diff --git a/src/main/java/com/hbm/world/feature/Meteorite.java b/src/main/java/com/hbm/world/feature/Meteorite.java index 3f78561a6..c383eefa0 100644 --- a/src/main/java/com/hbm/world/feature/Meteorite.java +++ b/src/main/java/com/hbm/world/feature/Meteorite.java @@ -25,17 +25,19 @@ public class Meteorite { public static boolean safeMode = false; - public void generate(World world, Random rand, int x, int y, int z, boolean safe, boolean allowSpecials) { + public void generate(World world, Random rand, int x, int y, int z, boolean safe, boolean allowSpecials, boolean damagingImpact) { safeMode = safe; if(replacables.isEmpty()) { generateReplacables(); } - List list = (List) world.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(x - 7.5, y - 7.5, z - 7.5, x + 7.5, y + 7.5, z + 7.5)); - - for(Entity e : list) { - e.attackEntityFrom(ModDamageSource.meteorite, 1000); + if(damagingImpact) { + List list = (List) world.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(x - 7.5, y - 7.5, z - 7.5, x + 7.5, y + 7.5, z + 7.5)); + + for(Entity e : list) { + e.attackEntityFrom(ModDamageSource.meteorite, 1000); + } } if(WorldConfig.enableSpecialMeteors && allowSpecials) diff --git a/src/main/java/com/hbm/world/feature/OilSpot.java b/src/main/java/com/hbm/world/feature/OilSpot.java index bcd746638..7b02e5263 100644 --- a/src/main/java/com/hbm/world/feature/OilSpot.java +++ b/src/main/java/com/hbm/world/feature/OilSpot.java @@ -80,7 +80,7 @@ public class OilSpot { world.setBlock(rX, y, rZ, ModBlocks.stone_cracked); break; - } else if(ground.getMaterial() == Material.leaves) { + } else if(ground.getMaterial() == Material.leaves && (meta & 8) != 0 && (meta & 4) == 0) { world.setBlockToAir(rX, y, rZ); break; } diff --git a/src/main/java/com/hbm/world/feature/OreCave.java b/src/main/java/com/hbm/world/feature/OreCave.java index 2be6aa77a..eed1cdfdc 100644 --- a/src/main/java/com/hbm/world/feature/OreCave.java +++ b/src/main/java/com/hbm/world/feature/OreCave.java @@ -73,17 +73,14 @@ public class OreCave { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { - if(event.world.provider.dimensionId != this.dim) return; + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != this.dim) return; if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 2); } - World world = event.world; - - if(world.provider.dimensionId != 0) - return; - int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/OreLayer.java b/src/main/java/com/hbm/world/feature/OreLayer.java index 85b051525..b0411b147 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer.java +++ b/src/main/java/com/hbm/world/feature/OreLayer.java @@ -67,17 +67,14 @@ public class OreLayer { @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { - if(event.world.provider.dimensionId != this.dim) return; + World world = event.world; + + if(world.provider == null || world.provider.dimensionId != this.dim) return; if(this.noise == null) { this.noise = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + (ore.getID() * 31) + yLevel), 4); } - World world = event.world; - - if(world.provider.dimensionId != 0) - return; - int cX = event.chunkX; int cZ = event.chunkZ; diff --git a/src/main/java/com/hbm/world/feature/OreLayer3D.java b/src/main/java/com/hbm/world/feature/OreLayer3D.java index 6c7f97da2..aee3cf43d 100644 --- a/src/main/java/com/hbm/world/feature/OreLayer3D.java +++ b/src/main/java/com/hbm/world/feature/OreLayer3D.java @@ -16,6 +16,10 @@ public class OreLayer3D { NoiseGeneratorPerlin noiseY; NoiseGeneratorPerlin noiseZ; + double scaleH; + double scaleV; + double threshold; + Block block; int meta; int dim = 0; @@ -30,26 +34,35 @@ public class OreLayer3D { this.dim = dim; return this; } + + public OreLayer3D setScaleH(double scale) { + this.scaleH = scale; + return this; + } + + public OreLayer3D setScaleV(double scale) { + this.scaleV = scale; + return this; + } + + public OreLayer3D setThreshold(double threshold) { + this.threshold = threshold; + return this; + } @SubscribeEvent public void onDecorate(DecorateBiomeEvent.Pre event) { + + World world = event.world; - if(event.world.provider.dimensionId != this.dim) return; + if(world.provider == null || world.provider.dimensionId != this.dim) return; if(this.noiseX == null) this.noiseX = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 101), 4); if(this.noiseY == null) this.noiseY = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 102), 4); if(this.noiseZ == null) this.noiseZ = new NoiseGeneratorPerlin(new Random(event.world.getSeed() + 103), 4); - - World world = event.world; - - if(world.provider.dimensionId != 0) - return; int cX = event.chunkX; int cZ = event.chunkZ; - - double scaleH = 0.04D; - double scaleV = 0.25D; for(int x = cX + 8; x < cX + 24; x++) { for(int z = cZ + 8; z < cZ + 24; z++) { @@ -58,7 +71,7 @@ public class OreLayer3D { double nY = this.noiseY.func_151601_a(x * scaleH, z * scaleH); double nZ = this.noiseZ.func_151601_a(x * scaleH, y * scaleV); - if(nX * nY * nZ > 220) { + if(nX * nY * nZ > threshold) { Block target = world.getBlock(x, y, z); if(target.isNormalCube() && target.getMaterial() == Material.rock) { diff --git a/src/main/java/com/hbm/world/feature/SchistStratum.java b/src/main/java/com/hbm/world/feature/SchistStratum.java index d0fd94bb4..f16f4b93a 100644 --- a/src/main/java/com/hbm/world/feature/SchistStratum.java +++ b/src/main/java/com/hbm/world/feature/SchistStratum.java @@ -24,7 +24,7 @@ public class SchistStratum { World world = event.world; - if(world.provider.dimensionId != 0) + if(world.provider == null || world.provider.dimensionId != 0) return; int cX = event.chunkX; diff --git a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java b/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java similarity index 90% rename from src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java rename to src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java index 4bb3ea17b..c5383cca0 100644 --- a/src/main/java/com/hbm/world/worldgen/MapGenNTMFeatures.java +++ b/src/main/java/com/hbm/world/gen/MapGenNTMFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen; +package com.hbm.world.gen; import java.util.Arrays; import java.util.Iterator; @@ -7,9 +7,10 @@ import java.util.Random; import com.hbm.config.GeneralConfig; import com.hbm.config.StructureConfig; -import com.hbm.world.worldgen.components.CivilianFeatures.*; -import com.hbm.world.worldgen.components.OfficeFeatures.*; -import com.hbm.world.worldgen.components.RuinFeatures.*; +import com.hbm.world.gen.component.BunkerComponents.BunkerStart; +import com.hbm.world.gen.component.CivilianFeatures.*; +import com.hbm.world.gen.component.OfficeFeatures.*; +import com.hbm.world.gen.component.RuinFeatures.*; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; @@ -89,6 +90,9 @@ public class MapGenNTMFeatures extends MapGenStructure { /** Returns new StructureStart if structure can be spawned at coords */ @Override protected StructureStart getStructureStart(int chunkX, int chunkZ) { + if(this.rand.nextInt(15) == 0) { //eh might as well, they'll already be prettty rare anyway + return new BunkerStart(this.worldObj, this.rand, chunkX, chunkZ); + } return new MapGenNTMFeatures.Start(this.worldObj, this.rand, chunkX, chunkZ); } @@ -99,10 +103,8 @@ public class MapGenNTMFeatures extends MapGenStructure { public Start(World world, Random rand, int chunkX, int chunkZ) { super(chunkX, chunkZ); - BiomeGenBase biome = world.getBiomeGenForCoords(chunkX * 16 + 8, chunkZ * 16 + 8); - int posY = world.getHeightValue(chunkX * 16 + 8, chunkZ * 16 + 8); - if(posY == 0) - posY = world.getTopSolidOrLiquidBlock(chunkX * 16 + 8, chunkZ * 16 + 8); + BiomeGenBase biome = world.getBiomeGenForCoords(chunkX * 16 + 8, chunkZ * 16 + 8); //Only gets the biome in the corner of the chunk. + final int posY = 64; // Terrain *does not exist* at this stage - at least, for vanilla. Here it has to be called after, but better safe than sorry. /* * Probably want to use nextInt() to increase the structures of rarity here. As a fallback, you could have generic stone brick/useless block ruins that will always be chosen if the diff --git a/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java new file mode 100644 index 000000000..a672e32a3 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/NTMWorldGenerator.java @@ -0,0 +1,123 @@ +package com.hbm.world.gen; + +import java.util.Random; + +import com.hbm.config.StructureConfig; + +import cpw.mods.fml.common.IWorldGenerator; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +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.minecraftforge.event.terraingen.InitMapGenEvent.EventType; +import net.minecraftforge.event.terraingen.PopulateChunkEvent; +import static net.minecraftforge.event.terraingen.TerrainGen.*; +import net.minecraftforge.event.world.WorldEvent; + +public class NTMWorldGenerator implements IWorldGenerator { + + private MapGenNTMFeatures scatteredFeatureGenerator = new MapGenNTMFeatures(); + + 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) { + scatteredFeatureGenerator = (MapGenNTMFeatures) getModdedMapGen(new MapGenNTMFeatures(), 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()); + 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) return; + + switch (event.world.provider.dimensionId) { + case -1: + break; + case 0: + generateOverworldStructures(event.world, event.chunkProvider, event.chunkX, event.chunkZ); + break; + case 1: + break; + } + } + + 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.scatteredFeatureGenerator.func_151539_a(chunkProvider, world, chunkX, chunkZ, ablock); + this.scatteredFeatureGenerator.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 + if(StructureConfig.enableStructures) generateOverworldStructures(world, chunkGenerator, chunkX, chunkZ); //Do it through the post-population generation directly + } + + final int posX = (chunkX << 4) + 8; + final int posZ = (chunkZ << 4) + 8; + BiomeGenBase biome = world.getBiomeGenForCoords(posX, posZ); + + /* 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). */ + + + } + + 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; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/ProceduralStructureStart.java b/src/main/java/com/hbm/world/gen/ProceduralStructureStart.java new file mode 100644 index 000000000..f5dcc1446 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/ProceduralStructureStart.java @@ -0,0 +1,247 @@ +package com.hbm.world.gen; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Random; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; +import net.minecraft.world.gen.structure.StructureStart; + +/** This makes so much more sense! OOP wasn't confusing sometimes, you were just retarded! */ +public class ProceduralStructureStart extends StructureStart { + /** List of queued components to call buildComponent on randomly. Iterated over until hard limits reached. */ + public List queuedComponents = new ArrayList(); + /** List of the component weights for this particular structure -- weights removed as components are 'used up.' */ + protected List componentWeightList; //Make sure to initialize the array list to the weight array size, since might as well + + public ProceduralStructureStart() { } + + public ProceduralStructureStart(int chunkX, int chunkZ) { + super(chunkX, chunkZ); + } + + /** 'starter' is just the starting component, so like a village well. meant to be nice and convenient and not needing a super necessarily. */ + public ProceduralStructureStart buildStart(World world, Random rand, StructureComponent starter, Weight...weights) { + prepareWeights(weights); + + components.add(starter); + queuedComponents.add(starter); + while(!queuedComponents.isEmpty()) { + final int i = rand.nextInt(queuedComponents.size()); + StructureComponent component = queuedComponents.remove(i); + if(component instanceof ProceduralComponent) + ((ProceduralComponent) component).buildComponent(this, rand); //additional components are added to the list; the 'last component' is the caller already. + } + + this.updateBoundingBox(); + return this; + } + + public void prepareWeights(Weight...weights) { + componentWeightList = new ArrayList(weights.length); + + for(int i = 0; i < weights.length; i++) { + weights[i].instancesSpawned = 0; + componentWeightList.add(weights[i]); + } + } + + /** Reads from NBT. */ + @Override + public void func_143017_b(NBTTagCompound nbt) { + + } + + /** Writes to NBT. */ + @Override + public void func_143022_a(NBTTagCompound nbt) { + + } + + protected int getTotalWeight() { + boolean flag = false; + int totalWeight = 0; + Weight weight; + + for(Iterator iterator = componentWeightList.iterator(); iterator.hasNext(); totalWeight += weight.weight) { //Iterates over the entire list to find the total weight + weight = (Weight) iterator.next(); + + if(weight.instanceLimit >= 0 && weight.instancesSpawned < weight.instanceLimit) //can more structure pieces be added, in general? + flag = true; + } + + return flag ? totalWeight : -1; + } + + protected StructureComponent getWeightedComponent(StructureComponent last, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { + int totalWeight = getTotalWeight(); + + if(totalWeight < 0) + return null; + + for(int i = 0; i < 5; i++) { + int value = rand.nextInt(totalWeight); //Pick a random value, based on how many parts there are already + Iterator iterator = componentWeightList.iterator(); + + while(iterator.hasNext()) { + Weight weight = (Weight)iterator.next(); + value -= weight.weight; //Iterate over the list until the value is less than 0 + + if(value < 0) { + if(!weight.canSpawnStructure(componentType, coordMode, last)) //Additional checks based on game state info preventing spawn? start from beginning + break; + + StructureComponent component = weight.lambda.findValidPlacement(components, rand, minX, minY, minZ, coordMode, componentType); //Construct the chosen component + + if(component != null) { //If it has been constructed, add it + weight.instancesSpawned++; + + if(!weight.canSpawnMoreStructures()) //Structure can no longer be spawned regardless of game state? remove as an option + componentWeightList.remove(weight); + + return component; + } + + } + } + } + + return null; + } + + //might remove these, add hard limits so subclasses can create their own implementations + protected int sizeLimit = 50; + protected int distanceLimit = 64; + + /** Gets the next valid component based on the structure start's members */ + protected StructureComponent getNextValidComponent(StructureComponent last, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { + + if(components.size() > sizeLimit) //Hard limit on amount of components + return null; + + if(Math.abs(minX - (func_143019_e() * 16 + 8)) <= distanceLimit && Math.abs(minZ - (func_143018_f() * 16 + 8)) <= distanceLimit) { //Hard limit on spread of structure + + StructureComponent structure = getWeightedComponent(last, rand, minX, minY, minZ, coordMode, componentType + 1); //Returns null if all checks fail + + if(structure != null) { + this.components.add(structure); //Adds component to structure start list + this.queuedComponents.add(structure); //Add it to the list of queued components waiting to be built + } + + return structure; + } + + return null; + } + + /** Useful utility method to automatically construct the appropriate structure bounding box; based on the getNextComponents below!
+ * posX, posY, posZ represent the original anchor point of the structurecomponent (minX, minY, minZ).
+ * offsetX, offsetY, offsetZ all add onto that point, meaning that offsets will always move that anchor towards +x, +y, +z (in terms of south).
+ * maxX, maxY, maxZ additionally are added to get the maximum x, y, z (obviously) in terms of south. An offset of 1 is subtracted, so these do not start at 0, and + * refer to the ACTUAL dimensions of the component.
+ * The initial anchor point is kind of arbitrary based on where it is in the door, so what really matters is keeping it consistent. + */ + public static StructureBoundingBox getComponentToAddBoundingBox(int posX, int posY, int posZ, int offsetX, int offsetY, int offsetZ, int maxX, int maxY, int maxZ, int coordMode) { + switch(coordMode) { + default: + case 0: return new StructureBoundingBox(posX + offsetX, posY + offsetY, posZ + offsetZ, posX + maxX - 1 + offsetX, posY + maxY - 1 + offsetY, posZ + maxZ - 1 + offsetZ); //South + case 1: return new StructureBoundingBox(posX - maxZ + 1 - offsetZ, posY + offsetY, posZ + offsetX, posX - offsetZ, posY + maxY - 1 + offsetY, posZ + maxX - 1 + offsetX); //West + case 2: return new StructureBoundingBox(posX - maxX + 1 - offsetX, posY + offsetY, posZ - maxZ + 1 - offsetZ, posX - offsetX, posY + maxY - 1 + offsetY, posZ + offsetZ); //North + case 3: return new StructureBoundingBox(posX + offsetZ, posY + offsetY, posZ - maxX + 1 - offsetX, posX + maxZ - 1 + offsetZ, posY + maxY - 1 + offsetY, posZ - offsetX); //East + } + } + + /** no class-based multiple inheritance? */ + public static interface ProceduralComponent { + + public default void buildComponent(ProceduralStructureStart start, Random rand) { } //no class-based multiple inheritance? + + /** Gets next component in the direction this component is facing.
'original' refers to the initial starting component (hard distance limits), 'components' refers to the StructureStart list.
+ * offset and offsetY are added to the anchor point of the new component
, referring to the minX and minY respectively (in terms of south).
+ * An offset of 1 is added to the minZ anchor point, relative to south. + */ + public default StructureComponent getNextComponentNormal(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, coordMode, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, coordMode, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, coordMode, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, coordMode, caller.getComponentType()); //East + default: return null; + } + } + + /** Gets next component in the opposite direction this component is facing. */ + public default StructureComponent getNextComponentAntiNormal(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, 2, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, 3, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, 0, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, 1, caller.getComponentType()); //East + default: return null; + } + } + + //Keep in mind for these methods: a given room would have its *actual entrance* opposite the side it is facing. + /** Gets next component, to the West (-X) relative to this component. */ + public default StructureComponent getNextComponentWest(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, 1, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, 2, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, 3, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, 0, caller.getComponentType()); //East + default: return null; + } + } + + /** Gets next component, to the East (+X) relative to this component. */ + public default StructureComponent getNextComponentEast(ProceduralStructureStart start, StructureComponent caller, int coordMode, Random rand, int offset, int offsetY) { + StructureBoundingBox box = caller.getBoundingBox(); + switch(coordMode) { + case 0: return start.getNextValidComponent(caller, rand, box.maxX + 1, box.minY + offsetY, box.maxZ - offset, 3, caller.getComponentType()); //South + case 1: return start.getNextValidComponent(caller, rand, box.minX + offset, box.minY + offsetY, box.maxZ + 1, 0, caller.getComponentType()); //West + case 2: return start.getNextValidComponent(caller, rand, box.minX - 1, box.minY + offsetY, box.minZ + offset, 1, caller.getComponentType()); //North + case 3: return start.getNextValidComponent(caller, rand, box.maxX - offset, box.minY + offsetY, box.minZ - 1, 2, caller.getComponentType()); //East + default: return null; + } + } + } + + /** Returns a new instance of this structureComponent, or null if not able to be placed.
Based on bounding box checks. Please use a method reference in the component. */ + @FunctionalInterface + protected static interface instantiateStructure { + StructureComponent findValidPlacement(List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType); + } + + protected static class Weight { + + public final instantiateStructure lambda; //Read above + + public final int weight; //Weight of this component + public int instancesSpawned; //How many components spawned? + public int instanceLimit; //Limit on amount of components: -1 for no limit + + public Weight(int weight, int limit, instantiateStructure lambda) { + this.weight = weight; + this.instanceLimit = limit; + this.lambda = lambda; + } + + //Checks if another structure can be spawned based on input data + public boolean canSpawnStructure(int componentAmount, int coordMode, StructureComponent component) { + return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; + } + + //Checks if another structure can be spawned at all (used to flag for removal from the list) + public boolean canSpawnMoreStructures() { + return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; + } + + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/world/gen/component/BunkerComponents.java b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java new file mode 100644 index 000000000..acb8481c3 --- /dev/null +++ b/src/main/java/com/hbm/world/gen/component/BunkerComponents.java @@ -0,0 +1,924 @@ +package com.hbm.world.gen.component; + +import java.util.List; +import java.util.Random; + +import com.hbm.blocks.ModBlocks; +import com.hbm.lib.HbmChestContents; +import com.hbm.world.gen.ProceduralStructureStart; +import com.hbm.world.gen.ProceduralStructureStart.ProceduralComponent; +import com.hbm.world.gen.component.Component.ConcreteBricks; + +import net.minecraft.init.Blocks; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraft.world.gen.structure.MapGenStructureIO; +import net.minecraft.world.gen.structure.StructureBoundingBox; +import net.minecraft.world.gen.structure.StructureComponent; + +public class BunkerComponents { + + public static class BunkerStart extends ProceduralStructureStart { + + public BunkerStart() {} + + public BunkerStart(World world, Random rand, int chunkX, int chunkZ) { + super(chunkX, chunkZ); + + this.sizeLimit = 7 + rand.nextInt(6); + this.distanceLimit = 40; + + final int x = chunkX * 16 + 8; + final int z = chunkZ * 16 + 8; + + Weight[] weights = new Weight[] { + new Weight(6, 3, Corridor::findValidPlacement), + new Weight(5, 4, BedroomL::findValidPlacement), + new Weight(10, 3, FunJunction::findValidPlacement), + new Weight(5, 2, BathroomL::findValidPlacement), + new Weight(7, 2, Laboratory::findValidPlacement), + new Weight(5, 1, PowerRoom::findValidPlacement), + }; + + StructureComponent starter = new StartingHub(rand, x, z); + + buildStart(world, rand, starter, weights); + + this.markAvailableHeight(world, rand, 20); + } + + } + + public static void registerComponents() { + MapGenStructureIO.func_143031_a(StartingHub.class, "NTMBStartingHub"); + MapGenStructureIO.func_143031_a(Corridor.class, "NTMBCorridor"); + MapGenStructureIO.func_143031_a(BedroomL.class, "NTMBBedroomL"); + MapGenStructureIO.func_143031_a(FunJunction.class, "NTMBFunJunction"); + MapGenStructureIO.func_143031_a(BathroomL.class, "NTMBBathroomL"); + MapGenStructureIO.func_143031_a(Laboratory.class, "NTMBLaboratory"); + MapGenStructureIO.func_143031_a(PowerRoom.class, "NTMBPowerRoom"); + //TODO more rooms for more variety + } + + //why are we still doing this? + private static ConcreteBricks ConcreteBricks = new ConcreteBricks(); + + public static class StartingHub extends Component implements ProceduralComponent { + + private boolean[] paths = new boolean[3]; + + public StartingHub() { } + + public StartingHub(Random rand, int x, int z) { + super(rand, x, 64, z, 7, 5, 7); + } + + public StartingHub(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + for(int i = 0; i < paths.length; i++) + nbt.setBoolean("p" + i, paths[i]); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + for(int i = 0; i < paths.length; i++) + paths[i] = nbt.getBoolean("p" + i); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + paths[0] = this.getNextComponentEast(start, this, coordBaseMode, rand, 5, 1) != null; + paths[1] = this.getNextComponentAntiNormal(start, this, coordBaseMode, rand, 4, 1) != null; + paths[2] = this.getNextComponentWest(start, this, coordBaseMode, rand, 3, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 6, 3, 6); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 6, 0, 6, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 6, 4, 6, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 1, 4, 4, 3, 4, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 0, 5, 0, 7, 5, 7, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 7, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 7, 6, 4, 7, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 7, 0, 0, 7, 4, 7, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 6, 4, 0, rand, ConcreteBricks); + //meh, fix the area later + final int hpos = Component.getAverageHeight(world, boundingBox, box, boundingBox.maxY) - boundingBox.minY; + //top hatch + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 0, hpos, 5, box); + fillWithMetadataBlocks(world, box, 1, hpos, 4, 1, hpos, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(0)); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 2, hpos, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(2), 2, hpos, 4, box); + placeBlockAtCurrentPosition(world, Blocks.trapdoor, getDecoModelMeta(8) >> 2, 2, hpos, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(3), 2, hpos, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 2, hpos, 7, box); + fillWithMetadataBlocks(world, box, 3, hpos, 4, 3, hpos, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(1)); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 1, 4, hpos, 5, box); + //tunnel downwards + fillWithBlocks(world, box, 1, 6, 4, 1, hpos - 1, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 2, 1, 6, 2, hpos - 1, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 3, 6, 4, 3, hpos - 1, 6, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 2, 6, 4, 2, hpos - 1, 4, ModBlocks.reinforced_stone); + fillWithMetadataBlocks(world, box, 2, 1, 5, 2, hpos - 1, 5, ModBlocks.ladder_sturdy, getDecoMeta(2)); //double check meta + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 5, box); + //machine + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 6, box); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(3), 4, 1, 6, HbmChestContents.antenna/*TODO change */, 5); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 5, 1, 6, box); + fillWithMetadataBlocks(world, box, 3, 2, 6, 5, 2, 6, ModBlocks.concrete_smooth_stairs, getStairMeta(2) | 4); + fillWithMetadataBlocks(world, box, 3, 3, 6, 5, 3, 6, ModBlocks.tape_recorder, getDecoMeta(2)); + //desk + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(1) | 4, 3, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(3) | 4, 4, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, getStairMeta(0) | 4, 5, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 4, 2, 4, box); + //clear out entryways based on path + if(paths[0]) fillWithAir(world, box, 7, 1, 2, 7, 2, 3); + if(paths[1]) fillWithAir(world, box, 3, 1, 0, 4, 2, 0); + if(paths[2]) fillWithAir(world, box, 0, 1, 2, 0, 2, 3); + + return true; + } + } + + public static class Corridor extends Component implements ProceduralComponent { + + private boolean path; + private int[] decorations = new int[2]; + + public Corridor() { } + + public Corridor(int componentType, StructureBoundingBox box, int coordMode, Random rand) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + + decorations[0] = rand.nextInt(6); + decorations[1] = rand.nextInt(6); + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + nbt.setIntArray("d", decorations); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + decorations = nbt.getIntArray("d"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentNormal(start, this, coordBaseMode, rand, 3, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 4, 3, 5); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 4, 0, 5, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 4, 4, 5, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 5, 5, 6, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 6, 4, 4, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 5, 0, 0, 5, 4, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 4, 4, 0, rand, ConcreteBricks); + + //TODO different deco types? maybe plants or vending machines? + //save it to nbt either way + /* DECO */ + //lamps + fillWithBlocks(world, box, 2, 5, 3, 3, 5, 3, ModBlocks.reinforced_lamp_off); + fillWithBlocks(world, box, 2, 4, 3, 3, 4, 3, ModBlocks.fan); + //deco misc + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + final int decoMetaE = getDecoMeta(4); + final int decoMetaW = getDecoMeta(5); + + for(int i = 0; i <= 1; i++) { + final int x = 1 + i * 3; + switch (decorations[i]) { + default: //table w/ chairs + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, x, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, x, 1, 3, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 1, x, 2, 3, box); + break; + case 1://desk w/ computer + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), x, 2, 2, box); + break; + case 2: //couch + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, x, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, i < 1 ? stairMetaE : stairMetaW, x, 1, 3, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, x, 1, 4, box); + break; + case 3: + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, (i < 1 ? stairMetaE : stairMetaW) | 4, x, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, x, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, x, 2, 2, box); + break; + case 4: + fillWithBlocks(world, box, x, 1, 1, x, 3, 1, ModBlocks.deco_tungsten); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, x, 1, 3, box); + fillWithMetadataBlocks(world, box, x, 3, 2, x, 3, 4, ModBlocks.concrete_smooth_stairs, i < 1 ? stairMetaE : stairMetaW); + fillWithBlocks(world, box, x, 1, 5, x, 3, 5, ModBlocks.deco_tungsten); + fillWithMetadataBlocks(world, box, x, 1, 2, x, 2, 2, ModBlocks.tape_recorder, i < 1 ? decoMetaW : decoMetaE); //don't ask me + fillWithMetadataBlocks(world, box, x, 1, 4, x, 2, 4, ModBlocks.tape_recorder, i < 1 ? decoMetaW : decoMetaE); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, i < 1 ? getDecoModelMeta(3) : getDecoModelMeta(2), x, 2, 3, box); + break; + case 5: + placeBlockAtCurrentPosition(world, Blocks.fence, 0, x, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, x, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, x, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, x, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.radiorec, i < 1 ? decoMetaE : decoMetaW, x, 2, 3, box); + break; + } + } + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 2, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 3, 1, 0); + if(path) fillWithAir(world, box, 2, 1, 6, 3, 2, 6); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -3, -1, 0, 6, 6, 7, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Corridor(type, box, coordMode, rand) : null; + } + } + + public static class BedroomL extends Component implements ProceduralComponent { + + private boolean path; + + public BedroomL() { } + + public BedroomL(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentWest(start, this, coordBaseMode, rand, 9, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 4, 1, 1, 8, 3, 4); + fillWithAir(world, box, 1, 1, 5, 8, 3, 9); + //floor + fillWithMetadataBlocks(world, box, 4, 0, 1, 8, 0, 4, ModBlocks.vinyl_tile, 1); + fillWithMetadataBlocks(world, box, 1, 0, 5, 8, 0, 9, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 4, 4, 1, 8, 4, 4, ModBlocks.vinyl_tile); + fillWithBlocks(world, box, 1, 4, 5, 8, 4, 9, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 3, 5, 0, 9, 5, 3, ModBlocks.reinforced_stone); + fillWithBlocks(world, box, 0, 5, 4, 9, 5, 10, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 4, 0, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 10, 8, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 9, 0, 0, 9, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 4, 0, 0, 8, 4, 0, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 3, 0, 0, 3, 4, 4, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 4, 2, 4, 4, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 3, box); + //Beds w/ table + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + placeBed(world, box, 1, 5, 1, 1); + placeBed(world, box, 1, 5, 1, 3); + placeBed(world, box, 2, 3, 1, 6); + placeBed(world, box, 2, 1, 1, 6); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 4, 1, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 4, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 4, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 2, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.radiorec, getDecoMeta(4), 4, 2, 4, box); + //table w/ microwave + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 8, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, 8, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.noteblock, 0, 8, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_microwave, getDecoMeta(4), 8, 2, 4, box); + //desk w/ computer + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW | 4, 6, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, 5, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 4, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 5, 1, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 5, 2, 9, box); + generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 3, 1, 9, HbmChestContents.filingCabinet, 5); + //lockers + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 1, 7, HbmChestContents.lockersVault, 3); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 2, 7, HbmChestContents.lockersVault, 5); + fillWithBlocks(world, box, 8, 1, 8, 8, 2, 8, ModBlocks.deco_tungsten); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 1, 9, HbmChestContents.lockersVault, 4); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 8, 2, 9, HbmChestContents.lockersVault, 5); + fillWithMetadataBlocks(world, box, 8, 3, 7, 8, 3, 9, Blocks.trapdoor, getDecoModelMeta(2) >> 2); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 7, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 8, 1, 0); + if(path) fillWithAir(world, box, 0, 1, 8, 0, 2, 9); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -8, -1, 0, 10, 6, 11, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new BedroomL(type, box, coordMode) : null; + } + } + + public static class FunJunction extends Component implements ProceduralComponent { + + private boolean[] paths = new boolean[2]; + + public FunJunction() { } + + public FunJunction(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + for(int i = 0; i < paths.length; i++) + nbt.setBoolean("p" + i, paths[i]); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + for(int i = 0; i < paths.length; i++) + paths[i] = nbt.getBoolean("p" + i); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + paths[0] = this.getNextComponentEast(start, this, coordBaseMode, rand, 6, 1) != null; + paths[1] = this.getNextComponentNormal(start, this, coordBaseMode, rand, 5, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 6, 3, 10); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 6, 0, 10, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 6, 4, 10, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 7, 5, 11, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 11, 6, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 7, 0, 0, 7, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 6, 4, 0, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 3, box); + fillWithBlocks(world, box, 5, 5, 5, 5, 5, 6, ModBlocks.reinforced_lamp_off); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 3, box); + fillWithBlocks(world, box, 5, 4, 5, 5, 4, 6, ModBlocks.fan); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 8, box); + //couches w/ tables + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaE, 1, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 2, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaW, 3, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 1, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaE, 1, 1, 5, box); + fillWithMetadataBlocks(world, box, 1, 1, 6, 2, 1, 6, Blocks.oak_stairs, stairMetaN); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaW, 3, 1, 6, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 1, 1, 3, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 1, 2, 3, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 3, 1, 4, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 3, 2, 4, box); + //table & chest + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 6, 1, 2, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 6, 2, 2, box); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 6, 1, 3, HbmChestContents.lockersVault, 8); + //desk w/ computer + bobblehead + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 1, 1, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 1, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaN | 4, 1, 1, 10, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 2, 1, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(3), 1, 2, 9, box); + if(rand.nextBoolean()) placeRandomBobble(world, box, rand, 1, 2, 8); + //jukebox + fillWithBlocks(world, box, 6, 1, 8, 6, 2, 8, Blocks.noteblock); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 6, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, getDecoMeta(4), 6, 2, 9, box); + fillWithBlocks(world, box, 6, 3, 8, 6, 3, 9, ModBlocks.concrete_slab); + placeLever(world, box, 2, rand.nextBoolean(), 5, 1, 9); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 4, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 5, 1, 0); + if(paths[0]) fillWithAir(world, box, 7, 1, 5, 7, 2, 6); + if(paths[1]) fillWithAir(world, box, 4, 1, 11, 5, 2, 11); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -5, -1, 0, 8, 6, 12, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new FunJunction(type, box, coordMode) : null; + } + } + + public static class BathroomL extends Component implements ProceduralComponent { + + private boolean path; + + public BathroomL() { } + + public BathroomL(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentEast(start, this, coordBaseMode, rand, 3, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 7, 3, 9); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 7, 0, 9, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 7, 4, 9, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 8, 5, 10, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 0, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 10, 7, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 8, 0, 0, 8, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 1, 0, 0, 7, 4, 0, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 2, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 5, 5, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 2, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 5, 4, 3, box); + //sinks + for(int i = 2; i <= 8; i += 2) { + placeBlockAtCurrentPosition(world, Blocks.cauldron, rand.nextInt(4), 1, 1, i, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_slab, 8, 1, 1, i + 1, box); + placeBlockAtCurrentPosition(world, Blocks.tripwire_hook, getTripwireMeta(3), 1, 2, i, box); + } + //hand-dryers (industrial-strength) + placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 4, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 4, 2, 9, box); + placeBlockAtCurrentPosition(world, Blocks.stone_button, getButtonMeta(2), 3, 2, 9, box); //TODO button meta + placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 3, 6, 1, 9, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, getDecoMeta(2), 6, 2, 9, box); + placeBlockAtCurrentPosition(world, Blocks.stone_button, getButtonMeta(1), 7, 2, 9, box); + //stalls w/ toilets + for(int i = 1; i <= 5; i += 2) { + placeDoor(world, box, ModBlocks.door_metal, 0, false, rand.nextBoolean(), 5, 1, i); + fillWithMetadataBlocks(world, box, 5, 1, i + 1, 5, 2, i + 1, ModBlocks.steel_corner, getDecoMeta(2)); + fillWithMetadataBlocks(world, box, 6, 1, i + 1, 7, 2, i + 1, ModBlocks.steel_wall, getDecoMeta(2)); + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim, 0, 7, 1, i, box); + placeBlockAtCurrentPosition(world, Blocks.trapdoor, getDecoModelMeta(2) >> 2, 7, 2, i, box); + } + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 2, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 3, 1, 0); + if(path) fillWithAir(world, box, 8, 1, 7, 8, 2, 8); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -3, -1, 0, 9, 6, 11, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new BathroomL(type, box, coordMode) : null; + } + } + + public static class Laboratory extends Component implements ProceduralComponent { + + private boolean[] paths = new boolean[2]; + + public Laboratory() { } + + public Laboratory(int componentType, StructureBoundingBox box, int coordMode) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + for(int i = 0; i < paths.length; i++) + nbt.setBoolean("p" + i, paths[i]); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + for(int i = 0; i < paths.length; i++) + paths[i] = nbt.getBoolean("p" + i); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + paths[0] = this.getNextComponentWest(start, this, coordBaseMode, rand, 3, 1) != null; + paths[1] = this.getNextComponentNormal(start, this, coordBaseMode, rand, 6, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 7, 3, 11); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 7, 0, 11, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 7, 4, 11, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 8, 5, 12, ModBlocks.reinforced_stone); + //walls + fillWithBlocks(world, box, 0, 0, 0, 0, 4, 12, ModBlocks.brick_concrete); + fillWithBlocks(world, box, 1, 0, 12, 7, 4, 12, ModBlocks.brick_concrete); + fillWithBlocks(world, box, 8, 0, 0, 8, 4, 12, ModBlocks.brick_concrete); + fillWithBlocks(world, box, 1, 0, 0, 7, 4, 0, ModBlocks.brick_concrete); + + /* DECO */ + //lamps + for(int x = 3; x <= 5; x += 2) { + for(int z = 3; z <= 9; z += 3) { + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, x, 5, z, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, x, 4, z, box); + } + } + //couch w/ table + final int stairMetaW = getStairMeta(0); + final int stairMetaE = getStairMeta(1); + final int stairMetaN = getStairMeta(2); + final int stairMetaS = getStairMeta(3); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaE, 1, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaS, 2, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaW, 3, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 4, 1, 1, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 4, 2, 1, box); + //big ole wall machine + final int decoMetaE = getDecoMeta(4); + final int decoMetaW = getDecoMeta(5); + final int decoModelMetaW = getDecoModelMeta(2); + final int decoModelMetaE = getDecoModelMeta(3); + fillWithBlocks(world, box, 1, 1, 5, 1, 3, 5, ModBlocks.deco_tungsten); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 1, 1, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelMetaE, 1, 2, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaW, 1, 3, 6, box); + fillWithMetadataBlocks(world, box, 1, 1, 7, 1, 3, 7, ModBlocks.tape_recorder, decoMetaW); + fillWithBlocks(world, box, 1, 1, 8, 1, 3, 8, ModBlocks.deco_tungsten); + fillWithMetadataBlocks(world, box, 1, 1, 9, 1, 1, 10, ModBlocks.tape_recorder, decoMetaW); + fillWithMetadataBlocks(world, box, 1, 2, 9, 1, 2, 10, ModBlocks.concrete_smooth_stairs, stairMetaE | 4); + fillWithMetadataBlocks(world, box, 1, 3, 9, 1, 3, 10, ModBlocks.tape_recorder, decoMetaW); + fillWithBlocks(world, box, 1, 1, 11, 1, 3, 11, ModBlocks.deco_tungsten); + //desks w/ computers + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(2), 3, 1, 4, HbmChestContents.machineParts, 6); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 3, 1, 5, box); + fillWithMetadataBlocks(world, box, 4, 1, 5, 4, 1, 7, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, 3, 1, 7, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaS | 4, 3, 1, 9, box); + fillWithMetadataBlocks(world, box, 4, 1, 9, 4, 1, 11, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs, stairMetaN, 3, 1, 11, box); + placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 3, 2, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelMetaW, 4, 2, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, decoModelMetaW, 4, 2, 10, box); + //lever wall machine + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW | 4, 7, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 7, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaW, 7, 3, 3, box); + placeLever(world, box, 2, rand.nextBoolean(), 6, 2, 3); + fillWithMetadataBlocks(world, box, 7, 1, 4, 7, 2, 4, ModBlocks.steel_poles, decoMetaE); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 7, 3, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 7, 1, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaE, 7, 1, 6, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 7, 1, 7, box); + fillWithMetadataBlocks(world, box, 7, 2, 5, 7, 2, 7, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + fillWithMetadataBlocks(world, box, 7, 3, 5, 7, 3, 7, ModBlocks.tape_recorder, decoMetaE); + //table w/ chest + placeBlockAtCurrentPosition(world, Blocks.fence, 0, 7, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.wooden_pressure_plate, 0, 7, 2, 9, box); + generateInvContents(world, box, rand, Blocks.chest, getDecoMeta(4), 7, 1, 10, HbmChestContents.labVault, 8); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 5, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 6, 1, 0); + if(paths[0]) fillWithAir(world, box, 0, 1, 2, 0, 2, 3); + if(paths[1]) fillWithAir(world, box, 5, 1, 12, 6, 2, 12); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -6, -1, 0, 9, 6, 12, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new Laboratory(type, box, coordMode) : null; + } + } + + public static class PowerRoom extends Component implements ProceduralComponent { + + private boolean path; + + private int powerType; + + public PowerRoom() { } + + public PowerRoom(int componentType, StructureBoundingBox box, int coordMode, Random rand) { + super(componentType); + this.boundingBox = box; + this.coordBaseMode = coordMode; + + float chance = rand.nextFloat(); + powerType = chance < 0.2 ? 2 : chance < 0.6 ? 1 : 0; + } + + /** write to nbt */ + @Override + protected void func_143012_a(NBTTagCompound nbt) { + super.func_143012_a(nbt); + nbt.setBoolean("p", path); + } + + /** read from nbt */ + @Override + protected void func_143011_b(NBTTagCompound nbt) { + super.func_143011_b(nbt); + path = nbt.getBoolean("p"); + } + + @Override + public void buildComponent(ProceduralStructureStart start, Random rand) { + path = this.getNextComponentEast(start, this, coordBaseMode, rand, 4, 1) != null; + } + + @Override + public boolean addComponentParts(World world, Random rand, StructureBoundingBox box) { + + fillWithAir(world, box, 1, 1, 1, 10, 3, 10); + //floor + fillWithMetadataBlocks(world, box, 1, 0, 1, 10, 0, 10, ModBlocks.vinyl_tile, 1); + //ceiling + fillWithBlocks(world, box, 1, 4, 1, 10, 4, 10, ModBlocks.vinyl_tile); + //upper shield + fillWithBlocks(world, box, 0, 5, 0, 11, 5, 11, ModBlocks.reinforced_stone); + //walls + fillWithRandomizedBlocks(world, box, 0, 0, 0, 11, 4, 0, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 0, 0, 1, 0, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 0, 0, 11, 11, 4, 11, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 11, 0, 1, 11, 4, 10, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 5, 1, 1, 5, 3, 6, rand, ConcreteBricks); + fillWithRandomizedBlocks(world, box, 6, 1, 6, 10, 3, 6, rand, ConcreteBricks); + + /* DECO */ + //lamps + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 3, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 6, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.reinforced_lamp_off, 0, 9, 5, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 3, 4, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 6, 4, 8, box); + placeBlockAtCurrentPosition(world, ModBlocks.fan, 0, 9, 4, 8, box); + //power room stuff + fillWithBlocks(world, box, 7, 2, 6, 9, 2, 6, ModBlocks.reinforced_glass); + int decoMetaE = getDecoMeta(5); + int decoMetaW = getDecoMeta(4); + int decoMetaN = getDecoMeta(3); + int decoMetaS = getDecoMeta(2); + + int stairMetaS = getStairMeta(3); + int stairMetaN = getStairMeta(2); + int stairMetaW = getStairMeta(1); + int stairMetaE = getStairMeta(0); + + switch(this.powerType) { + default: + fillWithBlocks(world, box, 6, 1, 1, 6, 3, 1, ModBlocks.deco_pipe_framed_rusted); + for(int i = 7; i <= 9; i += 2) { + placeBlockAtCurrentPosition(world, ModBlocks.machine_coal_off, decoMetaN, i, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_beam, 2, i, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_coal_off, decoMetaN, i, 3, 1, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 8, 3, 1, box); + placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 2); + for(int i = 1; i <= 3; i += 2) { + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, i, 1, box); + fillWithMetadataBlocks(world, box, 10, i, 2, 10, i, 4, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(8)); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, i, 5, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_framed_rusted, 0, 10, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.fluid_duct_gauge, decoMetaW, 10, 2, 5, box); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_plastic, 0, 6, 1, 5, box); + //chests + generateInvContents(world, box, rand, Blocks.chest, decoMetaS, 7, 1, 5, HbmChestContents.solidFuel, 5); + generateInvContents(world, box, rand, Blocks.chest, decoMetaS, 9, 1, 5, HbmChestContents.solidFuel, 6); + break; + case 1: + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 6, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.cable_detector, 0, 6, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 6, 3, 1, box); + placeLever(world, box, 3, false, 6, 2, 2); + for(int i = 7; i <= 9; i += 2) { + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 8, i, 1, 1, box); //i'm not making another fucking meta method + placeBlockAtCurrentPosition(world, ModBlocks.machine_diesel, decoMetaE, i, 2, 1, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim_rusted, getPillarMeta(4), 8, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_rim_rusted, getPillarMeta(4), 8, 2, 1, box); + fillWithMetadataBlocks(world, box, 7, 3, 1, 9, 3, 1, ModBlocks.concrete_smooth_stairs, stairMetaS); + fillWithBlocks(world, box, 10, 1, 1, 10, 1, 3, ModBlocks.deco_steel); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 10, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_steel, 0, 10, 3, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 2, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(2), 10, 3, 2, box); + fillWithMetadataBlocks(world, box, 10, 2, 3, 10, 3, 3, ModBlocks.tape_recorder, decoMetaW); + fillWithMetadataBlocks(world, box, 9, 1, 2, 9, 1, 3, ModBlocks.steel_grate, 7); + fillWithBlocks(world, box, 9, 1, 5, 10, 1, 5, ModBlocks.barrel_iron); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 10, 2, 5, box); + fillWithBlocks(world, box, 6, 1, 5, 6, 2, 5, ModBlocks.barrel_iron); + placeBlockAtCurrentPosition(world, ModBlocks.barrel_iron, 0, 6, 1, 2, box); + break; + case 2: + for(int i = 7; i <= 9; i += 2) { + fillWithBlocks(world, box, i, 1, 2, i, 1, 4, ModBlocks.deco_lead); + fillWithBlocks(world, box, i, 2, 2, i, 2, 4, ModBlocks.block_lead); + fillWithBlocks(world, box, i, 3, 2, i, 3, 4, ModBlocks.deco_lead); + } + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 1, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.reactor_computer, 0, 8, 2, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_colored_ext, 5, 8, 3, 4, box); + placeLever(world, box, 3, rand.nextBoolean(), 8, 2, 5); + placeBlockAtCurrentPosition(world, ModBlocks.reactor_element, 0, 8, 1, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.reactor_control, 0, 8, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.reactor_element, 0, 8, 3, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 1, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.block_lead, 0, 8, 2, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.block_copper, 0, 8, 3, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.reactor_conductor, 0, 8, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_turbine, 0, 8, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.reactor_conductor, 0, 8, 3, 1, box); + fillWithBlocks(world, box, 9, 1, 1, 9, 3, 1, ModBlocks.deco_steel); + placeBlockAtCurrentPosition(world, ModBlocks.steel_grate, 7, 10, 1, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(1), 10, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaN, 10, 3, 1, box); + fillWithMetadataBlocks(world, box, 6, 1, 1, 7, 1, 1, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(4)); + placeBlockAtCurrentPosition(world, ModBlocks.deco_pipe_quad_rusted, getPillarMeta(4), 7, 3, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.fluid_duct_gauge, decoMetaN, 6, 3, 1, box); + //chest + generateInvContents(world, box, rand, Blocks.chest, decoMetaN, 6, 1, 2, HbmChestContents.nuclearFuel, 8); + break; + } + //transformer + fillWithMetadataBlocks(world, box, 1, 1, 1, 1, 1, 5, ModBlocks.concrete_smooth_stairs, stairMetaW | 4); + fillWithBlocks(world, box, 1, 1, 6, 1, 3, 6, ModBlocks.concrete_pillar); + fillWithMetadataBlocks(world, box, 1, 3, 1, 1, 3, 5, ModBlocks.concrete_smooth_stairs, stairMetaW); + placeBlockAtCurrentPosition(world, ModBlocks.machine_transformer_20, 0, 1, 2, 1, box); + placeBlockAtCurrentPosition(world, ModBlocks.cable_diode, decoMetaN, 1, 2, 2, box); + placeBlockAtCurrentPosition(world, ModBlocks.machine_battery, decoMetaE, 1, 2, 3, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_red_copper, 0, 1, 2, 4, box); + placeBlockAtCurrentPosition(world, ModBlocks.cable_switch, 0, 1, 2, 5, box); + //machine + for(int i = 1; i <= 5; i += 4) { + placeBlockAtCurrentPosition(world, ModBlocks.deco_beryllium, 0, i, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, i, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_beryllium, 0, i, 3, 10, box); + } + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, 2, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_tungsten, 0, 3, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.steel_scaffold, 0, 4, 1, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaS, 2, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 3, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.tape_recorder, decoMetaS, 4, 2, 10, box); + fillWithMetadataBlocks(world, box, 2, 3, 10, 4, 3, 10, ModBlocks.tape_recorder, decoMetaS); + //desk + fillWithMetadataBlocks(world, box, 8, 1, 10, 10, 1, 10, ModBlocks.concrete_smooth_stairs, stairMetaN | 4); + placeBlockAtCurrentPosition(world, ModBlocks.concrete_smooth_stairs, stairMetaE | 4, 10, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.oak_stairs,stairMetaS, 9, 1, 9, box); + placeBlockAtCurrentPosition(world, Blocks.flower_pot, 0, 8, 2, 10, box); + placeBlockAtCurrentPosition(world, ModBlocks.deco_computer, getDecoModelMeta(0), 9, 2, 10, box); + //loot + generateInvContents(world, box, rand, Blocks.chest, decoMetaE, 1, 1, 7, HbmChestContents.machineParts, 6); + generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 7, 1, 10, HbmChestContents.filingCabinet, 4); + //doors + placeDoor(world, box, ModBlocks.door_bunker, 1, true, rand.nextBoolean(), 3, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 1, false, rand.nextBoolean(), 4, 1, 0); + placeDoor(world, box, ModBlocks.door_bunker, 0, false, false, 5, 1, 3); + if(path) fillWithAir(world, box, 11, 1, 7, 11, 2, 8); + + return true; + } + + public static StructureComponent findValidPlacement(List components, Random rand, int x, int y, int z, int coordMode, int type) { + StructureBoundingBox box = ProceduralStructureStart.getComponentToAddBoundingBox(x, y, z, -4, -1, 0, 12, 6, 12, coordMode); + return box.minY > 10 && StructureComponent.findIntersecting(components, box) == null ? new PowerRoom(type, box, coordMode, rand) : null; + } + } +} diff --git a/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java b/src/main/java/com/hbm/world/gen/component/CivilianFeatures.java similarity index 99% rename from src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java rename to src/main/java/com/hbm/world/gen/component/CivilianFeatures.java index 958313bd7..26d7faaba 100644 --- a/src/main/java/com/hbm/world/worldgen/components/CivilianFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/CivilianFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; @@ -568,7 +568,8 @@ public class CivilianFeatures { this.fillWithBlocks(world, box, sizeX - 4, 3, sizeZ - 2, sizeX - 2, 3, sizeZ - 2, ModBlocks.steel_roof, Blocks.air, false); if(!hasPlacedLoot[1]) { this.hasPlacedLoot[1] = this.generateInvContents(world, box, rand, ModBlocks.crate_iron, sizeX - 2, 1, 3, HbmChestContents.nukeTrash, 9); - generateLoreBook(world, box, rand, sizeX - 2, 1, 3, 1, HbmChestContents.books_office_sch); + if(rand.nextInt(2) == 0) + generateLoreBook(world, box, sizeX - 2, 1, 3, 1, HbmChestContents.generateOfficeBook(rand)); } return true; diff --git a/src/main/java/com/hbm/world/worldgen/components/Component.java b/src/main/java/com/hbm/world/gen/component/Component.java similarity index 88% rename from src/main/java/com/hbm/world/worldgen/components/Component.java rename to src/main/java/com/hbm/world/gen/component/Component.java index 9c6c8e527..8ffa1292e 100644 --- a/src/main/java/com/hbm/world/worldgen/components/Component.java +++ b/src/main/java/com/hbm/world/gen/component/Component.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; @@ -8,15 +8,13 @@ import com.hbm.blocks.generic.BlockBobble.BobbleType; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.config.StructureConfig; import com.hbm.handler.MultiblockHandlerXR; -import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBookLore.BookLoreType; import com.hbm.tileentity.machine.TileEntityLockableBase; + import net.minecraft.block.Block; import net.minecraft.block.BlockWeb; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemDoor; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @@ -108,6 +106,26 @@ abstract public class Component extends StructureComponent { 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)) { + total += Math.max(world.getTopSolidOrLiquidBlock(x, z), world.provider.getAverageGroundLevel()); + iterations++; + } + } + } + + if(iterations == 0) + return -1; + + return total / iterations; + } + public int getCoordMode() { return this.coordBaseMode; } @@ -224,35 +242,83 @@ abstract public class Component extends StructureComponent { return metadata; } - /* For Later: - * 0/S: S->S; W->W; N->N; E->E - * 1/W: S->W; W->N; N->E; E->S - * 2/N: S->N; W->E; N->S; E->W - * 3/E: S->E; W->S; N->W; E->N - * 0/b00/W, 1/b01/N, 2/b10/E, 3/b11/S - */ - /** - * Places door at specified location with orientation-adjusted meta - * 0 = West, 1 = North, 2 = East, 3 = South + /* + * 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. + *
  • When the 4th bit is on, the 1st bit indicates whether the door opens to the right or not: on (0b1001) for yes, off (0b1000) for no. + *
  • The bits 1 & 2 (0b0011 or 3) indicate the direction the door is facing. + *
  • When the 4th bit is off, the 3rd bit (0b0100 or 4) indicates whether the door is open or not: on for yes, off for no. Used for doors' interactions with redstone power. + *
  • */ - protected void placeDoor(World world, StructureBoundingBox box, Block door, int meta, int featureX, int featureY, int featureZ) { - switch(this.coordBaseMode) { - default: - break; - case 1: - meta = (meta + 1) % 4; break; - case 2: - meta = meta ^ 2; break; //Flip second bit - case 3: - meta = (meta - 1) % 4; break; - } - + protected void placeDoor(World world, StructureBoundingBox box, Block door, int dirMeta, boolean opensRight, boolean isOpen, int featureX, int featureY, int featureZ) { //isOpen for randomly opened doors int posX = this.getXWithOffset(featureX, featureZ); int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - this.placeBlockAtCurrentPosition(world, door, meta, featureX, featureY, featureZ, box); - ItemDoor.placeDoorBlock(world, posX, posY, posZ, meta, door); + if(!box.isVecInside(posX, posY, posZ)) return; + + switch(this.coordBaseMode) { + default: //South + break; + case 1: //West + dirMeta = (dirMeta + 1) % 4; break; + case 2: //North + dirMeta ^= 2; break; //Flip second bit + 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); + } + } + /** 1 for west face, 2 for east face, 3 for north, 4 for south*/ + protected void placeLever(World world, StructureBoundingBox box, int dirMeta, boolean on, int featureX, int featureY, int featureZ) { + 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 + dirMeta ^= 0b111; + } + } else if(dirMeta >= 5) { + switch(this.coordBaseMode) { + case 1: case 3: //west / east + dirMeta = (dirMeta + 1) % 2 + 5; + } + } 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? + case 1: //West + if(dirMeta <= 2) return dirMeta + 2; + else if(dirMeta < 4) return dirMeta - 1; + else return dirMeta - 3;// this shit sucks ass + case 2: //North + return dirMeta + (dirMeta % 2 == 0 ? -1 : 1); + case 3: //East + if(dirMeta <= 1) return dirMeta + 3; + else if(dirMeta <= 2) return dirMeta + 1; + else return dirMeta - 2; + default: //South + return dirMeta; + } } /**N:0 W:1 S:2 E:3 */ @@ -316,7 +382,7 @@ abstract public class Component extends StructureComponent { int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - if(world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks + 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); @@ -347,7 +413,7 @@ abstract public class Component extends StructureComponent { int posY = this.getYWithOffset(featureY); int posZ = this.getZWithOffset(featureX, featureZ); - if(world.getBlock(posX, posY, posZ) == block) //replacement for hasPlacedLoot checks + 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); @@ -368,19 +434,17 @@ abstract public class Component extends StructureComponent { return false; } - protected void generateLoreBook(World world, StructureBoundingBox box, Random rand, int featureX, int featureY, int featureZ, int slot, BookLoreType[] books) { + 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) { - ItemStack book = new ItemStack(ModItems.book_lore); - int i = rand.nextInt(books.length); - - BookLoreType.setTypeForStack(book, books[i]); - inventory.setInventorySlotContents(slot, book); + inventory.setInventorySlotContents(slot, stack); } } diff --git a/src/main/java/com/hbm/world/worldgen/components/OfficeFeatures.java b/src/main/java/com/hbm/world/gen/component/OfficeFeatures.java similarity index 96% rename from src/main/java/com/hbm/world/worldgen/components/OfficeFeatures.java rename to src/main/java/com/hbm/world/gen/component/OfficeFeatures.java index 22ad5fead..e4a96eabb 100644 --- a/src/main/java/com/hbm/world/worldgen/components/OfficeFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/OfficeFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; @@ -200,16 +200,17 @@ public class OfficeFeatures { randomlyFillWithBlocks(world, box, rand, 0.25F, 6, 3, 1, sizeX - 1, 3, 6, Blocks.web); randomlyFillWithBlocks(world, box, rand, 0.25F, 10, 3, 7, sizeX - 1, 3, sizeZ - 1, Blocks.web); //Doors - placeDoor(world, box, ModBlocks.door_office, 3, 2, 1, 7); - placeDoor(world, box, ModBlocks.door_office, 3, 3, 1, 7); - placeDoor(world, box, ModBlocks.door_office, 0, 5, 1, 6); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 2, 1, 7); + placeDoor(world, box, ModBlocks.door_office, 3, true, rand.nextBoolean(), 3, 1, 7); + placeDoor(world, box, ModBlocks.door_office, 0, false, rand.nextBoolean(), 5, 1, 6); //Woot if(!this.hasPlacedLoot[0]) this.hasPlacedLoot[0] = generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), sizeX - 4, 1, sizeZ - 1, HbmChestContents.officeTrash, 8); if(!this.hasPlacedLoot[1]) { this.hasPlacedLoot[1] = generateLockableContents(world, box, rand, ModBlocks.safe, getDecoMeta(3), 6, 1, 1, HbmChestContents.machineParts, 10, 0.5D); - generateLoreBook(world, box, rand, 6, 1, 1, 7, HbmChestContents.books_office_sch); + if(rand.nextInt(2) == 0) + generateLoreBook(world, box, 6, 1, 1, 7, HbmChestContents.generateOfficeBook(rand)); } //0b00/0 West, 0b01/1 East, 0b10/2 North, 0b11/3 South, 0b100/4 West UD, 0b101 East UD, 0b110 North UD, 0b111 South UD @@ -427,16 +428,16 @@ public class OfficeFeatures { fillWithRandomizedBlocks(world, box, 2, 11, 10, 3, 11, 10, rand, ConcreteBricks); fillWithRandomizedBlocks(world, box, 2, 9, 10, 2, 10, 10, rand, ConcreteBricks); //Doors - placeDoor(world, box, Blocks.wooden_door, 3, 1, 1, 14); - placeDoor(world, box, Blocks.wooden_door, 3, 2, 1, 14); - placeDoor(world, box, Blocks.wooden_door, 0, 0, 1, 12); - placeDoor(world, box, Blocks.wooden_door, 0, 0, 1, 13); - placeDoor(world, box, ModBlocks.door_office, 0, 6, 1, 3); - placeDoor(world, box, ModBlocks.door_office, 0, 5, 5, 3); - placeDoor(world, box, ModBlocks.door_office, 2, 4, 5, 11); - placeDoor(world, box, ModBlocks.door_office, 0, 10, 9, 3); - placeDoor(world, box, ModBlocks.door_office, 1, 3, 9, 10); - placeDoor(world, box, ModBlocks.door_metal, 0, 5, 13, 3); + placeDoor(world, box, Blocks.wooden_door, 3, false, rand.nextBoolean(), 1, 1, 14); + placeDoor(world, box, Blocks.wooden_door, 3, true, rand.nextBoolean(), 2, 1, 14); + placeDoor(world, box, Blocks.wooden_door, 0, false, rand.nextBoolean(), 0, 1, 12); + placeDoor(world, box, Blocks.wooden_door, 0, true, rand.nextBoolean(), 0, 1, 13); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 6, 1, 3); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 5, 5, 3); + placeDoor(world, box, ModBlocks.door_office, 2, false, rand.nextBoolean(), 4, 5, 11); + placeDoor(world, box, ModBlocks.door_office, 3, false, rand.nextBoolean(), 10, 9, 3); + placeDoor(world, box, ModBlocks.door_office, 1, false, rand.nextBoolean(), 3, 9, 10); + placeDoor(world, box, ModBlocks.door_metal, 3, false, rand.nextBoolean(), 5, 13, 3); //Furniture //Floor 1 int NorthStairMeta = getStairMeta(2); @@ -533,7 +534,8 @@ public class OfficeFeatures { generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 2, 9, 5, HbmChestContents.filingCabinet, 4); generateLockableContents(world, box, rand, ModBlocks.safe, getDecoMeta(2), 1, 9, 13, HbmChestContents.officeTrash, 10, 1.0D); - generateLoreBook(world, box, rand, 1, 9, 13, 7, HbmChestContents.books_office_sch); + if(rand.nextInt(2) == 0) + generateLoreBook(world, box, 1, 9, 13, 7, HbmChestContents.generateOfficeBook(rand)); generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 2, 9, 13, HbmChestContents.filingCabinet, 4); generateInvContents(world, box, rand, ModBlocks.filing_cabinet, getDecoModelMeta(0), 3, 9, 13, HbmChestContents.filingCabinet, 4); diff --git a/src/main/java/com/hbm/world/worldgen/components/RuinFeatures.java b/src/main/java/com/hbm/world/gen/component/RuinFeatures.java similarity index 99% rename from src/main/java/com/hbm/world/worldgen/components/RuinFeatures.java rename to src/main/java/com/hbm/world/gen/component/RuinFeatures.java index a04e2ca2c..b5f5d141d 100644 --- a/src/main/java/com/hbm/world/worldgen/components/RuinFeatures.java +++ b/src/main/java/com/hbm/world/gen/component/RuinFeatures.java @@ -1,4 +1,4 @@ -package com.hbm.world.worldgen.components; +package com.hbm.world.gen.component; import java.util.Random; diff --git a/src/main/java/com/hbm/world/generator/DungeonToolbox.java b/src/main/java/com/hbm/world/generator/DungeonToolbox.java index f8a739378..7e0a899f9 100644 --- a/src/main/java/com/hbm/world/generator/DungeonToolbox.java +++ b/src/main/java/com/hbm/world/generator/DungeonToolbox.java @@ -3,15 +3,10 @@ package com.hbm.world.generator; import java.util.List; import java.util.Random; -import com.hbm.inventory.FluidStack; import com.hbm.inventory.RecipesCommon.MetaBlock; -import com.hbm.items.ModItems; -import com.hbm.items.special.ItemBedrockOre.EnumBedrockOre; -import com.hbm.world.feature.BedrockOre; import net.minecraft.block.Block; import net.minecraft.init.Blocks; -import net.minecraft.item.ItemStack; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenFlowers; @@ -25,11 +20,8 @@ public class DungeonToolbox { return; for(int i = x; i < x + sx; i++) { - for(int j = y; j < y + sy; j++) { - for(int k = z; k < z + sz; k++) { - MetaBlock b = getRandom(blocks, world.rand); world.setBlock(i, j, k, b.block, b.meta, 2); } @@ -93,24 +85,6 @@ public class DungeonToolbox { (new WorldGenMinable(ore, meta, amount, target)).generate(world, rand, x, y, z); } } - - public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier, int chance) { - if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); - } - - public static void generateBedrockOreWithChance(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier, int chance) { - if(chance > 0 && rand.nextInt(chance) == 0) generateBedrockOre(world, rand, chunkX, chunkZ, ore, stack, tier); - } - - public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, int tier) { - generateBedrockOre(world, rand, chunkX, chunkZ, ore, null, tier); - } - - public static void generateBedrockOre(World world, Random rand, int chunkX, int chunkZ, EnumBedrockOre ore, FluidStack stack, int tier) { - int randPosX = chunkX + rand.nextInt(16) + 8; - int randPosZ = chunkZ + rand.nextInt(16) + 8; - BedrockOre.generate(world, randPosX, randPosZ, new ItemStack(ModItems.ore_bedrock, 1, ore.ordinal()), stack, ore.color, tier); - } private static WorldGenFlowers genFlowers = new WorldGenFlowers(null); public static void generateFlowers(World world, Random rand, int chunkX, int chunkZ, Block flower, int meta) { diff --git a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java index 59d68d846..3f02d6cf0 100644 --- a/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java +++ b/src/main/java/com/hbm/world/generator/room/TestDungeonRoom8.java @@ -3,7 +3,7 @@ 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.BookLoreType; +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; @@ -53,7 +53,7 @@ public class TestDungeonRoom8 extends CellularDungeonRoom { 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)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, generateMKU(world)); + ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, generateBook(world)); else ((TileEntitySafe)world.getTileEntity(x + parent.width / 2, y + 2, z + parent.width / 2)).setInventorySlotContents(7, new ItemStack(Items.book)); } @@ -61,57 +61,51 @@ public class TestDungeonRoom8 extends CellularDungeonRoom { } } - public static ItemStack generateMKU(World world) { - ItemStack book = new ItemStack(ModItems.book_lore); - int i = world.rand.nextInt(books.length); - - BookLoreType.setTypeForStack(book, books[i]); - book.stackTagCompound.setInteger("mku_slot", getSlot(world, books[i])); - - return book; - } - - public static int getSlot(World world, BookLoreType type) { - + 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; - //fucking kill me - switch(type) { - case BOOK_DUST: - item = ModItems.dust; break; - case BOOK_FLOWER: - item = ModItems.morning_glory; break; - case BOOK_IODINE: + switch(world.rand.nextInt(6)) { + case 0: + key = "book_iodine"; pages = 3; item = ModItems.powder_iodine; break; - case BOOK_MERCURY: - item = ModItems.ingot_mercury; break; - case BOOK_PHOSPHOROUS: + case 1: + key = "book_phosphorous"; pages = 2; item = ModItems.powder_fire; break; - case BOOK_SYRINGE: + 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: - item = ModItems.nothing; break; + return new ItemStack(ModItems.flame_pony); } - if(recipe == null) //take no chances - return -2; - + int s = 1; for(int i = 0; i < 9; i++) { - if(recipe[i] != null && recipe[i].getItem() == item) { - return i + 1; + s = i + 1; break; } } - return -1; + ItemStack book = ItemBookLore.createBook(key, pages, 0x271E44, 0xFBFFF4); + ItemBookLore.addArgs(book, pages - 1, String.valueOf(s)); + + return book; } - private final static BookLoreType[] books = new BookLoreType[] { - BookLoreType.BOOK_IODINE, BookLoreType.BOOK_PHOSPHOROUS, BookLoreType.BOOK_DUST, BookLoreType.BOOK_MERCURY, BookLoreType.BOOK_FLOWER, BookLoreType.BOOK_SYRINGE - }; - /*public static ItemStack genetateMKU(World world) { ItemStack book = new ItemStack(Items.written_book); diff --git a/src/main/java/com/hbm/world/worldgen/NTMWorldGenerator.java b/src/main/java/com/hbm/world/worldgen/NTMWorldGenerator.java deleted file mode 100644 index 01c7b7acc..000000000 --- a/src/main/java/com/hbm/world/worldgen/NTMWorldGenerator.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.hbm.world.worldgen; - -import java.util.Random; - -import com.hbm.config.StructureConfig; - -import cpw.mods.fml.common.IWorldGenerator; -import net.minecraft.block.Block; -import net.minecraft.world.World; -import net.minecraft.world.chunk.IChunkProvider; -import net.minecraftforge.event.terraingen.InitMapGenEvent.EventType; -import net.minecraftforge.event.terraingen.TerrainGen; - -public class NTMWorldGenerator implements IWorldGenerator { - - private MapGenNTMFeatures NTMFeatureGenerator = new MapGenNTMFeatures(); - - { - NTMFeatureGenerator = (MapGenNTMFeatures) TerrainGen.getModdedMapGen(NTMFeatureGenerator, EventType.CUSTOM); - } - - @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, 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) { } - - private void generateSurface(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { - Block[] ablock = new Block[65536]; - - //WorldConfig.enableStructures - /** Spawns structure starts. Utilizes canSpawnStructureAtCoords() + if else checks in Start constructor */ - if(StructureConfig.enableStructures) { - this.NTMFeatureGenerator.func_151539_a(chunkGenerator, world, chunkX, chunkZ, ablock); - } - - /** Actually generates structures in a given chunk. */ - if(StructureConfig.enableStructures) { - this.NTMFeatureGenerator.generateStructuresInChunk(world, rand, chunkX, chunkZ); - } - } - - private void generateEnd(World world, Random rand, IChunkProvider chunkGenerator, int chunkX, int chunkZ) { } -} diff --git a/src/main/java/com/hbm/world/worldgen/components/ProceduralComponents.java b/src/main/java/com/hbm/world/worldgen/components/ProceduralComponents.java deleted file mode 100644 index 4bf1f4801..000000000 --- a/src/main/java/com/hbm/world/worldgen/components/ProceduralComponents.java +++ /dev/null @@ -1,240 +0,0 @@ -package com.hbm.world.worldgen.components; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Random; - -import net.minecraft.world.gen.structure.StructureBoundingBox; - -public abstract class ProceduralComponents { - - protected List componentWeightList; - - protected static Weight[] weightArray = new Weight[] { }; - - public void prepareComponents() { - componentWeightList = new ArrayList(); - - for(int i = 0; i < weightArray.length; i++) { - weightArray[i].instancesSpawned = 0; - componentWeightList.add(weightArray[i]); - } - } - - protected int getTotalWeight() { - boolean flag = false; - int totalWeight = 0; - Weight weight; - - for(Iterator iterator = componentWeightList.iterator(); iterator.hasNext(); totalWeight += weight.weight) { //Iterates over the entire list to find the total weight - weight = (Weight) iterator.next(); - - if(weight.instanceLimit >= 0 && weight.instancesSpawned < weight.instanceLimit) //can more structure pieces be added, in general? - flag = true; - } - - return flag ? totalWeight : -1; - } - - protected ProceduralComponent getWeightedComponent(ControlComponent original, List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { - int totalWeight = getTotalWeight(); - - if(totalWeight < 0) - return null; - - for(int i = 0; i < 5; i++) { - int value = rand.nextInt(totalWeight); //Pick a random value, based on how many parts there are already - Iterator iterator = componentWeightList.iterator(); - - while(iterator.hasNext()) { - Weight weight = (Weight)iterator.next(); - value -= weight.weight; //Iterate over the list until the value is less than 0 - - if(value < 0) { - if(!weight.canSpawnStructure(componentType, coordMode, original.lastComponent)) //Additional checks based on game state info preventing spawn? start from beginning - break; - - ProceduralComponent component = (ProceduralComponent) weight.lambda.findValidPlacement(components, rand, minX, minY, minZ, coordMode, componentType); //Construct the chosen component - - if(component != null) { //If it has been constructed, add it - weight.instancesSpawned++; - - if(!weight.canSpawnMoreStructures()) //Structure can no longer be spawned regardless of game state? remove as an option - componentWeightList.remove(weight); - - return component; - } - - } - } - } - - return null; - } - - protected int sizeLimit = 50; - protected int distanceLimit = 64; - - protected ProceduralComponent getNextValidComponent(ControlComponent original, List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { - - if(components.size() > sizeLimit) //Hard limit on amount of components - return null; - - if(Math.abs(minX - original.getBoundingBox().minX) <= distanceLimit && Math.abs(minZ - original.getBoundingBox().minZ) <= distanceLimit) { //Hard limit on spread of structure - - ProceduralComponent structure = getWeightedComponent(original, components, rand, minX, minY, minZ, coordMode, componentType + 1); //Returns null if all checks fail - - if(structure != null) { - components.add(structure); //Adds component to structure start list - original.queuedComponents.add(structure); //Add it to the list of queued components waiting to be built - } - - return structure; - } - - return null; - } - - public static StructureBoundingBox getComponentToAddBoundingBox(int posX, int posY, int posZ, int offsetX, int offsetY, int offsetZ, int maxX, int maxY, int maxZ, int coordMode) { - switch(coordMode) { - case 0: //South - return new StructureBoundingBox(posX + offsetX, posY + offsetY, posZ + offsetZ, posX + maxX - 1 + offsetX, posY + maxY - 1 + offsetY, posZ + maxZ - 1 + offsetZ); - case 1: //West - return new StructureBoundingBox(posX - maxZ + 1 - offsetZ, posY + offsetY, posZ + offsetX, posX - offsetZ, posY + maxY - 1 + offsetY, posZ + maxX - 1 + offsetX); - case 2: //North - return new StructureBoundingBox(posX - maxX + 1 - offsetX, posY + offsetY, posZ - maxZ + 1 - offsetZ, posX - offsetX, posY + maxY - 1 + offsetY, posZ + offsetZ); - case 3: //East - return new StructureBoundingBox(posX + offsetZ, posY + offsetY, posZ - maxX + 1 - offsetX, posX + maxZ - 1 + offsetZ, posY + maxY - 1 + offsetY, posZ - offsetX); - default: - return new StructureBoundingBox(posX + offsetX, posY + offsetY, posZ + offsetZ, posX + maxX - 1 + offsetX, posY + maxY - 1 + offsetY, posZ + maxZ - 1 + offsetZ); - } - } - - /** StructureComponent that supports procedural generation */ - public abstract static class ProceduralComponent extends Component { - - public ProceduralComponent() { } - - public ProceduralComponent(int componentType) { - super(componentType); //Important to carry over. - } - - public void buildComponent(ProceduralComponents instance, ControlComponent original, List components, Random rand) { } - - /** Gets next component in the direction this component is facing.
    'original' refers to the initial starting component (hard distance limits), 'components' refers to the StructureStart list. */ - protected ProceduralComponent getNextComponentNormal(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, this.coordBaseMode, this.getComponentType()); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, this.coordBaseMode, this.getComponentType()); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, this.coordBaseMode, this.getComponentType()); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, this.coordBaseMode, this.getComponentType()); - default: - return null; - } - } - - /** Gets next component in the opposite direction this component is facing. */ - protected ProceduralComponent getNextComponentAntiNormal(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, 2, this.getComponentType()); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, 3, this.getComponentType()); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, 0, this.getComponentType()); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, 1, this.getComponentType()); - default: - return null; - } - } - - //Keep in mind for these methods: a given room would have its *actual entrance* opposite the side it is facing. - /** Gets next component, to the West (-X) relative to this component. */ - protected ProceduralComponent getNextComponentNX(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, 1, this.getComponentType()); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, 2, this.getComponentType()); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, 3, this.getComponentType()); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, 0, this.getComponentType()); - default: - return null; - } - } - - /** Gets next component, to the East (+X) relative to this component. */ - protected ProceduralComponent getNextComponentPX(ProceduralComponents instance, ControlComponent original, List components, Random rand, int offset, int offsetY) { - switch(this.coordBaseMode) { - case 0: //South - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX + 1, this.boundingBox.minY + offsetY, this.boundingBox.maxZ - offset, 3, this.getComponentType() + 1); - case 1: //West - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX + offset, this.boundingBox.minY + offsetY, this.boundingBox.maxZ + 1, 0, this.getComponentType() + 1); - case 2: //North - return instance.getNextValidComponent(original, components, rand, this.boundingBox.minX - 1, this.boundingBox.minY + offsetY, this.boundingBox.minZ + offset, 1, this.getComponentType() + 1); - case 3: //East - return instance.getNextValidComponent(original, components, rand, this.boundingBox.maxX - offset, this.boundingBox.minY + offsetY, this.boundingBox.minZ - 1, 2, this.getComponentType() + 1); - default: - return null; - } - } - - /** Finds valid placement, using input information. Should be passed as a method reference to its respective Weight. */ - //Static so no override (cringe!) - //public static ProceduralComponent findValidPlacement(List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType) { return null; } - } - - /** ProceduralComponent that can serve as a master "control component" for procedural generation and building of components. */ - public abstract static class ControlComponent extends ProceduralComponent { - - public List queuedComponents = new ArrayList(); //List of all queued ProceduralComponents waiting to be built. Randomly iterated over until limits like component amt or dist are reached. - public ProceduralComponent lastComponent = this; //Last component to be built. Used as input for the random selection's checks for specific components. - - public ControlComponent() { } - - public ControlComponent(int componentType) { - super(componentType); - } - } - - /** Returns a new instance of this structureComponent, or null if not able to be placed.
    Based on bounding box checks. */ - @FunctionalInterface - interface instantiateStructure { - ProceduralComponent findValidPlacement(List components, Random rand, int minX, int minY, int minZ, int coordMode, int componentType); - } - - protected static class Weight { - - public final instantiateStructure lambda; //Read above - - public final int weight; //Weight of this component - public int instancesSpawned; //How many components spawned? - public int instanceLimit; //Limit on amount of components: -1 for no limit - - public Weight(int weight, int limit, instantiateStructure lambda) { - this.weight = weight; - this.instanceLimit = limit; - this.lambda = lambda; - } - - //Checks if another structure can be spawned based on input data - public boolean canSpawnStructure(int componentAmount, int coordMode, ProceduralComponent component) { - return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; - } - - //Checks if another structure can be spawned at all (used to flag for removal from the list) - public boolean canSpawnMoreStructures() { - return this.instanceLimit < 0 || this.instancesSpawned < this.instanceLimit; - } - - } - -} diff --git a/src/main/resources/META-INF/HBM_at.cfg b/src/main/resources/META-INF/HBM_at.cfg new file mode 100644 index 000000000..ba62b1a85 --- /dev/null +++ b/src/main/resources/META-INF/HBM_at.cfg @@ -0,0 +1,27 @@ +# It's access transformer time, baby! +# Cracks open stupid as shit keywords that are being used wrong because Mojang shouldn't be entrusted with computers. +# After changing anything here, run `./gradlew clean setupDecompWorkspace`, this should scrap all the cached nonsense and patch the src to reflect changes made. + +# EntityLivingBase +public net.minecraft.entity.EntityLivingBase * # everything because fuck i'm not doing 500 of these by hand +# public net.minecraft.entity.EntityLivingBase *() # ditto + +# EntityCreeper +public net.minecraft.entity.monster.EntityCreeper field_82225_f # fuseTime +public net.minecraft.entity.monster.EntityCreeper func_146077_cc()V # explode + +# RenderCreeper +public net.minecraft.client.renderer.entity.RenderCreeper field_77064_a # creeperModel + +# KeyBinding +public net.minecraft.client.settings.KeyBinding field_74516_a # keybindArray +public net.minecraft.client.settings.KeyBinding field_74514_b # hash +public net.minecraft.client.settings.KeyBinding field_151473_c # keybindSet +public net.minecraft.client.settings.KeyBinding field_74513_e # pressed +public net.minecraft.client.settings.KeyBinding field_151474_i # pressTime + +# GuiMainMenu +public net.minecraft.client.gui.GuiMainMenu field_73975_c # splashText + +# EntityLivingBase +public net.minecraft.entity.EntityLivingBase field_82180_bT # previousEquipment diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index bc6b2877e..d7e063169 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -18,22 +18,24 @@ achievement.c44.desc=Galvanisch verzinkt! ...das macht in der Übersetzung sowas achievement.c44=Kapitel 44 achievement.chemistry.desc=Bobmazon Level 3 (Betonziegel) achievement.chemistry=Chemie -achievement.digammaFeel.desc=the hollow within. -achievement.digammaFeel=The Terror of Feeling +achievement.digammaFeel.desc=Meine Augen bluten +achievement.digammaFeel=SEWAGE-INFUSED GARBAGE WORLD achievement.digammaKauaiMoho.desc=Alles ist schrecklich, hier ist etwas heiße Schoki. -achievement.digammaKauaiMoho=Sing, sing mir das Lied der Kauai Moho +achievement.digammaKauaiMoho=SING, SING ME THE SONG OF THE KAUAI MOHO achievement.digammaKnow.desc=what this world is about. -achievement.digammaKnow=The Terror of Knowing -achievement.digammaSee.desc=into the abyss. -achievement.digammaSee=The Terror of Seeing -achievement.digammaUpOnTop.desc=Bewundere meinen Sohn, er ist mein Klon. -achievement.digammaUpOnTop=Bewundere mich, bewundere mein Heim +achievement.digammaKnow=THE TERROR OF KNOWING +achievement.digammaSee.desc=Es ist Dunkel, bring eine Taschenlampe. +achievement.digammaSee=ENTER THE ABYSS +achievement.digammaUpOnTop.desc=Admire my son, he's my clone. +achievement.digammaUpOnTop=ADMIRE ME, ADMIRE MY HOME achievement.fiend.desc=Sei gemein. achievement.fiend2.desc=Sei gemeiner. achievement.fiend2=Unhold 2: Noch unholdiger achievement.fiend=Unhold achievement.freytag.desc=Leibgarde Herold achievement.freytag=Freytag +achievement.goFish.desc=Kreuzigung auf See +achievement.goFish=Go Fish achievement.hidden.desc=Töte einen Enderman mit einem fallenden GÃŒterwagon wÀrend du brennst und mehr als 250 RADs hast. achievement.hidden=Versteckter Katalog achievement.horizonsBonus.desc=junge was ist denn mit dir verkehrt @@ -176,6 +178,8 @@ chem.BALEFIRE=BF-Raketentreibstoffherstellung chem.BP_BIOFUEL=Biodieselumesterung chem.BP_BIOGAS=Biogasherstellung chem.C4=C4-Synthese +chem.CC_CENTRIFUGE=Chlorokalzitspaltung +chem.CC_ELECTROLYSIS=Kalziumchloridelektrolyse chem.CC_HEATING=Fortgeschrittene KohleverflÃŒssigung chem.CC_HEAVY=Einfache KohleverflÃŒssigung chem.CC_I=Erweiterte KohleverflÃŒssigung @@ -223,6 +227,7 @@ chem.NITAN=NITAN-Supertreibstoff mischen chem.NITRIC_ACID=SalpetersÀureherstellung chem.OIL_SAND=Teersand-Extraktion chem.OSMIRIDIUM_DEATH=Osmiridiumlösung-Herstellung +chem.PC_ELECTROLYSIS=Kaliumchloridelektrolyse chem.PEROXIDE=Wasserstoffperoxidherstellung chem.PET=PET-Synthese chem.PETROIL_LEADED=Bleigemisch mischen @@ -281,12 +286,14 @@ container.chemplant=Chemiewerk container.compactLauncher=Kompakt-Startrampe container.craneBoxer=Förderband-Verpacker container.craneExtractor=Förderband-Auswerfer +container.craneGrabber=Förderband-Greifer container.craneInserter=Förderband-Einsetzer container.craneRouter=Förderband-Sortierer container.craneUnboxer=Förderband-Entpacker container.crateDesh=Deshkiste container.crateIron=Eisenkiste container.crateSteel=Stahlkiste +container.crateTemplate=Vorlagenkiste container.crateTungsten=Wolframkiste container.crystallizer=Erzauflöser container.cyclotron=Zyklotron @@ -325,6 +332,8 @@ container.leadBox=SicherheitsbehÀlter container.machineBoiler=ÖlwÀrmer container.machineCMB=CMB-Stahl Hochofen container.machineCoal=Verbrennungsgenerator +container.machineCoker=Koker-Anlage +container.machineCompressor=Kompressor container.machineCrucible=Schmelztiegel container.machineDiesel=Dieselgenerator container.machineElectricBoiler=Elektrischer ÖlwÀrmer @@ -384,6 +393,7 @@ container.reactorSmall=Atomreaktor container.reix=Rei-X Hauptrechner container.rtg=Radioisotopengenerator container.rtgFurnace=RTG-Ofen +container.rttyCounter=Redstone-over-Radio ItemzÀhler container.rttyReceiver=Redstone-over-Radio EmpfÀnger container.rttySender=Redstone-over-Radio Sender container.safe=Panzerschrank @@ -395,6 +405,7 @@ container.soyuzLauncher=Soyuz-Startplatform container.storageDrum=AtommÃŒll-Lagertrommel container.teleLinker=TelLink-GerÀt container.teleporter=Teleporter +container.trainTram=Elektrischer Flachwagen container.turbinegas=Kombizyklus-Gasturbine container.turretArty=Greg container.turretChekhov=Tschechows Gewehr @@ -415,6 +426,7 @@ container.zirnox=ZIRNOX Atomreaktor crucible.aa=Herstellung - Fortgeschrittene Legierung crucible.cdalloy=Herstellung Cadmiumstahl +crucible.cmb=Herstellung CMB-Stahl crucible.ferro=Herstellung - Ferrouran crucible.hematite=Herstellung - Eisen aus HÀmatit crucible.hss=Herstellung - Schnellarbeitsstahl @@ -496,13 +508,24 @@ digamma.title=DIGAMMA-DIAGNOSEGERÄT entity.entity_cyber_crab.name=Cyber-Krabbe entity.entity_elder_one.name=Quackos der Älteste entity.entity_fucc_a_ducc.name=Ente +entity.entity_glyphid.name=Glyphid +entity.entity_glyphid_behemoth.name=Glyphid-Behemoth +entity.entity_glyphid_blaster.name=Glyphid-Blaster +entity.entity_glyphid_bombardier.name=Glyphid-Bombardierer +entity.entity_glyphid_brawler.name=Glyphid-SchlÀger +entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_nuclear.name=Der dicke Johnson +entity.entity_glyphid_scout.name=Glyphid-SpÀher entity.entity_ntm_fbi.name=FBI Agent entity.entity_ntm_radiation_blaze.name=Kernschmelze-Elementar entity.hbm.entity_ntm_ufo.name=Marsianisches Invasionsschiff entity.entity_mob_hunter_chopper.name=Jagdschrauber entity.entity_mob_mask_man.name=Maskenmann +entity.entity_mob_gold_creeper.name=Goldener Creeper entity.entity_mob_nuclear_creeper.name=Nuklearer Creeper +entity.entity_mob_phosgene_creeper.name=Phosgen-Creeper entity.entity_mob_tainted_creeper.name=Verseuchter Creeper +entity.entity_mob_volatile_creeper.name=Instabiler Creeper entity.entity_taint_crab.name=Verseuchte Krabbe entity.entity_tesla_crab.name=Tesla-Krabbe entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime @@ -511,6 +534,12 @@ entity.hbm.entity_bullet.name=Patrone entity.hbm.entity_rocket.name=Rakete entity.hbm.entity_schrabnel.name=Schrabnel +excavator.crusher=Brecher +excavator.drill=Bohrer +excavator.silktouch=Behutsamkeit +excavator.veinminer=Erzadern-Miner +excavator.walling=Verschalung + flare.ignition=ZÃŒndung flare.valve=Flussventil @@ -596,8 +625,14 @@ hbmfluid.biogas=Biogas hbmfluid.bitumen=Bitumen hbmfluid.blood=Blut hbmfluid.blood_hot=Heißes Blut +hbmfluid.calcium_chloride=Kalziumchlorid-Lösung +hbmfluid.calcium_solution=Kalzium-Lösung hbmfluid.carbondioxide=Kohlenstoffdioxid hbmfluid.chlorine=Chlorgas +hbmfluid.chlorocalcite_cleaned=Gereinigten Chlorokalzit-Lösung +hbmfluid.chlorocalcite_mix=Gemischte Chlorokalzit-Lösung +hbmfluid.chlorocalcite_solution=Chlorokalzit-Lösung +hbmfluid.cholesterol=Cholesterinlösung hbmfluid.coalcreosote=Kohleteer-Kreosot hbmfluid.coalgas=Kohlebenzin hbmfluid.coalgas_leaded=Bleikohlebenzin @@ -613,10 +648,14 @@ hbmfluid.diesel=Diesel hbmfluid.diesel_crack=Crackdiesel hbmfluid.diesel_crack_reform=Hochoktan-Diesel hbmfluid.diesel_reform=Hochoktan-Crackdiesel +hbmfluid.egg=Gelöstes Ei +hbmfluid.estradiol=Estradiollösung hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Endersaft +hbmfluid.fishoil=Fischöl hbmfluid.fracksol=Frackinglösung hbmfluid.gas=Erdgas +hbmfluid.gas_coker=Koker-Gas hbmfluid.gasoline=Benzin hbmfluid.gasoline_leaded=Bleibenzin hbmfluid.heatingoil=Heizöl @@ -625,6 +664,7 @@ hbmfluid.heavyoil=Schweröl hbmfluid.heavyoil_vacuum=Vakuum-Schweröl hbmfluid.heavywater=Schweres Wasser hbmfluid.helium3=Helium-3 +hbmfluid.helium4=Helium-4 hbmfluid.hotcrackoil=Heißes Crack-Öl hbmfluid.hotoil=Heißes Rohöl hbmfluid.hotsteam=Dichter Dampf @@ -643,11 +683,14 @@ hbmfluid.mug=Mug Root Beer hbmfluid.mug_hot=Heißes Mug Root Beer hbmfluid.mustardgas=Senfgas hbmfluid.naphtha=Mitteldestillat +hbmfluid.naphtha_coker=Koker-Naphtha hbmfluid.naphtha_crack=Crack-Mitteldestillat hbmfluid.nitan=NITAN© 100 Oktan Supertreibstoff hbmfluid.nitric_acid=SalpetersÀure +hbmfluid.nitroglycerin=Nitroglycerin hbmfluid.none=Nichts hbmfluid.oil=Rohöl +hbmfluid.oil_coker=Koker-Öl hbmfluid.oxyhydrogen=Knallgas hbmfluid.oxygen=FlÃŒssiger Sauerstoff hbmfluid.pain=Pandemonium(III)tantalit-Lösung @@ -660,10 +703,12 @@ hbmfluid.plasma_dh3=Deuterium-Helium-3-Plasma hbmfluid.plasma_dt=Deuterium-Tritium-Plasma hbmfluid.plasma_hd=Wasserstoff-Deuterium-Plasma hbmfluid.plasma_ht=Wasserstoff-Tritium-Plasma -hbmfluid.plasma_xm=Xenon-Quecksilber-Plasma +hbmfluid.plasma_xm=Helium-4-Sauerstoff-Plasma +hbmfluid.potassium_chloride=Kaliumchlorid-Lösung hbmfluid.puf6=Plutoniumhexafluorid hbmfluid.radiosolvent=Hochleistungs-Lösungsmittel hbmfluid.reclaimed=Wiederaufbetreitetes Industrieöl +hbmfluid.redmud=Rotschlamm hbmfluid.reformate=Reformat hbmfluid.reformgas=Reformatgas hbmfluid.salient=Saftiges GrÃŒn @@ -671,11 +716,15 @@ hbmfluid.sas3=Schrabidiumtrisulfat hbmfluid.schrabidic=Schrabidische SÀure hbmfluid.seedslurry=Saatgemisch hbmfluid.smear=Industrieöl +hbmfluid.smoke=Abgas +hbmfluid.smoke_leaded=Bleiabgas +hbmfluid.smoke_poison=Giftige Abgase hbmfluid.solvent=Lösungsmittel hbmfluid.sourgas=Saures Gas hbmfluid.spentsteam=Niedrigdruckdampf hbmfluid.steam=Dampf hbmfluid.sulfuric_acid=SchwefelsÀure +hbmfluid.sunfloweroil=Sonnenblumenkernöl hbmfluid.superhotsteam=Superverdichteter Dampf hbmfluid.syngas=Synthesegas hbmfluid.tritium=Tritium @@ -779,6 +828,7 @@ hbmmat.uranium=Uran hbmmat.uranium233=Uran-233 hbmmat.uranium235=Uran-235 hbmmat.uranium238=Uran-238 +hbmmat.watzmud=Giftiger Schlamm hbmmat.whitephosphorus=Weißer Phosphor hbmmat.workersalloy=Desh hbmmat.wroughtiron=Schmiedeeisen @@ -922,14 +972,20 @@ item.ammo_9mm_du.name=9mm Patrone (DU) item.ammo_9mm_rocket.name=9mm Rakete item.ammo_arty.name=16" Artilleriegranate item.ammo_arty_cargo.name=16" Artilleriegranate (Expresslieferung) +item.ammo_arty_chlorine.name=16" Artilleriegranate (Chlorgas) item.ammo_arty_classic.name=16" Artilleriegranate (Das Factorio-Spezial) item.ammo_arty_he.name=16" Artilleriegranate (HE) item.ammo_arty_mini_nuke.name=16" Mikroatomgranate item.ammo_arty_mini_nuke_multi.name=16" Mehrfach-Mikroatomgranate +item.ammo_arty_mustard_gas.name=16" Artilleriegranate (Senfgas) item.ammo_arty_nuke.name=16" Atomare Artilleriegranate +item.ammo_arty_phosgene.name=16" Artilleriegranate (Phosgen) item.ammo_arty_phosphorus.name=16" Phosphor-Artilleriegranate item.ammo_arty_phosphorus_multi.name=16" Mehrfach-Phosphor-Artilleriegranate item.ammo_cell.name=Energiezelle +item.ammo_coilgun.name=Wolframkugel +item.ammo_coilgun_du.name=Ferrourankugel +item.ammo_coilgun_rubber.name=Gummikugel item.ammo_container.name=MunitionsbehÀlter item.ammo_dart.name=Plastikdart (Withernd) item.ammo_dart_nerf.name=NERF-Dart @@ -959,6 +1015,7 @@ item.ammo_grenade_toxic.name=40mm Granate (Chemisch) item.ammo_grenade_tracer.name=40mm Übungsgranate item.ammo_himars_standard.name=227mm gelenkte Artillerierakete item.ammo_himars_standard_he.name=227mm Artillerielenkrakete (HE) +item.ammo_himars_standard_lava.name=227mm Artillerielenkrakete (Lava) item.ammo_himars_standard_mini_nuke.name=227mm Artillerielenkrakete (Miniatombombe) item.ammo_himars_standard_tb.name=227mm Artillerielenkrakete (Thermobarisch) item.ammo_himars_standard_wp.name=227mm Artillerielenkrakete (WP) @@ -1120,6 +1177,7 @@ item.battery_steam_large.name=Großer dampfbetriebener Energiespeichertank item.battery_su.name=Einwegbatterie item.battery_su_l.name=Große Einwegbatterie item.battery_trixite.name=Billige Spark-Batterie-Nachmache +item.bdcl.name=BDCL item.beta.name=Beta-Features item.big_sword.name=Großes Schwert item.billet_am_mix.name=ReaktorfÀhiges Americiumbillet @@ -1203,6 +1261,7 @@ item.bobmazon_weapons.name=Bobmazon: Waffen und Sprengstoffe item.bolt_compound.name=VerstÀrkte Turbinenwelle item.bolt_dura_steel.name=Schnellarbeitsstahlbolzen item.bolt_tungsten.name=Wolframbolzen +item.boltgun.name=Pneumatische Nietenpistole item.bomb_caller.name=Luftschlag Zielmarker item.bomb_waffle.name=Massenvernichtungswaffel item.guide_book.name=Handbuch @@ -1645,6 +1704,7 @@ item.dysfunctional_reactor.name=FunktionsunfÀhiger Atomreaktor item.egg_balefire.name=Balefire-Ei item.egg_balefire.desc=Was fÃŒr ein Vogel legt denn ein radioaktives Ei? item.egg_balefire_shard.name=Balefire-Scherbe +item.egg_glyphid.name=Glyphid-Ei item.elec_axe.name=Elektrische KettensÀge item.elec_pickaxe.name=Schlagbohrmaschine item.elec_shovel.name=Spiralbohrer @@ -1754,6 +1814,8 @@ item.generator_front.name=Generatorfront item.generator_steel.name=Generator item.glitch.name=Glitch item.glowing_stew.name=Leuchtende Pilzsuppe +item.glyphid_meat.name=Glyphidfleisch +item.glyphid_meat_grilled.name=Gegrilltes Glyphidfleisch item.goggles.name=Schutzbrille item.grenade_aschrab.name=Werfbare Antischrabidiumzelle item.grenade_black_hole.name=Schwarzes-Loch-Granate @@ -1816,6 +1878,7 @@ item.gun_calamity.name=KnochensÀge item.gun_calamity_ammo.name=.50 BMG Patrone (LEGACY) item.gun_calamity_dual.name=Sattelkanone item.gun_chemthrower.name=Chemowerfer +item.gun_coilgun.name=Gaußpistole item.gun_cryolator.name=Der Cryolator item.gun_cryolator_ammo.name=Kryozelle item.gun_dampfmaschine.name=Garantiert keine Scherzwaffe @@ -1869,6 +1932,7 @@ item.gun_osipr_ammo2.name=Combine Ball item.gun_panzerschreck.name=Panzerschreck item.gun_proto.name=M42 Nukleares Katapult "Proto MIRV" item.gun_quadro.name=Quattro Formaggi +item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] item.gun_revolver.name=Verbesserter Revolver item.gun_revolver_ammo.name=Bleipatrone item.gun_revolver_blackjack.name=Blackjack Five-Shooter @@ -1905,6 +1969,7 @@ item.gun_stinger_ammo.name=Stinger-Rakete (LEGACY) item.gun_super_shotgun.name=Super Shotgun item.gun_supershotgun.name=Super Shotgun item.gun_thompson.name=Thompson Maschinenpistole +item.gun_uac_pistol.name=UAC .45 Pistole item.gun_uboinik.name=Ubojnik item.gun_uboinik_ammo.name=12x70 Schrotmunition (LEGACY) item.gun_uzi.name=IMI Uzi @@ -2011,6 +2076,7 @@ item.ingot_magnetized_tungsten.name=Magnetisierter Wolframbarren item.ingot_meteorite.name=Meteoritenbarren item.ingot_meteorite_forged.name=Geschmiedeter Meteoritenbarren item.ingot_mox_fuel.name=MOX-Kernbrennstoffbarren +item.ingot_mud.name=Fester Schlammziegel item.ingot_neptunium.name=Neptuniumbarren item.ingot_neptunium_fuel.name=Neptuniumkernbrennstoffbarren item.ingot_niobium.name=Niobbarren @@ -2219,6 +2285,7 @@ item.mold_base.name=Blanke Gussform item.mold.name=Gussform item.morning_glory.name=Zaunwinde item.motor.name=Motor +item.motor_bismuth.name=Bismuth-Motor item.motor_desh.name=Desh-Motor item.mp_c_1.name=Stufe 1 Zielsucher-Schaltkreis item.mp_c_2.name=Stufe 2 Zielsucher-Schaltkreis @@ -2442,16 +2509,20 @@ item.oil_tar.coal.name=Kohleteer item.oil_tar.name=Ölteer item.oil_tar.crude.name=Erdölteer item.oil_tar.crack.name=Crackölteer +item.oil_tar.paraffin.name=Paraffinwachs item.oil_tar.wax.name=Chloriertes Petroleumwachs item.oil_tar.wood.name=Holzteer item.ore.asbestos=Asbest item.ore.borax=Borax +item.ore.chlorocalcite=Chlorokalzit item.ore.copper=Kupfer item.ore.gold=Gold item.ore.iron=Eisen item.ore.niobium=Niob item.ore.titanium=Titan item.ore.tungsten=Wolfram +item.ore.thorium=Thorium +item.ore.uranium=Uran item.ore_bedrock.name=Bedrock-%serz item.ore_byproduct.b_aluminium.name=Kristallines Aluminiumfragment item.ore_byproduct.b_bismuth.name=Kristallines Bismutfragment @@ -2460,9 +2531,13 @@ item.ore_byproduct.b_copper.name=Kristallines Kupferfragment item.ore_byproduct.b_iron.name=Kristallines Eisenfragment item.ore_byproduct.b_lead.name=Kristallines Bleifragment item.ore_byproduct.b_lithium.name=Kristallines Lithiumfragment +item.ore_byproduct.b_polonium.name=Kristallines Poloniumfragment +item.ore_byproduct.b_radium.name=Kristallines Radiumfragment item.ore_byproduct.b_silicon.name=Kristallines Siliziumfragment item.ore_byproduct.b_sulfur.name=Kristallines Schwefelfragment +item.ore_byproduct.b_technetium.name=Kristallines Technetiumfragment item.ore_byproduct.b_titanium.name=Kristallines Titanfragment +item.ore_byproduct.b_uranium.name=Kristallines Uranfragment item.ore_centrifuged.name=Zentrifugiertes %serz item.ore_cleaned.name=Gereinigtes %serz item.ore_deepcleaned.name=Tiefengereinigtes %serz @@ -2470,7 +2545,7 @@ item.ore_enriched.name=Reiches %serz item.ore_nitrated.name=Nitriertes %serz item.ore_nitrocrystalline.name=Nitrokristallines %serz item.ore_purified.name=Pures %serz -item.ore_radcleaaned.name=Strahlengereinigtes %serz +item.ore_radcleaned.name=Strahlengereinigtes %serz item.ore_seared.name=GeÀtztes %serz item.ore_separated.name=Separiertes %serz item.overfuse.name=SingularitÀtsschraubenzieher @@ -2549,6 +2624,7 @@ item.pile_rod_source.name=Chicago Pile Ra226Be-Neutronenquelle item.pile_rod_uranium.name=Chicago Pile Uranstab item.pill_iodine.name=Iodpille item.pill_herbal.name=KrÀuterpaste +item.pill_red.name=Rote Pille item.pin.name=Haarklammer item.pipes_steel.name=Stahlrohre item.pirfenidone.name=Pirfenidon @@ -2589,6 +2665,7 @@ item.plate_schrabidium.name=Schrabidiumplatte item.plate_steel.name=Stahlplatte item.plate_titanium.name=Titanplatte item.polaroid.name=Das Polaroid +item.pollution_detector.name=Verschmutzungsdetektor item.powder_actinium.name=Actiniumstaub item.powder_actinium_tiny.name=Kleiner Haufen Actiniumstaub item.powder_advanced_alloy.name=Fortgeschrittener Legierungsstaub @@ -2611,6 +2688,7 @@ item.powder_caesium.name=Caesiumstaub item.powder_calcium.name=Kalziumstaub item.powder_cerium.name=Cerstaub item.powder_cerium_tiny.name=Kleiner Haufen Cerstaub +item.powder_chlorocalcite.name=Chlorokalzit item.powder_chlorophyte.name=GrÃŒnalgenstaub item.powder_cloud.name=WolkenrÃŒckstÀnde item.powder_co60.name=Kobalt-60-Staub @@ -3076,6 +3154,7 @@ item.steel_shovel.name=Stahlschaufel item.steel_sword.name=Stahlschwert item.stick_c4.name=Stange C4 item.stick_dynamite.name=Stange Dynamit +item.stick_dynamite_fishing.name=Stange Fischerei-Dynamit item.stick_semtex.name=Stange Semtex item.stick_tnt.name=Stange TNT item.stopsign.name=Stopschild-Streitaxt @@ -3138,6 +3217,7 @@ item.titanium_plate.name=Titanbrustpanzer item.titanium_shovel.name=Titanschaufel item.titanium_sword.name=Titanschwert item.toothpicks.name=Zahnstocher +item.train.cargo_tram.name=Elektrischer Flachwagen item.trinitite.name=Trinitit item.tritium_deuterium_cake.name=Tritium-Deuterium-Kuchen item.tsar_core.name=Fusionskern @@ -3225,6 +3305,30 @@ item.waste_u235.name=Erschöpfter Uran-235-Kernbrennstoff item.waste_u233.name=Erschöpfter Uran-233-Kernbrennstoff item.waste_uranium.name=Erschöpfter Urankernbrennstoff item.watch.name=Zerbrochene Taschenuhr +item.watz_pellet.boron.name=Bor-Absorberpellet +item.watz_pellet.du.name=Abgereichertes Uran-Absorberpellet +item.watz_pellet.hes.name=HES-Watzpellet +item.watz_pellet.lead.name=Blei-Absorberpellet +item.watz_pellet.les.name=LES-Watzpellet +item.watz_pellet.mes.name=MES-Watzpellet +item.watz_pellet.mep.name=MEP-Watzpellet +item.watz_pellet.meu.name=MEU-Watzpellet +item.watz_pellet.nqd.name=Angereichertes Naquadah-Watzpellet +item.watz_pellet.nqr.name=Naquadria-Watzpellet +item.watz_pellet.hen.name=HEN-Watzpellet +item.watz_pellet.schrabidium.name=Schrabidium-Watzpellet +item.watz_pellet_depleted.boron.name=Bor-Absorberpellet (Erschöpft) +item.watz_pellet_depleted.du.name=Abgereichertes Uran-Absorberpellet (Erschöpft) +item.watz_pellet_depleted.hes.name=HES-Watzpellet (Erschöpft) +item.watz_pellet_depleted.lead.name=Blei-Absorberpellet (Erschöpft) +item.watz_pellet_depleted.les.name=LES-Watzpellet (Erschöpft) +item.watz_pellet_depleted.mes.name=MES-Watzpellet (Erschöpft) +item.watz_pellet_depleted.mep.name=MEP-Watzpellet (Erschöpft) +item.watz_pellet_depleted.meu.name=MEU-Watzpellet (Erschöpft) +item.watz_pellet_depleted.nqd.name=Angereichertes Naquadah-Watzpellet (Erschöpft) +item.watz_pellet_depleted.nqr.name=Naquadria-Watzpellet (Erschöpft) +item.watz_pellet_depleted.hen.name=HEN-Watzpellet (Erschöpft) +item.watz_pellet_depleted.schrabidium.name=Schrabidium-Watzpellet (Erschöpft) item.weapon_bat.name=Richards Standard item.weapon_bat_nail.name=Das Klischee item.weapon_golf_club.name=SchlÀger des russischen Mafiosos @@ -3264,7 +3368,7 @@ itemGroup.tabTest=Nuclear Tech Mod Test Tab itemGroup.tabWeapon=NTM Waffen und GeschÃŒtze potion.hbm_bang=! ! ! -potion.hbm_death=Schwere Mutation +potion.hbm_death=Astolfisierung potion.hbm_lead=Bleivergiftung potion.hbm_mutation=Verdorbenes Herz potion.hbm_potionsickness=Trankkrankheit @@ -3372,6 +3476,7 @@ tile.block_beryllium.name=Berylliumblock tile.block_bismuth.name=Bismutblock tile.block_boron.name=Borblock tile.block_c4.name=C4-Block +tile.block_cadmium.name=Cadmiumblock tile.block_cap_fritz.name=Fritz-Kola Kronkorkenblock tile.block_cap_korl.name=Korl Kronkorkenblock tile.block_cap_nuka.name=Nuka Kronkorkenblock @@ -3380,6 +3485,7 @@ tile.block_cap_rad.name=S~Cola RAD Kronkorkenblock tile.block_cap_sparkle.name=S~Cola Kronkorkenblock tile.block_cap_star.name=Sunset Sarsaparilla Kronkorkenblock tile.block_cap_sunset.name=Sunset Sarsaparilla Sternkronkorkenblock +tile.block_cdalloy.name=Cadmiumstahlblock tile.block_cobalt.name=Kobaltblock tile.block_coke.coal.name=Kohlekoksblock tile.block_coke.lignite.name=Braunkohlekoksblock @@ -3447,6 +3553,7 @@ tile.block_starmetal.name=§9Sternenmetallblock§r tile.block_steel.name=Stahlblock tile.block_sulfur.name=Schwefelblock tile.block_tantalium.name=Tantalblock +tile.block_tcalloy.name=Technetiumstahlblock tile.block_thorium.name=Thorium-232-Block tile.block_thorium_fuel.name=Thoriumkernbrennstoffblock tile.block_titanium.name=Titanblock @@ -3520,6 +3627,13 @@ tile.c4.name=C4 tile.cable_detector.name=Redstone-Stromschalter tile.cable_diode.name=Rote Kupferdiode tile.cable_switch.name=Stromschalter +tile.capacitor_bus.name=Kondensator-Bus +tile.capacitor_bus.desc=Output fÃŒr Kondensatoren$Kann in einer geraden Linie aneinandergereit werden +tile.capacitor_copper.name=Kupferkondensator +tile.capacitor_gold.name=Goldkondensator +tile.capacitor_niobium.name=Niobkondensator +tile.capacitor_tantalium.name=Tantalkondensator +tile.capacitor.desc=Input: Oben$Output: Unten, ÃŒber Kondensator-Bus tile.charge_c4.name=Abrissladung tile.charge_dynamite.name=Zeitbombe tile.charge_miner.name=Bergbauladung mit ZeitzÃŒnder @@ -3527,6 +3641,7 @@ tile.charge_semtex.name=Semtex-Bergbauladung tile.charger.name=Ladestation tile.cheater_virus.name=Geliertes Euphemium tile.cheater_virus_seed.name=Instabiler Euphemiumschrabid-Block +tile.chimney_brick.name=Schornstein tile.chlorine_gas.name=Chlorgas tile.cluster_aluminium.name=Aluminiumerzcluster tile.cluster_copper.name=Kupfererzcluster @@ -3546,22 +3661,28 @@ tile.concrete_brick_slab.brick_concrete_broken.name=Rissige Betonziegelstufe tile.concrete_brick_slab.brick_concrete_cracked.name=Gebrochene Betonziegelstufe tile.concrete_brick_slab.brick_concrete_mossy.name=Bemooste Betonziegelstufe tile.concrete_brick_slab.brick_ducrete.name=Ducreteziegelstufe -tile.concrete_colored.black.name=Schwarzer Beton -tile.concrete_colored.blue.name=Blauer Beton -tile.concrete_colored.brown.name=Brauner Beton -tile.concrete_colored.cyan.name=TÃŒrkiser Beton -tile.concrete_colored.gray.name=Grauer Beton -tile.concrete_colored.green.name=GrÃŒner Beton -tile.concrete_colored.lightBlue.name=Hellblauer Beton -tile.concrete_colored.lime.name=HellgrÃŒner Beton -tile.concrete_colored.magenta.name=Magenta Beton -tile.concrete_colored.orange.name=Oranger Beton -tile.concrete_colored.pink.name=Rosa Beton -tile.concrete_colored.purple.name=Lila Beton -tile.concrete_colored.red.name=Roter Beton +tile.concrete_colored.black.name=Schwarzer Beton +tile.concrete_colored.blue.name=Blauer Beton +tile.concrete_colored.brown.name=Brauner Beton +tile.concrete_colored.cyan.name=TÃŒrkiser Beton +tile.concrete_colored.gray.name=Grauer Beton +tile.concrete_colored.green.name=GrÃŒner Beton +tile.concrete_colored.lightBlue.name=Hellblauer Beton +tile.concrete_colored.lime.name=HellgrÃŒner Beton +tile.concrete_colored.magenta.name=Magenta Beton +tile.concrete_colored.orange.name=Oranger Beton +tile.concrete_colored.pink.name=Rosa Beton +tile.concrete_colored.purple.name=Lila Beton +tile.concrete_colored.red.name=Roter Beton tile.concrete_colored.silver.name=Hellgrauer Beton -tile.concrete_colored.white.name=Weißer Beton -tile.concrete_colored.yellow.name=Gelber Beton +tile.concrete_colored.white.name=Weißer Beton +tile.concrete_colored.yellow.name=Gelber Beton +tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Gefahrenstreifen +tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Tiefes Indigo +tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrieller Ton +tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrieller Streifen +tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - MÀnnliches Pink +tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysteriöses Lila tile.concrete_pillar.name=StahlbetonsÀule tile.concrete_slab.concrete.name=Betonfliesenstufe tile.concrete_slab.concrete_asbestos.name=Asbestbetonstufe @@ -3581,8 +3702,10 @@ tile.conveyor_triple.name=Dreispuriges Förderband tile.corium_block.name=Corium tile.crane_boxer.name=Förderband-Verpacker tile.crane_extractor.name=Förderband-Auswerfer +tile.crane_grabber.name=Förderband-Greifer tile.crane_inserter.name=Förderband-Einsetzer tile.crane_router.name=Förderband-Sortierer +tile.crate_splitter.name=Förderband-Teiler tile.crane_unboxer.name=Förderband-Entpacker tile.crashed_bomb.name=BlindgÀnger tile.crate.name=Vorratskiste @@ -3595,6 +3718,7 @@ tile.crate_lead.name=Gefahrenstoffkiste tile.crate_metal.name=Maschinenkiste tile.crate_red.name=Rote Kiste tile.crate_steel.name=Stahlkiste +tile.crate_template.name=Vorlagenkiste tile.crate_tungsten.name=Wolframkiste tile.crate_weapon.name=Waffenkiste tile.crystal_hardened.name=GehÀrteter Dunkler Kristall @@ -3688,17 +3812,21 @@ tile.flame_war.name=Flamewar aus der Box tile.float_bomb.name=Schwebebombe tile.fluid_duct.name=Universelles FlÃŒssigkeitsrohr (Veraltet) tile.fluid_duct_box.name=Universelles FlÃŒssigkeitsrohr (Boxrohr) +tile.fluid_duct_exhaust.name=Abgasrohr tile.fluid_duct_gauge.name=Flussmessrohr tile.fluid_duct_gauge.desc=Rohr welches anzeight, wie viel FlÃŒssigkeit$sich pro Tick im Netzwerk bewegt.$Geteilte Netzwerke die ÃŒber FÀsser oder Tanks$verbunden sind, werden als ein einzelnes gezÀhlt. tile.fluid_duct_neo.name=Universelles FlÃŒssigkeitsrohr tile.fluid_duct_paintable.name=Geschirmtes universelles FlÃŒssigkeitsrohr (FÀrbbar) tile.fluid_duct_solid.name=Geschirmtes universelles FlÃŒssigkeitsrohr (Veraltet) +tile.fluid_switch.name=Redstone-Ventil +tile.fluid_valve.name=Ventil tile.foam_layer.name=Schaumdecke tile.foundry_basin.name=Gussbecken tile.foundry_channel.name=Gusskanal tile.foundry_tank.name=Gießerei-Lagerbecken tile.foundry_mold.name=Seichtes Gussbecken tile.foundry_outlet.name=Ausguss +tile.foundry_slagtap.name=Schlackeausguss tile.fraction_spacer.name=Fraktionierungsturm-Teiler tile.frozen_dirt.name=Gefrorene Erde tile.frozen_grass.name=Gefrorenes Gras @@ -3712,6 +3840,7 @@ tile.furnace_steel.name=Stahlofen tile.furnace_steel.desc=Sehr großer Ofen mit Produktionsboni.$Benötigt externe Hitzequelle.$WÀrmetransferrate: ΔT*0.05 TU/t$(Δ heißt Differenz, T heißt Temparatur) tile.fusion_center.name=ZentralmagnetstÃŒck tile.fusion_conductor.name=Supraleiter-Magnet +tile.fusion_conductor_welded.name=Supraleiter-Magnet (Verschweißt) tile.fusion_core.name=Fusionsreaktorsteuerung tile.fusion_hatch.name=Fusionsreaktorzugriffsluke tile.fusion_heater.name=Plasmaerhitzer-Komponente @@ -3743,6 +3872,8 @@ tile.glass_polonium.name=Poloniumglas tile.glass_quartz.name=Quarzglas tile.glass_trinitite.name=Trinity-Glas tile.glass_uranium.name=Uranglas +tile.glyphid_base.name=Glyphidnest +tile.glyphid_spawner.name=Glyphidnest-Spawner tile.gneiss_brick.name=Schieferziegel tile.gneiss_chiseled.name=Gemeißelter Schiefer tile.gneiss_tile.name=Schieferfliese @@ -3760,6 +3891,8 @@ tile.hadron_coil_neodymium.name=Dichte Neodymspule tile.hadron_coil_schrabidate.name=Dichte Schrabidatspule tile.hadron_coil_schrabidium.name=Dichte Schrabidiumspule tile.hadron_coil_starmetal.name=Dichte Sternenmetallspule +tile.hadron_cooler.name=Teilchenbeschleuniger-KÃŒhlungseinheit +tile.hadron_cooler_mk2.nameTeilchenbeschleuniger-KÃŒhlungseinheit - Das Palindrome-Spezial tile.hadron_core.name=Teilchenbeschleuniger-Kernkomponente tile.hadron_diode.name=Schottky-Partikeldiode tile.hadron_plating.name=Teilchenbeschleuniger-Außenwand @@ -3833,8 +3966,11 @@ tile.machine_chungus.name=Leviathan-Dampfturbine tile.machine_chungus.desc=Effizienz: 85%% tile.machine_coal_off.name=Verbrennungsgenerator tile.machine_coal_on.name=Verbrennungsgenerator +tile.machine_coker.name=Koker-Anlage +tile.machine_coker.desc=Verkokt Öl, erzeugt fluides Nebenprodukt.$Benötigt externe Hitzequelle.$WÀrmestransferrate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB-Stahl Hochofen tile.machine_combustion_engine.name=Industrieller Verbrennungsmotor +tile.machine_compressor.name=Kompressor tile.machine_condenser.name=Dampfkondensierer tile.machine_controller.name=Reaktorfernsteuerung tile.machine_converter_he_rf.name=HE zu RF Konverter @@ -3868,6 +4004,8 @@ tile.machine_gascent.name=Gaszentrifuge tile.machine_generator.name=Atomreaktor (Alt) tile.machine_geo.name=Geothermiegenerator tile.machine_hephaestus.name=Geothermischer WÀrmetauscher +tile.machine_industrial_boiler.name=Industrieller Boiler +tile.machine_industrial_boiler.desc=Großer Boiler zum Verdampfen von Wasser oder$Erhitzen von Öl. Benötigt externe Hitzequelle.$WÀrmestransferrate: ΔT*0.01 TU/t$Überdrucksicher tile.machine_industrial_generator.name=Industrieller Generator tile.machine_keyforge.name=Schlossertisch tile.machine_large_turbine.name=Industrielle Dampfturbine @@ -4071,6 +4209,8 @@ tile.pribris.name=RBMK-Schutt tile.pribris_burning.name=Flammender RBMK-Schutt tile.pribris_digamma.name=GeschwÀrzter RBMK-Schutt tile.pribris_radiating.name=GlÃŒhender RBMK-Schutt +tile.radio_torch_counter.name=Redstone-over-Radio ItemzÀhler +tile.radio_torch_counter.desc=Kann auf ebenen FlÀchen oder Komparator-kompatiblen Blöcken platziert werden$Signal basiert auf Anzahl passender Items tile.radio_torch_receiver.name=Redstone-over-Radio EmpfÀnger tile.radio_torch_receiver.desc=Kann auf ebenen FlÀchen oder Komparator-kompatiblen Blöcken platziert werden tile.radio_torch_sender.name=Redstone-over-Radio Sender @@ -4183,6 +4323,7 @@ tile.stone_depth_nether.name=Nether-Tiefenfels tile.stone_gneiss.name=Graphitschiefer tile.stone_porous.name=Poröser Stein tile.stone_resource.asbestos.name=Chrysotil +tile.stone_resource.bauxite.name=Bauxit tile.stone_resource.hematite.name=HÀmatit tile.stone_resource.limestone.name=Kalkstein tile.stone_resource.malachite.name=Malachit @@ -4194,6 +4335,7 @@ tile.struct_launcher_core_large.name=Startrampe-Kernkomponente tile.struct_plasma_core.name=Plasmaerhitzer-Kernkomponente tile.struct_scaffold.name=Startrampe-GerÃŒstblock tile.struct_soyuz_core.name=Soyuz-Startrampe-Kernkomponente +tile.struct_watz_core.name=Watzkraftwerk-Kernkomponente tile.substation.name=Umspannwerk tile.sulfuric_acid_block.name=SchwefelsÀure tile.taint.name=Korrupter Schmutz @@ -4247,13 +4389,16 @@ tile.waste_mycelium.name=Leuchtende Myzel tile.waste_planks.name=Verkohlte Holzbretter tile.waste_trinitite.name=Trinititerz tile.waste_trinitite_red.name=Rotes Trinititerz +tile.watz.name=Watzkraftwerk tile.watz_conductor.name=Watz-Stromanschluss tile.watz_control.name=VerstÀrkte SteuerstÀbe tile.watz_cooler.name=Watz-SuperkÃŒhler tile.watz_core.name=Watzreaktorkern tile.watz_element.name=Watzreaktionskammer tile.watz_end.name=Watz-StabilitÀtselement +tile.watz_end_bolted.name=Watz-StabilitÀtselement (Genietet) tile.watz_hatch.name=Watzreaktorzugriffsluke +tile.watz_pump.name=Watz-Druckpumpe tile.yellow_barrel.name=Radioaktives Fass tile.zirnox_destroyed.name=Zerstörter ZINOX diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 47acb3efb..e3e38d04a 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -26,8 +26,8 @@ achievement.c20_5.desc=??? achievement.c20_5=Chapter [TWENTY POINT FIVE] achievement.c44.desc=Galvanized! I mean, zinc! achievement.c44=Chapter 44 -achievement.centrifuge.desc=centrifugal force is fake don't @ me -achievement.centrifuge=Centripetal Force +achievement.centrifuge.desc=centrifugal force is real don't @ me +achievement.centrifuge=Centrifugal Force achievement.chemplant.desc=Now you're thinking with chemicals! achievement.chemplant=The Factory Grows Pt. 2 achievement.chicagoPile.desc="How were the natives?" / "Very friendly." @@ -36,16 +36,16 @@ achievement.concrete.desc=A Bolshevik's favorite. achievement.concrete=Old Reliable achievement.desh.desc="Come on then, you lot. Places to go!" achievement.desh=Le Verrier -achievement.digammaFeel.desc=the hollow within. -achievement.digammaFeel=The Terror of Feeling +achievement.digammaFeel.desc=My eyes are bleeding +achievement.digammaFeel=SEWAGE-INFUSED GARBAGE WORLD achievement.digammaKauaiMoho.desc=Everything is awful, here's some hot choccy. -achievement.digammaKauaiMoho=Sing, sing me the song of the Kauai Moho +achievement.digammaKauaiMoho=SING, SING ME THE SONG OF THE KAUAI MOHO achievement.digammaKnow.desc=what this world is about. -achievement.digammaKnow=The Terror of Knowing -achievement.digammaSee.desc=into the abyss. -achievement.digammaSee=The Terror of Seeing +achievement.digammaKnow=THE TERROR OF KNOWING +achievement.digammaSee.desc=It's a bit dark, bring a flashlight. +achievement.digammaSee=ENTER THE ABYSS achievement.digammaUpOnTop.desc=Admire my son, he's my clone. -achievement.digammaUpOnTop=Admire Me, Admire my Home +achievement.digammaUpOnTop=ADMIRE ME, ADMIRE MY HOME achievement.fiend.desc=Be mean. achievement.fiend2.desc=Be meaner. achievement.fiend2=Delinquent 2: Delinquent Harder @@ -56,6 +56,8 @@ achievement.fusion.desc=A dance of deuterons, tritons, and energy. achievement.fusion=Fusion achievement.gasCent.desc=Unenriched Uranium hates him! achievement.gasCent=The Zippe Style +achievement.goFish.desc=Nautical Crucifixion +achievement.goFish=Go Fish achievement.hidden.desc=Kill a tainted creeper with a falling boxcar. achievement.hidden=Hidden Catalog achievement.horizonsBonus.desc=honest to god what the hell is wrong with you @@ -319,70 +321,130 @@ book.starter.page18=vÊr is just a guy who has been trapped in the grey void fea #book.rbmk.page16=§4§lAvoid. book_lore.author=By %s -book_lore.test.name=Test -book_lore.test.author=the dude -book_lore.test.page.1=>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.2=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.3=3 -book_lore.test.page.4=4 -book_lore.test.page.5=5 +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.1=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: -book_lore.book_iodine.page.2=apparently the morons from 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 excrete it through the skin, creating an aerosol that is highly contagious. -book_lore.book_iodine.page.3=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 %d +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: +book_lore.book_iodine.page.1=apparently the morons from 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 excrete it through the skin, creating an aerosol that is highly contagious. +book_lore.book_iodine.page.2=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 %d book_lore.book_phosphorous.name=Note book_lore.book_phosphorous.author=Dave -book_lore.book_phosphorous.page.1=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 -book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d +book_lore.book_phosphorous.page.0=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 +book_lore.book_phosphorous.page.1=ingredient is red phosphorous, whihc has to be mixed into slot %d book_lore.book_dust.name=Note book_lore.book_dust.author=Dave -book_lore.book_dust.page.1=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 -book_lore.book_dust.page.2=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 -book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d +book_lore.book_dust.page.0=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 +book_lore.book_dust.page.1=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 +book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_mercury.name=Note book_lore.book_mercury.author=Dave -book_lore.book_mercury.page.1=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 -book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d +book_lore.book_mercury.page.0=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 +book_lore.book_mercury.page.1=replicated by the body? whatever, the mercury goes into slot %d book_lore.book_flower.name=Note book_lore.book_flower.author=Dave -book_lore.book_flower.page.1=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, -book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d +book_lore.book_flower.page.0=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, +book_lore.book_flower.page.1=it does not work with other flowers. the morning glory goes into slot %d book_lore.book_syringe.name=Note book_lore.book_syringe.author=Dave -book_lore.book_syringe.page.1=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 -book_lore.book_syringe.page.2=syringe goes into slot %d +book_lore.book_syringe.page.0=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 +book_lore.book_syringe.page.1=syringe goes into slot %d book_lore.resignation_note.name=Letter of Resignation book_lore.resignation_note.author=Kosma -book_lore.resignation_note.page.1=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and -book_lore.resignation_note.page.2=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. -book_lore.resignation_note.page.3=I'm not coming back on Friday. Just send the paycheck. +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and +book_lore.resignation_note.page.1=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. +book_lore.resignation_note.page.2=I'm not coming back on Friday. Just send the paycheck. book_lore.memo_stocks.name=Intracorporate Memorandum -book_lore.memo_stocks.page.1=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. +book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. book_lore.memo_schrab_gsa.name=Internal Memorandum -book_lore.memo_schrab_gsa.page.1=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum -book_lore.memo_schrab_gsa.page.2=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum +book_lore.memo_schrab_gsa.page.1=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. book_lore.memo_schrab_rd.name=Internal Memorandum -book_lore.memo_schrab_rd.page.1=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. -book_lore.memo_schrab_rd.page.2=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely -book_lore.memo_schrab_rd.page.3=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. -book_lore.memo_schrab_rd.page.4=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. +book_lore.memo_schrab_rd.page.1=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely +book_lore.memo_schrab_rd.page.2=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. +book_lore.memo_schrab_rd.page.3=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. book_lore.memo_schrab_nuke.name=Research Report book_lore.memo_schrab_nuke.author=Doctor Schrabauer -book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. -book_lore.memo_schrab_nuke.page.2=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.3=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.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. +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.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.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.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.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.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 +book_lore.beacon.page.0=Thank you for your purchase of a Mk.2 Illuminated Signal Beacon (rev. 1.3)! This small booklet will provide a short introduction in the operation of the beacon, as well as its inner workings. +book_lore.beacon.page.1=Chapter 1: Architecture $ Each unit is composed of four main parts: The control circuit, a lantern, a fog horn and the casing which houses the other parts. For a detailed explanation of the main circuit, please +book_lore.beacon.page.2=refer to the circuit diagram found on the inside of the maintenance lid of the casing. The lantern is made up of a polycarbonate case containing a dual-color 250 Watt halogen bulb with a standard 200mm socket, replacements +book_lore.beacon.page.3=for the bulb can be ordered from our stores. Third party bulbs are not recommended, as we cannot ensure safe operation. The case is made from a specialized zinc-coated stainless steel and is resistant to weathering. +book_lore.beacon.page.4=Chapter 2: Lantern $ The lantern's primary uses are providing light for ease of maintenance in harsh weather conditions as well as a status indicator. Should the power-on self test (POST) fail, the lantern will +book_lore.beacon.page.5=light up red, otherwise it will light up green. Note that colors can vary depending on the replacement bulb. +book_lore.beacon.page.6=Chapter 3: Fog Horn $ The fog horn is the primary communication device of the beacon. The beacon is designed for peer-to-peer (P2P) communication as well as for message broadcasting. +book_lore.beacon.page.7=Chapter 4: Peer-to-Peer $ For details on communication, refer to the communications handbook. A short rundown of establishing a P2P connection follows: First, the beacon has to give the "START CONNECTION" signal, +book_lore.beacon.page.8=being a single long tone. All available peers should respond with a single long tone as well (order specified by proximity, as well as the communication guidelines outlined in the handbook, section "Responding to a Connection") +book_lore.beacon.page.9=Once the desired peer has responded, give the "ACCEPT CONNECTION" signal, being two long tones, the peer will then also respond with two long tones. All communication afterwards has to happen using pre-negotiated signals, +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 ] cannery.f1=[ Press F1 for help ] @@ -463,6 +525,8 @@ chem.BALEFIRE=BF Rocket Fuel Mixing chem.BP_BIOFUEL=Biofuel Transesterification chem.BP_BIOGAS=Biogas Production chem.C4=C-4 Synthesis +chem.CC_CENTRIFUGE=Chlorocalcite Separation +chem.CC_ELECTROLYSIS=Calcium Chloride Electrolysis chem.CC_HEATING=Advanced Coal Liquefaction chem.CC_HEAVY=Basic Coal Liquefaction chem.CC_I=Enhanced Coal Liquefaction @@ -514,6 +578,7 @@ chem.NITAN=NITAN Super Fuel Mixing chem.NITRIC_ACID=Nitric Acid Production chem.OIL_SAND=Tar Sand Extraction chem.OSMIRIDIUM_DEATH=Osmiridic Solution Production +chem.PC_ELECTROLYSIS=Potassium Chloride Electrolysis chem.PEROXIDE=Hydrogen Peroxide Production chem.PET=PET Synthesis chem.PETROIL_LEADED=Leaded Petroil Mixing @@ -554,6 +619,12 @@ chem.XENON=Linde Xenon Cycle chem.XENON_OXY=Boosted Linde Xenon Cycle chem.YELLOWCAKE=Yellowcake Production +commands.satellite.no_satellite=No satellite using this frequency found! +commands.satellite.not_a_satellite=The held item is not a satellite! +commands.satellite.satellite_descended=Satellite successfully descended. +commands.satellite.satellite_orbited=Satellite launched. +commands.satellite.should_be_run_as_player=This command should be run by a player! + container.amsBase=AMS Base (Deco) container.amsEmitter=AMS Emitter (Deco) container.amsLimiter=AMS Stabilizer (Deco) @@ -572,12 +643,14 @@ container.chemplant=Chemical Plant container.compactLauncher=Compact Launch Pad container.craneBoxer=Conveyor Boxer container.craneExtractor=Conveyor Ejector +container.craneGrabber=Conveyor Grabber container.craneInserter=Conveyor Inserter container.craneRouter=Conveyor Router container.craneUnboxer=Conveyor Unboxer container.crateDesh=Desh Crate container.crateIron=Iron Crate container.crateSteel=Steel Crate +container.crateTemplate=Template Crate container.crateTungsten=Tungsten Crate container.crystallizer=Ore Acidizer container.cyclotron=Cyclotron @@ -617,6 +690,8 @@ container.leadBox=Containment Box container.machineBoiler=Oil Heater container.machineCMB=CMB Steel Furnace container.machineCoal=Combustion Generator +container.machineCoker=Coker Unit +container.machineCompressor=Compressor container.machineCrucible=Crucible container.machineDiesel=Diesel Generator container.machineElectricBoiler=Electric Oil Heater @@ -677,6 +752,7 @@ container.reactorResearch=Research Reactor container.reix=Rei-X Mainframe container.rtg=RT Generator container.rtgFurnace=RTG Furnace +container.rttyCounter=Redstone-over-Radio Item Counter container.rttyReceiver=Redstone-over-Radio Receiver container.rttySender=Redstone-over-Radio Transmitter container.safe=Safe @@ -688,6 +764,7 @@ container.soyuzLauncher=Soyuz Launch Platform container.storageDrum=Nuclear Waste Disposal Drum container.teleLinker=TelLink Device container.teleporter=Teleporter +container.trainTram=Electric Flat Bed Tram container.turbinegas=Combined Cycle Gas Turbine container.turretArty=Greg container.turretChekhov=Chekhov's Gun @@ -708,6 +785,7 @@ container.zirnox=ZIRNOX Nuclear Reactor crucible.aa=Advanced Alloy Production crucible.cdalloy=Cadmium Steel Production +crucible.cmb=CMB Steel Production crucible.ferro=Ferrouranium Production crucible.hematite=Iron Production from Hematite crucible.hss=High-Speed Steel Production @@ -906,6 +984,7 @@ desc.item.gun.lore=to view in-depth lore desc.item.gun.loreFunc=to view in-depth functionality desc.item.gun.manufacturer=Manufacturer: %s desc.item.gun.name=Name: %s +desc.item.gun.pellets=Projectiles: %s - %s desc.item.gun.penetration=Armor Penetration Value: %s desc.item.kitArmor=Armor will be displaced by new set. desc.item.kitHaz=Armor will be displaced by hazmat suit. @@ -941,13 +1020,24 @@ digamma.title=DIGAMMA DIAGNOSTIC entity.entity_cyber_crab.name=Cyber Crab entity.entity_elder_one.name=Quackos The Elder One entity.entity_fucc_a_ducc.name=Duck +entity.entity_glyphid.name=Glyphid +entity.entity_glyphid_behemoth.name=Glyphid Behemoth +entity.entity_glyphid_blaster.name=Glyphid Blaster +entity.entity_glyphid_bombardier.name=Glyphid Bombardier +entity.entity_glyphid_brawler.name=Glyphid Brawler +entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_nuclear.name=Big Man Johnson +entity.entity_glyphid_scout.name=Glyphid Scout entity.entity_ntm_fbi.name=FBI Agent entity.entity_ntm_radiation_blaze.name=Meltdown Elemental entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship entity.entity_mob_hunter_chopper.name=Hunter Chopper entity.entity_mob_mask_man.name=Mask Man +entity.entity_mob_gold_creeper.name=Golden Creeper entity.entity_mob_nuclear_creeper.name=Nuclear Creeper +entity.entity_mob_phosgene_creeper.name=Phosgene Creeper entity.entity_mob_tainted_creeper.name=Tainted Creeper +entity.entity_mob_volatile_creeper.name=Volatile Creeper entity.entity_taint_crab.name=Taint Crab entity.entity_tesla_crab.name=Tesla Crab entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime @@ -956,6 +1046,12 @@ entity.hbm.entity_bullet.name=Bullet entity.hbm.entity_rocket.name=Rocket entity.hbm.entity_schrabnel.name=Schrabnel +excavator.crusher=Toggle Crusher +excavator.drill=Toggle Drill +excavator.silktouch=Toggle Silk Touch +excavator.veinminer=Toggle Vein Miner +excavator.walling=Toggle Walling + flare.ignition=Ignition flare.valve=Flow Valve @@ -987,6 +1083,7 @@ gun.make.CERIX=Cerix Magnus gun.make.COLT=Colt's Manufacturing Company gun.make.COMBINE=The Universal Union gun.make.CUBE=Cube 2: Sauerbraten +gun.make.DRG=Deep Rock Galactic gun.make.ENZINGER=Enzinger Union gun.make.EQUESTRIA=Equestria Missile Systems gun.make.FLIMFLAM=FlimFlam Industries @@ -1008,6 +1105,7 @@ gun.make.MWT=MWT Prototype Labs gun.make.NAZI=Erfurter Maschinenfabrik Geipel gun.make.NONE=- gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.REMINGTON=Remington Arms gun.make.ROCKWELL=Rockwell International Corporation gun.make.ROCKWELL_U=Rockwell International Corporation? gun.make.RYAN=Ryan Industries @@ -1074,6 +1172,7 @@ gun.name.nerf=NERF blaster of unknown design gun.name.osipr=Overwatch Standard Issue Pulse Rifle gun.name.panz=RaketenpanzerbÃŒchse 54 gun.name.quadro=OpenQuadro Guided Man-Portable Missile Launcher +gun.name.remington870=Remington 870 gun.name.revolverCursed=Britannia Standard Issue Motorized Handgun gun.name.sauer=Sauer Shotgun gun.name.spas12=Franchi SPAS-12 @@ -1165,8 +1264,14 @@ hbmfluid.biogas=Biogas hbmfluid.bitumen=Bitumen hbmfluid.blood=Blood hbmfluid.blood_hot=Hot Blood +hbmfluid.calcium_chloride=Calciumchloride Solution +hbmfluid.calcium_solution=Calcium Solution hbmfluid.carbondioxide=Carbon Dioxide hbmfluid.chlorine=Chlorine Gas +hbmfluid.chlorocalcite_cleaned=Cleaned Chlorocalcite Solution +hbmfluid.chlorocalcite_mix=Mixed Chlorocalcite Solution +hbmfluid.chlorocalcite_solution=Chlorocalcite Solution +hbmfluid.cholesterol=Cholesterol Solution hbmfluid.coalcreosote=Coal Tar Creosote hbmfluid.coalgas=Coal Gasoline hbmfluid.coalgas_leaded=Leaded Coal Gasoline @@ -1182,10 +1287,14 @@ hbmfluid.diesel=Diesel hbmfluid.diesel_crack=Cracked Diesel hbmfluid.diesel_crack_reform=High-Octane Cracked Diesel hbmfluid.diesel_reform=High-Octane Diesel +hbmfluid.egg=Dissolved Egg +hbmfluid.estradiol=Estradiol Solution hbmfluid.ethanol=Ethanol hbmfluid.enderjuice=Ender Juice +hbmfluid.fishoil=Fish Oil hbmfluid.fracksol=Fracking Solution hbmfluid.gas=Natural Gas +hbmfluid.gas_coker=Coker Gas hbmfluid.gasoline=Gasoline hbmfluid.gasoline_leaded=Leaded Gasoline hbmfluid.heatingoil=Heating Oil @@ -1194,6 +1303,7 @@ hbmfluid.heavyoil=Heavy Oil hbmfluid.heavyoil_vacuum=Vacuum Heavy Oil hbmfluid.heavywater=Heavy Water hbmfluid.helium3=Helium-3 +hbmfluid.helium4=Helium-4 hbmfluid.hotcrackoil=Hot Cracked Oil hbmfluid.hotoil=Hot Crude Oil hbmfluid.hotsteam=Dense Steam @@ -1212,11 +1322,14 @@ hbmfluid.mug=Mug Root Beer hbmfluid.mug_hot=Hot Mug Root Beer hbmfluid.mustardgas=Mustard Gas hbmfluid.naphtha=Naphtha +hbmfluid.naphtha_coker=Coker Naphtha hbmfluid.naphtha_crack=Cracked Naphtha hbmfluid.nitan=NITAN© 100 Octane Super Fuel hbmfluid.nitric_acid=Nitric Acid +hbmfluid.nitroglycerin=Nitroglycerin hbmfluid.none=None hbmfluid.oil=Crude Oil +hbmfluid.oil_coker=Coker Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution @@ -1229,10 +1342,12 @@ hbmfluid.plasma_dh3=Deuterium-Helium-3 Plasma hbmfluid.plasma_dt=Deuterium-Tritium Plasma hbmfluid.plasma_hd=Hydrogen-Deuterium Plasma hbmfluid.plasma_ht=Hydrogen-Tritium Plasma -hbmfluid.plasma_xm=Xenon-Mercury Plasma +hbmfluid.plasma_xm=Helium-4-Oxygen Plasma +hbmfluid.potassium_chloride=Potassiumchloride Solution hbmfluid.puf6=Plutonium Hexafluoride hbmfluid.radiosolvent=High-Performance Solvent hbmfluid.reclaimed=Reclaimed Industrial Oil +hbmfluid.redmud=Red Mud hbmfluid.reformate=Reformate hbmfluid.reformgas=Reformate Gas hbmfluid.salient=Salient Green @@ -1240,11 +1355,15 @@ hbmfluid.sas3=Schrabidium Trisulfide hbmfluid.schrabidic=Schrabidic Acid hbmfluid.seedslurry=Seeding Slurry hbmfluid.smear=Industrial Oil +hbmfluid.smoke=Smoke +hbmfluid.smoke_leaded=Leaded Smoke +hbmfluid.smoke_poison=Poison Smoke hbmfluid.solvent=Solvent hbmfluid.sourgas=Sour Gas hbmfluid.spentsteam=Low-Pressure Steam hbmfluid.steam=Steam hbmfluid.sulfuric_acid=Sulfuric Acid +hbmfluid.sunfloweroil=Sunflower Seed Oil hbmfluid.superhotsteam=Super Dense Steam hbmfluid.syngas=Syngas hbmfluid.tritium=Tritium @@ -1356,6 +1475,7 @@ hbmmat.uranium=Uranium hbmmat.uranium233=Uranium-233 hbmmat.uranium235=Uranium-235 hbmmat.uranium238=Uranium-238 +hbmmat.watzmud=Poisonous Mud hbmmat.whitephosphorus=White Phosphorus hbmmat.workersalloy=Desh hbmmat.wroughtiron=Wroght Iron @@ -1499,14 +1619,20 @@ item.ammo_9mm_du.name=9mm Round (DU) item.ammo_9mm_rocket.name=9mm Rocket item.ammo_arty.name=16" Artillery Shell item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell +item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell item.ammo_arty_classic.name=16" Artillery Shell (The Factorio Special) item.ammo_arty_he.name=16" High Explosive Artillery Shell item.ammo_arty_mini_nuke.name=16" Micro Nuclear Artillery Shell item.ammo_arty_mini_nuke_multi.name=16" Multi Micro Nuclear Artillery Shell +item.ammo_arty_mustard_gas.name=16" Mustard Gas Artillery Shell item.ammo_arty_nuke.name=16" Nuclear Artillery Shell +item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell item.ammo_arty_phosphorus.name=16" Phosphorus Shell item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell item.ammo_cell.name=Energy Cell +item.ammo_coilgun.name=Coilgun Tungsten Ball +item.ammo_coilgun_du.name=Coilgun Ferrouranium Ball +item.ammo_coilgun_rubber.name=Coilgun Rubber Ball item.ammo_container.name=Ammo Container item.ammo_dart.name=Plastic Dart (Withering) item.ammo_dart_nerf.name=NERF Dart @@ -1536,6 +1662,7 @@ item.ammo_grenade_toxic.name=40mm Grenade (Chemical) item.ammo_grenade_tracer.name=40mm Training Grenade item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) +item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) item.ammo_himars_standard_mini_nuke.name=227mm Guided Artillery Rocket Pod (Mini Nuke) item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric) item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) @@ -1700,6 +1827,7 @@ item.battery_steam_large.name=Large Steam Powered Energy Storage Tank item.battery_su.name=SU-Battery item.battery_su_l.name=Large SU-Battery item.battery_trixite.name=Off-Brand Spark Battery +item.bdcl.name=BDCL item.beta.name=Beta Features item.big_sword.name=Great Sword item.billet_actinium.name=Actinium-227 Billet @@ -1790,6 +1918,7 @@ item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives item.bolt_compound.name=Reinforced Turbine Shaft item.bolt_dura_steel.name=High-Speed Steel Bolt item.bolt_tungsten.name=Tungsten Bolt +item.boltgun.name=Pneumatic Rivet Gun item.bomb_caller.name=Airstrike Designator item.bomb_waffle.name=Waffle of Mass Destruction item.book_guide.name=Guide Book @@ -2273,6 +2402,7 @@ item.early_explosive_lenses.desc=Assembly of 8 high-explosive lenses with an alu item.egg_balefire.name=Balefire Egg item.egg_balefire.desc=What kind of bird lays a radioactive egg? item.egg_balefire_shard.name=Balefire Shard +item.egg_glyphid.name=Glyphid Egg item.elec_axe.name=Electric Chainsaw item.elec_pickaxe.name=Impact Drill item.elec_shovel.name=Spiral Drill @@ -2281,6 +2411,8 @@ item.energy_core.name=Makeshift Energy Core item.entanglement_kit.name=Entanglement Kit item.entanglement_kit.desc=Teleporter crafting item.$Enables dimension-shifting via a$beryllium-enhanced resource scanner. item.euphemium_boots.name=Euphemium Boots +item.euphemium_capacitor.name=Euphemium Capacitor +item.euphemium_capacitor.desc=Permits passive dispersion of accumulated positive energy. item.euphemium_helmet.name=Euphemium Helmet item.euphemium_kit.name=Euphemium Kit item.euphemium_legs.name=Euphemium Leggings @@ -2392,11 +2524,14 @@ item.generator_front.name=Generator Front item.generator_steel.name=Generator Body item.glitch.name=Glitch item.glowing_stew.name=Glowing Mushroom Stew +item.glyphid_meat.name=Glyphid Meat +item.glyphid_meat_grilled.name=Grilled Glyphid Meat item.goggles.name=Protection Goggles item.grenade_aschrab.name=Tossable Antischrabidium Cell item.grenade_black_hole.name=Black Hole Grenade item.grenade_breach.name=Breaching Grenade item.grenade_burst.name=Digger Grenade +item.grenate_cats.name=Grenade of Cats item.grenade_cloud.name=Jar of Cloud item.grenade_cluster.name=Cluster Bomb item.grenade_electric.name=Lightning Bomb @@ -2441,6 +2576,7 @@ item.gun_avenger.name=CZ57 Avenger Minigun item.gun_b92.name=§9B92 Energy Pistol§r item.gun_b92_ammo.name=§9B92 Energy Cell§r item.gun_b93.name=§cB93 Energy Mod§r +item.gun_benelli.name=Benelli Autoshotgun (Drum Mod) item.gun_bf.name=BEL item.gun_bf_ammo.name=Balefire Shell item.gun_bio_revolver.name=Atlas @@ -2454,6 +2590,7 @@ item.gun_calamity.name=Buzzsaw item.gun_calamity_ammo.name=.50 BMG Round (LEGACY) item.gun_calamity_dual.name=Saddle Gun item.gun_chemthrower.name=Chemthrower +item.gun_coilgun.name=Coilgun item.gun_cryolator.name=The Cryolator item.gun_cryolator_ammo.name=Cryo Cell item.gun_dampfmaschine.name=Totally Not a Joke Weapon @@ -2508,6 +2645,7 @@ item.gun_osipr_ammo2.name=Combine Ball item.gun_panzerschreck.name=Panzerschreck item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" item.gun_quadro.name=Quattro Formaggi +item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] item.gun_revolver.name=Enhanced Revolver item.gun_revolver_ammo.name=Lead Bullet item.gun_revolver_blackjack.name=Blackjack Five-Shooter @@ -2546,6 +2684,7 @@ item.gun_super_shotgun.name=Super Shotgun item.gun_super_shotgun.desc=It's super broken! item.gun_supershotgun.name=Super Shotgun item.gun_thompson.name=Thompson Submachine Gun +item.gun_uac_pistol.name=UAC .45 Pistol item.gun_uboinik.name=Uboinik item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) item.gun_uzi.name=IMI Uzi @@ -2660,6 +2799,7 @@ item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot item.ingot_meteorite.name=Meteorite Ingot item.ingot_meteorite_forged.name=Forged Meteorite Ingot item.ingot_mox_fuel.name=Ingot of MOX Fuel +item.ingot_mud.name=Solid Mud Brick item.ingot_neptunium.name=Neptunium Ingot item.ingot_neptunium.desc=That one's my favourite! item.ingot_neptunium.desc.P11=Woo, scary! @@ -2887,6 +3027,7 @@ item.mold_base.name=Blank Foundry Mold item.mold.name=Foundry Mold item.morning_glory.name=Morning Glory item.motor.name=Motor +item.motor_bismuth.name=Bismuth Motor item.motor_desh.name=Desh Motor item.mp_c_1.name=Tier 1 Missile Targeting Circuit item.mp_c_2.name=Tier 2 Missile Targeting Circuit @@ -3025,6 +3166,9 @@ item.mysteryshovel.name=Brittle Spade item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector +item.night_vision.name=Night Vision Goggles +item.night_vision.description.item=Grants you night vision (requires full electric set) +item.night_vision.description.in_armor=%s (grants night vision) item.niter.name=Niter item.no9.name=Mining Helmet item.nossy_hat.name=Fabulous Hat @@ -3118,16 +3262,20 @@ item.oil_detector.noOil=No oil detected. item.oil_tar.coal.name=Coal Tar item.oil_tar.crude.name=Oil Tar item.oil_tar.crack.name=Crack Oil Tar +item.oil_tar.paraffin.name=Paraffin Wax item.oil_tar.wax.name=Chlorinated Petroleum Wax item.oil_tar.wood.name=Wood Tar item.ore.asbestos=Asbestos item.ore.borax=Borax +item.ore.chlorocalcite=Chlorocalcite item.ore.copper=Copper item.ore.gold=Gold item.ore.iron=Iron item.ore.niobium=Niobium item.ore.titanium=Titanium item.ore.tungsten=Tungsten +item.ore.thorium=Thorium +item.ore.uranium=Uranium item.ore_bedrock.name=%s Bedrock Ore item.ore_byproduct.b_aluminium.name=Crystalline Aluminium Fragment item.ore_byproduct.b_bismuth.name=Crystalline Bismuth Fragment @@ -3136,9 +3284,13 @@ item.ore_byproduct.b_copper.name=Crystalline Copper Fragment item.ore_byproduct.b_iron.name=Crystalline Iron Fragment item.ore_byproduct.b_lead.name=Crystalline Lead Fragment item.ore_byproduct.b_lithium.name=Crystalline Lithium Fragment +item.ore_byproduct.b_polonium.name=Crystalline Polonium Fragment +item.ore_byproduct.b_radium.name=Crystalline Radium Fragment item.ore_byproduct.b_silicon.name=Crystalline Silicon Fragment item.ore_byproduct.b_sulfur.name=Crystalline Sulfur Fragment +item.ore_byproduct.b_technetium.name=Crystalline Technetium Fragment item.ore_byproduct.b_titanium.name=Crystalline Titanium Fragment +item.ore_byproduct.b_uranium.name=Crystalline Uranium Fragment item.ore_centrifuged.name=Centrifuged %s Ore item.ore_cleaned.name=Cleaned %s Ore item.ore_deepcleaned.name=Deep Cleaned %s Ore @@ -3146,7 +3298,7 @@ item.ore_enriched.name=Enriched %s Ore item.ore_nitrated.name=Nitrated %s Ore item.ore_nitrocrystalline.name=Nitrocrystalline %s Ore item.ore_purified.name=Purified %s Ore -item.ore_raadcleaned.name=Radiation-Cleaned %s Ore +item.ore_radcleaned.name=Radiation-Cleaned %s Ore item.ore_seared.name=Seared %s Ore item.ore_separated.name=Separated %s Ore item.overfuse.name=Singularity Screwdriver @@ -3260,6 +3412,7 @@ item.pill_iodine.name=Iodine Pill item.pill_iodine.desc=Removes negative effects item.pill_herbal.name=Herbal Paste item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects +item.pill_red.name=Red Pill item.pin.name=Bobby Pin item.pin.desc=Standard success rate of picking a regular lock is ~10%%. item.pipes_steel.name=Steel Pipes @@ -3310,6 +3463,7 @@ item.plate_schrabidium.name=Schrabidium Plate item.plate_steel.name=Steel Plate item.plate_titanium.name=Titanium Plate item.polaroid.name=The Polaroid +item.pollution_detector.name=Pollution Detector item.powder_actinium.name=Actinium Powder item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder item.powder_advanced_alloy.name=Advanced Alloy Powder @@ -3333,6 +3487,7 @@ item.powder_caesium.name=Caesium Powder item.powder_calcium.name=Calcium Powder item.powder_cerium.name=Cerium Powder item.powder_cerium_tiny.name=Tiny Pile of Cerium Powder +item.powder_chlorocalcite.name=Chlorocalcite item.powder_chlorophyte.name=Chlorophyte Powder item.powder_cloud.name=Cloud Residue item.powder_co60.name=Cobalt-60 Powder @@ -3786,6 +3941,9 @@ item.singularity_super_heated.name=Superheated Resonating Singularity item.siox.name=SiOX Cancer Medication item.siox.desc=Reverses mesothelioma with the power of Asbestos! item.siren_track.name=Siren Track +item.sliding_blast_door_skin.0.name=Sliding Blast Door Skin: Default +item.sliding_blast_door_skin.1.name=Sliding Blast Door Skin: Variant 1 +item.sliding_blast_door_skin.2.name=Sliding Blast Door Skin: Variant 2 item.smashing_hammer.name=Smashing Hammer item.solid_fuel.name=Solid Fuel item.solid_fuel_bf.name=Solid Fuel (Balefire) @@ -3812,6 +3970,10 @@ item.stamp_desh_circuit.name=Circuit Stamp (Desh) item.stamp_desh_flat.name=Flat Stamp (Desh) item.stamp_desh_plate.name=Plate Stamp (Desh) item.stamp_desh_wire.name=Wire Stamp (Desh) +item.stamp_desh_357.name=.357 Magnum Stamp (Desh) +item.stamp_desh_44.name=.44 Magnum Stamp (Desh) +item.stamp_desh_50.name=Large Caliber Stamp (Desh) +item.stamp_desh_9.name=Small Caliber Stamp (Desh) item.stamp_iron_circuit.name=Circuit Stamp (Iron) item.stamp_iron_flat.name=Flat Stamp (Iron) item.stamp_iron_plate.name=Plate Stamp (Iron) @@ -3858,6 +4020,7 @@ item.steel_shovel.name=Steel Shovel item.steel_sword.name=Steel Sword item.stick_c4.name=Stick of C-4 item.stick_dynamite.name=Stick of Dynamite +item.stick_dynamite_fishing.name=Stick of Fishing Dynamite item.stick_semtex.name=Stick of Semtex item.stick_tnt.name=Stick of TNT item.stopsign.name=Stop Sign Battle Axe @@ -3920,6 +4083,7 @@ item.titanium_plate.name=Titanium Chestplate item.titanium_shovel.name=Titanium Shovel item.titanium_sword.name=Titanium Sword item.toothpicks.name=Toothpicks +item.train.cargo_tram.name=Electric Flat Bed Tram item.trinitite.name=Trinitite item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake item.tritium_deuterium_cake.desc=Not actual cake, but great$universal fusion fuel! @@ -4017,6 +4181,30 @@ item.waste_uranium.name=Depleted Uranium Fuel item.waste_zfb_mox.name=Depleted ZFB MOX Fuel item.watch.name=Broken Pocket Watch item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. +item.watz_pellet.boron.name=Boron Absorber Pellet +item.watz_pellet.du.name=Depleted Uranium Absorber Pellet +item.watz_pellet.hes.name=HES Watz Pellet +item.watz_pellet.lead.name=Lead Absorber Pellet +item.watz_pellet.les.name=LES Watz Pellet +item.watz_pellet.mes.name=MES Watz Pellet +item.watz_pellet.mep.name=MEP Watz Pellet +item.watz_pellet.meu.name=MEU Watz Pellet +item.watz_pellet.nqd.name=Enriched Naquadah Watz Pellet +item.watz_pellet.nqr.name=Naquadria Watz Pellet +item.watz_pellet.hen.name=HEN Watz Pellet +item.watz_pellet.schrabidium.name=Schrabidium Watz Pellet +item.watz_pellet_depleted.boron.name=Boron Absorber Pellet (Depleted) +item.watz_pellet_depleted.du.name=Depleted Uranium Absorber Pellet (Depleted) +item.watz_pellet_depleted.hes.name=HES Watz Pellet (Depleted) +item.watz_pellet_depleted.lead.name=Lead Absorber Pellet (Depleted) +item.watz_pellet_depleted.les.name=LES Watz Pellet (Depleted) +item.watz_pellet_depleted.mes.name=MES Watz Pellet (Depleted) +item.watz_pellet_depleted.mep.name=MEP Watz Pellet (Depleted) +item.watz_pellet_depleted.meu.name=MEU Watz Pellet (Depleted) +item.watz_pellet_depleted.nqd.name=Enriched Naquadah Watz Pellet (Depleted) +item.watz_pellet_depleted.nqr.name=Naquadria Watz Pellet (Depleted) +item.watz_pellet_depleted.hen.name=HEN Watz Pellet (Depleted) +item.watz_pellet_depleted.schrabidium.name=Schrabidium Watz Pellet (Depleted) item.weapon_bat.name=Richard's Default item.weapon_bat_nail.name=The Cliché item.weapon_golf_club.name=Russian Mobster's Club @@ -4057,7 +4245,7 @@ itemGroup.tabTest=Nuclear Tech Mod Test Tab itemGroup.tabWeapon=NTM Weapons and Turrets potion.hbm_bang=! ! ! -potion.hbm_death=Heavy Mutation +potion.hbm_death=Astolfization potion.hbm_lead=Lead Poisoning potion.hbm_mutation=Tainted Heart potion.hbm_phosphorus=Phosphorus Burns @@ -4177,6 +4365,7 @@ tile.block_beryllium.name=Block of Beryllium tile.block_bismuth.name=Block of Bismuth tile.block_boron.name=Block of Boron tile.block_c4.name=Block of C-4 +tile.block_cadmium.name=Block of Cadmium tile.block_cap_fritz.name=Block of Fritz Cola Bottle Caps tile.block_cap_korl.name=Block of Korl Bottle Caps tile.block_cap_nuka.name=Block of Nuka Cola Bottle Caps @@ -4185,6 +4374,7 @@ tile.block_cap_rad.name=Block of S~Cola RAD Bottle Caps tile.block_cap_sparkle.name=Block of S~Cola Bottle Caps tile.block_cap_star.name=Block of Sunset Sarsaparilla Star Caps tile.block_cap_sunset.name=Block of Sunset Sarsaparilla Bottle Caps +tile.block_cdalloy.name=Block of Cadmium Steel tile.block_cobalt.name=Block of Cobalt tile.block_coke.coal.name=Block of Coal Coke tile.block_coke.lignite.name=Block of Lignite Coke @@ -4256,6 +4446,7 @@ tile.block_starmetal.name=§9Block of Starmetal§r tile.block_steel.name=Block of Steel tile.block_sulfur.name=Block of Sulfur tile.block_tantalium.name=Block of Tantalium +tile.block_tcalloy.name=Block of Technetium Steel tile.block_thorium.name=Block of Thorium-232 tile.block_thorium_fuel.name=Block of Thorium Fuel tile.block_titanium.name=Block of Titanium @@ -4329,6 +4520,13 @@ tile.c4.name=C-4 tile.cable_detector.name=Redstone Power Switch tile.cable_diode.name=Red Copper Diode tile.cable_switch.name=Power Switch +tile.capacitor_bus.name=Capacitor Bus +tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a straight line +tile.capacitor_copper.name=Copper Capacitor +tile.capacitor_gold.name=Golden Capacitor +tile.capacitor_niobium.name=Niobium Capacitor +tile.capacitor_tantalium.name=Tantalium Capacitor +tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus tile.charge_c4.name=Demolition Charge tile.charge_dynamite.name=Time Bomb tile.charge_miner.name=Timed Mining Charge @@ -4336,6 +4534,7 @@ tile.charge_semtex.name=Semtex Mining Charge tile.charger.name=Charging Station tile.cheater_virus.name=Gelid Euphemium tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block +tile.chimney_brick.name=Smokestack tile.chlorine_gas.name=Chlorine Gas tile.cluster_aluminium.name=Aluminium Ore Cluster tile.cluster_copper.name=Copper Ore Cluster @@ -4344,6 +4543,30 @@ tile.cluster_depth_titanium.name=Depth Titanium Ore Cluster tile.cluster_depth_tungsten.name=Depth Tungsten Ore Cluster tile.cluster_iron.name=Iron Ore Cluster tile.cluster_titanium.name=Titanium Ore Cluster +tile.cm_block.alloy.name=Advanced Alloy Machine Casing +tile.cm_block.desh.name=Desh Machine Casing +tile.cm_block.steel.name=Steel Machine Casing +tile.cm_block.tcalloy.name=Technetium Steel Machine Casing +tile.cm_circuit.aluminium.name=Tier 1 Circuit Block +tile.cm_circuit.copper.name=Tier 2 Circuit Block +tile.cm_circuit.gold.name=Tier 4 Circuit Block +tile.cm_circuit.red_copper.name=Tier 3 Circuit Block +tile.cm_circuit.schrabidium.name=Tier 5 Circuit Block +tile.cm_engine.bismuth.name=Bismuth Motor Block +tile.cm_engine.desh.name=Desh Motor Block +tile.cm_engine.standard.name=Motor Block +tile.cm_port.alloy.name=Advanced Alloy Port +tile.cm_port.desh.name=Desh Port +tile.cm_port.steel.name=Steel Port +tile.cm_port.tcalloy.name=Technetium Steel Port +tile.cm_sheet.alloy.name=Advanced Alloy Sheet +tile.cm_sheet.desh.name=Desh Sheet +tile.cm_sheet.steel.name=Steel Sheet +tile.cm_sheet.tcalloy.name=Technetium Steel Sheet +tile.cm_tank.alloy.name=Advanced Alloy Tank +tile.cm_tank.desh.name=Desh Tank +tile.cm_tank.steel.name=Steel Tank +tile.cm_tank.tcalloy.name=Technetium Steel Tank tile.cmb_brick.name=CMB Steel Tile tile.cmb_brick_reinforced.name=Reinforced CMB Bricks tile.compact_launcher.name=Compact Launch Pad @@ -4371,6 +4594,12 @@ tile.concrete_colored.red.name=Red Concrete tile.concrete_colored.silver.name=Light Gray Concrete tile.concrete_colored.white.name=White Concrete tile.concrete_colored.yellow.name=Yellow Concrete +tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe +tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo +tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge +tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe +tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink +tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar tile.concrete_slab.concrete.name=Concrete Tile Slab tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab @@ -4390,8 +4619,10 @@ tile.conveyor_triple.name=Triple-Lane Conveyor Belt tile.corium_block.name=Corium tile.crane_boxer.name=Conveyor Boxer tile.crane_extractor.name=Conveyor Ejector +tile.crane_grabber.name=Conveyor Grabber tile.crane_inserter.name=Conveyor Inserter tile.crane_router.name=Conveyor Sorter +tile.crane_splitter.name=Conveyor Splitter tile.crane_unboxer.name=Conveyor Unboxer tile.crashed_bomb.name=Dud tile.crate.name=Supply Crate @@ -4404,6 +4635,7 @@ tile.crate_lead.name=Hazmat Crate tile.crate_metal.name=Machine Crate tile.crate_red.name=Red Crate tile.crate_steel.name=Steel Crate +tile.crate_template.name=Template Crate tile.crate_tungsten.name=Tungsten Crate tile.crate_weapon.name=Weapon Crate tile.crystal_hardened.name=Hardened Dark Crystal @@ -4414,6 +4646,8 @@ tile.deco_asbestos.name=Asbestos Roof tile.deco_beryllium.name=Beryllium Deco Block tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL tile.deco_emitter.name=Deco Light Emitter +tile.part_emitter.name=Deco Particle Emitter +tile.piston_inserter.name=Inserter tile.deco_lead.name=Lead Deco Block tile.deco_rbmk.name=RBMK Deco Block tile.deco_rbmk_smooth.name=Smooth RBMK Deco Block @@ -4500,17 +4734,21 @@ tile.flame_war.name=Flame War in a Box tile.float_bomb.name=Levitation Bomb tile.fluid_duct.name=Universal Fluid Duct (Deprecated) tile.fluid_duct_box.name=Universal Fluid Duct (Boxduct) +tile.fluid_duct_exhaust.name=Exhaust Pipe tile.fluid_duct_gauge.name=Flow Gauge Pipe tile.fluid_duct_gauge.desc=Pipe that displays how much fluid$moves within the network per tick.$Split networks connected by barrels$or tanks are considered as one shared network. tile.fluid_duct_neo.name=Universal Fluid Duct tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated) +tile.fluid_switch.name=Redstone Fluid Valve +tile.fluid_valve.name=Fluid Valve tile.foam_layer.name=Foam layer tile.foundry_basin.name=Foundry Basin tile.foundry_channel.name=Foundry Channel tile.foundry_tank.name=Foundry Storage Basin tile.foundry_mold.name=Shallow Foundry Basin tile.foundry_outlet.name=Foundry Outlet +tile.foundry_slagtap.name=Foundry Slag Outlet tile.fraction_spacer.name=Fractioning Tower Separator tile.frozen_dirt.name=Frozen Dirt tile.frozen_grass.name=Frozen Grass @@ -4524,6 +4762,7 @@ tile.furnace_steel.name=Steel Furnace tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: ΔT*0.05 TU/t$(Δ means difference and T means temperature) tile.fusion_center.name=Central Magnet Piece tile.fusion_conductor.name=Superconducting Magnet +tile.fusion_conductor_welded.name=Superconducting Magnet (Welded) tile.fusion_core.name=Fusion Reactor Control tile.fusion_hatch.name=Duct Deco Block tile.fusion_heater.name=Plasma Heater Component @@ -4555,6 +4794,8 @@ tile.glass_polonium.name=Polonium Glass tile.glass_quartz.name=Quartz Glass tile.glass_trinitite.name=Trinity Glass tile.glass_uranium.name=Uranium Glass +tile.glyphid_base.name=Glyphid Hive Block +tile.glyphid_spawner.name=Glyphid Hive Spawner tile.gneiss_brick.name=Schist Brick tile.gneiss_chiseled.name=Chiseled Schist tile.gneiss_tile.name=Schist Tile @@ -4572,6 +4813,10 @@ tile.hadron_coil_neodymium.name=Dense Neodymium Coil tile.hadron_coil_schrabidate.name=Dense Schrabidate Coil tile.hadron_coil_schrabidium.name=Dense Schrabidic Coil tile.hadron_coil_starmetal.name=Dense Starmetal Coil +tile.hadron_cooler.name=Particle Accelerator Cooling Unit +tile.hadron_cooler.desc=Cooling power: 10$Overcooling threshold: 10$Cooling bonus: +10%%$Overcooling penalty: -25%% +tile.hadron_cooler_mk2.name=Particle Accelerator Cooling Unit - The Palindrome Special +tile.hadron_cooler_mk2.desc=Cooling power: 5$Efficiency function: 2-(cooling-15)²/225$Maximum penalty: -90%% tile.hadron_core.name=Particle Accelerator Core Component tile.hadron_diode.name=Schottky Particle Diode tile.hadron_plating.name=Particle Accelerator Plating @@ -4645,8 +4890,11 @@ tile.machine_chungus.name=Leviathan Steam Turbine tile.machine_chungus.desc=Efficiency: 85%% tile.machine_coal_off.name=Combustion Generator tile.machine_coal_on.name=Combustion Generator +tile.machine_coker.name=Coker Unit +tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t tile.machine_combine_factory.name=CMB Steel Furnace tile.machine_combustion_engine.name=Industrial Combustion Engine +tile.machine_compressor.name=Compressor tile.machine_condenser.name=Steam Condenser tile.machine_controller.name=Reactor Remote Control Block tile.machine_converter_he_rf.name=HE to RF Converter @@ -4680,6 +4928,8 @@ tile.machine_gascent.name=Gas Centrifuge tile.machine_generator.name=Nuclear Reactor (Old) tile.machine_geo.name=Geothermal Electric Generator tile.machine_hephaestus.name=Geothermal Heat Exchanger +tile.machine_industrial_boiler.name=Industrial Boiler +tile.machine_industrial_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t$Cannot explode tile.machine_industrial_generator.name=Industrial Generator tile.machine_keyforge.name=Locksmith Table tile.machine_large_turbine.name=Industrial Steam Turbine @@ -4886,6 +5136,8 @@ tile.pribris.name=RBMK Debris tile.pribris_burning.name=Flaming RBMK Debris tile.pribris_digamma.name=Blackened RBMK Debris tile.pribris_radiating.name=Smoldering RBMK Debris +tile.radio_torch_counter.name=Redstone-over-Radio Item Counter +tile.radio_torch_counter.desc=Placable on flat surfaces or comparator-compatible blocks$Bases signal on the amount of matching items tile.radio_torch_receiver.name=Redstone-over-Radio Receiver tile.radio_torch_receiver.desc=Placable on flat surfaces or comparator-compatible blocks tile.radio_torch_sender.name=Redstone-over-Radio Transmitter @@ -4937,12 +5189,15 @@ tile.reinforced_brick.name=Reinforced Stone tile.reinforced_brick_stairs.name=Reinforced Stone Stairs tile.reinforced_ducrete.name=Reinforced Ducrete tile.reinforced_glass.name=Reinforced Glass +tile.reinforced_glass_pane.name=Reinforced Glass Pane tile.reinforced_lamp_off.name=Reinforced Lamp tile.reinforced_lamp_on.name=Reinforced Lamp tile.reinforced_light.name=Reinforced Glowstone tile.reinforced_sand.name=Reinforced Sandstone tile.reinforced_stone.name=Dense Stone tile.reinforced_stone_stairs.name=Dense Stone Stairs +tile.reinforced_laminate.name=Reinforced Laminate +tile.reinforced_laminate_pane.name=Reinforced Laminate Pane tile.rejuvinator.name=Rejuvination Device tile.residue.name=Cloud Residue tile.safe.name=Safe @@ -4975,6 +5230,7 @@ tile.sellafield.4.name=Infernal Sellafite tile.sellafield.5.name=Sellafite-Corium tile.sellafield_slaked.name=Slaked Sellafite tile.semtex.name=Semtex +tile.sliding_blast_door.name=Sliding Blast Door tile.solar_mirror.name=Heliostat Mirror tile.soyuz_capsule.name=Cargo Landing Capsule tile.soyuz_launcher.name=Soyuz Launch Platform @@ -4998,6 +5254,7 @@ tile.stone_depth_nether.name=Nether Depth Rock tile.stone_gneiss.name=Graphitic Schist tile.stone_porous.name=Porous Stone tile.stone_resource.asbestos.name=Chrysotile +tile.stone_resource.bauxite.name=Bauxite tile.stone_resource.hematite.name=Hematite tile.stone_resource.limestone.name=Limestone tile.stone_resource.malachite.name=Malachite @@ -5009,6 +5266,7 @@ tile.struct_launcher_core_large.name=Launch Table Core Component tile.struct_plasma_core.name=Plasma Heater Core Component tile.struct_scaffold.name=Launch Pad Scaffold Block tile.struct_soyuz_core.name=Soyuz Launcher Core Component +tile.struct_watz_core.name=Watz Powerplant Core Component tile.substation.name=Substation tile.sulfuric_acid_block.name=Sulfuric Acid tile.taint.name=Taint @@ -5064,13 +5322,16 @@ tile.waste_mycelium.name=Glowing Mycelium tile.waste_planks.name=Charred Wooden Planks tile.waste_trinitite.name=Trinitite Ore tile.waste_trinitite_red.name=Red Trinitite Ore +tile.watz.name=Watz Powerplant tile.watz_conductor.name=Watz Electricity Port tile.watz_control.name=Reinforced Control Rods tile.watz_cooler.name=Watz Reactor Supercooler tile.watz_core.name=Watz Reactor Control tile.watz_element.name=Watz Reaction Chamber tile.watz_end.name=Watz Reactor Stability Element +tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) tile.watz_hatch.name=Watz Reactor Access Hatch +tile.watz_pump.name=Watz Pressure Pump tile.yellow_barrel.name=Radioactive Barrel tile.zirnox_destroyed.name=Destroyed ZINROX @@ -5178,4 +5439,4 @@ weapon.elecGun.glass_cannon.ir=Infrared weapon.elecGun.glass_cannon.visible=Visible Light weapon.elecGun.glass_cannon.uv=Ultraviolet Light weapon.elecGun.glass_cannon.xray=X-rays -weapon.elecGun.glass_cannon.gamma=Gamma rays \ No newline at end of file +weapon.elecGun.glass_cannon.gamma=Gamma rays diff --git a/src/main/resources/assets/hbm/lang/fr_FR.lang b/src/main/resources/assets/hbm/lang/fr_FR.lang index 0635ab9d1..9b13a0db9 100644 --- a/src/main/resources/assets/hbm/lang/fr_FR.lang +++ b/src/main/resources/assets/hbm/lang/fr_FR.lang @@ -477,6 +477,9 @@ item.plate_titanium.name=Plaque en titane item.plate_aluminium.name=Plaque d'aluminium item.wire_red_copper.name=Fil de cuivre rouge item.neutron_reflector.name=Reflecteur neutronique +item.night_vision.name=Lunettes de vision nocturne +item.night_vision.description.item=Donne la vision nocturne (nécessite un set électrique complet) +item.night_vision.description.in_armor=%s (donne la vision nocturne) item.nugget_beryllium.name=Pépite de béryllium item.wire_aluminium.name=Fil d'aluminium @@ -913,6 +916,7 @@ item.grenade_strong.name=Grenade ameliorée item.grenade_frag.name=Grenade Frag item.grenade_fire.name=Grenade Frag incendiaire item.grenade_shrapnel.name=Grenade à fragmentation +item.grenate_cats.name=Grenade à chats item.grenade_cluster.name=Grenade à fragmentation item.grenade_flare.name=Flare item.grenade_electric.name=Grenade à éclairs diff --git a/src/main/resources/assets/hbm/lang/pl_PL.lang b/src/main/resources/assets/hbm/lang/pl_PL.lang new file mode 100644 index 000000000..438a7d5bd --- /dev/null +++ b/src/main/resources/assets/hbm/lang/pl_PL.lang @@ -0,0 +1,5373 @@ +achievement.acidizer.desc=oof ow my skin +achievement.acidizer=Acidic +achievement.assembly.desc=Wait, it's already 1 am? +achievement.assembly=The Factory Grows +achievement.FOEQ.desc=Send a relay into martian...I mean dunaian orbit. +achievement.FOEQ=Pegasi and Missile Silos +achievement.breeding.desc=Thank you, god bless you, and god bless the United States of America. +achievement.breeding=Ironic +achievement.bismuth.desc=Remember when people complained about this for a month? I do. +achievement.bismuth=Bismuth +achievement.blastFurnace.desc=They salvaged a sunken dreadnought for Explorer 1. +achievement.blastFurnace=Coal and Iron +achievement.bossCreeper.desc='There is nuclear creepers? Those are a thing?!' +achievement.bossCreeper=Bomb On Four Legs +achievement.bossMaskman.desc=Bonk the big boy. +achievement.bossMaskman=6 Months of mandatory service and all I got was a lousy t-shirt +achievement.bossMeltdown.desc=More terrible than great, but I take what I can get. +achievement.bossMeltdown=3.6 Roentgen +achievement.bossWorm.desc=The Fabstaff. My ass. You do the math. +achievement.bossWorm=Disassembling Balls-O-Tron +achievement.bossUFO.desc=Yo, what do we have here? A huge spacecraft pulling up to the blockship? +achievement.bossUFO=Ayy Lmao +achievement.burnerPress.desc=Pressure pushing down on me, on you +achievement.burnerPress=Under Pressure +achievement.c20_5.desc=??? +achievement.c20_5=Chapter [TWENTY POINT FIVE] +achievement.c44.desc=Galvanized! I mean, zinc! +achievement.c44=Chapter 44 +achievement.centrifuge.desc=centrifugal force is real don't @ me +achievement.centrifuge=Centrifugal Force +achievement.chemplant.desc=Now you're thinking with chemicals! +achievement.chemplant=The Factory Grows Pt. 2 +achievement.chicagoPile.desc="How were the natives?" / "Very friendly." +achievement.chicagoPile=The navigator landed in the New World +achievement.concrete.desc=A Bolshevik's favorite. +achievement.concrete=Old Reliable +achievement.desh.desc="Come on then, you lot. Places to go!" +achievement.desh=Le Verrier +achievement.digammaFeel.desc=My eyes are bleeding +achievement.digammaFeel=SEWAGE-INFUSED GARBAGE WORLD +achievement.digammaKauaiMoho.desc=Everything is awful, here's some hot choccy. +achievement.digammaKauaiMoho=SING, SING ME THE SONG OF THE KAUAI MOHO +achievement.digammaKnow.desc=what this world is about. +achievement.digammaKnow=THE TERROR OF KNOWING +achievement.digammaSee.desc=It's a bit dark, bring a flashlight. +achievement.digammaSee=ENTER THE ABYSS +achievement.digammaUpOnTop.desc=Admire my son, he's my clone. +achievement.digammaUpOnTop=ADMIRE ME, ADMIRE MY HOME +achievement.fiend.desc=Be mean. +achievement.fiend2.desc=Be meaner. +achievement.fiend2=Delinquent 2: Delinquent Harder +achievement.fiend=Delinquent +achievement.freytag.desc=Herold's life guards +achievement.freytag=Freytag +achievement.fusion.desc=A dance of deuterons, tritons, and energy. +achievement.fusion=Fusion +achievement.gasCent.desc=Unenriched Uranium hates him! +achievement.gasCent=The Zippe Style +achievement.goFish.desc=Nautical Crucifixion +achievement.goFish=Go Fish +achievement.hidden.desc=Kill a tainted creeper with a falling boxcar. +achievement.hidden=Hidden Catalog +achievement.horizonsBonus.desc=honest to god what the hell is wrong with you +achievement.horizonsBonus=Slam Dunk Diarrhea +achievement.horizonsEnd.desc=Send Tom home. +achievement.horizonsEnd=The Horizons +achievement.horizonsStart.desc=Send a lad to the moon. +achievement.horizonsStart=Apogee +achievement.impossible.desc=You can't get this achievement. +achievement.impossible=Literally impossible +achievement.inferno.desc="Turn it to ashes! That's not enough! Drop more bombs!" +achievement.inferno=Operation Cannibal +achievement.manhattan.desc=8:15; August 6th, 1945 +achievement.manhattan=The Manhattan Project +achievement.meltdown.desc=You got this far, how could you mess this up? +achievement.meltdown=Rapid Unscheduled Disassembly +achievement.no9.desc="I hope the lead I'm mining will be used in your paint" +achievement.no9=Old Number Nine +achievement.omega12.desc=Solve the problem of continued life on this wretched planet. +achievement.omega12=Omega-12 Particle Accelerator +achievement.polymer.desc=Delicious, delicious microplastics. +achievement.polymer=Teflon +achievement.potato.desc=You stabbed me! What is WRONG with yo-WOOOAAH +achievement.potato=Rogue AI +achievement.radDeath.desc=Marie Curie invented the theory of radioactivity, the treatment of radioactivity, and dying of radioactivity. +achievement.radDeath=Ouch, Radiation! +achievement.radium.desc=YOU'RE FIRED FOR POURING RADIUM IN MY COFFEE! +achievement.radium=MISTER INCREDIBLE +achievement.radPoison.desc=Suffer the effects of radiation poisoning. +achievement.radPoison=Yay, Radiation! +achievement.RBMKBoom.desc=What is the cost of lies? +achievement.RBMKBoom=It is 15,000. +achievement.RBMK.desc=He's delusional, get him to the infirmary. +achievement.RBMK=3.6 Roentegen? +achievement.redBalloons.desc="This is what we've waited for. This is it, boys, this is war." +achievement.redBalloons=99 Red Balloons +achievement.sacrifice.desc=Face the fire and live. +achievement.sacrifice=Sororicide +achievement.schrab.desc=Regardless, I wouldn't look at it for too long. +achievement.schrab=Island of Stability +achievement.selenium.desc=Yeah. +achievement.selenium=XVIII The Moon +achievement.SILEX.desc=It's cooler then it sounds, I promise. +achievement.SILEX=Separation of Isotopes by Laser Exitation +achievement.slimeball.desc= +achievement.slimeball=I should dip my balls in sulfuric acid. +achievement.stratum.desc=Hit the brakes, Mitts. +achievement.stratum=Stratum +achievement.someWounds.desc=Get ready +achievement.someWounds=Some Wounds Never Heal +achievement.soyuz.desc=Become crunchy. +achievement.soyuz=Baked Potato +achievement.space.desc=Fail in every way possible and waste funds worth 90 million dollars. +achievement.space=The Final Front-ah forget it +achievement.sulfuric.desc= +achievement.sulfuric=I should not have dipped my balls in sulfuric acid. +achievement.tantalum.desc=An elusive, yet ever-needed element. +achievement.tantalum="Tantalium" +achievement.tasteofblood.desc=is not part of any testing protocol. +achievement.tasteofblood=The Taste of Blood +achievement.technetium.desc=It's medicinal, it's medicinal! +achievement.technetium=Big Man, Pig Man +achievement.watzBoom.desc=Drain your septic tank next time. +achievement.watzBoom=Disgusting +achievement.watz.desc=Fólkvangr fields possibly included. +achievement.watz=The Power of Element-126 +achievement.witchtaunter.desc=Those wacky creatures got nothing on you! +achievement.witchtaunter=Witch Taunter +achievement.ZIRNOXBoom.desc=cope, seethe, mald +achievement.ZIRNOXBoom=CIRNOX + +armor.blastProtection=Damage modifier of %s against explosions +armor.cap=Hard damage cap of %s +armor.damageModifier=Damage modifier of %s against %s +armor.dash=Grants %s dashes +armor.electricJetpack=Ion Jetpack +armor.explosionImmune=Cannot take any damage except from explosions +armor.fastFall=Fast Fall +armor.fireproof=Fireproof +armor.fullSetBonus=Full Set Bonus: +armor.geigerHUD=Built-In Geiger Counter HUD +armor.geigerSound=Auditory Geiger Counter +armor.glider=Sneak to glide +armor.gravity=Gravity modifier of %s +armor.hardLanding=Hard Landing +armor.ignoreLimit=Resistance is not affected by resistance limit +armor.modifier=General damage modifier of %s +armor.nullDamage=Nullifies all damage from %s +armor.projectileProtection=Damage modifier of %s against projectiles +armor.rocketBoots=Rocket Boots +armor.sprintBoost=Boosted Sprint +armor.thermal=Thermal Sight +armor.threshold=Damage threshold of %s +armor.vats=Enemy HUD +armor.yield=Protection applies to damage <%s + +armorMod.all=All +armorMod.applicableTo=Applicable To: +armorMod.boots=Boots +armorMod.chestplates=Chestplates +armorMod.helmets=Helmets +armorMod.insertHere=Insert armor to modify... +armorMod.leggings=Leggings +armorMod.type.boots=Boots +armorMod.type.chestplate=Chestplate +armorMod.type.cladding=Cladding +armorMod.type.helmet=Helmet +armorMod.type.insert=Insert +armorMod.type.leggings=Leggings +armorMod.type.servo=Servos +armorMod.type.special=Special + +battery.mode.buffer=Input/Output Mode +battery.mode.input=Input Mode +battery.mode.off=OffW +battery.mode.output=Output Mode +battery.priority.high=Charge Priority: High +battery.priority.high.desc=Emergency buffers that$always need to be full +battery.priority.low=Charge Priority: Low +battery.priority.low.desc=Most use-cases where surplus$energy needs to be stored without$affecting machine performance +battery.priority.normal=Charge Priority: Normal +battery.priority.normal.desc=Smaller power grids where$priority doesn't matter +battery.priority.recommended=Recommended for: +battery.redstone.off=Redstone OFF +battery.redstone.on=Redstone ON + +bomb.detonated=Detonated successfully! +bomb.incompatible=Device can not be triggered! +bomb.launched=Launched successfully! +bomb.missingComponent=Component missing! +bomb.nobomb=Linked position incompatible or unloaded! +bomb.triggered=Triggered successfully! + +book.test.cover=HOW 2 SEX +book.test.page1=Test Page 1 + +book.error.cover=Hadron Collider:$Troubleshooting +book.error.title1=Error 0x01 [NC] +book.error.page1=§lName:§r "ERROR_NO_CHARGE" §lDescription:§r The particle has reached a segment with insufficient charge. §lPotential fix:§r Either replace one of the plugs that the particle successfully passes with higher-tier ones or add another plug slightly before the segment where the particle expires. +book.error.title2=Error 0x02 [NA] +book.error.page2=§lName:§r "ERROR_NO_ANALYSIS" §lDescription:§r The particle has reached the core, despite not passing an analysis chamber. §lPotential fix:§r Make sure that your accelerator has an analysis chamber and double-check the operating mode (linear/circular). +book.error.title3=Error 0x03 [OC] +book.error.page3=§lName:§r "ERROR_OBSTRUCTED_CHANNEL" §lDescription:§r The particle has collided with a block inside the collider's channel. §lPotential fix:§r Make sure that the inside of your particle collider is free of any obstructions, except for particle diodes and core blocks. +book.error.title4=Error 0x04 [EC] +book.error.page4=§lName:§r "ERROR_EXPECTED_COIL" §lDescription:§r The particle has passed a segment that lacks one or multiple coils. §lPotential fix:§r Remove the plating of the collider in the offending area and check if all the coils are there. This error will also happen at T-crossings that are built without diodes. +book.error.title5=Error 0x05 [MS] +book.error.page5=§lName:§r "ERROR_MALFORMED_SEGMENT" §lDescription:§r The particle has passed a segment that was built incorrectly (but neither obstructed nor missing coils). §lPotential fix:§r Make sure that the offending segment has platings in all the required spaces, leaving no coils exposed. +book.error.title6=Error 0x06 [ATL] +book.error.page6=§lName:§r "ERROR_ANALYSIS_TOO_LONG" §lDescription:§r The particle has passed more than the three required valid analysis chamber segments. §lPotential fix:§r Make sure that the analysis chamber is exactly 3 blocks long for circular accelerator and at least 2 blocks long for linear ones. Also check if the particle doesn't pass multiple analysis chambers in a branching and/or looped accelerator. +book.error.title7=Error 0x07 [ATS] +book.error.page7=§lName:§r "ERROR_ANALYSIS_TOO_SHORT" §lDescription:§r The particle has left the analysis chamber, despite not meeting the length requirement. §lPotential fix:§r Make sure that the analysis chamber on your circular accelerator is exactly 3 blocks long. Valid analysis segments have no coils and the plating is entirely composed of analysis chamber walls/windows. Analysis chambers with coils in them count as regular segments. +book.error.title8=Error 0x08 [DC] +book.error.page8=§lName:§r "ERROR_DIODE_COLLISION" §lDescription:§r The particle collided with a non-input side of a schottky particle diode. §lPotential fix:§r Check if your diodes are configured correctly. Particles can only enter the diode from sides with green inward-pointing arrows. +book.error.title9=Error 0x09 [BT] +book.error.page9=§lName:§r "ERROR_BRANCHING_TURN" §lDescription:§r The particle has reached a turn with multiple exits. §lPotential fix:§r If your turn is a normal one, check if all the required coils are present (i.e. no holes in the coil layer). If the turn is intended to be branched, it requires a schottky particle diode that is correctly configured. + +book.rbmk.cover=My first RBMK:$Basics of$building a$reactor +book.rbmk.title1=Introduction +book.rbmk.page1=§lRBMK§r is fully modular nuclear reactor. Unlike most other reactors, there is no "core" and no size restrictions, rather behavior and efficiency of reactor depends on how it is built and how various parts interact with each other. +book.rbmk.title2=Heat +book.rbmk.page2=As reactor runs, it will generate §lheat§r. Heat will spread between parts, slowly decreasing in the process. The goal is to generate as much heat as possible without melting the reactor, and to transfer heat into steam passages that cool reactor and produce steam. +book.rbmk.title3=Fuel Rod +book.rbmk.page3=The §lfuel rod§r will capture neutron flux, causing fuel inside the rod to react, releasing neutrons in the process. Neutrons are released in all four main directions with a maximum range of 5 blocks. The amount of released neutrons depends on fuel used. +book.rbmk.title4=Regulating Rod +book.rbmk.page4=The §lcontrol rod§r will reduce number of neutrons passing through. Fully inserted, it will block all neutrons; when inserted halfway, it will only block half. Control rods are used to regulate activity of the reactor and shut it down. +book.rbmk.title5=Regulating Rods - Usage +book.rbmk.title5.scale=0.9 +book.rbmk.page5=The current bar insertion will be displayed in the center of GUI. The colored buttons on left will add the control bar to the color group, which is useful for quickly selecting grouped bars on §lRBMK§r console. The buttons on right allow you to manually insert in 25%% increments. +book.rbmk.title6=Automatic Control Rods +book.rbmk.page6=§LAutomatic control rods§r are almost identical to regular control rods, but they cannot be manually adjusted, instead they will adjust position of the rod based on current temperature. Which function to use and how deep to insert and at what temperature must be determined first. +book.rbmk.title7=Steam Channel +book.rbmk.page7=The §lsteam channel§r is only part that will actively reduce reactor heat level. If a component is above the boiling point of a given type of steam, it will try to consume as much water and produce as much steam as needed to cool below boiling point. +book.rbmk.title8=Neutron Reflector +book.rbmk.page8=The §lneutron reflector§r will block passage of neutrons, instead neutrons will be reflected back onto the fuel rod they came from. This is useful for using neutrons that would otherwise be wasted simply by leaving reactor. +book.rbmk.title9=Neutron Absorber +book.rbmk.page9=§lNeutron absorber§r simply blocks neutrons. The absorbed neutrons will not generate heat and will be effectively destroyed. This is useful for preventing fuel rods from reacting that would otherwise be within reach. +book.rbmk.title10=Graphite Retarder +book.rbmk.page10=§lGraphite moderator§r converts fast neutrons passing through it into slow neutrons. Most fuels are split into fast neutrons, while slow neutrons are required for fission, so use of moderators is highly recommended. +book.rbmk.title11=Structural Column +book.rbmk.page11=§lStructural column§r does not affect neutrons in any way and has no special application. It is recommended to fill the reactor with structured pillars where there are no other parts, since the structured pillars are capable of transferring heat. +book.rbmk.title12=Console +book.rbmk.page12=§lRBMK console§r allows you to control the reactor from afar. Using the §ldevice to connect the console RBMK§r on the RBMK part and then on the console will connect the reactor and the console. The console can only control 15x15 parts, for large reactors you can use multiple consoles. +book.rbmk.title13=Using the console +book.rbmk.page13=Clicking on parts will select and deselect them. With the colored buttons, you can quickly select all the control rods in that color group. Button "A" will select all control rods, "X" will deselect all. +book.rbmk.page14=Entering a number between 0 and 100 in green box and then pressing button next to it will set all selected control rods to that position. Button "AZ-5" will lead to full insertion of all control rods. +book.rbmk.title15=Fuel +book.rbmk.page15=The §lfuel§r response depends on many factors. The main ones are §lfortification§r, §lxenon poisoning§r and number of incoming §lneutrons§r. Xenon builds up when fuel is low in neutrons and burns out during normal operation. The efficiency of neutrons depends on the type, most fuels §lare best split by§r §lslow neutrons§r. +book.rbmk.title16=Melting +book.rbmk.page16=§4§lAVOID. + +book.starter.cover=An Industrialist's$Guide to Rebuilding$Society +book.starter.title1=Introduction +book.starter.page1=If you're reading this, it's highly likely that society, in one way or another, has collapsed entirely. Governments, countries, and authority are a concept of the past - along with all of the amenities of civilized life. As such, this guide will inform you how to change that by recreating the industry and technology of the past for the improvement of your own life. +book.starter.title2=Coal & Mustard Gas +book.starter.page2=Whilst it is impossible to predict the actual state of the world in a post-apocalyptic time, it's not unlikely that war and industry in its current form may not have ended. To protect your own lungs, an effective and cheap way is to urinate on some §lcloth§r to make a §ltrench mask§r, to protect you from coal dust or mustard gas, if you ever encounter either. +book.starter.title3=Anvils & Presses +book.starter.page3=The quintessentials to beginning your industrial revitalization is an §lanvil§r and a §lburner press§r. The anvil will allow you to manually craft together early machinery such as the Assembler, whilst the burner press will let you make plates, wires, and circuits that you cannot hammer together with an anvil. +book.starter.title4=Templates +book.starter.page4=In order to stamp metal into useful shapes, assemble machinery, and perform chemical reactions, you will need to create a §lMachine Template Folder§r to create the various stamps and templates shown to the right. +book.starter.title5=Scavenging +book.starter.page5=Depending on how bad the initial apocalyptic event was to the preexisting structures of the world, there's a likely chance that many useful materials and machines can be salvaged from them directly. Metallic alloys like steel, parts like circuitry, and even fissile material from a nuclear power plant might be awaiting you. Beware certain ruins, however, as there may be an excess of danger lurking there like a snake in the grass; waiting to strike you down with radiation, traps, or indescribable horrors... +book.starter.title6=Early Machinery +book.starter.page6a=Two of the first machines you should assemble are the §lBlast Furnace§r and the §lAssembly Machine§r. The former will allow you to create alloys such as §lsteel§r, §lminecraft-grade copper§r, and §ladvanced alloy§r; you will need to use these metals for the bodies of machines, the wiring of circuits, advanced electromagnets, and more. +book.starter.page6b=The assembler will be used to create practically every other machine described in this guide. You will need a power source, such as a §lCombustion§r §lGenerator§r or §lSolar Boiler§r. +book.starter.page7a=The §lShredder§r, along with a pair of shredder blades, will be very useful for doubling the output of most ores, via shredding into smeltable powders. These powders are also crucial to begin making circuitry for various machines, such as §lEnhanced§r and §lOverclocked§r circuits. +book.starter.page7b=Using your new machinery, you can create the §lChemical Plant§r, used for the synthesis of better circuits, concrete, the processing of petrochemicals, and more. +book.starter.title8=Black Gold +book.starter.page8a=Using an §lOil §lReservoir§r §lDetector§r, you can find underground oil deposits to place a §lPumpjack§r or §lDerrick§r over via surveying an area. Remember that oil deposits will run out over time. +book.starter.page8b=Before the oil can be refined and separated into its constituent parts in an §lOil Refinery§r, you must heat the oil to 300°C in a §lBoiler§r. +book.starter.title9=Petrochemicals +book.starter.page9=Using §lChemical Plants§r, §lFractioning§r §lTowers§r, and §lCatalytic Cracking§r §lTowers§r, you can transform the separated oil into a variety of useful products. For example: §lPolymer§r or §lBakelite§r, durable and flexible plastics; §lDesh§r, an extremely durable and heat-resistant rare earth metal alloy; §lSolid Fuel§r, which can be burnt for energy; or even §lLiquid Fuels§r, such as §lGasoline§r, §lDiesel§r, §lKerosene§r, and more. +book.starter.title10=Advanced Machinery +book.starter.page10=With oil processing under your belt, you can create the §lCentrifuge§r, which will triple ore outputs; the §lOre §lAcidizer§r, which will crystallize ores, increasing the yield; and the §lSILEX + §lFEL§r, two marvels of modern engineering which can separate the isotopes of materials with ease. You will require significantly more energy to power these; which can be obtained with sources such as a §lDiesel Generator§r, an §lIndustrial Generator§r, or even a nuclear reactor. +book.starter.title11=Strata +book.starter.page11=Underneath the ground you walk, there is several naturally-occurring §lStrata§r, or special mineral layers and formations. §lSchist Strata§r are blue, lithium-containing layers filled with uranium, iron, copper, asbestos, and other ores for your own use. §lDepth Rock§r contains large quantities of rarer minerals, such as §lZirconium§r and §lBoron§r, but requires explosives to properly harvest. +book.starter.title12=Radiation +book.starter.page12a=§oThe rest of this book will deal with matters that involve §oradiation. For the safety of you and others, I will give §oadvice on how to mitigate and deal with exposure to it. +book.starter.page12b=Enough exposure to radiation can and will cause bodily harm. The first step is prevention; be sure to limit your exposure, and wear protective gear, such as a §lHazmat Suit§r, or apply §lCladding§r to your clothing or armor; you can also take §lRad-X§r to limit your intake. Thanks to modern medicine, the second step can be removal if necessary; for example, a §lPlayer §lDecontaminator§r will slowly reduce the radiation absorbed by your body. §lRad-Away§r can also be used as a post-exposure prophylaxis, quickly and effectively reversing damage caused to your body by ionizing radiation. +book.starter.title13=Uranium Enrichment +book.starter.page13=There are a few, easy options for fuels to use for a nuclear reactor; for instance, §lNatural Uranium§r or §lThorium Fuel§r. However, if you're looking for something more powerful, you can set up an enrichment cascade of two §lGas Centrifuges§r to produce §lUranium Fuel§r with leftover §lUranium-238§r. You will have to transmute the natural uranium into §lYellowcake§r, then §lUranium §lHexafluoride§r to do so. +book.starter.title14=The Chicago Pile +book.starter.page14=Alternatively, you can breed §lReactor-Grade Plutonium§r, a more powerful fuel, from Natural Uranium using the §lChicago Pile§r. By stacking graphite blocks and drilling into them, you can insert fuel rods to breed into plutonium and neutron source rods, such as §lRadium-Beryllium§r, to begin the reaction. Make sure to test your designs; spacing out or limiting the amount of blocks may be necessary to prevent overheating. +book.starter.title15=ZIRNOX GCR +book.starter.page15=Finally, you can create your first §oreal§r source of energy: the §lZIRNOX§r Nuclear Reactor. Nuclear reactors require more setup then other power sources; first, you will want to have a good source of water, such as the §lHeavy §lInfinite Water Tank§r. To remove heat from the reactor core and boil the water into steam, you will need a sufficient amount of §lCarbon Dioxide§r. You want just enough pressure, but not §otoo§r much. You will also need three steam turbines to utilize the created steam to make energy; the §lSteam §lTurbine§r or §lIndustrial Steam §lTurbine§r will be optimal. Finally, a §lCondensor§r or §lAuxilary Cooling Tower§r is needed to condense the leftover steam into water, where it can be voided or recycled in a cooling loop. +book.starter.title16=Conclusion +book.starter.page16=If you've reached this far, you're on track to helping rebuild civilization. You've successfully recreated the advanced machinery of the pre-apocalypse - with nuclear power, petrochemicals, and more. I cannot know §ohow§r you will use these new-found advantages, but it's my personal hope you use them for the good of yourself and others - or at the very least, in self-defense. Au revoir! +book.starter.title18=About the Author +book.starter.page18=vÊr is just a guy who has been trapped in the grey void featured in the Talking Head's §oOnce In A Lifetime§r for too long. He once found a studio door, but to his dismay found out it was a cardboard cut-out. + +#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: +book_lore.book_iodine.page.1=apparently the morons from 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 excrete it through the skin, creating an aerosol that is highly contagious. +book_lore.book_iodine.page.2=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 %d + +book_lore.book_phosphorous.name=Note +book_lore.book_phosphorous.author=Dave +book_lore.book_phosphorous.page.0=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 +book_lore.book_phosphorous.page.1=ingredient is red phosphorous, whihc has to be mixed into slot %d + +book_lore.book_dust.name=Note +book_lore.book_dust.author=Dave +book_lore.book_dust.page.0=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 +book_lore.book_dust.page.1=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 +book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d + +book_lore.book_mercury.name=Note +book_lore.book_mercury.author=Dave +book_lore.book_mercury.page.0=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 +book_lore.book_mercury.page.1=replicated by the body? whatever, the mercury goes into slot %d + +book_lore.book_flower.name=Note +book_lore.book_flower.author=Dave +book_lore.book_flower.page.0=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, +book_lore.book_flower.page.1=it does not work with other flowers. the morning glory goes into slot %d + +book_lore.book_syringe.name=Note +book_lore.book_syringe.author=Dave +book_lore.book_syringe.page.0=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 +book_lore.book_syringe.page.1=syringe goes into slot %d + +book_lore.resignation_note.name=Letter of Resignation +book_lore.resignation_note.author=Kosma +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and +book_lore.resignation_note.page.1=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. +book_lore.resignation_note.page.2=I'm not coming back on Friday. Just send the paycheck. + +book_lore.memo_stocks.name=Intracorporate Memorandum +book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. + +book_lore.memo_schrab_gsa.name=Internal Memorandum +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum +book_lore.memo_schrab_gsa.page.1=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. + +book_lore.memo_schrab_rd.name=Internal Memorandum +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. +book_lore.memo_schrab_rd.page.1=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely +book_lore.memo_schrab_rd.page.2=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. +book_lore.memo_schrab_rd.page.3=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. + +book_lore.memo_schrab_nuke.name=Research Report +book_lore.memo_schrab_nuke.author=Doctor Schrabauer +book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. +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.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.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.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.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.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... + +cannery.f1=[ Press F1 for help ] + +cannery.centrifuge=Wirówka Gazowa +cannery.centrifuge.0=Gas centrifuges can be supplied with fluid using regular fluid ducts. +cannery.centrifuge.1=Most recipes require multiple centrifuges. The intermediate products cannot be transported via pipes. +cannery.centrifuge.2=This side acts as a connector which outputs the intermediate product into an adjacent centrifuge. +cannery.centrifuge.3=Uranium hexafluoride can be processed with just two centrifuges, this however will produce Uranium fuel and Uranium-238. +cannery.centrifuge.4=Fully processing it into Uranium-235 and Uranium-238 requires a total of four centrifuges. +cannery.centrifuge.5=Some recipes also require the centrifuge overclocking upgrade. + +cannery.crucible=Tygiel +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.fensu=FEnSU +cannery.fensu.0=The FEnSU is capable of storing absurd amounts of energy, over 9EHE (that's a nine followed by 18 zeros). +cannery.fensu.1=There is only one energy connector which can be found on the bottom. +cannery.fensu.2=This is also the only place where the FEnSU can receive a redstone signal. + +cannery.firebox=Palenisko +cannery.firebox.0=The firebox burns flammable items to generate heat. +cannery.firebox.1=It can burn any flammable item, although higher quality fuels such as coal, coke and solid fuel burn longer and hotter. +cannery.firebox.2=Heat is given off by the copper contact at the top of the firebox. Machines with an identical contact on the bottom can receive heat by being placed on top of the firebox. +cannery.firebox.3=If heat isn't being used up and the heat buffer becomes full, the firebox will shut off to prevent wasting of fuel. +cannery.firebox.4=One such machine is the stirling engine, which will turn heat directly into energy. + +cannery.foundryChannel=Kanał Hutniczy +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 from 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=FEL & SILEX +cannery.silex.0=The Free Electron Laser (FEL) uses energy and a laser crystal to create a powerful laser beam. +cannery.silex.1=Be careful, as the laser will burn/melt through weaker blocks... +cannery.silex.2=...but not blast-proof ones. +cannery.silex.3=The FEL is used to power the Laser Isotope Separation Chamber (SILEX). The FEL and SILEX have to be at least two blocks apart. +cannery.silex.4=The laser has to enter through the glass openings of the SILEX. Aiming it wrong could destroy it. +cannery.silex.5=The openings on the sides can be used to connect fluid ducts to the SILEX. +cannery.silex.6=In addition to the two connectors on the sides, there is a third hidden connector at the bottom from which items can be extracted. +cannery.silex.7=Each recipe requires a specific laser type. Using a stronger type than required will process items faster. +cannery.silex.8=One FEL can supply up to 5 SILEX. Each SILEX has to be one block apart from one another. + +cannery.stirling=Silnik Stirlinga +cannery.stirling.0=The Stirling engine uses heat energy from external sources to create power. +cannery.stirling.1=It needs to be placed on top of a heat-producing machine, such as the firebox. +cannery.stirling.2=The amount of heat it can utilize however is limited, overspinning can lead to catastrophic malfunction. +cannery.stirling.3=The upgraded version can take significantly more heat without breaking. + +cannery.willow=Wierzba Musztardowa +cannery.willow.0=The mustard willow is a plant that allows cadmium metal to be harvested. +cannery.willow.1=Willows can be placed on dirt, grass or even dead/oily dirt, but they require water to grow. +cannery.willow.2=Willows can be fertilized with bone meal or industrial fertilizer. They do not need light to grow. +cannery.willow.3=After the second stage of growth, they will need an extra block of space above them to grow further. +cannery.willow.4=After the fourth stage of growth, they require dead or oily dirt below them. +cannery.willow.5=This can be done either by manually planting willows on dead/oily dirt, or by having a hydraulic fracking tower nearby which continuously contaminates the ground. +cannery.willow.6=After reaching the final stage, the willow will remove contamination from the ground, reverting the dead/oily dirt back into regular dirt. +cannery.willow.7=Now the willow's leaves can be harvested. Breaking the top block will drop a small willow plant, 3-6 leaves and keep the bottom part of the plant intact. +cannery.willow.8=Soon the plant will start growing again, yielding more leaves if the dirt is replaced with oily dirt. The leaves can be processed into cadmium powder using an ore acidizer. +cannery.willow.9=Harvesting willow leaves can be automated using the automatic buzzsaw, it will only break plants that are ready for harvest. + +chem.ARSENIC=Ekstrakcja Arsenu +chem.ASPHALT=Produkcja Asfaltu +chem.BAKELITE=Produkcja Bakelitu +chem.BALEFIRE=Mieszanie Paliwa Rakietowego BF +chem.BP_BIOFUEL=Transestryfikacja Biopaliwa +chem.BP_BIOGAS=Produkcja Biogazu +chem.C4=Synteza C-4 +chem.CC_CENTRIFUGE=Oddzielanie Chlorokalcytu +chem.CC_ELECTROLYSIS=Elektroliza Chlorokalcytu +chem.CC_HEATING=Zaawansowane Upłynnianie Węgla +chem.CC_HEAVY=Podstawowe Upłynnianie Węgla +chem.CC_I=Ulepszone Upłynnianie Węgla +chem.CC_NAPHTHA=Upłynnianie Węgla Naftowego +chem.CC_OIL=Upłynnianie Węgla +chem.CIRCUIT_4=Overclocked Circuit Production +chem.CIRCUIT_5=High Performance Circuit Production +chem.CO2=Produkcja Dwutlenku Węgla +chem.COALGAS_LEADED=Leaded Coal Gasoline Mixing +chem.COLTAN_CLEANING=Oczyszczanie Koltanu +chem.COLTAN_CRYSTAL=Tantalium Crystallizing +chem.COLTAN_PAIN=Pandemonium(III)tantalite Production +chem.CONCRETE=Produkcja Betonu +chem.CONCRETE_ASBESTOS=Produkcja Betonu Azbestowego +chem.COOLANT=Mieszanie Chłodziwa +chem.CORDITE=Produkcja Kordytu +chem.CRYOGEL=Mieszanie KrioÅŒelu +chem.DESH=Produkcja Deszu +chem.DEUTERIUM=Ekstrakcja Deszu +chem.DUCRETE=Produkcja Betonu ze ZuboÅŒonym Uranem +chem.DYN_DNT=Dynosynteza Dineutronium +chem.DYN_EUPH=Dynosynteza Euferium +chem.DYN_SCHRAB=Dynosynteza Szrabidium +chem.DYNAMITE=Synteza Dynamitu +chem.ELECTROLYSIS=Krio-Elektroliza +chem.EPEARL=Ender Pearl Synthesis +chem.ETHANOL=Produkcja Etanolu +chem.FC_BITUMEN=Kraking Bitumenu +chem.FC_DIESEL_KEROSENE=Kraking Diesela +chem.FC_GAS_PETROLEUM=Kraking Gazu +chem.FC_I_NAPHTHA=Kraking Oleju Przemysłowego +chem.FC_KEROSENE_PETROLEUM=Kraking Nafty +chem.FP_HEAVYOIL=Przetwarzanie CięŌkiego Oleju +chem.FP_LIGHTOIL=Przetwarzanie Lekkiego Oleju +chem.FP_NAPHTHA=Przetwarzanie Benzyny Naturalnej +chem.FP_SMEAR=Przetwarzanie Oleju Przemysłowego +chem.FR_PETROIL=Mieszanie Benzyny Olejowej +chem.FR_REOIL=Ponowne Przetwarzanie Ropy +chem.FRACKSOL=Produkcja Roztworu Frakingowego +chem.GASOLINE=Produkcja Benzyny +chem.GASOLINE_LEADED=Mieszanie Benzyny Ołowiowej +chem.HEAVY_ELECTROLYSIS=Krio-Elektroliza CięŌkiej Wody +chem.HELIUM3=Ekstrakcja Helu-3 z Głeby KsięŌycowej +chem.KEVLAR=Produkcja Kevlaru +chem.LPG=Upłynnianie Gazu Naftowego +chem.LUBRICANT=Mieszanie Smaru +chem.METH=Synteza Metamfetaminy +chem.NITAN=Mieszanie Super Paliwa NITAN +chem.NITRIC_ACID=Produkcja Kwasu Azotowego +chem.OIL_SAND=Ekstrakcja ze Smolistego Piasku +chem.OSMIRIDIUM_DEATH=Produkcja Roztworu Osmiridium +chem.PC_ELECTROLYSIS=Elektroliza Chlorku Potasu +chem.PEROXIDE=Produkcja Nadtlenku Wodoru +chem.PET=Synteza PET +chem.PETROIL_LEADED=Mieszanie Ołowiowej Benzyny Olejowej +chem.POLYMER=Synteza Polimeru +chem.PUF6=Plutonium Hexafluoride Production +chem.RUBBER=Produkcja Gumy +chem.SAS3=Schrabidium Trisulfide Production +chem.SATURN=Produkcja Saturanitu +chem.SCHRABIDATE=Ferric Schrabidate Production +chem.SCHRABIDIC=Schrabidic Acid Mixing +chem.SF_BIOFUEL=Biofuel Solidification +chem.SF_BIOGAS=Biogas Solidification +chem.SF_DIESEL=Diesel Solidification +chem.SF_GAS=Natural Gas Solidification +chem.SF_HEATINGOIL=Heating Oil Solidification +chem.SF_HEAVYOIL=Heavy Oil Solidification +chem.SF_KEROSENE=Kerosene Solidification +chem.SF_LIGHTOIL=Light Oil Solidification +chem.SF_LUBRICANT=Lubricant Solidification +chem.SF_NAPHTHA=Naphtha Solidification +chem.SF_OIL=Krzepnięcie Surowej Ropy +chem.SF_PETROIL=Krzepnięcie Nafty Olejowej +chem.SF_PETROLEUM=Petroleum Gas Solidification +chem.SF_RECLAIMED=Krzepnięcie Oleju z Odzysku +chem.SF_SMEAR=Industrial Oil Solidification +chem.SOLID_FUEL=Solid Rocket Fuel Production +chem.SOLVENT=Organic Solvent Mixing +chem.STEAM=Wrzenie Wody +chem.SULFURIC_ACID=Sulfuric Acid Production +chem.TATB=Synteza TATB +chem.TEL=Mieszanie TEL +chem.TEST=Test +chem.TNT=Synteza TNT +chem.UF6=Uranium Hexafluoride Production +chem.VIT_GAS=Gaseous Nuclear Waste Vitrification +chem.VIT_LIQUID=Liquid Nuclear Waste Vitrification +chem.XENON=Ksenonowy Cykl Lindego +chem.XENON_OXY=Boosted Linde Xenon Cycle +chem.YELLOWCAKE=Produkcja "Żółtego Ciasta" + +container.amsBase=AMS Base (Deco) +container.amsEmitter=AMS Emitter (Deco) +container.amsLimiter=AMS Stabilizer (Deco) +container.anvil=Tier %s Anvil +container.arcFurnace=Arc Furnace +container.armorTable=Armor Modification Table +container.assembler=Assembly Machine +container.autocrafter=Automatic Crafting Table +container.barrel=Beczka +container.bat9000=Ogrominasty Zbiornik 9000 +container.battery=Energy Storage +container.bombMulti=Multi Purpose Bomb +container.catalyticReformer=Catalytic Reformer +container.centrifuge=Centrifuge +container.chemplant=Chemical Plant +container.compactLauncher=Compact Launch Pad +container.craneBoxer=Conveyor Boxer +container.craneExtractor=Conveyor Ejector +container.craneGrabber=Conveyor Grabber +container.craneInserter=Conveyor Inserter +container.craneRouter=Conveyor Router +container.craneUnboxer=Conveyor Unboxer +container.crateDesh=Desh Crate +container.crateIron=Iron Crate +container.crateSteel=Steel Crate +container.crateTungsten=Tungsten Crate +container.crystallizer=Ore Acidizer +container.cyclotron=Cyclotron +container.dfcCore=Dark Fusion Core +container.dfcEmitter=DFC Emitter +container.dfcInjector=DFC Fuel Injector +container.dfcReceiver=DFC Receiver +container.dfcStabilizer=DFC Stabilizer +container.diFurnace=Blast Furnace +container.diFurnaceRTG=Nuclear Blast Furnace +container.electricFurnace=Electric Furnace +container.epress=Prasa Elektryczna +container.factoryAdvanced=Advanced Factory +container.factoryTitanium=Podstawowa Fabryka +container.fluidtank=Zbiornik +container.fileCabinet=Filing Cabinet +container.forceField=Forcefield Emitter +container.frackingTower=Hydrauliczna WieÅŒa Krakingowa +container.furnaceCombination=Piec Kombinacyjny +container.furnaceIron=Å»elazny Piec +container.furnaceSteel=Steel Furnace +container.fusionMultiblock=Big Fusion Reactor +container.fusionaryWatzPlant=Fusionary Watz Plant +container.gasCentrifuge=Wirówka Gazowa +container.gasFlare=Flare Stack +container.generator=Reaktor Jądrowy +container.hadron=Particle Accelerator +container.heaterFirebox=Firebox +container.heaterHeatex=Wymiennik Ciepła +container.heaterOilburner=Fluid Burner +container.heaterOven=Piec Grzewczy +container.iGenerator=Generator Przemysłowy +container.keyForge=Locksmith Table +container.launchPad=Missile Launch Pad +container.launchTable=Large Launch Pad +container.leadBox=Containment Box +container.machineBoiler=Oil Heater +container.machineCMB=CMB Steel Furnace +container.machineCoal=Generator Spalinowy +container.machineCoker=Jednostka Å»uÅŒlowa +container.machineCompressor=Kompresor +container.machineCrucible=Tygiel +container.machineDiesel=Generator Diesela +container.machineElectricBoiler=Elektryczny Podgrzewacz Ropy +container.machineFEL=FEL +container.machineITER=Reaktor Fuzyjny +container.machineLargeTurbine=Industrial Steam Turbine +container.machineLiquefactor=Upłynniacz +container.machineMixer=Mieszacz Przemysłowy +container.machineRefinery=Rafineria Ropy Naftowej +container.machineSelenium=Radial Performance Engine +container.machineShredder=Mielarka +container.machineSILEX=SILEX +container.machineSolidifier=Utwardzacz +container.machineTurbine=Turbina Parowa +container.machineTurbofan=Turbofan +container.machine_schrabidium_transmutator=Schrabidium Transmutation Device +container.massStorage=Storage +container.microwave=Microwave +container.miningDrill=Automatyczne Wiertło Kopalnii +container.miningLaser=Mining Laser +container.missileAssembly=Missile Assembly Station +container.nukeBoy=Little Boy +container.nukeCustom=Niestandardowa Atomówka +container.nukeFleija=F.L.E.I.J.A. +container.nukeFstbmb=Balefire Bomb +container.nukeFurnace=Piec Napędzany Promieniotwórczością +container.nukeGadget=The Gadget +container.nukeMan=Fat Man +container.nukeMike=Ivy Mike +container.nukeN2=Mina N² +container.nukeN45=N45 Naval Mine +container.nukePrototype=The Prototype +container.nukeSolinium=The Blue Rinse +container.nukeTsar=Tsar Bomba +container.oilWell=Oil Derrick +container.orbus=Heavy Antimatter Storage +container.plasmaHeater=Plasma Heater +container.press=Prasa Na Węgiel +container.puf6_tank=PuF6 Tank +container.pumpjack=Pumpjack +container.radGen=Silnik Napędzany Promieniotwórczością +container.radar=Radar +container.radiobox=Nadajnik FM +container.radiolysis=RTG and Radiolysis Chamber +container.radiorec=FM Radio +container.rbmkBoiler=RBMK Steam Channel +container.rbmkControl=RBMK Control Rods +container.rbmkControlAuto=RBMK Automatic Control Rods +container.rbmkHeater=RBMK Fluid Heater +container.rbmkOutgasser=RBMK Irradiation Channel +container.rbmkReaSim=RBMK Fuel Rod (ReaSim) +container.rbmkRod=RBMK Fuel Rod +container.rbmkStorage=RBMK Storage Column +container.reactorBreeding=Breeding Reactor +container.reactorControl=Reactor Remote Control Block +container.reactorLarge=Big Nuclear Reactor +container.reactorResearch=Research Reactor +container.reix=Rei-X Mainframe +container.rtg=Generator Radiotermiczny +container.rtgFurnace=Piec Radiotermiczny +container.rttyReceiver=Redstone-over-Radio Receiver +container.rttySender=Redstone-over-Radio Transmitter +container.safe=Sejf +container.satDock=Cargo Landing Pad +container.satLinker=Urządzenie do Komunikacji Satelitarnej +container.siren=Siren +container.soyuzCapsule=Cargo Landing Capsule +container.soyuzLauncher=Soyuz Launch Platform +container.storageDrum=Nuclear Waste Disposal Drum +container.teleLinker=TelLink Device +container.teleporter=Teleporter +container.trainTram=Electric Flat Bed Tram +container.turbinegas=Combined Cycle Gas Turbine +container.turretArty=Grześ +container.turretChekhov=Chekhov's Gun +container.turretFriendly=Pan Przyjazny +container.turretFritz=Frytz +container.turretHIMARS=Henryk +container.turretHoward=Howard +container.turretJeremy=Jeremiasz +container.turretMaxwell=Maxwell +container.turretRichard=Ryszard +container.turretSentry=Brown +container.turretTauon=Tauon +container.uf6_tank=UF6 Tank +container.vacuumDistill=Vacuum Refinery +container.wasteDrum=Spent Fuel Pool Drum +container.watzPowerplant=Watz Power Plant +container.zirnox=ZIRNOX Nuclear Reactor + +crucible.aa=Zaawansowana Produkcja Stopu +crucible.cdalloy=Produkcja Stali Kadmowej +crucible.cmb=Produkcja Stali Kombinatu +crucible.ferro=Ferrouranium Production +crucible.hematite=Iron Production from Hematite +crucible.hss=High-Speed Steel Production +crucible.malachite=Copper Production from Malachite +crucible.redcopper=Red Copper Production +crucible.steel=Steel Production +crucible.steelMeteoric=Steel Production from Meteoric Iron +crucible.steelPig=Steel Production from Pig Iron +crucible.steelWrought=Steel Production from Wrought Iron +crucible.tcalloy=Technetium Steel Production + +death.attack.acid=%1$s wpadł w kwas. +death.attack.acidPlayer=%1$s został roztopiony przez %2$s. +death.attack.ams=%1$s was bathed in deadly particles that have yet to be named by human science. +death.attack.amsCore=%1$s was vaporized in the fire of a singularity. +death.attack.asbestos=%1$s ma teraz prawo do rekompensaty finansowej. +death.attack.bang=%1$s was blasted into bite-sized pieces. +death.attack.blackhole=%1$s was spaghettified. +death.attack.blender=%1$s was chopped in small, bite-sized pieces. +death.attack.boat=%1$s was hit by a boat. +death.attack.boil=%1$s was boiled alive by %2$s. +death.attack.boxcar=%1$s was smushed by a falling boxcar. Oh well. +death.attack.broadcast=%1$s got their brain melted. +death.attack.building=%1$s was hit by a falling building. +death.attack.cheater=%1$s's intestines turned into oats. (???) +death.attack.chopperBullet=%1$s został zmiecony przez %2$s. +death.attack.cloud=%1$s melted like a popsicle in the sun. +death.attack.cmb=%1$s was fizzeled by %2$s. +death.attack.digamma=%1$s stepped into the abyss. +death.attack.electricity=%1$s został poraÅŒony na śmierć. +death.attack.electrified=%1$s was electrified by %2$s. +death.attack.euthanized=%1$s was euthanized by %2$s. +death.attack.euthanizedSelf2=%1$s wins the Darwin Award. +death.attack.euthanizedSelf=%1$s euthanized himself, what a dork. +death.attack.exhaust=%1$s was turned into shish kebab by a starting rocket. +death.attack.flamethrower=%1$s został skremowany przez %2$s. +death.attack.flamethrower.item=%1$s was cremated by %2$s using %3$s. +death.attack.ice=%1$s was turned into a popsicle by %2$s. +death.attack.laser=%1$s was turned into ash by %2$s. +death.attack.laser.item=%1$s was turned into ash by %2$s using %3$s. +death.attack.lead=%1$s umarł od zatrucia ołowiowego. +death.attack.lunar=%1$s forgot to charge their vital organs. +death.attack.meteorite=%1$s was hit by a falling rock from outer space. +death.attack.microwave=%1$s was exploded by microwave radiation. +death.attack.mku=%1$s died from unknown causes. +death.attack.monoxide=%1$s forgot to change the batteries in their carbon monoxide detector. +death.attack.mudPoisoning=%1$s died in poisonous mud. +death.attack.nuclearBlast=%1$s was blown away by a nuclear explosion. +death.attack.overdose=%1$s overdosed and asphyxiated. +death.attack.pc=%1$s was reduced to a puddle in the pink cloud. +death.attack.plasma=%1$s was immolated by %2$s. +death.attack.radiation=%1$s died from radiation poisoning. +death.attack.revolverBullet=%1$s was shot in the head by %2$s. +death.attack.revolverBullet.item=%1$s was shot in the head by %2$s using %3$s. +death.attack.rubble=%1$s was squashed by debris. +death.attack.shrapnel=%1$s was ragged by a shrapnel. +death.attack.spikes=%1$s został nadziany. +death.attack.subAtomic1=Atomy %1$s zostały zniszczone przez %2$s. +death.attack.subAtomic2=%1$s was QPU-misaligned because %2$s tampered with their de facto speed. +death.attack.subAtomic3=%1$s's divergence dropped below 1 percent because of %2$s. +death.attack.subAtomic4=%1$s został podzielony przez zero przez %2$s. +death.attack.subAtomic5=%1$s został znulyfikowany przez %2$s. +death.attack.suicide=%1$s odstrzelił sobie łeb. +death.attack.taint=%1$s umał od guzów fluksowych. +death.attack.tau=%1$s został zastrzelony przez %2$s za pomocą ujemnie naładowanych tauonów. +death.attack.tauBlast=%1$s charged the XVL1456 for too long and was blown into pieces. +death.attack.teleporter=%1$s został teleportowany w pustkę. + +desc.gui.assembler.warning=§cError:§r This machine requires an assembly template! +desc.gui.chemplant.warning=§cError:§r This machine requires an chemistry template! +desc.gui.gasCent.enrichment=§2Enrichment§r$Uranium enrichment requires cascades.$Two-centrifuge cascades will give$uranium fuel, four-centrifuge cascades$will give total separation. +desc.gui.gasCent.output=§6Fluid Transfer§r$Fluid can be transferred to another centrifuge$via the output port for further processing. +desc.gui.nukeBoy.desc=§1Requires:§r$ * Neutron Shielding$ * U235 Projectile$ * Subcritical U235 Target$ * Propellant$ * Bomb Igniter +desc.gui.nukeGadget.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Heavy Plutonium Core$ * Wiring +desc.gui.nukeMan.desc=§1Requires:§r$ * 4 Arrays of First-Generation$ High-Explosive Lenses$ * Plutonium Core$ * Bomb Firing Unit +desc.gui.nukeMike.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$ * Deuterium Cooling Unit$ * Uranium Coated Deuterium Tank$ * Deuterium Tank +desc.gui.nukeTsar.desc=§1Requires:§r$ * 4 Arrays of High-Explosive Lenses$ * Plutonium Core$§9Optional:§r$ * Tsar Bomba Core +desc.gui.radiolysis.desc=§9Description§r$This RTG is more efficient then others, and$comes equipped with a radiolysis chamber for$cracking and sterilization. +desc.gui.rtgBFurnace.desc=Requires at least 15 heat to process$The more heat on top of that, the faster it runs$Heat going over maximum speed will have no effect$Short-lived pellets may decay +desc.gui.rtg.heat=§eCurrent heat level: %s +desc.gui.rtg.pellets=Accepted Pellets: +desc.gui.rtg.pelletHeat=%s (%s heat) +desc.gui.rtg.pelletPower=%s (%s HE/tick) +desc.gui.template=§9Templates§r$Templates can be made by$using the Machine Template Folder. +desc.gui.turbinegas.automode=§2Automatic Turbine Throttling Mode§r$By clicking the "AUTO" button, the turbine$will automatically adjust the power production$based on the power required from the network +desc.gui.turbinegas.fuels=§6Accepted fuels:§r +desc.gui.turbinegas.warning=§cFuel or lubricant level low!§r +desc.gui.upgrade=§lAcceptable Upgrades:§r +desc.gui.upgrade.afterburner= * §dAfterburner§r: Stacks to level 3 +desc.gui.upgrade.effectiveness= * §aEffectiveness§r: Stacks to level 3 +desc.gui.upgrade.overdrive= * §7Overdrive§r: Stacks to level 3 +desc.gui.upgrade.power= * §1Power-Saving§r: Stacks to level 3 +desc.gui.upgrade.speed= * §4Speed§r: Stacks to level 3 +desc.gui.zirnox.coolant=§3Coolant§r$CO2 transfers heat from the core to the water.$This will boil it into super dense steam.$The efficiency of cooling and steam production$is based on pressure. +desc.gui.zirnox.pressure=§6Pressure§r$Pressure can be reduced by venting CO2.$However, too low a pressure, and cooling$efficiency and steam production will be reduced.$Look out for meltdowns! +desc.gui.zirnox.warning1=§cError:§r Water is required for$the reactor to function properly! +desc.gui.zirnox.warning2=§cError:§r CO2 is required for$the reactor to function properly! +desc.item.ammo.con_accuracy2=- Highly decreased accuracy +desc.item.ammo.con_damage=- Highly decreased damage +desc.item.ammo.con_heavy_wear=- Highly increased wear +desc.item.ammo.con_ling_fire=- No lingering fire +desc.item.ammo.con_nn=- Not even a nuke +desc.item.ammo.con_no_damage=- No damage +desc.item.ammo.con_no_explode1=- Non-explosive +desc.item.ammo.con_no_explode2=- No block damage +desc.item.ammo.con_no_explode3=- No splash damage +desc.item.ammo.con_no_fire=- Not incendiary +desc.item.ammo.con_no_mirv=- Not recommended for the Proto MIRV +desc.item.ammo.con_no_projectile=- No projectile +desc.item.ammo.con_penetration=- Not penetrating +desc.item.ammo.con_radius=- Decreased blast radius +desc.item.ammo.con_range2=- Highly decreased range +desc.item.ammo.con_sing_projectile=- Single projectile +desc.item.ammo.con_speed=- Decreased projectile speed +desc.item.ammo.con_super_wear=- Very highly increased wear +desc.item.ammo.con_wear=- Increased wear +desc.item.ammo.neu_40mm=* It's a 40mm grenade that we squeezed to fit the barrel! +desc.item.ammo.neu_blank=* It's a blank +desc.item.ammo.neu_boat=* Boat +desc.item.ammo.neu_boxcar=* Boxcar +desc.item.ammo.neu_building=* Building +desc.item.ammo.neu_chlorophyte=* Chlorophyte +desc.item.ammo.neu_eraser=* For removing big mistakes +desc.item.ammo.neu_fun=* Fun for the whole family! +desc.item.ammo.neu_heavy_metal=* Heavy Metal +desc.item.ammo.neu_homing=* Homing +desc.item.ammo.neu_jolt=* Jolt +desc.item.ammo.neu_less_bouncy=* Less bouncy +desc.item.ammo.neu_maskman_flechette=* Fires a tracer which summons a storm of DU-flechettes +desc.item.ammo.neu_maskman_meteorite=* Fires a high-damage round that summons a small meteorite +desc.item.ammo.neu_more_bouncy=* Extra bouncy +desc.item.ammo.neu_no_bounce=* Not bouncy +desc.item.ammo.neu_no_con=* No drawbacks lole +desc.item.ammo.neu_starmetal=* Starmetal +desc.item.ammo.neu_tracer=* Tracer +desc.item.ammo.neu_uhh=* Uhhh +desc.item.ammo.neu_warcrime1=* Technically a warcrime +desc.item.ammo.neu_warcrime2=* Twice the warcrime in a single round! +desc.item.ammo.pro_accurate1=+ Increased accuracy +desc.item.ammo.pro_accurate2=+ Near-perfect accuracy +desc.item.ammo.pro_balefire=+ Balefire +desc.item.ammo.pro_bomb_count=+ Increased bomb count +desc.item.ammo.pro_caustic=+ Caustic +desc.item.ammo.pro_chainsaw=+ Chainsaw +desc.item.ammo.pro_chlorine=+ Chlorine gas +desc.item.ammo.pro_damage=+ Increased damage +desc.item.ammo.pro_damage_slight=+ Above average damage +desc.item.ammo.pro_emp=+ EMP +desc.item.ammo.pro_explosive=+ Explosive +desc.item.ammo.pro_fallout=+ Fallout +desc.item.ammo.pro_fit_357=+ Fits every .357 model +desc.item.ammo.pro_flames=+ Increased flame count +desc.item.ammo.pro_gravity=+ Decreased gravity +desc.item.ammo.pro_heavy_damage=+ Highly increased damage +desc.item.ammo.pro_incendiary=+ Incendiary +desc.item.ammo.pro_lunatic=+ Lunatic +desc.item.ammo.pro_marauder=+ Instantly removes annoying and unbalanced enemies +desc.item.ammo.pro_mining=+ Explosion drops all blocks +desc.item.ammo.pro_no_gravity=+ Not affected by gravity +desc.item.ammo.pro_nuclear=+ Nuclear +desc.item.ammo.pro_penetration=+ Penetrating +desc.item.ammo.pro_percussion=+ Percussive blast +desc.item.ammo.pro_phosphorus=+ Induces phosphorus burns +desc.item.ammo.pro_phosphorus_splash=+ Phosphorus splash +desc.item.ammo.pro_poison_gas=+ Poison splash +desc.item.ammo.pro_radius=+ Increased blast radius +desc.item.ammo.pro_radius_high=+ Highly increased blast radius +desc.item.ammo.pro_range=+ Increased range +desc.item.ammo.pro_rocket=+ Rocket +desc.item.ammo.pro_rocket_propelled=+ Rocket Propelled +desc.item.ammo.pro_shrapnel=+ Shrapnel +desc.item.ammo.pro_speed=+ Increased projectile speed +desc.item.ammo.pro_stunning=+ Stunning +desc.item.ammo.pro_toxic=+ Toxic +desc.item.ammo.pro_wear=+ Decreased wear +desc.item.ammo.pro_withering=+ Withering +desc.item.armorMod.display=to display installed armor mods +desc.item.battery.charge=Charge: %s / %sHE +desc.item.battery.chargePerc=Charge: %s%% +desc.item.battery.chargeRate=Charge rate: %sHE/tick +desc.item.battery.dischargeRate=Discharge rate: %sHE/tick +desc.item.durability=Durability: %s +desc.item.grenade.fuse=Fuse: %s +desc.item.grenade.fuseImpact=Impact +desc.item.grenade.fuseInstant=Instant +desc.item.gun.ammo=Ammo %s +desc.item.gun.ammoBelt=Belt +desc.item.gun.ammoEnergy=Energy; %sHE per shot +desc.item.gun.ammoEnergyAlt=%sHE per alt shot +desc.item.gun.ammoMag=%s / %s +desc.item.gun.ammoType=Ammo Type: %s +desc.item.gun.ammoTypeAlt=Secondary Ammo: %s +desc.item.gun.damage=Damage: %s - %s +desc.item.gun.damageAlt=Damage: %s +desc.item.gun.lore=to view in-depth lore +desc.item.gun.loreFunc=to view in-depth functionality +desc.item.gun.manufacturer=Manufacturer: %s +desc.item.gun.name=Name: %s +desc.item.gun.pellets=Projectiles: %s - %s +desc.item.gun.penetration=Armor Penetration Value: %s +desc.item.kitArmor=Armor will be displaced by new set. +desc.item.kitHaz=Armor will be displaced by hazmat suit. +desc.item.kitPack=What a bargain! +desc.item.kitPool=Please empty inventory before opening! +desc.item.pileRod=§eUse on drilled graphite to insert$§eUse screwdriver to extract$ +desc.item.rtgDecay=Decays to: %s +desc.item.rtgHeat=Power Level: %s +desc.item.storage.capacity=Capacity %s%%s +desc.item.storage.proscons=to view pros cons list +desc.misc.357=.357 Magnum +desc.misc.556=.223 Remington +desc.misc.762=.308 Winchester +desc.misc.func=§n-- Function -- +desc.misc.lanthanum="Lanthanum" +desc.misc.lctrl=§8Hold <§e§oLCTRL§8§o> %s +desc.misc.lore=§n-- Lore -- +desc.misc.lshift=§8Hold <§e§oLSHIFT§8§o> %s +desc.misc.luna=§o20x155mm Lunatic +desc.misc.meltPoint=Melting point: §c%s +desc.misc.noPos=No position set! +desc.misc.pos=Set pos to: %s, %s, %s +desc.misc.posSet=Position set! +desc.item.wasteCooling=Cool in a Spent Fuel Pool Drum +desc.item.zirnoxBreedingRod=§2[ZIRNOX Breeding Rod]$§ePlace next to fuel rods to breed$§eLasts %d ticks +desc.item.zirnoxRod=§a[ZIRNOX Fuel Rod]$§eGenerates %1$d heat per tick$§eLasts %2$d ticks + +digamma.playerDigamma=Ekzpozycja Digammy: +digamma.playerHealth=Wpływ Digammy: +digamma.playerRes=Odporność na Digammę: +digamma.title=URZĄDZENIE DIAGNOSTYCZNE DIGAMMA + +entity.entity_cyber_crab.name=Cyber Krab +entity.entity_elder_one.name=Kwakos Przedwieczny +entity.entity_fucc_a_ducc.name=Kaczka +entity.entity_glyphid.name=Glifid +entity.entity_glyphid_behemoth.name=Glyphid Behemoth +entity.entity_glyphid_blaster.name=Glyphid Blaster +entity.entity_glyphid_bombardier.name=Glyphid Bombardier +entity.entity_glyphid_brawler.name=Glyphid Brawler +entity.entity_glyphid_brenda.name=Brenda +entity.entity_glyphid_nuclear.name=Big Man Johnson +entity.entity_glyphid_scout.name=Glyphid Scout +entity.entity_ntm_fbi.name=FBI Agent +entity.entity_ntm_radiation_blaze.name=Meltdown Elemental +entity.hbm.entity_ntm_ufo.name=Martian Invasion Ship +entity.entity_mob_hunter_chopper.name=Hunter Chopper +entity.entity_mob_mask_man.name=Mask Man +entity.entity_mob_gold_creeper.name=Golden Creeper +entity.entity_mob_nuclear_creeper.name=Nuclear Creeper +entity.entity_mob_phosgene_creeper.name=Phosgene Creeper +entity.entity_mob_tainted_creeper.name=Tainted Creeper +entity.entity_mob_volatile_creeper.name=Volatile Creeper +entity.entity_taint_crab.name=Taint Crab +entity.entity_tesla_crab.name=Tesla Crab +entity.hbm.entity_balls_o_tron.name=Balls-O-Tron Prime +entity.hbm.entity_balls_o_tron_seg.name=Balls-O-Tron Segment +entity.hbm.entity_bullet.name=Bullet +entity.hbm.entity_rocket.name=Rocket +entity.hbm.entity_schrabnel.name=Schrabnel + +flare.ignition=Ignition +flare.valve=Flow Valve + +fluid.acid_fluid=Acid +fluid.corium_fluid=Corium +fluid.mud_fluid=Poisonous Mud +fluid.schrabidic_fluid=Schrabidic Acid +fluid.toxic_fluid=Stereotypical Green Ooze +fluid.volcanic_lava_fluid=Volcanic Lava + +foundry.filter=Filter: %s +foundry.inverted=Redstone inverted +foundry.invertFilter=Filter inverted +foundry.noCast=No mold installed! + +geiger.chunkRad=Current chunk radiation: +geiger.envRad=Total environmental radiation: +geiger.playerRad=Player contamination: +geiger.playerRes=Player resistance: +geiger.title=GEIGER COUNTER +geiger.title.dosimeter=DOSIMETER + +gun.make.ARMALITE=Armalite +gun.make.AUTO_ORDINANCE=Auto-Ordnance Corporation +gun.make.BAE=BAE Systems plc +gun.make.BENELLI=Benelli Armi SpA +gun.make.BLACK_MESA=Black Mesa Research Facility +gun.make.CERIX=Cerix Magnus +gun.make.COLT=Colt's Manufacturing Company +gun.make.COMBINE=The Universal Union +gun.make.CUBE=Cube 2: Sauerbraten +gun.make.ENZINGER=Enzinger Union +gun.make.EQUESTRIA=Equestria Missile Systems +gun.make.FLIMFLAM=FlimFlam Industries +gun.make.F_STRONG=Fort Strong +gun.make.GLORIA=Gloria GmbH +gun.make.HASBRO=Hasbro +gun.make.H_AND_K=Heckler & Koch +gun.make.H_AND_R=Harrington & Richardson +gun.make.IF=Ironshod Firearms +gun.make.IMI=Israel Military Industries +gun.make.IMI_BIGMT=IMI / Big MT +gun.make.LANGFORD=Langford Research Laboratories +gun.make.LUNA=Lunar Defense Corp +gun.make.MAGNUM_R_IMI=Magnum Research / Israel Military Industries +gun.make.MANN=Open Mann Co. +gun.make.MAXIM=Hiram Maxim +gun.make.METRO=Metro Gunsmiths +gun.make.MWT=MWT Prototype Labs +gun.make.NAZI=Erfurter Maschinenfabrik Geipel +gun.make.NONE=- +gun.make.RAYTHEON=Raytheon Missile Systems +gun.make.REMINGTON=Remington Arms +gun.make.ROCKWELL=Rockwell International Corporation +gun.make.ROCKWELL_U=Rockwell International Corporation? +gun.make.RYAN=Ryan Industries +gun.make.SAAB=Saab Bofors Dynamics +gun.make.SACO=Saco Defense / US Ordnance +gun.make.TULSKY=Tulsky Oruzheiny Zavod +gun.make.UAC=Union Aerospace Corporation +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 / Big MT + +gun.name.ar15_50=AR-15 .50 BMG Mod +gun.name.baeAR=Britannian Standard Issue Assault Rifle +gun.name.bel=Balefire Egg Launcher +gun.name.benelli=Benelli M4 Super 90 +gun.name.benelliDrum=Benelli M4 Super 90 (Drum Magazine Modification) +gun.name.bio=RI No. 2 Mark 1 +gun.name.bolter=Manticora Pattern Boltgun +gun.name.cPython=Colt Python +gun.name.cz53=CZ53 Personal Minigun +gun.name.cz57=CZ57 Avenger Minigun +gun.name.dart=Needle Gun +gun.name.deagle=IMI Desert Eagle +gun.name.emp=EMP Orb Projector +gun.name.extinguisher=PROTEX Fire Exinguisher 6kg +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=Carl Gustav Recoilless Rifle M1 +gun.name.ifHorseshoe=IF-18 Horseshoe +gun.name.ifPit=IF-18 Horseshoe Bottomless Pit +gun.name.ifScope=IF-18 Horseshoe Scoped +gun.name.ifStorm=IF-18 Horseshoe Silver Storm +gun.name.ifVanity=IF-18 Horseshoe Vanity +gun.name.karl=M1 Karl-GerÀt +gun.name.ks23=KS-23 +gun.name.lacunae=Auntie Lacunae +gun.name.lasetDet=Hopeville Laser Detonator +gun.name.lunaAR=1986 Bishamonten type Assault Rifle +gun.name.lunaGun=1978 Rāhula type Standard Issue Sidearm (Revision 2) +gun.name.lunaHLR=1944 Chang'e type Light Machine Gun +gun.name.lunaShotty=1978 Guan Yu type Scattergun (Revision 1) +gun.name.lunaSMG=1956 Ānanda type Submachine Gun +gun.name.lunaSniper=1915 Hou Yi 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 Tactical Nuclear Catapult +gun.name.m42MIRV=M-42 Experimental MIRV +gun.name.m60=Machine Gun, Caliber 7.62 mm, M60 +gun.name.maxim=Maxim gun +gun.name.maximDouble=Double Maxim gun +gun.name.mg3=Universal-Maschinengewehr Modell 3 +gun.name.mp40=Maschinenpistole 40 +gun.name.nerf=NERF blaster of unknown design +gun.name.osipr=Overwatch Standard Issue Pulse Rifle +gun.name.panz=RaketenpanzerbÃŒchse 54 +gun.name.quadro=OpenQuadro Guided Man-Portable Missile Launcher +gun.name.remington870=Remington 870 +gun.name.revolverCursed=Britannia Standard Issue Motorized Handgun +gun.name.sauer=Sauer Shotgun +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=Double-Barreled Combat Shotgun +gun.name.tau=XVL1456 Tau Cannon +gun.name.tommy9=M1A1 Submachine Gun 9mm Mod +gun.name.tommy=M1A1 Submachine Gun +gun.name.topaz=Heavy Duty Flamer +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-B950 .45 Standard Issue Handgun +gun.name.uacSMG=UAC-17 Compact Sub-Machine Gun +gun.name.uboinik=Uboinik Revolving Shotgun +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 Prismatic Negative Energy Cannon + +hadron.analysis=Analyzing... +hadron.buttonOn=Analysis Chamber (if present) is ON +hadron.buttonOff=Analysis Chamber is OFF +hadron.error_generic=Error! +hadron.error_no_charge=Error 0x01 [NC] +hadron.error_no_analysis=Error 0x02 [NA] +hadron.error_obstructed_channel=Error 0x03 [OC] +hadron.error_expected_coil=Error 0x04 [EC] +hadron.error_malformed_segment=Error 0x05 [MS] +hadron.error_analysis_too_long=Error 0x06 [ATL] +hadron.error_analysis_too_short=Error 0x07 [ATS] +hadron.error_diode_collision=Error 0x08 [DC] +hadron.error_branching_turn=Error 0x09 [BT] +hadron.hopper0=§eNormal Mode:$All items will be used. +hadron.hopper1=§eHopper Mode:$One item will always remain. +hadron.idle=Idle +hadron.modeCircular=§eCircular Accelerator Mode:$Magnets must loop back into core.$Unlocks more recipes. +hadron.modeLine=§eLinear Accelerator Mode:$Accelerator ends with analysis chamber.$Fewer Recipes. +hadron.noresult=No Result. +hadron.noresult_too_slow=Insuff. momentum! +hadron.noresult_wrong_ingredient=Invalid recipe! +hadron.noresult_wrong_mode=Wrong mode! +hadron.progress=In Progress... +hadron.stats=Previous results: +hadron.stats_coord=Erroring position: %s / %s / %s +hadron.stats_momentum=Momentum: %s +hadron.success=Completed! + +hazard.prot=Protects against hazards: +hazard.noprot=Does NOT protect against: +hazard.bacteria=Bacteria / Aerosols +hazard.corrosive=Corrosive Fumes +hazard.gasChlorine=Chemical Gas +hazard.gasInert=Inert Gas / Asphxiants +hazard.gasMonoxide=Carbon Monoxide +hazard.light=Bright Lights +hazard.nerveAgent=Nerve Agent +hazard.neverProtects=Will never protect against: +hazard.particleCoarse=Airborne Particles +hazard.particleFine=Particulates +hazard.sand=Eye Irritants + +hbm.key=NTM Hotkeys +hbm.key.calculator=Calculator +hbm.key.craneLoad=Load/Unload Crane +hbm.key.craneMoveDown=Move Crane Backward +hbm.key.craneMoveLeft=Move Crane Left +hbm.key.craneMoveRight=Move Crane Right +hbm.key.craneMoveUp=Move Crane Forward +hbm.key.dash=Dash (Unbind from Crouch in config) +hbm.key.toggleBack=Toggle Backpack +hbm.key.toggleHUD=Toggle HUD +hbm.key.reload=Reload + +hbmfluid.acid=Hydrogen Peroxide +hbmfluid.amat=Antimatter +hbmfluid.aromatics=Aromatic Hydrocarbons +hbmfluid.aschrab=Antischrabidium +hbmfluid.balefire=BF Rocket Fuel +hbmfluid.biofuel=Biofuel +hbmfluid.biogas=Biogas +hbmfluid.bitumen=Bitumen +hbmfluid.blood=Blood +hbmfluid.blood_hot=Hot Blood +hbmfluid.calcium_chloride=Calciumchloride Solution +hbmfluid.calcium_solution=Calcium Solution +hbmfluid.carbondioxide=Carbon Dioxide +hbmfluid.chlorine=Chlorine Gas +hbmfluid.chlorocalcite_cleaned=Cleaned Chlorocalcite Solution +hbmfluid.chlorocalcite_mix=Mixed Chlorocalcite Solution +hbmfluid.chlorocalcite_solution=Chlorocalcite Solution +hbmfluid.cholesterol=Cholesterol Solution +hbmfluid.coalcreosote=Coal Tar Creosote +hbmfluid.coalgas=Coal Gasoline +hbmfluid.coalgas_leaded=Leaded Coal Gasoline +hbmfluid.coaloil=Coal Oil +hbmfluid.colloid=Colloid +hbmfluid.coolant=Coolant +hbmfluid.coolant_hot=Hot Coolant +hbmfluid.crackoil=Cracked Oil +hbmfluid.cryogel=Cryogel +hbmfluid.death=Osmiridic Solution +hbmfluid.deuterium=Deuterium +hbmfluid.diesel=Diesel +hbmfluid.diesel_crack=Cracked Diesel +hbmfluid.diesel_crack_reform=High-Octane Cracked Diesel +hbmfluid.diesel_reform=High-Octane Diesel +hbmfluid.egg=Dissolved Egg +hbmfluid.estradiol=Estradiol Solution +hbmfluid.ethanol=Ethanol +hbmfluid.enderjuice=Ender Juice +hbmfluid.fishoil=Fish Oil +hbmfluid.fracksol=Fracking Solution +hbmfluid.gas=Natural Gas +hbmfluid.gas_coker=Coker Gas +hbmfluid.gasoline=Gasoline +hbmfluid.gasoline_leaded=Leaded Gasoline +hbmfluid.heatingoil=Heating Oil +hbmfluid.heatingoil_vacuum=Heavy Heating Oil +hbmfluid.heavyoil=Heavy Oil +hbmfluid.heavyoil_vacuum=Vacuum Heavy Oil +hbmfluid.heavywater=Heavy Water +hbmfluid.helium3=Helium-3 +hbmfluid.helium4=Helium-4 +hbmfluid.hotcrackoil=Hot Cracked Oil +hbmfluid.hotoil=Hot Crude Oil +hbmfluid.hotsteam=Dense Steam +hbmfluid.hydrogen=Liquid Hydrogen +hbmfluid.iongel=Ionic Gel +hbmfluid.kerosene=Kerosene +hbmfluid.kerosene_reform=Jet Fuel +hbmfluid.lava=Lava +hbmfluid.lightoil=Light Oil +hbmfluid.lightoil_crack=Cracked Light Oil +hbmfluid.lightoil_vacuum=Vacuum Light Oil +hbmfluid.lpg=LPG +hbmfluid.lubricant=Engine Lubricant +hbmfluid.mercury=Mercury +hbmfluid.mug=Mug Root Beer +hbmfluid.mug_hot=Hot Mug Root Beer +hbmfluid.mustardgas=Mustard Gas +hbmfluid.naphtha=Naphtha +hbmfluid.naphtha_coker=Coker Naphtha +hbmfluid.naphtha_crack=Cracked Naphtha +hbmfluid.nitan=NITAN© 100 Octane Super Fuel +hbmfluid.nitric_acid=Nitric Acid +hbmfluid.nitroglycerin=Nitroglycerin +hbmfluid.none=None +hbmfluid.oil=Crude Oil +hbmfluid.oil_coker=Coker Oil +hbmfluid.oxygen=Liquid Oxygen +hbmfluid.oxyhydrogen=Oxyhydrogen +hbmfluid.pain=Pandemonium(III)tantalite Solution +hbmfluid.petroil=Petroil +hbmfluid.petroil_leaded=Leaded Petroil +hbmfluid.petroleum=Petroleum Gas +hbmfluid.phosgene=Phosgene +hbmfluid.plasma_bf=Balefire Plasma +hbmfluid.plasma_dh3=Deuterium-Helium-3 Plasma +hbmfluid.plasma_dt=Deuterium-Tritium Plasma +hbmfluid.plasma_hd=Hydrogen-Deuterium Plasma +hbmfluid.plasma_ht=Hydrogen-Tritium Plasma +hbmfluid.plasma_xm=Helium-4-Oxygen Plasma +hbmfluid.potassium_chloride=Potassiumchloride Solution +hbmfluid.puf6=Plutonium Hexafluoride +hbmfluid.radiosolvent=High-Performance Solvent +hbmfluid.reclaimed=Reclaimed Industrial Oil +hbmfluid.redmud=Red Mud +hbmfluid.reformate=Reformate +hbmfluid.reformgas=Reformate Gas +hbmfluid.salient=Salient Green +hbmfluid.sas3=Schrabidium Trisulfide +hbmfluid.schrabidic=Schrabidic Acid +hbmfluid.seedslurry=Seeding Slurry +hbmfluid.smear=Industrial Oil +hbmfluid.smoke=Smoke +hbmfluid.smoke_leaded=Leaded Smoke +hbmfluid.smoke_poison=Poison Smoke +hbmfluid.solvent=Solvent +hbmfluid.sourgas=Sour Gas +hbmfluid.spentsteam=Low-Pressure Steam +hbmfluid.steam=Steam +hbmfluid.sulfuric_acid=Sulfuric Acid +hbmfluid.sunfloweroil=Sunflower Seed Oil +hbmfluid.superhotsteam=Super Dense Steam +hbmfluid.syngas=Syngas +hbmfluid.tritium=Tritium +hbmfluid.uf6=Uranium Hexafluoride +hbmfluid.ultrahotsteam=Ultra Dense Steam +hbmfluid.unsaturateds=Unsaturated Hydrocarbons +hbmfluid.wastefluid=Liquid Nuclear Waste +hbmfluid.wastegas=Gaseous Nuclear Waste +hbmfluid.water=Water +hbmfluid.watz=Poisonous Mud +hbmfluid.woodoil=Wood Oil +hbmfluid.xenon=Xenon Gas +hbmfluid.xpjuice=Experience Juice +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=Actinium-227 +hbmmat.advancedalloy=Advanced Alloy +hbmmat.aluminum=Aluminium +hbmmat.americiumrg=Reactor-Grade Americium +hbmmat.americium241=Americium-241 +hbmmat.americium242=Americium-242 +hbmmat.arsenic=Arsenic +hbmmat.asbestos=Asbestos +hbmmat.bakelite=Bakelite +hbmmat.beryllium=Beryllium +hbmmat.bismuth=Bismuth +hbmmat.borax=Borax +hbmmat.boron=Boron +hbmmat.cadmium=Cadmium +hbmmat.carbon=Carbon +hbmmat.cdalloy=Cadmium Steel +hbmmat.cinnabar=Cinnabar +hbmmat.cmbsteel=Combine Steel +hbmmat.coal=Coal +hbmmat.coalcoke=Coal Coke +hbmmat.cobalt=Cobalt +hbmmat.cobalt60=Cobalt-60 +hbmmat.coltan=Coltan +hbmmat.copper=Copper +hbmmat.desh=Desh +hbmmat.dineutronium=Dineutronium +hbmmat.durasteel=High-Speed Steel +hbmmat.euphemium=Euphemium +hbmmat.ferrouranium=Ferrouranium +hbmmat.fiberglass=Fiberglass +hbmmat.fluorite=Fluorite +hbmmat.flux=Flux +hbmmat.ghiorsium336=Ghiorsium-336 +hbmmat.gold=Gold +hbmmat.gold198=Gold-198 +hbmmat.graphene=Graphene +hbmmat.graphite=Graphite +hbmmat.hematite=Hematite +hbmmat.iron=Iron +hbmmat.lapis=Lapis Lazuli +hbmmat.lead=Lead +hbmmat.lead209=Lead-209 +hbmmat.lignitecoke=Lignite Coke +hbmmat.lignite=Lignite +hbmmat.lithium=Lithium +hbmmat.magnetizedtungsten=Magnetized Tungsten +hbmmat.malachite=Malachite +hbmmat.meteoriciron=Meteoric Iron +hbmmat.mingrade=Minecraft Grade Copper +hbmmat.neptunium237=Neptunium-237 +hbmmat.niobium=Niobium +hbmmat.obsidian=Obsidian +hbmmat.osmiridium=Osmiridium +hbmmat.petcoke=Petroleum Coke +hbmmat.pigiron=Pig Iron +hbmmat.plutonium=Plutonium +hbmmat.plutonium238=Plutonium-238 +hbmmat.plutonium239=Plutonium-239 +hbmmat.plutonium240=Plutonium-240 +hbmmat.plutonium241=Plutonium-241 +hbmmat.plutoniumrg=Reactor-Grade Plutonium +hbmmat.polonium210=Polonium-210 +hbmmat.polymer=Polymer +hbmmat.radium226=Radium-226 +hbmmat.redphosphorus=Red Phosphorus +hbmmat.redstone=Redstone +hbmmat.rubber=Rubber +hbmmat.saltpeter=Niter +hbmmat.saturnite=Saturnite +hbmmat.schrabidate=Ferric Schrabidate +hbmmat.schrabidium=Schrabidium +hbmmat.schraranium=Schraranium +hbmmat.slag=Slag +hbmmat.solinium=Solinium +hbmmat.starmetal=Starmetal +hbmmat.steel=Steel +hbmmat.stone=Stone +hbmmat.sulfur=Sulfur +hbmmat.tantalum=Tantalum +hbmmat.tcalloy=Technetium Steel +hbmmat.technetium99=Technetium-99 +hbmmat.titanium=Titanium +hbmmat.thorium232=Thorium-232 +hbmmat.tungsten=Tungsten +hbmmat.uranium=Uranium +hbmmat.uranium233=Uranium-233 +hbmmat.uranium235=Uranium-235 +hbmmat.uranium238=Uranium-238 +hbmmat.watzmud=Poisonous Mud +hbmmat.whitephosphorus=White Phosphorus +hbmmat.workersalloy=Desh +hbmmat.wroughtiron=Wroght Iron + +matshape.block=%s Block +matshape.blocks=%s Blocks +matshape.ingot=%s Ingot +matshape.ingots=%s Ingots +matshape.nugget=%s Nugget +matshape.nuggets=%s Nuggets +matshape.quantum=%s Quantum +matshape.quanta=%s Quanta + +info.asbestos=My lungs are burning. +info.coaldust=It's hard to breathe here. +info.coil=Coil Strength +info.templatefolder=Created with %s +info.template_in=Input: +info.template_in_p=Inputs: +info.template_out=Output: +info.template_out_p=Outputs: +info.template_seconds=seconds +info.template_time=Production Time: + +item.acetylene_torch.name=Acetylene Welding Torch +item.ajr_boots.name=Steel Ranger Boots +item.ajr_helmet.name=Steel Ranger Helmet +item.ajr_legs.name=Steel Ranger Leggings +item.ajr_plate.name=Steel Ranger Chestplate +item.ajro_boots.name=AJR Power Armor Boots +item.ajro_helmet.name=AJR Power Armor Helmet +item.ajro_legs.name=AJR Power Armor Leggings +item.ajro_plate.name=AJR Power Armor Chestplate +item.alloy_axe.name=Advanced Alloy Axe +item.alloy_boots.name=Advanced Alloy Boots +item.alloy_helmet.name=Advanced Alloy Helmet +item.alloy_hoe.name=Advanced Alloy Hoe +item.alloy_legs.name=Advanced Alloy Leggings +item.alloy_pickaxe.name=Advanced Alloy Pickaxe +item.alloy_plate.name=Advanced Alloy Chestplate +item.alloy_shovel.name=Advanced Alloy Shovel +item.alloy_sword.name=Advanced Alloy Sword +item.ammo_12gauge.name=12 Gauge Buckshot +item.ammo_12gauge_du.name=12 Gauge Buckshot (Uranium Coated) +item.ammo_12gauge_incendiary.name=12 Gauge Buckshot (Incendiary) +item.ammo_12gauge_marauder.name=12 Gauge Tactical Anti-Marauder Shell +item.ammo_12gauge_percussion.name=12 Gauge Percussion Cap +item.ammo_12gauge_shrapnel.name=12 Gauge Buckshot (Shrapnel) +item.ammo_12gauge_sleek.name=12 Gauge Buckshot (IF-R&D) +item.ammo_20gauge.name=20 Gauge Buckshot +item.ammo_20gauge_caustic.name=20 Gauge Buckshot (Caustic) +item.ammo_20gauge_explosive.name=20 Gauge Buckshot (Explosive) +item.ammo_20gauge_flechette.name=20 Gauge Flechette Shell +item.ammo_20gauge_incendiary.name=20 Gauge Buckshot (Incendiary) +item.ammo_20gauge_shock.name=20 Gauge Buckshot (Shock) +item.ammo_20gauge_shrapnel.name=20 Gauge Buckshot (Shrapnel) +item.ammo_20gauge_sleek.name=20 Gauge Buckshot (IF-R&D) +item.ammo_20gauge_slug.name=20 Gauge Brenneke Slug +item.ammo_20gauge_wither.name=20 Gauge Buckshot (Withering) +item.ammo_22lr.name=.22 LR Round +item.ammo_22lr_ap.name=.22 LR Round (Armor Piercing) +item.ammo_22lr_chlorophyte.name=.22 LR Round (Chlorophyte) +item.ammo_357_desh.name=.357 Magnum Desh Bullet +item.ammo_44.name=.44 Magnum Bullet +item.ammo_44_ap.name=.44 Magnum Bullet (Armor Piercing) +item.ammo_44_bj.name=.44 Magnum Bullet (Boat) +item.ammo_44_chlorophyte.name=.44 Magnum Bullet (Chlorophyte) +item.ammo_44_du.name=.44 Magnum Bullet (DU) +item.ammo_44_phosphorus.name=.44 Magnum Bullet (WP) +item.ammo_44_pip.name=.44 Magnum Bullet (Boxcar) +item.ammo_44_rocket.name=.44 Magnum Rocket +item.ammo_44_silver.name=.44 Magnum Bullet (Building) +item.ammo_44_star.name=.44 Magnum Bullet (Starmetal) +item.ammo_45.name=.45 ACP Bullet +item.ammo_45_ap.name=.45 ACP Bullet (AP) +item.ammo_45_du.name=.45 ACP Bullet (DU) +item.ammo_4gauge.name=4 Gauge Buckshot +item.ammo_4gauge_balefire.name=23mm Balefire Grenade +item.ammo_4gauge_canister.name=23mm Rocket (Canister Shot) +item.ammo_4gauge_claw.name=4 Gauge Claw Shell +item.ammo_4gauge_explosive.name=23mm Grenade +item.ammo_4gauge_flechette.name=4 Gauge Flechette Shell +item.ammo_4gauge_flechette_phosphorus.name=4 Gauge Flechette Shell (WP) +item.ammo_4gauge_kampf.name=23mm Rocket +item.ammo_4gauge_semtex.name=23mm Mining Charge +item.ammo_4gauge_sleek.name=4 Gauge Buckshot (IF-R&D) +item.ammo_4gauge_slug.name=4 Gauge Solid Steel Slug +item.ammo_4gauge_titan.name=4 Gauge Quacker Round +item.ammo_4gauge_vampire.name=4 Gauge Wooden Stake Shell +item.ammo_4gauge_void.name=4 Gauge Void Shell +item.ammo_50ae.name=.50 AE Round +item.ammo_50ae_ap.name=.50 AE Round (Armor Piercing) +item.ammo_50ae_chlorophyte.name=.50 AE Round (Chlorophyte) +item.ammo_50ae_du.name=.50 AE Round (DU) +item.ammo_50ae_star.name=.50 AE Round (Starmetal) +item.ammo_50bmg.name=.50 BMG Round +item.ammo_50bmg_ap.name=.50 BMG Round (Armor Piercing) +item.ammo_50bmg_chlorophyte.name=.50 BMG Round (Chlorophyte) +item.ammo_50bmg_du.name=.50 BMG Round (DU) +item.ammo_50bmg_explosive.name=.50 BMG Round (Explosive) +item.ammo_50bmg_flechette.name=.50 BMG Flechette Round +item.ammo_50bmg_flechette_am.name=.50 BMG Flechette Round (Americium) +item.ammo_50bmg_flechette_po.name=.50 BMG Flechette Round (Polonium) +item.ammo_50bmg_incendiary.name=.50 BMG Round (Incendiary) +item.ammo_50bmg_phosphorus.name=.50 BMG Round (WP) +item.ammo_50bmg_sleek.name=.50 BMG Round (IF-R&D) +item.ammo_50bmg_star.name=.50 BMG Round (Starmetal) +item.ammo_556.name=5.56mm Round +item.ammo_556_ap.name=5.56mm Round (Armor Piercing) +item.ammo_556_chlorophyte.name=5.56mm Round (Chlorophyte) +item.ammo_556_du.name=5.56mm Round (DU) +item.ammo_556_flechette.name=5.56mm Flechette Round +item.ammo_556_flechette_chlorophyte.name=5.56mm Flechette Round (Chlorophyte) +item.ammo_556_flechette_du.name=5.56mm Flechette Round (Uranium Penetrator) +item.ammo_556_flechette_incendiary.name=5.56mm Flechette Round (Incendiary) +item.ammo_556_flechette_phosphorus.name=5.56mm Flechette Round (Phosphorus-Tipped) +item.ammo_556_flechette_sleek.name=5.56mm Flechette Round (IF-R&D) +item.ammo_556_k.name=5.56mm K-Round +item.ammo_556_phosphorus.name=5.56mm Round (WP) +item.ammo_556_sleek.name=5.56mm Round (IF-R&D) +item.ammo_556_star.name=5.56mm Round (Starmetal) +item.ammo_556_tracer.name=5.56mm Round (Tracer) +item.ammo_5mm.name=5mm Round +item.ammo_5mm_chlorophyte.name=5mm Round (Chlorophyte) +item.ammo_5mm_du.name=5mm Round (DU) +item.ammo_5mm_explosive.name=5mm Round (Explosive) +item.ammo_5mm_star.name=5mm Round (Starmetal) +item.ammo_75bolt.name=.75 Bolt Magazine (30rnd) +item.ammo_75bolt_incendiary.name=.75 Incendiary Bolt Magazine (30rnd) +item.ammo_75bolt_he.name=.75 Bolt High-Explosive Magazine (30rnd) +item.ammo_762.name=7.62mm Round +item.ammo_762_ap.name=7.62mm Round (AP) +item.ammo_762_du.name=7.62mm Round (DU) +item.ammo_762_k.name=7.62mm K-Round +item.ammo_762_phosphorus.name=7.62mm Round (WP) +item.ammo_762_tracer.name=7.62mm Round (Tracer) +item.ammo_9mm.name=9mm Round +item.ammo_9mm_ap.name=9mm Round (Armor Piercing) +item.ammo_9mm_chlorophyte.name=9mm Round (Chlorophyte) +item.ammo_9mm_du.name=9mm Round (DU) +item.ammo_9mm_rocket.name=9mm Rocket +item.ammo_arty.name=16" Artillery Shell +item.ammo_arty_cargo.name=16" Express Delivery Artillery Shell +item.ammo_arty_chlorine.name=16" Chlorine Gas Artillery Shell +item.ammo_arty_classic.name=16" Artillery Shell (The Factorio Special) +item.ammo_arty_he.name=16" High Explosive Artillery Shell +item.ammo_arty_mini_nuke.name=16" Micro Nuclear Artillery Shell +item.ammo_arty_mini_nuke_multi.name=16" Multi Micro Nuclear Artillery Shell +item.ammo_arty_mustard_gas.name=16" Mustard Gas Artillery Shell +item.ammo_arty_nuke.name=16" Nuclear Artillery Shell +item.ammo_arty_phosgene.name=16" Phosgene Artillery Shell +item.ammo_arty_phosphorus.name=16" Phosphorus Shell +item.ammo_arty_phosphorus_multi.name=16" Multi Phosphorus Shell +item.ammo_cell.name=Energy Cell +item.ammo_container.name=Ammo Container +item.ammo_dart.name=Plastic Dart (Withering) +item.ammo_dart_nerf.name=NERF Dart +item.ammo_dart_nuclear.name=Plastic Dart (Timed Explosive) +item.ammo_dgk.name=Goalkeeper Twin CIWS 200 Round Belt +item.ammo_fireext.name=Fire Extinguisher Water Tank +item.ammo_fireext_foam.name=Fire Extinguisher Foam Tank +item.ammo_fireext_sand.name=Fire Extinguisher Sand Tank +item.ammo_folly.name=Silver Bullet (Original) +item.ammo_folly_du.name=Silver Bullet (DU, Non-Explosive) +item.ammo_folly_nuclear.name=Silver Bullet (Nuclear) +item.ammo_fuel.name=Diesel Tank +item.ammo_fuel_gas.name=Gas Tank +item.ammo_fuel_napalm.name=Napalm Tank +item.ammo_fuel_phosphorus.name=WP Tank +item.ammo_fuel_vaporizer.name=Vaporizer Tank +item.ammo_grenade.name=40mm Grenade +item.ammo_grenade_concussion.name=40mm Grenade (Concussion) +item.ammo_grenade_finned.name=40mm Grenade (Finned) +item.ammo_grenade_he.name=40mm Grenade (HE) +item.ammo_grenade_incendiary.name=40mm Grenade (Incendiary) +item.ammo_grenade_kampf.name=40mm Rocket +item.ammo_grenade_nuclear.name=40mm Grenade (ПрОвет) +item.ammo_grenade_phosphorus.name=40mm Grenade (WP) +item.ammo_grenade_sleek.name=40mm Grenade (IF-R&D) +item.ammo_grenade_toxic.name=40mm Grenade (Chemical) +item.ammo_grenade_tracer.name=40mm Training Grenade +item.ammo_himars_standard.name=227mm Guided Artillery Rocket Pod +item.ammo_himars_standard_he.name=227mm Guided Artillery Rocket Pod (HE) +item.ammo_himars_standard_lava.name=227mm Guided Artillery Rocket Pod (Lava) +item.ammo_himars_standard_mini_nuke.name=227mm Guided Artillery Rocket Pod (Mini Nuke) +item.ammo_himars_standard_tb.name=227mm Guided Artillery Rocket Pod (Thermobaric) +item.ammo_himars_standard_wp.name=227mm Guided Artillery Rocket Pod (WP) +item.ammo_himars_single.name=610mm Guided Artillery Rocket Pod +item.ammo_himars_single_tb.name=610mm Guided Artillery Rocket Pod (Thermobaric) +item.ammo_luna.name=Lunatic Sniper Sabot Round +item.ammo_luna_explosive.name=Lunatic Sniper Explosive Round +item.ammo_luna_incendiary.name=Lunatic Sniper Incendiary Round +item.ammo_mirv.name=Mini MIRV +item.ammo_mirv_high.name=Mini MIRV (High Yield) +item.ammo_mirv_low.name=Mini MIRV (Low Yield) +item.ammo_mirv_safe.name=Mini MIRV (Safe) +item.ammo_mirv_special.name=Mini MILV +item.ammo_nuke.name=Mini Nuke +item.ammo_nuke_barrel.name=Mini Nuclear Waste Barrel +item.ammo_nuke_high.name=Mini Nuke (High Yield) +item.ammo_nuke_low.name=Mini Nuke (Low Yield) +item.ammo_nuke_pumpkin.name=Pumpkin Bomb +item.ammo_nuke_safe.name=Mini Nuke (Safe) +item.ammo_nuke_tots.name=Mini Nuke (Tiny Tots) +item.ammo_rocket.name=84mm Rocket +item.ammo_rocket_canister.name=84mm Rocket (Canister Shot) +item.ammo_rocket_digamma.name=null +item.ammo_rocket_emp.name=84mm Rocket (Pulse) +item.ammo_rocket_glare.name=84mm Rocket (Red Glare) +item.ammo_rocket_he.name=84mm Rocket (HE) +item.ammo_rocket_incendiary.name=84mm Rocket (Incendiary) +item.ammo_rocket_nuclear.name=84mm Rocket (ПрОвет) +item.ammo_rocket_phosphorus.name=84mm Rocket (WP) +item.ammo_rocket_rpc.name=84mm Rocket Propelled Chainsaw +item.ammo_rocket_shrapnel.name=84mm Rocket (Shrapnel) +item.ammo_rocket_sleek.name=84mm Rocket (IF-R&D) +item.ammo_rocket_toxic.name=84mm Rocket (Chemical) +item.ammo_shell.name=240mm Shell +item.ammo_shell_apfsds_du.name=240mm APFSDS-DU +item.ammo_shell_apfsds_t.name=240mm APFSDS-T +item.ammo_shell_explosive.name=240mm HE Shell +item.ammo_shell_w9.name=240mm W9 Nuclear Shell +item.ammo_stinger_rocket.name=Stinger Rocket +item.ammo_stinger_rocket_he.name=Stinger Rocket (HE) +item.ammo_stinger_rocket_incendiary.name=Stinger Rocket (Incendiary) +item.ammo_stinger_rocket_nuclear.name=Stinger Rocket (ПрОвет) +item.ammo_stinger_rocket_bones.name=Stinger Rocket (Bone-Seeking) +item.ams_catalyst_aluminium.name=Aluminium Reaction Catalyst +item.ams_catalyst_beryllium.name=Beryllium Reaction Catalyst +item.ams_catalyst_blank.name=Blank Reaction Catalyst +item.ams_catalyst_caesium.name=Caeseium Reaction Catalyst +item.ams_catalyst_cerium.name=Cerium Reaction Catalyst +item.ams_catalyst_cobalt.name=Cobalt Reaction Catalyst +item.ams_catalyst_copper.name=Copper Reaction Catalyst +item.ams_catalyst_dineutronium.name=Dineutronium Reaction Catalyst +item.ams_catalyst_euphemium.name=Euphemium Reaction Catalyst +item.ams_catalyst_iron.name=Iron Reaction Catalyst +item.ams_catalyst_lithium.name=Lithium Reaction Catalyst +item.ams_catalyst_niobium.name=Niobium Reaction Catalyst +item.ams_catalyst_schrabidium.name=Schrabidium Reaction Catalyst +item.ams_catalyst_strontium.name=Strontium Reaction Catalyst +item.ams_catalyst_thorium.name=Thorium Reaction Catalyst +item.ams_catalyst_tungsten.name=Tungsten Reaction Catalyst +item.ams_core_eyeofharmony.name=Eye of Harmony (AMS/DFC Core) +item.ams_core_sing.name=Vibrant Singularity (AMS/DFC Core) +item.ams_core_thingy.name=Thingy (AMS/DFC Core) +item.ams_core_wormhole.name=Tiny Wormhole (AMS/DFC Core) +item.ams_focus_blank.name=Blank Stabilizer Focus +item.ams_focus_booster.name=Boosting Stabilizer Focus +item.ams_focus_booster.desc=Weaker restriction field and core energy injection:$More heat generation, extra energy. +item.ams_focus_limiter.name=Limiting Stabilizer Focus +item.ams_focus_limiter.desc=Maximum performance for restriction field:$Standard cooling, no energy bonus. +item.ams_lens.name=Stabilizer Lens +item.ams_muzzle.name=Ray-Emission Muzzle +item.ams_muzzle.desc=...it emits an energy-beam thingy. +item.analyzer.name=Analyzer +item.anchor_remote.name=Recall Device +item.antiknock.name=Tetraethyllead Antiknock Agent +item.apple_euphemium.name=Euphemium Apple +item.apple_lead.name=Lead Apple +item.apple_schrabidium.name=Schrabidium Apple +item.arc_electrode.name=Graphite Electrode +item.arc_electrode_burnt.name=Molten Electrode +item.arc_electrode_desh.name=Desh Electrode +item.armor_polish.name=ShiningArmor™ Armor Polish +item.asbestos_boots.name=Fire Proximity Boots +item.asbestos_cloth.name=Fire Proximity Cloth +item.asbestos_helmet.name=Fire Proximity Helmet +item.asbestos_legs.name=Fire Proximity Leggings +item.asbestos_plate.name=Fire Proximity Chestplate +item.ashglasses.name=Ash Goggles +item.assembly_45.name=.45 ACP Assembly +item.assembly_556.name=5.56mm Assembly +item.assembly_762.name=7.62mm Assembly +item.assembly_actionexpress.name=.50 AE Assembly +item.assembly_calamity.name=.50 BMG Assembly +item.assembly_desh.name=Desh Bullet Assembly +item.assembly_gold.name=Gold Bullet Assembly +item.assembly_iron.name=Iron Bullet Assembly +item.assembly_lacunae.name=.5mm Assembly +item.assembly_lead.name=Glass Bullet Assembly +item.assembly_luna.name=Lunatic Sniper Bullet Assembly +item.assembly_nightmare.name=Nightmare Bullet Assembly +item.assembly_nopip.name=.44 Magnum Assembly +item.assembly_nuke.name=Mini Nuke Shell +item.assembly_pip.name=Tainted Bullet Assembly +item.assembly_schrabidium.name=Schrabidium Bullet Assembly +item.assembly_smg.name=9mm Assembly +item.assembly_steel.name=Lead Bullet Assembly +item.assembly_template.name=Assembly Template: +item.assembly_uzi.name=.22 LR Assembly +item.attachment_mask.name=Gas Mask Attachable +item.attachment_mask_mono.name=Half Mask Attachable +item.australium_iii.name=Mark III Life Extender +item.australium_iv.name=Mark IV Life Extender +item.australium_v.name=Mark V Life Extender +item.back_tesla.name=Back-Mounted Tesla Coil +item.balefire_and_ham.name=Ham and Balefire Eggs +item.balefire_and_steel.name=Balefire and Steel +item.balefire_scrambled.name=Scrambled Balefire Egg +item.ball_dynamite.name=Dynamite +item.ball_fireclay.name=Fireclay +item.ball_tatb.name=TATB +item.ball_tnt.name=TNT +item.ballistic_gauntlet.name=Ballistic Gauntlet +item.ballistite.name=Ballistite +item.bandaid.name=Velvet Band-Aid +item.bathwater.name=Toxic Soapy Water +item.bathwater_mk2.name=Toxic Soapy Water (Horse Scented) +item.battery_advanced.name=Advanced Battery +item.battery_advanced_cell.name=Advanced Power Cell +item.battery_advanced_cell_12.name=Twelvefold Advanced Power Cell +item.battery_advanced_cell_4.name=Quadruple Advanced Power Cell +item.battery_creative.name=Infinite Battery +item.battery_generic.name=Battery +item.battery_lithium.name=Lithium-Ion Battery +item.battery_lithium_cell.name=Lithium-Ion Power Cell +item.battery_lithium_cell_3.name=Triple Lithium-Ion Power Cell +item.battery_lithium_cell_6.name=Sixfold Lithium-Ion Power Cell +item.battery_potato.name=Potato Battery +item.battery_potatos.name=PotatOS +item.battery_red_cell.name=Redstone Power Cell +item.battery_red_cell_24.name=24-Fold Redstone Power Cell +item.battery_red_cell_6.name=Sixfold Redstone Power Cell +item.battery_sc_americium.name=Self-Charging Americium-241 Battery +item.battery_sc_gold.name=Self-Charging Gold-198 Battery +item.battery_sc_lead.name=Self-Charging Lead-209 Battery +item.battery_sc_plutonium.name=Self-Charging Plutonium-238 Battery +item.battery_sc_polonium.name=Self-Charging Polonium-210 Battery +item.battery_sc_technetium.name=Self-Charging Technetium-99 Battery +item.battery_sc_uranium.name=Self-Charging Uranium-238 Battery +item.battery_schrabidium.name=Schrabidium Battery +item.battery_schrabidium_cell.name=Schrabidium Power Cell +item.battery_schrabidium_cell_2.name=Double Schrabidium Power Cell +item.battery_schrabidium_cell_4.name=Quadruple Schrabidium Power Cell +item.battery_spark.name=Spark Battery +item.battery_spark_cell_100.name=Spark Arcane Energy Storage Array +item.battery_spark_cell_1000.name=Spark Arcane Mass-Energy Void +item.battery_spark_cell_10000.name=Spark Solid Space-Time Crystal +item.battery_spark_cell_25.name=Spark Arcane Car Battery +item.battery_spark_cell_2500.name=Spark Arcane Dirac Sea +item.battery_spark_cell_6.name=Spark Power Cell +item.battery_spark_cell_power.name=Spark Ludicrous Physics-Defying Energy Storage Unit +item.battery_steam.name=Steam Powered Energy Storage Tank +item.battery_steam_large.name=Large Steam Powered Energy Storage Tank +item.battery_su.name=SU-Battery +item.battery_su_l.name=Large SU-Battery +item.battery_trixite.name=Off-Brand Spark Battery +item.bdcl.name=BDCL +item.beta.name=Beta Features +item.big_sword.name=Great Sword +item.billet_actinium.name=Actinium-227 Billet +item.billet_am_mix.name=Reactor Grade Americium Billet +item.billet_am241.name=Americium-241 Billet +item.billet_am242.name=Americium-242 Billet +item.billet_americium_fuel.name=Americium Fuel Billet +item.billet_au198.name=Gold-198 Billet +item.billet_australium.name=Australium Billet +item.billet_australium_greater.name=Greater Australium Billet +item.billet_australium_lesser.name=Lesser Australium Billet +item.billet_balefire_gold.name=Flashgold Billet +item.billet_beryllium.name=Beryllium Billet +item.billet_bismuth.name=Bismuth Billet +item.billet_co60.name=Cobalt-60 Billet +item.billet_cobalt.name=Cobalt Billet +item.billet_flashlead.name=Flashlead Billet +item.billet_flashlead.desc=The lattice decays, causing antimatter-matter$annihilation reactions, causing the release of$pions, decaying into muons, catalyzing fusion of$the nuclei, creating the new element.$Please try to keep up. +item.billet_gh336.name=Ghiorsium-336 Billet +item.billet_gh336.desc=Seaborgium's colleague. +item.billet_hes.name=Highly Enriched Schrabidium Fuel Billet +item.billet_les.name=Low Enriched Schrabidium Fuel Billet +item.billet_mox_fuel.name=MOX Fuel Billet +item.billet_mox_fuel.desc=Pocket-Moxie! +item.billet_neptunium.name=Neptunium Billet +item.billet_neptunium_fuel.name=Neptunium Fuel Billet +item.billet_nuclear_waste.name=Nuclear Waste Billet +item.billet_pb209.name=Lead-209 Billet +item.billet_po210be.name=Po210Be Billet +item.billet_polonium.name=Polonium-210 Billet +item.billet_pu_mix.name=Reactor Grade Plutonium Billet +item.billet_pu238.name=Plutonium-238 Billet +item.billet_pu238be.name=Pu238Be Billet +item.billet_pu239.name=Plutonium-239 Billet +item.billet_pu240.name=Plutonium-240 Billet +item.billet_pu241.name=Plutonium-241 Billet +item.billet_plutonium.name=Plutonium Billet +item.billet_plutonium_fuel.name=Plutonium Fuel Billet +item.billet_ra226.name=Radium-226 Billet +item.billet_ra226be.name=Ra226Be Billet +item.billet_schrabidium.name=Schrabidium Billet +item.billet_schrabidium_fuel.name=Schrabidium Fuel Billet +item.billet_solinium.name=Solinium Billet +item.billet_sr90.name=Strontium-90 Billet +item.billet_technetium.name=Technetium-99 Billet +item.billet_th232.name=Thorium-232 Billet +item.billet_thorium_fuel.name=Thorium Fuel Billet +item.billet_u233.name=Uranium-233 Billet +item.billet_u235.name=Uranium-235 Billet +item.billet_u238.name=Uranium-238 Billet +item.billet_uranium.name=Uranium Billet +item.billet_uranium_fuel.name=Uranium Fuel Billet +item.billet_yharonite.name=Yharonite Billet +item.billet_zfb_am_mix.name=Reactor Grade Americium ZFB Billet +item.billet_zfb_bismuth.name=Bismuth ZFB Billet +item.billet_zfb_pu241.name=Pu-241 ZFB Billet +item.billet_zirconium.name=Zirconium Billet +item.bio_wafer.name=Algae Wafer +item.biomass.name=Biomass +item.biomass_compressed.name=Compressed Biomass +item.bismuth_boots.name=Bismuth Sandals +item.bismuth_helmet.name=Bismuth Headdress +item.bismuth_legs.name=Bismuth Kneeguards +item.bismuth_pickaxe.name=Bismuth Pickaxe +item.bismuth_plate.name=Bismuth Shoulderpads, Necklace & Loincloth +item.bismuth_tool.name=Magnetic Extractor +item.bj_boots.name=Lunar Studded Boots +item.bj_helmet.name=Eyepatch with Thermal Sensor +item.bj_legs.name=Lunar Cybernetic Leg Replacements +item.bj_plate.name=Lunar Cybernetic Plating +item.bj_plate_jetpack.name=Lunar Cybernetic Plating (Winged) +item.black_diamond.name=Black Diamond +item.black_hole.name=Miniature Black Hole +item.blade_meteorite.name=Meteorite Blade +item.blade_titanium.name=Titanium Blade +item.blade_tungsten.name=Tungsten Reinforced Blade +item.blades_advanced_alloy.name=Advanced Shredder Blades +item.blades_desh.name=Desh Shredder Blades +item.blades_steel.name=Steel Shredder Blades +item.blades_titanium.name=Titanium Shredder Blades +item.blowtorch.name=Blowtorch +item.board_copper.name=Copper Panel +item.bobmazon_hidden.name=Hidden Catalog +item.bobmazon_machines.name=Bobmazon: Blocks and Machines +item.bobmazon_materials.name=Bobmazon: Materials +item.bobmazon_tools.name=Bobmazon: Tools +item.bobmazon_weapons.name=Bobmazon: Weapons and Explosives +item.bolt_compound.name=Reinforced Turbine Shaft +item.bolt_dura_steel.name=High-Speed Steel Bolt +item.bolt_tungsten.name=Tungsten Bolt +item.boltgun.name=Pneumatic Rivet Gun +item.bomb_caller.name=Airstrike Designator +item.bomb_waffle.name=Waffle of Mass Destruction +item.book_guide.name=Guide Book +item.book_of_.name=The Book of Boxcars +item.book_secret.name=3-596-50802-9 +item.bottle2_empty.name=Empty Bottle +item.bottle2_fritz.name=Fritz Cola +item.bottle2_fritz_special.name=The First Fritz Cola +item.bottle2_korl.name=Korl +item.bottle2_korl_special.name=The First Korl +item.bottle2_sunset.name=Sunset Sarsaparilla +item.bottle_cherry.name=Bottle of Nuka Cherry +item.bottle_empty.name=Empty Bomb-Shaped Bottle +item.bottle_mercury.name=Bottle of Mercury +item.bottle_nuka.name=Bottle of Nuka Cola +item.bottle_opener.name=Hbm's Own Self-Made Bottle Opener +item.bottle_quantum.name=Bottle of Nuka Cola Quantum +item.bottle_rad.name=Bottle of S~Cola RAD +item.bottle_sparkle.name=Bottle of S~Cola +item.boy_bullet.name=U235 Projectile +item.boy_igniter.name=Bomb Igniter +item.boy_kit.name=Little Boy Kit +item.boy_propellant.name=Propellant +item.boy_shielding.name=Neutron Shielding +item.boy_target.name=Subcritical U235 Target +item.briquette.coal.name=Coal Briquette +item.briquette.lignite.name=Lignite Briquette +item.briquette.wood.name=Sawdust Briquette +item.bucket_acid.name=Bucket of Acid +item.bucket_mud.name=Bucket of Poisonous Mud +item.bucket_schrabidic_acid.name=Bucket of Schrabidic Acid +item.bucket_sulfuric_acid.name=Bucket of Sulfuric Acid +item.bucket_toxic.name=Bucket of Stereotypical Green Ooze +item.burnt_bark.name=Burnt Bark +item.burnt_bark.desc=A piece of bark from an exploded golden oak tree. +item.can_bepis.name=Bepis +item.can_breen.name=Dr>Breens Private Reserve +item.can_creature.name='Creature' Energy Drink +item.can_empty.name=Empty Can +item.can_key.name=Winding Key +item.can_luna.name=Black Mesa Luna - Dark Cola +item.can_mrsugar.name='Dr. Sugar' Soft Drink +item.can_mug.name=MUG Root Beer +item.can_overcharge.name=Overcharge Delirium XT +item.can_redbomb.name='Red Bomb' Energy Drink +item.can_smart.name='Smart' Energy Drink +item.canister_NITAN.name=NITAN© 100 Octane Super Fuel (LEGACY) +item.canister_biofuel.name=Biofuel Canister (LEGACY) +item.canister_bitumen.name=Bitumen Canister (LEGACY) +item.canister_canola.name=Engine Lubricant (LEGACY) +item.canister_empty.name=Empty Canister +item.canister_ethanol.name=Ethanol Canister (LEGACY) +item.canister_fracksol.name=Fracking Solution Canister (LEGACY) +item.canister_fuel.name=Diesel Canister (LEGACY) +item.canister_fuel.desc=All hail the spout! +item.canister_full.name=Canister: +item.canister_gasoline.name=Leaded Gasoline Canister (LEGACY) +item.canister_gasoline.desc=lead is friend$let friend into your blood stream$*cocks gun* do it now. +item.canister_heatingoil.name=Heating Oil Canister (LEGACY) +item.canister_heavyoil.name=Heavy Oil Canister (LEGACY) +item.canister_kerosene.name=Kerosene Canister (LEGACY) +item.canister_lightoil.name=Light Oil Canister (LEGACY) +item.canister_napalm.name=Napalm B +item.canister_naphtha.name=Naphtha Canister (LEGACY) +item.canister_oil.name=Crude Oil Canister (LEGACY) +item.canister_petroil.name=Petroil Canister (LEGACY) +item.canister_reoil.name=Canister of Reclaimed Industrial Oil (LEGACY) +item.canister_smear.name=Industrial Oil Canister (LEGACY) +item.canned_asbestos.name=Canned Asbestos +item.canned_asbestos.desc=TASTE the asbestosis! +item.canned_ass.name=Canned Ass +item.canned_ass.desc=100%% quality donkey meat!* +item.canned_bark.name=Canned Pine Bark Jerky +item.canned_bark.desc=Extra cronchy! +item.canned_beef.name=Canned Beef +item.canned_beef.desc=A few centuries ago, a cow died for this. +item.canned_bhole.name=Canned Black Hole +item.canned_bhole.desc=Singularity is yum yum in my tum tum! +item.canned_cheese.name=Canned Melted Cheese +item.canned_cheese.desc=Is it cheese? Is it rubber cement? Who knows, who cares. +item.canned_chinese.name=Canned Chinese Food +item.canned_chinese.desc=In China, Chinese food is just called food. +item.canned_diesel.name=Canned Diesel +item.canned_diesel.desc=I'm slowly running out of jokes for these. +item.canned_fist.name=Canned Fist +item.canned_fist.desc=Yowser! +item.canned_fried.name=Canned Fried Chicken +item.canned_fried.desc=Even the can is deep fried! +item.canned_hotdogs.name=Canned Hotdogs +item.canned_hotdogs.desc=Not to be confused with cool cats. +item.canned_jizz.name=FlimFlam Industries Canned Stallion Milk™ +item.canned_jizz.desc=Wait wh- +item.canned_kerosene.name=Canned Kerosene +item.canned_kerosene.desc=Just imagine a witty line here. +item.canned_leftovers.name=Leftover Conserve +item.canned_leftovers.desc=ur 2 slow +item.canned_milk.name=Canned Evaporated Milk +item.canned_milk.desc=Milk 2: More solid than ever before! +item.canned_mystery.name=Canned Mystery Meat +item.canned_mystery.desc=What's inside? Only one way to find out! +item.canned_napalm.name=Canned Napalm +item.canned_napalm.desc=I love the smell of old memes in the morning! +item.canned_oil.name=Canned Engine Oil +item.canned_oil.desc=It makes motors go, so why not humans? +item.canned_pashtet.name=Паштет +item.canned_pashtet.desc=услугО перевПЎа МеЎПступМы! +item.canned_pizza.name=Canned Pepperoni Pizza +item.canned_pizza.desc=A crime against humanity. +item.canned_recursion.name=Canned Recursion +item.canned_recursion.desc=Canned Recursion +item.canned_spam.name=Canned Spam +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=Canned "Mushroom Stew" +item.canned_stew.desc=... +item.canned_tomato.name=Canned Tomato Soup +item.canned_tomato.desc=Who wants some thick red paste? +item.canned_tube.name=Astronaut Food Tube +item.canned_tube.desc=Tasty mush. +item.canned_tuna.name=Canned Tuna +item.canned_tuna.desc=I can't tell if that's actually tuna or dried cement. +item.canned_yogurt.name=Canned Yogurt +item.canned_yogurt.desc=Probably spoiled, but whatever. +item.canteen_13.name=Vault 13 Canteen +item.canteen_fab.name=Fabulous Vodka +item.canteen_vodka.name=Stylish Flask +item.cap_fritz.name=Fritz Cola Bottle Cap +item.cap_korl.name=Korl Bottle Cap +item.cap_nuka.name=Nuka Cola Bottle Cap +item.cap_quantum.name=Nuka Cola Quantum Bottle Cap +item.cap_rad.name=S~Cola RAD Bottle Cap +item.cap_sparkle.name=S~Cola Bottle Cap +item.cap_star.name=Sunset Sarsaparilla Star Cap +item.cap_sunset.name=Sunset Sarsaparilla Bottle Cap +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=Cape (Gas Mask) +item.cape_hbm.name=Hbm's Cape +item.cape_hidden.name=Hidden Cape +item.cape_lpkukin.name=LPkukin's Cape +item.cape_nostalgia.name=DrNostalgia's Cape +item.cape_radiation.name=Cape (Radiation) +item.cape_schrabidium.name=Cape (Schrabidic) +item.cape_vertice.name=Lord Vertice's Cape +item.cart.crate.name=Crate Cart +item.cart.destroyer.name=Scrap Destroying Cart +item.cart.empty.name=Minecart +item.casing_357.name=.357 Magnum Casing (x24) +item.casing_44.name=.44 Magnum Casing (x24) +item.casing_50.name=Large Caliber Casing (x12) +item.casing_9.name=Small Caliber Casing (x32) +item.casing_buckshot.name=Buckshot Casing (x12) +item.catalyst_clay.name=Clay Catalyst +item.catalytic_converter.name=Catalytic Converter +item.cbt_device.name=CBT Device +item.cell_anti_schrabidium.name=Antischrabidium Cell +item.cell_antimatter.name=Antimatter Cell +item.cell_balefire.name=Gaseous Balefire Cell +item.cell_deuterium.name=Deuterium Cell +item.cell_empty.name=Empty Cell +item.cell_puf6.name=Plutonium Hexafluoride Cell +item.cell_sas3.name=Schrabidium Trisulfide Cell +item.cell_tritium.name=Tritium Cell +item.cell_uf6.name=Uranium Hexafluoride Cell +item.centri_stick.name=Centrifuge on a Stick +item.centrifuge_element.name=Centrifuge Element +item.centrifuge_tower.name=Centrifuge Tower +item.chainsaw.name=Chainsaw +item.cheese.name=Cheese +item.cheese_quesadilla.name=Cheese Quesadilla +item.chemical_dye.black.name=Chemical Dye (Black) +item.chemical_dye.blue.name=Chemical Dye (Blue) +item.chemical_dye.brown.name=Chemical Dye (Brown) +item.chemical_dye.cyan.name=Chemical Dye (Cyan) +item.chemical_dye.gray.name=Chemical Dye (Gray) +item.chemical_dye.green.name=Chemical Dye (Green) +item.chemical_dye.lightblue.name=Chemical Dye (Light Blue) +item.chemical_dye.lime.name=Chemical Dye (Lime) +item.chemical_dye.magenta.name=Chemical Dye (Magenta) +item.chemical_dye.orange.name=Chemical Dye (Orange) +item.chemical_dye.pink.name=Chemical Dye (Pink) +item.chemical_dye.purple.name=Chemical Dye (Purple) +item.chemical_dye.red.name=Chemical Dye (Red) +item.chemical_dye.silver.name=Chemical Dye (Light Gray) +item.chemical_dye.white.name=Chemical Dye (White) +item.chemical_dye.yellow.name=Chemical Dye (Yellow) +item.chemistry_set.name=Laboratory Glassware +item.chemistry_set_boron.name=Laboratory Glassware (Boron Glass) +item.chemistry_template.name=Chemistry Template: +item.chernobylsign.name=Chernobyl Warning Sign Battle Axe +item.chlorine_pinwheel.name=Chlorine Pinwheel +item.chlorophyte_pickaxe.name=Chlorophyte Pickaxe +item.chocolate.name=Ithis-Brand Radium Chocolate +item.chocolate.desc=Radium Chocolate? Pretty sure this is just meth. +item.chocolate_milk.name=Chocolate Milk +item.chopper.name=Hunter Chopper +item.chopper_blades.name=Hunter Chopper Rotor Blades +item.chopper_gun.name=Emplacement Gun +item.chopper_head.name=Hunter Chopper Cockpit +item.chopper_tail.name=Hunter Chopper Tail +item.chopper_torso.name=Hunter Chopper Body +item.chopper_wing.name=Hunter Chopper Wing +item.cigarette.name=FFI-Brand Cigarette +item.cinnebar.name=Cinnabar +item.circuit_aluminium.name=Basic Circuit +item.circuit_arsenic.name=Adaptable Circuit +item.circuit_arsenic_raw.name=Adaptable Circuit Assembly +item.circuit_bismuth.name=Versatile Chipset +item.circuit_bismuth_raw.name=Versatile Chipset Assembly +item.circuit_copper.name=Enhanced Circuit +item.circuit_gold.name=Overclocked Circuit +item.circuit_raw.name=Basic Circuit Assembly +item.circuit_red_copper.name=Advanced Circuit +item.circuit_schrabidium.name=High Performance Circuit +item.circuit_star.name=StarControl Circuit Board +item.circuit_star.desc=Currently unused, for it lacks an operating system. +item.circuit_star_component.chipset.name=StarControl Chipset +item.circuit_star_component.cpu.name=StarControl CPU +item.circuit_star_component.ram.name=StarControl RAM +item.circuit_star_piece.board_blank.name=SC - Printed Circuit Board +item.circuit_star_piece.board_transistor.name=SC - Transistors +item.circuit_star_piece.bridge_bios.name=SC- BIOS Chip +item.circuit_star_piece.bridge_bus.name=SC - BUS +item.circuit_star_piece.bridge_chipset.name=SC - Chipset +item.circuit_star_piece.bridge_cmos.name=SC - CMOS RAM +item.circuit_star_piece.bridge_io.name=SC - IO Chip +item.circuit_star_piece.bridge_north.name=SC - North Bridge +item.circuit_star_piece.bridge_south.name=SC - South Bridge +item.circuit_star_piece.cpu_cache.name=SC - CPU Cache +item.circuit_star_piece.cpu_clock.name=SC - CPU Clock +item.circuit_star_piece.cpu_ext.name=SC - Arsenic Semi Conductor Extension +item.circuit_star_piece.cpu_logic.name=SC - Arithmetic Logic Unit +item.circuit_star_piece.cpu_register.name=SC - CPU Register +item.circuit_star_piece.cpu_socket.name=SC - CPU Socket +item.circuit_star_piece.mem_socket.name=SC - Memory Socket +item.circuit_star_piece.mem_16k_a.name=SC - 16k Memory Stick Slot A +item.circuit_star_piece.mem_16k_b.name=SC - 16k Memory Stick Slot B +item.circuit_star_piece.mem_16k_c.name=SC - 16k Memory Stick Slot C +item.circuit_star_piece.mem_16k_d.name=SC - 16k Memory Stick Slot D +item.circuit_tantalium.name=Capacitor Board +item.circuit_tantalium_raw.name=Capacitor Board Assembly +item.circuit_targeting_tier1.name=Military Grade Circuit Board (Tier 1) +item.circuit_targeting_tier2.name=Military Grade Circuit Board (Tier 2) +item.circuit_targeting_tier3.name=Military Grade Circuit Board (Tier 3) +item.circuit_targeting_tier4.name=Military Grade Circuit Board (Tier 4) +item.circuit_targeting_tier5.name=Military Grade Circuit Board (Tier 5) +item.circuit_targeting_tier6.name=Military Grade Circuit Board (Tier 6) +item.cladding_desh.name=Desh Cladding +item.cladding_ghiorsium.name=Ghiorsium Cladding +item.cladding_iron.name=Iron Cladding +item.cladding_lead.name=Lead Cladding +item.cladding_obsidian.name=Obsidian Skin +item.cladding_paint.name=Lead Paint +item.cladding_rubber.name=Rubber Cladding +item.clip_bf.name=BF-Shell Double Pack +item.clip_bolt_action.name=Box of 12x74 Slugs +item.clip_cryolator.name=Tank of Cryolator Fuel +item.clip_defabricator.name=Belt with Defabricator Energy Cells +item.clip_emp.name=Small Pack of Energy Cells +item.clip_euthanasia.name=Last Aid Kit +item.clip_fatman.name=Six Pack of Mini Nukes +item.clip_hp.name=Ink Tanks +item.clip_immolator.name=Tank of Immolator Fuel +item.clip_jack.name=Box of Quadruple 12x70 Buckshot Rounds +item.clip_lever_action.name=Box of 12x74 Buckshot Rounds +item.clip_mirv.name=Three-In-One Pack of Mini MIRVs +item.clip_mp.name=Britannia Military Standard Issue Assault Rifle Magazine +item.clip_mp40.name=9mm SMG Magazine +item.clip_osipr.name=AR2 Magazine +item.clip_revolver.name=Box of .357 Rounds +item.clip_revolver_cursed.name=Britannia Military Standard Issue Pistol Magazine +item.clip_revolver_gold.name=Small Coffer of Golden Bullets +item.clip_revolver_iron.name=Box of Iron Rounds +item.clip_revolver_lead.name=Box of Nuclear Bullets +item.clip_revolver_nightmare.name=Bag of Bullets +item.clip_revolver_nightmare2.name=Belt with Laser Buckshot +item.clip_revolver_nopip.name=Box of .44 Rounds +item.clip_revolver_pip.name=Speedloader with Tainted Bullets +item.clip_revolver_schrabidium.name=Schrabidium Ammo Container +item.clip_rpg.name=Rocket Container +item.clip_spark.name=Large Electromagnetic Cartridge +item.clip_stinger.name=Pack of Stinger Rockets +item.clip_uboinik.name=Box of 12x70 Buckshot Rounds +item.clip_uzi.name=32rnd .22 LR Magazine +item.clip_xvl1456.name=Large Isotope Box +item.cmb_axe.name=CMB Steel Axe +item.cmb_boots.name=CMB Steel Boots +item.cmb_helmet.name=CMB Steel Helmet +item.cmb_hoe.name=CMB Steel Hoe +item.cmb_legs.name=CMB Steel Leggings +item.cmb_pickaxe.name=CMB Steel Pickaxe +item.cmb_plate.name=CMB Steel Chestplate +item.cmb_shovel.name=CMB Steel Shovel +item.cmb_sword.name=CMB Steel Sword +item.coal_infernal.name=Infernal Coal +item.cobalt_axe.name=Cobalt Axe +item.cobalt_boots.name=Cobalt Boots +item.cobalt_decorated_axe.name=Decorated Cobalt Axe +item.cobalt_decorated_hoe.name=Decorated Cobalt Hoe +item.cobalt_decorated_pickaxe.name=Decorated Cobalt Pickaxe +item.cobalt_decorated_shovel.name=Decorated Cobalt Shovel +item.cobalt_decorated_sword.name=Decorated Cobalt Sword +item.cobalt_helmet.name=Cobalt Helmet +item.cobalt_hoe.name=Cobalt Hoe +item.cobalt_legs.name=Cobalt Leggings +item.cobalt_pickaxe.name=Cobalt Pickaxe +item.cobalt_plate.name=Cobalt Chestplate +item.cobalt_shovel.name=Cobalt Shovel +item.cobalt_sword.name=Cobalt Sword +item.coffee.name=Coffee +item.coffee_radium.name=Radium Coffee +item.coil_advanced_alloy.name=Super Conducting Coil +item.coil_advanced_torus.name=Super Conducting Ring Coil +item.coil_copper.name=Copper Coil +item.coil_copper_torus.name=Ring Coil +item.coil_gold.name=Gold Coil +item.coil_gold_torus.name=Golden Ring Coil +item.coil_magnetized_tungsten.name=4000K High Temperature Super Conducting Coil +item.coil_tungsten.name=Heating Coil +item.coin_creeper.name=Nuclear Creeper Coin +item.coin_maskman.name=Maskman Coin +item.coin_radiation.name=Radiation Coin +item.coin_siege.name=Siege Coin +item.coin_ufo.name=UFO Coin +item.coin_worm.name=Balls-O-Tron Coin +item.coke.coal.name=Coal Coke +item.coke.lignite.name=Lignite Coke +item.coke.petroleum.name=Petroleum Coke +item.coltan_tool.name=Coltass +item.combine_scrap.name=CMB Scrap Metal +item.component_emitter.name=Emitter Component +item.component_limiter.name=Stabilizer Component +item.containment_box.name=Containment Box +item.cordite.name=Cordite +item.cotton_candy.name=Radioactive Cotton Candy +item.crackpipe.name=Health Pipe +item.crate_caller.name=Supply Drop Requester +item.crayon.black.name=Black Crayon +item.crayon.blue.name=Blue Crayon +item.crayon.brown.name=Brown Crayon +item.crayon.cyan.name=Cyan Crayon +item.crayon.gray.name=Gray Crayon +item.crayon.green.name=Green Crayon +item.crayon.lightblue.name=Light Blue Crayon +item.crayon.lime.name=Lime Crayon +item.crayon.magenta.name=Magenta Crayon +item.crayon.orange.name=Orange Crayon +item.crayon.pink.name=Pink Crayon +item.crayon.purple.name=Purple Crayon +item.crayon.red.name=Red Crayon +item.crayon.silver.name=Light Gray Crayon +item.crayon.white.name=White Crayon +item.crayon.yellow.name=Yellow Crayon +item.crowbar.name=Mk.V Crate Opening Device "Crowbar" +item.crucible.name=Crucible +item.crucible_template.name=Crucible Template: +item.crystal_aluminium.name=Aluminium Crystals +item.crystal_beryllium.name=Beryllium Crystals +item.crystal_charred.name=Charred Crystal +item.crystal_charred.desc=High quality silicate, slightly burned. +item.crystal_charred.desc.P11=Also a real horn. Weird, right? +item.crystal_coal.name=Coal Crystals +item.crystal_cobalt.name=Cobalt Crystals +item.crystal_copper.name=Copper Crystals +item.crystal_cinnebar.name=Cinnabar Crystals +item.crystal_diamond.name=Diamond Crystals +item.crystal_energy.name=Energy Crystal +item.crystal_fluorite.name=Fluorite Crystals +item.crystal_gold.name=Gold Crystals +item.crystal_horn.name=Crystal Horn +item.crystal_horn.desc=Not an actual horn. +item.crystal_horn.desc.P11=An actual horn. +item.crystal_iron.name=Iron Crystals +item.crystal_lead.name=Lead Crystals +item.crystal_lapis.name=Lapis Crystals +item.crystal_lithium.name=Lithium Crystals +item.crystal_niter.name=Niter Crystals +item.crystal_osmiridium.name=Osmiridium Crystals +item.crystal_phosphorus.name=Phosphorus Crystals +item.crystal_plutonium.name=Plutonium Crystals +item.crystal_rare.name=Rare Earth Crystals +item.crystal_redstone.name=Redstone Crystals +item.crystal_schrabidium.name=Schrabidium Crystals +item.crystal_schraranium.name=Schraranium Crystals +item.crystal_starmetal.name=Starmetal Crystals +item.crystal_sulfur.name=Sulfur Crystals +item.crystal_thorium.name=Thorium Crystals +item.crystal_titanium.name=Titanium Crystals +item.crystal_trixite.name=Trixite Crystals +item.crystal_tungsten.name=Tungsten Crystals +item.crystal_uranium.name=Uranium Crystals +item.crystal_xen.name=Artificial Xen Crystal +item.crt_display.name= Cathode Ray Tube +item.cube_power.name=Electronium Cube +item.custom_amat.name=Custom Nuke Antimatter Rod +item.custom_dirty.name=Custom Nuke Dirty Rod +item.custom_fall.name=Custom Nuke Drop Upgrade +item.custom_fall.desc=That's what you've aaaaaaall been waiting for!$Makes bomb drop upon activation +item.custom_hydro.name=Custom Nuke Hydrogen Rod +item.custom_kit.name=Custom Nuke Kit +item.custom_nuke.name=Custom Nuke Nuclear Rod +item.custom_schrab.name=Custom Nuke Schrabidium Rod +item.custom_tnt.name=Custom Nuke Explosive Charge +item.cyclotron_tower.name=Cyclotron Tower +item.debris_concrete.name=Broken Concrete +item.debris_element.name=Broken ZIRNOX Fuel Element +item.debris_exchanger.name=Heat Exchanger Piece +item.debris_fuel.name=RBMK Fuel Chunk +item.debris_graphite.name=Hot Graphite Chunk +item.debris_metal.name=Broken Metal Bar +item.debris_shrapnel.name=Walkway Shrapnel +item.definitelyfood.name=TotallyNotDirt-Brand MRE +item.defuser.name=High-Tech Bomb Defusing Device +item.defuser_gold.name=Golden Wire Cutter +item.demon_core_closed.name=Closed Demon Core +item.demon_core_open.name=Suspended Demon Core +item.desh_axe.name=Worker's Alloy Axe +item.desh_hoe.name=Worker's Alloy Hoe +item.desh_pickaxe.name=Worker's Alloy Pickaxe +item.desh_shovel.name=Worker's Alloy Shovel +item.desh_sword.name=Worker's Alloy Sword +item.designator.name=Short Range Target Designator +item.designator_arty_range.name=Long Range Artillery Remote +item.designator_manual.name=Manual Target Designator +item.designator_range.name=Long Range Target Designator +item.detonator.name=Detonator +item.detonator_de.name=Dead Man's Explosive +item.detonator_deadman.name=Dead Man's Detonator +item.detonator_laser.name=Laser Detonator +item.detonator_multi.name=Multi Detonator +item.deuterium_filter.name=Deuterium Filter +item.diamond_gavel.name=Diamond Gavel +item.dieselsuit_boots.name=Diesel-Powered High Heels +item.dieselsuit_helmet.name=Diesel-Powered Head-Mounted Environmental Sensor +item.dieselsuit_legs.name=Diesel-Powered Leg Servos +item.dieselsuit_plate.name=Diesel-Powered Cybernetics +item.digamma_diagnostic.name=Digamma Diagnostic +item.dns_boots.name=DNT Nano Suit Boots +item.dns_legs.name=DNT Nano Suit Leggings +item.dns_helmet.name=DNT Nano Suit Helmet +item.dns_plate.name=DNT Nano Suit Chestplate +item.dnt_boots.name=dienautronium boots +item.dnt_legs.name=dineuterium legs +item.dnt_helmet.name=dinotroniumu helmet +item.dnt_plate.name=dineutrom chestplate +item.door_bunker.name=Bunker Door +item.door_metal.name=Metal Door +item.door_office.name=Office Door +item.dosimeter.name=Dosimeter +item.drillbit_desh.name=Desh Drillbit +item.drillbit_desh_diamond.name=Desh Drillbit (Diamond-Tipped) +item.drillbit_ferro.name=Ferrouranium Drillbit +item.drillbit_ferro_diamond.name=Ferrouranium Drillbit (Diamond-Tipped) +item.drillbit_hss.name=High-Speed Steel Drillbit +item.drillbit_hss_diamond.name=High-Speed Steel Drillbit (Diamond-Tipped) +item.drillbit_steel.name=Steel Drillbit +item.drillbit_steel_diamond.name=Steel Drillbit (Diamond-Tipped) +item.drillbit_tcalloy.name=Technetium Steel Drillbit +item.drillbit_tcalloy_diamond.name=Technetium Steel Drillbit (Diamond-Tipped) +item.drill_titanium.name=Titanium Drill +item.drax.name=Terra Drill +item.drax_mk2.name=Hardened Terra Drill +item.drax_mk3.name=Schrabidic Terra Drill +item.ducttape.name=Duct Tape +item.dust.name=Dust +item.dust.desc=I hate dust! +item.dust.desc.P11=Another one bites the dust! +item.dust_tiny.name=Tiny Pile of Dust +item.dynosphere_base.name=Blank Dynosphere +item.dynosphere_desh.name=Desh Dynosphere +item.dynosphere_desh_charged.name=Desh Dynosphere (Charged) +item.dynosphere_dineutronium.name=Dineutronium Dynosphere +item.dynosphere_dineutronium_charged.name=Dineutronium Dynosphere (Charged) +item.dynosphere_euphemium.name=Euphemium Dynosphere +item.dynosphere_euphemium_charged.name=Euphemium Dynosphere (Charged) +item.dynosphere_schrabidium.name=Schrabidium Dynosphere +item.dynosphere_schrabidium_charged.name=Schrabidium Dynosphere (Charged) +item.dysfunctional_reactor.name=Dysfunctional Nuclear Reactor +item.early_explosive_lenses.name=Array of First-Generation High-Explosive Lenses +item.early_explosive_lenses.desc=Assembly of 8 high-explosive lenses with an aluminium$pusher, duraluminium shell, and bridgewire detonators. +item.egg_balefire.name=Balefire Egg +item.egg_balefire.desc=What kind of bird lays a radioactive egg? +item.egg_balefire_shard.name=Balefire Shard +item.egg_glyphid.name=Glyphid Egg +item.elec_axe.name=Electric Chainsaw +item.elec_pickaxe.name=Impact Drill +item.elec_shovel.name=Spiral Drill +item.elec_sword.name=Stunstick +item.energy_core.name=Makeshift Energy Core +item.entanglement_kit.name=Entanglement Kit +item.entanglement_kit.desc=Teleporter crafting item.$Enables dimension-shifting via a$beryllium-enhanced resource scanner. +item.euphemium_boots.name=Euphemium Boots +item.euphemium_capacitor.name=Euphemium Capacitor +item.euphemium_capacitor.desc=Permits passive dispersion of accumulated positive energy. +item.euphemium_helmet.name=Euphemium Helmet +item.euphemium_kit.name=Euphemium Kit +item.euphemium_legs.name=Euphemium Leggings +item.euphemium_plate.name=Euphemium Chestplate +item.euphemium_stopper.name=Stopper +item.explosive_lenses.name=Array of High-Explosive Lenses +item.explosive_lenses.desc=Assembly of 8 PBX lenses with a thin$aluminium pusher, duraluminium shell, and$miniaturized bridgewire detonators. +item.fabsols_vodka.name=Fabsol's Vodka +item.factory_core_advanced.name=Advanced Factory Energy Cluster +item.factory_core_titanium.name=Basic Factory Energy Cluster +item.fallout.name=Pile of Fallout +item.fau_boots.name=Fau Boots +item.fau_helmet.name=Fau Helmet +item.fau_legs.name=Fau Leggins +item.fau_plate.name=Fau Chestplate +item.filter_coal.name=Activated Carbon Filter +item.fins_big_steel.name=Big Steel Grid Fins +item.fins_flat.name=Flat Steel Casing +item.fins_quad_titanium.name=Small Titanium Fins +item.fins_small_steel.name=Small Steel Grid Fins +item.fins_tri_steel.name=Large Steel Fins +item.five_htp.name=Enteramine Pills +item.five_htp.desc=Removes all DRX, Stability for 10 minutes +item.flame_conspiracy.name=Conspiracy Theory +item.flame_conspiracy.desc=Steel beams can't melt jet fuel! +item.flame_opinion.name=Own Opinion +item.flame_opinion.desc=Well, I like it... +item.flame_politics.name=Political Topic +item.flame_politics.desc=Donald Duck will build the wall! +item.flame_pony.name=Painting of a Cartoon Pony +item.flame_pony.desc=Yellow horse beats blue horse, that's a proven fact! +item.flask_infusion.shield.name=Shield Infusion +item.fleija_core.name=F.L.E.I.J.A. Uranium 235 Charge +item.fleija_igniter.name=Pulse Igniter +item.fleija_kit.name=F.L.E.I.J.A. Kit +item.fleija_propellant.name=Schrabidium Propellant +item.fluid_barrel_empty.name=Empty Fluid Barrel +item.fluid_barrel_full.name=Fluid Barrel: +item.fluid_barrel_infinite.name=Infinite Fluid Barrel +item.fluid_duct.name=Fluid Duct: +item.fluid_identifier.name=Fluid Identifier +item.fluid_identifier.info=Universal fluid identifier for: +item.fluid_identifier.usage0=Right click fluid ducts to designate them for that fluid. +item.fluid_identifier.usage1=Shift right click fluid ducts to designate adjacent ducts +item.fluid_identifier.usage2=up to a maximum range of 64 ducts. +item.fluid_identifier_multi.name=Multi Fluid Identifier +item.fluid_identifier_multi.info=Universal fluid identifier for: +item.fluid_identifier_multi.info2=Secondary type: +item.fluid_tank_empty.name=Empty Universal Fluid Tank +item.fluid_tank_full.name=Universal Fluid Tank: +item.fluid_tank_lead_empty.name=Empty Hazardous Material Tank +item.fluid_tank_lead_full.name=Hazardous Material Tank: +item.fluorite.name=Fluorite +item.flywheel_beryllium.name=Beryllium Flywheel +item.fmn.name=Flunitrazepam Tablet +item.fmn.desc=Removes all DRX above 2,000mDRX +item.folly_bullet.name=12.8cm Starmetal High-Energy Shell +item.folly_bullet_du.name=12.8cm DU-Shell +item.folly_bullet_nuclear.name=12.8cm Nuclear Shell +item.folly_shell.name=Silver Bullet Casing +item.fooditem.name=food item +item.fragment_actinium.name=Actinium-227 Fragment +item.fragment_boron.name=Boron Fragment +item.fragment_cerium.name=Cerium Fragment +item.fragment_cobalt.name=Cobalt Fragment +item.fragment_coltan.name=Coltan +item.fragment_lanthanium.name=Lanthanium Fragment +item.fragment_meteorite.name=Meteorite Fragment +item.fragment_neodymium.name=Neodymium Fragment +item.fragment_niobium.name=Niobium Fragment +item.fuel_tank_large.name=Large Fuel Tank +item.fuel_tank_medium.name=Medium Fuel Tank +item.fuel_tank_small.name=Small Fuel Tank +item.fuse.name=Fuse +item.fusion_core.name=Fusion Core +item.fusion_core_infinite.name=Infinite Fusion Core +item.fusion_shield_chlorophyte.name=Chlorophyte-Metallized Fusion Reactor Blanket +item.fusion_shield_desh.name=Desh Fusion Reactor Blanket +item.fusion_shield_tungsten.name=Tungsten Fusion Reactor Blanket +item.fusion_shield_vaporwave.name=Vaporwave Fusion Reactor Blanket +item.gadget_core.name=Large Plutonium Core +item.gadget_explosive.name=First Generation Explosive Lens +item.gadget_kit.name=The Gadget Kit +item.gadget_wireing.name=Wiring +item.gas_biogas.name=Biogas Tank +item.gas_empty.name=Empty Gas Tank +item.gas_full.name=Gas Tank: +item.gas_lpg.name=LPG Tank +item.gas_mask.name=Gas Mask +item.gas_mask_filter.name=Gas Mask Filter +item.gas_mask_filter_combo.name=Gas Mask Combo Filter +item.gas_mask_filter_mono.name=Catalytic Mask Filter +item.gas_mask_filter_piss.name=Advanced Makeshift Gas Mask Filter +item.gas_mask_filter_rag.name=Makeshift Gas Mask Filter +item.gas_mask_m65.name=M65-Z Gas Mask +item.gas_mask_mono.name=Half Mask +item.gas_mask_olde.name=Leather Gas Mask +item.gas_petroleum.name=Petroleum Gas Tank +item.gas_tester.name=Gas Sensor +item.gear_large.name=Large Gear +item.gear_large_steel.name=Large Steel Gear +item.geiger_counter.name=Handheld Geiger Counter +item.gem_alexandrite.name=Alexandrite +item.gem_tantalium.name=Tantalium Polycrystal +item.gem_tantalium.desc='Tantalum' +item.gem_tantalium.desc.P11=AKA Tantalum. +item.gem_volcanic.name=Volcanic Gem +item.generator_front.name=Generator Front +item.generator_steel.name=Generator Body +item.glitch.name=Glitch +item.glowing_stew.name=Glowing Mushroom Stew +item.glyphid_meat.name=Glyphid Meat +item.glyphid_meat_grilled.name=Grilled Glyphid Meat +item.goggles.name=Protection Goggles +item.grenade_aschrab.name=Tossable Antischrabidium Cell +item.grenade_black_hole.name=Black Hole Grenade +item.grenade_breach.name=Breaching Grenade +item.grenade_burst.name=Digger Grenade +item.grenate_cats.name=Grenade of Cats +item.grenade_cloud.name=Jar of Cloud +item.grenade_cluster.name=Cluster Bomb +item.grenade_electric.name=Lightning Bomb +item.grenade_fire.name=Flame Frag Grenade +item.grenade_flare.name=Signal Flare +item.grenade_frag.name=Frag Grenade +item.grenade_gas.name=Gas Grenade +item.grenade_gascan.name=Tossable Gas Can +item.grenade_generic.name=Grenade +item.grenade_if_bouncy.name=IF - Bouncy Grenade +item.grenade_if_brimstone.name=IF - Tossable Brimstone Mine +item.grenade_if_concussion.name=IF - Concussion Grenade +item.grenade_if_generic.name=IF - Grenade +item.grenade_if_he.name=IF - HE Grenade +item.grenade_if_hopwire.name=IF - Vortex Hopwire +item.grenade_if_impact.name=IF - Impact Grenade +item.grenade_if_incendiary.name=IF - Incendiary Grenade +item.grenade_if_mystery.name=IF - M.-Grenade +item.grenade_if_null.name=IF - Null Grenade +item.grenade_if_spark.name=IF - S.-Grenade +item.grenade_if_sticky.name=IF - Sticky Grenade +item.grenade_if_toxic.name=IF - Toxic Grenade +item.grenade_kit.name=Grenade Kit +item.grenade_kyiv.name=The Kyiv Special +item.grenade_lemon.name=Combustible Lemon +item.grenade_mirv.name=MIRV Grenade +item.grenade_mk2.name=Mk 2 Grenade "Ambassador Pineapple" +item.grenade_nuclear.name=Nuka Grenade +item.grenade_nuke.name=Mark VI Drill Grenade +item.grenade_pink_cloud.name=Jar of Pink Cloud +item.grenade_plasma.name=Plasma Grenade +item.grenade_poison.name=Poison Grenade +item.grenade_pulse.name=Impulse Grenade +item.grenade_schrabidium.name=Schrabidium Grenade +item.grenade_shrapnel.name=Shrapnel Grenade +item.grenade_smart.name=Smart Grenade +item.grenade_strong.name=Enhanced Grenade +item.grenade_tau.name=Tau Grenade +item.grenade_zomg.name=Negative Energy Pair Annihilation Grenade +item.gun_ar15.name=Josh +item.gun_avenger.name=CZ57 Avenger Minigun +item.gun_b92.name=§9B92 Energy Pistol§r +item.gun_b92_ammo.name=§9B92 Energy Cell§r +item.gun_b93.name=§cB93 Energy Mod§r +item.gun_bf.name=BEL +item.gun_bf_ammo.name=Balefire Shell +item.gun_bio_revolver.name=Atlas +item.gun_bolt_action.name=Dream Bolt-Action Rifle (Original) +item.gun_bolt_action_ammo.name=12x74 Slug (LEGACY) +item.gun_bolt_action_green.name=Dream Bolt-Action Rifle (Green) +item.gun_bolt_action_saturnite.name=Saturnite Rifle +item.gun_bolter.name=Bolter +item.gun_bolter_digamma.name=Digamma Gun +item.gun_calamity.name=Buzzsaw +item.gun_calamity_ammo.name=.50 BMG Round (LEGACY) +item.gun_calamity_dual.name=Saddle Gun +item.gun_chemthrower.name=Chemthrower +item.gun_cryolator.name=The Cryolator +item.gun_cryolator_ammo.name=Cryo Cell +item.gun_dampfmaschine.name=Totally Not a Joke Weapon +item.gun_darter.name=Dart Gun +item.gun_deagle.name=Big Iron +item.gun_defabricator.name=Defabricator +item.gun_defabricator_ammo.name=Defabricator Energy Cell +item.gun_detonator.name=Laser Detonator +item.gun_emp.name=EMP Gun +item.gun_emp_ammo.name=Energy Cell +item.gun_euthanasia.name=Euthanasia +item.gun_euthanasia_ammo.name=Syringe +item.gun_fatman.name=M42 Nuclear Catapult "Fat Man" +item.gun_fatman_ammo.name=Mini Nuke (LEGACY) +item.gun_fireext.name=Fire Extinguisher +item.gun_flamer.name=Mister Topaz +item.gun_flechette.name=Flechette Rifle +item.gun_folly.name=Prototype Digamma "Folly" +item.gun_glass_cannon.name=The Glass Cannon +item.gun_hk69.name=Grenade Pistol +item.gun_hp.name=HPP Lazerjet +item.gun_hp_ammo.name=Ink Cartridge +item.gun_immolator.name=The Immolator +item.gun_immolator_ammo.name=Immolator Fuel +item.gun_jack.name=Jackhammer +item.gun_jack_ammo.name=Quadruple Shotgun Shell +item.gun_karl.name=Karl +item.gun_kit_1.name=Gun Oil +item.gun_kit_2.name=Gun Repair Kit +item.gun_ks23.name=Samuel the Big Shotgun +item.gun_lacunae.name=CZ33 Abaddon +item.gun_lacunae_ammo.name=5mm Round (LEGACY) +item.gun_lever_action.name=Mare's Leg (Original) +item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) +item.gun_lever_action_dark.name=Mare's Leg (Dark) +item.gun_lever_action_sonata.name=Flipped Mare's Leg +item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_lunatic_marksman.name=Lunatic Sniper Rifle +item.gun_m2.name=Ma Deuce +item.gun_minigun.name=CZ53 Personal Minigun +item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" +item.gun_mirv_ammo.name=Eightfold MIRV (LEGACY) +item.gun_moist_nugget.name=Mosin-Nagant +item.gun_mp.name=Pacifist's Machine Gun +item.gun_mp40.name=Submachine Gun +item.gun_mp40_ammo.name=Submachine Gun Round (LEGACY) +item.gun_pm_ammo.name=Small Propellantless Machine Gun Round +item.gun_mymy.name=Nietes +item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle +item.gun_osipr_ammo.name=Dark Energy Pulse Plug +item.gun_osipr_ammo2.name=Combine Ball +item.gun_panzerschreck.name=Panzerschreck +item.gun_proto.name=M42 Nuclear Catapult "Proto MIRV" +item.gun_quadro.name=Quattro Formaggi +item.gun_remington.name=バむデン ブラスト [BIDEN BLAST] +item.gun_revolver.name=Enhanced Revolver +item.gun_revolver_ammo.name=Lead Bullet +item.gun_revolver_blackjack.name=Blackjack Five-Shooter +item.gun_revolver_cursed.name=Cursed Revolver +item.gun_revolver_cursed_ammo.name=Steel Bullet +item.gun_revolver_gold.name=Golden Revolver +item.gun_revolver_gold_ammo.name=Golden Bullet +item.gun_revolver_inverted.name=Flipped Revolver +item.gun_revolver_iron.name=Simple Revolver +item.gun_revolver_iron_ammo.name=Bullet +item.gun_revolver_lead.name=Nuka Revolver +item.gun_revolver_lead_ammo.name=Glass Covered Nuclear Bullet +item.gun_revolver_nightmare.name=Nightmare Revolver (Original) +item.gun_revolver_nightmare2.name=Nightmare Revolver (Dark) +item.gun_revolver_nightmare2_ammo.name=Laser Buckshot +item.gun_revolver_nightmare_ammo.name=Nightmare Bullet +item.gun_revolver_nopip.name=Novac +item.gun_revolver_nopip_ammo.name=.44 Magnum Bullet (LEGACY) +item.gun_revolver_pip.name=Lil' Pipsqueak +item.gun_revolver_pip_ammo.name=Tainted Bullet (LEGACY) +item.gun_revolver_red.name=Red Key Revolver +item.gun_revolver_saturnite.name=Saturnite Shooter +item.gun_revolver_schrabidium.name=Schrabidium Revolver +item.gun_revolver_schrabidium_ammo.name=Schrabidium Bullet +item.gun_revolver_silver.name=Lent Gun +item.gun_rpg.name=Carl Gustav Recoilless Rifle +item.gun_rpg_ammo.name=Rocket (LEGACY) +item.gun_sauer.name=Stan Sauer's Shotgun +item.gun_skystinger.name=The One Sky Stinger +item.gun_spark.name=Spark Plug +item.gun_spark_ammo.name=Electromagnetic Cartridge +item.gun_spas12.name=SPAS-12 Shotgun +item.gun_stinger.name=FIM-92 Stinger +item.gun_stinger_ammo.name=Stinger Rocket (LEGACY) +item.gun_super_shotgun.name=Super Shotgun +item.gun_super_shotgun.desc=It's super broken! +item.gun_supershotgun.name=Super Shotgun +item.gun_thompson.name=Thompson Submachine Gun +item.gun_uboinik.name=Uboinik +item.gun_uboinik_ammo.name=12x70 Buckshot (LEGACY) +item.gun_uzi.name=IMI Uzi +item.gun_uzi_ammo.name=.22 LR Round (LEGACY) +item.gun_uzi_saturnite.name=Saturnite Uzi +item.gun_uzi_saturnite_silencer.name=Saturnite Uzi with Silencer +item.gun_uzi_silencer.name=IMI Uzi with Silencer +item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype +item.gun_xvl1456_ammo.name=Depleted Uranium-235 Box +item.gun_zomg.name=ZOMG Cannon +item.hand_drill.name=Hand Drill +item.hand_drill_desh.name=Desh Hand Drill +item.hazmat_boots.name=Hazmat Boots +item.hazmat_boots_grey.name=High-Performance Hazmat Boots +item.hazmat_boots_red.name=Advanced Hazmat Boots +item.hazmat_cloth.name=Hazmat Cloth +item.hazmat_cloth_grey.name=Lead-Reinforced Hazmat Cloth +item.hazmat_cloth_red.name=Advanced Hazmat Cloth +item.hazmat_grey_kit.name=High-Performance Hazmat Kit +item.hazmat_helmet.name=Hazmat Helmet +item.hazmat_helmet_grey.name=High-Performance Hazmat Helmet +item.hazmat_helmet_red.name=Advanced Hazmat Helmet +item.hazmat_kit.name=Hazmat Kit +item.hazmat_legs.name=Hazmat Leggings +item.hazmat_legs_grey.name=High-Performance Hazmat Leggings +item.hazmat_legs_red.name=Advanced Hazmat Leggings +item.hazmat_paa_boots.name=PaA Battle Hazmat Suit Boots +item.hazmat_paa_helmet.name=PaA Battle Hazmat Suit Helmet +item.hazmat_paa_legs.name=PaA Battle Hazmat Suit Leggings +item.hazmat_paa_plate.name=PaA Battle Hazmat Suit Chestplate +item.hazmat_plate.name=Hazmat Chestplate +item.hazmat_plate_grey.name=High-Performance Hazmat Chestplate +item.hazmat_plate_red.name=Advanced Hazmat Chestplate +item.hazmat_red_kit.name=Advanced Hazmat Kit +item.heart_booster.name=Heart Booster +item.heart_container.name=Heart Container +item.heart_fab.name=Fab Heart +item.heart_piece.name=Heart Piece +item.hev_battery.name=Suit Battery +item.hev_boots.name=HEV Mark IV Boots +item.hev_plate.name=HEV Mark IV Chestplate +item.hev_helmet.name=HEV Mark IV Helmet +item.hev_legs.name=HEV Mark IV Leggings +item.holotape_damaged.name=Damaged Holotape +item.holotape_image.name=Holotape +item.horseshoe_magnet.name=Horseshoe Magnet +item.hull_big_aluminium.name=Big Aluminium Shell +item.hull_big_steel.name=Big Steel Shell +item.hull_big_titanium.name=Big Titanium Shell +item.hull_small_aluminium.name=Small Aluminium Shell +item.hull_small_aluminium.desc=Can be inserted into drilled graphite +item.hull_small_steel.name=Small Steel Shell +item.igniter.name=Igniter +item.igniter.desc=(Used by right-clicking the Prototype)$It's a green metal handle with a$bright red button and a small lid.$At the bottom, the initials N.E. are$engraved. Whoever N.E. was, he had$a great taste in shades of green. +item.industrial_magnet.name=Industrial Magnet +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=Infinite Water Tank +item.inf_water_mk2.name=Heavy Infinite Water Tank +item.ingot_actinium.name=Actinium-227 Ingot +item.ingot_advanced_alloy.name=Advanced Alloy Ingot +item.ingot_aluminium.name=Aluminium Ingot +item.ingot_am_mix.name=Reactor Grade Americium Ingot +item.ingot_am241.name=Americium-241 Ingot +item.ingot_am242.name=Americium-242 Ingot +item.ingot_americium_fuel.name=Ingot of Americium Fuel +item.ingot_arsenic.name=Arsenic Ingot +item.ingot_asbestos.name=Asbestos Sheet +item.ingot_asbestos.desc=§o"Filled with life, self-doubt and asbestos. That comes with the air."§r +item.ingot_au198.name=Gold-198 Ingot +item.ingot_australium.name=Australium Ingot +item.ingot_bakelite.name=Bakelite Bar +item.ingot_beryllium.name=Beryllium Ingot +item.ingot_bismuth.name=Bismuth Ingot +item.ingot_boron.name=Boron Ingot +item.ingot_c4.name=Bar of Composition C-4 +item.ingot_cadmium.name=Cadmium Ingot +item.ingot_calcium.name=Calcium Ingot +item.ingot_cdalloy.name=Cadmium Steel Ingot +item.ingot_chainsteel.name=Heavy Chainsteel +item.ingot_co60.name=Cobalt-60 Ingot +item.ingot_cobalt.name=Cobalt Ingot +item.ingot_combine_steel.name=CMB Steel Ingot +item.ingot_combine_steel.desc=*insert Civil Protection reference here* +item.ingot_copper.name=Industrial Grade Copper +item.ingot_daffergon.name=Daffergon Ingot +item.ingot_desh.name=Desh Ingot +item.ingot_dineutronium.name=Dineutronium Ingot +item.ingot_dura_steel.name=High-Speed Steel Ingot +item.ingot_electronium.name=Electronium Ingot +item.ingot_euphemium.name=Euphemium Ingot +item.ingot_euphemium.desc=A very special and yet strange element. +item.ingot_ferrouranium.name=Ferrouranium Ingot +item.ingot_fiberglass.name=Fiberglass Bar +item.ingot_fiberglass.desc=High in fiber, high in glass. Everything the body needs. +item.ingot_firebrick.name=Firebrick +item.ingot_gh336.name=Ghiorsium-336 Ingot +item.ingot_gh336.desc=Seaborgium's colleague. +item.ingot_graphite.name=Graphite Ingot +item.ingot_hes.name=Highly Enriched Schrabidium Fuel Ingot +item.ingot_lanthanium.name=Semi-Stable Lanthanium Ingot +item.ingot_lanthanium.desc='Lanthanum' +item.ingot_lanthanium.desc.P11=Actually Lanthanum, but whatever. +item.ingot_lead.name=Lead Ingot +item.ingot_les.name=Low Enriched Schrabidium Fuel Ingot +item.ingot_magnetized_tungsten.name=Magnetized Tungsten Ingot +item.ingot_meteorite.name=Meteorite Ingot +item.ingot_meteorite_forged.name=Forged Meteorite Ingot +item.ingot_mox_fuel.name=Ingot of MOX Fuel +item.ingot_mud.name=Solid Mud Brick +item.ingot_neptunium.name=Neptunium Ingot +item.ingot_neptunium.desc=That one's my favourite! +item.ingot_neptunium.desc.P11=Woo, scary! +item.ingot_neptunium_fuel.name=Neptunium Fuel Ingot +item.ingot_niobium.name=Niobium Ingot +item.ingot_osmiridium.name=Osmiridium Ingot +item.ingot_pb209.name=Lead-209 Ingot +item.ingot_pc.name=Hard Plastic Bar +item.ingot_pet.name=Aluminium-Metallized PET Bar +item.ingot_phosphorus.name=Bar of White Phosphorus +item.ingot_plutonium.name=Plutonium Ingot +item.ingot_plutonium_fuel.name=Ingot of Plutonium Fuel +item.ingot_polonium.name=Polonium-210 Ingot +item.ingot_polymer.name=Polymer Bar +item.ingot_pu_mix.name=Reactor Grade Plutonium Ingot +item.ingot_pu238.name=Plutonium-238 Ingot +item.ingot_pu239.name=Plutonium-239 Ingot +item.ingot_pu240.name=Plutonium-240 Ingot +item.ingot_pu241.name=Plutonium-241 Ingot +item.ingot_pvc.name=PVC Bar +item.ingot_ra226.name=Radium-226 Ingot +item.ingot_red_copper.name=Minecraft Grade Copper +item.ingot_reiium.name=Reiium Ingot +item.ingot_rubber.name=Rubber Bar +item.ingot_saturnite.name=Saturnite Ingot +item.ingot_schrabidate.name=Ferric Schrabidate Ingot +item.ingot_schrabidium.name=Schrabidium Ingot +item.ingot_schrabidium_fuel.name=Ingot of Schrabidium Fuel +item.ingot_schraranium.name=Schraranium Ingot +item.ingot_schraranium.desc=Made from uranium in a schrabidium transmutator +item.ingot_semtex.name=Bar of Semtex +item.ingot_smore.name=S'more Ingot +item.ingot_solinium.name=Solinium Ingot +item.ingot_sr90.name=Strontium-90 Ingot +item.ingot_starmetal.name=§9Starmetal Ingot§r +item.ingot_steel.name=Steel Ingot +item.ingot_steel_dusted.name=Dusted Steel Ingot +item.ingot_tantalium.name=Tantalium Ingot +item.ingot_tantalium.desc='Tantalum' +item.ingot_tantalium.desc.P11=AKA Tantalum. +item.ingot_tcalloy.name=Technetium Steel Ingot +item.ingot_technetium.name=Technetium-99 Ingot +item.ingot_th232.name=Thorium-232 Ingot +item.ingot_thorium_fuel.name=Ingot of Thorium Fuel +item.ingot_titanium.name=Titanium Ingot +item.ingot_tungsten.name=Tungsten Ingot +item.ingot_u233.name=Uranium-233 Ingot +item.ingot_u235.name=Uranium-235 Ingot +item.ingot_u238.name=Uranium-238 Ingot +item.ingot_u238m2.name=Metastable Uranium-238M2 Ingot +item.ingot_unobtainium.name=Unobtainium Ingot +item.ingot_uranium.name=Uranium Ingot +item.ingot_uranium_fuel.name=Ingot of Uranium Fuel +item.ingot_verticium.name=Verticium Ingot +item.ingot_weidanium.name=Weidanium Ingot +item.ingot_zirconium.name=Zirconium Cube +item.injector_5htp.name=5-HTP Autoinjector +item.injector_knife.name=8 Inch Blade Autoinjector +item.ink.name=林 Ink +item.insert_doxium.name=Astolfium-Doped Doxium Insert +item.insert_du.name=Wkładka z ZuboÅŒonego Uranu +item.insert_era.name=Explosive Reactive Armor Insert +item.insert_esapi.name=ESAPI Insert +item.insert_ghiorsium.name=Ghiorsium Insert +item.insert_kevlar.name=Wkładka Kevlarowa +item.insert_sapi.name=SAPI Insert +item.insert_polonium.name=Wkładka z Polonu +item.insert_steel.name=Heavy Steel Insert +item.insert_xsapi.name=XSAPI Insert +item.insert_yharonite.name=Yharonite Insert +item.iv_blood.name=Blood Bag +item.iv_empty.name=IV Bag +item.iv_xp.name=Experience Bag +item.iv_xp_empty.name=Empty Experience Bag +item.jackt.name=Damn Stylish Ballistic Jacket +item.jackt2.name=Damn Stylish Ballistic Jacket 2: Tokyo Drift +item.jetpack_boost.name=Boostpack +item.jetpack_break.name=Builder's Jetpack +item.jetpack_fly.name=Plecak Rakietowy +item.jetpack_tank.name=Jetpack Reserve Fuel Tank +item.jetpack_vector.name=Vectored Jetpack +item.journal_bj.name=Whiskey Drenched Notebook +item.journal_pip.name=Survivalist's Journal +item.journal_silver.name=Contractor's Notes +item.key.name=Klucz +item.key_fake.name=Podrobiony Klucz +item.key_kit.name=Key Imitation Kit +item.key_red.name=Czerwony Klucz +item.key_red.desc=Explore the other side. +item.key_red.desc.P11=§4e§r +item.kit_toolbox.name=Skrzynka na Narzędzia +item.kit_toolbox_empty.name=Empty Toolbox +item.laser_crystal_bismuth.desc=Bismuth-Samarium-Uranium-Thorium crystal matrix +item.laser_crystal_bismuth.name=BiSmUTh Laser Crystal +item.laser_crystal_cmb.desc=Antischrabidium Suspended in a CMB-Schrabidate Alloy Lattice +item.laser_crystal_cmb.name=CMB-Schrabidate Antimatter Laser Crystal +item.laser_crystal_co2.desc=Carbon Dioxide encased in Crystalline Desh +item.laser_crystal_co2.name=CO2-Desh Laser Crystal +item.laser_crystal_digamma.name=Digamma Laser Crystal +item.laser_crystal_dnt.desc=Dineutronium-Spark Fermion Supercrystal +item.laser_crystal_dnt.name=Spark Laser Crystal +item.lead_gavel.name=Leaden Gavel +item.lemon.name="Cytryna" +item.letter.name=List Polecony +item.levitation_unit.name=Gravity Manipulator +item.lignite.name=Lignit +item.limiter.name=Generator Limiter +item.linker.name=Telelinker +item.liquidator_boots.name=Liquidator Suit Boots +item.liquidator_helmet.name=Liquidator Suit Helmet +item.liquidator_legs.name=Liquidator Suit Leggins +item.liquidator_plate.name=Liquidator Suit Chestplate +item.lithium.name=Kostka Litu +item.lodestone.name=Magnetyt +item.loop_stew.name=Śniadanie IT +item.loops.name=Lööps +item.loot_10.name=Size 10 Missile Loot Crate +item.loot_15.name=Size 15 Missile Loot Crate +item.loot_misc.name=General Missile Loot Crate +item.magnet_circular.name=Flat Magnet +item.magnet_dee.name=Dee Magnets +item.magnetron.name=Magnetron +item.man_core.name=Plutonium Core +item.man_explosive.name=Soczewki Skupiające Wybuch +item.man_igniter.name=Bomb Firing Unit +item.man_kit.name=Fat Man Kit +item.marshmallow.name=Marshmallow on a Stick +item.mask_of_infamy.name=Maska Zniesławienia +item.mask_piss.name=Maska Okopowa +item.mask_rag.name=Crude Protective Mask +item.matchstick.name=Zapałka +item.mech_key.name=Large Silver Key +item.mech_key.desc=It pulses with power. +item.mechanism_launcher_1.name=Launcher Mechanism +item.mechanism_launcher_2.name=Advanced Launcher Mechanism +item.mechanism_revolver_1.name=Revolver Mechanism +item.mechanism_revolver_2.name=Advanced Revolver Mechanism +item.mechanism_rifle_1.name=Rifle Mechanism +item.mechanism_rifle_2.name=Advanced Rifle Mechanism +item.mechanism_special.name=High-Tech Weapon Mechanism +item.med_bag.name=Doctor's Bag +item.med_ipecac.name=Ipecac Syrup +item.med_ptsd.name=PTSD Medication +item.med_schiziphrenia.name=Schizophrenia Medication +item.medal_liquidator.name=Liquidator Medal +item.meltdown_tool.name=Dyatlov Instant Meltdown Applicator +item.memespoon.name=§eMarket Gardener +item.memory.name=item.null.name +item.mese_gavel.name=Mesowy Młotek +item.mese_pickaxe.name=Mese Pickaxe +item.meteor_charm.name=Meteor Charm +item.meteor_remote.name=Meteorite Remote +item.meteorite_sword.name=Meteorite Sword +item.meteorite_sword_seared.name=Meteorite Sword (Seared) +item.meteorite_sword_reforged.name=Meteorite Sword (Reforged) +item.meteorite_sword_hardened.name=Meteorite Sword (Hardened) +item.meteorite_sword_alloyed.name=Meteorite Sword (Alloyed) +item.meteorite_sword_machined.name=Meteorite Sword (Machined) +item.meteorite_sword_treated.name=Meteorite Sword (Treated) +item.meteorite_sword_etched.name=Meteorite Sword (Etched) +item.meteorite_sword_bred.name=Meteorite Sword (Bred) +item.meteorite_sword_irradiated.name=Meteorite Sword (Irradiated) +item.meteorite_sword_fused.name=Meteorite Sword (Fused) +item.meteorite_sword_baleful.name=Meteorite Sword (Baleful) +item.mike_cooling_unit.name=Deuterium Cooling Unit +item.mike_core.name=Uranium Coated Deuterium Tank +item.mike_deut.name=Deuterium Tank +item.mike_kit.name=Zestaw Ivy Mike +item.mirror_tool.name=Mirror Adjustment Tool +item.mirror_tool.linked=Alignment position set! +item.mirror_tool.desc=Right-click boiler to memorize the position.$Click on mirrors to turn them towards the boiler. +item.missile_anti_ballistic.name=Anti Ballistic Missile +item.missile_assembly.name=Small Missile Assembly +item.missile_bhole.name=Black Hole Missile +item.missile_burst.name=Spare Missile +item.missile_buster.name=Bunker Buster +item.missile_buster_strong.name=Ulepszony Pogromca Bunkrów +item.missile_carrier.name=HTR-01 Carrier Rocket +item.missile_cluster.name=Kasetowy Pocisk Rakietowy +item.missile_cluster_strong.name=Strong Cluster Missile +item.missile_custom.name=Niestandardowy Pocisk Rakietowy +item.missile_doomsday.name=Pocisk Rakietowy Zagłady +item.missile_drill.name=Kruszarka do Betonu +item.missile_emp.name=Elektromagnetyczny Pocisk Rakietowy +item.missile_emp_strong.name=Silny Elektromagnetyczny Pocisk Rakietowy +item.missile_endo.name=Endotermiczny Pocisk Rakietowy +item.missile_exo.name=Eksotermiczny Pocisk Rakietowy +item.missile_generic.name=Wybuchowy Pocisk Rakietowy +item.missile_incendiary.name=Zapalający Pocisk Rakietowy +item.missile_incendiary_strong.name=Strong Incendiary Missile +item.missile_inferno.name=Inferno Missile G.R.N. Mk.II +item.missile_kit.name=Zestaw Pocisków Rakietowych +item.missile_micro.name=Micro-Nuclear Missile +item.missile_nuclear.name=Nuclear Missile +item.missile_nuclear_cluster.name=Thermonuclear Missile +item.missile_rain.name=Deszcz Kasetowy +item.missile_schrabidium.name=Schrabidium Missile +item.missile_shuttle.name=Reliant Robin Space Shuttle +item.missile_skin_camo.name=Missile Skin: Camo +item.missile_skin_color.desc=I can't find my missile anymore! +item.missile_skin_desert.name=Missile Skin: Desert Camo +item.missile_skin_desert.desc=Looks like sand, tastes like metal. +item.missile_skin_flames.name=Missile Skin: Sick Flames +item.missile_skin_flames.desc=Radical! +item.missile_skin_manly_pink.name=Missile Skin: Manly Pink +item.missile_skin_manly_pink.desc=Pink, the manliest color of them all. +item.missile_skin_metal.name=Missile Skin: Metal +item.missile_skin_metal.desc=Metal sheets and metal bolts, reinforced with metal. +item.missile_skin_orange_insulation.name=Missile Skin: Orange Insulation +item.missile_skin_orange_insulation.desc=Not an orange juice bottle;$do not attempt to drink contents. +item.missile_skin_sleek.name=Missile Skin: IF-R&D +item.missile_skin_sleek.desc=Chevrons are cool! +item.missile_skin_soviet_glory.name=Missile Skin: Soviet Glory +item.missile_skin_soviet_glory.desc=услуга перевПЎа МеЎПступМа +item.missile_skin_soviet_stank.name=Missile Skin: Soviet Stank +item.missile_skin_soviet_stank.desc=This one's got the real 60's stank to it. +item.missile_soyuz.name=Soyuz-FG +item.missile_soyuz_lander.name=Orbital Module +item.missile_soyuz_lander.desc=Doubles as a crappy lander! +item.missile_strong.name=Strong HE Missile +item.missile_taint.name=Taint-Tipped Missile +item.missile_volcano.name=Tektoniczny Pocisk Rakietowy +item.missile_volcano.desc=Za pomocą eksplozji jądrowych moÅŒemy stworzyć wulkan! +item.mold_base.name=Pusta Forma Huty +item.mold.name=Forma Huty +item.morning_glory.name=Poranna Chwała +item.motor.name=Silnik Elektryczny +item.motor_bismuth.name=Bizmutowy Silnik Elektryczny +item.motor_desh.name=Deszowy Silnik Elektryczny +item.mp_c_1.name=Obwód Namierzania Rakietowego Poziomu 1 +item.mp_c_2.name=Obwód Namierzania Rakietowego Poziomu 2 +item.mp_c_3.name=Obwód Namierzania Rakietowego Poziomu 3 +item.mp_c_4.name=Obwód Namierzania Rakietowego Poziomu 4 +item.mp_c_5.name=Obwód Namierzania Rakietowego Poziomu 5 +item.mp_fuselage_10_15_balefire.name=Size 10/15 BF Fuselage +item.mp_fuselage_10_15_hydrogen.name=Size 10/15 Hydrogen Fuselage +item.mp_fuselage_10_15_kerosene.name=Size 10/15 Kerosene Fuselage +item.mp_fuselage_10_15_solid.name=Size 10/15 Solid Fuel Fuselage +item.mp_fuselage_10_kerosene.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_camo.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_desert.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_flames.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_insulation.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_metal.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_sky.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_sleek.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_kerosene_taint.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_long_kerosene.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_camo.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_dash.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_desert.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_flames.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_insulation.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_metal.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_sky.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_sleek.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_taint.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_kerosene_vap.name=Size 10 Long Kerosene Fuselage +item.mp_fuselage_10_long_solid.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_bullet.name=Size 10 Long Solid Fuselage +item.mp_fuselage_10_long_solid_flames.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_insulation.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_silvermoonlight.name=Size 10 Long Solid Fuselage +item.mp_fuselage_10_long_solid_sleek.name=Size 10 Long Solid Fuel Fuselage +item.mp_fuselage_10_long_solid_soviet_glory.name=Size 10 Long Solid Fuselage +item.mp_fuselage_10_solid.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_battery.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_cathedral.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_duracell.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_flames.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_insulation.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_moonlit.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_sleek.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_solid_soviet_glory.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_xenon.name=Size 10 Xenon Fuselage +item.mp_fuselage_10_xenon_bhole.name=Size 10 Xenon Fuselage +item.mp_fuselage_15_20_kerosene.name=Size 15/20 Kerosene Fuselage +item.mp_fuselage_15_20_kerosene_magnusson.name=Size 15/20 Kerosene Fuselage +item.mp_fuselage_15_20_solid.name=Size 15/20 Solid Fuel Fuselage +item.mp_fuselage_15_balefire.name=Size 15 BF Fuselage +item.mp_fuselage_15_hydrogen.name=Size 15 Hydrogen Fuselage +item.mp_fuselage_15_hydrogen_cathedral.name=Size 15 Hydrogen Fuselage +item.mp_fuselage_15_kerosene.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_blackjack.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_camo.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_decorated.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_desert.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_insulation.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_lambda.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_metal.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_minuteman.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_pip.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_polite.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_sky.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_steampunk.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_taint.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_kerosene_yuck.name=Size 15 Kerosene Fuselage +item.mp_fuselage_15_solid.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_desh.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_faust.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_insulation.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_mimi.name=Size 15 Solid Fuel Mimi-chan's Body +item.mp_fuselage_15_solid_panorama.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_roses.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_silvermoonlight.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_snowy.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_soviet_glory.name=Size 15 Solid Fuel Fuselage +item.mp_fuselage_15_solid_soviet_stank.name=Size 15 Solid Fuel Fuselage +item.mp_stability_10_cruise.name=Size 10 Cruise Fins +item.mp_stability_10_flat.name=Size 10 Flat Fins +item.mp_stability_10_space.name=Size 10 Space Fins +item.mp_stability_15_flat.name=Size 15 Flat Fins +item.mp_stability_15_soyuz.name=Size 15 Pointy Fins +item.mp_stability_15_thin.name=Size 15 Thin Fins +item.mp_thruster_10_kerosene.name=Size 10 Liquid Fuel Thruster +item.mp_thruster_10_solid.name=Size 10 Solid Fuel Thruster +item.mp_thruster_10_xenon.name=Size 10 Ion Thruster +item.mp_thruster_15_balefire.name=Size 15 BF Thruster with Nuclear Preheater +item.mp_thruster_15_balefire_large.name=Size 15 BF Thruster with Nuclear Preheater (Heavy Duty Nozzle) +item.mp_thruster_15_balefire_large_rad.name=Size 15 BF Thruster with Nuclear Preheater (Heavy Duty Nozzle) +item.mp_thruster_15_balefire_short.name=Size 15 BF Thruster with Nuclear Preheater (Shortened) +item.mp_thruster_15_hydrogen.name=Size 15 Hydrogen Thruster +item.mp_thruster_15_hydrogen_dual.name=Size 15 Hydrogen Twin Thrusters +item.mp_thruster_15_kerosene.name=Size 15 Liquid Fuel Thruster +item.mp_thruster_15_kerosene_dual.name=Size 15 Liquid Fuel Twin Thrusters +item.mp_thruster_15_kerosene_triple.name=Size 15 Liquid Fuel Triple Thrusters +item.mp_thruster_15_solid.name=Size 15 Solid Fuel Thruster +item.mp_thruster_15_solid_hexdecuple.name=Size 15 Solid Fuel Hexdecuple Thrusters +item.mp_thruster_20_kerosene.name=Size 20 Liquid Fuel Thruster +item.mp_thruster_20_kerosene_dual.name=Size 20 Liquid Fuel Twin Thrusters +item.mp_thruster_20_kerosene_triple.name=Size 20 Liquid Fuel Triple Thrusters +item.mp_thruster_20_solid.name=Size 20 Solid Fuel Thruster +item.mp_thruster_20_solid_multi.name=Size 20 Solid Fuel 30-Fold Thrusters +item.mp_thruster_20_solid_multier.name=Size 20 Solid Fuel 47-Fold Thrusters +item.mp_warhead_10_buster.name=Size 10 Bunker Buster Warhead +item.mp_warhead_10_cloud.name=Size 10 Pink Cloud Warhead +item.mp_warhead_10_he.name=Size 10 HE Warhead +item.mp_warhead_10_incendiary.name=Size 10 Incendiary Warhead +item.mp_warhead_10_nuclear.name=Size 10 Micro Nuclear Warhead +item.mp_warhead_10_nuclear_large.name=Size 10 Nuclear Warhead +item.mp_warhead_10_taint.name=Size 10 Tainted Warhead +item.mp_warhead_15_balefire.name=Size 15 BF Warhead +item.mp_warhead_15_boxcar.name=Size 15 Boxcar? +item.mp_warhead_15_he.name=Size 15 HE Warhead +item.mp_warhead_15_incendiary.name=Size 15 Incendiary Warhead +item.mp_warhead_15_n2.name=Size 15 N² Mine +item.mp_warhead_15_nuclear.name=Size 15 Nuclear Warhead +item.mp_warhead_15_nuclear_mimi.name=Size 15 Mimi-chan's Head +item.mp_warhead_15_nuclear_shark.name=Size 15 Nuclear Warhead +item.mp_warhead_15_turbine.name=Size 15 Jet Engine +item.mucho_mango.name=AriZona Mucho Mango +item.multi_kit.name=Multi Purpose Bomb Kit +item.multitool_beam.name=Power Fist (Zapper) +item.multitool_decon.name=Power Fist (Decontaminator) +item.multitool_dig.name=Power Fist (Digging Claw) +item.multitool_ext.name=Power Fist (Ore Extractor) +item.multitool_hit.name=Power Fist (Fist) +item.multitool_joule.name=Power Fist (Giga Joule) +item.multitool_mega.name=Power Fist (Super Punch) +item.multitool_miner.name=Power Fist (Extracting Mining Laser) +item.multitool_silk.name=Power Fist (Silk Touch Claw) +item.multitool_sky.name=Power Fist (Crack the Sky) +item.mysteryshovel.name=Brittle Spade +item.n2_charge.name=DuÅŒy Ładunek Wybuchowy +item.neutrino_lens.name=Soczewka Neutrinowa +item.neutron_reflector.name=Neutron Reflector +item.night_vision.name=Night Vision Goggles +item.night_vision.description.item=Grants you night vision (requires full electric set) +item.night_vision.description.in_armor=%s (grants night vision) +item.niter.name=Saletra +item.no9.name=Mining Helmet +item.nossy_hat.name=Fabulous Hat +item.nothing.name=Nic +item.nuclear_waste.name=Odpad Promieniotwórczy +item.nuclear_waste_pearl.name=Nuclear Waste Pearl +item.nuclear_waste_tiny.name=Tiny Pile of Nuclear Waste +item.nuclear_waste_long.name=Long-Lived Nuclear Waste +item.nuclear_waste_long_tiny.name=Tiny Pile of Long-Lived Nuclear Waste +item.nuclear_waste_long_depleted.name=Decayed Long-Lived Nuclear Waste +item.nuclear_waste_long_depleted_tiny.name=Tiny Pile of Decayed Long-Lived Nuclear Waste +item.nuclear_waste_short.name=Short-Lived Nuclear Waste +item.nuclear_waste_short_tiny.name=Tiny Pile of Short-Lived Nuclear Waste +item.nuclear_waste_short_depleted.name=Decayed Short-Lived Nuclear Waste +item.nuclear_waste_short_depleted_tiny.name=Tiny Pile of Decayed Short-Lived Nuclear Waste +item.nuclear_waste_vitrified.name=Vitrified Nuclear Waste +item.nuclear_waste_vitrified_tiny.name=Tiny Pile of Vitrified Nuclear Waste +item.nugget.name=Chicken Nugget +item.nugget_actinium.name=Actinium-227 Nugget +item.nugget_am_mix.name=Reactor Grade Americium Nugget +item.nugget_am241.name=Americium-241 Nugget +item.nugget_am242.name=Americium-242 Nugget +item.nugget_americium_fuel.name=Americium Fuel Nugget +item.nugget_arsenic.name=Arsenic Nugget +item.nugget_au198.name=Gold-198 Nugget +item.nugget_australium.name=Australium Nugget +item.nugget_australium_greater.name=Greater Australium Nugget +item.nugget_australium_lesser.name=Lesser Australium Nugget +item.nugget_beryllium.name=Beryllium Nugget +item.nugget_bismuth.name=Bismuth Nugget +item.nugget_co60.name=Cobalt-60 Nugget +item.nugget_cobalt.name=Cobalt Nugget +item.nugget_daffergon.name=Daffergon Nugget +item.nugget_desh.name=Desh Nugget +item.nugget_dineutronium.name=Dineutronium Nugget +item.nugget_euphemium.name=Euphemium Nugget +item.nugget_euphemium.desc=A small piece of a pink metal.$It's properties are still unknown,$DEAL WITH IT carefully. +item.nugget_gh336.name=Ghiorsium-336 Nugget +item.nugget_gh336.desc=Seaborgium's colleague. +item.nugget_hes.name=Highly Enriched Schrabidium Fuel Nugget +item.nugget_lead.name=Lead Nugget +item.nugget_les.name=Low Enriched Schrabidium Fuel Nugget +item.nugget_mercury_tiny.name=Tiny Drop of Mercury +item.nugget_mercury.name=Drop of Mercury +item.nugget_mox_fuel.name=Nugget of MOX Fuel +item.nugget_mox_fuel.desc=Moxie says: §lTAX EVASION.§r +item.nugget_neptunium.name=Neptunium Nugget +item.nugget_neptunium_fuel.name=Neptunium Fuel Nugget +item.nugget_osmiridium.name=Osmiridium Nugget +item.nugget_pb209.name=Lead-209 Nugget +item.nugget_plutonium.name=Plutonium Nugget +item.nugget_plutonium_fuel.name=Nugget of Plutonium Fuel +item.nugget_polonium.name=Polonium-210 Nugget +item.nugget_pu_mix.name=Reactor Grade Plutonium Nugget +item.nugget_pu238.name=Plutonium-238 Nugget +item.nugget_pu239.name=Plutonium-239 Nugget +item.nugget_pu240.name=Plutonium-240 Nugget +item.nugget_pu241.name=Plutonium-241 Nugget +item.nugget_ra226.name=Radium-226 Nugget +item.nugget_reiium.name=Reiium Nugget +item.nugget_schrabidium.name=Schrabidium Nugget +item.nugget_schrabidium_fuel.name=Nugget of Schrabidium Fuel +item.nugget_solinium.name=Solinium Nugget +item.nugget_sr90.name=Strontium-90 Nugget +item.nugget_tantalium.name=Tantalium Nugget +item.nugget_tantalium.desc='Tantalum' +item.nugget_tantalium.desc.P11=AKA Tantalum. +item.nugget_technetium.name=Technetium-99 Nugget +item.nugget_th232.name=Thorium-232 Nugget +item.nugget_thorium_fuel.name=Nugget of Thorium Fuel +item.nugget_u233.name=Uranium-233 Nugget +item.nugget_u235.name=Uranium-235 Nugget +item.nugget_u238.name=Uranium-238 Nugget +item.nugget_unobtainium.name=Unobtainium Nugget +item.nugget_uranium.name=Uranium Nugget +item.nugget_uranium_fuel.name=Nugget of Uranium Fuel +item.nugget_verticium.name=Verticium Nugget +item.nugget_weidanium.name=Weidanium Nugget +item.nugget_zirconium.name=Zirconium Splinter +item.nuke_advanced_kit.name=Atomic Science Advanced Kit +item.nuke_commercially_kit.name=Atomic Science Kit for Commercial Uses +item.nuke_electric_kit.name=Electronic Engineer's Kit +item.nuke_starter_kit.name=Atomic Science Starter Kit +item.oil_canola.name=Raw Canola Oil +item.oil_detector.name=Oil Reservoir Detector +item.oil_detector.desc1=Right-click to scan for oil. +item.oil_detector.desc2=Detector will only find larger deposits. +item.oil_detector.bullseye=Oil deposit directly below! +item.oil_detector.detected=Oil detected nearby. +item.oil_detector.noOil=No oil detected. +item.oil_tar.coal.name=Smoła Węglowa +item.oil_tar.crude.name=Smoła Naftowa +item.oil_tar.crack.name=Smoła Skrakowanej Nafty +item.oil_tar.paraffin.name=Wosk Parafinowy +item.oil_tar.wax.name=Chlorinated Petroleum Wax +item.oil_tar.wood.name=Smoła Drewnowa +item.ore.asbestos=Azbest +item.ore.borax=Boraks +item.ore.chlorocalcite=Chlorokalcyt +item.ore.copper=Miedź +item.ore.gold=Złoto +item.ore.iron=Å»elazo +item.ore.niobium=Niob +item.ore.titanium=Tytan +item.ore.tungsten=Wolfram +item.ore.thorium=Tor +item.ore.uranium=Uran +item.ore_bedrock.name=%s Kamienia Macierystego +item.ore_byproduct.b_aluminium.name=Crystalline Aluminium Fragment +item.ore_byproduct.b_bismuth.name=Crystalline Bismuth Fragment +item.ore_byproduct.b_calcium.name=Crystalline Calcium Fragment +item.ore_byproduct.b_copper.name=Crystalline Copper Fragment +item.ore_byproduct.b_iron.name=Crystalline Iron Fragment +item.ore_byproduct.b_lead.name=Crystalline Lead Fragment +item.ore_byproduct.b_lithium.name=Crystalline Lithium Fragment +item.ore_byproduct.b_polonium.name=Crystalline Polonium Fragment +item.ore_byproduct.b_radium.name=Crystalline Radium Fragment +item.ore_byproduct.b_silicon.name=Crystalline Silicon Fragment +item.ore_byproduct.b_sulfur.name=Crystalline Sulfur Fragment +item.ore_byproduct.b_technetium.name=Crystalline Technetium Fragment +item.ore_byproduct.b_titanium.name=Crystalline Titanium Fragment +item.ore_byproduct.b_uranium.name=Crystalline Uranium Fragment +item.ore_centrifuged.name=Centrifuged %s Ore +item.ore_cleaned.name=Cleaned %s Ore +item.ore_deepcleaned.name=Deep Cleaned %s Ore +item.ore_enriched.name=Enriched %s Ore +item.ore_nitrated.name=Nitrated %s Ore +item.ore_nitrocrystalline.name=Nitrocrystalline %s Ore +item.ore_purified.name=Purified %s Ore +item.ore_radcleaned.name=Radiation-Cleaned %s Ore +item.ore_seared.name=Seared %s Ore +item.ore_separated.name=Separated %s Ore +item.overfuse.name=Singularity Screwdriver +item.overfuse.desc=Say what? +item.oxy_mask.name=Oxygen Mask +item.paa_boots.name=PaA "good ol' shoes" +item.paa_legs.name=PaA Leg Reinforcements +item.paa_plate.name=PaA Chest Protection Plate +item.padlock.name=Padlock +item.padlock_reinforced.name=Reinforced Padlock +item.padlock_rusty.name=Rusty Padlock +item.padlock_unbreakable.name=Unbreakable Padlock +item.pads_rubber.name=Rubber Pads +item.pads_slime.name=Slime Pads +item.pads_static.name=Static Pads +item.pancake.name=Pancake made from Scrap Metal, Nails and Gem Dust +item.part_beryllium.name=Box of Beryllium Dust +item.part_carbon.name=Box of Carbon Dust +item.part_copper.name=Box of Copper Dust +item.part_generic.piston_electric.name=Electric Piston +item.part_generic.piston_hydraulic.name=Hydraulic Piston +item.part_generic.piston_pneumatic.name=Pneumatic Piston +item.part_lithium.name=Box of Lithium Dust +item.part_plutonium.name=Box of Plutonium Dust +item.particle_aelectron.name=Positron Capsule +item.particle_amat.name=Antimatter Capsule +item.particle_aproton.name=Antiproton Capsule +item.particle_aschrab.name=Antischrabidium Capsule +item.particle_copper.name=Copper Ion Capsule +item.particle_dark.name=Dark Matter Capsule +item.particle_digamma.name=§cThe Digamma Particle§r +item.particle_empty.name=Empty Particle Capsule +item.particle_higgs.name=Higgs Boson Capsule +item.particle_hydrogen.name=Hydrogen Ion Capsule +item.particle_lead.name=Lead Ion Capsule +item.particle_lutece.name=Lutece Quasiparticle +item.particle_muon.name=Muon Capsule +item.particle_sparkticle.name=Sparkticle Capsule +item.particle_strange.name=Strange Quark Capsule +item.particle_tachyon.name=Tachyon Capsule +item.parts_legendary.name=Legendary Parts +item.peas.name=Groch +item.pedestal_steel.name=Stalowy Piedestał +item.pellet_advanced.name=Advanced Watz Performance Improver +item.pellet_antimatter.name=Antimatter Cluster +item.pellet_beryllium.name=Beryllium Moderator Pellet +item.pellet_buckshot.name=Lead Pellets +item.pellet_canister.name=Canister Shot +item.pellet_charged.name=Zjonizowane Cząsteczki +item.pellet_chlorophyte.name=Chlorophyte Rounds +item.pellet_claws.name=Sharp Metal Claws +item.pellet_cluster.name=Explosive Pellets +item.pellet_cluster.desc=Used in multi purpose bombs:$Adds some extra boom! +item.pellet_coal.name=Dense Coal Cluster +item.pellet_coolant.name=Coolant Cluster +item.pellet_flechette.name=Flechettes +item.pellet_gas.name=Poison Gas Cartridge +item.pellet_gas.desc=Used in multi purpose bombs:$*cough cough* Halp pls! +item.pellet_hes.name=HES Watz Pellet +item.pellet_lead.name=Lead Reflector Pellet +item.pellet_les.name=LES Watz Pellet +item.pellet_mercury.name=Mercury Rounds +item.pellet_mes.name=MES Watz Pellet +item.pellet_meteorite.name=Meteorite Rounds +item.pellet_neptunium.name=Neptunium Watz Pellet +item.pellet_rtg.name=Plutonium-238 RTG Pellet +item.pellet_rtg.desc=RTG fuel pellet for infinite energy! (almost) +item.pellet_rtg_actinium.name=Actinium-227 RTG Pellet +item.pellet_rtg_actinium.desc=A glow of blue light and beta rays. +item.pellet_rtg_americium.name=Americium-241 RTG Pellet +item.pellet_rtg_americium.desc=Rare and reliable, good old Americium! +item.pellet_rtg_berkelium.name=Berkelium RTG Pellet +item.pellet_rtg_berkelium.desc= +item.pellet_rtg_cobalt.name=Cobalt-60 RTG Pellet +item.pellet_rtg_cobalt.desc=Not the best as an RTG, but great for gamma radiation! +item.pellet_rtg_depleted.bismuth.name=Decayed Bismuth RTG Pellet +item.pellet_rtg_depleted.lead.name=Decayed Lead RTG Pellet +item.pellet_rtg_depleted.neptunium.name=Decayed Neptunium RTG Pellet +item.pellet_rtg_depleted.mercury.name=Decayed Mercury RTG Pellet +item.pellet_rtg_depleted.nickel.name=Decayed Nickel RTG Pellet +item.pellet_rtg_depleted.zirconium.name=Decayed Zirconium RTG Pellet +item.pellet_rtg_lead.name=Lead-209 RTG Pellet +item.pellet_rtg_lead.desc=Exposure will result in immediate death. +item.pellet_rtg_gold.name=Gold-198 RTG Pellet +item.pellet_rtg_gold.desc=Made from a rare, highly unstable gold isotope. +item.pellet_rtg_polonium.name=Polonium-210 RTG Pellet +item.pellet_rtg_polonium.desc=More powerful RTG pellet, made from finest polonium! +item.pellet_rtg_strontium.name=Strontium-90 RTG Pellet +item.pellet_rtg_strontium.desc=Known to the State of California... +item.pellet_rtg_radium.name=Radium-226 RTG Pellet +item.pellet_rtg_radium.desc=Great starter pellet, sourced from all-natural radium! +item.pellet_rtg_weak.name=Weak Uranium RTG Pellet +item.pellet_rtg_weak.desc=Cheaper and weaker pellet, now with more U238! +item.pellet_schrabidium.name=Pure Schrabidium Watz Pellet +item.photo_panel.name=Photovoltaic Panel +item.pile_rod_boron.name=Chicago Pile Control Rod +item.pile_rod_boron.desc=§9[Neutron Absorber]$§eClick to toggle +item.pile_rod_detector.name=Chicago Pile Control & Detector Rod +item.pile_rod_detector.desc=§9[Neutron Detector/Absorber]$§eUse defuser to increase/decrease neutron limit$§eUse screwdriver w/o sneaking to inspect flux +item.pile_rod_lithium.name=Chicago Pile Lithium Cell +item.pile_rod_lithium.desc=§a[Breedable Fuel]$§eUse hand drill to inspect core +item.pile_rod_plutonium.name=Chicago Pile Plutonium Rod +item.pile_rod_plutonium.desc=§d[Neutron Source] +item.pile_rod_pu239.name=Chicago Pile Bred Uranium Rod +item.pile_rod_pu239.desc=§a[Reactive Fuel]$§eRich in Plutonium-239. +item.pile_rod_source.name=Chicago Pile Ra226Be Neutron Source +item.pile_rod_source.desc=§d[Neutron Source] +item.pile_rod_uranium.name=Chicago Pile Uranium Rod +item.pile_rod_uranium.desc=§a[Reactive Fuel]$§eUse hand drill to take core sample +item.pill_iodine.name=Iodine Pill +item.pill_iodine.desc=Removes negative effects +item.pill_herbal.name=Herbal Paste +item.pill_herbal.desc=Effective treatment against lung disease and mild radiation poisoning$Comes with side effects +item.pill_red.name=Red Pill +item.pin.name=Bobby Pin +item.pin.desc=Standard success rate of picking a regular lock is ~10%%. +item.pipes_steel.name=Steel Pipes +item.pipes_steel.desc=Uncrafting was omitted due to tax evasion. +item.piston_selenium.name=Combustion Engine Piston +item.piston_set_desh.name=Desh Piston Set +item.piston_set_dura.name=High-Speed Steel Piston Set +item.piston_set_starmetal.name=Starmetal Piston Set +item.piston_set_steel.name=Steel Piston Set +item.plan_c.name=Plan C +item.plan_c.desc=Śmiertelny +item.plant_item.mustardwillow.name=Mustard Willow Leaf +item.plant_item.rope.name=Rope +item.plant_item.tobacco.name=Tobacco +item.plate_advanced_alloy.name=Advanced Alloy Plate +item.plate_aluminium.name=Aluminium Plate +item.plate_armor_ajr.name=Iron-Shod Armor Plating +item.plate_armor_dnt.name=DNT Armor Plating +item.plate_armor_fau.name=Fau Armor Plating +item.plate_armor_hev.name=Reactive Armor Plating +item.plate_armor_lunar.name=Lunar Plating +item.plate_armor_titanium.name=Titanium Armor Plate +item.plate_bismuth.name=Bismuth Compound Plate +item.plate_bismuth.desc=Guys, It's Bismuth's alchemical symbol, I swear. +item.plate_cast.name=Cast %s Plate +item.plate_combine_steel.name=CMB Steel Plate +item.plate_copper.name=Copper Plate +item.plate_dalekanium.name=Angry Metal +item.plate_desh.name=Desh Compound Plate +item.plate_dineutronium.name=Dineutronium Compound Plate +item.plate_euphemium.name=Euphemium Compound Plate +item.plate_fuel_mox.name=MOX Plate Fuel +item.plate_fuel_pu238be.name=Pu238Be Plate Fuel +item.plate_fuel_pu239.name=HEP-239 Plate Fuel +item.plate_fuel_ra226be.name=Ra226Be Plate Fuel +item.plate_fuel_sa326.name=HES-326 Plate Fuel +item.plate_fuel_u233.name=HEU-233 Plate Fuel +item.plate_fuel_u235.name=HEU-235 Plate Fuel +item.plate_gold.name=Gold Plate +item.plate_iron.name=Iron Plate +item.plate_kevlar.name=Kevlar-Ceramic Compound +item.plate_lead.name=Lead Plate +item.plate_mixed.name=Mixed Plate +item.plate_paa.name=PaA Alloy Plate +item.plate_polymer.name=Insulator +item.plate_saturnite.name=Saturnite Plate +item.plate_schrabidium.name=Schrabidium Plate +item.plate_steel.name=Steel Plate +item.plate_titanium.name=Titanium Plate +item.polaroid.name=The Polaroid +item.pollution_detector.name=Pollution Detector +item.powder_actinium.name=Actinium Powder +item.powder_actinium_tiny.name=Tiny Pile of Actinium Powder +item.powder_advanced_alloy.name=Advanced Alloy Powder +item.powder_aluminium.name=Aluminium Powder +item.powder_asbestos.name=Asbestos Powder +item.powder_asbestos.desc=§o\"Sniffffffff- MHHHHHHMHHHHHHHHH\"§r +item.powder_astatine.name=Astatine Powder +item.powder_at209.name=Astatine-209 Powder +item.powder_au198.name=Gold-198 Powder +item.powder_australium.name=Australium Powder +item.powder_bakelite.name=Bakelite Powder +item.powder_balefire.name=Thermonuclear Ashes +item.powder_beryllium.name=Beryllium Powder +item.powder_bismuth.name=Bismuth Powder +item.powder_borax.name=Boraks +item.powder_boron.name=Boron Powder +item.powder_boron_tiny.name=Tiny Pile of Boron Powder +item.powder_bromine.name=Bromine Powder +item.powder_cadmium.name=Cadmium Powder +item.powder_caesium.name=Caesium Powder +item.powder_calcium.name=Calcium Powder +item.powder_cerium.name=Cerium Powder +item.powder_cerium_tiny.name=Tiny Pile of Cerium Powder +item.powder_chlorocalcite.name=Chlorocalcite +item.powder_chlorophyte.name=Chlorophyte Powder +item.powder_cloud.name=Cloud Residue +item.powder_co60.name=Cobalt-60 Powder +item.powder_coal.name=Coal Powder +item.powder_coal_tiny.name=Tiny Pile of Coal Powder +item.powder_cobalt.name=Cobalt Powder +item.powder_cobalt_tiny.name=Tiny Pile of Cobalt Powder +item.powder_coltan.name=Purified Tantalite +item.powder_coltan_ore.name=Crushed Coltan +item.powder_combine_steel.name=CMB Steel Powder +item.powder_copper.name=Copper Powder +item.powder_cs137.name=Caesium-137 Powder +item.powder_cs137_tiny.name=Tiny Pile of Caesium-137 Powder +item.powder_daffergon.name=Daffergon Powder +item.powder_desh.name=Desh Powder +item.powder_desh_mix.name=Desh Blend +item.powder_desh_ready.name=DeshReady™ Blend +item.powder_diamond.name=Diamond Powder +item.powder_dineutronium.name=Dineutronium Powder +item.powder_dura_steel.name=High-Speed Steel Powder +item.powder_emerald.name=Emerald Powder +item.powder_euphemium.name=Euphemium Powder +item.powder_euphemium.desc=Pulverized pink.$Tastes like strawberries. +item.powder_fertilizer.name=Industrial Fertilizer +item.powder_fire.name=Red Phosphorus +item.powder_fire.desc=Used in multi purpose bombs:$Incendiary bombs are fun! +item.powder_flux.name=Flux +item.powder_gold.name=Gold Powder +item.powder_i131.name=Iodine-131 Powder +item.powder_i131_tiny.name=Tiny Pile of Iodine-131 Powder +item.powder_ice.name=Cryo Powder +item.powder_impure_osmiridium.name=Impure Osmiridium Powder +item.powder_iodine.name=Iodine Powder +item.powder_iron.name=Iron Powder +item.powder_lanthanium.name=Lanthanium Powder +item.powder_lanthanium_tiny.name=Tiny Pile of Lanthanium Powder +item.powder_lapis.name=Lapis Lazuli Powder +item.powder_lead.name=Lead Powder +item.powder_lignite.name=Lignite Powder +item.powder_lithium.name=Lithium Powder +item.powder_lithium_tiny.name=Tiny Pile of Lithium Powder +item.powder_magic.name=Pulverized Enchantment +item.powder_magnetized_tungsten.name=Magnetized Tungsten Powder +item.powder_meteorite.name=Meteorite Powder +item.powder_meteorite_tiny.name=Tiny Pile of Meteorite Powder +item.powder_neodymium.name=Neodymium Powder +item.powder_neodymium_tiny.name=Tiny Pile of Neodymium Powder +item.powder_neptunium.name=Neptunium Powder +item.powder_niobium.name=Niobium Powder +item.powder_niobium_tiny.name=Tiny Pile of Niobium Powder +item.powder_nitan_mix.name=Nitanium Blend +item.powder_paleogenite.name=Paleogenite Powder +item.powder_paleogenite_tiny.name=Tiny Pile of Paleogenite Powder +item.powder_plutonium.name=Plutonium Powder +item.powder_poison.name=Poison Powder +item.powder_poison.desc=Used in multi purpose bombs:$Warning: Poisonous! +item.powder_polonium.name=Polonium-210 Powder +item.powder_polymer.name=Polymer Powder +item.powder_power.name=Energy Powder +item.powder_quartz.name=Quartz Powder +item.powder_ra226.name=Radium-226 Powder +item.powder_red_copper.name=Red Copper Powder +item.powder_reiium.name=Reiium Powder +item.powder_sawdust.name=Sawdust +item.powder_schrabidate.name=Ferric Schrabidate Powder +item.powder_schrabidium.name=Schrabidium Powder +item.powder_semtex_mix.name=Semtex Blend +item.powder_spark_mix.name=Spark Blend +item.powder_sr90.name=Strontium-90 Powder +item.powder_sr90_tiny.name=Tiny Pile of Strontium-90 Powder +item.powder_steel.name=Steel Powder +item.powder_steel_tiny.name=Tiny Pile of Steel Powder +item.powder_strontium.name=Strontium Powder +item.powder_tantalium.name=Tantalium Powder +item.powder_tantalium.desc='Tantalum' +item.powder_tantalium.desc.P11=AKA Tantalum. +item.powder_tcalloy.name=Technetium Steel Powder +item.powder_tektite.name=Tektite Powder +item.powder_tennessine.name=Tennessine Powder +item.powder_thermite.name=Thermite +item.powder_thorium.name=Thorium Powder +item.powder_titanium.name=Titanium Powder +item.powder_tungsten.name=Tungsten Powder +item.powder_unobtainium.name=Unobtainium Powder +item.powder_uranium.name=Uranium Powder +item.powder_verticium.name=Verticium Powder +item.powder_weidanium.name=Weidanium Powder +item.powder_xe135.name=Xenon-135 Powder +item.powder_xe135_tiny.name=Tiny Pile of Xenon-135 Powder +item.powder_yellowcake.name=Yellowcake +item.powder_zirconium.name=Zirconium Powder +item.power_net_tool.name=Cable Network Analysis Tool +item.primer_357.name=.357 Magnum Primer (x24) +item.primer_44.name=.44 Magnum Primer (x24) +item.primer_50.name=Large Caliber Primer (x12) +item.primer_9.name=Small Caliber Primer (x32) +item.primer_buckshot.name=Buckshot Primer (x12) +item.protection_charm.name=Charm of Protection +item.prototype_kit.name=Prototype Kit +item.pudding.name=Budyń +item.quartz_plutonium.name=Plutonic Quartz +item.radaway.name=RadAway +item.radaway_flush.name=Elite RadAway +item.radaway_strong.name=Strong RadAway +item.radx.name=Rad-X +item.radx.desc=Increases radiation resistance by 0.2 (37%%) for 3 minutes +item.rag.name=Tkanina +item.rag_damp.name=Zmoczona Tkanina +item.rag_piss.name=Piss-Soaked Rag +item.rbmk_fuel_balefire.name=Balefire RBMK Fuel Rod +item.rbmk_fuel_balefire_gold.name=Flashgold RBMK Fuel Rod +item.rbmk_fuel_drx.name=§cDigamma RBMK Fuel Rod§r +item.rbmk_fuel_empty.name=Empty RBMK Fuel Rod +item.rbmk_fuel_flashlead.name=Flashlead RBMK Fuel Rod +item.rbmk_fuel_hea241.name=HEA-241 RBMK Fuel Rod +item.rbmk_fuel_hea242.name=HEA-242 RBMK Fuel Rod +item.rbmk_fuel_heaus.name=HEAus RBMK Fuel Rod +item.rbmk_fuel_hen.name=HEN RBMK Fuel Rod +item.rbmk_fuel_hes.name=HES RBMK Fuel Rod +item.rbmk_fuel_hep.name=HEP-239 RBMK Fuel Rod +item.rbmk_fuel_hep241.name=HEP-241 RBMK Fuel Rod +item.rbmk_fuel_heu233.name=HEU-233 RBMK Fuel Rod +item.rbmk_fuel_heu235.name=HEU-235 RBMK Fuel Rod +item.rbmk_fuel_lea.name=LEA RBMK Fuel Rod +item.rbmk_fuel_leaus.name=LEAus RBMK Fuel Rod +item.rbmk_fuel_lep.name=LEP-239 RBMK Fuel Rod +item.rbmk_fuel_les.name=LES RBMK Fuel Rod +item.rbmk_fuel_mea.name=MEA RBMK Fuel Rod +item.rbmk_fuel_men.name=MEN RBMK Fuel Rod +item.rbmk_fuel_mep.name=MEP-239 RBMK Fuel Rod +item.rbmk_fuel_mes.name=MES RBMK Fuel Rod +item.rbmk_fuel_meu.name=MEU RBMK Fuel Rod +item.rbmk_fuel_mox.name=MOX RBMK Fuel Rod +item.rbmk_fuel_po210be.name=Po210Be RBMK Neutron Source +item.rbmk_fuel_pu238be.name=Pu238Be RBMK Neutron Source +item.rbmk_fuel_ra226be.name=Ra226Be RBMK Neutron Source +item.rbmk_fuel_thmeu.name=ThMEU RBMK Fuel Rod +item.rbmk_fuel_ueu.name=NU RBMK Fuel Rod +item.rbmk_fuel_zfb_am_mix.name=Fuel Grade Americium RBMK ZFB Rod +item.rbmk_fuel_zfb_bismuth.name=Bismuth RBMK ZFB Rod +item.rbmk_fuel_zfb_pu241.name=Pu-241 RBMK ZFB Rod +item.rbmk_lid.name=RBMK Cover Panel +item.rbmk_lid_glass.name=RBMK Glass Cover Panel +item.rbmk_pellet_balefire.name=Balefire Fuel Pellet +item.rbmk_pellet_balefire_gold.name=Flashgold Fuel Pellet +item.rbmk_pellet_drx.name=§cDigamma Fuel Pellet§r +item.rbmk_pellet_flashlead.name=Flashlead Fuel Pellet +item.rbmk_pellet_hea241.name=HEA-241 Fuel Pellet +item.rbmk_pellet_hea242.name=HEA-242 Fuel Pellet +item.rbmk_pellet_heaus.name=HEAus Fuel Pellet +item.rbmk_pellet_hen.name=HEN Fuel Pellet +item.rbmk_pellet_hep239.name=HEP-239 Fuel Pellet +item.rbmk_pellet_hep241.name=HEP-241 Fuel Pellet +item.rbmk_pellet_heu233.name=HEU-233 Fuel Pellet +item.rbmk_pellet_heu235.name=HEU-235 Fuel Pellet +item.rbmk_pellet_hes.name=HES Fuel Pellet +item.rbmk_pellet_lea.name=LEA Fuel Pellet +item.rbmk_pellet_leaus.name=LEAus Fuel Pellet +item.rbmk_pellet_lep.name=LEP Fuel Pellet +item.rbmk_pellet_les.name=LES Fuel Pellet +item.rbmk_pellet_mea.name=MEA Fuel Pellet +item.rbmk_pellet_men.name=MEN Fuel Pellet +item.rbmk_pellet_mep.name=MEP Fuel Pellet +item.rbmk_pellet_mes.name=MES Fuel Pellet +item.rbmk_pellet_meu.name=MEU Fuel Pellet +item.rbmk_pellet_mox.name=MOX Fuel Pellet +item.rbmk_pellet_po210be.name=Po210Be Neutron Source Pellet +item.rbmk_pellet_pu238be.name=Pu238Be Neutron Source Pellet +item.rbmk_pellet_ra226be.name=Ra226Be Neutron Source Pellet +item.rbmk_pellet_thmeu.name=ThMEU Fuel Pellet +item.rbmk_pellet_ueu.name=NU Fuel Pellet +item.rbmk_pellet_zfb_am_mix.name=Fuel Grade Americium ZFB Pellet +item.rbmk_pellet_zfb_bismuth.name=Bismuth ZFB Pellet +item.rbmk_pellet_zfb_pu241.name=Pu-241 ZFB Pellet +item.rbmk_tool.name=RBMK Console Linking Device +item.rbmk_tool.desc=Sneak and right-click RBMK to save the position,$sneak and right-click console to link! +item.rbmk_tool.linked=Position set! +item.rbmk_tool.set=RBMK linked! +item.reacher.name=Tungsten Reacher +item.reactor_core.name=Breeding Reactor Core +item.reactor_sensor.name=Reactor Remote Sensor +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=Redcoil Capacitor +item.redstone_depleted.name=Desaturated Redstone Dust +item.redstone_sword.name=Redstone Sword +item.reer_graar.name=The Reer Graar +item.remote.name=Broken Remote +item.ring_pull.name=Ring Pull +item.ring_starmetal.name=§9Starmetal Ring§r +item.robes_boots.name=Field Boots +item.robes_helmet.name=Casual Hoodie +item.robes_legs.name=Casual Pants +item.robes_plate.name=Casual Sweater +item.rocket_fuel.name=Solid Fuel (Rocket Propellant) +item.rod_empty.name=Empty Rod +item.rod.lithium.name=Lithium Rod +item.rod.tritium.name=Tritium Rod +item.rod.co.name=Cobalt Rod +item.rod.co60.name=Cobalt-60 Rod +item.rod.ra226.name=Radium-226 Rod +item.rod.ac227.name=Actinium-227 Rod +item.rod.th232.name=Thorium-232 Rod +item.rod.thf.name=Thorium Fuel Rod +item.rod.u235.name=Uranium-235 Rod +item.rod.np237.name=Neptunium-237 Rod +item.rod.u238.name=Uranium-238 Rod +item.rod.pu238.name=Plutonium-238 Rod +item.rod.pu239.name=Plutonium-239 Rod +item.rod.rgp.name=Reactor-Grade Plutonium Rod +item.rod.waste.name=Nuclear Waste Rod +item.rod.lead.name=Lead Rod +item.rod.uranium.name=Uranium Rod +item.rod_dual_empty.name=Empty Dual Rod +item.rod_dual.lithium.name=Lithium Dual Rod +item.rod_dual.tritium.name=Tritium Dual Rod +item.rod_dual.co.name=Cobalt Dual Rod +item.rod_dual.co60.name=Cobalt-60 Dual Rod +item.rod_dual.ra226.name=Radium-226 Dual Rod +item.rod_dual.ac227.name=Actinium-227 Dual Rod +item.rod_dual.th232.name=Thorium-232 Dual Rod +item.rod_dual.thf.name=Thorium Fuel Dual Rod +item.rod_dual.u235.name=Uranium-235 Dual Rod +item.rod_dual.np237.name=Neptunium-237 Dual Rod +item.rod_dual.u238.name=Uranium-238 Dual Rod +item.rod_dual.pu238.name=Plutonium-238 Dual Rod +item.rod_dual.pu239.name=Plutonium-239 Dual Rod +item.rod_dual.rgp.name=Reactor-Grade Plutonium Dual Rod +item.rod_dual.waste.name=Nuclear Waste Dual Rod +item.rod_dual.lead.name=Lead Dual Rod +item.rod_dual.uranium.name=Uranium Dual Rod +item.rod_quad_empty.name=Empty Quad Rod +item.rod_quad.lithium.name=Lithium Quad Rod +item.rod_quad.tritium.name=Tritium Quad Rod +item.rod_quad.co.name=Cobalt Quad Rod +item.rod_quad.co60.name=Cobalt-60 Quad Rod +item.rod_quad.ra226.name=Radium-226 Quad Rod +item.rod_quad.ac227.name=Actinium-227 Quad Rod +item.rod_quad.th232.name=Thorium-232 Quad Rod +item.rod_quad.thf.name=Thorium Fuel Quad Rod +item.rod_quad.u235.name=Uranium-235 Quad Rod +item.rod_quad.np237.name=Neptunium-237 Quad Rod +item.rod_quad.u238.name=Uranium-238 Quad Rod +item.rod_quad.pu238.name=Plutonium-238 Quad Rod +item.rod_quad.pu239.name=Plutonium-239 Quad Rod +item.rod_quad.rgp.name=Reactor-Grade Plutonium Quad Rod +item.rod_quad.waste.name=Nuclear Waste Quad Rod +item.rod_quad.lead.name=Lead Quad Rod +item.rod_quad.uranium.name=Uranium Quad Rod +item.rod_australium.name=Australium Rod +item.rod_balefire.name=Balefire Rod +item.rod_balefire_blazing.name=Blazing Balefire Rod +item.rod_coolant.name=Coolant Cell +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=Dual Coolant Cell +item.rod_dual_lead.name=Lead Dual Rod +item.rod_dual_lithium.name=Dual Lithium Rod +item.rod_dual_mox_fuel.name=MOX Dual Fuel Rod +item.rod_dual_mox_fuel_depleted.name=Depleted MOX Dual Fuel Rod +item.rod_dual_neptunium.name=Neptunium Dual Rod +item.rod_dual_plutonium.name=Plutonium Dual Rod +item.rod_dual_plutonium_fuel.name=Plutonium Dual Fuel Rod +item.rod_dual_plutonium_fuel_depleted.name=Depleted Plutonium Dual Fuel Rod +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=Schrabidium Dual Fuel Rod +item.rod_dual_schrabidium_fuel_depleted.name=Depleted Schrabidium Dual Fuel Rod +item.rod_dual_solinium.name=Schrabidium-327 Dual Rod +item.rod_dual_th232.name=Thorium-232 Dual Rod +item.rod_dual_thorium_fuel.name=Thorium Dual Fuel Rod +item.rod_dual_thorium_fuel_depleted.name=Depleted Thorium Dual Fuel Rod +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=Uranium Dual Fuel Rod +item.rod_dual_uranium_fuel_depleted.name=Depleted Uranium Dual Fuel Rod +item.rod_dual_waste.name=Nuclear Waste Dual Rod +item.rod_dual_water.name=Dual Water Cell +item.rod_euphemium.name=Euphemium Rod +item.rod_lead.name=Lead Rod +item.rod_lithium.name=Lithium Rod +item.rod_mox_fuel.name=MOX Fuel Rod +item.rod_mox_fuel_depleted.name=Depleted MOX Fuel Rod +item.rod_neptunium.name=Neptunium Rod +item.rod_of_discord.name=Rod of Discord +item.rod_plutonium.name=Plutonium Rod +item.rod_plutonium_fuel.name=Plutonium Fuel Rod +item.rod_plutonium_fuel_depleted.name=Depleted Plutonium Fuel Rod +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=Quad Coolant Cell +item.rod_quad_euphemium.name=Burned Out Quad Schrabidium Rod +item.rod_quad_lead.name=Lead Quad Rod +item.rod_quad_lithium.name=Quad Lithium Rod +item.rod_quad_mox_fuel.name=MOX Quad Fuel Rod +item.rod_quad_mox_fuel_depleted.name=Depleted MOX Quad Fuel Rod +item.rod_quad_neptunium.name=Neptunium Quad Rod +item.rod_quad_plutonium.name=Plutonium Quad Rod +item.rod_quad_plutonium_fuel.name=Plutonium Quad Fuel Rod +item.rod_quad_plutonium_fuel_depleted.name=Depleted Plutonium Quad Fuel Rod +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=Schrabidium Quad Fuel Rod +item.rod_quad_schrabidium_fuel_depleted.name=Depleted Schrabidium Quad Fuel Rod +item.rod_quad_solinium.name=Schrabidium-327 Quad Rod +item.rod_quad_th232.name=Thorium-232 Quad Rod +item.rod_quad_thorium_fuel.name=Thorium Quad Fuel Rod +item.rod_quad_thorium_fuel_depleted.name=Depleted Thorium Quad Fuel Rod +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=Uranium Quad Fuel Rod +item.rod_quad_uranium_fuel_depleted.name=Depleted Uranium Quad Fuel Rod +item.rod_quad_waste.name=Nuclear Waste Quad Rod +item.rod_quad_water.name=Quad Water Cell +item.rod_reiium.name=Reiium Rod +item.rod_schrabidium.name=Schrabidium-326 Rod +item.rod_schrabidium_fuel.name=Schrabidium Fuel Rod +item.rod_schrabidium_fuel_depleted.name=Depleted Schrabidium Fuel Rod +item.rod_solinium.name=Schrabidium-327 Rod +item.rod_th232.name=Thorium-232 Rod +item.rod_thorium_fuel.name=Thorium Fuel Rod +item.rod_thorium_fuel_depleted.name=Depleted Thorium Fuel Rod +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=Uranium Fuel Rod +item.rod_uranium_fuel_depleted.name=Depleted Uranium Fuel Rod +item.rod_verticium.name=Verticium Rod +item.rod_waste.name=Nuclear Waste Rod +item.rod_water.name=Water Cell +item.rod_weidanium.name=Weidanium Rod +item.rod_zirnox_empty.name=Empty ZIRNOX Rod +item.rod_zirnox_natural_uranium_fuel.name=ZIRNOX Natural Uranium Fuel Rod +item.rod_zirnox_uranium_fuel.name=ZIRNOX Uranium Fuel Rod +item.rod_zirnox_th232.name=ZIRNOX Thorium-232 Rod +item.rod_zirnox_thorium_fuel.name=ZIRNOX Thorium Fuel Rod +item.rod_zirnox_mox_fuel.name=ZIRNOX MOX Fuel Rod +item.rod_zirnox_plutonium_fuel.name=ZIRNOX Plutonium Fuel Rod +item.rod_zirnox_u233_fuel.name=ZIRNOX Uranium-233 Fuel Rod +item.rod_zirnox_u235_fuel.name=ZIRNOX Uranium-235 Fuel Rod +item.rod_zirnox_les_fuel.name=ZIRNOX LES Fuel Rod +item.rod_zirnox_lithium.name=ZIRNOX Lithium Rod +item.rod_zirnox_tritium.name=ZIRNOX Tritium Rod +item.rod_zirnox_zfb_mox.name=ZIRNOX ZFB MOX Fuel Rod +item.rod_zirnox_natural_uranium_fuel_depleted.name=Depleted ZIRNOX Natural Uranium Fuel Rod +item.rod_zirnox_uranium_fuel_depleted.name= Depleted ZIRNOX Uranium Fuel Rod +item.rod_zirnox_thorium_fuel_depleted.name= Depleted ZIRNOX Thorium Fuel Rod +item.rod_zirnox_mox_fuel_depleted.name=Depleted ZIRNOX MOX Fuel Rod +item.rod_zirnox_plutonium_fuel_depleted.name=Depleted ZIRNOX Plutonium Fuel Rod +item.rod_zirnox_u233_fuel_depleted.name=Depleted ZIRNOX Uranium-233 Fuel Rod +item.rod_zirnox_u235_fuel_depleted.name=Depleted ZIRNOX Uranium-235 Fuel Rod +item.rod_zirnox_les_fuel_depleted.name=Depleted ZIRNOX LES Fuel Rod +item.rod_zirnox_zfb_mox_depleted.name=Depleted ZIRNOX ZFB MOX Fuel Rod +item.rotor_steel.name=Large Steel Rotor +item.rpa_boots.name=Remnants Power Armor Boots +item.rpa_helmet.name=Remnants Power Armor Helmet +item.rpa_legs.name=Remnants Power Armor Leggings +item.rpa_plate.name=Remnants Power Armor Chestplate +item.rtg_unit.name=Jednostka Radiotermiczna +item.rubber_gloves.name=Thick Rubber Gloves +item.rune_blank.name=Blank Catalyst Matrix +item.rune_dagaz.name=Balanced Catalyst Matrix +item.rune_hagalaz.name=Rough Catalyst Matrix +item.rune_isa.name=Cool Catalyst Matrix +item.rune_jera.name=Multiplicative Catalyst Matrix +item.rune_thurisaz.name=Additive Catalyst Matrix +item.safety_fuse.name=Safety Fuse +item.sat_base.name=Satellite Base +item.sat_chip.name=Satellite ID-Chip +item.sat_coord.name=Satellite Designator +item.sat_designator.name=Satellite Laser Designator +item.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion +item.sat_gerald.name=Gerald The Construction Android +item.sat_head_laser.name=Death Ray +item.sat_head_mapper.name=High-Gain Optical Camera +item.sat_head_radar.name=Radar Dish +item.sat_head_resonator.name=Xenium Resonator +item.sat_head_scanner.name=M700 Survey Scanner +item.sat_interface.name=Satellite Control Interface +item.sat_laser.name=Orbital Death Ray +item.sat_lunar_miner.name=Lunar Mining Ship +item.sat_mapper.name=Surface Mapping Satellite +item.sat_miner.name=Asteroid Mining Ship +item.sat_radar.name=Radar Survey Satellite +item.sat_resonator.name=Xenium Resonator Satellite +item.sat_scanner.name=Satellite with Depth-Resource Scanning Module +item.sawblade.name=Sawblade +item.schnitzel_vegan.name=Vegan Schnitzel +item.schrabidium_axe.name=Schrabidium Axe +item.schrabidium_boots.name=Schrabidium Boots +item.schrabidium_hammer.name=Schrabidium Hammer +item.schrabidium_helmet.name=Schrabidium Helmet +item.schrabidium_hoe.name=Schrabidium Hoe +item.schrabidium_legs.name=Schrabidium Leggings +item.schrabidium_pickaxe.name=Schrabidium Pickaxe +item.schrabidium_plate.name=Schrabidium Chestplate +item.schrabidium_shovel.name=Schrabidium Shovel +item.schrabidium_sword.name=Schrabidium Sword +item.scrap.name=Scrap +item.scrap_nuclear.name=Radioactive Scraps +item.scrap_oil.name=Oily Scraps +item.scrap_plastic.name=Plastic Scraps +item.scraps.name=Foundry Scraps +item.screwdriver.name=Screwdriver +item.screwdriver.desc=Could be used instead of a fuse... +item.screwdriver_desh.name=Desh Screwdriver +item.scrumpy.name=Bottle of Scrumpy +item.security_boots.name=Security Boots +item.security_helmet.name=Security Helmet +item.security_legs.name=Security Leggings +item.security_plate.name=Security Chestplate +item.seg_10.name=Size 10 Connector +item.seg_15.name=Size 15 Connector +item.seg_20.name=Size 20 Connector +item.serum.name=Serum +item.servo_set.name=Servo Set +item.servo_set_desh.name=Desh Servo Set +item.shackles.name=Shackles +item.shimmer_axe.name=Shimmer Axe +item.shimmer_axe_head.name=Heavy Axe Head +item.shimmer_handle.name=Reinforced Polymer Handle +item.shimmer_head.name=Heavy Hammer Head +item.shimmer_sledge.name=Shimmer Sledge +item.singularity.name=Singularity +item.singularity_counter_resonant.name=Contained Counter-Resonant Singularity +item.singularity_micro.name=Micro Singularity +item.singularity_spark.name=Spark Singularity +item.singularity_super_heated.name=Superheated Resonating Singularity +item.siox.name=SiOX Cancer Medication +item.siox.desc=Reverses mesothelioma with the power of Asbestos! +item.siren_track.name=Siren Track +item.sliding_blast_door_skin.0.name=Sliding Blast Door Skin: Default +item.sliding_blast_door_skin.1.name=Sliding Blast Door Skin: Variant 1 +item.sliding_blast_door_skin.2.name=Sliding Blast Door Skin: Variant 2 +item.smashing_hammer.name=Smashing Hammer +item.solid_fuel.name=Solid Fuel +item.solid_fuel_bf.name=Solid Fuel (Balefire) +item.solid_fuel_presto.name=Presto Log +item.solid_fuel_presto_bf.name=Presto Log (Balefire) +item.solid_fuel_presto_triplet.name=Boosted Presto Logs +item.solid_fuel_presto_triplet_bf.name=Boosted Presto Logs (Balefire) +item.solinium_core.name=Semi-Stable Solinium Core +item.solinium_igniter.name=SOL Pulse Igniter +item.solinium_kit.name=Solinium Kit +item.solinium_propellant.name=SOL Compression Charge +item.sopsign.name=Sop Sign Battle Axe +item.spawn_duck.name=Golden Egg +item.spawn_ufo.name=Martian Invasion Ship +item.spawn_worm.name=Balls-O-Tron Prime +item.sphere_steel.name=Steel Sphere +item.spider_milk.name=Bottle of Spider Milk +item.spongebob_macaroni.name=Spongebob Macaroni +item.stamp_357.name=.357 Magnum Stamp +item.stamp_44.name=.44 Magnum Stamp +item.stamp_50.name=Large Caliber Stamp +item.stamp_9.name=Small Caliber Stamp +item.stamp_desh_circuit.name=Circuit Stamp (Desh) +item.stamp_desh_flat.name=Flat Stamp (Desh) +item.stamp_desh_plate.name=Plate Stamp (Desh) +item.stamp_desh_wire.name=Wire Stamp (Desh) +item.stamp_desh_357.name=.357 Magnum Stamp (Desh) +item.stamp_desh_44.name=.44 Magnum Stamp (Desh) +item.stamp_desh_50.name=Large Caliber Stamp (Desh) +item.stamp_desh_9.name=Small Caliber Stamp (Desh) +item.stamp_iron_circuit.name=Circuit Stamp (Iron) +item.stamp_iron_flat.name=Flat Stamp (Iron) +item.stamp_iron_plate.name=Plate Stamp (Iron) +item.stamp_iron_wire.name=Wire Stamp (Iron) +item.stamp_obsidian_circuit.name=Circuit Stamp (Obsidian) +item.stamp_obsidian_flat.name=Flat Stamp (Obsidian) +item.stamp_obsidian_plate.name=Plate Stamp (Obsidian) +item.stamp_obsidian_wire.name=Wire Stamp (Obsidian) +item.stamp_steel_circuit.name=Circuit Stamp (Steel) +item.stamp_steel_flat.name=Flat Stamp (Steel) +item.stamp_steel_plate.name=Plate Stamp (Steel) +item.stamp_steel_wire.name=Wire Stamp (Steel) +item.stamp_stone_circuit.name=Circuit Stamp (Stone) +item.stamp_stone_flat.name=Flat Stamp (Stone) +item.stamp_stone_plate.name=Plate Stamp (Stone) +item.stamp_stone_wire.name=Wire Stamp (Stone) +item.stamp_titanium_circuit.name=Circuit Stamp (Titanium) +item.stamp_titanium_flat.name=Flat Stamp (Titanium) +item.stamp_titanium_plate.name=Plate Stamp (Titanium) +item.stamp_titanium_wire.name=Wire Stamp (Titanium) +item.starmetal_axe.name=Starmetal Axe +item.starmetal_boots.name=Starmetal Boots +item.starmetal_helmet.name=Starmetal Helmet +item.starmetal_hoe.name=Starmetal Hoe +item.starmetal_legs.name=Starmetal Leggings +item.starmetal_pickaxe.name=Starmetal Pickaxe +item.starmetal_plate.name=Starmetal Chestplate +item.starmetal_shovel.name=Starmetal Shovel +item.starmetal_sword.name=Starmetal Sword +item.static_sandwich.name=Sandwich Garnished with TV Static +item.stealth_boy.name=Stealth Device +item.steamsuit_boots.name=Steam Suit Boots +item.steamsuit_helmet.name=Steam Suit Respirator Helmet +item.steamsuit_legs.name=Steam Suit Leggings +item.steamsuit_plate.name=Steam Suit Chestplate +item.steel_axe.name=Steel Axe +item.steel_boots.name=Steel Boots +item.steel_helmet.name=Steel Helmet +item.steel_hoe.name=Steel Hoe +item.steel_legs.name=Steel Leggings +item.steel_pickaxe.name=Steel Pickaxe +item.steel_plate.name=Steel Chestplate +item.steel_shovel.name=Steel Shovel +item.steel_sword.name=Steel Sword +item.stick_c4.name=Stick of C-4 +item.stick_dynamite.name=Stick of Dynamite +item.stick_dynamite_fishing.name=Stick of Fishing Dynamite +item.stick_semtex.name=Stick of Semtex +item.stick_tnt.name=Stick of TNT +item.stopsign.name=Stop Sign Battle Axe +item.sulfur.name=Sulfur +item.survey_scanner.name=Survey Scanner +item.syringe_antidote.name=Antidote +item.syringe_awesome.name=AWESOME +item.syringe_empty.name=Empty Syringe +item.syringe_metal_empty.name=Metal Syringe +item.syringe_metal_medx.name=Med-X +item.syringe_metal_psycho.name=Psycho +item.syringe_metal_stimpak.name=Stimpak +item.syringe_metal_super.name=Super Stimpak +item.syringe_mkunicorn.name=MKUNICORN +item.syringe_poison.name=Poisonous Injection +item.syringe_taint.name=Watery Taint Injection +item.t45_boots.name=T45 Power Armor Boots +item.t45_helmet.name=T45 Power Armor Helmet +item.t45_kit.name=T45 Power Armor Kit +item.t45_legs.name=T45 Power Armor Leggings +item.t45_plate.name=T45 Power Armor Chestplate +item.tank_steel.name=Steel Tank +item.tank_waste_0.name=Mud Container +item.tank_waste_1.name=Mud Container +item.tank_waste_2.name=Mud Container +item.tank_waste_3.name=Mud Container +item.tank_waste_4.name=Mud Container +item.tank_waste_5.name=Mud Container +item.tank_waste_6.name=Mud Container +item.tank_waste_7.name=Mud Container +item.tank_waste_8.name=Mud Container +item.telepad.name=Telepad +item.tem_flakes.name=Tem Flakes +item.template_folder.name=Machine Template Folder +item.template_folder.desc=Machine Templates: Paper + Dye$Fluid IDs: Iron Plate + Dye$Press Stamps: Flat Stamp$Siren Tracks: Insulator + Steel Plate +item.test_nuke_igniter.name=Igniter +item.test_nuke_propellant.name=Propellant +item.test_nuke_tier1_bullet.name=U235 Projectile (Tier 1) +item.test_nuke_tier1_shielding.name=Neutron Reflector (Tier 1) +item.test_nuke_tier1_target.name=Subcritical U235 Target (Tier 1) +item.test_nuke_tier2_bullet.name=MOX Projectile (Tier 2) +item.test_nuke_tier2_shielding.name=Neutron Reflector (Tier 2) +item.test_nuke_tier2_target.name=Subcritical MOX Target (Tier 2) +item.thermo_element.name=Thermoelectric Element +item.thermo_unit_empty.name=Thermic Distribution Unit +item.thermo_unit_endo.name=Coldness Distribution Unit +item.thermo_unit_exo.name=Heat Distribution Unit +item.thruster_large.name=Large Thruster +item.thruster_medium.name=Medium Thruster +item.thruster_nuclear.name=LV-N Nuclear Rocket Engine +item.thruster_small.name=Small Thruster +item.titanium_axe.name=Titanium Axe +item.titanium_boots.name=Titanium Boots +item.titanium_filter.name=Titanium Filter +item.titanium_helmet.name=Titanium Helmet +item.titanium_hoe.name=Titanium Hoe +item.titanium_legs.name=Titanium Leggings +item.titanium_pickaxe.name=Titanium Pickaxe +item.titanium_plate.name=Titanium Chestplate +item.titanium_shovel.name=Titanium Shovel +item.titanium_sword.name=Titanium Sword +item.toothpicks.name=Toothpicks +item.train.cargo_tram.name=Electric Flat Bed Tram +item.trinitite.name=Trinitite +item.tritium_deuterium_cake.name=Tritium-Deuterium-Cake +item.tritium_deuterium_cake.desc=Not actual cake, but great$universal fusion fuel! +item.tsar_core.name=Tsar Bomba Core +item.tsar_kit.name=Tsar Bomba Kit +item.turbine_titanium.name=Titanium Steam Turbine +item.turbine_tungsten.name=Reinforced Turbofan Blades +item.turret_biometry.name=Turret Telemetry Card +item.turret_cheapo_ammo.name=6x24 Cheapo Turret Ammunition +item.turret_chip.name=Turret AI-Chip +item.turret_control.name=Turret Controller +item.turret_cwis_ammo.name=CIWS 20mm Ammo Drum +item.turret_flamer_ammo.name=Flamer Turret Fuel Tanks +item.turret_heavy_ammo.name=Heavy MG Turret Ammunition +item.turret_light_ammo.name=Light MG Turret Ammo Box +item.turret_rocket_ammo.name=Rocket Turret 2x4 Ammunition +item.turret_spitfire_ammo.name=AA-Shell +item.turret_tau_ammo.name=Tau Turret Uranium Ammo +item.twinkie.name=Twinkie +item.ullapool_caber.name=Ullapool Caber +item.undefined.name=Undefined +item.upgrade_5g.name=5G Radiation Emitter Upgrade +item.upgrade_afterburn_1.name=Afterburner Upgrade Mk.I +item.upgrade_afterburn_2.name=Afterburner Upgrade Mk.II +item.upgrade_afterburn_3.name=Afterburner Upgrade Mk.III +item.upgrade_centrifuge.name=Centrifuge Upgrade +item.upgrade_crystallizer.name=Crystallizer Upgrade +item.upgrade_effect_1.name=Effectiveness Upgrade Mk.I +item.upgrade_effect_2.name=Effectiveness Upgrade Mk.II +item.upgrade_effect_3.name=Effectiveness Upgrade Mk.III +item.upgrade_ejector_1.name=Ejection Speed Upgrade Mk.I +item.upgrade_ejector_2.name=Ejection Speed Upgrade Mk.II +item.upgrade_ejector_3.name=Ejection Speed Upgrade Mk.III +item.upgrade_fortune_1.name=Fortune Upgrade Mk.I +item.upgrade_fortune_2.name=Fortune Upgrade Mk.II +item.upgrade_fortune_3.name=Fortune Upgrade Mk.III +item.upgrade_gc_speed.name=Gas Centrifuge Overclocking Upgrade +item.upgrade_health.name=Emitter Health Upgrade +item.upgrade_nullifier.name=Scrap Destroyer Upgrade +item.upgrade_overdrive_1.name=Overdrive Upgrade Mk.I +item.upgrade_overdrive_2.name=Overdrive Upgrade Mk.II +item.upgrade_overdrive_3.name=Overdrive Upgrade Mk.III +item.upgrade_power_1.name=Power Saving Upgrade Mk.I +item.upgrade_power_2.name=Power Saving Upgrade Mk.II +item.upgrade_power_3.name=Power Saving Upgrade Mk.III +item.upgrade_radius.name=Emitter Radius Upgrade +item.upgrade_screm.name=Screaming Scientist Upgrade +item.upgrade_shredder.name=Shredder Upgrade +item.upgrade_smelter.name=Smelter Upgrade +item.upgrade_speed_1.name=Speed Upgrade Mk.I +item.upgrade_speed_2.name=Speed Upgrade Mk.II +item.upgrade_speed_3.name=Speed Upgrade Mk.III +item.upgrade_stack_1.name=Stack Ejection Upgrade Mk.I +item.upgrade_stack_2.name=Stack Ejection Upgrade Mk.II +item.upgrade_stack_3.name=Stack Ejection Upgrade Mk.III +item.upgrade_template.name=Machine Upgrade Template +item.v1.name=V1 +item.volcanic_pickaxe.name=Stopiony Kilof +item.wand_d.name=Debug Wand +item.wand_k.name=Construction Wand +item.wand_s.name=Structure Wand +item.warhead_buster_large.name=Large Bunker Buster Warhead +item.warhead_buster_medium.name=Medium Bunker Buster Warhead +item.warhead_buster_small.name=Small Bunker Buster Warhead +item.warhead_cluster_large.name=Large Cluster Warhead +item.warhead_cluster_medium.name=Medium Cluster Warhead +item.warhead_cluster_small.name=Small Cluster Warhead +item.warhead_generic_large.name=Large Warhead +item.warhead_generic_medium.name=Medium Warhead +item.warhead_generic_small.name=Small Warhead +item.warhead_incendiary_large.name=Large Incendiary Warhead +item.warhead_incendiary_medium.name=Medium Incendiary Warhead +item.warhead_incendiary_small.name=Small Incendiary Warhead +item.warhead_mirv.name=Głowica Termojądrowa +item.warhead_mirvlet.name=MIRV +item.warhead_nuclear.name=Nuclear Warhead +item.warhead_thermo_endo.name=Endothermic Warhead +item.warhead_thermo_exo.name=Exothermic Warhead +item.warhead_volcano.name=Tectonic Warhead +item.waste_mox.name=Depleted MOX Fuel +item.waste_natural_uranium.name=Depleted Natural Uranium Fuel +item.waste_plate_mox.name=Depleted MOX Plate Fuel +item.waste_plate_pu238be.name=Depleted Pu238Be Plate Fuel +item.waste_plate_pu239.name=Depleted HEP-239 Plate Fuel +item.waste_plate_ra226be.name=Depleted Ra226Be Plate Fuel +item.waste_plate_sa326.name=Depleted HES-326 Plate Fuel +item.waste_plate_u233.name=Depleted HEU-233 Plate Fuel +item.waste_plate_u235.name=Depleted HEU-235 Plate Fuel +item.waste_plutonium.name=Depleted Plutonium Fuel +item.waste_schrabidium.name=Depleted Schrabidium Fuel +item.waste_thorium.name=Depleted Thorium Fuel +item.waste_u235.name=Depleted Uranium-235 Fuel +item.waste_u233.name=Depleted Uranium-233 Fuel +item.waste_uranium.name=Depleted Uranium Fuel +item.waste_zfb_mox.name=Depleted ZFB MOX Fuel +item.watch.name=Broken Pocket Watch +item.watch.desc=A small blue pocket watch.$It's glass has a few cracks in it,$and some shards are missing.$It stopped ticking at 2:34. +item.watz_pellet.boron.name=Boron Absorber Pellet +item.watz_pellet.du.name=Depleted Uranium Absorber Pellet +item.watz_pellet.hes.name=HES Watz Pellet +item.watz_pellet.lead.name=Lead Absorber Pellet +item.watz_pellet.les.name=LES Watz Pellet +item.watz_pellet.mes.name=MES Watz Pellet +item.watz_pellet.mep.name=MEP Watz Pellet +item.watz_pellet.meu.name=MEU Watz Pellet +item.watz_pellet.nqd.name=Enriched Naquadah Watz Pellet +item.watz_pellet.nqr.name=Naquadria Watz Pellet +item.watz_pellet.hen.name=HEN Watz Pellet +item.watz_pellet.schrabidium.name=Schrabidium Watz Pellet +item.watz_pellet_depleted.boron.name=Boron Absorber Pellet (Depleted) +item.watz_pellet_depleted.du.name=Depleted Uranium Absorber Pellet (Depleted) +item.watz_pellet_depleted.hes.name=HES Watz Pellet (Depleted) +item.watz_pellet_depleted.lead.name=Lead Absorber Pellet (Depleted) +item.watz_pellet_depleted.les.name=LES Watz Pellet (Depleted) +item.watz_pellet_depleted.mes.name=MES Watz Pellet (Depleted) +item.watz_pellet_depleted.mep.name=MEP Watz Pellet (Depleted) +item.watz_pellet_depleted.meu.name=MEU Watz Pellet (Depleted) +item.watz_pellet_depleted.nqd.name=Enriched Naquadah Watz Pellet (Depleted) +item.watz_pellet_depleted.nqr.name=Naquadria Watz Pellet (Depleted) +item.watz_pellet_depleted.hen.name=HEN Watz Pellet (Depleted) +item.watz_pellet_depleted.schrabidium.name=Schrabidium Watz Pellet (Depleted) +item.weapon_bat.name=Richard's Default +item.weapon_bat_nail.name=The Cliché +item.weapon_golf_club.name=Russian Mobster's Club +item.weapon_pipe_lead.name=The Manual Override +item.weapon_pipe_rusty.name=The Attitude Adjuster +item.weapon_saw.name=Doctor Assisted Homicide +item.weaponized_starblaster_cell.name=§cRigged Star Blaster Energy Cell§r +item.wd40.name=VT-40 +item.wild_p.name=Wild Pegasus Dry Whiskey +item.wings_limp.name=Limp Wings +item.wings_murk.name=Murky Wings +item.wire_advanced_alloy.name=Super Conductor +item.wire_aluminium.name=Aluminium Wire +item.wire_copper.name=Copper Wire +item.wire_gold.name=Gold Wire +item.wire_magnetized_tungsten.name=4000K High Temperature Super Conductor +item.wire_red_copper.name=Red Copper Wire +item.wire_schrabidium.name=Schrabidium Wire +item.wire_tungsten.name=Tungsten Wire +item.wiring_red_copper.name=Cable Drum +item.wood_gavel.name=Wooden Gavel +item.wrench.name=Pipe Wrench +item.wrench_archineer.name=Archineer's Wrench +item.wrench_flipped.name=Blade on a Wrench +item.xanax.name=NAXA Anti-Digamma Medication +item.xanax.desc=Removes 500mDRX +item.zirconium_legs.name=Zirconium Pants + +itemGroup.tabBlocks=NTM Ores and Blocks +itemGroup.tabConsumable=NTM Consumables and Gear +itemGroup.tabControl=NTM Machine Items and Fuel +itemGroup.tabMachine=NTM Machines +itemGroup.tabMissile=NTM Missiles and Satellites +itemGroup.tabNuke=NTM Bombs +itemGroup.tabParts=NTM Resources and Parts +itemGroup.tabTemplate=NTM Templates +itemGroup.tabTest=Nuclear Tech Mod Test Tab +itemGroup.tabWeapon=NTM Weapons and Turrets + +potion.hbm_bang=! ! ! +potion.hbm_death=Astolfizacja +potion.hbm_lead=Lead Poisoning +potion.hbm_mutation=Tainted Heart +potion.hbm_phosphorus=Phosphorus Burns +potion.hbm_potionsickness=Potion Sickness +potion.hbm_radaway=Radaway +potion.hbm_radiation=SkaÅŒony +potion.hbm_radx=Rad-X +potion.hbm_stability=Stabilność +potion.hbm_taint=Splamiony +potion.hbm_telekinesis=! ! ! + +radar.detectMissiles=Detect Missiles +radar.detectPlayers=Detect Players +radar.redMode=Redstone Mode$On: Redstone output based on range$Off: Redstone output based on tier +radar.smartMode=Smart Mode$Redstone output ignores ascending missiles + +rbmk.heat=Column temperature: %s +rbmk.boiler.water=Feedwater: %s / %s +rbmk.boiler.steam=Steam: %s / %s +rbmk.boiler.type=Compressor: %s +rbmk.console.assign=Assign selected columns to screen #%s +rbmk.console.none=Off +rbmk.console.col_temp=Monitor average column temperature +rbmk.console.rod_extraction=Monitor average control rod extraction +rbmk.console.fuel_depletion=Monitor average fuel depletion +rbmk.console.fuel_poison=Monitor average xenon poisoning +rbmk.console.fuel_temp=Monitor average fuel temperature +rbmk.control.level=%s +rbmk.control.red=§cRed Group +rbmk.control.yellow=§eYellow Group +rbmk.control.green=§aGreen Group +rbmk.control.blue=§1Blue Group +rbmk.control.purple=§5Purple Group +rbmk.moderated=Moderated +rbmk.rod.depletion=Depletion: %s +rbmk.rod.xenon=Xenon poison: %s +rbmk.rod.coreTemp=Core temperature: %s +rbmk.rod.skinTemp=Skin temperature: %s / %s +rbmk.screen.core=Core: %s +rbmk.screen.depletion=Depl: %s +rbmk.screen.rod=Control: %s +rbmk.screen.temp=Temp: %s +rbmk.screen.xenon=Xenon: %s + +shape.billet=Billet +shape.blade=Blade +shape.blades=Shredder Blades +shape.block=Blok +shape.dust=Dust +shape.dusttiny=Tiny Dust +shape.hull_big=Big Shell +shape.hull_small=Small Shell +shape.ingot=Ingot +shape.nugget=Nugget +shape.quantum=Quantum +shape.quart=Quarter Block +shape.plate=Plate +shape.plateTriple=Cast Plate +shape.stamp=Press Stamp +shape.wire=Drut + +soundCategory.ntmMachines=NTM Machines + +tile.absorber.name=Radiation Absorber +tile.absorber_green.name=Advanced Radiation Absorber +tile.absorber_pink.name=Elite Radiation Absorber +tile.absorber_red.name=Enhanced Radiation Absorber +tile.acid_block.name=Kwas +tile.ams_base.name=AMS Base (Deco) +tile.ams_emitter.name=AMS Emitter (Deco) +tile.ams_limiter.name=AMS Stabilizer (Deco) +tile.ancient_scrap.name=Ancient Scrap Metal +tile.anvil_bismuth.name=Bismuth Anvil +tile.anvil_dnt.name=Dineutronium Anvil +tile.anvil_ferrouranium.name=Ferrouranium Anvil +tile.anvil_iron.name=Iron Anvil +tile.anvil_lead.name=Lead Anvil +tile.anvil_meteorite.name=Meteorite Anvil +tile.anvil_murky.name=Murky Anvil +tile.anvil_osmiridium.name=Osmiridium Anvil +tile.anvil_schrabidate.name=Ferric Schrabidate Anvil +tile.anvil_starmetal.name=Starmetal Anvil +tile.anvil_steel.name=Steel Anvil +tile.ash_digamma.name=Ash +tile.asphalt.name=Asphalt +tile.asphalt_light.name=Glowing Asphalt +tile.barbed_wire.name=Barbed Wire +tile.barbed_wire_acid.name=Caustic Barbed Wire +tile.barbed_wire_fire.name=Flaming Barbed Wire +tile.barbed_wire_poison.name=Poisoned Barbed Wire +tile.barbed_wire_ultradeath.name=Cloud Barbed Wire +tile.barbed_wire_wither.name=Withered Barbed Wire +tile.barrel_antimatter.name=Magnetic Antimatter Container +tile.barrel_corroded.name=Corroded Barrel +tile.barrel_iron.name=Iron Barrel +tile.barrel_plastic.name=Safe Barrel™ +tile.barrel_steel.name=Steel Barrel +tile.barrel_tcalloy.name=Technetium Steel Barrel +tile.barricade.name=Sand Bags +tile.basalt.name=Bazalt +tile.basalt_asbestos.name=Asbestos-Rich Basalt +tile.basalt_brick.name=Basalt Bricks +tile.basalt_fluorite.name=Fluorite-Rich Basalt +tile.basalt_gem.name=Gem-Rich Basalt +tile.basalt_polished.name=Polished Basalt +tile.basalt_smooth.name=Smooth Basalt +tile.basalt_sulfur.name=Sulfur-Rich Basalt +tile.basalt_tiles.name=Basalt Tiles +tile.blast_door.name=Sliding Blast Door +tile.block_actinium.name=Block of Actinium +tile.block_advanced_alloy.name=Block of Advanced Alloy +tile.block_aluminium.name=Block of Aluminium +tile.block_asbestos.name=Block of Asbestos +tile.block_australium.name=Block of Australium +tile.block_bakelite.name=Block of Bakelite +tile.block_beryllium.name=Block of Beryllium +tile.block_bismuth.name=Block of Bismuth +tile.block_boron.name=Block of Boron +tile.block_c4.name=Block of C-4 +tile.block_cadmium.name=Block of Cadmium +tile.block_cap_fritz.name=Block of Fritz Cola Bottle Caps +tile.block_cap_korl.name=Block of Korl Bottle Caps +tile.block_cap_nuka.name=Block of Nuka Cola Bottle Caps +tile.block_cap_quantum.name=Block of Nuka Cola Quantum Bottle Caps +tile.block_cap_rad.name=Block of S~Cola RAD Bottle Caps +tile.block_cap_sparkle.name=Block of S~Cola Bottle Caps +tile.block_cap_star.name=Block of Sunset Sarsaparilla Star Caps +tile.block_cap_sunset.name=Block of Sunset Sarsaparilla Bottle Caps +tile.block_cdalloy.name=Block of Cadmium Steel +tile.block_cobalt.name=Block of Cobalt +tile.block_coke.coal.name=Block of Coal Coke +tile.block_coke.lignite.name=Block of Lignite Coke +tile.block_coke.petroleum.name=Block of Petroleum Coke +tile.block_coltan.name=Block of Coltan +tile.block_combine_steel.name=Block of CMB Steel +tile.block_copper.name=Block of Copper +tile.block_corium.name=Corium +tile.block_corium_cobble.name=Corebblestone +tile.block_daffergon.name=Block of Daffergon +tile.block_desh.name=Reinforced Block of Desh +tile.block_dineutronium.name=Block of Dineutronium +tile.block_dura_steel.name=Reinforced Block of High-Speed Steel +tile.block_electrical_scrap.name=Block of Electrical Scrap +tile.block_euphemium.name=Block of Euphemium +tile.block_euphemium_cluster.name=Euphemium-Etched Schrabidium Cluster +tile.block_fallout.name=Block of Fallout +tile.block_fiberglass.name=Roll of Fiberglass +tile.block_fluorite.name=Block of Fluorite +tile.block_foam.name=Foam +tile.block_insulator.name=Roll of Insulation +tile.block_graphite.name=Block of Graphite +tile.block_graphite_detector.name=Pile Neutron Detector +tile.block_graphite_drilled.name=Drilled Graphite +tile.block_graphite_fuel.name=Pile Fuel +tile.block_graphite_lithium.name=Pile Lithium Fuel +tile.block_graphite_plutonium.name=Pile Fuel (Bred) +tile.block_graphite_rod.name=Pile Control Rod +tile.block_graphite_source.name=Pile Neutron Source +tile.block_graphite_tritium.name=Pile Lithium Fuel (Bred) +tile.block_lead.name=Block of Lead +tile.block_lanthanium.name=Block of Lanthanium +tile.block_lithium.name=Block of Lithium +tile.block_magnetized_tungsten.name=Block of Magnetized Tungsten +tile.block_meteor.name=Meteorite Block +tile.block_meteor_broken.name=Broken Meteorite Block +tile.block_meteor_cobble.name=Meteorite Cobblestone +tile.block_meteor_molten.name=Hot Meteorite Cobblestone +tile.block_meteor_treasure.name=Meteorite Treasure Block +tile.block_mox_fuel.name=Block of MOX Fuel +tile.block_neptunium.name=Block of Neptunium +tile.block_niter.name=Block of Niter +tile.block_niter_reinforced.name=Reinforced Block of Niter +tile.block_niobium.name=Block of Niobium +tile.block_plutonium.name=Block of Plutonium +tile.block_plutonium_fuel.name=Block of Plutonium Fuel +tile.block_polonium.name=Block of Polonium-210 +tile.block_polymer.name=Block of Polymer +tile.block_pu_mix.name=Block of Reactor Grade Plutonium +tile.block_pu238.name=Block of Plutonium-238 +tile.block_pu239.name=Block of Plutonium-239 +tile.block_pu240.name=Block of Plutonium-240 +tile.block_ra226.name=Block of Radium-226 +tile.block_red_copper.name=Block of Red Copper +tile.block_red_phosphorus.name=Block of Red Phosphorus +tile.block_reiium.name=Block of Reiium +tile.block_rubber.name=Block of Rubber +tile.block_schrabidate.name=Block of Ferric Schrabidate +tile.block_schrabidium.name=Block of Schrabidium +tile.block_schrabidium_cluster.name=Schrabidium Cluster +tile.block_schrabidium_fuel.name=Block of Schrabidium Fuel +tile.block_schraranium.name=Block of Schraranium +tile.block_scrap.name=Block of Scrap +tile.block_semtex.name=Block of Semtex +tile.block_slag.name=Block of Slag +tile.block_smore.name=Block of S'more +tile.block_solinium.name=Block of Solinium +tile.block_starmetal.name=§9Block of Starmetal§r +tile.block_steel.name=Block of Steel +tile.block_sulfur.name=Block of Sulfur +tile.block_tantalium.name=Block of Tantalium +tile.block_tcalloy.name=Block of Technetium Steel +tile.block_thorium.name=Block of Thorium-232 +tile.block_thorium_fuel.name=Block of Thorium Fuel +tile.block_titanium.name=Block of Titanium +tile.block_trinitite.name=Block of Trinitite +tile.block_tritium.name=Block of Tritium Cells +tile.block_tungsten.name=Block of Tungsten +tile.block_u233.name=Block of Uranium-233 +tile.block_u235.name=Block of Uranium-235 +tile.block_u238.name=Block of Uranium-238 +tile.block_unobtainium.name=Block of Unobtainium +tile.block_uranium.name=Block of Uranium +tile.block_uranium_fuel.name=Block of Uranium Fuel +tile.block_verticium.name=Block of Verticium +tile.block_waste.name=Block of Nuclear Waste +tile.block_waste_painted.name=Painted Block of Nuclear Waste +tile.block_waste_vitrified.name=Vitrified Block of Nuclear Waste +tile.block_weidanium.name=Block of Weidanium +tile.block_white_phosphorus.name=Block of White Phosphorus +tile.block_yellowcake.name=Block of Yellowcake +tile.block_zirconium.name=Block of Zirconium +tile.boat.name=Boat +tile.bobblehead.name=Bobblehead +tile.bomb_multi.name=Multi Purpose Bomb +tile.bomber.name=Crashed Bomber +tile.book_guide.name=Hbm's Nuclear Tech Mod Manual [LEGACY] +tile.boxcar.name=Boxcar +tile.brick_asbestos.name=Asbestos Bricks +tile.brick_asbestos_stairs.name=Asbestos Brick Stairs +tile.brick_compound.name=Compound Mesh +tile.brick_compound_stairs.name=Compound Mesh Stairs +tile.brick_concrete.name=Concrete Bricks +tile.brick_concrete_stairs.name=Concrete Brick Stairs +tile.brick_concrete_broken.name=Broken Concrete Bricks +tile.brick_concrete_broken_stairs.name=Broken Concrete Brick Stairs +tile.brick_concrete_cracked.name=Cracked Concrete Bricks +tile.brick_concrete_cracked_stairs.name=Cracked Concrete Brick Stairs +tile.brick_concrete_marked.name=Marked Concrete Bricks +tile.brick_concrete_mossy.name=Mossy Concrete Bricks +tile.brick_concrete_mossy_stairs.name=Mossy Concrete Brick Stairs +tile.brick_ducrete.name=Ducrete Bricks +tile.brick_ducrete_stairs.name=Ducrete Brick Stairs +tile.brick_dungeon.name=Berzelianite Bricks +tile.brick_dungeon_circle.name=Berzelianite Cirlce +tile.brick_dungeon_flat.name=Berzelianite Block +tile.brick_dungeon_tile.name=Berzelianite Tile +tile.brick_fire.name=Firebricks +tile.brick_fire_stairs.name=Firebrick Stairs +tile.brick_jungle.name=Enargite Bricks +tile.brick_jungle_circle.name=Mechanist's Circle +tile.brick_jungle_cracked.name=Cracked Enargite Bricks +tile.brick_jungle_fragile.name=Brittle Enargite Bricks +tile.brick_jungle_glyph.name=Enargite Glyph Bricks +tile.brick_jungle_lava.name=Magmatic Enargite Bricks +tile.brick_jungle_mystic.name=Arcane Enargite Bricks +tile.brick_jungle_ooze.name=Radioactive Enargite Bricks +tile.brick_jungle_trap.name=Trapped Enargite Bricks +tile.brick_light.name=Light Bricks +tile.brick_light_stairs.name=Light Bricks Stairs +tile.brick_obsidian.name=Obsidian Bricks +tile.brick_obsidian_stairs.name=Obsidian Brick Stairs +tile.brick_slab.brick_asbestos.name=Asbestos Brick Slab +tile.brick_slab.brick_compound.name=Compound Mesh Slab +tile.brick_slab.brick_fire.name=Firebrick Slab +tile.brick_slab.brick_light.name=Light Brick Slab +tile.brick_slab.brick_obsidian.name=Obsidian Brick Slab +tile.brick_slab.reinforced_brick.name=Reinforced Stone Slab +tile.brick_slab.reinforced_stone.name=Dense Stone Slab +tile.broadcaster_pc.name=Corrupted Broadcaster +tile.burning_earth.name=Burning Grass +tile.c4.name=C-4 +tile.cable_detector.name=Redstone Power Switch +tile.cable_diode.name=Red Copper Diode +tile.cable_switch.name=Power Switch +tile.capacitor_bus.name=Capacitor Bus +tile.capacitor_bus.desc=Output block for capacitors$Can be chained up in a straight line +tile.capacitor_copper.name=Copper Capacitor +tile.capacitor_gold.name=Golden Capacitor +tile.capacitor_niobium.name=Niobium Capacitor +tile.capacitor_tantalium.name=Tantalium Capacitor +tile.capacitor.desc=Input: Top$Output: Bottom, via Capacitor Bus +tile.charge_c4.name=Demolition Charge +tile.charge_dynamite.name=Time Bomb +tile.charge_miner.name=Timed Mining Charge +tile.charge_semtex.name=Semtex Mining Charge +tile.charger.name=Charging Station +tile.cheater_virus.name=Gelid Euphemium +tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block +tile.chimney_brick.name=Smokestack +tile.chlorine_gas.name=Chlorine Gas +tile.cluster_aluminium.name=Aluminium Ore Cluster +tile.cluster_copper.name=Copper Ore Cluster +tile.cluster_depth_iron.name=Depth Iron Ore Cluster +tile.cluster_depth_titanium.name=Depth Titanium Ore Cluster +tile.cluster_depth_tungsten.name=Depth Tungsten Ore Cluster +tile.cluster_iron.name=Iron Ore Cluster +tile.cluster_titanium.name=Titanium Ore Cluster +tile.cmb_brick.name=CMB Steel Tile +tile.cmb_brick_reinforced.name=Reinforced CMB Bricks +tile.compact_launcher.name=Compact Launch Pad +tile.concrete.name=Concrete Tile +tile.concrete_asbestos.name=Asbestos Concrete +tile.concrete_asbestos_stairs.name=Asbestos Concrete Stairs +tile.concrete_brick_slab.brick_concrete.name=Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_broken.name=Broken Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_cracked.name=Cracked Concrete Brick Slab +tile.concrete_brick_slab.brick_concrete_mossy.name=Mossy Concrete Brick Slab +tile.concrete_brick_slab.brick_ducrete.name=Ducrete Brick Slab +tile.concrete_colored.black.name=Black Concrete +tile.concrete_colored.blue.name=Blue Concrete +tile.concrete_colored.brown.name=Brown Concrete +tile.concrete_colored.cyan.name=Cyan Concrete +tile.concrete_colored.gray.name=Gray Concrete +tile.concrete_colored.green.name=Green Concrete +tile.concrete_colored.lightBlue.name=Light Blue Concrete +tile.concrete_colored.lime.name=Lime Concrete +tile.concrete_colored.magenta.name=Magenta Concrete +tile.concrete_colored.orange.name=Orange Concrete +tile.concrete_colored.pink.name=Pink Concrete +tile.concrete_colored.purple.name=Purple Concrete +tile.concrete_colored.red.name=Red Concrete +tile.concrete_colored.silver.name=Light Gray Concrete +tile.concrete_colored.white.name=White Concrete +tile.concrete_colored.yellow.name=Yellow Concrete +tile.concrete_colored_ext.hazard.name=Builder's Choice Concrete - Hazard Stripe +tile.concrete_colored_ext.indigo.name=Builder's Choice Concrete - Deep Indigo +tile.concrete_colored_ext.machine.name=Builder's Choice Concrete - Industrial Tinge +tile.concrete_colored_ext.machine_stripe.name=Builder's Choice Concrete - Industrial Stripe +tile.concrete_colored_ext.pink.name=Builder's Choice Concrete - Manly Pink +tile.concrete_colored_ext.purple.name=Builder's Choice Concrete - Mysterious Purple +tile.concrete_pillar.name=Rebar Reinforced Concrete Pillar +tile.concrete_slab.concrete.name=Concrete Tile Slab +tile.concrete_slab.concrete_asbestos.name=Asbestos Concrete Slab +tile.concrete_slab.concrete_smooth.name=Concrete Slab +tile.concrete_slab.ducrete.name=Ducrete Tile Slab +tile.concrete_slab.ducrete_smooth.name=Ducrete Slab +tile.concrete_smooth.name=Concrete +tile.concrete_smooth_stairs.name=Concrete Stairs +tile.concrete_stairs.name=Concrete Tile Stairs +tile.concrete_super.name=Über Concrete +tile.concrete_super_broken.name=Moldy Debris +tile.conveyor.name=Conveyor Belt +tile.conveyor_chute.name=Conveyor Chute +tile.conveyor_double.name=Double-Lane Conveyor Belt +tile.conveyor_lift.name=Conveyor Chain Lift +tile.conveyor_triple.name=Triple-Lane Conveyor Belt +tile.corium_block.name=Corium +tile.crane_boxer.name=Conveyor Boxer +tile.crane_extractor.name=Conveyor Ejector +tile.crane_grabber.name=Conveyor Grabber +tile.crane_inserter.name=Conveyor Inserter +tile.crane_router.name=Conveyor Sorter +tile.crane_splitter.name=Conveyor Splitter +tile.crane_unboxer.name=Conveyor Unboxer +tile.crashed_bomb.name=Dud +tile.crate.name=Supply Crate +tile.crate_ammo.name=Starmetal Crate +tile.crate_can.name=Conserve Crate +tile.crate_desh.name=Desh Crate +tile.crate_iron.name=Iron Crate +tile.crate_jungle.name=Enargite Crate +tile.crate_lead.name=Hazmat Crate +tile.crate_metal.name=Machine Crate +tile.crate_red.name=Red Crate +tile.crate_steel.name=Steel Crate +tile.crate_tungsten.name=Tungsten Crate +tile.crate_weapon.name=Weapon Crate +tile.crystal_hardened.name=Hardened Dark Crystal +tile.crystal_pulsar.name=Pulsating Crystal +tile.crystal_virus.name=Dark Crystal +tile.deco_aluminium.name=Aluminium Deco Block +tile.deco_asbestos.name=Asbestos Roof +tile.deco_beryllium.name=Beryllium Deco Block +tile.deco_computer.ibm_300pl.name=IBM Personal Computer 300PL +tile.deco_emitter.name=Deco Light Emitter +tile.part_emitter.name=Deco Particle Emitter +tile.piston_inserter.name=Inserter +tile.deco_lead.name=Lead Deco Block +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 +tile.deco_pipe.name=Steel Pipe +tile.deco_pipe_rusted.name=Rusty Steel Pipe +tile.deco_pipe_green.name=Green Steel Pipe +tile.deco_pipe_green_rusted.name=Rusty Green Steel Pipe +tile.deco_pipe_red.name=Red Steel Pipe +tile.deco_pipe_marked.name=Gas Pipe +tile.deco_pipe_framed.name=Steel Pipe (Framed) +tile.deco_pipe_framed_rusted.name=Rusty Steel Pipe (Framed) +tile.deco_pipe_framed_green.name=Green Steel Pipe (Framed) +tile.deco_pipe_framed_green_rusted.name=Rusty Green Steel Pipe (Framed) +tile.deco_pipe_framed_red.name=Red Steel Pipe (Framed) +tile.deco_pipe_framed_marked.name=Gas Pipe (Framed) +tile.deco_pipe_quad.name=Steel Pipes +tile.deco_pipe_quad_rusted.name=Rusty Steel Pipes +tile.deco_pipe_quad_green.name=Green Steel Pipes +tile.deco_pipe_quad_green_rusted.name=Rusty Green Steel Pipes +tile.deco_pipe_quad_red.name=Red Steel Pipes +tile.deco_pipe_quad_marked.name=Gas Pipes +tile.deco_pipe_rim.name=Steel Pipe (Rimmed) +tile.deco_pipe_rim_rusted.name=Rusty Steel Pipe (Rimmed) +tile.deco_pipe_rim_green.name=Green Steel Pipe (Rimmed) +tile.deco_pipe_rim_green_rusted.name=Rusty Green Steel Pipe (Rimmed) +tile.deco_pipe_rim_red.name=Red Steel Pipe (Rimmed) +tile.deco_pipe_rim_marked.name=Gas Pipe (Rimmed) +tile.deco_steel.name=Steel Deco Block +tile.deco_titanium.name=Titanium Deco Block +tile.deco_tungsten.name=Tungsten Deco Block +tile.decon.name=Player Decontaminator +tile.depth_brick.name=Depth Bricks +tile.depth_dnt.name=DNT-Reinforced Depth Bricks +tile.depth_nether_brick.name=Nether Depth Bricks +tile.depth_nether_tiles.name=Nether Depth Tiles +tile.depth_tiles.name=Depth Tiles +tile.det_charge.name=Explosive Charge +tile.det_cord.name=Det Cord +tile.det_miner.name=Mining Charge +tile.det_nuke.name=Nuclear Charge +tile.dfc_core.name=Dark Fusion Core +tile.dfc_emitter.name=DFC Emitter +tile.dfc_injector.name=DFC Fuel Injector +tile.dfc_receiver.name=DFC Receiver +tile.dfc_stabilizer.name=DFC Stabilizer +tile.dirt_dead.name=Dead Dirt +tile.dirt_oily.name=Oily Dirt +tile.drill_pipe.name=Drill Pipe +tile.door_bunker.name=Bunker Door +tile.door_metal.name=Metal Door +tile.door_office.name=Office Door +tile.ducrete.name=Ducrete Tile +tile.ducrete_stairs.name=Ducrete Tile Stairs +tile.ducrete_smooth.name=Ducrete +tile.ducrete_smooth_stairs.name=Ducrete Stairs +tile.dummy_block.name=Dummy Block +tile.dummy_port.name=Dummy Block (Electricity Port) +tile.dungeon_chain.name=Metal Chain +tile.dynamite.name=Dynamite +tile.emp_bomb.name=EMP Device +tile.factory_advanced_conductor.name=Advanced Factory Electricity Port +tile.factory_advanced_core.name=Advanced Factory Core Component +tile.factory_advanced_furnace.name=Advanced Factory Access Hatch +tile.factory_advanced_hull.name=Factory Block +tile.factory_titanium_conductor.name=Basic Factory Electricity Port +tile.factory_titanium_core.name=Basic Factory Core Component +tile.factory_titanium_furnace.name=Basic Factory Access Hatch +tile.factory_titanium_hull.name=Factory Block +tile.fallout.name=Fallout +tile.fan.name=Fan +tile.fence_metal.name=Chainlink Fence +tile.field_disturber.name=High Energy Field Jammer +tile.filing_cabinet.green.name=Dusty Filing Cabinet +tile.filing_cabinet.steel.name=Steel Filing Cabinet +tile.fire_digamma.name=Lingering Digamma +tile.fire_door.name=Fire Door +tile.fireworks.name=Firework Battery +tile.fireworks.charges=Charges Loaded: %s +tile.fireworks.message=Message: %s +tile.fireworks.color=Color: %s +tile.fissure_bomb.name=Fissure Bomb +tile.flame_war.name=Flame War in a Box +tile.float_bomb.name=Levitation Bomb +tile.fluid_duct.name=Universal Fluid Duct (Deprecated) +tile.fluid_duct_box.name=Universal Fluid Duct (Boxduct) +tile.fluid_duct_exhaust.name=Exhaust Pipe +tile.fluid_duct_gauge.name=Flow Gauge Pipe +tile.fluid_duct_gauge.desc=Pipe that displays how much fluid$moves within the network per tick.$Split networks connected by barrels$or tanks are considered as one shared network. +tile.fluid_duct_neo.name=Universal Fluid Duct +tile.fluid_duct_paintable.name=Paintable Coated Universal Fluid Duct +tile.fluid_duct_solid.name=Coated Universal Fluid Duct (Deprecated) +tile.fluid_switch.name=Redstone Fluid Valve +tile.fluid_valve.name=Fluid Valve +tile.foam_layer.name=Foam layer +tile.foundry_basin.name=Foundry Basin +tile.foundry_channel.name=Foundry Channel +tile.foundry_tank.name=Foundry Storage Basin +tile.foundry_mold.name=Shallow Foundry Basin +tile.foundry_outlet.name=Foundry Outlet +tile.foundry_slagtap.name=Foundry Slag Outlet +tile.fraction_spacer.name=Fractioning Tower Separator +tile.frozen_dirt.name=Frozen Dirt +tile.frozen_grass.name=Frozen Grass +tile.frozen_log.name=Frozen Log +tile.frozen_planks.name=Frozen Planks +tile.furnace_combination.name=Combination Oven +tile.furnace_combination.desc=A large furnace that can produce charcoal and coal coke.$Produces fluid byproducts.$Heat transfer rate: ΔT*0.25 TU/t +tile.furnace_iron.name=Iron Furnace +tile.furnace_iron.desc=Larger and more efficient furnace,$does not waste fuel when idle. +tile.furnace_steel.name=Steel Furnace +tile.furnace_steel.desc=Very large furnace that can provide bonus items$when smelting ores. Requires external heat source.$Heat transfer rate: ΔT*0.05 TU/t$(Δ means difference and T means temperature) +tile.fusion_center.name=Central Magnet Piece +tile.fusion_conductor.name=Superconducting Magnet +tile.fusion_conductor_welded.name=Superconducting Magnet (Welded) +tile.fusion_core.name=Fusion Reactor Control +tile.fusion_hatch.name=Duct Deco Block +tile.fusion_heater.name=Plasma Heater Component +tile.fusion_motor.name=Magnet Motor Piece +tile.fwatz_computer.name=Fusionary Watz Reactor Calculation Matrix +tile.fwatz_conductor.name=4000K Superconducting Magnet +tile.fwatz_cooler.name=Regenerative Coolant Fluid Tank Shell +tile.fwatz_core.name=Fusionary Watz Reactor Control +tile.fwatz_hatch.name=Fusionary Watz Plant Access Hatch +tile.fwatz_plasma.name=Destabilized Antischrabidium Plasma +tile.fwatz_scaffold.name=Fusionary Watz Plant Structural Support +tile.fwatz_tank.name=Regenerative Coolant Fluid Tank +tile.gas_asbestos.name=Airborne Asbestos Particles +tile.gas_coal.name=Airborne Coal Dust +tile.gas_duct.name=Gas Pipe +tile.gas_duct_solid.name=Coated Gas Pipe +tile.gas_explosive.name=Explosive Gas +tile.gas_flammable.name=Flammable Gas +tile.gas_meltdown.name=Meltdown Gas +tile.gas_monoxide.name=Carbon Monoxide +tile.gas_radon.name=Radon Gas +tile.gas_radon_dense.name=Dense Radon Gas +tile.gas_radon_tomb.name=Tomb Gas +tile.geiger.name=Geiger Counter +tile.glass_ash.name=Ash Glass +tile.glass_boron.name=Boron Glass +tile.glass_lead.name=Lead Glass +tile.glass_polonium.name=Polonium Glass +tile.glass_quartz.name=Quartz Glass +tile.glass_trinitite.name=Trinity Glass +tile.glass_uranium.name=Uranium Glass +tile.glyphid_base.name=Glyphid Hive Block +tile.glyphid_spawner.name=Glyphid Hive Spawner +tile.gneiss_brick.name=Schist Brick +tile.gneiss_chiseled.name=Chiseled Schist +tile.gneiss_tile.name=Schist Tile +tile.gravel_diamond.name=Diamond Gravel +tile.gravel_obsidian.name=Crushed Obsidian +tile.hadron_access.name=Particle Accelerator Access Terminal +tile.hadron_analysis.name=Particle Accelerator Analysis Chamber Wall +tile.hadron_analysis_glass.name=Particle Accelerator Analysis Chamber Window +tile.hadron_coil_alloy.name=Dense Superconducting Coil +tile.hadron_coil_chlorophyte.name=Dense Chlorophyte Coil +tile.hadron_coil_gold.name=Dense Gold Coil +tile.hadron_coil_magtung.name=Dense 4000K Superconductor Coil +tile.hadron_coil_mese.name=Dense Mese Coil +tile.hadron_coil_neodymium.name=Dense Neodymium Coil +tile.hadron_coil_schrabidate.name=Dense Schrabidate Coil +tile.hadron_coil_schrabidium.name=Dense Schrabidic Coil +tile.hadron_coil_starmetal.name=Dense Starmetal Coil +tile.hadron_core.name=Particle Accelerator Core Component +tile.hadron_diode.name=Schottky Particle Diode +tile.hadron_plating.name=Particle Accelerator Plating +tile.hadron_plating_black.name=Particle Accelerator Plating (Black) +tile.hadron_plating_blue.name=Particle Accelerator Plating (Blue) +tile.hadron_plating_glass.name=Particle Accelerator Plating (Window) +tile.hadron_plating_striped.name=Particle Accelerator Plating (Cool Hazard Stripes) +tile.hadron_plating_voltz.name=Particle Accelerator Plating (VOLTZ) +tile.hadron_plating_yellow.name=Particle Accelerator Plating (YelloDye) +tile.hadron_power.name=Particle Accelerator Power Plug (1MHE) +tile.hadron_power_10m.name=Particle Accelerator Power Plug (10MHE) +tile.hadron_power_100m.name=Particle Accelerator Power Plug (100MHE) +tile.hadron_power_1g.name=Particle Accelerator Power Plug (1GHE) +tile.hadron_power_10g.name=Particle Accelerator Power Plug (10GHE) +tile.hazmat.name=Hazmat Cloth Block +tile.heater_electric.name=Electric Heater +tile.heater_electric.desc=Uses energy to produce heat.$Accepts heat from the bottom with 85%% efficiency.$Can be configured with a screwdriver. +tile.heater_firebox.name=Firebox +tile.heater_firebox.desc=Burns solid fuel to produce heat. +tile.heater_heatex.name=Heat Exchanging Heater +tile.heater_heatex.desc=Produces heat from hot fluids. +tile.heater_oilburner.name=Fluid Burner +tile.heater_oilburner.desc=Burns fluids to produce heat.$Can be configured with a screwdriver. +tile.heater_oven.name=Heating Oven +tile.heater_oven.desc=Burns solid fuel to produce heat.$Accepts heat from the bottom with 50%% efficiency. +tile.hev_battery.name=Suit Battery +tile.impact_dirt.name=Scorched Dirt +tile.iter.name=Fusion Reactor +tile.ladder_aluminium.name=Aluminium Ladder +tile.ladder_cobalt.name=Cobalt Ladder +tile.ladder_copper.name=Copper Ladder +tile.ladder_gold.name=Golden Ladder +tile.ladder_iron.name=Iron Ladder +tile.ladder_lead.name=Lead Ladder +tile.ladder_steel.name=Steel Ladder +tile.ladder_sturdy.name=Sturdy Wooden Ladder +tile.ladder_titanium.name=Titanium Ladder +tile.ladder_tungsten.name=Tungsten Ladder +tile.lamp_demon.name=Demon Core Lamp +tile.lamp_tritium_blue_off.name=Blue Tritium Lamp +tile.lamp_tritium_blue_on.name=Blue Tritium Lamp +tile.lamp_tritium_green_off.name=Green Tritium Lamp +tile.lamp_tritium_green_on.name=Green Tritium Lamp +tile.launch_pad.name=Missile Launch Pad +tile.launch_table.name=Large Launch Pad +tile.leaves_layer.name=Fallen Leaves +tile.lox_barrel.name=LOX Barrel +tile.machine_amgen.name=Ambience Radiation Generator +tile.machine_arc_furnace_off.name=Arc Furnace +tile.machine_arc_furnace_on.name=Arc Furnace +tile.machine_armor_table.name=Armor Modification Table +tile.machine_assembler.name=Assembly Machine +tile.machine_assemfac.name=Assembly Factory +tile.machine_autocrafter.name=Automatic Crafting Table +tile.machine_autosaw.name=Automatic Buzz Saw +tile.machine_bat9000.name=Big-Ass Tank 9000 +tile.machine_battery.name=Energy Storage Block +tile.machine_battery_potato.name=Potato Battery Block +tile.machine_boiler.name=Boiler +tile.machine_boiler.desc=Large boiler that can boil water or heat up oil.$Requires external heat source.$Heat transfer rate: ΔT*0.01 TU/t +tile.machine_boiler_electric_off.name=Electric Oil Heater +tile.machine_boiler_electric_on.name=Electric Oil Heater +tile.machine_boiler_off.name=Oil Heater +tile.machine_boiler_on.name=Oil Heater +tile.machine_catalytic_cracker.name=Catalytic Cracking Tower +tile.machine_catalytic_reformer.name=Catalytic Reformer +tile.machine_centrifuge.name=Centrifuge +tile.machine_chemfac.name=Chemical Factory +tile.machine_chemplant.name=Chemical Plant +tile.machine_chungus.name=Leviathan Steam Turbine +tile.machine_chungus.desc=Efficiency: 85%% +tile.machine_coal_off.name=Combustion Generator +tile.machine_coal_on.name=Combustion Generator +tile.machine_coker.name=Coker Unit +tile.machine_coker.desc=Cokes oil, creating fluid byproducts.$Requires external heat source.$Heat transfer rate: ΔT*0.025 TU/t +tile.machine_combine_factory.name=CMB Steel Furnace +tile.machine_combustion_engine.name=Industrial Combustion Engine +tile.machine_compressor.name=Compressor +tile.machine_condenser.name=Steam Condenser +tile.machine_controller.name=Reactor Remote Control Block +tile.machine_converter_he_rf.name=HE to RF Converter +tile.machine_converter_rf_he.name=RF to HE Converter +tile.machine_crucible.name=Crucible +tile.machine_crystallizer.name=Ore Acidizer +tile.machine_cyclotron.name=Cyclotron +tile.machine_detector.name=Power Detector +tile.machine_deuterium_extractor.name=Deuterium Extractor +tile.machine_deuterium_tower.name=Deuterium Extraction Tower +tile.machine_diesel.name=Diesel Generator +tile.machine_difurnace_extension.name=Blast Furnace Extension +tile.machine_difurnace_off.name=Blast Furnace +tile.machine_difurnace_on.name=Blast Furnace +tile.machine_difurnace_rtg_off.name=Nuclear Blast Furnace +tile.machine_difurnace_rtg_on.name=Nuclear Blast Furnace +tile.machine_dineutronium_battery.name=Spark Energy Storage Block +tile.machine_drill.name=Automatic Mining Drill +tile.machine_electric_furnace_off.name=Electric Furnace +tile.machine_electric_furnace_on.name=Electric Furnace +tile.machine_epress.name=Electric Press +tile.machine_excavator.name=Large Mining Drill +tile.machine_fel.name=FEL +tile.machine_fensu.name=FEnSU +tile.machine_flare.name=Flare Stack +tile.machine_fluidtank.name=Tank +tile.machine_forcefield.name=Forcefield Emitter +tile.machine_fraction_tower.name=Fractioning Tower +tile.machine_fracking_tower.name=Hydraulic Fracking Tower +tile.machine_gascent.name=Gas Centrifuge +tile.machine_generator.name=Nuclear Reactor (Old) +tile.machine_geo.name=Geothermal Electric Generator +tile.machine_hephaestus.name=Geothermal Heat Exchanger +tile.machine_industrial_generator.name=Industrial Generator +tile.machine_keyforge.name=Locksmith Table +tile.machine_large_turbine.name=Industrial Steam Turbine +tile.machine_large_turbine.desc=Efficiency: 100%% +tile.machine_liquefactor.name=Industrial Liquefaction Machine +tile.machine_liquefactor.desc=Powerful universal machine to turn items into fluids.$Comes with versatile catalytic components, heating elements$and a built-in hydrator for petrochemical liquefaction. +tile.machine_lithium_battery.name=Li-Ion Energy Storage Block +tile.machine_microwave.name=Microwave +tile.machine_mining_laser.name=Mining Laser +tile.machine_minirtg.name=Radio Isotope Cell +tile.machine_missile_assembly.name=Missile Assembly Station +tile.machine_mixer.name=Industrial Mixer +tile.machine_nuke_furnace_off.name=Nuclear Furnace +tile.machine_nuke_furnace_on.name=Nuclear Furnace +tile.machine_orbus.name=Heavy Magnetic Storage Tank +tile.machine_powerrtg.name=PT Isotope Cell +tile.machine_press.name=Burner Press +tile.machine_puf6_tank.name=Plutonium Hexafluoride Tank +tile.machine_pumpjack.name=Pumpjack +tile.machine_radar.name=Radar +tile.machine_radgen.name=Radiation-Powered Engine +tile.machine_radiolysis.name=Radioisotope Thermoelectric Generator and Radiolysis Chamber +tile.machine_reactor.name=Breeding Reactor +tile.machine_reactor_small.name=Research Reactor +tile.machine_refinery.name=Oil Refinery +tile.machine_reix_mainframe.name=Rei-X Mainframe (WIP) +tile.machine_rtg_blue.name=Convection Generator +tile.machine_rtg_cyan.name=Schrabidium Decay Generator (WIP) +tile.machine_rtg_furnace_off.name=RTG Furnace +tile.machine_rtg_furnace_on.name=RTG Furnace +tile.machine_rtg_green.name=Verticium Wealth Generator +tile.machine_rtg_grey.name=RT Generator +tile.machine_rtg_orange.name=Strong RT Generator +tile.machine_rtg_purple.name=Antimatter Annihilation Generator +tile.machine_rtg_red.name=Fulmination Generator +tile.machine_rtg_yellow.name=Australium Superfuel Reactor +tile.machine_satlinker.name=Satellite ID Manager +tile.machine_sawmill.name=Stirling Sawmill +tile.machine_sawmill.desc=Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Min intake: 100 TU/t, Max intake: 300 TU/t +tile.machine_schrabidium_battery.name=Schrabidium Energy Storage Block +tile.machine_schrabidium_transmutator.name=Schrabidium Transmutation Device +tile.machine_selenium.name=Radial Performance Engine +tile.machine_shredder.name=Shredder +tile.machine_silex.name=Laser Isotope Separation Chamber (SILEX) +tile.machine_siren.name=Siren +tile.machine_solar_boiler.name=Solar Tower Boiler +tile.machine_solidifier.name=Industrial Solidification Machine +tile.machine_solidifier.desc=A universal machine fitted with cooling systems and other$versatile tools for turning fluids solid using various$processes such as freezing and petrochemical polymerization. +tile.machine_spp_bottom.name=ZPE Potential Generator (Bottom) +tile.machine_spp_top.name=ZPE Potential Generator (Top) +tile.machine_steam_engine.name=Steam Engine +tile.machine_steam_engine.desc=Efficiency: 85%% +tile.machine_stirling.name=Stirling Engine +tile.machine_stirling.desc=Turns heat into energy. Requires external heat source.$Heat transfer rate: T*0.1 TU/t$Max intake: 300 TU/t$Efficiency: 50%% +tile.machine_stirling_steel.name=Heavy Stirling Engine +tile.machine_stirling_steel.desc=Turns heat into energy. Requires external heat source.$Uses a much heavier gear to support higher temperatures.$Heat transfer rate: T*0.1 TU/t$Max intake: 1500 TU/t$Efficiency: 50%% +tile.machine_storage_drum.name=Nuclear Waste Disposal Drum +tile.machine_telelinker.name=Turret Telemetry Linker +tile.machine_teleporter.name=Teleporter +tile.machine_tower_large.name=Cooling Tower +tile.machine_tower_small.name=Auxiliary Cooling Tower +tile.machine_transformer.name=10k-20Hz Transformer +tile.machine_transformer_20.name=10k-1Hz Transformer +tile.machine_transformer_dnt.name=DNT-20Hz Transformer +tile.machine_transformer_dnt_20.name=DNT-1Hz Transformer +tile.machine_turbine.name=Steam Turbine +tile.machine_turbine.desc=Efficiency: 85%% +tile.machine_turbinegas.name=Combined Cycle Gas Turbine +tile.machine_turbofan.name=Turbofan +tile.machine_uf6_tank.name=Uranium Hexafluoride Tank +tile.machine_vacuum_distill.name=Vacuum Refinery +tile.machine_waste_drum.name=Spent Fuel Pool Drum +tile.machine_well.name=Oil Derrick +tile.machine_zirnox.name=ZIRNOX Nuclear Reactor +tile.marker_structure.name=Multiblock Structure Marker +tile.mass_storage.name=Mass Storage Unit +tile.meteor_battery.name=Starmetal Static Electricity Generator +tile.meteor_brick.name=Meteor Bricks +tile.meteor_brick_chiseled.name=Chiseled Meteor Bricks +tile.meteor_brick_cracked.name=Cracked Meteor Bricks +tile.meteor_brick_mossy.name=Mossy Meteor Bricks +tile.meteor_pillar.name=Meteor Pillar +tile.meteor_polished.name=Polished Meteor Block +tile.meteor_spawner.name=Cyber Crab Assembler +tile.mine_ap.name=Anti-Personell Mine +tile.mine_fat.name=Fat Mine +tile.mine_he.name=Anti-Tank Mine +tile.mine_shrap.name=Shrapnel Mine +tile.moon_turf.name=Moon Turf +tile.mud_block.name=Poisonous Mud +tile.muffler.name=Muffler +tile.mush.name=Glowing Mushroom +tile.ntm_dirt.name=Dirt +tile.nuke_boy.name=Little Boy +tile.nuke_custom.name=Custom Nuke +tile.nuke_fleija.name=F.L.E.I.J.A. +tile.nuke_fstbmb.name=Balefire Bomb +tile.nuke_gadget.name=The Gadget +tile.nuke_man.name=Fat Man +tile.nuke_mike.name=Ivy Mike +tile.nuke_n2.name=N² Mine +tile.nuke_n45.name=N45 Naval Mine +tile.nuke_prototype.name=The Prototype +tile.nuke_solinium.name=The Blue Rinse +tile.nuke_tsar.name=Tsar Bomba +tile.oil_duct.name=Oil Pipe +tile.oil_duct_solid.name=Coated Oil Pipe +tile.oil_pipe.name=Crude Oil Extraction Pipe +tile.ore_alexandrite.name=Alexandrite Ore +tile.ore_aluminium.name=Aluminium Ore +tile.ore_asbestos.name=Asbestos Ore +tile.ore_australium.name=Australian Ore +tile.ore_bedrock.name=Bedrock Ore +tile.ore_bedrock_coltan.name=Bedrock Coltan Ore +tile.ore_bedrock_oil.name=Bedrock Oil Deposit +tile.ore_beryllium.name=Beryllium Ore +tile.ore_cinnebar.name=Cinnabar Ore +tile.ore_coal_oil.name=Oily Coal Ore +tile.ore_coal_oil_burning.name=Burning Oily Coal Ore +tile.ore_cobalt.name=Cobalt Ore +tile.ore_coltan.name=Coltan Ore +tile.ore_copper.name=Copper Ore +tile.ore_daffergon.name=Dellite +tile.ore_depth_borax.name=Depth Borax Ore +tile.ore_depth_cinnebar.name=Depth Cinnabar Ore +tile.ore_depth_nether_neodymium.name=Nether Depth Neodymium Ore +tile.ore_depth_zirconium.name=Depth Zirconium Ore +tile.ore_fluorite.name=Fluorite Ore +tile.ore_gneiss_asbestos.name=Schist Asbestos Ore +tile.ore_gneiss_copper.name=Schist Copper Ore +tile.ore_gneiss_gas.name=Gas Shale +tile.ore_gneiss_gold.name=Schist Gold Ore +tile.ore_gneiss_iron.name=Schist Iron Ore +tile.ore_gneiss_lithium.name=Schist Lithium Ore +tile.ore_gneiss_rare.name=Schist Rare Earth Ore +tile.ore_gneiss_schrabidium.name=Schist Schrabidium Ore +tile.ore_gneiss_uranium.name=Schist Uranium Ore +tile.ore_gneiss_uranium_scorched.name=Scorched Schist Uranium Ore +tile.ore_lead.name=Lead Ore +tile.ore_lignite.name=Lignite Ore +tile.ore_meteor_aluminium.name=Meteor Aluminium Ore +tile.ore_meteor_copper.name=Meteor Copper Ore +tile.ore_meteor_lead.name=Meteor Lead Ore +tile.ore_meteor_lithium.name=Meteor Lithium Ore +tile.ore_meteor_starmetal.name=Starmetal Ore +tile.ore_meteor_sulfur.name=Meteor Sulfur Ore +tile.ore_meteor_thorium.name=Meteor Thorium Ore +tile.ore_meteor_titanium.name=Meteor Titanium Ore +tile.ore_meteor_tungsten.name=Meteor Tungsten Ore +tile.ore_meteor_uranium.name=Meteor Uranium Ore +tile.ore_nether_coal.name=Burning Nether Coal Ore +tile.ore_nether_cobalt.name=Nether Cobalt Ore +tile.ore_nether_fire.name=Nether Phosphorus Ore +tile.ore_nether_plutonium.name=Nether Plutonium Ore +tile.ore_nether_schrabidium.name=Nether Schrabidium Ore +tile.ore_nether_smoldering.name=Smoldering Netherrack +tile.ore_nether_sulfur.name=Nether Sulfur Ore +tile.ore_nether_tungsten.name=Nether Tungsten Ore +tile.ore_nether_uranium.name=Nether Uranium Ore +tile.ore_nether_uranium_scorched.name=Scorched Nether Uranium Ore +tile.ore_niter.name=Niter Ore +tile.ore_oil.name=Oil Deposit +tile.ore_oil_empty.name=Empty Oil Deposit +tile.ore_oil_sand.name=Tar Sand +tile.ore_random.name=%s Ore +tile.ore_rare.name=Rare Earth Ore +tile.ore_reiium.name=Reiite +tile.ore_schrabidium.name=Schrabidium Ore +tile.ore_sulfur.name=Sulfur Ore +tile.ore_tektite_osmiridium.name=Osmiridium-Infused Tektite +tile.ore_thorium.name=Thorium Ore +tile.ore_tikite.name=Trixite +tile.ore_titanium.name=Titanium Ore +tile.ore_tungsten.name=Tungsten Ore +tile.ore_unobtainium.name=Brightblende Ore +tile.ore_uranium.name=Uranium Ore +tile.ore_uranium_scorched.name=Scorched Uranium Ore +tile.ore_verticium.name=Dollar Green Mineral +tile.ore_volcano.name=Geothermal Vent +tile.ore_weidanium.name=Weidite +tile.pink_barrel.name=Kerosene Barrel +tile.pink_log.name=Pink Log +tile.pink_planks.name=Pink Wood Planks +tile.pink_slab.name=Pink Wood Slab +tile.pink_stairs.name=Pink Wood Stairs +tile.plant_dead.name=Dead Plant +tile.plant_flower.cd0.name=Mustard Willow +tile.plant_flower.cd1.name=Mustard Willow +tile.plant_flower.foxglove.name=Foxglove +tile.plant_flower.nightshade.name=Deadly Nightshade +tile.plant_flower.tobacco.name=Tobacco Plant +tile.plant_flower.weed.name=Hemp +tile.plant_reeds.name=Reeds +tile.plant_tall.cd2.name=Mustard Willow +tile.plant_tall.cd3.name=Mustard Willow +tile.plant_tall.cd4.name=Mustard Willow (Mature) +tile.plant_tall.weed.name=Hemp +tile.plasma.name=Plasma +tile.plasma_heater.name=Plasma Heater +tile.pole_satellite_receiver.name=Satellite Dish +tile.pole_top.name=Antenna Top +tile.press_preheater.name=Burner Press Preheater +tile.pribris.name=RBMK Debris +tile.pribris_burning.name=Flaming RBMK Debris +tile.pribris_digamma.name=Blackened RBMK Debris +tile.pribris_radiating.name=Smoldering RBMK Debris +tile.radio_torch_receiver.name=Redstone-over-Radio Receiver +tile.radio_torch_receiver.desc=Placable on flat surfaces or comparator-compatible blocks +tile.radio_torch_sender.name=Redstone-over-Radio Transmitter +tile.radio_torch_sender.desc=Placable on flat surfaces or comparator-compatible blocks$Reads redstone signals or comparator input +tile.radiobox.name=Rosenberg Pest Control Box +tile.radiorec.name=FM Radio +tile.rail_booster.name=High Speed Booster Rail +tile.rail_highspeed.name=High Speed Rail +tile.rail_narrow.name=Narrow Gauge Cart Rail +tile.rail_wood.name=Wooden Tracks +tile.rbmk_absorber.name=RBMK Boron Neutron Absorber +tile.rbmk_blank.name=RBMK Structural Column +tile.rbmk_boiler.name=RBMK Steam Channel +tile.rbmk_console.name=RBMK Console +tile.rbmk_cooler.name=RBMK Cooler +tile.rbmk_control.name=RBMK Control Rods +tile.rbmk_control_auto.name=RBMK Automatic Control Rods +tile.rbmk_control_mod.name=RBMK Moderated Control Rods +tile.rbmk_crane_console.name=RBMK Crane Console +tile.rbmk_heater.name=RBMK Fluid Heater +tile.rbmk_heatex.name=RBMK Heat Exchanger +tile.rbmk_loader.name=RBMK Steam Connector +tile.rbmk_moderator.name=RBMK Graphite Moderator +tile.rbmk_outgasser.name=RBMK Irradiation Channel +tile.rbmk_reflector.name=RBMK Tungsten Carbide Neutron Reflector +tile.rbmk_rod.name=RBMK Fuel Rod +tile.rbmk_rod_mod.name=RBMK Moderated Fuel Rod +tile.rbmk_rod_reasim.name=RBMK Fuel Rod (ReaSim) +tile.rbmk_rod_reasim_mod.name=RBMK Moderated Fuel Rod (ReaSim) +tile.rbmk_steam_inlet.name=RBMK ReaSim Water Inlet +tile.rbmk_steam_outlet.name=RBMK ReaSim Steam Outlet +tile.rbmk_storage.name=RBMK Storage Column +tile.reactor_computer.name=Reactor Control +tile.reactor_conductor.name=Reactor Boiler +tile.reactor_control.name=Control Rods +tile.reactor_ejector.name=Reactor Waste Ejector +tile.reactor_element.name=Reactor Chamber +tile.reactor_hatch.name=Reactor Access Hatch +tile.reactor_inserter.name=Reactor Fuel Inserter +tile.red_barrel.name=Explosive Barrel +tile.red_cable.name=Red Copper Cable +tile.red_cable_classic.name=Red Copper Cable (Classic) +tile.red_cable_paintable.name=Paintable Red Copper Cable +tile.red_connector.name=Electricity Connector +tile.red_pylon.name=Electricity Pole +tile.red_pylon_large.name=Large Electricity Pylon +tile.red_wire_coated.name=Coated Red Copper Cable +tile.reinforced_brick.name=Reinforced Stone +tile.reinforced_brick_stairs.name=Reinforced Stone Stairs +tile.reinforced_ducrete.name=Reinforced Ducrete +tile.reinforced_glass.name=Reinforced Glass +tile.reinforced_glass_pane.name=Reinforced Glass Pane +tile.reinforced_lamp_off.name=Reinforced Lamp +tile.reinforced_lamp_on.name=Reinforced Lamp +tile.reinforced_light.name=Reinforced Glowstone +tile.reinforced_sand.name=Reinforced Sandstone +tile.reinforced_stone.name=Dense Stone +tile.reinforced_stone_stairs.name=Dense Stone Stairs +tile.reinforced_laminate.name=Reinforced Laminate +tile.reinforced_laminate_pane.name=Reinforced Laminate Pane +tile.rejuvinator.name=Rejuvination Device +tile.residue.name=Cloud Residue +tile.safe.name=Safe +tile.sand_boron.name=Boron Sand +tile.sand_boron_layer.name=Boron Sand Layer +tile.sand_dirty.name=Oily Sand +tile.sand_dirty_red.name=Red Oily Sand +tile.sand_gold.name=Gold Sand +tile.sand_gold198.name=Gold-198 Sand +tile.sand_lead.name=Lead Sand +tile.sand_polonium.name=Polonium Sand +tile.sand_quartz.name=Quartz Sand +tile.sand_uranium.name=Uranium Sand +tile.sat_dock.name=Cargo Landing Pad +tile.sat_foeq.name=PEAF - Mk.I FOEQ Duna Probe with experimental Nuclear Propulsion (Deco Block) +tile.sat_laser.name=Orbital Death Ray (Deco Block) +tile.sat_mapper.name=Surface Mapping Satellite (Deco Block) +tile.sat_radar.name=Radar Survey Satellite (Deco Block) +tile.sat_resonator.name=Xenium Resonator Satellite (Deco Block) +tile.sat_scanner.name=Satellite with Depth-Resource Scanning Module (Deco Block) +tile.schrabidic_block.name=Schrabidic Acid +tile.seal_controller.name=Silo Hatch Opener +tile.seal_frame.name=Silo Hatch Frame +tile.seal_hatch.name=Silo Hatch +tile.sellafield.0.name=Sellafite +tile.sellafield.1.name=Hot Sellafite +tile.sellafield.2.name=Boiling Sellafite +tile.sellafield.3.name=Blazing Sellafite +tile.sellafield.4.name=Infernal Sellafite +tile.sellafield.5.name=Sellafite-Corium +tile.sellafield_slaked.name=Slaked Sellafite +tile.semtex.name=Semtex +tile.sliding_blast_door.name=Sliding Blast Door +tile.solar_mirror.name=Heliostat Mirror +tile.soyuz_capsule.name=Cargo Landing Capsule +tile.soyuz_launcher.name=Soyuz Launch Platform +tile.spikes.name=Spikes +tile.stalactite.asbestos.name=Asbestos Stalactite +tile.stalactite.sulfur.name=Sulfurous Stalactite +tile.stalagmite.asbestos.name=Asbestos Stalagmite +tile.stalagmite.sulfur.name=Sulfurous Stalagmite +tile.steel_beam.name=Steel Beam +tile.steel_corner.name=Steel Wall Corner +tile.steel_grate.name=Steel Grate +tile.steel_grate_wide.name=Item Grate +tile.steel_grate_wide.desc=Lets dropped items and XP fall through +tile.steel_poles.name=Steel Pole +tile.steel_roof.name=Flat Steel Roof +tile.steel_scaffold.name=Steel Scaffold +tile.steel_wall.name=Steel Wall +tile.stone_cracked.name=Cracked Stone +tile.stone_depth.name=Depth Rock +tile.stone_depth_nether.name=Nether Depth Rock +tile.stone_gneiss.name=Graphitic Schist +tile.stone_porous.name=Porous Stone +tile.stone_resource.asbestos.name=Chrysotile +tile.stone_resource.bauxite.name=Bauxite +tile.stone_resource.hematite.name=Hematite +tile.stone_resource.limestone.name=Limestone +tile.stone_resource.malachite.name=Malachite +tile.stone_resource.sulfur.name=Sulfurous Stone +tile.struct_iter_core.name=Fusion Reactor Core Component +tile.struct_launcher.name=Launch Pad Component Block +tile.struct_launcher_core.name=Compact Launcher Core Component +tile.struct_launcher_core_large.name=Launch Table Core Component +tile.struct_plasma_core.name=Plasma Heater Core Component +tile.struct_scaffold.name=Launch Pad Scaffold Block +tile.struct_soyuz_core.name=Soyuz Launcher Core Component +tile.struct_watz_core.name=Watz Powerplant Core Component +tile.substation.name=Substation +tile.sulfuric_acid_block.name=Sulfuric Acid +tile.taint.name=Taint +tile.taint_barrel.name=IMP Residue Barrel +tile.tape_recorder.name=Tape Recorder +tile.tektite.name=Tektite +tile.teleanchor.name=Teleportation Anchor +tile.tesla.name=Tesla Coil +tile.test_nuke.name=Test Nuke +tile.therm_endo.name=Endothermic Bomb +tile.therm_exo.name=Exothermic Bomb +tile.tile_lab.name=Laboratory Tiles +tile.tile_lab_broken.name=Broken Laboratory Tiles +tile.tile_lab_cracked.name=Cracked Laboratory Tiles +tile.tnt_ntm.name=Actual TNT +tile.toxic_block.name=Stereotypical Green Ooze +tile.transition_seal.name=Transition Seal +tile.turret_arty.name=Artillery Turret "Greg" +tile.turret_cheapo.name=Cheapo Gatling Sentry +tile.turret_chekhov.name=Heavy Machine Gun Turret "Chekhov's Gun" +tile.turret_cwis.name=Phalanx Mk-15 CIWS +tile.turret_flamer.name=Flamethrower Turret +tile.turret_friendly.name=Chaingun Turret "Mister Friendly" +tile.turret_fritz.name=Heavy Flamethrower Turret "Fritz" +tile.turret_heavy.name=Heavy Machine Gun Turret +tile.turret_himars.name=Rocket Artillery Turret "Henry" +tile.turret_howard.name=Goalkeeper Twin Chaingun CIWS "Howard" +tile.turret_howard_damaged.name=Goalkeeper Twin Chaingun CIWS "Methusalem" +tile.turret_jeremy.name=Autocannon Turret "Jeremy" +tile.turret_light.name=Light Machine Gun Turret +tile.turret_maxwell.name=High-Energy MASER Turret "Maxwell" +tile.turret_rocket.name=Rocket Turret +tile.turret_richard.name=Rocket Launcher Turret "Richard" +tile.turret_spitfire.name=Turret I have no name for right now [WIP] +tile.turret_sentry.name=Sentry Turret "Brown" +tile.turret_tau.name=Tauon Turret +tile.turret_tauon.name=XVL1456 Prototype Turret "Tauon" +tile.vacuum.name=Vacuum +tile.vault_door.name=Vault-Tec Blast Door +tile.vent_chlorine.name=Chlorine Vent +tile.vent_chlorine_seal.name=Chlorine Seal +tile.vent_cloud.name=Cloud Vent +tile.vent_pink_cloud.name=Pink Cloud Vent +tile.vinyl_tile.large.name=Large Vinyl Tile +tile.vinyl_tile.small.name=Small Vinyl Tiles +tile.vitrified_barrel.name=Vitrified Nuclear Waste Drum +tile.volcanic_lava_block.name=Volcanic Lava +tile.volcano_core.name=Volcano Core +tile.waste_earth.name=Dead Grass +tile.waste_leaves.name=Dead Leaves +tile.waste_log.name=Charred Log +tile.waste_mycelium.name=Glowing Mycelium +tile.waste_planks.name=Charred Wooden Planks +tile.waste_trinitite.name=Trinitite Ore +tile.waste_trinitite_red.name=Red Trinitite Ore +tile.watz.name=Watz Powerplant +tile.watz_conductor.name=Watz Electricity Port +tile.watz_control.name=Reinforced Control Rods +tile.watz_cooler.name=Watz Reactor Supercooler +tile.watz_core.name=Watz Reactor Control +tile.watz_element.name=Watz Reaction Chamber +tile.watz_end.name=Watz Reactor Stability Element +tile.watz_end_bolted.name=Watz Reactor Stability Element (Riveted) +tile.watz_hatch.name=Watz Reactor Access Hatch +tile.watz_pump.name=Watz Pressure Pump +tile.yellow_barrel.name=Radioactive Barrel +tile.zirnox_destroyed.name=Destroyed ZINROX + +trait.asbestos=Asbestos +trait.blinding=Blinding +trait.coal=Pył Węglowy +trait.digamma=Digamma Radiation +trait.drop=Dangerous Drop +trait.explosive=Flammable / Explosive +trait.furnace=Worth %s operations in nuclear furnace +trait.heat=Provides %s HEAT +trait.hlParticle=Particle Half-Life: %s +trait.hlPlayer=Player Half-Life: %s +trait.hot=Pyrophoric / Hot +trait.hydro=Hydroreaktywne +trait.radioactive=Radioaktywne +trait.radResistance=Radiation resistance: %s + +trait.rbmk.coreTemp=Temperatura jądra: %s +trait.rbmk.depletion=ZuÅŒycie: %s +trait.rbmk.diffusion=Diffusion: %s +trait.rbmk.fluxFunc=Flux function: %s +trait.rbmk.funcType=Function type: %s +trait.rbmk.heat=Heat per flux: %s +trait.rbmk.melt=Melting point: %s +trait.rbmk.neutron.any=All Neutrons +trait.rbmk.neutron.fast=Fast Neutrons +trait.rbmk.neutron.slow=Slow Neutrons +trait.rbmk.skinTemp=Skin temp: %s +trait.rbmk.source=Self-igniting +trait.rbmk.splitsInto=Splits into: %s +trait.rbmk.splitsWith=Splits with: %s +trait.rbmk.xenon=Zatrucie Ksenonem: %s +trait.rbmk.xenonBurn=Xenon burn function: %s +trait.rbmk.xenonGen=Xenon gen function: %s + +trait.rbmx.coreTemp=Entropia jądra: %s +trait.rbmx.depletion=Chrupkość: %s +trait.rbmx.diffusion=Przepływ: %s +trait.rbmx.fluxFunc=Funkcja zagłady: %s +trait.rbmx.funcType=Function specification: %s +trait.rbmx.heat=Crust per tick at full power: %s +trait.rbmx.melt=Głębokość zgniecenia: %s +trait.rbmk.neutron.any.x=All non-euclidean shapes +trait.rbmk.neutron.fast.x=Elliptic non-euclidean shapes +trait.rbmk.neutron.slow.x=Hyperbolic non-euclidean shapes +trait.rbmx.skinTemp=Skin entropy: %s +trait.rbmx.source=Self-combusting +trait.rbmx.splitsInto=Departs to: %s +trait.rbmx.splitsWith=Arrives from: %s +trait.rbmx.xenon=Lead poison: %s +trait.rbmx.xenonBurn=Lead destruction function: %s +trait.rbmx.xenonGen=Lead creation function: %s + +trait.tile.cluster=Drops only when broken by a player +trait.tile.depth=Can only be destroyed by explosions + +tool.ability.centrifuge=Auto-Centrifuge +tool.ability.crystallizer=Auto-Crystallizer +tool.ability.explosion=Explosion +tool.ability.hammer=AoE +tool.ability.luck=Szczęście +tool.ability.mercury=Mercury Touch +tool.ability.midas=Midas Touch +tool.ability.recursion=Vein Miner +tool.ability.shredder=Auto-Shredder +tool.ability.silktouch=Silk Touch +tool.ability.smelter=Auto-Smelter + +turret.animals=Target Passive: %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=Target Machines: %s +turret.mobs=Target Mobs: %s +turret.none=None +turret.off=OFF +turret.on=ON +turret.players=Target Players: %s + +wavelengths.name.ir=Podczerwień +wavelengths.name.visible=Visible Light +wavelengths.name.uv=Ultrafiolet +wavelengths.name.gamma=Gamma +wavelengths.name.drx=Digamma +wavelengths.waveRange.ir=780nm-1mm +wavelengths.waveRange.visible=400nm-780nm +wavelengths.waveRange.uv=100nm-400nm +wavelengths.waveRange.gamma=<100pm +wavelengths.waveRange.drx=1916169 planck lengths + +weapon.ability.beheader=Dekapitator +weapon.ability.bobble=Luck of the Collector +# Should rhyme with the translation for "chainsaw" +weapon.ability.chainsaw=Piła Bólu +weapon.ability.fire=Flaming +weapon.ability.radiation=Radioactive Blade +weapon.ability.phosphorus=Phosphorus Tip +weapon.ability.stun=Stunning +weapon.ability.vampire=Vampire +weapon.elecGun.modeChange=Firing Mode Changed to: +weapon.elecGun.glass_cannon.radio=Radio Waves +weapon.elecGun.glass_cannon.micro=Microwaves +weapon.elecGun.glass_cannon.ir=Infrared +weapon.elecGun.glass_cannon.visible=Visible Light +weapon.elecGun.glass_cannon.uv=Ultraviolet Light +weapon.elecGun.glass_cannon.xray=X-rays +weapon.elecGun.glass_cannon.gamma=Gamma rays diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index e6c3ce951..4d2ff5618 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -152,6 +152,8 @@ achievement.inferno.desc="ПревратОте егП в пепел! ЭтПгП achievement.inferno=ОперацОя "КаММОбал" achievement.no9.desc="Я МаЎеюсь, чтП свОМец, кПтПрый я ЎПбываю, буЎет ОспПльзПваМ в вашей краске" achievement.no9=Старый МПЌер Девять +achievement.goFish.desc=МПрскПе распятОе +achievement.goFish=ИЎО пПрыбачь cannery.f1=[ НажЌОте f1 Ўля справкО ] @@ -236,7 +238,7 @@ potion.hbm_telekinesis=! ! ! potion.hbm_phosphorus=ЀПсфПрМые ПжПгО potion.hbm_stability=СтабОльМПсть potion.hbm_potionsickness=ППслезельевая бПлезМь -potion.hbm_death=СерьёзМая ЌутацОя +potion.hbm_death=АстПльфПфОкацОя tool.ability.recursion=ЖОлкПвый МайМер tool.ability.hammer=ЗПМа ЎействОя @@ -474,6 +476,12 @@ 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 @@ -540,8 +548,8 @@ 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.zirnoxBreedingRod=§2[СтержеМь-разЌМПжОтель ЊОрМПкс]$§eРазЌещать ряЎПЌ с тПплОвМыЌО стержМяЌО$§eВреЌя рабПты %d тОкПв +desc.item.zirnoxRod=§a[ТПплОвМый стержеМь ЊОрМПкс]$§eГеМерОрует %1$d тепла Ма тОк$§ВреЌя рабПты %2$d тОкПв desc.item.ammo.con_accuracy2=- СОльМП сМОжеММая тПчМПсть desc.item.ammo.con_damage=- СОльМП сМОжеММый урПМ desc.item.ammo.con_heavy_wear=- СОльМП увелОчеММый ОзМПс @@ -641,6 +649,7 @@ 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=Какая выгПЎМая сЎелка! @@ -735,6 +744,8 @@ 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.name.ar15_50=МПЎОфОкацОя AR-15 пПЎ .50 BMG gun.name.baeAR=СтаМЎартМая вОМтПвка брОтаММскПй арЌОО @@ -804,6 +815,7 @@ 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 book.error.cover=АЎрПММый КПллайЎер:$ДОагМПстОрПваМОе прПблеЌ book.error.title1=ОшОбка 0x01 [NC] @@ -944,114 +956,114 @@ book.starter.page18=vÊr - прПстП пареМь, кПтПрый слОшк book.lore.office0.title=ЗаявлеМОе Пб увПльМеМОО book.lore.office0.author=Kosma -book.lore.office0.page1=Вчера рукПвПЎствП сМПва сПкратОлП Маш ПтЎел. ЭтО ОЎОПты ЎПлжМы вОМОть тПлькП саЌОх себя, я Ме зМаю, чегП ПМО ПжОЎалО пПсле фОаскП с ПаМаеЌ. КтП, черт вПзьЌО, слОвает такую ОМфПрЌацОю? Мы теряеЌ ЌОллОПМы, О -book.lore.office0.page2=этП Я сейчас без рабПты. ЭтП ЌеМя прПсят уйтО в Птставку. Я МаЎеюсь, чтП вы, прОЎуркО, МакПМец-тП ОзвлеклО урПк Оз свПегП переОзбытка ПшОбПк О вытащОлО эту палку Оз свПей заЎМОцы. -book.lore.office0.page3=Я Ме верМусь в пятМОцу. ПрПстП прОшлОте чек Ма зарплату. +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.page1= -book.lore.office2.page2= +book.lore.office1.page0= +book.lore.office2.page1= book_lore.author=By %s book_lore.book_iodine.name=Note book_lore.book_iodine.author=Dave -book_lore.book_iodine.page.1=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: -book_lore.book_iodine.page.2=apparently the morons from 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 excrete it through the skin, creating an aerosol that is highly contagious. -book_lore.book_iodine.page.3=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 %d +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: +book_lore.book_iodine.page.1=apparently the morons from 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 excrete it through the skin, creating an aerosol that is highly contagious. +book_lore.book_iodine.page.2=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 %d book_lore.book_phosphorous.name=Note book_lore.book_phosphorous.author=Dave -book_lore.book_phosphorous.page.1=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 -book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d +book_lore.book_phosphorous.page.0=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 +book_lore.book_phosphorous.page.1=ingredient is red phosphorous, whihc has to be mixed into slot %d book_lore.book_dust.name=Note book_lore.book_dust.author=Dave -book_lore.book_dust.page.1=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 -book_lore.book_dust.page.2=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 -book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d +book_lore.book_dust.page.0=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 +book_lore.book_dust.page.1=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 +book_lore.book_dust.page.2=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_mercury.name=Note book_lore.book_mercury.author=Dave -book_lore.book_mercury.page.1=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 -book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d +book_lore.book_mercury.page.0=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 +book_lore.book_mercury.page.1=replicated by the body? whatever, the mercury goes into slot %d book_lore.book_flower.name=Note book_lore.book_flower.author=Dave -book_lore.book_flower.page.1=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, -book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d +book_lore.book_flower.page.0=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, +book_lore.book_flower.page.1=it does not work with other flowers. the morning glory goes into slot %d book_lore.book_syringe.name=Note book_lore.book_syringe.author=Dave -book_lore.book_syringe.page.1=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 -book_lore.book_syringe.page.2=syringe goes into slot %d +book_lore.book_syringe.page.0=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 +book_lore.book_syringe.page.1=syringe goes into slot %d book_lore.resignation_note.name=Letter of Resignation book_lore.resignation_note.author=Kosma -book_lore.resignation_note.page.1=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and -book_lore.resignation_note.page.2=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. -book_lore.resignation_note.page.3=I'm not coming back on Friday. Just send the paycheck. +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and +book_lore.resignation_note.page.1=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. +book_lore.resignation_note.page.2=I'm not coming back on Friday. Just send the paycheck. book_lore.memo_stocks.name=Intracorporate Memorandum -book_lore.memo_stocks.page.1=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. +book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. book_lore.memo_schrab_gsa.name=Internal Memorandum -book_lore.memo_schrab_gsa.page.1=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum -book_lore.memo_schrab_gsa.page.2=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum +book_lore.memo_schrab_gsa.page.1=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. book_lore.memo_schrab_rd.name=Internal Memorandum -book_lore.memo_schrab_rd.page.1=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. -book_lore.memo_schrab_rd.page.2=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely -book_lore.memo_schrab_rd.page.3=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. -book_lore.memo_schrab_rd.page.4=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. +book_lore.memo_schrab_rd.page.1=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely +book_lore.memo_schrab_rd.page.2=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. +book_lore.memo_schrab_rd.page.3=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. book_lore.memo_schrab_nuke.name=Research Report book_lore.memo_schrab_nuke.author=Doctor Schrabauer -book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. -book_lore.memo_schrab_nuke.page.2=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.3=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.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. +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.1=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.2=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.3=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.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.insanity_2.name=Torn Page book_lore.insanity_2.author=D Ferguson -book_lore.insanity_2.page.1=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.2=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.3=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.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.insanity_3.name=Torn Page book_lore.insanity_3.author=D Ferguson -book_lore.insanity_3.page.1=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.2=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.3=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. +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.insanity_4.name=Torn Page book_lore.insanity_4.author=D Ferguson -book_lore.insanity_4.page.1=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.2=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.3=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.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.insanity_5.name=Torn Page book_lore.insanity_5.author=D Ferguson -book_lore.insanity_5.page.1=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.2=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.3=Something is telling me that The Thing is still out there somewhere. I can feel it. +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.1=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.2=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.3=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_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.1=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.2=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.3=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.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. hbmfluid.none=НОчегП hbmfluid.water=ВПЎа @@ -1100,11 +1112,11 @@ hbmfluid.oxygen=ЖОЎкОй кОслПрПЎ hbmfluid.xenon=КсеМПМ hbmfluid.balefire=РакетМПе жар-тПплОвП hbmfluid.mercury=Ртуть -hbmfluid.plasma_dt=ДейтерОй-ТрОтОевая-плазЌа -hbmfluid.plasma_dh3=ДейтерОй-ГелОй-3-плазЌа -hbmfluid.plasma_hd=ВПЎПрПЎ-ДейтерОевая-плазЌа -hbmfluid.plasma_ht=ВПЎПрПЎ-ТрОтОевая-плазЌа -hbmfluid.plasma_xm=КсеМПМ-РтутМая-плазЌа +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)РаствПр таМталОта @@ -1127,6 +1139,7 @@ hbmfluid.sas3_nit=ТрОсульфОЎ шрабОЎОя с МОтаМОевыЌ hbmfluid.sas3_nit_dp=ИстПщеММый трОсульфОЎ шрабОЎОя с МОтаМПвыЌ усОлОтелеЌ hbmfluid.death=ОсЌОрОЎПвый раствПр hbmfluid.helium3=ГелОй-3 +hbmfluid.helium4=ГелОй-4 hbmfluid.heavywater=Тяжёлая вПЎа hbmfluid.ethanol=ЭтаМПл hbmfluid.carbondioxide=УглекОслый газ @@ -1169,6 +1182,25 @@ 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.chlorocalcite_cleaned=ОчОщеММый раствПр хлПркальцОта +hbmfluid.chlorocalcite_mix=СЌешаММый раствПр хлПркальцОта +hbmfluid.chlorocalcite_solution=РаствПр хлПркальцОта +hbmfluid.potassium_chloride=РаствПр хлПрОЎа калОя +hbmfluid.calcium_solution=РаствПр кальцОя +hbmfluid.smoke=ДыЌ +hbmfluid.smoke_leaded=СвОМцПвый ЎыЌ +hbmfluid.smoke_poison=ЯЎПвОтый ЎыЌ hbmmat.actinium227=АктОМОй-227 hbmmat.advancedalloy=ПрПЎвОМутый сплав @@ -1261,6 +1293,7 @@ hbmmat.wroughtiron=КПваМПе железП hbmmat.desh=Деш hbmmat.cdalloy=КаЎЌОевая сталь hbmmat.cadmium=КаЎЌОй +hbmmat.watzmud=ТПксОчМые ПтхПЎы crucible.aa=ПрПОзвПЎствП прПЎвОМутПгП сплава crucible.ferro=ПрПОзвПЎствП феррПураМПвПгП сплава @@ -1274,6 +1307,7 @@ crucible.steelPig=Переплавка чугуМа в сталь crucible.steelWrought=Переплавка кПваМПгП железа в сталь crucible.tcalloy=ПрПОзвПЎствП техМецОевПй сталО crucible.cdalloy=ПрПОзвПЎствП каЎЌОевПй сталО +crucible.cmb=ПрПОзвПЎствП сталО АльяМса matshape.block=БлПк %s matshape.blocks=БлПкО %s @@ -1480,6 +1514,10 @@ chem.NITRIC_ACID=ПрПОзвПЎствП азПтМПй кОслПты chem.SOLVENT=СЌешОваМОе ПргаМОческПгП раствПрОтеля chem.PET=СОМтез ПЭТ chem.TATB=СОМтез TATB +chem.CC_CENTRIFUGE=ОтЎелеМОе хлПркальцОта +chem.CC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа кальцОя +chem.PC_ELECTROLYSIS=ЭлектрПлОз хлПрОЎа калОя +chem.LAMINATE=ПрПОзвПЎствП лаЌОМата item.record.lc.desc=Valve - Diabolic Adrenaline Guitar/Lambda Core item.record.ss.desc=Valve - Sector Sweep @@ -1604,6 +1642,9 @@ 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=ЯЎерМый заряЎ кастПЌМПй бПЌбы @@ -1716,6 +1757,7 @@ 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=ДПЌеММая печь @@ -1723,6 +1765,7 @@ 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=ЛОтейМый бассейМ @@ -1770,6 +1813,13 @@ 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.desc=ВхПЎ: Сверху$ВыхПЎ: СМОзу через шОМу tile.machine_coal_off.name=ГеМератПр вМутреММегП сгПраМОя tile.machine_coal_on.name=ГеМератПр вМутреММегП сгПраМОя container.machineCoal=ГеМератПр вМутреММегП сгПраМОя @@ -1853,6 +1903,9 @@ tile.fluid_duct_box.name=УМОверсальМая жОЎкПстМая тру tile.fluid_duct_neo.name=УМОверсальМая жОЎкПстМая труба tile.fluid_duct_gauge.name=Труба с ОзЌерОтелеЌ пПтПка tile.fluid_duct_gauge.desc=Труба кПтПрая пПказывает скПлькП жОЎкПстО$переЌещается вМутрО сетО за тОк.$РазЎелеММые сетО, сПеЎОМеММые бПчкаЌО$ОлО резервуары рассЌатрОваются как ПЎМа Пбщая сеть. +tile.fluid_duct_exhaust.name=ВыхлПпМая труба +tile.fluid_switch.name=РеЎстПуМ-ЖОЎкПстМый клапаМ +tile.fluid_valve.name=ЖОЎкПстМый клапаМ tile.fluid_duct_solid.name=ППкрытая уМОверсальМая жОЎкПстМая труба (Устаревшее) tile.fluid_duct_paintable.name=ОкрашОваеЌая пПкрытая уМОверсальМая жОЎкПстМая труба tile.machine_fluidtank.name=ЊОстерМа @@ -1996,6 +2049,9 @@ tile.conveyor_chute.name=КПМвейерМый желПб tile.conveyor_double.name=ДвухпПлПсМая кПМвейер tile.conveyor_lift.name=КПМвейерМый цепМПй лОфт tile.conveyor_triple.name=ТрёхпПлПсМый кПМвейер +container.craneGrabber=КПМвейерМый сбПрщОк +tile.crane_grabber.name=КПМвейерМый сбПрщОк +tile.crane_splitter.name=КПМвейерМый разЎелОтель container.turretArty=Грег tile.turret_arty.name=АртОллерОйская турель "Грег" container.heaterFirebox=ТПпка @@ -2027,6 +2083,7 @@ item.ammo_himars_standard_he.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=СтупеМО Оз асбестПвых кОрпОчей @@ -2055,6 +2112,12 @@ 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_slab.concrete.name=ПлОта Оз бетПММПй плОткО tile.concrete_slab.concrete_asbestos.name=ПлОта Оз асбестПбетПМа tile.concrete_slab.concrete_smooth.name=ПлОта Оз бетПМа @@ -2091,6 +2154,46 @@ tile.machine_vacuum_distill.name=ВакууЌМый Мефтеперерабат tile.machine_catalytic_reformer.name=КаталОтОческОй рефПрЌер container.catalyticReformer=КаталОтОческОй рефПрЌер tile.fan.name=ВеМтОлятПр +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.radio_torch_counter.name=РеЎстПуМ-раЎОП счётчОк преЎЌетПв +tile.radio_torch_counter.desc=СтавОтся Ма плПскОе пПверхМПстО ОлО сПвЌестОЌые кПЌпаратПрМые блПкО$СОгМал завОсОт Пт кПлОчества МужМых преЎЌетПв +container.rttyCounter=РеЎстПуМ-раЎОП счётчОк преЎЌетПв +tile.machine_industrial_boiler.name=ПрПЌышлеММый бПйлер +tile.machine_industrial_boiler.desc=БПльшПй бПйлер, в кПтПрПЌ ЌПжМП вскОпятОть вПЎу ОлО разПгреть Мефть.$Требует вМешМОй ОстПчМОк тепла.$СкПрПсть переЎачО тепла: ΔT*0.01 TU/t$Не ЌПжет взПрваться +container.crateTemplate=СбПрПчМый ящОк +tile.crate_template.name=СбПрПчМый ящОк + +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_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-гП урПвМя container.hadron=УскПрОтель частОц tile.hadron_access.name=ТерЌОМал ЎПступа ускПрОтеля частОц @@ -2111,6 +2214,10 @@ 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=ОбшОвка ускПрОтеля частОц (ЧёрМый) @@ -2146,6 +2253,8 @@ item.cart.destroyer.name=ВагПМетка с уМОчтПжОтелеЌ Ќус item.cart.empty.name=СтальМая вагПМетка tile.rail_narrow.name=УзкПкПлейМые вагПМетПчМые рельсы tile.rail_wood.name=ДеревяММые рельсы +container.trainTram=ТраЌвай с плПскПй платфПрЌПй +item.train.cargo_tram.name=ТраЌвай с плПскПй платфПрЌПй tile.factory_titanium_hull.name=КПрпус базПвПй фабрОкО tile.factory_titanium_furnace.name=Люк ЎПступа базПвПй фабрОкО @@ -2212,6 +2321,7 @@ 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=КПЌпПМеМт Магревателя плазЌы @@ -2224,6 +2334,7 @@ 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=КПМтрПллер реактПра Ватцза @@ -2381,6 +2492,7 @@ 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="Я ОЌею в вОЎу, этП глагПл Ўля грПЌкПгП крОка.$ИМПплаМетяМе - этП Ме глагПлы. ЭтП существОтельМые!"$"На саЌПЌ Ўеле, я ЎуЌаю, чтП этП также МазваМОе $какПгП-тП сельскПхПзяйствеММПгП ПбПруЎПваМОя, такПгП как $ЌПлПтОлка за ЎПллар ОлО чтП-тП в этПЌ рПЎе."$"ЭтП еще хуже. Теперь у Мас есть слПвП,$кПтПрПе ЌПжет ПзМачать "сЌешОвать вещО вЌесте",$часть сельскПхПзяйствеММПгП ПбПруЎПваМОя, О Ўавайте пПсЌПтрОЌ...$а Ўа, этП также ЌПжет ПзМачать "саЌая прПЎвОМутая $фПрЌа жОзМО в ОзвестМПй вселеММПй".."$"И?"$"'И?' Да лаЎМП, чувак, ПМО же ИНОПЛАНЕТЯНЕ!" @@ -2522,6 +2634,7 @@ 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=Кашка сеЌтекса @@ -2564,6 +2677,9 @@ item.plate_titanium.name=ТОтаМПвая пластОМа item.plate_aluminium.name=АлюЌОМОевая пластОМа item.wire_red_copper.name=ПрПвПЎ Оз красМПй ЌеЎО item.neutron_reflector.name=Отражатель МейтрПМПв +item.night_vision.name=ОчкО МПчМПгП зреМОя +item.night_vision.description.item=Даёт МПчМПе зреМОе (МужЎается в пПлМПЌ электрОческПЌ сете) +item.night_vision.description.in_armor=%s (Ўаёт МПчМПе зреМОе) item.nugget_beryllium.name=БерОллОевый саЌПрПЎПк item.nugget_bismuth.name=СаЌПрПЎПк вОсЌута item.nugget_tantalium.name=СаЌПрПЎПк таМтала @@ -2776,6 +2892,9 @@ 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 @@ -2877,12 +2996,15 @@ tile.ore_bedrock.name=БеЎрПкПвая руЎа item.ore.asbestos=АсбестПвая item.ore.borax=БурПвая +item.ore.chlorocalcite=ХлПркальцОтПвая item.ore.copper=МеЎМая item.ore.gold=ЗПлПтая item.ore.iron=ЖелезМая item.ore.niobium=НОПбОевая item.ore.titanium=ТОтаМПвая item.ore.tungsten=ВПльфраЌПвая +item.ore.thorium=ТПрОевая +item.ore.uranium=УраМПвая item.ore_bedrock.name=%s беЎрПкПвая руЎа item.ore_centrifuged.name=ЊеМтрОфугОрПваММая %s беЎрПкПвая руЎа item.ore_cleaned.name=ОчОщеММая %s беЎрПкПвая руЎа @@ -2904,6 +3026,10 @@ 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=БПлваМчОк @@ -2950,6 +3076,8 @@ 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.plant_flower.foxglove.name=НаперстяМка tile.plant_flower.nightshade.name=БеллаЎПММа tile.plant_flower.tobacco.name=Табак @@ -2969,6 +3097,9 @@ 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=УсОлеММая лаЌпа @@ -3060,6 +3191,7 @@ 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=ЧастОцы асбеста в вПзЎухе @@ -3115,10 +3247,13 @@ tile.fire_door.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=БуМкерМая Ўверь +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 item.nugget_uranium.name=УраМПвый саЌПрПЎПк item.nugget_plutonium.name=ПлутПМОевый саЌПрПЎПк @@ -3209,6 +3344,7 @@ item.fallout.name=Куча раЎОПактОвМых ПсаЎкПв item.powder_zirconium.name=ЊОркПМОевый пПрПшПк item.powder_boron.name=БПрМый пПрПшПк item.powder_borax.name=Бура +item.powder_chlorocalcite.name=ХлПркальцОт item.powder_boron_tiny.name=Кучка бПрМПгП пПрПшка item.powder_at209.name=ППрПшПк астата-209 item.powder_au198.name=ППрПшПк зПлПта-198 @@ -3348,6 +3484,7 @@ item.tank_steel.name=СтальМПй бак tile.barrel_tcalloy.name=БПчка Оз техМецОевПй сталО item.motor.name=МПтПр item.motor_desh.name=Деш-ЌПтПр +item.motor_bismuth.name=ВОсЌутПвый ЌПтПр item.centrifuge_element.name=ЭлеЌеМт цеМтрОфугО item.centrifuge_tower.name=БашМя цеМтрОфугО item.reactor_core.name=АктОвМая зПМа реактПра-разЌМПжОтеля @@ -3428,6 +3565,7 @@ 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) @@ -3798,6 +3936,7 @@ item.grenade_strong.name=УсПвершеМствПваММая граМата item.grenade_frag.name=ОскПлПчМая граМата item.grenade_fire.name=ОгМеММая ПскПлПчМая граМата item.grenade_shrapnel.name=ГраМата сП шрапМелью +item.grenate_cats.name=ГраМата с кПтаЌО item.grenade_cluster.name=КластерМая бПЌба item.grenade_flare.name=СОгМальМая ракета item.grenade_electric.name=ЭлектрПграМата @@ -4016,6 +4155,7 @@ 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 @@ -4044,6 +4184,7 @@ item.gun_darter.name=ДрПтОкПвый пОстПлет item.gun_mymy.name=Ньетес item.gun_ar15.name="ДжПш" item.gun_glass_cannon.name=СтекляММая пушка +item.boltgun.name=ПМевЌатОческОй заклепПчМОк item.gun_revolver_iron_ammo.name=Пуля item.gun_revolver_ammo.name=СвОМцПвая пуля @@ -4248,9 +4389,17 @@ 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=Бак с вПЎПй Ўля ПгМетушОтеля @@ -4348,6 +4497,7 @@ 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=Препарат "НАКСА" прПтОв ЎОгаЌЌы @@ -4383,6 +4533,9 @@ 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=Ракета @@ -4390,6 +4543,7 @@ 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=КОберкраб @@ -4398,10 +4552,20 @@ entity.entity_taint_crab.name=ЗаражёММый пПрчей теслакра entity.entity_elder_one.name=КрякПс СтаршОй entity.entity_ntm_fbi.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.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=ВПзгПраеЌый крОпер eye.respond.no=§c"Нет" eye.respond.nothing=...ОМП Ме Птвечает @@ -4997,6 +5161,8 @@ 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=ТектОт @@ -5054,6 +5220,8 @@ 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=ЛазерМый ЎетПМатПр @@ -5077,6 +5245,31 @@ item.pellet_neptunium.name=НептуМОевая Ватцз-пеллета item.pellet_lead.name=СвОМцПвая пеллета item.pellet_advanced.name=УлучшОтель прПОзвПЎОтельМПстО Ватцз +item.watz_pellet.boron.name=ППглПщающая Ватцз-пеллета Оз бПра +item.watz_pellet.du.name=ППглПщающая Ватцз-пеллета Оз ПбеЎМеММПгП ураМа +item.watz_pellet.hes.name=Ватцз-пеллета Оз высПкППбПгащеММПгП шрабОЎОя +item.watz_pellet.lead.name=ППглПщающая Ватцз-пеллета Оз свОМца +item.watz_pellet.les.name=Ватцз-пеллета Оз МОзкППбПгащеММПгП шрабОЎОя +item.watz_pellet.mes.name=Ватцз-пеллета Оз среЎМеПбПгащеММПгП шрабОЎОя +item.watz_pellet.mep.name=Ватцз-пеллета Оз среЎМеПбПгащеММПгП плутПМОя +item.watz_pellet.meu.name=Ватцз-пеллета Оз среЎМеПбПгащеММПгП ураМа +item.watz_pellet.nqd.name=Ватцз-пеллета Оз ПбПгащеММПгП МакваЎаха +item.watz_pellet.nqr.name=Ватцз-пеллета Оз МакваЎрОО +item.watz_pellet.hen.name=Ватцз-пеллета Оз высПкППбПгащеММПгП МептуМОя +item.watz_pellet.schrabidium.name=Ватцз-пеллета Оз чОстПгП шрабОЎОя +item.watz_pellet_depleted.boron.name=ППглПщающая Ватцз-пеллета Оз бПра (ОбеЎМеММая) +item.watz_pellet_depleted.du.name=ППглПщающая Ватцз-пеллета Оз ПбеЎМеММПгП ураМа (ОбеЎМеММая) +item.watz_pellet_depleted.hes.name=Ватцз-пеллета Оз высПкППбПгащеММПгП шрабОЎОя (ОбеЎМеММая) +item.watz_pellet_depleted.lead.name=ППглПщающая Ватцз-пеллета Оз свОМца (ОбеЎМеММая) +item.watz_pellet_depleted.les.name=Ватцз-пеллета Оз МОзкППбПгащеММПгП шрабОЎОя (ОбеЎМеММая) +item.watz_pellet_depleted.mes.name=Ватцз-пеллета Оз среЎМеПбПгащеММПгП шрабОЎОя (ОбеЎМеММая) +item.watz_pellet_depleted.mep.name=Ватцз-пеллета Оз среЎМеПбПгащеММПгП плутПМОя (ОбеЎМеММая) +item.watz_pellet_depleted.meu.name=Ватцз-пеллета Оз среЎМеПбПгащеММПгП ураМа (ОбеЎМеММая) +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=КаталОтОческОй кПМвертер @@ -5130,6 +5323,7 @@ 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=Крышка Пт КваМтПвПй ЯЎер-кПлы @@ -5242,6 +5436,10 @@ 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.part_lithium.name=КПрПбка лОтОевПй пылО item.part_beryllium.name=КПрПбка берОллОевПй пылО @@ -5317,6 +5515,7 @@ 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=ДПзОЌетр @@ -5480,7 +5679,6 @@ 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.euphemium_capacitor.name=Redcoil Capacitor with Euphemium Positive Energy Negator 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? @@ -5555,7 +5753,7 @@ 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 Pistol +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 diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index c182cfeef..7a3f443c8 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -51,11 +51,13 @@ achievement.fiend2.desc=曎卑鄙 achievement.fiend2=残忍2:曎残忍 achievement.fiend=残忍 achievement.freytag.desc=英勇的救生员 -achievement.freytag=Freytag +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=诎实话䜠到底怎么了 @@ -66,10 +68,14 @@ achievement.horizonsStart.desc=将䞀䞪小䌙子送䞊月球 achievement.horizonsStart=地平线 achievement.impossible.desc=䜠䞍可胜取埗该成就 achievement.impossible=简盎䞍可胜 +achievement.inferno.desc=“把它变成灰烬这还䞍借投曎倚的炞匹” +achievement.inferno=食人行劚 achievement.manhattan.desc=1945幎8月6日 8:15 achievement.manhattan=曌哈顿计划 achievement.meltdown.desc=䜠走了这么远怎么胜把事情搞砞 achievement.meltdown=快速非计划拆卞 +achievement.no9.desc=“我垌望我匀采的铅胜被甚圚䜠的油挆里” +achievement.no9=旧数字9 achievement.omega12.desc=解决圚这䞪可怜的星球䞊继续生存的问题 achievement.omega12=欧米茄-12粒子加速噚 achievement.polymer.desc=矎味、矎味的埮塑料。 @@ -144,7 +150,7 @@ armor.rocketBoots=火箭靎 armor.sprintBoost=冲刺蟅助加速 armor.thermal=热成像 armor.threshold=䌀害阈倌 %s -armor.vats=这是䞀䞪测试以证明这些乊的e[B]ic换行功胜。 字䜓比䟋是可自定义的换行笊也䌚盞应调敎这䜿埗猖写新页面非垞容易。 +armor.vats=敌对生物HUD armor.yield=抵埡䜎于%s的䌀害 armorMod.all=所有 armorMod.applicableTo=适甚于 @@ -163,7 +169,7 @@ armorMod.type.servo=䌺服电机 armorMod.type.special=特殊 battery.mode.buffer=蟓入/蟓出暡匏 battery.mode.input=蟓入暡匏 -battery.mode.off=OffW +battery.mode.off=关闭W battery.mode.output=蟓出暡匏 battery.priority.high=充电䌘先级高 battery.priority.high.desc=总是需芁䌘先装满的玧急猓冲区 @@ -307,92 +313,97 @@ book.starter.page18=v?r只是䞀䞪被困圚"䌠声倎像"的§o《䞀生䞀次 book_lore.author=By %s book_lore.test.name=测试 book_lore.test.author=那䞪家䌙 +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=>䜠奜圚我匀始之前让我柄枅我䞍是同性恋。>做我>今倩晚䞊>18>和我最奜的朋友和我的父母出去玩了几倩>我们已经是最奜的朋友䞀幎了>喝了点酒玩了埈倚电子枞戏还点了䞀仜披萚>我们玩埗埈匀心>圚晚䞊的某䞪时候比劂9点巊右他匀了䞀䞪非垞有趣的玩笑我䞍记埗了䜆我知道这让我们俩郜笑埗埈厉害>没有我想我甚右手摞了摞他那半卷曲的黑发然后叫他䞀䞪有趣的男孩>他脞红了>我意识到我埈慌匠>我们有点亲密>突然他吻了我出于某种原因我又吻了他>我们做爱>拥抱圚䞀起睡着了>半倜醒来时他的倎莎圚我的胞郚和颈郚>感觉埈奜䜆我䞍是同性恋 book_lore.test.page.2=他圚我怀里睡着时我正圚打字。我怎么才胜让我最奜的朋友倱望呢我䞍想成䞺[猖蟑]/b/ book_lore.test.page.3=3 book_lore.test.page.4=4 -book_lore.test.page.5=5 book_lore.book_iodine.name=笔记 book_lore.book_iodine.author=戎倫 +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: book_lore.book_iodine.page.1=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: book_lore.book_iodine.page.2=apparently the morons from 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 excrete it through the skin, creating an aerosol that is highly contagious. -book_lore.book_iodine.page.3=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 %d book_lore.book_phosphorous.name=笔记 book_lore.book_phosphorous.author=戎倫 +book_lore.book_phosphorous.page.0=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 book_lore.book_phosphorous.page.1=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 -book_lore.book_phosphorous.page.2=ingredient is red phosphorous, whihc has to be mixed into slot %d book_lore.book_dust.name=笔记 book_lore.book_dust.author=戎倫 +book_lore.book_dust.page.0=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 book_lore.book_dust.page.1=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 book_lore.book_dust.page.2=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 -book_lore.book_dust.page.3=dangerous inventions of theirs and it contains dust. strangely they also mentioned that it goes into slot %d book_lore.book_mercury.name=笔记 book_lore.book_mercury.author=戎倫 +book_lore.book_mercury.page.0=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 book_lore.book_mercury.page.1=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 -book_lore.book_mercury.page.2=replicated by the body? whatever, the mercury goes into slot %d book_lore.book_flower.name=笔记 book_lore.book_flower.author=戎倫 +book_lore.book_flower.page.0=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, book_lore.book_flower.page.1=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, -book_lore.book_flower.page.2=it does not work with other flowers. the morning glory goes into slot %d book_lore.book_syringe.name=笔记 book_lore.book_syringe.author=戎倫 +book_lore.book_syringe.page.0=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 book_lore.book_syringe.page.1=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 -book_lore.book_syringe.page.2=syringe goes into slot %d book_lore.resignation_note.name=蟞职信 book_lore.resignation_note.author=科斯马 -book_lore.resignation_note.page.1=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and -book_lore.resignation_note.page.2=it's ME who's the one out of a job now. I'M the one being asked to resign. I hope you asshats finally learn from your overabundance of mistakes and take that stick out of your ass. -book_lore.resignation_note.page.3=I'm not coming back on Friday. Just send the paycheck. +book_lore.resignation_note.page.0=Management downsized our department again yesterday. Those idiots only have themselves to blame, I don't know what they were expecting after that fiasco. Who the hell leaks that sort of information? We're losing millions and +book_lore.resignation_note.page.1=管理层昚倩又对我们的郚闚进行裁员了。那矀癜痎芁怪只胜怪他们自己我郜䞍知道他们圚那场惚莥后还圚期埅什么。到底是谁他劈泄露了那种皋床的信息 +book_lore.resignation_note.page.2=我们损倱了几癟䞇而䞔现圚倱䞚的还是爷。老子垌望䜠们这垮混蛋最后胜从䜠们的䞀堆问题䞭孊到点教训然后给爷滚去自闭。 book_lore.memo_stocks.name=公叞内郚倇忘圕 -book_lore.memo_stocks.page.1=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. +book_lore.memo_stocks.page.0=Investor Relations - $ $ There's been some glaring discrepancies in the figures provided for the latest quarterly report. It would be prudent for the financial department to make some adjustments, so there won't be any concern. book_lore.memo_schrab_gsa.name=内郚倇忘圕 -book_lore.memo_schrab_gsa.page.1=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum -book_lore.memo_schrab_gsa.page.2=a 40%% profit on related operations, let alone the possibility of future contracts. Due to the confidential nature, all fiscal evidence is to remain private. +book_lore.memo_schrab_gsa.page.0=Contract Management - $ $ Legal has made a breakthrough with the DLA. They've awarded us with a 45 BILLION GSA Schedule for further procurement and research of saralloy. At current estimates, that would be at minimum +book_lore.memo_schrab_gsa.page.1=合同管理记圕 - 法务郚圚䞎矎囜囜防郚后勀局的谈刀䞭取埗了突砎。他们批准了450亿的联邊采莭服务总眲投资资金甚于匂变金属的采莭䞎研究。 book_lore.memo_schrab_rd.name=内郚倇忘圕 -book_lore.memo_schrab_rd.page.1=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. -book_lore.memo_schrab_rd.page.2=Doctor Schrabauer, however, has discovered a new interaction - called "Strange Lepton Oscillation" - that could significantly reduce costs. Through a not entirely understood process, supplied electrons are transmuted into extremely -book_lore.memo_schrab_rd.page.3=high-energy photons, through a strange charm. This is an extreme exception to many established particle conversion laws, but preliminary experiments have proved that these protons transmute into up and down quarks, eventually creating saralloy. -book_lore.memo_schrab_rd.page.4=Strangely, the prototype requires Tungsten alloyed with small amounts of saralloy. In addition, a special capacitor is required to negate the leftover positive charge. +book_lore.memo_schrab_rd.page.0=Research & Development - $ $ Our main production method of saralloy has been through the new particle accelerator. However, the energy costs are exorbitantly high compared to the amount of output. +book_lore.memo_schrab_rd.page.1=研发 - 目前我们䞻芁生产方法是䜿甚新型粒子加速噚。然而䞎产出量盞比胜源成本高埗惊人。 +book_lore.memo_schrab_rd.page.2=然而Schrabauer博士发现了䞀种党新的盞互䜜甚——暂称䞺“奇匂蜻子振荡”——该䜜甚可以星著降䜎生产成本。通过䞀䞪目前未被完党理解的的过皋提䟛的电子被䞀种奇特的“魔力”蜬化䞺极高胜量的光子。 +book_lore.memo_schrab_rd.page.3=这是讞倚已明确的粒子蜬换定埋的极端䟋倖。䜆初步实验证明这些莚子先蜬变䞺䞊䞋倞克最终圢成了匂变金属。奇怪的是原型机䞭需芁钚䞎少量匂变金属合金化所埗到的合金。 book_lore.memo_schrab_nuke.name=研究报告 -book_lore.memo_schrab_nuke.author=Doctor Schrabauer -book_lore.memo_schrab_nuke.page.1=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. -book_lore.memo_schrab_nuke.page.2=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.3=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.1=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.2=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.3=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.insanity_2.name=Torn Page -book_lore.insanity_2.author=D Ferguson -book_lore.insanity_2.page.1=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.2=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.3=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.insanity_3.name=Torn Page -book_lore.insanity_3.author=D Ferguson -book_lore.insanity_3.page.1=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.2=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.3=I'm not sure how administration can keep this calm, but i don't get paid enough to waste thoughts on that. -book_lore.insanity_4.name=Torn Page -book_lore.insanity_4.author=D Ferguson -book_lore.insanity_4.page.1=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.2=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.3=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.insanity_5.name=Torn Page -book_lore.insanity_5.author=D Ferguson -book_lore.insanity_5.page.1=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.2=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.3=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.1=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.2=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.3=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.1=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.2=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.3=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.memo_schrab_nuke.author=Schrabauer博士 +book_lore.memo_schrab_nuke.page.0=Our most recent investigation led us to the effects of nuclear explosions on materials. Thanks to our grant money, we *accidentally* tested our theory on direct saralloy synthesis from uranium. +book_lore.memo_schrab_nuke.page.1=最近的调查䜿我们了解了栞爆炞对材料造成的圱响。倚亏倖界给我们的赠欟我们*意倖地*测试了铀盎接合成匂变金属的理论。 +book_lore.memo_schrab_nuke.page.2=而歀前我们只圚回旋加速噚䞭制䜜出匂变金属。䜆这次我们圚对Everwerpen的地䞋拍摄䞭圚该地点的铀矿石䞭发现了埮量的匂变金属。其附近所有的纯金属铀则郜发生了裂变。 +book_lore.bf_bomb_1.name=私人笔记 +book_lore.bf_bomb_1.author=M. 波特 +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.bf_bomb_2.name=私人笔记 +book_lore.bf_bomb_2.author=M. 波特 +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.bf_bomb_3.name=私人笔记 +book_lore.bf_bomb_3.author=M. 波特 +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.bf_bomb_4.name=私人笔记 +book_lore.bf_bomb_4.author=M. 波特 +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.bf_bomb_5.name=私人笔记 +book_lore.bf_bomb_5.author=M. 波特 +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... cannery.f1=[按F1键获取垮助] cannery.centrifuge=气䜓犻心机 cannery.centrifuge.0=气䜓犻心机可以䜿甚通甚流䜓管道䌠蟓流䜓。 @@ -423,7 +434,7 @@ cannery.firebox.0=燃烧宀通过燃烧可燃物品产生热量。 cannery.firebox.1=它可以燃烧任䜕可燃物品䜆曎高莚量的燃料劂煀、焊炭和固䜓燃料燃烧时闎曎长枩床曎高。 cannery.firebox.2=燃烧宀顶郚的铜觊点可以䌠富热量。底郚具有盞同觊点的机噚可以通过攟眮圚燃烧宀顶郚来接收热量。 cannery.firebox.3=劂果热量没有甚完䞔热量猓冲噚变满燃烧宀将暂停运行以防止燃料浪莹。 -cannery.firebox.4=䞀种这样的机噚是斯特林发劚机它将热量盎接蜬化䞺胜量。 +cannery.firebox.4=䞀种这样的机噚是斯特林发电机它将热量盎接蜬化䞺胜量。 cannery.foundryChannel=链造通道 cannery.foundryChannel.0=铞造通道甚于将熔融材料从坩埚或傚眐蟓送到暡具䞭。 cannery.foundryChannel.1=通道可以通过从顶郚通过出口或盎接连接坩埚或从其他通道的䟧面借倒来接收材料。 @@ -432,7 +443,7 @@ cannery.foundryChannel.3=圓无法䟛应出口或暡具时材料将流入盞 cannery.foundryChannel.4=剩䜙材料可以甚铲子枅陀。 cannery.silex=FEL & SILEX cannery.silex.0=自由电子激光噚FEL利甚胜量和激光晶䜓产生区倧的激光束。 -cannery.silex.1=小心因䞺激光䌚燃烧/熔化蟃匱的方块。。。 +cannery.silex.1=小心因䞺激光䌚烧毁或熔化蟃脆匱的方块  cannery.silex.2= 䜆䞍是防爆的。 cannery.silex.3=FEL甚于䞺激光同䜍玠分犻宀SILEX提䟛胜量。FEL和SILEX必须至少盞隔䞀䞪方块。 cannery.silex.4=激光必须通过SILEX的玻璃匀口进入。圚错误的方向䞊入射可胜䌚摧毁它。 @@ -441,10 +452,21 @@ cannery.silex.6=陀了䟧面的䞀䞪连接口之倖底郚还有第䞉䞪隐 cannery.silex.7=每䞪配方郜需芁特定的激光类型。䜿甚比所需类型曎区的激光将曎快地倄理项目。 cannery.silex.8=䞀台FEL最倚可以䞺5台SILEX䟛胜。每䞪SILEX之闎必须闎隔䞀䞪方块。 cannery.stirling=斯特林发电机 -cannery.stirling.0=斯特林发劚机䜿甚来自倖郚的热胜来产生胜量。 +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=䜿甚自劚锯可以自劚收割柳叶它只䌚打碎准倇收割的怍物。 chem.ARSENIC=砷提取 chem.ASPHALT=沥青生产 chem.BAKELITE=电朚生产 @@ -452,6 +474,8 @@ 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=区化煀液化 @@ -500,9 +524,12 @@ chem.LPG=石油倩然气液化 chem.LUBRICANT=涊滑剂混合 chem.METH=甲基苯䞙胺合成 chem.NITAN=NITAN牌超级燃料混合 +chem.NITRIC_ACID=硝酞生产 chem.OIL_SAND=沥青砂提取 chem.OSMIRIDIUM_DEATH=锇酞溶液生产 +chem.PC_ELECTROLYSIS=氯化钟电解 chem.PEROXIDE=过氧化氢生产 +chem.PET=PET合成 chem.PETROIL_LEADED=含铅石油混合 chem.POLYMER=聚合物合成 chem.PUF6=六氟化钚生产 @@ -527,8 +554,10 @@ chem.SF_PETROLEUM=石油气固化 chem.SF_RECLAIMED=再生油固化 chem.SF_SMEAR=工䞚油固化 chem.SOLID_FUEL=固䜓火箭燃料生产 +chem.SOLVENT=有机溶剂混合 chem.STEAM=烧氎 chem.SULFURIC_ACID=硫酞生产 +chem.TATB=TATB合成 chem.TEL=四乙基铅混合 chem.TEST=测试 chem.TNT=TNT合成 @@ -550,11 +579,13 @@ container.barrel=æ¡¶ container.bat9000=å·šå°»-9000 傚眐 container.battery=傚胜 container.bombMulti=倚甚途炞匹 +container.catalyticReformer=催化重敎噚 container.centrifuge=犻心机 container.chemplant=化工厂 container.compactLauncher=玧凑型发射台 container.craneBoxer=蟓送垊打包机 container.craneExtractor=蟓送垊提取噚 +container.craneGrabber=蟓送垊抓斗 container.craneInserter=蟓送垊富入噚 container.craneRouter=䌠送路由噚 container.craneUnboxer=蟓送垊解包机 @@ -596,13 +627,16 @@ container.iGenerator=工䞚发电机 container.keyForge=锁匠桌 container.launchPad=富匹发射台 container.launchTable=倧型发射台 +container.leadBox=安党盒 container.machineBoiler=锅炉 container.machineCMB=CMB炌钢炉 container.machineCoal=火力发电机 +container.machineCoker=焊化装眮 +container.machineCompressor=压猩机 container.machineCrucible=坩埚 container.machineDiesel=柎油发电机 container.machineElectricBoiler=电锅炉 -container.machineFEL=FEL自由电子激光噚 +container.machineFEL=FEL container.machineITER=聚变反应堆 container.machineLargeTurbine=工䞚汜蜮机 container.machineLiquefactor=液化机 @@ -610,7 +644,7 @@ container.machineMixer=工䞚搅拌机 container.machineRefinery=炌油厂 container.machineSelenium=星型发劚机 container.machineShredder=粉碎机 -container.machineSILEX=SILEX激光同䜍玠分犻宀 +container.machineSILEX=激光同䜍玠分犻宀 container.machineSolidifier=固化机 container.machineTurbine=汜蜮机 container.machineTurbofan=涡扇发劚机 @@ -670,6 +704,8 @@ container.soyuzLauncher=联盟号发射平台 container.storageDrum=栞废料倄理桶 container.teleLinker=炮塔ID管理 container.teleporter=䌠送机 +container.trainTram=平板蜜莧电蜊 +container.turbinegas=联合埪环燃气蜮机 container.turretArty=重炮炮塔“栌雷栌” container.turretChekhov=重机枪炮塔“契诃倫的枪” container.turretFriendly=蜻机枪炮塔“友奜先生” @@ -679,12 +715,16 @@ container.turretHoward=双联守闚员近防系统“霍华執” container.turretJeremy=重炮炮塔“杰里米” container.turretMaxwell=高胜埮波炮塔”麊克斯韊” container.turretRichard= 火箭炮塔“理查執” +container.turretSentry=哚兵炮塔“垃朗” container.turretTauon=陶子发射噚炮塔“陶恩” container.uf6_tank=六氟化铀傚眐 +container.vacuumDistill=真空炌油厂 container.wasteDrum=乏燃料池 container.watzPowerplant=Watz发电厂 container.zirnox=锆诺克斯栞反应堆 crucible.aa=高级合金生产 +crucible.cdalloy=镉钢生产 +crucible.cmb=CMB钢生产 crucible.ferro=铀铁合金生产 crucible.hematite=赀铁矿炌铁 crucible.hss=高速钢生产 @@ -751,12 +791,6 @@ death.attack.taint=%1$s 死于恶性肿瘀 death.attack.tau=%1$s 被 %2$s 甚垊莟电荷的陶子射穿 death.attack.tauBlast=%1$s 对XVL1456充胜时闎过长被炞成碎片 death.attack.teleporter=%1$s 被䌠送到虚空 -desc.item.pileRod=§e䜿甚钻孔石墚插入$§E䜿甚螺䞝刀拔出$ -desc.item.rtgDecay=衰变䞺%s -desc.item.rtgHeat=功率级别%s -desc.item.wasteCooling=圚乏燃料池䞭冷华 -desc.item.zirnoxBreedingRod=§2[ZIRNOX增殖棒]$§e攟圚燃料棒旁蟹增殖$§e持续 %d 刻 -desc.item.zirnoxRod=§a[ZIRNOX燃料棒]$§e每刻产生 %1$d 热量$§e持续 %2$d 刻 desc.gui.assembler.warning=§c错误§r歀机噚需芁装配机暡板 desc.gui.chemplant.warning=§c错误§r歀机噚需芁化工厂暡板 desc.gui.gasCent.enrichment=§2浓猩§r$浓猩铀需芁䞲联$䞀䞪犻心机䞲联将犻心出$铀燃料四䞪犻心机䞲联$将完党分犻出铀235。 @@ -773,6 +807,9 @@ 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可接受的燃料§r +desc.gui.turbinegas.warning=§c燃油或涊滑油液䜍䜎§r desc.gui.upgrade=§l可接受的升级§r desc.gui.upgrade.afterburner=*§d加力燃烧§r堆叠至3级 desc.gui.upgrade.effectiveness=*§a效率§r堆叠至3级 @@ -783,6 +820,134 @@ desc.gui.zirnox.coolant=§3冷华剂§r$CO2将热量从堆芯蜬移到氎䞭$这 desc.gui.zirnox.pressure=§6压力§r$排攟二氧化碳可以降䜎压力$然而压力过䜎冷华效率和蒞汜产量将降䜎$小心熔毁 desc.gui.zirnox.warning1=§c错误§r反应堆正垞运行需芁氎 desc.gui.zirnox.warning2=§c错误§r二氧化碳是反应堆正垞运行所必需的 +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=- 无抛射物 +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=* Uhhh +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=+ 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=+ 冲击波 +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=装甲穿透倌: %s +desc.item.kitArmor=装甲将被新的装倇取代。 +desc.item.kitHaz=装甲将被防技服取代。 +desc.item.kitPack=真䟿宜 +desc.item.kitPool=请圚打匀前枅空背包库存 +desc.item.pileRod=§e䜿甚钻孔石墚插入$§E䜿甚螺䞝刀拔出$ +desc.item.rtgDecay=衰变䞺%s +desc.item.rtgHeat=功率级别%s +desc.item.storage.capacity=容量 %s%%s +desc.item.storage.proscons=查看利匊列衚 +desc.misc.357=.357 马栌南 +desc.misc.556=.223 雷明顿 +desc.misc.762=.308 枩圻斯特 +desc.misc.func=§n-- 䜜甚 -- +desc.misc.lanthanum="镧" +desc.misc.lctrl=§8按䜏 <§e§oå·ŠCTRL§8§o> %s +desc.misc.lore=§n-- 知识 -- +desc.misc.lshift=§8按䜏 <§e§oå·ŠSHIFT§8§o> %s +desc.misc.luna=§o20x155mm Lunatic +desc.misc.meltPoint=熔点: §c%s +desc.misc.noPos=未讟眮䜍眮 +desc.misc.pos=将䜍眮讟眮䞺%s%s%s +desc.misc.posSet=䜍眮已讟眮 +desc.item.wasteCooling=圚乏燃料池䞭冷华 +desc.item.zirnoxBreedingRod=§2[ZIRNOX增殖棒]$§e攟圚燃料棒旁蟹增殖$§e持续 %d 刻 +desc.item.zirnoxRod=§a[ZIRNOX燃料棒]$§e每刻产生 %1$d 热量$§e持续 %2$d 刻 digamma.playerDigamma=玩家F-迪䌜马蟐照氎平: digamma.playerHealth=玩家所受F-迪䌜马蟐照圱响: digamma.playerRes=玩家F-迪䌜马防技氎平: @@ -790,13 +955,24 @@ digamma.title=玩家F-迪䌜马蟐射自检噚 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_nuclear.name=倧䞪子区森 +entity.entity_glyphid_scout.name=䟊察匂虫 entity.entity_ntm_fbi.name=FBI探员 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_taint_crab.name=污染螃蟹 entity.entity_tesla_crab.name=磁暎螃蟹 entity.hbm.entity_balls_o_tron.name=机械蠕虫 @@ -822,6 +998,129 @@ geiger.playerRad=玩家蟐射: geiger.playerRes=蟐射抗性: geiger.title=盖革计数噚 geiger.title.dosimeter=剂量计 +gun.make.ARMALITE=阿玛莱特公叞 +gun.make.AUTO_ORDINANCE=矎囜自劚歊噚公叞 +gun.make.BAE=英囜宇航系统公叞 +gun.make.BENELLI=䌯奈利歊噚公叞 +gun.make.BLACK_MESA=黑山研究所 +gun.make.CERIX=赛里克斯·马栌努斯锻造䞖界 +gun.make.COLT=柯尔特制造公叞 +gun.make.COMBINE=䞖界工䌚 +gun.make.CUBE=Cube 2: Sauerbraten +gun.make.ENZINGER=Enzinger工䌚 +gun.make.EQUESTRIA=小马囜富匹系统 +gun.make.FLIMFLAM=FlimFlam“欺骗”工䞚 +gun.make.F_STRONG=史特朗堡 +gun.make.GLORIA=GLORIA公叞 +gun.make.HASBRO=孩之宝 +gun.make.H_AND_K=黑克勒和科赫歊噚公叞 +gun.make.H_AND_R=哈林顿-理查森歊噚公叞 +gun.make.IF=蹄铁军工 +gun.make.IMI=以色列军事工䞚 +gun.make.IMI_BIGMT=以色列军事工䞚公叞/倧型MT +gun.make.LANGFORD=朗犏執研究实验宀 +gun.make.LUNA=月球防埡公叞 +gun.make.MAGNUM_R_IMI=马栌南研究公叞 / 以色列军事工䞚公叞 +gun.make.MANN=Open Mann公叞 +gun.make.MAXIM=海勒姆·马克沁 +gun.make.METRO=地铁枪手 +gun.make.MWT=MWT原型实验宀 +gun.make.NAZI=埃尔犏特机械制造厂 +gun.make.NONE=- +gun.make.RAYTHEON=富匹系统公叞 +gun.make.REMINGTON=雷明登歊噚公叞 +gun.make.ROCKWELL=眗克韊尔囜际公叞 +gun.make.ROCKWELL_U=眗克韊尔囜际公叞 +gun.make.RYAN=莱恩工䞚 +gun.make.SAAB=萚博博犏斯劚力公叞 +gun.make.SACO=萚科防卫军械 +gun.make.TULSKY=囟拉歊噚厂 +gun.make.UAC=联合宇宙航空公叞 +gun.make.UNKNOWN=??? +gun.make.WESTTEK=WestTek研究讟斜 +gun.make.WGW=嚁廉·叀斯特掛倫·绎尔克 +gun.make.WINCHESTER=枩圻斯特速射歊噚公叞 +gun.make.WINCHESTER_BIGMT=枩圻斯特速射歊噚公叞/倧型MT +gun.name.ar15_50=AR-15 .50BMG型 +gun.name.baeAR=英囜制匏突击步枪 +gun.name.bel=野火蛋发射噚 +gun.name.benelli=䌯奈利M4 Super 90霰匹枪 +gun.name.benelliDrum=䌯奈利M4 Super 90霰匹枪 (泵劚䟛匹改进型) +gun.name.bio=RI No. 2 Mark 1 +gun.name.bolter=Manticora Pattern爆匹枪 +gun.name.cPython=柯尔特蟒蛇 +gun.name.cz53=CZ53 单兵蜬蜮机枪 +gun.name.cz57=CZ57 倍仇者机枪 +gun.name.dart=针枪 +gun.name.deagle=以色列军事工䞚公叞沙挠之鹰 +gun.name.emp=EMP投射噚 +gun.name.extinguisher=PROTEX灭火噚6kg +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=HK G36突击步枪 +gun.name.gPistol=HK69A1 手持单发抎匹发射噚 +gun.name.gustav=卡尔·叀斯塔倫M1无后坐力炮 +gun.name.ifHorseshoe=IF-18 蹄铁 +gun.name.ifPit=IF-18 蹄铁 Bottomless Pit +gun.name.ifScope=IF-18 蹄铁 Scoped +gun.name.ifStorm=IF-18 蹄铁 银色风暎 +gun.name.ifVanity=IF-18 蹄铁 Vanity +gun.name.karl=M1 卡尔·叀斯塔倫 +gun.name.ks23=KS-23霰匹枪 +gun.name.lacunae=Auntie Lacunae +gun.name.lasetDet=霍普绎尔激光雷管 +gun.name.lunaAR=1986 Bishamonten匏突击步枪 +gun.name.lunaGun=1978 Rāhula type Standard Issue Sidearm (Revision 2) +gun.name.lunaHLR=1944嫊嚥匏蜻机枪 +gun.name.lunaShotty=1978幎关矜匏散匹枪第1次修订 +gun.name.lunaSMG=1956 ānanda type Submachine Gun +gun.name.lunaSniper=1915后矿匏反噚材步枪 +gun.name.lunaTWR=时闎扭曲步枪 +gun.name.m2=M2匏勃朗宁倧口埄重机枪 +gun.name.m42=M-42战术栞匹发射噚 +gun.name.m42MIRV=M-42实验MIRV +gun.name.m60=7.62毫米口埄M60机枪 +gun.name.maxim=马克沁机枪 +gun.name.maximDouble=双重马克沁机枪 +gun.name.mg3=MG-42通甚机枪 +gun.name.mp40=MP40冲锋枪 +gun.name.nerf=某些无良记者県䞭的倧规暡杀䌀性歊噚 +gun.name.osipr=守望标准型脉冲步枪 +gun.name.panz=反坊克火箭来倍枪 54 +gun.name.quadro=OpenQuadro䟿携匏富匹发射噚 +gun.name.remington870=雷明顿870 +gun.name.revolverCursed=䞍列颠标准问题电劚手枪 +gun.name.sauer=绍尔猎枪 +gun.name.spas12=北兰基SPAS-12匏12号霰匹枪 +gun.name.spiw=H&R SPIW +gun.name.stinger=FIM-92毒刺䟿携匏防空系统 +gun.name.stingerOneSky=The One Sky 毒刺䟿携匏防空系统 +gun.name.supershotty=双管战斗霰匹枪 +gun.name.tau=XVL1456 陶子加农炮 +gun.name.tommy9=M1A1冲锋枪9毫米型 +gun.name.tommy=M1A1冲锋枪 +gun.name.topaz=重型火焰燃烧噚 +gun.name.uacCarbine=UAC-41卡実枪 +gun.name.uacDeagle=UAC-H54 "Martian Raptor" Automag +gun.name.uacDMR=UAC-30 粟确射手步枪 +gun.name.uacLMG=UAC-49蜻机枪 +gun.name.uacPistol=UAC-B950 .45 标准型手枪 +gun.name.uacSMG=UAC-17小型冲锋枪 +gun.name.uboinik=Uboinik蜬蜮霰匹枪 +gun.name.uzi=IMI Uzi +gun.name.uziSatur=IMI Uzi D-25A +gun.name.win1887=枩圻斯特M1887杠杆匏连发霰匹枪 +gun.name.win1887Inox=枩圻斯特M1887杠杆匏连发霰匹枪 Inox +gun.name.win20Inox=枩圻斯特20型Inox +gun.name.win20Poly=枩圻斯特20型聚合物 +gun.name.win20Satur=枩圻斯特20型 D-25A +gun.name.zomg=EMC101棱镜莟胜量炮 hadron.analysis=正圚分析... hadron.buttonOn=分析宀启劚(劂果存圚) hadron.buttonOff=分析宀关闭 @@ -881,11 +1180,21 @@ hbmfluid.balefire=野火火箭燃料 hbmfluid.biofuel=生物燃料 hbmfluid.biogas=沌气 hbmfluid.bitumen=沥青 +hbmfluid.blood=血 +hbmfluid.blood_hot=热的血 +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=裂化油 @@ -894,56 +1203,83 @@ 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.gas=倩然气 +hbmfluid.gas_coker=焊化气 hbmfluid.gasoline=含铅汜油基油 hbmfluid.gasoline_leaded=含铅汜油 hbmfluid.heatingoil=燃油 +hbmfluid.heatingoil_vacuum=重莚燃油 hbmfluid.heavyoil=重油 +hbmfluid.heavyoil_vacuum=减压重油 hbmfluid.heavywater=重氎 hbmfluid.helium3=æ°Š-3 hbmfluid.hotcrackoil=热裂化油 hbmfluid.hotoil=热原油 hbmfluid.hotsteam=热蒞汜 hbmfluid.hydrogen=液氢 +hbmfluid.iongel=犻子凝胶 hbmfluid.kerosene=煀油 +hbmfluid.kerosene_reform=喷气燃料 hbmfluid.lava=岩浆 hbmfluid.lightoil=蜻油 hbmfluid.lightoil_crack=裂化蜻油 +hbmfluid.lightoil_vacuum=减压蜻油 hbmfluid.lpg=液化石油气 hbmfluid.lubricant=涊滑油 hbmfluid.mercury=æ°Žé“¶ hbmfluid.mug=Mug牌树根饮料 hbmfluid.mug_hot=热的Mug牌树根饮料 +hbmfluid.mustardgas=芥子气 hbmfluid.naphtha=石脑油 +hbmfluid.naphtha_coker=焊化石脑油 hbmfluid.naphtha_crack=裂化石脑油 hbmfluid.nitan=NITAN牌100号超级燃料 +hbmfluid.nitric_acid=硝酞 +hbmfluid.nitroglycerin=硝酞甘油 hbmfluid.none=无 hbmfluid.oil=原油 +hbmfluid.oil_coker=焊化油 hbmfluid.oxygen=液氧 +hbmfluid.oxyhydrogen=氢氧混合气 hbmfluid.pain=Pn(III) 钜铁溶液 hbmfluid.petroil=汜油 hbmfluid.petroil_leaded=含铅石油 hbmfluid.petroleum=石油气 +hbmfluid.phosgene=光气 hbmfluid.plasma_bf=野火等犻子䜓 hbmfluid.plasma_dh3=氘-æ°Š3 等犻子䜓 hbmfluid.plasma_dt=氘-氚等犻子䜓 hbmfluid.plasma_hd=æ°¢-氘等犻子䜓 hbmfluid.plasma_ht=æ°¢-氚等犻子䜓 hbmfluid.plasma_xm=氙-汞等犻子䜓 +hbmfluid.potassium_chloride=氯化钟溶液 hbmfluid.puf6=六氟化钚 +hbmfluid.radiosolvent=高性胜溶剂 hbmfluid.reclaimed=再生油 +hbmfluid.redmud=红色泥浆 +hbmfluid.reformate=重敎油 +hbmfluid.reformgas=重敎气 hbmfluid.salient=绿色液䜓 hbmfluid.sas3=䞉硫化Sa hbmfluid.schrabidic=Sa酾 hbmfluid.seedslurry=播种浆料 hbmfluid.smear=工䞚油 +hbmfluid.solvent=有机溶剂 +hbmfluid.sourgas=高硫倩然气 hbmfluid.spentsteam=䜎压蒞汜 hbmfluid.steam=蒞汜 hbmfluid.sulfuric_acid=ç¡«é…ž +hbmfluid.sunfloweroil=葵花籜油 hbmfluid.superhotsteam=超热蒞汜 +hbmfluid.syngas=合成气 hbmfluid.tritium=氚 hbmfluid.uf6=六氟化铀 hbmfluid.ultrahotsteam=超浓密蒞汜 @@ -955,14 +1291,15 @@ hbmfluid.watz=毒泥浆 hbmfluid.woodoil=朚油 hbmfluid.xenon=氙气 hbmfluid.xpjuice=经验汁 +hbmfluid.xylene=蜻莚芳烃BTX hbmpseudofluid.none=空 hbmpseudofluid.heuf6=高浓猩六氟化铀 hbmpseudofluid.meuf6=䞭浓猩六氟化铀 hbmpseudofluid.leuf6=䜎浓猩六氟化铀 hbmpseudofluid.nuf6=倩然浓床六氟化铀 hbmpseudofluid.pf6=六氟化钚 -hbmpseudofluid.mud_heavy=重毒泥浆銏分 -hbmpseudofluid.mud=有毒泥浆气䜓 +hbmpseudofluid.mud_heavy=毒泥浆重銏分 +hbmpseudofluid.mud=毒泥浆气态物 hbmmat.actinium227=锕-227 hbmmat.advancedalloy=高级合金 hbmmat.aluminum=铝 @@ -976,7 +1313,9 @@ hbmmat.beryllium=铍 hbmmat.bismuth=铋 hbmmat.borax=硌砂 hbmmat.boron=硌 +hbmmat.cadmium=镉 hbmmat.carbon=碳 +hbmmat.cdalloy=镉钢 hbmmat.cinnabar=朱砂 hbmmat.cmbsteel=CMB钢 hbmmat.coal=ç…€ @@ -985,6 +1324,7 @@ hbmmat.cobalt=钮 hbmmat.cobalt60=钮-60 hbmmat.coltan=钶钜铁矿 hbmmat.copper=铜 +hbmmat.desh=Desh hbmmat.dineutronium=双聚䞭子态玠 hbmmat.durasteel=高速钢 hbmmat.euphemium=Ep @@ -1008,7 +1348,7 @@ hbmmat.lithium=锂 hbmmat.magnetizedtungsten=磁化钚 hbmmat.malachite=孔雀石 hbmmat.meteoriciron=陹铁 -hbmmat.mingrade=工䞚级铜 +hbmmat.mingrade=玫铜 hbmmat.neptunium237=镎-237 hbmmat.niobium=铌 hbmmat.obsidian=黑曜岩 @@ -1048,6 +1388,7 @@ hbmmat.uranium=铀 hbmmat.uranium233=铀-233 hbmmat.uranium235=铀-235 hbmmat.uranium238=铀-238 +hbmmat.watzmud=毒泥浆 hbmmat.whitephosphorus=癜磷 hbmmat.workersalloy=Desh hbmmat.wroughtiron=锻铁 @@ -1091,6 +1432,7 @@ 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号鹿匹 @@ -1117,6 +1459,9 @@ 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 子匹 +item.ammo_45_ap.name=.45 ACP 子匹[AP] +item.ammo_45_du.name=.45 ACP 子匹[莫铀] item.ammo_4gauge.name=四号鹿匹 item.ammo_4gauge_balefire.name=23mm野火抎匹 item.ammo_4gauge_canister.name=23mm 火箭匹[抎霰匹] @@ -1171,6 +1516,12 @@ item.ammo_5mm_star.name=5mm子匹[星蟉] item.ammo_75bolt.name=.75匹匣(30发) item.ammo_75bolt_incendiary.name=.75燃烧匹匣(30发) item.ammo_75bolt_he.name=.75高爆匹匣(30发) +item.ammo_762.name=7.62mm 子匹 +item.ammo_762_ap.name=7.62mm 子匹[AP] +item.ammo_762_du.name=7.62mm 子匹[莫铀] +item.ammo_762_k.name=7.62mm 空包匹 +item.ammo_762_phosphorus.name=7.62mm 子匹[癜磷] +item.ammo_762_tracer.name=7.62mm 子匹[曳光] item.ammo_9mm.name=9mm子匹 item.ammo_9mm_ap.name=9mm子匹[AP] item.ammo_9mm_chlorophyte.name=9mm子匹[叶绿] @@ -1178,11 +1529,14 @@ item.ammo_9mm_du.name=9mm子匹[莫铀] item.ammo_9mm_rocket.name=9mm火箭匹 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=胜量单元 @@ -1213,8 +1567,17 @@ item.ammo_grenade_phosphorus.name=40mm抎匹[癜磷] item.ammo_grenade_sleek.name=40mm抎匹[IF-R&D] item.ammo_grenade_toxic.name=40mm抎匹[化孊] item.ammo_grenade_tracer.name=40mm训练抎匹 -item.ammo_himars_standard.name=M28制富炮兵火箭匹舱 -item.ammo_himars_single.name=M39A1制富炮兵火箭匹舱 +item.ammo_himars_standard.name=M28制富火箭炮系统火箭匹舱 +item.ammo_himars_standard_he.name=227毫米制富火箭炮系统火箭吊舱HE +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_single.name=M39A1制富火箭炮系统火箭匹舱 +item.ammo_himars_single_tb.name=610毫米制富火炮火箭吊舱枩压匹 +item.ammo_luna.name=Lunatic狙击匹 +item.ammo_luna_explosive.name=Lunatic狙击爆炞匹 +item.ammo_luna_incendiary.name=Lunatic狙击燃烧匹 item.ammo_mirv.name=迷䜠MIRV item.ammo_mirv_high.name=迷䜠MIRV (高圓量) item.ammo_mirv_low.name=迷䜠MIRV (䜎圓量) @@ -1294,7 +1657,9 @@ item.asbestos_helmet.name=防火倎盔 item.asbestos_legs.name=防火技腿 item.asbestos_plate.name=防火胞甲 item.ashglasses.name=防灰烬技目镜 +item.assembly_45.name=.45 ACP子匹[埅装配] item.assembly_556.name=5.56mm子匹[埅装配] +item.assembly_762.name=7.62mm子匹[埅装配] item.assembly_actionexpress.name=.50 AE子匹[埅装配] item.assembly_calamity.name=.50 BMG子匹[埅装配] item.assembly_desh.name=Desh子匹[埅装配] @@ -1302,6 +1667,7 @@ item.assembly_gold.name=金子匹[埅装配] item.assembly_iron.name=铁子匹[埅装配] item.assembly_lacunae.name=.5mm子匹[埅装配] item.assembly_lead.name=玻璃子匹[埅装配] +item.assembly_luna.name=Lunatic狙击子匹[埅装配] item.assembly_nightmare.name=钚子匹[埅装配] item.assembly_nopip.name=.44马栌南[埅装配] item.assembly_nuke.name=迷䜠栞匹倖壳 @@ -1312,7 +1678,7 @@ item.assembly_steel.name=铅子匹[埅装配] item.assembly_template.name=装配机暡板: item.assembly_uzi.name=.22 LR子匹[埅装配] item.attachment_mask.name=附加型防毒面具 -item.attachment_mask_mono.name=可接入匏防䞀氧化碳面眩 +item.attachment_mask_mono.name=可接入匏半面眩防毒面具 item.australium_iii.name=MkIII寿呜延长剂 item.australium_iv.name=MkIV寿呜延长剂 item.australium_v.name=MkV寿呜延长剂 @@ -1322,7 +1688,9 @@ item.balefire_and_steel.name=野火打火石 item.balefire_scrambled.name=炒野火蛋 item.ball_dynamite.name=硝糖炞药 item.ball_fireclay.name=耐火粘土 +item.ball_tatb.name=䞉氚基䞉硝基苯(TATB) item.ball_tnt.name=TNT炞药 +item.ballistic_gauntlet.name=冲击拳套 item.ballistite.name=混合无烟火药 item.bandaid.name=邊迪创可莎 item.bathwater.name=有毒肥皂氎 @@ -1366,6 +1734,7 @@ item.battery_steam_large.name=倧型蒞汜劚力傚胜眐 item.battery_su.name=SU-电池 item.battery_su_l.name=倧型SU-电池 item.battery_trixite.name=杂牌Spark电池 +item.bdcl.name=BDCL item.beta.name=Bata测试版功胜 item.big_sword.name=倧剑 item.billet_actinium.name=锕-227坯料 @@ -1443,12 +1812,7 @@ item.blade_meteorite.name=陚石刀 item.blade_titanium.name=钛扇片 item.blade_tungsten.name=钚区化扇片 item.blades_advanced_alloy.name=高级合金刀片 -item.blades_aluminium.name=铝制刀片 -item.blades_combine_steel.name=CMB钢刀片 item.blades_desh.name=Desh制刀片 -item.blades_gold.name=金制刀片 -item.blades_iron.name=铁制刀片 -item.blades_schrabidium.name=Sa326刀片 item.blades_steel.name=钢制刀片 item.blades_titanium.name=钛制刀片 item.blowtorch.name=喷灯 @@ -1461,6 +1825,7 @@ item.bobmazon_weapons.name=Bobmazon: 歊噚和爆炞物 item.bolt_compound.name=加区涡蜮机蜎 item.bolt_dura_steel.name=高速钢螺栓 item.bolt_tungsten.name=钚螺栓 +item.boltgun.name=气劚射钉枪 item.bomb_caller.name=空袭指瀺噚 item.bomb_waffle.name=倧规暡杀䌀性华倫饌 item.book_guide.name=HBM指富乊 @@ -1516,7 +1881,7 @@ item.canister_ethanol.name=桶装乙醇 item.canister_fracksol.name=桶装压裂液 item.canister_fuel.name=桶装柎油 item.canister_fuel.desc=倧家欢呌吧 -item.canister_full.name=容噚 +item.canister_full.name=油桶 item.canister_gasoline.name=桶装含铅汜油 item.canister_gasoline.desc=铅就是朋友$让朋友进入䜠的血液$*䞊膛声*现圚就做 item.canister_heatingoil.name=桶装燃油 @@ -1530,36 +1895,62 @@ item.canister_petroil.name=桶装汜油 item.canister_reoil.name=桶装再生油 item.canister_smear.name=桶装工䞚油 item.canned_asbestos.name=石棉眐倎 +item.canned_asbestos.desc=尝尝石棉肺 item.canned_ass.name=驎眐倎 +item.canned_ass.desc=100%䌘莚驎肉!* item.canned_bark.name=束树皮眐倎 +item.canned_bark.desc=曎加的“束”脆! item.canned_beef.name=牛肉眐倎 +item.canned_beef.desc=几䞪䞖纪前䞀倎牛䞺歀而死。 item.canned_bhole.name=黑掞眐倎 +item.canned_bhole.desc=奇点是我肚肚里的矎味! item.canned_cheese.name=融化奶酪眐倎 +item.canned_cheese.desc=是奶酪吗是橡胶氎泥吗谁知道谁圚乎。 item.canned_chinese.name=䞭逐眐倎 -item.canned_diesel.name=柎油 +item.canned_chinese.desc=圚䞭囜䞭逐被称䞺饭。 +item.canned_diesel.name=柎油眐倎 +item.canned_diesel.desc=我析析地就抖䞍出包袱了 item.canned_fist.name=拳倎眐倎 +item.canned_fist.desc=给䜠䞀拳! item.canned_fried.name=炞鞡眐倎 +item.canned_fried.desc=甚至眐倎郜是油炞的 item.canned_hotdogs.name=热狗眐倎 +item.canned_hotdogs.desc=䞍芁䞎冷猫混淆。 item.canned_jizz.name=FlimFlam工䞚牌?马奶眐倎 +item.canned_jizz.desc=等等什么—— item.canned_kerosene.name=煀油眐倎 +item.canned_kerosene.desc=想象䞀䞋这句俏皮的台词。 item.canned_leftovers.name=剩菜眐倎 +item.canned_leftovers.desc=䜠来的倪迟了 item.canned_milk.name=眐装炌乳 +item.canned_milk.desc=牛奶2比以埀任䜕时候郜曎固䜓 item.canned_mystery.name=神秘肉类眐倎 +item.canned_mystery.desc=里面是什么只有䞀种方法可以扟到 item.canned_napalm.name=凝固汜油眐倎 +item.canned_napalm.desc=我喜欢早䞊闻着老梗的味道! item.canned_oil.name=机油眐倎 +item.canned_oil.desc=它既然胜让发劚机运蜬的曎流畅那䞺什么䞍胜甚圚人类身䞊? item.canned_pashtet.name=牛排眐倎 +item.canned_pashtet.desc=翻译服务䞍可甚бляЎь item.canned_pizza.name=意倧利銙肠比萚眐倎 +item.canned_pizza.desc=反人类眪 item.canned_recursion.name=埪环眐倎 +item.canned_recursion.desc=封闭递園 item.canned_spam.name=SPAM斯垕姆午逐肉 +item.canned_spam.desc=这段䞉分半钟的幜默剧是以垃朗利虚构的绿䟏儒咖啡銆䞺背景。䞀䜍女服务生䞎䞍喜欢吃午逐肉的本倪倪之闎发生了争执女服务生背诵了䞀仜几乎每道菜郜含有午逐肉的菜单。本倪倪芁了䞀道没有午逐肉的菜这让她爱吃午逐肉的䞈倫倧吃䞀惊。女服务员也对这䞪芁求埈反感。本先生提出芁替换她的午逐肉并芁了䞀道含有倧量午逐肉和烀豆的菜。服务员拒绝了因䞺烀豆子已经吃完了圓本先生芁求替换午逐肉时女服务员再次衚瀺厌恶。有几次逐厅里的䞀矀绎京人高声歌唱午逐肉打断了谈话。那䞪愀怒的女服务员呜什他们闭嘎䜆他们䟝旧倧声唱歌。这时䞀名匈牙利枞客来到柜台试囟甚䞀本完党䞍准确的匈牙利语/英语手册参考之前的小品点菜。玧接着这名匈牙利枞客就被䞀名譊察迅速技送犻匀。然后这段幜默剧突然切换镜倎䞀䜍历史孊家圚电视挔播宀谈论绎京人圚咖啡銆的起源。他继续诎并匀始越来越倚地圚每䞀句话䞭插入“午逐肉”䞀词。然后背景被抬高露出背后的逐厅场景。那䞪历史孊家加入了绎京人的歌曲本倫劇通过电线犻匀现场而歌声还圚继续。圚最初的电视衚挔䞭结尟的字幕匀始滚劚背景䞭仍然可以听到歌声。 item.canned_stew.name=蘑菇煲眐倎 +item.canned_stew.desc=... item.canned_tomato.name=番茄汀眐倎 +item.canned_tomato.desc=谁芁浓浓的红糊糊? item.canned_tube.name=宇航员食品管 +item.canned_tube.desc=矎味的蘑菇。 item.canned_tuna.name=金枪鱌眐倎 +item.canned_tuna.desc=我䞍知道那是金枪鱌还是干氎泥。 item.canned_yogurt.name=酞奶眐倎 +item.canned_yogurt.desc=可胜坏掉了䜆管它呢 item.canteen_13.name=Vault13氎壶 item.canteen_fab.name=极品䌏特加 item.canteen_vodka.name=䌏特加 -item.cap_aluminium.name=铝盖 item.cap_fritz.name=北里茚瓶盖 item.cap_korl.name=Korl瓶盖 item.cap_nuka.name=栞子可乐瓶盖 @@ -1588,6 +1979,7 @@ item.casing_50.name=倧口埄匹壳[x8] item.casing_9.name=小口埄匹壳[x24] item.casing_buckshot.name=鹿匹匹壳[x8] item.catalyst_clay.name=黏土催化剂 +item.catalytic_converter.name=催化蜬化噚 item.cbt_device.name=CBT装眮 item.cell_anti_schrabidium.name=反Sa326单元 item.cell_antimatter.name=反物莚单元 @@ -1603,6 +1995,23 @@ 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=化工厂暡板: @@ -1665,7 +2074,7 @@ item.circuit_targeting_tier4.name=军甚级电路板[4级] item.circuit_targeting_tier5.name=军甚级电路板[5级] item.circuit_targeting_tier6.name=军甚级电路板[6级] item.cladding_desh.name=Desh芆层 -item.cladding_ghiorsium.name=石墚芆层 +item.cladding_ghiorsium.name=Gh336芆层 item.cladding_iron.name=铁芆层 item.cladding_lead.name=铅芆层 item.cladding_obsidian.name=黑曜石芆层 @@ -1730,8 +2139,8 @@ 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_copper.name=玫铜线圈 +item.coil_copper_torus.name=玫铜环圢线圈 item.coil_gold.name=金线圈 item.coil_gold_torus.name=金环圢线圈 item.coil_magnetized_tungsten.name=4000K高枩超富线圈 @@ -1749,9 +2158,27 @@ item.coltan_tool.name=钶钜铁矿指针 item.combine_scrap.name=CMB钢废料 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=坩埚暡板 @@ -1850,10 +2277,14 @@ item.door_office.name=办公宀闚 item.dosimeter.name=剂量计 item.drillbit_desh.name=Desh钻倎 item.drillbit_desh_diamond.name=Desh钻倎(镶钻) +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.drax.name=采掘钻 item.drax_mk2.name=区化型采掘钻 @@ -1886,6 +2317,8 @@ item.energy_core.name=䞎时胜源栞心 item.entanglement_kit.name=纠猠郚件 item.entanglement_kit.desc=䌠送机制䜜零件$通过$铍增区型资源扫描仪实现尺寞蜬换。 item.euphemium_boots.name=Ep靎子 +item.euphemium_capacitor.name=Ep电容 +item.euphemium_capacitor.desc=允讞被劚分散环积的正胜量。 item.euphemium_helmet.name=Ep倎盔 item.euphemium_kit.name=Ep工具箱 item.euphemium_legs.name=Ep技腿 @@ -1972,7 +2405,7 @@ item.gadget_kit.name=小玩意 套件 item.gadget_wireing.name=线路 item.gas_biogas.name=沌气眐 item.gas_empty.name=空气眐 -item.gas_full.name=倩然气眐 +item.gas_full.name=气䜓眐 item.gas_lpg.name=液化石油气眐 item.gas_mask.name=防毒面具 item.gas_mask_filter.name=防毒面具过滀噚 @@ -1981,7 +2414,7 @@ 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_mono.name=半面眩防毒面具 item.gas_mask_olde.name=皮革防毒面具 item.gas_petroleum.name=石油气眐 item.gas_tester.name=气䜓䌠感噚 @@ -2096,6 +2529,8 @@ item.gun_lever_action_ammo.name=12x74 鹿匹 item.gun_lever_action_dark.name=马腿杠杆匏霰匹枪[黑暗] item.gun_lever_action_sonata.name=自杀霰匹 item.gun_lever_action_sonata_2.name=§cSonata的麊克风§r +item.gun_lunatic_marksman.name=Lunatic狙击步枪 +item.gun_m2.name=勃朗宁M2HB型重机枪 item.gun_minigun.name=CZ53机枪 item.gun_mirv.name=M42栞匹发射噚 "试验型MIRV" item.gun_mirv_ammo.name=八倍MIRV @@ -2103,18 +2538,19 @@ item.gun_moist_nugget.name=莫蟛纳甘[迫真] item.gun_mp.name=和平䞻义的机枪 item.gun_mp40.name=MP40冲锋枪 item.gun_mp40_ammo.name=冲锋枪子匹 -item.gun_mp_ammo.name=小型无发射药机枪子匹 -item.gun_mymy.name=Nietes +item.gun_pm_ammo.name=小型无发射药机枪子匹 +item.gun_mymy.name=Nietes蜯匹枪 item.gun_osipr.name=标准型脉冲机枪 item.gun_osipr_ammo.name=暗胜量脉冲匹 item.gun_osipr_ammo2.name=融合球 item.gun_panzerschreck.name=战蜊噩梊 item.gun_proto.name=M42栞匹发射噚 "原始MIRV" item.gun_quadro.name=四喜䞞子 +item.gun_remington.name=バむデン ブラスト [拜登冲击波] item.gun_revolver.name=区化巊蜮手枪 item.gun_revolver_ammo.name=铅巊蜮子匹 item.gun_revolver_blackjack.name=黑杰克五发装巊蜮枪 -item.gun_revolver_cursed.name=诅咒巊蜮手枪 +item.gun_revolver_cursed.name=诅咒手枪 item.gun_revolver_cursed_ammo.name=钢巊蜮子匹 item.gun_revolver_gold.name=黄金巊蜮手枪 item.gun_revolver_gold_ammo.name=金巊蜮子匹 @@ -2230,12 +2666,15 @@ item.ingot_beryllium.name=铍锭 item.ingot_bismuth.name=铋锭 item.ingot_boron.name=硌锭 item.ingot_c4.name=䞀块C-4 +item.ingot_cadmium.name=镉锭 +item.ingot_calcium.name=钙锭 +item.ingot_cdalloy.name=镉钢锭 item.ingot_chainsteel.name=重铟钢 item.ingot_co60.name=钮-60锭 item.ingot_cobalt.name=钮锭 item.ingot_combine_steel.name=CMB钢锭 item.ingot_combine_steel.desc=*圚歀倄插入民事保技参考* -item.ingot_copper.name=工䞚级铜 +item.ingot_copper.name=工䞚级铜锭 item.ingot_daffergon.name=蟟倫莡锭 item.ingot_desh.name=Desh锭 item.ingot_dineutronium.name=双聚䞭子态玠锭 @@ -2243,7 +2682,7 @@ item.ingot_dura_steel.name=高速钢锭 item.ingot_electronium.name=电玠锭 item.ingot_euphemium.name=Ep锭 item.ingot_euphemium.desc=䞀䞪非垞特殊䜆又奇怪的元玠。 -item.ingot_ferrouranium.name=铀铁锭 +item.ingot_ferrouranium.name=铀铁合金锭 item.ingot_fiberglass.name=玻璃纀绎 item.ingot_fiberglass.desc=纀绎含量高玻璃含量高。身䜓需芁的䞀切。 item.ingot_firebrick.name=耐火砖 @@ -2260,6 +2699,7 @@ item.ingot_magnetized_tungsten.name=磁化钚锭 item.ingot_meteorite.name=陚石锭 item.ingot_meteorite_forged.name=锻造陚石锭 item.ingot_mox_fuel.name=MOX燃料锭 +item.ingot_mud.name=固化毒泥浆砖 item.ingot_neptunium.name=镎锭 item.ingot_neptunium.desc=那是我最喜欢的 item.ingot_neptunium.desc.P11=哇吓人 @@ -2267,6 +2707,8 @@ 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=铝金属化PET锭 item.ingot_phosphorus.name=癜磷锭 item.ingot_plutonium.name=钚锭 item.ingot_plutonium_fuel.name=钚燃料锭 @@ -2277,8 +2719,9 @@ item.ingot_pu238.name=钚-238锭 item.ingot_pu239.name=钚-239锭 item.ingot_pu240.name=钚-240锭 item.ingot_pu241.name=钚-241锭 +item.ingot_pvc.name=聚氯乙烯锭PVC item.ingot_ra226.name=镭-226锭 -item.ingot_red_copper.name=玫铜 +item.ingot_red_copper.name=玫铜锭 item.ingot_reiium.name=雷恩锭 item.ingot_rubber.name=橡胶锭 item.ingot_saturnite.name=土星锭 @@ -2484,6 +2927,7 @@ item.mold_base.name=毛坯铞造暡具 item.mold.name=铞造暡具 item.morning_glory.name=牵牛花 item.motor.name=马蟟 +item.motor_bismuth.name=铋马蟟 item.motor_desh.name=Desh马蟟 item.mp_c_1.name=1级富匹制富芯片 item.mp_c_2.name=2级富匹制富芯片 @@ -2557,6 +3001,7 @@ 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号匹䜓[固䜓燃料] @@ -2602,6 +3047,7 @@ item.mp_warhead_15_he.name=15号HE匹倎 item.mp_warhead_15_incendiary.name=15号燃烧匹倎 item.mp_warhead_15_n2.name=15号N2炞匹 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=亚利桑那芒果味饮料 @@ -2621,6 +3067,7 @@ item.n2_charge.name=倧型炞药 item.neutrino_lens.name=䞭子透镜 item.neutron_reflector.name=䞭子反射板 item.niter.name=硝石粉 +item.no9.name=矿工倎盔 item.nossy_hat.name=华䞜的垜子 item.nothing.name=没有䞜西 item.nuclear_waste.name=栞废料 @@ -2712,21 +3159,45 @@ 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.gold=金 item.ore.iron=铁 item.ore.niobium=铌 item.ore.titanium=钛 item.ore.tungsten=钹 +item.ore.thorium=钍 +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_enriched.name=富集%s矿 +item.ore_nitrated.name=硝化%s矿 +item.ore_nitrocrystalline.name=亚硝基结晶%s矿 item.ore_purified.name=净化%s矿 -item.ore_separated.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=氧气面眩 @@ -2838,6 +3309,7 @@ item.pill_iodine.name=碘䞞 item.pill_iodine.desc=消陀莟面buff item.pill_herbal.name=草药膏 item.pill_herbal.desc=有效治疗肺郚疟病和蜻床蟐射䞭毒$有副䜜甚 +item.pill_red.name=红色药䞞 item.pin.name=发倹 item.pin.desc=“*未修改*撬匀标准锁的成功率纊䞺10%。 item.pipes_steel.name=钢管 @@ -2849,6 +3321,7 @@ item.piston_set_starmetal.name=星蟉掻塞组 item.piston_set_steel.name=钢掻塞组 item.plan_c.name=C计划 item.plan_c.desc=臎死 +item.plant_item.mustardwillow.name=芥子柳叶 item.plant_item.rope.name=麻绳 item.plant_item.tobacco.name=烟叶 item.plate_advanced_alloy.name=高级合金板 @@ -2861,6 +3334,7 @@ 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=CMB钢板 item.plate_copper.name=铜板 item.plate_dalekanium.name=愀怒的金属 @@ -2886,6 +3360,7 @@ item.plate_schrabidium.name=Sa326板 item.plate_steel.name=钢板 item.plate_titanium.name=钛板 item.polaroid.name=偏光片 +item.pollution_detector.name=污染探测噚 item.powder_actinium.name=锕粉 item.powder_actinium_tiny.name=小撮锕粉 item.powder_advanced_alloy.name=高级合金粉 @@ -2899,13 +3374,17 @@ 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_cerium.name=铈粉 item.powder_cerium_tiny.name=小撮铈粉 +item.powder_chlorocalcite.name=氯方解石 item.powder_chlorophyte.name=叶绿粉 item.powder_cloud.name=云粉末 item.powder_co60.name=钮-60粉 @@ -2929,6 +3408,7 @@ item.powder_dura_steel.name=高速钢粉 item.powder_emerald.name=绿宝石粉 item.powder_euphemium.name=Ep粉 item.powder_euphemium.desc=粉红色$尝起来像草莓。 +item.powder_fertilizer.name=工䞚肥料 item.powder_fire.name=火焰粉 item.powder_fire.desc=甚于倚甚途炞匹燃烧匹埈有趣 item.powder_flux.name=助熔剂 @@ -3041,7 +3521,7 @@ item.rbmk_fuel_mox.name=MOX RBMK反应堆燃料棒 item.rbmk_fuel_po210be.name=钋210-铍 RBMK反应堆䞭子源 item.rbmk_fuel_pu238be.name=钚238-铍 RBMK反应堆䞭子源 item.rbmk_fuel_ra226be.name=镭226-铍 RBMK反应堆䞭子源 -item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆䞭浓猩床铀-235富向钍燃料棒 +item.rbmk_fuel_thmeu.name=ThMEU RBMK反应堆䞭浓猩床铀-233富向钍燃料棒 item.rbmk_fuel_ueu.name=NU RBMK反应堆未浓猩铀燃料棒 item.rbmk_fuel_zfb_am_mix.name=ZFB 燃料级镅RBMK反应堆燃料棒 item.rbmk_fuel_zfb_bismuth.name=ZFB 铋RBMK反应堆燃料棒 @@ -3352,6 +3832,7 @@ item.shimmer_head.name=重型销倎 item.shimmer_sledge.name=闪耀销 item.singularity.name=奇点 item.singularity_counter_resonant.name=可控反振谐奇点 +item.singularity_micro.name=埮型奇点 item.singularity_spark.name=Spark奇点 item.singularity_super_heated.name=超热共振奇点 item.siox.name=SiOX抗癌药物 @@ -3377,33 +3858,33 @@ 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_desh_circuit.name=Desh电路版锻暡 +item.stamp_50.name=倧口埄匹壳锻暡 +item.stamp_9.name=小口埄匹壳锻暡 +item.stamp_desh_circuit.name=Desh电路板锻暡 item.stamp_desh_flat.name=Desh锻暡 item.stamp_desh_plate.name=Desh板锻暡 item.stamp_desh_wire.name=Desh电线锻暡 -item.stamp_iron_circuit.name=铁莚电路版锻暡 +item.stamp_desh_357.name=.357马栌南锻暡 (Desh) +item.stamp_desh_44.name=.44马栌南锻暡 (Desh) +item.stamp_desh_50.name=倧口埄匹壳锻暡Desh +item.stamp_desh_9.name=小口埄匹壳锻暡Desh +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_circuit.name=黑曜石电路板锻暡 item.stamp_obsidian_flat.name=黑曜石锻暡 item.stamp_obsidian_plate.name=黑曜石板锻暡 item.stamp_obsidian_wire.name=黑曜石电线锻暡 -item.stamp_schrabidium_circuit.name=Sa326电路版锻暡 -item.stamp_schrabidium_flat.name=Sa326锻暡 -item.stamp_schrabidium_plate.name=Sa326板锻暡 -item.stamp_schrabidium_wire.name=Sa326电线锻暡 -item.stamp_steel_circuit.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_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_circuit.name=钛莚电路板锻暡 item.stamp_titanium_flat.name=钛莚锻暡 item.stamp_titanium_plate.name=钛莚板锻暡 item.stamp_titanium_wire.name=钛莚电线锻暡 @@ -3433,6 +3914,7 @@ 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=TNT棒 item.stopsign.name=停蜊标志战斧 @@ -3495,6 +3977,7 @@ item.titanium_plate.name=钛胞甲 item.titanium_shovel.name=钛锹 item.titanium_sword.name=钛剑 item.toothpicks.name=牙筟 +item.train.cargo_tram.name=平板蜜莧电蜊 item.trinitite.name=玻璃石 item.tritium_deuterium_cake.name=氚氘饌 item.tritium_deuterium_cake.desc=䞍是真正的蛋糕而是埈棒的$聚变燃料 @@ -3592,6 +4075,30 @@ item.waste_uranium.name=枯竭铀燃料 item.waste_zfb_mox.name=枯竭的ZFB MOX燃料 item.watch.name=砎旧怀衚 item.watch.desc=䞀块蓝色的小怀衚$玻璃䞊有䞀些裂猝还有䞀些碎片䞍见了$指针定栌圚了2点34分。 +item.watz_pellet.boron.name=硌吞收靶䞞 +item.watz_pellet.du.name=莫铀吞收靶䞞 +item.watz_pellet.hes.name=HES Watz靶䞞 +item.watz_pellet.lead.name=铅吞收靶䞞 +item.watz_pellet.les.name=LES Watz靶䞞 +item.watz_pellet.mes.name=MES Watz靶䞞 +item.watz_pellet.mep.name=MEP Watz靶䞞 +item.watz_pellet.meu.name=MEU Watz靶䞞 +item.watz_pellet.nqd.name=富集硅岩金属 Watz靶䞞 +item.watz_pellet.nqr.name=硅岩金属 Watz靶䞞 +item.watz_pellet.hen.name=HEN Watz靶䞞 +item.watz_pellet.schrabidium.name=Sa326 Watz靶䞞 +item.watz_pellet_depleted.boron.name=硌吞收靶䞞枯竭 +item.watz_pellet_depleted.du.name=莫铀吞收靶䞞枯竭 +item.watz_pellet_depleted.hes.name=HES Watz靶䞞枯竭 +item.watz_pellet_depleted.lead.name=铅吞收靶䞞枯竭 +item.watz_pellet_depleted.les.name=LES Watz靶䞞枯竭 +item.watz_pellet_depleted.mes.name=MES Watz靶䞞枯竭 +item.watz_pellet_depleted.mep.name=MEP Watz靶䞞枯竭 +item.watz_pellet_depleted.meu.name=MEU Watz靶䞞枯竭 +item.watz_pellet_depleted.nqd.name=富集硅岩金属 Watz靶䞞枯竭 +item.watz_pellet_depleted.nqr.name=硅岩金属 Watz靶䞞枯竭 +item.watz_pellet_depleted.hen.name=HEN Watz靶䞞枯竭 +item.watz_pellet_depleted.schrabidium.name=Sa326 Watz靶䞞枯竭 item.weapon_bat.name=板球棒 item.weapon_bat_nail.name=板䞊钉钉 item.weapon_golf_club.name=黑手党快乐杆 @@ -3673,7 +4180,7 @@ rbmk.screen.rod=控制%s rbmk.screen.temp=枩床%s rbmk.screen.xenon=氙%s shape.billet=钢坯 -shape.blade=刀身 +shape.blade=扇叶 shape.blades=切碎机刀片 shape.block=块 shape.dust=粉末 @@ -3685,6 +4192,7 @@ shape.nugget=粒 shape.quantum=量子 shape.quart=四分之䞀块 shape.plate=板材 +shape.plateTriple=铞造板 shape.stamp=锻压暡具 shape.wire=线材 soundCategory.ntmMachines=NTM机噚 @@ -3699,7 +4207,7 @@ tile.ams_limiter.name=AMS皳胜噚 [匀发䞭] tile.ancient_scrap.name=叀代废金属 tile.anvil_bismuth.name=铋砧 tile.anvil_dnt.name=双聚䞭子态玠砧 -tile.anvil_ferrouranium.name=铀-铁合金砧 +tile.anvil_ferrouranium.name=铀铁合金砧 tile.anvil_iron.name=铁砧 tile.anvil_lead.name=铅砧 tile.anvil_meteorite.name=陚石砧 @@ -3744,6 +4252,7 @@ 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=Korl瓶盖方块 tile.block_cap_nuka.name=栞子可乐瓶盖方块 @@ -3752,6 +4261,7 @@ tile.block_cap_rad.name=蟐射 S~栞子可乐瓶盖方块 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=耐煀焊炭块 @@ -3823,6 +4333,7 @@ tile.block_starmetal.name=星蟉块 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=钛块 @@ -3896,10 +4407,17 @@ 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_tantalium.name=钜电容 +tile.capacitor.desc=蟓入顶郚$蟓出底郚通过电容总线 tile.charge_c4.name=炞药包 tile.charge_dynamite.name=定时炞匹 tile.charge_miner.name=定时采矿炞药 -tile.charge_semtex.name=Semtex采矿炞药 +tile.charge_semtex.name=塞姆汀采矿炞药 tile.charger.name=充电站 tile.cheater_virus.name=冻结Ep tile.cheater_virus_seed.name=䞍皳定Ep Schrabide块 @@ -3938,6 +4456,12 @@ tile.concrete_colored.red.name=红色混凝土 tile.concrete_colored.silver.name=淡灰色混凝土 tile.concrete_colored.white.name=癜色混凝土 tile.concrete_colored.yellow.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_pillar.name=钢筋混凝土柱 tile.concrete_slab.concrete.name=混凝土瓷砖板 tile.concrete_slab.concrete_asbestos.name=石棉混凝土板 @@ -3957,8 +4481,10 @@ tile.conveyor_triple.name=䞉蜚道蟓送垊 tile.corium_block.name=堆芯熔融物 tile.crane_boxer.name=蟓送垊打包机 tile.crane_extractor.name=蟓送垊提取噚 +tile.crane_grabber.name=蟓送垊抓斗 tile.crane_inserter.name=蟓送垊富入噚 tile.crane_router.name=蟓送垊分拣机 +tile.crane_splitter.name=蟓送垊分犻噚 tile.crane_unboxer.name=蟓送垊解包机 tile.crashed_bomb.name=哑匹 tile.crate.name=补给箱 @@ -3981,6 +4507,8 @@ tile.deco_asbestos.name=石棉瓊 tile.deco_beryllium.name=铍装饰块 tile.deco_computer.ibm_300pl.name=IBM䞪人电脑300PL tile.deco_emitter.name=Deco发光䜓 +tile.part_emitter.name=Deco粒子发射噚 +tile.piston_inserter.name=插入噚 tile.deco_lead.name=铅装饰块 tile.deco_rbmk.name=RBMK装饰块 tile.deco_rbmk_smooth.name=平滑RBMK装饰块 @@ -4051,6 +4579,7 @@ tile.factory_titanium_core.name=工厂栞心组件 tile.factory_titanium_furnace.name=工厂端口 tile.factory_titanium_hull.name=工厂倖壳 tile.fallout.name=蟐射尘 +tile.fan.name=风扇 tile.fence_metal.name=铁䞝眑囎栏 tile.field_disturber.name=高胜场干扰机 tile.filing_cabinet.green.name=蒙尘的文件柜 @@ -4061,6 +4590,7 @@ 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.fluid_duct.name=通甚流䜓管道 @@ -4071,11 +4601,12 @@ tile.fluid_duct_neo.name=通甚流䜓管道 tile.fluid_duct_paintable.name=可喷挆涂层通甚流䜓富管 tile.fluid_duct_solid.name=垊涂层的通甚流䜓富管 tile.foam_layer.name=泡沫层 -tile.foundry_basin.name=铞造氎池 +tile.foundry_basin.name=链造盘 tile.foundry_channel.name=铞造浇道 tile.foundry_tank.name=铞造池 tile.foundry_mold.name=浅铞造池 -tile.foundry_outlet.name=铞造出口 +tile.foundry_outlet.name=浇筑出口 +tile.foundry_slagtap.name=炉枣出口 tile.fraction_spacer.name=分銏塔分隔噚 tile.frozen_dirt.name=冰冻土 tile.frozen_grass.name=冰冻草 @@ -4089,6 +4620,7 @@ tile.furnace_steel.name=钢炉 tile.furnace_steel.desc=非垞倧的熔炉冶炌矿石时可提䟛加成。$这需芁倖郚热源$䌠热率ΔT*0.05tu/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=等犻子加热噚 @@ -4120,6 +4652,8 @@ 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=页岩瓷砖 @@ -4145,7 +4679,7 @@ tile.hadron_plating_blue.name=粒子加速噚镀层 (蓝) tile.hadron_plating_glass.name=粒子加速噚镀层 (窗口) tile.hadron_plating_striped.name=粒子加速噚镀层(䜎枩危险) tile.hadron_plating_voltz.name=粒子加速噚镀层 (VOLTZ) -tile.hadron_plating_yellow.name=粒子加速噚镀层(YelloDye) +tile.hadron_plating_yellow.name=粒子加速噚镀层(Yello染料) tile.hadron_power.name=粒子加速噚电源接口 tile.hadron_power_10m.name=粒子加速噚电源接口(10MHE) tile.hadron_power_100m.name=粒子加速噚电源接口(100MHE) @@ -4191,6 +4725,7 @@ tile.machine_armor_table.name=装甲改装台 tile.machine_assembler.name=装配机 tile.machine_assemfac.name=装配厂 tile.machine_autocrafter.name=自劚工䜜台 +tile.machine_autosaw.name=自劚嗡嗡锯 tile.machine_bat9000.name=å·šå°»-9000 傚眐 tile.machine_battery.name=蓄电池 tile.machine_battery_potato.name=马铃薯电池组 @@ -4201,6 +4736,7 @@ tile.machine_boiler_electric_on.name=电锅炉 tile.machine_boiler_off.name=锅炉 tile.machine_boiler_on.name=锅炉 tile.machine_catalytic_cracker.name=催化裂化塔 +tile.machine_catalytic_reformer.name=催化重敎噚 tile.machine_centrifuge.name=犻心机 tile.machine_chemfac.name=倧型化工厂 tile.machine_chemplant.name=化工厂 @@ -4208,8 +4744,11 @@ tile.machine_chungus.name=“利绎坊”巚型汜蜮机 tile.machine_chungus.desc=效率: 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=CMB炌钢炉 tile.machine_combustion_engine.name=工䞚内燃机 +tile.machine_compressor.name=压猩机 tile.machine_condenser.name=蒞汜冷凝噚 tile.machine_controller.name=反应堆遥控暡块 tile.machine_converter_he_rf.name=HE→RF蜬换噚 @@ -4221,6 +4760,7 @@ tile.machine_detector.name=功率检测噚 tile.machine_deuterium_extractor.name=氘提取噚 tile.machine_deuterium_tower.name=氘萃取塔 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=栞高炉 @@ -4241,6 +4781,7 @@ tile.machine_fracking_tower.name=氎力压裂塔 tile.machine_gascent.name=气䜓犻心机 tile.machine_generator.name=栞反应堆[旧] tile.machine_geo.name=地热发电机 +tile.machine_hephaestus.name=地热换热噚 tile.machine_industrial_generator.name=工䞚发电机 tile.machine_keyforge.name=锁匠桌 tile.machine_large_turbine.name=工䞚汜蜮机 @@ -4264,7 +4805,7 @@ tile.machine_radar.name=雷蟟 tile.machine_radgen.name=蟐射胜量发电机 tile.machine_radiolysis.name=攟射性同䜍玠热电机和蟐射裂解宀 tile.machine_reactor.name=增殖反应堆 -tile.machine_reactor_small.name=栞反应堆 +tile.machine_reactor_small.name=研究型反应堆 tile.machine_refinery.name=炌油厂 tile.machine_reix_mainframe.name=Rei-X䞻机[匀发䞭] tile.machine_rtg_blue.name=对流发电机 @@ -4279,11 +4820,12 @@ 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最倧进气量300 TU/T tile.machine_schrabidium_battery.name=Sa326蓄电池 tile.machine_schrabidium_transmutator.name=Sa326嬗变装眮 tile.machine_selenium.name=星型发劚机 tile.machine_shredder.name=粉碎机 -tile.machine_silex.name=激光同䜍玠分犻宀 +tile.machine_silex.name=SILEX激光同䜍玠分犻宀 tile.machine_siren.name=譊报噚 tile.machine_solar_boiler.name=倪阳胜锅炉 tile.machine_solidifier.name=工䞚固化机 @@ -4294,7 +4836,7 @@ 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_steel.name=重型斯特林发劚机 +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_telelinker.name=炮塔ID管理噚 @@ -4307,8 +4849,10 @@ tile.machine_transformer_dnt.name=DNT-20Hz变频噚 tile.machine_transformer_dnt_20.name=DNT-1Hz变频噚 tile.machine_turbine.name=汜蜮机 tile.machine_turbine.desc=效率: 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_well.name=钻油塔 tile.machine_zirnox.name=锆诺克斯栞反应堆 @@ -4416,6 +4960,7 @@ 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.pink_barrel.name=煀油桶 tile.pink_log.name=粉色原朚 @@ -4423,11 +4968,17 @@ tile.pink_planks.name=粉色朚板 tile.pink_slab.name=粉色朚半砖 tile.pink_stairs.name=粉色朚台阶 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.pole_satellite_receiver.name=卫星倩线 @@ -4437,9 +4988,9 @@ tile.pribris.name=RBMK石墚匏反应堆残骞 tile.pribris_burning.name=燃烧的RBMK反应堆残骞 tile.pribris_digamma.name=发黑的RBMK反应堆残骞 tile.pribris_radiating.name=阮燃的RBMK反应堆残骞 -tile.radio_torch_receiver.name=无线电接收噚䞊的红石 +tile.radio_torch_receiver.name=无线红石信号接收噚 tile.radio_torch_receiver.desc=可圚平坊衚面或䞎比蟃噚兌容的方块䞊攟眮 -tile.radio_torch_sender.name=无线电发射机䞊的红石 +tile.radio_torch_sender.name=无线红石信号发射噚 tile.radio_torch_sender.desc=可圚平坊衚面或比蟃噚兌容的方块䞊攟眮$读取红石信号或比蟃噚蟓入 tile.radiobox.name=无线怪物枅陀箱 tile.radiorec.name=坏掉的收音机 @@ -4488,12 +5039,15 @@ 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=保险箱 @@ -4537,6 +5091,8 @@ 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=钢脚手架 @@ -4547,6 +5103,7 @@ tile.stone_depth_nether.name=䞋界深层岩石 tile.stone_gneiss.name=石墚页岩 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=孔雀石 @@ -4558,6 +5115,7 @@ 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=Watz发电厂栞心组件 tile.substation.name=变电站 tile.sulfuric_acid_block.name=ç¡«é…ž tile.taint.name=腐莚 @@ -4592,6 +5150,7 @@ tile.turret_maxwell.name=高胜埮波炮塔 "麊克斯韊" tile.turret_rocket.name=火箭炮塔 tile.turret_richard.name=火箭炮塔“理查執” tile.turret_spitfire.name=目前没有名字[匀发䞭] +tile.turret_sentry.name=哚兵炮塔“垃朗” tile.turret_tau.name=陶子炮塔 tile.turret_tauon.name=XVL1456原型陶子发射噚炮塔"陶恩" tile.vacuum.name=真空 @@ -4612,13 +5171,16 @@ tile.waste_mycelium.name=发光菌䞝 tile.waste_planks.name=烧焊朚板 tile.waste_trinitite.name=栞融玻璃矿石 tile.waste_trinitite_red.name=红色栞融玻璃矿石 +tile.watz.name=Watz发电厂 tile.watz_conductor.name=Watz电力端口 tile.watz_control.name=加区控制棒 tile.watz_cooler.name=Watz反应堆过冷噚 tile.watz_core.name=Watz反应堆控制噚 tile.watz_element.name=Watz反应宀 tile.watz_end.name=Watz反应堆皳定元件 +tile.watz_end_bolted.name=Watz反应堆皳定元件铆接 tile.watz_hatch.name=Watz反应堆端口 +tile.watz_pump.name=Watz压力泵 tile.yellow_barrel.name=栞废料桶 tile.zirnox_destroyed.name=损毁的ZINROX trait.asbestos=石棉 diff --git a/src/main/resources/assets/hbm/models/armor/envsuit.obj b/src/main/resources/assets/hbm/models/armor/envsuit.obj new file mode 100644 index 000000000..6a6abae64 --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/envsuit.obj @@ -0,0 +1,3595 @@ +# Blender v2.79 (sub 0) OBJ File: 'envsuit_scaled.blend' +# www.blender.org +o Lamps +v 4.199997 -9.250000 -2.625000 +v 2.099997 -9.250000 -2.625000 +v 3.674997 -10.825001 -3.150000 +v 2.624997 -10.825001 -3.150000 +v -2.100003 -9.250000 -2.625000 +v -4.200003 -9.250000 -2.625000 +v -2.625003 -10.825001 -3.150000 +v -3.675003 -10.825001 -3.150000 +vt 0.401810 0.000103 +vt 0.000103 0.499897 +vt 0.134006 0.000103 +vt 0.134006 0.500103 +vt 0.535712 0.999897 +vt 0.000103 0.999897 +vt 0.535712 0.499897 +vt 0.401809 0.500103 +vn 0.0000 0.3162 -0.9487 +s off +f 4/1/1 1/2/1 3/3/1 +f 7/4/1 6/5/1 5/6/1 +f 4/1/1 2/7/1 1/2/1 +f 7/4/1 8/8/1 6/5/1 +o Chest +v 4.199999 12.299999 2.100000 +v -4.200001 12.299999 2.100000 +v 4.199999 12.299999 -2.100000 +v -4.200001 12.299999 -2.100000 +v -3.150002 0.750000 2.625000 +v 3.149997 0.750000 2.625000 +v -3.150001 9.150000 2.625000 +v 3.149998 9.150000 2.625000 +v 4.199998 6.000000 2.100000 +v -4.200002 6.000000 2.100000 +v 4.199998 6.000000 -2.100000 +v -4.200002 6.000000 -2.100000 +v 4.199998 6.000000 -2.625000 +v -4.200002 6.000000 -2.625000 +v 4.199998 6.000000 2.625000 +v -4.200002 6.000000 2.625000 +v 4.724999 6.000000 2.100000 +v 4.724999 6.000000 -2.100000 +v -4.725001 6.000000 2.100000 +v -4.725001 6.000000 -2.100000 +v 4.199998 -0.299999 -2.625000 +v -4.200002 -0.299999 -2.625000 +v 4.199998 -0.299999 2.625000 +v -4.200002 -0.299999 2.625000 +v 4.724998 -0.299999 2.100000 +v 4.724998 -0.299999 -2.100000 +v -4.725002 -0.299999 2.100000 +v -4.725002 -0.299999 -2.100000 +v 4.199998 -0.825001 -2.100000 +v 4.199998 -0.825001 2.100000 +v -4.200002 -0.825001 2.100000 +v -4.200002 -0.825001 -2.100000 +v -0.000002 -0.299999 -3.675000 +v -2.100002 -0.299999 -2.625000 +v -0.000002 1.799999 -3.675000 +v -2.100002 1.799999 -2.625000 +v 2.099998 -0.299999 -2.625000 +v 2.099998 1.799999 -2.625000 +v -0.000002 3.900000 -2.625000 +v -2.100001 10.200000 2.625000 +v 2.099999 10.200000 2.625000 +v -3.150002 0.750000 6.825000 +v 3.149997 0.750000 6.825000 +v -3.150001 9.150000 6.825000 +v 3.149998 9.150000 6.825000 +v 2.099999 10.200000 6.825000 +v -2.100001 10.200000 6.825000 +v 3.149997 0.750000 5.775000 +v -3.150002 0.750000 5.775000 +v 3.149997 0.750000 3.675000 +v -3.150002 0.750000 3.675000 +v 3.149997 -0.299999 3.675000 +v 3.149997 -0.299999 5.775000 +v -3.150002 -0.299999 5.775000 +v -3.150002 -0.299999 3.675000 +v 3.149998 3.900000 5.775000 +v -3.150001 3.900000 5.775000 +v 3.149998 3.900000 3.675000 +v -3.150001 3.900000 3.675000 +v 4.199998 2.850000 5.775000 +v -4.200002 2.850000 5.775000 +v 4.199998 2.850000 3.675000 +v -4.200002 2.850000 3.675000 +v 4.199998 0.750000 5.775000 +v -4.200002 0.750000 5.775000 +v 4.199998 0.750000 3.675000 +v -4.200002 0.750000 3.675000 +v 2.624998 3.900000 6.825000 +v -2.625002 3.900000 6.825000 +v 2.624998 1.799999 6.825000 +v -2.625002 1.799999 6.825000 +v 2.624998 1.799999 7.875000 +v 2.624998 3.900000 7.875000 +v -2.625002 3.900000 7.875000 +v -2.625002 1.799999 7.875000 +v -4.200002 5.475000 -2.625000 +v 4.199998 5.475000 -2.625000 +v -3.150001 3.900000 -4.200000 +v 3.149998 3.900000 -4.200000 +v -4.200002 0.750000 -2.625000 +v 4.199998 0.750000 -2.625000 +vt 0.478261 0.181818 +vt 0.304348 -0.000000 +vt 0.478261 0.000000 +vt 0.695652 0.590909 +vt 0.565217 0.227273 +vt 0.695652 0.227273 +vt 0.304348 0.454545 +vt 0.217391 0.181818 +vt 0.304348 0.181818 +vt 0.478261 0.454545 +vt 0.565217 0.181818 +vt 0.043478 0.454545 +vt 0.043478 0.181818 +vt 0.467391 0.477273 +vt 0.293478 0.454545 +vt 0.467391 0.454545 +vt 0.184783 0.477273 +vt 0.010870 0.454545 +vt 0.184783 0.454545 +vt 0.565217 0.477273 +vt 0.565217 0.454545 +vt 0.478261 0.477273 +vt 0.467391 0.454545 +vt 0.010870 0.477273 +vt 0.000000 0.454545 +vt 0.282609 0.454545 +vt 0.195652 0.477273 +vt 0.195652 0.454545 +vt 0.184783 0.454545 +vt 0.293478 0.477273 +vt 0.282609 0.454545 +vt 0.467391 0.750000 +vt 0.293478 0.750000 +vt 0.282609 0.477273 +vt 0.282609 0.750000 +vt 0.010870 0.750000 +vt -0.000000 0.477273 +vt 0.565217 0.750000 +vt 0.195652 0.750000 +vt 0.184783 0.750000 +vt 0.293478 0.954545 +vt 0.467391 0.772727 +vt 0.467391 0.954545 +vt 0.565217 0.772727 +vt 0.478261 0.750000 +vt 0.184783 0.772727 +vt 0.282609 0.772727 +vt 0.195652 0.772727 +vt 0.293478 0.772727 +vt 0.478261 0.772727 +vt -0.000000 0.750000 +vt 0.010870 0.772727 +vt 0.467391 0.954545 +vt 0.510870 0.863636 +vt 0.510870 0.954545 +vt 0.554348 0.954545 +vt 0.554348 1.000000 +vt 0.467391 1.000000 +vt 0.467391 0.863636 +vt 0.510870 0.772727 +vt 0.554348 0.863636 +vt 0.586957 0.181818 +vt 0.913043 0.227273 +vt 0.782609 0.590909 +vt 0.782609 0.227273 +vt 0.891304 0.181818 +vt 0.782609 0.772727 +vt 0.913043 0.590909 +vt 0.913043 0.772727 +vt 0.695652 0.181818 +vt 0.891304 0.000000 +vt 0.804348 0.181818 +vt 0.804348 -0.000000 +vt 1.000000 0.590909 +vt 1.000000 0.227273 +vt 0.913043 0.181818 +vt 1.000000 0.181818 +vt 0.782609 0.818182 +vt 0.652174 0.909091 +vt 0.652174 0.818182 +vt 0.652174 0.954545 +vt 0.782609 0.909091 +vt 0.782609 0.954545 +vt 0.782609 0.772727 +vt 0.652174 0.772727 +vt 0.804348 0.909091 +vt 0.847826 0.909091 +vt 0.869565 0.818182 +vt 0.869565 0.909091 +vt 0.586957 0.818182 +vt 0.565217 0.909091 +vt 0.565217 0.818182 +vt 0.847826 0.818182 +vt 0.630435 0.818182 +vt 0.586957 0.909091 +vt 0.793478 0.772727 +vt 0.804348 0.818182 +vt 0.804348 0.772727 +vt 0.869565 0.772727 +vt 0.793478 0.954545 +vt 0.804348 0.954545 +vt 0.641304 0.954545 +vt 0.630435 0.909091 +vt 0.630435 0.954545 +vt 0.565217 0.954545 +vt 0.641304 0.772727 +vt 0.630435 0.772727 +vt 0.782609 0.045455 +vt 0.673913 0.136364 +vt 0.673913 0.045455 +vt 0.673913 0.181818 +vt 0.782609 0.136364 +vt 0.782609 0.181818 +vt 0.782609 -0.000000 +vt 0.673913 -0.000000 +vt 0.804348 0.136364 +vt 0.804348 0.045455 +vt 0.652174 0.045455 +vt 0.652174 0.136364 +vt 0.086957 0.840909 +vt 0.054348 0.977273 +vt 0.054348 0.772727 +vt 0.293478 0.772727 +vt 0.293478 0.977273 +vt 0.260870 0.840909 +vt 0.260870 0.977273 +vt 0.108696 0.840909 +vt 0.239130 0.840909 +vt 0.086957 0.772727 +vt 0.260870 0.772727 +vt 0.565217 0.590909 +vt 0.217391 0.454545 +vt 0.673913 0.181818 +vt 0.782609 0.181818 +vt 0.869565 0.954545 +vt 0.565217 0.772727 +vt 0.086957 0.977273 +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.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5773 0.5774 +vn -0.5774 -0.5773 -0.5774 +vn 0.5774 -0.5773 -0.5774 +vn 0.5774 -0.5773 0.5774 +vn -0.4472 0.0000 -0.8944 +vn 0.4472 -0.0000 -0.8944 +vn -0.4082 0.4082 -0.8165 +vn 0.4082 0.4082 -0.8165 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.8321 0.0000 -0.5547 +vn 0.8321 0.0000 -0.5547 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 0.7071 -0.7071 +s off +f 11/9/2 10/10/2 9/11/2 +f 14/12/3 15/13/3 16/14/3 +f 20/15/4 10/16/4 12/17/4 +f 19/18/3 12/17/3 11/9/3 +f 9/19/5 19/18/5 11/9/5 +f 10/16/6 17/20/6 9/21/6 +f 21/22/2 20/23/2 19/24/2 +f 24/25/2 17/26/2 18/27/2 +f 25/28/2 19/18/2 17/29/2 +f 19/18/2 26/30/2 21/31/2 +f 17/26/2 23/32/2 25/33/2 +f 20/34/2 27/35/2 18/36/2 +f 18/36/2 27/35/2 24/37/2 +f 22/38/2 28/39/2 20/23/2 +f 26/30/7 29/40/7 21/22/7 +f 30/41/8 28/42/8 22/38/8 +f 36/43/4 27/35/4 28/42/4 +f 31/44/9 25/45/9 23/32/9 +f 29/40/3 22/38/3 21/22/3 +f 33/46/5 26/30/5 25/28/5 +f 35/47/10 24/25/10 27/35/10 +f 32/48/6 23/32/6 24/25/6 +f 39/49/11 37/50/11 38/51/11 +f 37/50/12 30/41/12 29/40/12 +f 38/52/13 34/53/13 33/46/13 +f 39/54/14 31/44/14 32/48/14 +f 40/55/15 35/47/15 36/43/15 +f 35/47/16 39/56/16 32/48/16 +f 36/43/17 30/41/17 40/57/17 +f 34/53/18 37/58/18 29/40/18 +f 33/59/19 31/44/19 38/60/19 +f 42/61/20 43/62/20 41/63/20 +f 43/62/21 45/64/21 41/63/21 +f 41/63/11 45/65/11 42/66/11 +f 43/62/22 44/67/22 47/68/22 +f 46/69/23 43/62/23 47/68/23 +f 48/70/3 16/14/3 15/13/3 +f 52/71/6 51/72/6 53/73/6 +f 53/73/6 55/74/6 52/71/6 +f 14/75/11 50/76/11 13/77/11 +f 49/78/24 53/73/24 16/14/24 +f 48/79/2 54/80/2 49/81/2 +f 16/14/5 51/72/5 14/12/5 +f 13/82/4 52/71/4 15/83/4 +f 15/83/25 55/84/25 48/85/25 +f 62/86/11 60/87/11 61/88/11 +f 58/89/3 63/90/3 59/91/3 +f 57/92/6 61/88/6 56/93/6 +f 62/86/15 75/94/15 63/90/15 +f 71/95/25 65/96/25 67/97/25 +f 68/98/24 66/99/24 64/100/24 +f 75/94/4 69/101/4 71/95/4 +f 72/102/5 70/103/5 68/98/5 +f 62/86/6 57/104/6 73/105/6 +f 69/101/6 57/106/6 65/107/6 +f 59/108/3 63/90/3 75/94/3 +f 71/95/3 59/109/3 75/94/3 +f 60/87/13 72/102/13 61/88/13 +f 60/87/3 58/110/3 74/111/3 +f 70/103/3 58/112/3 66/113/3 +f 56/114/6 61/88/6 72/102/6 +f 68/98/6 56/115/6 72/102/6 +f 82/116/6 80/117/6 81/118/6 +f 78/119/11 83/120/11 79/121/11 +f 77/122/2 81/118/2 76/123/2 +f 79/124/4 82/116/4 77/125/4 +f 76/126/5 80/117/5 78/127/5 +f 86/128/26 88/129/26 84/130/26 +f 85/131/27 89/132/27 87/133/27 +f 89/134/28 86/135/28 87/136/28 +f 87/136/29 84/137/29 85/138/29 +f 11/9/2 12/17/2 10/10/2 +f 14/12/3 13/139/3 15/13/3 +f 20/15/4 18/140/4 10/16/4 +f 19/18/3 20/15/3 12/17/3 +f 9/19/5 17/29/5 19/18/5 +f 10/16/6 18/140/6 17/20/6 +f 21/22/2 22/38/2 20/23/2 +f 24/25/2 23/32/2 17/26/2 +f 25/28/2 26/30/2 19/18/2 +f 20/34/2 28/42/2 27/35/2 +f 26/30/7 34/53/7 29/40/7 +f 30/41/8 36/43/8 28/42/8 +f 36/43/4 35/47/4 27/35/4 +f 31/44/9 33/59/9 25/45/9 +f 29/40/3 30/41/3 22/38/3 +f 33/46/5 34/53/5 26/30/5 +f 35/47/10 32/48/10 24/25/10 +f 32/48/6 31/44/6 23/32/6 +f 39/49/11 40/57/11 37/50/11 +f 37/50/12 40/57/12 30/41/12 +f 38/52/13 37/58/13 34/53/13 +f 39/54/14 38/60/14 31/44/14 +f 40/55/15 39/56/15 35/47/15 +f 42/61/20 44/67/20 43/62/20 +f 43/62/21 46/69/21 45/64/21 +f 48/70/3 49/141/3 16/14/3 +f 52/71/6 50/76/6 51/72/6 +f 53/73/6 54/80/6 55/74/6 +f 14/75/11 51/72/11 50/76/11 +f 49/78/24 54/142/24 53/73/24 +f 48/79/2 55/74/2 54/80/2 +f 16/14/5 53/73/5 51/72/5 +f 13/82/4 50/76/4 52/71/4 +f 15/83/25 52/71/25 55/84/25 +f 62/86/11 63/90/11 60/87/11 +f 58/89/3 60/87/3 63/90/3 +f 57/92/6 62/86/6 61/88/6 +f 62/86/15 73/105/15 75/94/15 +f 71/95/25 69/101/25 65/96/25 +f 68/98/24 70/103/24 66/99/24 +f 75/94/4 73/105/4 69/101/4 +f 72/102/5 74/111/5 70/103/5 +f 69/101/6 73/105/6 57/106/6 +f 71/95/3 67/143/3 59/109/3 +f 60/87/13 74/111/13 72/102/13 +f 70/103/3 74/111/3 58/112/3 +f 68/98/6 64/144/6 56/115/6 +f 82/116/6 83/120/6 80/117/6 +f 78/119/11 80/117/11 83/120/11 +f 77/122/2 82/116/2 81/118/2 +f 79/124/4 83/120/4 82/116/4 +f 76/126/5 81/118/5 80/117/5 +f 89/134/28 88/145/28 86/135/28 +f 87/136/29 86/135/29 84/137/29 +o LeftArm +v 3.899999 12.299999 2.100000 +v 3.899999 12.299999 -2.100000 +v 8.100000 12.299999 -2.100000 +v 8.100000 12.299999 2.100000 +v 3.899998 5.475000 -2.100000 +v 3.899998 5.475000 2.100000 +v 8.099998 5.475000 -2.100000 +v 8.099998 5.475000 2.100000 +v 3.899998 5.475000 -2.625000 +v 8.099998 5.475000 -2.625000 +v 3.899998 5.475000 2.625000 +v 8.099998 5.475000 2.625000 +v 8.624998 5.475000 -2.100000 +v 8.624998 5.475000 2.100000 +v 3.374998 5.475000 -2.100000 +v 3.374998 5.475000 2.100000 +v 3.899998 -0.299999 -2.625000 +v 8.099998 -0.299999 -2.625000 +v 3.899998 -0.299999 2.625000 +v 8.099998 -0.299999 2.625000 +v 8.624998 -0.299999 -2.100000 +v 8.624998 -0.299999 2.100000 +v 3.374998 -0.299999 -2.100000 +v 3.374998 -0.299999 2.100000 +v 3.899998 -0.825001 -2.100000 +v 3.899998 -0.825001 2.100000 +v 8.099998 -0.825001 -2.100000 +v 8.099998 -0.825001 2.100000 +v 3.899999 6.525000 -2.100000 +v 3.899999 6.525000 2.100000 +v 8.099998 6.525000 -2.100000 +v 8.099998 6.525000 2.100000 +v 3.899999 6.525000 -2.625000 +v 8.099998 6.525000 -2.625000 +v 3.899999 6.525000 2.625000 +v 8.099998 6.525000 2.625000 +v 8.624998 6.525000 -2.100000 +v 8.624998 6.525000 2.100000 +v 3.374999 6.525000 -2.100000 +v 3.374999 6.525000 2.100000 +v 2.849999 7.575001 2.100000 +v 2.849999 7.575001 -2.100000 +v 8.099998 7.575001 3.150000 +v 3.899999 7.575001 3.150000 +v 8.099998 7.575001 -2.625000 +v 3.899999 7.575001 -2.625000 +v 3.899999 7.575001 2.625000 +v 8.099998 7.575001 2.625000 +v 8.624998 7.575001 -2.100000 +v 8.624998 7.575001 2.100000 +v 3.374999 7.575001 -2.100000 +v 3.374999 7.575001 2.100000 +v 8.099998 7.575001 -3.150000 +v 3.899999 7.575001 -3.150000 +v 9.149998 7.575001 -2.100000 +v 9.149998 7.575001 2.100000 +v 2.849999 8.625000 2.100000 +v 2.849999 8.625000 -2.100000 +v 8.100000 8.625000 3.150000 +v 3.899999 8.625000 3.150000 +v 8.100000 8.625000 -3.150000 +v 3.899999 8.625000 -3.150000 +v 9.150000 8.625000 -2.100000 +v 9.150000 8.625000 2.100000 +v 8.100000 8.625000 -2.625000 +v 3.899999 8.625000 -2.625000 +v 3.899999 8.625000 2.625000 +v 8.100000 8.625000 2.625000 +v 8.625000 8.625000 -2.100000 +v 8.625000 8.625000 2.100000 +v 3.374999 8.625000 -2.100000 +v 3.374999 8.625000 2.100000 +v 8.100000 9.150000 -2.625000 +v 3.899999 9.150000 -2.625000 +v 3.899999 9.150000 2.625000 +v 8.100000 9.150000 2.625000 +v 8.625000 9.150000 -2.100000 +v 8.625000 9.150000 2.100000 +v 3.374999 9.150000 -2.100000 +v 3.374999 9.150000 2.100000 +v 2.849999 9.150000 2.100000 +v 2.849999 9.150000 -2.100000 +v 8.100000 9.150000 3.150000 +v 3.899999 9.150000 3.150000 +v 8.100000 9.150000 -3.150000 +v 3.899999 9.150000 -3.150000 +v 9.150000 9.150000 -2.100000 +v 9.150000 9.150000 2.100000 +v 2.849999 10.200000 2.100000 +v 2.849999 10.200000 -2.100000 +v 8.100000 10.199998 3.150000 +v 3.899999 10.200000 3.150000 +v 8.100000 10.199998 -3.150000 +v 3.899999 10.200000 -3.150000 +v 9.150000 10.199998 -2.100000 +v 9.150000 10.199998 2.100000 +v 8.100000 10.199998 -2.625000 +v 3.899999 10.200000 -2.625000 +v 3.899999 10.200000 2.625000 +v 8.100000 10.199998 2.625000 +v 8.625000 10.199998 -2.100000 +v 8.625000 10.199998 2.100000 +v 3.374999 10.200000 -2.100000 +v 3.374999 10.200000 2.100000 +v 8.100000 11.775000 -2.625000 +v 3.899999 11.775000 -2.625000 +v 3.899999 11.775000 2.625000 +v 8.100000 11.775000 2.625000 +v 8.625000 11.775000 -2.100000 +v 8.625000 11.775000 2.100000 +v 3.374999 11.775000 -2.100000 +v 3.374999 11.775000 2.100000 +v 8.625000 11.512498 1.050000 +v 8.625000 10.462500 1.050000 +v 8.625000 11.512498 -1.050000 +v 8.625000 10.462500 -1.050000 +v 9.150000 11.512498 -1.050000 +v 9.150000 11.512498 1.050000 +v 9.150000 10.462500 1.050000 +v 9.150000 10.462500 -1.050000 +v 8.554661 6.787500 0.525000 +v 8.099998 6.525000 0.525000 +v 8.554661 6.787500 -0.525000 +v 8.099998 6.525000 -0.525000 +v 9.604660 4.968847 -0.525000 +v 9.604660 4.968847 0.525000 +v 9.149998 4.706348 0.525000 +v 9.149998 4.706348 -0.525000 +vt 0.275000 0.191489 +vt 0.300000 0.191489 +vt 0.275000 0.170213 +vt 0.250000 0.191489 +vt 0.050000 0.170213 +vt 0.050000 0.191489 +vt 0.525000 0.191489 +vt 0.550000 0.191489 +vt 0.525000 0.170213 +vt 0.750000 0.000000 +vt 0.550000 0.170213 +vt 0.750000 0.170213 +vt 0.500000 0.170213 +vt 0.300000 0.170213 +vt 0.750000 0.191489 +vt 0.550000 0.553191 +vt 0.750000 0.574468 +vt 0.750000 0.553191 +vt 0.050000 0.553191 +vt 0.250000 0.574468 +vt 0.250000 0.553191 +vt 0.300000 0.553191 +vt 0.500000 0.574468 +vt 0.500000 0.553191 +vt 0.800000 0.574468 +vt 1.000000 0.553191 +vt 0.800000 0.553191 +vt 0.050000 0.574468 +vt 0.025000 0.553191 +vt 0.025000 0.574468 +vt 0.775000 0.553191 +vt 0.775000 0.574468 +vt 0.525000 0.553191 +vt 0.525000 0.574468 +vt 0.550000 0.574468 +vt 0.275000 0.553191 +vt 0.275000 0.574468 +vt 0.300000 0.574468 +vt 0.500000 0.808511 +vt 0.300000 0.808511 +vt 0.800000 0.808511 +vt 0.750000 0.808511 +vt 1.000000 0.574468 +vt 0.550000 0.808511 +vt 0.050000 0.808511 +vt 0.250000 0.808511 +vt 0.750000 0.829787 +vt 0.550000 1.000000 +vt 0.750000 1.000000 +vt 0.300000 0.829787 +vt 0.525000 0.808511 +vt 0.525000 0.829787 +vt 0.250000 0.829787 +vt 0.275000 0.808511 +vt 0.275000 0.829787 +vt 1.000000 0.829787 +vt 1.000000 0.808511 +vt 0.025000 0.808511 +vt 0.025000 0.829787 +vt 0.775000 0.808511 +vt 0.775000 0.829787 +vt 0.750000 0.489362 +vt 0.550000 0.510638 +vt 0.750000 0.510638 +vt 0.250000 0.489362 +vt 0.050000 0.510638 +vt 0.250000 0.510638 +vt 0.500000 0.489362 +vt 0.300000 0.510638 +vt 0.500000 0.510638 +vt 1.000000 0.510638 +vt 0.800000 0.489362 +vt 0.800000 0.510638 +vt 0.050000 0.489362 +vt 0.025000 0.489362 +vt 0.025000 0.510638 +vt 0.775000 0.510638 +vt 0.775000 0.489362 +vt 0.525000 0.510638 +vt 0.550000 0.489362 +vt 0.525000 0.489362 +vt 0.275000 0.510638 +vt 0.300000 0.489362 +vt 0.275000 0.489362 +vt 0.250000 0.425532 +vt 0.050000 0.382979 +vt 0.050000 0.425532 +vt 0.550000 0.425532 +vt 0.750000 0.382979 +vt 0.550000 0.382979 +vt 0.500000 0.425532 +vt 0.300000 0.382979 +vt 0.300000 0.425532 +vt 0.500000 0.382979 +vt 0.275000 0.446809 +vt 0.300000 0.446809 +vt 0.550000 0.446809 +vt 0.500000 0.446809 +vt 0.750000 0.425532 +vt 0.800000 0.446809 +vt 0.800000 0.425532 +vt 0.050000 0.446809 +vt 0.750000 0.446809 +vt 0.025000 0.446809 +vt 1.000000 0.489362 +vt 0.775000 0.446809 +vt 0.000000 0.425532 +vt 0.525000 0.446809 +vt 1.000000 0.446809 +vt 0.250000 0.446809 +vt 1.000000 0.425532 +vt 0.800000 0.382979 +vt 0.250000 0.382979 +vt 0.000000 0.382979 +vt 0.750000 0.361702 +vt 0.550000 0.361702 +vt 0.525000 0.361702 +vt 0.300000 0.361702 +vt 0.275000 0.361702 +vt 0.250000 0.361702 +vt 0.025000 0.361702 +vt 1.000000 0.361702 +vt 1.000000 0.382979 +vt 0.800000 0.361702 +vt 0.050000 0.361702 +vt 0.025000 0.340426 +vt 0.500000 0.361702 +vt 0.300000 0.340426 +vt 0.750000 0.340426 +vt 0.550000 0.340426 +vt 0.275000 0.340426 +vt 0.775000 0.361702 +vt 0.800000 0.340426 +vt 0.775000 0.340426 +vt 0.050000 0.340426 +vt 0.525000 0.340426 +vt 0.750000 0.319149 +vt 0.500000 0.319149 +vt 0.500000 0.340426 +vt 0.300000 0.319149 +vt 0.250000 0.319149 +vt 0.250000 0.340426 +vt 0.050000 0.319149 +vt 1.000000 0.319149 +vt 1.000000 0.340426 +vt 0.800000 0.319149 +vt 0.750000 0.276596 +vt 0.550000 0.319149 +vt 0.500000 0.276596 +vt 0.000000 0.276596 +vt 0.000000 0.319149 +vt 0.800000 0.276596 +vt 0.300000 0.276596 +vt 0.250000 0.276596 +vt 0.550000 0.276596 +vt 0.050000 0.276596 +vt 0.750000 0.255319 +vt 0.550000 0.255319 +vt 0.525000 0.255319 +vt 0.300000 0.255319 +vt 0.275000 0.255319 +vt 0.250000 0.255319 +vt 0.025000 0.255319 +vt 1.000000 0.255319 +vt 1.000000 0.276596 +vt 0.800000 0.255319 +vt 0.050000 0.255319 +vt 0.025000 0.191489 +vt 0.500000 0.255319 +vt 0.775000 0.191489 +vt 0.775000 0.255319 +vt 0.800000 0.191489 +vt 0.800000 0.170213 +vt 1.000000 0.191489 +vt 1.000000 0.170213 +vt 0.025000 0.170213 +vt 0.775000 0.170213 +vt 0.150000 0.893617 +vt 0.250000 0.851064 +vt 0.150000 0.851064 +vt 0.275000 0.851064 +vt 0.250000 0.893617 +vt 0.275000 0.893617 +vt 0.125000 0.893617 +vt 0.125000 0.851064 +vt 0.250000 0.914894 +vt 0.150000 0.914894 +vt 0.150000 0.829787 +vt 0.250000 0.829787 +vt 0.300000 0.936170 +vt 0.350000 0.914894 +vt 0.300000 0.914894 +vt 0.300000 0.829787 +vt 0.350000 0.829787 +vt 0.375000 0.829787 +vt 0.375000 0.914894 +vt 0.275000 0.829787 +vt 0.425000 0.914894 +vt 0.425000 0.829787 +vt 0.250000 0.170213 +vt 0.550000 0.000000 +vt 0.500000 0.191489 +vt 0.550000 0.829787 +vt 0.500000 0.829787 +vt 0.050000 0.829787 +vt 0.800000 0.829787 +vt 0.350000 0.936170 +vt 0.275000 0.914894 +vn 0.5774 0.5774 0.5773 +vn 0.0000 0.7071 0.7071 +vn 0.5774 0.5774 -0.5773 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 1.0000 0.0000 0.0000 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5773 -0.5774 +vn 0.0000 -0.7071 0.7071 +vn 0.5774 -0.5773 0.5774 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5773 0.5774 +vn -0.5774 -0.5773 -0.5774 +vn -0.7071 0.7071 0.0000 +vn -0.5774 0.5774 0.5774 +vn -0.5774 0.5774 -0.5774 +vn 0.5000 -0.8660 0.0000 +vn 0.8660 0.5000 0.0000 +vn -0.8660 -0.5000 0.0000 +s off +f 197/146/30 199/147/30 93/148/30 +f 197/149/31 90/150/31 196/151/31 +f 198/152/32 194/153/32 92/154/32 +f 90/155/33 92/156/33 91/157/33 +f 199/147/34 92/158/34 93/159/34 +f 91/157/35 194/153/35 195/160/35 +f 96/161/33 98/162/33 94/163/33 +f 95/164/33 101/165/33 97/166/33 +f 97/167/33 102/168/33 96/169/33 +f 104/170/33 95/171/33 94/172/33 +f 100/173/33 95/174/33 105/175/33 +f 94/176/33 98/177/33 104/170/33 +f 96/178/33 102/179/33 99/180/33 +f 97/181/33 101/182/33 103/183/33 +f 103/183/36 110/184/36 102/168/36 +f 101/182/37 111/185/37 103/183/37 +f 98/177/38 112/186/38 104/170/38 +f 99/180/39 106/187/39 98/162/39 +f 112/186/40 105/188/40 104/170/40 +f 102/179/41 107/189/41 99/180/41 +f 105/175/42 108/190/42 100/173/42 +f 100/173/43 109/191/43 101/165/43 +f 114/192/44 117/193/44 115/194/44 +f 107/189/45 114/192/45 106/187/45 +f 117/195/46 110/184/46 111/185/46 +f 110/196/47 116/197/47 107/189/47 +f 108/190/48 117/198/48 109/191/48 +f 111/185/49 109/199/49 117/200/49 +f 112/186/50 115/201/50 113/202/50 +f 113/203/51 115/204/51 108/190/51 +f 112/186/52 106/205/52 114/206/52 +f 122/207/44 120/208/44 118/209/44 +f 125/210/44 119/211/44 121/212/44 +f 126/213/44 121/214/44 120/215/44 +f 119/216/44 128/217/44 118/218/44 +f 124/219/44 129/220/44 119/221/44 +f 118/222/44 128/217/44 122/223/44 +f 120/224/44 123/225/44 126/226/44 +f 121/227/44 127/228/44 125/229/44 +f 132/230/43 149/231/43 133/232/43 +f 142/233/39 151/234/39 150/235/39 +f 144/236/36 153/237/36 145/238/36 +f 144/236/41 150/235/41 152/239/41 +f 145/238/44 137/240/44 139/241/44 +f 144/236/44 134/242/44 142/233/44 +f 138/243/44 145/238/44 139/241/44 +f 143/244/44 140/245/44 131/246/44 +f 125/210/43 136/247/43 124/219/43 +f 127/228/37 137/240/37 125/229/37 +f 122/207/39 134/242/39 123/225/39 +f 135/248/44 142/233/44 134/242/44 +f 124/219/42 141/249/42 129/220/42 +f 129/250/40 140/245/40 128/217/40 +f 126/213/36 139/241/36 127/228/36 +f 128/217/38 135/251/38 122/223/38 +f 141/249/44 133/232/44 130/252/44 +f 123/225/41 138/253/41 126/226/41 +f 141/254/44 131/246/44 140/245/44 +f 137/255/44 133/232/44 136/247/44 +f 130/256/40 147/257/40 131/246/40 +f 145/238/37 148/258/37 132/230/37 +f 131/246/38 151/234/38 143/244/38 +f 133/232/42 146/259/42 130/252/42 +f 155/260/33 150/235/33 151/234/33 +f 152/239/33 154/261/33 158/262/33 +f 152/239/33 159/263/33 153/237/33 +f 153/237/33 157/264/33 148/258/33 +f 157/265/33 149/231/33 148/258/33 +f 149/231/33 161/266/33 146/259/33 +f 161/267/33 147/257/33 146/268/33 +f 160/269/33 151/234/33 147/257/33 +f 156/270/42 169/271/42 161/266/42 +f 158/272/36 167/273/36 159/263/36 +f 154/261/39 163/274/39 162/275/39 +f 159/263/37 165/276/37 157/264/37 +f 155/277/38 168/278/38 163/279/38 +f 161/267/40 168/278/40 160/269/40 +f 157/265/43 164/280/43 156/270/43 +f 154/261/41 166/281/41 158/262/41 +f 175/282/44 162/275/44 163/274/44 +f 162/275/44 176/283/44 166/281/44 +f 166/284/44 177/285/44 167/273/44 +f 165/276/44 177/285/44 172/286/44 +f 172/286/44 164/280/44 165/287/44 +f 173/288/44 169/271/44 164/280/44 +f 170/289/44 168/278/44 169/290/44 +f 168/278/44 175/282/44 163/279/44 +f 171/291/38 183/292/38 175/282/38 +f 174/293/41 184/294/41 176/283/41 +f 173/288/42 178/295/42 170/296/42 +f 170/289/40 179/297/40 171/291/40 +f 176/283/36 185/298/36 177/285/36 +f 177/285/37 180/299/37 172/286/37 +f 175/282/39 182/300/39 174/293/39 +f 172/286/43 181/301/43 173/288/43 +f 187/302/33 182/300/33 183/292/33 +f 184/294/33 186/303/33 190/304/33 +f 184/294/33 191/305/33 185/298/33 +f 185/298/33 189/306/33 180/299/33 +f 189/307/33 181/301/33 180/299/33 +f 181/301/33 193/308/33 178/295/33 +f 193/309/33 179/297/33 178/310/33 +f 192/311/33 183/292/33 179/297/33 +f 186/303/41 198/152/41 190/304/41 +f 188/312/42 201/313/42 193/308/42 +f 190/314/36 199/147/36 191/305/36 +f 187/302/39 194/153/39 186/303/39 +f 191/305/37 197/146/37 189/306/37 +f 192/311/38 195/315/38 187/316/38 +f 193/309/40 200/317/40 192/311/40 +f 189/307/43 196/151/43 188/312/43 +f 91/318/53 201/319/53 90/320/53 +f 201/313/54 196/151/54 90/321/54 +f 200/317/55 91/322/55 195/315/55 +f 118/209/39 96/161/39 94/163/39 +f 96/169/36 121/214/36 97/167/36 +f 97/166/43 119/211/43 95/164/43 +f 119/216/40 94/172/40 95/171/40 +f 208/323/36 206/324/36 207/325/36 +f 204/326/39 209/327/39 205/328/39 +f 203/329/43 207/325/43 202/330/43 +f 205/331/44 208/323/44 203/332/44 +f 202/333/33 206/324/33 204/334/33 +f 216/335/56 214/336/56 215/337/56 +f 210/338/57 214/336/57 212/339/57 +f 213/340/39 214/336/39 217/341/39 +f 211/342/43 215/337/43 210/338/43 +f 213/340/58 216/343/58 211/344/58 +f 197/149/31 93/345/31 90/150/31 +f 90/155/33 93/346/33 92/156/33 +f 199/147/34 198/347/34 92/158/34 +f 91/157/35 92/156/35 194/153/35 +f 96/161/33 99/180/33 98/162/33 +f 95/164/33 100/173/33 101/165/33 +f 97/167/33 103/183/33 102/168/33 +f 104/170/33 105/188/33 95/171/33 +f 103/183/36 111/185/36 110/184/36 +f 101/182/37 109/199/37 111/185/37 +f 98/177/38 106/205/38 112/186/38 +f 99/180/39 107/189/39 106/187/39 +f 112/186/40 113/202/40 105/188/40 +f 102/179/41 110/196/41 107/189/41 +f 105/175/42 113/203/42 108/190/42 +f 100/173/43 108/190/43 109/191/43 +f 114/192/44 116/348/44 117/193/44 +f 107/189/45 116/348/45 114/192/45 +f 117/195/46 116/349/46 110/184/46 +f 108/190/48 115/350/48 117/198/48 +f 112/186/50 114/351/50 115/201/50 +f 122/207/44 123/225/44 120/208/44 +f 125/210/44 124/219/44 119/211/44 +f 126/213/44 127/228/44 121/214/44 +f 119/216/44 129/250/44 128/217/44 +f 132/230/43 148/258/43 149/231/43 +f 142/233/39 143/244/39 151/234/39 +f 144/236/36 152/239/36 153/237/36 +f 144/236/41 142/233/41 150/235/41 +f 145/238/44 132/230/44 137/240/44 +f 144/236/44 138/253/44 134/242/44 +f 138/243/44 144/236/44 145/238/44 +f 143/244/44 135/251/44 140/245/44 +f 125/210/43 137/255/43 136/247/43 +f 127/228/37 139/241/37 137/240/37 +f 122/207/39 135/248/39 134/242/39 +f 135/248/44 143/244/44 142/233/44 +f 124/219/42 136/247/42 141/249/42 +f 129/250/40 141/254/40 140/245/40 +f 126/213/36 138/243/36 139/241/36 +f 128/217/38 140/245/38 135/251/38 +f 141/249/44 136/247/44 133/232/44 +f 123/225/41 134/242/41 138/253/41 +f 141/254/44 130/256/44 131/246/44 +f 137/255/44 132/230/44 133/232/44 +f 130/256/40 146/268/40 147/257/40 +f 145/238/37 153/237/37 148/258/37 +f 131/246/38 147/257/38 151/234/38 +f 133/232/42 149/231/42 146/259/42 +f 155/260/33 154/261/33 150/235/33 +f 152/239/33 150/235/33 154/261/33 +f 152/239/33 158/272/33 159/263/33 +f 153/237/33 159/263/33 157/264/33 +f 157/265/33 156/270/33 149/231/33 +f 149/231/33 156/270/33 161/266/33 +f 161/267/33 160/269/33 147/257/33 +f 160/269/33 155/277/33 151/234/33 +f 156/270/42 164/280/42 169/271/42 +f 158/272/36 166/284/36 167/273/36 +f 154/261/39 155/260/39 163/274/39 +f 159/263/37 167/273/37 165/276/37 +f 155/277/38 160/269/38 168/278/38 +f 161/267/40 169/290/40 168/278/40 +f 157/265/43 165/287/43 164/280/43 +f 154/261/41 162/275/41 166/281/41 +f 175/282/44 174/293/44 162/275/44 +f 162/275/44 174/293/44 176/283/44 +f 166/284/44 176/283/44 177/285/44 +f 165/276/44 167/273/44 177/285/44 +f 172/286/44 173/288/44 164/280/44 +f 173/288/44 170/296/44 169/271/44 +f 170/289/44 171/291/44 168/278/44 +f 168/278/44 171/291/44 175/282/44 +f 171/291/38 179/297/38 183/292/38 +f 174/293/41 182/300/41 184/294/41 +f 173/288/42 181/301/42 178/295/42 +f 170/289/40 178/310/40 179/297/40 +f 176/283/36 184/294/36 185/298/36 +f 177/285/37 185/298/37 180/299/37 +f 175/282/39 183/292/39 182/300/39 +f 172/286/43 180/299/43 181/301/43 +f 187/302/33 186/303/33 182/300/33 +f 184/294/33 182/300/33 186/303/33 +f 184/294/33 190/314/33 191/305/33 +f 185/298/33 191/305/33 189/306/33 +f 189/307/33 188/312/33 181/301/33 +f 181/301/33 188/312/33 193/308/33 +f 193/309/33 192/311/33 179/297/33 +f 192/311/33 187/316/33 183/292/33 +f 186/303/41 194/153/41 198/152/41 +f 188/312/42 196/151/42 201/313/42 +f 190/314/36 198/347/36 199/147/36 +f 187/302/39 195/160/39 194/153/39 +f 191/305/37 199/147/37 197/146/37 +f 192/311/38 200/317/38 195/315/38 +f 193/309/40 201/319/40 200/317/40 +f 189/307/43 197/149/43 196/151/43 +f 91/318/53 200/317/53 201/319/53 +f 118/209/39 120/208/39 96/161/39 +f 96/169/36 120/215/36 121/214/36 +f 97/166/43 121/212/43 119/211/43 +f 119/216/40 118/218/40 94/172/40 +f 208/323/36 209/327/36 206/324/36 +f 204/326/39 206/324/39 209/327/39 +f 203/329/43 208/323/43 207/325/43 +f 205/331/44 209/327/44 208/323/44 +f 202/333/33 207/325/33 206/324/33 +f 216/335/56 217/352/56 214/336/56 +f 210/338/57 215/337/57 214/336/57 +f 213/340/39 212/339/39 214/336/39 +f 211/342/43 216/353/43 215/337/43 +f 213/340/58 217/341/58 216/343/58 +o RightArm +v -3.900001 12.299999 2.100000 +v -3.900001 12.299999 -2.100000 +v -8.100000 12.299999 -2.100000 +v -8.100000 12.299999 2.100000 +v -3.900002 5.475000 -2.100000 +v -3.900002 5.475000 2.100000 +v -8.100002 5.475000 -2.100000 +v -8.100002 5.475000 2.100000 +v -3.900002 5.475000 -2.625000 +v -8.100002 5.475000 -2.625000 +v -3.900002 5.475000 2.625000 +v -8.100002 5.475000 2.625000 +v -8.625002 5.475000 -2.100000 +v -8.625002 5.475000 2.100000 +v -3.375002 5.475000 -2.100000 +v -3.375002 5.475000 2.100000 +v -3.900002 -0.299999 -2.625000 +v -8.100002 -0.299999 -2.625000 +v -3.900002 -0.299999 2.625000 +v -8.100002 -0.299999 2.625000 +v -8.625002 -0.299999 -2.100000 +v -8.625002 -0.299999 2.100000 +v -3.375002 -0.299999 -2.100000 +v -3.375002 -0.299999 2.100000 +v -3.900002 -0.825001 -2.100000 +v -3.900002 -0.825001 2.100000 +v -8.100002 -0.825001 -2.100000 +v -8.100002 -0.825001 2.100000 +v -3.900002 6.525000 -2.100000 +v -3.900002 6.525000 2.100000 +v -8.100002 6.525000 -2.100000 +v -8.100002 6.525000 2.100000 +v -3.900002 6.525000 -2.625000 +v -8.100002 6.525000 -2.625000 +v -3.900002 6.525000 2.625000 +v -8.100002 6.525000 2.625000 +v -8.625002 6.525000 -2.100000 +v -8.625002 6.525000 2.100000 +v -3.375001 6.525000 -2.100000 +v -3.375001 6.525000 2.100000 +v -2.850002 7.575001 2.100000 +v -2.850002 7.575001 -2.100000 +v -8.100002 7.575001 3.150000 +v -3.900002 7.575001 3.150000 +v -8.100002 7.575001 -2.625000 +v -3.900002 7.575001 -2.625000 +v -3.900002 7.575001 2.625000 +v -8.100002 7.575001 2.625000 +v -8.625002 7.575001 -2.100000 +v -8.625002 7.575001 2.100000 +v -3.375001 7.575001 -2.100000 +v -3.375001 7.575001 2.100000 +v -8.100002 7.575001 -3.150000 +v -3.900002 7.575001 -3.150000 +v -9.150002 7.575001 -2.100000 +v -9.150002 7.575001 2.100000 +v -2.850002 8.625000 2.100000 +v -2.850002 8.625000 -2.100000 +v -8.100000 8.625000 3.150000 +v -3.900002 8.625000 3.150000 +v -8.100000 8.625000 -3.150000 +v -3.900002 8.625000 -3.150000 +v -9.150000 8.625000 -2.100000 +v -9.150000 8.625000 2.100000 +v -8.100000 8.625000 -2.625000 +v -3.900002 8.625000 -2.625000 +v -3.900002 8.625000 2.625000 +v -8.100000 8.625000 2.625000 +v -8.625000 8.625000 -2.100000 +v -8.625000 8.625000 2.100000 +v -3.375001 8.625000 -2.100000 +v -3.375001 8.625000 2.100000 +v -8.100000 9.150000 -2.625000 +v -3.900001 9.150000 -2.625000 +v -3.900001 9.150000 2.625000 +v -8.100000 9.150000 2.625000 +v -8.625000 9.150000 -2.100000 +v -8.625000 9.150000 2.100000 +v -3.375001 9.150000 -2.100000 +v -3.375001 9.150000 2.100000 +v -2.850002 9.150000 2.100000 +v -2.850002 9.150000 -2.100000 +v -8.100000 9.150000 3.150000 +v -3.900001 9.150000 3.150000 +v -8.100000 9.150000 -3.150000 +v -3.900001 9.150000 -3.150000 +v -9.150000 9.150000 -2.100000 +v -9.150000 9.150000 2.100000 +v -2.850002 10.200000 2.100000 +v -2.850002 10.200000 -2.100000 +v -8.100000 10.200002 3.150000 +v -3.900001 10.200000 3.150000 +v -8.100000 10.200002 -3.150000 +v -3.900001 10.200000 -3.150000 +v -9.150000 10.200002 -2.100000 +v -9.150000 10.200002 2.100000 +v -8.100000 10.200002 -2.625000 +v -3.900001 10.200000 -2.625000 +v -3.900001 10.200000 2.625000 +v -8.100000 10.200002 2.625000 +v -8.625000 10.200002 -2.100000 +v -8.625000 10.200002 2.100000 +v -3.375001 10.200000 -2.100000 +v -3.375001 10.200000 2.100000 +v -8.100000 11.775000 -2.625000 +v -3.900001 11.775000 -2.625000 +v -3.900001 11.775000 2.625000 +v -8.100000 11.775000 2.625000 +v -8.625000 11.775000 -2.100000 +v -8.625000 11.775000 2.100000 +v -3.375001 11.775000 -2.100000 +v -3.375001 11.775000 2.100000 +v -8.625000 11.512502 1.050000 +v -8.625000 10.462500 1.050000 +v -8.625000 11.512502 -1.050000 +v -8.625000 10.462500 -1.050000 +v -9.150000 11.512502 -1.050000 +v -9.150000 11.512502 1.050000 +v -9.150000 10.462500 1.050000 +v -9.150000 10.462500 -1.050000 +v -8.554665 6.787500 0.525000 +v -8.100002 6.525000 0.525000 +v -8.554665 6.787500 -0.525000 +v -8.100002 6.525000 -0.525000 +v -9.604664 4.968847 -0.525000 +v -9.604664 4.968847 0.525000 +v -9.150002 4.706348 0.525000 +v -9.150002 4.706348 -0.525000 +vt 0.275000 0.191489 +vt 0.275000 0.170213 +vt 0.300000 0.191489 +vt 0.050000 0.170213 +vt 0.250000 0.191489 +vt 0.050000 0.191489 +vt 0.525000 0.191489 +vt 0.525000 0.170213 +vt 0.550000 0.191489 +vt 0.550000 0.170213 +vt 0.750000 0.000000 +vt 0.750000 0.170213 +vt 0.500000 0.170213 +vt 0.300000 0.170213 +vt 0.750000 0.191489 +vt 0.750000 0.574468 +vt 0.550000 0.553191 +vt 0.750000 0.553191 +vt 0.250000 0.574468 +vt 0.050000 0.553191 +vt 0.250000 0.553191 +vt 0.500000 0.574468 +vt 0.300000 0.553191 +vt 0.500000 0.553191 +vt 1.000000 0.553191 +vt 0.800000 0.574468 +vt 0.800000 0.553191 +vt 0.050000 0.574468 +vt 0.025000 0.574468 +vt 0.025000 0.553191 +vt 0.775000 0.553191 +vt 0.775000 0.574468 +vt 0.525000 0.553191 +vt 0.550000 0.574468 +vt 0.525000 0.574468 +vt 0.275000 0.553191 +vt 0.300000 0.574468 +vt 0.275000 0.574468 +vt 0.500000 0.808511 +vt 0.300000 0.808511 +vt 0.800000 0.808511 +vt 0.750000 0.808511 +vt 1.000000 0.574468 +vt 0.550000 0.808511 +vt 0.050000 0.808511 +vt 0.250000 0.808511 +vt 0.550000 1.000000 +vt 0.750000 0.829787 +vt 0.750000 1.000000 +vt 0.300000 0.829787 +vt 0.525000 0.808511 +vt 0.525000 0.829787 +vt 0.250000 0.829787 +vt 0.275000 0.829787 +vt 0.275000 0.808511 +vt 1.000000 0.829787 +vt 1.000000 0.808511 +vt 0.025000 0.808511 +vt 0.025000 0.829787 +vt 0.775000 0.829787 +vt 0.775000 0.808511 +vt 0.550000 0.510638 +vt 0.750000 0.489362 +vt 0.750000 0.510638 +vt 0.050000 0.510638 +vt 0.250000 0.489362 +vt 0.250000 0.510638 +vt 0.300000 0.510638 +vt 0.500000 0.489362 +vt 0.500000 0.510638 +vt 0.800000 0.489362 +vt 1.000000 0.510638 +vt 0.800000 0.510638 +vt 0.050000 0.489362 +vt 0.025000 0.510638 +vt 0.025000 0.489362 +vt 0.775000 0.510638 +vt 0.775000 0.489362 +vt 0.525000 0.510638 +vt 0.525000 0.489362 +vt 0.550000 0.489362 +vt 0.275000 0.510638 +vt 0.275000 0.489362 +vt 0.300000 0.489362 +vt 0.050000 0.425532 +vt 0.250000 0.382979 +vt 0.250000 0.425532 +vt 0.550000 0.382979 +vt 0.750000 0.425532 +vt 0.550000 0.425532 +vt 0.300000 0.382979 +vt 0.500000 0.425532 +vt 0.300000 0.425532 +vt 0.500000 0.382979 +vt 0.275000 0.446809 +vt 0.550000 0.446809 +vt 0.525000 0.446809 +vt 0.500000 0.446809 +vt 0.300000 0.446809 +vt 0.800000 0.446809 +vt 0.800000 0.425532 +vt 0.050000 0.446809 +vt 0.750000 0.446809 +vt 0.025000 0.446809 +vt 1.000000 0.489362 +vt 0.775000 0.446809 +vt 0.000000 0.425532 +vt 1.000000 0.446809 +vt 0.250000 0.446809 +vt 0.800000 0.382979 +vt 1.000000 0.425532 +vt 0.750000 0.382979 +vt 0.000000 0.382979 +vt 0.750000 0.361702 +vt 0.550000 0.361702 +vt 0.300000 0.361702 +vt 0.275000 0.361702 +vt 0.050000 0.382979 +vt 0.250000 0.361702 +vt 0.025000 0.361702 +vt 1.000000 0.361702 +vt 1.000000 0.382979 +vt 0.800000 0.361702 +vt 0.050000 0.340426 +vt 0.050000 0.361702 +vt 0.300000 0.340426 +vt 0.500000 0.361702 +vt 0.550000 0.340426 +vt 0.275000 0.340426 +vt 0.775000 0.340426 +vt 0.775000 0.361702 +vt 0.800000 0.340426 +vt 0.250000 0.340426 +vt 0.525000 0.340426 +vt 0.525000 0.361702 +vt 0.750000 0.319149 +vt 0.750000 0.340426 +vt 0.500000 0.319149 +vt 0.550000 0.319149 +vt 0.300000 0.319149 +vt 0.500000 0.340426 +vt 0.250000 0.319149 +vt 0.025000 0.340426 +vt 0.050000 0.319149 +vt 1.000000 0.319149 +vt 1.000000 0.340426 +vt 0.750000 0.276596 +vt 0.800000 0.319149 +vt 0.500000 0.276596 +vt 0.000000 0.276596 +vt 0.000000 0.319149 +vt 0.800000 0.276596 +vt 0.300000 0.276596 +vt 0.250000 0.276596 +vt 0.550000 0.276596 +vt 0.050000 0.276596 +vt 0.750000 0.255319 +vt 0.550000 0.255319 +vt 0.300000 0.255319 +vt 0.275000 0.255319 +vt 0.250000 0.255319 +vt 0.025000 0.255319 +vt 1.000000 0.255319 +vt 1.000000 0.276596 +vt 0.800000 0.255319 +vt 0.525000 0.255319 +vt 0.025000 0.191489 +vt 0.050000 0.255319 +vt 0.500000 0.255319 +vt 0.775000 0.191489 +vt 0.775000 0.255319 +vt 0.800000 0.191489 +vt 1.000000 0.191489 +vt 0.800000 0.170213 +vt 1.000000 0.170213 +vt 0.025000 0.170213 +vt 0.775000 0.170213 +vt 0.250000 0.851064 +vt 0.150000 0.893617 +vt 0.150000 0.851064 +vt 0.250000 0.893617 +vt 0.275000 0.851064 +vt 0.275000 0.893617 +vt 0.125000 0.893617 +vt 0.125000 0.851064 +vt 0.250000 0.914894 +vt 0.150000 0.914894 +vt 0.150000 0.829787 +vt 0.250000 0.829787 +vt 0.350000 0.914894 +vt 0.300000 0.936170 +vt 0.300000 0.914894 +vt 0.300000 0.829787 +vt 0.350000 0.829787 +vt 0.375000 0.829787 +vt 0.275000 0.829787 +vt 0.425000 0.914894 +vt 0.425000 0.829787 +vt 0.250000 0.170213 +vt 0.550000 0.000000 +vt 0.500000 0.191489 +vt 0.550000 0.829787 +vt 0.500000 0.829787 +vt 0.050000 0.829787 +vt 0.800000 0.829787 +vt 0.350000 0.936170 +vt 0.375000 0.914894 +vt 0.275000 0.914894 +vn -0.5774 0.5774 0.5773 +vn 0.0000 0.7071 0.7071 +vn -0.5774 0.5774 -0.5773 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5773 -0.5774 +vn 0.0000 -0.7071 0.7071 +vn -0.5774 -0.5773 0.5774 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5773 0.5774 +vn 0.5774 -0.5773 -0.5774 +vn 0.7071 0.7071 0.0000 +vn 0.5774 0.5774 0.5774 +vn 0.5774 0.5774 -0.5774 +vn -0.5000 -0.8660 0.0000 +vn -0.8660 0.5000 0.0000 +vn 0.8660 -0.5000 0.0000 +s off +f 325/354/59 221/355/59 327/356/59 +f 218/357/60 325/358/60 324/359/60 +f 326/360/61 220/361/61 322/362/61 +f 220/363/62 218/364/62 219/365/62 +f 220/366/63 327/356/63 221/367/63 +f 322/362/64 219/365/64 323/368/64 +f 226/369/62 224/370/62 222/371/62 +f 229/372/62 223/373/62 225/374/62 +f 230/375/62 225/376/62 224/377/62 +f 223/378/62 232/379/62 222/380/62 +f 228/381/62 233/382/62 223/383/62 +f 222/384/62 232/379/62 226/385/62 +f 224/386/62 227/387/62 230/388/62 +f 225/389/62 231/390/62 229/391/62 +f 238/392/65 231/390/65 230/375/65 +f 239/393/66 229/391/66 231/390/66 +f 240/394/67 226/385/67 232/379/67 +f 234/395/68 227/387/68 226/369/68 +f 233/396/69 240/394/69 232/379/69 +f 235/397/70 230/388/70 227/387/70 +f 236/398/71 233/382/71 228/381/71 +f 237/399/72 228/381/72 229/372/72 +f 245/400/73 242/401/73 243/402/73 +f 242/401/74 235/397/74 234/395/74 +f 238/392/75 245/403/75 239/393/75 +f 238/404/76 235/397/76 244/405/76 +f 245/406/77 236/398/77 237/399/77 +f 239/393/78 245/407/78 237/408/78 +f 243/409/79 240/394/79 241/410/79 +f 241/411/80 236/398/80 243/412/80 +f 240/394/81 242/413/81 234/414/81 +f 248/415/73 250/416/73 246/417/73 +f 247/418/73 253/419/73 249/420/73 +f 249/421/73 254/422/73 248/423/73 +f 256/424/73 247/425/73 246/426/73 +f 252/427/73 247/428/73 257/429/73 +f 246/430/73 250/431/73 256/424/73 +f 248/432/73 254/433/73 251/434/73 +f 249/435/73 253/436/73 255/437/73 +f 261/438/72 276/439/72 260/440/72 +f 278/441/68 271/442/68 270/443/68 +f 281/444/65 272/445/65 273/446/65 +f 280/447/70 270/443/70 272/445/70 +f 273/446/73 265/448/73 260/440/73 +f 272/445/73 262/449/73 266/450/73 +f 273/446/73 266/451/73 267/452/73 +f 268/453/73 271/442/73 259/454/73 +f 264/455/72 253/419/72 252/427/72 +f 265/448/66 255/437/66 253/436/66 +f 262/449/68 250/416/68 251/434/68 +f 270/443/73 263/456/73 262/449/73 +f 269/457/71 252/427/71 257/429/71 +f 268/453/69 257/458/69 256/424/69 +f 267/452/65 254/422/65 255/437/65 +f 263/459/67 256/424/67 250/431/67 +f 261/438/73 269/457/73 258/460/73 +f 266/450/70 251/434/70 254/433/70 +f 259/454/73 269/461/73 268/453/73 +f 261/438/73 265/462/73 264/455/73 +f 275/463/69 258/464/69 259/454/69 +f 260/440/66 281/444/66 273/446/66 +f 279/465/67 259/454/67 271/442/67 +f 274/466/71 261/438/71 258/460/71 +f 278/441/62 283/467/62 279/465/62 +f 280/447/62 282/468/62 278/441/62 +f 287/469/62 280/447/62 281/444/62 +f 281/444/62 285/470/62 287/469/62 +f 277/471/62 285/472/62 276/439/62 +f 289/473/62 277/471/62 274/466/62 +f 275/463/62 289/474/62 274/475/62 +f 279/465/62 288/476/62 275/463/62 +f 289/473/71 292/477/71 284/478/71 +f 295/479/65 286/480/65 287/469/65 +f 290/481/68 283/467/68 282/468/68 +f 293/482/66 287/469/66 285/470/66 +f 291/483/67 288/476/67 283/484/67 +f 296/485/69 289/474/69 288/476/69 +f 284/478/72 293/486/72 285/472/72 +f 294/487/70 282/468/70 286/488/70 +f 290/481/73 303/489/73 291/490/73 +f 290/481/73 304/491/73 302/492/73 +f 305/493/73 294/494/73 295/479/73 +f 293/482/73 305/493/73 295/479/73 +f 292/477/73 300/495/73 293/486/73 +f 297/496/73 301/497/73 292/477/73 +f 296/485/73 298/498/73 297/499/73 +f 303/489/73 296/485/73 291/483/73 +f 311/500/67 299/501/67 303/489/67 +f 312/502/70 302/492/70 304/491/70 +f 306/503/71 301/497/71 298/504/71 +f 307/505/69 298/498/69 299/501/69 +f 313/506/65 304/491/65 305/493/65 +f 308/507/66 305/493/66 300/495/66 +f 310/508/68 303/489/68 302/492/68 +f 309/509/72 300/495/72 301/497/72 +f 310/508/62 315/510/62 311/500/62 +f 312/502/62 314/511/62 310/508/62 +f 319/512/62 312/502/62 313/506/62 +f 313/506/62 317/513/62 319/512/62 +f 309/509/62 317/514/62 308/507/62 +f 321/515/62 309/509/62 306/503/62 +f 307/505/62 321/516/62 306/517/62 +f 311/500/62 320/518/62 307/505/62 +f 326/360/70 314/511/70 318/519/70 +f 329/520/71 316/521/71 321/515/71 +f 327/356/65 318/522/65 319/512/65 +f 314/511/68 323/368/68 315/510/68 +f 325/354/66 319/512/66 317/513/66 +f 323/523/67 320/518/67 315/524/67 +f 328/525/69 321/516/69 320/518/69 +f 324/359/72 317/514/72 316/521/72 +f 329/526/82 219/527/82 218/528/82 +f 329/520/83 218/529/83 324/359/83 +f 328/525/84 323/523/84 219/530/84 +f 224/370/68 246/417/68 222/371/68 +f 249/421/65 224/377/65 225/376/65 +f 223/373/72 249/420/72 225/374/72 +f 222/380/69 247/425/69 223/378/69 +f 334/531/65 336/532/65 335/533/65 +f 337/534/68 332/535/68 333/536/68 +f 335/533/72 331/537/72 330/538/72 +f 336/532/73 333/539/73 331/540/73 +f 334/531/62 330/541/62 332/542/62 +f 342/543/85 344/544/85 343/545/85 +f 342/543/86 338/546/86 340/547/86 +f 341/548/68 342/543/68 340/547/68 +f 343/545/72 339/549/72 338/546/72 +f 344/550/87 341/548/87 339/551/87 +f 218/357/60 221/552/60 325/358/60 +f 220/363/62 221/553/62 218/364/62 +f 220/366/63 326/554/63 327/356/63 +f 322/362/64 220/363/64 219/365/64 +f 226/369/62 227/387/62 224/370/62 +f 229/372/62 228/381/62 223/373/62 +f 230/375/62 231/390/62 225/376/62 +f 223/378/62 233/396/62 232/379/62 +f 238/392/65 239/393/65 231/390/65 +f 239/393/66 237/408/66 229/391/66 +f 240/394/67 234/414/67 226/385/67 +f 234/395/68 235/397/68 227/387/68 +f 233/396/69 241/410/69 240/394/69 +f 235/397/70 238/404/70 230/388/70 +f 236/398/71 241/411/71 233/382/71 +f 237/399/72 236/398/72 228/381/72 +f 245/400/73 244/555/73 242/401/73 +f 242/401/74 244/555/74 235/397/74 +f 238/392/75 244/556/75 245/403/75 +f 245/406/77 243/557/77 236/398/77 +f 243/409/79 242/558/79 240/394/79 +f 248/415/73 251/434/73 250/416/73 +f 247/418/73 252/427/73 253/419/73 +f 249/421/73 255/437/73 254/422/73 +f 256/424/73 257/458/73 247/425/73 +f 261/438/72 277/471/72 276/439/72 +f 278/441/68 279/465/68 271/442/68 +f 281/444/65 280/447/65 272/445/65 +f 280/447/70 278/441/70 270/443/70 +f 273/446/73 267/452/73 265/448/73 +f 272/445/73 270/443/73 262/449/73 +f 273/446/73 272/445/73 266/451/73 +f 268/453/73 263/459/73 271/442/73 +f 264/455/72 265/462/72 253/419/72 +f 265/448/66 267/452/66 255/437/66 +f 262/449/68 263/456/68 250/416/68 +f 270/443/73 271/442/73 263/456/73 +f 269/457/71 264/455/71 252/427/71 +f 268/453/69 269/461/69 257/458/69 +f 267/452/65 266/451/65 254/422/65 +f 263/459/67 268/453/67 256/424/67 +f 261/438/73 264/455/73 269/457/73 +f 266/450/70 262/449/70 251/434/70 +f 259/454/73 258/464/73 269/461/73 +f 261/438/73 260/440/73 265/462/73 +f 275/463/69 274/475/69 258/464/69 +f 260/440/66 276/439/66 281/444/66 +f 279/465/67 275/463/67 259/454/67 +f 274/466/71 277/471/71 261/438/71 +f 278/441/62 282/468/62 283/467/62 +f 280/447/62 286/488/62 282/468/62 +f 287/469/62 286/480/62 280/447/62 +f 281/444/62 276/439/62 285/470/62 +f 277/471/62 284/478/62 285/472/62 +f 289/473/62 284/478/62 277/471/62 +f 275/463/62 288/476/62 289/474/62 +f 279/465/62 283/484/62 288/476/62 +f 289/473/71 297/496/71 292/477/71 +f 295/479/65 294/494/65 286/480/65 +f 290/481/68 291/490/68 283/467/68 +f 293/482/66 295/479/66 287/469/66 +f 291/483/67 296/485/67 288/476/67 +f 296/485/69 297/499/69 289/474/69 +f 284/478/72 292/477/72 293/486/72 +f 294/487/70 290/481/70 282/468/70 +f 290/481/73 302/492/73 303/489/73 +f 290/481/73 294/487/73 304/491/73 +f 305/493/73 304/491/73 294/494/73 +f 293/482/73 300/495/73 305/493/73 +f 292/477/73 301/497/73 300/495/73 +f 297/496/73 298/504/73 301/497/73 +f 296/485/73 299/501/73 298/498/73 +f 303/489/73 299/501/73 296/485/73 +f 311/500/67 307/505/67 299/501/67 +f 312/502/70 310/508/70 302/492/70 +f 306/503/71 309/509/71 301/497/71 +f 307/505/69 306/517/69 298/498/69 +f 313/506/65 312/502/65 304/491/65 +f 308/507/66 313/506/66 305/493/66 +f 310/508/68 311/500/68 303/489/68 +f 309/509/72 308/507/72 300/495/72 +f 310/508/62 314/511/62 315/510/62 +f 312/502/62 318/519/62 314/511/62 +f 319/512/62 318/522/62 312/502/62 +f 313/506/62 308/507/62 317/513/62 +f 309/509/62 316/521/62 317/514/62 +f 321/515/62 316/521/62 309/509/62 +f 307/505/62 320/518/62 321/516/62 +f 311/500/62 315/524/62 320/518/62 +f 326/360/70 322/362/70 314/511/70 +f 329/520/71 324/359/71 316/521/71 +f 327/356/65 326/554/65 318/522/65 +f 314/511/68 322/362/68 323/368/68 +f 325/354/66 327/356/66 319/512/66 +f 323/523/67 328/525/67 320/518/67 +f 328/525/69 329/526/69 321/516/69 +f 324/359/72 325/358/72 317/514/72 +f 329/526/82 328/525/82 219/527/82 +f 224/370/68 248/415/68 246/417/68 +f 249/421/65 248/423/65 224/377/65 +f 223/373/72 247/418/72 249/420/72 +f 222/380/69 246/426/69 247/425/69 +f 334/531/65 337/534/65 336/532/65 +f 337/534/68 334/531/68 332/535/68 +f 335/533/72 336/532/72 331/537/72 +f 336/532/73 337/534/73 333/539/73 +f 334/531/62 335/533/62 330/541/62 +f 342/543/85 345/559/85 344/544/85 +f 342/543/86 343/545/86 338/546/86 +f 341/548/68 345/560/68 342/543/68 +f 343/545/72 344/561/72 339/549/72 +f 344/550/87 345/560/87 341/548/87 +o Tail +v -2.100001 9.150000 13.650000 +v 2.099998 9.150000 13.650000 +v -2.100001 9.150000 9.450000 +v 2.099998 9.150000 9.450000 +v 2.099999 15.450000 7.349999 +v -2.100000 15.450000 7.349999 +v 2.099998 11.250000 7.349999 +v -2.100001 11.250000 7.349999 +v -1.050001 10.200000 2.100000 +v 1.049999 10.200000 2.100000 +v -1.050001 12.299999 2.100000 +v 1.049999 12.299999 2.100000 +v -3.150002 0.750000 14.699999 +v 3.149997 0.750000 14.699999 +v -3.150002 0.750000 8.400000 +v 3.149997 0.750000 8.400000 +v -4.200002 -2.400000 15.749999 +v 4.199996 -2.400000 15.749999 +v -3.150002 -4.500000 8.400000 +v 3.149997 -4.500000 8.400000 +v -4.200002 -8.699997 12.599999 +v 4.199996 -8.699997 12.599999 +v -4.200002 -8.699997 17.849998 +v 4.199996 -8.699997 17.849998 +v -3.150002 -4.500000 22.049999 +v 3.149997 -4.500000 22.049999 +v 3.149997 0.750000 22.049999 +v -3.150002 0.750000 22.049999 +v 2.099998 7.049999 14.699999 +v -2.100001 7.049999 14.699999 +v -3.150002 0.750000 16.799999 +v 3.149997 0.750000 16.799999 +vt 0.576923 0.192308 +vt 0.730769 0.153846 +vt 0.730769 0.192308 +vt 0.730769 0.000000 +vt 0.615385 0.096154 +vt 0.653846 -0.000000 +vt 0.346154 -0.000000 +vt 0.461538 0.096154 +vt 0.307692 0.096154 +vt 0.500000 -0.000000 +vt 0.269231 -0.000000 +vt 0.153846 0.096154 +vt 0.192308 -0.000000 +vt 0.461538 0.250000 +vt 0.576923 0.153846 +vt 0.307692 0.250000 +vt 0.192308 0.192308 +vt 0.461538 0.250000 +vt 0.269231 0.403846 +vt 0.307692 0.250000 +vt 0.961538 0.250000 +vt 0.769231 0.403846 +vt 0.807692 0.250000 +vt 0.538462 0.250000 +vt 0.730769 0.403846 +vt 0.500000 0.403846 +vt 0.076923 0.250000 +vt 0.038462 0.403846 +vt 0.500000 0.788462 +vt 0.692308 0.826923 +vt 0.500000 0.884615 +vt 0.269231 0.500000 +vt 0.076923 0.884615 +vt 0.076923 0.826923 +vt 0.269231 0.884615 +vt 0.500000 0.500000 +vt 0.230769 0.596154 +vt 0.538462 0.500000 +vt 0.769231 0.548077 +vt 0.538462 0.596154 +vt 0.230769 0.500000 +vt -0.000000 0.548077 +vt 0.230769 0.692308 +vt 0.538462 0.692308 +vt 0.269231 0.788462 +vt 1.000000 0.403846 +vt 0.769231 0.500000 +vt 0.923077 0.826923 +vt 0.730769 0.942308 +vt 0.769231 0.826923 +vt 0.730769 0.500000 +vt 0.769231 0.740385 +vt 0.538462 0.788462 +vt 0.307692 1.000000 +vt 0.230769 0.788462 +vt -0.000000 0.740385 +vt 0.769231 0.644231 +vt -0.000000 0.644231 +vt 1.000000 1.000000 +vt 0.692308 1.000000 +vt 0.076923 1.000000 +vt 0.692308 1.000000 +vt 0.692308 0.884615 +vt -0.000000 0.500000 +vt 0.769231 0.096154 +vt 0.423077 0.000000 +vt 0.576923 -0.000000 +vt 0.192308 0.153846 +vt 0.692308 0.250000 +vt 0.230769 0.250000 +vt 1.000000 0.500000 +vt 0.961538 0.942308 +vt 0.461538 1.000000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.9806 0.1961 +vn 0.0000 0.8575 -0.5145 +vn -0.9806 0.0000 -0.1961 +vn 0.9806 0.0000 -0.1961 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.7071 0.7071 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.1240 -0.9923 +vn 0.0000 0.1240 0.9923 +vn 0.9923 0.1240 0.0000 +vn -0.9923 0.1240 0.0000 +vn 0.9864 0.0000 0.1644 +vn 0.0000 0.0000 -1.0000 +vn -0.9487 0.3162 0.0000 +vn 0.9831 0.0819 -0.1638 +vn -0.9831 0.0819 -0.1638 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.3162 0.9487 +vn 0.0000 -0.3162 -0.9487 +vn 0.9487 0.3162 0.0000 +vn 0.9810 0.0613 0.1839 +vn 0.0000 0.7593 0.6508 +vn 0.0000 0.0000 1.0000 +vn -0.9810 0.0613 0.1839 +vn 0.0000 0.3162 -0.9487 +vn -0.9864 0.1644 0.0000 +vn 0.9864 0.1644 0.0000 +vn 0.9899 0.0000 -0.1414 +vn -0.9899 0.0000 -0.1414 +vn -0.9864 0.0000 0.1644 +s off +f 348/562/88 352/563/88 349/564/88 +f 355/565/89 353/566/89 354/567/89 +f 357/568/90 351/569/90 350/570/90 +f 356/571/91 353/566/91 351/569/91 +f 357/572/92 352/573/92 355/574/92 +f 346/575/93 353/576/93 348/562/93 +f 347/577/94 351/569/94 346/575/94 +f 349/578/95 350/570/95 347/577/95 +f 349/579/96 360/580/96 348/581/96 +f 346/582/97 359/583/97 347/584/97 +f 349/585/98 359/586/98 361/587/98 +f 346/588/99 360/580/99 358/589/99 +f 371/590/100 363/591/100 372/592/100 +f 361/587/101 364/593/101 360/580/101 +f 376/594/102 362/595/102 373/596/102 +f 365/597/88 366/598/88 364/593/88 +f 365/599/103 363/600/103 367/601/103 +f 364/602/104 366/598/104 362/603/104 +f 367/601/105 368/604/105 366/598/105 +f 369/605/106 370/606/106 368/604/106 +f 358/607/107 363/608/107 359/583/107 +f 374/609/108 376/610/108 375/611/108 +f 359/586/109 363/612/109 361/587/109 +f 369/605/110 363/613/110 371/614/110 +f 372/592/111 375/615/111 373/596/111 +f 371/590/112 373/596/112 370/606/112 +f 368/604/113 370/616/113 362/617/113 +f 367/601/95 363/618/95 369/605/95 +f 366/598/93 368/604/93 362/619/93 +f 376/610/114 363/620/114 362/621/114 +f 373/596/115 375/622/115 376/594/115 +f 374/623/116 372/592/116 377/624/116 +f 358/589/102 360/580/102 362/625/102 +f 372/592/109 363/591/109 377/624/109 +f 361/587/117 363/612/117 365/597/117 +f 362/625/118 360/580/118 364/593/118 +f 373/596/119 362/595/119 370/606/119 +f 348/562/88 353/576/88 352/563/88 +f 355/565/89 352/626/89 353/566/89 +f 357/568/90 356/627/90 351/569/90 +f 356/571/91 354/628/91 353/566/91 +f 357/572/92 350/570/92 352/573/92 +f 346/575/93 351/569/93 353/576/93 +f 347/577/94 350/570/94 351/569/94 +f 349/578/95 352/629/95 350/570/95 +f 349/579/96 361/587/96 360/580/96 +f 346/582/97 358/607/97 359/583/97 +f 349/585/98 347/630/98 359/586/98 +f 346/588/99 348/631/99 360/580/99 +f 361/587/101 365/597/101 364/593/101 +f 365/597/88 367/601/88 366/598/88 +f 367/601/105 369/605/105 368/604/105 +f 369/605/106 371/590/106 370/606/106 +f 358/607/107 362/632/107 363/608/107 +f 374/609/108 377/633/108 376/610/108 +f 372/592/111 374/634/111 375/615/111 +f 371/590/112 372/592/112 373/596/112 +f 376/610/114 377/633/114 363/620/114 +o RightLeg +v 0.100000 23.250000 -3.675000 +v -4.100000 23.250000 -3.675000 +v 0.100000 24.299999 -3.675000 +v -4.100000 24.299999 -3.675000 +v 0.099999 11.700001 2.100000 +v -4.100001 11.700001 2.100000 +v 0.099999 11.700001 -2.100000 +v -4.100001 11.700001 -2.100000 +v -0.950001 16.950001 -2.100000 +v -3.050000 16.950001 -2.100000 +v -1.475001 19.049999 -2.100000 +v -2.525001 19.049999 -2.100000 +v -0.950001 18.000000 -2.100000 +v -3.050000 18.000000 -2.100000 +v -1.475000 19.575001 -2.100000 +v -2.525001 19.575001 -2.100000 +v -1.475001 19.049999 -2.625000 +v -0.950001 16.950001 -2.625000 +v -3.050000 16.950001 -2.625000 +v -2.525001 19.049999 -2.625000 +v -4.100001 18.000000 -2.100000 +v 0.099999 18.000000 -2.100000 +v -4.100001 18.000000 0.000000 +v 0.099999 18.000000 0.000000 +v -4.100001 19.049999 2.100000 +v 0.099999 19.049999 2.100000 +v -0.950001 18.000000 -2.625000 +v -3.050000 18.000000 -2.625000 +v -1.475000 19.575001 -2.625000 +v -2.525001 19.575001 -2.625000 +v -4.100001 18.000000 -2.625000 +v 0.099999 18.000000 -2.625000 +v 0.625000 18.000000 -2.100000 +v 0.625000 18.000000 0.000000 +v 0.625000 19.049999 2.100000 +v -4.625000 18.000000 -2.100000 +v -4.625000 18.000000 0.000000 +v -4.625000 19.049999 2.100000 +v -4.100001 19.049999 2.625000 +v 0.099999 19.049999 2.625000 +v -4.100001 16.424999 -2.100000 +v 0.099999 16.424999 -2.100000 +v -4.100001 16.424999 -2.625000 +v 0.099999 16.424999 -2.625000 +v 0.624999 16.424999 -2.100000 +v -4.625000 16.424999 -2.100000 +v -4.100001 16.424999 2.100000 +v 0.099999 16.424999 2.100000 +v 0.624999 16.424999 2.100000 +v -4.625000 16.424999 2.100000 +v -4.100001 16.424999 2.625000 +v 0.099999 16.424999 2.625000 +v 0.099999 13.275000 -2.625000 +v 0.099999 13.275000 -2.100000 +v -4.100001 13.275000 -2.100000 +v -4.100001 13.275000 -2.625000 +v 0.624999 13.275000 -2.100000 +v -4.625001 13.275000 -2.100000 +v 0.099999 13.275000 2.100000 +v 0.624999 13.275000 2.100000 +v -4.625001 13.275000 2.100000 +v -4.100001 13.275000 2.100000 +v -4.100001 13.275000 2.625000 +v 0.099999 13.275000 2.625000 +v -4.100000 21.674999 -2.625000 +v 0.100000 21.674999 -2.625000 +v 0.625000 21.674999 -2.100000 +v -4.625000 21.674999 -2.100000 +v 0.625000 21.674999 2.100000 +v -4.625000 21.674999 2.100000 +v -4.100000 21.674999 2.625000 +v 0.100000 21.674999 2.625000 +v 0.100000 21.674999 2.100000 +v -4.100000 21.674999 2.100000 +v 0.100000 21.674999 -2.100000 +v -4.100000 21.674999 -2.100000 +v -4.100000 22.200001 -2.625000 +v 0.100000 22.200001 -2.625000 +v 0.625000 22.200001 -2.100000 +v -4.625000 22.200001 -2.100000 +v 0.625000 22.200001 2.100000 +v -4.625000 22.200001 2.100000 +v -4.100000 22.200001 2.625000 +v 0.100000 22.200001 2.625000 +v 0.100000 22.200001 2.100000 +v -4.100000 22.200001 2.100000 +v 0.100000 22.200001 -2.100000 +v -4.100000 22.200001 -2.100000 +v -4.100000 24.299999 -2.625000 +v -4.625000 24.299999 -2.100000 +v 0.100000 24.299999 -2.625000 +v 0.625000 24.299999 -2.100000 +v -4.625000 24.299999 2.100000 +v -4.100000 24.299999 2.625000 +v 0.625000 24.299999 2.100000 +v 0.100000 24.299999 2.625000 +v -1.475000 20.110409 -3.209024 +v -2.525000 20.110409 -3.209024 +v -1.475000 20.469528 -4.195702 +v -2.525000 20.469528 -4.195702 +v -0.425000 23.070438 -2.131661 +v -3.575000 23.070440 -2.131661 +v -0.425000 23.429560 -3.118338 +v -3.575000 23.429560 -3.118338 +v -2.525000 23.070440 -2.131661 +v -2.525000 23.429560 -3.118338 +v -1.475000 23.070440 -2.131661 +v -1.475000 23.429560 -3.118338 +v -2.000000 21.097086 -2.849903 +v -2.000000 21.456205 -3.836581 +vt 0.395833 1.000000 +vt 0.562500 0.800000 +vt 0.562500 1.000000 +vt 0.375000 0.150000 +vt 0.208333 0.125000 +vt 0.375000 0.125000 +vt 0.791667 -0.000000 +vt 0.979167 0.025000 +vt 0.958333 0.250000 +vt 0.791667 0.300000 +vt 0.791667 0.250000 +vt 0.770833 0.525000 +vt 0.833333 0.425000 +vt 0.854167 0.525000 +vt 0.833333 0.400000 +vt 0.791667 0.425000 +vt 0.791667 0.400000 +vt 0.770833 0.550000 +vt 0.854167 0.550000 +vt 0.750000 0.425000 +vt 0.750000 0.525000 +vt 0.875000 0.525000 +vt 0.854167 0.425000 +vt 0.875000 0.425000 +vt 0.520833 0.375000 +vt 0.562500 0.350000 +vt 0.562500 0.375000 +vt 0.437500 0.375000 +vt 0.458333 0.350000 +vt 0.458333 0.375000 +vt 0.500000 0.350000 +vt 0.500000 0.375000 +vt 0.520833 0.350000 +vt 0.395833 0.375000 +vt 0.437500 0.350000 +vt 0.666667 0.375000 +vt 0.750000 0.350000 +vt 0.750000 0.375000 +vt 0.583333 0.375000 +vt 0.666667 0.350000 +vt 0.208333 0.375000 +vt 0.291667 0.350000 +vt 0.291667 0.375000 +vt 0.375000 0.350000 +vt 0.375000 0.375000 +vt 0.020833 0.300000 +vt 0.187500 0.325000 +vt 0.020833 0.325000 +vt 0.208333 0.350000 +vt 0.187500 0.375000 +vt 0.000000 0.325000 +vt 0.375000 0.375000 +vt 0.395833 0.350000 +vt 0.562500 0.375000 +vt 0.583333 0.350000 +vt 0.395833 0.525000 +vt 0.395833 0.550000 +vt 0.375000 0.525000 +vt 0.583333 0.525000 +vt 0.583333 0.550000 +vt 0.562500 0.525000 +vt 0.562500 0.525000 +vt 0.562500 0.550000 +vt 0.208333 0.550000 +vt 0.375000 0.525000 +vt 0.375000 0.550000 +vt 0.750000 0.525000 +vt 0.187500 0.550000 +vt 0.020833 0.525000 +vt 0.187500 0.525000 +vt 0.208333 0.525000 +vt 0.187500 0.525000 +vt -0.000000 0.525000 +vt 0.020833 0.550000 +vt 0.395833 0.725000 +vt 0.375000 0.725000 +vt 0.395833 0.700000 +vt 0.583333 0.725000 +vt 0.562500 0.725000 +vt 0.583333 0.700000 +vt 0.562500 0.725000 +vt 0.562500 0.700000 +vt 0.375000 0.725000 +vt 0.208333 0.700000 +vt 0.375000 0.700000 +vt 0.750000 0.725000 +vt 0.020833 0.725000 +vt 0.187500 0.700000 +vt 0.187500 0.725000 +vt 0.208333 0.725000 +vt 0.187500 0.725000 +vt 0.000000 0.725000 +vt 0.020833 0.700000 +vt 0.791667 0.350000 +vt 0.958333 0.300000 +vt 0.958333 0.350000 +vt -0.000000 0.700000 +vt -0.000000 0.550000 +vt 0.750000 0.550000 +vt 0.791667 0.400000 +vt 0.958333 0.400000 +vt 0.750000 0.300000 +vt 1.000000 0.300000 +vt 0.583333 0.175000 +vt 0.375000 0.175000 +vt 0.395833 0.175000 +vt 0.458333 0.275000 +vt 0.562500 0.175000 +vt -0.000000 0.300000 +vt 0.020833 0.175000 +vt 0.187500 0.300000 +vt 0.208333 0.175000 +vt 0.208333 0.300000 +vt 0.750000 0.175000 +vt 0.750000 0.300000 +vt 0.187500 0.175000 +vt 0.395833 0.150000 +vt 0.562500 0.150000 +vt 0.375000 0.150000 +vt 0.020833 0.150000 +vt 0.187500 0.150000 +vt 0.208333 0.150000 +vt 0.562500 0.150000 +vt 0.583333 0.150000 +vt -0.000000 0.150000 +vt 0.750000 0.150000 +vt 0.395833 0.125000 +vt 0.562500 0.100000 +vt 0.562500 0.125000 +vt 0.208333 0.100000 +vt 0.375000 0.100000 +vt 0.375000 0.125000 +vt 0.395833 0.100000 +vt 0.020833 0.125000 +vt 0.187500 0.100000 +vt 0.187500 0.125000 +vt 0.187500 0.125000 +vt 0.583333 0.100000 +vt 0.583333 0.125000 +vt 0.562500 0.125000 +vt 0.020833 0.100000 +vt -0.000000 0.125000 +vt 0.750000 0.125000 +vt 0.750000 0.100000 +vt 0.562500 0.000000 +vt 0.583333 0.000000 +vt 0.750000 0.000000 +vt 0.187500 0.000000 +vt 0.208333 -0.000000 +vt 0.395833 -0.000000 +vt 0.375000 -0.000000 +vt -0.000000 0.100000 +vt 0.020833 0.000000 +vt 0.187500 0.400000 +vt 0.020833 0.400000 +vt 0.208333 0.400000 +vt 0.291667 0.450000 +vt 0.666667 0.450000 +vt 0.520833 0.450000 +vt 0.437500 0.450000 +vt 0.395833 0.800000 +vt 0.375000 0.800000 +vt 0.208333 0.800000 +vt 0.187500 0.800000 +vt 0.020833 0.800000 +vt 0.750000 0.800000 +vt 0.583333 0.800000 +vt 0.687500 0.950000 +vt 0.729167 0.900000 +vt 0.729167 0.950000 +vt 0.562500 0.900000 +vt 0.687500 0.900000 +vt 0.854167 0.900000 +vt 0.854167 0.950000 +vt 0.562500 0.850000 +vt 0.645833 0.800000 +vt 0.645833 0.850000 +vt 0.854167 0.850000 +vt 0.770833 0.800000 +vt 0.854167 0.800000 +vt 0.645833 1.000000 +vt 0.562500 0.950000 +vt 0.770833 1.000000 +vt 0.708333 1.000000 +vt 0.770833 0.850000 +vt 0.708333 0.850000 +vt 0.770833 0.225000 +vt 0.770833 0.025000 +vt 0.958333 -0.000000 +vt 0.979167 0.225000 +vt 0.770833 0.425000 +vt 0.750000 0.700000 +vt 0.750000 0.400000 +vt 1.000000 0.400000 +vt 0.500000 0.275000 +vt 0.000000 0.175000 +vt -0.000000 0.000000 +vt 0.375000 0.450000 +vt 0.583333 0.450000 +vt 0.750000 0.400000 +vt 0.395833 0.450000 +vt 0.562500 0.450000 +vt 0.562500 0.800000 +vt 0.562500 1.000000 +vt 0.854167 1.000000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9701 0.2425 0.0000 +vn 0.9701 0.2425 0.0000 +vn 0.9487 -0.3162 0.0000 +vn -0.9487 -0.3162 0.0000 +vn 0.0000 -0.8944 0.4472 +vn -0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.7071 -0.0000 -0.7071 +vn 0.7071 -0.0000 0.7071 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.7071 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.0000 -0.9397 -0.3420 +vn -0.9487 -0.2972 -0.1082 +vn 0.9487 -0.2972 -0.1082 +vn 0.9701 0.2279 0.0830 +vn -0.9701 0.2279 0.0830 +vn -0.0000 -0.3420 0.9397 +vn 0.0000 0.3420 -0.9397 +s off +f 383/635/120 384/636/120 382/637/120 +f 453/638/121 463/639/121 465/640/121 +f 471/641/122 472/642/122 468/643/122 +f 468/643/122 381/644/122 466/645/122 +f 396/646/123 394/647/123 395/648/123 +f 388/649/122 397/650/122 389/651/122 +f 387/652/120 395/648/120 386/653/120 +f 389/654/124 396/646/124 387/655/124 +f 386/656/125 394/657/125 388/658/125 +f 390/659/120 409/660/120 399/661/120 +f 391/662/126 407/663/126 393/664/126 +f 393/664/120 406/665/120 392/666/120 +f 392/666/127 404/667/127 390/659/127 +f 398/668/120 405/669/120 391/662/120 +f 401/670/128 412/671/128 403/672/128 +f 399/673/120 411/674/120 401/670/120 +f 402/675/128 414/676/128 400/677/128 +f 400/677/120 413/678/120 398/679/120 +f 417/680/120 402/681/120 403/682/120 +f 415/683/120 402/675/120 416/684/120 +f 403/682/120 412/685/120 417/680/120 +f 398/668/120 413/686/120 408/687/120 +f 399/673/120 409/688/120 410/689/120 +f 418/690/122 420/691/122 423/692/122 +f 419/693/122 422/694/122 421/695/122 +f 420/691/122 419/696/122 421/697/122 +f 427/698/122 418/699/122 423/700/122 +f 425/701/122 422/694/122 419/693/122 +f 428/702/122 425/703/122 424/704/122 +f 424/705/122 427/698/122 428/706/122 +f 426/707/122 425/703/122 429/708/122 +f 432/709/120 435/710/120 433/711/120 +f 431/712/120 430/713/120 434/714/120 +f 431/715/120 433/711/120 430/716/120 +f 432/717/120 438/718/120 435/719/120 +f 434/714/120 436/720/120 431/712/120 +f 436/721/120 440/722/120 439/723/120 +f 439/724/120 440/725/120 438/718/120 +f 437/726/120 441/727/120 436/721/120 +f 427/698/129 440/722/129 428/702/129 +f 428/702/130 441/727/130 429/708/130 +f 421/697/131 434/714/131 430/716/131 +f 379/728/123 380/729/123 378/730/123 +f 429/708/132 437/731/132 426/732/132 +f 421/697/123 433/711/123 420/691/123 +f 426/733/133 434/714/133 422/694/133 +f 423/700/121 438/718/121 427/698/121 +f 454/734/134 378/730/134 455/735/134 +f 379/728/121 466/736/121 381/644/121 +f 420/691/135 435/719/135 423/700/135 +f 468/737/133 378/730/133 380/729/133 +f 409/660/131 444/738/131 410/689/131 +f 408/687/135 445/739/135 442/740/135 +f 407/741/123 442/740/123 443/742/123 +f 412/743/132 449/744/132 417/680/132 +f 416/745/129 447/746/129 415/747/129 +f 446/748/133 412/749/133 411/674/133 +f 417/680/130 448/750/130 416/745/130 +f 445/739/121 414/676/121 447/746/121 +f 443/742/122 453/751/122 452/752/122 +f 447/746/122 453/638/122 445/739/122 +f 445/753/122 453/751/122 442/740/122 +f 448/750/122 450/754/122 451/755/122 +f 448/750/122 451/756/122 447/746/122 +f 444/738/122 443/757/122 452/758/122 +f 449/744/122 446/759/122 450/754/122 +f 444/738/122 450/760/122 446/748/122 +f 465/761/120 455/762/120 464/763/120 +f 465/640/120 459/764/120 457/765/120 +f 457/766/120 454/767/120 465/761/120 +f 462/768/120 460/769/120 463/770/120 +f 460/771/120 459/764/120 463/639/120 +f 456/772/120 464/773/120 455/774/120 +f 461/775/120 462/768/120 458/776/120 +f 462/777/120 456/772/120 458/778/120 +f 456/772/131 468/779/131 469/780/131 +f 456/772/133 472/781/133 458/778/133 +f 464/763/123 453/751/123 465/761/123 +f 461/775/130 471/782/130 460/769/130 +f 460/769/129 470/783/129 459/764/129 +f 457/765/135 466/784/135 454/767/135 +f 459/764/121 467/785/121 457/765/121 +f 458/786/132 473/787/132 461/775/132 +f 452/758/133 462/777/133 450/760/133 +f 451/755/130 462/768/130 463/770/130 +f 402/788/130 425/703/130 403/789/130 +f 424/705/121 402/790/121 400/791/121 +f 401/792/133 425/701/133 419/693/133 +f 390/793/123 393/664/123 392/666/123 +f 391/794/123 390/793/123 419/696/123 +f 432/709/123 384/636/123 385/795/123 +f 439/724/121 385/796/121 383/797/121 +f 436/721/130 383/798/130 382/799/130 +f 431/712/133 382/800/133 384/801/133 +f 475/802/136 476/803/136 474/804/136 +f 475/802/137 481/805/137 477/806/137 +f 474/804/138 480/807/138 478/808/138 +f 483/809/139 486/810/139 487/811/139 +f 485/812/140 486/813/140 484/814/140 +f 486/815/141 479/816/141 475/802/141 +f 478/808/141 486/817/141 474/804/141 +f 475/802/141 474/804/141 486/818/141 +f 487/819/142 480/807/142 476/803/142 +f 481/805/142 487/811/142 477/806/142 +f 476/803/142 477/806/142 487/820/142 +f 383/635/120 385/795/120 384/636/120 +f 453/638/121 451/756/121 463/639/121 +f 468/643/122 466/645/122 467/821/122 +f 467/821/122 470/822/122 471/641/122 +f 471/641/122 473/823/122 472/642/122 +f 472/642/122 469/824/122 468/643/122 +f 468/643/122 467/821/122 471/641/122 +f 468/643/122 380/729/122 381/644/122 +f 396/646/123 397/650/123 394/647/123 +f 388/649/122 394/647/122 397/650/122 +f 387/652/120 396/646/120 395/648/120 +f 389/654/124 397/825/124 396/646/124 +f 386/656/125 395/648/125 394/657/125 +f 390/659/120 404/667/120 409/660/120 +f 391/662/126 405/669/126 407/663/126 +f 393/664/120 407/663/120 406/665/120 +f 392/666/127 406/665/127 404/667/127 +f 398/668/120 408/687/120 405/669/120 +f 401/670/128 411/674/128 412/671/128 +f 399/673/120 410/689/120 411/674/120 +f 402/675/128 415/683/128 414/676/128 +f 400/677/120 414/676/120 413/678/120 +f 417/680/120 416/745/120 402/681/120 +f 420/691/122 418/690/122 419/696/122 +f 427/698/122 424/705/122 418/699/122 +f 425/701/122 426/733/122 422/694/122 +f 428/702/122 429/708/122 425/703/122 +f 431/715/120 432/709/120 433/711/120 +f 432/717/120 439/724/120 438/718/120 +f 434/714/120 437/826/120 436/720/120 +f 436/721/120 441/727/120 440/722/120 +f 427/698/129 438/718/129 440/722/129 +f 428/702/130 440/722/130 441/727/130 +f 421/697/131 422/694/131 434/714/131 +f 379/728/123 381/644/123 380/729/123 +f 429/708/132 441/727/132 437/731/132 +f 421/697/123 430/716/123 433/711/123 +f 426/733/133 437/826/133 434/714/133 +f 423/700/121 435/719/121 438/718/121 +f 454/734/134 379/728/134 378/730/134 +f 379/728/121 454/827/121 466/736/121 +f 420/691/135 433/711/135 435/719/135 +f 468/737/133 455/828/133 378/730/133 +f 409/660/131 443/742/131 444/738/131 +f 408/687/135 413/678/135 445/739/135 +f 407/741/123 405/669/123 408/687/123 +f 443/742/123 409/660/123 406/829/123 +f 409/660/123 404/667/123 406/829/123 +f 407/741/123 408/687/123 442/740/123 +f 443/742/123 406/829/123 407/741/123 +f 412/743/132 446/830/132 449/744/132 +f 416/745/129 448/750/129 447/746/129 +f 411/674/133 410/689/133 444/738/133 +f 444/738/133 446/748/133 411/674/133 +f 417/680/130 449/744/130 448/750/130 +f 413/678/121 414/676/121 445/739/121 +f 414/676/121 415/747/121 447/746/121 +f 443/742/122 442/740/122 453/751/122 +f 447/746/122 451/756/122 453/638/122 +f 448/750/122 449/744/122 450/754/122 +f 444/738/122 452/758/122 450/760/122 +f 465/761/120 454/767/120 455/762/120 +f 465/640/120 463/639/120 459/764/120 +f 462/768/120 461/775/120 460/769/120 +f 462/777/120 464/773/120 456/772/120 +f 456/772/131 455/762/131 468/779/131 +f 456/772/133 469/780/133 472/781/133 +f 464/763/123 452/752/123 453/751/123 +f 461/775/130 473/787/130 471/782/130 +f 460/769/129 471/782/129 470/783/129 +f 457/765/135 467/785/135 466/784/135 +f 459/764/121 470/783/121 467/785/121 +f 458/786/132 472/831/132 473/787/132 +f 452/758/133 464/773/133 462/777/133 +f 451/755/130 450/754/130 462/768/130 +f 402/788/130 424/704/130 425/703/130 +f 400/791/121 398/832/121 418/699/121 +f 418/699/121 424/705/121 400/791/121 +f 419/693/133 399/833/133 401/792/133 +f 401/792/133 403/834/133 425/701/133 +f 390/793/123 391/794/123 393/664/123 +f 418/690/123 398/835/123 391/794/123 +f 390/793/123 399/836/123 419/696/123 +f 418/690/123 391/794/123 419/696/123 +f 432/709/123 431/715/123 384/636/123 +f 439/724/121 432/717/121 385/796/121 +f 436/721/130 439/723/130 383/798/130 +f 431/712/133 436/720/133 382/800/133 +f 475/802/136 477/806/136 476/803/136 +f 475/802/137 479/816/137 481/805/137 +f 474/804/138 476/803/138 480/807/138 +f 483/809/139 482/837/139 486/810/139 +f 485/812/140 487/819/140 486/813/140 +f 486/815/141 482/838/141 479/816/141 +f 478/808/141 484/839/141 486/817/141 +f 487/819/142 485/812/142 480/807/142 +f 481/805/142 483/809/142 487/811/142 +o LeftLeg +v -0.100000 23.250000 -3.675000 +v 4.100000 23.250000 -3.675000 +v -0.100000 24.299999 -3.675000 +v 4.100000 24.299999 -3.675000 +v -0.100001 11.700001 2.100000 +v 4.099999 11.700001 2.100000 +v -0.100001 11.700001 -2.100000 +v 4.099999 11.700001 -2.100000 +v 0.949999 16.950001 -2.100000 +v 3.049999 16.950001 -2.100000 +v 1.475000 19.049999 -2.100000 +v 2.525000 19.049999 -2.100000 +v 0.950000 18.000000 -2.100000 +v 3.049999 18.000000 -2.100000 +v 1.475000 19.575001 -2.100000 +v 2.525000 19.575001 -2.100000 +v 1.475000 19.049999 -2.625000 +v 0.949999 16.950001 -2.625000 +v 3.049999 16.950001 -2.625000 +v 2.525000 19.049999 -2.625000 +v 4.099999 18.000000 -2.100000 +v -0.100000 18.000000 -2.100000 +v 4.099999 18.000000 0.000000 +v -0.100000 18.000000 0.000000 +v 4.099999 19.049999 2.100000 +v -0.100000 19.049999 2.100000 +v 0.950000 18.000000 -2.625000 +v 3.049999 18.000000 -2.625000 +v 1.475000 19.575001 -2.625000 +v 2.525000 19.575001 -2.625000 +v 4.099999 18.000000 -2.625000 +v -0.100000 18.000000 -2.625000 +v -0.625000 18.000000 -2.100000 +v -0.625000 18.000000 0.000000 +v -0.625000 19.049999 2.100000 +v 4.625000 18.000000 -2.100000 +v 4.625000 18.000000 0.000000 +v 4.625000 19.049999 2.100000 +v 4.099999 19.049999 2.625000 +v -0.100000 19.049999 2.625000 +v 4.099999 16.424999 -2.100000 +v -0.100001 16.424999 -2.100000 +v 4.099999 16.424999 -2.625000 +v -0.100001 16.424999 -2.625000 +v -0.625001 16.424999 -2.100000 +v 4.625000 16.424999 -2.100000 +v 4.099999 16.424999 2.100000 +v -0.100001 16.424999 2.100000 +v -0.625001 16.424999 2.100000 +v 4.625000 16.424999 2.100000 +v 4.099999 16.424999 2.625000 +v -0.100001 16.424999 2.625000 +v -0.100001 13.275000 -2.625000 +v -0.100001 13.275000 -2.100000 +v 4.099999 13.275000 -2.100000 +v 4.099999 13.275000 -2.625000 +v -0.625001 13.275000 -2.100000 +v 4.624999 13.275000 -2.100000 +v -0.100001 13.275000 2.100000 +v -0.625001 13.275000 2.100000 +v 4.624999 13.275000 2.100000 +v 4.099999 13.275000 2.100000 +v 4.099999 13.275000 2.625000 +v -0.100001 13.275000 2.625000 +v 4.100000 21.674999 -2.625000 +v -0.100000 21.674999 -2.625000 +v -0.625000 21.674999 -2.100000 +v 4.625000 21.674999 -2.100000 +v -0.625000 21.674999 2.100000 +v 4.625000 21.674999 2.100000 +v 4.100000 21.674999 2.625000 +v -0.100000 21.674999 2.625000 +v -0.100000 21.674999 2.100000 +v 4.100000 21.674999 2.100000 +v -0.100000 21.674999 -2.100000 +v 4.100000 21.674999 -2.100000 +v 4.100000 22.199999 -2.625000 +v -0.100000 22.200001 -2.625000 +v -0.625000 22.200001 -2.100000 +v 4.625000 22.199999 -2.100000 +v -0.625000 22.200001 2.100000 +v 4.625000 22.199999 2.100000 +v 4.100000 22.199999 2.625000 +v -0.100000 22.200001 2.625000 +v -0.100000 22.200001 2.100000 +v 4.100000 22.199999 2.100000 +v -0.100000 22.200001 -2.100000 +v 4.100000 22.199999 -2.100000 +v 4.100000 24.299999 -2.625000 +v 4.625000 24.299999 -2.100000 +v -0.100000 24.299999 -2.625000 +v -0.625000 24.299999 -2.100000 +v 4.625000 24.299999 2.100000 +v 4.100000 24.299999 2.625000 +v -0.625000 24.299999 2.100000 +v -0.100000 24.299999 2.625000 +v 1.475000 20.110407 -3.209024 +v 2.525000 20.110407 -3.209024 +v 1.475000 20.469528 -4.195702 +v 2.525000 20.469528 -4.195702 +v 0.425000 23.070438 -2.131661 +v 3.575000 23.070438 -2.131661 +v 0.425000 23.429560 -3.118338 +v 3.575000 23.429560 -3.118338 +v 2.525000 23.070438 -2.131661 +v 2.525000 23.429560 -3.118338 +v 1.475000 23.070438 -2.131661 +v 1.475000 23.429560 -3.118338 +v 2.000000 21.097084 -2.849903 +v 2.000000 21.456205 -3.836581 +vt 0.562500 0.800000 +vt 0.395833 1.000000 +vt 0.562500 1.000000 +vt 0.208333 0.125000 +vt 0.375000 0.150000 +vt 0.375000 0.125000 +vt 0.979167 0.025000 +vt 0.791667 -0.000000 +vt 0.770833 0.225000 +vt 0.791667 0.300000 +vt 0.958333 0.250000 +vt 0.791667 0.250000 +vt 0.833333 0.425000 +vt 0.770833 0.525000 +vt 0.854167 0.525000 +vt 0.791667 0.425000 +vt 0.833333 0.400000 +vt 0.791667 0.400000 +vt 0.770833 0.550000 +vt 0.854167 0.550000 +vt 0.750000 0.425000 +vt 0.750000 0.525000 +vt 0.854167 0.425000 +vt 0.875000 0.525000 +vt 0.875000 0.425000 +vt 0.562500 0.350000 +vt 0.520833 0.375000 +vt 0.562500 0.375000 +vt 0.458333 0.350000 +vt 0.437500 0.375000 +vt 0.458333 0.375000 +vt 0.500000 0.350000 +vt 0.500000 0.375000 +vt 0.520833 0.350000 +vt 0.437500 0.350000 +vt 0.395833 0.375000 +vt 0.750000 0.350000 +vt 0.666667 0.375000 +vt 0.750000 0.375000 +vt 0.666667 0.350000 +vt 0.583333 0.375000 +vt 0.291667 0.350000 +vt 0.208333 0.375000 +vt 0.291667 0.375000 +vt 0.375000 0.350000 +vt 0.375000 0.375000 +vt 0.187500 0.325000 +vt 0.020833 0.300000 +vt 0.020833 0.325000 +vt 0.208333 0.350000 +vt 0.187500 0.375000 +vt 0.000000 0.325000 +vt 0.395833 0.350000 +vt 0.375000 0.375000 +vt 0.583333 0.350000 +vt 0.562500 0.375000 +vt 0.395833 0.525000 +vt 0.375000 0.525000 +vt 0.395833 0.550000 +vt 0.583333 0.525000 +vt 0.562500 0.525000 +vt 0.583333 0.550000 +vt 0.562500 0.525000 +vt 0.562500 0.550000 +vt 0.375000 0.525000 +vt 0.208333 0.550000 +vt 0.375000 0.550000 +vt 0.750000 0.525000 +vt 0.020833 0.525000 +vt 0.187500 0.550000 +vt 0.187500 0.525000 +vt 0.208333 0.525000 +vt 0.187500 0.525000 +vt -0.000000 0.525000 +vt 0.020833 0.550000 +vt 0.395833 0.725000 +vt 0.395833 0.700000 +vt 0.375000 0.725000 +vt 0.583333 0.725000 +vt 0.583333 0.700000 +vt 0.562500 0.725000 +vt 0.562500 0.725000 +vt 0.562500 0.700000 +vt 0.208333 0.700000 +vt 0.375000 0.725000 +vt 0.375000 0.700000 +vt 0.750000 0.725000 +vt 0.187500 0.700000 +vt 0.020833 0.725000 +vt 0.187500 0.725000 +vt 0.208333 0.725000 +vt 0.187500 0.725000 +vt 0.000000 0.725000 +vt 0.020833 0.700000 +vt 0.958333 0.300000 +vt 0.791667 0.350000 +vt 0.958333 0.350000 +vt -0.000000 0.550000 +vt 0.750000 0.550000 +vt 0.791667 0.400000 +vt 0.958333 0.400000 +vt 0.750000 0.300000 +vt 1.000000 0.300000 +vt 0.583333 0.175000 +vt 0.395833 0.175000 +vt 0.500000 0.275000 +vt 0.562500 0.175000 +vt 0.020833 0.175000 +vt -0.000000 0.300000 +vt 0.208333 0.300000 +vt 0.187500 0.175000 +vt 0.187500 0.300000 +vt 0.750000 0.175000 +vt 0.208333 0.175000 +vt 0.375000 0.175000 +vt 0.395833 0.150000 +vt 0.562500 0.150000 +vt 0.375000 0.150000 +vt 0.020833 0.150000 +vt 0.187500 0.150000 +vt 0.208333 0.150000 +vt 0.583333 0.150000 +vt 0.562500 0.150000 +vt -0.000000 0.150000 +vt 0.750000 0.150000 +vt 0.562500 0.100000 +vt 0.395833 0.125000 +vt 0.562500 0.125000 +vt 0.208333 0.100000 +vt 0.375000 0.100000 +vt 0.375000 0.125000 +vt 0.395833 0.100000 +vt 0.187500 0.100000 +vt 0.020833 0.125000 +vt 0.187500 0.125000 +vt 0.187500 0.125000 +vt 0.583333 0.100000 +vt 0.562500 0.125000 +vt 0.583333 0.125000 +vt 0.020833 0.100000 +vt -0.000000 0.125000 +vt 0.750000 0.125000 +vt 0.750000 0.100000 +vt 0.583333 0.000000 +vt 0.750000 0.000000 +vt 0.187500 0.000000 +vt 0.208333 -0.000000 +vt 0.395833 -0.000000 +vt 0.375000 -0.000000 +vt 0.020833 0.000000 +vt -0.000000 0.100000 +vt 0.187500 0.400000 +vt 0.020833 0.400000 +vt 0.375000 0.450000 +vt 0.291667 0.450000 +vt 0.750000 0.400000 +vt 0.666667 0.450000 +vt 0.520833 0.450000 +vt 0.437500 0.450000 +vt 0.395833 0.800000 +vt 0.375000 0.800000 +vt 0.208333 0.800000 +vt 0.187500 0.800000 +vt 0.020833 0.800000 +vt 0.750000 0.800000 +vt 0.583333 0.800000 +vt 0.729167 0.900000 +vt 0.687500 0.950000 +vt 0.729167 0.950000 +vt 0.562500 0.900000 +vt 0.687500 0.900000 +vt 0.854167 0.950000 +vt 0.645833 0.850000 +vt 0.562500 0.800000 +vt 0.562500 0.850000 +vt 0.854167 0.850000 +vt 0.770833 0.800000 +vt 0.770833 0.850000 +vt 0.562500 0.950000 +vt 0.645833 1.000000 +vt 0.770833 1.000000 +vt 0.708333 1.000000 +vt 0.854167 0.900000 +vt 0.708333 0.850000 +vt 0.979167 0.225000 +vt 0.958333 -0.000000 +vt 0.770833 0.025000 +vt 0.770833 0.425000 +vt 0.750000 0.700000 +vt -0.000000 0.700000 +vt 0.750000 0.400000 +vt 1.000000 0.400000 +vt 0.458333 0.275000 +vt 0.000000 0.175000 +vt 0.750000 0.300000 +vt 0.562500 0.000000 +vt -0.000000 0.000000 +vt 0.208333 0.400000 +vt 0.583333 0.450000 +vt 0.395833 0.450000 +vt 0.562500 0.450000 +vt 0.645833 0.800000 +vt 0.854167 0.800000 +vt 0.562500 1.000000 +vt 0.854167 1.000000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.9701 0.2425 0.0000 +vn -0.9701 0.2425 0.0000 +vn -0.9487 -0.3162 0.0000 +vn 0.9487 -0.3162 0.0000 +vn 0.0000 -0.8944 0.4472 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 +vn -0.0000 -0.7071 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 -0.9397 -0.3420 +vn 0.9487 -0.2972 -0.1082 +vn -0.9487 -0.2972 -0.1082 +vn -0.9701 0.2279 0.0830 +vn 0.9701 0.2279 0.0830 +vn 0.0000 -0.3420 0.9397 +vn -0.0000 0.3420 -0.9397 +s off +f 494/840/143 493/841/143 492/842/143 +f 573/843/144 563/844/144 575/845/144 +f 582/846/145 581/847/145 577/848/145 +f 491/849/145 578/850/145 576/851/145 +f 504/852/146 506/853/146 505/854/146 +f 507/855/145 498/856/145 499/857/145 +f 505/854/143 497/858/143 496/859/143 +f 506/853/147 499/860/147 497/861/147 +f 504/862/148 496/863/148 498/864/148 +f 519/865/143 500/866/143 509/867/143 +f 517/868/149 501/869/149 503/870/149 +f 516/871/143 503/870/143 502/872/143 +f 514/873/150 502/872/150 500/866/150 +f 515/874/143 508/875/143 501/869/143 +f 522/876/151 511/877/151 513/878/151 +f 521/879/143 509/880/143 511/877/143 +f 524/881/151 512/882/151 510/883/151 +f 523/884/143 510/883/143 508/885/143 +f 512/886/143 527/887/143 513/888/143 +f 525/889/143 526/890/143 512/882/143 +f 513/888/143 527/887/143 522/891/143 +f 508/875/143 518/892/143 523/893/143 +f 509/880/143 520/894/143 519/895/143 +f 528/896/145 533/897/145 530/898/145 +f 529/899/145 531/900/145 532/901/145 +f 529/902/145 530/898/145 531/903/145 +f 528/904/145 537/905/145 533/906/145 +f 532/901/145 535/907/145 529/899/145 +f 535/908/145 538/909/145 534/910/145 +f 534/911/145 538/912/145 537/905/145 +f 536/913/145 539/914/145 535/908/145 +f 542/915/143 543/916/143 545/917/143 +f 541/918/143 544/919/143 540/920/143 +f 543/916/143 541/921/143 540/922/143 +f 548/923/143 542/924/143 545/925/143 +f 546/926/143 544/919/143 541/918/143 +f 550/927/143 546/928/143 549/929/143 +f 549/930/143 548/923/143 550/931/143 +f 547/932/143 546/928/143 551/933/143 +f 550/927/152 537/905/152 538/909/152 +f 551/933/153 538/909/153 539/914/153 +f 540/922/154 532/901/154 531/903/154 +f 490/934/146 489/935/146 488/936/146 +f 536/937/155 551/933/155 539/914/155 +f 543/916/146 531/903/146 530/898/146 +f 544/919/156 536/938/156 532/901/156 +f 548/923/144 533/906/144 537/905/144 +f 488/936/157 564/939/157 565/940/157 +f 576/941/144 489/935/144 491/849/144 +f 545/925/158 530/898/158 533/906/158 +f 488/936/156 578/942/156 490/934/156 +f 554/943/154 519/865/154 520/894/154 +f 552/944/158 523/884/158 518/892/158 +f 516/945/146 553/946/146 552/944/146 +f 559/947/155 522/948/155 527/887/155 +f 525/949/152 558/950/152 526/951/152 +f 521/879/156 556/952/156 554/943/156 +f 526/951/153 559/947/153 527/887/153 +f 557/953/144 524/881/144 555/954/144 +f 563/955/145 553/946/145 562/956/145 +f 563/844/145 557/953/145 555/954/145 +f 555/957/145 552/944/145 563/955/145 +f 560/958/145 558/950/145 561/959/145 +f 558/950/145 557/953/145 561/960/145 +f 554/943/145 562/961/145 553/962/145 +f 559/947/145 560/958/145 556/963/145 +f 560/964/145 554/943/145 556/952/145 +f 565/965/143 575/966/143 574/967/143 +f 569/968/143 575/845/143 567/969/143 +f 567/970/143 575/966/143 564/971/143 +f 570/972/143 572/973/143 573/974/143 +f 570/975/143 573/843/143 569/968/143 +f 566/976/143 565/977/143 574/978/143 +f 571/979/143 568/980/143 572/973/143 +f 566/976/143 572/981/143 568/982/143 +f 579/983/154 565/965/154 566/976/154 +f 582/984/156 566/976/156 568/982/156 +f 563/955/146 574/967/146 575/966/146 +f 581/985/153 571/979/153 570/972/153 +f 580/986/152 570/972/152 569/968/152 +f 576/987/158 567/969/158 564/971/158 +f 577/988/144 569/968/144 567/969/144 +f 583/989/155 568/990/155 571/979/155 +f 572/981/156 562/961/156 560/964/156 +f 572/973/153 561/959/153 573/974/153 +f 535/908/153 512/991/153 513/992/153 +f 528/904/144 508/993/144 510/994/144 +f 535/907/156 513/995/156 511/996/156 +f 503/870/146 500/997/146 502/872/146 +f 500/997/146 501/998/146 528/896/146 +f 494/840/146 542/915/146 495/999/146 +f 495/1000/144 549/930/144 493/1001/144 +f 493/1002/153 546/928/153 492/1003/153 +f 492/1004/156 541/918/156 494/1005/156 +f 586/1006/159 585/1007/159 584/1008/159 +f 591/1009/160 585/1007/160 587/1010/160 +f 588/1011/161 586/1006/161 584/1008/161 +f 597/1012/162 592/1013/162 593/1014/162 +f 595/1015/163 596/1016/163 597/1017/163 +f 589/1018/164 596/1019/164 585/1007/164 +f 596/1020/164 588/1011/164 584/1008/164 +f 585/1007/164 596/1021/164 584/1008/164 +f 590/1022/165 597/1017/165 586/1006/165 +f 591/1009/165 597/1012/165 593/1014/165 +f 586/1006/165 597/1023/165 587/1010/165 +f 494/840/143 495/999/143 493/841/143 +f 573/843/144 561/960/144 563/844/144 +f 577/848/145 576/851/145 578/850/145 +f 578/850/145 579/1024/145 582/846/145 +f 582/846/145 583/1025/145 581/847/145 +f 581/847/145 580/1026/145 577/848/145 +f 577/848/145 578/850/145 582/846/145 +f 491/849/145 490/934/145 578/850/145 +f 504/852/146 507/855/146 506/853/146 +f 507/855/145 504/852/145 498/856/145 +f 505/854/143 506/853/143 497/858/143 +f 506/853/147 507/1027/147 499/860/147 +f 504/862/148 505/854/148 496/863/148 +f 519/865/143 514/873/143 500/866/143 +f 517/868/149 515/874/149 501/869/149 +f 516/871/143 517/868/143 503/870/143 +f 514/873/150 516/871/150 502/872/150 +f 515/874/143 518/892/143 508/875/143 +f 522/876/151 521/879/151 511/877/151 +f 521/879/143 520/894/143 509/880/143 +f 524/881/151 525/889/151 512/882/151 +f 523/884/143 524/881/143 510/883/143 +f 512/886/143 526/951/143 527/887/143 +f 529/902/145 528/896/145 530/898/145 +f 528/904/145 534/911/145 537/905/145 +f 532/901/145 536/938/145 535/907/145 +f 535/908/145 539/914/145 538/909/145 +f 543/916/143 542/915/143 541/921/143 +f 548/923/143 549/930/143 542/924/143 +f 546/926/143 547/1028/143 544/919/143 +f 550/927/143 551/933/143 546/928/143 +f 550/927/152 548/923/152 537/905/152 +f 551/933/153 550/927/153 538/909/153 +f 540/922/154 544/919/154 532/901/154 +f 490/934/146 491/849/146 489/935/146 +f 536/937/155 547/1029/155 551/933/155 +f 543/916/146 540/922/146 531/903/146 +f 544/919/156 547/1028/156 536/938/156 +f 548/923/144 545/925/144 533/906/144 +f 488/936/157 489/935/157 564/939/157 +f 576/941/144 564/1030/144 489/935/144 +f 545/925/158 543/916/158 530/898/158 +f 488/936/156 565/1031/156 578/942/156 +f 554/943/154 553/946/154 519/865/154 +f 552/944/158 555/954/158 523/884/158 +f 516/945/146 514/873/146 519/865/146 +f 552/944/146 518/892/146 517/1032/146 +f 518/892/146 515/874/146 517/1032/146 +f 516/945/146 519/865/146 553/946/146 +f 552/944/146 517/1032/146 516/945/146 +f 559/947/155 556/1033/155 522/948/155 +f 525/949/152 557/953/152 558/950/152 +f 554/943/156 520/894/156 521/879/156 +f 521/879/156 522/1034/156 556/952/156 +f 526/951/153 558/950/153 559/947/153 +f 525/949/144 524/881/144 557/953/144 +f 524/881/144 523/884/144 555/954/144 +f 563/955/145 552/944/145 553/946/145 +f 563/844/145 561/960/145 557/953/145 +f 560/958/145 559/947/145 558/950/145 +f 560/964/145 562/961/145 554/943/145 +f 565/965/143 564/971/143 575/966/143 +f 569/968/143 573/843/143 575/845/143 +f 570/972/143 571/979/143 572/973/143 +f 566/976/143 574/978/143 572/981/143 +f 579/983/154 578/1035/154 565/965/154 +f 582/984/156 579/983/156 566/976/156 +f 563/955/146 562/956/146 574/967/146 +f 581/985/153 583/989/153 571/979/153 +f 580/986/152 581/985/152 570/972/152 +f 576/987/158 577/988/158 567/969/158 +f 577/988/144 580/986/144 569/968/144 +f 583/989/155 582/1036/155 568/990/155 +f 572/981/156 574/978/156 562/961/156 +f 572/973/153 560/958/153 561/959/153 +f 535/908/153 534/910/153 512/991/153 +f 510/994/144 512/1037/144 534/911/144 +f 534/911/144 528/904/144 510/994/144 +f 511/996/156 509/1038/156 529/899/156 +f 529/899/156 535/907/156 511/996/156 +f 503/870/146 501/998/146 500/997/146 +f 501/998/146 508/1039/146 528/896/146 +f 528/896/146 529/902/146 500/997/146 +f 529/902/146 509/1040/146 500/997/146 +f 494/840/146 541/921/146 542/915/146 +f 495/1000/144 542/924/144 549/930/144 +f 493/1002/153 549/929/153 546/928/153 +f 492/1004/156 546/926/156 541/918/156 +f 586/1006/159 587/1010/159 585/1007/159 +f 591/1009/160 589/1018/160 585/1007/160 +f 588/1011/161 590/1022/161 586/1006/161 +f 597/1012/162 596/1041/162 592/1013/162 +f 595/1015/163 594/1042/163 596/1016/163 +f 589/1018/164 592/1043/164 596/1019/164 +f 596/1020/164 594/1044/164 588/1011/164 +f 590/1022/165 595/1015/165 597/1017/165 +f 591/1009/165 587/1010/165 597/1012/165 +o Helmet +v -4.725003 -2.950001 -4.725000 +v 25.451866 4.962900 4.881973 +v 4.199998 -3.475000 0.000000 +v 4.199998 -2.687500 1.363986 +v 4.199998 -1.112499 1.363986 +v 4.199998 -0.325001 0.000000 +v 4.199998 -1.112499 -1.363986 +v 4.199998 -2.687500 -1.363986 +v 5.512498 -2.950001 0.000000 +v 5.512498 -2.424999 0.909325 +v 5.512498 -1.375000 0.909325 +v 5.512498 -0.850000 -0.000000 +v 5.512498 -1.375000 -0.909325 +v 5.512498 -2.424999 -0.909325 +v 5.774998 -3.475000 0.000000 +v 5.774998 -2.687500 1.363986 +v 5.774998 -1.112499 1.363986 +v 5.774998 -0.325001 0.000000 +v 5.774998 -1.112499 -1.363986 +v 5.774998 -2.687500 -1.363986 +v 5.774998 -2.950001 0.000000 +v 5.774998 -2.424999 0.909325 +v 5.774998 -1.375000 0.909325 +v 5.774998 -0.850000 -0.000000 +v 5.774998 -1.375000 -0.909325 +v 5.774998 -2.424999 -0.909325 +v 4.199998 1.250000 0.000000 +v -4.200002 1.250000 0.000000 +v 4.199998 0.200001 0.000000 +v -4.200002 0.200001 0.000000 +v 4.199998 -0.325001 0.000000 +v -4.200002 -3.475000 0.000000 +v 5.249998 0.200001 0.000000 +v 5.249998 -0.325001 0.000000 +v -4.200002 -2.687500 1.363986 +v -4.200002 -1.112499 1.363986 +v -4.200002 -0.325001 0.000000 +v -4.200002 -1.112499 -1.363986 +v -4.200002 -2.687500 -1.363986 +v -5.512502 -2.950001 0.000000 +v -5.512502 -2.424999 0.909325 +v -5.512502 -1.375000 0.909325 +v -5.512502 -0.850000 0.000000 +v -5.512502 -1.375000 -0.909325 +v -5.512502 -2.424999 -0.909325 +v -5.775002 -3.475000 0.000000 +v -5.775002 -2.687500 1.363986 +v -5.775002 -1.112499 1.363986 +v -5.775002 -0.325001 0.000000 +v -5.775002 -1.112499 -1.363986 +v -5.775002 -2.687500 -1.363986 +v -5.775002 -2.950001 0.000000 +v -5.775002 -2.424999 0.909325 +v -5.775002 -1.375000 0.909325 +v -5.775002 -0.850000 0.000000 +v -5.775002 -1.375000 -0.909325 +v -5.775002 -2.424999 -0.909325 +v -5.250002 0.200001 0.000000 +v -5.250002 -0.325001 0.000000 +v -4.200002 -0.325001 0.000000 +v -4.200002 -4.525000 0.000000 +v -4.200003 -6.100000 -4.200000 +v 4.199997 -6.100000 -4.200000 +v -4.200003 -7.150000 -5.250000 +v 4.199997 -7.150000 -5.250000 +v -5.250002 -4.525000 0.000000 +v -5.250003 -6.100000 -4.200000 +v -4.200003 -8.200001 -5.250000 +v 4.199997 -8.200001 -5.250000 +v -4.200003 -9.250000 -4.200000 +v 4.199997 -9.250000 -4.200000 +v -4.200003 -9.250000 4.200000 +v 4.199997 -9.250000 4.200000 +v -4.200003 -8.200001 5.250000 +v 4.199997 -8.200001 5.250000 +v -4.200002 0.200001 5.250000 +v 4.199998 0.200001 5.250000 +v -4.200002 1.250000 4.200000 +v 4.199998 1.250000 4.200000 +v -5.250003 -8.200001 4.200000 +v -5.250003 -8.200001 -4.200000 +v -5.250002 0.200001 4.200000 +v -4.200002 -3.475000 0.000000 +v -5.250002 -3.475000 0.000000 +v 5.249998 -4.525000 0.000000 +v 5.249998 -3.475000 0.000000 +v 4.199998 -4.525000 0.000000 +v 4.199998 -3.475000 0.000000 +v 5.249997 -8.200001 -4.200000 +v 5.249997 -8.200001 4.200000 +v 5.249998 0.200001 4.200000 +v 5.249997 -6.100000 -4.200000 +v 4.199998 0.200001 -4.725000 +v -4.200002 0.200001 -4.725000 +v 4.199997 -6.625000 -4.725000 +v -4.200003 -6.625000 -4.725000 +v 4.199998 0.725000 -4.200000 +v -4.200002 0.725000 -4.200000 +v 4.199998 0.725000 0.000000 +v -4.200002 0.725000 0.000000 +v 4.724998 0.200001 -4.200000 +v 4.724998 0.200001 0.000000 +v 4.724997 -6.100000 -4.200000 +v 4.724997 -4.525000 0.000000 +v -4.725002 0.200001 -4.200000 +v -4.725002 0.200001 0.000000 +v -4.725003 -6.100000 -4.200000 +v -4.725003 -4.525000 0.000000 +v 4.199998 -2.950001 -5.250000 +v -4.200002 -2.950001 -5.250000 +v 4.724997 -2.950001 -4.725000 +v 6.824998 -3.475000 -1.363986 +v 4.724997 -3.475000 -1.363986 +v 6.824998 -0.325001 -1.363986 +v 4.724998 -0.325001 -1.363986 +v 6.824998 -0.325001 -2.413986 +v 6.824998 -3.475000 -2.413986 +v 4.724997 -3.475000 -2.413986 +v 4.724998 -0.325001 -2.413986 +v 3.674997 -11.349998 -1.575000 +v 2.624997 -11.349998 -1.575000 +v 3.674997 -11.349998 -3.675000 +v 2.624997 -11.349998 -3.675000 +v 4.199997 -9.250000 0.525000 +v 2.099997 -9.250000 0.525000 +v 4.199997 -9.250000 -2.625000 +v 2.099997 -9.250000 -2.625000 +v 3.674997 -10.825001 -3.150000 +v 2.624997 -10.825001 -3.150000 +v -2.625003 -11.349998 -1.575000 +v -3.675003 -11.349998 -1.575000 +v -2.625003 -11.349998 -3.675000 +v -3.675003 -11.349998 -3.675000 +v -2.100003 -9.250000 0.525000 +v -4.200003 -9.250000 0.525000 +v -2.100003 -9.250000 -2.625000 +v -4.200003 -9.250000 -2.625000 +v -2.625003 -10.825001 -3.150000 +v -3.675003 -10.825001 -3.150000 +v -4.987503 -9.512501 -4.725000 +v -4.987503 -9.512501 -0.525000 +v -5.358734 -9.358730 -4.725000 +v -5.358734 -9.358730 -0.525000 +v -5.512503 -8.987499 -4.725000 +v -5.512503 -8.987499 -0.525000 +v -5.358734 -8.616268 -4.725000 +v -5.358734 -8.616268 -0.525000 +v -4.987503 -8.462502 -4.725000 +v -4.987503 -8.462502 -0.525000 +v -4.616271 -8.616268 -4.725000 +v -4.616271 -8.616268 -0.525000 +v -4.462502 -8.987499 -4.725000 +v -4.462502 -8.987499 -0.525000 +v -4.616271 -9.358730 -4.725000 +v -4.616271 -9.358730 -0.525000 +vt 0.208333 0.540984 +vt 0.166667 0.491803 +vt 0.208333 0.491803 +vt 0.041667 0.540984 +vt -0.000000 0.491803 +vt 0.041667 0.491803 +vt 0.125000 0.540984 +vt 0.083333 0.491803 +vt 0.125000 0.491803 +vt 0.166667 0.540984 +vt 0.250000 0.540984 +vt 0.250000 0.491803 +vt 0.083333 0.540984 +vt 0.180556 0.573770 +vt 0.208333 0.557377 +vt 0.208333 0.573770 +vt 0.013889 0.573770 +vt 0.041667 0.557377 +vt 0.041667 0.573770 +vt 0.097222 0.573770 +vt 0.125000 0.557377 +vt 0.125000 0.573770 +vt 0.138889 0.573770 +vt 0.166667 0.557377 +vt 0.166667 0.573770 +vt 0.222222 0.573770 +vt 0.250000 0.557377 +vt 0.250000 0.573770 +vt 0.055556 0.573770 +vt 0.083333 0.557377 +vt 0.083333 0.573770 +vt 0.138889 0.557377 +vt 0.013889 0.557377 +vt -0.000000 0.540984 +vt 0.003825 0.590235 +vt 0.027778 0.573912 +vt 0.051730 0.590235 +vt 0.027778 0.032787 +vt 0.250000 0.000000 +vt 0.250000 0.032787 +vt 0.250000 0.491803 +vt 0.208333 0.540984 +vt 0.208333 0.491803 +vt 0.861111 0.196721 +vt 0.888889 0.213115 +vt 0.861111 0.213115 +vt 0.083333 0.491803 +vt 0.041667 0.540984 +vt 0.041667 0.491803 +vt 0.861111 0.163934 +vt 0.888889 0.196721 +vt 0.166667 0.491803 +vt 0.125000 0.540984 +vt 0.125000 0.491803 +vt 0.083333 0.540984 +vt -0.000000 0.540984 +vt -0.000000 0.491803 +vt 0.166667 0.540984 +vt 0.055556 0.557377 +vt 0.083333 0.573770 +vt 0.055556 0.573770 +vt 0.222222 0.557377 +vt 0.250000 0.573770 +vt 0.222222 0.573770 +vt 0.138889 0.557377 +vt 0.166667 0.573770 +vt 0.138889 0.573770 +vt 0.097222 0.557377 +vt 0.125000 0.573770 +vt 0.097222 0.573770 +vt 0.013889 0.557377 +vt 0.041667 0.573770 +vt 0.013889 0.573770 +vt 0.180556 0.557377 +vt 0.208333 0.573770 +vt 0.180556 0.573770 +vt 0.125000 0.557377 +vt 0.250000 0.557377 +vt 0.051730 0.590235 +vt 0.051730 0.622880 +vt 0.027778 0.639203 +vt 0.388889 0.196721 +vt 0.416667 0.213115 +vt 0.388889 0.213115 +vt 0.027778 0.163934 +vt 0.416667 0.196721 +vt 0.416667 0.163934 +vt 0.750000 0.393443 +vt 0.527778 0.426230 +vt 0.527778 0.393443 +vt 0.500000 0.393443 +vt 0.527778 0.262295 +vt 0.750000 0.426230 +vt 0.527778 0.459016 +vt 0.750000 0.459016 +vt 0.527778 0.491803 +vt 0.750000 0.491803 +vt 0.527778 0.754098 +vt 0.027778 0.491803 +vt 0.250000 0.459016 +vt 0.250000 0.491803 +vt 0.027778 0.459016 +vt 0.250000 0.196721 +vt 0.027778 0.196721 +vt 0.250000 0.163934 +vt 0.277778 0.491803 +vt 0.500000 0.459016 +vt 0.500000 0.491803 +vt 0.277778 0.459016 +vt 0.277778 0.196721 +vt 0.277778 0.163934 +vt 0.388889 0.163934 +vt 0.388889 0.344262 +vt 0.416667 0.311475 +vt 0.416667 0.344262 +vt 0.888889 0.344262 +vt 0.861111 0.311475 +vt 0.888889 0.311475 +vt 0.777778 0.491803 +vt 1.000000 0.459016 +vt 1.000000 0.491803 +vt 0.777778 0.459016 +vt -0.000000 0.459016 +vt 0.888889 0.163934 +vt 1.000000 0.196721 +vt 0.000000 0.196721 +vt 0.777778 0.393443 +vt 0.750000 0.262295 +vt 0.777778 0.262295 +vt 0.361111 1.000000 +vt 0.138889 0.885246 +vt 0.361111 0.885246 +vt 0.138889 0.770492 +vt 0.361111 0.786885 +vt 0.138889 0.786885 +vt 0.138889 0.639344 +vt 0.361111 0.770492 +vt 0.500000 0.786885 +vt 0.388889 0.770492 +vt 0.500000 0.770492 +vt 0.375000 0.786885 +vt 0.500000 0.934426 +vt 0.388889 0.983607 +vt 0.375000 0.885246 +vt 0.375000 0.983607 +vt 0.111111 0.786885 +vt -0.000000 0.770492 +vt 0.111111 0.770492 +vt 0.125000 0.786885 +vt 0.125000 0.885246 +vt -0.000000 0.934426 +vt -0.000000 0.786885 +vt 0.861111 0.622951 +vt 0.916667 0.524590 +vt 0.916667 0.622951 +vt 0.125000 0.983607 +vt 0.833333 0.622951 +vt 0.777778 0.524590 +vt 0.833333 0.524590 +vt 0.833333 0.491803 +vt 0.777778 0.491803 +vt 0.777778 0.655738 +vt 0.833333 0.655738 +vt 0.750000 0.524590 +vt 0.777778 0.622951 +vt 0.750000 0.622951 +vt 0.861111 0.524590 +vt 0.805556 0.737705 +vt 0.833333 0.672131 +vt 0.833333 0.737705 +vt 0.750000 0.688525 +vt 0.805556 0.672131 +vt 0.888889 0.688525 +vt 0.888889 0.803279 +vt 0.847222 0.803279 +vt 0.833333 0.655738 +vt 0.791667 0.655738 +vt 0.847222 0.655738 +vt 0.805556 0.737705 +vt 0.833333 0.672131 +vt 0.833333 0.737705 +vt 0.750000 0.688525 +vt 0.805556 0.672131 +vt 0.888889 0.688525 +vt 0.888889 0.803279 +vt 0.791667 0.803279 +vt 0.833333 0.655738 +vt 0.791667 0.655738 +vt 0.847222 0.655738 +vt 0.388889 0.557377 +vt 0.500000 0.540984 +vt 0.500000 0.557377 +vt 0.388889 0.540984 +vt 0.500000 0.524590 +vt 0.388889 0.524590 +vt 0.500000 0.508197 +vt 0.388889 0.508197 +vt 0.500000 0.491803 +vt 0.388889 0.622951 +vt 0.500000 0.606557 +vt 0.500000 0.622951 +vt 0.388889 0.606557 +vt 0.500000 0.590164 +vt 0.361789 0.501738 +vt 0.380472 0.492604 +vt 0.388211 0.514655 +vt 0.388889 0.590164 +vt 0.500000 0.573770 +vt 0.388889 0.573770 +vt 0.501476 0.514266 +vt 0.501476 0.502128 +vt 0.508747 0.493545 +vt 0.180556 0.557377 +vt 0.097222 0.557377 +vt 0.222222 0.557377 +vt 0.055556 0.557377 +vt 0.051730 0.622880 +vt 0.027778 0.639203 +vt 0.003825 0.622880 +vt 0.027778 -0.000000 +vt 0.250000 0.540984 +vt 0.083333 0.557377 +vt 0.166667 0.557377 +vt 0.041667 0.557377 +vt 0.208333 0.557377 +vt 0.003825 0.622880 +vt 0.003825 0.590235 +vt 0.027778 0.573912 +vt 0.500000 0.262295 +vt 0.750000 0.754098 +vt 0.388889 0.311475 +vt 0.861111 0.344262 +vt 1.000000 0.163934 +vt 0.138889 1.000000 +vt 0.361111 0.639344 +vt 0.388889 0.786885 +vt 0.111111 0.983607 +vt 0.750000 0.803279 +vt 0.791667 0.803279 +vt 0.805556 0.655738 +vt 0.750000 0.803279 +vt 0.847222 0.803279 +vt 0.805556 0.655738 +vt 0.388889 0.491803 +vt 0.380472 0.523790 +vt 0.369528 0.523790 +vt 0.361789 0.514656 +vt 0.369528 0.492604 +vt 0.388211 0.501738 +vt 0.519031 0.493545 +vt 0.526302 0.502128 +vt 0.526302 0.514266 +vt 0.519031 0.522848 +vt 0.508747 0.522848 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.8660 0.5000 +vn 0.0000 -0.8660 0.5000 +vn 0.0000 -0.8660 -0.5000 +vn 0.0000 0.8660 -0.5000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9363 -0.3511 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.5774 -0.5774 0.5773 +vn -0.5774 -0.5774 -0.5773 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.5774 0.5774 0.5774 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.5774 -0.5774 -0.5773 +vn 0.5774 -0.5774 0.5773 +vn 0.7071 0.7071 0.0000 +vn 0.5774 0.5774 0.5773 +vn 0.7071 -0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 -0.1414 -0.9899 +vn 0.5773 0.5774 -0.5774 +vn 0.7493 -0.0937 -0.6556 +vn -0.5774 0.5774 -0.5774 +vn -0.7022 0.1170 -0.7022 +vn 0.0000 0.1644 -0.9864 +vn 0.7022 0.1170 -0.7022 +vn -0.7022 -0.1170 -0.7022 +vn -0.9701 -0.2425 0.0000 +vn 0.9701 -0.2425 0.0000 +vn 0.8165 0.4082 -0.4082 +vn -0.8165 0.4082 -0.4082 +vn -0.3827 -0.9239 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.9239 0.3827 0.0000 +vn 0.9239 -0.3827 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.7022 -0.1170 -0.7022 +vn -0.7493 -0.0937 -0.6556 +s off +f 616/1045/166 605/1046/166 604/1047/166 +f 614/1048/167 603/1049/167 602/1050/167 +f 612/1051/168 601/1052/168 600/1053/168 +f 617/1054/169 600/1053/169 605/1046/169 +f 615/1055/170 604/1047/170 603/1056/170 +f 613/1057/171 602/1050/171 601/1052/171 +f 611/1058/171 622/1059/171 610/1060/171 +f 609/1061/169 620/1062/169 608/1063/169 +f 607/1064/170 618/1065/170 606/1066/170 +f 606/1067/167 623/1068/167 611/1069/167 +f 610/1070/168 621/1071/168 609/1072/168 +f 608/1073/166 619/1074/166 607/1075/166 +f 617/1054/172 618/1076/172 612/1051/172 +f 618/1065/172 613/1057/172 612/1051/172 +f 619/1074/172 614/1048/172 613/1057/172 +f 614/1048/172 621/1077/172 615/1078/172 +f 621/1071/172 616/1045/172 615/1055/172 +f 622/1059/172 617/1054/172 616/1045/172 +f 610/1079/172 609/1080/172 608/1081/172 +f 624/1082/166 627/1083/166 625/1084/166 +f 634/1085/167 645/1086/167 633/1087/167 +f 626/1088/166 631/1089/166 628/1090/166 +f 636/1091/166 647/1092/166 635/1093/166 +f 626/1088/166 624/1094/166 630/1095/166 +f 632/1096/168 643/1097/168 629/1098/168 +f 629/1098/169 648/1099/169 636/1091/169 +f 635/1093/170 646/1100/170 634/1101/170 +f 633/1087/171 644/1102/171 632/1096/171 +f 653/1103/171 642/1104/171 641/1105/171 +f 651/1106/169 640/1107/169 639/1108/169 +f 649/1109/170 638/1110/170 637/1111/170 +f 654/1112/167 637/1113/167 642/1114/167 +f 652/1115/168 641/1116/168 640/1117/168 +f 650/1118/166 639/1119/166 638/1120/166 +f 648/1099/173 649/1121/173 654/1112/173 +f 644/1102/173 649/1109/173 643/1097/173 +f 645/1086/173 650/1118/173 644/1102/173 +f 645/1086/173 652/1122/173 651/1106/173 +f 647/1092/173 652/1115/173 646/1100/173 +f 648/1099/173 653/1103/173 647/1092/173 +f 641/1123/173 642/1124/173 637/1125/173 +f 655/1126/166 657/1127/166 656/1128/166 +f 625/1084/174 676/1129/174 624/1082/174 +f 627/1130/166 655/1126/166 625/1131/166 +f 660/1132/175 661/1133/175 659/1134/175 +f 664/1135/176 658/1136/176 659/1134/176 +f 659/1134/175 661/1133/175 664/1135/175 +f 662/1137/166 665/1138/166 661/1133/166 +f 666/1139/177 667/1140/177 665/1138/177 +f 668/1141/178 669/1142/178 667/1140/178 +f 670/1143/179 671/1144/179 669/1145/179 +f 672/1146/171 673/1147/171 671/1144/171 +f 674/1148/180 675/1149/180 673/1147/180 +f 669/1150/181 678/1151/181 667/1152/181 +f 669/1150/182 671/1144/182 677/1153/182 +f 665/1138/183 667/1152/183 678/1151/183 +f 661/1133/184 678/1151/184 664/1135/184 +f 677/1153/185 673/1147/185 679/1154/185 +f 673/1147/186 675/1155/186 679/1154/186 +f 679/1154/187 625/1156/187 655/1126/187 +f 663/1157/166 680/1158/166 658/1159/166 +f 663/1157/173 677/1153/173 679/1154/173 +f 682/1160/166 685/1161/166 683/1162/166 +f 668/1163/188 687/1164/188 670/1165/188 +f 668/1163/189 666/1139/189 686/1166/189 +f 670/1143/190 687/1167/190 672/1146/190 +f 624/1168/191 688/1169/191 630/1095/191 +f 676/1129/192 674/1148/192 688/1170/192 +f 672/1146/193 688/1170/193 674/1148/193 +f 662/1137/175 660/1132/175 689/1171/175 +f 662/1137/194 686/1166/194 666/1139/194 +f 689/1171/176 684/1172/176 682/1173/176 +f 687/1164/172 682/1160/172 683/1162/172 +f 692/1174/195 707/1175/195 706/1176/195 +f 695/1177/175 690/1178/175 691/1179/175 +f 697/1180/174 694/1181/174 695/1177/174 +f 699/1182/191 694/1183/191 696/1184/191 +f 694/1181/196 698/1185/196 690/1178/196 +f 701/1186/172 700/1187/172 708/1188/172 +f 706/1176/197 700/1189/197 692/1174/197 +f 702/1190/187 697/1191/187 695/1192/187 +f 695/1177/198 691/1179/198 702/1193/198 +f 598/1194/173 705/1195/173 703/1196/173 +f 691/1179/199 598/1194/199 702/1193/199 +f 706/1176/200 691/1179/200 690/1178/200 +f 709/1197/171 712/1198/171 710/1199/171 +f 708/1188/201 690/1178/201 698/1185/201 +f 707/1175/202 704/1200/202 598/1194/202 +f 714/1201/166 716/1202/166 713/1203/166 +f 711/1204/174 716/1202/174 712/1205/174 +f 710/1206/178 714/1201/178 709/1207/178 +f 712/1208/173 715/1209/173 710/1210/173 +f 709/1197/172 713/1203/172 711/1211/172 +f 718/1212/178 719/1213/178 717/1214/178 +f 718/1212/203 724/1215/203 720/1216/203 +f 717/1214/204 723/1217/204 721/1218/204 +f 721/1219/179 718/1212/179 717/1214/179 +f 720/1216/175 725/1220/175 719/1213/175 +f 720/1216/205 724/1215/205 726/1221/205 +f 719/1213/206 725/1222/206 723/1217/206 +f 728/1223/178 729/1224/178 727/1225/178 +f 728/1223/203 734/1226/203 730/1227/203 +f 727/1225/204 733/1228/204 731/1229/204 +f 727/1225/179 732/1230/179 728/1223/179 +f 730/1227/175 735/1231/175 729/1224/175 +f 730/1227/205 734/1226/205 736/1232/205 +f 729/1224/206 735/1233/206 733/1228/206 +f 738/1234/207 739/1235/207 737/1236/207 +f 740/1237/208 741/1238/208 739/1235/208 +f 742/1239/209 743/1240/209 741/1238/209 +f 744/1241/210 745/1242/210 743/1240/210 +f 746/1243/211 747/1244/211 745/1245/211 +f 748/1246/212 749/1247/212 747/1244/212 +f 750/1248/171 746/1249/171 742/1250/171 +f 750/1251/213 751/1252/213 749/1247/213 +f 752/1253/214 737/1236/214 751/1252/214 +f 747/1254/166 749/1255/166 751/1256/166 +f 616/1045/166 617/1054/166 605/1046/166 +f 614/1048/167 615/1078/167 603/1049/167 +f 612/1051/168 613/1057/168 601/1052/168 +f 617/1054/169 612/1051/169 600/1053/169 +f 615/1055/170 616/1045/170 604/1047/170 +f 613/1057/171 614/1048/171 602/1050/171 +f 611/1058/171 623/1257/171 622/1059/171 +f 609/1061/169 621/1077/169 620/1062/169 +f 607/1064/170 619/1258/170 618/1065/170 +f 606/1067/167 618/1076/167 623/1068/167 +f 610/1070/168 622/1259/168 621/1071/168 +f 608/1073/166 620/1260/166 619/1074/166 +f 617/1054/172 623/1068/172 618/1076/172 +f 618/1065/172 619/1258/172 613/1057/172 +f 619/1074/172 620/1260/172 614/1048/172 +f 614/1048/172 620/1062/172 621/1077/172 +f 621/1071/172 622/1259/172 616/1045/172 +f 622/1059/172 623/1257/172 617/1054/172 +f 608/1081/172 607/1261/172 610/1079/172 +f 607/1261/172 606/1262/172 610/1079/172 +f 606/1262/172 611/1263/172 610/1079/172 +f 624/1082/166 626/1264/166 627/1083/166 +f 634/1085/167 646/1265/167 645/1086/167 +f 626/1088/166 630/1095/166 631/1089/166 +f 636/1091/166 648/1099/166 647/1092/166 +f 632/1096/168 644/1102/168 643/1097/168 +f 629/1098/169 643/1097/169 648/1099/169 +f 635/1093/170 647/1092/170 646/1100/170 +f 633/1087/171 645/1086/171 644/1102/171 +f 653/1103/171 654/1266/171 642/1104/171 +f 651/1106/169 652/1122/169 640/1107/169 +f 649/1109/170 650/1267/170 638/1110/170 +f 654/1112/167 649/1121/167 637/1113/167 +f 652/1115/168 653/1268/168 641/1116/168 +f 650/1118/166 651/1269/166 639/1119/166 +f 648/1099/173 643/1097/173 649/1121/173 +f 644/1102/173 650/1267/173 649/1109/173 +f 645/1086/173 651/1269/173 650/1118/173 +f 645/1086/173 646/1265/173 652/1122/173 +f 647/1092/173 653/1268/173 652/1115/173 +f 648/1099/173 654/1266/173 653/1103/173 +f 637/1125/173 638/1270/173 641/1123/173 +f 638/1270/173 639/1271/173 641/1123/173 +f 639/1271/173 640/1272/173 641/1123/173 +f 655/1126/166 627/1130/166 657/1127/166 +f 625/1084/174 675/1149/174 676/1129/174 +f 660/1132/175 662/1137/175 661/1133/175 +f 664/1135/176 663/1273/176 658/1136/176 +f 662/1137/166 666/1139/166 665/1138/166 +f 666/1139/177 668/1141/177 667/1140/177 +f 668/1141/178 670/1274/178 669/1142/178 +f 670/1143/179 672/1146/179 671/1144/179 +f 672/1146/171 674/1148/171 673/1147/171 +f 674/1148/180 676/1129/180 675/1149/180 +f 669/1150/181 677/1153/181 678/1151/181 +f 661/1133/184 665/1138/184 678/1151/184 +f 677/1153/185 671/1144/185 673/1147/185 +f 679/1154/187 675/1155/187 625/1156/187 +f 663/1157/166 681/1275/166 680/1158/166 +f 679/1154/173 655/1126/173 656/1128/173 +f 679/1154/173 656/1128/173 681/1275/173 +f 664/1135/173 678/1151/173 663/1157/173 +f 678/1151/173 677/1153/173 663/1157/173 +f 679/1154/173 681/1275/173 663/1157/173 +f 682/1160/166 684/1276/166 685/1161/166 +f 668/1163/188 686/1166/188 687/1164/188 +f 624/1168/191 676/1277/191 688/1169/191 +f 672/1146/193 687/1167/193 688/1170/193 +f 662/1137/194 689/1171/194 686/1166/194 +f 689/1171/176 660/1132/176 684/1172/176 +f 683/1162/172 631/1089/172 688/1169/172 +f 631/1089/172 630/1095/172 688/1169/172 +f 683/1162/172 688/1169/172 687/1164/172 +f 687/1164/172 686/1166/172 682/1160/172 +f 686/1166/172 689/1171/172 682/1160/172 +f 692/1174/195 693/1278/195 707/1175/195 +f 695/1177/175 694/1181/175 690/1178/175 +f 697/1180/174 696/1279/174 694/1181/174 +f 699/1182/191 698/1280/191 694/1183/191 +f 698/1280/172 699/1182/172 708/1188/172 +f 699/1182/172 701/1186/172 708/1188/172 +f 706/1176/215 708/1188/215 700/1189/215 +f 702/1190/187 703/1196/187 697/1191/187 +f 703/1196/173 702/1190/173 598/1194/173 +f 598/1194/173 704/1281/173 705/1195/173 +f 691/1179/199 707/1175/199 598/1194/199 +f 706/1176/200 707/1175/200 691/1179/200 +f 709/1197/171 711/1211/171 712/1198/171 +f 708/1188/201 706/1176/201 690/1178/201 +f 707/1175/216 693/1278/216 704/1200/216 +f 714/1201/166 715/1209/166 716/1202/166 +f 711/1204/174 713/1203/174 716/1202/174 +f 710/1206/178 715/1209/178 714/1201/178 +f 712/1208/173 716/1202/173 715/1209/173 +f 709/1197/172 714/1201/172 713/1203/172 +f 718/1212/178 720/1216/178 719/1213/178 +f 718/1212/203 722/1282/203 724/1215/203 +f 717/1214/204 719/1213/204 723/1217/204 +f 721/1219/179 722/1283/179 718/1212/179 +f 720/1216/175 726/1284/175 725/1220/175 +f 728/1223/178 730/1227/178 729/1224/178 +f 728/1223/203 732/1285/203 734/1226/203 +f 727/1225/204 729/1224/204 733/1228/204 +f 727/1225/179 731/1286/179 732/1230/179 +f 730/1227/175 736/1287/175 735/1231/175 +f 738/1234/207 740/1237/207 739/1235/207 +f 740/1237/208 742/1239/208 741/1238/208 +f 742/1239/209 744/1241/209 743/1240/209 +f 744/1241/210 746/1288/210 745/1242/210 +f 746/1243/211 748/1246/211 747/1244/211 +f 748/1246/212 750/1251/212 749/1247/212 +f 742/1250/171 740/1289/171 738/1290/171 +f 738/1290/171 752/1291/171 742/1250/171 +f 752/1291/171 750/1248/171 742/1250/171 +f 750/1248/171 748/1292/171 746/1249/171 +f 746/1249/171 744/1293/171 742/1250/171 +f 750/1251/213 752/1253/213 751/1252/213 +f 752/1253/214 738/1234/214 737/1236/214 +f 751/1256/166 737/1294/166 739/1295/166 +f 739/1295/166 741/1296/166 751/1256/166 +f 741/1296/166 743/1297/166 751/1256/166 +f 743/1297/166 745/1298/166 751/1256/166 +f 745/1298/166 747/1254/166 751/1256/166 diff --git a/src/main/resources/assets/hbm/models/blocks/capacitor.obj b/src/main/resources/assets/hbm/models/blocks/capacitor.obj new file mode 100644 index 000000000..81f79da44 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/capacitor.obj @@ -0,0 +1,128 @@ +# Blender v2.79 (sub 0) OBJ File: 'capacitor.blend' +# www.blender.org +o InnerSide +v -0.437500 -0.250000 0.437500 +v -0.437500 -0.250000 -0.437500 +v 0.437500 -0.250000 0.437500 +v 0.437500 -0.250000 -0.437500 +v -0.437500 0.437500 0.437500 +v -0.437500 0.437500 -0.437500 +v 0.437500 0.437500 -0.437500 +v 0.437500 0.437500 0.437500 +vt 0.937500 0.250000 +vt 0.062500 0.937500 +vt 0.062500 0.250000 +vt 0.062500 0.937500 +vt 0.937500 0.250000 +vt 0.937500 0.937500 +vt 0.937500 0.250000 +vt 0.062500 0.937500 +vt 0.062500 0.250000 +vt 0.062500 0.937500 +vt 0.937500 0.250000 +vt 0.937500 0.937500 +vt 0.937500 0.937500 +vt 0.062500 0.250000 +vt 0.937500 0.937500 +vt 0.062500 0.250000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 3/1/1 5/2/1 1/3/1 +f 2/4/2 7/5/2 4/6/2 +f 4/7/3 8/8/3 3/9/3 +f 1/10/4 6/11/4 2/12/4 +f 3/1/1 8/13/1 5/2/1 +f 2/4/2 6/14/2 7/5/2 +f 4/7/3 7/15/3 8/8/3 +f 1/10/4 5/16/4 6/11/4 +o InnerTop +v -0.437500 0.437500 0.437500 +v -0.437500 0.437500 -0.437500 +v 0.437500 0.437500 -0.437500 +v 0.437500 0.437500 0.437500 +vt 0.937500 0.937500 +vt 0.062500 0.062500 +vt 0.937500 0.062500 +vt 0.062500 0.937500 +vn 0.0000 1.0000 0.0000 +s off +f 10/17/5 12/18/5 11/19/5 +f 10/17/5 9/20/5 12/18/5 +o Side +v -0.500000 -0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 14/21/6 15/22/6 13/23/6 +f 16/24/7 19/25/7 15/26/7 +f 20/27/8 17/28/8 19/29/8 +f 18/30/9 13/31/9 17/32/9 +f 14/21/6 16/33/6 15/22/6 +f 16/24/7 20/34/7 19/25/7 +f 20/27/8 18/35/8 17/28/8 +f 18/30/9 14/36/9 13/31/9 +o Top +v -0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vn 0.0000 1.0000 0.0000 +s off +f 22/37/10 23/38/10 24/39/10 +f 22/37/10 21/40/10 23/38/10 +o Bottom +v -0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.500000 -0.250000 0.500000 +v -0.500000 -0.250000 -0.500000 +v 0.500000 -0.250000 0.500000 +v 0.500000 -0.250000 -0.500000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 1.000000 0.000000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 28/41/11 25/42/11 26/43/11 +f 30/44/12 31/45/12 32/46/12 +f 28/41/11 27/47/11 25/42/11 +f 30/44/12 29/48/12 31/45/12 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_narrow.obj b/src/main/resources/assets/hbm/models/blocks/rail_narrow.obj new file mode 100644 index 000000000..ae0ae0946 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_narrow.obj @@ -0,0 +1,314 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_narrow.blend' +# www.blender.org +o Plane +v 0.500000 0.125000 0.375000 +v -0.500000 0.125000 0.375000 +v -0.500000 0.125000 -0.375000 +v 0.500000 0.125000 -0.375000 +v -0.500000 0.000000 0.375000 +v 0.500000 0.000000 0.375000 +v -0.500000 0.000000 -0.437500 +v 0.500000 0.000000 -0.437500 +v -0.500000 0.000000 0.437500 +v 0.500000 0.000000 0.437500 +v -0.500000 0.000000 -0.375000 +v 0.500000 0.000000 -0.375000 +v -0.500000 0.125000 0.437500 +v 0.500000 0.125000 0.437500 +v 0.500000 0.125000 -0.437500 +v -0.500000 0.125000 -0.437500 +v 0.187500 0.000000 0.375000 +v 0.312500 0.000000 0.375000 +v 0.187500 0.000000 -0.375000 +v 0.312500 0.000000 -0.375000 +v 0.187500 0.062500 -0.375000 +v 0.187500 0.062500 0.375000 +v 0.312500 0.062500 0.375000 +v 0.312500 0.062500 -0.375000 +v 0.187500 0.000000 -0.437500 +v 0.312500 0.000000 -0.437500 +v 0.187500 0.062500 -0.437500 +v 0.312500 0.062500 -0.437500 +v 0.187500 0.000000 -0.500000 +v 0.312500 0.000000 -0.500000 +v 0.187500 0.062500 -0.500000 +v 0.312500 0.062500 -0.500000 +v 0.187500 0.000000 0.437500 +v 0.312500 0.000000 0.437500 +v 0.187500 0.062500 0.437500 +v 0.312500 0.062500 0.437500 +v 0.187500 0.000000 0.500000 +v 0.312500 0.000000 0.500000 +v 0.187500 0.062500 0.500000 +v 0.312500 0.062500 0.500000 +v -0.312500 0.000000 0.375000 +v -0.187500 0.000000 0.375000 +v -0.312500 0.000000 -0.375000 +v -0.187500 0.000000 -0.375000 +v -0.312500 0.062500 -0.375000 +v -0.312500 0.062500 0.375000 +v -0.187500 0.062500 0.375000 +v -0.187500 0.062500 -0.375000 +v -0.312500 0.000000 -0.437500 +v -0.187500 0.000000 -0.437500 +v -0.312500 0.062500 -0.437500 +v -0.187500 0.062500 -0.437500 +v -0.312500 0.000000 -0.500000 +v -0.187500 0.000000 -0.500000 +v -0.312500 0.062500 -0.500000 +v -0.187500 0.062500 -0.500000 +v -0.312500 0.000000 0.437500 +v -0.187500 0.000000 0.437500 +v -0.312500 0.062500 0.437500 +v -0.187500 0.062500 0.437500 +v -0.312500 0.000000 0.500000 +v -0.187500 0.000000 0.500000 +v -0.312500 0.062500 0.500000 +v -0.187500 0.062500 0.500000 +vt 0.125000 0.000000 +vt 0.062500 1.000000 +vt 0.062500 0.000000 +vt 0.937500 1.000000 +vt 0.875000 0.000000 +vt 0.937500 0.000000 +vt 0.062500 1.000000 +vt 0.125000 0.000000 +vt 0.125000 1.000000 +vt 0.875000 0.000000 +vt 0.937500 1.000000 +vt 0.875000 1.000000 +vt 0.125000 -0.000000 +vt 0.062500 0.125000 +vt 0.062500 -0.000000 +vt 1.000000 0.000000 +vt -0.000000 0.125000 +vt -0.000000 0.000000 +vt 1.000000 0.000000 +vt -0.000000 0.125000 +vt -0.000000 0.000000 +vt 0.937500 -0.000000 +vt 0.875000 0.125000 +vt 0.875000 -0.000000 +vt 0.937500 0.000000 +vt 0.875000 0.125000 +vt 0.875000 0.000000 +vt 1.000000 -0.000000 +vt -0.000000 0.125000 +vt -0.000000 -0.000000 +vt 1.000000 -0.000000 +vt -0.000000 0.125000 +vt -0.000000 -0.000000 +vt 0.125000 0.000000 +vt 0.062500 0.125000 +vt 0.062500 0.000000 +vt 0.875000 0.687500 +vt 0.125000 0.812500 +vt 0.125000 0.687500 +vt 0.875000 0.812500 +vt 0.125000 0.687500 +vt 0.875000 0.687500 +vt 0.875000 0.000000 +vt 0.125000 0.062500 +vt 0.125000 0.000000 +vt 0.875000 -0.000000 +vt 0.125000 0.062500 +vt 0.125000 -0.000000 +vt 0.062500 0.812500 +vt 0.000000 0.687500 +vt 0.062500 0.687500 +vt 0.062500 0.062500 +vt -0.000000 -0.000000 +vt 0.062500 -0.000000 +vt 0.937500 0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 1.000000 0.687500 +vt 0.937500 0.812500 +vt 0.937500 0.687500 +vt 0.312500 0.062500 +vt 0.187500 -0.000000 +vt 0.312500 -0.000000 +vt 0.062500 0.062500 +vt 0.000000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.812500 +vt 0.062500 0.687500 +vt 0.062500 0.812500 +vt 0.937500 -0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 0.937500 0.687500 +vt 1.000000 0.812500 +vt 0.937500 0.812500 +vt 0.812500 0.062500 +vt 0.687500 0.000000 +vt 0.812500 0.000000 +vt 0.875000 0.187500 +vt 0.125000 0.312500 +vt 0.125000 0.187500 +vt 0.875000 0.312500 +vt 0.125000 0.187500 +vt 0.875000 0.187500 +vt 0.875000 0.000000 +vt 0.125000 0.062500 +vt 0.125000 0.000000 +vt 0.875000 -0.000000 +vt 0.125000 0.062500 +vt 0.125000 -0.000000 +vt 0.062500 0.312500 +vt 0.000000 0.187500 +vt 0.062500 0.187500 +vt 0.062500 0.062500 +vt -0.000000 -0.000000 +vt 0.062500 -0.000000 +vt 0.937500 0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 1.000000 0.187500 +vt 0.937500 0.312500 +vt 0.937500 0.187500 +vt 0.812500 0.062500 +vt 0.687500 -0.000000 +vt 0.812500 -0.000000 +vt 0.062500 0.062500 +vt 0.000000 0.000000 +vt 0.062500 0.000000 +vt 0.000000 0.312500 +vt 0.062500 0.187500 +vt 0.062500 0.312500 +vt 0.937500 -0.000000 +vt 1.000000 0.062500 +vt 0.937500 0.062500 +vt 0.937500 0.187500 +vt 1.000000 0.312500 +vt 0.937500 0.312500 +vt 0.312500 0.062500 +vt 0.187500 0.000000 +vt 0.312500 0.000000 +vt 0.125000 1.000000 +vt 0.875000 1.000000 +vt 0.062500 0.000000 +vt 0.937500 0.000000 +vt 0.125000 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.125000 +vt 0.937500 0.125000 +vt 0.937500 0.125000 +vt 1.000000 0.125000 +vt 1.000000 0.125000 +vt 0.125000 0.125000 +vt 0.875000 0.812500 +vt 0.125000 0.812500 +vt 0.875000 0.062500 +vt 0.875000 0.062500 +vt 0.000000 0.812500 +vt -0.000000 0.062500 +vt 1.000000 0.000000 +vt 1.000000 0.812500 +vt 0.187500 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.687500 +vt 1.000000 -0.000000 +vt 1.000000 0.687500 +vt 0.687500 0.062500 +vt 0.875000 0.312500 +vt 0.125000 0.312500 +vt 0.875000 0.062500 +vt 0.875000 0.062500 +vt 0.000000 0.312500 +vt -0.000000 0.062500 +vt 1.000000 0.000000 +vt 1.000000 0.312500 +vt 0.687500 0.062500 +vt 0.000000 0.062500 +vt 0.000000 0.187500 +vt 1.000000 -0.000000 +vt 1.000000 0.187500 +vt 0.187500 0.062500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 3/1/1 15/2/1 16/3/1 +f 8/4/2 11/5/2 7/6/2 +f 10/7/2 5/8/2 6/9/2 +f 2/10/1 14/11/1 1/12/1 +f 11/13/3 16/14/3 7/15/3 +f 10/16/4 13/17/4 9/18/4 +f 12/19/4 3/20/4 11/21/4 +f 9/22/3 2/23/3 5/24/3 +f 8/25/5 4/26/5 12/27/5 +f 7/28/6 15/29/6 8/30/6 +f 5/31/6 1/32/6 6/33/6 +f 6/34/5 14/35/5 10/36/5 +f 19/37/2 18/38/2 17/39/2 +f 23/40/1 21/41/1 22/42/1 +f 20/43/5 23/44/5 18/45/5 +f 17/46/3 21/47/3 19/48/3 +f 28/49/1 31/50/1 27/51/1 +f 27/52/3 29/53/3 25/54/3 +f 26/55/5 32/56/5 28/57/5 +f 29/58/2 26/59/2 25/60/2 +f 31/61/6 30/62/6 29/63/6 +f 36/64/5 38/65/5 34/66/5 +f 38/67/2 33/68/2 34/69/2 +f 33/70/3 39/71/3 35/72/3 +f 35/73/1 40/74/1 36/75/1 +f 40/76/4 37/77/4 38/78/4 +f 43/79/2 42/80/2 41/81/2 +f 47/82/1 45/83/1 46/84/1 +f 44/85/5 47/86/5 42/87/5 +f 41/88/3 45/89/3 43/90/3 +f 52/91/1 55/92/1 51/93/1 +f 51/94/3 53/95/3 49/96/3 +f 50/97/5 56/98/5 52/99/5 +f 53/100/2 50/101/2 49/102/2 +f 55/103/6 54/104/6 53/105/6 +f 60/106/5 62/107/5 58/108/5 +f 62/109/2 57/110/2 58/111/2 +f 57/112/3 63/113/3 59/114/3 +f 59/115/1 64/116/1 60/117/1 +f 64/118/4 61/119/4 62/120/4 +f 3/1/1 4/121/1 15/2/1 +f 8/4/2 12/122/2 11/5/2 +f 10/7/2 9/123/2 5/8/2 +f 2/10/1 13/124/1 14/11/1 +f 11/13/3 3/125/3 16/14/3 +f 10/16/4 14/126/4 13/17/4 +f 12/19/4 4/127/4 3/20/4 +f 9/22/3 13/128/3 2/23/3 +f 8/25/5 15/129/5 4/26/5 +f 7/28/6 16/130/6 15/29/6 +f 5/31/6 2/131/6 1/32/6 +f 6/34/5 1/132/5 14/35/5 +f 19/37/2 20/133/2 18/38/2 +f 23/40/1 24/134/1 21/41/1 +f 20/43/5 24/135/5 23/44/5 +f 17/46/3 22/136/3 21/47/3 +f 28/49/1 32/137/1 31/50/1 +f 27/52/3 31/138/3 29/53/3 +f 26/55/5 30/139/5 32/56/5 +f 29/58/2 30/140/2 26/59/2 +f 31/61/6 32/141/6 30/62/6 +f 36/64/5 40/142/5 38/65/5 +f 38/67/2 37/143/2 33/68/2 +f 33/70/3 37/144/3 39/71/3 +f 35/73/1 39/145/1 40/74/1 +f 40/76/4 39/146/4 37/77/4 +f 43/79/2 44/147/2 42/80/2 +f 47/82/1 48/148/1 45/83/1 +f 44/85/5 48/149/5 47/86/5 +f 41/88/3 46/150/3 45/89/3 +f 52/91/1 56/151/1 55/92/1 +f 51/94/3 55/152/3 53/95/3 +f 50/97/5 54/153/5 56/98/5 +f 53/100/2 54/154/2 50/101/2 +f 55/103/6 56/155/6 54/104/6 +f 60/106/5 64/156/5 62/107/5 +f 62/109/2 61/157/2 57/110/2 +f 57/112/3 61/158/3 63/113/3 +f 59/115/1 63/159/1 64/116/1 +f 64/118/4 63/160/4 61/119/4 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj b/src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj new file mode 100644 index 000000000..426e32d48 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_narrow_bend.obj @@ -0,0 +1,681 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_narrow_bend.blend' +# www.blender.org +o Plane +v 0.500000 0.125000 0.375000 +v 0.500000 0.125000 -0.375000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.000000 -0.437500 +v -0.463258 0.125000 -0.342627 +v 0.500000 0.000000 0.437500 +v -0.292554 0.125000 0.515560 +v 0.500000 0.000000 -0.375000 +v -0.451065 0.000000 -0.281328 +v 0.500000 0.125000 0.437500 +v 0.500000 0.125000 -0.437500 +v -0.292554 0.000000 0.515560 +v -3.325402 0.062500 1.279721 +v -3.404702 0.062500 1.376347 +v -3.325402 0.000000 1.279721 +v -3.404702 0.000000 1.376347 +v -3.057147 0.000000 2.669533 +v -2.998222 0.000000 2.559293 +v -3.057147 0.062500 2.669533 +v -2.998222 0.062500 2.559293 +v -0.601330 0.062500 0.654096 +v -0.720948 0.062500 0.690382 +v -0.601330 0.000000 0.654096 +v -0.720948 0.000000 0.690382 +v -0.052285 0.000000 -0.469798 +v 0.072113 0.000000 -0.482049 +v -0.052285 0.062500 -0.469798 +v 0.072113 0.062500 -0.482049 +v -0.891615 0.062500 -0.302844 +v -1.011232 0.062500 -0.266559 +v -0.891615 0.000000 -0.302844 +v -1.011232 0.000000 -0.266559 +v 0.045732 0.000000 0.525387 +v 0.170130 0.000000 0.513135 +v 0.045732 0.062500 0.525387 +v 0.170130 0.062500 0.513135 +v -0.463258 0.000000 -0.342627 +v -0.304748 0.000000 0.454261 +v -0.451065 0.125000 -0.281328 +v -0.304748 0.125000 0.454261 +v -3.605381 0.125000 1.756872 +v -2.877845 0.125000 2.242996 +v -3.553414 0.000000 1.791595 +v -2.877845 0.000000 2.242996 +v -3.605381 0.000000 1.756872 +v -2.929812 0.000000 2.208273 +v -3.553414 0.125000 1.791595 +v -2.929812 0.125000 2.208273 +v -2.243128 0.125000 0.394619 +v -1.757004 0.125000 1.122155 +v -2.208405 0.000000 0.446586 +v -1.757004 0.000000 1.122155 +v -2.243128 0.000000 0.394619 +v -1.791727 0.000000 1.070188 +v -2.208405 0.125000 0.446586 +v -1.791727 0.125000 1.070188 +v -4.342627 0.125000 3.536741 +v -3.484440 0.125000 3.707446 +v -4.281328 0.000000 3.548935 +v -3.484440 0.000000 3.707446 +v -4.342627 0.000000 3.536741 +v -3.545739 0.000000 3.695252 +v -4.281328 0.125000 3.548935 +v -3.545739 0.125000 3.695252 +v 0.500000 0.000000 4.500000 +v -3.625000 0.125000 4.500000 +v -4.375000 0.125000 4.500000 +v -3.625000 0.000000 4.500000 +v -4.437500 0.000000 4.500000 +v -3.562500 0.000000 4.500000 +v -4.375000 0.000000 4.500000 +v -3.562500 0.125000 4.500000 +v -4.437500 0.125000 4.500000 +v -2.416816 0.125000 1.583184 +v -2.947145 0.125000 1.052855 +v -2.416816 0.000000 1.583184 +v -2.991340 0.000000 1.008660 +v -2.372621 0.000000 1.627379 +v -2.947145 0.000000 1.052855 +v -2.372621 0.125000 1.627379 +v -2.991340 0.125000 1.008660 +v -3.311003 0.125000 2.921431 +v -4.003912 0.125000 2.634418 +v -3.311003 0.000000 2.921431 +v -4.061655 0.000000 2.610501 +v -3.253261 0.000000 2.945349 +v -4.003912 0.000000 2.634418 +v -3.253261 0.125000 2.945349 +v -4.061655 0.125000 2.610501 +v -1.078569 0.125000 0.688997 +v -1.365582 0.125000 -0.003912 +v -1.078569 0.000000 0.688997 +v -1.389499 0.000000 -0.061655 +v -1.054651 0.000000 0.746740 +v -1.365582 0.000000 -0.003912 +v -1.054651 0.125000 0.746740 +v -1.389499 0.125000 -0.061655 +v -3.880144 0.062500 2.087896 +v -3.939068 0.062500 2.198136 +v -3.880144 0.000000 2.087896 +v -3.939068 0.000000 2.198136 +v -2.631691 0.000000 2.010740 +v -2.552392 0.000000 1.914114 +v -2.631691 0.062500 2.010740 +v -2.552392 0.062500 1.914114 +v -4.266559 0.062500 2.988768 +v -4.302845 0.062500 3.108386 +v -4.266559 0.000000 2.988768 +v -4.302845 0.000000 3.108386 +v -3.486865 0.000000 4.170131 +v -3.474612 0.000000 4.045732 +v -3.486865 0.062500 4.170131 +v -3.474612 0.062500 4.045732 +v -1.989260 0.062500 1.368309 +v -2.085886 0.062500 1.447608 +v -1.989260 0.000000 1.368309 +v -2.085886 0.000000 1.447608 +v -1.912104 0.000000 0.119856 +v -1.801864 0.000000 0.060932 +v -1.912104 0.062500 0.119856 +v -1.801864 0.062500 0.060932 +v -2.623653 0.062500 0.595299 +v -2.720279 0.062500 0.674598 +v -2.623653 0.000000 0.595299 +v -2.720279 0.000000 0.674598 +v -1.440707 0.000000 1.001778 +v -1.330467 0.000000 0.942852 +v -1.440707 0.062500 1.001778 +v -1.330467 0.062500 0.942852 +v -4.469797 0.062500 3.947715 +v -4.482049 0.062500 4.072114 +v -4.469797 0.000000 3.947715 +v -4.482049 0.000000 4.072114 +v -3.345904 0.000000 3.398670 +v -3.309618 0.000000 3.279053 +v -3.345904 0.062500 3.398670 +v -3.309618 0.062500 3.279053 +vt 0.615249 0.562500 +vt 0.726069 0.437500 +vt 0.615249 0.437500 +vt 0.678003 0.453027 +vt 0.764947 0.316851 +vt 0.688434 0.459997 +vt 0.613503 0.437500 +vt 0.722644 0.562500 +vt 0.613503 0.562500 +vt 0.828202 0.562500 +vt 0.828202 0.437500 +vt 0.812063 0.161529 +vt 0.753357 0.312051 +vt 0.799759 0.159082 +vt 0.823229 0.437500 +vt 0.823229 0.562500 +vt 0.812063 0.161529 +vt 0.753357 0.312051 +vt 0.764947 0.316851 +vt 0.678003 0.453027 +vt 0.688434 0.459997 +vt 1.000000 0.437500 +vt 0.993671 0.562500 +vt 0.993671 0.437500 +vt 0.576594 0.576594 +vt 0.585465 0.585465 +vt 0.459997 0.688434 +vt 0.917722 0.437500 +vt 0.911392 0.562500 +vt 0.911392 0.437500 +vt 0.777932 0.500000 +vt 0.762144 0.437500 +vt 0.777932 0.437500 +vt 0.283574 0.500000 +vt 0.325146 0.437500 +vt 0.325146 0.500000 +vt 0.342277 0.500000 +vt 0.342277 0.437500 +vt 0.626982 0.783754 +vt 0.519041 0.612678 +vt 0.499646 0.628595 +vt 0.829653 0.500000 +vt 0.762144 0.500000 +vt 0.797787 0.091181 +vt 1.000000 0.085886 +vt 0.800246 0.066212 +vt 0.845441 0.437500 +vt 0.829653 0.437500 +vt 0.964030 0.279326 +vt 0.764669 0.245069 +vt 0.771952 0.221060 +vt 0.947343 0.500000 +vt 0.961181 0.437500 +vt 0.947343 0.437500 +vt 0.856491 0.437500 +vt 0.856491 0.500000 +vt 1.000000 0.085886 +vt 0.797787 0.091181 +vt 0.800246 0.066212 +vt 0.956746 0.303335 +vt 0.771952 0.221060 +vt 0.764669 0.245069 +vt 0.870329 0.500000 +vt 0.870329 0.437500 +vt 0.312050 0.753357 +vt 0.316851 0.764947 +vt 0.159082 0.799759 +vt 0.161529 0.812063 +vt 0.171798 0.437501 +vt 0.273931 0.562500 +vt 0.273931 0.437500 +vt 0.161529 0.812063 +vt 0.312050 0.753357 +vt 0.316851 0.764947 +vt 0.176771 0.562500 +vt 0.277356 0.437500 +vt 0.277356 0.562500 +vt 0.107153 0.562500 +vt 0.000000 0.437501 +vt 0.000000 0.562500 +vt 0.000000 0.991058 +vt 0.190898 0.959711 +vt 0.193346 0.972015 +vt 0.006329 0.437501 +vt 0.112125 0.562500 +vt 0.006329 0.562500 +vt 0.000000 0.991058 +vt 0.190898 0.959711 +vt 0.000000 0.978513 +vt 0.171798 0.562500 +vt 0.082278 0.437501 +vt 0.082278 0.562500 +vt 0.000000 0.815428 +vt 0.000000 0.827972 +vt 0.088607 0.437501 +vt 0.088607 0.562500 +vt 0.000000 0.827972 +vt 0.000000 0.815428 +vt 0.892847 0.562499 +vt 1.000000 0.562499 +vt 0.991058 0.000000 +vt 0.959711 0.190898 +vt 0.978513 0.000000 +vt 0.887875 0.562499 +vt 0.959711 0.190898 +vt 0.991058 0.000000 +vt 0.978513 0.000000 +vt 0.917722 0.562500 +vt 0.827972 0.000000 +vt 0.815427 0.000000 +vt 0.827972 0.000000 +vt 0.799759 0.159082 +vt 0.500000 0.562500 +vt 0.585465 0.585465 +vt 0.500000 0.437500 +vt 0.386497 0.437500 +vt 0.500000 0.437500 +vt 0.453027 0.678003 +vt 0.459997 0.688434 +vt 0.384751 0.437500 +vt 0.500000 0.562500 +vt 0.193346 0.972015 +vt 0.374461 0.904028 +vt 0.550602 0.824035 +vt 0.543633 0.813604 +vt 0.691913 0.691913 +vt 0.824035 0.550602 +vt 0.813604 0.543633 +vt 0.915618 0.379261 +vt 0.904028 0.374461 +vt 0.972015 0.193346 +vt 0.767173 0.562499 +vt 0.887875 0.437500 +vt 0.915618 0.379261 +vt 0.904028 0.374461 +vt 0.892847 0.437500 +vt 0.770598 0.562499 +vt 0.636203 0.437500 +vt 0.636203 0.562500 +vt 0.813604 0.543633 +vt 0.824035 0.550602 +vt 0.637950 0.437500 +vt 0.637950 0.562499 +vt 0.500000 0.562500 +vt 0.691913 0.691913 +vt 0.500000 0.562500 +vt 0.363797 0.437500 +vt 0.363797 0.562500 +vt 0.550602 0.824035 +vt 0.543633 0.813604 +vt 0.362050 0.437500 +vt 0.362050 0.562500 +vt 0.232827 0.562500 +vt 0.374461 0.904028 +vt 0.229402 0.562500 +vt 0.112125 0.437501 +vt 0.107153 0.437501 +vt 0.300705 0.437500 +vt 0.283574 0.437500 +vt 0.484159 0.879185 +vt 0.367412 0.713993 +vt 0.389540 0.702165 +vt 0.420906 0.500000 +vt 0.438722 0.437500 +vt 0.420906 0.437500 +vt 0.434944 0.437500 +vt 0.434944 0.500000 +vt 0.646376 0.767837 +vt 0.499646 0.628595 +vt 0.519041 0.612678 +vt 0.367412 0.713993 +vt 0.484159 0.879185 +vt 0.389540 0.702165 +vt 0.452759 0.500000 +vt 0.452759 0.437500 +vt 0.565056 0.500000 +vt 0.547241 0.437500 +vt 0.565056 0.437500 +vt 0.038819 0.500001 +vt 0.129671 0.437501 +vt 0.129671 0.500001 +vt 0.143509 0.500001 +vt 0.143509 0.437501 +vt 0.221060 0.771952 +vt 0.303335 0.956746 +vt 0.245069 0.764669 +vt 0.561278 0.500000 +vt 0.547241 0.500000 +vt 0.879185 0.484159 +vt 0.713993 0.367412 +vt 0.702165 0.389540 +vt 0.579094 0.437500 +vt 0.561278 0.437500 +vt 0.628595 0.499646 +vt 0.767837 0.646376 +vt 0.612678 0.519041 +vt 0.699295 0.500000 +vt 0.716426 0.437500 +vt 0.699295 0.437500 +vt 0.657723 0.437500 +vt 0.657723 0.500000 +vt 0.713993 0.367412 +vt 0.879185 0.484159 +vt 0.702165 0.389540 +vt 0.767837 0.646376 +vt 0.628595 0.499646 +vt 0.612678 0.519041 +vt 0.674854 0.500000 +vt 0.674854 0.437500 +vt 0.052657 0.437501 +vt 0.038819 0.437501 +vt 0.110855 0.997541 +vt 0.066211 0.800246 +vt 0.091181 0.797787 +vt 0.154559 0.500000 +vt 0.170347 0.437500 +vt 0.154559 0.437500 +vt 0.222068 0.437501 +vt 0.222068 0.500000 +vt 0.303335 0.956746 +vt 0.221060 0.771952 +vt 0.245069 0.764669 +vt 0.085886 1.000000 +vt 0.091181 0.797787 +vt 0.066211 0.800246 +vt 0.237856 0.500000 +vt 0.237856 0.437501 +vt 0.726069 0.562500 +vt 0.722644 0.437500 +vt 0.453027 0.678003 +vt 0.646376 0.767837 +vt 0.997541 0.110855 +vt 0.845441 0.500000 +vt 0.956746 0.303335 +vt 0.961181 0.500000 +vt 0.997541 0.110855 +vt 0.964030 0.279326 +vt 0.159082 0.799759 +vt 0.176771 0.437501 +vt 0.000000 0.978513 +vt 0.972015 0.193346 +vt 0.815427 0.000000 +vt 0.576594 0.576594 +vt 0.386497 0.562500 +vt 0.384751 0.562500 +vt 0.379261 0.915618 +vt 0.700784 0.700784 +vt 0.767173 0.437500 +vt 0.770598 0.437500 +vt 0.500000 0.437500 +vt 0.700784 0.700784 +vt 0.500000 0.437500 +vt 0.232827 0.437500 +vt 0.379261 0.915618 +vt 0.229402 0.437500 +vt 0.300705 0.500000 +vt 0.462031 0.891012 +vt 0.438722 0.500000 +vt 0.626982 0.783754 +vt 0.462031 0.891012 +vt 0.279326 0.964030 +vt 0.891012 0.462031 +vt 0.579094 0.500000 +vt 0.783754 0.626981 +vt 0.716426 0.500000 +vt 0.891012 0.462031 +vt 0.783754 0.626981 +vt 0.052657 0.500000 +vt 0.085886 1.000000 +vt 0.170347 0.500000 +vt 0.279326 0.964030 +vt 0.110855 0.997541 +vn -0.4714 0.0000 -0.8819 +vn 0.0000 1.0000 0.0000 +vn 0.4714 0.0000 0.8819 +vn -0.2903 0.0000 -0.9569 +vn 0.2903 0.0000 0.9569 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -0.4714 0.0000 0.8819 +vn 0.8819 0.0000 0.4714 +vn -0.9569 0.0000 0.2903 +vn -0.0980 0.0000 -0.9952 +vn -0.9952 0.0000 0.0980 +vn 0.9952 0.0000 -0.0980 +vn 0.0980 0.0000 0.9952 +vn -0.9569 0.0000 -0.2903 +vn 0.9569 0.0000 0.2903 +vn -0.9952 0.0000 -0.0980 +vn 0.9952 0.0000 0.0980 +vn 0.0000 0.0000 1.0000 +vn 0.6344 0.0000 0.7730 +vn -0.6344 0.0000 -0.7730 +vn 0.7730 0.0000 0.6344 +vn -0.7730 0.0000 -0.6344 +vn -0.8819 0.0000 -0.4714 +vn 0.9569 0.0000 -0.2903 +vn -0.6344 0.0000 0.7730 +vn 0.6344 0.0000 -0.7730 +vn 0.4714 0.0000 -0.8819 +vn -0.0980 0.0000 0.9952 +vn -0.7730 0.0000 0.6344 +vn -0.8819 0.0000 0.4714 +vn 0.8819 0.0000 -0.4714 +vn 0.7730 0.0000 -0.6344 +vn -0.2903 0.0000 0.9569 +vn 0.2903 0.0000 -0.9569 +vn 0.0980 0.0000 -0.9952 +s off +f 56/1/1 92/2/1 54/3/1 +f 50/4/2 90/5/2 56/6/2 +f 52/7/3 96/8/3 50/9/3 +f 92/2/4 40/10/4 38/11/4 +f 40/12/2 96/13/2 7/14/2 +f 96/8/5 12/15/5 7/16/5 +f 38/17/6 94/18/6 92/19/6 +f 92/19/6 52/20/6 54/21/6 +f 4/22/7 2/23/7 8/24/7 +f 54/21/6 78/25/6 76/26/6 +f 78/25/6 46/27/6 76/26/6 +f 3/28/7 10/29/7 6/30/7 +f 21/31/5 24/32/5 23/33/5 +f 99/34/8 17/35/8 19/36/8 +f 20/37/9 17/35/9 18/38/9 +f 16/39/6 103/40/6 102/41/6 +f 30/42/10 24/32/10 22/43/10 +f 33/44/6 26/45/6 34/46/6 +f 30/42/4 31/47/4 32/48/4 +f 29/49/2 22/50/2 21/51/2 +f 27/52/11 26/53/11 25/54/11 +f 27/52/12 33/55/12 35/56/12 +f 28/57/2 35/58/2 36/59/2 +f 32/60/6 23/61/6 24/62/6 +f 26/53/13 36/63/13 34/64/13 +f 36/63/14 33/55/14 34/64/14 +f 46/27/6 86/65/6 84/66/6 +f 84/66/6 60/67/6 62/68/6 +f 62/69/15 82/70/15 84/71/15 +f 64/72/2 88/73/2 82/74/2 +f 58/75/16 86/76/16 88/77/16 +f 57/78/17 69/79/17 73/80/17 +f 73/81/2 63/82/2 57/83/2 +f 71/84/18 63/85/18 67/86/18 +f 69/87/6 59/88/6 71/89/6 +f 64/90/17 68/91/17 66/92/17 +f 72/93/2 64/72/2 66/94/2 +f 70/95/18 58/75/18 72/96/18 +f 68/97/6 60/67/6 70/98/6 +f 4/22/11 5/99/11 11/100/11 +f 11/101/2 39/102/2 2/103/2 +f 67/86/19 69/79/19 71/84/19 +f 72/96/19 68/91/19 70/95/19 +f 39/104/14 8/24/14 2/23/14 +f 9/105/6 4/106/6 8/107/6 +f 38/11/11 1/108/11 3/28/11 +f 1/109/2 7/14/2 10/110/2 +f 7/16/14 6/30/14 10/29/14 +f 3/111/6 12/112/6 38/17/6 +f 80/113/20 52/7/20 50/9/20 +f 74/114/2 50/4/2 56/6/2 +f 76/115/21 56/1/21 54/3/21 +f 80/113/22 44/116/22 78/117/22 +f 42/118/2 74/114/2 48/119/2 +f 46/120/23 74/121/23 76/115/23 +f 44/116/9 88/77/9 86/76/9 +f 82/74/2 42/118/2 48/119/2 +f 82/70/24 46/120/24 84/71/24 +f 61/122/6 87/123/6 59/88/6 +f 87/123/6 45/124/6 43/125/6 +f 45/124/6 79/126/6 43/125/6 +f 79/126/6 53/127/6 51/128/6 +f 51/128/6 93/129/6 95/130/6 +f 95/130/6 37/131/6 9/105/6 +f 91/132/5 9/133/5 39/104/5 +f 39/102/2 97/134/2 91/135/2 +f 37/136/4 97/137/4 5/99/4 +f 51/138/3 91/132/3 55/139/3 +f 55/140/2 97/134/2 49/141/2 +f 97/137/1 53/142/1 49/143/1 +f 75/144/20 51/138/20 55/139/20 +f 49/141/2 75/145/2 55/140/2 +f 53/142/21 81/146/21 49/143/21 +f 43/147/22 75/144/22 47/148/22 +f 75/145/2 41/149/2 47/150/2 +f 81/146/23 45/151/23 41/152/23 +f 83/153/9 43/147/9 47/148/9 +f 41/149/2 83/154/2 47/150/2 +f 45/151/24 89/155/24 41/152/24 +f 59/156/16 83/153/16 63/85/16 +f 83/154/2 57/83/2 63/82/2 +f 89/155/15 61/157/15 57/78/15 +f 31/47/25 21/31/25 23/33/25 +f 99/34/24 100/158/24 101/159/24 +f 98/160/2 19/161/2 20/162/2 +f 14/163/23 15/164/23 16/165/23 +f 14/163/26 102/166/26 104/167/26 +f 13/168/2 104/169/2 105/170/2 +f 17/171/6 100/172/6 18/173/6 +f 15/164/27 105/174/27 103/175/27 +f 105/174/22 102/166/22 103/175/22 +f 100/158/28 20/37/28 18/38/28 +f 114/176/20 117/177/20 116/178/20 +f 131/179/29 110/180/29 112/181/29 +f 113/182/18 110/180/18 111/183/18 +f 134/184/6 108/185/6 135/186/6 +f 123/187/30 117/177/30 115/188/30 +f 118/189/6 127/190/6 126/191/6 +f 123/187/21 124/192/21 125/193/21 +f 114/194/2 123/195/2 115/196/2 +f 120/197/1 119/198/1 118/199/1 +f 120/197/31 126/200/31 128/201/31 +f 129/202/2 120/203/2 128/204/2 +f 125/205/6 116/206/6 117/207/6 +f 119/198/32 129/208/32 127/209/32 +f 129/208/3 126/200/3 127/209/3 +f 124/192/33 114/176/33 116/178/33 +f 131/179/17 132/210/17 133/211/17 +f 130/212/2 112/213/2 113/214/2 +f 107/215/15 108/216/15 109/217/15 +f 107/215/34 134/218/34 136/219/34 +f 106/220/2 136/221/2 137/222/2 +f 133/223/6 111/224/6 110/225/6 +f 108/216/35 137/226/35 135/227/35 +f 137/226/16 134/218/16 135/227/16 +f 132/210/36 113/182/36 111/183/36 +f 56/1/1 90/228/1 92/2/1 +f 50/4/2 96/13/2 90/5/2 +f 52/7/3 94/229/3 96/8/3 +f 92/2/4 90/228/4 40/10/4 +f 40/12/2 90/5/2 96/13/2 +f 96/8/5 94/229/5 12/15/5 +f 38/17/6 12/112/6 94/18/6 +f 92/19/6 94/18/6 52/20/6 +f 4/22/7 11/100/7 2/23/7 +f 54/21/6 52/20/6 78/25/6 +f 78/25/6 44/230/6 46/27/6 +f 3/28/7 1/108/7 10/29/7 +f 21/31/5 22/43/5 24/32/5 +f 99/34/8 101/159/8 17/35/8 +f 20/37/9 19/36/9 17/35/9 +f 16/39/6 15/231/6 103/40/6 +f 30/42/10 32/48/10 24/32/10 +f 33/44/6 25/232/6 26/45/6 +f 30/42/4 29/233/4 31/47/4 +f 29/49/2 30/234/2 22/50/2 +f 27/52/11 28/235/11 26/53/11 +f 27/52/12 25/54/12 33/55/12 +f 28/57/2 27/236/2 35/58/2 +f 32/60/6 31/237/6 23/61/6 +f 26/53/13 28/235/13 36/63/13 +f 36/63/14 35/56/14 33/55/14 +f 46/27/6 44/230/6 86/65/6 +f 84/66/6 86/65/6 60/67/6 +f 62/69/15 64/90/15 82/70/15 +f 64/72/2 58/238/2 88/73/2 +f 58/75/16 60/239/16 86/76/16 +f 57/78/17 61/157/17 69/79/17 +f 73/81/2 67/240/2 63/82/2 +f 71/84/18 59/156/18 63/85/18 +f 69/87/6 61/122/6 59/88/6 +f 64/90/17 62/69/17 68/91/17 +f 72/93/2 58/238/2 64/72/2 +f 70/95/18 60/239/18 58/75/18 +f 68/97/6 62/68/6 60/67/6 +f 4/22/11 37/136/11 5/99/11 +f 11/101/2 5/241/2 39/102/2 +f 67/86/19 73/80/19 69/79/19 +f 72/96/19 66/92/19 68/91/19 +f 39/104/14 9/133/14 8/24/14 +f 9/105/6 37/131/6 4/106/6 +f 38/11/11 40/10/11 1/108/11 +f 1/109/2 40/12/2 7/14/2 +f 7/16/14 12/15/14 6/30/14 +f 3/111/6 6/242/6 12/112/6 +f 80/113/20 78/117/20 52/7/20 +f 74/114/2 80/243/2 50/4/2 +f 76/115/21 74/121/21 56/1/21 +f 80/113/22 42/244/22 44/116/22 +f 42/118/2 80/243/2 74/114/2 +f 46/120/23 48/245/23 74/121/23 +f 44/116/9 42/244/9 88/77/9 +f 82/74/2 88/73/2 42/118/2 +f 82/70/24 48/245/24 46/120/24 +f 61/122/6 85/246/6 87/123/6 +f 87/123/6 85/246/6 45/124/6 +f 45/124/6 77/247/6 79/126/6 +f 79/126/6 77/247/6 53/127/6 +f 51/128/6 53/127/6 93/129/6 +f 95/130/6 93/129/6 37/131/6 +f 91/132/5 95/248/5 9/133/5 +f 39/102/2 5/241/2 97/134/2 +f 37/136/4 93/249/4 97/137/4 +f 51/138/3 95/248/3 91/132/3 +f 55/140/2 91/135/2 97/134/2 +f 97/137/1 93/249/1 53/142/1 +f 75/144/20 79/250/20 51/138/20 +f 49/141/2 81/251/2 75/145/2 +f 53/142/21 77/252/21 81/146/21 +f 43/147/22 79/250/22 75/144/22 +f 75/145/2 81/251/2 41/149/2 +f 81/146/23 77/252/23 45/151/23 +f 83/153/9 87/253/9 43/147/9 +f 41/149/2 89/254/2 83/154/2 +f 45/151/24 85/255/24 89/155/24 +f 59/156/16 87/253/16 83/153/16 +f 83/154/2 89/254/2 57/83/2 +f 89/155/15 85/255/15 61/157/15 +f 31/47/25 29/233/25 21/31/25 +f 99/34/24 98/256/24 100/158/24 +f 98/160/2 99/257/2 19/161/2 +f 14/163/23 13/258/23 15/164/23 +f 14/163/26 16/165/26 102/166/26 +f 13/168/2 14/259/2 104/169/2 +f 17/171/6 101/260/6 100/172/6 +f 15/164/27 13/258/27 105/174/27 +f 105/174/22 104/167/22 102/166/22 +f 100/158/28 98/256/28 20/37/28 +f 114/176/20 115/188/20 117/177/20 +f 131/179/29 133/211/29 110/180/29 +f 113/182/18 112/181/18 110/180/18 +f 134/184/6 109/261/6 108/185/6 +f 123/187/30 125/193/30 117/177/30 +f 118/189/6 119/262/6 127/190/6 +f 123/187/21 122/263/21 124/192/21 +f 114/194/2 122/264/2 123/195/2 +f 120/197/1 121/265/1 119/198/1 +f 120/197/31 118/199/31 126/200/31 +f 129/202/2 121/266/2 120/203/2 +f 125/205/6 124/267/6 116/206/6 +f 119/198/32 121/265/32 129/208/32 +f 129/208/3 128/201/3 126/200/3 +f 124/192/33 122/263/33 114/176/33 +f 131/179/17 130/268/17 132/210/17 +f 130/212/2 131/269/2 112/213/2 +f 107/215/15 106/270/15 108/216/15 +f 107/215/34 109/217/34 134/218/34 +f 106/220/2 107/271/2 136/221/2 +f 133/223/6 132/272/6 111/224/6 +f 108/216/35 106/270/35 137/226/35 +f 137/226/16 136/219/16 134/218/16 +f 132/210/36 130/268/36 113/182/36 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard.obj new file mode 100644 index 000000000..0323332c5 --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard.obj @@ -0,0 +1,757 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_straight.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 0.187500 -2.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 149/81/5 42/82/5 141/83/5 +f 145/84/3 43/85/3 137/86/3 +f 49/87/3 157/88/3 153/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/1 160/94/1 152/95/1 +f 42/82/2 153/96/2 141/83/2 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/1 168/104/1 148/105/1 +f 43/106/2 161/102/2 137/107/2 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/2 54/235/2 41/236/2 +f 139/237/2 164/238/2 140/239/2 +f 138/240/2 163/241/2 139/242/2 +f 137/243/2 162/244/2 138/245/2 +f 145/84/1 55/246/1 47/247/1 +f 146/248/1 165/249/1 145/250/1 +f 147/251/1 166/252/1 146/253/1 +f 148/254/1 167/255/1 147/256/1 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/2 50/266/2 44/267/2 +f 143/268/2 156/269/2 144/270/2 +f 142/271/2 155/272/2 143/273/2 +f 141/274/2 154/275/2 142/276/2 +f 149/81/1 51/277/1 46/278/1 +f 150/279/1 157/280/1 149/281/1 +f 151/282/1 158/283/1 150/284/1 +f 152/285/1 159/286/1 151/287/1 +f 156/288/3 52/289/3 50/290/3 +f 155/291/3 160/292/3 156/293/3 +f 154/294/3 159/295/3 155/296/3 +f 153/297/3 158/298/3 154/299/3 +f 45/103/3 140/300/3 41/301/3 +f 148/254/3 139/302/3 140/303/3 +f 147/251/3 138/304/3 139/305/3 +f 146/248/3 137/306/3 138/307/3 +f 48/93/5 144/265/5 44/267/5 +f 152/285/5 143/268/5 144/270/5 +f 151/282/5 142/271/5 143/273/5 +f 150/279/5 141/274/5 142/276/5 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/308/3 33/32/3 +f 10/34/4 27/309/4 26/35/4 +f 18/37/4 35/310/4 34/38/4 +f 12/40/5 28/311/5 27/41/5 +f 20/42/5 36/312/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/313/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/314/3 29/52/3 +f 6/54/4 2/315/4 3/55/4 +f 21/57/3 38/316/3 37/58/3 +f 14/60/4 31/317/4 30/61/4 +f 8/63/5 1/318/5 2/64/5 +f 22/65/4 39/319/4 38/66/4 +f 16/68/5 32/320/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/321/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/322/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 149/81/5 46/278/5 42/82/5 +f 145/84/3 47/247/3 43/85/3 +f 49/87/3 51/277/3 157/88/3 +f 46/90/4 51/323/4 49/91/4 +f 48/93/1 52/289/1 160/94/1 +f 42/82/2 49/324/2 153/96/2 +f 44/97/6 50/325/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/1 56/258/1 168/104/1 +f 43/106/2 53/100/2 161/102/2 +f 47/108/6 55/326/6 53/109/6 +f 41/111/4 54/327/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/2 164/257/2 54/235/2 +f 139/237/2 163/259/2 164/238/2 +f 138/240/2 162/261/2 163/241/2 +f 137/243/2 161/263/2 162/244/2 +f 145/84/1 165/101/1 55/246/1 +f 146/248/1 166/264/1 165/249/1 +f 147/251/1 167/262/1 166/252/1 +f 148/254/1 168/260/1 167/255/1 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/2 156/328/2 50/266/2 +f 143/268/2 155/329/2 156/269/2 +f 142/271/2 154/330/2 155/272/2 +f 141/274/2 153/331/2 154/275/2 +f 149/81/1 157/88/1 51/277/1 +f 150/279/1 158/298/1 157/280/1 +f 151/282/1 159/295/1 158/283/1 +f 152/285/1 160/292/1 159/286/1 +f 156/288/3 160/94/3 52/289/3 +f 155/291/3 159/286/3 160/292/3 +f 154/294/3 158/283/3 159/295/3 +f 153/297/3 157/280/3 158/298/3 +f 45/103/3 148/105/3 140/300/3 +f 148/254/3 147/256/3 139/302/3 +f 147/251/3 146/253/3 138/304/3 +f 146/248/3 145/250/3 137/306/3 +f 48/93/5 152/95/5 144/265/5 +f 152/285/5 151/287/5 143/268/5 +f 151/282/5 150/284/5 142/271/5 +f 150/279/5 149/281/5 141/274/5 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_bend.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend.obj new file mode 100644 index 000000000..23702e62b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_bend.obj @@ -0,0 +1,982 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_curve.blend' +# www.blender.org +o Plane.001 +v -1.312500 0.062500 0.500000 +v -1.141243 0.062500 -2.858757 +v -1.312500 0.187500 0.500000 +v -1.141243 0.187500 -2.858757 +v -1.097049 0.062500 -2.902951 +v -1.097049 0.187500 -2.902951 +v -1.250000 0.062500 0.500000 +v -1.250000 0.187500 0.500000 +v -4.500000 0.062500 -2.687500 +v -4.500000 0.062500 -4.312500 +v -4.500000 0.187500 -2.687500 +v -4.500000 0.187500 -4.312500 +v -4.500000 0.062500 -4.250000 +v -4.500000 0.187500 -4.250000 +v -4.500000 0.062500 -2.750000 +v -4.500000 0.187500 -2.750000 +v -2.246097 0.062500 -1.753903 +v -0.550519 0.187500 -2.138958 +v -2.246097 0.187500 -1.753903 +v -0.498553 0.187500 -2.173681 +v -0.498553 0.062500 -2.173681 +v -0.550519 0.062500 -2.138958 +v -2.201903 0.062500 -1.798097 +v -2.201903 0.187500 -1.798097 +v -3.675014 0.062500 -2.578888 +v -3.675014 0.187500 -2.578888 +v -3.658838 0.062500 -2.639259 +v -3.658838 0.187500 -2.639259 +v -2.906250 0.062500 -2.260456 +v -2.906250 0.187500 -2.260456 +v -2.875000 0.062500 -2.314582 +v -2.875000 0.187500 -2.314582 +v -1.739544 0.062500 -1.093750 +v -1.739544 0.187500 -1.093750 +v -1.685418 0.062500 -1.125000 +v -1.685418 0.187500 -1.125000 +v -1.421111 0.062500 -0.324986 +v -1.421111 0.187500 -0.324986 +v -1.360741 0.062500 -0.341162 +v -1.360741 0.187500 -0.341162 +v -3.561128 0.187500 -4.220029 +v -3.561128 0.062500 -4.220029 +v -3.573321 0.187500 -4.158730 +v -3.573321 0.062500 -4.158730 +v -2.658336 0.187500 -3.946170 +v -2.658336 0.062500 -3.946170 +v -2.682254 0.187500 -3.888428 +v -2.682254 0.062500 -3.888428 +v -1.826319 0.187500 -3.501447 +v -1.826319 0.062500 -3.501447 +v -1.861041 0.187500 -3.449481 +v -1.861041 0.062500 -3.449481 +v -0.111573 0.062500 -1.317746 +v -0.053831 0.062500 -1.341664 +v -0.053831 0.187500 -1.341664 +v -0.111573 0.187500 -1.317746 +v 0.158730 0.062500 -0.426678 +v 0.220028 0.062500 -0.438872 +v 0.220028 0.187500 -0.438872 +v 0.158730 0.187500 -0.426678 +v 0.250000 0.062500 0.500000 +v 0.312499 0.062500 0.500000 +v 0.312499 0.187500 0.500000 +v 0.250000 0.187500 0.500000 +v -1.501192 0.000000 0.294317 +v 0.481698 0.000000 0.033265 +v -1.550139 0.000000 -0.077475 +v 0.432751 0.000000 -0.338527 +v -1.550139 0.062500 -0.077475 +v -1.501192 0.062500 0.294317 +v 0.481698 0.062500 0.033265 +v 0.432751 0.062500 -0.338527 +v -1.656608 0.000000 -0.474823 +v 0.191151 0.000000 -1.240190 +v -1.800115 0.000000 -0.821278 +v 0.047645 0.000000 -1.586645 +v -1.800115 0.062500 -0.821278 +v -1.656608 0.062500 -0.474823 +v 0.191151 0.062500 -1.240190 +v 0.047645 0.062500 -1.586645 +v -2.005797 0.000000 -1.177531 +v -0.419090 0.000000 -2.395053 +v -2.234083 0.000000 -1.475038 +v -0.647376 0.000000 -2.692561 +v -2.234083 0.062500 -1.475038 +v -2.005797 0.062500 -1.177531 +v -0.419090 0.062500 -2.395053 +v -0.647376 0.062500 -2.692561 +v -2.524962 0.000000 -1.765917 +v -1.307439 0.000000 -3.352624 +v -2.822469 0.000000 -1.994203 +v -1.604947 0.000000 -3.580910 +v -2.822469 0.062500 -1.994203 +v -2.524962 0.062500 -1.765917 +v -1.307439 0.062500 -3.352624 +v -1.604947 0.062500 -3.580910 +v -3.178722 0.000000 -2.199886 +v -2.413356 0.000000 -4.047645 +v -3.525177 0.000000 -2.343392 +v -2.759810 0.000000 -4.191151 +v -3.525177 0.062500 -2.343392 +v -3.178722 0.062500 -2.199886 +v -2.413356 0.062500 -4.047645 +v -2.759810 0.062500 -4.191151 +v -3.922526 0.000000 -2.449861 +v -3.661473 0.000000 -4.432751 +v -4.294317 0.000000 -2.498808 +v -4.033265 0.000000 -4.481698 +v -4.294317 0.062500 -2.498808 +v -3.922526 0.062500 -2.449861 +v -3.661473 0.062500 -4.432751 +v -4.033265 0.062500 -4.481698 +v 0.387101 0.125000 -0.206438 +v 0.077275 0.125000 -0.165649 +v 0.403417 0.125000 -0.082508 +v 0.093590 0.125000 -0.041718 +v 0.387101 0.062500 -0.206438 +v 0.077275 0.062500 -0.165649 +v 0.403417 0.062500 -0.082508 +v 0.093590 0.062500 -0.041718 +v -1.455542 0.062500 0.162229 +v -1.145715 0.062500 0.121439 +v -1.471858 0.062500 0.038298 +v -1.162031 0.062500 -0.002491 +v -1.455542 0.125000 0.162229 +v -1.145715 0.125000 0.121439 +v -1.471858 0.125000 0.038298 +v -1.162031 0.125000 -0.002491 +v 0.037737 0.125000 -1.447242 +v -0.250975 0.125000 -1.327653 +v 0.085573 0.125000 -1.331757 +v -0.203139 0.125000 -1.212168 +v 0.037737 0.062500 -1.447242 +v -0.250975 0.062500 -1.327653 +v 0.085573 0.062500 -1.331757 +v -0.203139 0.062500 -1.212168 +v -1.646701 0.062500 -0.614226 +v -1.357989 0.062500 -0.733814 +v -1.694537 0.062500 -0.729711 +v -1.405824 0.062500 -0.849299 +v -1.646701 0.125000 -0.614226 +v -1.357989 0.125000 -0.733814 +v -1.694537 0.125000 -0.729711 +v -1.405824 0.125000 -0.849299 +v -0.620866 0.125000 -2.555344 +v -0.868788 0.125000 -2.365106 +v -0.544770 0.125000 -2.456175 +v -0.792693 0.125000 -2.265937 +v -0.620866 0.062500 -2.555344 +v -0.868788 0.062500 -2.365106 +v -0.544770 0.062500 -2.456175 +v -0.792693 0.062500 -2.265937 +v -2.032308 0.062500 -1.314747 +v -1.784385 0.062500 -1.504985 +v -2.108403 0.062500 -1.413917 +v -1.860480 0.062500 -1.604154 +v -2.032308 0.125000 -1.314747 +v -1.784385 0.125000 -1.504985 +v -2.108403 0.125000 -1.413917 +v -1.860480 0.125000 -1.604154 +v -1.543825 0.125000 -3.455230 +v -1.734063 0.125000 -3.207307 +v -1.444656 0.125000 -3.379134 +v -1.634893 0.125000 -3.131212 +v -1.543825 0.062500 -3.455230 +v -1.734063 0.062500 -3.207307 +v -1.444656 0.062500 -3.379134 +v -1.634893 0.062500 -3.131212 +v -2.586083 0.062500 -1.891597 +v -2.395845 0.062500 -2.139520 +v -2.685253 0.062500 -1.967692 +v -2.495015 0.062500 -2.215615 +v -2.586083 0.125000 -1.891597 +v -2.395845 0.125000 -2.139520 +v -2.685253 0.125000 -1.967692 +v -2.495015 0.125000 -2.215615 +v -2.668243 0.125000 -4.085573 +v -2.787832 0.125000 -3.796861 +v -2.552758 0.125000 -4.037737 +v -2.672346 0.125000 -3.749025 +v -2.668243 0.062500 -4.085573 +v -2.787832 0.062500 -3.796861 +v -2.552758 0.062500 -4.037737 +v -2.672346 0.062500 -3.749025 +v -3.270289 0.062500 -2.305463 +v -3.150701 0.062500 -2.594176 +v -3.385775 0.062500 -2.353299 +v -3.266186 0.062500 -2.642011 +v -3.270289 0.125000 -2.305463 +v -3.150701 0.125000 -2.594176 +v -3.385775 0.125000 -2.353299 +v -3.266186 0.125000 -2.642011 +v -3.917492 0.125000 -4.403417 +v -3.958282 0.125000 -4.093591 +v -3.793562 0.125000 -4.387100 +v -3.834351 0.125000 -4.077275 +v -3.917492 0.062500 -4.403417 +v -3.958282 0.062500 -4.093591 +v -3.793562 0.062500 -4.387100 +v -3.834351 0.062500 -4.077275 +v -4.038298 0.062500 -2.528142 +v -3.997509 0.062500 -2.837969 +v -4.162229 0.062500 -2.544458 +v -4.121440 0.062500 -2.854284 +v -4.038298 0.125000 -2.528142 +v -3.997509 0.125000 -2.837969 +v -4.162229 0.125000 -2.544458 +v -4.121440 0.125000 -2.854284 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.656250 +vt 0.437500 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.593750 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.500000 0.718750 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 0.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 1.000000 +vt 0.218750 0.000000 +vt 0.406250 0.000000 +vt -0.000000 1.000000 +vt 0.187500 0.000000 +vt 0.187500 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.062500 +vt 0.593750 0.125000 +vt 0.437500 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.062500 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt -0.000000 0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vn 0.7730 0.0000 -0.6344 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.6344 0.0000 -0.7730 +vn 0.0000 -1.0000 0.0000 +vn -0.1305 0.0000 0.9914 +vn 0.0000 1.0000 0.0000 +vn 0.1305 0.0000 -0.9914 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn 0.6088 0.0000 -0.7934 +vn -0.6088 0.0000 0.7934 +vn 0.7934 0.0000 -0.6088 +vn -0.7934 0.0000 0.6088 +vn 0.9914 0.0000 -0.1305 +vn 0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn -0.9914 0.0000 0.1305 +vn -0.0980 0.0000 0.9952 +vn 0.0980 0.0000 -0.9952 +vn 0.2903 0.0000 -0.9569 +vn -0.2903 0.0000 0.9569 +vn -0.4714 0.0000 0.8819 +vn 0.4714 0.0000 -0.8819 +vn -0.6344 0.0000 0.7730 +vn -0.7730 0.0000 0.6344 +vn 0.9569 0.0000 -0.2903 +vn 0.8819 0.0000 -0.4714 +vn -0.8819 0.0000 0.4714 +vn -0.9952 0.0000 0.0980 +vn -0.9569 0.0000 0.2903 +vn 0.9952 0.0000 -0.0980 +vn 0.1305 0.0000 0.9914 +vn -0.1305 0.0000 -0.9914 +vn 0.3827 0.0000 0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.6088 0.0000 0.7934 +vn -0.6088 0.0000 -0.7934 +vn 0.7934 0.0000 0.6088 +vn -0.7934 0.0000 -0.6088 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 -0.3827 +vn 0.9914 0.0000 0.1305 +vn -0.9914 0.0000 -0.1305 +s off +f 20/1/1 5/2/1 6/3/1 +f 7/4/2 3/5/2 1/6/2 +f 10/7/3 14/8/3 12/9/3 +f 11/10/3 15/11/3 9/12/3 +f 6/13/4 50/14/4 49/15/4 +f 35/16/5 17/17/5 23/18/5 +f 31/19/5 25/20/5 27/21/5 +f 25/22/6 11/23/6 9/24/6 +f 11/23/7 28/25/7 16/26/7 +f 27/27/5 9/28/5 15/29/5 +f 28/25/8 15/29/8 16/26/8 +f 23/30/5 29/31/5 31/32/5 +f 32/33/9 27/21/9 28/34/9 +f 30/35/7 28/34/7 26/36/7 +f 29/37/10 26/36/10 25/38/10 +f 23/30/11 32/39/11 24/40/11 +f 24/40/7 30/41/7 19/42/7 +f 30/41/12 17/43/12 19/42/12 +f 39/44/5 33/45/5 35/46/5 +f 36/47/13 23/18/13 24/48/13 +f 33/49/14 19/50/14 17/51/14 +f 19/50/7 36/47/7 24/48/7 +f 7/52/15 40/53/15 8/54/15 +f 40/55/16 35/46/16 36/56/16 +f 34/57/7 40/55/7 36/56/7 +f 37/58/17 34/57/17 33/59/17 +f 8/54/7 38/60/7 3/61/7 +f 38/60/18 1/62/18 3/61/18 +f 1/63/5 39/64/5 7/52/5 +f 43/65/7 45/66/7 41/67/7 +f 14/68/7 41/69/7 12/70/7 +f 42/71/5 13/72/5 10/73/5 +f 44/74/19 14/68/19 13/75/19 +f 41/69/20 10/73/20 12/70/20 +f 50/76/5 48/77/5 46/78/5 +f 45/66/21 42/79/21 41/67/21 +f 46/80/5 44/81/5 42/79/5 +f 48/82/22 43/65/22 44/83/22 +f 51/84/7 6/13/7 49/15/7 +f 52/85/23 47/86/23 48/87/23 +f 47/86/7 49/88/7 45/89/7 +f 49/88/24 46/78/24 45/89/24 +f 5/90/5 52/91/5 50/14/5 +f 2/92/25 51/84/25 52/93/25 +f 54/94/5 22/95/5 21/96/5 +f 4/97/7 20/1/7 6/3/7 +f 21/98/5 2/99/5 5/2/5 +f 22/100/26 4/97/26 2/101/26 +f 59/102/27 54/103/27 55/104/27 +f 55/105/28 21/96/28 20/106/28 +f 18/107/7 55/105/7 20/106/7 +f 53/108/29 18/107/29 22/109/29 +f 61/110/30 60/111/30 57/112/30 +f 56/113/7 59/102/7 55/104/7 +f 57/114/31 56/113/31 53/115/31 +f 58/116/5 53/117/5 54/103/5 +f 64/118/2 62/119/2 63/120/2 +f 62/121/5 57/122/5 58/123/5 +f 63/124/32 58/123/32 59/125/32 +f 60/111/7 63/124/7 59/125/7 +f 67/126/5 66/127/5 65/128/5 +f 71/129/7 69/130/7 70/131/7 +f 65/132/18 69/133/18 67/134/18 +f 66/135/33 70/136/33 65/137/33 +f 68/138/15 71/139/15 66/127/15 +f 67/126/34 72/140/34 68/141/34 +f 75/142/5 74/143/5 73/144/5 +f 79/145/7 77/146/7 78/147/7 +f 73/148/17 77/149/17 75/150/17 +f 74/151/35 78/152/35 73/153/35 +f 76/154/16 79/155/16 74/143/16 +f 75/142/36 80/156/36 76/157/36 +f 81/158/5 84/159/5 82/160/5 +f 87/161/7 85/162/7 86/163/7 +f 81/164/14 85/165/14 83/166/14 +f 82/167/37 86/168/37 81/169/37 +f 84/170/13 87/171/13 82/160/13 +f 83/172/38 88/173/38 84/159/38 +f 91/174/5 90/175/5 89/176/5 +f 95/177/7 93/178/7 94/179/7 +f 89/180/12 93/181/12 91/182/12 +f 90/183/39 94/184/39 89/185/39 +f 92/186/11 95/187/11 90/175/11 +f 91/174/40 96/188/40 92/189/40 +f 97/190/5 100/191/5 98/192/5 +f 102/193/7 104/194/7 101/195/7 +f 97/196/10 101/197/10 99/198/10 +f 98/199/41 102/200/41 97/201/41 +f 100/202/9 103/203/9 98/192/9 +f 99/204/42 104/194/42 100/191/42 +f 107/205/5 106/206/5 105/207/5 +f 111/208/7 109/209/7 110/210/7 +f 105/211/6 109/212/6 107/213/6 +f 106/214/43 110/215/43 105/216/43 +f 108/217/8 111/218/8 106/206/8 +f 107/205/44 112/219/44 108/220/44 +f 125/221/18 123/222/18 121/223/18 +f 114/224/7 115/225/7 113/226/7 +f 113/226/15 119/227/15 117/228/15 +f 115/225/33 120/229/33 119/230/33 +f 114/224/34 117/231/34 118/232/34 +f 116/233/18 118/234/18 120/235/18 +f 127/236/34 124/237/34 123/238/34 +f 126/239/33 121/240/33 122/241/33 +f 128/242/15 122/243/15 124/244/15 +f 125/221/7 128/242/7 127/236/7 +f 141/245/17 139/246/17 137/247/17 +f 130/248/7 131/249/7 129/250/7 +f 129/250/16 135/251/16 133/252/16 +f 131/249/35 136/253/35 135/254/35 +f 130/248/36 133/255/36 134/256/36 +f 132/257/17 134/258/17 136/259/17 +f 143/260/36 140/261/36 139/262/36 +f 142/263/35 137/264/35 138/265/35 +f 144/266/16 138/267/16 140/268/16 +f 141/245/7 144/266/7 143/260/7 +f 157/269/14 155/270/14 153/271/14 +f 148/272/7 145/273/7 146/274/7 +f 145/273/13 151/275/13 149/276/13 +f 147/277/37 152/278/37 151/279/37 +f 146/274/38 149/280/38 150/281/38 +f 148/272/14 150/282/14 152/283/14 +f 159/284/38 156/285/38 155/286/38 +f 158/287/37 153/288/37 154/289/37 +f 160/290/13 154/291/13 156/292/13 +f 157/269/7 160/290/7 159/284/7 +f 173/293/12 171/294/12 169/295/12 +f 162/296/7 163/297/7 161/298/7 +f 161/298/11 167/299/11 165/300/11 +f 163/297/39 168/301/39 167/302/39 +f 162/296/40 165/303/40 166/304/40 +f 164/305/12 166/306/12 168/307/12 +f 175/308/40 172/309/40 171/310/40 +f 174/311/39 169/312/39 170/313/39 +f 176/314/11 170/315/11 172/316/11 +f 173/293/7 176/314/7 175/308/7 +f 189/317/10 187/318/10 185/319/10 +f 178/320/7 179/321/7 177/322/7 +f 177/322/9 183/323/9 181/324/9 +f 179/321/41 184/325/41 183/326/41 +f 178/320/42 181/327/42 182/328/42 +f 180/329/10 182/330/10 184/331/10 +f 191/332/42 188/333/42 187/334/42 +f 190/335/41 185/336/41 186/337/41 +f 192/338/9 186/339/9 188/340/9 +f 191/332/7 190/335/7 192/338/7 +f 205/341/6 203/342/6 201/343/6 +f 194/344/7 195/345/7 193/346/7 +f 193/346/8 199/347/8 197/348/8 +f 195/345/43 200/349/43 199/350/43 +f 194/344/44 197/351/44 198/352/44 +f 196/353/6 198/354/6 200/355/6 +f 207/356/44 204/357/44 203/358/44 +f 206/359/43 201/360/43 202/361/43 +f 208/362/8 202/363/8 204/364/8 +f 207/356/7 206/359/7 208/362/7 +f 20/1/1 21/98/1 5/2/1 +f 7/4/2 8/365/2 3/5/2 +f 10/7/3 13/366/3 14/8/3 +f 11/10/3 16/367/3 15/11/3 +f 6/13/4 5/90/4 50/14/4 +f 35/16/5 33/368/5 17/17/5 +f 31/19/5 29/369/5 25/20/5 +f 25/22/6 26/370/6 11/23/6 +f 11/23/7 26/370/7 28/25/7 +f 27/27/5 25/371/5 9/28/5 +f 28/25/8 27/27/8 15/29/8 +f 23/30/5 17/372/5 29/31/5 +f 32/33/9 31/19/9 27/21/9 +f 30/35/7 32/33/7 28/34/7 +f 29/37/10 30/35/10 26/36/10 +f 23/30/11 31/32/11 32/39/11 +f 24/40/7 32/39/7 30/41/7 +f 30/41/12 29/373/12 17/43/12 +f 39/44/5 37/374/5 33/45/5 +f 36/47/13 35/16/13 23/18/13 +f 33/49/14 34/375/14 19/50/14 +f 19/50/7 34/375/7 36/47/7 +f 7/52/15 39/64/15 40/53/15 +f 40/55/16 39/44/16 35/46/16 +f 34/57/7 38/376/7 40/55/7 +f 37/58/17 38/376/17 34/57/17 +f 8/54/7 40/53/7 38/60/7 +f 38/60/18 37/377/18 1/62/18 +f 1/63/5 37/378/5 39/64/5 +f 43/65/7 47/379/7 45/66/7 +f 14/68/7 43/380/7 41/69/7 +f 42/71/5 44/381/5 13/72/5 +f 44/74/19 43/380/19 14/68/19 +f 41/69/20 42/71/20 10/73/20 +f 50/76/5 52/382/5 48/77/5 +f 45/66/21 46/80/21 42/79/21 +f 46/80/5 48/383/5 44/81/5 +f 48/82/22 47/379/22 43/65/22 +f 51/84/7 4/384/7 6/13/7 +f 52/85/23 51/385/23 47/86/23 +f 47/86/7 51/385/7 49/88/7 +f 49/88/24 50/76/24 46/78/24 +f 5/90/5 2/386/5 52/91/5 +f 2/92/25 4/384/25 51/84/25 +f 54/94/5 53/387/5 22/95/5 +f 4/97/7 18/388/7 20/1/7 +f 21/98/5 22/389/5 2/99/5 +f 22/100/26 18/388/26 4/97/26 +f 59/102/27 58/116/27 54/103/27 +f 55/105/28 54/94/28 21/96/28 +f 18/107/7 56/390/7 55/105/7 +f 53/108/29 56/390/29 18/107/29 +f 61/110/30 64/391/30 60/111/30 +f 56/113/7 60/392/7 59/102/7 +f 57/114/31 60/392/31 56/113/31 +f 58/116/5 57/393/5 53/117/5 +f 64/118/2 61/394/2 62/119/2 +f 62/121/5 61/395/5 57/122/5 +f 63/124/32 62/121/32 58/123/32 +f 60/111/7 64/391/7 63/124/7 +f 67/126/5 68/141/5 66/127/5 +f 71/129/7 72/140/7 69/130/7 +f 65/132/18 70/396/18 69/133/18 +f 66/135/33 71/397/33 70/136/33 +f 68/138/15 72/398/15 71/139/15 +f 67/126/34 69/130/34 72/140/34 +f 75/142/5 76/157/5 74/143/5 +f 79/145/7 80/156/7 77/146/7 +f 73/148/17 78/399/17 77/149/17 +f 74/151/35 79/400/35 78/152/35 +f 76/154/16 80/401/16 79/155/16 +f 75/142/36 77/146/36 80/156/36 +f 81/158/5 83/172/5 84/159/5 +f 87/161/7 88/173/7 85/162/7 +f 81/164/14 86/402/14 85/165/14 +f 82/167/37 87/403/37 86/168/37 +f 84/170/13 88/404/13 87/171/13 +f 83/172/38 85/162/38 88/173/38 +f 91/174/5 92/189/5 90/175/5 +f 95/177/7 96/188/7 93/178/7 +f 89/180/12 94/405/12 93/181/12 +f 90/183/39 95/406/39 94/184/39 +f 92/186/11 96/407/11 95/187/11 +f 91/174/40 93/178/40 96/188/40 +f 97/190/5 99/204/5 100/191/5 +f 102/193/7 103/408/7 104/194/7 +f 97/196/10 102/409/10 101/197/10 +f 98/199/41 103/410/41 102/200/41 +f 100/202/9 104/411/9 103/203/9 +f 99/204/42 101/195/42 104/194/42 +f 107/205/5 108/220/5 106/206/5 +f 111/208/7 112/219/7 109/209/7 +f 105/211/6 110/412/6 109/212/6 +f 106/214/43 111/413/43 110/215/43 +f 108/217/8 112/414/8 111/218/8 +f 107/205/44 109/209/44 112/219/44 +f 125/221/18 127/236/18 123/222/18 +f 114/224/7 116/233/7 115/225/7 +f 113/226/15 115/225/15 119/227/15 +f 115/225/33 116/233/33 120/229/33 +f 114/224/34 113/226/34 117/231/34 +f 116/233/18 114/224/18 118/234/18 +f 127/236/34 128/242/34 124/237/34 +f 126/239/33 125/221/33 121/240/33 +f 128/242/15 126/239/15 122/243/15 +f 125/221/7 126/239/7 128/242/7 +f 141/245/17 143/260/17 139/246/17 +f 130/248/7 132/257/7 131/249/7 +f 129/250/16 131/249/16 135/251/16 +f 131/249/35 132/257/35 136/253/35 +f 130/248/36 129/250/36 133/255/36 +f 132/257/17 130/248/17 134/258/17 +f 143/260/36 144/266/36 140/261/36 +f 142/263/35 141/245/35 137/264/35 +f 144/266/16 142/263/16 138/267/16 +f 141/245/7 142/263/7 144/266/7 +f 157/269/14 159/284/14 155/270/14 +f 148/272/7 147/277/7 145/273/7 +f 145/273/13 147/277/13 151/275/13 +f 147/277/37 148/272/37 152/278/37 +f 146/274/38 145/273/38 149/280/38 +f 148/272/14 146/274/14 150/282/14 +f 159/284/38 160/290/38 156/285/38 +f 158/287/37 157/269/37 153/288/37 +f 160/290/13 158/287/13 154/291/13 +f 157/269/7 158/287/7 160/290/7 +f 173/293/12 175/308/12 171/294/12 +f 162/296/7 164/305/7 163/297/7 +f 161/298/11 163/297/11 167/299/11 +f 163/297/39 164/305/39 168/301/39 +f 162/296/40 161/298/40 165/303/40 +f 164/305/12 162/296/12 166/306/12 +f 175/308/40 176/314/40 172/309/40 +f 174/311/39 173/293/39 169/312/39 +f 176/314/11 174/311/11 170/315/11 +f 173/293/7 174/311/7 176/314/7 +f 189/317/10 191/332/10 187/318/10 +f 178/320/7 180/329/7 179/321/7 +f 177/322/9 179/321/9 183/323/9 +f 179/321/41 180/329/41 184/325/41 +f 178/320/42 177/322/42 181/327/42 +f 180/329/10 178/320/10 182/330/10 +f 191/332/42 192/338/42 188/333/42 +f 190/335/41 189/317/41 185/336/41 +f 192/338/9 190/335/9 186/339/9 +f 191/332/7 189/317/7 190/335/7 +f 205/341/6 207/356/6 203/342/6 +f 194/344/7 196/353/7 195/345/7 +f 193/346/8 195/345/8 199/347/8 +f 195/345/43 196/353/43 200/349/43 +f 194/344/44 193/346/44 197/351/44 +f 196/353/6 194/344/6 198/354/6 +f 207/356/44 208/362/44 204/357/44 +f 206/359/43 205/341/43 201/360/43 +f 208/362/8 206/359/8 202/363/8 +f 207/356/7 205/341/7 206/359/7 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj new file mode 100644 index 000000000..d56bd4b9b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_buffer.obj @@ -0,0 +1,1143 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_stop.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.062500 -0.187500 +v 1.000000 0.062500 0.187500 +v -1.000000 0.062500 0.187500 +v -1.000000 0.062500 -0.187500 +v -1.000000 0.000000 0.187500 +v 1.000000 0.000000 0.187500 +v -1.000000 0.000000 -0.187500 +v 1.000000 0.000000 -0.187500 +v -1.000000 0.000000 -0.812500 +v 1.000000 0.000000 -0.812500 +v -1.000000 0.000000 -1.187500 +v 1.000000 0.000000 -1.187500 +v -1.000000 0.000000 -1.812500 +v 1.000000 0.000000 -1.812500 +v -1.000000 0.000000 -2.187500 +v 1.000000 0.000000 -2.187500 +v -1.000000 0.000000 2.187500 +v 1.000000 0.000000 2.187500 +v -1.000000 0.000000 1.812500 +v 1.000000 0.000000 1.812500 +v -1.000000 0.000000 1.187500 +v 1.000000 0.000000 1.187500 +v -1.000000 0.000000 0.812500 +v 1.000000 0.000000 0.812500 +v -1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -0.812500 +v 1.000000 0.062500 -1.187500 +v -1.000000 0.062500 -2.187500 +v -1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -1.812500 +v 1.000000 0.062500 -2.187500 +v -1.000000 0.062500 1.812500 +v -1.000000 0.062500 2.187500 +v 1.000000 0.062500 2.187500 +v 1.000000 0.062500 1.812500 +v -1.000000 0.062500 0.812500 +v -1.000000 0.062500 1.187500 +v 1.000000 0.062500 1.187500 +v 1.000000 0.062500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 0.062500 -2.500000 +v 0.812500 0.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 0.187500 -2.500000 +v 0.812500 0.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 0.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 0.187500 -2.500000 +v -0.750000 0.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 0.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.062500 2.062500 +v 0.937500 0.062500 2.062500 +v 0.625000 0.062500 1.937500 +v 0.937500 0.062500 1.937500 +v 0.625000 0.125000 2.062500 +v 0.937500 0.125000 2.062500 +v 0.625000 0.125000 1.937500 +v 0.937500 0.125000 1.937500 +v -0.937500 0.062500 2.062500 +v -0.625000 0.062500 2.062500 +v -0.937500 0.062500 1.937500 +v -0.625000 0.062500 1.937500 +v -0.937500 0.125000 2.062500 +v -0.625000 0.125000 2.062500 +v -0.937500 0.125000 1.937500 +v -0.625000 0.125000 1.937500 +v 0.625000 0.062500 1.062500 +v 0.937500 0.062500 1.062500 +v 0.625000 0.062500 0.937500 +v 0.937500 0.062500 0.937500 +v 0.625000 0.125000 1.062500 +v 0.937500 0.125000 1.062500 +v 0.625000 0.125000 0.937500 +v 0.937500 0.125000 0.937500 +v -0.937500 0.062500 1.062500 +v -0.625000 0.062500 1.062500 +v -0.937500 0.062500 0.937500 +v -0.625000 0.062500 0.937500 +v -0.937500 0.125000 1.062500 +v -0.625000 0.125000 1.062500 +v -0.937500 0.125000 0.937500 +v -0.625000 0.125000 0.937500 +v 0.625000 0.062500 0.062500 +v 0.937500 0.062500 0.062500 +v 0.625000 0.062500 -0.062500 +v 0.937500 0.062500 -0.062500 +v 0.625000 0.125000 0.062500 +v 0.937500 0.125000 0.062500 +v 0.625000 0.125000 -0.062500 +v 0.937500 0.125000 -0.062500 +v -0.937500 0.062500 0.062500 +v -0.625000 0.062500 0.062500 +v -0.937500 0.062500 -0.062500 +v -0.625000 0.062500 -0.062500 +v -0.937500 0.125000 0.062500 +v -0.625000 0.125000 0.062500 +v -0.937500 0.125000 -0.062500 +v -0.625000 0.125000 -0.062500 +v 0.625000 0.062500 -0.937500 +v 0.937500 0.062500 -0.937500 +v 0.625000 0.062500 -1.062500 +v 0.937500 0.062500 -1.062500 +v 0.625000 0.125000 -0.937500 +v 0.937500 0.125000 -0.937500 +v 0.625000 0.125000 -1.062500 +v 0.937500 0.125000 -1.062500 +v -0.937500 0.062500 -0.937500 +v -0.625000 0.062500 -0.937500 +v -0.937500 0.062500 -1.062500 +v -0.625000 0.062500 -1.062500 +v -0.937500 0.125000 -0.937500 +v -0.625000 0.125000 -0.937500 +v -0.937500 0.125000 -1.062500 +v -0.625000 0.125000 -1.062500 +v 0.625000 0.062500 -1.937500 +v 0.937500 0.062500 -1.937500 +v 0.625000 0.062500 -2.062500 +v 0.937500 0.062500 -2.062500 +v 0.625000 0.125000 -1.937500 +v 0.937500 0.125000 -1.937500 +v 0.625000 0.125000 -2.062500 +v 0.937500 0.125000 -2.062500 +v -0.937500 0.062500 -1.937500 +v -0.625000 0.062500 -1.937500 +v -0.937500 0.062500 -2.062500 +v -0.625000 0.062500 -2.062500 +v -0.937500 0.125000 -1.937500 +v -0.625000 0.125000 -1.937500 +v -0.937500 0.125000 -2.062500 +v -0.625000 0.125000 -2.062500 +v -0.812500 0.062500 -1.500000 +v -0.812500 0.062500 -0.500000 +v -0.812500 0.062500 0.500000 +v -0.812500 0.062500 1.500000 +v 0.812500 0.062500 1.500000 +v 0.812500 0.062500 0.500000 +v 0.812500 0.062500 -0.500000 +v 0.812500 0.062500 -1.500000 +v -0.812500 0.187500 -1.500000 +v -0.812500 0.187500 -0.500000 +v -0.812500 0.187500 0.500000 +v -0.812500 0.187500 1.500000 +v 0.812500 0.187500 1.500000 +v 0.812500 0.187500 0.500000 +v 0.812500 0.187500 -0.500000 +v 0.812500 0.187500 -1.500000 +v 0.750000 0.062500 1.500000 +v 0.750000 0.062500 0.500000 +v 0.750000 0.062500 -0.500000 +v 0.750000 0.062500 -1.500000 +v 0.750000 0.187500 1.500000 +v 0.750000 0.187500 0.500000 +v 0.750000 0.187500 -0.500000 +v 0.750000 0.187500 -1.500000 +v -0.750000 0.062500 -1.500000 +v -0.750000 0.062500 -0.500000 +v -0.750000 0.062500 0.500000 +v -0.750000 0.062500 1.500000 +v -0.750000 0.187500 -1.500000 +v -0.750000 0.187500 -0.500000 +v -0.750000 0.187500 0.500000 +v -0.750000 0.187500 1.500000 +v -1.000000 1.500000 -1.000000 +v 1.000000 1.500000 -1.000000 +v -1.000000 1.500000 -1.375000 +v 1.000000 1.500000 -1.375000 +v -1.000000 0.875000 -1.375000 +v -1.000000 0.875000 -1.000000 +v 1.000000 0.875000 -1.000000 +v 1.000000 0.875000 -1.375000 +v 0.687500 1.062500 -1.000000 +v 0.937500 1.062500 -1.000000 +v 0.687500 1.312500 -1.000000 +v 0.937500 1.312500 -1.000000 +v 0.687500 1.312500 -0.625000 +v 0.687500 1.062500 -0.625000 +v 0.937500 1.062500 -0.625000 +v 0.937500 1.312500 -0.625000 +v 0.562500 1.312500 -0.625000 +v 0.687500 1.437500 -0.625000 +v 0.687500 0.937500 -0.625000 +v 0.562500 1.062500 -0.625000 +v 1.062500 1.062500 -0.625000 +v 0.937500 0.937500 -0.625000 +v 0.937500 1.437500 -0.625000 +v 1.062500 1.312500 -0.625000 +v 0.687500 1.437500 -0.500000 +v 0.562500 1.312500 -0.500000 +v 0.562500 1.062500 -0.500000 +v 0.687500 0.937500 -0.500000 +v 0.937500 0.937500 -0.500000 +v 1.062500 1.062500 -0.500000 +v 1.062500 1.312500 -0.500000 +v 0.937500 1.437500 -0.500000 +v 0.625000 0.875000 -1.062500 +v 0.875000 0.875000 -1.062500 +v 0.625000 0.875000 -1.312500 +v 0.875000 0.875000 -1.312500 +v 0.625000 0.000000 -1.312500 +v 0.625000 0.000000 -1.062500 +v 0.875000 0.000000 -1.062500 +v 0.875000 0.000000 -1.312500 +v -0.875000 0.875000 -1.062500 +v -0.625000 0.875000 -1.062500 +v -0.875000 0.875000 -1.312500 +v -0.625000 0.875000 -1.312500 +v -0.875000 0.000000 -1.312500 +v -0.875000 0.000000 -1.062500 +v -0.625000 0.000000 -1.062500 +v -0.625000 0.000000 -1.312500 +v 0.625000 0.000000 -2.687500 +v 0.625000 0.000000 -2.437500 +v 0.875000 0.000000 -2.437500 +v 0.875000 0.000000 -2.687500 +v -0.875000 0.000000 -2.687500 +v -0.875000 0.000000 -2.437500 +v -0.625000 0.000000 -2.437500 +v -0.625000 0.000000 -2.687500 +v 0.625000 1.062500 -1.375000 +v 0.875000 1.062500 -1.375000 +v -0.875000 1.062500 -1.375000 +v -0.625000 1.062500 -1.375000 +v 0.625000 1.312500 -1.375000 +v 0.875000 1.312500 -1.375000 +v -0.875000 1.312500 -1.375000 +v -0.625000 1.312500 -1.375000 +v -0.937500 1.062500 -1.000000 +v -0.687500 1.062500 -1.000000 +v -0.937500 1.312500 -1.000000 +v -0.687500 1.312500 -1.000000 +v -0.937500 1.312500 -0.625000 +v -0.937500 1.062500 -0.625000 +v -0.687500 1.062500 -0.625000 +v -0.687500 1.312500 -0.625000 +v -1.062500 1.312500 -0.625000 +v -0.937500 1.437500 -0.625000 +v -0.937500 0.937500 -0.625000 +v -1.062500 1.062500 -0.625000 +v -0.562500 1.062500 -0.625000 +v -0.687500 0.937500 -0.625000 +v -0.687500 1.437500 -0.625000 +v -0.562500 1.312500 -0.625000 +v -0.937500 1.437500 -0.500000 +v -1.062500 1.312500 -0.500000 +v -1.062500 1.062500 -0.500000 +v -0.937500 0.937500 -0.500000 +v -0.687500 0.937500 -0.500000 +v -0.562500 1.062500 -0.500000 +v -0.562500 1.312500 -0.500000 +v -0.687500 1.437500 -0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt 0.109375 0.500000 +vt 0.203125 -0.000000 +vt 0.203125 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt -0.000000 0.000000 +vt 0.093750 0.500000 +vt -0.000000 0.500000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.109375 0.500000 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.296875 0.000000 +vt 0.203125 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.203125 0.015625 +vt 0.296875 0.000000 +vt 0.296875 0.015625 +vt 0.093750 0.000000 +vt 0.109375 0.000000 +vt 0.250000 0.078125 +vt 0.218750 0.328125 +vt 0.218750 0.078125 +vt 0.265625 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.265625 0.359375 +vt 0.250000 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.203125 0.078125 +vt 0.250000 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.359375 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.203125 0.078125 +vt 0.203125 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.265625 0.359375 +vt 0.250000 0.359375 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.218750 0.031250 +vt 0.203125 0.062500 +vt 0.203125 0.031250 +vt 0.218750 0.062500 +vt 0.296875 0.078125 +vt 0.218750 0.078125 +vt 0.296875 0.031250 +vt 0.218750 0.015625 +vt 0.296875 0.015625 +vt 0.296875 0.062500 +vt 0.312500 0.031250 +vt 0.312500 0.062500 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.078125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.078125 +vt 0.250000 0.328125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.218750 0.328125 +vt 0.203125 0.078125 +vt 0.218750 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.250000 0.078125 +vt 0.265625 0.328125 +vt 0.250000 0.328125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.265625 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.296875 0.078125 +vt 0.296875 0.328125 +vt 0.467018 0.000041 +vt 0.560886 0.500669 +vt 0.467018 0.500669 +vt 0.562500 -0.000000 +vt 0.468750 0.500000 +vt 0.468750 -0.000000 +vt 0.312500 0.500000 +vt 0.468750 0.593750 +vt 0.312500 0.593750 +vt 0.312500 0.500000 +vt 0.468750 0.593750 +vt 0.312500 0.593750 +vt 0.312500 -0.000000 +vt 0.468750 0.500000 +vt 0.312500 -0.000000 +vt 0.656250 0.187500 +vt 0.562500 0.125000 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.562500 0.000000 +vt 0.656250 0.000000 +vt 0.562500 0.062500 +vt 0.656250 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.437500 +vt 0.687500 0.406250 +vt 0.687500 0.437500 +vt 0.718750 0.312500 +vt 0.593750 0.375000 +vt 0.687500 0.406250 +vt 0.593750 0.375000 +vt 0.625000 0.281250 +vt 0.687500 0.250000 +vt 0.625000 0.281250 +vt 0.625000 0.250000 +vt 0.750000 0.375000 +vt 0.750000 0.312500 +vt 0.718750 0.437500 +vt 0.718750 0.281250 +vt 0.687500 0.281250 +vt 0.593750 0.250000 +vt 0.593750 0.406250 +vt 0.625000 0.406250 +vt 0.562500 0.312500 +vt 0.562500 0.375000 +vt 0.781250 0.000000 +vt 0.718750 0.062500 +vt 0.718750 0.000000 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.781250 0.000000 +vt 0.718750 0.062500 +vt 0.718750 0.000000 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.656250 0.218750 +vt 0.718750 -0.000000 +vt 0.718750 0.218750 +vt 0.250000 0.500000 +vt 0.312500 0.562500 +vt 0.250000 0.562500 +vt 0.250000 0.500000 +vt 0.312500 0.562500 +vt 0.250000 0.562500 +vt 0.187500 0.921875 +vt 0.250000 0.546875 +vt 0.250000 0.921875 +vt 0.187500 0.921875 +vt 0.250000 0.546875 +vt 0.250000 0.921875 +vt 0.000000 0.546875 +vt 0.062500 0.968750 +vt 0.000000 0.921875 +vt 0.125000 0.500000 +vt 0.125000 0.968750 +vt 0.000000 0.546875 +vt 0.062500 0.968750 +vt 0.000000 0.921875 +vt 0.125000 0.500000 +vt 0.125000 0.968750 +vt 0.656250 0.187500 +vt 0.562500 0.125000 +vt 0.656250 0.125000 +vt 0.656250 0.062500 +vt 0.562500 0.000000 +vt 0.656250 0.000000 +vt 0.562500 0.062500 +vt 0.656250 0.250000 +vt 0.562500 0.187500 +vt 0.625000 0.437500 +vt 0.687500 0.406250 +vt 0.687500 0.437500 +vt 0.718750 0.312500 +vt 0.593750 0.375000 +vt 0.687500 0.406250 +vt 0.593750 0.375000 +vt 0.625000 0.281250 +vt 0.687500 0.250000 +vt 0.625000 0.281250 +vt 0.625000 0.250000 +vt 0.750000 0.375000 +vt 0.750000 0.312500 +vt 0.718750 0.437500 +vt 0.718750 0.281250 +vt 0.687500 0.281250 +vt 0.593750 0.250000 +vt 0.593750 0.406250 +vt 0.625000 0.406250 +vt 0.562500 0.312500 +vt 0.562500 0.375000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.296875 0.015625 +vt 0.203125 0.000000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.203125 0.000000 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.093750 0.500000 +vt 0.296875 0.015625 +vt 0.296875 0.015625 +vt 0.203125 0.000000 +vt 0.250000 0.359375 +vt 0.203125 0.328125 +vt 0.265625 0.328125 +vt 0.250000 0.359375 +vt 0.265625 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.203125 0.328125 +vt 0.560886 0.000041 +vt 0.562500 0.500000 +vt 0.468750 -0.000000 +vt 0.562500 0.250000 +vt 0.593750 0.312500 +vt 0.718750 0.375000 +vt 0.687500 0.281250 +vt 0.718750 0.312500 +vt 0.718750 0.375000 +vt 0.625000 0.406250 +vt 0.593750 0.312500 +vt 0.718750 0.406250 +vt 0.718750 0.250000 +vt 0.593750 0.281250 +vt 0.593750 0.437500 +vt 0.781250 0.062500 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.781250 0.062500 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.656250 -0.000000 +vt 0.312500 0.500000 +vt 0.312500 0.500000 +vt 0.187500 0.546875 +vt 0.187500 0.546875 +vt 0.062500 0.500000 +vt 0.062500 0.500000 +vt 0.562500 0.250000 +vt 0.593750 0.312500 +vt 0.718750 0.375000 +vt 0.687500 0.281250 +vt 0.718750 0.312500 +vt 0.718750 0.375000 +vt 0.625000 0.406250 +vt 0.593750 0.312500 +vt 0.718750 0.406250 +vt 0.718750 0.250000 +vt 0.593750 0.281250 +vt 0.593750 0.437500 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 149/81/5 42/82/5 141/83/5 +f 145/84/3 43/85/3 137/86/3 +f 49/87/3 157/88/3 153/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/1 160/94/1 152/95/1 +f 42/82/2 153/96/2 141/83/2 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/1 168/104/1 148/105/1 +f 43/106/2 161/102/2 137/107/2 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/2 54/235/2 41/236/2 +f 139/237/2 164/238/2 140/239/2 +f 138/240/2 163/241/2 139/242/2 +f 137/243/2 162/244/2 138/245/2 +f 145/84/1 55/246/1 47/247/1 +f 146/248/1 165/249/1 145/250/1 +f 147/251/1 166/252/1 146/253/1 +f 148/254/1 167/255/1 147/256/1 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/2 50/266/2 44/267/2 +f 143/268/2 156/269/2 144/270/2 +f 142/271/2 155/272/2 143/273/2 +f 141/274/2 154/275/2 142/276/2 +f 149/81/1 51/277/1 46/278/1 +f 150/279/1 157/280/1 149/281/1 +f 151/282/1 158/283/1 150/284/1 +f 152/285/1 159/286/1 151/287/1 +f 156/288/3 52/289/3 50/290/3 +f 155/291/3 160/292/3 156/293/3 +f 154/294/3 159/295/3 155/296/3 +f 153/297/3 158/298/3 154/299/3 +f 45/103/3 140/300/3 41/301/3 +f 148/254/3 139/302/3 140/303/3 +f 147/251/3 138/304/3 139/305/3 +f 146/248/3 137/306/3 138/307/3 +f 48/93/5 144/265/5 44/267/5 +f 152/285/5 143/268/5 144/270/5 +f 151/282/5 142/271/5 143/273/5 +f 150/279/5 141/274/5 142/276/5 +f 170/308/1 171/309/1 169/310/1 +f 173/311/2 175/312/2 174/313/2 +f 170/314/5 176/315/5 172/316/5 +f 171/317/3 174/318/3 169/319/3 +f 172/320/6 173/321/6 171/317/6 +f 169/322/4 175/312/4 170/314/4 +f 179/323/1 184/324/1 180/325/1 +f 178/326/2 182/327/2 177/328/2 +f 180/325/5 183/329/5 178/326/5 +f 177/330/3 181/331/3 179/323/3 +f 186/332/1 200/333/1 191/334/1 +f 198/335/4 200/333/4 194/336/4 +f 186/337/6 192/338/6 190/339/6 +f 190/340/2 196/341/2 187/342/2 +f 192/343/5 198/335/5 189/344/5 +f 200/333/7 192/345/7 191/334/7 +f 190/340/8 198/346/8 197/347/8 +f 196/341/9 188/348/9 187/342/9 +f 186/332/10 194/349/10 193/350/10 +f 188/351/3 194/336/3 185/352/3 +f 205/353/2 207/354/2 206/355/2 +f 202/356/5 208/357/5 204/358/5 +f 203/359/3 206/355/3 201/360/3 +f 204/361/6 205/362/6 203/363/6 +f 201/364/4 207/365/4 202/366/4 +f 213/367/2 215/368/2 214/369/2 +f 210/370/5 216/371/5 212/372/5 +f 211/373/3 214/369/3 209/374/3 +f 212/375/6 213/376/6 211/377/6 +f 209/378/4 215/379/4 210/380/4 +f 217/381/2 219/382/2 218/383/2 +f 221/384/2 223/385/2 222/386/2 +f 223/387/11 227/388/11 222/389/11 +f 219/390/11 225/391/11 218/392/11 +f 225/393/3 217/394/3 218/395/3 +f 217/394/12 230/396/12 220/397/12 +f 230/396/5 219/390/5 220/397/5 +f 227/398/3 221/399/3 222/400/3 +f 221/399/12 232/401/12 224/402/12 +f 232/401/5 223/387/5 224/402/5 +f 235/403/1 240/404/1 236/405/1 +f 234/406/2 238/407/2 233/408/2 +f 236/405/5 239/409/5 234/406/5 +f 233/410/3 237/411/3 235/403/3 +f 242/412/1 256/413/1 247/414/1 +f 254/415/4 256/413/4 250/416/4 +f 242/417/6 248/418/6 246/419/6 +f 246/420/2 252/421/2 243/422/2 +f 248/423/5 254/415/5 245/424/5 +f 256/413/7 248/425/7 247/414/7 +f 246/420/8 254/426/8 253/427/8 +f 252/421/9 244/428/9 243/422/9 +f 242/412/10 250/429/10 249/430/10 +f 244/431/3 250/416/3 241/432/3 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/433/3 33/32/3 +f 10/34/4 27/434/4 26/35/4 +f 18/37/4 35/435/4 34/38/4 +f 12/40/5 28/436/5 27/41/5 +f 20/42/5 36/437/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/438/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/439/3 29/52/3 +f 6/54/4 2/440/4 3/55/4 +f 21/57/3 38/441/3 37/58/3 +f 14/60/4 31/442/4 30/61/4 +f 8/63/5 1/443/5 2/64/5 +f 22/65/4 39/444/4 38/66/4 +f 16/68/5 32/445/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/446/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/447/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 149/81/5 46/278/5 42/82/5 +f 145/84/3 47/247/3 43/85/3 +f 49/87/3 51/277/3 157/88/3 +f 46/90/4 51/448/4 49/91/4 +f 48/93/1 52/289/1 160/94/1 +f 42/82/2 49/449/2 153/96/2 +f 44/97/6 50/450/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/1 56/258/1 168/104/1 +f 43/106/2 53/100/2 161/102/2 +f 47/108/6 55/451/6 53/109/6 +f 41/111/4 54/452/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/2 164/257/2 54/235/2 +f 139/237/2 163/259/2 164/238/2 +f 138/240/2 162/261/2 163/241/2 +f 137/243/2 161/263/2 162/244/2 +f 145/84/1 165/101/1 55/246/1 +f 146/248/1 166/264/1 165/249/1 +f 147/251/1 167/262/1 166/252/1 +f 148/254/1 168/260/1 167/255/1 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/2 156/453/2 50/266/2 +f 143/268/2 155/454/2 156/269/2 +f 142/271/2 154/455/2 155/272/2 +f 141/274/2 153/456/2 154/275/2 +f 149/81/1 157/88/1 51/277/1 +f 150/279/1 158/298/1 157/280/1 +f 151/282/1 159/295/1 158/283/1 +f 152/285/1 160/292/1 159/286/1 +f 156/288/3 160/94/3 52/289/3 +f 155/291/3 159/286/3 160/292/3 +f 154/294/3 158/283/3 159/295/3 +f 153/297/3 157/280/3 158/298/3 +f 45/103/3 148/105/3 140/300/3 +f 148/254/3 147/256/3 139/302/3 +f 147/251/3 146/253/3 138/304/3 +f 146/248/3 145/250/3 137/306/3 +f 48/93/5 152/95/5 144/265/5 +f 152/285/5 151/287/5 143/268/5 +f 151/282/5 150/284/5 142/271/5 +f 150/279/5 149/281/5 141/274/5 +f 170/308/1 172/457/1 171/309/1 +f 173/311/2 176/458/2 175/312/2 +f 170/314/5 175/312/5 176/315/5 +f 171/317/3 173/321/3 174/318/3 +f 172/320/6 176/459/6 173/321/6 +f 169/322/4 174/313/4 175/312/4 +f 179/323/1 181/331/1 184/324/1 +f 178/326/2 183/329/2 182/327/2 +f 180/325/5 184/324/5 183/329/5 +f 177/330/3 182/460/3 181/331/3 +f 186/332/1 193/350/1 200/333/1 +f 194/336/4 195/461/4 196/341/4 +f 196/341/4 197/347/4 198/335/4 +f 198/335/4 199/462/4 200/333/4 +f 200/333/4 193/350/4 194/336/4 +f 194/336/4 196/341/4 198/335/4 +f 190/339/6 187/463/6 188/464/6 +f 188/464/6 185/465/6 186/337/6 +f 186/337/6 191/466/6 192/338/6 +f 192/338/6 189/467/6 190/339/6 +f 190/339/6 188/464/6 186/337/6 +f 190/340/2 197/347/2 196/341/2 +f 192/343/5 199/462/5 198/335/5 +f 200/333/7 199/468/7 192/345/7 +f 190/340/8 189/469/8 198/346/8 +f 196/341/9 195/470/9 188/348/9 +f 186/332/10 185/471/10 194/349/10 +f 188/351/3 195/461/3 194/336/3 +f 205/353/2 208/472/2 207/354/2 +f 202/356/5 207/473/5 208/357/5 +f 203/359/3 205/474/3 206/355/3 +f 204/361/6 208/475/6 205/362/6 +f 201/364/4 206/476/4 207/365/4 +f 213/367/2 216/477/2 215/368/2 +f 210/370/5 215/478/5 216/371/5 +f 211/373/3 213/479/3 214/369/3 +f 212/375/6 216/480/6 213/376/6 +f 209/378/4 214/481/4 215/379/4 +f 217/381/2 220/482/2 219/382/2 +f 221/384/2 224/483/2 223/385/2 +f 223/387/11 228/484/11 227/388/11 +f 219/390/11 226/485/11 225/391/11 +f 225/393/3 229/486/3 217/394/3 +f 217/394/12 229/486/12 230/396/12 +f 230/396/5 226/485/5 219/390/5 +f 227/398/3 231/487/3 221/399/3 +f 221/399/12 231/487/12 232/401/12 +f 232/401/5 228/484/5 223/387/5 +f 235/403/1 237/411/1 240/404/1 +f 234/406/2 239/409/2 238/407/2 +f 236/405/5 240/404/5 239/409/5 +f 233/410/3 238/488/3 237/411/3 +f 242/412/1 249/430/1 256/413/1 +f 250/416/4 251/489/4 252/421/4 +f 252/421/4 253/427/4 254/415/4 +f 254/415/4 255/490/4 256/413/4 +f 256/413/4 249/430/4 250/416/4 +f 250/416/4 252/421/4 254/415/4 +f 246/419/6 243/491/6 244/492/6 +f 244/492/6 241/493/6 242/417/6 +f 242/417/6 247/494/6 248/418/6 +f 248/418/6 245/495/6 246/419/6 +f 246/419/6 244/492/6 242/417/6 +f 246/420/2 253/427/2 252/421/2 +f 248/423/5 255/490/5 254/415/5 +f 256/413/7 255/496/7 248/425/7 +f 246/420/8 245/497/8 254/426/8 +f 252/421/9 251/498/9 244/428/9 +f 242/412/10 241/499/10 250/429/10 +f 244/431/3 251/489/3 250/416/3 diff --git a/src/main/resources/assets/hbm/models/blocks/rail_standard_ramp.obj b/src/main/resources/assets/hbm/models/blocks/rail_standard_ramp.obj new file mode 100644 index 000000000..f1667d19b --- /dev/null +++ b/src/main/resources/assets/hbm/models/blocks/rail_standard_ramp.obj @@ -0,0 +1,1139 @@ +# Blender v2.79 (sub 0) OBJ File: 'rail_standard_ramp.blend' +# www.blender.org +o Plane.001 +v 1.000000 0.562500 -0.187500 +v 1.000000 0.562500 0.187500 +v -1.000000 0.562500 0.187500 +v -1.000000 0.562500 -0.187500 +v -1.000000 0.500000 0.187500 +v 1.000000 0.500000 0.187500 +v -1.000000 0.500000 -0.187500 +v 1.000000 0.500000 -0.187500 +v -1.000000 0.700000 -0.812500 +v 1.000000 0.700000 -0.812500 +v -1.000000 0.700000 -1.187500 +v 1.000000 0.700000 -1.187500 +v -1.000000 0.900000 -1.812500 +v 1.000000 0.900000 -1.812500 +v -1.000000 0.900000 -2.187500 +v 1.000000 0.900000 -2.187500 +v -1.000000 0.100000 2.187500 +v 1.000000 0.100000 2.187500 +v -1.000000 0.100000 1.812500 +v 1.000000 0.100000 1.812500 +v -1.000000 0.300000 1.187500 +v 1.000000 0.300000 1.187500 +v -1.000000 0.300000 0.812500 +v 1.000000 0.300000 0.812500 +v -1.000000 0.762500 -1.187500 +v -1.000000 0.762500 -0.812500 +v 1.000000 0.762500 -0.812500 +v 1.000000 0.762500 -1.187500 +v -1.000000 0.962500 -2.187500 +v -1.000000 0.962500 -1.812500 +v 1.000000 0.962500 -1.812500 +v 1.000000 0.962500 -2.187500 +v -1.000000 0.162500 1.812500 +v -1.000000 0.162500 2.187500 +v 1.000000 0.162500 2.187500 +v 1.000000 0.162500 1.812500 +v -1.000000 0.362500 0.812500 +v -1.000000 0.362500 1.187500 +v 1.000000 0.362500 1.187500 +v 1.000000 0.362500 0.812500 +v -0.812500 0.062500 2.500000 +v 0.812500 0.062500 2.500000 +v -0.812500 1.062500 -2.500000 +v 0.812500 1.062500 -2.500000 +v -0.812500 0.187500 2.500000 +v 0.812500 0.187500 2.500000 +v -0.812500 1.187500 -2.500000 +v 0.812500 1.187500 -2.500000 +v 0.750000 0.062500 2.500000 +v 0.750000 1.062500 -2.500000 +v 0.750000 0.187500 2.500000 +v 0.750000 1.187500 -2.500000 +v -0.750000 1.062500 -2.500000 +v -0.750000 0.062500 2.500000 +v -0.750000 1.187500 -2.500000 +v -0.750000 0.187500 2.500000 +v 0.625000 0.162500 2.062500 +v 0.937500 0.162500 2.062500 +v 0.625000 0.162500 1.937500 +v 0.937500 0.162500 1.937500 +v 0.625000 0.225000 2.062500 +v 0.937500 0.225000 2.062500 +v 0.625000 0.225000 1.937500 +v 0.937500 0.225000 1.937500 +v -0.937500 0.162500 2.062500 +v -0.625000 0.162500 2.062500 +v -0.937500 0.162500 1.937500 +v -0.625000 0.162500 1.937500 +v -0.937500 0.225000 2.062500 +v -0.625000 0.225000 2.062500 +v -0.937500 0.225000 1.937500 +v -0.625000 0.225000 1.937500 +v 0.625000 0.362500 1.062500 +v 0.937500 0.362500 1.062500 +v 0.625000 0.362500 0.937500 +v 0.937500 0.362500 0.937500 +v 0.625000 0.425000 1.062500 +v 0.937500 0.425000 1.062500 +v 0.625000 0.425000 0.937500 +v 0.937500 0.425000 0.937500 +v -0.937500 0.362500 1.062500 +v -0.625000 0.362500 1.062500 +v -0.937500 0.362500 0.937500 +v -0.625000 0.362500 0.937500 +v -0.937500 0.425000 1.062500 +v -0.625000 0.425000 1.062500 +v -0.937500 0.425000 0.937500 +v -0.625000 0.425000 0.937500 +v 0.625000 0.562500 0.062500 +v 0.937500 0.562500 0.062500 +v 0.625000 0.562500 -0.062500 +v 0.937500 0.562500 -0.062500 +v 0.625000 0.625000 0.062500 +v 0.937500 0.625000 0.062500 +v 0.625000 0.625000 -0.062500 +v 0.937500 0.625000 -0.062500 +v -0.937500 0.562500 0.062500 +v -0.625000 0.562500 0.062500 +v -0.937500 0.562500 -0.062500 +v -0.625000 0.562500 -0.062500 +v -0.937500 0.625000 0.062500 +v -0.625000 0.625000 0.062500 +v -0.937500 0.625000 -0.062500 +v -0.625000 0.625000 -0.062500 +v 0.625000 0.762500 -0.937500 +v 0.937500 0.762500 -0.937500 +v 0.625000 0.762500 -1.062500 +v 0.937500 0.762500 -1.062500 +v 0.625000 0.825000 -0.937500 +v 0.937500 0.825000 -0.937500 +v 0.625000 0.825000 -1.062500 +v 0.937500 0.825000 -1.062500 +v -0.937500 0.762500 -0.937500 +v -0.625000 0.762500 -0.937500 +v -0.937500 0.762500 -1.062500 +v -0.625000 0.762500 -1.062500 +v -0.937500 0.825000 -0.937500 +v -0.625000 0.825000 -0.937500 +v -0.937500 0.825000 -1.062500 +v -0.625000 0.825000 -1.062500 +v 0.625000 0.962500 -1.937500 +v 0.937500 0.962500 -1.937500 +v 0.625000 0.962500 -2.062500 +v 0.937500 0.962500 -2.062500 +v 0.625000 1.025000 -1.937500 +v 0.937500 1.025000 -1.937500 +v 0.625000 1.025000 -2.062500 +v 0.937500 1.025000 -2.062500 +v -0.937500 0.962500 -1.937500 +v -0.625000 0.962500 -1.937500 +v -0.937500 0.962500 -2.062500 +v -0.625000 0.962500 -2.062500 +v -0.937500 1.025000 -1.937500 +v -0.625000 1.025000 -1.937500 +v -0.937500 1.025000 -2.062500 +v -0.625000 1.025000 -2.062500 +v -0.812500 0.862500 -1.500000 +v -0.812500 0.662500 -0.500000 +v -0.812500 0.462500 0.500000 +v -0.812500 0.262500 1.500000 +v 0.812500 0.262500 1.500000 +v 0.812500 0.462500 0.500000 +v 0.812500 0.662500 -0.500000 +v 0.812500 0.862500 -1.500000 +v -0.812500 0.987500 -1.500000 +v -0.812500 0.787500 -0.500000 +v -0.812500 0.587500 0.500000 +v -0.812500 0.387500 1.500000 +v 0.812500 0.387500 1.500000 +v 0.812500 0.587500 0.500000 +v 0.812500 0.787500 -0.500000 +v 0.812500 0.987500 -1.500000 +v 0.750000 0.262500 1.500000 +v 0.750000 0.462500 0.500000 +v 0.750000 0.662500 -0.500000 +v 0.750000 0.862500 -1.500000 +v 0.750000 0.387500 1.500000 +v 0.750000 0.587500 0.500000 +v 0.750000 0.787500 -0.500000 +v 0.750000 0.987500 -1.500000 +v -0.750000 0.862500 -1.500000 +v -0.750000 0.662500 -0.500000 +v -0.750000 0.462500 0.500000 +v -0.750000 0.262500 1.500000 +v -0.750000 0.987500 -1.500000 +v -0.750000 0.787500 -0.500000 +v -0.750000 0.587500 0.500000 +v -0.750000 0.387500 1.500000 +v 0.625000 0.900000 -1.875000 +v 0.875000 0.900000 -1.875000 +v 0.625000 0.900000 -2.125000 +v 0.875000 0.900000 -2.125000 +v 0.625000 -0.037500 -2.125000 +v 0.625000 -0.037500 -1.875000 +v 0.875000 -0.037500 -1.875000 +v 0.875000 -0.037500 -2.125000 +v -0.875000 0.900000 -1.875000 +v -0.625000 0.900000 -1.875000 +v -0.875000 0.900000 -2.125000 +v -0.625000 0.900000 -2.125000 +v -0.875000 -0.037500 -2.125000 +v -0.875000 -0.037500 -1.875000 +v -0.625000 -0.037500 -1.875000 +v -0.625000 -0.037500 -2.125000 +v 0.625000 0.700000 -0.875000 +v 0.875000 0.700000 -0.875000 +v 0.625000 0.700000 -1.125000 +v 0.875000 0.700000 -1.125000 +v 0.625000 -0.050000 -1.125000 +v 0.625000 -0.050000 -0.875000 +v 0.875000 -0.050000 -0.875000 +v 0.875000 -0.050000 -1.125000 +v -0.875000 0.700000 -0.875000 +v -0.625000 0.700000 -0.875000 +v -0.875000 0.700000 -1.125000 +v -0.625000 0.700000 -1.125000 +v -0.875000 -0.050000 -1.125000 +v -0.875000 -0.050000 -0.875000 +v -0.625000 -0.050000 -0.875000 +v -0.625000 -0.050000 -1.125000 +v 0.625000 0.500000 0.125000 +v 0.875000 0.500000 0.125000 +v 0.625000 0.500000 -0.125000 +v 0.875000 0.500000 -0.125000 +v 0.625000 0.000000 -0.125000 +v 0.625000 0.000000 0.125000 +v 0.875000 0.000000 0.125000 +v 0.875000 0.000000 -0.125000 +v -0.875000 0.500000 0.125000 +v -0.625000 0.500000 0.125000 +v -0.875000 0.500000 -0.125000 +v -0.625000 0.500000 -0.125000 +v -0.875000 0.000000 -0.125000 +v -0.875000 0.000000 0.125000 +v -0.625000 0.000000 0.125000 +v -0.625000 0.000000 -0.125000 +v 0.625000 0.300000 1.125000 +v 0.875000 0.300000 1.125000 +v 0.625000 0.300000 0.875000 +v 0.875000 0.300000 0.875000 +v 0.625000 -0.012500 0.875000 +v 0.625000 -0.012500 1.125000 +v 0.875000 -0.012500 1.125000 +v 0.875000 -0.012500 0.875000 +v -0.875000 0.300000 1.125000 +v -0.625000 0.300000 1.125000 +v -0.875000 0.300000 0.875000 +v -0.625000 0.300000 0.875000 +v -0.875000 -0.012500 0.875000 +v -0.875000 -0.012500 1.125000 +v -0.625000 -0.012500 1.125000 +v -0.625000 -0.012500 0.875000 +v 0.625000 0.100000 2.125000 +v 0.875000 0.100000 2.125000 +v 0.625000 0.100000 1.875000 +v 0.875000 0.100000 1.875000 +v 0.625000 -0.025000 1.875000 +v 0.625000 -0.025000 2.125000 +v 0.875000 -0.025000 2.125000 +v 0.875000 -0.025000 1.875000 +v -0.875000 0.100000 2.125000 +v -0.625000 0.100000 2.125000 +v -0.875000 0.100000 1.875000 +v -0.625000 0.100000 1.875000 +v -0.875000 -0.025000 1.875000 +v -0.875000 -0.025000 2.125000 +v -0.625000 -0.025000 2.125000 +v -0.625000 -0.025000 1.875000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt 0.218750 1.000000 +vt 0.406250 0.000000 +vt 0.406250 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt -0.000000 0.000000 +vt 0.187500 1.000000 +vt -0.000000 1.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.218750 1.000000 +vt 0.187500 -0.000000 +vt 0.218750 -0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.593750 -0.000000 +vt 0.406250 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.406250 0.031250 +vt 0.593750 -0.000000 +vt 0.593750 0.031250 +vt 0.187500 0.000000 +vt 0.218750 0.000000 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.656250 +vt 0.531250 0.156250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.406250 0.156250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.406250 0.156250 +vt 0.406250 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.531250 0.718750 +vt 0.500000 0.718750 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.437500 0.062500 +vt 0.406250 0.125000 +vt 0.406250 0.062500 +vt 0.437500 0.125000 +vt 0.593750 0.156250 +vt 0.437500 0.156250 +vt 0.593750 0.062500 +vt 0.437500 0.031250 +vt 0.593750 0.031250 +vt 0.593750 0.125000 +vt 0.625000 0.062500 +vt 0.625000 0.125000 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.156250 +vt 0.500000 0.656250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.437500 0.656250 +vt 0.406250 0.156250 +vt 0.437500 0.156250 +vt 0.500000 0.156250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.500000 0.156250 +vt 0.531250 0.656250 +vt 0.500000 0.656250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.531250 0.156250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.593750 0.156250 +vt 0.593750 0.656250 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.156250 0.468750 +vt 0.031250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.843750 +vt 0.156250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.468750 +vt 0.031250 0.718750 +vt 0.156250 0.718750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.156250 0.468750 +vt 0.031250 0.625000 +vt 0.156250 0.625000 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.031250 0.968750 +vt 0.156250 0.843750 +vt 0.031250 0.843750 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.156250 0.468750 +vt 0.031250 0.531250 +vt 0.156250 0.531250 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.406250 -0.000000 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.187500 1.000000 +vt 0.593750 0.031250 +vt 0.593750 0.031250 +vt 0.406250 -0.000000 +vt 0.593750 0.656250 +vt 0.500000 0.718750 +vt 0.406250 0.656250 +vt 0.531250 0.656250 +vt 0.500000 0.718750 +vt 0.531250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.406250 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.593750 0.656250 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.156250 0.968750 +vt 0.156250 0.968750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vt 0.031250 0.468750 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.9806 0.1961 +vn 0.0000 -0.9806 -0.1961 +s off +f 2/1/1 4/2/1 3/3/1 +f 7/4/2 6/5/2 5/6/2 +f 11/7/2 10/8/2 9/9/2 +f 15/10/2 14/11/2 13/12/2 +f 19/13/2 18/14/2 17/15/2 +f 23/16/2 22/17/2 21/18/2 +f 27/19/1 25/20/1 26/21/1 +f 31/22/1 29/23/1 30/24/1 +f 35/25/1 33/26/1 34/27/1 +f 39/28/1 37/29/1 38/30/1 +f 17/31/3 33/32/3 19/33/3 +f 10/34/4 26/35/4 9/36/4 +f 18/37/4 34/38/4 17/39/4 +f 12/40/5 27/41/5 10/8/5 +f 20/42/5 35/43/5 18/14/5 +f 11/7/6 28/44/6 12/45/6 +f 5/46/3 4/47/3 7/48/3 +f 19/13/6 36/49/6 20/50/6 +f 13/51/3 29/52/3 15/53/3 +f 6/54/4 3/55/4 5/56/4 +f 21/57/3 37/58/3 23/59/3 +f 14/60/4 30/61/4 13/62/4 +f 8/63/5 2/64/5 6/5/5 +f 22/65/4 38/66/4 21/67/4 +f 16/68/5 31/69/5 14/11/5 +f 7/4/6 1/70/6 8/71/6 +f 24/72/5 39/73/5 22/17/5 +f 15/10/6 32/74/6 16/75/6 +f 9/76/3 25/77/3 11/78/3 +f 23/16/6 40/79/6 24/80/6 +f 141/81/5 46/82/5 42/83/5 +f 145/84/3 43/85/3 137/86/3 +f 153/87/3 51/88/3 157/89/3 +f 46/90/4 49/91/4 42/92/4 +f 48/93/7 160/94/7 152/95/7 +f 42/83/8 153/96/8 141/81/8 +f 44/97/6 52/98/6 48/99/6 +f 53/100/5 165/101/5 161/102/5 +f 45/103/7 168/104/7 148/105/7 +f 43/106/8 161/102/8 137/107/8 +f 47/108/6 53/109/6 43/110/6 +f 41/111/4 56/112/4 45/113/4 +f 61/114/3 59/115/3 57/116/3 +f 63/117/6 60/118/6 59/119/6 +f 62/120/4 57/121/4 58/122/4 +f 64/123/5 58/124/5 60/125/5 +f 61/114/1 64/123/1 63/117/1 +f 69/126/3 67/127/3 65/128/3 +f 71/129/6 68/130/6 67/131/6 +f 70/132/4 65/133/4 66/134/4 +f 72/135/5 66/136/5 68/137/5 +f 69/126/1 72/135/1 71/129/1 +f 77/138/3 75/139/3 73/140/3 +f 79/141/6 76/142/6 75/143/6 +f 78/144/4 73/145/4 74/146/4 +f 80/147/5 74/148/5 76/149/5 +f 77/138/1 80/147/1 79/141/1 +f 85/150/3 83/151/3 81/152/3 +f 87/153/6 84/154/6 83/155/6 +f 86/156/4 81/157/4 82/158/4 +f 88/159/5 82/160/5 84/161/5 +f 85/150/1 88/159/1 87/153/1 +f 93/162/3 91/163/3 89/164/3 +f 95/165/6 92/166/6 91/167/6 +f 94/168/4 89/169/4 90/170/4 +f 96/171/5 90/172/5 92/173/5 +f 93/162/1 96/171/1 95/165/1 +f 101/174/3 99/175/3 97/176/3 +f 103/177/6 100/178/6 99/179/6 +f 102/180/4 97/181/4 98/182/4 +f 104/183/5 98/184/5 100/185/5 +f 101/174/1 104/183/1 103/177/1 +f 109/186/3 107/187/3 105/188/3 +f 111/189/6 108/190/6 107/191/6 +f 110/192/4 105/193/4 106/194/4 +f 112/195/5 106/196/5 108/197/5 +f 109/186/1 112/195/1 111/189/1 +f 117/198/3 115/199/3 113/200/3 +f 119/201/6 116/202/6 115/203/6 +f 118/204/4 113/205/4 114/206/4 +f 120/207/5 114/208/5 116/209/5 +f 117/198/1 120/207/1 119/201/1 +f 125/210/3 123/211/3 121/212/3 +f 127/213/6 124/214/6 123/215/6 +f 126/216/4 121/217/4 122/218/4 +f 128/219/5 122/220/5 124/221/5 +f 125/210/1 128/219/1 127/213/1 +f 133/222/3 131/223/3 129/224/3 +f 135/225/6 132/226/6 131/227/6 +f 134/228/4 129/229/4 130/230/4 +f 136/231/5 130/232/5 132/233/5 +f 133/222/1 136/231/1 135/225/1 +f 140/234/8 54/235/8 41/236/8 +f 139/237/8 164/238/8 140/239/8 +f 138/240/8 163/241/8 139/242/8 +f 137/243/8 162/244/8 138/245/8 +f 145/84/7 55/246/7 47/247/7 +f 146/248/7 165/249/7 145/250/7 +f 147/251/7 166/252/7 146/253/7 +f 148/254/7 167/255/7 147/256/7 +f 164/257/5 56/258/5 54/235/5 +f 163/259/5 168/260/5 164/238/5 +f 162/261/5 167/262/5 163/241/5 +f 161/263/5 166/264/5 162/244/5 +f 144/265/8 50/266/8 44/267/8 +f 143/268/8 156/269/8 144/270/8 +f 142/271/8 155/272/8 143/273/8 +f 141/274/8 154/275/8 142/276/8 +f 149/277/7 51/88/7 46/82/7 +f 150/278/7 157/279/7 149/280/7 +f 151/281/7 158/282/7 150/283/7 +f 152/284/7 159/285/7 151/286/7 +f 50/287/3 160/94/3 52/288/3 +f 156/289/3 159/285/3 160/290/3 +f 155/291/3 158/282/3 159/292/3 +f 154/293/3 157/279/3 158/294/3 +f 45/103/3 140/295/3 41/296/3 +f 148/254/3 139/297/3 140/298/3 +f 147/251/3 138/299/3 139/300/3 +f 146/248/3 137/301/3 138/302/3 +f 44/267/5 152/95/5 144/265/5 +f 144/270/5 151/286/5 143/268/5 +f 143/273/5 150/283/5 142/271/5 +f 142/276/5 149/280/5 141/274/5 +f 181/303/2 183/304/2 182/305/2 +f 173/306/2 175/307/2 174/308/2 +f 176/309/6 171/310/6 172/311/6 +f 174/312/4 170/313/4 169/314/4 +f 175/315/5 172/316/5 170/317/5 +f 173/318/3 169/319/3 171/320/3 +f 184/321/6 179/322/6 180/323/6 +f 182/324/4 178/325/4 177/326/4 +f 183/327/5 180/328/5 178/329/5 +f 181/330/3 177/331/3 179/332/3 +f 197/333/2 199/334/2 198/335/2 +f 189/336/2 191/337/2 190/338/2 +f 192/339/6 187/340/6 188/341/6 +f 190/342/4 186/343/4 185/344/4 +f 191/345/5 188/346/5 186/347/5 +f 189/348/3 185/349/3 187/350/3 +f 200/351/6 195/352/6 196/353/6 +f 198/354/4 194/355/4 193/356/4 +f 199/357/5 196/358/5 194/359/5 +f 197/360/3 193/361/3 195/362/3 +f 213/363/2 215/364/2 214/365/2 +f 205/366/2 207/367/2 206/368/2 +f 208/369/6 203/370/6 204/371/6 +f 206/372/4 202/373/4 201/374/4 +f 207/375/5 204/376/5 202/377/5 +f 205/378/3 201/379/3 203/380/3 +f 216/381/6 211/382/6 212/383/6 +f 214/384/4 210/385/4 209/386/4 +f 215/387/5 212/388/5 210/389/5 +f 213/390/3 209/391/3 211/392/3 +f 229/393/2 231/394/2 230/395/2 +f 221/396/2 223/397/2 222/398/2 +f 224/399/6 219/400/6 220/401/6 +f 222/402/4 218/403/4 217/404/4 +f 223/405/5 220/406/5 218/407/5 +f 221/408/3 217/409/3 219/410/3 +f 232/411/6 227/412/6 228/413/6 +f 230/414/4 226/415/4 225/416/4 +f 231/417/5 228/418/5 226/419/5 +f 229/420/3 225/421/3 227/422/3 +f 245/423/2 247/424/2 246/425/2 +f 237/426/2 239/427/2 238/428/2 +f 240/429/6 235/430/6 236/431/6 +f 238/432/4 234/433/4 233/434/4 +f 239/435/5 236/436/5 234/437/5 +f 237/438/3 233/439/3 235/440/3 +f 248/441/6 243/442/6 244/443/6 +f 246/444/4 242/445/4 241/446/4 +f 247/447/5 244/448/5 242/449/5 +f 245/450/3 241/451/3 243/452/3 +f 2/1/1 1/70/1 4/2/1 +f 7/4/2 8/71/2 6/5/2 +f 11/7/2 12/45/2 10/8/2 +f 15/10/2 16/75/2 14/11/2 +f 19/13/2 20/50/2 18/14/2 +f 23/16/2 24/80/2 22/17/2 +f 27/19/1 28/44/1 25/20/1 +f 31/22/1 32/74/1 29/23/1 +f 35/25/1 36/49/1 33/26/1 +f 39/28/1 40/79/1 37/29/1 +f 17/31/3 34/453/3 33/32/3 +f 10/34/4 27/454/4 26/35/4 +f 18/37/4 35/455/4 34/38/4 +f 12/40/5 28/456/5 27/41/5 +f 20/42/5 36/457/5 35/43/5 +f 11/7/6 25/20/6 28/44/6 +f 5/46/3 3/458/3 4/47/3 +f 19/13/6 33/26/6 36/49/6 +f 13/51/3 30/459/3 29/52/3 +f 6/54/4 2/460/4 3/55/4 +f 21/57/3 38/461/3 37/58/3 +f 14/60/4 31/462/4 30/61/4 +f 8/63/5 1/463/5 2/64/5 +f 22/65/4 39/464/4 38/66/4 +f 16/68/5 32/465/5 31/69/5 +f 7/4/6 4/2/6 1/70/6 +f 24/72/5 40/466/5 39/73/5 +f 15/10/6 29/23/6 32/74/6 +f 9/76/3 26/467/3 25/77/3 +f 23/16/6 37/29/6 40/79/6 +f 141/81/5 149/277/5 46/82/5 +f 145/84/3 47/247/3 43/85/3 +f 153/87/3 49/468/3 51/88/3 +f 46/90/4 51/469/4 49/91/4 +f 48/93/7 52/288/7 160/94/7 +f 42/83/8 49/470/8 153/96/8 +f 44/97/6 50/471/6 52/98/6 +f 53/100/5 55/246/5 165/101/5 +f 45/103/7 56/258/7 168/104/7 +f 43/106/8 53/100/8 161/102/8 +f 47/108/6 55/472/6 53/109/6 +f 41/111/4 54/473/4 56/112/4 +f 61/114/3 63/117/3 59/115/3 +f 63/117/6 64/123/6 60/118/6 +f 62/120/4 61/114/4 57/121/4 +f 64/123/5 62/120/5 58/124/5 +f 61/114/1 62/120/1 64/123/1 +f 69/126/3 71/129/3 67/127/3 +f 71/129/6 72/135/6 68/130/6 +f 70/132/4 69/126/4 65/133/4 +f 72/135/5 70/132/5 66/136/5 +f 69/126/1 70/132/1 72/135/1 +f 77/138/3 79/141/3 75/139/3 +f 79/141/6 80/147/6 76/142/6 +f 78/144/4 77/138/4 73/145/4 +f 80/147/5 78/144/5 74/148/5 +f 77/138/1 78/144/1 80/147/1 +f 85/150/3 87/153/3 83/151/3 +f 87/153/6 88/159/6 84/154/6 +f 86/156/4 85/150/4 81/157/4 +f 88/159/5 86/156/5 82/160/5 +f 85/150/1 86/156/1 88/159/1 +f 93/162/3 95/165/3 91/163/3 +f 95/165/6 96/171/6 92/166/6 +f 94/168/4 93/162/4 89/169/4 +f 96/171/5 94/168/5 90/172/5 +f 93/162/1 94/168/1 96/171/1 +f 101/174/3 103/177/3 99/175/3 +f 103/177/6 104/183/6 100/178/6 +f 102/180/4 101/174/4 97/181/4 +f 104/183/5 102/180/5 98/184/5 +f 101/174/1 102/180/1 104/183/1 +f 109/186/3 111/189/3 107/187/3 +f 111/189/6 112/195/6 108/190/6 +f 110/192/4 109/186/4 105/193/4 +f 112/195/5 110/192/5 106/196/5 +f 109/186/1 110/192/1 112/195/1 +f 117/198/3 119/201/3 115/199/3 +f 119/201/6 120/207/6 116/202/6 +f 118/204/4 117/198/4 113/205/4 +f 120/207/5 118/204/5 114/208/5 +f 117/198/1 118/204/1 120/207/1 +f 125/210/3 127/213/3 123/211/3 +f 127/213/6 128/219/6 124/214/6 +f 126/216/4 125/210/4 121/217/4 +f 128/219/5 126/216/5 122/220/5 +f 125/210/1 126/216/1 128/219/1 +f 133/222/3 135/225/3 131/223/3 +f 135/225/6 136/231/6 132/226/6 +f 134/228/4 133/222/4 129/229/4 +f 136/231/5 134/228/5 130/232/5 +f 133/222/1 134/228/1 136/231/1 +f 140/234/8 164/257/8 54/235/8 +f 139/237/8 163/259/8 164/238/8 +f 138/240/8 162/261/8 163/241/8 +f 137/243/8 161/263/8 162/244/8 +f 145/84/7 165/101/7 55/246/7 +f 146/248/7 166/264/7 165/249/7 +f 147/251/7 167/262/7 166/252/7 +f 148/254/7 168/260/7 167/255/7 +f 164/257/5 168/104/5 56/258/5 +f 163/259/5 167/255/5 168/260/5 +f 162/261/5 166/252/5 167/262/5 +f 161/263/5 165/249/5 166/264/5 +f 144/265/8 156/474/8 50/266/8 +f 143/268/8 155/475/8 156/269/8 +f 142/271/8 154/476/8 155/272/8 +f 141/274/8 153/477/8 154/275/8 +f 149/277/7 157/89/7 51/88/7 +f 150/278/7 158/294/7 157/279/7 +f 151/281/7 159/292/7 158/282/7 +f 152/284/7 160/290/7 159/285/7 +f 50/287/3 156/478/3 160/94/3 +f 156/289/3 155/479/3 159/285/3 +f 155/291/3 154/480/3 158/282/3 +f 154/293/3 153/481/3 157/279/3 +f 45/103/3 148/105/3 140/295/3 +f 148/254/3 147/256/3 139/297/3 +f 147/251/3 146/253/3 138/299/3 +f 146/248/3 145/250/3 137/301/3 +f 44/267/5 48/93/5 152/95/5 +f 144/270/5 152/284/5 151/286/5 +f 143/273/5 151/281/5 150/283/5 +f 142/276/5 150/278/5 149/280/5 +f 181/303/2 184/482/2 183/304/2 +f 173/306/2 176/483/2 175/307/2 +f 176/309/6 173/484/6 171/310/6 +f 174/312/4 175/485/4 170/313/4 +f 175/315/5 176/486/5 172/316/5 +f 173/318/3 174/487/3 169/319/3 +f 184/321/6 181/488/6 179/322/6 +f 182/324/4 183/489/4 178/325/4 +f 183/327/5 184/490/5 180/328/5 +f 181/330/3 182/491/3 177/331/3 +f 197/333/2 200/492/2 199/334/2 +f 189/336/2 192/493/2 191/337/2 +f 192/339/6 189/494/6 187/340/6 +f 190/342/4 191/495/4 186/343/4 +f 191/345/5 192/496/5 188/346/5 +f 189/348/3 190/497/3 185/349/3 +f 200/351/6 197/498/6 195/352/6 +f 198/354/4 199/499/4 194/355/4 +f 199/357/5 200/500/5 196/358/5 +f 197/360/3 198/501/3 193/361/3 +f 213/363/2 216/502/2 215/364/2 +f 205/366/2 208/503/2 207/367/2 +f 208/369/6 205/504/6 203/370/6 +f 206/372/4 207/505/4 202/373/4 +f 207/375/5 208/506/5 204/376/5 +f 205/378/3 206/507/3 201/379/3 +f 216/381/6 213/508/6 211/382/6 +f 214/384/4 215/509/4 210/385/4 +f 215/387/5 216/510/5 212/388/5 +f 213/390/3 214/511/3 209/391/3 +f 229/393/2 232/512/2 231/394/2 +f 221/396/2 224/513/2 223/397/2 +f 224/399/6 221/514/6 219/400/6 +f 222/402/4 223/515/4 218/403/4 +f 223/405/5 224/516/5 220/406/5 +f 221/408/3 222/517/3 217/409/3 +f 232/411/6 229/518/6 227/412/6 +f 230/414/4 231/519/4 226/415/4 +f 231/417/5 232/520/5 228/418/5 +f 229/420/3 230/521/3 225/421/3 +f 245/423/2 248/522/2 247/424/2 +f 237/426/2 240/523/2 239/427/2 +f 240/429/6 237/524/6 235/430/6 +f 238/432/4 239/525/4 234/433/4 +f 239/435/5 240/526/5 236/436/5 +f 237/438/3 238/527/3 233/439/3 +f 248/441/6 245/528/6 243/442/6 +f 246/444/4 247/529/4 242/445/4 +f 247/447/5 248/530/5 244/448/5 +f 245/450/3 246/531/3 241/451/3 diff --git a/src/main/resources/assets/hbm/models/blocks/splitter.obj b/src/main/resources/assets/hbm/models/blocks/splitter.obj index 611da2f75..4078add15 100644 --- a/src/main/resources/assets/hbm/models/blocks/splitter.obj +++ b/src/main/resources/assets/hbm/models/blocks/splitter.obj @@ -31,10 +31,10 @@ v -0.500000 0.250000 0.375000 v -0.500000 0.875000 0.375000 v 0.000000 0.250000 0.375000 v 0.000000 0.875000 0.375000 -vt 1.000000 0.875000 -vt 0.500000 0.250000 -vt 1.000000 0.250000 -vt 0.500000 0.875000 +vt 0.187500 1.000000 +vt 0.812500 0.500000 +vt 0.812500 1.000000 +vt 0.187500 0.500000 vn 0.0000 0.0000 -1.0000 s off f 10/9/3 11/10/3 9/11/3 @@ -57,10 +57,10 @@ v -0.500000 0.250000 -0.375000 v -0.500000 0.875000 -0.375000 v 0.000000 0.250000 -0.375000 v 0.000000 0.875000 -0.375000 -vt 0.000000 0.250000 -vt 0.500000 0.875000 -vt 0.000000 0.875000 -vt 0.500000 0.250000 +vt 0.187500 1.000000 +vt 0.812500 0.500000 +vt 0.812500 1.000000 +vt 0.187500 0.500000 vn 0.0000 0.0000 1.0000 s off f 17/17/5 20/18/5 18/19/5 @@ -135,10 +135,10 @@ v -0.500000 0.000000 0.500000 v 0.500000 0.000000 0.500000 v -0.500000 0.000000 -0.500000 v 0.500000 0.000000 -0.500000 -vt 1.000000 0.000000 vt 0.000000 1.000000 -vt 0.000000 0.000000 +vt 1.000000 0.000000 vt 1.000000 1.000000 +vt 0.000000 0.000000 vn 0.0000 -1.0000 0.0000 s off f 43/41/11 42/42/11 41/43/11 diff --git a/src/main/resources/assets/hbm/models/chemplant_new_body.obj b/src/main/resources/assets/hbm/models/chemplant_new_body.obj index c2342adcd..e958c24e3 100644 --- a/src/main/resources/assets/hbm/models/chemplant_new_body.obj +++ b/src/main/resources/assets/hbm/models/chemplant_new_body.obj @@ -1,4 +1,4 @@ -# Blender v2.76 (sub 0) OBJ File: 'chemplant_new_body.blend' +# Blender v2.79 (sub 0) OBJ File: 'chemplant_new_body.blend' # www.blender.org o Cube_Cube.001 v -1.500000 0.000000 1.500000 @@ -282,715 +282,918 @@ v -0.500000 2.750000 -0.625000 v -0.516747 2.750000 -0.687500 v -0.562500 2.750000 -0.733253 vt 0.000000 0.317073 -vt 0.000000 0.292683 vt 0.292683 0.292683 -vt -0.000000 0.000000 +vt 0.292683 0.317073 +vt 0.000000 0.317073 +vt 0.292683 0.292683 +vt 0.292683 0.317073 +vt -0.000000 0.317073 +vt 0.292683 0.292683 +vt 0.292683 0.317073 +vt 0.000000 0.317073 +vt 0.292683 0.292683 +vt 0.292683 0.317073 +vt 0.000000 0.292683 vt 0.292683 -0.000000 vt 0.024390 0.353659 -vt 0.292683 0.317073 vt 0.268293 0.353659 +vt 0.268293 0.353659 +vt 0.024390 0.353659 +vt 0.268293 0.353659 +vt 0.024390 0.353659 +vt 0.024390 0.353659 vt 0.292683 0.207317 -vt 0.390244 0.207317 vt 0.390244 0.256098 +vt 0.292683 0.256098 vt 0.390244 0.109756 -vt 0.378049 0.121951 vt 0.304878 0.121951 +vt 0.292683 0.109756 vt 0.365854 0.310976 +vt 0.292683 0.256098 +vt 0.390244 0.256098 +vt 0.390244 0.207317 +vt 0.292683 0.256098 +vt 0.292683 0.207317 +vt 0.390244 0.256098 vt 0.317073 0.310976 vt 0.292683 0.256098 -vt 0.323171 0.140244 +vt 0.390244 0.207317 +vt 0.292683 0.207317 +vt 0.292683 0.207317 +vt 0.390244 0.207317 +vt 0.365854 0.310976 +vt 0.317073 0.310976 vt 0.323171 0.176829 vt 0.304878 0.195122 vt 0.378049 0.195122 -vt 0.292683 0.109756 +vt 0.378049 0.121951 vt 0.359756 0.140244 vt 0.359756 0.176829 +vt 0.323171 0.140244 +vt 0.292683 0.256098 +vt 0.390244 0.207317 +vt 0.390244 0.256098 +vt 0.304878 0.195122 +vt 0.390244 0.207317 +vt 0.292683 0.207317 +vt 0.390244 0.256098 +vt 0.317073 0.310976 +vt 0.292683 0.256098 +vt 0.390244 0.256098 +vt 0.292683 0.256098 +vt 0.365854 0.310976 +vt 0.292683 0.256098 +vt 0.390244 0.256098 +vt 0.292683 0.207317 +vt 0.390244 0.207317 +vt 0.390244 0.207317 +vt 0.292683 0.207317 +vt 0.317073 0.310976 +vt 0.365854 0.310976 +vt 0.323171 0.140244 +vt 0.304878 0.121951 +vt 0.378049 0.121951 +vt 0.292683 0.109756 +vt 0.390244 0.109756 +vt 0.378049 0.195122 +vt 0.359756 0.176829 +vt 0.359756 0.140244 +vt 0.323171 0.176829 vt 0.902439 0.262195 -vt 0.902439 0.335366 vt 0.871951 0.335366 -vt 0.841463 0.262195 -vt 0.841463 0.335366 -vt 0.810976 0.335366 vt 0.871951 0.262195 +vt 0.841463 0.262195 +vt 0.810976 0.335366 vt 0.810976 0.262195 +vt 0.841463 0.335366 vt 0.780488 0.335366 -vt 0.780488 0.365854 vt 0.780488 0.262195 +vt 0.780488 0.365854 vt 0.810976 0.365854 +vt 0.902439 0.262195 +vt 0.871951 0.335366 +vt 0.871951 0.262195 +vt 0.841463 0.262195 +vt 0.810976 0.335366 +vt 0.810976 0.262195 +vt 0.841463 0.335366 +vt 0.780488 0.335366 +vt 0.780488 0.262195 +vt 0.780488 0.365854 +vt 0.810976 0.365854 +vt 0.841463 0.335366 +vt 0.810976 0.262195 +vt 0.841463 0.262195 +vt 0.902439 0.335366 +vt 0.871951 0.262195 +vt 0.902439 0.262195 +vt 0.871951 0.335366 +vt 0.810976 0.335366 +vt 0.780488 0.262195 +vt 0.780488 0.335366 +vt 0.810976 0.365854 +vt 0.780488 0.365854 +vt 0.841463 0.335366 +vt 0.810976 0.262195 +vt 0.841463 0.262195 +vt 0.902439 0.335366 +vt 0.871951 0.262195 +vt 0.902439 0.262195 +vt 0.871951 0.335366 +vt 0.810976 0.335366 +vt 0.780488 0.262195 +vt 0.780488 0.335366 +vt 0.810976 0.365854 +vt 0.780488 0.365854 +vt 0.365854 0.359756 +vt 0.365854 0.310976 +vt 0.341463 0.335366 vt 0.365854 0.359756 vt 0.341463 0.335366 +vt 0.365854 0.310976 vt 0.341463 0.359756 vt 0.341463 0.310976 vt 0.317073 0.335366 +vt 0.341463 0.359756 +vt 0.317073 0.335366 +vt 0.341463 0.310976 vt 0.268293 0.378049 vt 0.024390 0.378049 +vt 0.024390 0.378049 +vt 0.268293 0.378049 +vt 0.268293 0.378049 +vt 0.024390 0.378049 +vt 0.268293 0.378049 vt 0.024390 0.621951 +vt 0.268293 0.621951 vt 0.292683 0.012195 -vt 0.390244 0.012195 +vt 0.390244 0.109756 +vt 0.292683 0.109756 vt 0.390244 -0.000000 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 -0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.292683 0.012195 +vt 0.390244 0.109756 +vt 0.292683 0.109756 +vt 0.390244 -0.000000 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 -0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 vt 0.487805 0.146341 -vt 0.585366 0.146341 vt 0.560976 0.182927 +vt 0.512195 0.182927 vt 0.487805 -0.000000 vt 0.390244 0.146341 +vt 0.390244 -0.000000 vt 0.585366 0.000000 vt 0.780488 -0.000000 -vt 0.780488 0.146341 vt 0.682927 0.146341 +vt 0.682927 0.000000 vt 0.707317 0.182927 -vt 0.756098 0.182927 vt 0.756098 0.231707 -vt 0.463415 0.182927 +vt 0.707317 0.231707 +vt 0.780488 0.146341 +vt 0.707317 0.182927 vt 0.414634 0.182927 +vt 0.585366 0.146341 vt 0.658537 0.182927 vt 0.609756 0.182927 -vt 0.682927 0.000000 +vt 0.292683 0.012195 +vt 0.390244 0.109756 +vt 0.292683 0.109756 +vt 0.390244 -0.000000 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 +vt 0.390244 -0.000000 +vt 0.292683 0.012195 +vt 0.292683 -0.000000 vt 0.847561 0.207317 -vt 0.786585 0.243902 +vt 0.786585 0.207317 vt 0.817073 0.262195 -vt 0.853659 0.164634 -vt 0.853659 0.189024 -vt 0.835366 0.189024 -vt 0.871951 0.164634 -vt 0.871951 0.189024 -vt 0.835366 0.164634 -vt 0.817073 0.189024 -vt 0.817073 0.164634 -vt 0.798781 0.189024 -vt 0.798781 0.164634 -vt 0.780488 0.189024 -vt 1.000000 0.164634 -vt 1.000000 0.189024 -vt 0.981707 0.189024 -vt 0.981707 0.164634 -vt 0.963415 0.189024 -vt 0.963415 0.164634 -vt 0.945122 0.189024 -vt 0.890244 0.164634 -vt 0.890244 0.189024 -vt 0.908537 0.164634 -vt 0.908537 0.189024 -vt 0.926829 0.164634 -vt 0.926829 0.189024 -vt 0.945122 0.164634 -vt 0.817073 0.146341 -vt 0.835366 0.146341 -vt 0.798781 0.146341 -vt 0.981707 0.146341 -vt 1.000000 0.146341 -vt 0.963415 0.146341 -vt 0.945122 0.146341 -vt 0.926829 0.146341 -vt 0.853659 0.146341 -vt 0.871951 0.146341 -vt 0.890244 0.146341 -vt 0.908537 0.146341 -vt 0.945122 -0.000000 -vt 0.908537 0.000000 -vt 0.926829 -0.000000 -vt 0.963415 0.000000 -vt 0.981707 0.000000 -vt 1.000000 0.000000 -vt 0.890244 -0.000000 -vt 0.798781 -0.000000 -vt 0.817073 0.000000 -vt 0.835366 -0.000000 -vt 0.853659 -0.000000 -vt 0.871951 -0.000000 -vt 0.908537 0.237805 -vt 0.908537 0.213415 -vt 0.914634 0.213415 vt 0.902439 0.237805 -vt 0.890244 0.237805 vt 0.890244 0.231707 -vt 0.865854 0.189024 -vt 0.865854 0.213415 -vt 0.853659 0.213415 -vt 0.975610 0.189024 -vt 0.975610 0.213415 -vt 0.963415 0.213415 -vt 0.914634 0.189024 -vt 0.902439 0.213415 -vt 0.939024 0.189024 -vt 0.939024 0.213415 -vt 0.926829 0.213415 -vt 0.878049 0.189024 -vt 0.878049 0.213415 -vt 0.987805 0.189024 -vt 0.987805 0.213415 -vt 0.951219 0.189024 -vt 0.951219 0.213415 -vt 0.890244 0.213415 -vt 1.000000 0.213415 -vt 0.902439 0.189024 +vt 0.896341 0.225610 vt 0.890244 0.256098 -vt 0.884146 0.250000 vt 0.890244 0.243902 -vt 0.878049 0.225610 +vt 0.896341 0.250000 +vt 0.878049 0.213415 vt 0.871951 0.225610 +vt 0.865854 0.219512 vt 0.853659 0.237805 -vt 0.865854 0.237805 vt 0.865854 0.243902 +vt 0.859756 0.250000 vt 0.878049 0.262195 +vt 0.884146 0.250000 +vt 0.884146 0.225610 +vt 0.878049 0.225610 +vt 0.859756 0.225610 +vt 0.865854 0.237805 +vt 0.865854 0.256098 vt 0.878049 0.250000 vt 0.890244 0.219512 -vt 0.884146 0.225610 -vt 0.859756 0.225610 +vt 0.890244 0.237805 vt 0.865854 0.231707 -vt 0.865854 0.256098 vt 0.871951 0.250000 -vt 0.896341 0.225610 -vt 0.896341 0.250000 -vt 0.865854 0.219512 -vt 0.859756 0.250000 -vt 0.939024 0.237805 -vt 0.945122 0.213415 -vt 0.926829 0.237805 -vt 0.932927 0.213415 -vt 0.957317 0.237805 -vt 0.957317 0.213415 -vt 0.920732 0.237805 -vt 0.920732 0.213415 -vt 0.951219 0.237805 -vt 0.969512 0.237805 -vt 0.969512 0.213415 -vt 0.914634 0.237805 -vt 0.945122 0.237805 -vt 0.932927 0.237805 -vt 0.963415 0.237805 -vt 0.341463 0.524390 vt 0.298781 0.548781 +vt 0.298781 0.597561 vt 0.341463 0.621951 -vt 0.463415 0.402439 -vt 0.487805 0.402439 -vt 0.487805 0.621951 -vt 0.512195 0.402439 -vt 0.512195 0.621951 -vt 0.536585 0.402439 -vt 0.536585 0.621951 -vt 0.560976 0.402439 -vt 0.585366 0.402439 -vt 0.585366 0.621951 -vt 0.609756 0.402439 -vt 0.609756 0.621951 -vt 0.634146 0.402439 -vt 0.634146 0.621951 -vt 0.414634 0.402439 -vt 0.439024 0.402439 -vt 0.439024 0.621951 -vt 0.390244 0.402439 -vt 0.414634 0.621951 -vt 0.658537 0.402439 -vt 0.682927 0.402439 -vt 0.682927 0.621951 -vt 0.658537 0.621951 -vt 0.560976 0.621951 -vt 0.463415 0.621951 -vt 0.341463 0.426829 vt 0.298781 0.451219 -vt 0.439024 0.182927 -vt 0.487805 0.182927 -vt 0.512195 0.182927 -vt 0.536585 0.182927 -vt 0.585366 0.182927 -vt 0.634146 0.182927 -vt 0.682927 0.182927 -vt 0.390244 0.182927 -vt 0.268293 0.621951 -vt 0.707317 0.231707 +vt 0.298781 0.500000 +vt 0.341463 0.524390 +vt 0.000000 0.292683 +vt -0.000000 0.292683 +vt 0.000000 0.292683 +vt -0.000000 0.000000 +vt 0.268293 0.353659 +vt 0.390244 0.207317 +vt 0.317073 0.310976 +vt 0.390244 0.256098 +vt 0.365854 0.310976 +vt 0.292683 0.207317 +vt 0.365854 0.310976 +vt 0.317073 0.310976 +vt 0.902439 0.335366 +vt 0.902439 0.335366 +vt 0.024390 0.378049 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.756098 0.182927 +vt 0.756098 0.182927 +vt 0.463415 0.182927 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 +vt 0.390244 0.012195 vt 0.835366 0.256098 vt 0.847561 0.243902 vt 0.853659 0.225610 vt 0.835366 0.195122 +vt 0.817073 0.189024 vt 0.798781 0.195122 -vt 0.786585 0.207317 vt 0.780488 0.225610 +vt 0.786585 0.243902 vt 0.798781 0.256098 -vt 0.780488 0.164634 -vt 0.975610 0.237805 vt 0.365854 0.615854 vt 0.384146 0.597561 vt 0.390244 0.573171 vt 0.384146 0.548781 vt 0.365854 0.530488 +vt 0.341463 0.524390 vt 0.317073 0.530488 vt 0.292683 0.573171 -vt 0.298781 0.597561 vt 0.317073 0.615854 -vt 0.390244 0.621951 vt 0.365854 0.518293 vt 0.384146 0.500000 vt 0.390244 0.475610 vt 0.384146 0.451219 vt 0.365854 0.432927 +vt 0.341463 0.426829 vt 0.317073 0.432927 vt 0.292683 0.475610 -vt 0.298781 0.500000 vt 0.317073 0.518293 -vn -1.000000 0.000000 0.000000 -vn 0.000000 0.000000 -1.000000 -vn 1.000000 0.000000 0.000000 -vn 0.000000 0.000000 1.000000 -vn 0.000000 -1.000000 0.000000 -vn 0.707100 0.707100 0.000000 -vn -0.707100 0.707100 0.000000 -vn 0.000000 0.707100 -0.707100 -vn 0.000000 0.707100 0.707100 -vn -0.447200 0.000000 0.894400 -vn -0.447200 0.894400 0.000000 -vn 0.000000 1.000000 0.000000 -vn -0.447200 0.000000 -0.894400 -vn 0.351100 0.000000 -0.936300 -vn 0.351100 0.000000 0.936300 -vn 0.351100 0.936300 0.000000 -vn 0.351100 -0.936300 0.000000 -vn 0.447200 0.000000 0.894400 -vn 0.447200 0.894400 0.000000 -vn 0.447200 0.000000 -0.894400 -vn -0.351100 0.000000 -0.936300 -vn -0.351100 0.000000 0.936300 -vn -0.351100 0.936300 0.000000 -vn -0.351100 -0.936300 0.000000 -vn 0.965900 0.000000 -0.258800 -vn 0.707100 0.000000 -0.707100 -vn 0.965900 0.000000 0.258800 -vn 0.707100 0.000000 0.707100 -vn 0.258800 0.000000 0.965900 -vn -0.258800 0.000000 0.965900 -vn -0.707100 0.000000 0.707100 -vn -0.965900 0.000000 0.258800 -vn 0.258800 0.000000 -0.965900 -vn -0.258800 0.000000 -0.965900 -vn -0.707100 0.000000 -0.707100 -vn -0.965900 0.000000 -0.258800 -vn 0.694700 -0.694700 0.186200 -vn 0.508600 -0.694700 0.508600 -vn 0.186200 -0.694700 0.694700 -vn -0.186200 -0.694700 0.694700 -vn -0.508600 -0.694700 0.508600 -vn -0.694700 -0.694700 0.186200 -vn -0.694700 -0.694700 -0.186200 -vn 0.694700 -0.694700 -0.186200 -vn 0.508600 -0.694700 -0.508600 -vn 0.186200 -0.694700 -0.694700 -vn -0.186200 -0.694700 -0.694700 -vn -0.508600 -0.694700 -0.508600 -vn -0.962800 0.080200 -0.258000 -vn -0.704800 0.080200 -0.704800 -vn -0.962800 0.080200 0.258000 -vn -0.704800 0.080200 0.704800 -vn -0.258000 0.080200 0.962800 -vn -0.258000 0.080200 -0.962800 -vn 0.258000 0.080200 -0.962800 -vn 0.258000 0.080200 0.962800 -vn 0.704800 0.080200 0.704800 -vn 0.962800 0.080200 0.258000 -vn 0.962800 0.080200 -0.258000 -vn 0.704800 0.080200 -0.704800 +vt 0.853659 0.164634 +vt 0.835366 0.189024 +vt 0.835366 0.164634 +vt 0.871951 0.164634 +vt 0.853659 0.189024 +vt 0.817073 0.189024 +vt 0.817073 0.164634 +vt 0.798781 0.189024 +vt 0.798781 0.164634 +vt 0.780488 0.189024 +vt 0.780488 0.164634 +vt 1.000000 0.164634 +vt 0.981707 0.189024 +vt 0.981707 0.164634 +vt 0.963415 0.189024 +vt 0.963415 0.164634 +vt 0.945122 0.189024 +vt 0.945122 0.164634 +vt 0.890244 0.164634 +vt 0.871951 0.189024 +vt 0.908537 0.164634 +vt 0.890244 0.189024 +vt 0.926829 0.164634 +vt 0.908537 0.189024 +vt 0.926829 0.189024 +vt 0.817073 0.146341 +vt 0.780488 0.146341 +vt 0.981707 0.146341 +vt 0.945122 0.146341 +vt 0.926829 0.146341 +vt 0.835366 0.146341 +vt 0.853659 0.146341 +vt 0.871951 0.146341 +vt 0.890244 0.146341 +vt 0.908537 0.146341 +vt 0.945122 -0.000000 +vt 0.926829 -0.000000 +vt 0.908537 0.000000 +vt 0.963415 0.000000 +vt 0.981707 0.000000 +vt 0.963415 0.146341 +vt 1.000000 0.000000 +vt 0.890244 -0.000000 +vt 0.871951 -0.000000 +vt 0.798781 -0.000000 +vt 0.780488 -0.000000 +vt 0.817073 0.000000 +vt 0.798781 0.146341 +vt 0.853659 -0.000000 +vt 0.835366 -0.000000 +vt 0.908537 0.237805 +vt 0.914634 0.213415 +vt 0.914634 0.237805 +vt 0.865854 0.189024 +vt 0.853659 0.213415 +vt 0.853659 0.189024 +vt 0.975610 0.189024 +vt 0.963415 0.213415 +vt 0.963415 0.189024 +vt 0.902439 0.189024 +vt 0.914634 0.213415 +vt 0.902439 0.213415 +vt 0.926829 0.189024 +vt 0.939024 0.213415 +vt 0.926829 0.213415 +vt 0.878049 0.189024 +vt 0.865854 0.213415 +vt 0.987805 0.189024 +vt 0.975610 0.213415 +vt 0.914634 0.189024 +vt 0.939024 0.189024 +vt 0.951219 0.213415 +vt 0.890244 0.189024 +vt 0.878049 0.213415 +vt 1.000000 0.189024 +vt 0.987805 0.213415 +vt 0.951219 0.189024 +vt 0.890244 0.213415 +vt 0.939024 0.237805 +vt 0.945122 0.213415 +vt 0.945122 0.237805 +vt 0.926829 0.237805 +vt 0.932927 0.213415 +vt 0.932927 0.237805 +vt 0.957317 0.237805 +vt 0.963415 0.213415 +vt 0.963415 0.237805 +vt 0.902439 0.237805 +vt 0.908537 0.213415 +vt 0.920732 0.237805 +vt 0.926829 0.213415 +vt 0.951219 0.237805 +vt 0.957317 0.213415 +vt 0.969512 0.237805 +vt 0.975610 0.213415 +vt 0.975610 0.237805 +vt 0.920732 0.213415 +vt 0.951219 0.213415 +vt 0.939024 0.213415 +vt 0.969512 0.213415 +vt 0.463415 0.402439 +vt 0.487805 0.621951 +vt 0.463415 0.621951 +vt 0.487805 0.402439 +vt 0.512195 0.621951 +vt 0.512195 0.402439 +vt 0.536585 0.621951 +vt 0.560976 0.402439 +vt 0.585366 0.621951 +vt 0.560976 0.621951 +vt 0.585366 0.402439 +vt 0.609756 0.621951 +vt 0.609756 0.402439 +vt 0.634146 0.621951 +vt 0.414634 0.402439 +vt 0.439024 0.621951 +vt 0.414634 0.621951 +vt 0.390244 0.402439 +vt 0.390244 0.621951 +vt 0.658537 0.402439 +vt 0.682927 0.621951 +vt 0.658537 0.621951 +vt 0.634146 0.402439 +vt 0.536585 0.402439 +vt 0.439024 0.402439 +vt 0.439024 0.182927 +vt 0.463415 0.402439 +vt 0.439024 0.402439 +vt 0.463415 0.182927 +vt 0.487805 0.402439 +vt 0.487805 0.182927 +vt 0.512195 0.402439 +vt 0.512195 0.182927 +vt 0.536585 0.402439 +vt 0.536585 0.182927 +vt 0.560976 0.402439 +vt 0.560976 0.182927 +vt 0.585366 0.402439 +vt 0.585366 0.182927 +vt 0.609756 0.402439 +vt 0.609756 0.182927 +vt 0.634146 0.402439 +vt 0.634146 0.182927 +vt 0.658537 0.402439 +vt 0.658537 0.182927 +vt 0.682927 0.402439 +vt 0.390244 0.182927 +vt 0.414634 0.402439 +vt 0.390244 0.402439 +vt 0.414634 0.182927 +vt 1.000000 0.189024 +vt 1.000000 0.146341 +vt 1.000000 0.213415 +vt 0.902439 0.213415 +vt 0.682927 0.402439 +vt 0.682927 0.182927 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.4472 0.0000 0.8944 +vn -0.4472 0.8944 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.4472 0.0000 -0.8944 +vn 0.3511 0.0000 -0.9363 +vn 0.3511 0.0000 0.9363 +vn 0.3511 0.9363 0.0000 +vn 0.3511 -0.9363 0.0000 +vn 0.4472 0.0000 0.8944 +vn 0.4472 0.8944 0.0000 +vn 0.4472 0.0000 -0.8944 +vn -0.3511 0.0000 -0.9363 +vn -0.3511 0.0000 0.9363 +vn -0.3511 0.9363 0.0000 +vn -0.3511 -0.9363 0.0000 +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.8660 0.0000 -0.5000 +vn 0.6124 -0.7071 0.3536 +vn 0.7071 -0.7071 0.0000 +vn 0.3536 -0.7071 0.6124 +vn -0.0000 -0.7071 0.7071 +vn -0.3536 -0.7071 0.6124 +vn -0.6124 -0.7071 0.3536 +vn -0.7071 -0.7071 -0.0000 +vn -0.6124 -0.7071 -0.3536 +vn 0.6124 -0.7071 -0.3536 +vn 0.3536 -0.7071 -0.6124 +vn 0.0000 -0.7071 -0.7071 +vn -0.3536 -0.7071 -0.6124 +vn -0.9965 0.0830 0.0000 +vn -0.8630 0.0830 -0.4983 +vn -0.4983 0.0830 -0.8630 +vn -0.8630 0.0830 0.4983 +vn -0.4983 0.0830 0.8630 +vn -0.0000 0.0830 0.9965 +vn 0.0000 0.0830 -0.9965 +vn 0.4983 0.0830 -0.8630 +vn 0.4983 0.0830 0.8630 +vn 0.8630 0.0830 0.4983 +vn 0.9965 0.0830 0.0000 +vn 0.8630 0.0830 -0.4983 s off -f 4/1/1 3/2/1 1/3/1 -f 8/1/2 7/2/2 3/3/2 -f 6/1/3 5/2/3 7/3/3 -f 2/1/4 1/2/4 5/3/4 -f 3/2/5 7/4/5 5/5/5 -f 12/6/6 6/1/6 8/7/6 -f 4/1/7 2/7/7 9/8/7 -f 8/1/8 4/7/8 10/8/8 -f 6/7/9 12/8/9 9/6/9 -f 20/9/2 19/10/2 22/11/2 -f 19/12/3 26/13/3 28/14/3 -f 14/15/10 13/16/10 24/17/10 -f 22/10/5 19/11/5 17/17/5 -f 21/11/11 16/15/11 14/16/11 -f 20/10/12 21/11/12 23/17/12 -f 23/11/4 24/17/4 17/9/4 -f 21/17/13 22/11/13 15/15/13 -f 28/14/14 32/18/14 31/19/14 -f 18/9/3 27/20/3 25/21/3 -f 20/10/3 25/21/3 26/13/3 -f 17/22/3 28/14/3 27/20/3 -f 31/19/3 32/18/3 30/23/3 -f 25/21/15 29/24/15 30/23/15 -f 26/13/16 30/23/16 32/18/16 -f 27/20/17 31/19/17 29/24/17 -f 42/17/2 39/9/2 40/10/2 -f 48/20/1 46/21/1 39/10/1 -f 44/11/18 33/15/18 34/16/18 -f 37/9/5 39/10/5 42/11/5 -f 34/15/19 36/16/19 41/17/19 -f 43/11/12 41/17/12 40/9/12 -f 37/10/4 44/11/4 43/17/4 -f 35/16/20 42/17/20 41/11/20 -f 51/18/21 52/19/21 48/20/21 -f 45/13/1 47/14/1 38/22/1 -f 46/21/1 45/13/1 40/12/1 -f 47/14/1 48/20/1 37/9/1 -f 50/24/1 52/19/1 51/18/1 -f 50/24/22 49/23/22 45/13/22 -f 52/19/23 50/24/23 46/21/23 -f 49/23/24 51/18/24 47/14/24 -f 59/25/3 53/26/3 54/27/3 -f 56/28/1 58/29/1 57/30/1 -f 60/31/12 54/27/12 58/29/12 -f 55/32/5 57/30/5 53/33/5 -f 54/34/2 53/33/2 57/30/2 -f 67/25/3 61/26/3 62/27/3 -f 64/28/1 66/29/1 65/30/1 -f 68/31/12 62/27/12 66/29/12 -f 63/32/5 65/30/5 61/33/5 -f 62/34/2 61/33/2 65/30/2 -f 70/29/3 69/30/3 75/32/3 -f 73/26/1 74/27/1 72/31/1 -f 74/27/12 70/29/12 76/28/12 -f 69/30/5 73/33/5 71/35/5 -f 73/33/4 69/30/4 70/36/4 -f 78/29/3 77/30/3 83/32/3 -f 81/26/1 82/27/1 80/31/1 -f 82/27/12 78/29/12 84/28/12 -f 77/30/5 81/33/5 79/35/5 -f 81/33/4 77/30/4 78/36/4 -f 86/37/2 85/15/2 87/38/2 -f 89/37/4 90/38/4 88/15/4 -f 92/39/2 91/40/2 93/41/2 -f 95/39/4 96/41/4 94/40/4 -f 10/6/1 9/8/1 98/42/1 -f 97/43/3 12/6/3 11/8/3 -f 9/6/4 12/8/4 97/42/4 -f 99/42/2 100/43/2 11/6/2 -f 98/44/12 97/43/12 100/42/12 -f 131/45/12 132/46/12 129/12/12 -f 128/47/3 132/46/3 131/45/3 -f 125/47/1 130/46/1 129/45/1 -f 127/47/2 129/46/2 132/45/2 -f 126/47/4 131/46/4 130/45/4 -f 163/45/12 164/46/12 161/12/12 -f 160/47/3 164/46/3 163/45/3 -f 157/47/1 162/46/1 161/45/1 -f 159/47/2 161/46/2 164/45/2 -f 158/47/4 163/46/4 162/45/4 -f 172/48/8 169/49/8 173/50/8 -f 168/51/3 172/48/3 171/52/3 -f 167/53/2 169/49/2 172/48/2 -f 166/54/4 171/55/4 170/56/4 -f 175/57/12 176/58/12 173/59/12 -f 171/55/9 175/58/9 174/57/9 -f 172/48/6 176/60/6 175/61/6 -f 170/56/7 174/62/7 173/63/7 -f 167/53/1 165/64/1 170/56/1 -f 207/45/12 208/46/12 205/12/12 -f 204/47/3 208/46/3 207/45/3 -f 201/47/1 206/46/1 205/45/1 -f 203/47/2 205/46/2 208/45/2 -f 202/47/4 207/46/4 206/45/4 -f 197/65/12 191/66/12 179/67/12 -f 215/68/25 194/69/25 195/70/25 -f 216/71/26 193/72/26 194/69/26 -f 214/73/27 195/70/27 196/74/27 -f 213/75/28 196/74/28 197/76/28 -f 212/77/29 197/76/29 198/78/29 -f 211/79/30 198/80/30 199/81/30 -f 210/82/31 199/81/31 200/83/31 -f 209/84/32 200/83/32 179/85/32 -f 217/86/33 192/87/33 193/72/33 -f 218/88/34 191/89/34 192/87/34 -f 219/90/35 180/91/35 191/89/35 -f 220/92/36 179/85/36 180/91/36 -f 229/93/37 230/94/37 214/73/37 -f 212/77/38 228/95/38 229/93/38 -f 227/55/39 228/95/39 212/77/39 -f 226/96/40 227/97/40 211/79/40 -f 209/84/41 225/98/41 226/96/41 -f 224/99/42 225/98/42 209/84/42 -f 223/100/43 224/99/43 220/92/43 -f 214/73/44 230/94/44 231/101/44 -f 231/101/45 232/102/45 216/71/45 -f 216/71/46 232/102/46 221/103/46 -f 221/103/47 222/104/47 218/88/47 -f 222/104/48 223/100/48 219/90/48 -f 190/105/49 224/99/49 223/100/49 -f 188/106/50 189/107/50 223/100/50 -f 190/105/51 177/108/51 225/98/51 -f 178/109/52 226/96/52 225/98/52 -f 181/110/53 227/97/53 226/96/53 -f 187/111/54 188/106/54 222/104/54 -f 187/111/55 221/103/55 232/102/55 -f 182/112/56 228/95/56 227/55/56 -f 183/113/57 229/93/57 228/95/57 -f 184/114/58 230/94/58 229/93/58 -f 185/115/59 231/101/59 230/94/59 -f 185/115/60 186/116/60 232/102/60 -f 262/117/26 274/118/26 273/119/26 -f 246/120/12 258/121/12 268/122/12 -f 240/123/29 252/124/29 251/125/29 -f 237/126/32 249/127/32 248/128/32 -f 244/129/26 256/119/26 255/130/26 -f 234/131/34 245/132/34 246/133/34 -f 241/134/28 253/135/28 252/124/28 -f 237/126/31 238/136/31 250/137/31 -f 233/91/33 246/133/33 256/119/33 -f 235/138/35 247/139/35 245/132/35 -f 242/87/27 254/140/27 253/135/27 -f 239/80/30 251/141/30 250/137/30 -f 236/83/36 248/128/36 247/139/36 -f 243/142/25 255/130/25 254/140/25 -f 247/143/12 259/144/12 257/145/12 -f 254/135/12 266/146/12 265/147/12 -f 251/148/12 263/149/12 262/150/12 -f 248/151/12 260/152/12 259/144/12 -f 254/135/12 255/153/12 267/154/12 -f 251/148/12 252/155/12 264/156/12 -f 249/157/12 261/158/12 260/152/12 -f 256/159/12 268/122/12 267/154/12 -f 245/160/12 257/145/12 258/121/12 -f 253/161/12 265/147/12 264/156/12 -f 250/162/12 262/150/12 261/158/12 -f 258/163/30 270/132/30 280/164/30 -f 259/165/28 271/133/28 269/166/28 -f 266/167/36 278/168/36 277/128/36 -f 263/120/33 275/130/33 274/118/33 -f 260/169/27 272/170/27 271/133/27 -f 267/171/32 279/139/32 278/168/32 -f 264/172/34 276/173/34 275/127/34 -f 261/174/25 273/119/25 272/170/25 -f 268/175/31 280/164/31 279/139/31 -f 257/176/29 269/166/29 270/132/29 -f 265/177/35 277/128/35 276/173/35 -f 107/178/12 109/179/12 101/180/12 -f 116/181/32 117/182/32 105/183/32 -f 117/182/31 118/184/31 106/185/31 -f 118/184/30 119/186/30 107/187/30 -f 120/188/28 121/189/28 109/190/28 -f 121/189/27 122/191/27 110/192/27 -f 122/191/25 123/193/25 111/194/25 -f 113/195/35 115/196/35 103/197/35 -f 114/198/34 113/195/34 102/199/34 -f 124/200/33 114/201/33 101/202/33 -f 123/193/26 124/200/26 112/203/26 -f 119/186/29 120/188/29 108/204/29 -f 115/196/36 116/181/36 104/205/36 -f 139/206/12 141/207/12 133/178/12 -f 147/208/36 148/60/36 136/181/36 -f 148/60/32 149/209/32 137/182/32 -f 149/209/31 150/210/31 138/184/31 -f 150/210/30 151/211/30 139/186/30 -f 151/211/29 152/50/29 140/188/29 -f 152/50/28 153/212/28 141/189/28 -f 153/212/27 154/63/27 142/191/27 -f 154/63/25 155/213/25 143/193/25 -f 155/213/26 156/62/26 144/200/26 -f 156/62/33 146/214/33 133/201/33 -f 146/215/34 145/61/34 134/195/34 -f 145/61/35 147/208/35 135/196/35 -f 2/7/1 4/1/1 1/3/1 -f 4/7/2 8/1/2 3/3/2 -f 8/7/3 6/1/3 7/3/3 -f 6/7/4 2/1/4 5/3/4 -f 1/3/5 3/2/5 5/5/5 -f 11/8/6 12/6/6 8/7/6 -f 10/6/7 4/1/7 9/8/7 -f 11/6/8 8/1/8 10/8/8 -f 2/1/9 6/7/9 9/6/9 -f 21/17/2 20/9/2 22/11/2 -f 17/22/3 19/12/3 28/14/3 -f 23/11/10 14/15/10 24/17/10 -f 24/9/5 22/10/5 17/17/5 -f 23/17/11 21/11/11 14/16/11 -f 18/9/12 20/10/12 23/17/12 -f 18/10/4 23/11/4 17/9/4 -f 16/16/13 21/17/13 15/15/13 -f 27/20/14 28/14/14 31/19/14 -f 20/10/3 18/9/3 25/21/3 -f 19/12/3 20/10/3 26/13/3 -f 18/9/3 17/22/3 27/20/3 -f 29/24/3 31/19/3 30/23/3 -f 26/13/15 25/21/15 30/23/15 -f 28/14/16 26/13/16 32/18/16 -f 25/21/17 27/20/17 29/24/17 -f 41/11/2 42/17/2 40/10/2 -f 37/9/1 48/20/1 39/10/1 -f 43/17/18 44/11/18 34/16/18 -f 44/17/5 37/9/5 42/11/5 -f 43/11/19 34/15/19 41/17/19 -f 38/10/12 43/11/12 40/9/12 -f 38/9/4 37/10/4 43/17/4 -f 36/15/20 35/16/20 41/11/20 -f 47/14/21 51/18/21 48/20/21 -f 40/12/1 45/13/1 38/22/1 -f 39/10/1 46/21/1 40/12/1 -f 38/22/1 47/14/1 37/9/1 -f 49/23/1 50/24/1 51/18/1 -f 46/21/22 50/24/22 45/13/22 -f 48/20/23 52/19/23 46/21/23 -f 45/13/24 49/23/24 47/14/24 -f 60/31/3 59/25/3 54/27/3 -f 55/32/1 56/28/1 57/30/1 -f 56/28/12 60/31/12 58/29/12 -f 59/35/5 55/32/5 53/33/5 -f 58/36/2 54/34/2 57/30/2 -f 68/31/3 67/25/3 62/27/3 -f 63/32/1 64/28/1 65/30/1 -f 64/28/12 68/31/12 66/29/12 -f 67/35/5 63/32/5 61/33/5 -f 66/36/2 62/34/2 65/30/2 -f 76/28/3 70/29/3 75/32/3 -f 71/25/1 73/26/1 72/31/1 -f 72/31/12 74/27/12 76/28/12 -f 75/32/5 69/30/5 71/35/5 -f 74/34/4 73/33/4 70/36/4 -f 84/28/3 78/29/3 83/32/3 -f 79/25/1 81/26/1 80/31/1 -f 80/31/12 82/27/12 84/28/12 -f 83/32/5 77/30/5 79/35/5 -f 82/34/4 81/33/4 78/36/4 -f 99/43/1 10/6/1 98/42/1 -f 100/42/3 97/43/3 11/8/3 -f 98/43/4 9/6/4 97/42/4 -f 10/8/2 99/42/2 11/6/2 -f 99/216/12 98/44/12 100/42/12 -f 130/22/12 131/45/12 129/12/12 -f 126/5/3 128/47/3 131/45/3 -f 127/5/1 125/47/1 129/45/1 -f 128/5/2 127/47/2 132/45/2 -f 125/5/4 126/47/4 130/45/4 -f 162/22/12 163/45/12 161/12/12 -f 158/5/3 160/47/3 163/45/3 -f 159/5/1 157/47/1 161/45/1 -f 160/5/2 159/47/2 164/45/2 -f 157/5/4 158/47/4 162/45/4 -f 176/210/8 172/48/8 173/50/8 -f 166/47/3 168/51/3 171/52/3 -f 168/51/2 167/53/2 172/48/2 -f 165/64/4 166/54/4 170/56/4 -f 174/217/12 175/57/12 173/59/12 -f 170/56/9 171/55/9 174/57/9 -f 171/52/6 172/48/6 175/61/6 -f 169/49/7 170/56/7 173/63/7 -f 169/49/1 167/53/1 170/56/1 -f 206/22/12 207/45/12 205/12/12 -f 202/5/3 204/47/3 207/45/3 -f 203/5/1 201/47/1 205/45/1 -f 204/5/2 203/47/2 208/45/2 -f 201/5/4 202/47/4 206/45/4 -f 179/67/12 200/218/12 199/219/12 -f 199/219/12 198/220/12 197/65/12 -f 197/65/12 196/221/12 195/74/12 -f 195/74/12 194/222/12 193/223/12 -f 193/223/12 192/224/12 191/66/12 -f 191/66/12 180/225/12 179/67/12 -f 179/67/12 199/219/12 197/65/12 -f 197/65/12 195/74/12 193/223/12 -f 193/223/12 191/66/12 197/65/12 -f 214/73/25 215/68/25 195/70/25 -f 215/68/26 216/71/26 194/69/26 -f 213/75/27 214/73/27 196/74/27 -f 212/77/28 213/75/28 197/76/28 -f 211/226/29 212/77/29 198/78/29 -f 210/82/30 211/79/30 199/81/30 -f 209/84/31 210/82/31 200/83/31 -f 220/92/32 209/84/32 179/85/32 -f 216/71/33 217/86/33 193/72/33 -f 217/86/34 218/88/34 192/87/34 -f 218/88/35 219/90/35 191/89/35 -f 219/90/36 220/92/36 180/91/36 -f 213/75/37 229/93/37 214/73/37 -f 213/75/38 212/77/38 229/93/38 -f 211/226/39 227/55/39 212/77/39 -f 210/82/40 226/96/40 211/79/40 -f 210/82/41 209/84/41 226/96/41 -f 220/92/42 224/99/42 209/84/42 -f 219/90/43 223/100/43 220/92/43 -f 215/68/44 214/73/44 231/101/44 -f 215/68/45 231/101/45 216/71/45 -f 217/86/46 216/71/46 221/103/46 -f 217/86/47 221/103/47 218/88/47 -f 218/88/48 222/104/48 219/90/48 -f 189/107/49 190/105/49 223/100/49 -f 222/104/50 188/106/50 223/100/50 -f 224/99/51 190/105/51 225/98/51 -f 177/108/52 178/109/52 225/98/52 -f 178/109/53 181/110/53 226/96/53 -f 221/103/54 187/111/54 222/104/54 -f 186/116/55 187/111/55 232/102/55 -f 181/54/56 182/112/56 227/55/56 -f 182/112/57 183/113/57 228/95/57 -f 183/113/58 184/114/58 229/93/58 -f 184/114/59 185/115/59 230/94/59 -f 231/101/60 185/115/60 232/102/60 -f 261/174/26 262/117/26 273/119/26 -f 256/159/12 246/120/12 268/122/12 -f 239/69/29 240/123/29 251/125/29 -f 236/83/32 237/126/32 248/128/32 -f 243/142/26 244/129/26 255/130/26 -f 233/91/34 234/131/34 246/133/34 -f 240/123/28 241/134/28 252/124/28 -f 249/127/31 237/126/31 250/137/31 -f 244/129/33 233/91/33 256/119/33 -f 234/131/35 235/138/35 245/132/35 -f 241/134/27 242/87/27 253/135/27 -f 238/136/30 239/80/30 250/137/30 -f 235/138/36 236/83/36 247/139/36 -f 242/87/25 243/142/25 254/140/25 -f 245/160/12 247/143/12 257/145/12 -f 253/161/12 254/135/12 265/147/12 -f 250/162/12 251/148/12 262/150/12 -f 247/143/12 248/151/12 259/144/12 -f 266/146/12 254/135/12 267/154/12 -f 263/149/12 251/148/12 264/156/12 -f 248/151/12 249/157/12 260/152/12 -f 255/153/12 256/159/12 267/154/12 -f 246/120/12 245/160/12 258/121/12 -f 252/155/12 253/161/12 264/156/12 -f 249/157/12 250/162/12 261/158/12 -f 268/175/30 258/163/30 280/164/30 -f 257/176/28 259/165/28 269/166/28 -f 265/177/36 266/167/36 277/128/36 -f 262/117/33 263/120/33 274/118/33 -f 259/165/27 260/169/27 271/133/27 -f 266/167/32 267/171/32 278/168/32 -f 263/227/34 264/172/34 275/127/34 -f 260/169/25 261/174/25 272/170/25 -f 267/171/31 268/175/31 279/139/31 -f 258/163/29 257/176/29 270/132/29 -f 264/172/35 265/177/35 276/173/35 -f 101/180/12 102/228/12 103/229/12 -f 103/229/12 104/230/12 105/231/12 -f 105/231/12 106/232/12 107/178/12 -f 107/178/12 108/233/12 109/179/12 -f 109/179/12 110/234/12 111/235/12 -f 111/235/12 112/236/12 101/180/12 -f 101/180/12 103/229/12 105/231/12 -f 105/231/12 107/178/12 101/180/12 -f 109/179/12 111/235/12 101/180/12 -f 104/205/32 116/181/32 105/183/32 -f 105/183/31 117/182/31 106/185/31 -f 106/185/30 118/184/30 107/187/30 -f 108/204/28 120/188/28 109/190/28 -f 109/190/27 121/189/27 110/192/27 -f 110/192/25 122/191/25 111/194/25 -f 102/199/35 113/195/35 103/197/35 -f 101/237/34 114/198/34 102/199/34 -f 112/203/33 124/200/33 101/202/33 -f 111/194/26 123/193/26 112/203/26 -f 107/187/29 119/186/29 108/204/29 -f 103/197/36 115/196/36 104/205/36 -f 133/178/12 134/238/12 135/239/12 -f 135/239/12 136/240/12 133/178/12 -f 137/241/12 138/242/12 139/206/12 -f 139/206/12 140/243/12 141/207/12 -f 141/207/12 142/244/12 143/245/12 -f 143/245/12 144/246/12 133/178/12 -f 133/178/12 136/240/12 137/241/12 -f 137/241/12 139/206/12 133/178/12 -f 141/207/12 143/245/12 133/178/12 -f 135/196/36 147/208/36 136/181/36 -f 136/181/32 148/60/32 137/182/32 -f 137/182/31 149/209/31 138/184/31 -f 138/184/30 150/210/30 139/186/30 -f 139/186/29 151/211/29 140/188/29 -f 140/188/28 152/50/28 141/189/28 -f 141/189/27 153/212/27 142/191/27 -f 142/191/25 154/63/25 143/193/25 -f 143/193/26 155/213/26 144/200/26 -f 144/200/33 156/62/33 133/201/33 -f 133/198/34 146/215/34 134/195/34 -f 134/195/35 145/61/35 135/196/35 +f 4/1/1 1/2/1 2/3/1 +f 8/4/2 3/5/2 4/6/2 +f 6/7/3 7/8/3 8/9/3 +f 2/10/4 5/11/4 6/12/4 +f 3/13/5 5/14/5 1/2/5 +f 12/15/6 8/9/6 11/16/6 +f 4/1/7 9/17/7 10/18/7 +f 8/4/8 10/19/8 11/20/8 +f 6/12/9 9/21/9 2/10/9 +f 20/22/2 22/23/2 21/24/2 +f 19/25/3 28/26/3 17/27/3 +f 14/28/10 24/29/10 23/30/10 +f 22/31/5 17/32/5 24/33/5 +f 21/34/11 14/35/11 23/36/11 +f 20/37/12 23/36/12 18/38/12 +f 23/30/4 17/39/4 18/40/4 +f 21/24/13 15/41/13 16/42/13 +f 28/26/14 31/43/14 27/44/14 +f 18/38/3 25/45/3 20/37/3 +f 20/37/3 26/46/3 19/25/3 +f 17/27/3 27/44/3 18/38/3 +f 31/43/3 30/47/3 29/48/3 +f 25/45/15 30/47/15 26/46/15 +f 26/46/16 32/49/16 28/26/16 +f 27/44/17 29/48/17 25/45/17 +f 42/50/2 40/51/2 41/52/2 +f 48/53/1 39/54/1 37/55/1 +f 44/56/18 34/57/18 43/58/18 +f 37/55/5 42/59/5 44/60/5 +f 34/61/19 41/62/19 43/63/19 +f 43/63/12 40/64/12 38/65/12 +f 37/66/4 43/58/4 38/67/4 +f 35/68/20 41/52/20 36/69/20 +f 51/70/21 48/53/21 47/71/21 +f 45/72/1 38/73/1 40/74/1 +f 46/75/1 40/74/1 39/54/1 +f 47/71/1 37/55/1 38/73/1 +f 50/76/1 51/70/1 49/77/1 +f 50/76/22 45/72/22 46/75/22 +f 52/78/23 46/75/23 48/53/23 +f 49/77/24 47/71/24 45/72/24 +f 59/79/3 54/80/3 60/81/3 +f 56/82/1 57/83/1 55/84/1 +f 60/81/12 58/85/12 56/82/12 +f 55/84/5 53/86/5 59/87/5 +f 54/88/2 57/83/2 58/89/2 +f 67/90/3 62/91/3 68/92/3 +f 64/93/1 65/94/1 63/95/1 +f 68/92/12 66/96/12 64/93/12 +f 63/95/5 61/97/5 67/98/5 +f 62/99/2 65/94/2 66/100/2 +f 70/101/3 75/102/3 76/103/3 +f 73/104/1 72/105/1 71/106/1 +f 74/107/12 76/103/12 72/105/12 +f 69/108/5 71/109/5 75/102/5 +f 73/110/4 70/111/4 74/112/4 +f 78/113/3 83/114/3 84/115/3 +f 81/116/1 80/117/1 79/118/1 +f 82/119/12 84/115/12 80/117/12 +f 77/120/5 79/121/5 83/114/5 +f 81/122/4 78/123/4 82/124/4 +f 86/125/2 85/126/2 87/127/2 +f 89/128/4 90/129/4 88/130/4 +f 92/131/2 91/132/2 93/133/2 +f 95/134/4 96/135/4 94/136/4 +f 10/18/1 98/137/1 99/138/1 +f 97/139/3 11/16/3 100/140/3 +f 9/21/4 97/141/4 98/142/4 +f 99/143/2 11/20/2 10/19/2 +f 98/144/12 100/140/12 99/145/12 +f 131/146/12 129/147/12 130/148/12 +f 128/149/3 131/146/3 126/150/3 +f 125/151/1 129/152/1 127/153/1 +f 127/154/2 132/155/2 128/156/2 +f 126/157/4 130/158/4 125/159/4 +f 163/160/12 161/161/12 162/162/12 +f 160/163/3 163/160/3 158/164/3 +f 157/165/1 161/166/1 159/167/1 +f 159/168/2 164/169/2 160/170/2 +f 158/171/4 162/172/4 157/173/4 +f 172/174/8 173/175/8 176/176/8 +f 168/177/3 171/178/3 166/179/3 +f 167/180/2 172/174/2 168/177/2 +f 166/181/4 170/182/4 165/183/4 +f 175/184/12 173/185/12 174/186/12 +f 171/187/9 174/188/9 170/182/9 +f 172/174/6 175/189/6 171/178/6 +f 169/190/7 174/191/7 173/192/7 +f 167/180/1 170/182/1 169/190/1 +f 207/193/12 205/194/12 206/195/12 +f 204/196/3 207/193/3 202/197/3 +f 201/198/1 205/199/1 203/200/1 +f 203/201/2 208/202/2 204/203/2 +f 202/204/4 206/205/4 201/206/4 +f 197/207/12 193/208/12 179/209/12 +f 246/210/12 268/211/12 256/212/12 +f 247/213/12 257/214/12 245/215/12 +f 254/216/12 265/217/12 253/218/12 +f 251/219/12 262/220/12 250/221/12 +f 248/222/12 259/223/12 247/213/12 +f 254/216/12 267/224/12 266/225/12 +f 252/226/12 263/227/12 251/219/12 +f 249/228/12 260/229/12 248/222/12 +f 256/212/12 267/224/12 255/230/12 +f 245/215/12 258/231/12 246/210/12 +f 253/218/12 264/232/12 252/226/12 +f 250/221/12 261/233/12 249/228/12 +f 109/234/12 111/235/12 101/236/12 +f 141/237/12 143/238/12 133/239/12 +f 4/1/1 3/13/1 1/2/1 +f 8/4/2 7/240/2 3/5/2 +f 6/7/3 5/241/3 7/8/3 +f 2/10/4 1/242/4 5/11/4 +f 3/13/5 7/243/5 5/14/5 +f 12/15/6 6/7/6 8/9/6 +f 4/1/7 2/3/7 9/17/7 +f 8/4/8 4/6/8 10/19/8 +f 6/12/9 12/244/9 9/21/9 +f 20/22/2 19/245/2 22/23/2 +f 19/25/3 26/46/3 28/26/3 +f 14/28/10 13/246/10 24/29/10 +f 22/31/5 19/247/5 17/32/5 +f 21/34/11 16/248/11 14/35/11 +f 20/37/12 21/34/12 23/36/12 +f 23/30/4 24/29/4 17/39/4 +f 21/24/13 22/23/13 15/41/13 +f 28/26/14 32/49/14 31/43/14 +f 18/38/3 27/44/3 25/45/3 +f 20/37/3 25/45/3 26/46/3 +f 17/27/3 28/26/3 27/44/3 +f 31/43/3 32/49/3 30/47/3 +f 25/45/15 29/48/15 30/47/15 +f 26/46/16 30/47/16 32/49/16 +f 27/44/17 31/43/17 29/48/17 +f 42/50/2 39/249/2 40/51/2 +f 48/53/1 46/75/1 39/54/1 +f 44/56/18 33/250/18 34/57/18 +f 37/55/5 39/54/5 42/59/5 +f 34/61/19 36/251/19 41/62/19 +f 43/63/12 41/62/12 40/64/12 +f 37/66/4 44/56/4 43/58/4 +f 35/68/20 42/50/20 41/52/20 +f 51/70/21 52/78/21 48/53/21 +f 45/72/1 47/71/1 38/73/1 +f 46/75/1 45/72/1 40/74/1 +f 47/71/1 48/53/1 37/55/1 +f 50/76/1 52/78/1 51/70/1 +f 50/76/22 49/77/22 45/72/22 +f 52/78/23 50/76/23 46/75/23 +f 49/77/24 51/70/24 47/71/24 +f 59/79/3 53/252/3 54/80/3 +f 56/82/1 58/85/1 57/83/1 +f 60/81/12 54/80/12 58/85/12 +f 55/84/5 57/83/5 53/86/5 +f 54/88/2 53/86/2 57/83/2 +f 67/90/3 61/253/3 62/91/3 +f 64/93/1 66/96/1 65/94/1 +f 68/92/12 62/91/12 66/96/12 +f 63/95/5 65/94/5 61/97/5 +f 62/99/2 61/97/2 65/94/2 +f 70/101/3 69/108/3 75/102/3 +f 73/104/1 74/107/1 72/105/1 +f 74/107/12 70/101/12 76/103/12 +f 69/108/5 73/110/5 71/109/5 +f 73/110/4 69/108/4 70/111/4 +f 78/113/3 77/120/3 83/114/3 +f 81/116/1 82/119/1 80/117/1 +f 82/119/12 78/113/12 84/115/12 +f 77/120/5 81/122/5 79/121/5 +f 81/122/4 77/120/4 78/123/4 +f 10/18/1 9/17/1 98/137/1 +f 97/139/3 12/15/3 11/16/3 +f 9/21/4 12/244/4 97/141/4 +f 99/143/2 100/254/2 11/20/2 +f 98/144/12 97/139/12 100/140/12 +f 131/146/12 132/255/12 129/147/12 +f 128/149/3 132/255/3 131/146/3 +f 125/151/1 130/256/1 129/152/1 +f 127/154/2 129/257/2 132/155/2 +f 126/157/4 131/258/4 130/158/4 +f 163/160/12 164/259/12 161/161/12 +f 160/163/3 164/259/3 163/160/3 +f 157/165/1 162/260/1 161/166/1 +f 159/168/2 161/261/2 164/169/2 +f 158/171/4 163/262/4 162/172/4 +f 172/174/8 169/190/8 173/175/8 +f 168/177/3 172/174/3 171/178/3 +f 167/180/2 169/190/2 172/174/2 +f 166/181/4 171/187/4 170/182/4 +f 175/184/12 176/263/12 173/185/12 +f 171/187/9 175/264/9 174/188/9 +f 172/174/6 176/265/6 175/189/6 +f 169/190/7 170/182/7 174/191/7 +f 167/180/1 165/183/1 170/182/1 +f 207/193/12 208/266/12 205/194/12 +f 204/196/3 208/266/3 207/193/3 +f 201/198/1 206/267/1 205/199/1 +f 203/201/2 205/268/2 208/202/2 +f 202/204/4 207/269/4 206/205/4 +f 179/209/12 200/270/12 199/271/12 +f 199/271/12 198/272/12 197/207/12 +f 197/207/12 196/273/12 195/274/12 +f 195/274/12 194/275/12 193/208/12 +f 193/208/12 192/276/12 191/277/12 +f 191/277/12 180/278/12 193/208/12 +f 180/278/12 179/209/12 193/208/12 +f 179/209/12 199/271/12 197/207/12 +f 197/207/12 195/274/12 193/208/12 +f 246/210/12 258/231/12 268/211/12 +f 247/213/12 259/223/12 257/214/12 +f 254/216/12 266/225/12 265/217/12 +f 251/219/12 263/227/12 262/220/12 +f 248/222/12 260/229/12 259/223/12 +f 254/216/12 255/230/12 267/224/12 +f 252/226/12 264/232/12 263/227/12 +f 249/228/12 261/233/12 260/229/12 +f 256/212/12 268/211/12 267/224/12 +f 245/215/12 257/214/12 258/231/12 +f 253/218/12 265/217/12 264/232/12 +f 250/221/12 262/220/12 261/233/12 +f 101/236/12 102/279/12 103/280/12 +f 103/280/12 104/281/12 105/282/12 +f 105/282/12 106/283/12 107/284/12 +f 107/284/12 108/285/12 109/234/12 +f 109/234/12 110/286/12 111/235/12 +f 111/235/12 112/287/12 101/236/12 +f 101/236/12 103/280/12 105/282/12 +f 105/282/12 107/284/12 101/236/12 +f 107/284/12 109/234/12 101/236/12 +f 133/239/12 134/288/12 135/289/12 +f 135/289/12 136/290/12 133/239/12 +f 136/290/12 137/291/12 133/239/12 +f 137/291/12 138/292/12 139/293/12 +f 139/293/12 140/294/12 141/237/12 +f 141/237/12 142/295/12 143/238/12 +f 143/238/12 144/296/12 133/239/12 +f 137/291/12 139/293/12 133/239/12 +f 139/293/12 141/237/12 133/239/12 +s 1 +f 215/297/25 195/298/3 214/299/3 +f 216/300/26 194/301/25 215/297/25 +f 214/299/3 196/302/27 213/303/27 +f 213/303/27 197/304/28 212/305/28 +f 212/305/28 198/306/4 211/307/4 +f 211/308/4 199/309/29 210/310/29 +f 210/310/29 200/311/30 209/312/30 +f 209/312/30 179/313/1 220/314/1 +f 217/315/2 193/316/26 216/300/26 +f 218/317/31 192/318/2 217/315/2 +f 219/319/32 191/320/31 218/317/31 +f 220/314/1 180/321/32 219/319/32 +f 229/322/33 214/299/34 213/303/33 +f 212/305/35 229/322/33 213/303/33 +f 227/323/36 212/305/35 211/307/36 +f 226/324/37 211/308/36 210/310/37 +f 209/312/38 226/324/37 210/310/37 +f 224/325/39 209/312/38 220/314/39 +f 223/326/40 220/314/39 219/319/40 +f 230/327/34 215/297/41 214/299/34 +f 231/328/41 216/300/42 215/297/41 +f 232/329/42 217/315/43 216/300/42 +f 221/330/43 218/317/44 217/315/43 +f 222/331/44 219/319/40 218/317/44 +f 190/332/45 223/326/46 189/333/46 +f 189/333/46 222/331/47 188/334/47 +f 177/335/48 224/325/45 190/332/45 +f 178/336/49 225/337/48 177/335/48 +f 181/338/50 226/324/49 178/336/49 +f 188/334/47 221/330/51 187/339/51 +f 187/339/51 232/329/52 186/340/52 +f 182/341/53 227/323/50 181/342/50 +f 183/343/54 228/344/53 182/341/53 +f 183/343/54 230/327/55 229/322/54 +f 185/345/56 230/327/55 184/346/55 +f 186/340/52 231/328/56 185/345/56 +f 262/347/26 273/348/25 261/349/25 +f 240/350/28 251/351/4 239/352/4 +f 237/353/30 248/354/1 236/355/1 +f 243/356/25 256/357/26 255/358/25 +f 233/359/2 245/360/31 246/361/2 +f 241/362/27 252/363/28 240/350/28 +f 238/364/29 249/365/30 237/353/30 +f 244/366/26 246/361/2 256/357/26 +f 234/367/31 247/368/32 245/360/31 +f 242/369/3 253/370/27 241/362/27 +f 239/371/4 250/372/29 238/364/29 +f 236/355/1 247/368/32 235/373/32 +f 243/356/25 254/374/3 242/369/3 +f 258/375/4 280/376/29 268/377/29 +f 259/378/27 269/379/28 257/380/28 +f 266/381/1 277/382/32 265/383/32 +f 263/384/2 274/385/26 262/347/26 +f 260/386/3 271/387/27 259/378/27 +f 267/388/30 278/389/1 266/381/1 +f 264/390/31 275/391/2 263/392/2 +f 261/349/25 272/393/3 260/386/3 +f 268/377/29 279/394/30 267/388/30 +f 257/380/28 270/395/4 258/375/4 +f 265/383/32 276/396/31 264/390/31 +f 116/397/1 105/398/30 104/399/1 +f 117/400/30 106/401/29 105/398/30 +f 118/402/29 107/403/4 106/401/29 +f 120/404/28 109/405/27 108/406/28 +f 121/407/27 110/408/3 109/405/27 +f 122/409/3 111/410/25 110/408/3 +f 113/411/31 103/412/32 102/413/31 +f 114/414/2 102/413/31 101/415/2 +f 124/416/26 101/417/2 112/418/26 +f 123/419/25 112/418/26 111/410/25 +f 119/420/4 108/406/28 107/403/4 +f 115/421/32 104/399/1 103/412/32 +f 147/422/32 136/423/1 135/424/32 +f 148/425/1 137/426/30 136/423/1 +f 149/427/30 138/428/29 137/426/30 +f 150/429/29 139/430/4 138/428/29 +f 151/431/4 140/432/28 139/430/4 +f 152/433/28 141/434/27 140/432/28 +f 153/435/27 142/436/3 141/434/27 +f 154/437/3 143/438/25 142/436/3 +f 155/439/25 144/440/26 143/438/25 +f 156/441/26 133/442/2 144/440/26 +f 146/443/2 134/444/31 133/445/2 +f 145/446/31 135/424/32 134/444/31 +f 215/297/25 194/301/25 195/298/3 +f 216/300/26 193/316/26 194/301/25 +f 214/299/3 195/298/3 196/302/27 +f 213/303/27 196/302/27 197/304/28 +f 212/305/28 197/304/28 198/306/4 +f 211/308/4 198/447/4 199/309/29 +f 210/310/29 199/309/29 200/311/30 +f 209/312/30 200/311/30 179/313/1 +f 217/315/2 192/318/2 193/316/26 +f 218/317/31 191/320/31 192/318/2 +f 219/319/32 180/321/32 191/320/31 +f 220/314/1 179/313/1 180/321/32 +f 229/322/33 230/327/34 214/299/34 +f 212/305/35 228/344/35 229/322/33 +f 227/323/36 228/344/35 212/305/35 +f 226/324/37 227/448/36 211/308/36 +f 209/312/38 225/337/38 226/324/37 +f 224/325/39 225/337/38 209/312/38 +f 223/326/40 224/325/39 220/314/39 +f 230/327/34 231/328/41 215/297/41 +f 231/328/41 232/329/42 216/300/42 +f 232/329/42 221/330/43 217/315/43 +f 221/330/43 222/331/44 218/317/44 +f 222/331/44 223/326/40 219/319/40 +f 190/332/45 224/325/45 223/326/46 +f 189/333/46 223/326/46 222/331/47 +f 177/335/48 225/337/48 224/325/45 +f 178/336/49 226/324/49 225/337/48 +f 181/338/50 227/448/50 226/324/49 +f 188/334/47 222/331/47 221/330/51 +f 187/339/51 221/330/51 232/329/52 +f 182/341/53 228/344/53 227/323/50 +f 183/343/54 229/322/54 228/344/53 +f 183/343/54 184/346/55 230/327/55 +f 185/345/56 231/328/56 230/327/55 +f 186/340/52 232/329/52 231/328/56 +f 262/347/26 274/385/26 273/348/25 +f 240/350/28 252/363/28 251/351/4 +f 237/353/30 249/365/30 248/354/1 +f 243/356/25 244/366/26 256/357/26 +f 233/359/2 234/367/31 245/360/31 +f 241/362/27 253/370/27 252/363/28 +f 238/364/29 250/372/29 249/365/30 +f 244/366/26 233/359/2 246/361/2 +f 234/367/31 235/373/32 247/368/32 +f 242/369/3 254/374/3 253/370/27 +f 239/371/4 251/449/4 250/372/29 +f 236/355/1 248/354/1 247/368/32 +f 243/356/25 255/358/25 254/374/3 +f 258/375/4 270/395/4 280/376/29 +f 259/378/27 271/387/27 269/379/28 +f 266/381/1 278/389/1 277/382/32 +f 263/384/2 275/450/2 274/385/26 +f 260/386/3 272/393/3 271/387/27 +f 267/388/30 279/394/30 278/389/1 +f 264/390/31 276/396/31 275/391/2 +f 261/349/25 273/348/25 272/393/3 +f 268/377/29 280/376/29 279/394/30 +f 257/380/28 269/379/28 270/395/4 +f 265/383/32 277/382/32 276/396/31 +f 116/397/1 117/400/30 105/398/30 +f 117/400/30 118/402/29 106/401/29 +f 118/402/29 119/420/4 107/403/4 +f 120/404/28 121/407/27 109/405/27 +f 121/407/27 122/409/3 110/408/3 +f 122/409/3 123/419/25 111/410/25 +f 113/411/31 115/421/32 103/412/32 +f 114/414/2 113/411/31 102/413/31 +f 124/416/26 114/451/2 101/417/2 +f 123/419/25 124/416/26 112/418/26 +f 119/420/4 120/404/28 108/406/28 +f 115/421/32 116/397/1 104/399/1 +f 147/422/32 148/425/1 136/423/1 +f 148/425/1 149/427/30 137/426/30 +f 149/427/30 150/429/29 138/428/29 +f 150/429/29 151/431/4 139/430/4 +f 151/431/4 152/433/28 140/432/28 +f 152/433/28 153/435/27 141/434/27 +f 153/435/27 154/437/3 142/436/3 +f 154/437/3 155/439/25 143/438/25 +f 155/439/25 156/441/26 144/440/26 +f 156/441/26 146/452/2 133/442/2 +f 146/443/2 145/446/31 134/444/31 +f 145/446/31 147/422/32 135/424/32 diff --git a/src/main/resources/assets/hbm/models/doors/sliding_blast_door.dae b/src/main/resources/assets/hbm/models/doors/sliding_blast_door.dae new file mode 100644 index 000000000..5e24b46e3 --- /dev/null +++ b/src/main/resources/assets/hbm/models/doors/sliding_blast_door.dae @@ -0,0 +1,523 @@ + + + + + Blender User + Blender 2.90.0 commit date:2020-08-31, commit time:11:26, hash:0330d1af29c0 + + 2020-09-23T20:18:02 + 2020-09-23T20:18:02 + + Z_UP + + + + + + + door0_png + + + + + door0_png-surface + + + + + + 0 0 0 1 + + + + + + 1.45 + + + + + + + + + door0.png + + + + + + + + + + + + -0.09754508 -0.4903927 -0.242556 -0.08284217 -0.4164779 -0.317556 -0.1913416 -0.4619397 -0.242556 -0.1625014 -0.3923135 -0.317556 -0.2777849 -0.4157344 -0.242556 -0.2359154 -0.3530725 -0.317556 -0.3535535 -0.3535532 -0.242556 -0.3002642 -0.3002633 -0.317556 -0.4157346 -0.277785 -0.242556 -0.3530725 -0.2359158 -0.317556 -0.4619393 -0.1913415 -0.242556 -0.3923131 -0.1625013 -0.317556 -0.4903929 -0.09754502 -0.242556 -0.4164781 -0.08284199 -0.317556 -0.5004594 0.00187844 -0.2425482 -0.4246374 0 -0.317556 -0.4903926 0.09754526 -0.242556 -0.4164779 0.08284246 -0.317556 -0.4619393 0.1913417 -0.242556 -0.392313 0.1625016 -0.317556 -0.4157346 0.2777853 -0.242556 -0.3530727 0.2359158 -0.317556 -0.3535535 0.3535535 -0.242556 -0.3002639 0.3002639 -0.317556 -0.2777848 0.4157353 -0.242556 -0.2359154 0.3530734 -0.317556 -0.1913416 0.4619403 -0.242556 -0.1625011 0.3923142 -0.317556 -0.09754508 0.4903932 -0.242556 -0.08284294 0.4164784 -0.317556 -0.09754508 -0.4903927 0.207669 -0.08284217 -0.4164779 0.282669 -0.1913416 -0.4619397 0.207669 -0.1625014 -0.3923135 0.282669 -0.2777849 -0.4157344 0.207669 -0.2359154 -0.3530725 0.282669 -0.3535535 -0.3535532 0.207669 -0.3002642 -0.3002633 0.282669 -0.4157346 -0.277785 0.207669 -0.3530725 -0.2359158 0.282669 -0.4619393 -0.1913415 0.207669 -0.3923131 -0.1625013 0.282669 -0.4903929 -0.09754502 0.207669 -0.4164781 -0.08284199 0.282669 -0.4995414 -0.001877963 0.2076613 -0.4246374 0 0.282669 -0.4903926 0.09754526 0.207669 -0.4164779 0.08284246 0.282669 -0.4619393 0.1913417 0.207669 -0.392313 0.1625016 0.282669 -0.4157346 0.2777853 0.207669 -0.3530727 0.2359158 0.282669 -0.3535535 0.3535535 0.207669 -0.3002639 0.3002639 0.282669 -0.2777848 0.4157353 0.207669 -0.2359154 0.3530734 0.282669 -0.1913416 0.4619403 0.207669 -0.1625011 0.3923142 0.282669 -0.09754508 0.4903932 0.207669 -0.08284294 0.4164784 0.282669 -2.7797e-7 0.4163811 0.262669 -0.01996839 0.4226706 0.282669 -2.86847e-7 0.5 0.1794527 -0.01996773 0.4980335 0.207669 -2.7797e-7 0.4163811 -0.297556 -0.01996839 0.4226706 -0.317556 -2.86847e-7 0.5 -0.2143397 -0.01996773 0.4980335 -0.242556 -0.01996713 -0.4980334 -0.242556 2.86847e-7 -0.5 -0.2143397 2.63627e-7 -0.4163811 -0.297556 -0.01996779 -0.4226704 -0.317556 -0.01996713 -0.4980334 0.207669 2.86847e-7 -0.5 0.1794527 0.2795697 0.2081907 -0.152556 0.27957 -0.2081903 -0.152556 2.63627e-7 -0.4163811 0.262669 -0.01996779 -0.4226704 0.282669 0.2795697 0.2081907 0.117669 0.27957 -0.2081903 0.117669 + + + + + + + + + + -0.6343932 0.7730106 0 -0.634393 0.7730109 0 -0.6343933 0.7730106 0 -0.3918982 -0.5865173 0.7088112 -0.4987916 -0.498792 0.7088113 -0.4987914 -0.4987922 0.7088114 -0.1376165 -0.6918438 -0.7088117 -0.2699458 -0.6517022 -0.7088114 -0.1376158 -0.6918442 -0.7088114 -0.3918983 -0.5865174 -0.7088111 -0.2699457 -0.6517022 -0.7088115 -0.4987917 -0.4987921 -0.7088112 -0.3918983 -0.5865177 -0.7088109 -0.5865182 -0.3918968 -0.7088112 -0.4987915 -0.498792 -0.7088115 -0.6517023 -0.2699455 -0.7088114 -0.5865182 -0.3918969 -0.7088112 -0.6918433 -0.1376187 -0.7088116 -0.651702 -0.2699455 -0.7088116 -0.6914468 -0.1380745 -0.70911 -0.7036247 -0.00131309 -0.7105706 -0.7040166 0.001163065 -0.7101826 -0.6908355 0.1386065 -0.7096018 -0.651703 0.2699446 -0.7088111 -0.6914079 0.1398018 -0.7088093 -0.5865182 0.3918963 -0.7088115 -0.6517027 0.269945 -0.7088113 -0.5865183 0.3918968 -0.7088112 -0.4987924 0.4987913 -0.7088112 -0.391899 0.5865169 -0.7088112 -0.4987925 0.4987915 -0.7088112 -0.2699452 0.6517028 -0.7088111 -0.3918986 0.5865172 -0.7088111 -0.1376148 0.691845 -0.7088108 -0.2699449 0.6517028 -0.7088112 0 0 -1 0 2.23898e-7 -1 0 2.44089e-7 -1 -0.7730121 -0.6343914 0 -0.7730121 -0.6343913 0 -0.5865182 0.391897 0.7088111 -0.4987924 0.4987913 0.7088114 -0.4987923 0.4987916 0.7088112 -0.994697 0.1028484 3.86987e-4 -0.9956281 0.09337615 0.002420604 -0.9945092 0.1046497 0 -0.6922908 -0.1371796 0.7084598 -0.7072311 -0.002328574 0.7069787 -0.6920359 -0.1366496 0.7088112 -0.06930738 -0.7037019 -0.707107 -0.06930822 -0.7037011 -0.7071076 1 2.77687e-7 0 1 2.77687e-7 0 -0.6918437 0.1376188 0.7088114 -0.651703 0.2699447 0.7088111 -0.6928161 0.1364942 0.7080786 0.597267 -0.8020426 0 0.5972671 -0.8020426 0 0.597267 -0.8020426 0 -0.1376149 0.6918449 0.7088109 -0.06930512 0.7037024 0.7071066 -0.06930601 0.7037022 0.7071068 -0.3918989 0.5865168 0.7088112 -0.2699451 0.6517028 0.7088111 -0.3918989 0.586517 0.7088111 -0.9569385 -0.290291 0 -0.9569385 -0.290291 0 -0.9569385 -0.2902909 0 0 5.97108e-7 1 0 1.38861e-7 1 0 4.89142e-7 1 -0.5865181 -0.3918969 0.7088113 -0.6517022 -0.2699455 0.7088114 -0.5865182 -0.3918969 0.7088112 0.4604119 2.99879e-7 0.8877055 0.4604119 2.90584e-7 0.8877055 0.4604119 2.84085e-7 0.8877055 0.6818548 -0.5159897 0.518487 0.6818463 -0.5159928 0.5184951 0.6818447 -0.5159934 0.5184967 -0.6343903 -0.773013 0 -0.6343906 -0.7730128 0 -0.6343902 -0.7730129 0 -0.7067841 -3.6214e-4 0.7074292 -0.5865182 0.3918964 0.7088115 -0.1376146 0.6918448 0.7088111 -0.06930732 -0.7037019 0.7071068 -0.1376165 -0.6918439 0.7088115 -0.06930816 -0.7037014 0.7071073 0.6818493 0.5159911 0.5184929 0.6818571 0.5159883 0.5184854 0.6818478 0.5159917 0.5184944 0.7076703 4.96666e-7 0.7065428 0.7076709 4.36843e-7 0.7065423 0.7076709 4.35285e-7 0.7065423 1 6.44172e-7 0 -0.8819222 -0.471395 0 -0.8819223 -0.4713949 0 -0.8819222 -0.471395 0 -0.9949877 -0.09999227 0.001029133 -0.9953851 -0.09596174 1.64625e-4 -0.9949128 -0.1007338 0.001188278 -0.4713987 0.8819202 0 -0.290286 -0.9569399 0 -0.2902855 -0.9569401 0 -0.2902855 -0.9569402 0 -0.9569392 0.2902885 0 -0.9569393 0.2902885 0 -0.9569392 0.2902885 0 -0.1376149 0.691845 -0.7088108 -0.06930506 0.7037028 -0.7071062 0.6818575 0.5159879 -0.5184853 0.6818491 0.5159913 -0.5184928 0.6818476 0.515992 -0.5184943 0.6818549 -0.5159896 -0.518487 0.6818468 -0.5159925 -0.5184947 0.6818563 -0.5159891 -0.5184857 0.7076709 5.18025e-7 -0.7065423 0.7076714 4.75952e-7 -0.7065417 0.7076709 5.18853e-7 -0.7065423 1 0 0 1 0 0 0.4604119 3.24432e-7 -0.8877055 0.4604119 3.30949e-7 -0.8877055 0.4604119 3.19875e-7 -0.8877055 -0.8819226 0.4713943 0 -0.8819226 0.4713944 0 -0.8819226 0.4713943 0 0.597266 0.8020432 0 0.597266 0.8020431 0 0.5972661 0.8020432 0 -0.7730118 0.6343917 0 -0.2699457 -0.6517022 0.7088115 -0.2699459 -0.6517023 0.7088112 -0.2902847 0.9569404 0 -0.2902842 0.9569405 0 -0.2902848 0.9569404 0 -0.4714003 -0.8819194 0 -0.4713999 -0.8819196 0 -0.4713998 -0.8819196 0 -0.09801191 0.9951853 -3.8043e-7 -0.09801286 0.9951852 -2.13198e-6 -0.09801191 0.9951853 -5.68066e-7 -0.09801632 -0.9951849 1.60855e-7 -0.09801632 -0.9951849 -1.62177e-7 -0.09801626 -0.9951848 0 -0.6343929 0.7730109 0 -0.3918983 -0.5865173 0.7088112 0 6.7705e-7 -1 0 3.34205e-7 -1 0 -5.35771e-7 -1 0 -1.62897e-7 -1 0 -1.16722e-6 -1 0 -1.3466e-7 -1 0 -1.94201e-6 -1 0 7.26139e-6 -1 0 7.26151e-6 -1 0 -4.09277e-6 -1 0 -2.69318e-7 -1 -0.7730122 -0.6343914 0 -0.9957892 0.09163045 0.002795159 -0.6517027 0.2699446 0.7088115 0.5972672 -0.8020424 0 -0.2699449 0.6517025 0.7088115 -0.9569385 -0.290291 0 0 -3.99966e-7 1 0 -2.23898e-7 1 0 -2.77085e-7 1 0 0 1 0 5.35771e-7 1 0 0 1 0 0 1 0 1.0104e-6 1 0 7.26139e-6 1 0 2.08782e-7 1 0 -1.16722e-6 1 -0.6517019 -0.2699454 0.7088118 0.4604119 3.14074e-7 0.8877055 0.6818562 -0.5159893 0.5184856 -0.6343907 -0.7730127 0 -0.1376154 -0.6918442 0.7088115 0.6818584 0.5159878 0.5184841 0.7076703 4.97843e-7 0.7065428 1 6.44172e-7 0 -0.8819223 -0.4713948 0 -0.9954588 -0.09519404 0 -0.2902861 -0.9569399 0 -0.9569392 0.2902885 0 -0.06930601 0.7037022 -0.7071068 0.6818588 0.5159873 -0.518484 0.6818452 -0.5159931 -0.5184962 0.7076715 4.74856e-7 -0.7065417 1 0 0 0.4604119 3.40901e-7 -0.8877055 -0.8819226 0.4713944 0 0.597266 0.8020433 0 -0.2902842 0.9569406 0 -0.4714004 -0.8819195 0 -0.09801262 0.9951853 5.71151e-7 -0.09801316 0.9951852 2.14356e-6 -0.09801262 0.9951853 3.82497e-7 -0.0980162 -0.9951848 -6.08658e-7 -0.09801632 -0.9951849 0 -0.09801614 -0.9951848 6.03696e-7 + + + + + + + + + + 0.6835938 0.08984375 0.6914063 0.05078125 0.6914063 0.08984375 0.6132813 0.05078125 0.6210938 0.04296875 0.6210938 0.05078125 0.5976563 0.08984375 0.6054688 0.09765625 0.5976563 0.09765625 0.6132813 0.08984375 0.6054688 0.09765625 0.6054688 0.08984375 0.6132813 0.08984375 0.6210938 0.09765625 0.6132813 0.09765625 0.6289063 0.08984375 0.6210938 0.09765625 0.6210938 0.08984375 0.6367188 0.08984375 0.6289063 0.09765625 0.6289063 0.08984375 0.6367188 0.08984375 0.6445313 0.09765625 0.6367188 0.09765625 0.6445313 0.08984375 0.6523438 0.09765625 0.6445313 0.09765625 0.6523438 0.08984375 0.6601563 0.09765625 0.6523438 0.09765625 0.6679688 0.08984375 0.6601563 0.09765625 0.6601563 0.08984375 0.6679688 0.08984375 0.6757813 0.09765625 0.6679688 0.09765625 0.6757813 0.08984375 0.6835938 0.09765625 0.6757813 0.09765625 0.6914063 0.08984375 0.6835938 0.09765625 0.6835938 0.08984375 0.6992188 0.08984375 0.6914063 0.09765625 0.6914063 0.08984375 0.6992188 0.08984375 0.7070313 0.09765625 0.6992188 0.09765625 0.6445313 0.09873586 0.6523438 0.09765625 0.6132813 0.1367187 0.6210938 0.08984375 0.6289063 0.05078125 0.6289063 0.08984375 0.6757813 0.05078125 0.6835938 0.04296875 0.6835938 0.05078125 0.6523438 0.08984375 0.6601563 0.05078125 0.6601563 0.08984375 0.6445313 0.04296875 0.6523438 0.05078125 0.6445313 0.05078125 0.5976563 0.08984375 0.5898438 0.09765625 0.5898438 0.08984375 0.6015625 0.15625 0.59375 0.203125 0.59375 0.1640625 0.6601563 0.04296875 0.6679688 0.05078125 0.6601563 0.05078125 0.6328125 0.171875 0.6015625 0.2109375 0.6015625 0.15625 0.7070313 0.05078125 0.7148438 0.04296875 0.7148438 0.05078125 0.6914063 0.04296875 0.6992188 0.05078125 0.6914063 0.05078125 0.6367188 0.08984375 0.6445313 0.05078125 0.6445313 0.08984375 0.6747738 0.03576993 0.6679536 0.03945618 0.6914063 0.00390625 0.6289063 0.04296875 0.6367188 0.05078125 0.6289063 0.05078125 0.6132813 0.2265625 0.671875 0.1953125 0.6914063 0.2265625 0.5898438 0.05078125 0.5859375 0.04296875 0.5898438 0.04296875 0.6132813 0.08984375 0.6210938 0.05078125 0.6210938 0.08984375 0.6210938 0.04296875 0.6289063 0.05078125 0.6210938 0.05078125 0.6367188 0.05078125 0.6445313 0.04296875 0.6445313 0.05078125 0.6523438 0.04296875 0.6601563 0.05078125 0.6523438 0.05078125 0.6679688 0.05078125 0.6757813 0.04296875 0.6757813 0.05078125 0.6835938 0.04296875 0.6914063 0.05078125 0.6835938 0.05078125 0.6992188 0.05078125 0.7070313 0.04296875 0.7070313 0.05078125 0.5898438 0.04296875 0.5976563 0.05078125 0.5898438 0.05078125 0.71875 0.04296875 0.7148438 0.05078125 0.7148438 0.04296875 0.6914063 0 0.6132813 0.00390625 0.6132813 0 0.671875 0.171875 0.6328125 0.1953125 0.6328125 0.171875 0.6289063 0.08984375 0.6367188 0.05078125 0.6367188 0.08984375 0.6445313 0.08984375 0.6523438 0.05078125 0.6523438 0.08984375 0.6914063 0.08984375 0.6992188 0.05078125 0.6992188 0.08984375 0.6054688 0.08984375 0.5976563 0.05078125 0.6054688 0.05078125 0.6601563 0.08984375 0.6679688 0.05078125 0.6679688 0.08984375 0.7070313 0.08984375 0.7148438 0.09765625 0.7070313 0.09765625 0.7148438 0.08984375 0.71875 0.09765625 0.7148438 0.09765625 0.5898438 0.08984375 0.5859375 0.09765625 0.5859375 0.08984375 0.6914063 0.140625 0.6132813 0.1367187 0.6914063 0.1367187 0.703125 0.15625 0.7109375 0.203125 0.703125 0.2109375 0.671875 0.171875 0.6132813 0.140625 0.6914063 0.140625 0.6679688 0.08984375 0.6757813 0.05078125 0.6757813 0.08984375 0.703125 0.15625 0.671875 0.1953125 0.671875 0.171875 0.6757813 0.08984375 0.6835938 0.05078125 0.6835938 0.08984375 0.6054688 0.04296875 0.6132813 0.05078125 0.6054688 0.05078125 0.5976563 0.05078125 0.6054688 0.04296875 0.6054688 0.05078125 0.6992188 0.08984375 0.7070313 0.05078125 0.7070313 0.08984375 0.6132813 0.08984375 0.6054688 0.05078125 0.6132813 0.05078125 0.7070313 0.05078125 0.7148438 0.0546875 0.71875 0.05078125 0.5859375 0.08984375 0.5859375 0.05078125 0.5976563 0.08984375 0.6835938 0.08984375 0.6835938 0.05078125 0.6914063 0.05078125 0.6132813 0.05078125 0.6132813 0.04296875 0.6210938 0.04296875 0.5976563 0.08984375 0.6054688 0.08984375 0.6054688 0.09765625 0.6132813 0.08984375 0.6132813 0.09765625 0.6054688 0.09765625 0.6132813 0.08984375 0.6210938 0.08984375 0.6210938 0.09765625 0.6289063 0.08984375 0.6289063 0.09765625 0.6210938 0.09765625 0.6367188 0.08984375 0.6367188 0.09765625 0.6289063 0.09765625 0.6367188 0.08984375 0.6445313 0.08984375 0.6445313 0.09765625 0.6445313 0.08984375 0.6523438 0.08984375 0.6523438 0.09765625 0.6523438 0.08984375 0.6601563 0.08984375 0.6601563 0.09765625 0.6679688 0.08984375 0.6679688 0.09765625 0.6601563 0.09765625 0.6679688 0.08984375 0.6757813 0.08984375 0.6757813 0.09765625 0.6757813 0.08984375 0.6835938 0.08984375 0.6835938 0.09765625 0.6914063 0.08984375 0.6914063 0.09765625 0.6835938 0.09765625 0.6992188 0.08984375 0.6992188 0.09765625 0.6914063 0.09765625 0.6992188 0.08984375 0.7070313 0.08984375 0.7070313 0.09765625 0.6523438 0.09765625 0.6601563 0.09854209 0.6914063 0.1367187 0.6601563 0.09854209 0.6679148 0.1013388 0.6914063 0.1367187 0.6679148 0.1013388 0.6747011 0.10494 0.6914063 0.1367187 0.6747011 0.10494 0.6806643 0.1098146 0.6914063 0.1367187 0.6806643 0.1098146 0.685575 0.1157753 0.6914063 0.1367187 0.685575 0.1157753 0.6892446 0.1225928 0.6914063 0.1367187 0.6892446 0.1225928 0.6909218 0.1300054 0.6914063 0.1367187 0.6914063 0.1367187 0.6132813 0.1367187 0.6523438 0.09765625 0.6132813 0.1367187 0.6142691 0.1299437 0.6165477 0.1225457 0.6165477 0.1225457 0.6205933 0.1157407 0.6132813 0.1367187 0.6205933 0.1157407 0.6254902 0.1097899 0.6132813 0.1367187 0.6254902 0.1097899 0.6314379 0.1049224 0.6132813 0.1367187 0.6314379 0.1049224 0.6382079 0.101325 0.6132813 0.1367187 0.6382079 0.101325 0.6445313 0.09873586 0.6132813 0.1367187 0.6210938 0.08984375 0.6210938 0.05078125 0.6289063 0.05078125 0.6757813 0.05078125 0.6757813 0.04296875 0.6835938 0.04296875 0.6523438 0.08984375 0.6523438 0.05078125 0.6601563 0.05078125 0.6445313 0.04296875 0.6523438 0.04296875 0.6523438 0.05078125 0.5976563 0.08984375 0.5976563 0.09765625 0.5898438 0.09765625 0.6015625 0.15625 0.6015625 0.2109375 0.59375 0.203125 0.6601563 0.04296875 0.6679688 0.04296875 0.6679688 0.05078125 0.6328125 0.171875 0.6328125 0.1953125 0.6015625 0.2109375 0.7070313 0.05078125 0.7070313 0.04296875 0.7148438 0.04296875 0.6914063 0.04296875 0.6992188 0.04296875 0.6992188 0.05078125 0.6367188 0.08984375 0.6367188 0.05078125 0.6445313 0.05078125 0.6679536 0.03945618 0.6601563 0.04235351 0.6914063 0.00390625 0.6601563 0.04235351 0.6523438 0.04296875 0.6914063 0.00390625 0.6523438 0.04296875 0.6445313 0.04219973 0.6132813 0.00390625 0.6445313 0.04219973 0.6380147 0.03946441 0.6132813 0.00390625 0.6380147 0.03946441 0.6311754 0.03578418 0.6132813 0.00390625 0.6311754 0.03578418 0.6251654 0.03080129 0.6132813 0.00390625 0.6251654 0.03080129 0.620215 0.02470719 0.6132813 0.00390625 0.620215 0.02470719 0.6159337 0.01773637 0.6132813 0.00390625 0.6159337 0.01773637 0.6140136 0.01015651 0.6132813 0.00390625 0.6132813 0.00390625 0.6914063 0.00390625 0.6523438 0.04296875 0.6914063 0.00390625 0.6910508 0.01015782 0.6893759 0.01772797 0.6856948 0.02469295 0.6914063 0.00390625 0.6893759 0.01772797 0.6856948 0.02469295 0.6807643 0.03078502 0.6914063 0.00390625 0.6807643 0.03078502 0.6747738 0.03576993 0.6914063 0.00390625 0.6289063 0.04296875 0.6367188 0.04296875 0.6367188 0.05078125 0.6132813 0.2265625 0.6328125 0.1953125 0.671875 0.1953125 0.5898438 0.05078125 0.5859375 0.05078125 0.5859375 0.04296875 0.6132813 0.08984375 0.6132813 0.05078125 0.6210938 0.05078125 0.6210938 0.04296875 0.6289063 0.04296875 0.6289063 0.05078125 0.6367188 0.05078125 0.6367188 0.04296875 0.6445313 0.04296875 0.6523438 0.04296875 0.6601563 0.04296875 0.6601563 0.05078125 0.6679688 0.05078125 0.6679688 0.04296875 0.6757813 0.04296875 0.6835938 0.04296875 0.6914063 0.04296875 0.6914063 0.05078125 0.6992188 0.05078125 0.6992188 0.04296875 0.7070313 0.04296875 0.5898438 0.04296875 0.5976563 0.04296875 0.5976563 0.05078125 0.71875 0.04296875 0.71875 0.05078125 0.7148438 0.05078125 0.6914063 0 0.6914063 0.00390625 0.6132813 0.00390625 0.671875 0.171875 0.671875 0.1953125 0.6328125 0.1953125 0.6289063 0.08984375 0.6289063 0.05078125 0.6367188 0.05078125 0.6445313 0.08984375 0.6445313 0.05078125 0.6523438 0.05078125 0.6914063 0.08984375 0.6914063 0.05078125 0.6992188 0.05078125 0.6054688 0.08984375 0.5976563 0.08984375 0.5976563 0.05078125 0.6601563 0.08984375 0.6601563 0.05078125 0.6679688 0.05078125 0.7070313 0.08984375 0.7148438 0.08984375 0.7148438 0.09765625 0.7148438 0.08984375 0.71875 0.08984375 0.71875 0.09765625 0.5898438 0.08984375 0.5898438 0.09765625 0.5859375 0.09765625 0.6914063 0.140625 0.6132813 0.140625 0.6132813 0.1367187 0.703125 0.15625 0.7109375 0.1640625 0.7109375 0.203125 0.671875 0.171875 0.6328125 0.171875 0.6132813 0.140625 0.6679688 0.08984375 0.6679688 0.05078125 0.6757813 0.05078125 0.703125 0.15625 0.703125 0.2109375 0.671875 0.1953125 0.6757813 0.08984375 0.6757813 0.05078125 0.6835938 0.05078125 0.6054688 0.04296875 0.6132813 0.04296875 0.6132813 0.05078125 0.5976563 0.05078125 0.5976563 0.04296875 0.6054688 0.04296875 0.6992188 0.08984375 0.6992188 0.05078125 0.7070313 0.05078125 0.6132813 0.08984375 0.6054688 0.08984375 0.6054688 0.05078125 0.71875 0.05078125 0.71875 0.08984375 0.7070313 0.05078125 0.71875 0.08984375 0.7148438 0.08984375 0.7070313 0.08984375 0.7070313 0.05078125 0.71875 0.08984375 0.7070313 0.08984375 0.5898438 0.05078125 0.5976563 0.05078125 0.5859375 0.05078125 0.5976563 0.05078125 0.5976563 0.08984375 0.5859375 0.05078125 0.5976563 0.08984375 0.5898438 0.0859375 0.5859375 0.08984375 + + + + + + + + + + + + + + +

    22 0 0 54 1 1 24 2 2 34 3 3 37 4 4 36 5 5 0 6 6 3 7 7 1 8 8 4 9 9 3 7 10 2 10 11 4 9 12 7 11 13 5 12 14 8 13 15 7 11 16 6 14 17 10 15 18 9 16 19 8 13 20 10 15 21 13 17 22 11 18 23 12 19 24 15 20 25 13 17 26 14 21 27 17 22 28 15 20 29 18 23 30 17 22 31 16 24 32 18 23 33 21 25 34 19 26 35 20 27 36 23 28 37 21 25 38 24 29 39 23 28 40 22 30 41 26 31 42 25 32 43 24 29 44 26 31 45 29 33 46 27 34 47 13 35 48 15 36 49 71 37 50 6 38 51 38 38 52 8 39 53 50 40 54 53 41 55 52 42 56 14 43 57 46 44 58 16 45 59 43 46 60 44 47 61 42 48 62 0 6 63 71 49 64 68 50 65 70 51 66 73 52 67 69 51 68 47 53 69 48 54 70 46 55 71 75 56 72 76 57 73 70 58 74 58 59 75 61 60 76 63 61 77 55 62 78 56 63 79 54 64 80 10 65 81 42 66 82 12 67 83 51 68 84 49 69 85 61 70 86 39 71 87 40 72 88 38 73 89 76 74 90 78 75 91 60 76 92 72 77 93 76 78 94 77 79 95 4 80 96 36 81 97 6 82 98 37 4 99 38 73 100 36 5 101 40 72 102 43 46 103 42 48 104 45 83 105 46 55 106 44 47 107 48 54 108 51 84 109 50 40 110 53 41 111 54 64 112 52 42 113 56 63 114 59 85 115 58 59 116 77 86 117 30 87 118 72 88 119 60 89 120 63 90 121 61 91 122 60 92 123 77 93 124 76 94 125 74 95 126 79 95 127 75 95 128 8 96 129 40 97 130 10 98 131 12 99 132 44 100 133 14 101 134 24 102 135 56 102 136 26 102 137 2 103 138 30 104 139 32 105 140 16 106 141 48 107 142 18 108 143 28 109 144 65 110 145 29 33 146 67 111 147 64 112 148 65 113 149 68 114 150 70 115 151 69 116 152 64 117 153 71 118 154 65 119 155 64 120 156 62 121 157 60 120 158 74 122 159 70 123 160 64 124 161 18 125 162 50 126 163 20 127 164 64 128 165 78 129 166 74 130 167 20 131 168 52 131 169 22 131 170 33 132 171 34 3 172 32 133 173 30 87 174 33 132 175 32 133 176 26 134 177 58 135 178 28 136 179 4 137 180 32 138 181 34 139 182 58 140 183 63 141 184 62 142 185 69 143 186 73 144 187 0 145 188 22 0 189 52 146 190 54 1 191 34 3 192 35 147 193 37 4 194 0 6 195 2 10 196 3 7 197 4 9 198 5 12 199 3 7 200 4 9 201 6 14 202 7 11 203 8 13 204 9 16 205 7 11 206 10 15 207 11 18 208 9 16 209 10 15 210 12 19 211 13 17 212 12 19 213 14 21 214 15 20 215 14 21 216 16 24 217 17 22 218 18 23 219 19 26 220 17 22 221 18 23 222 20 27 223 21 25 224 20 27 225 22 30 226 23 28 227 24 29 228 25 32 229 23 28 230 26 31 231 27 34 232 25 32 233 26 31 234 28 109 235 29 33 236 15 36 237 17 148 238 65 149 239 17 148 240 19 150 241 65 149 242 19 150 243 21 151 244 65 149 245 21 151 246 23 152 247 65 149 248 23 152 249 25 153 250 65 149 251 25 153 252 27 154 253 65 149 254 27 154 255 29 155 256 65 149 257 65 149 258 71 37 259 15 36 260 71 37 261 1 156 262 3 157 263 3 157 264 5 158 265 71 37 266 5 158 267 7 35 268 71 37 269 7 35 270 9 35 271 71 37 272 9 35 273 11 35 274 71 37 275 11 35 276 13 35 277 71 37 278 6 38 279 36 159 280 38 38 281 50 40 282 51 84 283 53 41 284 14 43 285 44 160 286 46 44 287 43 46 288 45 83 289 44 47 290 0 6 291 1 8 292 71 49 293 70 51 294 76 51 295 73 52 296 47 53 297 49 161 298 48 54 299 75 56 300 79 162 301 76 57 302 58 59 303 59 85 304 61 60 305 55 62 306 57 163 307 56 63 308 10 65 309 40 164 310 42 66 311 49 69 312 47 165 313 61 70 314 47 165 315 45 166 316 61 70 317 45 166 318 43 167 319 77 168 320 43 167 321 41 169 322 77 168 323 41 169 324 39 170 325 77 168 326 39 170 327 37 171 328 77 168 329 37 171 330 35 172 331 77 168 332 35 172 333 33 170 334 77 168 335 33 170 336 31 170 337 77 168 338 77 168 339 61 70 340 45 166 341 61 70 342 59 173 343 57 174 344 55 170 345 61 70 346 57 174 347 55 170 348 53 175 349 61 70 350 53 175 351 51 68 352 61 70 353 39 71 354 41 176 355 40 72 356 76 74 357 79 177 358 78 75 359 72 77 360 73 178 361 76 78 362 4 80 363 34 179 364 36 81 365 37 4 366 39 71 367 38 73 368 40 72 369 41 176 370 43 46 371 45 83 372 47 53 373 46 55 374 48 54 375 49 161 376 51 84 377 53 41 378 55 62 379 54 64 380 56 63 381 57 163 382 59 85 383 77 86 384 31 180 385 30 87 386 60 89 387 62 181 388 63 90 389 60 92 390 61 182 391 77 93 392 74 95 393 78 183 394 79 95 395 8 96 396 38 184 397 40 97 398 12 99 399 42 185 400 44 100 401 24 102 402 54 102 403 56 102 404 2 103 405 0 186 406 30 104 407 16 106 408 46 187 409 48 107 410 28 109 411 67 188 412 65 110 413 67 111 414 66 189 415 64 112 416 68 114 417 71 190 418 70 115 419 64 117 420 70 191 421 71 118 422 64 120 423 66 192 424 62 121 425 74 122 426 75 193 427 70 123 428 18 125 429 48 194 430 50 126 431 64 128 432 60 195 433 78 129 434 20 131 435 50 131 436 52 131 437 33 132 438 35 147 439 34 3 440 30 87 441 31 180 442 33 132 443 26 134 444 56 196 445 58 135 446 4 137 447 2 197 448 32 138 449 62 142 450 66 198 451 58 140 452 66 198 453 67 199 454 28 200 455 58 140 456 66 198 457 28 200 458 72 201 459 30 202 460 73 144 461 30 202 462 0 145 463 73 144 464 0 145 465 68 203 466 69 143 467

    +
    +
    +
    + + + + 0 2.25 0.1901126 -1.52002e-7 2.440548 0.1025 4.08359e-7 1.075447 0.1025 0 0.1136917 0.1025 0 3.469546 0.1025 0 2.25 -0.1901126 -1.52002e-7 2.440548 -0.1025 4.08359e-7 1.075447 -0.1025 0 0.1136917 -0.1025 0 3.469546 -0.1025 3.09736e-7 0.7086623 0.1025 3.09736e-7 0.7086623 -0.1025 1.78937e-7 0.4805372 -0.1025 1.78937e-7 0.4805372 0.1025 0 3.085717 0.1025 0 2.824327 0.1025 0 3.6 0.28 0 3.085717 -0.1025 0 2.824327 -0.1025 0 3.6 -0.28 -1.91969e-7 2.312293 0.28 0 2.956147 0.28 -0.15 3.372954 0.04624998 -0.15 3.181039 0.04624998 -1.91969e-7 2.312293 -0.28 0 2.956147 -0.28 -0.1500001 2.535223 0.04624998 -0.15 3.372954 -0.04624998 -0.1500001 2.727113 0.04624998 -0.15 3.181039 -0.04624998 -0.1499996 0.9852741 0.04624998 -0.1500001 2.535223 -0.04624998 -0.1500001 2.727113 -0.04624998 -0.1499996 0.8018819 0.04624998 -0.1499999 0.2061649 0.04624998 -0.1499996 0.9852741 -0.04624998 -0.1499998 0.3895877 0.04624998 -0.1499996 0.8018819 -0.04624998 -0.0975449 1.259607 0.2252249 -0.1499999 0.2061649 -0.04624998 -0.1499998 0.3895877 -0.04624998 -0.1913415 1.28806 0.2252249 -0.0975449 1.259607 -0.2252249 -0.1913415 1.28806 -0.2252249 -0.2777847 1.334266 -0.2252249 -0.3535534 1.396447 -0.2252249 -0.4157344 1.472215 -0.2252249 -0.4619392 1.558658 -0.2252249 -0.4903927 1.652455 -0.2252249 -0.5000002 1.75 -0.2252249 -0.4903924 1.847545 -0.2252249 -0.4619392 1.941342 -0.2252249 -0.4157344 2.027785 -0.2252249 -0.3535533 2.103554 -0.2252249 -0.2777847 2.165735 -0.2252249 -0.1913415 2.21194 -0.2252249 -0.0975449 2.240393 -0.2252249 -2.5 0 -0.3 -2.5 3.6 -0.3 -0.1076551 2.291218 -0.3 -0.2111718 2.259816 -0.3 -0.1076541 1.208783 -0.3 -0.3065744 2.208822 -0.3 -0.3901959 2.140196 -0.3 -0.4588215 2.056575 -0.3 -0.5098147 1.961173 -0.3 -0.5412172 1.857655 -0.3 -0.5518206 1.75 -0.3 -0.5098149 1.538828 -0.3 -0.5412175 1.642346 -0.3 -0.4588212 1.443425 -0.3 -0.3901962 1.359805 -0.3 -0.3065744 1.291179 -0.3 -0.2111722 1.240185 -0.3 -0.2777847 1.334266 0.2252249 -0.3535534 1.396447 0.2252249 -0.4157344 1.472215 0.2252249 -0.4619392 1.558658 0.2252249 -0.4903927 1.652455 0.2252249 -0.5000002 1.75 0.2252249 -0.4903924 1.847545 0.2252249 -0.4619392 1.941342 0.2252249 -0.4157344 2.027785 0.2252249 -0.3535533 2.103554 0.2252249 -0.2777847 2.165735 0.2252249 -0.1913415 2.21194 0.2252249 -0.0975449 2.240393 0.2252249 -2.5 0 0.3 -2.5 3.6 0.3 -0.1076551 2.291218 0.3 -0.2111718 2.259816 0.3 -0.1076541 1.208783 0.3 -0.3065744 2.208822 0.3 -0.3901959 2.140196 0.3 -0.4588215 2.056575 0.3 -0.5098147 1.961173 0.3 -0.5412172 1.857655 0.3 -0.5518206 1.75 0.3 -0.5098149 1.538828 0.3 -0.5412175 1.642346 0.3 -0.4588212 1.443425 0.3 -0.3901962 1.359805 0.3 -0.3065744 1.291179 0.3 -0.2111722 1.240185 0.3 -0.01996612 2.248034 0.2252249 4.69387e-7 1.25 0.1901128 -0.01996552 1.251966 0.2252249 -0.01996749 2.299854 0.3 5.01112e-7 1.187707 0.28 -0.01996672 1.200146 0.3 -0.01996612 2.248034 -0.2252249 4.69387e-7 1.25 -0.1901128 -0.01996552 1.251966 -0.2252249 -0.01996749 2.299854 -0.3 5.01112e-7 1.187707 -0.28 -0.01996672 1.200146 -0.3 -0.0199685 0 -0.3 0 0 -0.28 -0.0199685 3.6 -0.3 -0.0199685 0 0.3 0 0 0.28 -0.0199685 3.6 0.3 -0.7168543 1.601754 0.3 -0.7168543 1.601754 -0.3 -0.793989 1.532466 -0.3 -0.793989 1.532466 0.3 -0.800998 1.719646 0.29 -2.299443 1.727324 0.29 -2.299443 1.732078 0.29 -0.7895248 1.739647 0.29 -0.8395245 1.639647 0.29 -2.349443 1.632078 0.29 -2.349443 1.627324 0.29 -0.8509981 1.619646 0.29 -0.800998 1.719646 -0.29 -2.299443 1.727324 -0.29 -2.299443 1.732078 -0.29 -0.7895248 1.739647 -0.29 -0.8395245 1.639647 -0.29 -2.349443 1.632078 -0.29 -2.349443 1.627324 -0.29 -0.8509981 1.619646 -0.29 -0.8895249 1.539647 -0.29 -2.399442 1.532078 -0.29 -2.399442 1.527324 -0.29 -0.9009982 1.519646 -0.29 -0.1025001 1.065 -0.29 -0.2545286 1.101132 -0.29 -0.2464555 1.124981 -0.29 -0.1025001 1.068555 -0.29 -0.1525005 0.9685549 -0.29 -0.2964556 1.024982 -0.29 -0.3045286 1.001132 -0.29 -0.1525005 0.965 -0.29 -0.2024998 0.8685547 -0.29 -0.3464557 0.9249814 -0.29 -0.3545283 0.9011322 -0.29 -0.2024998 0.8650001 -0.29 -0.8895249 1.539647 0.29 -2.399442 1.532078 0.29 -2.399442 1.527324 0.29 -0.9009982 1.519646 0.29 -0.1025001 1.065 0.29 -0.2545286 1.101132 0.29 -0.2464555 1.124981 0.29 -0.1025001 1.068555 0.29 -0.1525005 0.9685549 0.29 -0.2964556 1.024982 0.29 -0.3045286 1.001132 0.29 -0.1525005 0.965 0.29 -0.8078106 1.704702 -0.3 -2.314443 1.717202 -0.3 -2.314443 1.742202 -0.3 -0.7828105 1.754702 -0.3 -0.6782872 1.636398 -0.3 -0.08750009 1.05 -0.3 -0.2625001 1.0875 -0.3 -0.2374999 1.1375 -0.3 -0.08750009 1.075 -0.3 -0.7554213 1.567111 -0.3 -0.8328103 1.654702 -0.3 -2.364443 1.642202 -0.3 -2.364443 1.617202 -0.3 -0.8578106 1.604702 -0.3 -0.1375005 0.975 -0.3 -0.2875 1.0375 -0.3 -0.3125001 0.9875 -0.3 -0.1375005 0.9500001 -0.3 -0.8325563 1.497822 -0.3 -0.8828107 1.554702 -0.3 -2.414442 1.542202 -0.3 -2.414442 1.517202 -0.3 -0.9078107 1.504702 -0.3 -0.8711233 1.463179 -0.3 -0.1874998 0.8750001 -0.3 -0.3375002 0.9375 -0.3 -0.3624998 0.8874998 -0.3 -0.1874998 0.85 -0.3 -0.09874212 2.536093 -0.29 -0.2565256 2.502283 -0.29 -0.8027049 1.884098 -0.29 -2.3032 1.871648 -0.29 -2.3032 1.868949 -0.29 -0.7878426 1.856582 -0.29 -0.2442126 2.471882 -0.29 -0.09874206 2.532495 -0.29 -0.148742 2.632494 -0.29 -0.2942119 2.571882 -0.29 -0.8378435 1.956581 -0.29 -2.3532 1.968949 -0.29 -2.3532 1.971648 -0.29 -0.8527053 1.984098 -0.29 -0.3065256 2.602283 -0.29 -0.148742 2.636093 -0.29 -0.1987422 2.732494 -0.29 -0.3442123 2.671883 -0.29 -0.8878433 2.056582 -0.29 -2.4032 2.068949 -0.29 -2.4032 2.071649 -0.29 -0.902705 2.084099 -0.29 -0.3565258 2.702283 -0.29 -0.1987422 2.736094 -0.29 -0.2024998 0.8685547 0.29 -0.3464557 0.9249814 0.29 -0.3545283 0.9011322 0.29 -0.2024998 0.8650001 0.29 -0.8078106 1.704702 0.3 -2.314443 1.717202 0.3 -2.314443 1.742202 0.3 -0.7828105 1.754702 0.3 -0.6782872 1.636398 0.3 -0.08750009 1.05 0.3 -0.2625001 1.0875 0.3 -0.2374999 1.1375 0.3 -0.08750009 1.075 0.3 -0.7554213 1.567111 0.3 -0.8328103 1.654702 0.3 -2.364443 1.642202 0.3 -2.364443 1.617202 0.3 -0.8578106 1.604702 0.3 -0.1375005 0.975 0.3 -0.2875 1.0375 0.3 -0.3125001 0.9875 0.3 -0.1375005 0.9500001 0.3 -0.08750009 2.55 -0.3 -0.2625001 2.5125 -0.3 -0.8078107 1.895298 -0.3 -2.314443 1.882797 -0.3 -2.314443 1.857798 -0.3 -0.7828105 1.845298 -0.3 -0.2375006 2.4625 -0.3 -0.08749985 2.525 -0.3 -0.1374999 2.625 -0.3 -0.2874999 2.5625 -0.3 -0.8328113 1.945297 -0.3 -2.364443 1.957798 -0.3 -2.364443 1.982798 -0.3 -0.8578112 1.995298 -0.3 -0.3125 2.6125 -0.3 -0.1374999 2.65 -0.3 -0.1875001 2.725 -0.3 -0.3375003 2.6625 -0.3 -0.8828111 2.045298 -0.3 -2.414442 2.057798 -0.3 -2.414443 2.082798 -0.3 -0.9078108 2.095299 -0.3 -0.3625002 2.7125 -0.3 -0.1875001 2.75 -0.3 -0.8325563 1.497822 0.3 -0.8828107 1.554702 0.3 -2.414442 1.542202 0.3 -2.414442 1.517202 0.3 -0.9078107 1.504702 0.3 -0.8711233 1.463179 0.3 -0.1874998 0.8750001 0.3 -0.3375002 0.9375 0.3 -0.3624998 0.8874998 0.3 -0.1874998 0.85 0.3 -0.09874212 2.536093 0.29 -0.2565256 2.502283 0.29 -0.8027049 1.884098 0.29 -2.3032 1.871648 0.29 -2.3032 1.868949 0.29 -0.7878426 1.856582 0.29 -0.2442126 2.471882 0.29 -0.09874206 2.532495 0.29 -0.148742 2.632494 0.29 -0.2942119 2.571882 0.29 -0.8378435 1.956581 0.29 -2.3532 1.968949 0.29 -2.3532 1.971648 0.29 -0.8527053 1.984098 0.29 -0.3065256 2.602283 0.29 -0.148742 2.636093 0.29 -0.1987422 2.732494 0.29 -0.3442123 2.671883 0.29 -0.8878433 2.056582 0.29 -2.4032 2.068949 0.29 -2.4032 2.071649 0.29 -0.902705 2.084099 0.29 -0.3565258 2.702283 0.29 -0.1987422 2.736094 0.29 -0.08750009 2.55 0.3 -0.2625001 2.5125 0.3 -0.8078107 1.895298 0.3 -2.314443 1.882797 0.3 -2.314443 1.857798 0.3 -0.7828105 1.845298 0.3 -0.2375006 2.4625 0.3 -0.08749985 2.525 0.3 -0.1374999 2.625 0.3 -0.2874999 2.5625 0.3 -0.8328113 1.945297 0.3 -2.364443 1.957798 0.3 -2.364443 1.982798 0.3 -0.8578112 1.995298 0.3 -0.3125 2.6125 0.3 -0.1374999 2.65 0.3 -0.1875001 2.725 0.3 -0.3375003 2.6625 0.3 -0.8828111 2.045298 0.3 -2.414442 2.057798 0.3 -2.414443 2.082798 0.3 -0.9078108 2.095299 0.3 -0.3625002 2.7125 0.3 -0.1875001 2.75 0.3 + + + + + + + + + + 0.3145374 0.7593539 0.5696033 0.4566342 0.6834017 0.5696027 0.3145368 0.7593542 0.5696033 0.6834027 0.4566314 0.5696039 0.7593544 0.3145365 0.5696032 0.6834021 0.4566323 0.5696039 0 0 1 0 0 1 0 0 1 0.3511235 -1.67326e-7 -0.9363292 0.3511235 -1.62951e-7 -0.9363292 0.3511235 -1.76222e-7 -0.9363293 0.4156916 0.3672803 0.8320491 0.4156867 0.367279 0.8320521 0.415706 0.3672839 0.8320403 0.8819228 -0.4713941 0 0.8819228 -0.4713941 0 -1 0 0 0.3511235 0 -0.9363293 0.3511235 0 -0.9363293 0.3511235 0 -0.9363292 0.3511237 0 0.9363291 0.3511236 0 0.9363291 0.3511238 0 0.9363291 0 -1 0 0.002777755 -0.5541474 0.832414 0.536346 0.8439983 0 0.536346 0.8439983 0 0.536346 0.8439982 0 0.3511235 0 0.9363292 0.3511235 0 0.9363292 0.3511235 0 0.9363293 0 0 1 0 1.92734e-6 1 0 1.99867e-6 1 0.5811843 0.5811857 0.5696034 0.4566344 0.6834017 0.5696026 0.5811844 0.5811857 0.5696033 1 -5.50439e-7 -2.50955e-7 1 -4.68813e-7 0 1 -2.29155e-7 0 0.3511235 0 0.9363293 0.3511235 0 0.9363293 0.3511235 -1.26799e-7 0.9363293 0.8219191 -1.15571e-6 0.5696045 0.806126 -0.1603518 0.5696036 0.821919 -6.2664e-7 0.5696045 0.5337434 0.8456465 0 0.5337436 0.8456465 0 0.5337432 0.8456466 0 0.3511235 -1.67326e-7 0.9363292 0.3511235 -1.62951e-7 0.9363292 0.3511235 -1.58473e-7 0.9363292 0 0 -1 0 0 -1 0 0 -1 0.1603493 0.8061268 -0.5696032 0.3145368 0.7593542 -0.5696033 0.3145374 0.7593539 -0.5696034 0.4566342 0.6834017 -0.5696029 0.4566346 0.6834017 -0.5696026 0.5811844 0.5811856 -0.5696035 0.6834021 0.4566323 -0.5696039 0.6834027 0.4566314 -0.5696039 0.7593544 0.3145365 -0.569603 0.7593539 0.3145374 -0.5696034 0.8061259 0.1603522 -0.5696036 0.8061262 0.1603509 -0.5696037 0.8219191 -1.18673e-6 -0.5696043 0.806126 -0.1603518 -0.5696036 0.8061254 -0.1603525 -0.5696043 0.7593542 -0.3145361 -0.5696039 0.7593543 -0.3145356 -0.5696038 0.6834028 -0.4566321 -0.5696032 0.6834021 -0.4566323 -0.5696039 0.5811858 -0.5811836 -0.569604 0.5811854 -0.5811836 -0.5696045 0.4566357 -0.6833997 -0.569604 0.4566341 -0.6834009 -0.569604 0.3145351 -0.7593545 -0.5696038 0.3145343 -0.7593545 -0.5696043 0.160346 -0.8061259 -0.5696054 0 0 1 0.7730125 0.6343908 0 0.7730117 0.6343917 0 0.7730116 0.6343919 0 1 5.09293e-7 0 1 5.09294e-7 0 0 1 0 1 -2.43718e-7 0 1 -2.43718e-7 0 1 -2.43718e-7 0 0.9569385 0.2902909 0 0.9951844 -0.09802114 0 0.9951844 -0.09802138 0 0.9951843 -0.09802138 0 0.08068132 -0.8192392 -0.5677479 0.08068323 -0.8192395 -0.5677472 1 -5.73751e-7 1.59682e-7 1 -2.29156e-7 0 1 -5.73752e-7 -1.59682e-7 0.6343905 0.7730128 0 0.0980128 -0.9951853 -9.00984e-7 0.09801453 -0.995185 -3.33873e-6 0.09801298 -0.9951852 -7.31142e-7 0.5811856 -0.5811837 0.5696042 0.6834022 -0.4566323 0.5696038 0.6834028 -0.456632 0.5696033 0.5546735 0 0.8320681 0.5546838 0 0.8320612 0.5546501 0 0.8320838 0.7593541 -0.3145361 0.5696038 0.7593544 -0.3145357 0.5696037 1 0 0 1 0 0 1 0 0 0.2902861 -0.9569399 0 0.2902861 -0.9569399 0 1 -1.62506e-7 0 1 -1.62506e-7 0 1 -1.62506e-7 0 0 0 1 0 2.19782e-7 1 0 0 1 0.9569391 -0.2902891 0 0.9569392 -0.2902885 0 0.9569392 -0.2902884 0 0.5247786 0.8512388 0 0.5247787 0.8512387 0 0.7076854 -1.05085e-6 0.7065278 0.7076636 -3.16629e-7 0.7065496 0.7076632 -3.05197e-7 0.7065499 0.7076845 0 0.7065287 0.7076849 0 0.7065283 0.7076739 5.63803e-7 0.7065392 0.734586 0.5576849 0.3864855 0.7345733 0.5576928 0.3864982 0.7345888 0.5576832 0.3864827 0.7345755 -0.5576897 0.3864986 0.7345896 -0.5576811 0.3864841 0.7345928 -0.5576792 0.3864808 0.1603491 0.8061268 0.5696033 0.08068722 0.8192399 0.5677462 0.0806868 0.81924 0.5677458 -0.4156923 -0.3672716 0.8320526 -0.4156948 -0.3672745 0.8320501 -0.4156946 -0.3672742 0.8320503 1 2.50967e-7 0 1 1.40723e-6 0 1 2.50964e-7 0 0 0 -1 0 1.4878e-7 -1 0 0 -1 -0.247269 -0.5950805 0.7646812 -0.2059103 -0.523135 0.827001 -0.2031505 -0.5182729 0.8307365 0.08068764 0.8192399 -0.5677461 0.08068782 0.8192401 -0.5677457 0.7345755 -0.5576897 -0.3864986 0.7345896 -0.5576811 -0.3864841 0.7345715 -0.557692 -0.3865026 0.7345736 0.5576925 -0.3864981 0.7345868 0.5576841 -0.386485 0.7345898 0.5576822 -0.3864821 0.7076739 5.53942e-7 -0.7065393 0.7076845 0 -0.7065287 0.7076632 0 -0.70655 0.7076854 -1.05085e-6 -0.7065278 0.7076636 -3.16629e-7 -0.7065496 0.7076857 -1.0599e-6 -0.7065275 0.1284115 0.5448601 0.8286362 0.1369335 0.6363362 0.7591611 0.1276369 0.5370348 0.833848 -0.247272 -0.5950862 0.7646757 -0.2059102 -0.5231365 0.8270002 -0.2031501 -0.518274 0.8307358 0.4713991 -0.88192 0 0.4713975 -0.8819208 0 0.4713972 -0.881921 0 0.002777814 -0.5541442 0.8324162 -0.5547027 0 0.8320487 -0.5546967 0 0.8320526 -0.5547119 0 0.8320425 -0.4156932 -0.3672752 0.8320505 -0.4156932 -0.3672751 0.8320506 -0.4156969 -0.3672764 0.8320482 0.005794823 0.6984466 -0.7156388 0.5546735 0 -0.8320681 0.5546838 0 -0.8320612 0.5546907 0 -0.8320566 0.002777576 -0.5541462 -0.8324148 0.415695 0.3672761 0.8320492 0.4156937 0.3672749 0.8320505 0.4156946 0.3672727 0.832051 0.1369335 0.6363362 -0.7591612 0.1284115 0.5448599 -0.8286364 0.1276369 0.5370345 -0.8338482 -0.247272 -0.5950862 -0.7646757 -0.2059102 -0.5231365 -0.8270002 -0.2496667 -0.5991954 -0.7606782 -0.5547027 0 -0.8320487 -0.5546967 0 -0.8320526 -0.5546945 0 -0.8320541 0.6343934 -0.7730104 0 0.6343922 -0.7730114 0 0.634392 -0.7730116 0 0.002777814 -0.5541439 -0.8324164 0.5547032 -3.09999e-6 -0.8320484 0.5546957 -4.46819e-6 -0.8320533 0.5546907 -5.3726e-6 -0.8320566 0.005794405 0.6984342 -0.7156509 0.4156919 0.3672707 0.8320533 0.4156947 0.3672753 0.8320499 0.4156946 0.3672752 0.8320499 -0.247269 -0.5950805 -0.7646812 -0.2059103 -0.523135 -0.827001 -0.2496635 -0.5991894 -0.760684 0.1369325 0.6363381 -0.7591598 0.1284115 0.5448601 -0.8286363 0.1276369 0.5370345 -0.8338483 -0.5546988 6.57176e-7 -0.8320513 -0.5546994 1.07511e-6 -0.8320509 -0.5546998 1.23986e-6 -0.8320507 -0.4156906 -0.3672719 0.8320533 -0.4156932 -0.3672719 0.8320521 -0.4156928 -0.3672719 0.8320522 0.002777755 -0.5541473 -0.8324141 0.5546996 0 -0.8320508 0.5546971 0 -0.8320525 0.5546954 0 -0.8320535 0.005794823 0.6984468 -0.7156386 0.09801656 0.9951848 0 0.09801757 0.9951848 0 0.09801739 0.9951848 0 -0.2472648 -0.595077 -0.7646852 -0.2059086 -0.5231367 -0.8270004 -0.2496592 -0.5991858 -0.7606884 0.1369304 0.6363315 -0.7591655 0.1284093 0.5448591 -0.8286373 0.1276347 0.5370339 -0.833849 -0.5547013 0 -0.8320496 -0.5546998 0 -0.8320506 -0.5546993 0 -0.8320509 0 0 -1 0 -3.95226e-7 -1 0 0 -1 0 -1.23219e-7 -1 0 -2.74687e-7 -1 0 0 -1 0 4.35463e-7 -1 0 2.38063e-7 -1 0 5.43911e-7 -1 0 0 -1 0 0 -1 0 0 -1 0.5547032 -3.09999e-6 0.8320484 0.5546957 -4.46819e-6 0.8320533 0.5547203 0 0.832037 0.002845048 0.55524 0.8316853 0.1392566 -0.6498728 -0.7471767 0.1392546 -0.6498692 -0.7471802 0.1392567 -0.649873 -0.7471765 0.4980677 -0.4400513 -0.7471837 0.498074 -0.4400577 -0.7471758 0.4980676 -0.4400511 -0.7471838 0.005514204 -0.6645976 -0.7471811 0.005514323 -0.6645982 -0.7471806 0.005514323 -0.6645982 -0.7471806 0.6646261 0 -0.7471762 0.6646263 0 -0.7471761 0.6646257 0 -0.7471765 0.005423843 0.6645983 -0.7471812 0.005423784 0.664599 -0.7471805 0.005423843 0.6645983 -0.7471812 -0.498071 0.4400544 -0.7471797 -0.4980723 0.4400577 -0.7471768 -0.498071 0.4400543 -0.7471797 -0.2556239 0.613499 -0.7471783 -0.2556251 0.6134998 -0.7471773 -0.2556252 0.6134999 -0.7471771 -0.6646295 -1.07835e-5 -0.7471731 -0.6646242 -8.11875e-6 -0.7471779 -0.6646425 -1.72009e-5 -0.7471616 -0.2556227 0.6135003 -0.7471776 -0.2556253 0.6135003 -0.7471768 -0.2556254 0.6135003 -0.7471767 -0.4980725 0.4400578 -0.7471767 -0.4980718 0.4400575 -0.7471774 -0.4980725 0.4400578 -0.7471767 0.00542438 0.6646025 -0.7471775 0.005423963 0.6645963 -0.7471829 0.00542438 0.6646025 -0.7471775 0.6646173 0 -0.747184 0.6646137 0 -0.7471872 0.005514204 -0.6645995 -0.7471795 0.005514144 -0.6645969 -0.7471818 0.4980665 -0.4400533 -0.7471834 0.498072 -0.4400562 -0.747178 0.4980664 -0.4400532 -0.7471834 0.1392568 -0.6498669 -0.7471818 0.1392573 -0.6498682 -0.7471805 0.1392567 -0.6498668 -0.7471818 -0.6646494 0 -0.7471554 -0.6646315 0 -0.7471714 -0.6646926 0 -0.7471171 -0.2556215 0.6135013 -0.7471773 -0.2556219 0.6135027 -0.7471759 -0.255622 0.6135028 -0.7471759 -0.498069 0.4400547 -0.7471808 -0.4980714 0.4400574 -0.7471776 -0.4980689 0.4400547 -0.7471809 0.005423843 0.6645988 -0.7471808 0.005423963 0.6645992 -0.7471803 0.005423843 0.6645988 -0.7471808 0.6646085 8.05506e-6 -0.7471919 0.6646179 1.14085e-5 -0.7471835 0.6645858 0 -0.747212 0.005514204 -0.6646032 -0.7471762 0.005514442 -0.6645985 -0.7471804 0.005514442 -0.6645984 -0.7471804 0.4980708 -0.4400545 -0.7471798 0.4980698 -0.4400572 -0.7471787 0.4980708 -0.4400544 -0.7471798 0.1392568 -0.6498672 -0.7471815 0.1392573 -0.6498679 -0.7471808 0.1392568 -0.6498672 -0.7471815 -0.664636 0 -0.7471674 -0.6646267 0 -0.7471757 -0.6646584 0 -0.7471475 0.3511238 0 -0.9363291 0.3511238 0 -0.9363291 0.3511238 0 -0.9363291 0 1 0 -4.24418e-7 1 0 -0.4156933 -0.3672716 -0.8320521 -0.4156937 -0.3672717 -0.8320518 -0.4156907 -0.3672713 -0.8320535 -0.5546988 6.57176e-7 0.8320513 -0.5546994 1.07511e-6 0.8320509 -0.5546977 0 0.832052 0.1284115 0.5448603 0.8286362 0.1369324 0.6363382 0.7591595 0.1276368 0.5370347 0.8338482 0.3511235 0 -0.9363292 0.3511235 0 -0.9363292 0.3511235 0 -0.9363293 0.5438629 -0.839174 0 0.5438632 -0.839174 0 0.5438625 -0.8391744 0 0.290286 0.9569401 0 0.2902842 0.9569406 0 0.2902837 0.9569406 0 1 -1.55289e-7 0 1 -1.55289e-7 0 1 -1.55289e-7 0 0.9951847 0.0980184 0 0.9951847 0.0980184 0 0.8061255 -0.1603525 0.5696043 0.160346 -0.8061259 0.5696054 0.08068132 -0.8192392 0.5677479 0.1603469 -0.8061251 0.5696064 0.3145343 -0.7593545 0.5696043 0.3145352 -0.7593545 0.5696038 0.456634 -0.6834008 0.569604 0.4566356 -0.6833998 0.569604 0.5811853 -0.5811838 0.5696044 -0.4156944 -0.3672736 -0.8320507 -0.4156946 -0.3672738 -0.8320505 -0.4156917 -0.3672717 -0.832053 0.8061259 0.1603522 0.5696038 0.7593539 0.3145374 0.5696034 0.8061261 0.1603509 0.5696038 0.8819222 0.471395 0 0.8819227 0.4713943 0 0.8819228 0.4713941 0 0 0 1 0 0 1 0 0 1 0.5278378 0.8493452 0 0.5278379 0.8493452 0 0.5278376 0.8493454 0 0.7730123 -0.6343912 0 0.7730115 -0.6343922 0 0.7730114 -0.6343923 0 0.4156943 0.3672724 -0.8320512 0.4156944 0.3672724 -0.8320512 0.4156937 0.3672749 -0.8320505 0.5414058 -0.8407614 0 0.5414066 -0.840761 0 0.5414096 -0.8407591 0 0.5184706 -0.8550956 0 0.5184705 -0.8550956 0 0.5184707 -0.8550955 0 0.002777576 -0.5541458 0.8324151 0.5152202 -0.8570579 0 0.5152201 -0.8570579 0 0.5152205 -0.8570577 0 0.1603484 0.806127 0.5696033 0.4156939 0.3672745 -0.8320506 0.4156939 0.3672746 -0.8320505 0.4156914 0.367271 -0.8320533 -0.4156951 -0.3672754 -0.8320496 -0.415695 -0.3672752 -0.8320497 -0.4156973 -0.3672767 -0.8320479 0.5546996 0 0.8320508 0.5546971 0 0.8320525 0.5547052 0 0.8320469 0.002845108 0.55524 0.8316854 0.4156961 0.3672786 -0.8320477 0.415696 0.3672785 -0.8320478 0.4157062 0.3672832 -0.8320406 -0.2472648 -0.595077 0.7646852 -0.2059086 -0.5231367 0.8270004 -0.203149 -0.518275 0.8307357 0.1284093 0.5448591 0.8286372 0.1369304 0.6363314 0.7591656 0.1276347 0.5370339 0.8338489 -0.5547013 0 0.8320496 -0.5546998 0 0.8320506 -0.5547036 0 0.8320481 0 0 1 0 -3.98899e-7 1 0 0 1 0 -2.74687e-7 1 0 -3.0899e-7 1 0 6.311e-7 1 0 2.38063e-7 1 0 2.67784e-7 1 0 0 1 0 0 1 0 0 1 0.1392566 -0.6498728 0.7471767 0.1392546 -0.6498692 0.7471802 0.1392544 -0.6498689 0.7471805 0.4980677 -0.4400513 0.7471837 0.498074 -0.4400577 0.7471758 0.4980741 -0.4400577 0.7471757 0.005514264 -0.6645989 0.7471801 0.005514204 -0.6645975 0.7471812 0.005514264 -0.6645989 0.7471801 0.6646263 0 0.7471761 0.6646261 0 0.7471762 0.6646257 0 0.7471765 0.005423843 0.6645983 0.7471812 0.005423784 0.664599 0.7471805 0.005423784 0.664599 0.7471805 -0.498071 0.4400544 0.7471797 -0.4980723 0.4400577 0.7471768 -0.4980723 0.4400578 0.7471768 -0.2556251 0.6134998 0.7471773 -0.2556236 0.6134998 0.7471777 -0.2556252 0.6134998 0.7471773 -0.6646244 -7.37247e-6 0.7471776 -0.6646298 -9.24683e-6 0.747173 -0.6646425 -1.37607e-5 0.7471616 -0.2556251 0.6135006 0.7471766 -0.2556226 0.613501 0.7471771 -0.2556253 0.6135006 0.7471765 -0.4980725 0.4400578 0.7471767 -0.4980718 0.4400575 0.7471774 -0.4980718 0.4400575 0.7471774 0.00542438 0.6646025 0.7471775 0.005423963 0.6645963 0.7471829 0.005423963 0.6645963 0.747183 0.664618 0 0.7471833 0.6646203 0 0.7471814 0.005514144 -0.6645976 0.7471812 0.005514204 -0.6645994 0.7471796 0.4980665 -0.4400533 0.7471834 0.498072 -0.4400562 0.747178 0.4980721 -0.4400563 0.7471779 0.1392568 -0.6498669 0.7471818 0.1392573 -0.6498682 0.7471805 0.1392574 -0.6498683 0.7471805 -0.6646316 0 0.7471713 -0.6646499 0 0.7471551 -0.6646937 0 0.747116 -0.2556218 0.613503 0.7471758 -0.2556213 0.6135019 0.7471769 -0.2556218 0.613503 0.7471757 -0.498069 0.4400547 0.7471808 -0.4980714 0.4400574 0.7471776 -0.4980714 0.4400575 0.7471776 0.005423843 0.6645988 0.7471808 0.005423963 0.6645992 0.7471803 0.005423963 0.6645992 0.7471803 0.6646192 1.09697e-5 0.7471823 0.6646127 7.74523e-6 0.7471881 0.6645972 0 0.7472019 0.005514442 -0.664599 0.7471799 0.005514204 -0.6646025 0.7471768 0.005514442 -0.664599 0.7471799 0.4980708 -0.4400545 0.7471798 0.4980698 -0.4400572 0.7471787 0.4980698 -0.4400572 0.7471787 0.1392568 -0.6498672 0.7471815 0.1392573 -0.6498679 0.7471808 0.1392573 -0.649868 0.7471807 -0.6646261 0 0.7471761 -0.6646356 0 0.7471677 -0.6646584 0 0.7471475 0.4713993 0.88192 0 0.4714007 0.8819192 0 0.471401 0.881919 0 1 -2.1347e-7 0 1 -2.1347e-7 0 1 -4.61982e-7 0 1 -5.07598e-7 -1.27249e-7 1 -5.07598e-7 1.27249e-7 1 -2.48619e-7 0 1 -2.27123e-7 0 1 -2.4862e-7 0 1 -1.26968e-7 0 0 0 -1 0 0 -1 0 0 -1 0 2.14569e-6 -1 0 2.18924e-6 -1 0 0 -1 0 -1.60963e-7 -1 0 0 -1 0 1.81362e-6 -1 0 -2.08944e-7 -1 0 0 -1 0 1.80776e-6 -1 0 0 -1 0 4.1097e-7 -1 0 7.41582e-7 -1 0 0 -1 0 0 -1 0 0 1 0 4.1097e-7 1 0 7.41582e-7 1 0 0 1 0 0 1 0 -2.29913e-7 1 0 1.81362e-6 1 0 -2.59411e-7 1 0 1.80776e-6 1 0 0 1 0.3511235 -1.58473e-7 -0.9363292 0.4156954 0.3672781 0.8320482 0.4156956 0.3672782 0.8320481 0.3511235 -1.26799e-7 -0.9363293 0.3511234 0 0.9363293 0.005700111 -0.6984379 0.715648 0.5363459 0.8439984 0 0.3511235 0 0.9363293 1 -5.50439e-7 2.50955e-7 1 -4.68813e-7 0 1 -4.61982e-7 0 0.3511235 0 0.9363292 0.5337439 0.8456462 0 0.3511235 -1.76222e-7 0.9363293 0 0 -1 0 0 -1 0 6.10492e-7 -1 0 0 -1 0 2.2855e-7 -1 0 0 -1 0 1.64048e-7 -1 0.1603484 0.806127 -0.5696033 0.5811845 0.5811856 -0.5696034 0.8219191 -6.41443e-7 -0.5696044 0.1603469 -0.8061251 -0.5696063 0.7730126 0.6343906 0 1 -2.43718e-7 0 0.9951844 -0.09802114 0 0.09801054 -0.9951854 7.31724e-7 0.09801465 -0.995185 3.34139e-6 0.0980103 -0.9951854 9.01702e-7 0.5546907 0 0.8320566 1 0 0 1 -1.62506e-7 0 0 -2.12872e-7 1 0 0 1 0 0 1 0 0 1 0 -2.82887e-7 1 0 -1.72937e-7 1 0 0 1 0 -2.70725e-7 1 0 3.64819e-7 1 0 3.00716e-7 1 0 0 1 0 -6.38744e-7 1 0 -7.09734e-7 1 0 0 1 0 -4.59166e-7 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -1.46248e-7 1 0 -3.68839e-7 1 0.956939 -0.2902892 0 0.5247784 0.8512389 0 0.7076857 -1.0599e-6 0.7065275 0.7076629 0 0.7065503 0.7076632 0 0.70655 0.7345698 0.557695 0.3865017 0.7345715 -0.557692 0.3865026 -0.4156941 -0.3672758 0.8320498 -0.4156942 -0.3672759 0.8320498 1 1.40724e-6 0 0 0 -1 0 0 -1 0 0 -1 0 -2.15585e-7 -1 0 -1.36613e-7 -1 0 -1.77386e-7 -1 0 0 -1 0 4.00955e-7 -1 0 4.16689e-7 -1 0 -1.24905e-7 -1 0 -6.14878e-7 -1 0 -5.40444e-7 -1 0 0 -1 0 0 -1 0 -1.88394e-7 -1 0 -2.29583e-7 -1 0 0 -1 0 0 -1 0 0 -1 0 1.72186e-7 -1 0 0 -1 0 1.28361e-6 -1 0 6.14348e-7 -1 0 2.15126e-7 -1 0 0 -1 0 -3.68839e-7 -1 -0.2496635 -0.5991894 0.760684 0.7345928 -0.5576792 -0.3864808 0.7345699 0.5576949 -0.3865017 0.7076629 0 -0.7065503 0.7076849 0 -0.7065283 0.7076632 -3.05197e-7 -0.7065499 0.1373258 0.6408494 0.755284 -0.2496667 -0.5991954 0.7606782 0.4713994 -0.8819199 0 0.00570017 -0.6984381 0.7156478 -0.5546945 0 0.8320541 -0.4156941 -0.3672741 0.8320506 -0.4156942 -0.3672743 0.8320505 0.002845048 0.55524 -0.8316853 0.5546501 0 -0.8320838 0.005699992 -0.6984384 -0.7156475 0.4156951 0.3672763 0.8320491 0.4156946 0.3672727 0.8320509 0.1373258 0.6408494 -0.755284 -0.2031501 -0.518274 -0.8307358 -0.5547119 0 -0.8320425 0.6343936 -0.7730102 0 0.00570017 -0.6984382 -0.7156477 0.5547203 0 -0.832037 0.4156942 0.3672743 0.8320503 0.4156948 0.367275 0.8320499 -0.2031505 -0.5182729 -0.8307365 0.1373248 0.6408514 -0.7552824 -0.5546977 0 -0.832052 -0.4156951 -0.3672747 0.8320499 -0.4156952 -0.3672747 0.8320498 0.005700111 -0.6984385 -0.7156475 0.5547052 0 -0.8320469 0.002845108 0.55524 -0.8316854 0.09801715 0.9951848 2.76455e-7 0.09801632 0.9951848 0 0.09801703 0.9951848 -2.73797e-7 -0.203149 -0.518275 -0.8307357 0.1373227 0.6408446 -0.7552885 -0.5547036 0 -0.8320481 0 -9.59795e-7 -1 0 0 -1 0 0 -1 0 0 -1 0 -1.92609e-7 -1 0 -2.18245e-7 -1 0 0 -1 0 2.66489e-7 -1 0 0 -1 0 1.66754e-7 -1 0 0 -1 0 0 -1 0 -1.40258e-7 -1 0 2.65235e-7 -1 0 0 -1 0 -2.45227e-7 -1 0 3.22989e-7 -1 0 0 -1 0 0 -1 0 -3.75728e-7 -1 0 -3.86628e-7 -1 0 0 -1 0 2.32592e-7 -1 0 1.68056e-7 -1 0 -3.81689e-7 -1 0 -3.0899e-7 -1 0 1.31223e-5 -1 0 1.17215e-5 -1 0 2.67784e-7 -1 0 0 -1 0 0 -1 0 0 -1 0.5546907 -5.3726e-6 0.8320566 0.005794405 0.6984342 0.7156509 0.1392544 -0.6498689 -0.7471805 0.4980741 -0.4400577 -0.7471757 0.005514204 -0.6645976 -0.7471811 0.6646263 0 -0.747176 0.005423784 0.664599 -0.7471805 -0.4980723 0.4400578 -0.7471768 -0.2556238 0.6134989 -0.7471784 -0.6646208 -6.43755e-6 -0.7471809 -0.2556226 0.6135004 -0.7471777 -0.4980718 0.4400575 -0.7471774 0.005423963 0.6645963 -0.747183 0.6646122 0 -0.7471886 0.005514204 -0.6645995 -0.7471795 0.4980721 -0.4400563 -0.7471779 0.1392574 -0.6498683 -0.7471805 -0.6646202 0 -0.7471815 -0.2556214 0.6135013 -0.7471773 -0.4980714 0.4400575 -0.7471776 0.005423963 0.6645992 -0.7471803 0.664622 1.28749e-5 -0.7471798 0.005514204 -0.6646032 -0.7471762 0.4980698 -0.4400572 -0.7471787 0.1392573 -0.649868 -0.7471807 -0.6646208 0 -0.7471809 0.3511238 0 -0.9363291 -1.33256e-6 1 0 -0.4156952 -0.3672747 -0.8320498 -0.4156951 -0.3672747 -0.8320499 -0.5546998 1.23986e-6 0.8320507 0.1373248 0.6408516 0.7552823 0.3511235 0 -0.9363293 0.005794823 0.6984466 0.7156388 0.5438638 -0.8391735 0 0.2902863 0.9569399 0 1 -1.55289e-7 0 0.08068323 -0.8192395 0.5677472 -0.4156942 -0.3672759 -0.8320498 -0.4156941 -0.3672758 -0.8320499 0.8819221 0.4713952 0 0 0 1 0 0 1 0 0 1 0 1.56002e-7 1 0 0 1 0 0 1 0 0 1 0.5278382 0.8493449 0 0.7730125 -0.634391 0 0.4156951 0.3672763 -0.8320491 0.415695 0.3672761 -0.8320492 0.5414041 -0.8407626 0 0.5184703 -0.8550957 0 0.005700051 -0.6984378 0.7156481 0.5152196 -0.8570583 0 0.4156948 0.367275 -0.8320499 0.4156942 0.3672744 -0.8320505 -0.4156932 -0.3672751 -0.8320506 -0.4156932 -0.3672752 -0.8320505 0.5546954 0 0.8320535 0.005794823 0.6984468 0.7156386 0.4156867 0.367279 -0.8320521 0.4156917 0.3672801 -0.8320491 -0.2496592 -0.5991858 0.7606884 0.1373227 0.6408445 0.7552886 -0.5546993 0 0.8320509 0 0 1 0 -9.59795e-7 1 0 3.21479e-7 1 0 3.81689e-7 1 0 0 1 0 0 1 0 -2.07554e-7 1 0 0 1 0 0 1 0 0 1 0 0 1 0 2.41319e-7 1 0 1.45541e-7 1 0 0 1 0 0 1 0 3.31672e-7 1 0 -2.45227e-7 1 0 0 1 0 0 1 0 0 1 0 0 1 0 -2.42043e-7 1 0 -1.79408e-7 1 0 0 1 0 -3.87653e-7 1 0 1.17497e-5 1 0 0 1 0 1.31223e-5 1 0 1.50781e-7 1 0 7.91143e-7 1 0.1392567 -0.649873 0.7471765 0.4980676 -0.4400511 0.7471838 0.005514204 -0.6645975 0.7471812 0.6646263 0 0.747176 0.005423843 0.6645983 0.7471812 -0.498071 0.4400543 0.7471797 -0.2556236 0.6134998 0.7471778 -0.6646211 -6.18994e-6 0.7471807 -0.2556225 0.613501 0.7471772 -0.4980725 0.4400578 0.7471767 0.00542438 0.6646025 0.7471775 0.6646171 0 0.7471842 0.4980664 -0.4400532 0.7471834 0.1392567 -0.6498668 0.7471818 -0.6646202 0 0.7471815 -0.2556213 0.6135018 0.747177 -0.4980689 0.4400547 0.7471809 0.005423843 0.6645988 0.7471808 0.664622 1.23797e-5 0.7471798 0.005514204 -0.6646025 0.7471768 0.4980708 -0.4400544 0.7471798 0.1392568 -0.6498672 0.7471815 -0.6646202 0 0.7471814 0.471399 0.8819202 0 1 -2.27122e-7 0 1 -1.25559e-7 0 1 0 0 1 0 0 1 -1.25559e-7 0 1 -1.26968e-7 0 0 0 1 + + + + + + + + + + 0.8945313 0.390625 0.9023438 0.3828125 0.9023438 0.390625 0.8945313 0.3671875 0.9023438 0.359375 0.9023438 0.3671875 0.8085938 0.59375 0.8320313 0.5976563 0.8085938 0.5976563 0.6210938 0.3085938 0.625 0.2890625 0.625 0.3046875 0.8984375 0.5976563 0.8984375 0.6015625 0.890625 0.6015625 0.8945313 0.3203125 0.8554688 0.328125 0.8554688 0.3203125 0.8046875 0.4960938 0.84375 0.2773438 0.84375 0.4960938 0.6210938 0.34375 0.625 0.3242188 0.625 0.3398438 0.6328125 0.4804688 0.6367188 0.4609375 0.6367188 0.484375 0.8046875 0.7539063 0.8046875 0.7929688 0.6484375 0.7929688 0.8984375 0.5898438 0.9453125 0.59375 0.8984375 0.59375 0.6367188 0.4609375 0.625 0.4648438 0.6210938 0.4609375 0.6328125 0.4492188 0.6367188 0.4296875 0.6367188 0.453125 0.9414063 0.59375 0.8828125 0.5976563 0.8828125 0.59375 0.8945313 0.375 0.9023438 0.3828125 0.8945313 0.3828125 0.8945313 0.375 0.9023438 0.3671875 0.9023438 0.375 0.6367188 0.3203125 0.6367188 0.3085938 0.6445313 0.3476563 0.6367188 0.34375 0.6328125 0.3242188 0.6367188 0.3203125 0.8945313 0.34375 0.9023438 0.3359375 0.9023438 0.34375 0.6367188 0.4296875 0.625 0.4335938 0.6210938 0.4296875 0.6367188 0.3085938 0.6328125 0.2890625 0.6367188 0.2851563 0.6627917 0.443255 0.6739633 0.4412869 0.6484375 0.4960938 0.8554688 0.3984375 0.8476563 0.390625 0.8554688 0.390625 0.8554688 0.390625 0.8476563 0.3828125 0.8554688 0.3828125 0.8476563 0.3828125 0.8554688 0.375 0.8554688 0.3828125 0.8554688 0.375 0.8476563 0.3671875 0.8554688 0.3671875 0.8554688 0.3671875 0.8476563 0.359375 0.8554688 0.359375 0.8476563 0.359375 0.8554688 0.3515625 0.8554688 0.359375 0.8476563 0.3515625 0.8554688 0.34375 0.8554688 0.3515625 0.8554688 0.34375 0.8476563 0.3359375 0.8554688 0.3359375 0.8554688 0.3359375 0.8476563 0.328125 0.8554688 0.328125 0.8476563 0.328125 0.8554688 0.3203125 0.8554688 0.328125 0.8476563 0.3203125 0.8554688 0.3125 0.8554688 0.3203125 0.8476563 0.3125 0.8554688 0.3046875 0.8554688 0.3125 0.8476563 0.3046875 0.8554688 0.296875 0.8554688 0.3046875 0.8476563 0.296875 0.8554688 0.2890625 0.8554688 0.296875 0.8320313 0.59375 0.8828125 0.5976563 0.8320313 0.5976563 0.8945313 0.3671875 0.8554688 0.375 0.8554688 0.3671875 0.6171875 0.3515625 0.6445313 0.3476563 0.640625 0.3515625 0.6484375 0.5351563 0.8046875 0.4960938 0.8046875 0.5351563 0.6328125 0.3046875 0.625 0.2890625 0.6328125 0.2890625 0.8945313 0.3515625 0.8554688 0.359375 0.8554688 0.3515625 0.8945313 0.3359375 0.8554688 0.34375 0.8554688 0.3359375 0.8554688 0.2890625 0.8476563 0.28125 0.8554688 0.28125 0.6367188 0.34375 0.6132813 0.3476563 0.6210938 0.34375 0.8945313 0.375 0.8554688 0.3828125 0.8554688 0.375 0.8945313 0.2773438 0.8945313 0.28125 0.8945313 0.2890625 0.8945313 0.3125 0.9023438 0.3203125 0.8945313 0.3203125 0.9414063 0.6054688 0.9453125 0.6132813 0.9414063 0.609375 0.8945313 0.3203125 0.9023438 0.328125 0.8945313 0.328125 0.6328125 0.4492188 0.625 0.4335938 0.6328125 0.4335938 0.8945313 0.2890625 0.8554688 0.296875 0.8554688 0.2890625 0.625 0.3242188 0.6328125 0.3398438 0.625 0.3398438 0.6543128 0.6952406 0.6484375 0.6875 0.6550616 0.6870194 0.8945313 0.328125 0.8554688 0.3359375 0.8554688 0.328125 0.6367188 0.2851563 0.625 0.2890625 0.6210938 0.2851563 0.6132813 0.3476563 0.609375 0.2773438 0.6132813 0.2773438 0.609375 0.4179688 0.6132813 0.4179688 0.6132813 0.4570313 0.8945313 0.40625 0.9023438 0.4101563 0.8945313 0.4101563 0.9023438 0.2773438 0.8945313 0.28125 0.8945313 0.2773438 0.8945313 0.3984375 0.9023438 0.40625 0.8945313 0.40625 0.890625 0.578125 0.8984375 0.578125 0.8984375 0.5820313 0.6132813 0.4179688 0.640625 0.4140625 0.6445313 0.4179688 0.6628094 0.3425499 0.6614339 0.3489242 0.6549568 0.3471782 0.8046875 0.5820313 0.8320313 0.578125 0.8320313 0.5820313 0.8476563 0.40625 0.8554688 0.3984375 0.8554688 0.40625 0.8476563 0.2773438 0.8554688 0.28125 0.8476563 0.28125 0.8476563 0.4101563 0.8554688 0.40625 0.8554688 0.4101563 0.6445313 0.4570313 0.6484375 0.4140625 0.6484375 0.4960938 0.6445313 0.3476563 0.6484375 0.2773438 0.6484375 0.3476563 0.8320313 0.578125 0.8046875 0.5742188 0.8320313 0.5742188 0.8046875 0.5703125 0.8320313 0.5664063 0.8320313 0.5703125 0.8945313 0.296875 0.8554688 0.3046875 0.8554688 0.296875 0.8984375 0.578125 0.9453125 0.5820313 0.8984375 0.5820313 0.8085938 0.609375 0.8046875 0.6015625 0.8085938 0.6054688 0.8320313 0.5703125 0.8320313 0.5664063 0.890625 0.5664063 0.9453125 0.5234375 0.8984375 0.5195313 0.9453125 0.5195313 0.9414063 0.5273438 0.9453125 0.5195313 0.9453125 0.53125 0.9453125 0.5273438 0.8984375 0.53125 0.8984375 0.5273438 0.8984375 0.5742188 0.890625 0.578125 0.8320313 0.5742188 0.8046875 0.5234375 0.8320313 0.5195313 0.8320313 0.5234375 0.8046875 0.5273438 0.8320313 0.53125 0.8046875 0.53125 0.8085938 0.5234375 0.8046875 0.53125 0.8046875 0.5195313 0.8945313 0.3046875 0.8554688 0.3125 0.8554688 0.3046875 0.9453125 0.515625 0.8984375 0.5195313 0.8984375 0.515625 0.9414063 0.515625 0.9453125 0.5078125 0.9453125 0.5195313 0.9453125 0.5117188 0.8984375 0.5078125 0.9453125 0.5078125 0.890625 0.5898438 0.8320313 0.5898438 0.8320313 0.5859375 0.8046875 0.515625 0.8320313 0.5195313 0.8046875 0.5195313 0.8046875 0.5117188 0.8320313 0.5078125 0.8320313 0.5117188 0.8085938 0.5117188 0.8046875 0.5195313 0.8046875 0.5078125 0.890625 0.5898438 0.8984375 0.5898438 0.8984375 0.59375 0.9453125 0.5039063 0.8984375 0.5078125 0.8984375 0.5039063 0.9414063 0.5039063 0.9453125 0.4960938 0.9453125 0.5078125 0.9453125 0.5 0.8984375 0.4960938 0.9453125 0.4960938 0.8945313 0.4101563 0.8554688 0.4101563 0.8554688 0.3984375 0.8046875 0.5039063 0.8320313 0.5078125 0.8046875 0.5078125 0.8046875 0.5 0.8320313 0.4960938 0.8320313 0.5 0.8085938 0.5 0.8046875 0.5078125 0.8046875 0.4960938 0.7958816 0.4011822 0.7107183 0.3984869 0.792643 0.3962891 0.8320313 0.5351563 0.8828125 0.5390625 0.8320313 0.5390625 0.8320313 0.546875 0.8828125 0.5507813 0.8320313 0.5507813 0.8320313 0.5585938 0.8828125 0.5625 0.8320313 0.5625 0.9414063 0.6171875 0.9453125 0.625 0.9414063 0.6210938 0.9453125 0.5859375 0.8984375 0.5898438 0.8984375 0.5859375 0.8046875 0.5390625 0.8320313 0.5429688 0.8046875 0.5429688 0.8320313 0.5390625 0.8984375 0.5429688 0.8320313 0.5429688 0.9453125 0.5390625 0.8984375 0.5429688 0.8984375 0.5390625 0.9414063 0.5351563 0.9453125 0.5429688 0.9414063 0.5390625 0.9453125 0.53125 0.8984375 0.5351563 0.9453125 0.5351563 0.8984375 0.53125 0.8320313 0.5351563 0.8984375 0.5351563 0.8046875 0.53125 0.8320313 0.5351563 0.8320313 0.53125 0.8085938 0.5390625 0.8046875 0.53125 0.8085938 0.5351563 0.8046875 0.546875 0.8320313 0.5429688 0.8320313 0.546875 0.8984375 0.546875 0.8320313 0.5429688 0.8984375 0.5429688 0.9453125 0.546875 0.8984375 0.5429688 0.9453125 0.5429688 0.9414063 0.546875 0.9453125 0.5546875 0.9414063 0.5507813 0.9453125 0.5507813 0.8984375 0.5546875 0.8984375 0.5507813 0.8320313 0.5507813 0.8984375 0.5546875 0.8320313 0.5546875 0.8046875 0.5507813 0.8320313 0.5546875 0.8046875 0.5546875 0.8085938 0.5507813 0.8046875 0.5429688 0.8085938 0.546875 0.8046875 0.5585938 0.8320313 0.5546875 0.8320313 0.5585938 0.8984375 0.5585938 0.8320313 0.5546875 0.8984375 0.5546875 0.9453125 0.5585938 0.8984375 0.5546875 0.9453125 0.5546875 0.9414063 0.5585938 0.9453125 0.5664063 0.9414063 0.5625 0.9453125 0.5625 0.8984375 0.5664063 0.8984375 0.5625 0.8320313 0.5625 0.8984375 0.5664063 0.8320313 0.5664063 0.8046875 0.5625 0.8320313 0.5664063 0.8046875 0.5664063 0.8085938 0.5625 0.8046875 0.5546875 0.8085938 0.5585938 0.6210938 0.4609375 0.625 0.4804688 0.6210938 0.484375 0.6445313 0.5351563 0.6484375 0.4960938 0.6484375 0.5351563 0.8984375 0.5039063 0.8984375 0.5078125 0.890625 0.5078125 0.8085938 0.6210938 0.8046875 0.6132813 0.8085938 0.6171875 0.8320313 0.5898438 0.8046875 0.5859375 0.8320313 0.5859375 0.6210938 0.4296875 0.625 0.4492188 0.6210938 0.453125 0.9453125 0.5742188 0.8984375 0.578125 0.8984375 0.5742188 0.6210938 0.453125 0.6328125 0.4492188 0.6367188 0.453125 0.8554688 0.3984375 0.8945313 0.390625 0.8945313 0.3984375 0.625 0.4648438 0.6328125 0.4804688 0.625 0.4804688 0.8945313 0.34375 0.8554688 0.3515625 0.8554688 0.34375 0.8945313 0.3359375 0.9023438 0.328125 0.9023438 0.3359375 0.8945313 0.2890625 0.9023438 0.28125 0.9023438 0.2890625 0.8945313 0.2890625 0.9023438 0.296875 0.8945313 0.296875 0.8945313 0.296875 0.9023438 0.3046875 0.8945313 0.3046875 0.8945313 0.3046875 0.9023438 0.3125 0.8945313 0.3125 0.8984375 0.515625 0.8984375 0.5195313 0.890625 0.5195313 0.8945313 0.3515625 0.9023438 0.359375 0.8945313 0.359375 0.8945313 0.34375 0.9023438 0.3515625 0.8945313 0.3515625 0.8945313 0.359375 0.8554688 0.3671875 0.8554688 0.359375 0.6484375 0.5351563 0.657865 0.5954006 0.6542191 0.6023433 0.6367188 0.3203125 0.625 0.3242188 0.6210938 0.3203125 0.8945313 0.3125 0.8554688 0.3203125 0.8554688 0.3125 0.8320313 0.5234375 0.8320313 0.5195313 0.890625 0.5195313 0.6367188 0.484375 0.625 0.4804688 0.6328125 0.4804688 0.6210938 0.3085938 0.6328125 0.3046875 0.6367188 0.3085938 0.8984375 0.5664063 0.9453125 0.5703125 0.8984375 0.5703125 0.6210938 0.34375 0.6328125 0.3398438 0.6367188 0.34375 0.8945313 0.3984375 0.9023438 0.390625 0.9023438 0.3984375 0.8320313 0.5117188 0.8320313 0.5078125 0.890625 0.5078125 0.8984375 0.5273438 0.8984375 0.53125 0.890625 0.53125 0.9414063 0.6289063 0.9453125 0.6367188 0.9414063 0.6328125 0.9453125 0.5976563 0.8984375 0.6015625 0.8984375 0.5976563 0.8320313 0.5 0.8320313 0.4960938 0.890625 0.4960938 0.8046875 0.59375 0.8320313 0.5898438 0.8320313 0.59375 0.8320313 0.6015625 0.8046875 0.5976563 0.8320313 0.5976563 0.8085938 0.6328125 0.8046875 0.625 0.8085938 0.6289063 0.7899345 0.6359996 0.7093751 0.6334774 0.7931929 0.6311195 0.8320313 0.6328125 0.8828125 0.6289063 0.8828125 0.6328125 0.8320313 0.6210938 0.8828125 0.6171875 0.8828125 0.6210938 0.8320313 0.609375 0.8828125 0.6054688 0.8828125 0.609375 0.8046875 0.6289063 0.8320313 0.625 0.8320313 0.6289063 0.8320313 0.6289063 0.8984375 0.625 0.8984375 0.6289063 0.8984375 0.625 0.9453125 0.6289063 0.8984375 0.6289063 0.9453125 0.5898438 0.9414063 0.5976563 0.9414063 0.59375 0.9453125 0.6328125 0.8984375 0.6367188 0.8984375 0.6328125 0.8984375 0.6328125 0.8320313 0.6367188 0.8320313 0.6328125 0.8320313 0.6367188 0.8046875 0.6328125 0.8320313 0.6328125 0.8046875 0.6015625 0.8085938 0.59375 0.8085938 0.5976563 0.8320313 0.625 0.8046875 0.6210938 0.8320313 0.6210938 0.8984375 0.6210938 0.8320313 0.625 0.8320313 0.6210938 0.9453125 0.6210938 0.8984375 0.625 0.8984375 0.6210938 0.9453125 0.578125 0.9414063 0.5859375 0.9414063 0.5820313 0.8984375 0.6132813 0.9453125 0.6171875 0.8984375 0.6171875 0.8320313 0.6171875 0.8984375 0.6132813 0.8984375 0.6171875 0.8046875 0.6171875 0.8320313 0.6132813 0.8320313 0.6171875 0.8046875 0.5898438 0.8085938 0.5820313 0.8085938 0.5859375 0.8320313 0.6132813 0.8046875 0.609375 0.8320313 0.609375 0.8984375 0.609375 0.8320313 0.6132813 0.8320313 0.609375 0.9453125 0.609375 0.8984375 0.6132813 0.8984375 0.609375 0.9453125 0.5664063 0.9414063 0.5742188 0.9414063 0.5703125 0.8984375 0.6015625 0.9453125 0.6054688 0.8984375 0.6054688 0.8320313 0.6054688 0.8984375 0.6015625 0.8984375 0.6054688 0.8046875 0.6054688 0.8320313 0.6015625 0.8320313 0.6054688 0.8046875 0.578125 0.8085938 0.5703125 0.8085938 0.5742188 0.8554688 0.390625 0.8945313 0.3828125 0.8945313 0.390625 0.6210938 0.4296875 0.6445313 0.4179688 0.6367188 0.4296875 0.6132813 0.2773438 0.6367188 0.2851563 0.6210938 0.2851563 0.6367188 0.484375 0.6132813 0.4960938 0.6210938 0.484375 0.6132813 0.4179688 0.6210938 0.4296875 0.6210938 0.453125 0.8085938 0.5039063 0.8320313 0.5 0.8320313 0.5039063 0.8320313 0.5039063 0.8828125 0.5 0.8828125 0.5039063 0.8828125 0.5 0.9414063 0.5039063 0.8828125 0.5039063 0.8320313 0.5234375 0.8085938 0.5273438 0.8085938 0.5234375 0.8828125 0.5234375 0.8320313 0.5273438 0.8320313 0.5234375 0.8828125 0.5234375 0.9414063 0.5273438 0.8828125 0.5273438 0.8085938 0.515625 0.8320313 0.5117188 0.8320313 0.515625 0.8320313 0.515625 0.8828125 0.5117188 0.8828125 0.515625 0.8828125 0.5117188 0.9414063 0.515625 0.8828125 0.515625 0.8085938 0.5820313 0.8320313 0.5859375 0.8085938 0.5859375 0.8320313 0.5820313 0.8828125 0.5859375 0.8320313 0.5859375 0.8828125 0.5859375 0.9414063 0.5820313 0.9414063 0.5859375 0.8085938 0.5703125 0.8320313 0.5742188 0.8085938 0.5742188 0.8828125 0.5742188 0.8320313 0.5703125 0.8828125 0.5703125 0.8828125 0.5742188 0.9414063 0.5703125 0.9414063 0.5742188 0.8945313 0.390625 0.8945313 0.3828125 0.9023438 0.3828125 0.8945313 0.3671875 0.8945313 0.359375 0.9023438 0.359375 0.8085938 0.59375 0.8320313 0.59375 0.8320313 0.5976563 0.6210938 0.3085938 0.6210938 0.2851563 0.625 0.2890625 0.890625 0.6015625 0.8320313 0.6015625 0.8320313 0.5976563 0.8320313 0.5976563 0.8984375 0.5976563 0.890625 0.6015625 0.8945313 0.3203125 0.8945313 0.328125 0.8554688 0.328125 0.8046875 0.4960938 0.8046875 0.2773438 0.84375 0.2773438 0.6210938 0.34375 0.6210938 0.3203125 0.625 0.3242188 0.6328125 0.4804688 0.6328125 0.4648438 0.6367188 0.4609375 0.6484375 0.7929688 0.6484375 0.7890625 0.6484375 0.7578125 0.6484375 0.7578125 0.6484375 0.7539063 0.6484375 0.7929688 0.6484375 0.7539063 0.8046875 0.7539063 0.6484375 0.7929688 0.8984375 0.5898438 0.9453125 0.5898438 0.9453125 0.59375 0.6367188 0.4609375 0.6328125 0.4648438 0.625 0.4648438 0.6328125 0.4492188 0.6328125 0.4335938 0.6367188 0.4296875 0.9414063 0.59375 0.9414063 0.5976563 0.8828125 0.5976563 0.8945313 0.375 0.9023438 0.375 0.9023438 0.3828125 0.8945313 0.375 0.8945313 0.3671875 0.9023438 0.3671875 0.6210938 0.3203125 0.6210938 0.34375 0.6132813 0.3476563 0.6132813 0.3476563 0.6132813 0.2773438 0.6210938 0.3085938 0.6132813 0.2773438 0.6210938 0.2851563 0.6210938 0.3085938 0.6210938 0.3203125 0.6132813 0.3476563 0.6210938 0.3085938 0.6367188 0.3085938 0.6367188 0.2851563 0.6445313 0.2773438 0.6210938 0.3203125 0.6210938 0.3085938 0.6367188 0.3085938 0.6445313 0.3476563 0.6367188 0.34375 0.6367188 0.3203125 0.6367188 0.3203125 0.6210938 0.3203125 0.6367188 0.3085938 0.6367188 0.3085938 0.6445313 0.2773438 0.6445313 0.3476563 0.6367188 0.34375 0.6328125 0.3398438 0.6328125 0.3242188 0.8945313 0.34375 0.8945313 0.3359375 0.9023438 0.3359375 0.6367188 0.4296875 0.6328125 0.4335938 0.625 0.4335938 0.6367188 0.3085938 0.6328125 0.3046875 0.6328125 0.2890625 0.6484375 0.4960938 0.6484375 0.4140625 0.6553167 0.429395 0.6484375 0.4140625 0.6551535 0.4274626 0.6553167 0.429395 0.6553167 0.429395 0.6589134 0.4344661 0.6590877 0.4363514 0.79587 0.4048618 0.8046875 0.4960938 0.712595 0.4026403 0.8046875 0.4960938 0.6484375 0.4960938 0.6739633 0.4412869 0.6739633 0.4412869 0.712595 0.4026403 0.8046875 0.4960938 0.6590877 0.4363514 0.6626338 0.4413934 0.6627917 0.443255 0.6553167 0.429395 0.6590877 0.4363514 0.6484375 0.4960938 0.6590877 0.4363514 0.6627917 0.443255 0.6484375 0.4960938 0.8554688 0.3984375 0.8476563 0.3984375 0.8476563 0.390625 0.8554688 0.390625 0.8476563 0.390625 0.8476563 0.3828125 0.8476563 0.3828125 0.8476563 0.375 0.8554688 0.375 0.8554688 0.375 0.8476563 0.375 0.8476563 0.3671875 0.8554688 0.3671875 0.8476563 0.3671875 0.8476563 0.359375 0.8476563 0.359375 0.8476563 0.3515625 0.8554688 0.3515625 0.8476563 0.3515625 0.8476563 0.34375 0.8554688 0.34375 0.8554688 0.34375 0.8476563 0.34375 0.8476563 0.3359375 0.8554688 0.3359375 0.8476563 0.3359375 0.8476563 0.328125 0.8476563 0.328125 0.8476563 0.3203125 0.8554688 0.3203125 0.8476563 0.3203125 0.8476563 0.3125 0.8554688 0.3125 0.8476563 0.3125 0.8476563 0.3046875 0.8554688 0.3046875 0.8476563 0.3046875 0.8476563 0.296875 0.8554688 0.296875 0.8476563 0.296875 0.8476563 0.2890625 0.8554688 0.2890625 0.8320313 0.59375 0.8828125 0.59375 0.8828125 0.5976563 0.8945313 0.3671875 0.8945313 0.375 0.8554688 0.375 0.6171875 0.3515625 0.6132813 0.3476563 0.6445313 0.3476563 0.6484375 0.5351563 0.6484375 0.4960938 0.8046875 0.4960938 0.6328125 0.3046875 0.625 0.3046875 0.625 0.2890625 0.8945313 0.3515625 0.8945313 0.359375 0.8554688 0.359375 0.8945313 0.3359375 0.8945313 0.34375 0.8554688 0.34375 0.8554688 0.2890625 0.8476563 0.2890625 0.8476563 0.28125 0.6367188 0.34375 0.6445313 0.3476563 0.6132813 0.3476563 0.8945313 0.375 0.8945313 0.3828125 0.8554688 0.3828125 0.8945313 0.2890625 0.8554688 0.2890625 0.8945313 0.2773438 0.8554688 0.2890625 0.8554688 0.28125 0.8554688 0.2773438 0.8945313 0.2773438 0.8554688 0.2890625 0.8554688 0.2773438 0.8945313 0.3125 0.9023438 0.3125 0.9023438 0.3203125 0.9414063 0.6054688 0.9453125 0.6015625 0.9453125 0.6132813 0.8945313 0.3203125 0.9023438 0.3203125 0.9023438 0.328125 0.6328125 0.4492188 0.625 0.4492188 0.625 0.4335938 0.8945313 0.2890625 0.8945313 0.296875 0.8554688 0.296875 0.625 0.3242188 0.6328125 0.3242188 0.6328125 0.3398438 0.7067155 0.6729791 0.8046875 0.7539063 0.6721291 0.7070778 0.8046875 0.7539063 0.6484375 0.7539063 0.6721291 0.7070778 0.6851683 0.6598361 0.6862586 0.6534677 0.6942515 0.660293 0.665088 0.6946941 0.6966667 0.663116 0.6991799 0.6652868 0.6685958 0.7009387 0.7017183 0.6680247 0.7042396 0.670189 0.6825394 0.6662004 0.6851683 0.6598361 0.6942515 0.660293 0.665088 0.6946941 0.6991799 0.6652868 0.6666692 0.697633 0.665088 0.6946941 0.6666692 0.697633 0.6579065 0.7014715 0.6545063 0.6970323 0.665088 0.6946941 0.6579065 0.7014715 0.6545063 0.6970323 0.6579065 0.7014715 0.658129 0.7032284 0.6685958 0.7009387 0.7042396 0.670189 0.6701936 0.7038277 0.6685958 0.7009387 0.6701936 0.7038277 0.6615781 0.7076281 0.658129 0.7032284 0.6685958 0.7009387 0.6615781 0.7076281 0.6618196 0.7093647 0.6721291 0.7070778 0.6484375 0.7539063 0.658129 0.7032284 0.6615781 0.7076281 0.6618196 0.7093647 0.6545063 0.6970323 0.658129 0.7032284 0.6484375 0.7539063 0.658129 0.7032284 0.6618196 0.7093647 0.6484375 0.7539063 0.678657 0.672223 0.6825394 0.6662004 0.6942515 0.660293 0.6736712 0.6775319 0.678657 0.672223 0.6942515 0.660293 0.6543128 0.6952406 0.6545063 0.6970323 0.6484375 0.6875 0.6545063 0.6970323 0.6484375 0.7539063 0.6484375 0.6875 0.6736712 0.6775319 0.6942515 0.660293 0.6631827 0.691349 0.6736712 0.6775319 0.6631827 0.691349 0.6678602 0.6818433 0.6631827 0.691349 0.6543128 0.6952406 0.6550616 0.6870194 0.6678602 0.6818433 0.6631827 0.691349 0.6615377 0.6850305 0.6615377 0.6850305 0.6631827 0.691349 0.6550616 0.6870194 0.8945313 0.328125 0.8945313 0.3359375 0.8554688 0.3359375 0.6367188 0.2851563 0.6328125 0.2890625 0.625 0.2890625 0.6132813 0.3476563 0.609375 0.3476563 0.609375 0.2773438 0.6132813 0.4570313 0.6132813 0.4960938 0.609375 0.4960938 0.609375 0.4960938 0.609375 0.4179688 0.6132813 0.4570313 0.8945313 0.40625 0.9023438 0.40625 0.9023438 0.4101563 0.9023438 0.2773438 0.9023438 0.28125 0.8945313 0.28125 0.8945313 0.3984375 0.9023438 0.3984375 0.9023438 0.40625 0.8984375 0.5820313 0.8320313 0.5820313 0.890625 0.578125 0.8320313 0.5820313 0.8320313 0.578125 0.890625 0.578125 0.6132813 0.4179688 0.6171875 0.4140625 0.640625 0.4140625 0.6484375 0.2773438 0.8046875 0.2773438 0.6708264 0.3265217 0.8046875 0.2773438 0.7060039 0.3593519 0.6708264 0.3265217 0.6941677 0.3724869 0.6869742 0.3796073 0.6852775 0.3732706 0.6988602 0.3673141 0.6964595 0.3695758 0.6645369 0.3391391 0.7036679 0.3622302 0.7012655 0.3644847 0.6676817 0.3327765 0.6484375 0.2773438 0.6708264 0.3265217 0.660544 0.3246204 0.6941677 0.3724869 0.6852775 0.3732706 0.6825568 0.3669947 0.665953 0.3361465 0.6988602 0.3673141 0.6645369 0.3391391 0.6571138 0.3326402 0.665953 0.3361465 0.6645369 0.3391391 0.6571138 0.3326402 0.6645369 0.3391391 0.6539687 0.3371986 0.6572394 0.3308789 0.6571138 0.3326402 0.6539687 0.3371986 0.6691008 0.3298349 0.7036679 0.3622302 0.6676817 0.3327765 0.6484375 0.2773438 0.660544 0.3246204 0.6572394 0.3308789 0.660544 0.3246204 0.6604059 0.3263612 0.6572394 0.3308789 0.6604059 0.3263612 0.6691008 0.3298349 0.6676817 0.3327765 0.6604059 0.3263612 0.6676817 0.3327765 0.6572394 0.3308789 0.6941677 0.3724869 0.6825568 0.3669947 0.6786093 0.3611079 0.6941677 0.3724869 0.6786093 0.3611079 0.6735859 0.3559776 0.6484375 0.2773438 0.6572394 0.3308789 0.6539687 0.3371986 0.6628094 0.3425499 0.6941677 0.3724869 0.6735859 0.3559776 0.6484375 0.2773438 0.6539687 0.3371986 0.6484375 0.3476563 0.6539687 0.3371986 0.6538631 0.3389946 0.6484375 0.3476563 0.6538631 0.3389946 0.6628094 0.3425499 0.6549568 0.3471782 0.6628094 0.3425499 0.6735859 0.3559776 0.6677594 0.3518777 0.6628094 0.3425499 0.6677594 0.3518777 0.6614339 0.3489242 0.6549568 0.3471782 0.6484375 0.3476563 0.6538631 0.3389946 0.8046875 0.5820313 0.8046875 0.578125 0.8320313 0.578125 0.8476563 0.40625 0.8476563 0.3984375 0.8554688 0.3984375 0.8476563 0.2773438 0.8554688 0.2773438 0.8554688 0.28125 0.8476563 0.4101563 0.8476563 0.40625 0.8554688 0.40625 0.6484375 0.4960938 0.6445313 0.4960938 0.6445313 0.4570313 0.6445313 0.4570313 0.6445313 0.4179688 0.6484375 0.4140625 0.6445313 0.3476563 0.6445313 0.2773438 0.6484375 0.2773438 0.8320313 0.578125 0.8046875 0.578125 0.8046875 0.5742188 0.8046875 0.5703125 0.8046875 0.5664063 0.8320313 0.5664063 0.8945313 0.296875 0.8945313 0.3046875 0.8554688 0.3046875 0.8984375 0.578125 0.9453125 0.578125 0.9453125 0.5820313 0.8085938 0.609375 0.8046875 0.6132813 0.8046875 0.6015625 0.890625 0.5664063 0.8984375 0.5664063 0.8984375 0.5703125 0.8984375 0.5703125 0.8320313 0.5703125 0.890625 0.5664063 0.9453125 0.5234375 0.8984375 0.5234375 0.8984375 0.5195313 0.9414063 0.5273438 0.9414063 0.5234375 0.9453125 0.5195313 0.9453125 0.5273438 0.9453125 0.53125 0.8984375 0.53125 0.8984375 0.578125 0.890625 0.578125 0.8984375 0.5742188 0.890625 0.578125 0.8320313 0.578125 0.8320313 0.5742188 0.8046875 0.5234375 0.8046875 0.5195313 0.8320313 0.5195313 0.8046875 0.5273438 0.8320313 0.5273438 0.8320313 0.53125 0.8085938 0.5234375 0.8085938 0.5273438 0.8046875 0.53125 0.8945313 0.3046875 0.8945313 0.3125 0.8554688 0.3125 0.9453125 0.515625 0.9453125 0.5195313 0.8984375 0.5195313 0.9414063 0.515625 0.9414063 0.5117188 0.9453125 0.5078125 0.9453125 0.5117188 0.8984375 0.5117188 0.8984375 0.5078125 0.8320313 0.5859375 0.8984375 0.5859375 0.890625 0.5898438 0.8984375 0.5859375 0.8984375 0.5898438 0.890625 0.5898438 0.8046875 0.515625 0.8320313 0.515625 0.8320313 0.5195313 0.8046875 0.5117188 0.8046875 0.5078125 0.8320313 0.5078125 0.8085938 0.5117188 0.8085938 0.515625 0.8046875 0.5195313 0.8984375 0.59375 0.8320313 0.59375 0.890625 0.5898438 0.8320313 0.59375 0.8320313 0.5898438 0.890625 0.5898438 0.9453125 0.5039063 0.9453125 0.5078125 0.8984375 0.5078125 0.9414063 0.5039063 0.9414063 0.5 0.9453125 0.4960938 0.9453125 0.5 0.8984375 0.5 0.8984375 0.4960938 0.8554688 0.40625 0.8554688 0.3984375 0.8554688 0.4101563 0.8554688 0.3984375 0.8945313 0.3984375 0.8945313 0.4101563 0.8945313 0.3984375 0.8945313 0.40625 0.8945313 0.4101563 0.8046875 0.5039063 0.8320313 0.5039063 0.8320313 0.5078125 0.8046875 0.5 0.8046875 0.4960938 0.8320313 0.4960938 0.8085938 0.5 0.8085938 0.5039063 0.8046875 0.5078125 0.8046875 0.2773438 0.8046875 0.4960938 0.7958816 0.4011822 0.8046875 0.4960938 0.79587 0.4048618 0.7958816 0.4011822 0.7088977 0.3616208 0.7060039 0.3593519 0.7934817 0.3560252 0.7060039 0.3593519 0.8046875 0.2773438 0.7934817 0.3560252 0.6719875 0.4374769 0.6626338 0.4413934 0.6703681 0.4343076 0.6626338 0.4413934 0.6590877 0.4363514 0.6703681 0.4343076 0.7107183 0.3984869 0.6719875 0.4374769 0.6703681 0.4343076 0.6683581 0.4304701 0.6589134 0.4344661 0.6667141 0.4272662 0.6589134 0.4344661 0.6553167 0.429395 0.6667141 0.4272662 0.7072473 0.3915 0.6683581 0.4304701 0.6667141 0.4272662 0.7037395 0.3845635 0.6647186 0.4234158 0.6765272 0.4028772 0.6647186 0.4234158 0.6551535 0.4274626 0.6564746 0.4133117 0.6765272 0.4028772 0.6647186 0.4234158 0.6707679 0.4072312 0.6551535 0.4274626 0.6484375 0.4140625 0.6564746 0.4133117 0.6564746 0.4133117 0.664846 0.4109677 0.6647186 0.4234158 0.664846 0.4109677 0.6707679 0.4072312 0.6647186 0.4234158 0.7037395 0.3845635 0.6765272 0.4028772 0.6808764 0.3969842 0.7037395 0.3845635 0.6808764 0.3969842 0.6847027 0.3909546 0.6862974 0.3846162 0.6869742 0.3796073 0.7037395 0.3845635 0.6869742 0.3796073 0.6941677 0.3724869 0.7019447 0.3798312 0.7037395 0.3845635 0.6869742 0.3796073 0.7019447 0.3798312 0.7037395 0.3845635 0.6847027 0.3909546 0.6862974 0.3846162 0.7886615 0.3855476 0.7037395 0.3845635 0.7019447 0.3798312 0.7886615 0.3855476 0.7019447 0.3798312 0.7870407 0.3757169 0.789077 0.3885076 0.7886615 0.3855476 0.7922265 0.3932982 0.7886615 0.3855476 0.7870407 0.3757169 0.7922265 0.3932982 0.7870407 0.3757169 0.7873313 0.3727117 0.7902636 0.3677988 0.7922265 0.3932982 0.7870407 0.3757169 0.7902636 0.3677988 0.7072473 0.3915 0.6667141 0.4272662 0.7056617 0.3886672 0.7922265 0.3932982 0.7072473 0.3915 0.789077 0.3885076 0.7072473 0.3915 0.7056617 0.3886672 0.789077 0.3885076 0.7034366 0.3757264 0.6964595 0.3695758 0.7047283 0.3728319 0.6964595 0.3695758 0.6988602 0.3673141 0.7047283 0.3728319 0.7873313 0.3727117 0.7034366 0.3757264 0.7047283 0.3728319 0.7873313 0.3727117 0.7047283 0.3728319 0.7902636 0.3677988 0.7922265 0.3932982 0.7902636 0.3677988 0.7936452 0.3597685 0.7902636 0.3677988 0.7905749 0.3647736 0.7936452 0.3597685 0.792643 0.3962891 0.7922265 0.3932982 0.7958816 0.4011822 0.7062069 0.3686895 0.7012655 0.3644847 0.7074477 0.3657639 0.7012655 0.3644847 0.7036679 0.3622302 0.7074477 0.3657639 0.7905749 0.3647736 0.7062069 0.3686895 0.7074477 0.3657639 0.7936452 0.3597685 0.7934817 0.3560252 0.8046875 0.2773438 0.7905749 0.3647736 0.7074477 0.3657639 0.7936452 0.3597685 0.7922265 0.3932982 0.7936452 0.3597685 0.7958816 0.4011822 0.7936452 0.3597685 0.8046875 0.2773438 0.7958816 0.4011822 0.7107183 0.3984869 0.6703681 0.4343076 0.709154 0.3956355 0.7107183 0.3984869 0.709154 0.3956355 0.792643 0.3962891 0.8828125 0.5351563 0.9414063 0.5351563 0.8828125 0.5390625 0.9414063 0.5351563 0.9414063 0.5390625 0.8828125 0.5390625 0.8085938 0.5390625 0.8085938 0.5351563 0.8320313 0.5390625 0.8085938 0.5351563 0.8320313 0.5351563 0.8320313 0.5390625 0.8320313 0.5351563 0.8828125 0.5351563 0.8828125 0.5390625 0.8828125 0.546875 0.9414063 0.546875 0.8828125 0.5507813 0.9414063 0.546875 0.9414063 0.5507813 0.8828125 0.5507813 0.8085938 0.5507813 0.8085938 0.546875 0.8320313 0.5507813 0.8085938 0.546875 0.8320313 0.546875 0.8320313 0.5507813 0.8320313 0.546875 0.8828125 0.546875 0.8828125 0.5507813 0.8828125 0.5585938 0.9414063 0.5585938 0.8828125 0.5625 0.9414063 0.5585938 0.9414063 0.5625 0.8828125 0.5625 0.8085938 0.5625 0.8085938 0.5585938 0.8320313 0.5625 0.8085938 0.5585938 0.8320313 0.5585938 0.8320313 0.5625 0.8320313 0.5585938 0.8828125 0.5585938 0.8828125 0.5625 0.9414063 0.6171875 0.9453125 0.6132813 0.9453125 0.625 0.9453125 0.5859375 0.9453125 0.5898438 0.8984375 0.5898438 0.8046875 0.5390625 0.8320313 0.5390625 0.8320313 0.5429688 0.8320313 0.5390625 0.8984375 0.5390625 0.8984375 0.5429688 0.9453125 0.5390625 0.9453125 0.5429688 0.8984375 0.5429688 0.9414063 0.5351563 0.9453125 0.53125 0.9453125 0.5429688 0.9453125 0.53125 0.8984375 0.53125 0.8984375 0.5351563 0.8984375 0.53125 0.8320313 0.53125 0.8320313 0.5351563 0.8046875 0.53125 0.8046875 0.5351563 0.8320313 0.5351563 0.8085938 0.5390625 0.8046875 0.5429688 0.8046875 0.53125 0.8046875 0.546875 0.8046875 0.5429688 0.8320313 0.5429688 0.8984375 0.546875 0.8320313 0.546875 0.8320313 0.5429688 0.9453125 0.546875 0.8984375 0.546875 0.8984375 0.5429688 0.9414063 0.546875 0.9453125 0.5429688 0.9453125 0.5546875 0.9453125 0.5507813 0.9453125 0.5546875 0.8984375 0.5546875 0.8320313 0.5507813 0.8984375 0.5507813 0.8984375 0.5546875 0.8046875 0.5507813 0.8320313 0.5507813 0.8320313 0.5546875 0.8085938 0.5507813 0.8046875 0.5546875 0.8046875 0.5429688 0.8046875 0.5585938 0.8046875 0.5546875 0.8320313 0.5546875 0.8984375 0.5585938 0.8320313 0.5585938 0.8320313 0.5546875 0.9453125 0.5585938 0.8984375 0.5585938 0.8984375 0.5546875 0.9414063 0.5585938 0.9453125 0.5546875 0.9453125 0.5664063 0.9453125 0.5625 0.9453125 0.5664063 0.8984375 0.5664063 0.8320313 0.5625 0.8984375 0.5625 0.8984375 0.5664063 0.8046875 0.5625 0.8320313 0.5625 0.8320313 0.5664063 0.8085938 0.5625 0.8046875 0.5664063 0.8046875 0.5546875 0.6210938 0.4609375 0.625 0.4648438 0.625 0.4804688 0.6445313 0.5351563 0.6445313 0.4960938 0.6484375 0.4960938 0.8320313 0.5078125 0.8320313 0.5039063 0.890625 0.5078125 0.8320313 0.5039063 0.8984375 0.5039063 0.890625 0.5078125 0.8085938 0.6210938 0.8046875 0.625 0.8046875 0.6132813 0.8320313 0.5898438 0.8046875 0.5898438 0.8046875 0.5859375 0.6210938 0.4296875 0.625 0.4335938 0.625 0.4492188 0.9453125 0.5742188 0.9453125 0.578125 0.8984375 0.578125 0.6210938 0.453125 0.625 0.4492188 0.6328125 0.4492188 0.8554688 0.3984375 0.8554688 0.390625 0.8945313 0.390625 0.625 0.4648438 0.6328125 0.4648438 0.6328125 0.4804688 0.8945313 0.34375 0.8945313 0.3515625 0.8554688 0.3515625 0.8945313 0.3359375 0.8945313 0.328125 0.9023438 0.328125 0.8945313 0.2890625 0.8945313 0.28125 0.9023438 0.28125 0.8945313 0.2890625 0.9023438 0.2890625 0.9023438 0.296875 0.8945313 0.296875 0.9023438 0.296875 0.9023438 0.3046875 0.8945313 0.3046875 0.9023438 0.3046875 0.9023438 0.3125 0.8320313 0.5195313 0.8320313 0.515625 0.890625 0.5195313 0.8320313 0.515625 0.8984375 0.515625 0.890625 0.5195313 0.8945313 0.3515625 0.9023438 0.3515625 0.9023438 0.359375 0.8945313 0.34375 0.9023438 0.34375 0.9023438 0.3515625 0.8945313 0.359375 0.8945313 0.3671875 0.8554688 0.3671875 0.6484375 0.5351563 0.8046875 0.5351563 0.6725161 0.590524 0.8046875 0.5351563 0.7931963 0.6274399 0.7112594 0.6293308 0.6725161 0.590524 0.8046875 0.5351563 0.7112594 0.6293308 0.6613433 0.5885105 0.661254 0.5903719 0.657865 0.5954006 0.6484375 0.5351563 0.6725161 0.590524 0.6613433 0.5885105 0.6540729 0.6042755 0.6484375 0.6210938 0.6542191 0.6023433 0.6484375 0.6210938 0.6484375 0.5351563 0.6542191 0.6023433 0.657865 0.5954006 0.657732 0.5972856 0.6542191 0.6023433 0.6484375 0.5351563 0.6613433 0.5885105 0.657865 0.5954006 0.6367188 0.3203125 0.6328125 0.3242188 0.625 0.3242188 0.8945313 0.3125 0.8945313 0.3203125 0.8554688 0.3203125 0.8984375 0.5195313 0.8984375 0.5234375 0.890625 0.5195313 0.8984375 0.5234375 0.8320313 0.5234375 0.890625 0.5195313 0.6367188 0.484375 0.6210938 0.484375 0.625 0.4804688 0.6210938 0.3085938 0.625 0.3046875 0.6328125 0.3046875 0.8984375 0.5664063 0.9453125 0.5664063 0.9453125 0.5703125 0.6210938 0.34375 0.625 0.3398438 0.6328125 0.3398438 0.8945313 0.3984375 0.8945313 0.390625 0.9023438 0.390625 0.8984375 0.5078125 0.8984375 0.5117188 0.890625 0.5078125 0.8984375 0.5117188 0.8320313 0.5117188 0.890625 0.5078125 0.8320313 0.53125 0.8320313 0.5273438 0.890625 0.53125 0.8320313 0.5273438 0.8984375 0.5273438 0.890625 0.53125 0.9414063 0.6289063 0.9453125 0.625 0.9453125 0.6367188 0.9453125 0.5976563 0.9453125 0.6015625 0.8984375 0.6015625 0.8984375 0.4960938 0.8984375 0.5 0.890625 0.4960938 0.8984375 0.5 0.8320313 0.5 0.890625 0.4960938 0.8046875 0.59375 0.8046875 0.5898438 0.8320313 0.5898438 0.8320313 0.6015625 0.8046875 0.6015625 0.8046875 0.5976563 0.8085938 0.6328125 0.8046875 0.6367188 0.8046875 0.625 0.7931963 0.6274399 0.8046875 0.5351563 0.7931929 0.6311195 0.8046875 0.5351563 0.8046875 0.7539063 0.7931929 0.6311195 0.8046875 0.7539063 0.7067155 0.6729791 0.7931327 0.6730901 0.7067155 0.6729791 0.709585 0.6706083 0.7931327 0.6730901 0.8046875 0.7539063 0.7931327 0.6730901 0.7931531 0.6693429 0.7079739 0.6665234 0.7042396 0.670189 0.7017183 0.6680247 0.7931929 0.6311195 0.8046875 0.7539063 0.7931531 0.6693429 0.7079739 0.6665234 0.7017183 0.6680247 0.7066196 0.6636469 0.657865 0.5954006 0.661254 0.5903719 0.669142 0.5974904 0.661254 0.5903719 0.6706756 0.5943269 0.669142 0.5974904 0.669142 0.5974904 0.6706756 0.5943269 0.7093751 0.6334774 0.6542191 0.6023433 0.657732 0.5972856 0.6656011 0.6045186 0.657732 0.5972856 0.6672064 0.6013207 0.6656011 0.6045186 0.6656011 0.6045186 0.6672064 0.6013207 0.7058358 0.6404517 0.6540729 0.6042755 0.6635924 0.6083861 0.6543546 0.6202624 0.6635924 0.6083861 0.7022034 0.6473758 0.6745533 0.6295657 0.6543546 0.6202624 0.6484375 0.6210938 0.6540729 0.6042755 0.6616945 0.6221625 0.6543546 0.6202624 0.6635924 0.6083861 0.6685211 0.62525 0.6616945 0.6221625 0.6635924 0.6083861 0.6745533 0.6295657 0.6685211 0.62525 0.6635924 0.6083861 0.6794179 0.6348639 0.6745533 0.6295657 0.7022034 0.6473758 0.6831247 0.6409096 0.6794179 0.6348639 0.7022034 0.6473758 0.6942515 0.660293 0.6862586 0.6534677 0.7019596 0.6526791 0.6862586 0.6534677 0.6855093 0.6472589 0.7022034 0.6473758 0.6855093 0.6472589 0.6831247 0.6409096 0.7022034 0.6473758 0.6862586 0.6534677 0.7022034 0.6473758 0.7019596 0.6526791 0.7019596 0.6526791 0.7022034 0.6473758 0.7859094 0.6467247 0.785943 0.6536587 0.7019596 0.6526791 0.7859094 0.6467247 0.785943 0.6536587 0.7859094 0.6467247 0.7895057 0.6389886 0.7859094 0.6467247 0.7863369 0.6437664 0.7895057 0.6389886 0.7863486 0.6566506 0.785943 0.6536587 0.7894666 0.6614478 0.7042044 0.6432787 0.6656011 0.6045186 0.7058358 0.6404517 0.7042044 0.6432787 0.7058358 0.6404517 0.7863369 0.6437664 0.7058358 0.6404517 0.7895057 0.6389886 0.7863369 0.6437664 0.785943 0.6536587 0.7895057 0.6389886 0.7894666 0.6614478 0.6991799 0.6652868 0.6966667 0.663116 0.7049899 0.6595649 0.6966667 0.663116 0.7035919 0.6567221 0.7049899 0.6595649 0.7049899 0.6595649 0.7035919 0.6567221 0.7863486 0.6566506 0.7894666 0.6614478 0.7049899 0.6595649 0.7863486 0.6566506 0.7079739 0.6665234 0.7066196 0.6636469 0.7898935 0.6644589 0.7898935 0.6644589 0.7894666 0.6614478 0.7931531 0.6693429 0.7894666 0.6614478 0.7895057 0.6389886 0.7931531 0.6693429 0.7895057 0.6389886 0.7899345 0.6359996 0.7931929 0.6311195 0.7931531 0.6693429 0.7895057 0.6389886 0.7931929 0.6311195 0.7931531 0.6693429 0.7079739 0.6665234 0.7898935 0.6644589 0.7077907 0.6363229 0.669142 0.5974904 0.7093751 0.6334774 0.7899345 0.6359996 0.7077907 0.6363229 0.7093751 0.6334774 0.8320313 0.6328125 0.8085938 0.6328125 0.8320313 0.6289063 0.8085938 0.6328125 0.8085938 0.6289063 0.8320313 0.6289063 0.8828125 0.6289063 0.9414063 0.6289063 0.9414063 0.6328125 0.8828125 0.6289063 0.9414063 0.6328125 0.8828125 0.6328125 0.8320313 0.6328125 0.8320313 0.6289063 0.8828125 0.6289063 0.8320313 0.6210938 0.8085938 0.6210938 0.8320313 0.6171875 0.8085938 0.6210938 0.8085938 0.6171875 0.8320313 0.6171875 0.8828125 0.6171875 0.9414063 0.6171875 0.9414063 0.6210938 0.8828125 0.6171875 0.9414063 0.6210938 0.8828125 0.6210938 0.8320313 0.6210938 0.8320313 0.6171875 0.8828125 0.6171875 0.8320313 0.609375 0.8085938 0.609375 0.8320313 0.6054688 0.8085938 0.609375 0.8085938 0.6054688 0.8320313 0.6054688 0.8828125 0.6054688 0.9414063 0.6054688 0.9414063 0.609375 0.8828125 0.6054688 0.9414063 0.609375 0.8828125 0.609375 0.8320313 0.609375 0.8320313 0.6054688 0.8828125 0.6054688 0.8046875 0.6289063 0.8046875 0.625 0.8320313 0.625 0.8320313 0.6289063 0.8320313 0.625 0.8984375 0.625 0.8984375 0.625 0.9453125 0.625 0.9453125 0.6289063 0.9453125 0.5898438 0.9453125 0.6015625 0.9414063 0.5976563 0.9453125 0.6328125 0.9453125 0.6367188 0.8984375 0.6367188 0.8984375 0.6328125 0.8984375 0.6367188 0.8320313 0.6367188 0.8320313 0.6367188 0.8046875 0.6367188 0.8046875 0.6328125 0.8046875 0.6015625 0.8046875 0.5898438 0.8085938 0.59375 0.8320313 0.625 0.8046875 0.625 0.8046875 0.6210938 0.8984375 0.6210938 0.8984375 0.625 0.8320313 0.625 0.9453125 0.6210938 0.9453125 0.625 0.8984375 0.625 0.9453125 0.578125 0.9453125 0.5898438 0.9414063 0.5859375 0.8984375 0.6132813 0.9453125 0.6132813 0.9453125 0.6171875 0.8320313 0.6171875 0.8320313 0.6132813 0.8984375 0.6132813 0.8046875 0.6171875 0.8046875 0.6132813 0.8320313 0.6132813 0.8046875 0.5898438 0.8046875 0.578125 0.8085938 0.5820313 0.8320313 0.6132813 0.8046875 0.6132813 0.8046875 0.609375 0.8984375 0.609375 0.8984375 0.6132813 0.8320313 0.6132813 0.9453125 0.609375 0.9453125 0.6132813 0.8984375 0.6132813 0.9453125 0.5664063 0.9453125 0.578125 0.9414063 0.5742188 0.8984375 0.6015625 0.9453125 0.6015625 0.9453125 0.6054688 0.8320313 0.6054688 0.8320313 0.6015625 0.8984375 0.6015625 0.8046875 0.6054688 0.8046875 0.6015625 0.8320313 0.6015625 0.8046875 0.578125 0.8046875 0.5664063 0.8085938 0.5703125 0.8554688 0.390625 0.8554688 0.3828125 0.8945313 0.3828125 0.6210938 0.4296875 0.6132813 0.4179688 0.6445313 0.4179688 0.6132813 0.2773438 0.6445313 0.2773438 0.6367188 0.2851563 0.6367188 0.484375 0.6445313 0.4960938 0.6132813 0.4960938 0.6445313 0.4960938 0.6367188 0.484375 0.6445313 0.4570313 0.6367188 0.484375 0.6367188 0.4609375 0.6445313 0.4570313 0.6210938 0.4609375 0.6210938 0.484375 0.6132813 0.4570313 0.6210938 0.484375 0.6132813 0.4960938 0.6132813 0.4570313 0.6445313 0.4570313 0.6367188 0.4609375 0.6367188 0.453125 0.6367188 0.4609375 0.6210938 0.4609375 0.6210938 0.453125 0.6367188 0.4296875 0.6445313 0.4179688 0.6367188 0.453125 0.6445313 0.4179688 0.6445313 0.4570313 0.6367188 0.453125 0.6367188 0.4609375 0.6210938 0.453125 0.6367188 0.453125 0.6210938 0.4609375 0.6132813 0.4570313 0.6210938 0.453125 0.6132813 0.4570313 0.6132813 0.4179688 0.6210938 0.453125 0.8085938 0.5039063 0.8085938 0.5 0.8320313 0.5 0.8320313 0.5039063 0.8320313 0.5 0.8828125 0.5 0.8828125 0.5 0.9414063 0.5 0.9414063 0.5039063 0.8320313 0.5234375 0.8320313 0.5273438 0.8085938 0.5273438 0.8828125 0.5234375 0.8828125 0.5273438 0.8320313 0.5273438 0.8828125 0.5234375 0.9414063 0.5234375 0.9414063 0.5273438 0.8085938 0.515625 0.8085938 0.5117188 0.8320313 0.5117188 0.8320313 0.515625 0.8320313 0.5117188 0.8828125 0.5117188 0.8828125 0.5117188 0.9414063 0.5117188 0.9414063 0.515625 0.8085938 0.5820313 0.8320313 0.5820313 0.8320313 0.5859375 0.8320313 0.5820313 0.8828125 0.5820313 0.8828125 0.5859375 0.8828125 0.5859375 0.8828125 0.5820313 0.9414063 0.5820313 0.8085938 0.5703125 0.8320313 0.5703125 0.8320313 0.5742188 0.8828125 0.5742188 0.8320313 0.5742188 0.8320313 0.5703125 0.8828125 0.5742188 0.8828125 0.5703125 0.9414063 0.5703125 + + + + + + + + + + + + + + +

    41 0 0 102 1 1 103 2 2 76 3 3 98 4 4 100 5 5 222 6 6 224 7 7 225 8 8 13 9 9 34 10 10 36 11 11 161 12 12 272 13 13 273 14 14 82 15 15 51 15 16 52 16 17 58 17 18 87 17 19 88 17 20 2 18 21 33 19 22 30 20 23 27 21 24 17 22 25 9 23 26 87 24 27 57 24 28 116 24 29 269 25 30 159 25 31 158 25 32 17 26 33 23 27 34 14 28 35 32 29 36 6 30 37 18 31 38 159 32 39 161 33 40 158 34 41 75 35 42 102 1 43 74 36 44 75 35 45 100 5 46 101 37 47 11 38 48 12 39 49 114 40 50 7 41 51 37 42 52 11 43 53 79 44 54 96 45 55 97 46 56 6 47 57 26 48 58 1 49 59 12 50 60 39 51 61 8 52 62 267 53 63 266 54 64 118 55 65 42 56 66 73 57 67 43 58 68 43 58 69 72 59 70 44 60 71 72 59 72 45 61 73 44 60 74 45 61 75 70 62 76 46 63 77 46 63 78 68 64 79 47 65 80 68 64 81 48 66 82 47 65 83 69 67 84 49 68 85 48 66 86 49 68 87 66 69 88 50 70 89 50 70 90 65 71 91 51 72 92 65 71 93 52 73 94 51 72 95 64 74 96 53 75 97 52 73 98 63 76 99 54 77 100 53 75 101 62 78 102 55 79 103 54 77 104 60 80 105 56 81 106 55 79 107 223 82 108 161 33 109 224 7 110 76 83 111 45 84 112 46 85 113 105 86 114 114 40 115 111 87 116 121 88 117 58 88 118 88 88 119 40 89 120 34 90 121 39 91 122 78 92 123 47 92 124 48 92 125 80 93 126 49 94 127 50 95 128 56 81 129 113 96 130 110 97 131 7 98 132 108 99 133 2 100 134 75 101 135 44 101 136 45 101 137 0 102 138 104 103 139 86 104 140 83 105 141 94 106 142 82 107 143 128 108 144 227 109 145 127 110 146 82 107 147 95 111 148 81 112 149 32 113 150 26 114 151 31 115 152 86 116 153 55 116 154 56 117 155 33 118 156 35 119 157 30 120 158 234 121 159 109 122 160 91 123 161 81 124 162 50 125 163 51 126 164 8 127 165 34 127 166 3 128 167 108 129 168 119 130 169 120 131 170 107 132 171 20 133 172 21 134 173 106 135 174 108 136 175 105 137 176 20 138 177 104 139 178 0 140 179 38 141 180 109 142 181 106 143 182 235 144 183 236 145 184 130 146 185 20 147 186 5 148 187 24 149 188 177 150 189 73 151 190 61 152 191 166 153 192 241 154 193 167 155 194 115 156 195 42 56 196 112 157 197 24 158 198 110 159 199 113 160 200 114 161 201 112 162 202 111 163 203 25 164 204 113 165 205 118 166 206 114 167 207 116 168 208 115 169 209 232 170 210 162 171 211 163 172 212 165 173 213 233 174 214 164 175 215 85 176 216 54 177 217 55 178 218 236 179 219 131 179 220 130 179 221 162 180 222 234 181 223 165 182 224 164 183 225 233 184 226 230 185 227 135 186 228 170 186 229 171 186 230 136 187 231 171 188 232 172 189 233 136 190 234 173 190 235 137 190 236 126 191 237 122 192 238 163 193 239 146 194 240 176 195 241 147 196 242 149 197 243 177 198 244 178 199 245 146 200 246 178 201 247 175 202 248 84 203 249 53 204 250 54 205 251 139 206 252 180 206 253 138 206 254 139 207 255 182 208 256 181 209 257 140 210 258 183 210 259 182 210 260 125 211 261 242 212 262 168 213 263 150 214 264 185 215 265 184 216 266 153 217 267 186 218 268 152 219 269 153 220 270 184 221 271 187 222 272 268 223 273 269 224 274 158 225 275 143 226 276 189 226 277 142 226 278 143 227 279 191 228 280 190 229 281 144 230 282 192 230 283 191 230 284 105 231 285 111 232 286 42 233 287 154 234 288 195 235 289 194 236 290 157 237 291 196 238 292 156 239 293 157 240 294 194 241 295 197 242 296 263 243 297 262 244 298 256 245 299 204 246 300 200 247 301 199 248 302 207 249 303 211 250 304 212 251 305 215 252 306 219 253 307 220 254 308 131 255 309 238 256 310 132 257 311 132 258 312 239 258 313 133 258 314 198 259 315 245 260 316 244 261 317 199 262 318 246 263 319 245 264 320 201 265 321 246 266 322 200 267 323 202 268 324 247 269 325 201 270 326 202 271 327 249 272 328 248 273 329 203 274 330 250 275 331 249 276 332 205 277 333 250 278 334 204 279 335 198 280 336 251 281 337 205 282 338 206 283 339 253 284 340 207 285 341 208 286 342 253 287 343 254 288 344 209 289 345 254 290 346 255 291 347 209 292 348 256 293 349 210 270 350 210 294 351 257 295 352 211 295 353 212 296 354 257 297 355 258 298 356 213 299 357 258 300 358 259 301 359 213 302 360 252 303 361 206 304 362 214 305 363 261 306 364 215 307 365 216 308 366 261 309 367 262 310 368 217 311 369 262 312 370 263 313 371 217 314 372 264 315 373 218 316 374 218 317 375 265 318 376 219 319 377 220 320 378 265 321 379 266 322 380 221 323 381 266 324 382 267 325 383 221 326 384 260 327 385 214 328 386 14 329 387 22 330 388 4 331 389 16 332 390 118 333 391 121 88 392 142 334 393 189 335 394 188 336 395 169 337 396 240 338 397 166 339 398 242 340 399 169 341 400 168 342 401 1 343 402 28 344 403 15 345 404 127 258 405 226 258 406 126 258 407 15 346 408 32 347 409 18 348 410 42 349 411 41 350 412 38 351 413 23 352 414 27 353 415 22 354 416 79 355 417 48 355 418 49 356 419 80 357 420 95 111 421 96 45 422 86 358 423 107 359 424 89 360 425 86 358 426 90 361 427 85 362 428 85 362 429 92 363 430 84 364 431 84 364 432 93 365 433 83 105 434 138 366 435 180 367 436 179 368 437 78 369 438 98 4 439 77 370 440 79 44 441 99 371 442 78 369 443 77 372 444 46 373 445 47 374 446 121 375 447 317 376 448 302 377 449 11 378 450 33 379 451 10 380 452 83 381 453 52 382 454 53 383 455 147 384 456 176 385 457 123 386 458 9 387 459 22 388 460 27 389 461 13 390 462 40 391 463 12 392 464 229 393 465 128 393 466 129 393 467 2 394 468 35 395 469 7 396 470 38 141 471 103 2 472 91 397 473 152 398 474 186 399 475 124 400 476 137 401 477 173 402 478 174 403 479 159 404 480 271 405 481 160 406 482 160 407 483 272 407 484 161 407 485 156 408 486 196 409 487 193 410 488 222 411 489 275 412 490 223 413 491 276 414 492 225 415 493 224 416 494 225 417 495 274 418 496 222 419 497 314 420 498 320 421 499 321 8 500 284 422 501 280 423 502 283 424 503 287 425 504 291 426 505 288 427 506 295 428 507 299 429 508 296 430 509 278 431 510 303 432 511 279 433 512 279 434 513 304 435 514 280 436 515 304 437 516 281 438 517 280 439 518 305 440 519 282 441 520 281 442 521 282 443 522 307 444 523 283 445 524 283 446 525 308 447 526 284 448 527 308 449 528 285 450 529 284 451 530 309 452 531 278 453 532 285 454 533 311 455 534 286 456 535 287 457 536 288 458 537 311 459 538 287 460 539 289 461 540 312 462 541 288 463 542 314 464 543 289 465 544 290 442 545 315 466 546 290 467 547 291 466 548 292 468 549 315 469 550 291 470 551 293 471 552 316 472 553 292 473 554 310 474 555 293 475 556 286 476 557 319 477 558 294 478 559 295 479 560 296 480 561 319 481 562 295 482 563 297 483 564 320 484 565 296 485 566 322 486 567 297 487 568 298 488 569 323 489 570 298 490 571 299 491 572 300 492 573 323 493 574 299 494 575 301 495 576 324 496 577 300 497 578 318 498 579 301 499 580 294 500 581 43 501 582 74 502 583 41 503 584 1 504 585 24 149 586 6 505 587 120 506 588 8 507 589 3 508 590 9 509 591 16 510 592 4 511 593 20 147 594 1 504 595 15 512 596 154 513 597 156 514 598 155 515 599 155 515 600 145 516 601 142 517 602 145 516 603 143 518 604 142 517 605 147 519 606 149 520 607 146 520 608 134 521 609 148 522 610 147 519 611 134 521 612 136 523 613 137 524 614 150 525 615 152 526 616 151 527 617 151 527 618 141 528 619 138 529 620 141 528 621 139 520 622 138 529 623 166 530 624 168 531 625 169 8 626 167 532 627 133 533 628 168 531 629 133 533 630 131 8 631 132 8 632 165 534 633 163 535 634 162 8 635 126 536 636 164 537 637 129 538 638 126 536 639 128 539 640 127 8 641 41 0 642 74 36 643 102 1 644 76 3 645 77 370 646 98 4 647 222 6 648 223 82 649 224 7 650 13 9 651 3 540 652 34 10 653 273 14 654 276 541 655 224 542 656 224 542 657 161 12 658 273 14 659 82 15 660 81 16 661 51 15 662 58 17 663 57 17 664 87 17 665 2 18 666 10 543 667 33 19 668 27 21 669 29 544 670 17 22 671 116 24 672 117 24 673 120 24 674 120 24 675 119 24 676 116 24 677 119 24 678 87 24 679 116 24 680 269 545 681 270 545 682 159 545 683 17 26 684 29 546 685 23 27 686 32 29 687 31 547 688 6 30 689 159 32 690 160 8 691 161 33 692 75 35 693 101 37 694 102 1 695 75 35 696 76 3 697 100 5 698 10 548 699 2 100 700 108 99 701 108 99 702 120 506 703 13 549 704 120 506 705 3 508 706 13 549 707 10 548 708 108 99 709 13 549 710 12 39 711 8 507 712 117 550 713 10 548 714 13 549 715 12 39 716 114 40 717 7 98 718 11 38 719 11 38 720 10 548 721 12 39 722 12 39 723 117 550 724 114 40 725 7 41 726 35 551 727 37 42 728 79 44 729 80 357 730 96 45 731 6 47 732 31 552 733 26 48 734 12 50 735 40 553 736 39 51 737 118 55 738 113 554 739 244 555 740 113 554 741 251 556 742 244 555 743 244 555 744 252 520 745 259 557 746 264 558 747 58 559 748 265 520 749 58 559 750 118 55 751 266 54 752 266 54 753 265 520 754 58 559 755 259 557 756 260 560 757 267 53 758 244 555 759 259 557 760 118 55 761 259 557 762 267 53 763 118 55 764 42 56 765 61 561 766 73 57 767 43 58 768 73 57 769 72 59 770 72 59 771 71 562 772 45 61 773 45 61 774 71 562 775 70 62 776 46 63 777 70 62 778 68 64 779 68 64 780 69 67 781 48 66 782 69 67 783 67 563 784 49 68 785 49 68 786 67 563 787 66 69 788 50 70 789 66 69 790 65 71 791 65 71 792 64 74 793 52 73 794 64 74 795 63 76 796 53 75 797 63 76 798 62 78 799 54 77 800 62 78 801 60 80 802 55 79 803 60 80 804 59 564 805 56 81 806 223 82 807 158 34 808 161 33 809 76 83 810 75 565 811 45 84 812 105 86 813 108 99 814 114 40 815 121 88 816 118 333 817 58 88 818 40 89 819 36 566 820 34 90 821 78 92 822 77 92 823 47 92 824 80 93 825 79 567 826 49 94 827 56 81 828 59 564 829 113 96 830 7 98 831 114 40 832 108 99 833 75 101 834 74 101 835 44 101 836 86 104 837 56 568 838 0 102 839 56 568 840 110 569 841 5 570 842 0 102 843 56 568 844 5 570 845 83 105 846 93 365 847 94 106 848 128 108 849 228 571 850 227 109 851 82 107 852 94 106 853 95 111 854 32 113 855 28 572 856 26 114 857 86 116 858 85 117 859 55 116 860 33 118 861 37 573 862 35 119 863 273 574 864 87 575 865 276 576 866 87 575 867 119 577 868 276 576 869 99 578 870 97 579 871 230 580 872 232 581 873 122 582 874 235 583 875 242 584 876 125 585 877 268 586 878 98 587 879 99 578 880 230 580 881 232 581 882 235 583 883 241 588 884 232 581 885 241 588 886 240 589 887 231 590 888 232 581 889 240 589 890 231 590 891 240 589 892 243 591 893 242 584 894 268 586 895 275 8 896 242 584 897 275 8 898 274 8 899 243 591 900 242 584 901 274 8 902 277 592 903 276 576 904 119 577 905 243 591 906 274 8 907 277 592 908 231 590 909 243 591 910 119 577 911 243 591 912 277 592 913 119 577 914 100 8 915 98 587 916 230 580 917 101 593 918 100 8 919 230 580 920 234 121 921 231 590 922 109 122 923 231 590 924 119 577 925 109 122 926 101 593 927 230 580 928 233 594 929 101 593 930 233 594 931 102 595 932 233 594 933 234 121 934 91 123 935 102 595 936 233 594 937 103 8 938 103 8 939 233 594 940 91 123 941 81 124 942 80 596 943 50 125 944 8 127 945 39 597 946 34 127 947 108 129 948 109 598 949 119 130 950 21 134 951 16 599 952 121 600 953 121 600 954 107 132 955 21 134 956 106 135 957 109 601 958 108 136 959 20 138 960 107 602 961 104 139 962 38 141 963 91 397 964 109 142 965 130 146 966 167 603 967 235 144 968 167 603 969 241 604 970 235 144 971 20 147 972 0 605 973 5 148 974 116 606 975 57 607 976 196 608 977 57 607 978 193 609 979 196 608 980 174 610 981 67 611 982 69 612 983 179 613 984 123 614 985 176 615 986 188 616 987 124 617 988 186 618 989 116 606 990 196 608 991 197 619 992 174 610 993 69 612 994 68 620 995 185 621 996 179 613 997 176 615 998 184 622 999 185 621 1000 176 615 1001 184 622 1002 176 615 1003 175 623 1004 187 624 1005 184 622 1006 175 623 1007 195 625 1008 188 616 1009 186 618 1010 116 606 1011 197 619 1012 187 624 1013 197 619 1014 194 626 1015 187 624 1016 194 626 1017 195 625 1018 186 618 1019 194 626 1020 186 618 1021 187 624 1022 174 610 1023 68 620 1024 70 627 1025 174 610 1026 70 627 1027 71 628 1028 116 606 1029 187 624 1030 175 623 1031 177 150 1032 174 610 1033 71 628 1034 116 606 1035 175 623 1036 115 629 1037 175 623 1038 178 630 1039 115 629 1040 178 630 1041 177 150 1042 61 152 1043 177 150 1044 71 628 1045 72 631 1046 177 150 1047 72 631 1048 73 151 1049 61 152 1050 115 629 1051 178 630 1052 166 153 1053 240 632 1054 241 154 1055 115 156 1056 61 561 1057 42 56 1058 24 158 1059 5 633 1060 110 159 1061 114 161 1062 115 634 1063 112 162 1064 118 166 1065 19 635 1066 25 164 1067 25 164 1068 24 636 1069 113 165 1070 114 167 1071 117 637 1072 116 168 1073 232 170 1074 231 638 1075 162 171 1076 165 173 1077 234 639 1078 233 174 1079 85 176 1080 84 640 1081 54 177 1082 236 641 1083 237 641 1084 131 641 1085 162 180 1086 231 642 1087 234 181 1088 230 185 1089 229 643 1090 129 644 1091 129 644 1092 164 183 1093 230 185 1094 135 645 1095 134 645 1096 170 645 1097 136 187 1098 135 646 1099 171 188 1100 136 647 1101 172 647 1102 173 647 1103 226 648 1104 122 192 1105 126 191 1106 122 192 1107 232 649 1108 163 193 1109 146 194 1110 175 650 1111 176 195 1112 149 197 1113 148 651 1114 177 198 1115 146 200 1116 149 652 1117 178 201 1118 84 203 1119 83 653 1120 53 204 1121 139 654 1122 181 654 1123 180 654 1124 139 207 1125 140 655 1126 182 208 1127 140 645 1128 141 645 1129 183 645 1130 168 213 1131 133 656 1132 125 211 1133 133 656 1134 239 657 1135 125 211 1136 150 214 1137 151 658 1138 185 215 1139 153 217 1140 187 659 1141 186 218 1142 153 220 1143 150 660 1144 184 221 1145 158 225 1146 223 661 1147 268 223 1148 223 661 1149 275 662 1150 268 223 1151 143 663 1152 190 663 1153 189 663 1154 143 227 1155 144 664 1156 191 228 1157 144 665 1158 145 665 1159 192 665 1160 112 666 1161 42 233 1162 111 232 1163 42 233 1164 38 667 1165 105 231 1166 38 667 1167 106 668 1168 105 231 1169 154 234 1170 155 669 1171 195 235 1172 157 237 1173 197 670 1174 196 238 1175 157 240 1176 154 671 1177 194 241 1178 57 607 1179 58 559 1180 263 243 1181 58 559 1182 264 558 1183 263 243 1184 192 672 1185 193 609 1186 191 673 1187 193 609 1188 57 607 1189 191 673 1190 261 674 1191 260 560 1192 258 675 1193 260 560 1194 259 557 1195 258 675 1196 262 244 1197 261 674 1198 258 675 1199 253 676 1200 252 520 1201 245 677 1202 252 520 1203 244 555 1204 245 677 1205 254 678 1206 253 676 1207 245 677 1208 249 679 1209 250 680 1210 63 681 1211 250 680 1212 251 556 1213 59 682 1214 63 681 1215 250 680 1216 62 683 1217 251 556 1218 113 554 1219 59 682 1220 59 682 1221 60 684 1222 250 680 1223 60 684 1224 62 683 1225 250 680 1226 249 679 1227 63 681 1228 64 685 1229 249 679 1230 64 685 1231 65 686 1232 66 687 1233 67 611 1234 249 679 1235 67 611 1236 174 610 1237 173 688 1238 249 679 1239 67 611 1240 173 688 1241 249 679 1242 65 686 1243 66 687 1244 248 689 1245 249 679 1246 173 688 1247 248 689 1248 173 688 1249 172 520 1250 247 520 1251 248 689 1252 255 520 1253 248 689 1254 172 520 1255 255 520 1256 172 520 1257 171 690 1258 181 520 1259 255 520 1260 172 520 1261 181 520 1262 254 678 1263 245 677 1264 246 520 1265 255 520 1266 254 678 1267 247 520 1268 254 678 1269 246 520 1270 247 520 1271 170 691 1272 123 614 1273 180 692 1274 123 614 1275 179 613 1276 180 692 1277 171 690 1278 170 691 1279 180 692 1280 171 690 1281 180 692 1282 181 520 1283 255 520 1284 181 520 1285 190 520 1286 181 520 1287 182 693 1288 190 520 1289 256 245 1290 255 520 1291 263 243 1292 183 694 1293 124 617 1294 189 695 1295 124 617 1296 188 616 1297 189 695 1298 182 693 1299 183 694 1300 189 695 1301 190 520 1302 191 673 1303 57 607 1304 182 693 1305 189 695 1306 190 520 1307 255 520 1308 190 520 1309 263 243 1310 190 520 1311 57 607 1312 263 243 1313 262 244 1314 258 675 1315 257 696 1316 262 244 1317 257 696 1318 256 245 1319 203 697 1320 202 520 1321 200 247 1322 202 520 1323 201 520 1324 200 247 1325 198 698 1326 205 699 1327 199 248 1328 205 699 1329 204 246 1330 199 248 1331 204 246 1332 203 697 1333 200 247 1334 208 700 1335 209 520 1336 211 250 1337 209 520 1338 210 520 1339 211 250 1340 213 520 1341 206 701 1342 212 251 1343 206 701 1344 207 249 1345 212 251 1346 207 249 1347 208 700 1348 211 250 1349 216 702 1350 217 520 1351 219 253 1352 217 520 1353 218 520 1354 219 253 1355 221 520 1356 214 703 1357 220 254 1358 214 703 1359 215 252 1360 220 254 1361 215 252 1362 216 702 1363 219 253 1364 131 255 1365 237 704 1366 238 256 1367 132 705 1368 238 705 1369 239 705 1370 198 259 1371 199 706 1372 245 260 1373 199 262 1374 200 707 1375 246 263 1376 201 265 1377 247 708 1378 246 266 1379 202 268 1380 248 709 1381 247 269 1382 202 271 1383 203 710 1384 249 272 1385 203 274 1386 204 711 1387 250 275 1388 205 277 1389 251 712 1390 250 278 1391 198 280 1392 244 713 1393 251 281 1394 206 283 1395 252 714 1396 253 284 1397 208 286 1398 207 715 1399 253 287 1400 209 289 1401 208 716 1402 254 290 1403 209 292 1404 255 717 1405 256 293 1406 210 294 1407 256 718 1408 257 295 1409 212 296 1410 211 719 1411 257 297 1412 213 299 1413 212 720 1414 258 300 1415 213 302 1416 259 721 1417 252 303 1418 214 305 1419 260 722 1420 261 306 1421 216 308 1422 215 723 1423 261 309 1424 217 311 1425 216 724 1426 262 312 1427 217 314 1428 263 725 1429 264 315 1430 218 317 1431 264 726 1432 265 318 1433 220 320 1434 219 727 1435 265 321 1436 221 323 1437 220 728 1438 266 324 1439 221 326 1440 267 729 1441 260 327 1442 14 329 1443 23 730 1444 22 330 1445 16 332 1446 19 731 1447 118 333 1448 195 732 1449 155 733 1450 188 336 1451 155 733 1452 142 334 1453 188 336 1454 169 337 1455 243 734 1456 240 338 1457 242 340 1458 243 735 1459 169 341 1460 1 343 1461 26 736 1462 28 344 1463 127 737 1464 227 737 1465 226 737 1466 15 346 1467 28 738 1468 32 347 1469 42 349 1470 43 739 1471 41 350 1472 23 352 1473 29 740 1474 27 353 1475 79 355 1476 78 356 1477 48 355 1478 80 357 1479 81 112 1480 95 111 1481 86 358 1482 104 741 1483 107 359 1484 86 358 1485 89 360 1486 90 361 1487 85 362 1488 90 361 1489 92 363 1490 84 364 1491 92 363 1492 93 365 1493 185 742 1494 151 743 1495 179 368 1496 151 743 1497 138 366 1498 179 368 1499 78 369 1500 99 371 1501 98 4 1502 79 44 1503 97 46 1504 99 371 1505 77 372 1506 76 744 1507 46 373 1508 121 375 1509 88 745 1510 324 746 1511 88 745 1512 322 8 1513 323 8 1514 324 746 1515 88 745 1516 323 8 1517 325 747 1518 318 748 1519 317 376 1520 121 375 1521 324 746 1522 325 747 1523 309 749 1524 107 750 1525 302 377 1526 107 750 1527 121 375 1528 302 377 1529 317 376 1530 310 751 1531 302 377 1532 121 375 1533 325 747 1534 317 376 1535 11 378 1536 37 752 1537 33 379 1538 83 381 1539 82 753 1540 52 382 1541 170 754 1542 134 755 1543 123 386 1544 134 755 1545 147 384 1546 123 386 1547 9 387 1548 4 756 1549 22 388 1550 13 390 1551 36 757 1552 40 391 1553 229 758 1554 228 758 1555 128 758 1556 2 394 1557 30 759 1558 35 395 1559 38 141 1560 41 0 1561 103 2 1562 183 760 1563 141 761 1564 124 400 1565 141 761 1566 152 398 1567 124 400 1568 177 762 1569 148 763 1570 174 403 1571 148 763 1572 137 401 1573 174 403 1574 159 404 1575 270 764 1576 271 405 1577 160 765 1578 271 765 1579 272 765 1580 192 766 1581 145 767 1582 193 410 1583 145 767 1584 156 408 1585 193 410 1586 222 411 1587 274 768 1588 275 412 1589 276 414 1590 277 769 1591 225 415 1592 225 417 1593 277 770 1594 274 418 1595 322 8 1596 88 745 1597 321 8 1598 88 745 1599 87 575 1600 321 8 1601 87 575 1602 273 574 1603 271 771 1604 273 574 1605 272 772 1606 271 771 1607 87 575 1608 271 771 1609 270 8 1610 269 773 1611 268 586 1612 125 585 1613 321 8 1614 87 575 1615 270 8 1616 269 773 1617 125 585 1618 239 774 1619 317 376 1620 318 748 1621 316 775 1622 318 748 1623 319 776 1624 316 775 1625 316 775 1626 319 776 1627 320 421 1628 302 377 1629 310 751 1630 303 777 1631 310 751 1632 311 778 1633 303 777 1634 303 777 1635 311 778 1636 312 779 1637 309 749 1638 308 780 1639 89 781 1640 308 780 1641 307 782 1642 93 783 1643 89 781 1644 107 750 1645 309 749 1646 90 784 1647 89 781 1648 308 780 1649 92 785 1650 90 784 1651 308 780 1652 93 783 1653 92 785 1654 308 780 1655 94 8 1656 93 783 1657 307 782 1658 95 8 1659 94 8 1660 307 782 1661 230 580 1662 97 579 1663 229 786 1664 97 579 1665 96 787 1666 307 782 1667 96 787 1668 95 8 1669 307 782 1670 97 579 1671 307 782 1672 229 786 1673 229 786 1674 307 782 1675 306 788 1676 228 8 1677 229 786 1678 306 788 1679 228 8 1680 306 788 1681 313 789 1682 306 788 1683 305 790 1684 313 789 1685 227 791 1686 228 8 1687 237 8 1688 304 8 1689 303 777 1690 312 779 1691 304 8 1692 312 779 1693 305 790 1694 312 779 1695 313 789 1696 305 790 1697 228 8 1698 313 789 1699 237 8 1700 235 583 1701 122 582 1702 236 792 1703 122 582 1704 226 793 1705 236 792 1706 236 792 1707 226 793 1708 227 791 1709 237 8 1710 236 792 1711 227 791 1712 269 773 1713 239 774 1714 238 794 1715 238 794 1716 237 8 1717 270 8 1718 237 8 1719 313 789 1720 270 8 1721 313 789 1722 314 420 1723 321 8 1724 270 8 1725 313 789 1726 321 8 1727 270 8 1728 269 773 1729 238 794 1730 315 795 1731 316 775 1732 320 421 1733 314 420 1734 315 795 1735 320 421 1736 284 422 1737 285 796 1738 279 797 1739 285 796 1740 278 798 1741 279 797 1742 280 423 1743 281 8 1744 282 8 1745 280 423 1746 282 8 1747 283 424 1748 284 422 1749 279 797 1750 280 423 1751 287 425 1752 286 799 1753 292 800 1754 286 799 1755 293 8 1756 292 800 1757 291 426 1758 290 8 1759 289 8 1760 291 426 1761 289 8 1762 288 427 1763 287 425 1764 292 800 1765 291 426 1766 295 428 1767 294 8 1768 300 8 1769 294 8 1770 301 8 1771 300 8 1772 299 429 1773 298 8 1774 297 8 1775 299 429 1776 297 8 1777 296 430 1778 295 428 1779 300 8 1780 299 429 1781 278 431 1782 302 801 1783 303 432 1784 279 434 1785 303 802 1786 304 435 1787 304 437 1788 305 803 1789 281 438 1790 305 440 1791 306 804 1792 282 441 1793 282 443 1794 306 805 1795 307 444 1796 283 446 1797 307 806 1798 308 447 1799 308 449 1800 309 807 1801 285 450 1802 309 452 1803 302 808 1804 278 453 1805 311 455 1806 310 809 1807 286 456 1808 288 458 1809 312 810 1810 311 459 1811 289 461 1812 313 811 1813 312 462 1814 314 464 1815 313 812 1816 289 465 1817 315 466 1818 314 467 1819 290 467 1820 292 468 1821 316 813 1822 315 469 1823 293 471 1824 317 814 1825 316 472 1826 310 474 1827 317 815 1828 293 475 1829 319 477 1830 318 816 1831 294 478 1832 296 480 1833 320 817 1834 319 481 1835 297 483 1836 321 818 1837 320 484 1838 322 486 1839 321 819 1840 297 487 1841 323 489 1842 322 820 1843 298 490 1844 300 492 1845 324 821 1846 323 493 1847 301 495 1848 325 822 1849 324 496 1850 318 498 1851 325 823 1852 301 499 1853 43 501 1854 44 824 1855 74 502 1856 1 504 1857 20 147 1858 24 149 1859 120 506 1860 117 550 1861 8 507 1862 9 509 1863 19 825 1864 16 510 1865 19 825 1866 9 509 1867 25 826 1868 9 509 1869 17 827 1870 25 826 1871 14 828 1872 4 511 1873 21 829 1874 4 511 1875 16 510 1876 21 829 1877 25 826 1878 17 827 1879 18 830 1880 17 827 1881 14 828 1882 15 512 1883 6 505 1884 24 149 1885 18 830 1886 24 149 1887 25 826 1888 18 830 1889 17 827 1890 15 512 1891 18 830 1892 14 828 1893 21 829 1894 15 512 1895 21 829 1896 20 147 1897 15 512 1898 154 513 1899 157 520 1900 156 514 1901 155 515 1902 156 514 1903 145 516 1904 145 516 1905 144 520 1906 143 518 1907 147 519 1908 148 522 1909 149 520 1910 134 521 1911 137 524 1912 148 522 1913 134 521 1914 135 520 1915 136 523 1916 150 525 1917 153 520 1918 152 526 1919 151 527 1920 152 526 1921 141 528 1922 141 528 1923 140 520 1924 139 520 1925 166 530 1926 167 532 1927 168 531 1928 167 532 1929 130 831 1930 133 533 1931 133 533 1932 130 831 1933 131 8 1934 165 534 1935 164 537 1936 163 535 1937 126 536 1938 163 535 1939 164 537 1940 126 536 1941 129 538 1942 128 539 1943

    +
    +
    +
    + + + + 1.125 1.2511 -0.2375 1.875 1.2511 -0.2375 1.875 2.2527 -0.2375 1.125 2.2527 -0.2375 1.125 1.251099 0.2375 1.875 1.251099 0.2375 1.875 2.2527 0.2375 1.125 2.2527 0.2375 + + + + + + + + + + 0 0 -1 0 0 1 + + + + + + + + + + 0.3398438 0.8203125 0.40625 0.8632813 0.3398438 0.8632813 0.1484375 0.8203125 0.08203125 0.8632813 0.08203125 0.8203125 0.3398438 0.8203125 0.40625 0.8203125 0.40625 0.8632813 0.1484375 0.8203125 0.1484375 0.8632813 0.08203125 0.8632813 + + + + + + + + + + + + + + +

    0 0 0 2 0 1 1 0 2 6 1 3 4 1 4 5 1 5 0 0 6 3 0 7 2 0 8 6 1 9 7 1 10 4 1 11

    +
    +
    +
    + + + + -2.7797e-7 0.4163811 0.262669 2.63627e-7 -0.4163811 0.262669 0.2795697 0.2081907 0.117669 0.27957 -0.2081903 0.117669 0.2795697 0.2081907 -0.152556 0.27957 -0.2081903 -0.152556 0.09754449 0.4903932 -0.242556 0.0828424 0.4164784 -0.317556 0.1913412 0.4619403 -0.242556 0.1625002 0.3923144 -0.317556 0.2777848 0.4157353 -0.242556 0.2359163 0.3530727 -0.317556 0.3535532 0.353554 -0.242556 0.3002635 0.3002646 -0.317556 0.4157345 0.277786 -0.242556 0.3530725 0.2359166 -0.317556 0.4619396 0.1913424 -0.242556 0.3923134 0.1625022 -0.317556 0.4903928 0.09754586 -0.242556 0.416478 0.08284306 -0.317556 0.5000004 7.15256e-7 -0.242556 0.4246375 8.34465e-7 -0.317556 0.4903927 -0.09754455 -0.242556 0.4164779 -0.08284199 -0.317556 0.4619401 -0.1913412 -0.242556 0.3923138 -0.1625012 -0.317556 0.4157351 -0.2777848 -0.242556 0.353073 -0.2359156 -0.317556 0.3535538 -0.3535532 -0.242556 0.3002642 -0.3002635 -0.317556 0.2777854 -0.4157344 -0.242556 0.2359163 -0.3530723 -0.317556 0.1913417 -0.4619397 -0.242556 0.162501 -0.3923137 -0.317556 0.0975455 -0.4903927 -0.242556 0.082843 -0.4164779 -0.317556 0.09754449 0.4903932 0.207669 0.0828424 0.4164784 0.282669 0.1913412 0.4619403 0.207669 0.1625002 0.3923144 0.282669 0.2777848 0.4157353 0.207669 0.2359163 0.3530727 0.282669 0.3535532 0.353554 0.207669 0.3002635 0.3002646 0.282669 0.4157345 0.277786 0.207669 0.3530725 0.2359166 0.282669 0.4619396 0.1913424 0.207669 0.3923134 0.1625022 0.282669 0.4903928 0.09754586 0.207669 0.416478 0.08284306 0.282669 0.5000004 7.15256e-7 0.207669 0.4246375 8.34465e-7 0.282669 0.4903927 -0.09754455 0.207669 0.4164779 -0.08284199 0.282669 0.4619401 -0.1913412 0.207669 0.3923138 -0.1625012 0.282669 0.4157351 -0.2777848 0.207669 0.353073 -0.2359156 0.282669 0.3535538 -0.3535532 0.207669 0.3002642 -0.3002635 0.282669 0.2777854 -0.4157344 0.207669 0.2359163 -0.3530723 0.282669 0.1913417 -0.4619397 0.207669 0.162501 -0.3923137 0.282669 0.0975455 -0.4903927 0.207669 0.082843 -0.4164779 0.282669 0.01996779 0.4226706 0.282669 0.01996713 0.4980335 0.207669 -2.86847e-7 0.5 0.1794527 -2.7797e-7 0.4163811 -0.297556 0.01996779 0.4226706 -0.317556 0.01996713 0.4980335 -0.242556 -2.86847e-7 0.5 -0.2143397 2.86847e-7 -0.5 -0.2143397 0.01996773 -0.4980334 -0.242556 2.63627e-7 -0.4163811 -0.297556 0.01996833 -0.4226705 -0.317556 2.86847e-7 -0.5 0.1794527 0.01996773 -0.4980334 0.207669 0.01996833 -0.4226705 0.282669 + + + + + + + + + + -0.597267 0.8020425 0 -0.597267 0.8020425 0 -0.597267 0.8020426 0 0 -2.04634e-6 1 0 3.63074e-6 1 0 0 1 -0.4604119 -3.11456e-7 0.8877055 -0.4604119 -3.28784e-7 0.8877055 -0.4604119 -3.40901e-7 0.8877055 0 -9.6597e-7 -1 0 2.02082e-6 -1 0 0 -1 0.1376144 0.6918451 -0.7088109 0.2699437 0.6517032 -0.7088112 0.1376144 0.6918458 -0.7088102 0.3918973 0.5865175 -0.7088115 0.2699443 0.6517028 -0.7088114 0.4987913 0.4987925 -0.7088111 0.391898 0.5865171 -0.7088114 0.5865169 0.3918989 -0.7088111 0.4987911 0.4987931 -0.7088109 0.5865169 0.3918986 -0.7088113 0.6517024 0.2699456 -0.7088112 0.6517026 0.2699452 -0.7088112 0.6918438 0.1376183 -0.7088114 0.6918439 0.1376182 -0.7088112 0.7053979 -2.52695e-7 -0.7088116 0.6918441 -0.1376166 -0.7088113 0.7053984 -1.6417e-7 -0.7088111 0.6517035 -0.2699428 -0.7088114 0.6918436 -0.1376168 -0.7088117 0.5865179 -0.3918975 -0.7088111 0.6517036 -0.2699429 -0.7088112 0.4987917 -0.4987921 -0.7088112 0.5865176 -0.3918977 -0.7088113 0.391898 -0.5865173 -0.7088114 0.4987916 -0.4987922 -0.7088112 0.2699458 -0.6517023 -0.7088113 0.3918978 -0.5865172 -0.7088114 0.1376171 -0.6918442 -0.7088111 0.2699452 -0.6517028 -0.7088111 0.2699453 -0.6517027 0.7088111 0.1376169 -0.6918443 0.708811 0.2699455 -0.6517025 0.7088112 0.7053979 -2.83429e-7 0.7088116 0.691844 -0.1376168 0.7088114 0.7053983 -3.40777e-7 0.7088113 0.6517034 -0.2699428 0.7088115 0.5865178 -0.3918976 0.7088112 0.6517034 -0.2699431 0.7088113 0.9951844 -0.09802079 0 0.9951844 -0.09802079 0 -1 0 0 -1 0 0 -1 0 0 0.8819208 0.4713979 0 0.8819208 0.4713977 0 0.8819207 0.4713979 0 0.6517024 0.2699453 0.7088114 0.6918437 0.1376184 0.7088114 0.6918439 0.1376183 0.7088112 0.9951846 0.09802001 0 0.9951846 0.09802001 0 0.9951845 0.09802001 0 0.4713966 0.8819215 0 0.06930506 0.7037026 0.7071064 0.1376147 0.6918449 0.7088109 0.06930607 0.7037023 0.7071067 0.4987913 0.4987926 0.7088111 0.586517 0.3918988 0.7088112 0.5865169 0.3918989 0.7088113 0.4987916 -0.4987919 0.7088114 0.3918982 -0.5865171 0.7088114 0.3918979 -0.5865172 0.7088115 -0.6818548 -0.5159897 0.5184869 -0.6818471 -0.5159924 0.5184944 -0.6818561 -0.5159893 0.5184856 0.06930792 -0.7037023 -0.7071065 0.1376169 -0.6918446 -0.7088108 0.8819218 -0.471396 0 0.8819218 -0.4713959 0 0.8819218 -0.4713959 0 0.2902838 0.9569406 0 0.2902842 0.9569405 0 0.2902837 0.9569407 0 0.3918977 0.5865172 0.7088115 0.3918972 0.5865176 0.7088115 0.6517025 0.2699455 0.7088112 0.5865175 -0.3918976 0.7088114 0.06930792 -0.7037022 0.7071066 0.0693084 -0.7037022 0.7071065 -0.68185 0.5159907 0.5184923 -0.6818572 0.5159882 0.5184854 -0.6818584 0.5159877 0.5184842 -0.707671 -4.92412e-7 0.7065421 -0.7076705 -4.75302e-7 0.7065426 -0.707671 -4.92749e-7 0.7065422 -1 -2.77687e-7 0 -1 -2.77687e-7 0 -1 -2.77687e-7 0 0.4713984 -0.8819205 0 0.471398 -0.8819206 0 0.4713985 -0.8819205 0 0.7730101 0.6343939 0 0.7730098 0.6343941 0 0.7730101 0.6343938 0 0.2902868 -0.9569398 0 0.2902863 -0.9569398 0 0.2902868 -0.9569397 0 0.9569398 0.2902867 0 0.9569398 0.2902867 0 0.0980122 0.9951852 -5.71151e-7 0.09801298 0.9951852 -2.14356e-6 0.0980122 0.9951853 -3.82497e-7 -0.5972661 -0.8020432 0 -0.5972661 -0.8020433 0 0.2699437 0.6517032 0.7088113 0.2699443 0.651703 0.7088112 0.9569412 -0.290282 0 0.9569412 -0.290282 0 0.9569413 -0.290282 0 0.0693047 0.7037029 -0.7071061 0.06930518 0.7037021 -0.7071069 -0.6818498 0.5159909 -0.5184922 -0.6818572 0.5159881 -0.5184854 -0.6818484 0.5159915 -0.5184936 -0.6818479 -0.5159922 -0.5184936 -0.6818553 -0.5159894 -0.5184867 -0.6818565 -0.5159889 -0.5184855 -0.7076711 -4.72608e-7 -0.7065421 -0.7076715 -5.06113e-7 -0.7065417 -0.7076715 -5.06772e-7 -0.7065417 0.6343919 0.7730116 0 0.6343916 0.7730119 0 0.6343919 0.7730116 0 0.6343917 -0.7730117 0 0.6343914 -0.7730121 0 0.6343918 -0.7730117 0 -0.4604119 -3.00579e-7 -0.8877055 -0.4604119 -3.16534e-7 -0.8877055 -0.4604119 -2.89421e-7 -0.8877055 0.7730115 -0.6343922 0 -1 -6.44172e-7 0 0.09801656 -0.9951848 -1.48747e-7 0.09801667 -0.9951848 -8.33601e-7 0.09801656 -0.9951848 -2.22113e-7 -0.5972671 0.8020426 0 0 -1.90785e-7 1 0 0 1 0 -3.63078e-6 1 0 0 1 0 1.87484e-7 1 0 2.02082e-6 1 0 -9.6597e-7 1 0 5.97108e-7 1 0 1.38861e-7 1 0 -3.99963e-7 1 0 0 1 0 0 1 0 -1.14507e-6 1 -0.4604119 -2.84992e-7 0.8877055 0 0 -1 0 -2.23897e-7 -1 0 -6.77045e-7 -1 0 6.74627e-7 -1 0 5.97108e-7 -1 0.137617 -0.6918443 0.708811 0.6918436 -0.1376166 0.7088117 0.8819207 0.4713977 0 0.9951845 0.09802001 0 0.1376145 0.6918452 0.7088107 0.498791 0.498793 0.7088111 0.4987915 -0.4987919 0.7088114 -0.6818456 -0.5159929 0.5184959 0.0693084 -0.7037019 -0.7071068 0.8819217 -0.471396 0 0.2902843 0.9569405 0 -0.6818485 0.5159912 0.5184937 -0.7076705 -4.74856e-7 0.7065426 -1 -2.77687e-7 0 0.4713979 -0.8819206 0 0.7730098 0.6343941 0 0.2902863 -0.9569399 0 0.9569397 0.2902867 0 0.09801262 0.9951853 3.81906e-7 0.09801256 0.9951852 5.70269e-7 0.0980128 0.9951851 2.14025e-6 -0.597266 -0.8020431 0 -0.6818584 0.5159877 -0.5184842 -0.6818464 -0.5159928 -0.518495 -0.707671 -4.71735e-7 -0.7065421 0.6343915 0.7730119 0 0.6343914 -0.7730121 0 -0.4604119 -3.40901e-7 -0.8877055 -1 -6.44172e-7 0 0.09801656 -0.9951848 2.25639e-7 0.09801667 -0.9951848 8.46833e-7 0.09801656 -0.9951848 1.51108e-7 + + + + + + + + + + 0.8085938 0.1953125 0.8398438 0.15625 0.8398438 0.2109375 0.7533172 0.01754212 0.751044 0.00946933 0.75 0.00390625 0.828125 0.140625 0.7700133 0.1715973 0.75 0.140625 0.8184773 0.1105983 0.8237214 0.1178196 0.828125 0.1367187 0.734375 0.08984375 0.7421875 0.09765625 0.734375 0.09765625 0.75 0.08984375 0.7421875 0.09765625 0.7421875 0.08984375 0.7578125 0.08984375 0.75 0.09765625 0.75 0.08984375 0.7578125 0.08984375 0.765625 0.09765625 0.7578125 0.09765625 0.765625 0.08984375 0.7734375 0.09765625 0.765625 0.09765625 0.7734375 0.08984375 0.78125 0.09765625 0.7734917 0.09771662 0.78125 0.08984375 0.7893186 0.09727245 0.78125 0.09765625 0.796875 0.08984375 0.7893186 0.09727245 0.7890625 0.08984375 0.796875 0.08984375 0.8046875 0.09765625 0.796875 0.09765625 0.8125 0.08984375 0.8046875 0.09765625 0.8046875 0.08984375 0.8203125 0.08984375 0.8125 0.09765625 0.8125 0.08984375 0.8203125 0.08984375 0.828125 0.09765625 0.8203125 0.09765625 0.8359375 0.08984375 0.828125 0.09765625 0.828125 0.08984375 0.84375 0.08984375 0.8359375 0.09765625 0.8359375 0.08984375 0.8359375 0.04296875 0.84375 0.05078125 0.8359375 0.05078125 0.7890625 0.04296875 0.796875 0.05078125 0.7890625 0.05078125 0.8046875 0.04296875 0.8125 0.05078125 0.8046875 0.05078125 0.7890625 0.08984375 0.796875 0.05078125 0.796875 0.08984375 0.7304688 0.203125 0.7382813 0.15625 0.7382813 0.2109375 0.765625 0.08984375 0.7734375 0.05078125 0.7734375 0.08984375 0.7734375 0.05078125 0.78125 0.04296875 0.78125 0.05078125 0.78125 0.08984375 0.7890625 0.05078125 0.7890625 0.08984375 0.7421875 0.08984375 0.75 0.05078125 0.75 0.08984375 0.7265625 0.04296875 0.734375 0.05078125 0.7265625 0.05078125 0.7578125 0.05078125 0.765625 0.04296875 0.765625 0.05078125 0.8203125 0.05078125 0.828125 0.04296875 0.828125 0.05078125 0.8515625 0.05078125 0.8554688 0.04296875 0.8554688 0.05078125 0.84375 0.08984375 0.8515625 0.09765625 0.84375 0.09765625 0.8125 0.08984375 0.8046875 0.05078125 0.8125 0.05078125 0.734375 0.08984375 0.7421875 0.05078125 0.7421875 0.08984375 0.75 0.04296875 0.7578125 0.05078125 0.75 0.05078125 0.765625 0.05078125 0.7734375 0.04296875 0.7734375 0.05078125 0.78125 0.05078125 0.7890625 0.04296875 0.7890625 0.05078125 0.796875 0.05078125 0.8046875 0.04296875 0.8046875 0.05078125 0.8125 0.04296875 0.8203125 0.05078125 0.8125 0.05078125 0.828125 0.04296875 0.8359375 0.05078125 0.828125 0.05078125 0.84375 0.05078125 0.8515625 0.04296875 0.8515625 0.05078125 0.7226563 0.04296875 0.7265625 0.05078125 0.7226563 0.05078125 0.75 0 0.828125 0.00390625 0.75 0.00390625 0.8398438 0.15625 0.8476563 0.203125 0.8398438 0.2109375 0.828125 0.08984375 0.8359375 0.05078125 0.8359375 0.08984375 0.7578125 0.08984375 0.765625 0.05078125 0.765625 0.08984375 0.8359375 0.08984375 0.84375 0.05078125 0.84375 0.08984375 0.7734375 0.08984375 0.78125 0.05078125 0.78125 0.08984375 0.7226563 0.05078125 0.7265625 0.0546875 0.734375 0.05078125 0.7695313 0.1953125 0.7382813 0.15625 0.7700133 0.1715973 0.7421875 0.04296875 0.75 0.05078125 0.7421875 0.05078125 0.796875 0.08984375 0.8046875 0.05078125 0.8046875 0.08984375 0.734375 0.08984375 0.7265625 0.09765625 0.7265625 0.08984375 0.7226563 0.09765625 0.7265625 0.08984375 0.7265625 0.09765625 0.8554688 0.09765625 0.8515625 0.08984375 0.8554688 0.08984375 0.828125 0.1367187 0.75 0.140625 0.75 0.1367187 0.734375 0.05078125 0.7421875 0.04296875 0.7421875 0.05078125 0.75 0.08984375 0.7578125 0.05078125 0.7578125 0.08984375 0.8203125 0.08984375 0.828125 0.05078125 0.828125 0.08984375 0.7695313 0.1953125 0.828125 0.2265625 0.75 0.2265625 0.8125 0.08984375 0.8203125 0.05078125 0.8203125 0.08984375 0.8085938 0.1953125 0.7700133 0.1715973 0.8085938 0.171875 0.84375 0.05078125 0.8515625 0.0546875 0.8554688 0.05078125 0.8085938 0.1953125 0.8085938 0.171875 0.8398438 0.15625 0.75 0.00390625 0.828125 0.00390625 0.7890625 0.04296875 0.828125 0.00390625 0.827323 0.009233057 0.8250798 0.01732593 0.75 0.00390625 0.7890625 0.04296875 0.78125 0.04248046 0.8250798 0.01732593 0.8214626 0.02477586 0.828125 0.00390625 0.8214626 0.02477586 0.8166109 0.03129625 0.828125 0.00390625 0.8166109 0.03129625 0.8107108 0.03663653 0.828125 0.00390625 0.8107108 0.03663653 0.803989 0.04059159 0.828125 0.00390625 0.803989 0.04059159 0.796875 0.04223632 0.828125 0.00390625 0.796875 0.04223632 0.7890625 0.04296875 0.828125 0.00390625 0.78125 0.04248046 0.7744784 0.04067754 0.75 0.00390625 0.7744784 0.04067754 0.767748 0.03676021 0.75 0.00390625 0.767748 0.03676021 0.761833 0.03145509 0.75 0.00390625 0.761833 0.03145509 0.7569603 0.02496612 0.75 0.00390625 0.7569603 0.02496612 0.7533172 0.01754212 0.75 0.00390625 0.828125 0.140625 0.8085938 0.171875 0.7700133 0.1715973 0.827797 0.1308701 0.828125 0.1367187 0.8269097 0.1260809 0.828125 0.1367187 0.75 0.1367187 0.7893186 0.09727245 0.8269097 0.1260809 0.828125 0.1367187 0.8237214 0.1178196 0.75 0.1367187 0.7505323 0.1307337 0.7516314 0.1243688 0.7516314 0.1243688 0.7543035 0.1180313 0.75 0.1367187 0.7543035 0.1180313 0.7595249 0.1107753 0.75 0.1367187 0.7595249 0.1107753 0.7658746 0.1048324 0.75 0.1367187 0.7658746 0.1048324 0.7731086 0.1004312 0.75 0.1367187 0.7731086 0.1004312 0.78125 0.09814453 0.75 0.1367187 0.78125 0.09814453 0.7893186 0.09727245 0.75 0.1367187 0.7893186 0.09727245 0.796875 0.09814453 0.828125 0.1367187 0.796875 0.09814453 0.8048682 0.1003353 0.828125 0.1367187 0.8048682 0.1003353 0.8121114 0.1046946 0.828125 0.1367187 0.8121114 0.1046946 0.8184773 0.1105983 0.828125 0.1367187 0.734375 0.08984375 0.7421875 0.08984375 0.7421875 0.09765625 0.75 0.08984375 0.75 0.09765625 0.7421875 0.09765625 0.7578125 0.08984375 0.7578125 0.09765625 0.75 0.09765625 0.7578125 0.08984375 0.765625 0.08984375 0.765625 0.09765625 0.765625 0.08984375 0.7734375 0.08984375 0.7734375 0.09765625 0.7734375 0.08984375 0.78125 0.08984375 0.78125 0.09765625 0.78125 0.08984375 0.7890625 0.08984375 0.7893186 0.09727245 0.796875 0.08984375 0.796875 0.09765625 0.7893186 0.09727245 0.796875 0.08984375 0.8046875 0.08984375 0.8046875 0.09765625 0.8125 0.08984375 0.8125 0.09765625 0.8046875 0.09765625 0.8203125 0.08984375 0.8203125 0.09765625 0.8125 0.09765625 0.8203125 0.08984375 0.828125 0.08984375 0.828125 0.09765625 0.8359375 0.08984375 0.8359375 0.09765625 0.828125 0.09765625 0.84375 0.08984375 0.84375 0.09765625 0.8359375 0.09765625 0.8359375 0.04296875 0.84375 0.04296875 0.84375 0.05078125 0.7890625 0.04296875 0.796875 0.04296875 0.796875 0.05078125 0.8046875 0.04296875 0.8125 0.04296875 0.8125 0.05078125 0.7890625 0.08984375 0.7890625 0.05078125 0.796875 0.05078125 0.7304688 0.203125 0.7304688 0.1640625 0.7382813 0.15625 0.765625 0.08984375 0.765625 0.05078125 0.7734375 0.05078125 0.7734375 0.05078125 0.7734375 0.04296875 0.78125 0.04296875 0.78125 0.08984375 0.78125 0.05078125 0.7890625 0.05078125 0.7421875 0.08984375 0.7421875 0.05078125 0.75 0.05078125 0.7265625 0.04296875 0.734375 0.04296875 0.734375 0.05078125 0.7578125 0.05078125 0.7578125 0.04296875 0.765625 0.04296875 0.8203125 0.05078125 0.8203125 0.04296875 0.828125 0.04296875 0.8515625 0.05078125 0.8515625 0.04296875 0.8554688 0.04296875 0.84375 0.08984375 0.8515625 0.08984375 0.8515625 0.09765625 0.8125 0.08984375 0.8046875 0.08984375 0.8046875 0.05078125 0.734375 0.08984375 0.734375 0.05078125 0.7421875 0.05078125 0.75 0.04296875 0.7578125 0.04296875 0.7578125 0.05078125 0.765625 0.05078125 0.765625 0.04296875 0.7734375 0.04296875 0.78125 0.05078125 0.78125 0.04296875 0.7890625 0.04296875 0.796875 0.05078125 0.796875 0.04296875 0.8046875 0.04296875 0.8125 0.04296875 0.8203125 0.04296875 0.8203125 0.05078125 0.828125 0.04296875 0.8359375 0.04296875 0.8359375 0.05078125 0.84375 0.05078125 0.84375 0.04296875 0.8515625 0.04296875 0.7226563 0.04296875 0.7265625 0.04296875 0.7265625 0.05078125 0.75 0 0.828125 0 0.828125 0.00390625 0.8398438 0.15625 0.8476563 0.1640625 0.8476563 0.203125 0.828125 0.08984375 0.828125 0.05078125 0.8359375 0.05078125 0.7578125 0.08984375 0.7578125 0.05078125 0.765625 0.05078125 0.8359375 0.08984375 0.8359375 0.05078125 0.84375 0.05078125 0.7734375 0.08984375 0.7734375 0.05078125 0.78125 0.05078125 0.734375 0.05078125 0.734375 0.08984375 0.7226563 0.08984375 0.734375 0.08984375 0.7265625 0.08984375 0.7226563 0.08984375 0.7226563 0.08984375 0.7226563 0.05078125 0.734375 0.05078125 0.7695313 0.1953125 0.7382813 0.2109375 0.7382813 0.15625 0.7421875 0.04296875 0.75 0.04296875 0.75 0.05078125 0.796875 0.08984375 0.796875 0.05078125 0.8046875 0.05078125 0.734375 0.08984375 0.734375 0.09765625 0.7265625 0.09765625 0.7226563 0.09765625 0.7226563 0.08984375 0.7265625 0.08984375 0.8554688 0.09765625 0.8515625 0.09765625 0.8515625 0.08984375 0.828125 0.1367187 0.828125 0.140625 0.75 0.140625 0.734375 0.05078125 0.734375 0.04296875 0.7421875 0.04296875 0.75 0.08984375 0.75 0.05078125 0.7578125 0.05078125 0.8203125 0.08984375 0.8203125 0.05078125 0.828125 0.05078125 0.7695313 0.1953125 0.8085938 0.1953125 0.828125 0.2265625 0.8125 0.08984375 0.8125 0.05078125 0.8203125 0.05078125 0.8085938 0.1953125 0.7695313 0.1953125 0.7700133 0.1715973 0.8554688 0.05078125 0.8554688 0.08984375 0.84375 0.05078125 0.8554688 0.08984375 0.8515625 0.08984375 0.84375 0.08984375 0.84375 0.05078125 0.8554688 0.08984375 0.84375 0.08984375 + + + + + + + + + + + + + + +

    3 0 0 75 1 1 1 2 2 39 3 3 37 4 4 66 5 5 75 6 6 4 7 7 69 8 8 29 9 9 31 10 10 76 11 11 6 12 12 9 13 13 7 14 14 10 15 15 9 13 16 8 16 17 12 17 18 11 18 19 10 15 20 12 17 21 15 19 22 13 20 23 14 21 24 17 22 25 15 19 26 16 23 27 19 24 28 17 22 29 18 25 30 21 26 31 19 24 32 22 27 33 21 26 34 20 28 35 22 27 36 25 29 37 23 30 38 26 31 39 25 29 40 24 32 41 28 33 42 27 34 43 26 31 44 28 33 45 31 35 46 29 36 47 32 37 48 31 35 49 30 38 50 34 39 51 33 40 52 32 37 53 63 41 54 64 42 55 62 43 56 51 44 57 52 45 58 50 46 59 55 47 60 56 48 61 54 49 62 20 50 63 52 51 64 22 50 65 68 52 66 69 53 67 0 54 68 14 55 69 46 56 70 16 57 71 46 58 72 49 59 73 48 60 74 18 61 75 50 62 76 20 63 77 8 64 78 40 64 79 10 64 80 66 65 81 36 66 82 67 67 83 42 68 84 45 69 85 44 70 86 58 71 87 61 72 88 60 73 89 78 74 90 1 75 91 77 76 92 34 39 93 76 77 94 35 78 95 26 79 96 54 80 97 56 81 98 6 82 99 38 83 100 8 84 101 41 85 102 42 68 103 40 86 104 44 70 105 47 87 106 46 58 107 48 60 108 51 44 109 50 46 110 52 45 111 55 47 112 54 49 113 57 88 114 58 71 115 56 48 116 61 72 117 62 43 118 60 73 119 64 42 120 79 89 121 78 90 122 0 91 123 67 92 124 68 93 125 0 94 126 79 95 127 66 96 128 75 97 129 77 98 130 1 99 131 30 100 132 62 101 133 32 102 134 12 103 135 44 104 136 14 105 137 32 106 138 64 107 139 34 108 140 16 109 141 48 109 142 18 110 143 68 111 144 67 112 145 36 113 146 2 114 147 69 114 148 4 115 149 39 116 150 40 86 151 38 117 152 22 118 153 54 119 154 24 120 155 6 12 156 70 121 157 71 122 158 69 123 159 71 124 160 70 125 161 75 126 162 74 127 163 73 128 164 76 129 165 69 130 166 70 131 167 36 66 168 39 116 169 38 117 170 10 132 171 42 133 172 12 134 173 28 135 174 60 136 175 30 137 176 2 138 177 1 139 178 0 140 179 26 141 180 58 141 181 28 141 182 3 142 183 4 142 184 5 142 185 64 143 186 78 144 187 77 145 188 3 0 189 5 146 190 75 1 191 66 5 192 79 147 193 51 148 194 79 147 195 65 149 196 63 150 197 66 5 198 51 148 199 49 151 200 63 150 201 61 152 202 79 147 203 61 152 204 59 153 205 79 147 206 59 153 207 57 154 208 79 147 209 57 154 210 55 155 211 79 147 212 55 155 213 53 156 214 79 147 215 53 156 216 51 148 217 79 147 218 49 151 219 47 157 220 66 5 221 47 157 222 45 157 223 66 5 224 45 157 225 43 158 226 66 5 227 43 158 228 41 159 229 66 5 230 41 159 231 39 3 232 66 5 233 75 6 234 5 160 235 4 7 236 35 161 237 76 11 238 33 161 239 76 11 240 70 161 241 21 162 242 33 161 243 76 11 244 31 10 245 70 161 246 7 161 247 9 161 248 9 161 249 11 161 250 70 161 251 11 161 252 13 161 253 70 161 254 13 161 255 15 161 256 70 161 257 15 161 258 17 161 259 70 161 260 17 161 261 19 161 262 70 161 263 19 161 264 21 162 265 70 161 266 21 162 267 23 163 268 76 11 269 23 163 270 25 164 271 76 11 272 25 164 273 27 165 274 76 11 275 27 165 276 29 9 277 76 11 278 6 12 279 8 16 280 9 13 281 10 15 282 11 18 283 9 13 284 12 17 285 13 20 286 11 18 287 12 17 288 14 21 289 15 19 290 14 21 291 16 23 292 17 22 293 16 23 294 18 25 295 19 24 296 18 25 297 20 28 298 21 26 299 22 27 300 23 30 301 21 26 302 22 27 303 24 32 304 25 29 305 26 31 306 27 34 307 25 29 308 28 33 309 29 36 310 27 34 311 28 33 312 30 38 313 31 35 314 32 37 315 33 40 316 31 35 317 34 39 318 35 78 319 33 40 320 63 41 321 65 166 322 64 42 323 51 44 324 53 167 325 52 45 326 55 47 327 57 88 328 56 48 329 20 50 330 50 51 331 52 51 332 68 52 333 72 53 334 69 53 335 14 55 336 44 168 337 46 56 338 46 58 339 47 87 340 49 59 341 18 61 342 48 169 343 50 62 344 8 64 345 38 64 346 40 64 347 66 65 348 37 170 349 36 66 350 42 68 351 43 171 352 45 69 353 58 71 354 59 172 355 61 72 356 78 74 357 79 173 358 1 75 359 34 39 360 74 174 361 76 77 362 26 79 363 24 175 364 54 80 365 6 82 366 36 176 367 38 83 368 41 85 369 43 171 370 42 68 371 44 70 372 45 69 373 47 87 374 48 60 375 49 59 376 51 44 377 52 45 378 53 167 379 55 47 380 57 88 381 59 172 382 58 71 383 61 72 384 63 41 385 62 43 386 64 42 387 65 166 388 79 89 389 0 91 390 66 177 391 67 92 392 0 94 393 1 178 394 79 95 395 75 97 396 73 179 397 77 98 398 30 100 399 60 180 400 62 101 401 12 103 402 42 181 403 44 104 404 32 106 405 62 182 406 64 107 407 16 109 408 46 183 409 48 109 410 36 113 411 6 184 412 72 185 413 6 184 414 71 186 415 72 185 416 72 185 417 68 111 418 36 113 419 2 114 420 0 187 421 69 114 422 39 116 423 41 85 424 40 86 425 22 118 426 52 119 427 54 119 428 6 12 429 7 14 430 70 121 431 69 123 432 72 188 433 71 124 434 75 126 435 76 189 436 74 127 437 76 129 438 75 190 439 69 130 440 36 66 441 37 170 442 39 116 443 10 132 444 40 191 445 42 133 446 28 135 447 58 192 448 60 136 449 2 138 450 3 193 451 1 139 452 26 141 453 56 141 454 58 141 455 3 142 456 2 194 457 4 142 458 77 145 459 73 195 460 64 143 461 73 195 462 74 196 463 34 197 464 64 143 465 73 195 466 34 197 467

    +
    +
    +
    + + + + 0.09754467 2.240393 -0.2252249 0.1913414 2.21194 -0.2252249 0.277785 2.165735 -0.2252249 0.3535534 2.103554 -0.2252249 0.4157347 2.027786 -0.2252249 0.4619398 1.941342 -0.2252249 0.4903929 1.847546 -0.2252249 0.5000006 1.750001 -0.2252249 0.4903929 1.652455 -0.2252249 0.4619402 1.558659 -0.2252249 0.4157353 1.472215 -0.2252249 0.353554 1.396447 -0.2252249 0.2777856 1.334266 -0.2252249 0.1913419 1.28806 -0.2252249 0.09754568 1.259607 -0.2252249 2.5 0 -0.3 2.5 3.6 -0.3 0.5412177 1.857655 -0.3 0.5518211 1.750001 -0.3 0.5412175 1.642346 -0.3 0.509816 1.538828 -0.3 0.4588222 1.443425 -0.3 0.4588216 2.056576 -0.3 0.5098155 1.961173 -0.3 0.3901956 2.140197 -0.3 0.3065758 1.291179 -0.3 0.3901967 1.359804 -0.3 0.2111708 2.259817 -0.3 0.1076547 2.291218 -0.3 0.3065758 2.208822 -0.3 0.2111719 1.240184 -0.3 0.1076555 1.208783 -0.3 0.09754467 2.240393 0.2252249 0.1913414 2.21194 0.2252249 0.277785 2.165735 0.2252249 0.3535534 2.103554 0.2252249 0.4157347 2.027786 0.2252249 0.4619398 1.941342 0.2252249 0.4903929 1.847546 0.2252249 0.5000006 1.750001 0.2252249 0.4903929 1.652455 0.2252249 0.4619402 1.558659 0.2252249 0.4157353 1.472215 0.2252249 0.353554 1.396447 0.2252249 0.2777856 1.334266 0.2252249 0.1913419 1.28806 0.2252249 0.09754568 1.259607 0.2252249 2.5 0 0.3 2.5 3.6 0.3 0.5412177 1.857655 0.3 0.5518211 1.750001 0.3 0.5412175 1.642346 0.3 0.509816 1.538828 0.3 0.4588222 1.443425 0.3 0.4588216 2.056576 0.3 0.5098155 1.961173 0.3 0.3901956 2.140197 0.3 0.3065758 1.291179 0.3 0.3901967 1.359804 0.3 0.2111708 2.259817 0.3 0.1076547 2.291218 0.3 0.3065758 2.208822 0.3 0.2111719 1.240184 0.3 0.1076555 1.208783 0.3 0 2.25 0.1901126 0.01996588 2.248034 0.225225 0.01996648 1.251966 0.2252249 4.69387e-7 1.25 0.1901128 -1.52002e-7 2.440548 0.1025 0.01996701 2.299854 0.3 0 2.25 -0.1901126 0.01996588 2.248034 -0.225225 0.01996648 1.251966 -0.2252249 4.69387e-7 1.25 -0.1901128 -1.52002e-7 2.440548 -0.1025 0.01996701 2.299854 -0.3 4.08359e-7 1.075447 -0.1025 0.01996779 1.200146 -0.3 0 0.1136917 -0.1025 0.0199685 0 -0.3 0.0199685 3.6 -0.3 0 3.469546 -0.1025 1.123558 1.2511 -0.2375 4.08359e-7 1.075447 0.1025 0.01996779 1.200146 0.3 0 0.1136917 0.1025 0.0199685 0 0.3 1.069991 1.200069 -0.3 1.123558 1.2511 -0.255 1.873558 1.2511 -0.255 1.918091 1.1999 -0.3 1.918472 2.2999 -0.3 1.069991 2.2999 -0.3 0.0199685 3.6 0.3 0 3.469546 0.1025 1.123558 1.2511 0.2375 1.873558 1.2511 0.2375 1.069991 1.200069 0.3 1.123558 1.2511 0.255 1.873558 1.2511 -0.2375 1.123558 2.2527 -0.2375 1.873558 1.2511 0.255 1.918091 1.1999 0.3 1.873558 2.2527 0.255 1.918472 2.2999 0.3 1.123558 2.2527 0.255 3.09736e-7 0.7086623 -0.1025 1.78937e-7 0.4805372 -0.1025 5.01112e-7 1.187707 -0.28 1.069991 2.2999 0.3 0 0 -0.28 0 3.085717 -0.1025 0 2.824327 -0.1025 0 3.6 -0.28 3.09736e-7 0.7086623 0.1025 1.78937e-7 0.4805372 0.1025 5.01112e-7 1.187707 0.28 0 0 0.28 -1.91969e-7 2.312293 -0.28 0 2.956147 -0.28 -0.15 3.372954 -0.04624998 0 3.085717 0.1025 -0.15 3.181039 -0.04624998 0 2.824327 0.1025 -0.1500001 2.535223 -0.04624998 -0.1500001 2.727113 -0.04624998 0 3.6 0.28 -1.91969e-7 2.312293 0.28 -0.1499996 0.9852741 -0.04624998 -0.1499996 0.8018819 -0.04624998 -0.15 3.372954 0.04624998 -0.1499999 0.2061649 -0.04624998 -0.1499998 0.3895877 -0.04624998 -0.15 3.181039 0.04624998 -0.1500001 2.535223 0.04624998 -1.6225e-7 2.438235 0 -0.1500001 2.727113 0.04624998 -0.1499996 0.9852741 0.04624998 -0.1499996 0.8018819 0.04624998 -0.1499999 0.2061649 0.04624998 -0.1499998 0.3895877 0.04624998 1.873558 2.2527 -0.255 1.873558 2.2527 -0.2375 1.123558 2.2527 0.2375 1.123558 2.2527 -0.255 1.873558 2.2527 0.2375 2.5 2.2999 -0.3 2.5 1.1999 -0.3 2.5 2.2999 0.3 2.5 1.1999 0.3 + + + + + + + + + + -0.4713954 -0.881922 0 -0.471397 -0.8819212 0 -0.4713972 -0.8819211 0 -0.1603451 -0.8061259 -0.5696055 -0.3145329 -0.7593548 -0.5696046 -0.3145369 -0.7593541 -0.5696035 -0.4566335 -0.6834014 -0.5696037 -0.4566342 -0.6834018 -0.5696027 -0.5811833 -0.5811852 -0.5696049 -0.6834005 -0.4566345 -0.5696041 -0.6834009 -0.4566346 -0.5696036 -0.7593537 -0.3145365 -0.569604 -0.759354 -0.3145361 -0.5696038 -0.8061259 -0.1603507 -0.5696039 -0.8061252 -0.1603507 -0.5696049 -0.8219188 5.43392e-7 -0.5696047 -0.8061268 0.1603488 -0.5696033 -0.8061268 0.1603493 -0.5696033 -0.7593554 0.3145334 -0.5696035 -0.7593557 0.3145333 -0.5696033 -0.683402 0.456633 -0.5696034 -0.6834015 0.4566333 -0.5696038 -0.5811846 0.5811849 -0.5696039 -0.4566344 0.6834013 -0.5696032 -0.4566337 0.6834019 -0.5696029 -0.314536 0.759354 -0.5696039 -0.3145365 0.759354 -0.5696038 -0.1603486 0.8061263 -0.5696041 -1 4.61982e-7 0 -1 5.07598e-7 -1.27249e-7 -1 5.07598e-7 1.27249e-7 -0.8819224 0.4713947 0 -0.8819215 0.4713963 0 -0.8819213 0.4713966 0 -1 2.29156e-7 0 -1 -5.09293e-7 0 -1 -5.09294e-7 0 -0.683402 0.456633 0.5696035 -0.7593556 0.3145333 0.5696035 -0.7593554 0.3145334 0.5696035 -0.9951846 -0.09801995 0 -0.9951845 -0.09802013 0 -0.9951844 -0.09802019 0 -0.634393 -0.7730107 0 -0.6343907 -0.7730126 0 -0.6343902 -0.773013 0 -0.9951844 0.09802079 0 -0.9951844 0.09802061 0 -0.9951844 0.09802055 0 -0.7730095 -0.6343946 0 -0.7730103 -0.6343935 0 -0.7730105 -0.6343934 0 -0.5438634 0.8391737 0 -0.5438629 0.839174 0 -0.5438651 0.8391727 0 -0.09801197 -0.9951853 -8.84485e-7 -0.0980103 -0.9951855 8.83768e-7 -0.09801042 -0.9951854 7.17172e-7 -0.6343917 0.7730119 0 -0.6343917 0.7730119 0 -0.0806871 0.8192397 -0.5677464 -0.08068704 0.8192401 -0.5677459 -0.08068078 -0.8192393 -0.5677479 -0.08068215 -0.8192397 -0.5677471 -0.5811846 0.5811849 0.5696039 -0.4566345 0.6834014 0.5696032 -0.581184 0.581185 0.5696045 -0.3511235 0 0.9363293 -0.3511235 0 0.9363293 -0.3511235 1.26799e-7 0.9363293 -0.1603486 0.8061262 0.569604 -0.0806871 0.8192397 0.5677464 -0.1603495 0.806126 0.5696042 -0.1603454 -0.8061259 0.5696055 -0.08068132 -0.8192393 0.5677478 -0.08068329 -0.8192396 0.5677471 0.6432213 0 0.7656804 0.6432204 0 0.7656811 0.6432214 0 0.7656803 -0.7345879 0.5576829 0.3864849 -0.7345733 0.5576923 0.3864989 -0.7345692 0.5576949 0.3865029 0 -1 0 0 -1 0 -1 0 0 -1 -2.69205e-7 -2.47892e-7 -1 1.32263e-7 0 1 0 0 -0.7345875 -0.5576838 -0.3864844 -0.7345767 -0.5576896 -0.3864964 -0.7345737 -0.5576913 -0.3864998 -0.7345879 0.5576829 -0.3864849 -0.7345733 0.5576923 -0.3864989 -0.7345911 0.5576808 -0.3864817 -0.7076857 0 -0.7065274 -0.7076861 0 -0.706527 -0.7076745 7.91684e-7 -0.7065386 -0.7076636 2.8569e-7 -0.7065495 -0.7076846 -4.0339e-7 -0.7065286 -0.7076848 -4.11876e-7 -0.7065283 -1 -2.2805e-7 0 -1 0 0 -1 -4.15078e-7 3.1988e-7 -0.7076634 1.26636e-7 0.7065498 -0.7076857 8.03417e-7 0.7065275 -0.707686 8.11089e-7 0.7065272 -1 0 0 -0.5395073 -0.8419809 0 -0.5417323 -0.840532 0.005674242 -0.5417317 -0.8405325 -0.005674242 -0.7076846 -4.08711e-7 0.7065286 -0.7076636 2.94254e-7 0.7065495 -0.7076848 -4.17368e-7 0.7065283 1.27023e-4 0.6612758 -0.7501431 1.13751e-5 0.6602643 -0.7510334 1.32074e-4 0.6613199 -0.7501041 -0.7105743 2.39428e-4 -0.7036222 -0.7079722 1.59211e-5 -0.7062404 -0.7106512 2.46046e-4 -0.7035445 0 -0.6900383 -0.7237729 0 -0.6900351 -0.723776 0 -0.6900348 -0.7237763 0.6432204 0 -0.7656812 0.6432211 0 -0.7656806 0.6432211 0 -0.7656805 0 1 0 -0.7345761 -0.5576902 0.3864969 -0.734589 -0.5576823 0.3864834 -0.7345725 -0.5576923 0.3865005 -1.24484e-7 -1 0 -5.59233e-7 -1 0 0 -1 0 1.27023e-4 0.6612758 0.7501431 1.13751e-5 0.6602643 0.7510334 0 0.6601647 0.7511209 -0.5184705 0.8550956 0 -0.5184706 0.8550955 0 -0.5184701 0.8550958 0 -0.5247786 -0.8512388 0 -0.5247787 -0.8512387 0 -0.7105708 2.39427e-4 0.7036258 -0.7079728 1.59204e-5 0.7062398 -0.7077873 0 0.7064257 -1 2.43718e-7 0 -1 2.43718e-7 0 -1 2.43718e-7 0 -1 2.4862e-7 0 -1 1.25559e-7 0 -1 0 0 -0.9569397 -0.2902868 0 -0.9569398 -0.2902864 0 -0.9569399 -0.2902863 0 -0.09801679 0.9951848 0 -0.09801781 0.9951847 0 -0.09801763 0.9951848 0 -0.3511235 0 0.9363292 -0.3511235 0 0.9363292 -0.3511235 0 0.9363293 0 0 1 0 0 1 -0.3511238 0 -0.9363291 -0.3511238 0 -0.9363291 -0.3511238 0 -0.9363291 -0.3511235 1.67326e-7 0.9363292 -0.3511235 1.62951e-7 0.9363292 -0.3511235 1.58473e-7 0.9363292 -0.536346 -0.8439983 0 -0.536346 -0.8439983 0 -0.536346 -0.8439982 0 -0.3511235 0 -0.9363292 -0.3511235 0 -0.9363292 -0.3511235 0 -0.9363293 -1 1.62506e-7 0 -1 1.62506e-7 0 -1 1.62506e-7 0 -1 0 0 -1 0 0 -1 0 0 -0.3511235 0 -0.9363293 -0.3511235 0 -0.9363293 -0.3511235 0 -0.9363292 0 0 -1 0 0 -1 -0.3511235 1.67326e-7 -0.9363292 -0.3511235 1.62951e-7 -0.9363292 -0.3511235 1.76222e-7 -0.9363293 -1 1.55289e-7 0 -1 1.55289e-7 0 -1 1.55289e-7 0 -0.5278378 -0.8493452 0 -0.5278379 -0.8493452 0 -0.5278376 -0.8493454 0 -0.3511237 0 0.9363291 -0.3511236 0 0.9363291 -0.3511238 0 0.9363291 -0.2902857 -0.9569401 0 -0.2902857 -0.95694 0 -0.4713973 0.881921 0 -0.4713988 0.8819202 0 -0.4713992 0.88192 0 -0.5414069 0.8407608 0 -0.5414057 0.8407616 0 -0.5414035 0.8407629 0 -3.01672e-7 -0.6900385 0.7237728 -2.70583e-7 -0.6900386 0.7237725 -3.04663e-7 -0.6900385 0.7237728 -0.7730115 0.634392 0 -0.7730116 0.6343921 0 -0.3145365 0.759354 0.5696038 -0.314536 0.759354 0.5696039 -0.4566337 0.683402 0.5696029 -0.9569411 0.2902824 0 -0.9569412 0.2902818 0 -0.9569413 0.2902818 0 -0.2902867 0.9569398 0 -0.2902849 0.9569403 0 -0.2902846 0.9569405 0 -0.6834015 0.4566333 0.5696038 -0.8061268 0.1603488 0.5696034 -0.8061268 0.1603493 0.5696033 -0.8219189 5.04332e-7 0.5696046 -0.8219183 0 0.5696056 -0.8061252 -0.1603507 0.5696051 -0.806126 -0.1603507 0.569604 -0.7593538 -0.3145364 0.569604 -0.7593541 -0.314536 0.5696037 -0.6834009 -0.4566345 0.5696036 -0.6834005 -0.4566345 0.5696041 -0.5811833 -0.5811852 0.569605 -0.5811827 -0.5811851 0.5696057 -0.4566335 -0.6834014 0.5696037 -0.4566343 -0.6834019 0.5696026 -0.3145369 -0.7593541 0.5696035 -0.3145329 -0.7593549 0.5696046 -0.1603447 -0.8061255 0.5696064 -0.8819204 -0.4713984 0 -0.8819208 -0.4713976 0 -0.881921 -0.4713975 0 0 -1 0 -4.98186e-7 -1 0 -0.5152201 0.8570579 0 -0.5152202 0.8570579 0 -0.5152204 0.8570578 0 -1 4.68813e-7 0 -1 5.73752e-7 -1.59682e-7 -1 2.29156e-7 0 0 0 -1 0 -1.91543e-7 -1 0 0 -1 0 0 1 0 0 1 0 -1.21794e-7 1 0 0 1 0 0 1 -0.4713951 -0.8819221 0 -0.1603447 -0.8061254 -0.5696064 -0.5811827 -0.5811851 -0.5696056 -0.8219181 0 -0.5696057 -0.581184 0.581185 -0.5696045 -0.1603495 0.806126 -0.5696042 -1 4.61982e-7 0 -0.8819226 0.4713944 0 -0.9951845 -0.09801995 0 -0.6343935 -0.7730104 0 -0.9951844 0.09802085 0 -0.7730094 -0.6343947 0 -0.543862 0.8391748 0 -0.09801453 -0.995185 3.27493e-6 -0.09801197 -0.9951853 -7.17754e-7 -0.09801453 -0.995185 -3.27759e-6 -0.3511235 0 0.9363292 -0.08068704 0.8192401 0.5677459 0.6432204 0 0.7656812 -0.7345911 0.5576808 0.3864817 0 -1 0 0 -1 0 -1 2.27123e-7 0 -1 2.2954e-7 0 -1 1.26968e-7 0 -1 2.08632e-7 0 -1 2.79317e-7 0 -1 -2.48586e-7 3.88868e-7 -0.7345899 -0.5576824 -0.3864817 -0.7345692 0.5576949 -0.3865029 -0.7076629 1.53543e-7 -0.7065503 -0.7076632 1.71906e-7 -0.70655 -0.7076633 2.96417e-7 -0.7065499 -1 -6.21159e-7 -3.10249e-7 -0.7076631 0 0.7065501 -0.5387343 -0.8422613 -0.01900953 -0.5387367 -0.8422598 0.01900947 -0.7076633 3.05197e-7 0.7065499 0 0.6601647 -0.7511209 -0.7077865 0 -0.7064265 0 -0.6900384 -0.7237728 0.6432204 0 -0.7656813 -0.734592 -0.5576806 0.3864803 -6.18455e-7 -1 0 1.32074e-4 0.6613199 0.7501041 -0.5184707 0.8550953 0 -0.5247784 -0.8512389 0 -0.7106475 2.46045e-4 0.7035482 -1 2.43718e-7 0 -0.9569397 -0.290287 0 -0.09801751 0.9951847 0 -0.09801661 0.9951848 0 -0.09801745 0.9951847 0 -0.3511235 0 0.9363293 0 0 1 0 0 1 -0.3511238 0 -0.9363291 -0.3511235 1.76222e-7 0.9363293 -0.5363459 -0.8439984 0 -0.3511235 0 -0.9363293 -1 1.62506e-7 0 -1 0 0 -0.3511235 1.26799e-7 -0.9363293 0 1.20822e-7 -1 -0.3511235 1.58473e-7 -0.9363292 -1 1.55289e-7 0 -0.5278382 -0.8493449 0 -0.3511234 0 0.9363293 -0.4713971 0.8819212 0 -0.5414109 0.8407583 0 -2.69301e-7 -0.6900387 0.7237725 -0.9569411 0.2902826 0 -0.290287 0.9569397 0 -0.8819204 -0.4713985 0 -0.5152199 0.8570581 0 -1 4.68813e-7 0 -1 5.73752e-7 1.59682e-7 -1 5.50439e-7 -2.50955e-7 -1 5.50439e-7 2.50956e-7 0 0 -1 0 0 -1 0 1.75693e-6 -1 0 -7.64911e-7 -1 0 2.39844e-7 -1 0 1.06743e-6 -1 0 -1.65418e-7 -1 0 5.14993e-7 -1 0 -2.47438e-7 -1 0 0 -1 0 0 -1 0 -1.7419e-7 1 0 7.79265e-7 1 0 2.00537e-7 1 0 -1.40526e-6 1 0 9.49386e-7 1 0 -2.94844e-7 1 0 3.49563e-7 1 0 -2.01391e-7 1 0 0 1 0 -3.14327e-7 1 + + + + + + + + + + 0.02734375 0.6953125 0.01953125 0.65625 0.02734375 0.65625 0.01171875 0.65625 0.01953125 0.6484375 0.01953125 0.65625 0.01953125 0.65625 0.02734375 0.6484375 0.02734375 0.65625 0.02734375 0.6484375 0.03515625 0.65625 0.02734375 0.65625 0.03515625 0.65625 0.04296875 0.6484375 0.04296875 0.65625 0.04296875 0.65625 0.05078125 0.6484375 0.05078125 0.65625 0.05078125 0.6484375 0.05859375 0.65625 0.05078125 0.65625 0.05859375 0.6484375 0.06640625 0.65625 0.05859375 0.65625 0.06640625 0.65625 0.07421875 0.6484375 0.07421875 0.65625 0.07421875 0.6484375 0.08203125 0.65625 0.07421875 0.65625 0.08203125 0.6484375 0.08984375 0.65625 0.08203125 0.65625 0.08984375 0.6484375 0.09765625 0.65625 0.08984375 0.65625 0.09765625 0.65625 0.1054687 0.6484375 0.1054687 0.65625 0.1054687 0.6484375 0.1132812 0.65625 0.1054687 0.65625 0.1132812 0.6484375 0.1210937 0.65625 0.1132812 0.65625 0.484375 0.9375 0.4726563 0.9609375 0.4726563 0.9453125 0.08984375 0.6953125 0.08203125 0.65625 0.08984375 0.65625 0.4101563 0.9375 0.40625 0.96875 0.40625 0.9375 0.08984375 0.6953125 0.08203125 0.703125 0.08203125 0.6953125 0.06640625 0.6953125 0.05859375 0.65625 0.06640625 0.65625 0.03515625 0.6953125 0.02734375 0.65625 0.03515625 0.65625 0.07421875 0.6953125 0.06640625 0.65625 0.07421875 0.65625 0.04296875 0.6953125 0.03515625 0.65625 0.04296875 0.65625 0.3164063 0.9570313 0.3125 0.9453125 0.3164063 0.9492188 0 0.6953125 0 0.65625 0.01171875 0.65625 0.1054687 0.6953125 0.09765625 0.65625 0.1054687 0.65625 0.1210937 0.65625 0.1289062 0.6484375 0.1289062 0.65625 0.00390625 0.6484375 0.01171875 0.65625 0.00390625 0.65625 0.09765625 0.6953125 0.1054687 0.703125 0.09765625 0.703125 0.4179688 0.9609375 0.4375 0.9570313 0.4414063 0.9609375 0.1210937 0.6953125 0.1289062 0.703125 0.1210937 0.703125 0.01171875 0.6953125 0.00390625 0.703125 0.00390625 0.6953125 0.1523437 0.8671875 0.08203125 0.8632813 0.1484375 0.8632813 0.1289062 0.6953125 0.1328125 0.703125 0.1289062 0.703125 0.484375 0.9335938 0.484375 0.7773438 0.5234375 0.7773438 0.3125 0.9609375 0.3476563 0.96875 0.3007813 0.9609375 0.0625 0.703125 0 0.7041016 0 0.703125 0.00390625 0.65625 0 0.6484375 0.00390625 0.6484375 0.1289062 0.65625 0.1328125 0.6484375 0.1328125 0.65625 0.3476563 0.9335938 0.3476563 0.9375 0.3046875 0.9375 0.484375 0.9335938 0.4101563 0.9375 0.4101563 0.9335938 0.3359375 0.9609375 0.3359375 0.9453125 0.3476563 0.9414063 0 0.7333984 0.0625 0.734375 0 0.734375 0.265625 0.9726563 0.3476563 0.96875 0.3476563 0.9726563 0.171875 0.7041016 0.109375 0.703125 0.109375 0.7041016 0.3359375 0.9609375 0.3320313 0.9570313 0.3320313 0.9492188 0.4101563 0.96875 0.484375 0.9726563 0.4101563 0.9726563 0.40625 0.8632813 0.4101563 0.8164063 0.4101563 0.8671875 0.40625 0.8203125 0.3359375 0.8164063 0.4101563 0.8164063 0.3398438 0.8632813 0.3359375 0.8164063 0.3398438 0.8203125 0.40625 0.8632813 0.3359375 0.8671875 0.3398438 0.8632813 0.21875 0.703125 0.171875 0.7041016 0.171875 0.703125 0 0.703125 0.00390625 0.6953125 0.00390625 0.703125 0.0625 0.734375 0.109375 0.7333984 0.0625 0.7333984 0.08203125 0.8632813 0.078125 0.8164063 0.08203125 0.8203125 0.4296875 0.7773438 0.375 0.7773438 0.375 0.7382813 0.109375 0.734375 0.171875 0.7333984 0.109375 0.7333984 0.453125 0.9570313 0.4492188 0.9453125 0.453125 0.9492188 0.171875 0.703125 0.109375 0.734375 0.109375 0.703125 0.46875 0.9570313 0.4726563 0.9453125 0.4726563 0.9609375 0.08203125 0.8203125 0.1523437 0.8164063 0.1484375 0.8203125 0.46875 0.9570313 0.453125 0.9492188 0.46875 0.9492188 0.171875 0.734375 0.21875 0.7333984 0.171875 0.7333984 0.2773438 0.9453125 0.3046875 0.9375 0.3007813 0.9453125 0.05859375 0.6953125 0.05078125 0.65625 0.05859375 0.65625 0.1328125 0.65625 0.1328125 0.6953125 0.1210937 0.6953125 0.3164063 0.9570313 0.3359375 0.9609375 0.3125 0.9609375 0.078125 0.8164063 0.078125 0.8671875 0.0078125 0.7773438 0.2265625 0.7773438 0.265625 0.7773438 0.265625 0.9296875 0.3007813 0.9453125 0.28125 0.9492188 0.2773438 0.9453125 0.4492188 0.9609375 0.46875 0.9570313 0.4726563 0.9609375 0.3007813 0.9609375 0.296875 0.9492188 0.3007813 0.9453125 0.3359375 0.9453125 0.3164063 0.9492188 0.3125 0.9453125 0.4375 0.9492188 0.421875 0.9570313 0.421875 0.9492188 0.3320313 0.9492188 0.3164063 0.9570313 0.3164063 0.9492188 0.421875 0.9453125 0.4375 0.9492188 0.421875 0.9492188 0.4101563 0.8671875 0.4101563 0.8164063 0.484375 0.7773438 0.4492188 0.9453125 0.46875 0.9492188 0.453125 0.9492188 0.0625 0.703125 0 0.734375 0 0.703125 0.296875 0.9492188 0.28125 0.9570313 0.28125 0.9492188 0.4414063 0.9609375 0.4375 0.9492188 0.4414063 0.9453125 0.28125 0.9570313 0.3007813 0.9609375 0.2773438 0.9609375 0.01953125 0.65625 0.01171875 0.6953125 0.01171875 0.65625 0.1132812 0.6953125 0.1054687 0.65625 0.1132812 0.65625 0.28125 0.9492188 0.2773438 0.9609375 0.2773438 0.9453125 0.1523437 0.8164063 0.1484375 0.8632813 0.1484375 0.8203125 0.21875 0.703125 0.171875 0.734375 0.171875 0.703125 0.08984375 0.65625 0.09765625 0.6953125 0.08984375 0.6953125 0.1210937 0.6953125 0.1132812 0.703125 0.1132812 0.6953125 0.1132812 0.6953125 0.1054687 0.703125 0.1054687 0.6953125 0.07421875 0.65625 0.08203125 0.6953125 0.07421875 0.6953125 0.1210937 0.6953125 0.1132812 0.65625 0.1210937 0.65625 0.09765625 0.6953125 0.08984375 0.703125 0.08984375 0.6953125 0.08203125 0.6953125 0.07421875 0.703125 0.07421875 0.6953125 0.06640625 0.6953125 0.07421875 0.703125 0.06640625 0.703125 0.06640625 0.6953125 0.05859375 0.703125 0.05859375 0.6953125 0.05859375 0.6953125 0.05078125 0.703125 0.05078125 0.6953125 0.04296875 0.6953125 0.05078125 0.703125 0.04296875 0.703125 0.03515625 0.6953125 0.04296875 0.703125 0.03515625 0.703125 0.03515625 0.6953125 0.02734375 0.703125 0.02734375 0.6953125 0.01953125 0.6953125 0.02734375 0.703125 0.01953125 0.703125 0.01171875 0.6953125 0.01953125 0.703125 0.01171875 0.703125 0.05078125 0.6953125 0.04296875 0.65625 0.05078125 0.65625 0.109375 0.703125 0.0625 0.7041016 0.0625 0.703125 0.109375 0.703125 0.0625 0.734375 0.0625 0.703125 0.421875 0.9492188 0.4179688 0.9609375 0.4179688 0.9453125 0.4101563 0.9375 0.484375 0.9375 0.4492188 0.9453125 0.4179688 0.9453125 0.4101563 0.96875 0.4101563 0.9375 0.265625 0.7773438 0.3359375 0.8164063 0.3359375 0.8671875 0.3359375 0.8164063 0.4101563 0.7773438 0.4101563 0.8164063 0.4101563 0.8671875 0.3805916 0.8997213 0.3731499 0.8991516 0.1523437 0.8671875 0.1206293 0.9000405 0.1134656 0.8996057 0.1523437 0.8164063 0.078125 0.7773438 0.1523437 0.7773438 0.2265625 0.9335938 0.1523437 0.9335938 0.1523437 0.8671875 0.02734375 0.6953125 0.01953125 0.6953125 0.01953125 0.65625 0.01171875 0.65625 0.01171875 0.6484375 0.01953125 0.6484375 0.01953125 0.65625 0.01953125 0.6484375 0.02734375 0.6484375 0.02734375 0.6484375 0.03515625 0.6484375 0.03515625 0.65625 0.03515625 0.65625 0.03515625 0.6484375 0.04296875 0.6484375 0.04296875 0.65625 0.04296875 0.6484375 0.05078125 0.6484375 0.05078125 0.6484375 0.05859375 0.6484375 0.05859375 0.65625 0.05859375 0.6484375 0.06640625 0.6484375 0.06640625 0.65625 0.06640625 0.65625 0.06640625 0.6484375 0.07421875 0.6484375 0.07421875 0.6484375 0.08203125 0.6484375 0.08203125 0.65625 0.08203125 0.6484375 0.08984375 0.6484375 0.08984375 0.65625 0.08984375 0.6484375 0.09765625 0.6484375 0.09765625 0.65625 0.09765625 0.65625 0.09765625 0.6484375 0.1054687 0.6484375 0.1054687 0.6484375 0.1132812 0.6484375 0.1132812 0.65625 0.1132812 0.6484375 0.1210937 0.6484375 0.1210937 0.65625 0.484375 0.9375 0.484375 0.96875 0.4726563 0.9609375 0.08984375 0.6953125 0.08203125 0.6953125 0.08203125 0.65625 0.4101563 0.9375 0.4101563 0.96875 0.40625 0.96875 0.08984375 0.6953125 0.08984375 0.703125 0.08203125 0.703125 0.06640625 0.6953125 0.05859375 0.6953125 0.05859375 0.65625 0.03515625 0.6953125 0.02734375 0.6953125 0.02734375 0.65625 0.07421875 0.6953125 0.06640625 0.6953125 0.06640625 0.65625 0.04296875 0.6953125 0.03515625 0.6953125 0.03515625 0.65625 0.3164063 0.9570313 0.3125 0.9609375 0.3125 0.9453125 0.00390625 0.65625 0.01171875 0.65625 0 0.65625 0.01171875 0.65625 0.01171875 0.6953125 0 0.6953125 0.01171875 0.6953125 0.00390625 0.6914063 0 0.6953125 0.1054687 0.6953125 0.09765625 0.6953125 0.09765625 0.65625 0.1210937 0.65625 0.1210937 0.6484375 0.1289062 0.6484375 0.00390625 0.6484375 0.01171875 0.6484375 0.01171875 0.65625 0.09765625 0.6953125 0.1054687 0.6953125 0.1054687 0.703125 0.4179688 0.9609375 0.421875 0.9570313 0.4375 0.9570313 0.1210937 0.6953125 0.1289062 0.6953125 0.1289062 0.703125 0.01171875 0.6953125 0.01171875 0.703125 0.00390625 0.703125 0.1523437 0.8671875 0.078125 0.8671875 0.08203125 0.8632813 0.1289062 0.6953125 0.1328125 0.6953125 0.1328125 0.703125 0.5234375 0.7773438 0.5234375 0.9335938 0.484375 0.9335938 0.5234375 0.9335938 0.5195313 0.9335938 0.484375 0.9335938 0.5195313 0.9335938 0.4882813 0.9335938 0.484375 0.9335938 0.265625 0.9375 0.2773438 0.9453125 0.2773438 0.9609375 0.3007813 0.9609375 0.3007813 0.9453125 0.3125 0.9609375 0.3007813 0.9453125 0.3046875 0.9375 0.3125 0.9453125 0.3125 0.9609375 0.3007813 0.9453125 0.3125 0.9453125 0.265625 0.96875 0.265625 0.9375 0.2773438 0.9609375 0.265625 0.96875 0.2773438 0.9609375 0.3007813 0.9609375 0.3359375 0.9609375 0.3359375 0.9609375 0.3476563 0.96875 0.3125 0.9609375 0.3359375 0.9609375 0.3476563 0.96875 0.3476563 0.96875 0.265625 0.96875 0.3007813 0.9609375 0.3046875 0.9375 0.3476563 0.9375 0.3125 0.9453125 0.3476563 0.9375 0.3359375 0.9453125 0.3125 0.9453125 0.0625 0.703125 0.0625 0.7041016 0 0.7041016 0.00390625 0.65625 0 0.65625 0 0.6484375 0.1289062 0.65625 0.1289062 0.6484375 0.1328125 0.6484375 0.265625 0.9375 0.265625 0.9335938 0.3046875 0.9375 0.265625 0.9335938 0.3476563 0.9335938 0.3046875 0.9375 0.484375 0.9335938 0.484375 0.9375 0.4101563 0.9375 0.34375 0.9375 0.3476563 0.9414063 0.3359375 0.9453125 0.3476563 0.9414063 0.3476563 0.9648438 0.3359375 0.9609375 0.3476563 0.9648438 0.34375 0.96875 0.3359375 0.9609375 0 0.7333984 0.0625 0.7333984 0.0625 0.734375 0.265625 0.9726563 0.265625 0.96875 0.3476563 0.96875 0.171875 0.7041016 0.171875 0.703125 0.109375 0.703125 0.3320313 0.9492188 0.3359375 0.9453125 0.3359375 0.9609375 0.3359375 0.9609375 0.3359375 0.9609375 0.3320313 0.9570313 0.4101563 0.96875 0.484375 0.96875 0.484375 0.9726563 0.40625 0.8632813 0.40625 0.8203125 0.4101563 0.8164063 0.40625 0.8203125 0.3398438 0.8203125 0.3359375 0.8164063 0.3398438 0.8632813 0.3359375 0.8671875 0.3359375 0.8164063 0.40625 0.8632813 0.4101563 0.8671875 0.3359375 0.8671875 0.21875 0.703125 0.21875 0.7041016 0.171875 0.7041016 0 0.703125 0 0.6953125 0.00390625 0.6953125 0.0625 0.734375 0.109375 0.734375 0.109375 0.7333984 0.08203125 0.8632813 0.078125 0.8671875 0.078125 0.8164063 0.375 0.7773438 0.265625 0.7773438 0.265625 0.7382813 0.375 0.7382813 0.4296875 0.7382813 0.4296875 0.7773438 0.4296875 0.7382813 0.484375 0.7382813 0.4296875 0.7773438 0.375 0.7773438 0.265625 0.7382813 0.375 0.7382813 0.484375 0.7382813 0.484375 0.7773438 0.4296875 0.7773438 0.109375 0.734375 0.171875 0.734375 0.171875 0.7333984 0.453125 0.9570313 0.4492188 0.9609375 0.4492188 0.9453125 0.171875 0.703125 0.171875 0.734375 0.109375 0.734375 0.46875 0.9570313 0.46875 0.9492188 0.4726563 0.9453125 0.08203125 0.8203125 0.078125 0.8164063 0.1523437 0.8164063 0.46875 0.9570313 0.453125 0.9570313 0.453125 0.9492188 0.171875 0.734375 0.21875 0.734375 0.21875 0.7333984 0.2773438 0.9453125 0.265625 0.9375 0.3046875 0.9375 0.05859375 0.6953125 0.05078125 0.6953125 0.05078125 0.65625 0.1289062 0.6953125 0.1210937 0.6953125 0.1328125 0.6953125 0.1210937 0.6953125 0.1210937 0.65625 0.1328125 0.65625 0.1210937 0.65625 0.1289062 0.6601563 0.1328125 0.65625 0.3164063 0.9570313 0.3320313 0.9570313 0.3359375 0.9609375 0.078125 0.8671875 0.078125 0.9335938 0.0078125 0.9335938 0.0078125 0.9335938 0.0078125 0.7773438 0.078125 0.8671875 0.0078125 0.7773438 0.078125 0.7773438 0.078125 0.8164063 0.265625 0.9296875 0.2617188 0.9335938 0.2304687 0.9335938 0.2304687 0.9335938 0.2265625 0.9296875 0.265625 0.9296875 0.2265625 0.9296875 0.2265625 0.7773438 0.265625 0.9296875 0.3007813 0.9453125 0.296875 0.9492188 0.28125 0.9492188 0.4492188 0.9609375 0.453125 0.9570313 0.46875 0.9570313 0.3007813 0.9609375 0.296875 0.9570313 0.296875 0.9492188 0.3359375 0.9453125 0.3320313 0.9492188 0.3164063 0.9492188 0.4375 0.9492188 0.4375 0.9570313 0.421875 0.9570313 0.3320313 0.9492188 0.3320313 0.9570313 0.3164063 0.9570313 0.421875 0.9453125 0.4414063 0.9453125 0.4375 0.9492188 0.4101563 0.8164063 0.4101563 0.7773438 0.484375 0.7773438 0.484375 0.7773438 0.484375 0.9335938 0.4101563 0.8671875 0.484375 0.9335938 0.4101563 0.9335938 0.4101563 0.8671875 0.4492188 0.9453125 0.4726563 0.9453125 0.46875 0.9492188 0.0625 0.703125 0.0625 0.734375 0 0.734375 0.296875 0.9492188 0.296875 0.9570313 0.28125 0.9570313 0.4414063 0.9609375 0.4375 0.9570313 0.4375 0.9492188 0.28125 0.9570313 0.296875 0.9570313 0.3007813 0.9609375 0.01953125 0.65625 0.01953125 0.6953125 0.01171875 0.6953125 0.1132812 0.6953125 0.1054687 0.6953125 0.1054687 0.65625 0.28125 0.9492188 0.28125 0.9570313 0.2773438 0.9609375 0.1523437 0.8164063 0.1523437 0.8671875 0.1484375 0.8632813 0.21875 0.703125 0.21875 0.734375 0.171875 0.734375 0.08984375 0.65625 0.09765625 0.65625 0.09765625 0.6953125 0.1210937 0.6953125 0.1210937 0.703125 0.1132812 0.703125 0.1132812 0.6953125 0.1132812 0.703125 0.1054687 0.703125 0.07421875 0.65625 0.08203125 0.65625 0.08203125 0.6953125 0.1210937 0.6953125 0.1132812 0.6953125 0.1132812 0.65625 0.09765625 0.6953125 0.09765625 0.703125 0.08984375 0.703125 0.08203125 0.6953125 0.08203125 0.703125 0.07421875 0.703125 0.06640625 0.6953125 0.07421875 0.6953125 0.07421875 0.703125 0.06640625 0.6953125 0.06640625 0.703125 0.05859375 0.703125 0.05859375 0.6953125 0.05859375 0.703125 0.05078125 0.703125 0.04296875 0.6953125 0.05078125 0.6953125 0.05078125 0.703125 0.03515625 0.6953125 0.04296875 0.6953125 0.04296875 0.703125 0.03515625 0.6953125 0.03515625 0.703125 0.02734375 0.703125 0.01953125 0.6953125 0.02734375 0.6953125 0.02734375 0.703125 0.01171875 0.6953125 0.01953125 0.6953125 0.01953125 0.703125 0.05078125 0.6953125 0.04296875 0.6953125 0.04296875 0.65625 0.109375 0.703125 0.109375 0.7041016 0.0625 0.7041016 0.109375 0.703125 0.109375 0.734375 0.0625 0.734375 0.421875 0.9492188 0.421875 0.9570313 0.4179688 0.9609375 0.4492188 0.9609375 0.4726563 0.9609375 0.484375 0.96875 0.484375 0.96875 0.4101563 0.96875 0.4492188 0.9609375 0.4101563 0.96875 0.4179688 0.9609375 0.4414063 0.9609375 0.4101563 0.96875 0.4414063 0.9609375 0.4492188 0.9609375 0.4414063 0.9453125 0.4179688 0.9453125 0.4101563 0.9375 0.4492188 0.9609375 0.4414063 0.9609375 0.4414063 0.9453125 0.484375 0.9375 0.4726563 0.9453125 0.4492188 0.9453125 0.4492188 0.9453125 0.4492188 0.9609375 0.4414063 0.9453125 0.4414063 0.9453125 0.4101563 0.9375 0.4492188 0.9453125 0.4179688 0.9453125 0.4179688 0.9609375 0.4101563 0.96875 0.3359375 0.9335938 0.265625 0.9335938 0.3359375 0.8671875 0.265625 0.9335938 0.265625 0.7773438 0.3359375 0.8671875 0.265625 0.7773438 0.3359375 0.7773438 0.3359375 0.8164063 0.3359375 0.8164063 0.3359375 0.7773438 0.4101563 0.7773438 0.3365457 0.9266614 0.3359375 0.9335938 0.3359375 0.8671875 0.4101563 0.8671875 0.4101563 0.9335938 0.4093334 0.9257813 0.4101563 0.8671875 0.4093334 0.9257813 0.4082009 0.9194982 0.338568 0.9201555 0.3365457 0.9266614 0.3359375 0.8671875 0.3418357 0.9143871 0.338568 0.9201555 0.3359375 0.8671875 0.4101563 0.8671875 0.4082009 0.9194982 0.4048051 0.9138015 0.4101563 0.8671875 0.4048051 0.9138015 0.400143 0.9087718 0.3463863 0.9092633 0.3418357 0.9143871 0.3359375 0.8671875 0.3520503 0.9050107 0.3463863 0.9092633 0.3359375 0.8671875 0.4101563 0.8671875 0.400143 0.9087718 0.3943881 0.9046313 0.4101563 0.8671875 0.3943881 0.9046313 0.3877754 0.9015697 0.3520503 0.9050107 0.3359375 0.8671875 0.358594 0.901826 0.3359375 0.8671875 0.4101563 0.8671875 0.3731499 0.8991516 0.358594 0.901826 0.3359375 0.8671875 0.3657317 0.8998496 0.3657317 0.8998496 0.3359375 0.8671875 0.3731499 0.8991516 0.4101563 0.8671875 0.3877754 0.9015697 0.3805916 0.8997213 0.07895302 0.9276447 0.078125 0.9335938 0.078125 0.8671875 0.1523437 0.8671875 0.1523437 0.9335938 0.149919 0.9257966 0.1523437 0.8671875 0.149919 0.9257966 0.1476761 0.9193678 0.08070421 0.9211758 0.07895302 0.9276447 0.078125 0.8671875 0.08370715 0.9153638 0.08070421 0.9211758 0.078125 0.8671875 0.1523437 0.8671875 0.1476761 0.9193678 0.1442694 0.9137199 0.1523437 0.8671875 0.1442694 0.9137199 0.1396595 0.9087614 0.08795803 0.9101732 0.08370715 0.9153638 0.078125 0.8671875 0.09330022 0.9058326 0.08795803 0.9101732 0.078125 0.8671875 0.1523437 0.8671875 0.1396595 0.9087614 0.134019 0.904713 0.1523437 0.8671875 0.134019 0.904713 0.1275818 0.9017626 0.09330022 0.9058326 0.078125 0.8671875 0.09951663 0.9025395 0.078125 0.8671875 0.1523437 0.8671875 0.1134656 0.8996057 0.09951663 0.9025395 0.078125 0.8671875 0.1063379 0.9004384 0.1063379 0.9004384 0.078125 0.8671875 0.1134656 0.8996057 0.1523437 0.8671875 0.1275818 0.9017626 0.1206293 0.9000405 0.1523437 0.8164063 0.078125 0.8164063 0.078125 0.7773438 0.1523437 0.8671875 0.1523437 0.8164063 0.2265625 0.7773438 0.1523437 0.8164063 0.1523437 0.7773438 0.2265625 0.7773438 0.2265625 0.7773438 0.2265625 0.9335938 0.1523437 0.8671875 + + + + + + + + + + + + + + +

    34 0 0 1 1 1 2 2 2 0 3 3 27 4 4 1 5 5 1 5 6 29 6 7 2 7 8 29 6 9 3 8 10 2 7 11 3 8 12 22 9 13 4 10 14 4 10 15 23 11 16 5 12 17 23 11 18 6 13 19 5 12 20 17 14 21 7 15 22 6 13 23 7 15 24 19 16 25 8 17 26 19 16 27 9 18 28 8 17 29 20 19 30 10 20 31 9 18 32 21 21 33 11 22 34 10 20 35 11 22 36 25 23 37 12 24 38 25 23 39 13 25 40 12 24 41 30 26 42 14 27 43 13 25 44 110 28 45 85 29 46 78 30 47 42 31 48 9 32 49 10 33 50 108 34 51 67 35 52 73 36 53 42 37 54 52 38 55 41 39 56 39 40 57 6 41 58 7 42 59 35 43 60 2 44 61 3 45 62 40 46 63 7 47 64 8 48 65 36 49 66 3 50 67 4 51 68 136 52 69 112 53 70 125 54 71 64 55 72 70 56 73 0 57 74 44 58 75 11 58 76 12 59 77 14 27 78 77 60 79 72 61 80 75 62 81 0 3 82 71 63 83 43 64 84 57 65 85 58 66 86 83 67 87 138 68 88 114 69 89 46 70 90 84 71 91 63 72 92 32 73 93 69 74 94 65 75 95 109 76 96 98 77 97 105 78 98 66 79 99 116 80 100 84 81 101 79 82 102 15 83 103 47 83 104 123 84 105 127 85 106 121 86 107 144 87 108 82 87 109 88 87 110 71 88 111 118 89 112 75 90 113 72 91 114 108 92 115 73 93 116 75 94 117 118 95 118 119 96 119 79 97 120 108 98 121 77 99 122 135 100 123 74 101 124 70 102 125 95 87 126 105 87 127 98 87 128 93 103 129 127 104 130 69 105 131 89 106 132 142 106 133 141 106 134 135 107 135 134 108 136 124 109 137 116 110 138 86 111 139 84 112 140 88 113 141 90 114 142 87 115 143 89 116 144 91 117 145 90 118 146 144 119 147 91 120 148 141 121 149 88 122 150 92 123 151 144 124 152 88 125 153 99 125 154 89 125 155 127 126 156 65 127 157 69 128 158 143 129 159 103 130 160 105 131 161 98 132 162 102 133 163 101 134 164 147 87 165 146 87 166 148 87 167 145 106 168 101 106 169 103 106 170 140 135 171 107 136 172 132 137 173 99 106 174 145 106 175 142 106 176 139 138 177 78 138 178 85 139 179 101 140 180 104 141 181 103 142 182 139 143 183 132 144 184 131 145 185 96 125 186 98 125 187 101 125 188 81 146 189 119 147 190 111 148 191 38 149 192 5 150 193 6 151 194 73 152 195 67 153 196 46 154 197 136 155 198 68 156 199 123 157 200 102 158 201 97 159 202 47 158 203 48 125 204 16 125 205 80 125 206 111 160 207 120 161 208 81 162 209 115 163 210 139 164 211 85 165 212 121 166 213 122 167 214 111 168 215 74 169 216 125 170 217 112 171 218 129 172 219 137 173 220 128 174 221 124 175 222 136 176 223 125 177 224 76 178 225 129 179 226 128 180 227 87 181 228 90 182 229 15 182 230 107 183 231 131 184 232 132 185 233 100 87 234 95 87 235 82 87 236 122 186 237 130 187 238 120 188 239 114 189 240 129 190 241 106 191 242 130 192 243 121 193 244 94 194 245 1 195 246 32 195 247 0 196 248 45 197 249 12 198 250 13 199 251 120 200 252 94 201 253 81 202 254 104 203 255 105 204 256 103 205 257 82 125 258 96 125 259 99 125 260 10 206 261 43 206 262 42 207 263 46 70 264 62 208 265 45 209 266 45 209 267 57 65 268 44 210 269 8 211 270 41 212 271 40 213 272 46 214 273 13 215 274 14 216 275 43 64 276 53 217 277 42 37 278 41 39 279 51 218 280 40 219 281 39 220 282 51 218 283 50 221 284 39 220 285 49 222 286 38 223 287 38 223 288 55 224 289 37 225 290 36 226 291 55 224 292 54 227 293 35 228 294 54 227 295 56 229 296 35 228 297 61 230 298 34 231 299 33 232 300 61 230 301 59 233 302 32 73 303 59 233 304 60 234 305 37 235 306 4 236 307 5 237 308 141 130 309 100 238 310 144 131 311 142 239 312 143 129 313 100 238 314 128 240 315 83 241 316 76 242 317 108 34 318 110 28 319 107 243 320 76 244 321 116 245 322 108 34 323 16 182 324 91 182 325 92 246 326 91 182 327 147 182 328 90 182 329 87 181 330 19 247 331 18 248 332 109 249 333 49 250 334 50 251 335 104 158 336 149 158 337 148 158 338 93 252 339 69 253 340 109 249 341 34 0 342 33 254 343 1 1 344 0 3 345 28 255 346 27 4 347 1 5 348 27 4 349 29 6 350 29 6 351 24 256 352 3 8 353 3 8 354 24 256 355 22 9 356 4 10 357 22 9 358 23 11 359 23 11 360 17 14 361 6 13 362 17 14 363 18 257 364 7 15 365 7 15 366 18 257 367 19 16 368 19 16 369 20 19 370 9 18 371 20 19 372 21 21 373 10 20 374 21 21 375 26 258 376 11 22 377 11 22 378 26 258 379 25 23 380 25 23 381 30 26 382 13 25 383 30 26 384 31 259 385 14 27 386 110 28 387 117 260 388 85 29 389 42 31 390 41 261 391 9 32 392 108 34 393 116 245 394 67 35 395 42 37 396 53 217 397 52 38 398 39 40 399 38 262 400 6 41 401 35 43 402 34 263 403 2 44 404 40 46 405 39 264 406 7 47 407 36 49 408 35 265 409 3 50 410 136 52 411 123 266 412 112 53 413 71 267 414 0 57 415 70 56 416 0 57 417 32 268 418 64 55 419 32 268 420 65 269 421 64 55 422 44 58 423 43 59 424 11 58 425 14 27 426 31 259 427 77 60 428 75 62 429 28 255 430 0 3 431 43 64 432 44 210 433 57 65 434 83 67 435 137 270 436 138 68 437 46 70 438 66 271 439 84 71 440 32 73 441 60 234 442 69 74 443 109 76 444 97 272 445 98 77 446 66 79 447 67 273 448 116 80 449 47 83 450 86 274 451 79 82 452 86 274 453 117 275 454 79 82 455 117 275 456 110 275 457 79 82 458 113 276 459 81 146 460 94 277 461 121 86 462 111 148 463 123 84 464 111 148 465 119 147 466 112 278 467 123 84 468 111 148 469 112 278 470 126 279 471 113 276 472 94 277 473 126 279 474 94 277 475 121 86 476 68 280 477 135 100 478 127 85 479 123 84 480 68 280 481 127 85 482 127 85 483 126 279 484 121 86 485 119 147 486 118 281 487 112 278 488 118 281 489 74 101 490 112 278 491 144 87 492 100 87 493 82 87 494 71 88 495 70 282 496 118 89 497 72 91 498 77 283 499 108 92 500 113 284 501 80 285 502 119 96 503 80 285 504 75 94 505 119 96 506 79 97 507 110 286 508 108 98 509 118 281 510 70 102 511 74 101 512 70 102 513 64 287 514 135 100 515 64 287 516 127 85 517 135 100 518 95 87 519 143 87 520 105 87 521 93 103 522 126 288 523 127 104 524 89 106 525 99 106 526 142 106 527 124 109 528 74 289 529 135 107 530 135 107 531 68 290 532 134 108 533 116 110 534 117 291 535 86 111 536 88 113 537 89 292 538 90 114 539 89 116 540 141 293 541 91 117 542 144 119 543 92 294 544 91 120 545 88 122 546 87 295 547 92 123 548 88 125 549 82 125 550 99 125 551 127 126 552 64 296 553 65 127 554 143 129 555 145 297 556 103 130 557 98 132 558 97 298 559 102 133 560 146 87 561 16 87 562 48 87 563 148 87 564 149 87 565 147 87 566 149 87 567 47 87 568 147 87 569 146 87 570 48 87 571 148 87 572 47 87 573 15 87 574 147 87 575 145 106 576 96 106 577 101 106 578 140 135 579 115 299 580 107 136 581 99 106 582 96 106 583 145 106 584 139 138 585 131 300 586 78 138 587 101 140 588 102 301 589 104 141 590 139 143 591 140 302 592 132 144 593 96 125 594 95 125 595 98 125 596 81 146 597 113 276 598 119 147 599 38 149 600 37 303 601 5 150 602 66 304 603 46 154 604 67 153 605 46 154 606 14 305 607 73 152 608 14 305 609 72 306 610 73 152 611 136 155 612 134 307 613 68 156 614 97 159 615 84 308 616 86 309 617 86 309 618 47 158 619 97 159 620 47 158 621 149 158 622 102 158 623 80 125 624 113 125 625 126 125 626 126 125 627 93 125 628 80 125 629 93 125 630 48 125 631 80 125 632 111 160 633 122 310 634 120 161 635 115 163 636 140 311 637 139 164 638 121 166 639 133 312 640 122 167 641 74 169 642 124 313 643 125 170 644 129 172 645 138 314 646 137 173 647 124 175 648 134 315 649 136 176 650 76 178 651 106 316 652 129 179 653 90 182 654 147 182 655 15 182 656 15 182 657 79 182 658 87 181 659 79 182 660 77 317 661 87 181 662 107 183 663 78 318 664 131 184 665 100 87 666 143 87 667 95 87 668 122 186 669 133 319 670 130 187 671 114 189 672 138 320 673 129 190 674 130 192 675 133 321 676 121 193 677 1 195 678 33 196 679 32 195 680 45 197 681 44 322 682 12 198 683 120 200 684 130 323 685 94 201 686 104 203 687 109 324 688 105 204 689 82 125 690 95 125 691 96 125 692 10 206 693 11 207 694 43 206 695 46 70 696 63 72 697 62 208 698 45 209 699 62 208 700 57 65 701 8 211 702 9 325 703 41 212 704 46 214 705 45 326 706 13 215 707 43 64 708 58 66 709 53 217 710 41 39 711 52 38 712 51 218 713 39 220 714 40 219 715 51 218 716 39 220 717 50 221 718 49 222 719 38 223 720 49 222 721 55 224 722 36 226 723 37 225 724 55 224 725 35 228 726 36 226 727 54 227 728 35 228 729 56 229 730 61 230 731 33 232 732 34 231 733 61 230 734 32 73 735 33 232 736 59 233 737 37 235 738 36 327 739 4 236 740 141 130 741 142 239 742 100 238 743 142 239 744 145 297 745 143 129 746 128 240 747 137 328 748 83 241 749 115 329 750 85 29 751 117 260 752 117 260 753 116 245 754 115 329 755 116 245 756 83 330 757 114 331 758 116 245 759 114 331 760 115 329 761 106 332 762 76 244 763 108 34 764 115 329 765 114 331 766 106 332 767 110 28 768 78 30 769 107 243 770 107 243 771 115 329 772 106 332 773 106 332 774 108 34 775 107 243 776 76 244 777 83 330 778 116 245 779 75 333 780 80 334 781 92 246 782 80 334 783 16 182 784 92 246 785 16 182 786 146 182 787 91 182 788 91 182 789 146 182 790 147 182 791 28 182 792 75 333 793 92 246 794 87 181 795 77 317 796 31 335 797 87 181 798 31 335 799 30 336 800 27 182 801 28 182 802 92 246 803 29 337 804 27 182 805 92 246 806 87 181 807 30 336 808 25 338 809 87 181 810 25 338 811 26 339 812 24 340 813 29 337 814 92 246 815 22 341 816 24 340 817 92 246 818 87 181 819 26 339 820 21 342 821 87 181 822 21 342 823 20 343 824 22 341 825 92 246 826 23 182 827 92 246 828 87 181 829 18 248 830 23 182 831 92 246 832 17 182 833 17 182 834 92 246 835 18 248 836 87 181 837 20 343 838 19 247 839 63 344 840 84 308 841 97 159 842 109 249 843 69 253 844 60 345 845 109 249 846 60 345 847 59 346 848 62 347 849 63 344 850 97 159 851 57 348 852 62 347 853 97 159 854 109 249 855 59 346 856 61 349 857 109 249 858 61 349 859 56 350 860 58 158 861 57 348 862 97 159 863 53 158 864 58 158 865 97 159 866 109 249 867 56 350 868 54 351 869 109 249 870 54 351 871 55 352 872 53 158 873 97 159 874 52 158 875 97 159 876 109 249 877 50 251 878 52 158 879 97 159 880 51 353 881 51 353 882 97 159 883 50 251 884 109 249 885 55 352 886 49 250 887 104 158 888 102 158 889 149 158 890 109 249 891 104 158 892 48 158 893 104 158 894 148 158 895 48 158 896 48 158 897 93 252 898 109 249 899

    +
    +
    +
    + + + + -3.5 0 0.5 -3.5 4 0.5 -3.5 0 -0.5 -3.5 4 -0.5 3.5 0 0.5 3.5 4 0.5 3.5 0 -0.5 3.5 4 -0.5 -2.449998 0.06249982 0.3 -2.499998 0.1124998 0.3 2.499999 0.1124998 0.3 2.449999 0.06249982 0.3 2.449999 3.499999 0.3 2.499999 3.449999 0.3 -2.499998 3.45 0.3 -2.449998 3.5 0.3 -2.566542 0.01615011 0.5 -2.499998 0.1124998 0.4125 -2.460354 0.003356516 0.5 -2.449998 0.06249982 0.4125 2.465347 0.003356516 0.5 2.449999 0.06249982 0.4125 2.499999 0.1124998 0.4125 2.570442 0.01410555 0.5 2.570653 3.507365 0.5 -2.449998 0.06249982 -0.3 -2.499998 0.1124998 -0.3 2.499999 0.1124998 -0.3 2.449999 0.06249982 -0.3 2.449999 3.499999 -0.3 2.499999 3.449999 -0.3 -2.499998 3.45 -0.3 -2.449998 3.5 -0.3 -2.566542 0.01615011 -0.5 -2.499998 0.1124998 -0.4125 -2.460354 0.003356516 -0.5 -2.449998 0.06249982 -0.4125 2.465347 0.003356516 -0.5 2.449999 0.06249982 -0.4125 2.499999 0.1124998 -0.4125 2.570442 0.01410555 -0.5 2.570653 3.507365 -0.5 2.499999 3.449999 -0.4125 2.509674 3.568343 -0.5 2.449999 3.499999 -0.4125 -2.515752 3.568344 -0.5 -2.449998 3.5 -0.4125 -2.499998 3.45 -0.4125 -2.566191 3.518172 -0.5 2.499999 3.449999 0.4125 2.509674 3.568343 0.5 2.449999 3.499999 0.4125 -2.515752 3.568344 0.5 2.449999 3.599999 -0.3000003 2.499999 3.549999 -0.3000003 -2.499998 3.549999 -0.3000003 -2.449998 3.599999 -0.3000003 -2.449998 3.5 0.4125 -2.499998 3.45 0.4125 -2.499998 0 -0.3 -2.566191 3.518172 0.5 2.449999 3.599999 0.3000003 2.499999 0 -0.3 2.499999 3.549999 0.3000003 -3.5 0 -0.5 -2.499998 3.549999 0.3000003 3.5 0 -0.5 -2.449998 3.599999 0.3000003 3.062499 3.549999 -0.3000004 -2.499998 0 0.3 3.062499 0 -0.3000001 2.499999 0 0.3 -3.5 0 0.5 3.5 0 0.5 -3.062498 3.549999 -0.3000005 -3.062498 0 -0.3000002 -3.5 0.02500009 -0.45 3.062499 3.549999 0.3000004 3.5 0.02500009 -0.45 3.062499 0 0.3000001 -3.062498 3.549999 0.3000005 -3.062498 0 0.3000002 -3.5 0.02500009 0.45 3.5 0.02500009 0.45 + + + + + + + + + + -1 0 0 -0.7071079 -0.7071058 0 -0.4914328 -0.4914404 0.7190133 -1 0 0 0 1 0 0.4790179 -0.4790199 0.7355828 -0.6058115 0.6058108 0.515738 0 0.8284935 0.5599987 -0.7071071 0.7071066 0 0.7071078 -0.7071059 0 1 0 0 0.7975064 0 0.6033105 0.0771737 0.64055 0.7640287 0 -1 0 -0.6058115 0.6058108 -0.515738 0.4782425 -0.480796 -0.7349281 0.6165269 0.6165267 -0.4896831 -0.4914354 -0.4914371 -0.7190139 0 0.8284936 -0.5599986 0.7975074 0 -0.6033093 -0.7780221 0 -0.628237 -2.1912e-7 -0.7880899 -0.6155603 0.7071072 0.7071065 0 0 0 -1 0 -1 0 -0.7071036 -0.70711 0 0 3.89255e-6 1 0 0 1 -2.1912e-7 -0.7880899 0.6155602 0.7071036 -0.70711 0 -1 0 0 -0.7789177 4.71053e-5 0.6271261 -1.62189e-7 -1 0 7.41746e-7 0 1 -3.17891e-7 3.70874e-6 -1 0 3.89255e-6 -1 7.41746e-7 0 -1 0 7.68902e-7 -1 0 7.68902e-7 1 -9.00692e-7 0 1 -1 0 0 -0.7071078 -0.7071059 0 -0.4914354 -0.4914371 0.7190139 0.4782425 -0.480796 0.7349281 -0.0651189 0.6366786 0.7683749 0 0.8284941 0.5599979 -0.7071073 0.7071063 0 0.7071079 -0.7071058 0 0.7960138 -7.97699e-5 0.6052786 0.6165269 0.6165267 0.4896831 -0.06511884 0.6366788 -0.7683748 0.4790179 -0.4790199 -0.7355828 0.0771737 0.64055 -0.7640287 -0.4914328 -0.4914404 -0.7190133 0 0.8284941 -0.559998 0.7960132 -7.97698e-5 -0.6052795 -0.7789177 4.71053e-5 -0.6271261 0 -0.7880892 -0.6155612 -4.76837e-7 -1 0 -0.7071092 -0.7071044 0 3.27826e-6 3.35274e-6 1 3.27825e-6 2.98025e-6 1 0 2.91942e-6 1 -3.27826e-6 2.98022e-6 1 -3.27825e-6 3.35278e-6 1 0 -0.7880892 0.6155611 0.7071092 -0.7071044 0 -1 0 0 9.44843e-7 -1 0 0 0 -1 -0.7780221 0 0.628237 1.58946e-7 0 1 1.77415e-7 0 1 1.58948e-7 3.17892e-6 1 -9.00692e-7 0 -1 -3.17892e-7 0 -1 -3.36361e-7 0 -1 3.27825e-6 2.98025e-6 -1 3.27825e-6 3.35273e-6 -1 -3.27826e-6 2.98022e-6 -1 0 2.91942e-6 -1 -3.27825e-6 3.35278e-6 -1 1.58948e-7 3.17892e-6 -1 1.77415e-7 0 -1 1.58946e-7 0 -1 0 -7.7243e-7 -1 0 -7.7243e-7 1 -3.17893e-7 3.70874e-6 1 -3.36361e-7 0 1 -3.17892e-7 0 1 + + + + + + + + + + 0.4492188 0.2695313 0.4570313 0.078125 0.4570313 0.2695313 0.4570313 0.2773438 0.4492188 0.2695313 0.4492188 0.2773438 0.4570313 0.2851563 0.4648438 0.2773438 0.4648438 0.2851563 0.0625 0.0625 0 0.3125 0 0.0625 0.4570313 0.4101563 0.4492188 0.4179688 0.4492188 0.4101563 0.4570313 0.609375 0.4492188 0.4179688 0.4570313 0.4179688 0.1367187 0.6171875 0.4492188 0.609375 0.4492188 0.6171875 0.1289062 0.2773438 0.1210937 0.2851563 0.1210937 0.2773438 0.4570313 0.0625 0.4648438 0.0703125 0.4570313 0.0703125 0.4570313 0.0703125 0.1289062 0.0625 0.4570313 0.0625 0.4492188 0.078125 0.1367187 0.0703125 0.4492188 0.0703125 0.4570313 0.078125 0.4492188 0.0703125 0.4570313 0.0703125 0.1289062 0.2695313 0.1367187 0.2773438 0.1289062 0.2773438 0.1367187 0.078125 0.1289062 0.2695313 0.1289062 0.078125 0.1210937 0.2773438 0.1289062 0.0703125 0.1289062 0.2773438 0.1210937 0.0625 0.1289062 0.0703125 0.1210937 0.0703125 0.1367187 0.2695313 0.4492188 0.2773438 0.1367187 0.2773438 0.4492188 0.609375 0.4570313 0.6171875 0.4492188 0.6171875 0.1367187 0.4179688 0.1289062 0.4101563 0.1367187 0.4101563 0.1289062 0.4179688 0.1367187 0.609375 0.1289062 0.609375 0.4492188 0.4179688 0.1367187 0.4101563 0.1367187 0.4179688 0.4648438 0.6171875 0.4570313 0.625 0.4648438 0.625 0.1289062 0.4101563 0.1210937 0.4023438 0.1289062 0.4023438 0.1289062 0.625 0.1210937 0.6171875 0.1210937 0.625 0.4648438 0.4023438 0.4570313 0.4101563 0.4570313 0.4023438 0.1289062 0.625 0.4570313 0.6171875 0.4570313 0.625 0.1289062 0.6171875 0.1210937 0.4101563 0.1289062 0.4101563 0.4648438 0.4101563 0.4570313 0.6171875 0.4570313 0.4101563 0.4570313 0.4101563 0.1289062 0.4023438 0.1289062 0.4101563 0.1289062 0.6171875 0.1367187 0.609375 0.1367187 0.6171875 0.0625 0.625 0.1210937 0.625 0.4648438 0.625 0.0546875 0.6484375 0.0078125 0.6289063 0.0546875 0.6289063 0.0546875 0.3320313 0.0078125 0.3359375 0.0078125 0.3320313 0.0078125 0.3359375 0.0078125 0.625 0 0.625 0.4648438 0.0625 0.1210937 0.0625 0.0625 0.05859375 0.1289062 0.2851563 0.4570313 0.2773438 0.1289062 0.2773438 0.0546875 0.625 0.0078125 0.6289063 0.0078125 0.625 0.5859375 0.0625 0.5234375 0.3125 0.5234375 0.0625 0.5234375 0.3125 0.4648438 0.2851563 0.4648438 0.28125 0.578125 0.3164063 0.53125 0.6289063 0.578125 0.6289063 0.5234375 0.375 0.0625 0.3125 0.5234375 0.3125 0.5234375 0.05859375 0.0625 0 0.0625 0.05859375 0.1367187 0.1992187 0.3554688 0.234375 0.1367187 0.234375 0.0078125 0.3125 0.0546875 0.3320313 0.0078125 0.3320313 0.4648438 0.4023438 0.0625 0.375 0.5234375 0.375 0.0625 0 0.5234375 0.05859375 0.0625 0.05859375 0.4648438 0.2773438 0.4570313 0.0703125 0.4648438 0.0703125 0.1289062 0.078125 0.1367187 0.0703125 0.1367187 0.078125 0.0546875 0.3359375 0.0078125 0.625 0.0078125 0.3359375 0.3554688 0.234375 0.1367187 0.1992187 0.3554688 0.1992187 0.1445312 0.1640625 0.3554688 0.1992187 0.3476563 0.1640625 0.3554688 0.1992187 0.3554688 0.1640625 0.3476563 0.1640625 0.0625 0.3359375 0.0546875 0.3359375 0.0546875 0.625 0.1445312 0.234375 0.3476563 0.234375 0.3554688 0.2695313 0.5859375 0.3398438 0.5859375 0.6054688 0.578125 0.5976563 0.5234375 0.6054688 0.5234375 0.3398438 0.53125 0.3476563 0.1445312 0.234375 0.3476563 0.234375 0.3554688 0.2695313 0.4492188 0.2695313 0.4492188 0.078125 0.4570313 0.078125 0.4570313 0.2773438 0.4570313 0.2695313 0.4492188 0.2695313 0.4570313 0.2851563 0.4570313 0.2773438 0.4648438 0.2773438 0.0625 0.0625 0.0625 0.3125 0 0.3125 0.4570313 0.4101563 0.4570313 0.4179688 0.4492188 0.4179688 0.4570313 0.609375 0.4492188 0.609375 0.4492188 0.4179688 0.1367187 0.6171875 0.1367187 0.609375 0.4492188 0.609375 0.1289062 0.2773438 0.1289062 0.2851563 0.1210937 0.2851563 0.4570313 0.0625 0.4648438 0.0625 0.4648438 0.0703125 0.4570313 0.0703125 0.1289062 0.0703125 0.1289062 0.0625 0.4492188 0.078125 0.1367187 0.078125 0.1367187 0.0703125 0.4570313 0.078125 0.4492188 0.078125 0.4492188 0.0703125 0.1289062 0.2695313 0.1367187 0.2695313 0.1367187 0.2773438 0.1367187 0.078125 0.1367187 0.2695313 0.1289062 0.2695313 0.1210937 0.2773438 0.1210937 0.0703125 0.1289062 0.0703125 0.1210937 0.0625 0.1289062 0.0625 0.1289062 0.0703125 0.1367187 0.2695313 0.4492188 0.2695313 0.4492188 0.2773438 0.4492188 0.609375 0.4570313 0.609375 0.4570313 0.6171875 0.1367187 0.4179688 0.1289062 0.4179688 0.1289062 0.4101563 0.1289062 0.4179688 0.1367187 0.4179688 0.1367187 0.609375 0.4492188 0.4179688 0.4492188 0.4101563 0.1367187 0.4101563 0.4648438 0.6171875 0.4570313 0.6171875 0.4570313 0.625 0.1289062 0.4101563 0.1210937 0.4101563 0.1210937 0.4023438 0.1289062 0.625 0.1289062 0.6171875 0.1210937 0.6171875 0.4648438 0.4023438 0.4648438 0.4101563 0.4570313 0.4101563 0.1289062 0.625 0.1289062 0.6171875 0.4570313 0.6171875 0.1289062 0.6171875 0.1210937 0.6171875 0.1210937 0.4101563 0.4648438 0.4101563 0.4648438 0.6171875 0.4570313 0.6171875 0.4570313 0.4101563 0.4570313 0.4023438 0.1289062 0.4023438 0.1289062 0.6171875 0.1289062 0.609375 0.1367187 0.609375 0.5234375 0.625 0.5234375 0.6289063 0.0625 0.6289063 0.0625 0.625 0.0625 0.375 0.1210937 0.40625 0.0625 0.625 0.1210937 0.40625 0.1210937 0.625 0.5234375 0.625 0.0625 0.6289063 0.4648438 0.625 0.0625 0.6289063 0.0625 0.625 0.4648438 0.625 0.0546875 0.6484375 0.0078125 0.6484375 0.0078125 0.6289063 0.0546875 0.3320313 0.0546875 0.3359375 0.0078125 0.3359375 0.0078125 0.625 0.0078125 0.6289063 0 0.6289063 0 0.6289063 0 0.625 0.0078125 0.625 0 0.625 0 0.3359375 0.0078125 0.3359375 0 0.3359375 0 0.3320313 0.0078125 0.3359375 0 0.3320313 0.0078125 0.3320313 0.0078125 0.3359375 0.1210937 0.0625 0.1210937 0.28125 0.0625 0.05859375 0.1210937 0.28125 0.0625 0.3125 0.0625 0.05859375 0.0625 0.05859375 0.5234375 0.05859375 0.5234375 0.0625 0.0625 0.05859375 0.5234375 0.0625 0.4648438 0.0625 0.0625 0.05859375 0.0625 0.05859375 0.4648438 0.0625 0.1289062 0.2851563 0.4570313 0.2851563 0.4570313 0.2773438 0.0546875 0.625 0.0546875 0.6289063 0.0078125 0.6289063 0.5859375 0.0625 0.5859375 0.3125 0.5234375 0.3125 0.4648438 0.0625 0.5234375 0.0625 0.4648438 0.28125 0.5234375 0.0625 0.5234375 0.3125 0.4648438 0.28125 0.0625 0.3125 0.1210937 0.28125 0.1210937 0.2851563 0.0625 0.3125 0.1210937 0.2851563 0.4648438 0.2851563 0.5234375 0.3125 0.0625 0.3125 0.4648438 0.2851563 0.578125 0.3164063 0.53125 0.3164063 0.53125 0.6289063 0.5234375 0.375 0.0625 0.375 0.0625 0.3125 0.5234375 0.05859375 0.5234375 0 0.0625 0 0.1367187 0.1992187 0.3554688 0.1992187 0.3554688 0.234375 0.0078125 0.3125 0.0546875 0.3125 0.0546875 0.3320313 0.5234375 0.375 0.5234375 0.625 0.4648438 0.40625 0.5234375 0.625 0.4648438 0.625 0.4648438 0.40625 0.1210937 0.4023438 0.1210937 0.40625 0.0625 0.375 0.5234375 0.375 0.4648438 0.40625 0.4648438 0.4023438 0.4648438 0.4023438 0.1210937 0.4023438 0.0625 0.375 0.0625 0 0.5234375 0 0.5234375 0.05859375 0.4648438 0.2773438 0.4570313 0.2773438 0.4570313 0.0703125 0.1289062 0.078125 0.1289062 0.0703125 0.1367187 0.0703125 0.0546875 0.3359375 0.0546875 0.625 0.0078125 0.625 0.3554688 0.234375 0.1367187 0.234375 0.1367187 0.1992187 0.1445312 0.1640625 0.1367187 0.1640625 0.1367187 0.1992187 0.1367187 0.1992187 0.3554688 0.1992187 0.1445312 0.1640625 0.3554688 0.1992187 0.3554688 0.1640625 0.3476563 0.1640625 0.3476563 0.1640625 0.1445312 0.1640625 0.3554688 0.1992187 0.1445312 0.1640625 0.1367187 0.1640625 0.1367187 0.1992187 0.3554688 0.1992187 0.1445312 0.1640625 0.1367187 0.1992187 0.0625 0.3359375 0.0625 0.3320313 0.0546875 0.3359375 0.0625 0.3320313 0.0546875 0.3320313 0.0546875 0.3359375 0.0625 0.6289063 0.0625 0.625 0.0546875 0.625 0.0625 0.625 0.0625 0.3359375 0.0546875 0.625 0.0546875 0.625 0.0546875 0.6289063 0.0625 0.6289063 0.3554688 0.234375 0.3554688 0.2695313 0.3476563 0.234375 0.3554688 0.2695313 0.1367187 0.2695313 0.1445312 0.234375 0.1367187 0.2695313 0.1367187 0.234375 0.1445312 0.234375 0.578125 0.3476563 0.578125 0.3398438 0.5859375 0.3398438 0.5859375 0.6054688 0.578125 0.6054688 0.578125 0.5976563 0.578125 0.5976563 0.578125 0.3476563 0.5859375 0.3398438 0.53125 0.5976563 0.53125 0.6054688 0.5234375 0.6054688 0.5234375 0.3398438 0.53125 0.3398438 0.53125 0.3476563 0.53125 0.3476563 0.53125 0.5976563 0.5234375 0.6054688 0.3476563 0.234375 0.3554688 0.234375 0.3554688 0.2695313 0.3554688 0.2695313 0.1367187 0.2695313 0.1445312 0.234375 0.1367187 0.2695313 0.1367187 0.234375 0.1445312 0.234375 + + + + + + + + + + + + + + +

    13 0 0 22 0 1 49 0 2 13 1 3 51 1 4 12 1 5 50 2 6 49 2 7 24 2 8 0 3 9 3 3 10 2 3 11 44 1 12 30 1 13 29 1 14 39 0 15 30 0 16 42 0 17 36 4 18 28 4 19 38 4 20 57 5 21 60 5 22 58 5 23 20 6 24 22 6 25 21 6 26 21 7 27 18 7 28 20 7 29 11 4 30 19 4 31 21 4 32 22 8 33 11 8 34 21 8 35 58 9 36 15 9 37 57 9 38 9 10 39 58 10 40 17 10 41 60 11 42 17 11 43 58 11 44 18 12 45 17 12 46 16 12 47 15 13 48 51 13 49 57 13 50 28 8 51 39 8 52 38 8 53 32 9 54 47 9 55 46 9 56 47 10 57 26 10 58 34 10 59 44 13 60 32 13 61 46 13 62 39 14 63 37 14 64 38 14 65 46 15 66 48 15 67 45 15 68 35 16 69 34 16 70 36 16 71 43 17 72 42 17 73 44 17 74 35 18 75 38 18 76 37 18 77 34 19 78 48 19 79 47 19 80 41 20 81 39 20 82 42 20 83 46 21 84 43 21 85 44 21 86 36 22 87 26 22 88 25 22 89 2 23 90 33 23 91 35 23 92 80 24 93 55 24 94 65 24 95 63 25 96 53 25 97 54 25 98 32 26 99 29 26 100 53 26 101 18 27 102 16 27 103 0 27 104 50 28 105 57 28 106 51 28 107 67 29 108 55 29 109 56 29 110 6 10 111 5 10 112 4 10 113 5 27 114 50 27 115 24 27 116 83 4 117 76 4 118 82 4 119 7 4 120 1 4 121 5 4 122 4 4 123 2 4 124 0 4 125 79 30 126 68 30 127 70 30 128 68 24 129 63 24 130 54 24 131 43 23 132 3 23 133 7 23 134 64 24 135 73 24 136 72 24 137 24 31 138 22 31 139 23 31 140 9 22 141 19 22 142 8 22 143 61 32 144 56 32 145 53 32 146 80 10 147 75 10 148 74 10 149 27 33 150 68 33 151 30 33 152 80 34 153 65 34 154 14 34 155 61 35 156 12 35 157 15 35 158 10 36 159 13 36 160 77 36 161 71 37 162 69 37 163 8 37 164 59 38 165 62 38 166 28 38 167 26 39 168 31 39 169 74 39 170 13 40 171 10 40 172 22 40 173 13 41 174 49 41 175 51 41 176 50 42 177 51 42 178 49 42 179 0 3 180 1 3 181 3 3 182 44 41 183 42 41 184 30 41 185 39 40 186 27 40 187 30 40 188 36 4 189 25 4 190 28 4 191 57 43 192 52 43 193 60 43 194 20 44 195 23 44 196 22 44 197 21 45 198 19 45 199 18 45 200 11 4 201 8 4 202 19 4 203 22 46 204 10 46 205 11 46 206 58 47 207 14 47 208 15 47 209 9 10 210 14 10 211 58 10 212 60 48 213 16 48 214 17 48 215 18 49 216 19 49 217 17 49 218 15 13 219 12 13 220 51 13 221 28 46 222 27 46 223 39 46 224 32 47 225 31 47 226 47 47 227 47 10 228 31 10 229 26 10 230 44 13 231 29 13 232 32 13 233 39 50 234 40 50 235 37 50 236 46 51 237 47 51 238 48 51 239 35 52 240 33 52 241 34 52 242 43 53 243 41 53 244 42 53 245 35 54 246 36 54 247 38 54 248 34 55 249 33 55 250 48 55 251 41 56 252 40 56 253 39 56 254 46 57 255 45 57 256 43 57 257 36 22 258 34 22 259 26 22 260 37 23 261 40 23 262 6 23 263 2 23 264 3 23 265 48 23 266 2 23 267 48 23 268 33 23 269 37 23 270 6 23 271 35 23 272 6 23 273 2 23 274 35 23 275 80 58 276 74 58 277 55 58 278 63 59 279 61 59 280 53 59 281 29 60 282 30 60 283 54 60 284 54 61 285 53 61 286 29 61 287 53 62 288 56 62 289 32 62 290 56 63 291 55 63 292 32 63 293 55 64 294 31 64 295 32 64 296 16 27 297 60 27 298 0 27 299 60 27 300 1 27 301 0 27 302 4 27 303 23 27 304 20 27 305 4 27 306 20 27 307 18 27 308 0 27 309 4 27 310 18 27 311 50 65 312 52 65 313 57 65 314 67 66 315 65 66 316 55 66 317 6 10 318 7 10 319 5 10 320 23 27 321 4 27 322 24 27 323 4 27 324 5 27 325 24 27 326 1 27 327 60 27 328 52 27 329 1 27 330 52 27 331 50 27 332 5 27 333 1 27 334 50 27 335 83 4 336 78 4 337 76 4 338 7 4 339 3 4 340 1 4 341 4 4 342 6 4 343 2 4 344 79 67 345 77 67 346 68 67 347 68 68 348 77 68 349 63 68 350 7 23 351 6 23 352 41 23 353 6 23 354 40 23 355 41 23 356 45 23 357 48 23 358 3 23 359 7 23 360 41 23 361 43 23 362 43 69 363 45 69 364 3 69 365 64 24 366 66 24 367 73 24 368 24 70 369 49 70 370 22 70 371 9 22 372 17 22 373 19 22 374 61 24 375 67 24 376 56 24 377 80 10 378 81 10 379 75 10 380 27 71 381 62 71 382 70 71 383 70 72 384 68 72 385 27 72 386 68 73 387 54 73 388 30 73 389 14 74 390 9 74 391 80 74 392 9 75 393 69 75 394 81 75 395 80 76 396 9 76 397 81 76 398 61 77 399 63 77 400 12 77 401 63 78 402 13 78 403 12 78 404 65 79 405 67 79 406 15 79 407 67 80 408 61 80 409 15 80 410 15 81 411 14 81 412 65 81 413 63 82 414 77 82 415 13 82 416 77 83 417 79 83 418 10 83 419 79 84 420 71 84 421 10 84 422 11 23 423 10 23 424 71 23 425 69 23 426 9 23 427 8 23 428 8 85 429 11 85 430 71 85 431 25 27 432 26 27 433 59 27 434 62 27 435 27 27 436 28 27 437 28 86 438 25 86 439 59 86 440 31 87 441 55 87 442 74 87 443 74 88 444 75 88 445 26 88 446 75 89 447 59 89 448 26 89 449

    +
    +
    +
    +
    + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 7.54979e-8 -1 0 1.82539e-7 1 7.54979e-8 0 1.75 0 0 1 0.01755606 0 0 0 1 0.08690225 -0.9962168 0 1.82539e-7 0.9962168 0.08690225 0 1.75 0 0 1 0.01755606 0 0 0 1 0.3064026 -0.951902 0 1.82539e-7 0.951902 0.3064026 0 1.75 0 0 1 0.01755606 0 0 0 1 0.5796046 -0.8148978 0 1.82539e-7 0.8148978 0.5796046 0 1.75 0 0 1 0.01755606 0 0 0 1 0.8148978 -0.5796046 0 1.82539e-7 0.5796046 0.8148978 0 1.75 0 0 1 0.01755606 0 0 0 1 0.951902 -0.3064026 0 1.82539e-7 0.3064026 0.951902 0 1.75 0 0 1 0.01755606 0 0 0 1 0.9962168 -0.08690242 0 1.82539e-7 0.08690242 0.9962168 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.86265e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.040625 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.121875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.128125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.15 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.246175 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.4424 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0.712725 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1.0312 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1.371875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 1.7088 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.016025 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.2676 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.437575 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.040625 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.121875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.128125 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.15 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.246175 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.4424 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -0.712725 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -1.0312 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -1.371875 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -1.7088 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.016025 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.2676 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.437575 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 -2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + 0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25 + + + + + + + + 7.54979e-8 -1 0 1.82539e-7 1 7.54979e-8 0 1.75 0 0 1 0.01755606 0 0 0 1 0.08690225 -0.9962168 0 1.82539e-7 0.9962168 0.08690225 0 1.75 0 0 1 0.01755606 0 0 0 1 0.3064026 -0.951902 0 1.82539e-7 0.951902 0.3064026 0 1.75 0 0 1 0.01755606 0 0 0 1 0.5796046 -0.8148978 0 1.82539e-7 0.8148978 0.5796046 0 1.75 0 0 1 0.01755606 0 0 0 1 0.8148978 -0.5796046 0 1.82539e-7 0.5796046 0.8148978 0 1.75 0 0 1 0.01755606 0 0 0 1 0.951902 -0.3064026 0 1.82539e-7 0.3064026 0.951902 0 1.75 0 0 1 0.01755606 0 0 0 1 0.9962168 -0.08690242 0 1.82539e-7 0.08690242 0.9962168 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.82539e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.86265e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 1.78814e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR + + + + + + + + + + + + + + + + + + + 1 0 0 -2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + + + + + + 1 0 0 2.5 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + 1 1.19209e-7 0 2.38419e-7 -1.19209e-7 1 0 1.75 0 0 1 0.01755606 0 0 0 1 + + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 + + + + + + + + + + + + + + + +
    \ No newline at end of file diff --git a/src/main/resources/assets/hbm/models/machines/chimney_brick.obj b/src/main/resources/assets/hbm/models/machines/chimney_brick.obj new file mode 100644 index 000000000..81e719e26 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/chimney_brick.obj @@ -0,0 +1,704 @@ +# Blender v2.79 (sub 0) OBJ File: 'chimney_brick.blend' +# www.blender.org +o Plane +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 -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 1.500000 0.687500 0.187500 +v 1.500000 0.312500 0.187500 +v 1.500000 0.687500 -0.187500 +v 1.500000 0.312500 -0.187500 +v 1.500000 0.875000 0.375000 +v 1.500000 0.125000 0.375000 +v 1.500000 0.875000 -0.375000 +v 1.500000 0.125000 -0.375000 +v 1.375000 0.312500 0.187500 +v 1.375000 0.125000 0.375000 +v 1.375000 0.312500 -0.187500 +v 1.375000 0.125000 -0.375000 +v 1.375000 0.687500 -0.187500 +v 1.375000 0.875000 -0.375000 +v 1.375000 0.687500 0.187500 +v 1.375000 0.875000 0.375000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -1.500000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -1.500000 +v 0.375000 0.875000 -1.500000 +v 0.375000 0.125000 -1.500000 +v -0.375000 0.875000 -1.500000 +v -0.375000 0.125000 -1.500000 +v 0.187500 0.312500 -1.375000 +v 0.375000 0.125000 -1.375000 +v -0.187500 0.312500 -1.375000 +v -0.375000 0.125000 -1.375000 +v -0.187500 0.687500 -1.375000 +v -0.375000 0.875000 -1.375000 +v 0.187500 0.687500 -1.375000 +v 0.375000 0.875000 -1.375000 +v -1.500000 0.687500 -0.187500 +v -1.500000 0.312500 -0.187500 +v -1.500000 0.687500 0.187500 +v -1.500000 0.312500 0.187500 +v -1.500000 0.875000 -0.375000 +v -1.500000 0.125000 -0.375000 +v -1.500000 0.875000 0.375000 +v -1.500000 0.125000 0.375000 +v -1.375000 0.312500 -0.187500 +v -1.375000 0.125000 -0.375000 +v -1.375000 0.312500 0.187500 +v -1.375000 0.125000 0.375000 +v -1.375000 0.687500 0.187500 +v -1.375000 0.875000 0.375000 +v -1.375000 0.687500 -0.187500 +v -1.375000 0.875000 -0.375000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 1.500000 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 1.500000 +v -0.375000 0.875000 1.500000 +v -0.375000 0.125000 1.500000 +v 0.375000 0.875000 1.500000 +v 0.375000 0.125000 1.500000 +v -0.187500 0.312500 1.375000 +v -0.375000 0.125000 1.375000 +v 0.187500 0.312500 1.375000 +v 0.375000 0.125000 1.375000 +v 0.187500 0.687500 1.375000 +v 0.375000 0.875000 1.375000 +v -0.187500 0.687500 1.375000 +v -0.375000 0.875000 1.375000 +v 0.000000 2.000000 -1.250000 +v -0.478354 2.000000 -1.154849 +v -0.883883 2.000000 -0.883883 +v -1.154849 2.000000 -0.478354 +v -1.250000 2.000000 0.000000 +v -1.154849 2.000000 0.478354 +v -0.883883 2.000000 0.883883 +v -0.478354 2.000000 1.154849 +v -0.000000 2.000000 1.250000 +v 0.478354 2.000000 1.154850 +v 0.883883 2.000000 0.883884 +v 1.154849 2.000000 0.478354 +v 1.250000 2.000000 -0.000000 +v 1.154849 2.000000 -0.478355 +v 0.883883 2.000000 -0.883884 +v 0.478354 2.000000 -1.154850 +v 0.000000 13.000000 -0.750000 +v -0.287013 13.000000 -0.692910 +v -0.530330 13.000000 -0.530330 +v -0.692910 13.000000 -0.287013 +v -0.750000 13.000000 0.000000 +v -0.692910 13.000000 0.287013 +v -0.530330 13.000000 0.530330 +v -0.287013 13.000000 0.692910 +v -0.000000 13.000000 0.750000 +v 0.287012 13.000000 0.692910 +v 0.530330 13.000000 0.530330 +v 0.692910 13.000000 0.287013 +v 0.750000 13.000000 -0.000000 +v 0.692910 13.000000 -0.287013 +v 0.530330 13.000000 -0.530330 +v 0.287012 13.000000 -0.692910 +v -0.000000 13.000000 -0.500000 +v -0.191342 13.000000 -0.461940 +v -0.353553 13.000000 -0.353553 +v -0.461940 13.000000 -0.191342 +v -0.500000 13.000000 0.000000 +v -0.461940 13.000000 0.191342 +v -0.353553 13.000000 0.353553 +v -0.191342 13.000000 0.461940 +v -0.000000 13.000000 0.500000 +v 0.191342 13.000000 0.461940 +v 0.353553 13.000000 0.353554 +v 0.461940 13.000000 0.191342 +v 0.500000 13.000000 -0.000000 +v 0.461940 13.000000 -0.191342 +v 0.353553 13.000000 -0.353554 +v 0.191341 13.000000 -0.461940 +v -0.000000 11.000000 -0.500000 +v -0.191342 11.000000 -0.461940 +v -0.353553 11.000000 -0.353553 +v -0.461940 11.000000 -0.191342 +v -0.500000 11.000000 0.000000 +v -0.461940 11.000000 0.191342 +v -0.353553 11.000000 0.353553 +v -0.191342 11.000000 0.461940 +v -0.000000 11.000000 0.500000 +v 0.191342 11.000000 0.461940 +v 0.353553 11.000000 0.353554 +v 0.461940 11.000000 0.191342 +v 0.500000 11.000000 -0.000000 +v 0.461940 11.000000 -0.191342 +v 0.353553 11.000000 -0.353554 +v 0.191341 11.000000 -0.461940 +vt 0.272727 0.000000 +vt 0.000000 0.265193 +vt 0.000000 0.000000 +vt 0.000000 0.441989 +vt 0.272727 0.707182 +vt 0.000000 0.707182 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.181818 0.895028 +vt 0.130682 0.911602 +vt 0.113636 0.895028 +vt 0.130682 0.955801 +vt 0.119318 0.922652 +vt 0.130682 0.922652 +vt 0.164773 0.922652 +vt 0.176136 0.955801 +vt 0.164773 0.955801 +vt 0.090909 0.906077 +vt 0.102273 0.972376 +vt 0.090909 0.972376 +vt 0.204545 0.972376 +vt 0.193182 0.906077 +vt 0.204545 0.906077 +vt 0.113636 0.983425 +vt 0.164773 0.966851 +vt 0.181818 0.983425 +vt 0.193182 0.972376 +vt 0.176136 0.922652 +vt 0.102273 0.906077 +vt 0.181818 0.883978 +vt 0.113636 0.883978 +vt 0.113636 0.994475 +vt 0.181818 0.994475 +vt 0.164773 0.911602 +vt 0.130682 0.966851 +vt 0.272727 0.265193 +vt 0.102273 0.276243 +vt 0.102273 0.342541 +vt 0.272727 0.441989 +vt 0.102273 0.342541 +vt 0.272727 0.441989 +vt -0.000000 0.441989 +vt 0.272727 0.265193 +vt 0.102273 0.276243 +vt -0.000000 0.265193 +vt 0.170455 0.342541 +vt 0.170455 0.276243 +vt 0.170455 0.342541 +vt 0.102273 0.342541 +vt 0.272727 0.441989 +vt -0.000000 0.441989 +vt 0.272727 0.265193 +vt 0.170455 0.342541 +vt 0.170455 0.276243 +vt 0.102273 0.276243 +vt -0.000000 0.265193 +vt 0.272727 0.265193 +vt 0.102273 0.276243 +vt -0.000000 0.265193 +vt 0.170455 0.342541 +vt 0.272727 0.441989 +vt 0.102273 0.342541 +vt -0.000000 0.441989 +vt 0.630682 0.972376 +vt 0.607955 1.000000 +vt 0.602273 0.972376 +vt 0.647727 0.972376 +vt 0.670455 1.000000 +vt 0.653409 1.000000 +vt 0.721591 0.972376 +vt 0.698864 1.000000 +vt 0.693182 0.972376 +vt 0.767045 0.972376 +vt 0.744318 1.000000 +vt 0.738636 0.972376 +vt 0.812500 0.972376 +vt 0.789773 1.000000 +vt 0.784091 0.972376 +vt 0.857955 0.972376 +vt 0.835227 1.000000 +vt 0.829545 0.972376 +vt 0.903409 0.972376 +vt 0.880682 1.000000 +vt 0.875000 0.972376 +vt 0.948864 0.972376 +vt 0.926136 1.000000 +vt 0.920455 0.972376 +vt 0.994318 0.972376 +vt 0.971591 1.000000 +vt 0.965909 0.972376 +vt 0.312500 0.972376 +vt 0.289773 1.000000 +vt 0.284091 0.972376 +vt 0.329545 0.972376 +vt 0.352273 1.000000 +vt 0.335227 1.000000 +vt 0.375000 0.972376 +vt 0.397727 1.000000 +vt 0.380682 1.000000 +vt 0.420455 0.972376 +vt 0.443182 1.000000 +vt 0.426136 1.000000 +vt 0.465909 0.972376 +vt 0.488636 1.000000 +vt 0.471591 1.000000 +vt 0.511364 0.972376 +vt 0.534091 1.000000 +vt 0.517045 1.000000 +vt 0.585227 0.972376 +vt 0.562500 1.000000 +vt 0.556818 0.972376 +vt 0.090053 0.936803 +vt 0.070717 0.964941 +vt 0.036583 0.971543 +vt 0.119318 0.955801 +vt 0.119318 0.955801 +vt 0.119318 0.955801 +vt 0.119318 0.955801 +vt 0.170455 0.276243 +vt 0.170455 0.276243 +vt 0.625000 1.000000 +vt 0.676136 0.972376 +vt 0.715909 1.000000 +vt 0.761364 1.000000 +vt 0.806818 1.000000 +vt 0.852273 1.000000 +vt 0.897727 1.000000 +vt 0.943182 1.000000 +vt 0.988636 1.000000 +vt 0.306818 1.000000 +vt 0.357955 0.972376 +vt 0.403409 0.972376 +vt 0.448864 0.972376 +vt 0.494318 0.972376 +vt 0.539773 0.972376 +vt 0.579545 1.000000 +vt 0.020192 0.964941 +vt 0.007646 0.952742 +vt 0.000856 0.936803 +vt 0.000856 0.919551 +vt 0.007646 0.903612 +vt 0.020192 0.891413 +vt 0.036583 0.884810 +vt 0.054326 0.884810 +vt 0.070717 0.891413 +vt 0.083263 0.903612 +vt 0.090053 0.919551 +vt 0.083263 0.952742 +vt 0.054326 0.971543 +vt 0.681818 -0.000000 +vt 0.636364 -0.000000 +vt 0.727273 -0.000000 +vt 0.772727 -0.000000 +vt 0.818182 0.000000 +vt 0.863636 0.000000 +vt 0.909091 0.000000 +vt 0.954545 0.000000 +vt 1.000000 -0.000000 +vt 0.318182 0.000000 +vt 0.272727 0.000000 +vt 0.363636 0.000000 +vt 0.409091 -0.000000 +vt 0.454545 -0.000000 +vt 0.500000 0.000000 +vt 0.545455 0.000000 +vt 0.590909 0.000000 +vt 0.102273 0.707182 +vt 0.085227 0.883978 +vt 0.085227 0.707182 +vt 0.255682 0.707182 +vt 0.238636 0.883978 +vt 0.238636 0.707182 +vt 0.119318 0.707182 +vt 0.102273 0.883978 +vt 0.272727 0.707182 +vt 0.255682 0.883978 +vt 0.136364 0.707182 +vt 0.119318 0.883978 +vt 0.017045 0.707182 +vt 0.000000 0.883978 +vt -0.000000 0.707182 +vt 0.153409 0.707182 +vt 0.136364 0.883978 +vt 0.034091 0.707182 +vt 0.017045 0.883978 +vt 0.170455 0.707182 +vt 0.153409 0.883978 +vt 0.051136 0.707182 +vt 0.034091 0.883978 +vt 0.187500 0.707182 +vt 0.170455 0.883978 +vt 0.068182 0.707182 +vt 0.051136 0.883978 +vt 0.221591 0.707182 +vt 0.204545 0.883978 +vt 0.204545 0.707182 +vt 0.187500 0.883978 +vt 0.068182 0.883978 +vt 0.221591 0.883978 +vt 0.272727 0.883978 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.9229 0.0454 -0.3823 +vn 0.9990 0.0454 0.0000 +vn 0.7064 0.0454 -0.7064 +vn 0.3823 0.0454 -0.9229 +vn -0.0000 0.0454 -0.9990 +vn -0.3823 0.0454 -0.9229 +vn -0.7064 0.0454 -0.7064 +vn -0.9229 0.0454 -0.3823 +vn -0.9990 0.0454 0.0000 +vn -0.9229 0.0454 0.3823 +vn -0.7064 0.0454 0.7064 +vn -0.3823 0.0454 0.9229 +vn 0.0000 0.0454 0.9990 +vn 0.3823 0.0454 0.9229 +vn 0.7064 0.0454 0.7064 +vn 0.9229 0.0454 0.3823 +vn -0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 -0.9239 +vn 0.9239 0.0000 0.3827 +vn 0.7071 0.0000 0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 0.9239 +s off +f 3/1/1 2/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 20/7/3 17/8/3 18/9/3 +f 9/10/4 17/11/4 10/12/4 +f 12/13/5 21/14/5 11/15/5 +f 14/16/5 24/17/5 13/18/5 +f 10/12/3 11/15/3 9/10/3 +f 15/19/4 20/20/4 16/21/4 +f 24/22/3 21/23/3 22/24/3 +f 22/25/3 19/26/3 20/20/3 +f 17/11/3 24/17/3 18/27/3 +f 16/28/2 18/9/2 14/29/2 +f 13/30/1 22/24/1 15/31/1 +f 10/12/1 19/32/1 12/13/1 +f 11/15/2 23/33/2 9/10/2 +f 36/34/5 33/35/5 34/36/5 +f 25/37/3 33/38/3 26/39/3 +f 28/40/6 37/41/6 27/42/6 +f 30/43/6 40/44/6 29/45/6 +f 26/39/5 27/42/5 25/37/5 +f 31/46/3 36/47/3 32/48/3 +f 40/49/5 37/50/5 38/51/5 +f 38/52/5 35/53/5 36/47/5 +f 33/38/5 40/44/5 34/54/5 +f 32/55/2 34/36/2 30/56/2 +f 29/57/1 38/51/1 31/58/1 +f 26/39/1 35/59/1 28/40/1 +f 27/42/2 39/60/2 25/37/2 +f 52/61/6 49/62/6 50/63/6 +f 41/64/5 49/65/5 42/66/5 +f 44/67/4 53/68/4 43/69/4 +f 46/70/4 56/71/4 45/72/4 +f 42/66/6 43/69/6 41/64/6 +f 47/73/5 52/74/5 48/75/5 +f 56/76/6 53/77/6 54/78/6 +f 54/79/6 51/80/6 52/74/6 +f 49/65/6 56/71/6 50/81/6 +f 48/82/2 50/63/2 46/83/2 +f 45/84/1 54/78/1 47/85/1 +f 42/66/1 51/86/1 44/67/1 +f 43/69/2 55/87/2 41/64/2 +f 68/88/4 65/89/4 66/90/4 +f 57/91/6 65/92/6 58/93/6 +f 60/94/3 69/95/3 59/96/3 +f 62/97/3 72/98/3 61/99/3 +f 58/93/4 59/96/4 57/91/4 +f 63/100/6 68/101/6 64/102/6 +f 72/103/4 69/104/4 70/105/4 +f 70/106/4 67/107/4 68/101/4 +f 65/92/4 72/98/4 66/108/4 +f 64/109/2 66/90/2 62/110/2 +f 61/111/1 70/105/1 63/112/1 +f 58/93/1 67/113/1 60/94/1 +f 59/96/2 71/114/2 57/91/2 +f 4/115/3 14/116/3 2/2/3 +f 13/117/3 8/118/3 6/4/3 +f 45/119/6 5/120/6 7/121/6 +f 1/122/6 46/123/6 3/124/6 +f 45/119/6 3/124/6 46/123/6 +f 1/122/6 47/125/6 48/126/6 +f 13/117/3 2/2/3 14/116/3 +f 15/127/3 4/115/3 8/118/3 +f 29/128/5 7/129/5 8/130/5 +f 3/131/5 31/132/5 32/133/5 +f 3/131/5 30/134/5 4/135/5 +f 29/128/5 4/135/5 30/134/5 +f 2/136/4 62/137/4 1/138/4 +f 63/139/4 2/136/4 6/140/4 +f 61/141/4 6/140/4 5/142/4 +f 61/141/4 1/138/4 62/137/4 +f 101/143/2 116/144/2 100/145/2 +f 101/146/2 118/147/2 117/148/2 +f 103/149/2 118/150/2 102/151/2 +f 104/152/2 119/153/2 103/154/2 +f 89/155/2 120/156/2 104/157/2 +f 90/158/2 105/159/2 89/160/2 +f 91/161/2 106/162/2 90/163/2 +f 92/164/2 107/165/2 91/166/2 +f 93/167/2 108/168/2 92/169/2 +f 94/170/2 109/171/2 93/172/2 +f 94/173/2 111/174/2 110/175/2 +f 95/176/2 112/177/2 111/178/2 +f 96/179/2 113/180/2 112/181/2 +f 97/182/2 114/183/2 113/184/2 +f 98/185/2 115/186/2 114/187/2 +f 100/188/2 115/189/2 99/190/2 +f 133/191/2 135/192/2 121/193/2 +f 3/1/1 4/115/1 2/2/1 +f 6/4/2 8/118/2 7/5/2 +f 20/7/3 19/32/3 17/8/3 +f 9/10/4 23/194/4 17/11/4 +f 12/13/5 19/26/5 21/14/5 +f 14/16/5 18/27/5 24/17/5 +f 10/12/3 12/13/3 11/15/3 +f 15/19/4 22/25/4 20/20/4 +f 24/22/3 23/33/3 21/23/3 +f 22/25/3 21/14/3 19/26/3 +f 17/11/3 23/194/3 24/17/3 +f 16/28/2 20/7/2 18/9/2 +f 13/30/1 24/22/1 22/24/1 +f 10/12/1 17/8/1 19/32/1 +f 11/15/2 21/23/2 23/33/2 +f 36/34/5 35/59/5 33/35/5 +f 25/37/3 39/195/3 33/38/3 +f 28/40/6 35/53/6 37/41/6 +f 30/43/6 34/54/6 40/44/6 +f 26/39/5 28/40/5 27/42/5 +f 31/46/3 38/52/3 36/47/3 +f 40/49/5 39/60/5 37/50/5 +f 38/52/5 37/41/5 35/53/5 +f 33/38/5 39/195/5 40/44/5 +f 32/55/2 36/34/2 34/36/2 +f 29/57/1 40/49/1 38/51/1 +f 26/39/1 33/35/1 35/59/1 +f 27/42/2 37/50/2 39/60/2 +f 52/61/6 51/86/6 49/62/6 +f 41/64/5 55/196/5 49/65/5 +f 44/67/4 51/80/4 53/68/4 +f 46/70/4 50/81/4 56/71/4 +f 42/66/6 44/67/6 43/69/6 +f 47/73/5 54/79/5 52/74/5 +f 56/76/6 55/87/6 53/77/6 +f 54/79/6 53/68/6 51/80/6 +f 49/65/6 55/196/6 56/71/6 +f 48/82/2 52/61/2 50/63/2 +f 45/84/1 56/76/1 54/78/1 +f 42/66/1 49/62/1 51/86/1 +f 43/69/2 53/77/2 55/87/2 +f 68/88/4 67/113/4 65/89/4 +f 57/91/6 71/197/6 65/92/6 +f 60/94/3 67/107/3 69/95/3 +f 62/97/3 66/108/3 72/98/3 +f 58/93/4 60/94/4 59/96/4 +f 63/100/6 70/106/6 68/101/6 +f 72/103/4 71/114/4 69/104/4 +f 70/106/4 69/95/4 67/107/4 +f 65/92/4 71/197/4 72/98/4 +f 64/109/2 68/88/2 66/90/2 +f 61/111/1 72/103/1 70/105/1 +f 58/93/1 65/89/1 67/113/1 +f 59/96/2 69/104/2 71/114/2 +f 4/115/3 16/198/3 14/116/3 +f 13/117/3 15/127/3 8/118/3 +f 45/119/6 47/125/6 5/120/6 +f 1/122/6 48/126/6 46/123/6 +f 45/119/6 7/121/6 3/124/6 +f 1/122/6 5/120/6 47/125/6 +f 13/117/3 6/4/3 2/2/3 +f 15/127/3 16/198/3 4/115/3 +f 29/128/5 31/132/5 7/129/5 +f 3/131/5 7/129/5 31/132/5 +f 3/131/5 32/133/5 30/134/5 +f 29/128/5 8/130/5 4/135/5 +f 2/136/4 64/199/4 62/137/4 +f 63/139/4 64/199/4 2/136/4 +f 61/141/4 63/139/4 6/140/4 +f 61/141/4 5/142/4 1/138/4 +f 101/143/2 117/200/2 116/144/2 +f 101/146/2 102/201/2 118/147/2 +f 103/149/2 119/202/2 118/150/2 +f 104/152/2 120/203/2 119/153/2 +f 89/155/2 105/204/2 120/156/2 +f 90/158/2 106/205/2 105/159/2 +f 91/161/2 107/206/2 106/162/2 +f 92/164/2 108/207/2 107/165/2 +f 93/167/2 109/208/2 108/168/2 +f 94/170/2 110/209/2 109/171/2 +f 94/173/2 95/210/2 111/174/2 +f 95/176/2 96/211/2 112/177/2 +f 96/179/2 97/212/2 113/180/2 +f 97/182/2 98/213/2 114/183/2 +f 98/185/2 99/214/2 115/186/2 +f 100/188/2 116/215/2 115/189/2 +f 121/193/2 122/216/2 123/217/2 +f 123/217/2 124/218/2 125/219/2 +f 125/219/2 126/220/2 127/221/2 +f 127/221/2 128/222/2 129/223/2 +f 129/223/2 130/224/2 131/225/2 +f 131/225/2 132/226/2 133/191/2 +f 133/191/2 134/227/2 135/192/2 +f 135/192/2 136/228/2 121/193/2 +f 121/193/2 123/217/2 125/219/2 +f 125/219/2 127/221/2 121/193/2 +f 127/221/2 129/223/2 121/193/2 +f 129/223/2 131/225/2 121/193/2 +f 131/225/2 133/191/2 121/193/2 +s 1 +f 86/229/7 101/146/8 85/230/8 +f 87/231/9 102/151/7 86/229/7 +f 88/232/10 103/154/9 87/231/9 +f 73/233/11 104/157/10 88/232/10 +f 74/234/12 89/160/11 73/233/11 +f 75/235/13 90/163/12 74/234/12 +f 76/236/14 91/166/13 75/235/13 +f 77/237/15 92/169/14 76/236/14 +f 78/238/16 93/172/15 77/239/15 +f 79/240/17 94/173/16 78/238/16 +f 80/241/18 95/176/17 79/240/17 +f 81/242/19 96/179/18 80/241/18 +f 82/243/20 97/182/19 81/242/19 +f 83/244/21 98/185/20 82/243/20 +f 84/245/22 99/190/21 83/244/21 +f 85/230/8 100/145/22 84/245/22 +f 115/246/23 130/247/24 114/248/24 +f 108/249/25 123/250/26 107/251/26 +f 116/252/27 131/253/23 115/246/23 +f 109/254/3 124/255/25 108/249/25 +f 117/256/6 132/257/27 116/252/27 +f 110/258/28 125/259/3 109/260/3 +f 118/261/29 133/262/6 117/256/6 +f 111/263/30 126/264/28 110/258/28 +f 119/265/31 134/266/29 118/261/29 +f 112/267/32 127/268/30 111/263/30 +f 120/269/33 135/270/31 119/265/31 +f 113/271/5 128/272/32 112/267/32 +f 106/273/34 121/274/4 105/275/4 +f 105/275/4 136/276/33 120/269/33 +f 114/248/24 129/277/5 113/271/5 +f 107/251/26 122/278/34 106/273/34 +f 86/229/7 102/201/7 101/146/8 +f 87/231/9 103/149/9 102/151/7 +f 88/232/10 104/152/10 103/154/9 +f 73/233/11 89/155/11 104/157/10 +f 74/234/12 90/158/12 89/160/11 +f 75/235/13 91/161/13 90/163/12 +f 76/236/14 92/164/14 91/166/13 +f 77/237/15 93/167/15 92/169/14 +f 78/238/16 94/170/16 93/172/15 +f 79/240/17 95/210/17 94/173/16 +f 80/241/18 96/211/18 95/176/17 +f 81/242/19 97/212/19 96/179/18 +f 82/243/20 98/213/20 97/182/19 +f 83/244/21 99/214/21 98/185/20 +f 84/245/22 100/188/22 99/190/21 +f 85/230/8 101/143/8 100/145/22 +f 115/246/23 131/253/23 130/247/24 +f 108/249/25 124/255/25 123/250/26 +f 116/252/27 132/257/27 131/253/23 +f 109/254/3 125/279/3 124/255/25 +f 117/256/6 133/262/6 132/257/27 +f 110/258/28 126/264/28 125/259/3 +f 118/261/29 134/266/29 133/262/6 +f 111/263/30 127/268/30 126/264/28 +f 119/265/31 135/270/31 134/266/29 +f 112/267/32 128/272/32 127/268/30 +f 120/269/33 136/276/33 135/270/31 +f 113/271/5 129/277/5 128/272/32 +f 106/273/34 122/278/34 121/274/4 +f 105/275/4 121/274/4 136/276/33 +f 114/248/24 130/247/24 129/277/5 +f 107/251/26 123/250/26 122/278/34 diff --git a/src/main/resources/assets/hbm/models/machines/coker.obj b/src/main/resources/assets/hbm/models/machines/coker.obj new file mode 100644 index 000000000..da766fdfd --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/coker.obj @@ -0,0 +1,2787 @@ +# Blender v2.79 (sub 0) OBJ File: 'coker.blend' +# www.blender.org +o Plane +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 -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -2.500000 2.000000 2.500000 +v 2.500000 2.000000 2.500000 +v -2.500000 2.000000 -2.500000 +v 2.500000 2.000000 -2.500000 +v -2.500000 4.000000 -2.500000 +v -2.500000 4.000000 2.500000 +v 2.500000 4.000000 2.500000 +v 2.500000 4.000000 -2.500000 +v -1.500000 5.000000 -1.500000 +v -1.500000 5.000000 1.500000 +v 1.500000 5.000000 1.500000 +v 1.500000 5.000000 -1.500000 +v -1.500000 7.000000 -1.500000 +v -1.500000 7.000000 1.500000 +v 1.500000 7.000000 1.500000 +v 1.500000 7.000000 -1.500000 +v 2.500000 2.000000 2.500000 +v 2.500000 0.000000 2.500000 +v 2.500000 2.000000 2.125000 +v 2.500000 0.000000 2.125000 +v 2.125000 2.000000 2.500000 +v 2.125000 0.000000 2.500000 +v 2.125000 2.000000 2.125000 +v 2.125000 0.000000 2.125000 +v 2.500000 2.000000 -2.125000 +v 2.500000 0.000000 -2.125000 +v 2.500000 2.000000 -2.500000 +v 2.500000 0.000000 -2.500000 +v 2.125000 2.000000 -2.125000 +v 2.125000 0.000000 -2.125000 +v 2.125000 2.000000 -2.500000 +v 2.125000 0.000000 -2.500000 +v -2.125000 2.000000 2.500000 +v -2.125000 0.000000 2.500000 +v -2.125000 2.000000 2.125000 +v -2.125000 0.000000 2.125000 +v -2.500000 2.000000 2.500000 +v -2.500000 0.000000 2.500000 +v -2.500000 2.000000 2.125000 +v -2.500000 0.000000 2.125000 +v -2.125000 2.000000 -2.125000 +v -2.125000 0.000000 -2.125000 +v -2.125000 2.000000 -2.500000 +v -2.125000 0.000000 -2.500000 +v -2.500000 2.000000 -2.125000 +v -2.500000 0.000000 -2.125000 +v -2.500000 2.000000 -2.500000 +v -2.500000 0.000000 -2.500000 +v 2.500000 7.000000 2.500000 +v 2.500000 4.000000 2.500000 +v 2.500000 7.000000 2.125000 +v 2.500000 4.000000 2.125000 +v 2.125000 7.000000 2.500000 +v 2.125000 4.000000 2.500000 +v 2.125000 7.000000 2.125000 +v 2.125000 4.000000 2.125000 +v 2.500000 7.000000 -2.125000 +v 2.500000 4.000000 -2.125000 +v 2.500000 7.000000 -2.500000 +v 2.500000 4.000000 -2.500000 +v 2.125000 7.000000 -2.125000 +v 2.125000 4.000000 -2.125000 +v 2.125000 7.000000 -2.500000 +v 2.125000 4.000000 -2.500000 +v -2.125000 7.000000 2.500000 +v -2.125000 4.000000 2.500000 +v -2.125000 7.000000 2.125000 +v -2.125000 4.000000 2.125000 +v -2.500000 7.000000 2.500000 +v -2.500000 4.000000 2.500000 +v -2.500000 7.000000 2.125000 +v -2.500000 4.000000 2.125000 +v -2.125000 7.000000 -2.125000 +v -2.125000 4.000000 -2.125000 +v -2.125000 7.000000 -2.500000 +v -2.125000 4.000000 -2.500000 +v -2.500000 7.000000 -2.125000 +v -2.500000 4.000000 -2.125000 +v -2.500000 7.000000 -2.500000 +v -2.500000 4.000000 -2.500000 +v 2.125000 1.250000 -2.125000 +v 2.125000 1.250000 -2.500000 +v -2.125000 1.250000 -2.125000 +v -2.125000 1.250000 -2.500000 +v 2.125000 1.625000 -2.125000 +v 2.125000 1.625000 -2.500000 +v -2.125000 1.625000 -2.500000 +v -2.125000 1.625000 -2.125000 +v 2.125000 1.250000 2.500000 +v 2.125000 1.250000 2.125000 +v -2.125000 1.250000 2.500000 +v -2.125000 1.250000 2.125000 +v 2.125000 1.625000 2.500000 +v 2.125000 1.625000 2.125000 +v -2.125000 1.625000 2.125000 +v -2.125000 1.625000 2.500000 +v -2.125000 1.250000 -2.125000 +v -2.500000 1.250000 -2.125000 +v -2.125000 1.250000 2.125000 +v -2.500000 1.250000 2.125000 +v -2.125000 1.625000 -2.125000 +v -2.500000 1.625000 -2.125000 +v -2.500000 1.625000 2.125000 +v -2.125000 1.625000 2.125000 +v 2.500000 1.250000 -2.125000 +v 2.125000 1.250000 -2.125000 +v 2.500000 1.250000 2.125000 +v 2.125000 1.250000 2.125000 +v 2.500000 1.625000 -2.125000 +v 2.125000 1.625000 -2.125000 +v 2.125000 1.625000 2.125000 +v 2.500000 1.625000 2.125000 +v 2.500000 7.000000 2.500000 +v 2.500000 7.000000 -2.500000 +v -2.500000 7.000000 2.500000 +v -2.500000 7.000000 -2.500000 +v -1.500000 7.000000 -1.500000 +v -1.500000 7.000000 1.500000 +v 1.500000 7.000000 1.500000 +v 1.500000 7.000000 -1.500000 +v 2.500000 6.750000 2.500000 +v 2.500000 6.750000 -2.500000 +v -2.500000 6.750000 2.500000 +v -2.500000 6.750000 -2.500000 +v -1.500000 6.750000 -1.500000 +v -1.500000 6.750000 1.500000 +v 1.500000 6.750000 1.500000 +v 1.500000 6.750000 -1.500000 +v 2.500000 7.000000 2.125000 +v 2.500000 7.000000 -2.125000 +v 2.500000 6.750000 2.125000 +v 2.500000 6.750000 -2.125000 +v 2.125000 7.000000 -2.500000 +v -2.125000 7.000000 -2.500000 +v 2.125000 6.750000 -2.500000 +v -2.125000 6.750000 -2.500000 +v -2.500000 7.000000 -2.125000 +v -2.500000 7.000000 2.125000 +v -2.500000 6.750000 -2.125000 +v -2.500000 6.750000 2.125000 +v -2.125000 7.000000 2.500000 +v 2.125000 7.000000 2.500000 +v -2.125000 6.750000 2.500000 +v 2.125000 6.750000 2.500000 +v 2.125000 4.375000 -2.125000 +v 2.125000 4.375000 -2.500000 +v -2.125000 4.375000 -2.125000 +v -2.125000 4.375000 -2.500000 +v 2.125000 4.750000 -2.125000 +v 2.125000 4.750000 -2.500000 +v -2.125000 4.750000 -2.500000 +v -2.125000 4.750000 -2.125000 +v 2.125000 4.375000 2.500000 +v 2.125000 4.375000 2.125000 +v -2.125000 4.375000 2.500000 +v -2.125000 4.375000 2.125000 +v 2.125000 4.750000 2.500000 +v 2.125000 4.750000 2.125000 +v -2.125000 4.750000 2.125000 +v -2.125000 4.750000 2.500000 +v -2.125000 4.375000 -2.125000 +v -2.500000 4.375000 -2.125000 +v -2.125000 4.375000 2.125000 +v -2.500000 4.375000 2.125000 +v -2.125000 4.750000 -2.125000 +v -2.500000 4.750000 -2.125000 +v -2.500000 4.750000 2.125000 +v -2.125000 4.750000 2.125000 +v 2.500000 4.375000 -2.125000 +v 2.125000 4.375000 -2.125000 +v 2.500000 4.375000 2.125000 +v 2.125000 4.375000 2.125000 +v 2.500000 4.750000 -2.125000 +v 2.125000 4.750000 -2.125000 +v 2.125000 4.750000 2.125000 +v 2.500000 4.750000 2.125000 +v 0.000000 7.000000 -1.250000 +v -0.478354 7.000000 -1.154849 +v -0.883883 7.000000 -0.883883 +v -1.154849 7.000000 -0.478354 +v -1.250000 7.000000 0.000000 +v -1.154849 7.000000 0.478354 +v -0.883883 7.000000 0.883883 +v -0.478354 7.000000 1.154849 +v 0.000000 7.000000 1.250000 +v 0.478354 7.000000 1.154850 +v 0.883883 7.000000 0.883884 +v 1.154849 7.000000 0.478354 +v 1.250000 7.000000 -0.000000 +v 1.154849 7.000000 -0.478355 +v 0.883883 7.000000 -0.883884 +v 0.478354 7.000000 -1.154850 +v 0.000000 23.000000 -1.250000 +v -0.478354 23.000000 -1.154849 +v -0.883883 23.000000 -0.883883 +v -1.154849 23.000000 -0.478354 +v -1.250000 23.000000 0.000000 +v -1.154849 23.000000 0.478354 +v -0.883883 23.000000 0.883883 +v -0.478354 23.000000 1.154849 +v 0.000000 23.000000 1.250000 +v 0.478354 23.000000 1.154850 +v 0.883883 23.000000 0.883884 +v 1.154849 23.000000 0.478354 +v 1.250000 23.000000 -0.000000 +v 1.154849 23.000000 -0.478355 +v 0.883883 23.000000 -0.883884 +v 0.478354 23.000000 -1.154850 +v 0.000000 23.000000 -1.000000 +v -0.382684 23.000000 -0.923880 +v -0.707107 23.000000 -0.707107 +v -0.923880 23.000000 -0.382683 +v -1.000000 23.000000 0.000000 +v -0.923880 23.000000 0.382684 +v -0.707107 23.000000 0.707107 +v -0.382684 23.000000 0.923880 +v 0.000000 23.000000 1.000000 +v 0.382683 23.000000 0.923880 +v 0.707107 23.000000 0.707107 +v 0.923880 23.000000 0.382684 +v 1.000000 23.000000 -0.000000 +v 0.923880 23.000000 -0.382684 +v 0.707107 23.000000 -0.707107 +v 0.382683 23.000000 -0.923880 +v -2.000000 16.875000 2.000000 +v 2.000000 16.875000 2.000000 +v -2.000000 16.875000 -2.000000 +v 2.000000 16.875000 -2.000000 +v -2.000000 17.125000 -2.000000 +v -2.000000 17.125000 2.000000 +v 2.000000 17.125000 2.000000 +v 2.000000 17.125000 -2.000000 +v -2.000000 11.875000 2.000000 +v 2.000000 11.875000 2.000000 +v -2.000000 11.875000 -2.000000 +v 2.000000 11.875000 -2.000000 +v -2.000000 12.125000 -2.000000 +v -2.000000 12.125000 2.000000 +v 2.000000 12.125000 2.000000 +v 2.000000 12.125000 -2.000000 +v -1.750000 21.375000 1.750000 +v 1.750000 21.375000 1.750000 +v -1.750000 21.375000 -1.750000 +v 1.750000 21.375000 -1.750000 +v -1.750000 21.625000 -1.750000 +v -1.750000 21.625000 1.750000 +v 1.750000 21.625000 1.750000 +v 1.750000 21.625000 -1.750000 +v -1.500000 16.875000 -1.500000 +v -1.875000 7.000000 -1.875000 +v -1.500000 16.875000 -1.000000 +v -1.875000 7.000000 -1.375000 +v -1.000000 16.875000 -1.500000 +v -1.375000 7.000000 -1.875000 +v -1.000000 16.875000 -1.000000 +v -1.375000 7.000000 -1.375000 +v -1.500000 16.875000 1.000000 +v -1.875000 7.000000 1.375000 +v -1.500000 16.875000 1.500000 +v -1.875000 7.000000 1.875000 +v -1.000000 16.875000 1.000000 +v -1.375000 7.000000 1.375000 +v -1.000000 16.875000 1.500000 +v -1.375000 7.000000 1.875000 +v 1.000000 16.875000 -1.500000 +v 1.375000 7.000000 -1.875000 +v 1.000000 16.875000 -1.000000 +v 1.375000 7.000000 -1.375000 +v 1.500000 16.875000 -1.500000 +v 1.875000 7.000000 -1.875000 +v 1.500000 16.875000 -1.000000 +v 1.875000 7.000000 -1.375000 +v 1.000000 16.875000 1.000000 +v 1.375000 7.000000 1.375000 +v 1.000000 16.875000 1.500000 +v 1.375000 7.000000 1.875000 +v 1.500000 16.875000 1.000000 +v 1.875000 7.000000 1.375000 +v 1.500000 16.875000 1.500000 +v 1.875000 7.000000 1.875000 +v -2.000000 12.125000 -2.000000 +v -2.000000 12.125000 2.000000 +v 2.000000 12.125000 2.000000 +v 2.000000 12.125000 -2.000000 +v -2.000000 13.125000 -2.000000 +v -2.000000 13.125000 2.000000 +v 2.000000 13.125000 2.000000 +v 2.000000 13.125000 -2.000000 +v -2.000000 17.125000 -2.000000 +v -2.000000 17.125000 2.000000 +v 2.000000 17.125000 2.000000 +v 2.000000 17.125000 -2.000000 +v -2.000000 18.125000 -2.000000 +v -2.000000 18.125000 2.000000 +v 2.000000 18.125000 2.000000 +v 2.000000 18.125000 -2.000000 +v -1.750000 21.625000 -1.750000 +v -1.750000 21.625000 1.750000 +v 1.750000 21.625000 1.750000 +v 1.750000 21.625000 -1.750000 +v -1.750000 22.125000 -1.750000 +v -1.750000 22.125000 1.750000 +v 1.750000 22.125000 1.750000 +v 1.750000 22.125000 -1.750000 +v -0.751301 21.375000 1.370019 +v -1.370020 21.375000 0.751301 +v -0.486135 19.834999 1.104854 +v -1.104855 19.834999 0.486136 +v 0.000000 22.000000 -1.000000 +v -0.382684 22.000000 -0.923880 +v -0.707107 22.000000 -0.707107 +v -0.923880 22.000000 -0.382683 +v -1.000000 22.000000 0.000000 +v -0.923880 22.000000 0.382684 +v -0.707107 22.000000 0.707107 +v -0.382684 22.000000 0.923880 +v 0.000000 22.000000 1.000000 +v 0.382683 22.000000 0.923880 +v 0.707107 22.000000 0.707107 +v 0.923880 22.000000 0.382684 +v 1.000000 22.000000 -0.000000 +v 0.923880 22.000000 -0.382684 +v 0.707107 22.000000 -0.707107 +v 0.382683 22.000000 -0.923880 +v 0.751301 21.375000 -1.370020 +v 1.370019 21.375000 -0.751301 +v 0.486135 19.834999 -1.104854 +v 1.104855 19.834999 -0.486136 +v 1.370019 21.375000 0.751301 +v 0.751301 21.375000 1.370019 +v 1.104855 19.834999 0.486136 +v 0.486135 19.834999 1.104854 +v -1.370020 21.375000 -0.751301 +v -0.751301 21.375000 -1.370019 +v -1.104855 19.834999 -0.486136 +v -0.486136 19.834999 -1.104854 +v -1.875000 4.500000 -1.875000 +v -1.875000 4.500000 -1.375000 +v -1.375000 4.500000 -1.875000 +v -1.375000 4.500000 -1.375000 +v -1.875000 4.500000 1.375000 +v -1.875000 4.500000 1.875000 +v -1.375000 4.500000 1.375000 +v -1.375000 4.500000 1.875000 +v 1.375000 4.500000 -1.875000 +v 1.375000 4.500000 -1.375000 +v 1.875000 4.500000 -1.875000 +v 1.875000 4.500000 -1.375000 +v 1.375000 4.500000 1.375000 +v 1.375000 4.500000 1.875000 +v 1.875000 4.500000 1.375000 +v 1.875000 4.500000 1.875000 +v 2.125000 4.250000 0.375000 +v 2.051777 4.250000 0.198223 +v 1.875000 4.250000 0.125000 +v 1.698223 4.250000 0.198223 +v 1.625000 4.250000 0.375000 +v 1.698223 4.250000 0.551777 +v 1.875000 4.250000 0.625000 +v 2.051777 4.250000 0.551776 +v 2.125000 10.250000 0.375000 +v 2.051777 10.250000 0.198223 +v 1.875000 10.250000 0.125000 +v 1.698223 10.250000 0.198223 +v 1.625000 10.250000 0.375000 +v 1.698223 10.250000 0.551777 +v 1.875000 10.250000 0.625000 +v 2.051777 10.250000 0.551776 +v 1.978554 10.603554 0.375000 +v 1.926777 10.551777 0.198223 +v 1.801777 10.426777 0.125000 +v 1.676777 10.301777 0.198223 +v 1.676777 10.301777 0.551777 +v 1.801777 10.426777 0.625000 +v 1.926777 10.551777 0.551777 +v 1.625000 10.750000 0.375000 +v 1.625000 10.676777 0.198223 +v 1.625000 10.500000 0.125000 +v 1.625000 10.323223 0.198223 +v 1.625000 10.323223 0.551777 +v 1.625000 10.500000 0.625000 +v 1.625000 10.676777 0.551777 +v 0.875000 10.250000 0.375000 +v 0.875000 10.750000 0.375000 +v 0.875000 10.676777 0.198223 +v 0.875000 10.500000 0.125000 +v 0.875000 10.323223 0.198223 +v 0.875000 10.323223 0.551777 +v 0.875000 10.500000 0.625000 +v 0.875000 10.676777 0.551777 +v 2.125000 4.250000 -0.350000 +v 2.051777 4.250000 -0.526777 +v 1.875000 4.250000 -0.600000 +v 1.698223 4.250000 -0.526777 +v 1.625000 4.250000 -0.350000 +v 1.698223 4.250000 -0.173223 +v 1.875000 4.250000 -0.100000 +v 2.051777 4.250000 -0.173223 +v 2.125000 8.750000 -0.350000 +v 2.051777 8.750000 -0.526777 +v 1.875000 8.750000 -0.600000 +v 1.698223 8.750000 -0.526777 +v 1.625000 8.750000 -0.350000 +v 1.698223 8.750000 -0.173223 +v 1.875000 8.750000 -0.100000 +v 2.051777 8.750000 -0.173223 +v 1.978554 9.103554 -0.350000 +v 1.926777 9.051777 -0.526777 +v 1.801777 8.926777 -0.600000 +v 1.676777 8.801777 -0.526777 +v 1.676777 8.801777 -0.173223 +v 1.801777 8.926777 -0.100000 +v 1.926777 9.051777 -0.173223 +v 1.625000 9.250000 -0.350000 +v 1.625000 9.176777 -0.526777 +v 1.625000 9.000000 -0.600000 +v 1.625000 8.823223 -0.526777 +v 1.625000 8.823223 -0.173223 +v 1.625000 9.000000 -0.100000 +v 1.625000 9.176777 -0.173223 +v 0.875000 8.750000 -0.350000 +v 0.875000 9.250000 -0.350000 +v 0.875000 9.176777 -0.526777 +v 0.875000 9.000000 -0.600000 +v 0.875000 8.823223 -0.526777 +v 0.875000 8.823223 -0.173223 +v 0.875000 9.000000 -0.100000 +v 0.875000 9.176777 -0.173223 +v -2.125000 4.250000 -0.375000 +v -2.051777 4.250000 -0.198223 +v -1.875000 4.250000 -0.125000 +v -1.698223 4.250000 -0.198223 +v -1.625000 4.250000 -0.375000 +v -1.698223 4.250000 -0.551776 +v -1.875000 4.250000 -0.625000 +v -2.051777 4.250000 -0.551776 +v -2.125000 10.250000 -0.375000 +v -2.051777 10.250000 -0.198223 +v -1.875000 10.250000 -0.125000 +v -1.698223 10.250000 -0.198223 +v -1.625000 10.250000 -0.375000 +v -1.698223 10.250000 -0.551776 +v -1.875000 10.250000 -0.625000 +v -2.051777 10.250000 -0.551776 +v -1.978554 10.603554 -0.375000 +v -1.926777 10.551777 -0.198223 +v -1.801777 10.426777 -0.125000 +v -1.676777 10.301777 -0.198223 +v -1.676777 10.301777 -0.551776 +v -1.801777 10.426777 -0.625000 +v -1.926777 10.551777 -0.551776 +v -1.625000 10.750000 -0.375000 +v -1.625000 10.676777 -0.198223 +v -1.625000 10.500000 -0.125000 +v -1.625000 10.323223 -0.198223 +v -1.625000 10.323223 -0.551776 +v -1.625000 10.500000 -0.625000 +v -1.625000 10.676777 -0.551776 +v -0.875000 10.250000 -0.375000 +v -0.875000 10.750000 -0.375000 +v -0.875000 10.676777 -0.198223 +v -0.875000 10.500000 -0.125000 +v -0.875000 10.323223 -0.198223 +v -0.875000 10.323223 -0.551777 +v -0.875000 10.500000 -0.625000 +v -0.875000 10.676777 -0.551777 +v -2.125000 4.250000 0.350001 +v -2.051777 4.250000 0.526777 +v -1.875000 4.250000 0.600001 +v -1.698223 4.250000 0.526777 +v -1.625000 4.250000 0.350000 +v -1.698223 4.250000 0.173224 +v -1.875000 4.250000 0.100000 +v -2.051777 4.250000 0.173224 +v -2.125000 8.750000 0.350001 +v -2.051777 8.750000 0.526777 +v -1.875000 8.750000 0.600001 +v -1.698223 8.750000 0.526777 +v -1.625000 8.750000 0.350000 +v -1.698223 8.750000 0.173224 +v -1.875000 8.750000 0.100000 +v -2.051777 8.750000 0.173224 +v -1.978554 9.103554 0.350000 +v -1.926777 9.051777 0.526777 +v -1.801777 8.926777 0.600001 +v -1.676777 8.801777 0.526777 +v -1.676777 8.801777 0.173224 +v -1.801777 8.926777 0.100000 +v -1.926777 9.051777 0.173224 +v -1.625000 9.250000 0.350000 +v -1.625000 9.176777 0.526777 +v -1.625000 9.000000 0.600000 +v -1.625000 8.823223 0.526777 +v -1.625000 8.823223 0.173224 +v -1.625000 9.000000 0.100000 +v -1.625000 9.176777 0.173224 +v -0.875000 8.750000 0.350000 +v -0.875000 9.250000 0.350000 +v -0.875000 9.176777 0.526777 +v -0.875000 9.000000 0.600000 +v -0.875000 8.823223 0.526777 +v -0.875000 8.823223 0.173223 +v -0.875000 9.000000 0.100000 +v -0.875000 9.176777 0.173223 +v 0.375000 4.250000 -2.125000 +v 0.198223 4.250000 -2.051777 +v 0.125000 4.250000 -1.875000 +v 0.198223 4.250000 -1.698223 +v 0.375000 4.250000 -1.625000 +v 0.551776 4.250000 -1.698223 +v 0.625000 4.250000 -1.875000 +v 0.551776 4.250000 -2.051777 +v 0.375000 10.250000 -2.125000 +v 0.198223 10.250000 -2.051777 +v 0.125000 10.250000 -1.875000 +v 0.198223 10.250000 -1.698223 +v 0.375000 10.250000 -1.625000 +v 0.551776 10.250000 -1.698223 +v 0.625000 10.250000 -1.875000 +v 0.551776 10.250000 -2.051777 +v 0.375000 10.603554 -1.978554 +v 0.198223 10.551777 -1.926777 +v 0.125000 10.426777 -1.801777 +v 0.198223 10.301777 -1.676777 +v 0.551776 10.301777 -1.676777 +v 0.625000 10.426777 -1.801777 +v 0.551776 10.551777 -1.926777 +v 0.375000 10.750000 -1.625000 +v 0.198223 10.676777 -1.625000 +v 0.125000 10.500000 -1.625000 +v 0.198223 10.323223 -1.625000 +v 0.551776 10.323223 -1.625000 +v 0.625000 10.500000 -1.625000 +v 0.551776 10.676777 -1.625000 +v 0.375000 10.250000 -0.875000 +v 0.375000 10.750000 -0.875000 +v 0.198223 10.676777 -0.875000 +v 0.125000 10.500000 -0.875000 +v 0.198223 10.323223 -0.875000 +v 0.551776 10.323223 -0.875000 +v 0.625000 10.500000 -0.875000 +v 0.551776 10.676777 -0.875000 +v -0.350000 4.250000 -2.125000 +v -0.526777 4.250000 -2.051777 +v -0.600000 4.250000 -1.875000 +v -0.526777 4.250000 -1.698223 +v -0.350000 4.250000 -1.625000 +v -0.173224 4.250000 -1.698223 +v -0.100000 4.250000 -1.875000 +v -0.173223 4.250000 -2.051777 +v -0.350000 8.750000 -2.125000 +v -0.526777 8.750000 -2.051777 +v -0.600000 8.750000 -1.875000 +v -0.526777 8.750000 -1.698223 +v -0.350000 8.750000 -1.625000 +v -0.173224 8.750000 -1.698223 +v -0.100000 8.750000 -1.875000 +v -0.173223 8.750000 -2.051777 +v -0.350000 9.103554 -1.978554 +v -0.526777 9.051777 -1.926777 +v -0.600000 8.926777 -1.801777 +v -0.526777 8.801777 -1.676777 +v -0.173224 8.801777 -1.676777 +v -0.100000 8.926777 -1.801777 +v -0.173223 9.051777 -1.926777 +v -0.350000 9.250000 -1.625000 +v -0.526777 9.176777 -1.625000 +v -0.600000 9.000000 -1.625000 +v -0.526777 8.823223 -1.625000 +v -0.173224 8.823223 -1.625000 +v -0.100000 9.000000 -1.625000 +v -0.173224 9.176777 -1.625000 +v -0.350000 8.750000 -0.875000 +v -0.350000 9.250000 -0.875000 +v -0.526777 9.176777 -0.875000 +v -0.600000 9.000000 -0.875000 +v -0.526777 8.823223 -0.875000 +v -0.173223 8.823223 -0.875000 +v -0.100000 9.000000 -0.875000 +v -0.173223 9.176777 -0.875000 +v -0.375000 4.250000 2.125000 +v -0.198223 4.250000 2.051777 +v -0.125000 4.250000 1.875000 +v -0.198223 4.250000 1.698223 +v -0.375000 4.250000 1.625000 +v -0.551776 4.250000 1.698223 +v -0.625000 4.250000 1.875000 +v -0.551776 4.250000 2.051777 +v -0.375000 10.250000 2.125000 +v -0.198223 10.250000 2.051777 +v -0.125000 10.250000 1.875000 +v -0.198223 10.250000 1.698223 +v -0.375000 10.250000 1.625000 +v -0.551776 10.250000 1.698223 +v -0.625000 10.250000 1.875000 +v -0.551776 10.250000 2.051777 +v -0.375000 10.603554 1.978554 +v -0.198223 10.551777 1.926777 +v -0.125000 10.426777 1.801777 +v -0.198223 10.301777 1.676777 +v -0.551776 10.301777 1.676777 +v -0.625000 10.426777 1.801777 +v -0.551776 10.551777 1.926777 +v -0.375000 10.750000 1.625000 +v -0.198223 10.676777 1.625000 +v -0.125000 10.500000 1.625000 +v -0.198223 10.323223 1.625000 +v -0.551776 10.323223 1.625000 +v -0.625000 10.500000 1.625000 +v -0.551776 10.676777 1.625000 +v -0.375000 10.250000 0.875000 +v -0.375000 10.750000 0.875000 +v -0.198223 10.676777 0.875000 +v -0.125000 10.500000 0.875000 +v -0.198223 10.323223 0.875000 +v -0.551776 10.323223 0.875000 +v -0.625000 10.500000 0.875000 +v -0.551776 10.676777 0.875000 +v 0.350001 4.250000 2.125000 +v 0.526777 4.250000 2.051777 +v 0.600001 4.250000 1.875000 +v 0.526777 4.250000 1.698223 +v 0.350000 4.250000 1.625000 +v 0.173224 4.250000 1.698223 +v 0.100001 4.250000 1.875000 +v 0.173224 4.250000 2.051777 +v 0.350001 8.750000 2.125000 +v 0.526777 8.750000 2.051777 +v 0.600001 8.750000 1.875000 +v 0.526777 8.750000 1.698223 +v 0.350000 8.750000 1.625000 +v 0.173224 8.750000 1.698223 +v 0.100001 8.750000 1.875000 +v 0.173224 8.750000 2.051777 +v 0.350001 9.103554 1.978554 +v 0.526777 9.051777 1.926777 +v 0.600001 8.926777 1.801777 +v 0.526777 8.801777 1.676777 +v 0.173224 8.801777 1.676777 +v 0.100001 8.926777 1.801777 +v 0.173224 9.051777 1.926777 +v 0.350000 9.250000 1.625000 +v 0.526777 9.176777 1.625000 +v 0.600000 9.000000 1.625000 +v 0.526777 8.823223 1.625000 +v 0.173224 8.823223 1.625000 +v 0.100001 9.000000 1.625000 +v 0.173224 9.176777 1.625000 +v 0.350000 8.750000 0.875000 +v 0.350000 9.250000 0.875000 +v 0.526777 9.176777 0.875000 +v 0.600000 9.000000 0.875000 +v 0.526777 8.823223 0.875000 +v 0.173223 8.823223 0.875000 +v 0.100000 9.000000 0.875000 +v 0.173223 9.176777 0.875000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.500000 0.062500 -0.500000 +v -0.500000 0.062500 0.500000 +v 0.500000 0.062500 0.500000 +v 0.500000 0.062500 -0.500000 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v 0.437500 0.062500 0.437500 +v 0.437500 0.062500 -0.437500 +v -0.437500 0.000000 -0.437500 +v -0.437500 0.000000 0.437500 +v 0.437500 0.000000 0.437500 +v 0.437500 0.000000 -0.437500 +vt 0.272727 -0.000000 +vt 0.212121 0.057971 +vt 0.181818 -0.000000 +vt 0.121212 0.231884 +vt -0.000000 0.289855 +vt 0.030303 0.231884 +vt 0.424242 0.173913 +vt 0.333333 0.231884 +vt 0.333333 0.173913 +vt 0.121212 0.173913 +vt 0.030303 0.173913 +vt 0.272727 0.173913 +vt 0.181818 0.231884 +vt 0.181818 0.173913 +vt 0.575758 0.173913 +vt 0.484848 0.231884 +vt 0.484848 0.173913 +vt 0.303030 0.289855 +vt 0.151515 0.405797 +vt 0.151515 0.289855 +vt 0.272727 0.231884 +vt 0.575758 0.231884 +vt 0.454545 0.289855 +vt 0.424242 0.231884 +vt 0.454545 0.405797 +vt 0.333333 0.463768 +vt 0.303030 0.405797 +vt 0.606061 0.289855 +vt 0.000000 0.405797 +vt 0.272727 0.463768 +vt 0.181818 0.579710 +vt 0.181818 0.463768 +vt 0.030303 0.463768 +vt 0.606061 0.405797 +vt 0.484848 0.463768 +vt 0.575758 0.463768 +vt 0.484848 0.579710 +vt 0.422348 0.463768 +vt 0.333333 0.579710 +vt 0.117424 0.463768 +vt 0.030303 0.579710 +vt 0.170455 0.057971 +vt 0.159091 0.173913 +vt 0.159091 0.057971 +vt 0.181818 0.057971 +vt 0.170455 0.173913 +vt 0.147727 0.173913 +vt 0.136364 0.057971 +vt 0.147727 0.057971 +vt 0.147727 0.036232 +vt 0.159091 0.036232 +vt 0.159091 0.057971 +vt 0.147727 0.173913 +vt 0.147727 0.057971 +vt 0.170455 0.057971 +vt 0.159091 0.173913 +vt 0.136364 0.173913 +vt 0.181818 0.173913 +vt 0.181818 0.057971 +vt 0.159091 0.036232 +vt 0.181818 0.057971 +vt 0.170455 0.173913 +vt 0.170455 0.057971 +vt 0.147727 0.057971 +vt 0.136364 0.173913 +vt 0.136364 0.057971 +vt 0.159091 0.173913 +vt 0.159091 0.057971 +vt 0.159091 0.036232 +vt 0.147727 0.036232 +vt 0.147727 0.057971 +vt 0.136364 0.173913 +vt 0.136364 0.057971 +vt 0.159091 0.057971 +vt 0.147727 0.173913 +vt 0.170455 0.173913 +vt 0.181818 0.057971 +vt 0.181818 0.173913 +vt 0.170455 0.057971 +vt 0.147727 0.036232 +vt 0.125000 0.000000 +vt 0.113636 0.173913 +vt 0.113636 0.000000 +vt 0.136364 0.000000 +vt 0.125000 0.173913 +vt 0.102273 0.173913 +vt 0.090909 0.000000 +vt 0.102273 0.000000 +vt 0.454545 0.579710 +vt 0.424242 0.811594 +vt 0.424242 0.637681 +vt 0.113636 0.000000 +vt 0.102273 0.173913 +vt 0.102273 0.000000 +vt 0.125000 0.000000 +vt 0.113636 0.173913 +vt 0.090909 0.173913 +vt 0.136364 0.173913 +vt 0.136364 0.000000 +vt 0.303030 0.579710 +vt 0.136364 0.000000 +vt 0.125000 0.173913 +vt 0.125000 0.000000 +vt 0.102273 0.000000 +vt 0.090909 0.173913 +vt 0.090909 0.000000 +vt 0.113636 0.173913 +vt 0.113636 0.000000 +vt 0.333333 0.637681 +vt 0.303030 0.869565 +vt 0.102273 0.000000 +vt 0.090909 0.173913 +vt 0.090909 0.000000 +vt 0.113636 0.000000 +vt 0.102273 0.173913 +vt 0.125000 0.173913 +vt 0.136364 0.000000 +vt 0.136364 0.173913 +vt 0.125000 0.000000 +vt 0.333333 0.811594 +vt 0.053030 0.579710 +vt 0.181818 0.601449 +vt 0.053030 0.601449 +vt 0.181818 0.623188 +vt 0.053030 0.644928 +vt 0.053030 0.623188 +vt 0.053030 0.666667 +vt 0.181818 0.644928 +vt 0.181818 0.666667 +vt 0.181818 0.601449 +vt 0.053030 0.579710 +vt 0.181818 0.579710 +vt 0.053030 0.644928 +vt 0.181818 0.623188 +vt 0.181818 0.644928 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.623188 +vt 0.053030 0.601449 +vt 0.053030 0.579710 +vt 0.181818 0.601449 +vt 0.053030 0.601449 +vt 0.181818 0.623188 +vt 0.053030 0.644928 +vt 0.053030 0.623188 +vt 0.053030 0.666667 +vt 0.181818 0.644928 +vt 0.181818 0.666667 +vt 0.181818 0.601449 +vt 0.053030 0.579710 +vt 0.181818 0.579710 +vt 0.053030 0.644928 +vt 0.181818 0.623188 +vt 0.181818 0.644928 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.623188 +vt 0.053030 0.601449 +vt 0.575758 0.637681 +vt 0.606061 0.869565 +vt 0.575758 0.811594 +vt 0.454545 0.869565 +vt 0.454545 0.579710 +vt 0.484848 0.811594 +vt 0.484848 0.637681 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.477273 0.869565 +vt 0.606061 0.884058 +vt 0.477273 0.884058 +vt 0.053030 0.666667 +vt 0.181818 0.688406 +vt 0.053030 0.688406 +vt 0.181818 0.710145 +vt 0.053030 0.731884 +vt 0.053030 0.710145 +vt 0.053030 0.753623 +vt 0.181818 0.731884 +vt 0.181818 0.753623 +vt 0.181818 0.688406 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.731884 +vt 0.181818 0.710145 +vt 0.181818 0.731884 +vt 0.053030 0.753623 +vt 0.181818 0.753623 +vt 0.053030 0.710145 +vt 0.053030 0.688406 +vt 0.053030 0.666667 +vt 0.181818 0.688406 +vt 0.053030 0.688406 +vt 0.181818 0.710145 +vt 0.053030 0.731884 +vt 0.053030 0.710145 +vt 0.053030 0.753623 +vt 0.181818 0.731884 +vt 0.181818 0.753623 +vt 0.181818 0.688406 +vt 0.053030 0.666667 +vt 0.181818 0.666667 +vt 0.053030 0.731884 +vt 0.181818 0.710145 +vt 0.181818 0.731884 +vt 0.053030 0.753623 +vt 0.181818 0.753623 +vt 0.053030 0.710145 +vt 0.053030 0.688406 +vt 0.833333 0.927536 +vt 0.818182 0.942029 +vt 0.818182 0.927536 +vt 0.848485 0.927536 +vt 0.833333 0.942029 +vt 0.606061 0.927536 +vt 0.621212 0.942029 +vt 0.606061 0.942029 +vt 0.636364 0.927536 +vt 0.621212 0.927536 +vt 0.651515 0.942029 +vt 0.636364 0.942029 +vt 0.666667 0.927536 +vt 0.651515 0.927536 +vt 0.681818 0.942029 +vt 0.666667 0.942029 +vt 0.681818 0.927536 +vt 0.696970 0.942029 +vt 0.712121 0.927536 +vt 0.696970 0.927536 +vt 0.727273 0.927536 +vt 0.712121 0.942029 +vt 0.742424 0.942029 +vt 0.727273 0.942029 +vt 0.742424 0.927536 +vt 0.757576 0.942029 +vt 0.772727 0.927536 +vt 0.757576 0.927536 +vt 0.787879 0.927536 +vt 0.772727 0.942029 +vt 0.803030 0.927536 +vt 0.787879 0.942029 +vt 0.803030 0.942029 +vt 0.242424 0.768116 +vt 0.121212 1.000000 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.242424 1.000000 +vt 0.121212 1.000000 +vt 0.242424 0.753623 +vt 0.121212 0.768116 +vt 0.121212 0.753623 +vt 0.242424 0.753623 +vt 0.121212 0.753623 +vt 0.242424 0.753623 +vt 0.121212 0.768116 +vt 0.121212 0.753623 +vt 0.242424 0.753623 +vt 0.121212 0.768116 +vt 0.121212 0.753623 +vt 0.000000 1.000000 +vt 0.121212 0.768116 +vt 0.121212 1.000000 +vt 0.000000 0.768116 +vt 0.121212 1.000000 +vt 0.000000 1.000000 +vt 0.121212 0.753623 +vt -0.000000 0.768116 +vt -0.000000 0.753623 +vt 0.121212 0.753623 +vt -0.000000 0.753623 +vt 0.121212 0.753623 +vt -0.000000 0.768116 +vt -0.000000 0.753623 +vt 0.121212 0.753623 +vt -0.000000 0.768116 +vt -0.000000 0.753623 +vt 0.981061 0.731884 +vt 0.875000 0.934783 +vt 0.875000 0.731884 +vt 0.875000 0.731884 +vt 0.981061 0.934783 +vt 0.875000 0.934783 +vt 0.981061 0.717391 +vt 0.875000 0.731884 +vt 0.875000 0.717391 +vt 0.981061 0.717391 +vt 0.875000 0.717391 +vt 0.981061 0.717391 +vt 0.875000 0.731884 +vt 0.875000 0.717391 +vt 0.981061 0.717391 +vt 0.875000 0.731884 +vt 0.875000 0.717391 +vt 0.893939 0.144928 +vt 0.878788 0.717391 +vt 0.878788 0.144928 +vt 0.863636 0.717391 +vt 0.848485 0.144928 +vt 0.863636 0.144928 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.893939 0.717391 +vt 0.909091 0.144928 +vt 0.909091 0.717391 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.863636 0.144928 +vt 0.878788 0.717391 +vt 0.863636 0.717391 +vt 0.909091 0.144928 +vt 0.893939 0.717391 +vt 0.893939 0.144928 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.545455 0.115942 +vt 0.424242 0.057971 +vt 0.545455 0.057971 +vt 0.848485 0.144928 +vt 0.909091 0.144928 +vt 0.893939 0.717391 +vt 0.893939 0.144928 +vt 0.878788 0.717391 +vt 0.863636 0.144928 +vt 0.878788 0.144928 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.848485 0.144928 +vt 0.863636 0.717391 +vt 0.848485 0.717391 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.848485 0.144928 +vt 0.863636 0.717391 +vt 0.848485 0.717391 +vt 0.893939 0.144928 +vt 0.878788 0.717391 +vt 0.878788 0.144928 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.863636 0.144928 +vt 0.545455 0.057971 +vt 0.424242 0.000000 +vt 0.545455 0.000000 +vt 0.909091 0.144928 +vt 0.893939 0.717391 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.530303 0.144928 +vt 0.424242 0.115942 +vt 0.530303 0.115942 +vt 0.875000 0.804348 +vt 0.848485 0.717391 +vt 0.875000 0.717391 +vt 0.597077 0.017186 +vt 0.605908 0.057971 +vt 0.545607 0.057971 +vt 0.848485 0.804348 +vt 0.875000 0.717391 +vt 0.875000 0.804348 +vt 0.848485 0.804348 +vt 0.875000 0.717391 +vt 0.875000 0.804348 +vt 0.848485 0.804348 +vt 0.875000 0.717391 +vt 0.875000 0.804348 +vt 0.909091 0.000000 +vt 0.909091 0.000000 +vt 0.909091 0.000000 +vt 0.878788 0.000000 +vt 0.909091 0.000000 +vt 0.863636 0.000000 +vt 0.893939 0.000000 +vt 0.893939 0.000000 +vt 0.863636 0.000000 +vt 0.878788 0.000000 +vt 0.878788 0.144928 +vt 0.893939 0.000000 +vt 0.878788 0.000000 +vt 0.863636 0.000000 +vt 0.863636 0.000000 +vt 0.878788 0.000000 +vt 0.893939 0.000000 +vt 0.181818 0.753623 +vt 0.272727 0.579710 +vt 0.272727 0.753623 +vt 0.276515 0.072464 +vt 0.306818 0.068841 +vt 0.306818 0.072464 +vt 0.242424 0.057971 +vt 0.242424 0.115942 +vt 0.212121 0.115942 +vt 0.308712 0.065217 +vt 0.306818 0.010870 +vt 0.308712 0.007246 +vt 0.306818 0.000000 +vt 0.276515 0.003623 +vt 0.276515 0.000000 +vt 0.310606 0.065217 +vt 0.310606 0.007246 +vt 0.272727 0.007246 +vt 0.274621 0.065217 +vt 0.272727 0.065217 +vt 0.278409 0.065217 +vt 0.304924 0.061594 +vt 0.304924 0.065217 +vt 0.274621 0.007246 +vt 0.276515 0.061594 +vt 0.276515 0.068841 +vt 0.306818 0.003623 +vt 0.278409 0.007246 +vt 0.304924 0.010870 +vt 0.278409 0.061594 +vt 0.278409 0.010870 +vt 0.304924 0.007246 +vt 0.306818 0.061594 +vt 0.276515 0.010870 +vt 0.575758 0.579710 +vt 0.422348 0.579710 +vt 0.117424 0.579710 +vt 0.181818 0.173913 +vt 0.136364 0.173913 +vt 0.170455 0.173913 +vt 0.136364 0.057971 +vt 0.147727 0.036232 +vt 0.181818 0.173913 +vt 0.147727 0.173913 +vt 0.159091 0.173913 +vt 0.159091 0.036232 +vt 0.136364 0.173913 +vt 0.090909 0.173913 +vt 0.454545 0.869565 +vt 0.125000 0.173913 +vt 0.090909 0.000000 +vt 0.136364 0.173913 +vt 0.102273 0.173913 +vt 0.113636 0.173913 +vt 0.181818 0.579710 +vt 0.181818 0.579710 +vt 0.606061 0.579710 +vt 0.606061 0.869565 +vt 0.606061 0.869565 +vt 0.606061 0.869565 +vt 0.606061 0.869565 +vt 0.181818 0.666667 +vt 0.181818 0.666667 +vt 0.848485 0.942029 +vt 0.242424 1.000000 +vt 0.242424 0.768116 +vt 0.242424 0.768116 +vt 0.242424 0.768116 +vt 0.242424 0.768116 +vt 0.000000 0.768116 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.121212 0.768116 +vt 0.981061 0.934783 +vt 0.981061 0.731884 +vt 0.981061 0.731884 +vt 0.981061 0.731884 +vt 0.981061 0.731884 +vt 0.848485 0.717391 +vt 0.424242 0.115942 +vt 0.424242 0.115942 +vt 0.909091 0.717391 +vt 0.424242 0.115942 +vt 0.424242 0.115942 +vt 0.848485 0.717391 +vt 0.909091 0.717391 +vt 0.424242 0.057971 +vt 0.424242 0.057971 +vt 0.424242 0.057971 +vt 0.424242 0.057971 +vt 0.909091 0.717391 +vt 0.424242 0.144928 +vt 0.424242 0.144928 +vt 0.424242 0.144928 +vt 0.424242 0.144928 +vt 0.848485 0.804348 +vt 0.603613 0.080044 +vt 0.597077 0.098756 +vt 0.587296 0.111259 +vt 0.575758 0.115650 +vt 0.564219 0.111259 +vt 0.554438 0.098756 +vt 0.547902 0.080044 +vt 0.547902 0.035898 +vt 0.575758 0.000292 +vt 0.554438 0.017186 +vt 0.564219 0.004683 +vt 0.587296 0.004683 +vt 0.603613 0.035898 +vt 0.848485 0.717391 +vt 0.848485 0.717391 +vt 0.848485 0.717391 +vt 0.848485 0.000000 +vt 0.848485 0.000000 +vt 0.848485 0.000000 +vt 0.848485 0.000000 +vt 0.696970 0.000000 +vt 0.681818 0.000000 +vt 0.833333 0.000000 +vt 0.818182 0.000000 +vt 0.712121 0.000000 +vt 0.848485 0.000000 +vt 0.727273 0.000000 +vt 0.621212 0.000000 +vt 0.606061 0.000000 +vt 0.742424 0.000000 +vt 0.636364 0.000000 +vt 0.757576 0.000000 +vt 0.651515 0.000000 +vt 0.772727 0.000000 +vt 0.666667 0.000000 +vt 0.803030 0.000000 +vt 0.787879 0.000000 +vt 0.696970 1.000000 +vt 0.708333 0.942029 +vt 0.708333 1.000000 +vt 0.776515 1.000000 +vt 0.787879 0.942029 +vt 0.787879 1.000000 +vt 0.685606 1.000000 +vt 0.696970 0.942029 +vt 0.765152 1.000000 +vt 0.776515 0.942029 +vt 0.674242 1.000000 +vt 0.685606 0.942029 +vt 0.753788 1.000000 +vt 0.765152 0.942029 +vt 0.662879 1.000000 +vt 0.674242 0.942029 +vt 0.742424 1.000000 +vt 0.753788 0.942029 +vt 0.640152 1.000000 +vt 0.651515 0.942029 +vt 0.651515 1.000000 +vt 0.662879 0.942029 +vt 0.731061 1.000000 +vt 0.742424 0.942029 +vt 0.628788 1.000000 +vt 0.640152 0.942029 +vt 0.719697 1.000000 +vt 0.731061 0.942029 +vt 0.617424 1.000000 +vt 0.628788 0.942029 +vt 0.719697 0.942029 +vt 0.606061 1.000000 +vt 0.617424 0.942029 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.926136 0.568841 +vt 0.920455 0.586957 +vt 0.920455 0.576087 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.586957 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.920455 0.597826 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.608696 +vt 0.914773 0.652174 +vt 0.943182 0.608696 +vt 0.937500 0.652174 +vt 0.937500 0.608696 +vt 0.920455 0.652174 +vt 0.943182 0.652174 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.965909 0.510870 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.994318 0.503623 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.926136 0.568841 +vt 0.920455 0.586957 +vt 0.920455 0.576087 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.586957 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.920455 0.597826 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.608696 +vt 0.914773 0.652174 +vt 0.943182 0.608696 +vt 0.937500 0.652174 +vt 0.937500 0.608696 +vt 0.920455 0.652174 +vt 0.943182 0.652174 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.965909 0.510870 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.994318 0.503623 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.926136 0.568841 +vt 0.920455 0.586957 +vt 0.920455 0.576087 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.586957 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.920455 0.597826 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.652174 +vt 0.914773 0.652174 +vt 0.937500 0.608696 +vt 0.943182 0.652174 +vt 0.937500 0.652174 +vt 0.920455 0.608696 +vt 0.943182 0.608696 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.965909 0.510870 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.994318 0.503623 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.931818 0.217391 +vt 0.926136 0.565217 +vt 0.926136 0.217391 +vt 0.920455 0.217391 +vt 0.914773 0.565217 +vt 0.914773 0.217391 +vt 0.954545 0.217391 +vt 0.948864 0.565217 +vt 0.948864 0.217391 +vt 0.943182 0.217391 +vt 0.937500 0.565217 +vt 0.937500 0.217391 +vt 0.920455 0.565217 +vt 0.909091 0.565217 +vt 0.909091 0.217391 +vt 0.943182 0.565217 +vt 0.931818 0.565217 +vt 0.937500 0.568841 +vt 0.943182 0.586957 +vt 0.937500 0.586957 +vt 0.920455 0.576087 +vt 0.926136 0.586957 +vt 0.920455 0.586957 +vt 0.943182 0.576087 +vt 0.948864 0.586957 +vt 0.931818 0.586957 +vt 0.926136 0.568841 +vt 0.914773 0.586957 +vt 0.914773 0.583333 +vt 0.931818 0.608696 +vt 0.926136 0.605072 +vt 0.914773 0.590580 +vt 0.943182 0.597826 +vt 0.937500 0.605072 +vt 0.920455 0.597826 +vt 0.948864 0.583333 +vt 0.954545 0.586957 +vt 0.948864 0.590580 +vt 0.909091 0.586957 +vt 0.914773 0.608696 +vt 0.909091 0.652174 +vt 0.909091 0.608696 +vt 0.926136 0.652174 +vt 0.926136 0.608696 +vt 0.954545 0.608696 +vt 0.948864 0.652174 +vt 0.948864 0.608696 +vt 0.920455 0.608696 +vt 0.914773 0.652174 +vt 0.943182 0.608696 +vt 0.937500 0.652174 +vt 0.937500 0.608696 +vt 0.920455 0.652174 +vt 0.943182 0.652174 +vt 0.931818 0.652174 +vt 0.977273 0.217391 +vt 0.971591 0.478261 +vt 0.971591 0.217391 +vt 0.965909 0.217391 +vt 0.960227 0.478261 +vt 0.960227 0.217391 +vt 1.000000 0.217391 +vt 0.994318 0.478261 +vt 0.994318 0.217391 +vt 0.988636 0.217391 +vt 0.982955 0.478261 +vt 0.982955 0.217391 +vt 0.965909 0.478261 +vt 0.954545 0.478261 +vt 0.954545 0.217391 +vt 0.988636 0.478261 +vt 0.977273 0.478261 +vt 0.982955 0.481884 +vt 0.988636 0.500000 +vt 0.982955 0.500000 +vt 0.971591 0.481884 +vt 0.965909 0.500000 +vt 0.965909 0.489130 +vt 0.988636 0.489130 +vt 0.994318 0.500000 +vt 0.977273 0.500000 +vt 0.971591 0.500000 +vt 0.960227 0.500000 +vt 0.960227 0.496377 +vt 0.977273 0.521739 +vt 0.971591 0.518116 +vt 0.965909 0.510870 +vt 0.960227 0.503623 +vt 0.982955 0.518116 +vt 0.988636 0.510870 +vt 0.994318 0.496377 +vt 1.000000 0.500000 +vt 0.994318 0.503623 +vt 0.954545 0.500000 +vt 0.960227 0.521739 +vt 0.954545 0.565217 +vt 0.954545 0.521739 +vt 0.971591 0.565217 +vt 0.971591 0.521739 +vt 1.000000 0.521739 +vt 0.994318 0.565217 +vt 0.994318 0.521739 +vt 0.965909 0.521739 +vt 0.960227 0.565217 +vt 0.988636 0.521739 +vt 0.982955 0.565217 +vt 0.982955 0.521739 +vt 0.965909 0.565217 +vt 0.988636 0.565217 +vt 0.977273 0.565217 +vt 0.606061 0.942029 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vt 0.954545 0.565217 +vt 0.954545 0.652174 +vt 1.000000 0.478261 +vt 1.000000 0.565217 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.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 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.9993 0.0379 0.0000 +vn 0.9993 -0.0379 0.0000 +vn 0.0000 -0.0379 0.9993 +vn 0.0000 0.0379 -0.9993 +vn 0.0000 0.0379 0.9993 +vn 0.0000 -0.0379 -0.9993 +vn -0.9993 -0.0379 0.0000 +vn 0.9993 0.0379 0.0000 +vn -0.6870 -0.2366 0.6870 +vn 0.6870 -0.2366 -0.6870 +vn 0.6870 -0.2366 0.6870 +vn -0.6870 -0.2366 -0.6870 +vn 0.7071 0.0000 0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 0.3827 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn -0.6737 -0.1363 -0.7263 +vn 0.7194 0.1448 -0.6794 +vn 0.0473 0.0196 0.9987 +vn 0.0473 0.0196 -0.9987 +vn 0.9824 0.1866 -0.0000 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.0671 0.0671 0.9955 +vn -0.4617 -0.4617 -0.7574 +vn 0.5294 0.5294 0.6630 +vn -0.4617 -0.4617 0.7574 +vn 0.1866 0.9824 -0.0000 +vn 0.1448 0.7194 0.6794 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 0.7263 +vn 0.0196 0.0473 -0.9987 +vn 0.1448 0.7194 -0.6794 +vn -0.1363 -0.6737 -0.7263 +vn -0.7194 0.1448 -0.6794 +vn 0.6737 -0.1363 -0.7263 +vn 0.6737 -0.1363 0.7263 +vn -0.7194 0.1448 0.6794 +vn -0.0473 0.0196 -0.9987 +vn -0.0473 0.0196 0.9987 +vn -0.9824 0.1866 0.0000 +vn -0.0671 0.0671 0.9955 +vn -0.5294 0.5294 0.6630 +vn -0.0671 0.0671 -0.9955 +vn 0.4617 -0.4617 0.7574 +vn -0.5294 0.5293 -0.6630 +vn 0.4617 -0.4617 -0.7574 +vn -0.1866 0.9824 -0.0000 +vn -0.1448 0.7194 -0.6794 +vn 0.1363 -0.6737 -0.7263 +vn -0.0196 0.0473 0.9987 +vn -0.1448 0.7194 0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn -0.5294 0.5294 -0.6630 +vn 0.6794 0.1448 -0.7194 +vn 0.7263 -0.1363 0.6737 +vn -0.7263 -0.1363 0.6737 +vn -0.6794 0.1448 -0.7194 +vn 0.9987 0.0196 -0.0473 +vn -0.9987 0.0196 -0.0473 +vn -0.0000 0.1866 -0.9824 +vn -0.9955 0.0671 -0.0671 +vn -0.6630 0.5294 -0.5294 +vn 0.9955 0.0671 -0.0671 +vn -0.7574 -0.4617 0.4617 +vn 0.6630 0.5294 -0.5294 +vn 0.7574 -0.4617 0.4617 +vn 0.0000 0.9824 -0.1866 +vn 0.6794 0.7194 -0.1448 +vn 0.9987 0.0473 -0.0196 +vn 0.7263 -0.6737 0.1363 +vn -0.9987 0.0473 -0.0196 +vn -0.6794 0.7194 -0.1448 +vn -0.7263 -0.6737 0.1363 +vn -0.6794 0.1448 0.7194 +vn -0.7263 -0.1363 -0.6737 +vn 0.7263 -0.1363 -0.6737 +vn 0.6794 0.1448 0.7194 +vn -0.9987 0.0196 0.0473 +vn 0.9987 0.0196 0.0473 +vn 0.0000 0.1866 0.9824 +vn 0.9955 0.0671 0.0671 +vn 0.6630 0.5294 0.5294 +vn -0.6630 0.5294 0.5294 +vn -0.9955 0.0671 0.0671 +vn 0.7574 -0.4617 -0.4617 +vn -0.7574 -0.4617 -0.4617 +vn 0.0000 0.9824 0.1866 +vn -0.6794 0.7194 0.1448 +vn -0.7263 -0.6737 -0.1363 +vn 0.9987 0.0473 0.0196 +vn 0.6794 0.7194 0.1448 +vn -0.9987 0.0473 0.0196 +vn 0.7263 -0.6737 -0.1363 +s off +f 3/1/1 665/2/1 1/3/1 +f 6/4/2 9/5/2 5/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/10/4 5/6/4 1/11/4 +f 4/12/5 6/13/5 2/14/5 +f 1/15/6 7/16/6 3/17/6 +f 12/18/5 15/19/5 10/20/5 +f 8/21/7 10/20/7 6/13/7 +f 5/22/8 11/23/8 7/16/8 +f 7/24/9 12/18/9 8/8/9 +f 13/25/10 20/26/10 16/27/10 +f 9/28/6 13/25/6 11/23/6 +f 11/23/3 16/27/3 12/18/3 +f 10/20/4 14/29/4 9/5/4 +f 20/30/5 23/31/5 19/32/5 +f 15/19/11 18/33/11 14/29/11 +f 16/27/12 19/32/12 15/19/12 +f 14/34/13 17/35/13 13/25/13 +f 18/36/6 21/37/6 17/35/6 +f 17/38/3 24/39/3 20/26/3 +f 19/40/4 22/41/4 18/33/4 +f 28/42/5 25/43/5 26/44/5 +f 32/45/3 27/46/3 28/42/3 +f 29/47/4 26/44/4 25/43/4 +f 29/47/6 32/48/6 30/49/6 +f 26/44/1 32/50/1 28/51/1 +f 36/52/5 33/53/5 34/54/5 +f 40/55/3 35/56/3 36/52/3 +f 37/57/4 34/54/4 33/53/4 +f 37/58/6 40/55/6 38/59/6 +f 34/54/1 40/60/1 36/52/1 +f 44/61/5 41/62/5 42/63/5 +f 48/64/3 43/65/3 44/66/3 +f 45/67/4 42/63/4 41/62/4 +f 45/67/6 48/64/6 46/68/6 +f 42/69/1 48/64/1 44/70/1 +f 52/71/5 49/72/5 50/73/5 +f 56/74/3 51/75/3 52/71/3 +f 53/76/4 50/77/4 49/78/4 +f 53/76/6 56/74/6 54/79/6 +f 50/80/1 56/74/1 52/71/1 +f 60/81/5 57/82/5 58/83/5 +f 64/84/3 59/85/3 60/81/3 +f 61/86/4 58/83/4 57/82/4 +f 61/86/6 64/87/6 62/88/6 +f 122/89/14 125/90/14 128/91/14 +f 68/92/5 65/93/5 66/94/5 +f 72/95/3 67/96/3 68/92/3 +f 69/97/4 66/94/4 65/93/4 +f 69/98/6 72/95/6 70/99/6 +f 128/91/14 121/100/14 122/89/14 +f 76/101/5 73/102/5 74/103/5 +f 80/104/3 75/105/3 76/106/3 +f 77/107/4 74/103/4 73/102/4 +f 77/107/6 80/104/6 78/108/6 +f 127/109/14 123/110/14 121/100/14 +f 84/111/5 81/112/5 82/113/5 +f 88/114/3 83/115/3 84/111/3 +f 85/116/4 82/117/4 81/118/4 +f 85/116/6 88/114/6 86/119/6 +f 125/90/14 123/110/14 126/120/14 +f 89/121/1 92/122/1 90/123/1 +f 95/124/14 93/125/14 94/126/14 +f 89/127/4 96/128/4 91/129/4 +f 92/122/3 94/126/3 90/123/3 +f 97/130/1 100/131/1 98/132/1 +f 103/133/14 101/134/14 102/135/14 +f 100/136/3 102/135/3 98/137/3 +f 97/130/4 104/138/4 99/139/4 +f 105/140/1 108/141/1 106/142/1 +f 111/143/14 109/144/14 110/145/14 +f 105/146/5 112/147/5 107/148/5 +f 108/141/6 110/145/6 106/142/6 +f 113/149/1 116/150/1 114/151/1 +f 119/152/14 117/153/14 118/154/14 +f 116/155/6 118/154/6 114/156/6 +f 113/149/5 120/157/5 115/158/5 +f 133/159/1 130/160/1 136/161/1 +f 129/162/1 136/161/1 130/160/1 +f 131/163/1 135/164/1 129/162/1 +f 131/163/1 133/159/1 134/165/1 +f 139/166/5 138/167/5 137/168/5 +f 143/169/3 142/170/3 141/171/3 +f 147/172/6 146/173/6 145/174/6 +f 151/175/4 150/176/4 149/177/4 +f 153/178/1 156/179/1 154/180/1 +f 159/181/14 157/182/14 158/183/14 +f 153/184/4 160/185/4 155/186/4 +f 156/179/3 158/183/3 154/180/3 +f 161/187/1 164/188/1 162/189/1 +f 167/190/14 165/191/14 166/192/14 +f 164/193/3 166/192/3 162/194/3 +f 161/187/4 168/195/4 163/196/4 +f 169/197/1 172/198/1 170/199/1 +f 175/200/14 173/201/14 174/202/14 +f 169/203/5 176/204/5 171/205/5 +f 172/198/6 174/202/6 170/199/6 +f 177/206/1 180/207/1 178/208/1 +f 183/209/14 181/210/14 182/211/14 +f 180/212/6 182/211/6 178/213/6 +f 177/206/5 184/214/5 179/215/5 +f 204/216/14 219/217/14 203/218/14 +f 205/219/14 220/220/14 204/216/14 +f 205/221/14 222/222/14 221/223/14 +f 207/224/14 222/222/14 206/225/14 +f 207/224/14 224/226/14 223/227/14 +f 209/228/14 224/226/14 208/229/14 +f 209/228/14 226/230/14 225/231/14 +f 210/232/14 227/233/14 226/230/14 +f 212/234/14 227/233/14 211/235/14 +f 213/236/14 228/237/14 212/234/14 +f 213/236/14 230/238/14 229/239/14 +f 214/240/14 231/241/14 230/238/14 +f 216/242/14 231/241/14 215/243/14 +f 201/244/14 232/245/14 216/242/14 +f 202/246/14 217/247/14 201/244/14 +f 203/218/14 218/248/14 202/246/14 +f 235/249/1 234/250/1 233/251/1 +f 239/252/14 237/253/14 238/254/14 +f 234/255/4 238/256/4 233/257/4 +f 236/258/5 239/252/5 234/259/5 +f 233/260/6 237/261/6 235/262/6 +f 235/263/3 240/264/3 236/265/3 +f 243/266/1 242/267/1 241/268/1 +f 247/269/14 245/270/14 246/271/14 +f 242/272/4 246/273/4 241/274/4 +f 244/275/5 247/269/5 242/276/5 +f 241/277/6 245/278/6 243/279/6 +f 243/280/3 248/281/3 244/282/3 +f 251/283/1 250/284/1 249/285/1 +f 255/286/14 253/287/14 254/288/14 +f 250/289/4 254/290/4 249/291/4 +f 252/292/5 255/286/5 250/293/5 +f 249/294/6 253/295/6 251/296/6 +f 251/297/3 256/298/3 252/299/3 +f 260/300/15 257/301/15 258/302/15 +f 261/303/16 264/304/16 262/305/16 +f 304/306/5 299/307/5 300/308/5 +f 259/309/17 264/310/17 263/311/17 +f 302/312/6 297/313/6 298/314/6 +f 257/301/18 262/305/18 258/302/18 +f 266/315/15 267/316/15 265/317/15 +f 270/318/16 271/319/16 272/320/16 +f 301/321/3 300/322/3 297/323/3 +f 267/316/19 272/320/19 271/319/19 +f 303/324/4 298/325/4 299/326/4 +f 265/317/20 270/327/20 266/315/20 +f 276/328/21 273/329/21 274/330/21 +f 277/331/22 280/332/22 278/333/22 +f 295/334/4 290/335/4 291/336/4 +f 276/337/17 279/338/17 275/339/17 +f 293/340/3 292/341/3 289/342/3 +f 274/330/18 277/331/18 278/333/18 +f 282/343/21 283/344/21 281/345/21 +f 286/346/22 287/347/22 288/348/22 +f 294/349/6 289/350/6 290/351/6 +f 284/352/19 287/347/19 283/344/19 +f 296/353/5 291/354/5 292/355/5 +f 282/356/20 285/357/20 286/346/20 +f 312/358/5 307/359/5 308/360/5 +f 310/361/6 305/362/6 306/363/6 +f 309/364/3 308/365/3 305/366/3 +f 311/367/4 306/368/4 307/369/4 +f 313/370/23 316/371/23 315/372/23 +f 331/373/14 317/374/14 325/375/14 +f 334/376/24 335/377/24 333/378/24 +f 338/379/25 339/380/25 337/381/25 +f 342/382/26 343/383/26 341/384/26 +f 286/346/3 357/385/3 282/356/3 +f 260/300/4 348/386/4 264/310/4 +f 272/320/5 351/387/5 270/318/5 +f 262/305/3 345/388/3 258/302/3 +f 274/330/6 354/389/6 276/328/6 +f 276/337/4 356/390/4 280/332/4 +f 288/348/5 359/391/5 286/346/5 +f 278/333/3 353/392/3 274/330/3 +f 264/304/5 347/393/5 262/305/5 +f 266/315/6 350/394/6 268/395/6 +f 268/395/4 352/396/4 272/320/4 +f 280/332/5 355/397/5 278/333/5 +f 270/327/3 349/398/3 266/315/3 +f 282/343/6 358/399/6 284/352/6 +f 284/352/4 360/400/4 288/348/4 +f 258/302/6 346/401/6 260/300/6 +f 22/402/14 24/403/14 21/404/14 +f 666/405/6 672/406/6 668/407/6 +f 4/12/1 667/408/1 3/1/1 +f 2/14/1 668/409/1 4/12/1 +f 1/3/1 666/410/1 2/14/1 +f 672/411/1 673/412/1 669/413/1 +f 667/414/5 670/415/5 665/416/5 +f 668/417/4 669/413/4 667/418/4 +f 665/419/3 671/420/3 666/421/3 +f 675/422/5 680/423/5 676/424/5 +f 670/425/1 675/426/1 671/420/1 +f 671/427/1 676/424/1 672/406/1 +f 669/428/1 674/429/1 670/415/1 +f 677/430/1 679/431/1 678/432/1 +f 673/433/6 678/432/6 674/429/6 +f 676/434/3 677/430/3 673/412/3 +f 674/435/4 679/431/4 675/426/4 +f 3/1/1 667/408/1 665/2/1 +f 6/4/2 10/20/2 9/5/2 +f 3/7/3 7/24/3 8/8/3 +f 2/10/4 6/4/4 5/6/4 +f 4/12/5 8/21/5 6/13/5 +f 1/15/6 5/22/6 7/16/6 +f 12/18/5 16/27/5 15/19/5 +f 8/21/7 12/18/7 10/20/7 +f 5/22/8 9/28/8 11/23/8 +f 7/24/9 11/23/9 12/18/9 +f 13/25/10 17/38/10 20/26/10 +f 9/28/6 14/34/6 13/25/6 +f 11/23/3 13/25/3 16/27/3 +f 10/20/4 15/19/4 14/29/4 +f 20/30/5 24/403/5 23/31/5 +f 15/19/11 19/40/11 18/33/11 +f 16/27/12 20/30/12 19/32/12 +f 14/34/13 18/36/13 17/35/13 +f 18/36/6 22/436/6 21/37/6 +f 17/38/3 21/437/3 24/39/3 +f 19/40/4 23/438/4 22/41/4 +f 28/42/5 27/46/5 25/43/5 +f 32/45/3 31/439/3 27/46/3 +f 29/47/4 30/49/4 26/44/4 +f 29/47/6 31/440/6 32/48/6 +f 26/44/1 30/49/1 32/50/1 +f 36/52/5 35/56/5 33/53/5 +f 40/55/3 39/441/3 35/56/3 +f 37/57/4 38/442/4 34/54/4 +f 37/58/6 39/441/6 40/55/6 +f 34/54/1 38/443/1 40/60/1 +f 44/61/5 43/444/5 41/62/5 +f 48/64/3 47/445/3 43/65/3 +f 45/67/4 46/68/4 42/63/4 +f 45/67/6 47/445/6 48/64/6 +f 42/69/1 46/68/1 48/64/1 +f 52/71/5 51/75/5 49/72/5 +f 56/74/3 55/446/3 51/75/3 +f 53/76/4 54/79/4 50/77/4 +f 53/76/6 55/446/6 56/74/6 +f 50/80/1 54/447/1 56/74/1 +f 60/81/5 59/85/5 57/82/5 +f 64/84/3 63/448/3 59/85/3 +f 61/86/4 62/88/4 58/83/4 +f 61/86/6 63/449/6 64/87/6 +f 122/89/14 124/450/14 125/90/14 +f 68/92/5 67/96/5 65/93/5 +f 72/95/3 71/451/3 67/96/3 +f 69/97/4 70/452/4 66/94/4 +f 69/98/6 71/451/6 72/95/6 +f 128/91/14 127/109/14 121/100/14 +f 76/101/5 75/453/5 73/102/5 +f 80/104/3 79/454/3 75/105/3 +f 77/107/4 78/108/4 74/103/4 +f 77/107/6 79/454/6 80/104/6 +f 127/109/14 126/120/14 123/110/14 +f 84/111/5 83/115/5 81/112/5 +f 88/114/3 87/455/3 83/115/3 +f 85/116/4 86/119/4 82/117/4 +f 85/116/6 87/455/6 88/114/6 +f 125/90/14 124/450/14 123/110/14 +f 89/121/1 91/456/1 92/122/1 +f 95/124/14 96/128/14 93/125/14 +f 89/127/4 93/125/4 96/128/4 +f 92/122/3 95/124/3 94/126/3 +f 97/130/1 99/139/1 100/131/1 +f 103/133/14 104/138/14 101/134/14 +f 100/136/3 103/133/3 102/135/3 +f 97/130/4 101/134/4 104/138/4 +f 105/140/1 107/457/1 108/141/1 +f 111/143/14 112/147/14 109/144/14 +f 105/146/5 109/144/5 112/147/5 +f 108/141/6 111/143/6 110/145/6 +f 113/149/1 115/158/1 116/150/1 +f 119/152/14 120/157/14 117/153/14 +f 116/155/6 119/152/6 118/154/6 +f 113/149/5 117/153/5 120/157/5 +f 133/159/1 132/458/1 130/160/1 +f 129/162/1 135/164/1 136/161/1 +f 131/163/1 134/165/1 135/164/1 +f 131/163/1 132/458/1 133/159/1 +f 139/166/5 140/459/5 138/167/5 +f 143/169/3 144/460/3 142/170/3 +f 147/172/6 148/461/6 146/173/6 +f 151/175/4 152/462/4 150/176/4 +f 153/178/1 155/463/1 156/179/1 +f 159/181/14 160/185/14 157/182/14 +f 153/184/4 157/182/4 160/185/4 +f 156/179/3 159/181/3 158/183/3 +f 161/187/1 163/196/1 164/188/1 +f 167/190/14 168/195/14 165/191/14 +f 164/193/3 167/190/3 166/192/3 +f 161/187/4 165/191/4 168/195/4 +f 169/197/1 171/464/1 172/198/1 +f 175/200/14 176/204/14 173/201/14 +f 169/203/5 173/201/5 176/204/5 +f 172/198/6 175/200/6 174/202/6 +f 177/206/1 179/215/1 180/207/1 +f 183/209/14 184/214/14 181/210/14 +f 180/212/6 183/209/6 182/211/6 +f 177/206/5 181/210/5 184/214/5 +f 204/216/14 220/220/14 219/217/14 +f 205/219/14 221/465/14 220/220/14 +f 205/221/14 206/225/14 222/222/14 +f 207/224/14 223/227/14 222/222/14 +f 207/224/14 208/229/14 224/226/14 +f 209/228/14 225/231/14 224/226/14 +f 209/228/14 210/232/14 226/230/14 +f 210/232/14 211/235/14 227/233/14 +f 212/234/14 228/237/14 227/233/14 +f 213/236/14 229/239/14 228/237/14 +f 213/236/14 214/240/14 230/238/14 +f 214/240/14 215/243/14 231/241/14 +f 216/242/14 232/245/14 231/241/14 +f 201/244/14 217/247/14 232/245/14 +f 202/246/14 218/248/14 217/247/14 +f 203/218/14 219/217/14 218/248/14 +f 235/249/1 236/466/1 234/250/1 +f 239/252/14 240/467/14 237/253/14 +f 234/255/4 239/468/4 238/256/4 +f 236/258/5 240/467/5 239/252/5 +f 233/260/6 238/469/6 237/261/6 +f 235/263/3 237/470/3 240/264/3 +f 243/266/1 244/471/1 242/267/1 +f 247/269/14 248/472/14 245/270/14 +f 242/272/4 247/473/4 246/273/4 +f 244/275/5 248/472/5 247/269/5 +f 241/277/6 246/474/6 245/278/6 +f 243/280/3 245/475/3 248/281/3 +f 251/283/1 252/476/1 250/284/1 +f 255/286/14 256/477/14 253/287/14 +f 250/289/4 255/478/4 254/290/4 +f 252/292/5 256/477/5 255/286/5 +f 249/294/6 254/479/6 253/295/6 +f 251/297/3 253/480/3 256/298/3 +f 260/300/15 259/309/15 257/301/15 +f 261/303/16 263/481/16 264/304/16 +f 304/306/5 303/482/5 299/307/5 +f 259/309/17 260/300/17 264/310/17 +f 302/312/6 301/483/6 297/313/6 +f 257/301/18 261/303/18 262/305/18 +f 266/315/15 268/395/15 267/316/15 +f 270/318/16 269/484/16 271/319/16 +f 301/321/3 304/485/3 300/322/3 +f 267/316/19 268/395/19 272/320/19 +f 303/324/4 302/486/4 298/325/4 +f 265/317/20 269/487/20 270/327/20 +f 276/328/21 275/488/21 273/329/21 +f 277/331/22 279/338/22 280/332/22 +f 295/334/4 294/489/4 290/335/4 +f 276/337/17 280/332/17 279/338/17 +f 293/340/3 296/490/3 292/341/3 +f 274/330/18 273/329/18 277/331/18 +f 282/343/21 284/352/21 283/344/21 +f 286/346/22 285/357/22 287/347/22 +f 294/349/6 293/491/6 289/350/6 +f 284/352/19 288/348/19 287/347/19 +f 296/353/5 295/492/5 291/354/5 +f 282/356/20 281/493/20 285/357/20 +f 312/358/5 311/494/5 307/359/5 +f 310/361/6 309/495/6 305/362/6 +f 309/364/3 312/496/3 308/365/3 +f 311/367/4 310/497/4 306/368/4 +f 313/370/23 314/498/23 316/371/23 +f 317/374/14 318/499/14 319/500/14 +f 319/500/14 320/501/14 321/502/14 +f 321/502/14 322/503/14 323/504/14 +f 323/504/14 324/505/14 325/375/14 +f 325/375/14 326/506/14 329/507/14 +f 326/506/14 327/508/14 329/507/14 +f 327/508/14 328/509/14 329/507/14 +f 329/507/14 330/510/14 331/373/14 +f 331/373/14 332/511/14 317/374/14 +f 317/374/14 319/500/14 321/502/14 +f 321/502/14 323/504/14 317/374/14 +f 323/504/14 325/375/14 317/374/14 +f 329/507/14 331/373/14 325/375/14 +f 334/376/24 336/512/24 335/377/24 +f 338/379/25 340/513/25 339/380/25 +f 342/382/26 344/514/26 343/383/26 +f 286/346/3 359/391/3 357/385/3 +f 260/300/4 346/401/4 348/386/4 +f 272/320/5 352/396/5 351/387/5 +f 262/305/3 347/393/3 345/388/3 +f 274/330/6 353/392/6 354/389/6 +f 276/337/4 354/515/4 356/390/4 +f 288/348/5 360/400/5 359/391/5 +f 278/333/3 355/397/3 353/392/3 +f 264/304/5 348/516/5 347/393/5 +f 266/315/6 349/398/6 350/394/6 +f 268/395/4 350/394/4 352/396/4 +f 280/332/5 356/390/5 355/397/5 +f 270/327/3 351/517/3 349/398/3 +f 282/343/6 357/518/6 358/399/6 +f 284/352/4 358/399/4 360/400/4 +f 258/302/6 345/388/6 346/401/6 +f 22/402/14 23/31/14 24/403/14 +f 666/405/6 671/427/6 672/406/6 +f 4/12/1 668/409/1 667/408/1 +f 2/14/1 666/410/1 668/409/1 +f 1/3/1 665/2/1 666/410/1 +f 672/411/1 676/434/1 673/412/1 +f 667/414/5 669/428/5 670/415/5 +f 668/417/4 672/411/4 669/413/4 +f 665/419/3 670/425/3 671/420/3 +f 675/422/5 679/431/5 680/423/5 +f 670/425/1 674/435/1 675/426/1 +f 671/427/1 675/422/1 676/424/1 +f 669/428/1 673/433/1 674/429/1 +f 677/430/1 680/423/1 679/431/1 +f 673/433/6 677/430/6 678/432/6 +f 676/434/3 680/423/3 677/430/3 +f 674/435/4 678/432/4 679/431/4 +s 1 +f 195/519/27 210/232/28 194/520/28 +f 188/521/29 203/218/30 187/522/30 +f 196/523/31 211/235/27 195/519/27 +f 189/524/6 204/216/29 188/521/29 +f 197/525/5 212/234/31 196/523/31 +f 190/526/32 205/221/6 189/527/6 +f 198/528/33 213/236/5 197/525/5 +f 191/529/34 206/225/32 190/526/32 +f 199/530/35 214/240/33 198/528/33 +f 192/531/36 207/224/34 191/529/34 +f 200/532/37 215/243/35 199/530/35 +f 193/533/4 208/229/36 192/531/36 +f 186/534/38 201/244/3 185/535/3 +f 185/535/3 216/242/37 200/532/37 +f 194/520/28 209/228/4 193/533/4 +f 187/522/30 202/246/38 186/534/38 +f 229/536/6 328/537/29 228/538/29 +f 222/539/33 321/540/5 221/541/5 +f 230/542/32 329/543/6 229/536/6 +f 223/544/35 322/545/33 222/539/33 +f 231/546/34 330/547/32 230/542/32 +f 224/548/37 323/549/35 223/544/35 +f 232/550/36 331/551/34 231/546/34 +f 225/552/3 324/553/37 224/548/37 +f 218/554/28 317/555/4 217/556/4 +f 217/556/4 332/557/36 232/550/36 +f 226/558/38 325/559/3 225/552/3 +f 219/560/27 318/561/28 218/554/28 +f 227/562/30 326/563/38 226/558/38 +f 220/564/31 319/565/27 219/560/27 +f 228/538/29 327/566/30 227/562/30 +f 221/567/5 320/568/31 220/564/31 +f 361/569/5 376/570/39 368/571/27 +f 367/572/4 374/573/40 366/574/34 +f 365/575/6 372/576/41 364/577/30 +f 363/578/3 370/579/42 362/580/35 +f 368/571/27 375/581/43 367/572/4 +f 366/574/34 373/582/8 365/583/6 +f 364/577/30 371/584/44 363/578/3 +f 362/580/35 369/585/45 361/569/5 +f 370/586/42 379/587/46 378/588/47 +f 376/589/39 382/590/48 375/591/43 +f 371/592/44 380/593/49 379/587/46 +f 369/585/45 378/588/47 377/594/12 +f 376/589/39 377/594/12 383/595/50 +f 375/591/43 381/596/51 374/597/40 +f 383/595/50 384/598/52 390/599/53 +f 381/596/51 389/600/54 388/601/55 +f 378/588/47 386/602/56 385/603/57 +f 383/595/50 389/600/54 382/590/48 +f 380/593/49 386/602/56 379/587/46 +f 378/588/47 384/598/52 377/594/12 +f 372/604/41 373/605/8 380/593/49 +f 380/593/49 373/605/8 387/606/58 +f 374/597/40 381/596/51 373/607/8 +f 381/596/51 388/601/55 373/607/8 +f 388/608/55 391/609/1 373/610/8 +f 384/598/52 398/611/11 390/612/53 +f 373/613/8 395/614/9 387/615/58 +f 389/616/54 396/617/2 388/608/55 +f 386/618/56 393/619/10 385/620/57 +f 390/612/53 397/621/4 389/616/54 +f 387/615/58 394/622/3 386/618/56 +f 384/598/52 393/619/10 392/623/14 +f 399/624/5 414/625/39 406/626/27 +f 405/627/4 412/628/40 404/629/34 +f 403/630/6 410/631/41 402/632/30 +f 401/633/3 408/634/42 400/635/35 +f 406/626/27 413/636/43 405/627/4 +f 404/629/34 411/637/8 403/638/6 +f 402/632/30 409/639/44 401/633/3 +f 400/635/35 407/640/45 399/624/5 +f 408/641/42 417/642/46 416/643/47 +f 414/644/39 420/645/48 413/646/43 +f 409/647/44 418/648/49 417/642/46 +f 407/640/45 416/643/47 415/649/12 +f 407/640/45 421/650/50 414/644/39 +f 413/646/43 419/651/51 412/652/40 +f 421/650/50 422/653/52 428/654/53 +f 420/645/48 426/655/55 419/651/51 +f 417/642/46 423/656/57 416/643/47 +f 420/645/48 428/654/53 427/657/54 +f 418/648/49 424/658/56 417/642/46 +f 415/649/12 423/656/57 422/653/52 +f 410/659/41 411/660/8 418/648/49 +f 418/648/49 411/660/8 425/661/58 +f 412/652/40 419/651/51 411/662/8 +f 419/651/51 426/655/55 411/662/8 +f 426/663/55 429/664/1 411/665/8 +f 422/653/52 436/666/11 428/667/53 +f 411/668/8 433/669/9 425/670/58 +f 427/671/54 434/672/2 426/663/55 +f 424/673/56 431/674/10 423/675/57 +f 428/667/53 435/676/4 427/671/54 +f 425/670/58 432/677/3 424/673/56 +f 423/675/57 430/678/14 422/653/52 +f 437/679/6 452/680/59 444/681/30 +f 443/682/3 450/683/60 442/684/35 +f 441/685/5 448/686/61 440/687/27 +f 439/688/4 446/689/62 438/690/34 +f 444/681/30 451/691/63 443/682/3 +f 442/684/35 449/692/7 441/693/5 +f 440/687/27 447/694/64 439/688/4 +f 438/690/34 445/695/65 437/679/6 +f 446/696/62 455/697/66 454/698/67 +f 452/699/59 458/700/68 451/701/63 +f 447/702/64 456/703/69 455/697/66 +f 445/695/65 454/698/67 453/704/13 +f 452/699/59 453/704/13 459/705/70 +f 451/701/63 457/706/71 450/707/60 +f 459/705/70 460/708/72 466/709/73 +f 458/700/68 464/710/74 457/706/71 +f 454/698/67 462/711/75 461/712/76 +f 458/700/68 466/709/73 465/713/77 +f 456/703/69 462/711/75 455/697/66 +f 453/704/13 461/712/76 460/708/72 +f 448/714/61 449/715/7 456/703/69 +f 456/703/69 449/715/7 463/716/78 +f 450/707/60 457/706/71 449/717/7 +f 457/706/71 464/710/74 449/717/7 +f 464/718/74 467/719/1 449/720/7 +f 460/708/72 474/721/10 466/722/73 +f 449/723/7 471/724/2 463/725/78 +f 465/726/77 472/727/9 464/718/74 +f 462/728/75 469/729/11 461/730/76 +f 466/722/73 473/731/3 465/726/77 +f 463/725/78 470/732/4 462/728/75 +f 460/708/72 469/729/11 468/733/14 +f 475/734/6 490/735/59 482/736/30 +f 481/737/3 488/738/60 480/739/35 +f 479/740/5 486/741/61 478/742/27 +f 477/743/4 484/744/62 476/745/34 +f 482/736/30 489/746/63 481/737/3 +f 480/739/35 487/747/7 479/748/5 +f 478/742/27 485/749/64 477/743/4 +f 476/745/34 483/750/65 475/734/6 +f 484/751/62 493/752/66 492/753/67 +f 490/754/59 496/755/68 489/756/63 +f 485/757/64 494/758/69 493/752/66 +f 483/750/65 492/753/67 491/759/13 +f 483/750/65 497/760/79 490/754/59 +f 489/756/63 495/761/71 488/762/60 +f 497/760/79 498/763/72 504/764/73 +f 495/761/71 503/765/77 502/766/74 +f 493/752/66 499/767/76 492/753/67 +f 496/755/68 504/764/73 503/765/77 +f 494/758/69 500/768/75 493/752/66 +f 492/753/67 498/763/72 491/759/13 +f 486/769/61 487/770/7 494/758/69 +f 494/758/69 487/770/7 501/771/78 +f 488/762/60 495/761/71 487/772/7 +f 495/761/71 502/766/74 487/772/7 +f 502/773/74 505/774/1 487/775/7 +f 498/763/72 512/776/10 504/777/73 +f 487/778/7 509/779/2 501/780/78 +f 503/781/77 510/782/9 502/773/74 +f 500/783/75 507/784/11 499/785/76 +f 504/777/73 511/786/3 503/781/77 +f 501/780/78 508/787/4 500/783/75 +f 499/785/76 506/788/14 498/763/72 +f 513/789/3 528/790/80 520/791/35 +f 519/792/5 526/793/81 518/794/27 +f 517/795/4 524/796/82 516/797/34 +f 515/798/6 522/799/83 514/800/30 +f 520/791/35 527/801/84 519/792/5 +f 518/794/27 525/802/2 517/803/4 +f 516/797/34 523/804/85 515/798/6 +f 514/800/30 521/805/86 513/789/3 +f 522/806/83 531/807/87 530/808/88 +f 528/809/80 534/810/89 527/811/84 +f 523/812/85 532/813/90 531/807/87 +f 521/805/86 530/808/88 529/814/10 +f 528/809/80 529/814/10 535/815/91 +f 527/811/84 533/816/92 526/817/81 +f 535/815/91 536/818/93 542/819/94 +f 533/816/92 541/820/95 540/821/96 +f 530/808/88 538/822/97 537/823/98 +f 535/815/91 541/820/95 534/810/89 +f 532/813/90 538/822/97 531/807/87 +f 530/808/88 536/818/93 529/814/10 +f 524/824/82 525/825/2 532/813/90 +f 532/813/90 525/825/2 539/826/99 +f 526/817/81 533/816/92 525/827/2 +f 533/816/92 540/821/96 525/827/2 +f 540/828/96 543/829/1 525/830/2 +f 536/818/93 550/831/12 542/832/94 +f 525/833/2 547/834/8 539/835/99 +f 540/828/96 549/836/5 548/837/7 +f 537/838/98 546/839/6 545/840/13 +f 542/832/94 549/836/5 541/841/95 +f 539/835/99 546/839/6 538/842/97 +f 537/838/98 544/843/14 536/818/93 +f 551/844/3 566/845/80 558/846/35 +f 557/847/5 564/848/81 556/849/27 +f 555/850/4 562/851/82 554/852/34 +f 553/853/6 560/854/83 552/855/30 +f 558/846/35 565/856/84 557/847/5 +f 556/849/27 563/857/2 555/858/4 +f 554/852/34 561/859/85 553/853/6 +f 552/855/30 559/860/86 551/844/3 +f 560/861/83 569/862/87 568/863/88 +f 566/864/80 572/865/89 565/866/84 +f 561/867/85 570/868/90 569/862/87 +f 559/860/86 568/863/88 567/869/10 +f 559/860/86 573/870/91 566/864/80 +f 565/866/84 571/871/92 564/872/81 +f 573/870/91 574/873/93 580/874/94 +f 571/871/92 579/875/95 578/876/96 +f 569/862/87 575/877/98 568/863/88 +f 573/870/91 579/875/95 572/865/89 +f 569/862/87 577/878/99 576/879/97 +f 567/869/10 575/877/98 574/873/93 +f 562/880/82 563/881/2 570/868/90 +f 570/868/90 563/881/2 577/878/99 +f 564/872/81 571/871/92 563/882/2 +f 571/871/92 578/876/96 563/882/2 +f 578/883/96 581/884/1 563/885/2 +f 574/873/93 588/886/12 580/887/94 +f 563/888/2 585/889/8 577/890/99 +f 579/891/95 586/892/7 578/883/96 +f 576/893/97 583/894/13 575/895/98 +f 580/887/94 587/896/5 579/891/95 +f 577/890/99 584/897/6 576/893/97 +f 575/895/98 582/898/14 574/873/93 +f 589/899/4 604/900/100 596/901/34 +f 595/902/6 602/903/101 594/904/30 +f 593/905/3 600/906/102 592/907/35 +f 591/908/5 598/909/103 590/910/27 +f 596/901/34 603/911/104 595/902/6 +f 594/904/30 601/912/9 593/913/3 +f 592/907/35 599/914/105 591/908/5 +f 590/910/27 597/915/106 589/899/4 +f 598/916/103 607/917/107 606/918/108 +f 603/919/104 611/920/109 610/921/110 +f 599/922/105 608/923/111 607/917/107 +f 597/915/106 606/918/108 605/924/11 +f 597/915/106 611/920/109 604/925/100 +f 603/919/104 609/926/112 602/927/101 +f 611/920/109 612/928/113 618/929/114 +f 610/921/110 616/930/115 609/926/112 +f 606/918/108 614/931/116 613/932/117 +f 610/921/110 618/929/114 617/933/118 +f 608/923/111 614/931/116 607/917/107 +f 606/918/108 612/928/113 605/924/11 +f 600/934/102 601/935/9 608/923/111 +f 608/923/111 601/935/9 615/936/119 +f 602/927/101 609/926/112 601/937/9 +f 609/926/112 616/930/115 601/937/9 +f 616/938/115 619/939/1 601/940/9 +f 612/928/113 626/941/13 618/942/114 +f 601/943/9 623/944/7 615/945/119 +f 617/946/118 624/947/8 616/938/115 +f 614/948/116 621/949/12 613/950/117 +f 617/946/118 626/941/13 625/951/6 +f 615/945/119 622/952/5 614/948/116 +f 612/928/113 621/949/12 620/953/14 +f 627/954/4 642/955/100 634/956/34 +f 633/957/6 640/958/101 632/959/30 +f 631/960/3 638/961/102 630/962/35 +f 629/963/5 636/964/103 628/965/27 +f 634/956/34 641/966/104 633/957/6 +f 632/959/30 639/967/9 631/968/3 +f 630/962/35 637/969/105 629/963/5 +f 628/965/27 635/970/106 627/954/4 +f 636/971/103 645/972/107 644/973/108 +f 642/974/100 648/975/110 641/976/104 +f 637/977/105 646/978/111 645/972/107 +f 635/970/106 644/973/108 643/979/11 +f 635/970/106 649/980/109 642/974/100 +f 641/976/104 647/981/112 640/982/101 +f 649/980/109 650/983/113 656/984/114 +f 647/981/112 655/985/118 654/986/115 +f 645/972/107 651/987/117 644/973/108 +f 648/975/110 656/984/114 655/985/118 +f 646/978/111 652/988/116 645/972/107 +f 643/979/11 651/987/117 650/983/113 +f 638/989/102 639/990/9 646/978/111 +f 646/978/111 639/990/9 653/991/119 +f 640/982/101 647/981/112 639/992/9 +f 647/981/112 654/986/115 639/992/9 +f 654/993/115 657/994/1 639/995/9 +f 650/983/113 664/996/13 656/997/114 +f 639/998/9 661/999/7 653/1000/119 +f 655/1001/118 662/1002/8 654/993/115 +f 652/1003/116 659/1004/12 651/1005/117 +f 656/997/114 663/1006/6 655/1001/118 +f 653/1000/119 660/1007/5 652/1003/116 +f 651/1005/117 658/1008/14 650/983/113 +f 195/519/27 211/235/27 210/232/28 +f 188/521/29 204/216/29 203/218/30 +f 196/523/31 212/234/31 211/235/27 +f 189/524/6 205/219/6 204/216/29 +f 197/525/5 213/236/5 212/234/31 +f 190/526/32 206/225/32 205/221/6 +f 198/528/33 214/240/33 213/236/5 +f 191/529/34 207/224/34 206/225/32 +f 199/530/35 215/243/35 214/240/33 +f 192/531/36 208/229/36 207/224/34 +f 200/532/37 216/242/37 215/243/35 +f 193/533/4 209/228/4 208/229/36 +f 186/534/38 202/246/38 201/244/3 +f 185/535/3 201/244/3 216/242/37 +f 194/520/28 210/232/28 209/228/4 +f 187/522/30 203/218/30 202/246/38 +f 229/536/6 329/543/6 328/537/29 +f 222/539/33 322/545/33 321/540/5 +f 230/542/32 330/547/32 329/543/6 +f 223/544/35 323/549/35 322/545/33 +f 231/546/34 331/551/34 330/547/32 +f 224/548/37 324/553/37 323/549/35 +f 232/550/36 332/557/36 331/551/34 +f 225/552/3 325/559/3 324/553/37 +f 218/554/28 318/561/28 317/555/4 +f 217/556/4 317/555/4 332/557/36 +f 226/558/38 326/563/38 325/559/3 +f 219/560/27 319/565/27 318/561/28 +f 227/562/30 327/566/30 326/563/38 +f 220/564/31 320/568/31 319/565/27 +f 228/538/29 328/537/29 327/566/30 +f 221/567/5 321/1009/5 320/568/31 +f 361/569/5 369/585/45 376/570/39 +f 367/572/4 375/581/43 374/573/40 +f 365/575/6 373/1010/8 372/576/41 +f 363/578/3 371/584/44 370/579/42 +f 368/571/27 376/570/39 375/581/43 +f 366/574/34 374/573/40 373/582/8 +f 364/577/30 372/576/41 371/584/44 +f 362/580/35 370/579/42 369/585/45 +f 370/586/42 371/592/44 379/587/46 +f 376/589/39 383/595/50 382/590/48 +f 371/592/44 372/604/41 380/593/49 +f 369/585/45 370/586/42 378/588/47 +f 376/589/39 369/585/45 377/594/12 +f 375/591/43 382/590/48 381/596/51 +f 383/595/50 377/594/12 384/598/52 +f 381/596/51 382/590/48 389/600/54 +f 378/588/47 379/587/46 386/602/56 +f 383/595/50 390/599/53 389/600/54 +f 380/593/49 387/606/58 386/602/56 +f 378/588/47 385/603/57 384/598/52 +f 388/608/55 396/617/2 391/609/1 +f 384/598/52 392/623/14 398/611/11 +f 373/613/8 391/1011/1 395/614/9 +f 389/616/54 397/621/4 396/617/2 +f 386/618/56 394/622/3 393/619/10 +f 390/612/53 398/611/11 397/621/4 +f 387/615/58 395/614/9 394/622/3 +f 384/598/52 385/620/57 393/619/10 +f 399/624/5 407/640/45 414/625/39 +f 405/627/4 413/636/43 412/628/40 +f 403/630/6 411/1012/8 410/631/41 +f 401/633/3 409/639/44 408/634/42 +f 406/626/27 414/625/39 413/636/43 +f 404/629/34 412/628/40 411/637/8 +f 402/632/30 410/631/41 409/639/44 +f 400/635/35 408/634/42 407/640/45 +f 408/641/42 409/647/44 417/642/46 +f 414/644/39 421/650/50 420/645/48 +f 409/647/44 410/659/41 418/648/49 +f 407/640/45 408/641/42 416/643/47 +f 407/640/45 415/649/12 421/650/50 +f 413/646/43 420/645/48 419/651/51 +f 421/650/50 415/649/12 422/653/52 +f 420/645/48 427/657/54 426/655/55 +f 417/642/46 424/658/56 423/656/57 +f 420/645/48 421/650/50 428/654/53 +f 418/648/49 425/661/58 424/658/56 +f 415/649/12 416/643/47 423/656/57 +f 426/663/55 434/672/2 429/664/1 +f 422/653/52 430/678/14 436/666/11 +f 411/668/8 429/1013/1 433/669/9 +f 427/671/54 435/676/4 434/672/2 +f 424/673/56 432/677/3 431/674/10 +f 428/667/53 436/666/11 435/676/4 +f 425/670/58 433/669/9 432/677/3 +f 423/675/57 431/674/10 430/678/14 +f 437/679/6 445/695/65 452/680/59 +f 443/682/3 451/691/63 450/683/60 +f 441/685/5 449/1014/7 448/686/61 +f 439/688/4 447/694/64 446/689/62 +f 444/681/30 452/680/59 451/691/63 +f 442/684/35 450/683/60 449/692/7 +f 440/687/27 448/686/61 447/694/64 +f 438/690/34 446/689/62 445/695/65 +f 446/696/62 447/702/64 455/697/66 +f 452/699/59 459/705/70 458/700/68 +f 447/702/64 448/714/61 456/703/69 +f 445/695/65 446/696/62 454/698/67 +f 452/699/59 445/695/65 453/704/13 +f 451/701/63 458/700/68 457/706/71 +f 459/705/70 453/704/13 460/708/72 +f 458/700/68 465/713/77 464/710/74 +f 454/698/67 455/697/66 462/711/75 +f 458/700/68 459/705/70 466/709/73 +f 456/703/69 463/716/78 462/711/75 +f 453/704/13 454/698/67 461/712/76 +f 464/718/74 472/727/9 467/719/1 +f 460/708/72 468/733/14 474/721/10 +f 449/723/7 467/1015/1 471/724/2 +f 465/726/77 473/731/3 472/727/9 +f 462/728/75 470/732/4 469/729/11 +f 466/722/73 474/721/10 473/731/3 +f 463/725/78 471/724/2 470/732/4 +f 460/708/72 461/730/76 469/729/11 +f 475/734/6 483/750/65 490/735/59 +f 481/737/3 489/746/63 488/738/60 +f 479/740/5 487/1016/7 486/741/61 +f 477/743/4 485/749/64 484/744/62 +f 482/736/30 490/735/59 489/746/63 +f 480/739/35 488/738/60 487/747/7 +f 478/742/27 486/741/61 485/749/64 +f 476/745/34 484/744/62 483/750/65 +f 484/751/62 485/757/64 493/752/66 +f 490/754/59 497/760/79 496/755/68 +f 485/757/64 486/769/61 494/758/69 +f 483/750/65 484/751/62 492/753/67 +f 483/750/65 491/759/13 497/760/79 +f 489/756/63 496/755/68 495/761/71 +f 497/760/79 491/759/13 498/763/72 +f 495/761/71 496/755/68 503/765/77 +f 493/752/66 500/768/75 499/767/76 +f 496/755/68 497/760/79 504/764/73 +f 494/758/69 501/771/78 500/768/75 +f 492/753/67 499/767/76 498/763/72 +f 502/773/74 510/782/9 505/774/1 +f 498/763/72 506/788/14 512/776/10 +f 487/778/7 505/1017/1 509/779/2 +f 503/781/77 511/786/3 510/782/9 +f 500/783/75 508/787/4 507/784/11 +f 504/777/73 512/776/10 511/786/3 +f 501/780/78 509/779/2 508/787/4 +f 499/785/76 507/784/11 506/788/14 +f 513/789/3 521/805/86 528/790/80 +f 519/792/5 527/801/84 526/793/81 +f 517/795/4 525/1018/2 524/796/82 +f 515/798/6 523/804/85 522/799/83 +f 520/791/35 528/790/80 527/801/84 +f 518/794/27 526/793/81 525/802/2 +f 516/797/34 524/796/82 523/804/85 +f 514/800/30 522/799/83 521/805/86 +f 522/806/83 523/812/85 531/807/87 +f 528/809/80 535/815/91 534/810/89 +f 523/812/85 524/824/82 532/813/90 +f 521/805/86 522/806/83 530/808/88 +f 528/809/80 521/805/86 529/814/10 +f 527/811/84 534/810/89 533/816/92 +f 535/815/91 529/814/10 536/818/93 +f 533/816/92 534/810/89 541/820/95 +f 530/808/88 531/807/87 538/822/97 +f 535/815/91 542/819/94 541/820/95 +f 532/813/90 539/826/99 538/822/97 +f 530/808/88 537/823/98 536/818/93 +f 540/828/96 548/837/7 543/829/1 +f 536/818/93 544/843/14 550/831/12 +f 525/833/2 543/1019/1 547/834/8 +f 540/828/96 541/841/95 549/836/5 +f 537/838/98 538/842/97 546/839/6 +f 542/832/94 550/831/12 549/836/5 +f 539/835/99 547/834/8 546/839/6 +f 537/838/98 545/840/13 544/843/14 +f 551/844/3 559/860/86 566/845/80 +f 557/847/5 565/856/84 564/848/81 +f 555/850/4 563/1020/2 562/851/82 +f 553/853/6 561/859/85 560/854/83 +f 558/846/35 566/845/80 565/856/84 +f 556/849/27 564/848/81 563/857/2 +f 554/852/34 562/851/82 561/859/85 +f 552/855/30 560/854/83 559/860/86 +f 560/861/83 561/867/85 569/862/87 +f 566/864/80 573/870/91 572/865/89 +f 561/867/85 562/880/82 570/868/90 +f 559/860/86 560/861/83 568/863/88 +f 559/860/86 567/869/10 573/870/91 +f 565/866/84 572/865/89 571/871/92 +f 573/870/91 567/869/10 574/873/93 +f 571/871/92 572/865/89 579/875/95 +f 569/862/87 576/879/97 575/877/98 +f 573/870/91 580/874/94 579/875/95 +f 569/862/87 570/868/90 577/878/99 +f 567/869/10 568/863/88 575/877/98 +f 578/883/96 586/892/7 581/884/1 +f 574/873/93 582/898/14 588/886/12 +f 563/888/2 581/1021/1 585/889/8 +f 579/891/95 587/896/5 586/892/7 +f 576/893/97 584/897/6 583/894/13 +f 580/887/94 588/886/12 587/896/5 +f 577/890/99 585/889/8 584/897/6 +f 575/895/98 583/894/13 582/898/14 +f 589/899/4 597/915/106 604/900/100 +f 595/902/6 603/911/104 602/903/101 +f 593/905/3 601/1022/9 600/906/102 +f 591/908/5 599/914/105 598/909/103 +f 596/901/34 604/900/100 603/911/104 +f 594/904/30 602/903/101 601/912/9 +f 592/907/35 600/906/102 599/914/105 +f 590/910/27 598/909/103 597/915/106 +f 598/916/103 599/922/105 607/917/107 +f 603/919/104 604/925/100 611/920/109 +f 599/922/105 600/934/102 608/923/111 +f 597/915/106 598/916/103 606/918/108 +f 597/915/106 605/924/11 611/920/109 +f 603/919/104 610/921/110 609/926/112 +f 611/920/109 605/924/11 612/928/113 +f 610/921/110 617/933/118 616/930/115 +f 606/918/108 607/917/107 614/931/116 +f 610/921/110 611/920/109 618/929/114 +f 608/923/111 615/936/119 614/931/116 +f 606/918/108 613/932/117 612/928/113 +f 616/938/115 624/947/8 619/939/1 +f 612/928/113 620/953/14 626/941/13 +f 601/943/9 619/1023/1 623/944/7 +f 617/946/118 625/951/6 624/947/8 +f 614/948/116 622/952/5 621/949/12 +f 617/946/118 618/942/114 626/941/13 +f 615/945/119 623/944/7 622/952/5 +f 612/928/113 613/950/117 621/949/12 +f 627/954/4 635/970/106 642/955/100 +f 633/957/6 641/966/104 640/958/101 +f 631/960/3 639/1024/9 638/961/102 +f 629/963/5 637/969/105 636/964/103 +f 634/956/34 642/955/100 641/966/104 +f 632/959/30 640/958/101 639/967/9 +f 630/962/35 638/961/102 637/969/105 +f 628/965/27 636/964/103 635/970/106 +f 636/971/103 637/977/105 645/972/107 +f 642/974/100 649/980/109 648/975/110 +f 637/977/105 638/989/102 646/978/111 +f 635/970/106 636/971/103 644/973/108 +f 635/970/106 643/979/11 649/980/109 +f 641/976/104 648/975/110 647/981/112 +f 649/980/109 643/979/11 650/983/113 +f 647/981/112 648/975/110 655/985/118 +f 645/972/107 652/988/116 651/987/117 +f 648/975/110 649/980/109 656/984/114 +f 646/978/111 653/991/119 652/988/116 +f 643/979/11 644/973/108 651/987/117 +f 654/993/115 662/1002/8 657/994/1 +f 650/983/113 658/1008/14 664/996/13 +f 639/998/9 657/1025/1 661/999/7 +f 655/1001/118 663/1006/6 662/1002/8 +f 652/1003/116 660/1007/5 659/1004/12 +f 656/997/114 664/996/13 663/1006/6 +f 653/1000/119 661/999/7 660/1007/5 +f 651/1005/117 659/1004/12 658/1008/14 diff --git a/src/main/resources/assets/hbm/models/machines/compressor.obj b/src/main/resources/assets/hbm/models/machines/compressor.obj new file mode 100644 index 000000000..ebafde92e --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/compressor.obj @@ -0,0 +1,2321 @@ +# Blender v2.79 (sub 0) OBJ File: 'compressor.blend' +# www.blender.org +o Pump +v -0.250000 7.000000 -1.500000 +v -0.250000 7.000000 -0.500000 +v 0.250000 7.000000 -0.500000 +v 0.250000 7.000000 -1.500000 +v -0.250000 7.000000 0.500000 +v -0.250000 7.000000 1.500000 +v 0.250000 7.000000 1.500000 +v 0.250000 7.000000 0.500000 +v 0.750000 7.000000 -1.250000 +v 0.750000 7.000000 1.250000 +v -0.750000 7.000000 -1.250000 +v -0.750000 7.000000 1.250000 +v -0.250000 8.000000 -1.500000 +v -0.250000 8.000000 -0.500000 +v 0.250000 8.000000 -0.500000 +v 0.250000 8.000000 -1.500000 +v -0.250000 8.000000 0.500000 +v -0.250000 8.000000 1.500000 +v 0.250000 8.000000 1.500000 +v 0.250000 8.000000 0.500000 +v 0.750000 8.000000 -1.250000 +v 0.750000 8.000000 1.250000 +v -0.750000 8.000000 -1.250000 +v -0.750000 8.000000 1.250000 +v 0.000000 4.000000 -0.500000 +v -0.353553 4.000000 -0.353553 +v -0.500000 4.000000 0.000000 +v -0.353553 4.000000 0.353553 +v 0.000000 4.000000 0.500000 +v 0.353553 4.000000 0.353553 +v 0.500000 4.000000 -0.000000 +v 0.353553 4.000000 -0.353553 +v 0.000000 8.500000 -0.500000 +v -0.353553 8.500000 -0.353553 +v -0.500000 8.500000 0.000000 +v -0.353553 8.500000 0.353553 +v 0.000000 8.500000 0.500000 +v 0.353553 8.500000 0.353553 +v 0.500000 8.500000 -0.000000 +v 0.353553 8.500000 -0.353553 +vt 0.136364 0.037037 +vt 0.196970 0.074074 +vt 0.136364 0.074074 +vt 0.242424 0.111111 +vt 0.090909 0.111111 +vt 0.196970 0.037037 +vt 0.090909 0.000000 +vt 0.196970 0.222222 +vt 0.136364 0.259259 +vt 0.136364 0.222222 +vt 0.090909 0.185185 +vt 0.196970 0.259259 +vt 0.242424 0.296296 +vt 0.090909 0.296296 +vt 0.090909 0.370370 +vt 0.242424 0.370370 +vt 0.257576 0.259259 +vt 0.257576 0.222222 +vt 0.000000 0.370370 +vt 0.060606 0.296296 +vt 0.060606 0.370370 +vt 0.060606 0.185185 +vt 0.060606 0.111111 +vt 0.333333 0.111111 +vt 0.272727 0.185185 +vt 0.272727 0.111111 +vt 0.242424 0.185185 +vt 0.000000 0.185185 +vt 0.000000 0.111111 +vt 0.272727 0.296296 +vt 0.272727 0.370370 +vt 0.333333 0.296296 +vt 0.333333 0.370370 +vt 0.075758 0.222222 +vt 0.075758 0.259259 +vt 0.636324 0.962963 +vt 0.606061 0.999951 +vt 0.575798 0.962963 +vt 0.075758 0.074074 +vt 0.257576 0.074074 +vt 0.075758 0.037037 +vt 0.242424 -0.000000 +vt 0.257576 0.037037 +vt 0.075758 0.222222 +vt 0.257576 0.222222 +vt 0.075758 0.259259 +vt 0.257576 0.259259 +vt -0.000000 0.296296 +vt 0.333333 0.185185 +vt 0.627460 0.989117 +vt 0.584662 0.989117 +vt 0.584662 0.936809 +vt 0.606061 0.925975 +vt 0.627460 0.936809 +vt 0.689394 0.592593 +vt 0.666667 0.925926 +vt 0.666667 0.592593 +vt 0.643939 0.592593 +vt 0.621212 0.925926 +vt 0.621212 0.592593 +vt 0.598485 0.592593 +vt 0.575758 0.925926 +vt 0.575758 0.592593 +vt 0.734848 0.592593 +vt 0.712121 0.925926 +vt 0.712121 0.592593 +vt 0.689394 0.925926 +vt 0.643939 0.925926 +vt 0.598485 0.925926 +vt 0.757576 0.592593 +vt 0.734848 0.925926 +vt 0.757576 0.925926 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.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.0000 0.8944 +vn 0.4472 0.0000 0.8944 +vn 0.0000 0.0000 -1.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 3/1/1 5/2/1 2/3/1 +f 5/2/1 12/4/1 11/5/1 +f 8/6/1 3/1/1 9/7/1 +f 17/8/2 15/9/2 14/10/2 +f 17/8/2 14/10/2 23/11/2 +f 20/12/2 22/13/2 21/14/2 +f 9/15/3 22/13/3 10/16/3 +f 8/17/4 17/8/4 5/18/4 +f 3/19/5 16/20/5 4/21/5 +f 11/5/6 13/22/6 1/23/6 +f 4/21/7 21/14/7 9/15/7 +f 5/24/3 18/25/3 6/26/3 +f 6/26/8 24/27/8 12/4/8 +f 1/23/3 14/28/3 2/29/3 +f 10/16/9 19/30/9 7/31/9 +f 7/31/5 20/32/5 8/33/5 +f 12/4/5 23/11/5 11/5/5 +f 2/34/10 15/9/10 3/35/10 +f 33/36/2 35/37/2 37/38/2 +f 3/1/1 8/6/1 5/2/1 +f 11/5/1 1/39/1 2/3/1 +f 5/2/1 6/40/1 12/4/1 +f 11/5/1 2/3/1 5/2/1 +f 3/1/1 4/41/1 9/7/1 +f 9/7/1 10/42/1 8/6/1 +f 10/42/1 7/43/1 8/6/1 +f 17/8/2 20/12/2 15/9/2 +f 14/10/2 13/44/2 23/11/2 +f 23/11/2 24/27/2 17/8/2 +f 24/27/2 18/45/2 17/8/2 +f 21/14/2 16/46/2 15/9/2 +f 20/12/2 19/47/2 22/13/2 +f 21/14/2 15/9/2 20/12/2 +f 9/15/3 21/14/3 22/13/3 +f 8/17/4 20/12/4 17/8/4 +f 3/19/5 15/48/5 16/20/5 +f 11/5/6 23/11/6 13/22/6 +f 4/21/7 16/20/7 21/14/7 +f 5/24/3 17/49/3 18/25/3 +f 6/26/8 18/25/8 24/27/8 +f 1/23/3 13/22/3 14/28/3 +f 10/16/9 22/13/9 19/30/9 +f 7/31/5 19/30/5 20/32/5 +f 12/4/5 24/27/5 23/11/5 +f 2/34/10 14/10/10 15/9/10 +f 33/36/2 34/50/2 35/37/2 +f 35/37/2 36/51/2 37/38/2 +f 37/38/2 38/52/2 39/53/2 +f 39/53/2 40/54/2 37/38/2 +f 40/54/2 33/36/2 37/38/2 +s 1 +f 32/55/11 39/56/3 31/57/3 +f 30/58/12 37/59/4 29/60/4 +f 28/61/13 35/62/5 27/63/5 +f 26/64/14 33/65/10 25/66/10 +f 25/66/10 40/67/11 32/55/11 +f 31/57/3 38/68/12 30/58/12 +f 29/60/4 36/69/13 28/61/13 +f 27/70/5 34/71/14 26/64/14 +f 32/55/11 40/67/11 39/56/3 +f 30/58/12 38/68/12 37/59/4 +f 28/61/13 36/69/13 35/62/5 +f 26/64/14 34/71/14 33/65/10 +f 25/66/10 33/65/10 40/67/11 +f 31/57/3 39/56/3 38/68/12 +f 29/60/4 37/59/4 36/69/13 +f 27/70/5 35/72/5 34/71/14 +o Fan +v 2.250000 1.500000 -0.125000 +v 2.250000 1.588388 -0.088388 +v 2.250000 1.625000 0.000000 +v 2.250000 1.588388 0.088388 +v 2.250000 1.500000 0.125000 +v 2.250000 1.411612 0.088388 +v 2.250000 1.375000 -0.000000 +v 2.250000 1.411612 -0.088388 +v 2.375000 1.500000 -0.125000 +v 2.375000 1.588388 -0.088388 +v 2.375000 1.625000 0.000000 +v 2.375000 1.588388 0.088388 +v 2.375000 1.500000 0.125000 +v 2.375000 1.411612 0.088388 +v 2.375000 1.375000 -0.000000 +v 2.375000 1.411612 -0.088388 +v 2.410491 1.821781 0.562102 +v 2.357664 1.459947 0.040054 +v 2.252009 2.062102 0.321781 +v 2.304836 1.540053 -0.040054 +v 2.410491 0.937898 0.321781 +v 2.357664 1.459947 -0.040053 +v 2.252009 1.178219 0.562102 +v 2.304836 1.540053 0.040054 +v 2.410491 1.178219 -0.562102 +v 2.357664 1.540053 -0.040054 +v 2.252009 0.937898 -0.321781 +v 2.304836 1.459947 0.040054 +v 2.410491 2.062103 -0.321781 +v 2.357664 1.540053 0.040054 +v 2.252009 1.821781 -0.562102 +v 2.304836 1.459947 -0.040054 +vt 0.166798 0.787037 +vt 0.174242 0.777939 +vt 0.181686 0.787037 +vt 0.219697 0.814815 +vt 0.181818 0.796296 +vt 0.219697 0.787037 +vt 0.181818 0.805556 +vt 0.219697 0.787037 +vt 0.219697 0.814815 +vt 0.181818 0.805556 +vt 0.219697 0.787037 +vt 0.219697 0.814815 +vt 0.181818 0.805556 +vt 0.219697 0.787037 +vt 0.219697 0.814815 +vt 0.179506 0.793470 +vt 0.174242 0.796135 +vt 0.168979 0.793470 +vt 0.168979 0.780604 +vt 0.179506 0.780604 +vt 0.181818 0.805556 +vt 0.181818 0.796296 +vt 0.181818 0.796296 +vt 0.181818 0.796296 +vt 0.212121 0.777778 +vt 0.204545 0.787037 +vt 0.204545 0.777778 +vt 0.189394 0.777778 +vt 0.181818 0.787037 +vt 0.181818 0.777778 +vt 0.234848 0.777778 +vt 0.227273 0.787037 +vt 0.227273 0.777778 +vt 0.219697 0.777778 +vt 0.212121 0.787037 +vt 0.196970 0.787037 +vt 0.196970 0.777778 +vt 0.189394 0.787037 +vt 0.242424 0.777778 +vt 0.234848 0.787037 +vt 0.219697 0.787037 +vt 0.242424 0.787037 +vn 1.0000 0.0000 0.0000 +vn 0.9063 0.2988 -0.2988 +vn 0.9063 0.2988 0.2988 +vn 0.9063 -0.2988 0.2988 +vn 0.9063 -0.2988 -0.2988 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.0000 -1.0000 +s off +f 53/73/15 55/74/15 49/75/15 +f 57/76/16 60/77/16 59/78/16 +f 62/79/17 63/80/17 61/81/17 +f 66/82/18 67/83/18 65/84/18 +f 70/85/19 71/86/19 69/87/19 +f 49/75/15 50/88/15 51/89/15 +f 51/89/15 52/90/15 53/73/15 +f 53/73/15 54/91/15 55/74/15 +f 55/74/15 56/92/15 49/75/15 +f 49/75/15 51/89/15 53/73/15 +f 57/76/16 58/93/16 60/77/16 +f 62/79/17 64/94/17 63/80/17 +f 66/82/18 68/95/18 67/83/18 +f 70/85/19 72/96/19 71/86/19 +s 1 +f 43/97/20 50/98/21 42/99/21 +f 48/100/22 55/101/23 47/102/23 +f 46/103/24 53/104/25 45/105/25 +f 44/106/26 51/107/20 43/97/20 +f 42/99/21 49/108/27 41/109/27 +f 41/109/27 56/110/22 48/100/22 +f 47/111/23 54/112/24 46/103/24 +f 45/105/25 52/113/26 44/106/26 +f 43/97/20 51/107/20 50/98/21 +f 48/100/22 56/110/22 55/101/23 +f 46/103/24 54/112/24 53/104/25 +f 44/106/26 52/113/26 51/107/20 +f 42/99/21 50/98/21 49/108/27 +f 41/109/27 49/108/27 56/110/22 +f 47/111/23 55/114/23 54/112/24 +f 45/105/25 53/104/25 52/113/26 +o Compressor +v -1.500000 0.000000 1.500000 +v 2.000000 0.000000 1.500000 +v -1.500000 0.000000 -1.500000 +v 2.000000 0.000000 -1.500000 +v -1.500000 1.000000 -1.500000 +v -1.500000 1.000000 1.500000 +v 1.000000 1.000000 1.500000 +v 1.000000 1.000000 -1.500000 +v 1.000000 3.000000 1.500000 +v 2.000000 3.000000 1.500000 +v 2.000000 3.000000 -1.500000 +v 1.000000 3.000000 -1.500000 +v -0.250000 1.000000 -1.000000 +v 0.250000 1.000000 -1.000000 +v -0.250000 1.000000 -1.500000 +v 0.250000 1.000000 -1.500000 +v -0.250000 8.500000 -1.500000 +v -0.250000 8.500000 -1.000000 +v 0.250000 8.500000 -1.000000 +v 0.250000 8.500000 -1.500000 +v -0.250000 1.000000 1.500000 +v 0.250000 1.000000 1.500000 +v -0.250000 1.000000 1.000000 +v 0.250000 1.000000 1.000000 +v -0.250000 8.500000 1.000000 +v -0.250000 8.500000 1.500000 +v 0.250000 8.500000 1.500000 +v 0.250000 8.500000 1.000000 +v 0.000000 1.000000 -1.250000 +v -0.883883 1.000000 -0.883883 +v -1.250000 1.000000 0.000000 +v -0.883883 1.000000 0.883883 +v 0.000000 1.000000 1.250000 +v 0.883884 1.000000 0.883883 +v 1.250000 1.000000 -0.000000 +v 0.883884 1.000000 -0.883883 +v 0.000000 3.500000 -1.250000 +v -0.883883 3.500000 -0.883883 +v -1.250000 3.500000 0.000000 +v -0.883883 3.500000 0.883883 +v 0.000000 3.500000 1.250000 +v 0.883884 3.500000 0.883883 +v 1.250000 3.500000 -0.000000 +v 0.883884 3.500000 -0.883883 +v 0.000000 4.000000 -1.000000 +v -0.707107 4.000000 -0.707107 +v -1.000000 4.000000 0.000000 +v -0.707107 4.000000 0.707107 +v 0.000000 4.000000 1.000000 +v 0.707107 4.000000 0.707107 +v 1.000000 4.000000 -0.000000 +v 0.707107 4.000000 -0.707107 +v 1.000000 2.875000 -1.187500 +v 1.000000 2.875000 -1.312500 +v 1.000000 2.625000 -1.187500 +v 1.000000 2.625000 -1.312500 +v -0.750000 2.875000 -1.187500 +v -0.750000 2.875000 -1.312500 +v -0.562500 2.625000 -1.187500 +v -0.562500 2.625000 -1.312500 +v -1.250000 1.000000 -1.187500 +v -1.250000 1.000000 -1.312500 +v -1.500000 1.000000 -1.187500 +v -1.500000 1.000000 -1.312500 +v 1.000000 2.875000 1.312500 +v 1.000000 2.875000 1.187500 +v 1.000000 2.625000 1.312500 +v 1.000000 2.625000 1.187500 +v -0.750000 2.875000 1.312500 +v -0.750000 2.875000 1.187500 +v -0.562500 2.625000 1.312500 +v -0.562500 2.625000 1.187500 +v -1.250000 1.000000 1.312500 +v -1.250000 1.000000 1.187500 +v -1.500000 1.000000 1.312500 +v -1.500000 1.000000 1.187500 +v 2.000000 2.500000 1.000000 +v 2.000000 0.500000 1.000000 +v 2.000000 2.500000 -1.000000 +v 2.000000 0.500000 -1.000000 +v 2.250000 2.500000 -1.000000 +v 2.250000 2.500000 1.000000 +v 2.250000 0.500000 1.000000 +v 2.250000 0.500000 -1.000000 +v 2.250000 1.500000 -0.750000 +v 2.250000 2.030330 -0.530330 +v 2.250000 2.250000 0.000000 +v 2.250000 2.030330 0.530330 +v 2.250000 1.500000 0.750000 +v 2.250000 0.969670 0.530330 +v 2.250000 0.750000 -0.000000 +v 2.250000 0.969670 -0.530330 +v 2.250000 1.500000 -1.000000 +v 2.250000 2.207107 -0.707107 +v 2.250000 2.500000 0.000000 +v 2.250000 2.207107 0.707107 +v 2.250000 1.500000 1.000000 +v 2.250000 0.792893 0.707107 +v 2.250000 0.500000 -0.000000 +v 2.250000 0.792893 -0.707107 +v 2.500000 2.030330 -0.530330 +v 2.500000 1.500000 -0.750000 +v 2.500000 2.250000 0.000000 +v 2.500000 2.030330 0.530330 +v 2.500000 1.500000 0.750000 +v 2.500000 0.969670 0.530330 +v 2.500000 0.750000 -0.000000 +v 2.500000 0.969670 -0.530330 +v 2.500000 2.207107 -0.707107 +v 2.500000 1.500000 -1.000000 +v 2.500000 2.500000 0.000000 +v 2.500000 2.207107 0.707107 +v 2.500000 1.500000 1.000000 +v 2.500000 0.792893 0.707107 +v 2.500000 0.500000 -0.000000 +v 2.500000 0.792893 -0.707107 +v 2.437500 1.562500 0.750000 +v 2.437500 1.437500 0.750000 +v 2.437500 1.562500 -0.750000 +v 2.437500 1.437500 -0.750000 +v 2.437500 1.937500 0.750000 +v 2.437500 1.812500 0.750000 +v 2.437500 1.937500 -0.750000 +v 2.437500 1.812500 -0.750000 +v 2.437500 1.187500 0.750000 +v 2.437500 1.062500 0.750000 +v 2.437500 1.187500 -0.750000 +v 2.437500 1.062500 -0.750000 +v 1.000000 1.750000 -1.375000 +v 1.000000 1.838388 -1.338388 +v 1.000000 1.875000 -1.250000 +v 1.000000 1.838388 -1.161612 +v 1.000000 1.750000 -1.125000 +v 1.000000 1.661612 -1.161612 +v 1.000000 1.625000 -1.250000 +v 1.000000 1.661612 -1.338388 +v -0.500000 1.750000 -1.375000 +v -0.500000 1.838388 -1.338388 +v -0.500000 1.875000 -1.250000 +v -0.500000 1.838388 -1.161612 +v -0.500000 1.750000 -1.125000 +v -0.500000 1.661612 -1.161612 +v -0.500000 1.625000 -1.250000 +v -0.500000 1.661612 -1.338388 +v -0.676777 1.750000 -1.301777 +v -0.650888 1.838388 -1.275888 +v -0.588388 1.875000 -1.213388 +v -0.525888 1.838388 -1.150888 +v -0.525888 1.661612 -1.150888 +v -0.588388 1.625000 -1.213388 +v -0.650888 1.661612 -1.275888 +v -0.750000 1.750000 -1.125000 +v -0.713388 1.838388 -1.125000 +v -0.625000 1.875000 -1.125000 +v -0.536612 1.838388 -1.125000 +v -0.536612 1.661612 -1.125000 +v -0.625000 1.625000 -1.125000 +v -0.713388 1.661612 -1.125000 +v -0.500000 1.750000 -0.875000 +v -0.750000 1.750000 -0.875000 +v -0.713388 1.838388 -0.875000 +v -0.625000 1.875000 -0.875000 +v -0.536612 1.838388 -0.875000 +v -0.536612 1.661612 -0.875000 +v -0.625000 1.625000 -0.875000 +v -0.713388 1.661612 -0.875000 +v 1.000000 1.250000 -1.375000 +v 1.000000 1.338388 -1.338388 +v 1.000000 1.375000 -1.250000 +v 1.000000 1.338388 -1.161612 +v 1.000000 1.250000 -1.125000 +v 1.000000 1.161612 -1.161612 +v 1.000000 1.125000 -1.250000 +v 1.000000 1.161612 -1.338388 +v -0.500000 1.250000 -1.375000 +v -0.500000 1.338388 -1.338388 +v -0.500000 1.375000 -1.250000 +v -0.500000 1.338388 -1.161612 +v -0.500000 1.250000 -1.125000 +v -0.500000 1.161612 -1.161612 +v -0.500000 1.125000 -1.250000 +v -0.500000 1.161612 -1.338388 +v -0.676777 1.250000 -1.301777 +v -0.650888 1.338388 -1.275888 +v -0.588388 1.375000 -1.213388 +v -0.525888 1.338388 -1.150888 +v -0.525888 1.161612 -1.150888 +v -0.588388 1.125000 -1.213388 +v -0.650888 1.161612 -1.275888 +v -0.750000 1.250000 -1.125000 +v -0.713388 1.338388 -1.125000 +v -0.625000 1.375000 -1.125000 +v -0.536612 1.338388 -1.125000 +v -0.536612 1.161612 -1.125000 +v -0.625000 1.125000 -1.125000 +v -0.713388 1.161612 -1.125000 +v -0.500000 1.250000 -0.875000 +v -0.750000 1.250000 -0.875000 +v -0.713388 1.338388 -0.875000 +v -0.625000 1.375000 -0.875000 +v -0.536612 1.338388 -0.875000 +v -0.536612 1.161612 -0.875000 +v -0.625000 1.125000 -0.875000 +v -0.713388 1.161612 -0.875000 +v 1.000000 2.250000 -1.375000 +v 1.000000 2.338388 -1.338388 +v 1.000000 2.375000 -1.250000 +v 1.000000 2.338388 -1.161612 +v 1.000000 2.250000 -1.125000 +v 1.000000 2.161612 -1.161612 +v 1.000000 2.125000 -1.250000 +v 1.000000 2.161612 -1.338388 +v -0.500000 2.250000 -1.375000 +v -0.500000 2.338388 -1.338388 +v -0.500000 2.375000 -1.250000 +v -0.500000 2.338388 -1.161612 +v -0.500000 2.250000 -1.125000 +v -0.500000 2.161612 -1.161612 +v -0.500000 2.125000 -1.250000 +v -0.500000 2.161612 -1.338388 +v -0.676777 2.250000 -1.301777 +v -0.650888 2.338388 -1.275888 +v -0.588388 2.375000 -1.213388 +v -0.525888 2.338388 -1.150888 +v -0.525888 2.161612 -1.150888 +v -0.588388 2.125000 -1.213388 +v -0.650888 2.161612 -1.275888 +v -0.750000 2.250000 -1.125000 +v -0.713388 2.338388 -1.125000 +v -0.625000 2.375000 -1.125000 +v -0.536612 2.338388 -1.125000 +v -0.536612 2.161612 -1.125000 +v -0.625000 2.125000 -1.125000 +v -0.713388 2.161612 -1.125000 +v -0.500000 2.250000 -0.875000 +v -0.750000 2.250000 -0.875000 +v -0.713388 2.338388 -0.875000 +v -0.625000 2.375000 -0.875000 +v -0.536612 2.338388 -0.875000 +v -0.536612 2.161612 -0.875000 +v -0.625000 2.125000 -0.875000 +v -0.713388 2.161612 -0.875000 +v 1.000000 1.750000 1.375000 +v 1.000000 1.838388 1.338388 +v 1.000000 1.875000 1.250000 +v 1.000000 1.838388 1.161612 +v 1.000000 1.750000 1.125000 +v 1.000000 1.661612 1.161612 +v 1.000000 1.625000 1.250000 +v 1.000000 1.661612 1.338388 +v -0.500000 1.750000 1.375000 +v -0.500000 1.838388 1.338388 +v -0.500000 1.875000 1.250000 +v -0.500000 1.838388 1.161612 +v -0.500000 1.750000 1.125000 +v -0.500000 1.661612 1.161612 +v -0.500000 1.625000 1.250000 +v -0.500000 1.661612 1.338388 +v -0.676777 1.750000 1.301777 +v -0.650888 1.838388 1.275888 +v -0.588388 1.875000 1.213388 +v -0.525888 1.838388 1.150888 +v -0.525888 1.661612 1.150888 +v -0.588388 1.625000 1.213388 +v -0.650888 1.661612 1.275888 +v -0.750000 1.750000 1.125000 +v -0.713388 1.838388 1.125000 +v -0.625000 1.875000 1.125000 +v -0.536612 1.838388 1.125000 +v -0.536612 1.661612 1.125000 +v -0.625000 1.625000 1.125000 +v -0.713388 1.661612 1.125000 +v -0.500000 1.750000 0.875000 +v -0.750000 1.750000 0.875000 +v -0.713388 1.838388 0.875000 +v -0.625000 1.875000 0.875000 +v -0.536612 1.838388 0.875000 +v -0.536612 1.661612 0.875000 +v -0.625000 1.625000 0.875000 +v -0.713388 1.661612 0.875000 +v 1.000000 1.250000 1.375000 +v 1.000000 1.338388 1.338388 +v 1.000000 1.375000 1.250000 +v 1.000000 1.338388 1.161612 +v 1.000000 1.250000 1.125000 +v 1.000000 1.161612 1.161612 +v 1.000000 1.125000 1.250000 +v 1.000000 1.161612 1.338388 +v -0.500000 1.250000 1.375000 +v -0.500000 1.338388 1.338388 +v -0.500000 1.375000 1.250000 +v -0.500000 1.338388 1.161612 +v -0.500000 1.250000 1.125000 +v -0.500000 1.161612 1.161612 +v -0.500000 1.125000 1.250000 +v -0.500000 1.161612 1.338388 +v -0.676777 1.250000 1.301777 +v -0.650888 1.338388 1.275888 +v -0.588388 1.375000 1.213388 +v -0.525888 1.338388 1.150888 +v -0.525888 1.161612 1.150888 +v -0.588388 1.125000 1.213388 +v -0.650888 1.161612 1.275888 +v -0.750000 1.250000 1.125000 +v -0.713388 1.338388 1.125000 +v -0.625000 1.375000 1.125000 +v -0.536612 1.338388 1.125000 +v -0.536612 1.161612 1.125000 +v -0.625000 1.125000 1.125000 +v -0.713388 1.161612 1.125000 +v -0.500000 1.250000 0.875000 +v -0.750000 1.250000 0.875000 +v -0.713388 1.338388 0.875000 +v -0.625000 1.375000 0.875000 +v -0.536612 1.338388 0.875000 +v -0.536612 1.161612 0.875000 +v -0.625000 1.125000 0.875000 +v -0.713388 1.161612 0.875000 +v 1.000000 2.250000 1.375000 +v 1.000000 2.338388 1.338388 +v 1.000000 2.375000 1.250000 +v 1.000000 2.338388 1.161612 +v 1.000000 2.250000 1.125000 +v 1.000000 2.161612 1.161612 +v 1.000000 2.125000 1.250000 +v 1.000000 2.161612 1.338388 +v -0.500000 2.250000 1.375000 +v -0.500000 2.338388 1.338388 +v -0.500000 2.375000 1.250000 +v -0.500000 2.338388 1.161612 +v -0.500000 2.250000 1.125000 +v -0.500000 2.161612 1.161612 +v -0.500000 2.125000 1.250000 +v -0.500000 2.161612 1.338388 +v -0.676777 2.250000 1.301777 +v -0.650888 2.338388 1.275888 +v -0.588388 2.375000 1.213388 +v -0.525888 2.338388 1.150888 +v -0.525888 2.161612 1.150888 +v -0.588388 2.125000 1.213388 +v -0.650888 2.161612 1.275888 +v -0.750000 2.250000 1.125000 +v -0.713388 2.338388 1.125000 +v -0.625000 2.375000 1.125000 +v -0.536612 2.338388 1.125000 +v -0.536612 2.161612 1.125000 +v -0.625000 2.125000 1.125000 +v -0.713388 2.161612 1.125000 +v -0.500000 2.250000 0.875000 +v -0.750000 2.250000 0.875000 +v -0.713388 2.338388 0.875000 +v -0.625000 2.375000 0.875000 +v -0.536612 2.338388 0.875000 +v -0.536612 2.161612 0.875000 +v -0.625000 2.125000 0.875000 +v -0.713388 2.161612 0.875000 +v -1.375000 2.750000 0.500000 +v -1.375000 1.750000 0.500000 +v -1.375000 2.750000 -0.500000 +v -1.375000 1.750000 -0.500000 +v -1.000000 2.750000 -0.500000 +v -1.000000 2.750000 0.500000 +v -1.000000 1.750000 0.500000 +v -1.000000 1.750000 -0.500000 +v 1.750000 3.000000 -0.125000 +v 1.661612 3.000000 -0.088388 +v 1.625000 3.000000 0.000000 +v 1.661612 3.000000 0.088388 +v 1.750000 3.000000 0.125000 +v 1.838388 3.000000 0.088388 +v 1.875000 3.000000 -0.000000 +v 1.838388 3.000000 -0.088388 +v 1.750000 3.625000 -0.125000 +v 1.661612 3.625000 -0.088388 +v 1.625000 3.625000 0.000000 +v 1.661612 3.625000 0.088388 +v 1.750000 3.625000 0.125000 +v 1.838388 3.625000 0.088388 +v 1.875000 3.625000 -0.000000 +v 1.838388 3.625000 -0.088388 +v 1.713388 3.713388 -0.125000 +v 1.650888 3.650888 -0.088388 +v 1.650888 3.650888 0.088388 +v 1.713388 3.713388 0.125000 +v 1.775888 3.775888 0.088388 +v 1.801777 3.801777 -0.000000 +v 1.775888 3.775888 -0.088388 +v 1.625000 3.750000 -0.125000 +v 1.625000 3.661612 -0.088388 +v 1.625000 3.661612 0.088388 +v 1.625000 3.750000 0.125000 +v 1.625000 3.838388 0.088388 +v 1.625000 3.875000 -0.000000 +v 1.625000 3.838388 -0.088388 +v 1.000000 3.625000 0.000000 +v 1.000000 3.750000 -0.125000 +v 1.000000 3.661612 -0.088388 +v 1.000000 3.661612 0.088388 +v 1.000000 3.750000 0.125000 +v 1.000000 3.838388 0.088388 +v 1.000000 3.875000 -0.000000 +v 1.000000 3.838388 -0.088388 +v 1.750000 3.000000 -0.625000 +v 1.661612 3.000000 -0.588388 +v 1.625000 3.000000 -0.500000 +v 1.661612 3.000000 -0.411612 +v 1.750000 3.000000 -0.375000 +v 1.838388 3.000000 -0.411612 +v 1.875000 3.000000 -0.500000 +v 1.838388 3.000000 -0.588388 +v 1.750000 3.625000 -0.625000 +v 1.661612 3.625000 -0.588388 +v 1.625000 3.625000 -0.500000 +v 1.661612 3.625000 -0.411612 +v 1.750000 3.625000 -0.375000 +v 1.838388 3.625000 -0.411612 +v 1.875000 3.625000 -0.500000 +v 1.838388 3.625000 -0.588388 +v 1.713388 3.713388 -0.625000 +v 1.650888 3.650888 -0.588388 +v 1.650888 3.650888 -0.411612 +v 1.713388 3.713388 -0.375000 +v 1.775888 3.775888 -0.411612 +v 1.801777 3.801777 -0.500000 +v 1.775888 3.775888 -0.588388 +v 1.625000 3.750000 -0.625000 +v 1.625000 3.661612 -0.588388 +v 1.625000 3.661612 -0.411612 +v 1.625000 3.750000 -0.375000 +v 1.625000 3.838388 -0.411612 +v 1.625000 3.875000 -0.500000 +v 1.625000 3.838388 -0.588388 +v 0.812500 3.625000 -0.500000 +v 0.812500 3.750000 -0.625000 +v 0.812500 3.661612 -0.588388 +v 0.812500 3.661612 -0.411612 +v 0.812500 3.750000 -0.375000 +v 0.812500 3.838388 -0.411612 +v 0.812500 3.875000 -0.500000 +v 0.812500 3.838388 -0.588388 +v 1.750000 3.000000 0.375000 +v 1.661612 3.000000 0.411612 +v 1.625000 3.000000 0.500000 +v 1.661612 3.000000 0.588388 +v 1.750000 3.000000 0.625000 +v 1.838388 3.000000 0.588388 +v 1.875000 3.000000 0.500000 +v 1.838388 3.000000 0.411612 +v 1.750000 3.625000 0.375000 +v 1.661612 3.625000 0.411612 +v 1.625000 3.625000 0.500000 +v 1.661612 3.625000 0.588388 +v 1.750000 3.625000 0.625000 +v 1.838388 3.625000 0.588388 +v 1.875000 3.625000 0.500000 +v 1.838388 3.625000 0.411612 +v 1.713388 3.713388 0.375000 +v 1.650888 3.650888 0.411612 +v 1.650888 3.650888 0.588388 +v 1.713388 3.713388 0.625000 +v 1.775888 3.775888 0.588388 +v 1.801777 3.801777 0.500000 +v 1.775888 3.775888 0.411612 +v 1.625000 3.750000 0.375000 +v 1.625000 3.661612 0.411612 +v 1.625000 3.661612 0.588388 +v 1.625000 3.750000 0.625000 +v 1.625000 3.838388 0.588388 +v 1.625000 3.875000 0.500000 +v 1.625000 3.838388 0.411612 +v 0.812500 3.625000 0.500000 +v 0.812500 3.750000 0.375000 +v 0.812500 3.661612 0.411612 +v 0.812500 3.661612 0.588388 +v 0.812500 3.750000 0.625000 +v 0.812500 3.838388 0.588388 +v 0.812500 3.875000 0.500000 +v 0.812500 3.838388 0.411612 +vt 0.515152 0.259259 +vt 0.333333 0.518519 +vt 0.333333 0.259259 +vt 0.575758 0.592593 +vt 0.515152 0.740741 +vt 0.515152 0.518519 +vt 0.121212 0.518519 +vt 0.272727 0.592593 +vt 0.121212 0.592593 +vt 0.515152 0.185185 +vt 0.333333 0.000000 +vt 0.333333 0.185185 +vt 0.333333 0.740741 +vt 0.515152 0.814815 +vt 0.333333 0.814815 +vt 0.363636 0.555556 +vt 0.333333 0.962963 +vt 0.515152 0.962963 +vt 0.909091 0.777778 +vt 0.939394 0.814815 +vt 0.909091 0.814815 +vt 0.787879 0.777778 +vt 0.818182 0.814815 +vt 0.787879 0.814815 +vt 0.878788 0.222222 +vt 0.848485 0.777778 +vt 0.848485 0.222222 +vt 0.818182 0.777778 +vt 0.818182 0.222222 +vt 0.787879 0.222222 +vt 0.757576 0.777778 +vt 0.757576 0.222222 +vt 1.000000 0.222222 +vt 0.969697 0.777778 +vt 0.969697 0.222222 +vt 0.939394 0.777778 +vt 0.939394 0.222222 +vt 0.909091 0.222222 +vt 0.878788 0.777778 +vt 0.878788 0.222222 +vt 0.575758 0.222250 +vt 0.618597 0.243937 +vt 0.636341 0.296296 +vt 0.515152 0.462963 +vt 0.609848 0.444444 +vt 0.621212 0.462963 +vt 0.515152 0.472222 +vt 0.609848 0.490741 +vt 0.515152 0.490741 +vt 0.515152 0.435185 +vt 0.515152 0.444444 +vt 0.628788 0.435185 +vt 0.734848 0.444444 +vt 0.628788 0.444444 +vt 0.742424 0.472222 +vt 0.628788 0.490741 +vt 0.621212 0.472222 +vt 0.742424 0.462963 +vt 0.515152 0.398148 +vt 0.609848 0.379630 +vt 0.621212 0.398148 +vt 0.515152 0.407407 +vt 0.609848 0.425926 +vt 0.515152 0.425926 +vt 0.609848 0.435185 +vt 0.515152 0.435185 +vt 0.628788 0.425926 +vt 0.734848 0.435185 +vt 0.628788 0.435185 +vt 0.742424 0.407407 +vt 0.621212 0.407407 +vt 0.628788 0.379630 +vt 0.742424 0.398148 +vt 0.272727 0.740741 +vt 0.727273 0.518519 +vt 0.727273 0.592593 +vt 0.257576 0.592593 +vt 0.136364 0.611111 +vt 0.136364 0.592593 +vt 0.484848 0.703704 +vt 0.257576 0.759259 +vt 0.136364 0.759259 +vt 0.136364 0.777778 +vt 0.257576 0.777778 +vt 0.272727 0.759259 +vt 0.257576 0.611111 +vt 0.272727 0.611111 +vt 0.121212 0.611111 +vt 0.121212 0.759259 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.128788 0.814815 +vt 0.166667 0.796296 +vt 0.159091 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.796296 +vt 0.159091 0.814815 +vt 0.128788 0.814815 +vt 0.121212 0.842593 +vt 0.212121 0.851852 +vt 0.121212 0.851852 +vt 0.121212 0.851852 +vt 0.212121 0.861111 +vt 0.121212 0.861111 +vt 0.121212 0.833333 +vt 0.212121 0.842593 +vt 0.121212 0.842593 +vt 0.143939 0.962963 +vt 0.204545 0.888889 +vt 0.204545 0.962963 +vt 0.143939 0.888889 +vt 0.204545 0.861111 +vt 0.143939 0.990741 +vt 0.121212 0.888889 +vt 0.227273 0.962963 +vt 0.575758 0.740741 +vt 0.515152 0.000000 +vt 0.484848 0.555556 +vt 0.878788 0.777778 +vt 1.000000 0.777778 +vt 0.618597 0.348655 +vt 0.515174 0.296296 +vt 0.575758 0.370343 +vt 0.532919 0.348655 +vt 0.532919 0.243937 +vt 0.609848 0.435185 +vt 0.734848 0.435185 +vt 0.734848 0.490741 +vt 0.515152 0.379630 +vt 0.734848 0.425926 +vt 0.734848 0.379630 +vt 0.363636 0.703704 +vt 0.166667 0.796296 +vt 0.121212 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.166667 0.796296 +vt 0.212121 0.842593 +vt 0.212121 0.851852 +vt 0.212121 0.833333 +vt 0.143939 0.861111 +vt 0.204545 0.990741 +vt 0.121212 0.962963 +vt 0.227273 0.888889 +vt 0.818182 -0.000000 +vt 0.757576 0.185185 +vt 0.757576 -0.000000 +vt 0.696970 -0.000000 +vt 0.636364 0.185185 +vt 0.636364 0.000000 +vt 0.575758 0.185185 +vt 0.575758 0.000000 +vt 1.000000 -0.000000 +vt 0.939394 0.185185 +vt 0.939394 -0.000000 +vt 0.878788 -0.000000 +vt 0.818182 0.185185 +vt 0.696970 0.185185 +vt 0.515152 0.185185 +vt 0.515152 0.000000 +vt 0.878788 0.185185 +vt 0.750000 0.222222 +vt 0.704545 0.222222 +vt 0.810606 0.222222 +vt 0.765152 0.222222 +vt 0.825758 0.222222 +vt 0.886364 0.222222 +vt 1.000000 0.185185 +vt 0.946970 0.222222 +vt 0.522727 0.222222 +vt 0.628788 0.222222 +vt 0.583333 0.222222 +vt 0.643939 0.222222 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.166667 0.777778 +vt 0.121212 0.777778 +vt 0.128788 0.833333 +vt 0.159091 0.833333 +vt 0.757576 0.333333 +vt 0.750000 0.222222 +vt 0.757576 0.222222 +vt 0.712121 0.333333 +vt 0.704545 0.222222 +vt 0.712121 0.222222 +vt 0.727273 0.333333 +vt 0.719697 0.222222 +vt 0.727273 0.222222 +vt 0.734848 0.333333 +vt 0.734848 0.222222 +vt 0.750000 0.333333 +vt 0.742424 0.222222 +vt 0.704545 0.333333 +vt 0.696970 0.222222 +vt 0.719697 0.333333 +vt 0.742424 0.333333 +vt 0.734848 0.347222 +vt 0.727273 0.347222 +vt 0.742424 0.337963 +vt 0.750000 0.347222 +vt 0.742424 0.347222 +vt 0.712121 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.719697 0.347222 +vt 0.712121 0.356481 +vt 0.704545 0.351852 +vt 0.727273 0.361111 +vt 0.719697 0.361111 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.757576 0.347222 +vt 0.750000 0.342593 +vt 0.750000 0.351852 +vt 0.696970 0.347222 +vt 0.719697 0.379630 +vt 0.704545 0.361111 +vt 0.696970 0.379630 +vt 0.696970 0.361111 +vt 0.727273 0.379630 +vt 0.757576 0.361111 +vt 0.750000 0.379630 +vt 0.750000 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.734848 0.379630 +vt 0.704545 0.379630 +vt 0.757576 0.333333 +vt 0.750000 0.222222 +vt 0.757576 0.222222 +vt 0.712121 0.333333 +vt 0.704545 0.222222 +vt 0.712121 0.222222 +vt 0.727273 0.333333 +vt 0.719697 0.222222 +vt 0.727273 0.222222 +vt 0.734848 0.333333 +vt 0.734848 0.222222 +vt 0.750000 0.333333 +vt 0.742424 0.222222 +vt 0.704545 0.333333 +vt 0.696970 0.222222 +vt 0.719697 0.333333 +vt 0.742424 0.333333 +vt 0.734848 0.347222 +vt 0.727273 0.347222 +vt 0.742424 0.337963 +vt 0.750000 0.347222 +vt 0.742424 0.347222 +vt 0.712121 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.719697 0.347222 +vt 0.712121 0.356481 +vt 0.704545 0.351852 +vt 0.727273 0.361111 +vt 0.719697 0.361111 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.757576 0.347222 +vt 0.750000 0.342593 +vt 0.750000 0.351852 +vt 0.696970 0.347222 +vt 0.719697 0.379630 +vt 0.704545 0.361111 +vt 0.696970 0.379630 +vt 0.696970 0.361111 +vt 0.727273 0.379630 +vt 0.757576 0.361111 +vt 0.750000 0.379630 +vt 0.750000 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.734848 0.379630 +vt 0.704545 0.379630 +vt 0.757576 0.333333 +vt 0.750000 0.222222 +vt 0.757576 0.222222 +vt 0.712121 0.333333 +vt 0.704545 0.222222 +vt 0.712121 0.222222 +vt 0.727273 0.333333 +vt 0.719697 0.222222 +vt 0.727273 0.222222 +vt 0.734848 0.333333 +vt 0.734848 0.222222 +vt 0.750000 0.333333 +vt 0.742424 0.222222 +vt 0.704545 0.333333 +vt 0.696970 0.222222 +vt 0.719697 0.333333 +vt 0.742424 0.333333 +vt 0.734848 0.347222 +vt 0.727273 0.347222 +vt 0.742424 0.337963 +vt 0.750000 0.347222 +vt 0.742424 0.347222 +vt 0.712121 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.719697 0.347222 +vt 0.712121 0.356481 +vt 0.704545 0.351852 +vt 0.727273 0.361111 +vt 0.719697 0.361111 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.757576 0.347222 +vt 0.750000 0.342593 +vt 0.750000 0.351852 +vt 0.696970 0.347222 +vt 0.719697 0.379630 +vt 0.704545 0.361111 +vt 0.696970 0.379630 +vt 0.696970 0.361111 +vt 0.727273 0.379630 +vt 0.757576 0.361111 +vt 0.750000 0.379630 +vt 0.750000 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.734848 0.379630 +vt 0.704545 0.379630 +vt 0.704545 0.222222 +vt 0.696970 0.333333 +vt 0.696970 0.222222 +vt 0.750000 0.222222 +vt 0.742424 0.333333 +vt 0.742424 0.222222 +vt 0.734848 0.222222 +vt 0.727273 0.333333 +vt 0.727273 0.222222 +vt 0.719697 0.333333 +vt 0.719697 0.222222 +vt 0.712121 0.222222 +vt 0.704545 0.333333 +vt 0.757576 0.222222 +vt 0.750000 0.333333 +vt 0.734848 0.333333 +vt 0.712121 0.333333 +vt 0.719697 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.742424 0.347222 +vt 0.742424 0.337963 +vt 0.712121 0.347222 +vt 0.750000 0.347222 +vt 0.750000 0.342593 +vt 0.734848 0.347222 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.727273 0.347222 +vt 0.719697 0.361111 +vt 0.712121 0.356481 +vt 0.696970 0.347222 +vt 0.704545 0.351852 +vt 0.757576 0.347222 +vt 0.750000 0.351852 +vt 0.734848 0.379630 +vt 0.727273 0.361111 +vt 0.757576 0.379630 +vt 0.750000 0.361111 +vt 0.757576 0.361111 +vt 0.727273 0.379630 +vt 0.704545 0.379630 +vt 0.696970 0.361111 +vt 0.704545 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.719697 0.379630 +vt 0.750000 0.379630 +vt 0.704545 0.222222 +vt 0.696970 0.333333 +vt 0.696970 0.222222 +vt 0.750000 0.222222 +vt 0.742424 0.333333 +vt 0.742424 0.222222 +vt 0.734848 0.222222 +vt 0.727273 0.333333 +vt 0.727273 0.222222 +vt 0.719697 0.333333 +vt 0.719697 0.222222 +vt 0.712121 0.222222 +vt 0.704545 0.333333 +vt 0.757576 0.222222 +vt 0.750000 0.333333 +vt 0.734848 0.333333 +vt 0.712121 0.333333 +vt 0.719697 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.742424 0.347222 +vt 0.742424 0.337963 +vt 0.712121 0.347222 +vt 0.750000 0.347222 +vt 0.750000 0.342593 +vt 0.734848 0.347222 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.727273 0.347222 +vt 0.719697 0.361111 +vt 0.712121 0.356481 +vt 0.696970 0.347222 +vt 0.704545 0.351852 +vt 0.757576 0.347222 +vt 0.750000 0.351852 +vt 0.734848 0.379630 +vt 0.727273 0.361111 +vt 0.757576 0.379630 +vt 0.750000 0.361111 +vt 0.757576 0.361111 +vt 0.727273 0.379630 +vt 0.704545 0.379630 +vt 0.696970 0.361111 +vt 0.704545 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.719697 0.379630 +vt 0.750000 0.379630 +vt 0.704545 0.222222 +vt 0.696970 0.333333 +vt 0.696970 0.222222 +vt 0.750000 0.222222 +vt 0.742424 0.333333 +vt 0.742424 0.222222 +vt 0.734848 0.222222 +vt 0.727273 0.333333 +vt 0.727273 0.222222 +vt 0.719697 0.333333 +vt 0.719697 0.222222 +vt 0.712121 0.222222 +vt 0.704545 0.333333 +vt 0.757576 0.222222 +vt 0.750000 0.333333 +vt 0.734848 0.333333 +vt 0.712121 0.333333 +vt 0.719697 0.347222 +vt 0.712121 0.337963 +vt 0.704545 0.347222 +vt 0.704545 0.342593 +vt 0.742424 0.347222 +vt 0.742424 0.337963 +vt 0.712121 0.347222 +vt 0.750000 0.347222 +vt 0.750000 0.342593 +vt 0.734848 0.347222 +vt 0.742424 0.356481 +vt 0.734848 0.361111 +vt 0.727273 0.347222 +vt 0.719697 0.361111 +vt 0.712121 0.356481 +vt 0.696970 0.347222 +vt 0.704545 0.351852 +vt 0.757576 0.347222 +vt 0.750000 0.351852 +vt 0.734848 0.379630 +vt 0.727273 0.361111 +vt 0.757576 0.379630 +vt 0.750000 0.361111 +vt 0.757576 0.361111 +vt 0.727273 0.379630 +vt 0.704545 0.379630 +vt 0.696970 0.361111 +vt 0.704545 0.361111 +vt 0.712121 0.379630 +vt 0.712121 0.361111 +vt 0.742424 0.379630 +vt 0.742424 0.361111 +vt 0.719697 0.379630 +vt 0.750000 0.379630 +vt 0.696970 0.222222 +vt 0.689394 0.268519 +vt 0.689394 0.222222 +vt 0.674242 0.222222 +vt 0.666667 0.268519 +vt 0.666667 0.222222 +vt 0.659091 0.222222 +vt 0.651515 0.268519 +vt 0.651515 0.222222 +vt 0.643939 0.222222 +vt 0.636364 0.268519 +vt 0.636364 0.222222 +vt 0.681818 0.268519 +vt 0.681818 0.222222 +vt 0.674242 0.268519 +vt 0.659091 0.268519 +vt 0.643939 0.268519 +vt 0.651515 0.282407 +vt 0.651515 0.273148 +vt 0.681818 0.273148 +vt 0.689394 0.282407 +vt 0.681818 0.282407 +vt 0.674242 0.282407 +vt 0.666667 0.282407 +vt 0.659091 0.282407 +vt 0.643939 0.282407 +vt 0.643939 0.277778 +vt 0.666667 0.296296 +vt 0.651515 0.291667 +vt 0.689394 0.287037 +vt 0.681818 0.291667 +vt 0.674242 0.296296 +vt 0.659091 0.296296 +vt 0.643939 0.287037 +vt 0.636364 0.282407 +vt 0.689394 0.277778 +vt 0.696970 0.282407 +vt 0.666667 0.342593 +vt 0.651515 0.342593 +vt 0.651515 0.296296 +vt 0.689394 0.296296 +vt 0.681818 0.342593 +vt 0.681818 0.296296 +vt 0.696970 0.342593 +vt 0.689394 0.342593 +vt 0.674242 0.342593 +vt 0.643939 0.296296 +vt 0.636364 0.342593 +vt 0.636364 0.296296 +vt 0.659091 0.342593 +vt 0.643939 0.342593 +vt 0.696970 0.222222 +vt 0.689394 0.268519 +vt 0.689394 0.222222 +vt 0.674242 0.222222 +vt 0.666667 0.268519 +vt 0.666667 0.222222 +vt 0.659091 0.222222 +vt 0.651515 0.268519 +vt 0.651515 0.222222 +vt 0.643939 0.222222 +vt 0.636364 0.268519 +vt 0.636364 0.222222 +vt 0.681818 0.268519 +vt 0.681818 0.222222 +vt 0.674242 0.268519 +vt 0.659091 0.268519 +vt 0.643939 0.268519 +vt 0.651515 0.282407 +vt 0.651515 0.273148 +vt 0.681818 0.273148 +vt 0.689394 0.282407 +vt 0.681818 0.282407 +vt 0.674242 0.282407 +vt 0.666667 0.282407 +vt 0.659091 0.282407 +vt 0.643939 0.282407 +vt 0.643939 0.277778 +vt 0.666667 0.296296 +vt 0.659091 0.296296 +vt 0.651515 0.291667 +vt 0.681818 0.291667 +vt 0.674242 0.296296 +vt 0.643939 0.287037 +vt 0.636364 0.282407 +vt 0.689394 0.277778 +vt 0.696970 0.282407 +vt 0.689394 0.287037 +vt 0.666667 0.356481 +vt 0.651515 0.356481 +vt 0.651515 0.296296 +vt 0.689394 0.296296 +vt 0.681818 0.356481 +vt 0.681818 0.296296 +vt 0.696970 0.356481 +vt 0.689394 0.356481 +vt 0.674242 0.356481 +vt 0.643939 0.296296 +vt 0.636364 0.356481 +vt 0.636364 0.296296 +vt 0.659091 0.356481 +vt 0.643939 0.356481 +vt 0.696970 0.222222 +vt 0.689394 0.268519 +vt 0.689394 0.222222 +vt 0.674242 0.222222 +vt 0.666667 0.268519 +vt 0.666667 0.222222 +vt 0.659091 0.222222 +vt 0.651515 0.268519 +vt 0.651515 0.222222 +vt 0.643939 0.222222 +vt 0.636364 0.268519 +vt 0.636364 0.222222 +vt 0.681818 0.268519 +vt 0.681818 0.222222 +vt 0.674242 0.268519 +vt 0.659091 0.268519 +vt 0.643939 0.268519 +vt 0.651515 0.273148 +vt 0.659091 0.282407 +vt 0.651515 0.282407 +vt 0.681818 0.273148 +vt 0.689394 0.282407 +vt 0.681818 0.282407 +vt 0.674242 0.282407 +vt 0.666667 0.282407 +vt 0.643939 0.282407 +vt 0.643939 0.277778 +vt 0.666667 0.296296 +vt 0.651515 0.291667 +vt 0.681818 0.291667 +vt 0.674242 0.296296 +vt 0.659091 0.296296 +vt 0.643939 0.287037 +vt 0.636364 0.282407 +vt 0.689394 0.277778 +vt 0.696970 0.282407 +vt 0.689394 0.287037 +vt 0.666667 0.356481 +vt 0.651515 0.356481 +vt 0.651515 0.296296 +vt 0.689394 0.296296 +vt 0.681818 0.356481 +vt 0.681818 0.296296 +vt 0.696970 0.356481 +vt 0.689394 0.356481 +vt 0.674242 0.356481 +vt 0.643939 0.296296 +vt 0.636364 0.356481 +vt 0.636364 0.296296 +vt 0.659091 0.356481 +vt 0.643939 0.356481 +vt 0.871212 0.222222 +vt 0.931818 0.222222 +vt 0.992424 0.222222 +vt 0.568182 0.222222 +vt 0.689394 0.222222 +vt 0.696970 0.333333 +vt 0.757576 0.379630 +vt 0.696970 0.333333 +vt 0.757576 0.379630 +vt 0.696970 0.333333 +vt 0.757576 0.379630 +vt 0.757576 0.333333 +vt 0.696970 0.379630 +vt 0.757576 0.333333 +vt 0.696970 0.379630 +vt 0.757576 0.333333 +vt 0.696970 0.379630 +vt 0.696970 0.268519 +vt 0.696970 0.296296 +vt 0.696970 0.268519 +vt 0.696970 0.296296 +vt 0.696970 0.268519 +vt 0.696970 0.296296 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.9210 -0.3896 0.0000 +vn -0.9285 0.3714 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.6325 0.4472 -0.6325 +vn -0.8944 0.4472 0.0000 +vn -0.6325 0.4472 0.6325 +vn 0.0000 0.4472 0.8944 +vn 0.6325 0.4472 0.6325 +vn 0.8944 0.4472 -0.0000 +vn 0.6325 0.4472 -0.6325 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn -0.0196 0.9987 -0.0473 +vn -0.1866 0.0000 -0.9824 +vn -0.1448 -0.6794 -0.7194 +vn 0.1363 -0.7263 0.6737 +vn 0.1363 0.7263 0.6737 +vn -0.1448 0.6794 -0.7194 +vn -0.0196 -0.9987 -0.0473 +vn -0.5294 -0.6630 -0.5294 +vn 0.4617 -0.7574 0.4617 +vn -0.0671 -0.9955 -0.0671 +vn -0.0671 0.9955 -0.0671 +vn 0.4617 0.7574 0.4617 +vn -0.5294 0.6630 -0.5294 +vn -0.0473 0.9987 -0.0196 +vn 0.6737 0.7263 0.1363 +vn -0.9824 -0.0000 -0.1866 +vn -0.7194 0.6794 -0.1448 +vn -0.0473 -0.9987 -0.0196 +vn -0.7194 -0.6794 -0.1448 +vn 0.6737 -0.7263 0.1363 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.0196 0.9987 0.0473 +vn -0.1866 0.0000 0.9824 +vn -0.1448 -0.6794 0.7194 +vn 0.1363 -0.7263 -0.6737 +vn 0.1363 0.7263 -0.6737 +vn -0.1448 0.6794 0.7194 +vn -0.0196 -0.9987 0.0473 +vn -0.5294 -0.6630 0.5294 +vn 0.4617 -0.7574 -0.4617 +vn -0.0671 0.9955 0.0671 +vn -0.0671 -0.9955 0.0671 +vn 0.4617 0.7574 -0.4617 +vn -0.5294 0.6630 0.5294 +vn -0.0473 0.9987 0.0196 +vn -0.7194 0.6794 0.1448 +vn -0.7194 -0.6794 0.1448 +vn -0.0473 -0.9987 0.0196 +vn 0.6737 -0.7263 -0.1363 +vn 0.6737 0.7263 -0.1363 +vn -0.9824 -0.0000 0.1866 +vn -0.6737 -0.1363 -0.7263 +vn 0.9824 0.1866 -0.0000 +vn 0.0473 0.0196 0.9987 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1448 -0.6794 +vn 0.7194 0.1448 0.6794 +vn -0.6737 -0.1363 0.7263 +vn 0.0671 0.0671 0.9955 +vn -0.4617 -0.4617 -0.7574 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.5294 0.5294 0.6630 +vn -0.4617 -0.4617 0.7574 +vn 0.1866 0.9824 0.0000 +vn 0.0196 0.0473 0.9987 +vn -0.1363 -0.6737 -0.7263 +vn 0.0196 0.0473 -0.9987 +vn 0.1448 0.7194 -0.6794 +vn 0.1448 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +s off +f 75/115/28 74/116/28 73/117/28 +f 80/118/29 83/119/29 76/120/29 +f 73/121/30 79/122/30 78/123/30 +f 73/117/31 77/124/31 75/115/31 +f 79/125/32 77/124/32 78/126/32 +f 82/127/32 84/128/32 81/129/32 +f 76/120/33 150/130/33 74/116/33 +f 79/131/31 84/128/31 80/132/31 +f 99/133/32 97/134/32 98/135/32 +f 91/136/32 89/137/32 90/138/32 +f 85/139/31 89/140/31 87/141/31 +f 87/141/29 92/142/29 88/143/29 +f 86/144/30 90/145/30 85/146/30 +f 88/143/33 91/136/33 86/144/33 +f 93/147/31 97/148/31 95/149/31 +f 95/149/29 100/150/29 96/151/29 +f 94/152/30 98/153/30 93/154/30 +f 96/151/33 99/133/33 94/152/33 +f 123/155/32 124/156/32 117/157/32 +f 126/158/29 132/159/29 130/160/29 +f 130/160/32 125/161/32 126/158/32 +f 125/161/30 131/162/30 127/163/30 +f 127/164/28 132/159/28 128/165/28 +f 131/166/34 134/167/34 132/168/34 +f 135/169/30 131/170/30 129/171/30 +f 132/168/29 136/172/29 130/160/29 +f 136/172/35 129/171/35 130/160/35 +f 138/173/29 144/174/29 142/175/29 +f 142/175/32 137/176/32 138/173/32 +f 137/176/30 143/177/30 139/178/30 +f 139/178/28 144/179/28 140/180/28 +f 143/181/34 146/182/34 144/183/34 +f 147/184/30 143/181/30 141/185/30 +f 144/186/29 148/187/29 142/175/29 +f 148/187/35 141/185/35 142/175/35 +f 79/122/30 82/127/30 81/188/30 +f 80/118/29 75/189/29 77/190/29 +f 152/191/28 155/192/28 150/193/28 +f 151/194/33 76/120/33 83/119/33 +f 82/127/33 151/194/33 83/119/33 +f 150/130/33 82/127/33 74/116/33 +f 155/192/33 153/195/33 154/196/33 +f 149/197/32 153/195/32 151/198/32 +f 151/199/29 156/200/29 152/201/29 +f 150/202/30 154/196/30 149/203/30 +f 181/204/33 175/205/33 173/206/33 +f 174/207/33 181/208/33 173/209/33 +f 188/210/33 174/211/33 180/212/33 +f 187/213/33 180/214/33 179/215/33 +f 186/216/33 179/217/33 178/218/33 +f 185/219/33 178/220/33 177/221/33 +f 184/222/33 177/223/33 176/224/33 +f 183/225/33 176/226/33 175/227/33 +f 190/228/33 191/229/33 189/230/33 +f 194/231/33 195/232/33 193/233/33 +f 198/234/33 199/235/33 197/236/33 +f 431/237/31 430/238/31 429/239/31 +f 432/240/28 435/241/28 430/238/28 +f 429/239/32 433/242/32 431/237/32 +f 431/237/29 436/243/29 432/240/29 +f 430/238/30 434/244/30 429/239/30 +f 75/115/28 76/120/28 74/116/28 +f 80/118/29 84/245/29 83/119/29 +f 73/121/30 74/116/30 79/122/30 +f 73/117/31 78/126/31 77/124/31 +f 79/125/32 80/246/32 77/124/32 +f 82/127/32 83/119/32 84/128/32 +f 76/120/33 152/247/33 150/130/33 +f 79/131/31 81/129/31 84/128/31 +f 99/133/32 100/150/32 97/134/32 +f 91/136/32 92/142/32 89/137/32 +f 85/139/31 90/248/31 89/140/31 +f 87/141/29 89/140/29 92/142/29 +f 86/144/30 91/136/30 90/145/30 +f 88/143/33 92/142/33 91/136/33 +f 93/147/31 98/249/31 97/148/31 +f 95/149/29 97/148/29 100/150/29 +f 94/152/30 99/133/30 98/153/30 +f 96/151/33 100/150/33 99/133/33 +f 117/157/32 118/250/32 121/251/32 +f 118/250/32 119/252/32 121/251/32 +f 119/252/32 120/253/32 121/251/32 +f 121/251/32 122/254/32 117/157/32 +f 122/254/32 123/155/32 117/157/32 +f 126/158/29 128/165/29 132/159/29 +f 130/160/32 129/171/32 125/161/32 +f 125/161/30 129/171/30 131/162/30 +f 127/164/28 131/255/28 132/159/28 +f 131/166/34 133/256/34 134/167/34 +f 135/169/30 133/257/30 131/170/30 +f 132/168/29 134/167/29 136/172/29 +f 136/172/35 135/169/35 129/171/35 +f 138/173/29 140/258/29 144/174/29 +f 142/175/32 141/185/32 137/176/32 +f 137/176/30 141/185/30 143/177/30 +f 139/178/28 143/177/28 144/179/28 +f 143/181/34 145/259/34 146/182/34 +f 147/184/30 145/259/30 143/181/30 +f 144/186/29 146/260/29 148/187/29 +f 148/187/35 147/184/35 141/185/35 +f 79/122/30 74/116/30 82/127/30 +f 80/118/29 76/120/29 75/189/29 +f 152/191/28 156/200/28 155/192/28 +f 151/194/33 152/247/33 76/120/33 +f 82/127/33 149/261/33 151/194/33 +f 150/130/33 149/261/33 82/127/33 +f 155/192/33 156/200/33 153/195/33 +f 149/197/32 154/196/32 153/195/32 +f 151/199/29 153/195/29 156/200/29 +f 150/202/30 155/192/30 154/196/30 +f 181/204/33 183/262/33 175/205/33 +f 174/207/33 182/263/33 181/208/33 +f 188/210/33 182/264/33 174/211/33 +f 187/213/33 188/265/33 180/214/33 +f 186/216/33 187/266/33 179/217/33 +f 185/219/33 186/267/33 178/220/33 +f 184/222/33 185/268/33 177/223/33 +f 183/225/33 184/269/33 176/226/33 +f 190/228/33 192/270/33 191/229/33 +f 194/231/33 196/271/33 195/232/33 +f 198/234/33 200/272/33 199/235/33 +f 431/237/31 432/240/31 430/238/31 +f 432/240/28 436/273/28 435/241/28 +f 429/239/32 434/274/32 433/242/32 +f 431/237/29 433/275/29 436/243/29 +f 430/238/30 435/276/30 434/244/30 +s 1 +f 104/277/36 111/278/31 103/279/31 +f 102/280/37 109/281/29 101/282/29 +f 101/282/29 116/283/38 108/284/38 +f 107/285/33 114/286/39 106/287/39 +f 105/288/30 112/289/36 104/277/36 +f 103/279/31 110/290/37 102/280/37 +f 108/284/38 115/291/33 107/292/33 +f 106/287/39 113/293/30 105/288/30 +f 110/290/40 119/294/41 118/295/40 +f 111/278/41 120/296/42 119/297/41 +f 113/293/43 120/298/42 112/289/42 +f 114/286/44 121/299/43 113/293/43 +f 115/300/45 122/301/44 114/286/44 +f 116/283/46 123/302/45 115/291/45 +f 116/283/46 117/303/47 124/304/46 +f 110/290/40 117/305/47 109/281/47 +f 157/306/30 173/209/48 158/307/48 +f 165/308/29 188/210/49 172/309/49 +f 166/310/50 182/263/29 165/311/29 +f 158/312/48 175/205/28 159/313/28 +f 167/314/32 181/204/50 166/315/50 +f 159/316/28 176/226/49 160/317/49 +f 168/318/51 183/225/32 167/319/32 +f 160/320/49 177/223/29 161/321/29 +f 169/322/30 184/222/51 168/323/51 +f 161/324/29 178/220/50 162/325/50 +f 170/326/48 185/219/30 169/327/30 +f 162/328/50 179/217/32 163/329/32 +f 171/330/28 186/216/48 170/331/48 +f 163/332/32 180/214/51 164/333/51 +f 172/334/49 187/213/28 171/335/28 +f 164/336/51 174/211/30 157/337/30 +f 213/338/39 206/339/48 205/340/30 +f 211/341/52 204/342/51 203/343/32 +f 209/344/53 202/345/50 201/346/29 +f 216/347/54 201/346/29 208/348/49 +f 214/349/55 207/350/28 206/339/48 +f 212/351/56 205/352/30 204/342/51 +f 210/353/57 203/343/32 202/345/50 +f 215/354/58 208/348/49 207/350/28 +f 209/344/53 223/355/59 217/356/37 +f 215/357/58 221/358/60 222/359/61 +f 210/353/57 219/360/62 211/361/52 +f 216/347/54 222/359/61 223/355/59 +f 211/361/52 220/362/63 212/363/56 +f 209/344/53 218/364/64 210/353/57 +f 220/362/63 226/365/65 227/366/66 +f 218/364/64 224/367/67 225/368/68 +f 223/355/59 224/367/67 217/356/37 +f 221/358/60 229/369/69 222/359/61 +f 218/364/64 226/365/65 219/360/62 +f 222/359/61 230/370/70 223/355/59 +f 213/371/39 221/358/60 214/372/55 +f 221/358/60 213/371/39 228/373/71 +f 212/363/56 220/362/63 213/374/39 +f 220/362/63 227/366/66 213/374/39 +f 224/367/67 233/375/72 225/368/68 +f 227/376/66 231/377/33 213/378/39 +f 230/370/70 232/379/31 224/367/67 +f 213/380/39 236/381/73 228/382/71 +f 228/382/71 237/383/28 229/384/69 +f 225/368/68 234/385/32 226/386/65 +f 229/384/69 238/387/74 230/370/70 +f 226/386/65 235/388/75 227/376/66 +f 251/389/39 244/390/48 243/391/30 +f 249/392/52 242/393/51 241/394/32 +f 247/395/53 240/396/50 239/397/29 +f 254/398/54 239/397/29 246/399/49 +f 252/400/55 245/401/28 244/390/48 +f 250/402/56 243/403/30 242/393/51 +f 248/404/57 241/394/32 240/396/50 +f 253/405/58 246/399/49 245/401/28 +f 247/395/53 261/406/59 255/407/37 +f 253/408/58 259/409/60 260/410/61 +f 248/404/57 257/411/62 249/412/52 +f 254/398/54 260/410/61 261/406/59 +f 249/412/52 258/413/63 250/414/56 +f 247/395/53 256/415/64 248/404/57 +f 258/413/63 264/416/65 265/417/66 +f 256/415/64 262/418/67 263/419/68 +f 261/406/59 262/418/67 255/407/37 +f 259/409/60 267/420/69 260/410/61 +f 256/415/64 264/416/65 257/411/62 +f 260/410/61 268/421/70 261/406/59 +f 251/422/39 259/409/60 252/423/55 +f 259/409/60 251/422/39 266/424/71 +f 250/414/56 258/413/63 251/425/39 +f 258/413/63 265/417/66 251/425/39 +f 262/418/67 271/426/72 263/419/68 +f 265/427/66 269/428/33 251/429/39 +f 268/421/70 270/430/31 262/418/67 +f 251/431/39 274/432/73 266/433/71 +f 266/433/71 275/434/28 267/435/69 +f 263/419/68 272/436/32 264/437/65 +f 267/435/69 276/438/74 268/421/70 +f 264/437/65 273/439/75 265/427/66 +f 289/440/39 282/441/48 281/442/30 +f 287/443/52 280/444/51 279/445/32 +f 285/446/53 278/447/50 277/448/29 +f 292/449/54 277/448/29 284/450/49 +f 290/451/55 283/452/28 282/441/48 +f 288/453/56 281/454/30 280/444/51 +f 286/455/57 279/445/32 278/447/50 +f 291/456/58 284/450/49 283/452/28 +f 285/446/53 299/457/59 293/458/37 +f 291/459/58 297/460/60 298/461/61 +f 286/455/57 295/462/62 287/463/52 +f 292/449/54 298/461/61 299/457/59 +f 287/463/52 296/464/63 288/465/56 +f 285/446/53 294/466/64 286/455/57 +f 296/464/63 302/467/65 303/468/66 +f 294/466/64 300/469/67 301/470/68 +f 299/457/59 300/469/67 293/458/37 +f 297/460/60 305/471/69 298/461/61 +f 294/466/64 302/467/65 295/462/62 +f 299/457/59 305/471/69 306/472/70 +f 289/473/39 297/460/60 290/474/55 +f 297/460/60 289/473/39 304/475/71 +f 288/465/56 296/464/63 289/476/39 +f 296/464/63 303/468/66 289/476/39 +f 300/469/67 309/477/72 301/470/68 +f 303/478/66 307/479/33 289/480/39 +f 306/472/70 308/481/31 300/469/67 +f 289/482/39 312/483/73 304/484/71 +f 304/484/71 313/485/28 305/486/69 +f 301/470/68 310/487/32 302/488/65 +f 305/486/69 314/489/74 306/472/70 +f 302/488/65 311/490/75 303/478/66 +f 320/491/49 327/492/38 319/493/29 +f 318/494/50 325/495/76 317/496/32 +f 316/497/51 323/498/77 315/499/30 +f 315/499/30 330/500/78 322/501/48 +f 321/502/28 328/503/79 320/491/49 +f 319/504/29 326/505/80 318/494/50 +f 317/496/32 324/506/81 316/497/51 +f 322/501/48 329/507/82 321/502/28 +f 323/498/77 337/508/83 330/500/78 +f 329/509/82 335/510/84 328/511/79 +f 333/512/85 324/506/81 325/513/76 +f 330/500/78 336/514/86 329/509/82 +f 334/515/87 325/513/76 326/516/80 +f 332/517/88 323/498/77 324/506/81 +f 334/515/87 340/518/89 333/512/85 +f 339/519/90 331/520/36 332/517/88 +f 331/520/36 344/521/91 337/508/83 +f 343/522/92 335/510/84 336/514/86 +f 340/518/89 332/517/88 333/512/85 +f 344/521/91 336/514/86 337/508/83 +f 327/523/38 328/511/79 335/510/84 +f 335/510/84 342/524/93 327/523/38 +f 326/516/80 327/525/38 334/515/87 +f 334/515/87 327/525/38 341/526/94 +f 347/527/72 338/528/95 339/519/90 +f 345/529/33 341/530/94 327/531/38 +f 346/532/31 344/521/91 338/528/95 +f 350/533/73 327/534/38 342/535/93 +f 351/536/28 342/535/93 343/537/92 +f 348/538/32 339/519/90 340/539/89 +f 352/540/74 343/537/92 344/521/91 +f 349/541/75 340/539/89 341/530/94 +f 358/542/49 365/543/38 357/544/29 +f 356/545/50 363/546/76 355/547/32 +f 354/548/51 361/549/77 353/550/30 +f 353/550/30 368/551/78 360/552/48 +f 359/553/28 366/554/79 358/542/49 +f 357/555/29 364/556/80 356/545/50 +f 355/547/32 362/557/81 354/548/51 +f 360/552/48 367/558/82 359/553/28 +f 361/549/77 375/559/83 368/551/78 +f 367/560/82 373/561/84 366/562/79 +f 371/563/85 362/557/81 363/564/76 +f 368/551/78 374/565/86 367/560/82 +f 372/566/87 363/564/76 364/567/80 +f 370/568/88 361/549/77 362/557/81 +f 372/566/87 378/569/89 371/563/85 +f 377/570/90 369/571/36 370/568/88 +f 369/571/36 382/572/91 375/559/83 +f 381/573/92 373/561/84 374/565/86 +f 378/569/89 370/568/88 371/563/85 +f 382/572/91 374/565/86 375/559/83 +f 365/574/38 366/562/79 373/561/84 +f 373/561/84 380/575/93 365/574/38 +f 364/567/80 365/576/38 372/566/87 +f 372/566/87 365/576/38 379/577/94 +f 385/578/72 376/579/95 377/570/90 +f 383/580/33 379/581/94 365/582/38 +f 384/583/31 382/572/91 376/579/95 +f 388/584/73 365/585/38 380/586/93 +f 389/587/28 380/586/93 381/588/92 +f 386/589/32 377/570/90 378/590/89 +f 390/591/74 381/588/92 382/572/91 +f 387/592/75 378/590/89 379/581/94 +f 396/593/49 403/594/38 395/595/29 +f 394/596/50 401/597/76 393/598/32 +f 392/599/51 399/600/77 391/601/30 +f 391/601/30 406/602/78 398/603/48 +f 397/604/28 404/605/79 396/593/49 +f 395/606/29 402/607/80 394/596/50 +f 393/598/32 400/608/81 392/599/51 +f 398/603/48 405/609/82 397/604/28 +f 399/600/77 413/610/83 406/602/78 +f 405/611/82 411/612/84 404/613/79 +f 409/614/85 400/608/81 401/615/76 +f 406/602/78 412/616/86 405/611/82 +f 410/617/87 401/615/76 402/618/80 +f 408/619/88 399/600/77 400/608/81 +f 410/617/87 416/620/89 409/614/85 +f 415/621/90 407/622/36 408/619/88 +f 407/622/36 420/623/91 413/610/83 +f 419/624/92 411/612/84 412/616/86 +f 416/620/89 408/619/88 409/614/85 +f 420/623/91 412/616/86 413/610/83 +f 403/625/38 404/613/79 411/612/84 +f 411/612/84 418/626/93 403/625/38 +f 402/618/80 403/627/38 410/617/87 +f 410/617/87 403/627/38 417/628/94 +f 423/629/72 414/630/95 415/621/90 +f 421/631/33 417/632/94 403/633/38 +f 422/634/31 420/623/91 414/630/95 +f 426/635/73 403/636/38 418/637/93 +f 427/638/28 418/637/93 419/639/92 +f 424/640/32 415/621/90 416/641/89 +f 428/642/74 419/639/92 420/623/91 +f 425/643/75 416/641/89 417/632/94 +f 439/644/31 446/645/96 438/646/37 +f 444/647/38 451/648/97 443/649/33 +f 442/650/39 449/651/98 441/652/30 +f 440/653/36 447/654/74 439/655/31 +f 438/646/37 445/656/99 437/657/29 +f 437/657/29 452/658/100 444/647/38 +f 443/649/33 450/659/101 442/650/39 +f 441/652/30 448/660/102 440/653/36 +f 450/659/101 456/661/103 449/662/98 +f 445/663/99 454/664/104 453/665/105 +f 452/658/100 453/665/105 459/666/106 +f 450/659/101 458/667/75 457/668/107 +f 449/662/98 455/669/108 448/670/102 +f 452/658/100 458/667/75 451/648/97 +f 459/666/106 465/671/109 458/667/75 +f 457/668/107 463/672/110 456/661/103 +f 453/665/105 461/673/111 460/674/112 +f 459/666/106 460/674/112 466/675/113 +f 457/668/107 465/671/109 464/676/114 +f 456/661/103 462/677/115 455/669/108 +f 448/670/102 455/669/108 447/678/74 +f 455/669/108 462/677/115 447/678/74 +f 446/679/96 447/680/74 454/664/104 +f 454/664/104 447/680/74 461/673/111 +f 466/675/113 473/681/32 465/671/109 +f 464/676/114 471/682/30 463/683/110 +f 461/684/111 468/685/29 460/686/112 +f 461/684/111 467/687/28 469/688/49 +f 460/686/112 474/689/50 466/675/113 +f 462/690/115 467/691/28 447/692/74 +f 464/676/114 473/681/32 472/693/51 +f 463/683/110 470/694/48 462/690/115 +f 477/695/31 484/696/96 476/697/37 +f 482/698/38 489/699/97 481/700/33 +f 480/701/39 487/702/98 479/703/30 +f 478/704/36 485/705/74 477/706/31 +f 476/697/37 483/707/99 475/708/29 +f 475/708/29 490/709/100 482/698/38 +f 481/700/33 488/710/101 480/701/39 +f 479/703/30 486/711/102 478/704/36 +f 488/710/101 494/712/103 487/713/98 +f 483/714/99 492/715/104 491/716/105 +f 483/714/99 497/717/106 490/709/100 +f 488/710/101 496/718/75 495/719/107 +f 487/713/98 493/720/108 486/721/102 +f 490/709/100 496/718/75 489/699/97 +f 497/717/106 503/722/109 496/718/75 +f 494/712/103 502/723/114 501/724/110 +f 492/715/104 498/725/112 491/716/105 +f 497/717/106 498/725/112 504/726/113 +f 495/719/107 503/722/109 502/723/114 +f 494/712/103 500/727/115 493/720/108 +f 486/721/102 493/720/108 485/728/74 +f 493/720/108 500/727/115 485/728/74 +f 484/729/96 485/730/74 492/715/104 +f 492/715/104 485/730/74 499/731/111 +f 504/726/113 511/732/32 503/722/109 +f 502/723/114 509/733/30 501/734/110 +f 499/735/111 506/736/29 498/737/112 +f 499/735/111 505/738/28 507/739/49 +f 498/737/112 512/740/50 504/726/113 +f 500/741/115 505/742/28 485/743/74 +f 502/723/114 511/732/32 510/744/51 +f 501/734/110 508/745/48 500/741/115 +f 515/746/31 522/747/96 514/748/37 +f 520/749/38 527/750/97 519/751/33 +f 518/752/39 525/753/98 517/754/30 +f 516/755/36 523/756/74 515/757/31 +f 514/748/37 521/758/99 513/759/29 +f 513/759/29 528/760/100 520/749/38 +f 519/751/33 526/761/101 518/752/39 +f 517/754/30 524/762/102 516/755/36 +f 525/763/98 533/764/107 532/765/103 +f 521/766/99 530/767/104 529/768/105 +f 521/766/99 535/769/106 528/760/100 +f 526/761/101 534/770/75 533/764/107 +f 525/763/98 531/771/108 524/772/102 +f 528/760/100 534/770/75 527/750/97 +f 535/769/106 541/773/109 534/770/75 +f 533/764/107 539/774/110 532/765/103 +f 530/767/104 536/775/112 529/768/105 +f 529/768/105 542/776/113 535/769/106 +f 533/764/107 541/773/109 540/777/114 +f 531/771/108 539/774/110 538/778/115 +f 524/772/102 531/771/108 523/779/74 +f 531/771/108 538/778/115 523/779/74 +f 522/780/96 523/781/74 530/767/104 +f 530/767/104 523/781/74 537/782/111 +f 542/776/113 549/783/32 541/773/109 +f 540/777/114 547/784/30 539/785/110 +f 537/786/111 544/787/29 536/788/112 +f 537/786/111 543/789/28 545/790/49 +f 536/788/112 550/791/50 542/776/113 +f 538/792/115 543/793/28 523/794/74 +f 540/777/114 549/783/32 548/795/51 +f 539/785/110 546/796/48 538/792/115 +f 104/277/36 112/289/36 111/278/31 +f 102/280/37 110/290/37 109/281/29 +f 101/282/29 109/281/29 116/283/38 +f 107/285/33 115/300/33 114/286/39 +f 105/288/30 113/293/30 112/289/36 +f 103/279/31 111/278/31 110/290/37 +f 108/284/38 116/283/38 115/291/33 +f 106/287/39 114/286/39 113/293/30 +f 110/290/40 111/278/41 119/294/41 +f 111/278/41 112/289/42 120/296/42 +f 113/293/43 121/797/43 120/298/42 +f 114/286/44 122/798/44 121/299/43 +f 115/300/45 123/799/45 122/301/44 +f 116/283/46 124/800/46 123/302/45 +f 116/283/46 109/281/47 117/303/47 +f 110/290/40 118/801/40 117/305/47 +f 157/306/30 174/207/30 173/209/48 +f 165/308/29 182/264/29 188/210/49 +f 166/310/50 181/208/50 182/263/29 +f 158/312/48 173/206/48 175/205/28 +f 167/314/32 183/262/32 181/204/50 +f 159/316/28 175/227/28 176/226/49 +f 168/318/51 184/269/51 183/225/32 +f 160/320/49 176/224/49 177/223/29 +f 169/322/30 185/268/30 184/222/51 +f 161/324/29 177/221/29 178/220/50 +f 170/326/48 186/267/48 185/219/30 +f 162/328/50 178/218/50 179/217/32 +f 171/330/28 187/266/28 186/216/48 +f 163/332/32 179/215/32 180/214/51 +f 172/334/49 188/265/49 187/213/28 +f 164/336/51 180/212/51 174/211/30 +f 213/338/39 214/349/55 206/339/48 +f 211/341/52 212/351/56 204/342/51 +f 209/344/53 210/353/57 202/345/50 +f 216/347/54 209/344/53 201/346/29 +f 214/349/55 215/354/58 207/350/28 +f 212/351/56 213/802/39 205/352/30 +f 210/353/57 211/341/52 203/343/32 +f 215/354/58 216/347/54 208/348/49 +f 209/344/53 216/347/54 223/355/59 +f 215/357/58 214/372/55 221/358/60 +f 210/353/57 218/364/64 219/360/62 +f 216/347/54 215/357/58 222/359/61 +f 211/361/52 219/360/62 220/362/63 +f 209/344/53 217/356/37 218/364/64 +f 220/362/63 219/360/62 226/365/65 +f 218/364/64 217/356/37 224/367/67 +f 223/355/59 230/370/70 224/367/67 +f 221/358/60 228/373/71 229/369/69 +f 218/364/64 225/368/68 226/365/65 +f 222/359/61 229/369/69 230/370/70 +f 224/367/67 232/379/31 233/375/72 +f 227/376/66 235/388/75 231/377/33 +f 230/370/70 238/387/74 232/379/31 +f 213/380/39 231/803/33 236/381/73 +f 228/382/71 236/381/73 237/383/28 +f 225/368/68 233/375/72 234/385/32 +f 229/384/69 237/383/28 238/387/74 +f 226/386/65 234/385/32 235/388/75 +f 251/389/39 252/400/55 244/390/48 +f 249/392/52 250/402/56 242/393/51 +f 247/395/53 248/404/57 240/396/50 +f 254/398/54 247/395/53 239/397/29 +f 252/400/55 253/405/58 245/401/28 +f 250/402/56 251/804/39 243/403/30 +f 248/404/57 249/392/52 241/394/32 +f 253/405/58 254/398/54 246/399/49 +f 247/395/53 254/398/54 261/406/59 +f 253/408/58 252/423/55 259/409/60 +f 248/404/57 256/415/64 257/411/62 +f 254/398/54 253/408/58 260/410/61 +f 249/412/52 257/411/62 258/413/63 +f 247/395/53 255/407/37 256/415/64 +f 258/413/63 257/411/62 264/416/65 +f 256/415/64 255/407/37 262/418/67 +f 261/406/59 268/421/70 262/418/67 +f 259/409/60 266/424/71 267/420/69 +f 256/415/64 263/419/68 264/416/65 +f 260/410/61 267/420/69 268/421/70 +f 262/418/67 270/430/31 271/426/72 +f 265/427/66 273/439/75 269/428/33 +f 268/421/70 276/438/74 270/430/31 +f 251/431/39 269/805/33 274/432/73 +f 266/433/71 274/432/73 275/434/28 +f 263/419/68 271/426/72 272/436/32 +f 267/435/69 275/434/28 276/438/74 +f 264/437/65 272/436/32 273/439/75 +f 289/440/39 290/451/55 282/441/48 +f 287/443/52 288/453/56 280/444/51 +f 285/446/53 286/455/57 278/447/50 +f 292/449/54 285/446/53 277/448/29 +f 290/451/55 291/456/58 283/452/28 +f 288/453/56 289/806/39 281/454/30 +f 286/455/57 287/443/52 279/445/32 +f 291/456/58 292/449/54 284/450/49 +f 285/446/53 292/449/54 299/457/59 +f 291/459/58 290/474/55 297/460/60 +f 286/455/57 294/466/64 295/462/62 +f 292/449/54 291/459/58 298/461/61 +f 287/463/52 295/462/62 296/464/63 +f 285/446/53 293/458/37 294/466/64 +f 296/464/63 295/462/62 302/467/65 +f 294/466/64 293/458/37 300/469/67 +f 299/457/59 306/472/70 300/469/67 +f 297/460/60 304/475/71 305/471/69 +f 294/466/64 301/470/68 302/467/65 +f 299/457/59 298/461/61 305/471/69 +f 300/469/67 308/481/31 309/477/72 +f 303/478/66 311/490/75 307/479/33 +f 306/472/70 314/489/74 308/481/31 +f 289/482/39 307/807/33 312/483/73 +f 304/484/71 312/483/73 313/485/28 +f 301/470/68 309/477/72 310/487/32 +f 305/486/69 313/485/28 314/489/74 +f 302/488/65 310/487/32 311/490/75 +f 320/491/49 328/503/79 327/492/38 +f 318/494/50 326/505/80 325/495/76 +f 316/497/51 324/506/81 323/498/77 +f 315/499/30 323/498/77 330/500/78 +f 321/502/28 329/507/82 328/503/79 +f 319/504/29 327/808/38 326/505/80 +f 317/496/32 325/495/76 324/506/81 +f 322/501/48 330/500/78 329/507/82 +f 323/498/77 331/520/36 337/508/83 +f 329/509/82 336/514/86 335/510/84 +f 333/512/85 332/517/88 324/506/81 +f 330/500/78 337/508/83 336/514/86 +f 334/515/87 333/512/85 325/513/76 +f 332/517/88 331/520/36 323/498/77 +f 334/515/87 341/526/94 340/518/89 +f 339/519/90 338/528/95 331/520/36 +f 331/520/36 338/528/95 344/521/91 +f 343/522/92 342/524/93 335/510/84 +f 340/518/89 339/519/90 332/517/88 +f 344/521/91 343/522/92 336/514/86 +f 347/527/72 346/532/31 338/528/95 +f 345/529/33 349/541/75 341/530/94 +f 346/532/31 352/540/74 344/521/91 +f 350/533/73 345/809/33 327/534/38 +f 351/536/28 350/533/73 342/535/93 +f 348/538/32 347/527/72 339/519/90 +f 352/540/74 351/536/28 343/537/92 +f 349/541/75 348/538/32 340/539/89 +f 358/542/49 366/554/79 365/543/38 +f 356/545/50 364/556/80 363/546/76 +f 354/548/51 362/557/81 361/549/77 +f 353/550/30 361/549/77 368/551/78 +f 359/553/28 367/558/82 366/554/79 +f 357/555/29 365/810/38 364/556/80 +f 355/547/32 363/546/76 362/557/81 +f 360/552/48 368/551/78 367/558/82 +f 361/549/77 369/571/36 375/559/83 +f 367/560/82 374/565/86 373/561/84 +f 371/563/85 370/568/88 362/557/81 +f 368/551/78 375/559/83 374/565/86 +f 372/566/87 371/563/85 363/564/76 +f 370/568/88 369/571/36 361/549/77 +f 372/566/87 379/577/94 378/569/89 +f 377/570/90 376/579/95 369/571/36 +f 369/571/36 376/579/95 382/572/91 +f 381/573/92 380/575/93 373/561/84 +f 378/569/89 377/570/90 370/568/88 +f 382/572/91 381/573/92 374/565/86 +f 385/578/72 384/583/31 376/579/95 +f 383/580/33 387/592/75 379/581/94 +f 384/583/31 390/591/74 382/572/91 +f 388/584/73 383/811/33 365/585/38 +f 389/587/28 388/584/73 380/586/93 +f 386/589/32 385/578/72 377/570/90 +f 390/591/74 389/587/28 381/588/92 +f 387/592/75 386/589/32 378/590/89 +f 396/593/49 404/605/79 403/594/38 +f 394/596/50 402/607/80 401/597/76 +f 392/599/51 400/608/81 399/600/77 +f 391/601/30 399/600/77 406/602/78 +f 397/604/28 405/609/82 404/605/79 +f 395/606/29 403/812/38 402/607/80 +f 393/598/32 401/597/76 400/608/81 +f 398/603/48 406/602/78 405/609/82 +f 399/600/77 407/622/36 413/610/83 +f 405/611/82 412/616/86 411/612/84 +f 409/614/85 408/619/88 400/608/81 +f 406/602/78 413/610/83 412/616/86 +f 410/617/87 409/614/85 401/615/76 +f 408/619/88 407/622/36 399/600/77 +f 410/617/87 417/628/94 416/620/89 +f 415/621/90 414/630/95 407/622/36 +f 407/622/36 414/630/95 420/623/91 +f 419/624/92 418/626/93 411/612/84 +f 416/620/89 415/621/90 408/619/88 +f 420/623/91 419/624/92 412/616/86 +f 423/629/72 422/634/31 414/630/95 +f 421/631/33 425/643/75 417/632/94 +f 422/634/31 428/642/74 420/623/91 +f 426/635/73 421/813/33 403/636/38 +f 427/638/28 426/635/73 418/637/93 +f 424/640/32 423/629/72 415/621/90 +f 428/642/74 427/638/28 419/639/92 +f 425/643/75 424/640/32 416/641/89 +f 439/644/31 447/814/74 446/645/96 +f 444/647/38 452/658/100 451/648/97 +f 442/650/39 450/659/101 449/651/98 +f 440/653/36 448/660/102 447/654/74 +f 438/646/37 446/645/96 445/656/99 +f 437/657/29 445/656/99 452/658/100 +f 443/649/33 451/648/97 450/659/101 +f 441/652/30 449/651/98 448/660/102 +f 450/659/101 457/668/107 456/661/103 +f 445/663/99 446/679/96 454/664/104 +f 452/658/100 445/663/99 453/665/105 +f 450/659/101 451/648/97 458/667/75 +f 449/662/98 456/661/103 455/669/108 +f 452/658/100 459/666/106 458/667/75 +f 459/666/106 466/675/113 465/671/109 +f 457/668/107 464/676/114 463/672/110 +f 453/665/105 454/664/104 461/673/111 +f 459/666/106 453/665/105 460/674/112 +f 457/668/107 458/667/75 465/671/109 +f 456/661/103 463/672/110 462/677/115 +f 466/675/113 474/689/50 473/681/32 +f 464/676/114 472/693/51 471/682/30 +f 461/684/111 469/688/49 468/685/29 +f 461/684/111 447/815/74 467/687/28 +f 460/686/112 468/685/29 474/689/50 +f 462/690/115 470/694/48 467/691/28 +f 464/676/114 465/671/109 473/681/32 +f 463/683/110 471/682/30 470/694/48 +f 477/695/31 485/816/74 484/696/96 +f 482/698/38 490/709/100 489/699/97 +f 480/701/39 488/710/101 487/702/98 +f 478/704/36 486/711/102 485/705/74 +f 476/697/37 484/696/96 483/707/99 +f 475/708/29 483/707/99 490/709/100 +f 481/700/33 489/699/97 488/710/101 +f 479/703/30 487/702/98 486/711/102 +f 488/710/101 495/719/107 494/712/103 +f 483/714/99 484/729/96 492/715/104 +f 483/714/99 491/716/105 497/717/106 +f 488/710/101 489/699/97 496/718/75 +f 487/713/98 494/712/103 493/720/108 +f 490/709/100 497/717/106 496/718/75 +f 497/717/106 504/726/113 503/722/109 +f 494/712/103 495/719/107 502/723/114 +f 492/715/104 499/731/111 498/725/112 +f 497/717/106 491/716/105 498/725/112 +f 495/719/107 496/718/75 503/722/109 +f 494/712/103 501/724/110 500/727/115 +f 504/726/113 512/740/50 511/732/32 +f 502/723/114 510/744/51 509/733/30 +f 499/735/111 507/739/49 506/736/29 +f 499/735/111 485/817/74 505/738/28 +f 498/737/112 506/736/29 512/740/50 +f 500/741/115 508/745/48 505/742/28 +f 502/723/114 503/722/109 511/732/32 +f 501/734/110 509/733/30 508/745/48 +f 515/746/31 523/818/74 522/747/96 +f 520/749/38 528/760/100 527/750/97 +f 518/752/39 526/761/101 525/753/98 +f 516/755/36 524/762/102 523/756/74 +f 514/748/37 522/747/96 521/758/99 +f 513/759/29 521/758/99 528/760/100 +f 519/751/33 527/750/97 526/761/101 +f 517/754/30 525/753/98 524/762/102 +f 525/763/98 526/761/101 533/764/107 +f 521/766/99 522/780/96 530/767/104 +f 521/766/99 529/768/105 535/769/106 +f 526/761/101 527/750/97 534/770/75 +f 525/763/98 532/765/103 531/771/108 +f 528/760/100 535/769/106 534/770/75 +f 535/769/106 542/776/113 541/773/109 +f 533/764/107 540/777/114 539/774/110 +f 530/767/104 537/782/111 536/775/112 +f 529/768/105 536/775/112 542/776/113 +f 533/764/107 534/770/75 541/773/109 +f 531/771/108 532/765/103 539/774/110 +f 542/776/113 550/791/50 549/783/32 +f 540/777/114 548/795/51 547/784/30 +f 537/786/111 545/790/49 544/787/29 +f 537/786/111 523/819/74 543/789/28 +f 536/788/112 544/787/29 550/791/50 +f 538/792/115 546/796/48 543/793/28 +f 540/777/114 541/773/109 549/783/32 +f 539/785/110 547/784/30 546/796/48 diff --git a/src/main/resources/assets/hbm/models/machines/electrolyser.obj b/src/main/resources/assets/hbm/models/machines/electrolyser.obj index cb38ef317..48e2cfa01 100644 --- a/src/main/resources/assets/hbm/models/machines/electrolyser.obj +++ b/src/main/resources/assets/hbm/models/machines/electrolyser.obj @@ -1,1779 +1,6405 @@ -# Blender v2.79 (sub 0) OBJ File: '' +# Blender v2.79 (sub 0) OBJ File: 'lyser2.blend' # www.blender.org -mtllib electrolyser.mtl -o Cube.002_Cube.011 -v 1.750445 2.755059 -3.250000 -v 2.217445 0.847998 -3.250000 -v 1.717445 0.847998 -3.250000 -v 2.217445 0.847997 -2.750000 -v 1.750445 2.755059 -2.750000 -v 1.717445 0.847997 -2.750000 -v 2.250000 2.754050 -2.750000 -v 2.104444 3.109622 -2.750000 -v 2.250000 2.754050 -3.250000 -v 2.104444 3.109622 -3.250000 -v 1.255321 3.251352 -2.750000 -v 1.609638 3.604429 -2.750000 -v 1.254558 3.751828 -2.749999 -v 1.255321 3.251352 -3.250000 -v 1.609638 3.604429 -3.250000 -v 1.254558 3.751828 -3.249999 -v 0.548897 3.251829 -2.750000 -v 0.548897 3.251829 -3.250000 -v 0.548897 3.751829 -3.249999 -v 1.750445 2.755059 -1.250000 -v 2.217445 0.847997 -1.250000 -v 1.717445 0.847997 -1.250000 -v 2.217445 0.847997 -0.750000 -v 1.750445 2.755059 -0.750000 -v 1.717445 0.847997 -0.750000 -v 2.250000 2.754050 -0.750000 -v 2.104444 3.109622 -0.750000 -v 2.250000 2.754050 -1.250000 -v 2.104444 3.109622 -1.250000 -v 1.255321 3.251351 -0.749999 -v 1.609638 3.604428 -0.749999 -v 1.254558 3.751828 -0.749999 -v 1.255321 3.251351 -1.250000 -v 1.609638 3.604428 -1.249999 -v 1.254558 3.751828 -1.249999 -v 0.548897 3.251829 -0.749999 -v 0.548897 3.251829 -1.250000 -v 0.548897 3.751829 -1.249999 -v 1.750445 2.755059 0.750000 -v 2.217445 0.847997 0.750000 -v 1.717445 0.847997 0.750000 -v 2.217445 0.847997 1.250000 -v 1.750445 2.755059 1.250000 -v 1.717445 0.847997 1.250000 -v 2.250000 2.754050 1.250000 -v 2.104444 3.109622 1.250000 -v 2.250000 2.754050 0.750000 -v 2.104444 3.109622 0.750000 -v 1.255321 3.251351 1.250000 -v 1.609638 3.604428 1.250001 -v 1.254558 3.751828 1.250001 -v 1.255321 3.251351 0.750001 -v 1.609638 3.604428 0.750001 -v 1.254558 3.751828 0.750001 -v 0.548897 3.251829 1.250000 -v 0.548897 3.251829 0.750001 -v 0.548897 3.751829 0.750001 -v 1.750445 2.755059 2.750000 -v 2.217445 0.847997 2.750000 -v 1.717445 0.847997 2.750000 -v 2.217445 0.847996 3.250000 -v 1.750445 2.755059 3.250000 -v 1.717445 0.847996 3.250000 -v 2.250000 2.754050 3.250000 -v 2.104444 3.109622 3.250000 -v 2.250000 2.754050 2.750000 -v 2.104444 3.109622 2.750000 -v 1.255321 3.251351 3.250000 -v 1.609638 3.604428 3.250000 -v 1.254558 3.751827 3.250001 -v 1.255321 3.251351 2.750000 -v 1.609638 3.604428 2.750000 -v 1.254558 3.751827 2.750001 -v 0.548897 3.251828 3.250000 -v 0.548897 3.251828 2.750000 -v 0.548897 3.751828 2.750001 -v -1.500000 -0.000001 4.500000 -v -2.499999 0.000001 -4.500001 -v -1.499999 0.000001 -4.500001 -v -1.499999 1.000001 -4.499999 -v -2.500001 0.999999 4.499999 -v -1.500002 0.999999 4.500000 -v 2.500001 1.000001 -4.499998 -v 2.500000 -0.000001 4.500000 -v 2.500000 0.000001 -4.500000 -v -2.500000 -0.000001 4.500000 -v -2.500000 1.000001 -4.500000 -v 1.500002 1.000001 -4.499999 -v 1.500001 0.000001 -4.500000 -v 2.499999 0.999999 4.500003 -v 1.500000 -0.000001 4.500000 -v 1.499998 0.999999 4.500001 -v -0.750001 2.249999 4.050001 -v 0.750000 2.360113 -3.175483 -v 0.587706 3.889888 -3.175482 -v 0.750000 3.889888 -3.175482 -v 0.750001 2.250001 -4.049997 -v 0.750000 2.250000 0.000001 -v -0.750000 2.250000 0.000000 -v -0.551251 3.999999 3.857973 -v -0.551250 3.807398 -3.857970 -v -0.551250 4.000000 -3.857970 -v 0.749999 2.360112 3.912016 -v 0.587704 3.889886 3.912017 -v 0.749999 3.889886 3.912017 -v 0.587706 2.360114 -3.912014 -v 0.587706 2.360113 -3.175483 -v 0.551250 4.000000 -3.857970 -v -0.750000 4.000000 -4.049997 -v 0.551249 3.999999 3.857974 -v -0.750001 3.999999 4.050001 -v 0.749999 3.999999 4.050002 -v 0.750000 4.000000 0.000002 -v -0.750000 4.000000 0.000001 -v 0.551249 3.807396 3.857974 -v 0.551250 3.807398 -3.857970 -v -0.551251 3.807396 3.857973 -v -0.750001 3.889887 2.162985 -v -0.587706 3.889887 2.899516 -v -0.750001 3.889887 2.899516 -v 0.749999 2.360112 3.175485 -v 0.587704 2.360112 3.912016 -v -0.587706 2.360112 2.899515 -v -0.750001 2.360112 2.899515 -v 0.749999 3.889887 2.899517 -v 0.587705 3.889887 2.162986 -v 0.749999 3.889887 2.162986 -v -0.750001 2.360113 2.162984 -v -0.587706 3.889887 2.162985 -v 0.749999 2.249999 4.050002 -v 0.587705 2.360113 2.162986 -v 0.749999 2.360113 2.162986 -v -0.587706 2.360113 2.162984 -v 0.749999 2.360112 2.899517 -v 0.587704 3.889887 2.899517 -v 0.750000 3.889887 -1.150482 -v 0.587705 3.889887 -1.887013 -v 0.750000 3.889887 -1.887013 -v 0.587704 2.360112 2.899517 -v 0.587705 2.360113 -1.887014 -v 0.750000 2.360113 -1.887014 -v 0.750000 2.250000 -3.037498 -v 0.750001 4.000000 -4.049997 -v 0.750001 2.360114 -3.912014 -v 0.750000 4.000000 -3.037497 -v 0.750001 3.889888 -3.912013 -v -0.750001 2.250000 3.037500 -v -0.750001 2.360112 3.912015 -v -0.750001 2.360112 3.175484 -v -0.750001 4.000000 3.037501 -v -0.750001 3.889886 3.912016 -v -0.750001 3.889887 3.175485 -v -0.750000 2.360113 -0.874515 -v -0.750000 2.250000 -1.012499 -v -0.750000 2.360113 -0.137984 -v -0.750000 4.000000 -1.012498 -v -0.750000 3.889887 -0.137983 -v -0.750000 3.889887 -0.874514 -v 0.750000 2.360113 0.874516 -v 0.750000 2.250000 1.012501 -v 0.750000 2.360113 0.137986 -v 0.750000 3.889887 0.874517 -v 0.750000 3.889887 0.137987 -v 0.750000 4.000000 1.012502 -v 0.749999 2.250000 2.025002 -v 0.749999 2.250000 3.037502 -v 0.749999 4.000000 2.025002 -v 0.749999 4.000000 3.037502 -v -0.750000 2.250000 -3.037498 -v -0.750000 2.360113 -2.162983 -v -0.750000 2.360113 -2.899513 -v -0.750000 4.000000 -2.024998 -v -0.750000 2.250000 -2.024998 -v -0.750000 4.000000 -3.037498 -v -0.750000 3.889887 -2.162983 -v -0.750000 3.889888 -2.899513 -v -0.750001 2.250000 1.012500 -v -0.750001 2.360113 1.887015 -v -0.750001 2.360113 1.150485 -v -0.750001 4.000000 2.025001 -v -0.750001 2.250000 2.025001 -v -0.750001 4.000000 1.012501 -v -0.750001 3.889887 1.887016 -v -0.750001 3.889887 1.150486 -v 0.750000 2.250000 -1.012499 -v 0.750000 2.360113 -1.150483 -v 0.750000 4.000000 -2.024998 -v 0.750000 2.250000 -2.024998 -v 0.750000 4.000000 -1.012498 -v 0.750000 2.360113 -0.137984 -v 0.750000 2.360113 -0.874514 -v 0.750000 3.889887 -0.137983 -v 0.750000 3.889887 -0.874513 -v -0.750001 2.360113 0.874516 -v -0.750000 2.360113 0.137985 -v -0.750001 3.889887 0.874517 -v -0.750000 3.889887 0.137986 -v -0.750000 2.360114 -3.912014 -v -0.750000 2.250001 -4.049997 -v -0.750000 2.360113 -3.175483 -v -0.750000 3.889888 -3.175482 -v -0.750000 3.889888 -3.912013 -v 0.749999 3.889887 3.175486 -v 0.749999 2.360113 1.887016 -v 0.750000 2.360113 1.150486 -v 0.749999 3.889887 1.887017 -v 0.750000 3.889887 1.150487 -v -0.750000 2.360113 -1.887014 -v -0.750000 2.360113 -1.150484 -v -0.750000 3.889887 -1.150483 -v -0.750000 3.889887 -1.887013 -v 0.750000 2.360113 -2.162982 -v 0.750000 2.360113 -2.899513 -v 0.750000 3.889887 -2.162982 -v 0.750000 3.889888 -2.899513 -v -0.587706 2.360112 3.912015 -v -0.587706 3.889887 3.175485 -v -0.587706 2.360112 3.175484 -v -0.587705 2.360113 -0.137984 -v -0.587705 3.889887 -0.874514 -v -0.587705 2.360113 -0.874515 -v 0.587705 2.360113 0.137986 -v 0.587705 3.889887 0.874517 -v 0.587705 2.360113 0.874516 -v -0.587705 2.360113 -2.162983 -v -0.587705 3.889888 -2.899513 -v -0.587705 2.360113 -2.899513 -v -0.587706 2.360113 1.887015 -v -0.587706 3.889887 1.150486 -v -0.587706 2.360113 1.150485 -v 0.587705 3.889887 -1.150482 -v 0.587705 2.360113 -1.150483 -v 0.587705 2.360113 -0.874514 -v 0.587705 3.889887 -0.137983 -v 0.587705 2.360113 -0.137984 -v -0.587706 2.360113 0.874516 -v -0.587705 3.889887 0.137986 -v -0.587705 2.360113 0.137985 -v -0.587705 2.360113 -3.175483 -v -0.587705 3.889888 -3.912013 -v -0.587705 2.360114 -3.912014 -v 0.587704 2.360112 3.175485 -v 0.587705 2.360113 1.150486 -v 0.587705 3.889887 1.887017 -v 0.587705 2.360113 1.887016 -v -0.587705 2.360113 -1.150484 -v -0.587705 3.889887 -1.887013 -v -0.587705 2.360113 -1.887014 -v 0.587706 2.360113 -2.899513 -v 0.587705 3.889887 -2.162982 -v 0.587705 2.360113 -2.162982 -v 0.587704 3.889887 3.175486 -v 0.587706 3.889888 -3.912013 -v 0.587705 3.889887 -0.874513 -v -0.587705 3.889887 -2.162983 -v 0.587706 3.889888 -2.899513 -v -0.587705 3.889887 -0.137983 -v 0.587705 3.889887 1.150487 -v -0.587706 3.889887 0.874517 -v -0.587706 3.889887 1.887016 -v 0.587705 3.889887 0.137987 -v -0.587705 3.889887 -1.150483 -v -0.587706 3.889886 3.912016 -v -0.587705 3.889888 -3.175482 -v 1.027183 1.687541 3.250000 -v 1.445061 0.972984 3.250000 -v 1.027183 0.972984 3.250000 -v 1.445061 1.687541 3.250000 -v 1.445061 0.972984 3.750000 -v 1.445061 1.687541 3.750000 -v 1.027183 0.972984 3.750000 -v 1.027183 1.687542 0.250000 -v 1.445061 0.972985 0.250000 -v 1.027183 0.972985 0.250000 -v 1.445061 1.687542 0.250000 -v 1.445061 0.972985 0.750001 -v 1.445061 1.687542 0.750001 -v 1.027183 0.972985 0.750001 -v 1.027183 1.687542 -0.750000 -v 1.445061 0.972985 -0.750000 -v 1.027183 0.972985 -0.750000 -v 1.445061 1.687542 -0.750000 -v 1.445061 0.972985 -0.250000 -v 1.445061 1.687542 -0.250000 -v 1.027183 0.972985 -0.250000 -v 1.027183 1.687542 -1.750000 -v 1.445061 0.972985 -1.750000 -v 1.027183 0.972985 -1.750000 -v 1.445061 1.687542 -1.750000 -v 1.445061 0.972985 -1.250000 -v 1.445061 1.687542 -1.250000 -v 1.027183 0.972985 -1.250000 -v 1.027183 1.687542 2.250000 -v 1.445061 0.972985 2.250000 -v 1.027183 0.972985 2.250000 -v 1.445061 1.687542 2.250000 -v 1.445061 0.972985 2.750000 -v 1.445061 1.687541 2.750000 -v 1.027183 0.972985 2.750000 -v 1.027183 1.687542 1.250000 -v 1.445061 0.972985 1.250000 -v 1.027183 0.972985 1.250000 -v 1.445061 1.687542 1.250000 -v 1.445061 0.972985 1.750000 -v 1.445061 1.687542 1.750000 -v 1.027183 0.972985 1.750000 -v 1.027183 1.687542 -2.750000 -v 1.445061 0.972986 -2.750000 -v 1.027183 0.972986 -2.750000 -v 1.445061 1.687542 -2.750000 -v 1.445061 0.972985 -2.250000 -v 1.445061 1.687542 -2.250000 -v 1.027183 0.972985 -2.250000 -v 1.027183 1.687543 -3.750000 -v 1.445061 0.972986 -3.750000 -v 1.027183 0.972986 -3.750000 -v 1.445061 1.687543 -3.750000 -v 1.445061 0.972986 -3.250000 -v 1.445061 1.687542 -3.250000 -v 1.027183 0.972986 -3.250000 -v -1.445061 0.972984 3.250000 -v -1.027183 1.687541 3.250000 -v -1.027183 0.972984 3.250000 -v -1.445061 0.972984 3.750001 -v -1.445061 1.687541 3.250000 -v -1.027183 0.972984 3.750001 -v -1.445061 1.687541 3.750001 -v -1.445061 0.972985 0.250001 -v -1.027183 1.687542 0.250001 -v -1.027183 0.972985 0.250001 -v -1.445061 0.972985 0.750001 -v -1.445061 1.687542 0.250001 -v -1.027183 0.972985 0.750001 -v -1.445061 1.687542 0.750001 -v -1.445061 0.972985 -0.750000 -v -1.027183 1.687542 -0.750000 -v -1.027183 0.972985 -0.750000 -v -1.445061 0.972985 -0.249999 -v -1.445061 1.687542 -0.750000 -v -1.027183 0.972985 -0.249999 -v -1.445061 1.687542 -0.249999 -v -1.445061 0.972985 -1.750000 -v -1.027183 1.687542 -1.750000 -v -1.027183 0.972985 -1.750000 -v -1.445061 0.972985 -1.250000 -v -1.445061 1.687542 -1.750000 -v -1.027183 0.972985 -1.250000 -v -1.445061 1.687542 -1.250000 -v -1.445061 0.972985 2.250001 -v -1.027183 1.687542 2.250001 -v -1.027183 0.972985 2.250001 -v -1.445061 0.972985 2.750001 -v -1.445061 1.687542 2.250001 -v -1.027183 0.972985 2.750001 -v -1.445061 1.687541 2.750001 -v -1.445061 0.972985 1.250000 -v -1.027183 1.687542 1.250000 -v -1.027183 0.972985 1.250000 -v -1.445061 0.972985 1.750000 -v -1.445061 1.687542 1.250000 -v -1.027183 0.972985 1.750000 -v -1.445061 1.687542 1.750000 -v -1.445061 0.972986 -2.750000 -v -1.027183 1.687542 -2.750000 -v -1.027183 0.972986 -2.750000 -v -1.445061 0.972985 -2.250000 -v -1.445061 1.687542 -2.750000 -v -1.027183 0.972985 -2.250000 -v -1.445061 1.687542 -2.250000 -v -1.445061 0.972986 -3.750000 -v -1.027183 1.687543 -3.750000 -v -1.027183 0.972986 -3.750000 -v -1.445061 0.972986 -3.250000 -v -1.445061 1.687543 -3.750000 -v -1.027183 0.972986 -3.250000 -v -1.445061 1.687542 -3.250000 -v 0.548897 3.751829 -2.749999 -v 0.548897 3.751829 -0.749999 -v 0.548897 3.751829 1.250001 -v 0.548897 3.751828 3.250001 -v 1.027183 1.687541 3.750000 -v 1.027183 1.687542 0.750001 -v 1.027183 1.687542 -0.250000 -v 1.027183 1.687542 -1.250000 -v 1.027183 1.687541 2.750000 -v 1.027183 1.687542 1.750000 -v 1.027183 1.687542 -2.250000 -v 1.027183 1.687542 -3.250000 -v -1.027183 1.687541 3.750001 -v -1.027183 1.687542 0.750001 -v -1.027183 1.687542 -0.249999 -v -1.027183 1.687542 -1.250000 -v -1.027183 1.687541 2.750001 -v -1.027183 1.687542 1.750000 -v -1.027183 1.687542 -2.250000 -v -1.027183 1.687542 -3.250000 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696520 0.869665 -vt 0.660646 0.885395 -vt 0.660646 0.854212 -vt 0.624979 0.885395 -vt 0.589350 0.869665 -vt 0.624979 0.854212 -vt 0.696513 0.869525 -vt 0.660638 0.885394 -vt 0.660639 0.854191 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624971 0.885394 -vt 0.589342 0.869525 -vt 0.624971 0.854191 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696514 0.869665 -vt 0.660640 0.885395 -vt 0.660640 0.854212 -vt 0.624972 0.885395 -vt 0.589343 0.869665 -vt 0.624972 0.854212 -vt 0.696516 0.869531 -vt 0.660642 0.885400 -vt 0.660642 0.854198 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624974 0.885400 -vt 0.589345 0.869531 -vt 0.624974 0.854198 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696513 0.869651 -vt 0.660639 0.885381 -vt 0.660639 0.854198 -vt 0.624971 0.885381 -vt 0.589342 0.869651 -vt 0.624971 0.854198 -vt 0.696516 0.869533 -vt 0.660642 0.885402 -vt 0.660642 0.854199 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624974 0.885402 -vt 0.589345 0.869533 -vt 0.624974 0.854199 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.589324 0.739609 -vt 0.625030 0.599581 -vt 0.589324 0.599581 -vt 0.660717 0.599581 -vt 0.696427 0.739609 -vt 0.696427 0.599581 -vt 0.696523 0.869665 -vt 0.660649 0.885395 -vt 0.660649 0.854212 -vt 0.624982 0.885395 -vt 0.589353 0.869665 -vt 0.624982 0.854212 -vt 0.696516 0.869524 -vt 0.660642 0.885393 -vt 0.660642 0.854190 -vt 0.660717 0.739609 -vt 0.696427 0.802086 -vt 0.625030 0.739609 -vt 0.589324 0.802086 -vt 0.625030 0.802086 -vt 0.624974 0.885393 -vt 0.589345 0.869524 -vt 0.624974 0.854190 -vt 0.660717 0.802086 -vt 0.696427 0.853949 -vt 0.625030 0.802086 -vt 0.589324 0.853949 -vt 0.625030 0.853949 -vt 0.071429 1.000000 -vt 0.000000 0.250000 -vt 0.071429 0.250000 -vt 0.596910 0.004769 -vt 0.000595 0.081787 -vt 0.000595 0.004769 -vt 0.357143 0.250000 -vt 1.000000 0.166667 -vt 0.357143 0.166667 -vt 0.285714 0.250000 -vt 0.357143 0.166667 -vt 0.285714 0.166667 -vt 0.357143 0.250000 -vt 1.000000 0.166667 -vt 0.071429 0.250000 -vt 0.000000 0.166667 -vt 0.000000 0.250000 -vt 0.285714 0.250000 -vt 0.285714 0.166667 -vt 0.000000 0.250000 -vt 0.071429 0.166667 -vt 0.000000 0.166667 -vt 0.071429 0.250000 -vt 0.596978 0.004860 -vt 0.000595 0.081775 -vt 0.000595 0.004859 -vt 0.568726 0.729189 -vt 0.413642 0.854246 -vt 0.360755 0.729189 -vt 0.357143 1.000000 -vt 0.285714 0.250000 -vt 0.357143 0.250000 -vt 0.285714 1.000000 -vt 0.491249 0.547007 -vt 0.504420 0.713515 -vt 0.491249 0.713515 -vt 0.568721 0.729189 -vt 0.413637 0.854246 -vt 0.360750 0.729189 -vt 1.000000 0.250000 -vt 0.678507 0.374792 -vt 0.357143 0.250000 -vt 1.000000 0.250000 -vt 0.678506 0.374779 -vt 0.357143 0.250000 -vt 0.370550 0.531218 -vt 0.941964 0.515625 -vt 0.941955 0.531219 -vt 0.491245 0.547007 -vt 0.504415 0.713516 -vt 0.491244 0.713516 -vt 0.504420 0.531305 -vt 0.575836 0.547007 -vt 0.504420 0.547007 -vt 0.583990 0.054533 -vt 0.598170 0.166639 -vt 0.583990 0.149517 -vt 0.014203 0.054533 -vt 0.000000 0.166667 -vt 0.000023 0.037410 -vt 0.299097 0.037410 -vt 0.299097 0.166640 -vt 0.014204 0.149517 -vt 0.370536 0.432292 -vt 0.941955 0.432318 -vt 0.357185 0.432317 -vt 0.370550 0.515608 -vt 0.357185 0.515608 -vt 0.941955 0.416695 -vt 0.370550 0.416695 -vt 0.955193 0.515608 -vt 0.955193 0.432318 -vt 0.504416 0.729062 -vt 0.575832 0.713515 -vt 0.575832 0.729062 -vt 0.575831 0.531306 -vt 0.504415 0.547007 -vt 0.504415 0.531306 -vt 0.589268 0.713515 -vt 0.575832 0.547007 -vt 0.589268 0.547007 -vt 0.504418 0.729061 -vt 0.575835 0.713515 -vt 0.575835 0.729062 -vt 0.491245 0.547007 -vt 0.504416 0.713515 -vt 0.491245 0.713515 -vt 0.514960 0.854246 -vt 0.413642 0.999965 -vt 0.589271 0.713515 -vt 0.575835 0.547007 -vt 0.589271 0.547007 -vt 0.575832 0.531305 -vt 0.504416 0.547007 -vt 0.504416 0.531305 -vt 0.491248 0.547007 -vt 0.504418 0.713515 -vt 0.491248 0.713515 -vt 0.504424 0.729056 -vt 0.575840 0.713509 -vt 0.575840 0.729056 -vt 0.575835 0.531305 -vt 0.504419 0.547007 -vt 0.504419 0.531305 -vt 0.589277 0.713509 -vt 0.575840 0.547000 -vt 0.589276 0.547000 -vt 0.598169 0.015723 -vt 0.533590 0.025210 -vt 0.523401 0.015724 -vt 0.598170 0.166491 -vt 0.587980 0.025210 -vt 0.523401 0.166492 -vt 0.587980 0.157005 -vt 0.533591 0.157005 -vt 0.074790 0.166502 -vt 0.010211 0.157016 -vt 0.064601 0.157016 -vt 0.000022 0.015734 -vt 0.000000 0.166667 -vt 0.074790 0.015734 -vt 0.010211 0.025221 -vt 0.064601 0.025221 -vt 0.299096 0.166502 -vt 0.363675 0.157016 -vt 0.373864 0.166502 -vt 0.299096 0.015734 -vt 0.309285 0.157016 -vt 0.373864 0.015734 -vt 0.309285 0.025221 -vt 0.363675 0.025221 -vt 0.299095 0.015725 -vt 0.234516 0.025212 -vt 0.224327 0.015725 -vt 0.299096 0.166493 -vt 0.288906 0.025211 -vt 0.234517 0.157006 -vt 0.288906 0.157006 -vt 0.224327 0.166493 -vt 0.149558 0.015725 -vt 0.084979 0.025212 -vt 0.074790 0.015726 -vt 0.139369 0.157007 -vt 0.139369 0.025212 -vt 0.149559 0.166493 -vt 0.084980 0.157007 -vt 0.074790 0.166493 -vt 0.523401 0.166502 -vt 0.458822 0.157016 -vt 0.513212 0.157016 -vt 0.448633 0.015734 -vt 0.448633 0.166502 -vt 0.523401 0.015734 -vt 0.458822 0.025221 -vt 0.513212 0.025221 -vt 0.224327 0.166502 -vt 0.159748 0.157016 -vt 0.214138 0.157016 -vt 0.149559 0.015734 -vt 0.149559 0.166502 -vt 0.224327 0.015734 -vt 0.159748 0.025221 -vt 0.214138 0.025221 -vt 0.373864 0.015725 -vt 0.438443 0.025211 -vt 0.384053 0.025211 -vt 0.448633 0.166492 -vt 0.448633 0.015724 -vt 0.373864 0.166493 -vt 0.438443 0.157006 -vt 0.384054 0.157006 -vt 0.309285 0.025211 -vt 0.363674 0.025211 -vt 0.309285 0.157006 -vt 0.363675 0.157006 -vt 0.234517 0.157016 -vt 0.288906 0.157016 -vt 0.234517 0.025221 -vt 0.288906 0.025221 -vt 0.587980 0.157016 -vt 0.598170 0.166502 -vt 0.533591 0.157016 -vt 0.598170 0.015734 -vt 0.533591 0.025221 -vt 0.587980 0.025221 -vt 0.010211 0.025212 -vt 0.000022 0.015726 -vt 0.064601 0.157007 -vt 0.064600 0.025212 -vt 0.010211 0.157007 -vt 0.000000 0.166667 -vt 0.159748 0.025212 -vt 0.214137 0.025212 -vt 0.159748 0.157007 -vt 0.214138 0.157007 -vt 0.438443 0.157016 -vt 0.384054 0.157016 -vt 0.384054 0.025221 -vt 0.438443 0.025221 -vt 0.084980 0.157016 -vt 0.139369 0.157016 -vt 0.084980 0.025221 -vt 0.139369 0.025221 -vt 0.458822 0.025211 -vt 0.513211 0.025210 -vt 0.458822 0.157005 -vt 0.513212 0.157005 -vt 0.514955 0.999965 -vt 0.514955 0.854246 -vt 0.575831 0.547007 -vt 0.504414 0.713515 -vt 0.504414 0.547007 -vt 0.575836 0.547004 -vt 0.504420 0.713513 -vt 0.504420 0.547004 -vt 0.575846 0.547007 -vt 0.504430 0.713516 -vt 0.504430 0.547007 -vt 0.575823 0.547007 -vt 0.504407 0.713516 -vt 0.504407 0.547007 -vt 0.575832 0.547005 -vt 0.504415 0.713513 -vt 0.504416 0.547005 -vt 0.504424 0.713509 -vt 0.504424 0.547000 -vt 0.575835 0.547007 -vt 0.504419 0.713515 -vt 0.504419 0.547007 -vt 0.575836 0.547005 -vt 0.504420 0.713514 -vt 0.504420 0.547005 -vt 0.575833 0.547007 -vt 0.504416 0.713515 -vt 0.504416 0.547007 -vt 0.575831 0.547007 -vt 0.575840 0.547005 -vt 0.504424 0.713513 -vt 0.504424 0.547005 -vt 0.575832 0.547000 -vt 0.504416 0.713509 -vt 0.504416 0.547000 -vt 0.575830 0.547007 -vt 0.504414 0.713515 -vt 0.504414 0.547007 -vt 0.589268 0.713516 -vt 0.589268 0.547007 -vt 0.575835 0.531305 -vt 0.504419 0.531305 -vt 0.589273 0.713515 -vt 0.589273 0.547007 -vt 0.504415 0.729062 -vt 0.575831 0.713516 -vt 0.575831 0.729062 -vt 0.491248 0.547007 -vt 0.491248 0.713515 -vt 0.504420 0.729062 -vt 0.575836 0.713515 -vt 0.575836 0.729062 -vt 0.589272 0.713515 -vt 0.589272 0.547007 -vt 0.575823 0.531305 -vt 0.504407 0.531306 -vt 0.504419 0.729062 -vt 0.575835 0.713515 -vt 0.575835 0.729062 -vt 0.491237 0.547007 -vt 0.491237 0.713516 -vt 0.575830 0.531305 -vt 0.504414 0.531305 -vt 0.589260 0.713516 -vt 0.589260 0.547007 -vt 0.575836 0.531303 -vt 0.504420 0.531303 -vt 0.620737 0.000018 -vt 0.633908 0.166527 -vt 0.620737 0.166527 -vt 0.504407 0.729062 -vt 0.575823 0.713516 -vt 0.575823 0.729062 -vt 0.620743 0.000015 -vt 0.633914 0.166524 -vt 0.620743 0.166524 -vt 0.589267 0.713515 -vt 0.589267 0.547007 -vt 0.575840 0.531303 -vt 0.504424 0.531303 -vt 0.589273 0.713513 -vt 0.589273 0.547004 -vt 0.504414 0.729062 -vt 0.575830 0.713515 -vt 0.575830 0.729062 -vt 0.620747 0.000016 -vt 0.633918 0.166524 -vt 0.620747 0.166524 -vt 0.504420 0.729059 -vt 0.575836 0.713513 -vt 0.575836 0.729059 -vt 0.589276 0.713513 -vt 0.589277 0.547005 -vt 0.575836 0.531304 -vt 0.504420 0.531304 -vt 0.504424 0.729059 -vt 0.575840 0.713513 -vt 0.575840 0.729060 -vt 0.491249 0.547005 -vt 0.491250 0.713514 -vt 0.589273 0.713514 -vt 0.589273 0.547005 -vt 0.575832 0.531303 -vt 0.504416 0.531303 -vt 0.504420 0.729060 -vt 0.575836 0.713514 -vt 0.575836 0.729060 -vt 0.620739 0.000016 -vt 0.633909 0.166524 -vt 0.620739 0.166524 -vt 0.589268 0.713513 -vt 0.589268 0.547005 -vt 0.575846 0.531306 -vt 0.504430 0.531306 -vt 0.504415 0.729060 -vt 0.575832 0.713513 -vt 0.575832 0.729060 -vt 0.491259 0.547007 -vt 0.491259 0.713516 -vt 0.575832 0.531299 -vt 0.504416 0.531299 -vt 0.589282 0.713516 -vt 0.589282 0.547007 -vt 0.575831 0.531305 -vt 0.504414 0.531305 -vt 0.491245 0.547000 -vt 0.491245 0.713509 -vt 0.504430 0.729062 -vt 0.575846 0.713516 -vt 0.575846 0.729062 -vt 0.491244 0.547007 -vt 0.491244 0.713515 -vt 0.589268 0.713509 -vt 0.589268 0.547000 -vt 0.575833 0.531305 -vt 0.504416 0.531305 -vt 0.589268 0.713515 -vt 0.589268 0.547007 -vt 0.504416 0.729056 -vt 0.575832 0.713509 -vt 0.575832 0.729056 -vt 0.620745 0.000012 -vt 0.633916 0.166521 -vt 0.620745 0.166521 -vt 0.504414 0.729062 -vt 0.575831 0.713515 -vt 0.575831 0.729062 -vt 0.589269 0.713515 -vt 0.589269 0.547007 -vt 0.504424 0.531299 -vt 0.504416 0.729062 -vt 0.575832 0.713515 -vt 0.575832 0.729062 -vt 0.620747 0.000012 -vt 0.633918 0.166520 -vt 0.620747 0.166520 -vt 0.491071 0.677083 -vt 0.446398 0.593784 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401808 0.593784 -vt 0.401808 0.677069 -vt 0.357156 0.593784 -vt 0.446398 0.729156 -vt 0.491071 0.677083 -vt 0.446401 0.593787 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401811 0.593787 -vt 0.401811 0.677072 -vt 0.357160 0.593787 -vt 0.446401 0.729159 -vt 0.491071 0.677083 -vt 0.446398 0.593785 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401808 0.593785 -vt 0.401808 0.677070 -vt 0.357156 0.593785 -vt 0.446398 0.729157 -vt 0.491071 0.677083 -vt 0.446406 0.593786 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401816 0.593786 -vt 0.401816 0.677071 -vt 0.357166 0.593786 -vt 0.446406 0.729158 -vt 0.491071 0.677083 -vt 0.446405 0.593786 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.593786 -vt 0.401815 0.677071 -vt 0.357164 0.593786 -vt 0.446405 0.729158 -vt 0.491071 0.677083 -vt 0.446403 0.593786 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401813 0.593786 -vt 0.401813 0.677071 -vt 0.357162 0.593786 -vt 0.446403 0.729158 -vt 0.491071 0.677083 -vt 0.446406 0.593785 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.593785 -vt 0.401815 0.677070 -vt 0.357165 0.593785 -vt 0.446406 0.729157 -vt 0.491071 0.677083 -vt 0.446398 0.593787 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401808 0.593787 -vt 0.401808 0.677072 -vt 0.357156 0.593787 -vt 0.446398 0.729159 -vt 0.401811 0.593785 -vt 0.357160 0.677070 -vt 0.357160 0.593785 -vt 0.446401 0.593785 -vt 0.401811 0.677070 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401811 0.729157 -vt 0.401811 0.593784 -vt 0.357160 0.677069 -vt 0.357160 0.593784 -vt 0.446401 0.593784 -vt 0.401811 0.677069 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401811 0.729156 -vt 0.401812 0.593786 -vt 0.357161 0.677070 -vt 0.357161 0.593786 -vt 0.446402 0.593786 -vt 0.401812 0.677070 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729157 -vt 0.401812 0.593784 -vt 0.357161 0.677068 -vt 0.357161 0.593784 -vt 0.446402 0.593784 -vt 0.401812 0.677068 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729155 -vt 0.401815 0.593784 -vt 0.357165 0.677069 -vt 0.357165 0.593784 -vt 0.446406 0.593784 -vt 0.401815 0.677069 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.729156 -vt 0.401812 0.593787 -vt 0.357161 0.677072 -vt 0.357161 0.593787 -vt 0.446402 0.593787 -vt 0.401812 0.677072 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729159 -vt 0.401815 0.593787 -vt 0.357165 0.677072 -vt 0.357165 0.593787 -vt 0.446406 0.593787 -vt 0.401815 0.677072 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401815 0.729159 -vt 0.401812 0.593784 -vt 0.357161 0.677069 -vt 0.357161 0.593784 -vt 0.446402 0.593784 -vt 0.401812 0.677069 -vt 0.491071 0.593750 -vt 0.446429 0.677083 -vt 0.401812 0.729156 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt 0.625030 0.739609 -vt 0.660717 0.739609 -vt 0.660717 0.802086 -vt 0.660717 0.853949 -vt -0.000000 1.000000 -vt 0.596910 0.081786 -vt 1.000000 0.250000 -vt 1.000000 0.250000 -vt 0.071429 0.166667 -vt 0.596978 0.081776 -vt 0.389380 0.374791 -vt 0.461662 0.374792 -vt 0.967634 0.374792 -vt 0.895352 0.374792 -vt 0.823070 0.374792 -vt 0.750788 0.374792 -vt 0.533944 0.374792 -vt 0.606225 0.374792 -vt 0.389380 0.374779 -vt 0.461662 0.374779 -vt 0.967634 0.374779 -vt 0.895354 0.374779 -vt 0.823071 0.374779 -vt 0.750787 0.374779 -vt 0.533944 0.374779 -vt 0.606225 0.374779 -vt 0.575836 0.531305 -vt 0.598170 0.037410 -vt 0.523402 0.037410 -vt 0.074792 0.037410 -vt 0.149560 0.037410 -vt 0.448634 0.037410 -vt 0.373865 0.037410 -vt 0.224328 0.037410 -vt 0.074792 0.166640 -vt 0.523402 0.166639 -vt 0.448634 0.166639 -vt 0.373865 0.166640 -vt 0.149560 0.166640 -vt 0.224328 0.166640 -vt 0.514960 0.999965 -vt 0.413637 0.999965 -vt 0.633908 0.000018 -vt 0.633914 0.000015 -vt 0.633918 0.000016 -vt 0.633910 0.000016 -vt 0.633916 0.000012 -vt 0.575840 0.531299 -vt 0.633918 0.000012 -vt 0.357156 0.677069 -vt 0.401808 0.729156 -vt 0.357160 0.677072 -vt 0.401811 0.729159 -vt 0.357156 0.677070 -vt 0.401808 0.729157 -vt 0.357166 0.677071 -vt 0.401816 0.729158 -vt 0.357164 0.677071 -vt 0.401815 0.729158 -vt 0.357162 0.677071 -vt 0.401813 0.729158 -vt 0.357165 0.677070 -vt 0.401815 0.729157 -vt 0.357156 0.677072 -vt 0.401807 0.729159 -vt 0.491071 0.677083 -vt 0.446401 0.729157 -vt 0.491071 0.677083 -vt 0.446401 0.729156 -vt 0.491071 0.677083 -vt 0.446402 0.729157 -vt 0.491071 0.677083 -vt 0.446402 0.729155 -vt 0.491071 0.677083 -vt 0.446406 0.729156 -vt 0.491071 0.677083 -vt 0.446402 0.729159 -vt 0.491071 0.677083 -vt 0.446406 0.729159 -vt 0.491071 0.677083 -vt 0.446402 0.729156 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 -vt 0.732143 0.598958 -vt 0.732143 0.802083 -vt 0.732143 0.739583 -vt 0.732143 0.854167 +mtllib lyser2.mtl +o Cube_Cube.001 +v 0.500000 1.000000 -5.500000 +v -0.500000 1.000000 -5.500000 +v -1.500000 0.000000 -4.500000 +v -1.500000 0.000000 -3.500000 +v -1.500000 0.000000 5.500000 +v -1.500000 1.000000 -1.500000 +v -1.500000 1.000000 -2.500000 +v -1.500000 1.000000 -3.500000 +v -1.500000 1.000000 -4.500000 +v -1.500000 1.000000 -5.500000 +v 3.500000 0.000000 5.500000 +v 3.500000 0.000000 2.500000 +v 3.500000 0.000000 1.500000 +v 3.500000 0.000000 0.500000 +v 3.500000 0.000000 -0.500000 +v 3.500000 0.000000 -1.500000 +v 3.500000 0.000000 -2.500000 +v 3.500000 0.000000 -3.500000 +v 3.500000 0.000000 -4.500000 +v 3.500000 0.000000 -5.500000 +v 3.500000 1.000000 -5.500000 +v 3.500000 1.000000 -4.500000 +v 3.500000 1.000000 -3.500000 +v 3.500000 1.000000 -2.500000 +v 3.500000 1.000000 -1.500000 +v 3.500000 1.000000 -0.500000 +v 3.500000 1.000000 0.500000 +v 3.500000 1.000000 1.500000 +v 3.500000 1.000000 2.500000 +v 3.500000 1.000000 5.500000 +v 1.500000 1.000000 -5.500000 +v 1.500000 1.000000 -4.500000 +v 1.500000 1.000000 -3.500000 +v 1.500000 1.000000 -2.500000 +v 1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -0.500000 +v 1.500000 1.000000 0.500000 +v 1.500000 1.000000 1.500000 +v 1.500000 1.000000 2.500000 +v 1.250000 0.750000 5.500000 +v -1.500000 1.000000 -0.500000 +v -1.500000 1.000000 0.500000 +v -1.500000 1.000000 1.500000 +v -1.500000 1.000000 2.500000 +v -1.500000 0.000000 -5.500000 +v -1.500000 0.000000 -2.500000 +v -1.500000 0.000000 -1.500000 +v -1.500000 0.000000 -0.500000 +v -1.500000 0.000000 0.500000 +v -1.500000 0.000000 1.500000 +v -1.500000 0.000000 2.500000 +v -1.250000 0.250000 5.500000 +v 1.500000 0.000000 -5.500000 +v 1.500000 0.000000 -4.500000 +v 1.500000 0.000000 -3.500000 +v 1.500000 0.000000 -2.500000 +v 1.500000 0.000000 -1.500000 +v 1.500000 0.000000 -0.500000 +v 1.500000 0.000000 0.500000 +v 1.500000 0.000000 1.500000 +v 1.500000 0.000000 2.500000 +v 1.250000 0.250000 5.500000 +v -0.500000 0.000000 -5.500000 +v -0.500000 0.000000 -4.500000 +v -0.500000 0.000000 -3.500000 +v -0.500000 0.000000 -2.500000 +v -0.500000 0.000000 -1.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.000000 0.500000 +v -0.500000 0.000000 1.500000 +v -0.500000 0.000000 2.500000 +v -0.250000 0.250000 5.500000 +v 0.500000 0.000000 -5.500000 +v 0.500000 0.000000 -4.500000 +v 0.500000 0.000000 -3.500000 +v 0.500000 0.000000 -2.500000 +v 0.500000 0.000000 -1.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 0.000000 1.500000 +v 0.500000 0.000000 2.500000 +v 0.250000 0.250000 5.500000 +v 0.250000 3.000000 -5.250000 +v 0.375000 3.000000 -4.500000 +v 0.375000 3.000000 -3.500000 +v 0.375000 3.000000 -2.500000 +v 0.375000 3.000000 -1.500000 +v 0.375000 3.000000 -0.500000 +v 0.375000 3.000000 0.500000 +v 0.375000 3.000000 1.500000 +v 0.375000 3.000000 2.500000 +v -0.250000 3.000000 -5.250000 +v -0.375000 3.000000 -4.500000 +v -0.375000 3.000000 -3.500000 +v -0.375000 3.000000 -2.500000 +v -0.375000 3.000000 -1.500000 +v -0.375000 3.000000 -0.500000 +v -0.375000 3.000000 0.500000 +v -0.375000 3.000000 1.500000 +v -0.375000 3.000000 2.500000 +v -1.250000 0.750000 5.500000 +v -0.750000 0.750000 5.500000 +v 0.750000 0.750000 5.500000 +v -0.250000 3.000000 5.250000 +v 0.250000 3.000000 5.250000 +v 0.750000 0.250000 5.500000 +v -0.750000 0.250000 5.500000 +v 0.187500 0.687500 5.437500 +v -0.250000 0.750000 5.500000 +v 0.250000 0.750000 5.500000 +v -0.187500 0.687500 5.437500 +v 0.187500 0.312500 5.437500 +v -0.187500 0.312500 5.437500 +v 0.250000 0.750000 5.437500 +v -0.250000 0.750000 5.437500 +v 0.250000 0.250000 5.437500 +v -0.250000 0.250000 5.437500 +v 0.187500 0.687500 5.500000 +v -0.187500 0.687500 5.500000 +v 0.187500 0.312500 5.500000 +v -0.187500 0.312500 5.500000 +v -0.500000 0.000000 5.500000 +v 1.500000 0.000000 5.500000 +v 0.500000 0.000000 5.500000 +v 1.500000 1.000000 5.500000 +v -1.500000 1.000000 5.500000 +v -0.500000 1.000000 5.500000 +v 0.500000 1.000000 5.500000 +v -0.812500 0.312500 5.437500 +v -1.187500 0.312500 5.437500 +v 1.187500 0.312500 5.437500 +v 0.812500 0.312500 5.437500 +v 1.187500 0.687500 5.437500 +v -1.187500 0.687500 5.437500 +v -0.812500 0.687500 5.437500 +v 0.812500 0.687500 5.437500 +v -0.750000 0.250000 5.437500 +v -1.250000 0.250000 5.437500 +v 1.250000 0.250000 5.437500 +v 0.750000 0.250000 5.437500 +v 1.250000 0.750000 5.437500 +v -1.250000 0.750000 5.437500 +v -0.750000 0.750000 5.437500 +v 0.750000 0.750000 5.437500 +v -0.812500 0.312500 5.500000 +v -1.187500 0.312500 5.500000 +v 1.187500 0.312500 5.500000 +v 0.812500 0.312500 5.500000 +v 1.187500 0.687500 5.500000 +v -1.187500 0.687500 5.500000 +v -0.812500 0.687500 5.500000 +v 0.812500 0.687500 5.500000 +v -1.250000 0.750000 -5.500000 +v -0.750000 0.750000 -5.500000 +v -0.750000 0.250000 -5.500000 +v -1.250000 0.250000 -5.500000 +v 0.250000 0.250000 -5.500000 +v -0.250000 0.250000 -5.500000 +v -0.250000 0.750000 -5.500000 +v 0.250000 0.750000 -5.500000 +v 0.750000 0.750000 -5.500000 +v 1.250000 0.750000 -5.500000 +v 1.250000 0.250000 -5.500000 +v 0.750000 0.250000 -5.500000 +v -0.812500 0.687500 -5.437500 +v -1.187500 0.687500 -5.437500 +v -1.187500 0.312500 -5.437500 +v -0.812500 0.312500 -5.437500 +v 0.187500 0.312500 -5.437500 +v -0.187500 0.312500 -5.437500 +v 0.187500 0.687500 -5.437500 +v -0.187500 0.687500 -5.437500 +v 0.812500 0.687500 -5.437500 +v 1.187500 0.687500 -5.437500 +v 0.812500 0.312500 -5.437500 +v 1.187500 0.312500 -5.437500 +v -0.750000 0.750000 -5.437500 +v -1.250000 0.750000 -5.437500 +v -1.250000 0.250000 -5.437500 +v -0.750000 0.250000 -5.437500 +v 0.250000 0.250000 -5.437500 +v -0.250000 0.250000 -5.437500 +v 0.250000 0.750000 -5.437500 +v -0.250000 0.750000 -5.437500 +v 0.750000 0.750000 -5.437500 +v 1.250000 0.750000 -5.437500 +v 0.750000 0.250000 -5.437500 +v 1.250000 0.250000 -5.437500 +v -0.812500 0.687500 -5.500000 +v -1.187500 0.687500 -5.500000 +v -1.187500 0.312500 -5.500000 +v -0.812500 0.312500 -5.500000 +v 0.187500 0.312500 -5.500000 +v -0.187500 0.312500 -5.500000 +v 0.187500 0.687500 -5.500000 +v -0.187500 0.687500 -5.500000 +v 0.812500 0.687500 -5.500000 +v 1.187500 0.687500 -5.500000 +v 0.812500 0.312500 -5.500000 +v 1.187500 0.312500 -5.500000 +v -1.500000 0.000000 3.500000 +v -1.500000 1.000000 4.500000 +v 3.500000 0.000000 4.500000 +v 3.500000 0.000000 3.500000 +v 3.500000 1.000000 3.500000 +v 3.500000 1.000000 4.500000 +v 1.500000 1.000000 3.500000 +v 1.500000 1.000000 4.500000 +v -1.500000 0.000000 4.500000 +v 1.500000 0.000000 3.500000 +v 1.500000 0.000000 4.500000 +v -0.500000 0.000000 3.500000 +v -0.500000 0.000000 4.500000 +v 0.500000 0.000000 3.500000 +v 0.500000 0.000000 4.500000 +v -1.500000 1.000000 3.500000 +v 0.375000 3.000000 3.500000 +v 0.375000 3.000000 4.500000 +v -0.375000 3.000000 3.500000 +v -0.375000 3.000000 4.500000 +v -0.500000 3.000000 -5.500000 +v -0.500000 3.000000 -4.500000 +v 0.500000 3.000000 -4.500000 +v 0.500000 3.000000 -5.500000 +v 0.500000 3.000000 -3.500000 +v 0.500000 3.000000 -2.500000 +v 0.500000 3.000000 -1.500000 +v 0.500000 3.000000 -0.500000 +v 0.500000 3.000000 0.500000 +v 0.500000 3.000000 1.500000 +v 0.500000 3.000000 2.500000 +v -0.500000 3.000000 -3.500000 +v -0.500000 3.000000 -2.500000 +v -0.500000 3.000000 -1.500000 +v -0.500000 3.000000 -0.500000 +v -0.500000 3.000000 0.500000 +v -0.500000 3.000000 1.500000 +v -0.500000 3.000000 2.500000 +v 0.500000 3.000000 5.500000 +v -0.500000 3.000000 5.500000 +v 0.500000 3.000000 4.500000 +v -0.500000 3.000000 4.500000 +v 0.500000 3.000000 3.500000 +v -0.500000 3.000000 3.500000 +v -0.375000 3.875000 -3.500000 +v 0.375000 3.875000 -3.500000 +v -0.375000 3.875000 -2.500000 +v 0.375000 3.875000 -2.500000 +v -0.250000 3.875000 -1.500000 +v 0.250000 3.875000 -1.500000 +v -0.250000 3.875000 -0.500000 +v 0.250000 3.875000 -0.500000 +v -0.250000 3.875000 0.500000 +v 0.250000 3.875000 0.500000 +v -0.375000 3.875000 1.500000 +v 0.375000 3.875000 1.500000 +v -0.375000 3.875000 2.500000 +v 0.250000 3.875000 2.500000 +v -0.375000 3.875000 3.500000 +v 0.250000 3.875000 3.500000 +v -0.250000 3.875000 -4.250000 +v 0.250000 3.875000 -4.250000 +v -0.250000 3.625000 4.500000 +v -0.250000 3.875000 4.250000 +v 0.250000 3.875000 4.250000 +v 0.250000 3.625000 4.500000 +v 0.250000 3.875000 -3.500000 +v 0.250000 3.875000 -2.500000 +v 0.375000 3.875000 -1.500000 +v 0.375000 3.875000 -0.500000 +v 0.375000 3.875000 0.500000 +v 0.250000 3.875000 1.500000 +v 0.375000 3.875000 2.500000 +v -0.250000 3.875000 -3.500000 +v -0.250000 3.875000 -2.500000 +v -0.375000 3.875000 -1.500000 +v -0.375000 3.875000 -0.500000 +v -0.375000 3.875000 0.500000 +v -0.250000 3.875000 1.500000 +v -0.250000 3.875000 2.500000 +v 0.375000 3.875000 3.500000 +v -0.250000 3.875000 3.500000 +v -0.375000 3.875000 -4.375000 +v 0.375000 3.875000 -4.375000 +v 0.375000 3.875000 4.375000 +v -0.375000 3.875000 4.375000 +v -0.250000 4.000000 -3.500000 +v 0.187500 4.000000 -3.500000 +v -0.187500 4.000000 -2.500000 +v 0.187500 4.000000 -2.500000 +v -0.187500 4.000000 -1.500000 +v 0.250000 4.000000 -1.500000 +v -0.250000 4.000000 -0.500000 +v 0.250000 4.000000 -0.500000 +v -0.250000 4.000000 0.500000 +v 0.250000 4.000000 0.500000 +v -0.250000 4.000000 1.500000 +v 0.250000 4.000000 1.500000 +v -0.250000 4.000000 2.500000 +v 0.250000 4.000000 2.500000 +v -0.250000 4.000000 3.500000 +v 0.250000 4.000000 3.500000 +v -0.187500 4.000000 -4.187500 +v 0.187500 4.000000 -4.187500 +v 0.187500 4.000000 4.187500 +v -0.187500 4.000000 4.187500 +v -0.375000 3.000000 -5.375000 +v -0.250000 3.000000 -4.500000 +v 0.250000 3.000000 -4.500000 +v 0.375000 3.000000 -5.375000 +v 0.375000 3.000000 5.375000 +v -0.375000 3.000000 5.375000 +v 0.250000 3.000000 4.500000 +v -0.250000 3.000000 4.500000 +v 0.375000 3.750000 -4.500000 +v -0.375000 3.750000 -4.500000 +v -0.375000 3.750000 4.500000 +v 0.375000 3.750000 4.500000 +v -0.250000 3.625000 -4.500000 +v 0.250000 3.625000 -4.500000 +v -0.250000 3.625000 -5.250000 +v 0.250000 3.625000 -5.250000 +v 0.250000 3.625000 5.250000 +v -0.250000 3.625000 5.250000 +v 0.250000 4.000000 -3.500000 +v 0.250000 4.000000 -2.500000 +v 0.187500 4.000000 -1.500000 +v 0.187500 4.000000 -0.500000 +v 0.187500 4.000000 0.500000 +v 0.187500 4.000000 1.500000 +v 0.187500 4.000000 2.500000 +v -0.187500 4.000000 -3.500000 +v -0.250000 4.000000 -2.500000 +v -0.250000 4.000000 -1.500000 +v -0.187500 4.000000 -0.500000 +v -0.187500 4.000000 0.500000 +v -0.187500 4.000000 1.500000 +v -0.187500 4.000000 2.500000 +v 0.187500 4.000000 3.500000 +v -0.187500 4.000000 3.500000 +v -0.250000 4.000000 -4.250000 +v 0.250000 4.000000 -4.250000 +v 0.250000 4.000000 4.250000 +v -0.250000 4.000000 4.250000 +v -0.187500 3.875000 -3.500000 +v 0.187500 3.875000 -3.500000 +v -0.187500 3.875000 -2.500000 +v 0.187500 3.875000 -2.500000 +v -0.187500 3.875000 -1.500000 +v 0.187500 3.875000 -1.500000 +v -0.187500 3.875000 -0.500000 +v 0.187500 3.875000 -0.500000 +v -0.187500 3.875000 0.500000 +v 0.187500 3.875000 0.500000 +v -0.187500 3.875000 1.500000 +v 0.187500 3.875000 1.500000 +v -0.187500 3.875000 2.500000 +v 0.187500 3.875000 2.500000 +v -0.187500 3.875000 3.500000 +v 0.187500 3.875000 3.500000 +v -0.187500 3.875000 -4.187500 +v 0.187500 3.875000 -4.187500 +v 0.187500 3.875000 4.187500 +v -0.187500 3.875000 4.187500 +v -1.437500 1.875000 -4.750000 +v -1.437500 2.000000 -4.750000 +v -1.437500 1.875000 -5.250000 +v -1.437500 2.000000 -5.250000 +v -0.937500 1.875000 -4.750000 +v -0.937500 2.000000 -4.750000 +v -0.937500 1.875000 -5.250000 +v -0.937500 2.000000 -5.250000 +v -1.437500 1.875000 -5.125000 +v -1.437500 1.875000 -4.875000 +v -1.437500 2.000000 -4.875000 +v -1.437500 2.000000 -5.125000 +v -0.937500 1.875000 -4.875000 +v -0.937500 1.875000 -5.125000 +v -0.937500 2.000000 -5.125000 +v -0.937500 2.000000 -4.875000 +v -1.062500 1.875000 -5.250000 +v -1.312500 1.875000 -5.250000 +v -1.312500 2.000000 -5.250000 +v -1.062500 2.000000 -5.250000 +v -1.312500 1.875000 -4.750000 +v -1.062500 1.875000 -4.750000 +v -1.062500 2.000000 -4.750000 +v -1.312500 2.000000 -4.750000 +v -1.312500 2.000000 -5.125000 +v -1.062500 2.000000 -5.125000 +v -1.312500 2.000000 -4.875000 +v -1.062500 2.000000 -4.875000 +v -1.062500 1.875000 -5.125000 +v -1.312500 1.875000 -5.125000 +v -1.062500 1.875000 -4.875000 +v -1.312500 1.875000 -4.875000 +v -1.437500 1.125000 -4.875000 +v -1.437500 1.125000 -4.750000 +v -1.312500 1.125000 -5.250000 +v -1.437500 1.125000 -5.250000 +v -1.437500 1.125000 -5.125000 +v -1.312500 1.125000 -5.125000 +v -1.312500 1.125000 -4.875000 +v -1.312500 1.125000 -4.750000 +v -1.437500 1.875000 -3.750000 +v -1.437500 2.000000 -3.750000 +v -1.437500 1.875000 -4.250000 +v -1.437500 2.000000 -4.250000 +v -0.937500 1.875000 -3.750000 +v -0.937500 2.000000 -3.750000 +v -0.937500 1.875000 -4.250000 +v -0.937500 2.000000 -4.250000 +v -1.437500 1.875000 -4.125000 +v -1.437500 1.875000 -3.875000 +v -1.437500 2.000000 -3.875000 +v -1.437500 2.000000 -4.125000 +v -0.937500 1.875000 -3.875000 +v -0.937500 1.875000 -4.125000 +v -0.937500 2.000000 -4.125000 +v -0.937500 2.000000 -3.875000 +v -1.062500 1.875000 -4.250000 +v -1.312500 1.875000 -4.250000 +v -1.312500 2.000000 -4.250000 +v -1.062500 2.000000 -4.250000 +v -1.312500 1.875000 -3.750000 +v -1.062500 1.875000 -3.750000 +v -1.062500 2.000000 -3.750000 +v -1.312500 2.000000 -3.750000 +v -1.312500 2.000000 -4.125000 +v -1.062500 2.000000 -4.125000 +v -1.312500 2.000000 -3.875000 +v -1.062500 2.000000 -3.875000 +v -1.062500 1.875000 -4.125000 +v -1.312500 1.875000 -4.125000 +v -1.062500 1.875000 -3.875000 +v -1.312500 1.875000 -3.875000 +v -1.437500 1.125000 -3.875000 +v -1.437500 1.125000 -3.750000 +v -1.312500 1.125000 -4.250000 +v -1.437500 1.125000 -4.250000 +v -1.437500 1.125000 -4.125000 +v -1.312500 1.125000 -4.125000 +v -1.312500 1.125000 -3.875000 +v -1.312500 1.125000 -3.750000 +v -1.437500 1.875000 -2.750000 +v -1.437500 2.000000 -2.750000 +v -1.437500 1.875000 -3.250000 +v -1.437500 2.000000 -3.250000 +v -0.937500 1.875000 -2.750000 +v -0.937500 2.000000 -2.750000 +v -0.937500 1.875000 -3.250000 +v -0.937500 2.000000 -3.250000 +v -1.437500 1.875000 -3.125000 +v -1.437500 1.875000 -2.875000 +v -1.437500 2.000000 -2.875000 +v -1.437500 2.000000 -3.125000 +v -0.937500 1.875000 -2.875000 +v -0.937500 1.875000 -3.125000 +v -0.937500 2.000000 -3.125000 +v -0.937500 2.000000 -2.875000 +v -1.062500 1.875000 -3.250000 +v -1.312500 1.875000 -3.250000 +v -1.312500 2.000000 -3.250000 +v -1.062500 2.000000 -3.250000 +v -1.312500 1.875000 -2.750000 +v -1.062500 1.875000 -2.750000 +v -1.062500 2.000000 -2.750000 +v -1.312500 2.000000 -2.750000 +v -1.312500 2.000000 -3.125000 +v -1.062500 2.000000 -3.125000 +v -1.312500 2.000000 -2.875000 +v -1.062500 2.000000 -2.875000 +v -1.062500 1.875000 -3.125000 +v -1.312500 1.875000 -3.125000 +v -1.062500 1.875000 -2.875000 +v -1.312500 1.875000 -2.875000 +v -1.437500 1.125000 -2.875000 +v -1.437500 1.125000 -2.750000 +v -1.312500 1.125000 -3.250000 +v -1.437500 1.125000 -3.250000 +v -1.437500 1.125000 -3.125000 +v -1.312500 1.125000 -3.125000 +v -1.312500 1.125000 -2.875000 +v -1.312500 1.125000 -2.750000 +v -1.437500 1.875000 -1.750000 +v -1.437500 2.000000 -1.750000 +v -1.437500 1.875000 -2.250000 +v -1.437500 2.000000 -2.250000 +v -0.937500 1.875000 -1.750000 +v -0.937500 2.000000 -1.750000 +v -0.937500 1.875000 -2.250000 +v -0.937500 2.000000 -2.250000 +v -1.437500 1.875000 -2.125000 +v -1.437500 1.875000 -1.875000 +v -1.437500 2.000000 -1.875000 +v -1.437500 2.000000 -2.125000 +v -0.937500 1.875000 -1.875000 +v -0.937500 1.875000 -2.125000 +v -0.937500 2.000000 -2.125000 +v -0.937500 2.000000 -1.875000 +v -1.062500 1.875000 -2.250000 +v -1.312500 1.875000 -2.250000 +v -1.312500 2.000000 -2.250000 +v -1.062500 2.000000 -2.250000 +v -1.312500 1.875000 -1.750000 +v -1.062500 1.875000 -1.750000 +v -1.062500 2.000000 -1.750000 +v -1.312500 2.000000 -1.750000 +v -1.312500 2.000000 -2.125000 +v -1.062500 2.000000 -2.125000 +v -1.312500 2.000000 -1.875000 +v -1.062500 2.000000 -1.875000 +v -1.062500 1.875000 -2.125000 +v -1.312500 1.875000 -2.125000 +v -1.062500 1.875000 -1.875000 +v -1.312500 1.875000 -1.875000 +v -1.437500 1.125000 -1.875000 +v -1.437500 1.125000 -1.750000 +v -1.312500 1.125000 -2.250000 +v -1.437500 1.125000 -2.250000 +v -1.437500 1.125000 -2.125000 +v -1.312500 1.125000 -2.125000 +v -1.312500 1.125000 -1.875000 +v -1.312500 1.125000 -1.750000 +v -1.437500 1.875000 -0.750000 +v -1.437500 2.000000 -0.750000 +v -1.437500 1.875000 -1.250000 +v -1.437500 2.000000 -1.250000 +v -0.937500 1.875000 -0.750000 +v -0.937500 2.000000 -0.750000 +v -0.937500 1.875000 -1.250000 +v -0.937500 2.000000 -1.250000 +v -1.437500 1.875000 -1.125000 +v -1.437500 1.875000 -0.875000 +v -1.437500 2.000000 -0.875000 +v -1.437500 2.000000 -1.125000 +v -0.937500 1.875000 -0.875000 +v -0.937500 1.875000 -1.125000 +v -0.937500 2.000000 -1.125000 +v -0.937500 2.000000 -0.875000 +v -1.062500 1.875000 -1.250000 +v -1.312500 1.875000 -1.250000 +v -1.312500 2.000000 -1.250000 +v -1.062500 2.000000 -1.250000 +v -1.312500 1.875000 -0.750000 +v -1.062500 1.875000 -0.750000 +v -1.062500 2.000000 -0.750000 +v -1.312500 2.000000 -0.750000 +v -1.312500 2.000000 -1.125000 +v -1.062500 2.000000 -1.125000 +v -1.312500 2.000000 -0.875000 +v -1.062500 2.000000 -0.875000 +v -1.062500 1.875000 -1.125000 +v -1.312500 1.875000 -1.125000 +v -1.062500 1.875000 -0.875000 +v -1.312500 1.875000 -0.875000 +v -1.437500 1.125000 -0.875000 +v -1.437500 1.125000 -0.750000 +v -1.312500 1.125000 -1.250000 +v -1.437500 1.125000 -1.250000 +v -1.437500 1.125000 -1.125000 +v -1.312500 1.125000 -1.125000 +v -1.312500 1.125000 -0.875000 +v -1.312500 1.125000 -0.750000 +v -1.437500 1.875000 0.250000 +v -1.437500 2.000000 0.250000 +v -1.437500 1.875000 -0.250000 +v -1.437500 2.000000 -0.250000 +v -0.937500 1.875000 0.250000 +v -0.937500 2.000000 0.250000 +v -0.937500 1.875000 -0.250000 +v -0.937500 2.000000 -0.250000 +v -1.437500 1.875000 -0.125000 +v -1.437500 1.875000 0.125000 +v -1.437500 2.000000 0.125000 +v -1.437500 2.000000 -0.125000 +v -0.937500 1.875000 0.125000 +v -0.937500 1.875000 -0.125000 +v -0.937500 2.000000 -0.125000 +v -0.937500 2.000000 0.125000 +v -1.062500 1.875000 -0.250000 +v -1.312500 1.875000 -0.250000 +v -1.312500 2.000000 -0.250000 +v -1.062500 2.000000 -0.250000 +v -1.312500 1.875000 0.250000 +v -1.062500 1.875000 0.250000 +v -1.062500 2.000000 0.250000 +v -1.312500 2.000000 0.250000 +v -1.312500 2.000000 -0.125000 +v -1.062500 2.000000 -0.125000 +v -1.312500 2.000000 0.125000 +v -1.062500 2.000000 0.125000 +v -1.062500 1.875000 -0.125000 +v -1.312500 1.875000 -0.125000 +v -1.062500 1.875000 0.125000 +v -1.312500 1.875000 0.125000 +v -1.437500 1.125000 0.125000 +v -1.437500 1.125000 0.250000 +v -1.312500 1.125000 -0.250000 +v -1.437500 1.125000 -0.250000 +v -1.437500 1.125000 -0.125000 +v -1.312500 1.125000 -0.125000 +v -1.312500 1.125000 0.125000 +v -1.312500 1.125000 0.250000 +v -1.437500 1.875000 1.250000 +v -1.437500 2.000000 1.250000 +v -1.437500 1.875000 0.750000 +v -1.437500 2.000000 0.750000 +v -0.937500 1.875000 1.250000 +v -0.937500 2.000000 1.250000 +v -0.937500 1.875000 0.750000 +v -0.937500 2.000000 0.750000 +v -1.437500 1.875000 0.875000 +v -1.437500 1.875000 1.125000 +v -1.437500 2.000000 1.125000 +v -1.437500 2.000000 0.875000 +v -0.937500 1.875000 1.125000 +v -0.937500 1.875000 0.875000 +v -0.937500 2.000000 0.875000 +v -0.937500 2.000000 1.125000 +v -1.062500 1.875000 0.750000 +v -1.312500 1.875000 0.750000 +v -1.312500 2.000000 0.750000 +v -1.062500 2.000000 0.750000 +v -1.312500 1.875000 1.250000 +v -1.062500 1.875000 1.250000 +v -1.062500 2.000000 1.250000 +v -1.312500 2.000000 1.250000 +v -1.312500 2.000000 0.875000 +v -1.062500 2.000000 0.875000 +v -1.312500 2.000000 1.125000 +v -1.062500 2.000000 1.125000 +v -1.062500 1.875000 0.875000 +v -1.312500 1.875000 0.875000 +v -1.062500 1.875000 1.125000 +v -1.312500 1.875000 1.125000 +v -1.437500 1.125000 1.125000 +v -1.437500 1.125000 1.250000 +v -1.312500 1.125000 0.750000 +v -1.437500 1.125000 0.750000 +v -1.437500 1.125000 0.875000 +v -1.312500 1.125000 0.875000 +v -1.312500 1.125000 1.125000 +v -1.312500 1.125000 1.250000 +v -1.437500 1.875000 2.250000 +v -1.437500 2.000000 2.250000 +v -1.437500 1.875000 1.750000 +v -1.437500 2.000000 1.750000 +v -0.937500 1.875000 2.250000 +v -0.937500 2.000000 2.250000 +v -0.937500 1.875000 1.750000 +v -0.937500 2.000000 1.750000 +v -1.437500 1.875000 1.875000 +v -1.437500 1.875000 2.125000 +v -1.437500 2.000000 2.125000 +v -1.437500 2.000000 1.875000 +v -0.937500 1.875000 2.125000 +v -0.937500 1.875000 1.875000 +v -0.937500 2.000000 1.875000 +v -0.937500 2.000000 2.125000 +v -1.062500 1.875000 1.750000 +v -1.312500 1.875000 1.750000 +v -1.312500 2.000000 1.750000 +v -1.062500 2.000000 1.750000 +v -1.312500 1.875000 2.250000 +v -1.062500 1.875000 2.250000 +v -1.062500 2.000000 2.250000 +v -1.312500 2.000000 2.250000 +v -1.312500 2.000000 1.875000 +v -1.062500 2.000000 1.875000 +v -1.312500 2.000000 2.125000 +v -1.062500 2.000000 2.125000 +v -1.062500 1.875000 1.875000 +v -1.312500 1.875000 1.875000 +v -1.062500 1.875000 2.125000 +v -1.312500 1.875000 2.125000 +v -1.437500 1.125000 2.125000 +v -1.437500 1.125000 2.250000 +v -1.312500 1.125000 1.750000 +v -1.437500 1.125000 1.750000 +v -1.437500 1.125000 1.875000 +v -1.312500 1.125000 1.875000 +v -1.312500 1.125000 2.125000 +v -1.312500 1.125000 2.250000 +v -1.437500 1.875000 3.250000 +v -1.437500 2.000000 3.250000 +v -1.437500 1.875000 2.750000 +v -1.437500 2.000000 2.750000 +v -0.937500 1.875000 3.250000 +v -0.937500 2.000000 3.250000 +v -0.937500 1.875000 2.750000 +v -0.937500 2.000000 2.750000 +v -1.437500 1.875000 2.875000 +v -1.437500 1.875000 3.125000 +v -1.437500 2.000000 3.125000 +v -1.437500 2.000000 2.875000 +v -0.937500 1.875000 3.125000 +v -0.937500 1.875000 2.875000 +v -0.937500 2.000000 2.875000 +v -0.937500 2.000000 3.125000 +v -1.062500 1.875000 2.750000 +v -1.312500 1.875000 2.750000 +v -1.312500 2.000000 2.750000 +v -1.062500 2.000000 2.750000 +v -1.312500 1.875000 3.250000 +v -1.062500 1.875000 3.250000 +v -1.062500 2.000000 3.250000 +v -1.312500 2.000000 3.250000 +v -1.312500 2.000000 2.875000 +v -1.062500 2.000000 2.875000 +v -1.312500 2.000000 3.125000 +v -1.062500 2.000000 3.125000 +v -1.062500 1.875000 2.875000 +v -1.312500 1.875000 2.875000 +v -1.062500 1.875000 3.125000 +v -1.312500 1.875000 3.125000 +v -1.437500 1.125000 3.125000 +v -1.437500 1.125000 3.250000 +v -1.312500 1.125000 2.750000 +v -1.437500 1.125000 2.750000 +v -1.437500 1.125000 2.875000 +v -1.312500 1.125000 2.875000 +v -1.312500 1.125000 3.125000 +v -1.312500 1.125000 3.250000 +v -1.437500 1.875000 4.250000 +v -1.437500 2.000000 4.250000 +v -1.437500 1.875000 3.750000 +v -1.437500 2.000000 3.750000 +v -0.937500 1.875000 4.250000 +v -0.937500 2.000000 4.250000 +v -0.937500 1.875000 3.750000 +v -0.937500 2.000000 3.750000 +v -1.437500 1.875000 3.875000 +v -1.437500 1.875000 4.125000 +v -1.437500 2.000000 4.125000 +v -1.437500 2.000000 3.875000 +v -0.937500 1.875000 4.125000 +v -0.937500 1.875000 3.875000 +v -0.937500 2.000000 3.875000 +v -0.937500 2.000000 4.125000 +v -1.062500 1.875000 3.750000 +v -1.312500 1.875000 3.750000 +v -1.312500 2.000000 3.750000 +v -1.062500 2.000000 3.750000 +v -1.312500 1.875000 4.250000 +v -1.062500 1.875000 4.250000 +v -1.062500 2.000000 4.250000 +v -1.312500 2.000000 4.250000 +v -1.312500 2.000000 3.875000 +v -1.062500 2.000000 3.875000 +v -1.312500 2.000000 4.125000 +v -1.062500 2.000000 4.125000 +v -1.062500 1.875000 3.875000 +v -1.312500 1.875000 3.875000 +v -1.062500 1.875000 4.125000 +v -1.312500 1.875000 4.125000 +v -1.437500 1.125000 4.125000 +v -1.437500 1.125000 4.250000 +v -1.312500 1.125000 3.750000 +v -1.437500 1.125000 3.750000 +v -1.437500 1.125000 3.875000 +v -1.312500 1.125000 3.875000 +v -1.312500 1.125000 4.125000 +v -1.312500 1.125000 4.250000 +v -1.437500 1.875000 5.250000 +v -1.437500 2.000000 5.250000 +v -1.437500 1.875000 4.750000 +v -1.437500 2.000000 4.750000 +v -0.937500 1.875000 5.250000 +v -0.937500 2.000000 5.250000 +v -0.937500 1.875000 4.750000 +v -0.937500 2.000000 4.750000 +v -1.437500 1.875000 4.875000 +v -1.437500 1.875000 5.125000 +v -1.437500 2.000000 5.125000 +v -1.437500 2.000000 4.875000 +v -0.937500 1.875000 5.125000 +v -0.937500 1.875000 4.875000 +v -0.937500 2.000000 4.875000 +v -0.937500 2.000000 5.125000 +v -1.062500 1.875000 4.750000 +v -1.312500 1.875000 4.750000 +v -1.312500 2.000000 4.750000 +v -1.062500 2.000000 4.750000 +v -1.312500 1.875000 5.250000 +v -1.062500 1.875000 5.250000 +v -1.062500 2.000000 5.250000 +v -1.312500 2.000000 5.250000 +v -1.312500 2.000000 4.875000 +v -1.062500 2.000000 4.875000 +v -1.312500 2.000000 5.125000 +v -1.062500 2.000000 5.125000 +v -1.062500 1.875000 4.875000 +v -1.312500 1.875000 4.875000 +v -1.062500 1.875000 5.125000 +v -1.312500 1.875000 5.125000 +v -1.437500 1.125000 5.125000 +v -1.437500 1.125000 5.250000 +v -1.312500 1.125000 4.750000 +v -1.437500 1.125000 4.750000 +v -1.437500 1.125000 4.875000 +v -1.312500 1.125000 4.875000 +v -1.312500 1.125000 5.125000 +v -1.312500 1.125000 5.250000 +v 1.437500 1.875000 -4.750000 +v 1.437500 2.000000 -4.750000 +v 1.437500 1.875000 -5.250000 +v 1.437500 2.000000 -5.250000 +v 0.937500 1.875000 -4.750000 +v 0.937500 2.000000 -4.750000 +v 0.937500 1.875000 -5.250000 +v 0.937500 2.000000 -5.250000 +v 1.437500 1.875000 -5.125000 +v 1.437500 1.875000 -4.875000 +v 1.437500 2.000000 -4.875000 +v 1.437500 2.000000 -5.125000 +v 0.937500 1.875000 -4.875000 +v 0.937500 1.875000 -5.125000 +v 0.937500 2.000000 -5.125000 +v 0.937500 2.000000 -4.875000 +v 1.062500 1.875000 -5.250000 +v 1.312500 1.875000 -5.250000 +v 1.312500 2.000000 -5.250000 +v 1.062500 2.000000 -5.250000 +v 1.312500 1.875000 -4.750000 +v 1.062500 1.875000 -4.750000 +v 1.062500 2.000000 -4.750000 +v 1.312500 2.000000 -4.750000 +v 1.312500 2.000000 -5.125000 +v 1.062500 2.000000 -5.125000 +v 1.312500 2.000000 -4.875000 +v 1.062500 2.000000 -4.875000 +v 1.062500 1.875000 -5.125000 +v 1.312500 1.875000 -5.125000 +v 1.062500 1.875000 -4.875000 +v 1.312500 1.875000 -4.875000 +v 1.437500 1.125000 -4.875000 +v 1.437500 1.125000 -4.750000 +v 1.312500 1.125000 -5.250000 +v 1.437500 1.125000 -5.250000 +v 1.437500 1.125000 -5.125000 +v 1.312500 1.125000 -5.125000 +v 1.312500 1.125000 -4.875000 +v 1.312500 1.125000 -4.750000 +v 1.437500 1.875000 -3.750000 +v 1.437500 2.000000 -3.750000 +v 1.437500 1.875000 -4.250000 +v 1.437500 2.000000 -4.250000 +v 0.937500 1.875000 -3.750000 +v 0.937500 2.000000 -3.750000 +v 0.937500 1.875000 -4.250000 +v 0.937500 2.000000 -4.250000 +v 1.437500 1.875000 -4.125000 +v 1.437500 1.875000 -3.875000 +v 1.437500 2.000000 -3.875000 +v 1.437500 2.000000 -4.125000 +v 0.937500 1.875000 -3.875000 +v 0.937500 1.875000 -4.125000 +v 0.937500 2.000000 -4.125000 +v 0.937500 2.000000 -3.875000 +v 1.062500 1.875000 -4.250000 +v 1.312500 1.875000 -4.250000 +v 1.312500 2.000000 -4.250000 +v 1.062500 2.000000 -4.250000 +v 1.312500 1.875000 -3.750000 +v 1.062500 1.875000 -3.750000 +v 1.062500 2.000000 -3.750000 +v 1.312500 2.000000 -3.750000 +v 1.312500 2.000000 -4.125000 +v 1.062500 2.000000 -4.125000 +v 1.312500 2.000000 -3.875000 +v 1.062500 2.000000 -3.875000 +v 1.062500 1.875000 -4.125000 +v 1.312500 1.875000 -4.125000 +v 1.062500 1.875000 -3.875000 +v 1.312500 1.875000 -3.875000 +v 1.437500 1.125000 -3.875000 +v 1.437500 1.125000 -3.750000 +v 1.312500 1.125000 -4.250000 +v 1.437500 1.125000 -4.250000 +v 1.437500 1.125000 -4.125000 +v 1.312500 1.125000 -4.125000 +v 1.312500 1.125000 -3.875000 +v 1.312500 1.125000 -3.750000 +v 1.437500 1.875000 -2.750000 +v 1.437500 2.000000 -2.750000 +v 1.437500 1.875000 -3.250000 +v 1.437500 2.000000 -3.250000 +v 0.937500 1.875000 -2.750000 +v 0.937500 2.000000 -2.750000 +v 0.937500 1.875000 -3.250000 +v 0.937500 2.000000 -3.250000 +v 1.437500 1.875000 -3.125000 +v 1.437500 1.875000 -2.875000 +v 1.437500 2.000000 -2.875000 +v 1.437500 2.000000 -3.125000 +v 0.937500 1.875000 -2.875000 +v 0.937500 1.875000 -3.125000 +v 0.937500 2.000000 -3.125000 +v 0.937500 2.000000 -2.875000 +v 1.062500 1.875000 -3.250000 +v 1.312500 1.875000 -3.250000 +v 1.312500 2.000000 -3.250000 +v 1.062500 2.000000 -3.250000 +v 1.312500 1.875000 -2.750000 +v 1.062500 1.875000 -2.750000 +v 1.062500 2.000000 -2.750000 +v 1.312500 2.000000 -2.750000 +v 1.312500 2.000000 -3.125000 +v 1.062500 2.000000 -3.125000 +v 1.312500 2.000000 -2.875000 +v 1.062500 2.000000 -2.875000 +v 1.062500 1.875000 -3.125000 +v 1.312500 1.875000 -3.125000 +v 1.062500 1.875000 -2.875000 +v 1.312500 1.875000 -2.875000 +v 1.437500 1.125000 -2.875000 +v 1.437500 1.125000 -2.750000 +v 1.312500 1.125000 -3.250000 +v 1.437500 1.125000 -3.250000 +v 1.437500 1.125000 -3.125000 +v 1.312500 1.125000 -3.125000 +v 1.312500 1.125000 -2.875000 +v 1.312500 1.125000 -2.750000 +v 1.437500 1.875000 -1.750000 +v 1.437500 2.000000 -1.750000 +v 1.437500 1.875000 -2.250000 +v 1.437500 2.000000 -2.250000 +v 0.937500 1.875000 -1.750000 +v 0.937500 2.000000 -1.750000 +v 0.937500 1.875000 -2.250000 +v 0.937500 2.000000 -2.250000 +v 1.437500 1.875000 -2.125000 +v 1.437500 1.875000 -1.875000 +v 1.437500 2.000000 -1.875000 +v 1.437500 2.000000 -2.125000 +v 0.937500 1.875000 -1.875000 +v 0.937500 1.875000 -2.125000 +v 0.937500 2.000000 -2.125000 +v 0.937500 2.000000 -1.875000 +v 1.062500 1.875000 -2.250000 +v 1.312500 1.875000 -2.250000 +v 1.312500 2.000000 -2.250000 +v 1.062500 2.000000 -2.250000 +v 1.312500 1.875000 -1.750000 +v 1.062500 1.875000 -1.750000 +v 1.062500 2.000000 -1.750000 +v 1.312500 2.000000 -1.750000 +v 1.312500 2.000000 -2.125000 +v 1.062500 2.000000 -2.125000 +v 1.312500 2.000000 -1.875000 +v 1.062500 2.000000 -1.875000 +v 1.062500 1.875000 -2.125000 +v 1.312500 1.875000 -2.125000 +v 1.062500 1.875000 -1.875000 +v 1.312500 1.875000 -1.875000 +v 1.437500 1.125000 -1.875000 +v 1.437500 1.125000 -1.750000 +v 1.312500 1.125000 -2.250000 +v 1.437500 1.125000 -2.250000 +v 1.437500 1.125000 -2.125000 +v 1.312500 1.125000 -2.125000 +v 1.312500 1.125000 -1.875000 +v 1.312500 1.125000 -1.750000 +v 1.437500 1.875000 -0.750000 +v 1.437500 2.000000 -0.750000 +v 1.437500 1.875000 -1.250000 +v 1.437500 2.000000 -1.250000 +v 0.937500 1.875000 -0.750000 +v 0.937500 2.000000 -0.750000 +v 0.937500 1.875000 -1.250000 +v 0.937500 2.000000 -1.250000 +v 1.437500 1.875000 -1.125000 +v 1.437500 1.875000 -0.875000 +v 1.437500 2.000000 -0.875000 +v 1.437500 2.000000 -1.125000 +v 0.937500 1.875000 -0.875000 +v 0.937500 1.875000 -1.125000 +v 0.937500 2.000000 -1.125000 +v 0.937500 2.000000 -0.875000 +v 1.062500 1.875000 -1.250000 +v 1.312500 1.875000 -1.250000 +v 1.312500 2.000000 -1.250000 +v 1.062500 2.000000 -1.250000 +v 1.312500 1.875000 -0.750000 +v 1.062500 1.875000 -0.750000 +v 1.062500 2.000000 -0.750000 +v 1.312500 2.000000 -0.750000 +v 1.312500 2.000000 -1.125000 +v 1.062500 2.000000 -1.125000 +v 1.312500 2.000000 -0.875000 +v 1.062500 2.000000 -0.875000 +v 1.062500 1.875000 -1.125000 +v 1.312500 1.875000 -1.125000 +v 1.062500 1.875000 -0.875000 +v 1.312500 1.875000 -0.875000 +v 1.437500 1.125000 -0.875000 +v 1.437500 1.125000 -0.750000 +v 1.312500 1.125000 -1.250000 +v 1.437500 1.125000 -1.250000 +v 1.437500 1.125000 -1.125000 +v 1.312500 1.125000 -1.125000 +v 1.312500 1.125000 -0.875000 +v 1.312500 1.125000 -0.750000 +v 1.437500 1.875000 0.250000 +v 1.437500 2.000000 0.250000 +v 1.437500 1.875000 -0.250000 +v 1.437500 2.000000 -0.250000 +v 0.937500 1.875000 0.250000 +v 0.937500 2.000000 0.250000 +v 0.937500 1.875000 -0.250000 +v 0.937500 2.000000 -0.250000 +v 1.437500 1.875000 -0.125000 +v 1.437500 1.875000 0.125000 +v 1.437500 2.000000 0.125000 +v 1.437500 2.000000 -0.125000 +v 0.937500 1.875000 0.125000 +v 0.937500 1.875000 -0.125000 +v 0.937500 2.000000 -0.125000 +v 0.937500 2.000000 0.125000 +v 1.062500 1.875000 -0.250000 +v 1.312500 1.875000 -0.250000 +v 1.312500 2.000000 -0.250000 +v 1.062500 2.000000 -0.250000 +v 1.312500 1.875000 0.250000 +v 1.062500 1.875000 0.250000 +v 1.062500 2.000000 0.250000 +v 1.312500 2.000000 0.250000 +v 1.312500 2.000000 -0.125000 +v 1.062500 2.000000 -0.125000 +v 1.312500 2.000000 0.125000 +v 1.062500 2.000000 0.125000 +v 1.062500 1.875000 -0.125000 +v 1.312500 1.875000 -0.125000 +v 1.062500 1.875000 0.125000 +v 1.312500 1.875000 0.125000 +v 1.437500 1.125000 0.125000 +v 1.437500 1.125000 0.250000 +v 1.312500 1.125000 -0.250000 +v 1.437500 1.125000 -0.250000 +v 1.437500 1.125000 -0.125000 +v 1.312500 1.125000 -0.125000 +v 1.312500 1.125000 0.125000 +v 1.312500 1.125000 0.250000 +v 1.437500 1.875000 1.250000 +v 1.437500 2.000000 1.250000 +v 1.437500 1.875000 0.750000 +v 1.437500 2.000000 0.750000 +v 0.937500 1.875000 1.250000 +v 0.937500 2.000000 1.250000 +v 0.937500 1.875000 0.750000 +v 0.937500 2.000000 0.750000 +v 1.437500 1.875000 0.875000 +v 1.437500 1.875000 1.125000 +v 1.437500 2.000000 1.125000 +v 1.437500 2.000000 0.875000 +v 0.937500 1.875000 1.125000 +v 0.937500 1.875000 0.875000 +v 0.937500 2.000000 0.875000 +v 0.937500 2.000000 1.125000 +v 1.062500 1.875000 0.750000 +v 1.312500 1.875000 0.750000 +v 1.312500 2.000000 0.750000 +v 1.062500 2.000000 0.750000 +v 1.312500 1.875000 1.250000 +v 1.062500 1.875000 1.250000 +v 1.062500 2.000000 1.250000 +v 1.312500 2.000000 1.250000 +v 1.312500 2.000000 0.875000 +v 1.062500 2.000000 0.875000 +v 1.312500 2.000000 1.125000 +v 1.062500 2.000000 1.125000 +v 1.062500 1.875000 0.875000 +v 1.312500 1.875000 0.875000 +v 1.062500 1.875000 1.125000 +v 1.312500 1.875000 1.125000 +v 1.437500 1.125000 1.125000 +v 1.437500 1.125000 1.250000 +v 1.312500 1.125000 0.750000 +v 1.437500 1.125000 0.750000 +v 1.437500 1.125000 0.875000 +v 1.312500 1.125000 0.875000 +v 1.312500 1.125000 1.125000 +v 1.312500 1.125000 1.250000 +v 1.437500 1.875000 2.250000 +v 1.437500 2.000000 2.250000 +v 1.437500 1.875000 1.750000 +v 1.437500 2.000000 1.750000 +v 0.937500 1.875000 2.250000 +v 0.937500 2.000000 2.250000 +v 0.937500 1.875000 1.750000 +v 0.937500 2.000000 1.750000 +v 1.437500 1.875000 1.875000 +v 1.437500 1.875000 2.125000 +v 1.437500 2.000000 2.125000 +v 1.437500 2.000000 1.875000 +v 0.937500 1.875000 2.125000 +v 0.937500 1.875000 1.875000 +v 0.937500 2.000000 1.875000 +v 0.937500 2.000000 2.125000 +v 1.062500 1.875000 1.750000 +v 1.312500 1.875000 1.750000 +v 1.312500 2.000000 1.750000 +v 1.062500 2.000000 1.750000 +v 1.312500 1.875000 2.250000 +v 1.062500 1.875000 2.250000 +v 1.062500 2.000000 2.250000 +v 1.312500 2.000000 2.250000 +v 1.312500 2.000000 1.875000 +v 1.062500 2.000000 1.875000 +v 1.312500 2.000000 2.125000 +v 1.062500 2.000000 2.125000 +v 1.062500 1.875000 1.875000 +v 1.312500 1.875000 1.875000 +v 1.062500 1.875000 2.125000 +v 1.312500 1.875000 2.125000 +v 1.437500 1.125000 2.125000 +v 1.437500 1.125000 2.250000 +v 1.312500 1.125000 1.750000 +v 1.437500 1.125000 1.750000 +v 1.437500 1.125000 1.875000 +v 1.312500 1.125000 1.875000 +v 1.312500 1.125000 2.125000 +v 1.312500 1.125000 2.250000 +v 1.437500 1.875000 3.250000 +v 1.437500 2.000000 3.250000 +v 1.437500 1.875000 2.750000 +v 1.437500 2.000000 2.750000 +v 0.937500 1.875000 3.250000 +v 0.937500 2.000000 3.250000 +v 0.937500 1.875000 2.750000 +v 0.937500 2.000000 2.750000 +v 1.437500 1.875000 2.875000 +v 1.437500 1.875000 3.125000 +v 1.437500 2.000000 3.125000 +v 1.437500 2.000000 2.875000 +v 0.937500 1.875000 3.125000 +v 0.937500 1.875000 2.875000 +v 0.937500 2.000000 2.875000 +v 0.937500 2.000000 3.125000 +v 1.062500 1.875000 2.750000 +v 1.312500 1.875000 2.750000 +v 1.312500 2.000000 2.750000 +v 1.062500 2.000000 2.750000 +v 1.312500 1.875000 3.250000 +v 1.062500 1.875000 3.250000 +v 1.062500 2.000000 3.250000 +v 1.312500 2.000000 3.250000 +v 1.312500 2.000000 2.875000 +v 1.062500 2.000000 2.875000 +v 1.312500 2.000000 3.125000 +v 1.062500 2.000000 3.125000 +v 1.062500 1.875000 2.875000 +v 1.312500 1.875000 2.875000 +v 1.062500 1.875000 3.125000 +v 1.312500 1.875000 3.125000 +v 1.437500 1.125000 3.125000 +v 1.437500 1.125000 3.250000 +v 1.312500 1.125000 2.750000 +v 1.437500 1.125000 2.750000 +v 1.437500 1.125000 2.875000 +v 1.312500 1.125000 2.875000 +v 1.312500 1.125000 3.125000 +v 1.312500 1.125000 3.250000 +v 1.437500 1.875000 4.250000 +v 1.437500 2.000000 4.250000 +v 1.437500 1.875000 3.750000 +v 1.437500 2.000000 3.750000 +v 0.937500 1.875000 4.250000 +v 0.937500 2.000000 4.250000 +v 0.937500 1.875000 3.750000 +v 0.937500 2.000000 3.750000 +v 1.437500 1.875000 3.875000 +v 1.437500 1.875000 4.125000 +v 1.437500 2.000000 4.125000 +v 1.437500 2.000000 3.875000 +v 0.937500 1.875000 4.125000 +v 0.937500 1.875000 3.875000 +v 0.937500 2.000000 3.875000 +v 0.937500 2.000000 4.125000 +v 1.062500 1.875000 3.750000 +v 1.312500 1.875000 3.750000 +v 1.312500 2.000000 3.750000 +v 1.062500 2.000000 3.750000 +v 1.312500 1.875000 4.250000 +v 1.062500 1.875000 4.250000 +v 1.062500 2.000000 4.250000 +v 1.312500 2.000000 4.250000 +v 1.312500 2.000000 3.875000 +v 1.062500 2.000000 3.875000 +v 1.312500 2.000000 4.125000 +v 1.062500 2.000000 4.125000 +v 1.062500 1.875000 3.875000 +v 1.312500 1.875000 3.875000 +v 1.062500 1.875000 4.125000 +v 1.312500 1.875000 4.125000 +v 1.437500 1.125000 4.125000 +v 1.437500 1.125000 4.250000 +v 1.312500 1.125000 3.750000 +v 1.437500 1.125000 3.750000 +v 1.437500 1.125000 3.875000 +v 1.312500 1.125000 3.875000 +v 1.312500 1.125000 4.125000 +v 1.312500 1.125000 4.250000 +v 1.437500 1.875000 5.250000 +v 1.437500 2.000000 5.250000 +v 1.437500 1.875000 4.750000 +v 1.437500 2.000000 4.750000 +v 0.937500 1.875000 5.250000 +v 0.937500 2.000000 5.250000 +v 0.937500 1.875000 4.750000 +v 0.937500 2.000000 4.750000 +v 1.437500 1.875000 4.875000 +v 1.437500 1.875000 5.125000 +v 1.437500 2.000000 5.125000 +v 1.437500 2.000000 4.875000 +v 0.937500 1.875000 5.125000 +v 0.937500 1.875000 4.875000 +v 0.937500 2.000000 4.875000 +v 0.937500 2.000000 5.125000 +v 1.062500 1.875000 4.750000 +v 1.312500 1.875000 4.750000 +v 1.312500 2.000000 4.750000 +v 1.062500 2.000000 4.750000 +v 1.312500 1.875000 5.250000 +v 1.062500 1.875000 5.250000 +v 1.062500 2.000000 5.250000 +v 1.312500 2.000000 5.250000 +v 1.312500 2.000000 4.875000 +v 1.062500 2.000000 4.875000 +v 1.312500 2.000000 5.125000 +v 1.062500 2.000000 5.125000 +v 1.062500 1.875000 4.875000 +v 1.312500 1.875000 4.875000 +v 1.062500 1.875000 5.125000 +v 1.312500 1.875000 5.125000 +v 1.437500 1.125000 5.125000 +v 1.437500 1.125000 5.250000 +v 1.312500 1.125000 4.750000 +v 1.437500 1.125000 4.750000 +v 1.437500 1.125000 4.875000 +v 1.312500 1.125000 4.875000 +v 1.312500 1.125000 5.125000 +v 1.312500 1.125000 5.250000 +v 0.122617 2.375000 -5.500900 +v 0.122617 2.625000 -5.500900 +v 0.122617 2.125000 -5.750900 +v 0.122617 2.375000 -5.750900 +v 0.185117 2.375000 -5.500900 +v 0.185117 2.625000 -5.500900 +v 0.185117 2.125000 -5.750900 +v 0.185117 2.375000 -5.750900 +v 0.122617 2.062500 -5.750900 +v 0.122617 2.312500 -5.500900 +v 0.185117 2.062500 -5.750900 +v 0.185117 2.312500 -5.500900 +v -0.127383 2.125000 -5.750900 +v -0.127383 2.375000 -5.500900 +v -0.127383 2.062500 -5.750900 +v -0.127383 2.312500 -5.500900 +v -0.189883 2.125000 -5.750900 +v -0.189883 2.375000 -5.500900 +v -0.189883 2.062500 -5.750900 +v -0.189883 2.312500 -5.500900 +v -0.127383 2.375000 -5.750900 +v -0.127383 2.625000 -5.500900 +v -0.189883 2.375000 -5.750900 +v -0.189883 2.625000 -5.500900 +v 0.122617 2.375000 5.500900 +v 0.122617 2.625000 5.500900 +v 0.122617 2.125000 5.750900 +v 0.122617 2.375000 5.750900 +v 0.185117 2.375000 5.500900 +v 0.185117 2.625000 5.500900 +v 0.185117 2.125000 5.750900 +v 0.185117 2.375000 5.750900 +v 0.122617 2.062500 5.750900 +v 0.122617 2.312500 5.500900 +v 0.185117 2.062500 5.750900 +v 0.185117 2.312500 5.500900 +v -0.127383 2.125000 5.750900 +v -0.127383 2.375000 5.500900 +v -0.127383 2.062500 5.750900 +v -0.127383 2.312500 5.500900 +v -0.189883 2.125000 5.750900 +v -0.189883 2.375000 5.500900 +v -0.189883 2.062500 5.750900 +v -0.189883 2.312500 5.500900 +v -0.127383 2.375000 5.750900 +v -0.127383 2.625000 5.500900 +v -0.189883 2.375000 5.750900 +v -0.189883 2.625000 5.500900 +v -1.555902 1.027951 -3.937500 +v -0.555902 3.027951 -3.937500 +v -1.555902 1.027951 -4.062500 +v -0.555902 3.027951 -4.062500 +v -1.444098 0.972049 -3.937500 +v -0.444098 2.972049 -3.937500 +v -1.444098 0.972049 -4.062500 +v -0.444098 2.972049 -4.062500 +v -1.555902 1.027951 -1.937500 +v -0.555902 3.027951 -1.937500 +v -1.555902 1.027951 -2.062500 +v -0.555902 3.027951 -2.062500 +v -1.444098 0.972049 -1.937500 +v -0.444098 2.972049 -1.937500 +v -1.444098 0.972049 -2.062500 +v -0.444098 2.972049 -2.062500 +v -1.555902 1.027951 0.062500 +v -0.555902 3.027951 0.062500 +v -1.555902 1.027951 -0.062500 +v -0.555902 3.027951 -0.062500 +v -1.444098 0.972049 0.062500 +v -0.444098 2.972049 0.062500 +v -1.444098 0.972049 -0.062500 +v -0.444098 2.972049 -0.062500 +v -1.555902 1.027951 2.062500 +v -0.555902 3.027951 2.062500 +v -1.555902 1.027951 1.937500 +v -0.555902 3.027951 1.937500 +v -1.444098 0.972049 2.062500 +v -0.444098 2.972049 2.062500 +v -1.444098 0.972049 1.937500 +v -0.444098 2.972049 1.937500 +v -1.555902 1.027951 4.062500 +v -0.555902 3.027951 4.062500 +v -1.555902 1.027951 3.937500 +v -0.555902 3.027951 3.937500 +v -1.444098 0.972049 4.062500 +v -0.444098 2.972049 4.062500 +v -1.444098 0.972049 3.937500 +v -0.444098 2.972049 3.937500 +v 1.555902 1.027951 -3.937500 +v 0.555902 3.027951 -3.937500 +v 1.555902 1.027951 -4.062500 +v 0.555902 3.027951 -4.062500 +v 1.444098 0.972049 -3.937500 +v 0.444098 2.972049 -3.937500 +v 1.444098 0.972049 -4.062500 +v 0.444098 2.972049 -4.062500 +v 1.555902 1.027951 -1.937500 +v 0.555902 3.027951 -1.937500 +v 1.555902 1.027951 -2.062500 +v 0.555902 3.027951 -2.062500 +v 1.444098 0.972049 -1.937500 +v 0.444098 2.972049 -1.937500 +v 1.444098 0.972049 -2.062500 +v 0.444098 2.972049 -2.062500 +v 1.555902 1.027951 0.062500 +v 0.555902 3.027951 0.062500 +v 1.555902 1.027951 -0.062500 +v 0.555902 3.027951 -0.062500 +v 1.444098 0.972049 0.062500 +v 0.444098 2.972049 0.062500 +v 1.444098 0.972049 -0.062500 +v 0.444098 2.972049 -0.062500 +v 1.555902 1.027951 2.062500 +v 0.555902 3.027951 2.062500 +v 1.555902 1.027951 1.937500 +v 0.555902 3.027951 1.937500 +v 1.444098 0.972049 2.062500 +v 0.444098 2.972049 2.062500 +v 1.444098 0.972049 1.937500 +v 0.444098 2.972049 1.937500 +v 1.555902 1.027951 4.062500 +v 0.555902 3.027951 4.062500 +v 1.555902 1.027951 3.937500 +v 0.555902 3.027951 3.937500 +v 1.444098 0.972049 4.062500 +v 0.444098 2.972049 4.062500 +v 1.444098 0.972049 3.937500 +v 0.444098 2.972049 3.937500 +v 2.750000 1.000000 4.250000 +v 2.750000 3.000000 4.250000 +v 2.750000 1.000000 3.750000 +v 2.750000 3.000000 3.750000 +v 3.250000 1.000000 4.250000 +v 3.250000 3.000000 4.250000 +v 3.250000 1.000000 3.750000 +v 3.250000 3.000000 3.750000 +v 3.103553 3.353553 3.750000 +v 3.103553 3.353553 4.250000 +v 2.042893 3.707107 3.750000 +v 2.396447 4.060660 3.750000 +v 2.396447 4.060660 4.250000 +v 2.042893 3.707107 4.250000 +v 2.042893 4.207107 3.750000 +v 2.042893 4.207107 4.250000 +v 1.689340 4.060660 4.250000 +v 1.689340 4.060660 3.750000 +v 0.363514 2.734836 3.750000 +v 0.363514 2.734836 4.250000 +v 0.717067 2.381282 4.250000 +v 0.717067 2.381282 3.750000 +v 2.750000 1.000000 2.250000 +v 2.750000 3.000000 2.250000 +v 2.750000 1.000000 1.750000 +v 2.750000 3.000000 1.750000 +v 3.250000 1.000000 2.250000 +v 3.250000 3.000000 2.250000 +v 3.250000 1.000000 1.750000 +v 3.250000 3.000000 1.750000 +v 3.103553 3.353553 1.750000 +v 3.103553 3.353553 2.250000 +v 2.042893 3.707107 1.750000 +v 2.396447 4.060660 1.750000 +v 2.396447 4.060660 2.250000 +v 2.042893 3.707107 2.250000 +v 2.042893 4.207107 1.750000 +v 2.042893 4.207107 2.250000 +v 1.689340 4.060660 2.250000 +v 1.689340 4.060660 1.750000 +v 0.363514 2.734836 1.750000 +v 0.363514 2.734836 2.250000 +v 0.717067 2.381282 2.250000 +v 0.717067 2.381282 1.750000 +v 2.750000 1.000000 0.250000 +v 2.750000 3.000000 0.250000 +v 2.750000 1.000000 -0.250000 +v 2.750000 3.000000 -0.250000 +v 3.250000 1.000000 0.250000 +v 3.250000 3.000000 0.250000 +v 3.250000 1.000000 -0.250000 +v 3.250000 3.000000 -0.250000 +v 3.103553 3.353553 -0.250000 +v 3.103553 3.353553 0.250000 +v 2.042893 3.707107 -0.250000 +v 2.396447 4.060660 -0.250000 +v 2.396447 4.060660 0.250000 +v 2.042893 3.707107 0.250000 +v 2.042893 4.207107 -0.250000 +v 2.042893 4.207107 0.250000 +v 1.689340 4.060660 0.250000 +v 1.689340 4.060660 -0.250000 +v 0.363514 2.734836 -0.250000 +v 0.363514 2.734836 0.250000 +v 0.717067 2.381282 0.250000 +v 0.717067 2.381282 -0.250000 +v 2.750000 1.000000 -1.750000 +v 2.750000 3.000000 -1.750000 +v 2.750000 1.000000 -2.250000 +v 2.750000 3.000000 -2.250000 +v 3.250000 1.000000 -1.750000 +v 3.250000 3.000000 -1.750000 +v 3.250000 1.000000 -2.250000 +v 3.250000 3.000000 -2.250000 +v 3.103553 3.353553 -2.250000 +v 3.103553 3.353553 -1.750000 +v 2.042893 3.707107 -2.250000 +v 2.396447 4.060660 -2.250000 +v 2.396447 4.060660 -1.750000 +v 2.042893 3.707107 -1.750000 +v 2.042893 4.207107 -2.250000 +v 2.042893 4.207107 -1.750000 +v 1.689340 4.060660 -1.750000 +v 1.689340 4.060660 -2.250000 +v 0.363514 2.734836 -2.250000 +v 0.363514 2.734836 -1.750000 +v 0.717067 2.381282 -1.750000 +v 0.717067 2.381282 -2.250000 +v 2.750000 1.000000 -3.750000 +v 2.750000 3.000000 -3.750000 +v 2.750000 1.000000 -4.250000 +v 2.750000 3.000000 -4.250000 +v 3.250000 1.000000 -3.750000 +v 3.250000 3.000000 -3.750000 +v 3.250000 1.000000 -4.250000 +v 3.250000 3.000000 -4.250000 +v 3.103553 3.353553 -4.250000 +v 3.103553 3.353553 -3.750000 +v 2.042893 3.707107 -4.250000 +v 2.396447 4.060660 -4.250000 +v 2.396447 4.060660 -3.750000 +v 2.042893 3.707107 -3.750000 +v 2.042893 4.207107 -4.250000 +v 2.042893 4.207107 -3.750000 +v 1.689340 4.060660 -3.750000 +v 1.689340 4.060660 -4.250000 +v 0.363514 2.734836 -4.250000 +v 0.363514 2.734836 -3.750000 +v 0.717067 2.381282 -3.750000 +v 0.717067 2.381282 -4.250000 +vt 0.280000 0.120130 +vt 0.325714 0.016234 +vt 0.325714 0.120130 +vt 0.860000 0.051948 +vt 0.882857 0.048701 +vt 0.882857 0.051948 +vt 0.371429 0.016234 +vt 0.925714 0.045455 +vt 0.922857 0.019481 +vt 0.925714 0.019481 +vt 0.234286 0.016234 +vt 0.280000 0.016234 +vt 0.737143 0.123377 +vt 0.691429 0.240260 +vt 0.691429 0.123377 +vt 0.685714 0.022727 +vt 0.662857 0.055195 +vt 0.662857 0.022727 +vt 0.645714 0.240260 +vt 0.600000 0.240260 +vt 0.645714 0.123377 +vt 0.554286 0.240260 +vt 0.600000 0.123377 +vt 0.508571 0.240260 +vt 0.554286 0.123377 +vt 0.462857 0.240260 +vt 0.508571 0.123377 +vt 0.417143 0.240260 +vt 0.462857 0.123377 +vt 0.371429 0.240260 +vt 0.417143 0.123377 +vt 0.234286 0.240260 +vt 0.280000 0.123377 +vt 0.280000 0.240260 +vt 0.325714 0.522727 +vt 0.234286 0.470779 +vt 0.325714 0.470779 +vt 0.231429 0.574675 +vt 0.185714 0.522727 +vt 0.231429 0.522727 +vt 0.997143 0.905844 +vt 0.957143 0.853896 +vt 0.997143 0.853896 +vt 0.882857 0.750000 +vt 0.922857 0.801948 +vt 0.882857 0.801948 +vt 0.997143 0.801948 +vt 0.957143 0.750000 +vt 0.997143 0.750000 +vt 0.882857 0.698052 +vt 0.922857 0.750000 +vt 0.957143 0.698052 +vt 0.997143 0.698052 +vt 0.882857 0.853896 +vt 0.922857 0.905844 +vt 0.882857 0.905844 +vt 0.634286 0.055195 +vt 0.662857 0.094156 +vt 0.634286 0.094156 +vt 0.748571 0.051948 +vt 0.771429 0.048701 +vt 0.771429 0.051948 +vt 0.140000 0.522727 +vt 0.094286 0.574675 +vt 0.094286 0.522727 +vt 0.140000 0.574675 +vt 0.185714 0.470779 +vt 0.140000 0.470779 +vt 0.185714 0.418831 +vt 0.140000 0.418831 +vt 0.185714 0.366883 +vt 0.140000 0.366883 +vt 0.185714 0.314935 +vt 0.140000 0.314935 +vt 0.185714 0.262987 +vt 0.140000 0.262987 +vt 0.185714 0.211039 +vt 0.140000 0.211039 +vt 0.185714 0.159091 +vt 0.140000 0.055195 +vt 0.185714 0.003247 +vt 0.185714 0.055195 +vt 0.691429 0.243506 +vt 0.737143 0.360390 +vt 0.691429 0.360390 +vt 0.737143 0.363636 +vt 0.691429 0.467532 +vt 0.691429 0.363636 +vt 0.231429 0.470779 +vt 0.231429 0.418831 +vt 0.231429 0.366883 +vt 0.231429 0.314935 +vt 0.231429 0.262987 +vt 0.231429 0.211039 +vt 0.231429 0.159091 +vt 0.231429 0.003247 +vt 0.231429 0.055195 +vt 0.691429 0.525974 +vt 0.737143 0.577922 +vt 0.691429 0.577922 +vt 0.002857 0.574675 +vt 0.002857 0.522727 +vt 0.094286 0.470779 +vt 0.094286 0.418831 +vt 0.094286 0.366883 +vt 0.094286 0.314935 +vt 0.094286 0.262987 +vt 0.094286 0.211039 +vt 0.140000 0.159091 +vt 0.094286 0.055195 +vt 0.140000 0.003247 +vt 0.371429 0.243506 +vt 0.325714 0.360390 +vt 0.325714 0.243506 +vt 0.417143 0.243506 +vt 0.371429 0.360390 +vt 0.462857 0.243506 +vt 0.417143 0.360390 +vt 0.508571 0.243506 +vt 0.462857 0.360390 +vt 0.554286 0.243506 +vt 0.508571 0.360390 +vt 0.600000 0.243506 +vt 0.554286 0.360390 +vt 0.645714 0.243506 +vt 0.600000 0.360390 +vt 0.645714 0.360390 +vt 0.234286 0.633117 +vt 0.280000 0.581169 +vt 0.280000 0.633117 +vt 0.645714 0.363636 +vt 0.645714 0.467532 +vt 0.600000 0.363636 +vt 0.600000 0.467532 +vt 0.554286 0.363636 +vt 0.554286 0.467532 +vt 0.508571 0.363636 +vt 0.508571 0.467532 +vt 0.462857 0.363636 +vt 0.462857 0.467532 +vt 0.417143 0.363636 +vt 0.417143 0.467532 +vt 0.371429 0.363636 +vt 0.280000 0.467532 +vt 0.234286 0.363636 +vt 0.280000 0.363636 +vt 0.002857 0.470779 +vt 0.002857 0.418831 +vt 0.002857 0.366883 +vt 0.002857 0.314935 +vt 0.002857 0.262987 +vt 0.002857 0.211039 +vt 0.094286 0.159091 +vt 0.002857 0.055195 +vt 0.094286 0.003247 +vt 0.645714 0.525974 +vt 0.645714 0.577922 +vt 0.600000 0.525974 +vt 0.600000 0.577922 +vt 0.554286 0.525974 +vt 0.554286 0.577922 +vt 0.508571 0.525974 +vt 0.508571 0.577922 +vt 0.462857 0.525974 +vt 0.462857 0.577922 +vt 0.417143 0.525974 +vt 0.417143 0.577922 +vt 0.371429 0.525974 +vt 0.280000 0.577922 +vt 0.234286 0.525974 +vt 0.280000 0.525974 +vt 0.645714 0.633117 +vt 0.600000 0.581169 +vt 0.645714 0.581169 +vt 0.600000 0.633117 +vt 0.554286 0.581169 +vt 0.554286 0.633117 +vt 0.508571 0.581169 +vt 0.508571 0.633117 +vt 0.462857 0.581169 +vt 0.462857 0.633117 +vt 0.417143 0.581169 +vt 0.417143 0.633117 +vt 0.371429 0.581169 +vt 0.371429 0.633117 +vt 0.325714 0.581169 +vt 0.325714 0.633117 +vt 0.605714 0.470779 +vt 0.697143 0.522727 +vt 0.605714 0.522727 +vt 0.817143 0.019481 +vt 0.820000 0.045455 +vt 0.817143 0.045455 +vt 0.780000 0.019481 +vt 0.782857 0.045455 +vt 0.780000 0.045455 +vt 0.934286 0.051948 +vt 0.957143 0.048701 +vt 0.957143 0.051948 +vt 0.465714 0.016234 +vt 0.420000 0.120130 +vt 0.420000 0.016234 +vt 0.511429 0.016234 +vt 0.465714 0.120130 +vt 0.374286 0.016234 +vt 0.525714 0.483766 +vt 0.560000 0.470779 +vt 0.548571 0.483766 +vt 0.525714 0.509740 +vt 0.514286 0.470779 +vt 0.560000 0.522727 +vt 0.548571 0.509740 +vt 0.514286 0.522727 +vt 0.808571 0.042208 +vt 0.805714 0.022727 +vt 0.808571 0.022727 +vt 0.814286 0.045455 +vt 0.811429 0.019481 +vt 0.814286 0.019481 +vt 0.808571 0.012987 +vt 0.785714 0.016234 +vt 0.785714 0.012987 +vt 0.785714 0.051948 +vt 0.808571 0.048701 +vt 0.808571 0.051948 +vt 0.805714 0.045455 +vt 0.785714 0.048701 +vt 0.788571 0.045455 +vt 0.805714 0.019481 +vt 0.808571 0.016234 +vt 0.785714 0.042208 +vt 0.782857 0.019481 +vt 0.785714 0.022727 +vt 0.811429 0.045455 +vt 0.788571 0.042208 +vt 0.788571 0.022727 +vt 0.788571 0.019481 +vt 0.805714 0.042208 +vt 0.480000 0.483766 +vt 0.502857 0.483766 +vt 0.571429 0.483766 +vt 0.594286 0.483766 +vt 0.594286 0.509740 +vt 0.480000 0.509740 +vt 0.468571 0.470779 +vt 0.502857 0.509740 +vt 0.468571 0.522727 +vt 0.571429 0.509740 +vt 0.825714 0.045455 +vt 0.842857 0.042208 +vt 0.842857 0.045455 +vt 0.845714 0.042208 +vt 0.842857 0.022727 +vt 0.845714 0.022727 +vt 0.957143 0.012987 +vt 0.934286 0.016234 +vt 0.934286 0.012987 +vt 0.851429 0.045455 +vt 0.848571 0.019481 +vt 0.851429 0.019481 +vt 0.822857 0.051948 +vt 0.845714 0.048701 +vt 0.845714 0.051948 +vt 0.962857 0.045455 +vt 0.960000 0.019481 +vt 0.962857 0.019481 +vt 0.845714 0.012987 +vt 0.822857 0.016234 +vt 0.822857 0.012987 +vt 0.928571 0.019481 +vt 0.931429 0.045455 +vt 0.928571 0.045455 +vt 0.842857 0.019481 +vt 0.845714 0.016234 +vt 0.954286 0.019481 +vt 0.957143 0.016234 +vt 0.957143 0.042208 +vt 0.960000 0.045455 +vt 0.822857 0.042208 +vt 0.820000 0.019481 +vt 0.822857 0.022727 +vt 0.822857 0.048701 +vt 0.954286 0.045455 +vt 0.934286 0.048701 +vt 0.937143 0.045455 +vt 0.848571 0.045455 +vt 0.934286 0.042208 +vt 0.931429 0.019481 +vt 0.934286 0.022727 +vt 0.825714 0.042208 +vt 0.825714 0.022727 +vt 0.954286 0.022727 +vt 0.937143 0.042208 +vt 0.937143 0.022727 +vt 0.957143 0.022727 +vt 0.825714 0.019481 +vt 0.954286 0.042208 +vt 0.937143 0.019481 +vt 0.417143 0.522727 +vt 0.451429 0.509740 +vt 0.462857 0.522727 +vt 0.417143 0.470779 +vt 0.428571 0.509740 +vt 0.462857 0.470779 +vt 0.428571 0.483766 +vt 0.451429 0.483766 +vt 0.382857 0.483766 +vt 0.371429 0.470779 +vt 0.405714 0.483766 +vt 0.371429 0.522727 +vt 0.405714 0.509740 +vt 0.382857 0.509740 +vt 0.360000 0.509740 +vt 0.337143 0.509740 +vt 0.337143 0.483766 +vt 0.360000 0.483766 +vt 0.862857 0.045455 +vt 0.880000 0.042208 +vt 0.880000 0.045455 +vt 0.900000 0.045455 +vt 0.917143 0.042208 +vt 0.917143 0.045455 +vt 0.768571 0.019481 +vt 0.751429 0.022727 +vt 0.751429 0.019481 +vt 0.771429 0.012987 +vt 0.748571 0.016234 +vt 0.748571 0.012987 +vt 0.897143 0.051948 +vt 0.920000 0.048701 +vt 0.920000 0.051948 +vt 0.882857 0.012987 +vt 0.860000 0.016234 +vt 0.860000 0.012987 +vt 0.742857 0.019481 +vt 0.745714 0.045455 +vt 0.742857 0.045455 +vt 0.920000 0.012987 +vt 0.897143 0.016234 +vt 0.897143 0.012987 +vt 0.888571 0.045455 +vt 0.885714 0.019481 +vt 0.888571 0.019481 +vt 0.777143 0.045455 +vt 0.774286 0.019481 +vt 0.777143 0.019481 +vt 0.891429 0.019481 +vt 0.894286 0.045455 +vt 0.891429 0.045455 +vt 0.854286 0.019481 +vt 0.857143 0.045455 +vt 0.854286 0.045455 +vt 0.860000 0.042208 +vt 0.857143 0.019481 +vt 0.860000 0.022727 +vt 0.860000 0.048701 +vt 0.862857 0.019481 +vt 0.882857 0.016234 +vt 0.880000 0.019481 +vt 0.882857 0.042208 +vt 0.885714 0.045455 +vt 0.771429 0.016234 +vt 0.748571 0.042208 +vt 0.745714 0.019481 +vt 0.748571 0.022727 +vt 0.771429 0.042208 +vt 0.774286 0.045455 +vt 0.768571 0.045455 +vt 0.748571 0.048701 +vt 0.751429 0.045455 +vt 0.900000 0.019481 +vt 0.920000 0.016234 +vt 0.917143 0.019481 +vt 0.897143 0.022727 +vt 0.894286 0.019481 +vt 0.920000 0.022727 +vt 0.922857 0.045455 +vt 0.920000 0.042208 +vt 0.897143 0.048701 +vt 0.862857 0.022727 +vt 0.862857 0.042208 +vt 0.768571 0.022727 +vt 0.751429 0.042208 +vt 0.917143 0.022727 +vt 0.900000 0.042208 +vt 0.900000 0.022727 +vt 0.897143 0.042208 +vt 0.771429 0.022727 +vt 0.880000 0.022727 +vt 0.882857 0.022727 +vt 0.768571 0.042208 +vt 0.737143 0.633117 +vt 0.691429 0.581169 +vt 0.737143 0.581169 +vt 0.691429 0.633117 +vt 0.371429 0.577922 +vt 0.325714 0.525974 +vt 0.325714 0.577922 +vt 0.002857 0.159091 +vt 0.094286 0.107143 +vt 0.002857 0.107143 +vt 0.371429 0.467532 +vt 0.325714 0.363636 +vt 0.325714 0.467532 +vt 0.280000 0.243506 +vt 0.234286 0.360390 +vt 0.234286 0.243506 +vt 0.280000 0.360390 +vt 0.140000 0.107143 +vt 0.231429 0.107143 +vt 0.185714 0.107143 +vt 0.882857 0.646104 +vt 0.922857 0.698052 +vt 0.957143 0.646104 +vt 0.997143 0.646104 +vt 0.325714 0.240260 +vt 0.371429 0.123377 +vt 0.325714 0.123377 +vt 0.780000 0.077922 +vt 0.785714 0.123377 +vt 0.780000 0.123377 +vt 0.745714 0.077922 +vt 0.740000 0.123377 +vt 0.740000 0.071429 +vt 0.745714 0.175325 +vt 0.745714 0.123377 +vt 0.745714 0.227273 +vt 0.740000 0.175325 +vt 0.745714 0.279221 +vt 0.740000 0.227273 +vt 0.745714 0.331169 +vt 0.740000 0.279221 +vt 0.745714 0.383117 +vt 0.740000 0.331169 +vt 0.745714 0.435065 +vt 0.740000 0.383117 +vt 0.745714 0.487013 +vt 0.740000 0.435065 +vt 0.785714 0.175325 +vt 0.780000 0.175325 +vt 0.785714 0.227273 +vt 0.780000 0.227273 +vt 0.785714 0.279221 +vt 0.780000 0.279221 +vt 0.785714 0.331169 +vt 0.780000 0.331169 +vt 0.785714 0.383117 +vt 0.780000 0.383117 +vt 0.785714 0.435065 +vt 0.780000 0.435065 +vt 0.785714 0.487013 +vt 0.780000 0.487013 +vt 0.785714 0.071429 +vt 0.780000 0.636364 +vt 0.740000 0.642857 +vt 0.745714 0.636364 +vt 0.740000 0.590909 +vt 0.745714 0.590909 +vt 0.785714 0.590909 +vt 0.785714 0.642857 +vt 0.745714 0.538961 +vt 0.740000 0.487013 +vt 0.740000 0.538961 +vt 0.785714 0.538961 +vt 0.780000 0.538961 +vt 0.780000 0.590909 +vt 0.997143 0.542208 +vt 0.957143 0.542208 +vt 0.957143 0.496753 +vt 0.788571 0.331169 +vt 0.794286 0.383117 +vt 0.788571 0.383117 +vt 0.834286 0.435065 +vt 0.828571 0.383117 +vt 0.834286 0.383117 +vt 0.788571 0.188312 +vt 0.794286 0.227273 +vt 0.788571 0.227273 +vt 0.788571 0.279221 +vt 0.794286 0.331169 +vt 0.828571 0.331169 +vt 0.834286 0.331169 +vt 0.800000 0.642857 +vt 0.822857 0.636364 +vt 0.822857 0.642857 +vt 0.794286 0.279221 +vt 0.997143 0.957792 +vt 0.962857 0.957792 +vt 0.957143 0.951299 +vt 0.957143 0.801948 +vt 0.922857 0.853896 +vt 0.922857 0.951299 +vt 0.882857 0.490260 +vt 0.917143 0.490260 +vt 0.922857 0.496753 +vt 0.997143 0.594156 +vt 0.882857 0.542208 +vt 0.922857 0.594156 +vt 0.882857 0.594156 +vt 0.957143 0.594156 +vt 0.828571 0.279221 +vt 0.834286 0.279221 +vt 0.822857 0.175325 +vt 0.800000 0.181818 +vt 0.800000 0.175325 +vt 0.922857 0.646104 +vt 0.957143 0.490260 +vt 0.922857 0.957792 +vt 0.957143 0.957792 +vt 0.928571 0.594156 +vt 0.922857 0.542208 +vt 0.928571 0.542208 +vt 0.928571 0.646104 +vt 0.928571 0.698052 +vt 0.928571 0.750000 +vt 0.928571 0.801948 +vt 0.928571 0.853896 +vt 0.951429 0.542208 +vt 0.951429 0.594156 +vt 0.951429 0.646104 +vt 0.951429 0.698052 +vt 0.951429 0.750000 +vt 0.951429 0.801948 +vt 0.951429 0.853896 +vt 0.928571 0.905844 +vt 0.957143 0.905844 +vt 0.951429 0.905844 +vt 0.928571 0.503247 +vt 0.951429 0.503247 +vt 0.951429 0.944805 +vt 0.928571 0.944805 +vt 0.825714 0.331169 +vt 0.820000 0.279221 +vt 0.825714 0.279221 +vt 0.820000 0.185065 +vt 0.802857 0.191558 +vt 0.802857 0.185065 +vt 0.820000 0.227273 +vt 0.825714 0.227273 +vt 0.825714 0.590909 +vt 0.820000 0.538961 +vt 0.825714 0.538961 +vt 0.797143 0.487013 +vt 0.802857 0.538961 +vt 0.797143 0.538961 +vt 0.802857 0.590909 +vt 0.797143 0.590909 +vt 0.825714 0.626623 +vt 0.820000 0.590909 +vt 0.797143 0.435065 +vt 0.802857 0.487013 +vt 0.820000 0.487013 +vt 0.825714 0.487013 +vt 0.834286 0.227273 +vt 0.828571 0.188312 +vt 0.834286 0.188312 +vt 0.834286 0.487013 +vt 0.828571 0.435065 +vt 0.794286 0.435065 +vt 0.788571 0.435065 +vt 0.788571 0.590909 +vt 0.794286 0.629870 +vt 0.788571 0.629870 +vt 0.834286 0.538961 +vt 0.828571 0.487013 +vt 0.794286 0.487013 +vt 0.788571 0.487013 +vt 0.834286 0.629870 +vt 0.828571 0.590909 +vt 0.834286 0.590909 +vt 0.788571 0.538961 +vt 0.794286 0.590909 +vt 0.794286 0.538961 +vt 0.828571 0.538961 +vt 0.828571 0.227273 +vt 0.774286 0.084416 +vt 0.774286 0.123377 +vt 0.751429 0.084416 +vt 0.774286 0.629870 +vt 0.751429 0.629870 +vt 0.751429 0.590909 +vt 0.951429 0.483766 +vt 0.922857 0.490260 +vt 0.928571 0.483766 +vt 0.928571 0.964286 +vt 0.951429 0.964286 +vt 0.922857 0.451299 +vt 0.928571 0.451299 +vt 0.957143 0.451299 +vt 0.957143 0.996753 +vt 0.951429 0.996753 +vt 0.922857 0.996753 +vt 0.602857 0.094156 +vt 0.580000 0.055195 +vt 0.602857 0.055195 +vt 0.685714 0.055195 +vt 0.685714 0.094156 +vt 0.551429 0.055195 +vt 0.580000 0.094156 +vt 0.551429 0.094156 +vt 0.714286 0.094156 +vt 0.714286 0.055195 +vt 0.602857 0.022727 +vt 0.580000 0.022727 +vt 0.631429 0.094156 +vt 0.631429 0.055195 +vt 0.797143 0.279221 +vt 0.797143 0.227273 +vt 0.797143 0.331169 +vt 0.797143 0.383117 +vt 0.825714 0.383117 +vt 0.825714 0.435065 +vt 0.822857 0.181818 +vt 0.820000 0.633117 +vt 0.800000 0.636364 +vt 0.802857 0.633117 +vt 0.797143 0.191558 +vt 0.794286 0.188312 +vt 0.825714 0.191558 +vt 0.797143 0.626623 +vt 0.828571 0.629870 +vt 0.802857 0.279221 +vt 0.802857 0.227273 +vt 0.802857 0.331169 +vt 0.820000 0.331169 +vt 0.802857 0.383117 +vt 0.820000 0.383117 +vt 0.802857 0.435065 +vt 0.820000 0.435065 +vt 0.820000 0.191558 +vt 0.802857 0.626623 +vt 0.820000 0.626623 +vt 0.831429 0.811688 +vt 0.837143 0.818182 +vt 0.837143 0.811688 +vt 0.837143 0.837662 +vt 0.842857 0.844156 +vt 0.842857 0.837662 +vt 0.820000 0.850649 +vt 0.814286 0.844156 +vt 0.814286 0.850649 +vt 0.814286 0.824675 +vt 0.808571 0.818182 +vt 0.808571 0.824675 +vt 0.820000 0.818182 +vt 0.820000 0.824675 +vt 0.831429 0.824675 +vt 0.837143 0.824675 +vt 0.831429 0.818182 +vt 0.837143 0.850649 +vt 0.831429 0.844156 +vt 0.831429 0.850649 +vt 0.820000 0.844156 +vt 0.814286 0.811688 +vt 0.820000 0.811688 +vt 0.831429 0.805195 +vt 0.831429 0.792208 +vt 0.820000 0.805195 +vt 0.820000 0.746753 +vt 0.814286 0.707792 +vt 0.814286 0.746753 +vt 0.837143 0.792208 +vt 0.837143 0.805195 +vt 0.831429 0.837662 +vt 0.820000 0.837662 +vt 0.837143 0.844156 +vt 0.814286 0.837662 +vt 0.808571 0.707792 +vt 0.808571 0.746753 +vt 0.820000 0.792208 +vt 0.814286 0.805195 +vt 0.808571 0.837662 +vt 0.808571 0.844156 +vt 0.842857 0.824675 +vt 0.842857 0.818182 +vt 0.837143 0.788961 +vt 0.831429 0.750000 +vt 0.831429 0.788961 +vt 0.842857 0.788961 +vt 0.837143 0.750000 +vt 0.825714 0.746753 +vt 0.820000 0.707792 +vt 0.825714 0.788961 +vt 0.820000 0.750000 +vt 0.820000 0.788961 +vt 0.831429 0.746753 +vt 0.825714 0.707792 +vt 0.825714 0.750000 +vt 0.794286 0.811688 +vt 0.800000 0.818182 +vt 0.800000 0.811688 +vt 0.800000 0.837662 +vt 0.805714 0.844156 +vt 0.805714 0.837662 +vt 0.782857 0.850649 +vt 0.777143 0.844156 +vt 0.777143 0.850649 +vt 0.777143 0.824675 +vt 0.771429 0.818182 +vt 0.771429 0.824675 +vt 0.782857 0.818182 +vt 0.782857 0.824675 +vt 0.794286 0.824675 +vt 0.800000 0.824675 +vt 0.794286 0.818182 +vt 0.800000 0.850649 +vt 0.794286 0.844156 +vt 0.794286 0.850649 +vt 0.782857 0.844156 +vt 0.777143 0.811688 +vt 0.782857 0.811688 +vt 0.794286 0.805195 +vt 0.794286 0.792208 +vt 0.782857 0.805195 +vt 0.782857 0.746753 +vt 0.777143 0.707792 +vt 0.777143 0.746753 +vt 0.800000 0.792208 +vt 0.800000 0.805195 +vt 0.794286 0.837662 +vt 0.782857 0.837662 +vt 0.800000 0.844156 +vt 0.777143 0.837662 +vt 0.771429 0.707792 +vt 0.771429 0.746753 +vt 0.782857 0.792208 +vt 0.777143 0.805195 +vt 0.771429 0.837662 +vt 0.771429 0.844156 +vt 0.805714 0.824675 +vt 0.805714 0.818182 +vt 0.800000 0.788961 +vt 0.794286 0.750000 +vt 0.794286 0.788961 +vt 0.805714 0.788961 +vt 0.800000 0.750000 +vt 0.788571 0.746753 +vt 0.782857 0.707792 +vt 0.788571 0.788961 +vt 0.782857 0.750000 +vt 0.782857 0.788961 +vt 0.794286 0.746753 +vt 0.788571 0.707792 +vt 0.788571 0.750000 +vt 0.757143 0.811688 +vt 0.762857 0.818182 +vt 0.762857 0.811688 +vt 0.762857 0.837662 +vt 0.768571 0.844156 +vt 0.768571 0.837662 +vt 0.745714 0.850649 +vt 0.740000 0.844156 +vt 0.740000 0.850649 +vt 0.740000 0.824675 +vt 0.734286 0.818182 +vt 0.734286 0.824675 +vt 0.745714 0.818182 +vt 0.745714 0.824675 +vt 0.757143 0.824675 +vt 0.762857 0.824675 +vt 0.757143 0.818182 +vt 0.762857 0.850649 +vt 0.757143 0.844156 +vt 0.757143 0.850649 +vt 0.745714 0.844156 +vt 0.740000 0.811688 +vt 0.745714 0.811688 +vt 0.757143 0.805195 +vt 0.757143 0.792208 +vt 0.745714 0.805195 +vt 0.745714 0.746753 +vt 0.740000 0.707792 +vt 0.740000 0.746753 +vt 0.762857 0.792208 +vt 0.762857 0.805195 +vt 0.757143 0.837662 +vt 0.745714 0.837662 +vt 0.762857 0.844156 +vt 0.740000 0.837662 +vt 0.734286 0.707792 +vt 0.734286 0.746753 +vt 0.745714 0.792208 +vt 0.740000 0.805195 +vt 0.734286 0.837662 +vt 0.734286 0.844156 +vt 0.768571 0.824675 +vt 0.768571 0.818182 +vt 0.762857 0.788961 +vt 0.757143 0.750000 +vt 0.757143 0.788961 +vt 0.768571 0.788961 +vt 0.762857 0.750000 +vt 0.751429 0.746753 +vt 0.745714 0.707792 +vt 0.751429 0.788961 +vt 0.745714 0.750000 +vt 0.745714 0.788961 +vt 0.757143 0.746753 +vt 0.751429 0.707792 +vt 0.751429 0.750000 +vt 0.720000 0.811688 +vt 0.725714 0.818182 +vt 0.725714 0.811688 +vt 0.725714 0.837662 +vt 0.731429 0.844156 +vt 0.731429 0.837662 +vt 0.708571 0.850649 +vt 0.702857 0.844156 +vt 0.702857 0.850649 +vt 0.702857 0.824675 +vt 0.697143 0.818182 +vt 0.697143 0.824675 +vt 0.708571 0.818182 +vt 0.708571 0.824675 +vt 0.720000 0.824675 +vt 0.725714 0.824675 +vt 0.720000 0.818182 +vt 0.725714 0.850649 +vt 0.720000 0.844156 +vt 0.720000 0.850649 +vt 0.708571 0.844156 +vt 0.702857 0.811688 +vt 0.708571 0.811688 +vt 0.720000 0.805195 +vt 0.720000 0.792208 +vt 0.708571 0.805195 +vt 0.708571 0.746753 +vt 0.702857 0.707792 +vt 0.702857 0.746753 +vt 0.725714 0.792208 +vt 0.725714 0.805195 +vt 0.720000 0.837662 +vt 0.708571 0.837662 +vt 0.725714 0.844156 +vt 0.702857 0.837662 +vt 0.697143 0.707792 +vt 0.697143 0.746753 +vt 0.708571 0.792208 +vt 0.702857 0.805195 +vt 0.697143 0.837662 +vt 0.697143 0.844156 +vt 0.731429 0.824675 +vt 0.731429 0.818182 +vt 0.725714 0.788961 +vt 0.720000 0.750000 +vt 0.720000 0.788961 +vt 0.731429 0.788961 +vt 0.725714 0.750000 +vt 0.714286 0.746753 +vt 0.708571 0.707792 +vt 0.714286 0.788961 +vt 0.708571 0.750000 +vt 0.708571 0.788961 +vt 0.720000 0.746753 +vt 0.714286 0.707792 +vt 0.714286 0.750000 +vt 0.682857 0.811688 +vt 0.688571 0.818182 +vt 0.688571 0.811688 +vt 0.688571 0.837662 +vt 0.694286 0.844156 +vt 0.694286 0.837662 +vt 0.671429 0.850649 +vt 0.665714 0.844156 +vt 0.665714 0.850649 +vt 0.665714 0.824675 +vt 0.660000 0.818182 +vt 0.660000 0.824675 +vt 0.671429 0.818182 +vt 0.671429 0.824675 +vt 0.682857 0.824675 +vt 0.688571 0.824675 +vt 0.682857 0.818182 +vt 0.688571 0.850649 +vt 0.682857 0.844156 +vt 0.682857 0.850649 +vt 0.671429 0.844156 +vt 0.665714 0.811688 +vt 0.671429 0.811688 +vt 0.682857 0.805195 +vt 0.682857 0.792208 +vt 0.671429 0.805195 +vt 0.671429 0.746753 +vt 0.665714 0.707792 +vt 0.665714 0.746753 +vt 0.688571 0.792208 +vt 0.688571 0.805195 +vt 0.682857 0.837662 +vt 0.671429 0.837662 +vt 0.688571 0.844156 +vt 0.665714 0.837662 +vt 0.660000 0.707792 +vt 0.660000 0.746753 +vt 0.671429 0.792208 +vt 0.665714 0.805195 +vt 0.660000 0.837662 +vt 0.660000 0.844156 +vt 0.694286 0.824675 +vt 0.694286 0.818182 +vt 0.688571 0.788961 +vt 0.682857 0.750000 +vt 0.682857 0.788961 +vt 0.694286 0.788961 +vt 0.688571 0.750000 +vt 0.677143 0.746753 +vt 0.671429 0.707792 +vt 0.677143 0.788961 +vt 0.671429 0.750000 +vt 0.671429 0.788961 +vt 0.682857 0.746753 +vt 0.677143 0.707792 +vt 0.677143 0.750000 +vt 0.645714 0.811688 +vt 0.651429 0.818182 +vt 0.651429 0.811688 +vt 0.651429 0.837662 +vt 0.657143 0.844156 +vt 0.657143 0.837662 +vt 0.634286 0.850649 +vt 0.628571 0.844156 +vt 0.628571 0.850649 +vt 0.628571 0.824675 +vt 0.622857 0.818182 +vt 0.622857 0.824675 +vt 0.634286 0.818182 +vt 0.634286 0.824675 +vt 0.645714 0.824675 +vt 0.651429 0.824675 +vt 0.645714 0.818182 +vt 0.651429 0.850649 +vt 0.645714 0.844156 +vt 0.645714 0.850649 +vt 0.634286 0.844156 +vt 0.628571 0.811688 +vt 0.634286 0.811688 +vt 0.645714 0.805195 +vt 0.645714 0.792208 +vt 0.634286 0.805195 +vt 0.634286 0.746753 +vt 0.628571 0.707792 +vt 0.628571 0.746753 +vt 0.651429 0.792208 +vt 0.651429 0.805195 +vt 0.645714 0.837662 +vt 0.634286 0.837662 +vt 0.651429 0.844156 +vt 0.628571 0.837662 +vt 0.622857 0.707792 +vt 0.622857 0.746753 +vt 0.634286 0.792208 +vt 0.628571 0.805195 +vt 0.622857 0.837662 +vt 0.622857 0.844156 +vt 0.657143 0.824675 +vt 0.657143 0.818182 +vt 0.651429 0.788961 +vt 0.645714 0.750000 +vt 0.645714 0.788961 +vt 0.657143 0.788961 +vt 0.651429 0.750000 +vt 0.640000 0.746753 +vt 0.634286 0.707792 +vt 0.640000 0.788961 +vt 0.634286 0.750000 +vt 0.634286 0.788961 +vt 0.645714 0.746753 +vt 0.640000 0.707792 +vt 0.640000 0.750000 +vt 0.608571 0.811688 +vt 0.614286 0.818182 +vt 0.614286 0.811688 +vt 0.614286 0.837662 +vt 0.620000 0.844156 +vt 0.620000 0.837662 +vt 0.597143 0.850649 +vt 0.591429 0.844156 +vt 0.591429 0.850649 +vt 0.591429 0.824675 +vt 0.585714 0.818182 +vt 0.585714 0.824675 +vt 0.597143 0.818182 +vt 0.597143 0.824675 +vt 0.608571 0.824675 +vt 0.614286 0.824675 +vt 0.608571 0.818182 +vt 0.614286 0.850649 +vt 0.608571 0.844156 +vt 0.608571 0.850649 +vt 0.597143 0.844156 +vt 0.591429 0.811688 +vt 0.597143 0.811688 +vt 0.608571 0.805195 +vt 0.608571 0.792208 +vt 0.597143 0.805195 +vt 0.597143 0.746753 +vt 0.591429 0.707792 +vt 0.591429 0.746753 +vt 0.614286 0.792208 +vt 0.614286 0.805195 +vt 0.608571 0.837662 +vt 0.597143 0.837662 +vt 0.614286 0.844156 +vt 0.591429 0.837662 +vt 0.585714 0.707792 +vt 0.585714 0.746753 +vt 0.597143 0.792208 +vt 0.591429 0.805195 +vt 0.585714 0.837662 +vt 0.585714 0.844156 +vt 0.620000 0.824675 +vt 0.620000 0.818182 +vt 0.614286 0.788961 +vt 0.608571 0.750000 +vt 0.608571 0.788961 +vt 0.620000 0.788961 +vt 0.614286 0.750000 +vt 0.602857 0.746753 +vt 0.597143 0.707792 +vt 0.602857 0.788961 +vt 0.597143 0.750000 +vt 0.597143 0.788961 +vt 0.608571 0.746753 +vt 0.602857 0.707792 +vt 0.602857 0.750000 +vt 0.571429 0.811688 +vt 0.577143 0.818182 +vt 0.577143 0.811688 +vt 0.577143 0.837662 +vt 0.582857 0.844156 +vt 0.582857 0.837662 +vt 0.560000 0.850649 +vt 0.554286 0.844156 +vt 0.554286 0.850649 +vt 0.554286 0.824675 +vt 0.548571 0.818182 +vt 0.548571 0.824675 +vt 0.560000 0.818182 +vt 0.560000 0.824675 +vt 0.571429 0.824675 +vt 0.577143 0.824675 +vt 0.571429 0.818182 +vt 0.577143 0.850649 +vt 0.571429 0.844156 +vt 0.571429 0.850649 +vt 0.560000 0.844156 +vt 0.554286 0.811688 +vt 0.560000 0.811688 +vt 0.571429 0.805195 +vt 0.571429 0.792208 +vt 0.560000 0.805195 +vt 0.560000 0.746753 +vt 0.554286 0.707792 +vt 0.554286 0.746753 +vt 0.577143 0.792208 +vt 0.577143 0.805195 +vt 0.571429 0.837662 +vt 0.560000 0.837662 +vt 0.577143 0.844156 +vt 0.554286 0.837662 +vt 0.548571 0.707792 +vt 0.548571 0.746753 +vt 0.560000 0.792208 +vt 0.554286 0.805195 +vt 0.548571 0.837662 +vt 0.548571 0.844156 +vt 0.582857 0.824675 +vt 0.582857 0.818182 +vt 0.577143 0.788961 +vt 0.571429 0.750000 +vt 0.571429 0.788961 +vt 0.582857 0.788961 +vt 0.577143 0.750000 +vt 0.565714 0.746753 +vt 0.560000 0.707792 +vt 0.565714 0.788961 +vt 0.560000 0.750000 +vt 0.560000 0.788961 +vt 0.571429 0.746753 +vt 0.565714 0.707792 +vt 0.565714 0.750000 +vt 0.534286 0.811688 +vt 0.540000 0.818182 +vt 0.540000 0.811688 +vt 0.540000 0.837662 +vt 0.545714 0.844156 +vt 0.545714 0.837662 +vt 0.522857 0.850649 +vt 0.517143 0.844156 +vt 0.517143 0.850649 +vt 0.517143 0.824675 +vt 0.511429 0.818182 +vt 0.511429 0.824675 +vt 0.522857 0.818182 +vt 0.522857 0.824675 +vt 0.534286 0.824675 +vt 0.540000 0.824675 +vt 0.534286 0.818182 +vt 0.540000 0.850649 +vt 0.534286 0.844156 +vt 0.534286 0.850649 +vt 0.522857 0.844156 +vt 0.517143 0.811688 +vt 0.522857 0.811688 +vt 0.534286 0.805195 +vt 0.534286 0.792208 +vt 0.522857 0.805195 +vt 0.522857 0.746753 +vt 0.517143 0.707792 +vt 0.517143 0.746753 +vt 0.540000 0.792208 +vt 0.540000 0.805195 +vt 0.534286 0.837662 +vt 0.522857 0.837662 +vt 0.540000 0.844156 +vt 0.517143 0.837662 +vt 0.511429 0.707792 +vt 0.511429 0.746753 +vt 0.522857 0.792208 +vt 0.517143 0.805195 +vt 0.511429 0.837662 +vt 0.511429 0.844156 +vt 0.545714 0.824675 +vt 0.545714 0.818182 +vt 0.540000 0.788961 +vt 0.534286 0.750000 +vt 0.534286 0.788961 +vt 0.545714 0.788961 +vt 0.540000 0.750000 +vt 0.528571 0.746753 +vt 0.522857 0.707792 +vt 0.528571 0.788961 +vt 0.522857 0.750000 +vt 0.522857 0.788961 +vt 0.534286 0.746753 +vt 0.528571 0.707792 +vt 0.528571 0.750000 +vt 0.497143 0.811688 +vt 0.502857 0.818182 +vt 0.502857 0.811688 +vt 0.502857 0.837662 +vt 0.508571 0.844156 +vt 0.508571 0.837662 +vt 0.485714 0.850649 +vt 0.480000 0.844156 +vt 0.480000 0.850649 +vt 0.480000 0.824675 +vt 0.474286 0.818182 +vt 0.474286 0.824675 +vt 0.485714 0.818182 +vt 0.485714 0.824675 +vt 0.497143 0.824675 +vt 0.502857 0.824675 +vt 0.497143 0.818182 +vt 0.502857 0.850649 +vt 0.497143 0.844156 +vt 0.497143 0.850649 +vt 0.485714 0.844156 +vt 0.480000 0.811688 +vt 0.485714 0.811688 +vt 0.497143 0.805195 +vt 0.497143 0.792208 +vt 0.485714 0.805195 +vt 0.485714 0.746753 +vt 0.480000 0.707792 +vt 0.480000 0.746753 +vt 0.502857 0.792208 +vt 0.502857 0.805195 +vt 0.497143 0.837662 +vt 0.485714 0.837662 +vt 0.502857 0.844156 +vt 0.480000 0.837662 +vt 0.474286 0.707792 +vt 0.474286 0.746753 +vt 0.485714 0.792208 +vt 0.480000 0.805195 +vt 0.474286 0.837662 +vt 0.474286 0.844156 +vt 0.508571 0.824675 +vt 0.508571 0.818182 +vt 0.502857 0.788961 +vt 0.497143 0.750000 +vt 0.497143 0.788961 +vt 0.508571 0.788961 +vt 0.502857 0.750000 +vt 0.491429 0.746753 +vt 0.485714 0.707792 +vt 0.491429 0.788961 +vt 0.485714 0.750000 +vt 0.485714 0.788961 +vt 0.497143 0.746753 +vt 0.491429 0.707792 +vt 0.491429 0.750000 +vt 0.868571 0.811688 +vt 0.874286 0.818182 +vt 0.874286 0.811688 +vt 0.874286 0.837662 +vt 0.880000 0.844156 +vt 0.880000 0.837662 +vt 0.857143 0.850649 +vt 0.851429 0.844156 +vt 0.851429 0.850649 +vt 0.851429 0.824675 +vt 0.845714 0.818182 +vt 0.845714 0.824675 +vt 0.857143 0.818182 +vt 0.857143 0.824675 +vt 0.868571 0.824675 +vt 0.874286 0.824675 +vt 0.868571 0.818182 +vt 0.874286 0.850649 +vt 0.868571 0.844156 +vt 0.868571 0.850649 +vt 0.857143 0.844156 +vt 0.851429 0.811688 +vt 0.857143 0.811688 +vt 0.868571 0.805195 +vt 0.868571 0.792208 +vt 0.857143 0.805195 +vt 0.857143 0.746753 +vt 0.851429 0.707792 +vt 0.851429 0.746753 +vt 0.874286 0.792208 +vt 0.874286 0.805195 +vt 0.868571 0.837662 +vt 0.857143 0.837662 +vt 0.874286 0.844156 +vt 0.851429 0.837662 +vt 0.845714 0.707792 +vt 0.845714 0.746753 +vt 0.857143 0.792208 +vt 0.851429 0.805195 +vt 0.845714 0.837662 +vt 0.845714 0.844156 +vt 0.880000 0.824675 +vt 0.880000 0.818182 +vt 0.874286 0.788961 +vt 0.868571 0.750000 +vt 0.868571 0.788961 +vt 0.880000 0.788961 +vt 0.874286 0.750000 +vt 0.862857 0.746753 +vt 0.857143 0.707792 +vt 0.862857 0.788961 +vt 0.857143 0.750000 +vt 0.857143 0.788961 +vt 0.868571 0.746753 +vt 0.862857 0.707792 +vt 0.862857 0.750000 +vt 0.522857 0.957792 +vt 0.517143 0.964286 +vt 0.522857 0.964286 +vt 0.511429 0.990260 +vt 0.517143 0.983766 +vt 0.511429 0.983766 +vt 0.534286 0.996753 +vt 0.540000 0.990260 +vt 0.534286 0.990260 +vt 0.545714 0.964286 +vt 0.540000 0.970779 +vt 0.545714 0.970779 +vt 0.534286 0.964286 +vt 0.534286 0.970779 +vt 0.522857 0.970779 +vt 0.517143 0.970779 +vt 0.517143 0.996753 +vt 0.522857 0.990260 +vt 0.517143 0.990260 +vt 0.522857 0.996753 +vt 0.540000 0.957792 +vt 0.540000 0.964286 +vt 0.534286 0.957792 +vt 0.522857 0.951299 +vt 0.534286 0.951299 +vt 0.522857 0.938312 +vt 0.540000 0.853896 +vt 0.534286 0.892857 +vt 0.540000 0.892857 +vt 0.517143 0.938312 +vt 0.517143 0.951299 +vt 0.522857 0.983766 +vt 0.534286 0.983766 +vt 0.540000 0.983766 +vt 0.545714 0.853896 +vt 0.545714 0.892857 +vt 0.540000 0.951299 +vt 0.534286 0.938312 +vt 0.545714 0.983766 +vt 0.545714 0.990260 +vt 0.511429 0.970779 +vt 0.511429 0.964286 +vt 0.522857 0.896104 +vt 0.517143 0.935065 +vt 0.522857 0.935065 +vt 0.517143 0.896104 +vt 0.511429 0.935065 +vt 0.534286 0.853896 +vt 0.528571 0.892857 +vt 0.534286 0.896104 +vt 0.528571 0.935065 +vt 0.534286 0.935065 +vt 0.528571 0.853896 +vt 0.522857 0.892857 +vt 0.528571 0.896104 +vt 0.560000 0.957792 +vt 0.554286 0.964286 +vt 0.560000 0.964286 +vt 0.548571 0.990260 +vt 0.554286 0.983766 +vt 0.548571 0.983766 +vt 0.571429 0.996753 +vt 0.577143 0.990260 +vt 0.571429 0.990260 +vt 0.582857 0.964286 +vt 0.577143 0.970779 +vt 0.582857 0.970779 +vt 0.571429 0.964286 +vt 0.571429 0.970779 +vt 0.560000 0.970779 +vt 0.554286 0.970779 +vt 0.554286 0.996753 +vt 0.560000 0.990260 +vt 0.554286 0.990260 +vt 0.560000 0.996753 +vt 0.577143 0.957792 +vt 0.577143 0.964286 +vt 0.571429 0.957792 +vt 0.560000 0.951299 +vt 0.571429 0.951299 +vt 0.560000 0.938312 +vt 0.577143 0.853896 +vt 0.571429 0.892857 +vt 0.577143 0.892857 +vt 0.554286 0.938312 +vt 0.554286 0.951299 +vt 0.560000 0.983766 +vt 0.571429 0.983766 +vt 0.577143 0.983766 +vt 0.582857 0.853896 +vt 0.582857 0.892857 +vt 0.577143 0.951299 +vt 0.571429 0.938312 +vt 0.582857 0.983766 +vt 0.582857 0.990260 +vt 0.548571 0.970779 +vt 0.548571 0.964286 +vt 0.560000 0.896104 +vt 0.554286 0.935065 +vt 0.560000 0.935065 +vt 0.554286 0.896104 +vt 0.548571 0.935065 +vt 0.571429 0.853896 +vt 0.565714 0.892857 +vt 0.571429 0.896104 +vt 0.565714 0.935065 +vt 0.571429 0.935065 +vt 0.565714 0.853896 +vt 0.560000 0.892857 +vt 0.565714 0.896104 +vt 0.597143 0.957792 +vt 0.591429 0.964286 +vt 0.597143 0.964286 +vt 0.585714 0.990260 +vt 0.591429 0.983766 +vt 0.585714 0.983766 +vt 0.608571 0.996753 +vt 0.614286 0.990260 +vt 0.608571 0.990260 +vt 0.620000 0.964286 +vt 0.614286 0.970779 +vt 0.620000 0.970779 +vt 0.608571 0.964286 +vt 0.608571 0.970779 +vt 0.597143 0.970779 +vt 0.591429 0.970779 +vt 0.591429 0.996753 +vt 0.597143 0.990260 +vt 0.591429 0.990260 +vt 0.597143 0.996753 +vt 0.614286 0.957792 +vt 0.614286 0.964286 +vt 0.608571 0.957792 +vt 0.597143 0.951299 +vt 0.608571 0.951299 +vt 0.597143 0.938312 +vt 0.614286 0.853896 +vt 0.608571 0.892857 +vt 0.614286 0.892857 +vt 0.591429 0.938312 +vt 0.591429 0.951299 +vt 0.597143 0.983766 +vt 0.608571 0.983766 +vt 0.614286 0.983766 +vt 0.620000 0.853896 +vt 0.620000 0.892857 +vt 0.614286 0.951299 +vt 0.608571 0.938312 +vt 0.620000 0.983766 +vt 0.620000 0.990260 +vt 0.585714 0.970779 +vt 0.585714 0.964286 +vt 0.597143 0.896104 +vt 0.591429 0.935065 +vt 0.597143 0.935065 +vt 0.591429 0.896104 +vt 0.585714 0.935065 +vt 0.608571 0.853896 +vt 0.602857 0.892857 +vt 0.608571 0.896104 +vt 0.602857 0.935065 +vt 0.608571 0.935065 +vt 0.602857 0.853896 +vt 0.597143 0.892857 +vt 0.602857 0.896104 +vt 0.634286 0.957792 +vt 0.628571 0.964286 +vt 0.634286 0.964286 +vt 0.622857 0.990260 +vt 0.628571 0.983766 +vt 0.622857 0.983766 +vt 0.645714 0.996753 +vt 0.651429 0.990260 +vt 0.645714 0.990260 +vt 0.657143 0.964286 +vt 0.651429 0.970779 +vt 0.657143 0.970779 +vt 0.645714 0.964286 +vt 0.645714 0.970779 +vt 0.634286 0.970779 +vt 0.628571 0.970779 +vt 0.628571 0.996753 +vt 0.634286 0.990260 +vt 0.628571 0.990260 +vt 0.634286 0.996753 +vt 0.651429 0.957792 +vt 0.651429 0.964286 +vt 0.645714 0.957792 +vt 0.634286 0.951299 +vt 0.645714 0.951299 +vt 0.634286 0.938312 +vt 0.651429 0.853896 +vt 0.645714 0.892857 +vt 0.651429 0.892857 +vt 0.628571 0.938312 +vt 0.628571 0.951299 +vt 0.634286 0.983766 +vt 0.645714 0.983766 +vt 0.651429 0.983766 +vt 0.657143 0.853896 +vt 0.657143 0.892857 +vt 0.651429 0.951299 +vt 0.645714 0.938312 +vt 0.657143 0.983766 +vt 0.657143 0.990260 +vt 0.622857 0.970779 +vt 0.622857 0.964286 +vt 0.634286 0.896104 +vt 0.628571 0.935065 +vt 0.634286 0.935065 +vt 0.628571 0.896104 +vt 0.622857 0.935065 +vt 0.645714 0.853896 +vt 0.640000 0.892857 +vt 0.645714 0.896104 +vt 0.640000 0.935065 +vt 0.645714 0.935065 +vt 0.640000 0.853896 +vt 0.634286 0.892857 +vt 0.640000 0.896104 +vt 0.671429 0.957792 +vt 0.665714 0.964286 +vt 0.671429 0.964286 +vt 0.660000 0.990260 +vt 0.665714 0.983766 +vt 0.660000 0.983766 +vt 0.682857 0.996753 +vt 0.688571 0.990260 +vt 0.682857 0.990260 +vt 0.694286 0.964286 +vt 0.688571 0.970779 +vt 0.694286 0.970779 +vt 0.682857 0.964286 +vt 0.682857 0.970779 +vt 0.671429 0.970779 +vt 0.665714 0.970779 +vt 0.665714 0.996753 +vt 0.671429 0.990260 +vt 0.665714 0.990260 +vt 0.671429 0.996753 +vt 0.688571 0.957792 +vt 0.688571 0.964286 +vt 0.682857 0.957792 +vt 0.671429 0.951299 +vt 0.682857 0.951299 +vt 0.671429 0.938312 +vt 0.688571 0.853896 +vt 0.682857 0.892857 +vt 0.688571 0.892857 +vt 0.665714 0.938312 +vt 0.665714 0.951299 +vt 0.671429 0.983766 +vt 0.682857 0.983766 +vt 0.688571 0.983766 +vt 0.694286 0.853896 +vt 0.694286 0.892857 +vt 0.688571 0.951299 +vt 0.682857 0.938312 +vt 0.694286 0.983766 +vt 0.694286 0.990260 +vt 0.660000 0.970779 +vt 0.660000 0.964286 +vt 0.671429 0.896104 +vt 0.665714 0.935065 +vt 0.671429 0.935065 +vt 0.665714 0.896104 +vt 0.660000 0.935065 +vt 0.682857 0.853896 +vt 0.677143 0.892857 +vt 0.682857 0.896104 +vt 0.677143 0.935065 +vt 0.682857 0.935065 +vt 0.677143 0.853896 +vt 0.671429 0.892857 +vt 0.677143 0.896104 +vt 0.708571 0.957792 +vt 0.702857 0.964286 +vt 0.708571 0.964286 +vt 0.697143 0.990260 +vt 0.702857 0.983766 +vt 0.697143 0.983766 +vt 0.720000 0.996753 +vt 0.725714 0.990260 +vt 0.720000 0.990260 +vt 0.731429 0.964286 +vt 0.725714 0.970779 +vt 0.731429 0.970779 +vt 0.720000 0.964286 +vt 0.720000 0.970779 +vt 0.708571 0.970779 +vt 0.702857 0.970779 +vt 0.702857 0.996753 +vt 0.708571 0.990260 +vt 0.702857 0.990260 +vt 0.708571 0.996753 +vt 0.725714 0.957792 +vt 0.725714 0.964286 +vt 0.720000 0.957792 +vt 0.708571 0.951299 +vt 0.720000 0.951299 +vt 0.708571 0.938312 +vt 0.725714 0.853896 +vt 0.720000 0.892857 +vt 0.725714 0.892857 +vt 0.702857 0.938312 +vt 0.702857 0.951299 +vt 0.708571 0.983766 +vt 0.720000 0.983766 +vt 0.725714 0.983766 +vt 0.731429 0.853896 +vt 0.731429 0.892857 +vt 0.725714 0.951299 +vt 0.720000 0.938312 +vt 0.731429 0.983766 +vt 0.731429 0.990260 +vt 0.697143 0.970779 +vt 0.697143 0.964286 +vt 0.708571 0.896104 +vt 0.702857 0.935065 +vt 0.708571 0.935065 +vt 0.702857 0.896104 +vt 0.697143 0.935065 +vt 0.720000 0.853896 +vt 0.714286 0.892857 +vt 0.720000 0.896104 +vt 0.714286 0.935065 +vt 0.720000 0.935065 +vt 0.714286 0.853896 +vt 0.708571 0.892857 +vt 0.714286 0.896104 +vt 0.745714 0.957792 +vt 0.740000 0.964286 +vt 0.745714 0.964286 +vt 0.734286 0.990260 +vt 0.740000 0.983766 +vt 0.734286 0.983766 +vt 0.757143 0.996753 +vt 0.762857 0.990260 +vt 0.757143 0.990260 +vt 0.768571 0.964286 +vt 0.762857 0.970779 +vt 0.768571 0.970779 +vt 0.757143 0.964286 +vt 0.757143 0.970779 +vt 0.745714 0.970779 +vt 0.740000 0.970779 +vt 0.740000 0.996753 +vt 0.745714 0.990260 +vt 0.740000 0.990260 +vt 0.745714 0.996753 +vt 0.762857 0.957792 +vt 0.762857 0.964286 +vt 0.757143 0.957792 +vt 0.745714 0.951299 +vt 0.757143 0.951299 +vt 0.745714 0.938312 +vt 0.762857 0.853896 +vt 0.757143 0.892857 +vt 0.762857 0.892857 +vt 0.740000 0.938312 +vt 0.740000 0.951299 +vt 0.745714 0.983766 +vt 0.757143 0.983766 +vt 0.762857 0.983766 +vt 0.768571 0.853896 +vt 0.768571 0.892857 +vt 0.762857 0.951299 +vt 0.757143 0.938312 +vt 0.768571 0.983766 +vt 0.768571 0.990260 +vt 0.734286 0.970779 +vt 0.734286 0.964286 +vt 0.745714 0.896104 +vt 0.740000 0.935065 +vt 0.745714 0.935065 +vt 0.740000 0.896104 +vt 0.734286 0.935065 +vt 0.757143 0.853896 +vt 0.751429 0.892857 +vt 0.757143 0.896104 +vt 0.751429 0.935065 +vt 0.757143 0.935065 +vt 0.751429 0.853896 +vt 0.745714 0.892857 +vt 0.751429 0.896104 +vt 0.782857 0.957792 +vt 0.777143 0.964286 +vt 0.782857 0.964286 +vt 0.771429 0.990260 +vt 0.777143 0.983766 +vt 0.771429 0.983766 +vt 0.794286 0.996753 +vt 0.800000 0.990260 +vt 0.794286 0.990260 +vt 0.805714 0.964286 +vt 0.800000 0.970779 +vt 0.805714 0.970779 +vt 0.794286 0.964286 +vt 0.794286 0.970779 +vt 0.782857 0.970779 +vt 0.777143 0.970779 +vt 0.777143 0.996753 +vt 0.782857 0.990260 +vt 0.777143 0.990260 +vt 0.782857 0.996753 +vt 0.800000 0.957792 +vt 0.800000 0.964286 +vt 0.794286 0.957792 +vt 0.782857 0.951299 +vt 0.794286 0.951299 +vt 0.782857 0.938312 +vt 0.800000 0.853896 +vt 0.794286 0.892857 +vt 0.800000 0.892857 +vt 0.777143 0.938312 +vt 0.777143 0.951299 +vt 0.782857 0.983766 +vt 0.794286 0.983766 +vt 0.800000 0.983766 +vt 0.805714 0.853896 +vt 0.805714 0.892857 +vt 0.800000 0.951299 +vt 0.794286 0.938312 +vt 0.805714 0.983766 +vt 0.805714 0.990260 +vt 0.771429 0.970779 +vt 0.771429 0.964286 +vt 0.782857 0.896104 +vt 0.777143 0.935065 +vt 0.782857 0.935065 +vt 0.777143 0.896104 +vt 0.771429 0.935065 +vt 0.794286 0.853896 +vt 0.788571 0.892857 +vt 0.794286 0.896104 +vt 0.788571 0.935065 +vt 0.794286 0.935065 +vt 0.788571 0.853896 +vt 0.782857 0.892857 +vt 0.788571 0.896104 +vt 0.820000 0.957792 +vt 0.814286 0.964286 +vt 0.820000 0.964286 +vt 0.808571 0.990260 +vt 0.814286 0.983766 +vt 0.808571 0.983766 +vt 0.831429 0.996753 +vt 0.837143 0.990260 +vt 0.831429 0.990260 +vt 0.842857 0.964286 +vt 0.837143 0.970779 +vt 0.842857 0.970779 +vt 0.831429 0.964286 +vt 0.831429 0.970779 +vt 0.820000 0.970779 +vt 0.814286 0.970779 +vt 0.814286 0.996753 +vt 0.820000 0.990260 +vt 0.814286 0.990260 +vt 0.820000 0.996753 +vt 0.837143 0.957792 +vt 0.837143 0.964286 +vt 0.831429 0.957792 +vt 0.820000 0.951299 +vt 0.831429 0.951299 +vt 0.820000 0.938312 +vt 0.837143 0.853896 +vt 0.831429 0.892857 +vt 0.837143 0.892857 +vt 0.814286 0.938312 +vt 0.814286 0.951299 +vt 0.820000 0.983766 +vt 0.831429 0.983766 +vt 0.837143 0.983766 +vt 0.842857 0.853896 +vt 0.842857 0.892857 +vt 0.837143 0.951299 +vt 0.831429 0.938312 +vt 0.842857 0.983766 +vt 0.842857 0.990260 +vt 0.808571 0.970779 +vt 0.808571 0.964286 +vt 0.820000 0.896104 +vt 0.814286 0.935065 +vt 0.820000 0.935065 +vt 0.814286 0.896104 +vt 0.808571 0.935065 +vt 0.831429 0.853896 +vt 0.825714 0.892857 +vt 0.831429 0.896104 +vt 0.825714 0.935065 +vt 0.831429 0.935065 +vt 0.825714 0.853896 +vt 0.820000 0.892857 +vt 0.825714 0.896104 +vt 0.857143 0.957792 +vt 0.851429 0.964286 +vt 0.857143 0.964286 +vt 0.845714 0.990260 +vt 0.851429 0.983766 +vt 0.845714 0.983766 +vt 0.868571 0.996753 +vt 0.874286 0.990260 +vt 0.868571 0.990260 +vt 0.880000 0.964286 +vt 0.874286 0.970779 +vt 0.880000 0.970779 +vt 0.868571 0.964286 +vt 0.868571 0.970779 +vt 0.857143 0.970779 +vt 0.851429 0.970779 +vt 0.851429 0.996753 +vt 0.857143 0.990260 +vt 0.851429 0.990260 +vt 0.857143 0.996753 +vt 0.874286 0.957792 +vt 0.874286 0.964286 +vt 0.868571 0.957792 +vt 0.857143 0.951299 +vt 0.868571 0.951299 +vt 0.857143 0.938312 +vt 0.874286 0.853896 +vt 0.868571 0.892857 +vt 0.874286 0.892857 +vt 0.851429 0.938312 +vt 0.851429 0.951299 +vt 0.857143 0.983766 +vt 0.868571 0.983766 +vt 0.874286 0.983766 +vt 0.880000 0.853896 +vt 0.880000 0.892857 +vt 0.874286 0.951299 +vt 0.868571 0.938312 +vt 0.880000 0.983766 +vt 0.880000 0.990260 +vt 0.845714 0.970779 +vt 0.845714 0.964286 +vt 0.857143 0.896104 +vt 0.851429 0.935065 +vt 0.857143 0.935065 +vt 0.851429 0.896104 +vt 0.845714 0.935065 +vt 0.868571 0.853896 +vt 0.862857 0.892857 +vt 0.868571 0.896104 +vt 0.862857 0.935065 +vt 0.868571 0.935065 +vt 0.862857 0.853896 +vt 0.857143 0.892857 +vt 0.862857 0.896104 +vt 0.485714 0.957792 +vt 0.480000 0.964286 +vt 0.485714 0.964286 +vt 0.474286 0.990260 +vt 0.480000 0.983766 +vt 0.474286 0.983766 +vt 0.497143 0.996753 +vt 0.502857 0.990260 +vt 0.497143 0.990260 +vt 0.508571 0.964286 +vt 0.502857 0.970779 +vt 0.508571 0.970779 +vt 0.497143 0.964286 +vt 0.497143 0.970779 +vt 0.485714 0.970779 +vt 0.480000 0.970779 +vt 0.480000 0.996753 +vt 0.485714 0.990260 +vt 0.480000 0.990260 +vt 0.485714 0.996753 +vt 0.502857 0.957792 +vt 0.502857 0.964286 +vt 0.497143 0.957792 +vt 0.485714 0.951299 +vt 0.497143 0.951299 +vt 0.485714 0.938312 +vt 0.502857 0.853896 +vt 0.497143 0.892857 +vt 0.502857 0.892857 +vt 0.480000 0.938312 +vt 0.480000 0.951299 +vt 0.485714 0.983766 +vt 0.497143 0.983766 +vt 0.502857 0.983766 +vt 0.508571 0.853896 +vt 0.508571 0.892857 +vt 0.502857 0.951299 +vt 0.497143 0.938312 +vt 0.508571 0.983766 +vt 0.508571 0.990260 +vt 0.474286 0.970779 +vt 0.474286 0.964286 +vt 0.485714 0.896104 +vt 0.480000 0.935065 +vt 0.485714 0.935065 +vt 0.480000 0.896104 +vt 0.474286 0.935065 +vt 0.497143 0.853896 +vt 0.491429 0.892857 +vt 0.497143 0.896104 +vt 0.491429 0.935065 +vt 0.497143 0.935065 +vt 0.491429 0.853896 +vt 0.485714 0.892857 +vt 0.491429 0.896104 +vt 0.822857 0.149351 +vt 0.814286 0.139610 +vt 0.822857 0.129870 +vt 0.822857 0.126623 +vt 0.820000 0.113636 +vt 0.822857 0.113636 +vt 0.811429 0.139610 +vt 0.802857 0.149351 +vt 0.802857 0.129870 +vt 0.822857 0.110390 +vt 0.811429 0.159091 +vt 0.820000 0.110390 +vt 0.822857 0.090909 +vt 0.834286 0.113636 +vt 0.817143 0.110390 +vt 0.820000 0.090909 +vt 0.834286 0.110390 +vt 0.837143 0.113636 +vt 0.834286 0.149351 +vt 0.840000 0.110390 +vt 0.837143 0.090909 +vt 0.840000 0.090909 +vt 0.854286 0.149351 +vt 0.845714 0.139610 +vt 0.854286 0.129870 +vt 0.834286 0.090909 +vt 0.837143 0.110390 +vt 0.842857 0.139610 +vt 0.845714 0.159091 +vt 0.842857 0.159091 +vt 0.834286 0.126623 +vt 0.888571 0.149351 +vt 0.880000 0.139610 +vt 0.880000 0.159091 +vt 0.885714 0.113636 +vt 0.888571 0.126623 +vt 0.888571 0.113636 +vt 0.868571 0.149351 +vt 0.877143 0.139610 +vt 0.868571 0.129870 +vt 0.888571 0.110390 +vt 0.877143 0.159091 +vt 0.888571 0.090909 +vt 0.885714 0.110390 +vt 0.900000 0.113636 +vt 0.882857 0.110390 +vt 0.885714 0.090909 +vt 0.882857 0.090909 +vt 0.902857 0.113636 +vt 0.900000 0.110390 +vt 0.900000 0.149351 +vt 0.888571 0.129870 +vt 0.902857 0.090909 +vt 0.905714 0.110390 +vt 0.905714 0.090909 +vt 0.911429 0.139610 +vt 0.920000 0.149351 +vt 0.920000 0.129870 +vt 0.902857 0.110390 +vt 0.900000 0.090909 +vt 0.911429 0.159091 +vt 0.908571 0.139610 +vt 0.908571 0.159091 +vt 0.900000 0.126623 +vt 0.900000 0.129870 +vt 0.868571 0.308442 +vt 0.862857 0.191558 +vt 0.868571 0.191558 +vt 0.862857 0.308442 +vt 0.857143 0.191558 +vt 0.874286 0.191558 +vt 0.862857 0.185065 +vt 0.868571 0.314935 +vt 0.862857 0.314935 +vt 0.888571 0.308442 +vt 0.882857 0.191558 +vt 0.888571 0.191558 +vt 0.882857 0.308442 +vt 0.877143 0.191558 +vt 0.894286 0.191558 +vt 0.882857 0.185065 +vt 0.888571 0.314935 +vt 0.882857 0.314935 +vt 0.908571 0.308442 +vt 0.902857 0.191558 +vt 0.908571 0.191558 +vt 0.902857 0.308442 +vt 0.897143 0.191558 +vt 0.914286 0.191558 +vt 0.902857 0.185065 +vt 0.908571 0.314935 +vt 0.902857 0.314935 +vt 0.928571 0.308442 +vt 0.922857 0.191558 +vt 0.928571 0.191558 +vt 0.922857 0.308442 +vt 0.917143 0.191558 +vt 0.934286 0.191558 +vt 0.922857 0.185065 +vt 0.928571 0.314935 +vt 0.922857 0.314935 +vt 0.848571 0.308442 +vt 0.842857 0.191558 +vt 0.848571 0.191558 +vt 0.842857 0.308442 +vt 0.837143 0.191558 +vt 0.854286 0.191558 +vt 0.842857 0.185065 +vt 0.848571 0.314935 +vt 0.842857 0.314935 +vt 0.862857 0.324675 +vt 0.868571 0.441558 +vt 0.868571 0.324675 +vt 0.857143 0.441558 +vt 0.862857 0.441558 +vt 0.874286 0.324675 +vt 0.874286 0.441558 +vt 0.862857 0.318182 +vt 0.868571 0.448052 +vt 0.862857 0.448052 +vt 0.882857 0.324675 +vt 0.888571 0.441558 +vt 0.888571 0.324675 +vt 0.877143 0.441558 +vt 0.882857 0.441558 +vt 0.894286 0.324675 +vt 0.894286 0.441558 +vt 0.882857 0.318182 +vt 0.888571 0.448052 +vt 0.882857 0.448052 +vt 0.902857 0.324675 +vt 0.908571 0.441558 +vt 0.908571 0.324675 +vt 0.897143 0.441558 +vt 0.902857 0.441558 +vt 0.914286 0.324675 +vt 0.914286 0.441558 +vt 0.902857 0.318182 +vt 0.908571 0.448052 +vt 0.902857 0.448052 +vt 0.922857 0.324675 +vt 0.928571 0.441558 +vt 0.928571 0.324675 +vt 0.917143 0.441558 +vt 0.922857 0.441558 +vt 0.934286 0.324675 +vt 0.934286 0.441558 +vt 0.922857 0.318182 +vt 0.928571 0.448052 +vt 0.922857 0.448052 +vt 0.842857 0.324675 +vt 0.848571 0.441558 +vt 0.848571 0.324675 +vt 0.837143 0.441558 +vt 0.842857 0.441558 +vt 0.854286 0.324675 +vt 0.854286 0.441558 +vt 0.842857 0.318182 +vt 0.848571 0.448052 +vt 0.842857 0.448052 +vt 0.471429 0.788961 +vt 0.448571 0.685065 +vt 0.471429 0.685065 +vt 0.425714 0.788961 +vt 0.402857 0.685065 +vt 0.425714 0.685065 +vt 0.425714 0.808442 +vt 0.402857 0.860390 +vt 0.402857 0.808442 +vt 0.402857 0.798701 +vt 0.448571 0.788961 +vt 0.471429 0.798701 +vt 0.448571 0.808442 +vt 0.471429 0.808442 +vt 0.448571 0.860390 +vt 0.448571 0.879870 +vt 0.471429 0.889610 +vt 0.448571 0.899351 +vt 0.402857 0.870130 +vt 0.425714 0.860390 +vt 0.425714 0.879870 +vt 0.471429 0.870130 +vt 0.402857 0.899351 +vt 0.425714 0.996753 +vt 0.402857 0.996753 +vt 0.402857 0.889610 +vt 0.425714 0.899351 +vt 0.471429 0.899351 +vt 0.448571 0.996753 +vt 0.377143 0.788961 +vt 0.354286 0.685065 +vt 0.377143 0.685065 +vt 0.331429 0.788961 +vt 0.308571 0.685065 +vt 0.331429 0.685065 +vt 0.331429 0.808442 +vt 0.308571 0.860390 +vt 0.308571 0.808442 +vt 0.308571 0.798701 +vt 0.354286 0.788961 +vt 0.377143 0.798701 +vt 0.354286 0.808442 +vt 0.377143 0.808442 +vt 0.354286 0.860390 +vt 0.354286 0.879870 +vt 0.377143 0.889610 +vt 0.354286 0.899351 +vt 0.308571 0.870130 +vt 0.331429 0.860390 +vt 0.331429 0.879870 +vt 0.377143 0.870130 +vt 0.308571 0.899351 +vt 0.331429 0.996753 +vt 0.308571 0.996753 +vt 0.308571 0.889610 +vt 0.331429 0.899351 +vt 0.377143 0.899351 +vt 0.354286 0.996753 +vt 0.282857 0.788961 +vt 0.260000 0.685065 +vt 0.282857 0.685065 +vt 0.237143 0.788961 +vt 0.214286 0.685065 +vt 0.237143 0.685065 +vt 0.237143 0.808442 +vt 0.214286 0.860390 +vt 0.214286 0.808442 +vt 0.214286 0.798701 +vt 0.260000 0.788961 +vt 0.282857 0.798701 +vt 0.260000 0.808442 +vt 0.282857 0.808442 +vt 0.260000 0.860390 +vt 0.260000 0.879870 +vt 0.282857 0.889610 +vt 0.260000 0.899351 +vt 0.214286 0.870130 +vt 0.237143 0.860390 +vt 0.237143 0.879870 +vt 0.282857 0.870130 +vt 0.214286 0.899351 +vt 0.237143 0.996753 +vt 0.214286 0.996753 +vt 0.214286 0.889610 +vt 0.237143 0.899351 +vt 0.282857 0.899351 +vt 0.260000 0.996753 +vt 0.188571 0.788961 +vt 0.165714 0.685065 +vt 0.188571 0.685065 +vt 0.142857 0.788961 +vt 0.120000 0.685065 +vt 0.142857 0.685065 +vt 0.142857 0.808442 +vt 0.120000 0.860390 +vt 0.120000 0.808442 +vt 0.120000 0.798701 +vt 0.165714 0.788961 +vt 0.188571 0.798701 +vt 0.165714 0.808442 +vt 0.188571 0.808442 +vt 0.165714 0.860390 +vt 0.165714 0.879870 +vt 0.188571 0.889610 +vt 0.165714 0.899351 +vt 0.120000 0.870130 +vt 0.142857 0.860390 +vt 0.142857 0.879870 +vt 0.188571 0.870130 +vt 0.120000 0.899351 +vt 0.142857 0.996753 +vt 0.120000 0.996753 +vt 0.120000 0.889610 +vt 0.142857 0.899351 +vt 0.188571 0.899351 +vt 0.165714 0.996753 +vt 0.094286 0.788961 +vt 0.071429 0.685065 +vt 0.094286 0.685065 +vt 0.048571 0.788961 +vt 0.025714 0.685065 +vt 0.048571 0.685065 +vt 0.048571 0.808442 +vt 0.025714 0.860390 +vt 0.025714 0.808442 +vt 0.025714 0.798701 +vt 0.071429 0.788961 +vt 0.094286 0.798701 +vt 0.071429 0.808442 +vt 0.094286 0.808442 +vt 0.071429 0.860390 +vt 0.071429 0.879870 +vt 0.094286 0.889610 +vt 0.071429 0.899351 +vt 0.025714 0.870130 +vt 0.048571 0.860390 +vt 0.048571 0.879870 +vt 0.094286 0.870130 +vt 0.025714 0.899351 +vt 0.048571 0.996753 +vt 0.025714 0.996753 +vt 0.025714 0.889610 +vt 0.048571 0.899351 +vt 0.094286 0.899351 +vt 0.071429 0.996753 +vt 0.737143 0.240260 +vt 0.234286 0.123377 +vt 0.234286 0.522727 +vt 0.185714 0.574675 +vt 0.737143 0.243506 +vt 0.737143 0.467532 +vt 0.737143 0.525974 +vt 0.234286 0.581169 +vt 0.234286 0.467532 +vt 0.002857 0.003247 +vt 0.234286 0.577922 +vt 0.697143 0.470779 +vt 0.962857 0.490260 +vt 0.997143 0.490260 +vt 0.917143 0.957792 +vt 0.882857 0.957792 +vt 0.751429 0.123377 +vt 0.774286 0.590909 +vt 0.951429 0.451299 +vt 0.928571 0.996753 +vt 0.814286 0.818182 +vt 0.814286 0.792208 +vt 0.842857 0.750000 +vt 0.831429 0.707792 +vt 0.777143 0.818182 +vt 0.777143 0.792208 +vt 0.805714 0.750000 +vt 0.794286 0.707792 +vt 0.740000 0.818182 +vt 0.740000 0.792208 +vt 0.768571 0.750000 +vt 0.757143 0.707792 +vt 0.702857 0.818182 +vt 0.702857 0.792208 +vt 0.731429 0.750000 +vt 0.720000 0.707792 +vt 0.665714 0.818182 +vt 0.665714 0.792208 +vt 0.694286 0.750000 +vt 0.682857 0.707792 +vt 0.628571 0.818182 +vt 0.628571 0.792208 +vt 0.657143 0.750000 +vt 0.645714 0.707792 +vt 0.591429 0.818182 +vt 0.591429 0.792208 +vt 0.620000 0.750000 +vt 0.608571 0.707792 +vt 0.554286 0.818182 +vt 0.554286 0.792208 +vt 0.582857 0.750000 +vt 0.571429 0.707792 +vt 0.517143 0.818182 +vt 0.517143 0.792208 +vt 0.545714 0.750000 +vt 0.534286 0.707792 +vt 0.480000 0.818182 +vt 0.480000 0.792208 +vt 0.508571 0.750000 +vt 0.497143 0.707792 +vt 0.851429 0.818182 +vt 0.851429 0.792208 +vt 0.880000 0.750000 +vt 0.868571 0.707792 +vt 0.517143 0.957792 +vt 0.540000 0.996753 +vt 0.540000 0.938312 +vt 0.511429 0.896104 +vt 0.522857 0.853896 +vt 0.554286 0.957792 +vt 0.577143 0.996753 +vt 0.577143 0.938312 +vt 0.548571 0.896104 +vt 0.560000 0.853896 +vt 0.591429 0.957792 +vt 0.614286 0.996753 +vt 0.614286 0.938312 +vt 0.585714 0.896104 +vt 0.597143 0.853896 +vt 0.628571 0.957792 +vt 0.651429 0.996753 +vt 0.651429 0.938312 +vt 0.622857 0.896104 +vt 0.634286 0.853896 +vt 0.665714 0.957792 +vt 0.688571 0.996753 +vt 0.688571 0.938312 +vt 0.660000 0.896104 +vt 0.671429 0.853896 +vt 0.702857 0.957792 +vt 0.725714 0.996753 +vt 0.725714 0.938312 +vt 0.697143 0.896104 +vt 0.708571 0.853896 +vt 0.740000 0.957792 +vt 0.762857 0.996753 +vt 0.762857 0.938312 +vt 0.734286 0.896104 +vt 0.745714 0.853896 +vt 0.777143 0.957792 +vt 0.800000 0.996753 +vt 0.800000 0.938312 +vt 0.771429 0.896104 +vt 0.782857 0.853896 +vt 0.814286 0.957792 +vt 0.837143 0.996753 +vt 0.837143 0.938312 +vt 0.808571 0.896104 +vt 0.820000 0.853896 +vt 0.851429 0.957792 +vt 0.874286 0.996753 +vt 0.874286 0.938312 +vt 0.845714 0.896104 +vt 0.857143 0.853896 +vt 0.480000 0.957792 +vt 0.502857 0.996753 +vt 0.502857 0.938312 +vt 0.474286 0.896104 +vt 0.485714 0.853896 +vt 0.814286 0.159091 +vt 0.820000 0.126623 +vt 0.817143 0.090909 +vt 0.834286 0.129870 +vt 0.837143 0.126623 +vt 0.885714 0.126623 +vt 0.902857 0.126623 +vt 0.857143 0.308442 +vt 0.874286 0.308442 +vt 0.868571 0.185065 +vt 0.877143 0.308442 +vt 0.894286 0.308442 +vt 0.888571 0.185065 +vt 0.897143 0.308442 +vt 0.914286 0.308442 +vt 0.908571 0.185065 +vt 0.917143 0.308442 +vt 0.934286 0.308442 +vt 0.928571 0.185065 +vt 0.837143 0.308442 +vt 0.854286 0.308442 +vt 0.848571 0.185065 +vt 0.857143 0.324675 +vt 0.868571 0.318182 +vt 0.877143 0.324675 +vt 0.888571 0.318182 +vt 0.897143 0.324675 +vt 0.908571 0.318182 +vt 0.917143 0.324675 +vt 0.928571 0.318182 +vt 0.837143 0.324675 +vt 0.848571 0.318182 +vt 0.402857 0.788961 +vt 0.471429 0.860390 +vt 0.471429 0.996753 +vt 0.308571 0.788961 +vt 0.377143 0.860390 +vt 0.377143 0.996753 +vt 0.214286 0.788961 +vt 0.282857 0.860390 +vt 0.282857 0.996753 +vt 0.120000 0.788961 +vt 0.188571 0.860390 +vt 0.188571 0.996753 +vt 0.025714 0.788961 +vt 0.094286 0.860390 +vt 0.094286 0.996753 +vt 0.380000 0.685065 +vt 0.380000 0.860390 +vt 0.380000 0.808442 +vt 0.380000 0.996753 +vt 0.380000 0.899351 +vt 0.285714 0.685065 +vt 0.285714 0.860390 +vt 0.285714 0.808442 +vt 0.285714 0.996753 +vt 0.285714 0.899351 +vt 0.191429 0.685065 +vt 0.191429 0.860390 +vt 0.191429 0.808442 +vt 0.191429 0.996753 +vt 0.191429 0.899351 +vt 0.097143 0.685065 +vt 0.097143 0.860390 +vt 0.097143 0.808442 +vt 0.097143 0.996753 +vt 0.097143 0.899351 +vt 0.002857 0.685065 +vt 0.002857 0.860390 +vt 0.002857 0.808442 +vt 0.002857 0.996753 +vt 0.002857 0.899351 +vt 0.380000 0.788961 +vt 0.285714 0.788961 +vt 0.191429 0.788961 +vt 0.097143 0.788961 +vt 0.002857 0.788961 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 1.0000 -0.0000 -0.0000 -vn -1.0000 -0.0000 -0.0000 -vn 0.0000 0.3387 0.9409 -vn 0.0000 0.3387 -0.9409 -vn 0.8575 0.5145 0.0000 -vn -0.8575 0.5145 -0.0000 -vn -0.5485 -0.2213 0.8063 -vn -0.7109 0.0123 -0.7032 -vn -0.7109 0.0123 0.7032 -vn 0.7344 0.1383 -0.6644 -vn 0.7031 -0.0120 0.7109 -vn 0.7031 -0.0120 -0.7109 -vn 0.6216 0.4135 0.6653 -vn 0.7345 0.1380 0.6644 -vn 0.6216 0.4135 -0.6653 -vn 0.4148 0.6202 0.6658 -vn -0.2279 -0.5489 -0.8043 -vn -0.5485 -0.2213 -0.8063 -vn 0.1458 0.7319 -0.6656 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn -0.8944 0.4472 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 vn 0.0000 0.7071 0.7071 -vn 0.1458 0.7319 0.6656 -vn 0.4148 0.6202 -0.6658 -vn -0.2279 -0.5489 0.8043 -vn -0.0005 -0.7070 -0.7073 -vn 0.4147 0.6202 0.6658 -vn 0.4146 0.6203 -0.6658 -vn -0.2277 -0.5489 -0.8043 -vn 0.4147 0.6202 -0.6658 -vn -0.2278 -0.5489 0.8043 -vn 0.7345 0.1381 0.6644 -vn -0.0003 0.7071 -0.7071 -vn -0.0004 -0.7070 0.7073 -usemtl Material.001 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn -0.4472 -0.8944 0.0000 +vn 0.4472 0.8944 0.0000 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 0.8944 0.0000 +vn -0.5491 -0.2275 0.8042 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7319 0.1456 -0.6657 +vn 0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.6204 0.4146 0.6657 +vn 0.7319 0.1456 0.6657 +vn 0.4146 0.6204 -0.6657 +vn 0.0000 0.7764 0.6302 +vn 0.4146 0.6204 0.6657 +vn 0.6204 0.4146 -0.6657 +vn 0.0000 -0.4264 -0.9045 +vn -0.5491 -0.2275 -0.8042 +vn 0.0000 0.7764 -0.6302 +vn -0.4146 0.6204 0.6657 +vn 0.0000 -0.4264 0.9045 +vn 0.5000 -0.5000 -0.7071 +vn -0.4146 0.6204 -0.6657 +vn -0.5000 0.5000 0.7071 +vn 0.5000 -0.5000 0.7071 +vn -0.5000 0.5000 -0.7071 +usemtl None s off -f 1/1/1 2/2/1 3/3/1 -f 4/4/2 5/5/2 6/6/2 -f 5/7/2 7/8/2 8/9/2 -f 9/10/1 1/11/1 10/12/1 -f 11/13/2 12/14/2 13/15/2 -f 8/16/2 11/17/2 5/5/2 -f 10/18/1 14/19/1 15/20/1 -f 15/21/1 14/22/1 16/23/1 -f 13/24/2 17/25/2 11/17/2 -f 16/26/1 18/27/1 19/28/1 -f 20/29/1 21/30/1 22/31/1 -f 23/32/2 24/33/2 25/34/2 -f 24/35/2 26/36/2 27/37/2 -f 28/38/1 20/39/1 29/40/1 -f 30/41/2 31/42/2 32/43/2 -f 27/44/2 30/45/2 24/33/2 -f 29/46/1 33/47/1 34/48/1 -f 34/49/1 33/50/1 35/51/1 -f 32/52/2 36/53/2 30/45/2 -f 35/54/1 37/55/1 38/56/1 -f 39/57/1 40/58/1 41/59/1 -f 42/60/2 43/61/2 44/62/2 -f 43/63/2 45/64/2 46/65/2 -f 47/66/1 39/67/1 48/68/1 -f 49/69/2 50/70/2 51/71/2 -f 46/72/2 49/73/2 43/61/2 -f 48/74/1 52/75/1 53/76/1 -f 53/77/1 52/78/1 54/79/1 -f 51/80/2 55/81/2 49/73/2 -f 54/82/1 56/83/1 57/84/1 -f 58/85/1 59/86/1 60/87/1 -f 61/88/2 62/89/2 63/90/2 -f 62/91/2 64/92/2 65/93/2 -f 66/94/1 58/95/1 67/96/1 -f 68/97/2 69/98/2 70/99/2 -f 65/100/2 68/101/2 62/89/2 -f 67/102/1 71/103/1 72/104/1 -f 72/105/1 71/106/1 73/107/1 -f 70/108/2 74/109/2 68/101/2 -f 73/110/1 75/111/1 76/112/1 -f 77/113/3 78/114/3 79/115/3 -f 80/116/4 81/117/4 82/118/4 -f 83/119/5 84/120/5 85/121/5 -f 82/122/2 86/123/2 77/124/2 -f 81/125/6 78/126/6 86/123/6 -f 80/127/1 78/128/1 87/129/1 -f 85/121/1 88/130/1 83/119/1 -f 89/131/1 80/127/1 88/130/1 -f 90/132/2 91/133/2 84/134/2 -f 92/135/2 77/124/2 91/133/2 -f 83/136/4 92/137/4 90/138/4 -f 92/139/7 93/140/7 82/141/7 -f 84/142/3 89/143/3 85/144/3 -f 91/145/3 79/115/3 89/143/3 -f 94/146/1 95/147/1 96/148/1 -f 80/149/8 97/150/8 88/151/8 -f 88/152/9 98/153/9 92/154/9 -f 82/155/10 99/156/10 80/157/10 -f 100/158/5 101/159/5 102/160/5 -f 103/161/1 104/162/1 105/163/1 -f 94/164/4 106/165/4 107/166/4 -f 108/167/4 109/168/4 102/169/4 -f 110/170/4 111/171/4 112/172/4 -f 110/170/4 113/173/4 108/167/4 -f 102/169/4 114/174/4 100/175/4 -f 101/159/4 115/176/4 116/177/4 -f 110/178/1 117/179/1 100/180/1 -f 108/181/6 115/176/6 110/182/6 -f 102/183/2 116/177/2 108/184/2 -f 118/185/3 119/186/3 120/187/3 -f 121/188/4 122/189/4 103/190/4 -f 120/191/1 123/192/1 124/193/1 -f 125/194/3 126/195/3 127/196/3 -f 128/197/2 129/198/2 118/199/2 -f 130/200/2 111/201/2 93/140/2 -f 127/202/2 131/203/2 132/204/2 -f 124/205/4 133/206/4 128/207/4 -f 134/208/1 135/209/1 125/210/1 -f 136/211/3 137/212/3 138/213/3 -f 132/214/4 139/215/4 134/216/4 -f 138/217/2 140/218/2 141/219/2 -f 97/220/5 94/221/5 142/222/5 -f 143/223/5 144/224/5 97/220/5 -f 145/225/5 146/226/5 143/223/5 -f 142/222/5 96/227/5 145/225/5 -f 147/228/6 148/229/6 149/230/6 -f 111/231/6 148/229/6 93/232/6 -f 150/233/6 151/234/6 111/231/6 -f 147/228/6 152/235/6 150/233/6 -f 99/236/6 153/237/6 154/238/6 -f 114/239/6 155/240/6 99/236/6 -f 156/241/6 157/242/6 114/239/6 -f 154/238/6 158/243/6 156/241/6 -f 98/244/5 159/245/5 160/246/5 -f 113/247/5 161/248/5 98/244/5 -f 113/247/5 162/249/5 163/250/5 -f 160/246/5 162/249/5 164/251/5 -f 165/252/5 134/253/5 166/254/5 -f 165/252/5 127/255/5 132/256/5 -f 167/257/5 125/258/5 127/255/5 -f 166/254/5 125/258/5 168/259/5 -f 169/260/6 170/261/6 171/262/6 -f 172/263/6 170/261/6 173/264/6 -f 174/265/6 175/266/6 172/263/6 -f 169/260/6 176/267/6 174/265/6 -f 177/268/6 178/269/6 179/270/6 -f 180/271/6 178/269/6 181/272/6 -f 182/273/6 183/274/6 180/271/6 -f 177/268/6 184/275/6 182/273/6 -f 185/276/5 141/277/5 186/278/5 -f 187/279/5 141/277/5 188/280/5 -f 189/281/5 138/282/5 187/279/5 -f 185/276/5 136/283/5 189/281/5 -f 185/276/5 190/284/5 98/244/5 -f 189/281/5 191/285/5 185/276/5 -f 189/281/5 192/286/5 193/287/5 -f 98/244/5 192/286/5 113/247/5 -f 99/236/6 194/288/6 195/289/6 -f 182/273/6 194/288/6 177/268/6 -f 114/239/6 196/290/6 182/273/6 -f 99/236/6 197/291/6 114/239/6 -f 169/260/6 198/292/6 199/293/6 -f 174/265/6 200/294/6 169/260/6 -f 109/295/6 201/296/6 174/265/6 -f 199/293/6 202/297/6 109/295/6 -f 166/254/5 103/298/5 130/299/5 -f 166/254/5 203/300/5 121/301/5 -f 168/259/5 105/302/5 203/300/5 -f 130/299/5 105/302/5 112/303/5 -f 160/246/5 204/304/5 165/252/5 -f 164/251/5 205/305/5 160/246/5 -f 164/251/5 206/306/5 207/307/5 -f 165/252/5 206/306/5 167/257/5 -f 154/238/6 208/308/6 173/264/6 -f 156/241/6 209/309/6 154/238/6 -f 172/263/6 210/310/6 156/241/6 -f 173/264/6 211/311/6 172/263/6 -f 181/272/6 124/312/6 128/313/6 -f 150/233/6 124/312/6 147/228/6 -f 180/271/6 120/314/6 150/233/6 -f 181/272/6 118/315/6 180/271/6 -f 142/222/5 212/316/5 188/280/5 -f 145/225/5 213/317/5 142/222/5 -f 145/225/5 214/318/5 215/319/5 -f 188/280/5 214/318/5 187/279/5 -f 106/165/5 95/147/5 107/166/5 -f 109/320/1 97/150/1 199/321/1 -f 216/322/6 217/323/6 218/324/6 -f 219/325/6 220/326/6 221/327/6 -f 222/328/5 223/329/5 224/330/5 -f 131/203/5 135/209/5 139/215/5 -f 225/331/6 226/332/6 227/333/6 -f 228/334/6 229/335/6 230/336/6 -f 140/218/5 231/337/5 232/338/5 -f 233/339/5 234/340/5 235/341/5 -f 236/342/6 237/343/6 238/344/6 -f 239/345/6 240/346/6 241/347/6 -f 242/348/5 104/162/5 122/189/5 -f 243/349/5 244/350/5 245/351/5 -f 246/352/6 247/353/6 248/354/6 -f 123/192/6 129/198/6 133/206/6 -f 249/355/5 250/356/5 251/357/5 -f 203/358/2 242/348/2 121/359/2 -f 191/360/4 235/341/4 190/361/4 -f 146/362/2 106/165/2 144/363/2 -f 105/364/3 252/365/3 203/366/3 -f 190/367/1 234/340/1 192/368/1 -f 96/369/3 253/370/3 146/371/3 -f 193/372/2 233/339/2 191/373/2 -f 170/374/4 227/333/4 171/375/4 -f 192/376/3 254/377/3 193/378/3 -f 171/379/2 226/332/2 176/380/2 -f 213/381/4 251/357/4 212/382/4 -f 175/383/1 225/331/1 170/384/1 -f 155/385/4 221/327/4 153/386/4 -f 212/387/1 250/388/1 214/389/1 -f 176/390/3 255/391/3 175/392/3 -f 153/393/2 220/394/2 158/395/2 -f 215/396/2 249/355/2 213/397/2 -f 205/398/4 245/351/4 204/399/4 -f 157/400/1 219/325/1 155/401/1 -f 214/402/3 256/403/3 215/404/3 -f 204/405/1 244/406/1 206/407/1 -f 158/408/3 257/409/3 157/410/3 -f 207/411/2 243/349/2 205/412/2 -f 194/413/4 238/344/4 195/414/4 -f 206/415/3 258/416/3 207/417/3 -f 195/418/2 237/343/2 197/419/2 -f 196/420/1 236/342/1 194/421/1 -f 178/422/4 230/336/4 179/423/4 -f 197/424/3 259/425/3 196/426/3 -f 179/427/2 229/428/2 184/429/2 -f 183/430/1 228/334/1 178/431/1 -f 161/432/4 224/330/4 159/433/4 -f 184/434/3 260/435/3 183/436/3 -f 159/437/1 223/329/1 162/438/1 -f 209/439/4 248/354/4 208/440/4 -f 163/441/2 222/328/2 161/442/2 -f 148/443/4 218/324/4 149/444/4 -f 208/445/2 247/353/2 211/446/2 -f 162/447/3 261/448/3 163/449/3 -f 149/450/2 217/323/2 152/451/2 -f 210/452/1 246/352/1 209/453/1 -f 200/454/4 241/347/4 198/455/4 -f 151/456/1 216/322/1 148/457/1 -f 211/458/3 262/459/3 210/460/3 -f 198/461/2 240/462/2 202/463/2 -f 152/464/3 263/465/3 151/466/3 -f 201/467/1 239/345/1 200/468/1 -f 186/469/4 140/218/4 232/338/4 -f 202/470/3 264/471/3 201/472/3 -f 186/473/1 231/474/1 136/475/1 -f 265/476/1 266/477/1 267/478/1 -f 268/479/5 269/480/5 266/477/5 -f 270/481/2 271/482/2 269/480/2 -f 265/483/4 270/481/4 268/479/4 -f 272/484/1 273/485/1 274/486/1 -f 275/487/5 276/488/5 273/485/5 -f 277/489/2 278/490/2 276/488/2 -f 272/491/4 277/489/4 275/487/4 -f 279/492/1 280/493/1 281/494/1 -f 282/495/5 283/496/5 280/493/5 -f 284/497/2 285/498/2 283/496/2 -f 279/499/4 284/497/4 282/495/4 -f 286/500/1 287/501/1 288/502/1 -f 289/503/5 290/504/5 287/501/5 -f 291/505/2 292/506/2 290/504/2 -f 286/507/4 291/505/4 289/503/4 -f 293/508/1 294/509/1 295/510/1 -f 296/511/5 297/512/5 294/509/5 -f 298/513/2 299/514/2 297/512/2 -f 293/515/4 298/513/4 296/511/4 -f 300/516/1 301/517/1 302/518/1 -f 303/519/5 304/520/5 301/517/5 -f 305/521/2 306/522/2 304/520/2 -f 300/523/4 305/521/4 303/519/4 -f 307/524/1 308/525/1 309/526/1 -f 310/527/5 311/528/5 308/525/5 -f 312/529/2 313/530/2 311/528/2 -f 307/531/4 312/529/4 310/527/4 -f 314/532/1 315/533/1 316/534/1 -f 317/535/5 318/536/5 315/533/5 -f 319/537/2 320/538/2 318/536/2 -f 314/539/4 319/537/4 317/535/4 -f 321/540/1 322/541/1 323/542/1 -f 324/543/6 325/544/6 321/540/6 -f 326/545/2 327/546/2 324/543/2 -f 327/546/4 322/547/4 325/544/4 -f 328/548/1 329/549/1 330/550/1 -f 331/551/6 332/552/6 328/548/6 -f 333/553/2 334/554/2 331/551/2 -f 334/554/4 329/555/4 332/552/4 -f 335/556/1 336/557/1 337/558/1 -f 338/559/6 339/560/6 335/556/6 -f 340/561/2 341/562/2 338/559/2 -f 341/562/4 336/563/4 339/560/4 -f 342/564/1 343/565/1 344/566/1 -f 345/567/6 346/568/6 342/564/6 -f 347/569/2 348/570/2 345/567/2 -f 348/570/4 343/571/4 346/568/4 -f 349/572/1 350/573/1 351/574/1 -f 352/575/6 353/576/6 349/572/6 -f 354/577/2 355/578/2 352/575/2 -f 355/578/4 350/579/4 353/576/4 -f 356/580/1 357/581/1 358/582/1 -f 359/583/6 360/584/6 356/580/6 -f 361/585/2 362/586/2 359/583/2 -f 362/586/4 357/587/4 360/584/4 -f 363/588/1 364/589/1 365/590/1 -f 366/591/6 367/592/6 363/588/6 -f 368/593/2 369/594/2 366/591/2 -f 369/594/4 364/595/4 367/592/4 -f 370/596/1 371/597/1 372/598/1 -f 373/599/6 374/600/6 370/596/6 -f 375/601/2 376/602/2 373/599/2 -f 376/602/4 371/603/4 374/600/4 -f 1/1/1 9/604/1 2/2/1 -f 4/4/2 7/605/2 5/5/2 -f 8/16/2 12/606/2 11/17/2 -f 10/18/1 1/1/1 14/19/1 -f 13/24/2 377/607/2 17/25/2 -f 16/26/1 14/19/1 18/27/1 -f 20/29/1 28/608/1 21/30/1 -f 23/32/2 26/609/2 24/33/2 -f 27/44/2 31/610/2 30/45/2 -f 29/46/1 20/29/1 33/47/1 -f 32/52/2 378/611/2 36/53/2 -f 35/54/1 33/47/1 37/55/1 -f 39/57/1 47/612/1 40/58/1 -f 42/60/2 45/613/2 43/61/2 -f 46/72/2 50/614/2 49/73/2 -f 48/74/1 39/57/1 52/75/1 -f 51/80/2 379/615/2 55/81/2 -f 54/82/1 52/75/1 56/83/1 -f 58/85/1 66/616/1 59/86/1 -f 61/88/2 64/617/2 62/89/2 -f 65/100/2 69/618/2 68/101/2 -f 67/102/1 58/85/1 71/103/1 -f 70/108/2 380/619/2 74/109/2 -f 73/110/1 71/103/1 75/111/1 -f 77/113/3 86/620/3 78/114/3 -f 80/116/4 87/621/4 81/117/4 -f 83/119/5 90/622/5 84/120/5 -f 82/122/2 81/125/2 86/123/2 -f 81/125/6 87/623/6 78/126/6 -f 80/127/1 79/624/1 78/128/1 -f 85/121/1 89/131/1 88/130/1 -f 89/131/1 79/624/1 80/127/1 -f 90/132/2 92/135/2 91/133/2 -f 92/135/2 82/122/2 77/124/2 -f 83/136/4 88/625/4 92/137/4 -f 92/139/7 130/200/7 93/140/7 -f 84/142/3 91/145/3 89/143/3 -f 91/145/3 77/113/3 79/115/3 -f 94/146/1 107/166/1 95/147/1 -f 80/149/8 199/321/8 97/150/8 -f 130/626/9 92/154/9 166/627/9 -f 88/152/9 97/628/9 142/629/9 -f 188/630/9 185/631/9 88/152/9 -f 88/152/9 142/629/9 188/630/9 -f 166/627/9 92/154/9 165/632/9 -f 98/153/9 160/633/9 92/154/9 -f 165/632/9 92/154/9 160/633/9 -f 88/152/9 185/631/9 98/153/9 -f 199/634/10 80/157/10 169/635/10 -f 82/155/10 93/636/10 147/637/10 -f 181/638/10 177/639/10 82/155/10 -f 82/155/10 147/637/10 181/638/10 -f 169/635/10 80/157/10 173/640/10 -f 154/641/10 173/640/10 80/157/10 -f 82/155/10 177/639/10 99/156/10 -f 99/156/10 154/641/10 80/157/10 -f 100/158/5 117/179/5 101/159/5 -f 103/161/1 122/189/1 104/162/1 -f 94/164/4 144/642/4 106/165/4 -f 108/167/4 143/643/4 109/168/4 -f 110/170/4 100/175/4 111/171/4 -f 143/643/4 108/167/4 145/644/4 -f 110/170/4 112/172/4 168/645/4 -f 110/170/4 168/645/4 167/646/4 -f 145/644/4 108/167/4 187/647/4 -f 113/173/4 189/648/4 108/167/4 -f 187/647/4 108/167/4 189/648/4 -f 110/170/4 167/646/4 164/649/4 -f 164/649/4 113/173/4 110/170/4 -f 111/171/4 100/175/4 150/650/4 -f 102/169/4 109/168/4 174/651/4 -f 172/652/4 156/653/4 102/169/4 -f 102/169/4 174/651/4 172/652/4 -f 150/650/4 100/175/4 180/654/4 -f 182/655/4 180/654/4 100/175/4 -f 102/169/4 156/653/4 114/174/4 -f 114/174/4 182/655/4 100/175/4 -f 101/159/4 117/179/4 115/176/4 -f 110/178/1 115/176/1 117/179/1 -f 108/181/6 116/177/6 115/176/6 -f 102/183/2 101/159/2 116/177/2 -f 118/185/3 129/198/3 119/186/3 -f 121/188/4 242/348/4 122/189/4 -f 120/191/1 119/186/1 123/192/1 -f 125/194/3 135/209/3 126/195/3 -f 128/197/2 133/206/2 129/198/2 -f 130/200/2 112/656/2 111/201/2 -f 127/202/2 126/195/2 131/203/2 -f 124/205/4 123/192/4 133/206/4 -f 134/208/1 139/215/1 135/209/1 -f 136/211/3 231/337/3 137/212/3 -f 132/214/4 131/203/4 139/215/4 -f 138/217/2 137/212/2 140/218/2 -f 97/220/5 144/224/5 94/221/5 -f 143/223/5 146/226/5 144/224/5 -f 145/225/5 96/227/5 146/226/5 -f 142/222/5 94/221/5 96/227/5 -f 147/228/6 93/232/6 148/229/6 -f 111/231/6 151/234/6 148/229/6 -f 150/233/6 152/235/6 151/234/6 -f 147/228/6 149/230/6 152/235/6 -f 99/236/6 155/240/6 153/237/6 -f 114/239/6 157/242/6 155/240/6 -f 156/241/6 158/243/6 157/242/6 -f 154/238/6 153/237/6 158/243/6 -f 98/244/5 161/248/5 159/245/5 -f 113/247/5 163/250/5 161/248/5 -f 113/247/5 164/251/5 162/249/5 -f 160/246/5 159/245/5 162/249/5 -f 165/252/5 132/256/5 134/253/5 -f 165/252/5 167/257/5 127/255/5 -f 167/257/5 168/259/5 125/258/5 -f 166/254/5 134/253/5 125/258/5 -f 169/260/6 173/264/6 170/261/6 -f 172/263/6 175/266/6 170/261/6 -f 174/265/6 176/267/6 175/266/6 -f 169/260/6 171/262/6 176/267/6 -f 177/268/6 181/272/6 178/269/6 -f 180/271/6 183/274/6 178/269/6 -f 182/273/6 184/275/6 183/274/6 -f 177/268/6 179/270/6 184/275/6 -f 185/276/5 188/280/5 141/277/5 -f 187/279/5 138/282/5 141/277/5 -f 189/281/5 136/283/5 138/282/5 -f 185/276/5 186/278/5 136/283/5 -f 185/276/5 191/285/5 190/284/5 -f 189/281/5 193/287/5 191/285/5 -f 189/281/5 113/247/5 192/286/5 -f 98/244/5 190/284/5 192/286/5 -f 99/236/6 177/268/6 194/288/6 -f 182/273/6 196/290/6 194/288/6 -f 114/239/6 197/291/6 196/290/6 -f 99/236/6 195/289/6 197/291/6 -f 169/260/6 200/294/6 198/292/6 -f 174/265/6 201/296/6 200/294/6 -f 109/295/6 202/297/6 201/296/6 -f 199/293/6 198/292/6 202/297/6 -f 166/254/5 121/301/5 103/298/5 -f 166/254/5 168/259/5 203/300/5 -f 168/259/5 112/303/5 105/302/5 -f 130/299/5 103/298/5 105/302/5 -f 160/246/5 205/305/5 204/304/5 -f 164/251/5 207/307/5 205/305/5 -f 164/251/5 167/257/5 206/306/5 -f 165/252/5 204/304/5 206/306/5 -f 154/238/6 209/309/6 208/308/6 -f 156/241/6 210/310/6 209/309/6 -f 172/263/6 211/311/6 210/310/6 -f 173/264/6 208/308/6 211/311/6 -f 181/272/6 147/228/6 124/312/6 -f 150/233/6 120/314/6 124/312/6 -f 180/271/6 118/315/6 120/314/6 -f 181/272/6 128/313/6 118/315/6 -f 142/222/5 213/317/5 212/316/5 -f 145/225/5 215/319/5 213/317/5 -f 145/225/5 187/279/5 214/318/5 -f 188/280/5 212/316/5 214/318/5 -f 106/165/5 253/370/5 95/147/5 -f 109/320/1 143/657/1 97/150/1 -f 216/322/6 263/465/6 217/323/6 -f 219/325/6 257/409/6 220/326/6 -f 222/328/5 261/448/5 223/329/5 -f 131/203/5 126/195/5 135/209/5 -f 225/331/6 255/391/6 226/332/6 -f 228/334/6 260/435/6 229/335/6 -f 140/218/5 137/212/5 231/337/5 -f 233/339/5 254/377/5 234/340/5 -f 236/342/6 259/425/6 237/343/6 -f 239/345/6 264/471/6 240/346/6 -f 242/348/5 252/365/5 104/162/5 -f 243/349/5 258/416/5 244/350/5 -f 246/352/6 262/459/6 247/353/6 -f 123/192/6 119/186/6 129/198/6 -f 249/355/5 256/403/5 250/356/5 -f 203/358/2 252/365/2 242/348/2 -f 191/360/4 233/339/4 235/341/4 -f 146/362/2 253/370/2 106/165/2 -f 105/364/3 104/162/3 252/365/3 -f 190/367/1 235/341/1 234/340/1 -f 96/369/3 95/147/3 253/370/3 -f 193/372/2 254/377/2 233/339/2 -f 170/374/4 225/331/4 227/333/4 -f 192/376/3 234/340/3 254/377/3 -f 171/379/2 227/333/2 226/332/2 -f 213/381/4 249/355/4 251/357/4 -f 175/383/1 255/391/1 225/331/1 -f 155/385/4 219/325/4 221/327/4 -f 212/387/1 251/658/1 250/388/1 -f 176/390/3 226/332/3 255/391/3 -f 153/393/2 221/659/2 220/394/2 -f 215/396/2 256/403/2 249/355/2 -f 205/398/4 243/349/4 245/351/4 -f 157/400/1 257/409/1 219/325/1 -f 214/402/3 250/356/3 256/403/3 -f 204/405/1 245/660/1 244/406/1 -f 158/408/3 220/326/3 257/409/3 -f 207/411/2 258/416/2 243/349/2 -f 194/413/4 236/342/4 238/344/4 -f 206/415/3 244/350/3 258/416/3 -f 195/418/2 238/344/2 237/343/2 -f 196/420/1 259/425/1 236/342/1 -f 178/422/4 228/334/4 230/336/4 -f 197/424/3 237/343/3 259/425/3 -f 179/427/2 230/661/2 229/428/2 -f 183/430/1 260/435/1 228/334/1 -f 161/432/4 222/328/4 224/330/4 -f 184/434/3 229/335/3 260/435/3 -f 159/437/1 224/330/1 223/329/1 -f 209/439/4 246/352/4 248/354/4 -f 163/441/2 261/448/2 222/328/2 -f 148/443/4 216/322/4 218/324/4 -f 208/445/2 248/354/2 247/353/2 -f 162/447/3 223/329/3 261/448/3 -f 149/450/2 218/324/2 217/323/2 -f 210/452/1 262/459/1 246/352/1 -f 200/454/4 239/345/4 241/347/4 -f 151/456/1 263/465/1 216/322/1 -f 211/458/3 247/353/3 262/459/3 -f 198/461/2 241/662/2 240/462/2 -f 152/464/3 217/323/3 263/465/3 -f 201/467/1 264/471/1 239/345/1 -f 186/469/4 141/663/4 140/218/4 -f 202/470/3 240/346/3 264/471/3 -f 186/473/1 232/664/1 231/474/1 -f 265/476/1 268/479/1 266/477/1 -f 268/479/5 270/481/5 269/480/5 -f 270/481/2 381/665/2 271/482/2 -f 265/483/4 381/666/4 270/481/4 -f 272/484/1 275/487/1 273/485/1 -f 275/487/5 277/489/5 276/488/5 -f 277/489/2 382/667/2 278/490/2 -f 272/491/4 382/668/4 277/489/4 -f 279/492/1 282/495/1 280/493/1 -f 282/495/5 284/497/5 283/496/5 -f 284/497/2 383/669/2 285/498/2 -f 279/499/4 383/670/4 284/497/4 -f 286/500/1 289/503/1 287/501/1 -f 289/503/5 291/505/5 290/504/5 -f 291/505/2 384/671/2 292/506/2 -f 286/507/4 384/672/4 291/505/4 -f 293/508/1 296/511/1 294/509/1 -f 296/511/5 298/513/5 297/512/5 -f 298/513/2 385/673/2 299/514/2 -f 293/515/4 385/674/4 298/513/4 -f 300/516/1 303/519/1 301/517/1 -f 303/519/5 305/521/5 304/520/5 -f 305/521/2 386/675/2 306/522/2 -f 300/523/4 386/676/4 305/521/4 -f 307/524/1 310/527/1 308/525/1 -f 310/527/5 312/529/5 311/528/5 -f 312/529/2 387/677/2 313/530/2 -f 307/531/4 387/678/4 312/529/4 -f 314/532/1 317/535/1 315/533/1 -f 317/535/5 319/537/5 318/536/5 -f 319/537/2 388/679/2 320/538/2 -f 314/539/4 388/680/4 319/537/4 -f 321/540/1 325/544/1 322/541/1 -f 324/543/6 327/546/6 325/544/6 -f 326/545/2 389/681/2 327/546/2 -f 327/546/4 389/682/4 322/547/4 -f 328/548/1 332/552/1 329/549/1 -f 331/551/6 334/554/6 332/552/6 -f 333/553/2 390/683/2 334/554/2 -f 334/554/4 390/684/4 329/555/4 -f 335/556/1 339/560/1 336/557/1 -f 338/559/6 341/562/6 339/560/6 -f 340/561/2 391/685/2 341/562/2 -f 341/562/4 391/686/4 336/563/4 -f 342/564/1 346/568/1 343/565/1 -f 345/567/6 348/570/6 346/568/6 -f 347/569/2 392/687/2 348/570/2 -f 348/570/4 392/688/4 343/571/4 -f 349/572/1 353/576/1 350/573/1 -f 352/575/6 355/578/6 353/576/6 -f 354/577/2 393/689/2 355/578/2 -f 355/578/4 393/690/4 350/579/4 -f 356/580/1 360/584/1 357/581/1 -f 359/583/6 362/586/6 360/584/6 -f 361/585/2 394/691/2 362/586/2 -f 362/586/4 394/692/4 357/587/4 -f 363/588/1 367/592/1 364/589/1 -f 366/591/6 369/594/6 367/592/6 -f 368/593/2 395/693/2 369/594/2 -f 369/594/4 395/694/4 364/595/4 -f 370/596/1 374/600/1 371/597/1 -f 373/599/6 376/602/6 374/600/6 -f 375/601/2 396/695/2 376/602/2 -f 376/602/4 396/696/4 371/603/4 +f 224/1/1 2/2/1 221/3/1 +f 153/4/2 179/5/2 156/6/2 +f 221/3/1 2/2/1 10/7/1 +f 163/8/3 186/9/3 162/10/3 +f 31/11/1 1/12/1 224/1/1 +f 221/13/4 9/14/4 222/15/4 +f 105/16/5 324/17/5 104/18/5 +f 8/19/4 222/15/4 9/14/4 +f 7/20/4 232/21/4 8/19/4 +f 6/22/4 233/23/4 7/20/4 +f 41/24/4 234/25/4 6/22/4 +f 42/26/4 235/27/4 41/24/4 +f 43/28/4 236/29/4 42/26/4 +f 44/30/4 237/31/4 43/28/4 +f 126/32/4 242/33/4 202/34/4 +f 31/35/1 20/36/1 53/37/1 +f 45/38/6 64/39/6 3/40/6 +f 219/41/3 257/42/3 100/43/3 +f 89/44/2 256/45/2 90/46/2 +f 99/47/3 278/48/3 98/49/3 +f 88/50/2 271/51/2 89/44/2 +f 98/49/3 277/52/3 97/53/3 +f 91/54/2 281/55/2 217/56/2 +f 104/57/3 263/58/3 314/59/3 +f 160/60/6 184/61/6 159/62/6 +f 74/63/6 53/64/6 54/65/6 +f 64/39/6 73/66/6 74/63/6 +f 74/63/6 65/67/6 64/39/6 +f 75/68/6 66/69/6 65/67/6 +f 76/70/6 67/71/6 66/69/6 +f 77/72/6 68/73/6 67/71/6 +f 78/74/6 69/75/6 68/73/6 +f 79/76/6 70/77/6 69/75/6 +f 80/78/6 71/79/6 70/77/6 +f 215/80/6 122/81/6 213/82/6 +f 32/83/7 224/84/7 223/85/7 +f 21/86/8 32/87/8 22/88/8 +f 64/39/6 4/89/6 3/40/6 +f 65/67/6 46/90/6 4/89/6 +f 66/69/6 47/91/6 46/90/6 +f 67/71/6 48/92/6 47/91/6 +f 68/73/6 49/93/6 48/92/6 +f 69/75/6 50/94/6 49/93/6 +f 70/77/6 51/95/6 50/94/6 +f 213/82/6 5/96/6 209/97/6 +f 19/98/2 21/99/2 22/100/2 +f 54/65/6 20/101/6 19/102/6 +f 54/65/6 75/68/6 74/63/6 +f 55/103/6 76/70/6 75/68/6 +f 56/104/6 77/72/6 76/70/6 +f 57/105/6 78/74/6 77/72/6 +f 58/106/6 79/76/6 78/74/6 +f 59/107/6 80/78/6 79/76/6 +f 60/108/6 81/109/6 80/78/6 +f 211/110/6 124/111/6 215/80/6 +f 39/112/7 243/113/7 207/114/7 +f 38/115/7 231/116/7 39/112/7 +f 37/117/7 230/118/7 38/115/7 +f 36/119/7 229/120/7 37/117/7 +f 35/121/7 228/122/7 36/119/7 +f 34/123/7 227/124/7 35/121/7 +f 33/125/7 226/126/7 34/123/7 +f 32/83/7 225/127/7 33/125/7 +f 10/128/3 3/129/3 9/130/3 +f 32/87/8 23/131/8 22/88/8 +f 33/132/8 24/133/8 23/131/8 +f 34/134/8 25/135/8 24/133/8 +f 35/136/8 26/137/8 25/135/8 +f 36/138/8 27/139/8 26/137/8 +f 37/140/8 28/141/8 27/139/8 +f 38/142/8 29/143/8 28/141/8 +f 208/144/8 30/145/8 206/146/8 +f 19/102/6 55/103/6 54/65/6 +f 18/147/6 56/104/6 55/103/6 +f 17/148/6 57/105/6 56/104/6 +f 16/149/6 58/106/6 57/105/6 +f 15/150/6 59/107/6 58/106/6 +f 14/151/6 60/108/6 59/107/6 +f 13/152/6 61/153/6 60/108/6 +f 203/154/6 123/155/6 211/110/6 +f 22/100/2 18/156/2 19/98/2 +f 23/157/2 17/158/2 18/156/2 +f 24/159/2 16/160/2 17/158/2 +f 25/161/2 15/162/2 16/160/2 +f 26/163/2 14/164/2 15/162/2 +f 27/165/2 13/166/2 14/164/2 +f 28/167/2 12/168/2 13/166/2 +f 206/169/2 11/170/2 203/171/2 +f 216/172/3 51/173/3 201/174/3 +f 44/175/3 50/176/3 51/173/3 +f 43/177/3 49/178/3 50/176/3 +f 42/179/3 48/180/3 49/178/3 +f 41/181/3 47/182/3 48/180/3 +f 6/183/3 46/184/3 47/182/3 +f 7/185/3 4/186/3 46/184/3 +f 8/187/3 3/129/3 4/186/3 +f 123/188/5 30/189/5 125/190/5 +f 52/191/2 142/192/2 101/193/2 +f 72/194/2 115/195/2 109/196/2 +f 103/197/6 141/198/6 40/199/6 +f 128/200/5 240/201/5 127/202/5 +f 125/203/5 239/204/5 128/200/5 +f 240/201/5 126/205/5 127/202/5 +f 72/206/5 124/207/5 82/208/5 +f 109/209/5 122/210/5 72/206/5 +f 82/208/5 128/211/5 110/212/5 +f 110/212/5 127/213/5 109/209/5 +f 108/214/2 120/215/2 112/216/2 +f 110/217/3 116/218/3 82/219/3 +f 82/220/8 117/221/8 72/222/8 +f 109/223/6 114/224/6 110/225/6 +f 108/226/5 115/227/5 111/228/5 +f 112/229/5 117/221/5 116/230/5 +f 111/231/5 117/232/5 113/233/5 +f 108/214/5 116/218/5 114/234/5 +f 120/215/5 119/235/5 121/236/5 +f 112/229/6 121/236/6 113/237/6 +f 113/233/3 119/235/3 111/231/3 +f 111/228/8 118/238/8 108/226/8 +f 52/239/5 122/210/5 107/240/5 +f 106/241/5 123/188/5 62/242/5 +f 62/242/5 125/190/5 40/243/5 +f 101/244/5 5/245/5 52/239/5 +f 102/246/5 126/247/5 101/244/5 +f 40/243/5 128/211/5 103/248/5 +f 107/240/5 127/213/5 102/246/5 +f 103/248/5 124/207/5 106/241/5 +f 134/249/8 151/250/8 135/251/8 +f 135/252/2 145/253/2 129/254/2 +f 62/255/8 140/256/8 106/257/8 +f 102/258/3 137/259/3 107/260/3 +f 101/261/6 143/262/6 102/263/6 +f 40/264/3 139/265/3 62/266/3 +f 107/267/8 138/268/8 52/269/8 +f 106/270/2 144/271/2 103/272/2 +f 129/273/5 138/268/5 137/274/5 +f 131/275/5 140/256/5 139/276/5 +f 133/277/5 139/265/5 141/278/5 +f 134/279/5 138/280/5 130/281/5 +f 135/251/5 142/282/5 134/249/5 +f 133/283/5 144/284/5 136/285/5 +f 135/252/5 137/259/5 143/286/5 +f 136/287/5 140/288/5 132/289/5 +f 145/253/5 150/290/5 146/291/5 +f 147/292/5 152/293/5 148/294/5 +f 133/277/2 147/292/2 131/295/2 +f 129/273/6 146/291/6 130/296/6 +f 132/289/3 152/293/3 136/287/3 +f 136/285/8 149/297/8 133/283/8 +f 130/281/3 150/290/3 134/279/3 +f 131/275/6 148/294/6 132/298/6 +f 2/299/1 153/300/1 10/301/1 +f 63/302/1 154/303/1 2/299/1 +f 45/304/1 155/305/1 63/302/1 +f 10/301/1 156/306/1 45/304/1 +f 63/302/1 157/307/1 73/308/1 +f 2/299/1 158/309/1 63/302/1 +f 1/310/1 159/311/1 2/299/1 +f 73/308/1 160/312/1 1/310/1 +f 31/35/1 161/313/1 1/310/1 +f 53/37/1 162/314/1 31/35/1 +f 73/308/1 163/315/1 53/37/1 +f 1/310/1 164/316/1 73/308/1 +f 166/317/3 191/318/3 167/319/3 +f 175/320/6 200/321/6 176/322/6 +f 170/323/6 193/324/6 169/325/6 +f 158/326/8 181/327/8 157/328/8 +f 164/329/8 188/330/8 163/331/8 +f 155/332/3 177/333/3 154/334/3 +f 157/335/3 183/336/3 160/337/3 +f 162/338/6 185/339/6 161/340/6 +f 156/341/8 180/342/8 155/343/8 +f 159/344/2 182/345/2 158/346/2 +f 161/347/2 187/348/2 164/349/2 +f 154/350/6 178/351/6 153/352/6 +f 166/353/1 177/354/1 165/355/1 +f 166/317/1 179/5/1 178/356/1 +f 165/357/1 180/358/1 168/359/1 +f 167/360/1 180/342/1 179/361/1 +f 170/323/1 181/327/1 182/362/1 +f 171/363/1 181/364/1 169/365/1 +f 172/366/1 182/345/1 184/367/1 +f 172/368/1 183/369/1 171/370/1 +f 173/371/1 186/372/1 174/373/1 +f 173/374/1 187/348/1 185/375/1 +f 174/376/1 188/377/1 176/378/1 +f 175/320/1 188/330/1 187/379/1 +f 189/380/1 191/318/1 190/381/1 +f 194/382/1 195/383/1 193/324/1 +f 198/384/1 199/385/1 197/386/1 +f 174/373/8 197/386/8 173/371/8 +f 169/365/2 195/383/2 171/363/2 +f 168/359/2 189/380/2 165/357/2 +f 173/374/3 199/385/3 175/387/3 +f 172/366/3 194/382/3 170/388/3 +f 167/360/6 192/389/6 168/390/6 +f 176/378/2 198/384/2 174/376/2 +f 165/355/8 190/381/8 166/353/8 +f 171/370/8 196/391/8 172/368/8 +f 126/392/3 209/393/3 5/394/3 +f 202/395/3 201/174/3 209/393/3 +f 29/396/2 204/397/2 12/168/2 +f 205/398/2 203/171/2 204/397/2 +f 12/399/6 210/400/6 61/153/6 +f 204/401/6 211/110/6 210/400/6 +f 39/402/8 205/403/8 29/143/8 +f 207/404/8 206/146/8 205/403/8 +f 208/405/7 239/406/7 125/407/7 +f 207/114/7 241/408/7 208/405/7 +f 61/153/6 214/409/6 81/109/6 +f 210/400/6 215/80/6 214/409/6 +f 71/79/6 201/410/6 51/95/6 +f 212/411/6 209/97/6 201/410/6 +f 81/109/6 212/411/6 71/79/6 +f 214/409/6 213/82/6 212/411/6 +f 87/412/2 270/413/2 88/50/2 +f 97/53/3 276/414/3 96/415/3 +f 216/416/4 238/417/4 44/30/4 +f 202/34/4 244/418/4 216/416/4 +f 307/419/8 222/420/8 93/421/8 +f 310/422/8 223/423/8 224/424/8 +f 85/425/8 223/423/8 84/426/8 +f 86/427/8 225/428/8 85/425/8 +f 87/429/8 226/430/8 86/427/8 +f 88/431/8 227/432/8 87/429/8 +f 89/433/8 228/434/8 88/431/8 +f 90/435/8 229/436/8 89/433/8 +f 91/437/8 230/438/8 90/435/8 +f 93/421/8 232/439/8 94/440/8 +f 94/440/8 233/441/8 95/442/8 +f 95/442/8 234/443/8 96/444/8 +f 96/444/8 235/445/8 97/446/8 +f 97/446/8 236/447/8 98/448/8 +f 98/448/8 237/449/8 99/450/8 +f 99/450/8 238/451/8 100/452/8 +f 310/422/8 221/453/8 307/419/8 +f 312/454/8 239/455/8 311/456/8 +f 311/456/8 241/457/8 218/458/8 +f 312/454/8 242/459/8 240/460/8 +f 217/461/8 231/462/8 91/437/8 +f 218/458/8 243/463/8 217/461/8 +f 100/452/8 244/464/8 219/465/8 +f 219/465/8 242/459/8 220/466/8 +f 94/467/3 245/468/3 283/469/3 +f 250/470/2 294/471/2 252/472/2 +f 253/473/3 293/474/3 251/475/3 +f 262/476/2 325/477/2 267/478/2 +f 268/479/2 292/480/2 250/470/2 +f 251/475/3 334/481/3 249/482/3 +f 265/483/5 344/484/5 264/485/5 +f 267/478/2 326/486/2 268/479/2 +f 220/487/3 317/488/3 286/489/3 +f 100/43/3 255/490/3 99/47/3 +f 90/46/2 273/491/2 91/54/2 +f 217/56/2 281/55/2 285/492/2 +f 84/493/2 315/494/2 284/495/2 +f 95/496/3 245/468/3 94/467/3 +f 85/497/2 248/498/2 86/499/2 +f 96/415/3 247/500/3 95/496/3 +f 249/482/3 333/501/3 275/502/3 +f 261/503/1 342/504/1 262/505/1 +f 86/499/2 269/506/2 87/412/2 +f 284/495/9 316/507/9 283/469/9 +f 318/508/10 286/489/10 317/509/10 +f 268/510/8 246/511/8 267/512/8 +f 250/513/8 248/498/8 268/510/8 +f 252/514/8 269/506/8 250/513/8 +f 254/515/8 270/413/8 252/514/8 +f 272/516/8 271/51/8 254/515/8 +f 258/517/8 256/45/8 272/516/8 +f 274/518/8 247/500/8 275/519/8 +f 275/519/8 276/414/8 249/520/8 +f 249/520/8 277/52/8 251/521/8 +f 251/521/8 278/48/8 253/522/8 +f 253/522/8 255/490/8 279/523/8 +f 279/523/8 257/42/8 280/524/8 +f 260/525/8 273/491/8 258/517/8 +f 280/524/8 259/526/8 282/527/8 +f 262/528/8 283/469/8 261/529/8 +f 264/530/8 285/492/8 265/531/8 +f 262/528/8 246/511/8 284/495/8 +f 261/529/8 245/468/8 274/518/8 +f 265/531/8 281/55/8 260/525/8 +f 264/530/8 259/526/8 286/489/8 +f 291/532/2 347/533/2 289/534/2 +f 303/535/5 362/536/5 304/537/5 +f 289/534/2 345/538/2 332/539/2 +f 340/540/2 357/541/2 338/542/2 +f 330/543/3 358/544/3 331/545/3 +f 331/545/3 360/546/3 339/547/3 +f 306/548/2 359/549/2 340/540/2 +f 329/550/3 356/551/3 330/543/3 +f 338/542/2 355/552/2 337/553/2 +f 274/554/3 341/555/3 261/556/3 +f 279/557/3 295/558/3 253/473/3 +f 252/472/2 296/559/2 254/560/2 +f 260/561/2 343/562/2 265/563/2 +f 280/564/3 297/565/3 279/557/3 +f 254/560/2 298/566/2 272/567/2 +f 264/568/3 301/569/3 282/570/3 +f 258/571/2 302/572/2 260/561/2 +f 272/567/2 300/573/2 258/571/2 +f 282/570/3 299/574/3 280/564/3 +f 275/502/3 287/575/3 274/554/3 +f 92/576/8 93/421/8 308/577/8 +f 83/578/8 84/426/8 310/422/8 +f 83/578/8 307/419/8 92/576/8 +f 104/579/8 311/456/8 105/580/8 +f 105/580/8 218/458/8 313/581/8 +f 104/579/8 220/466/8 312/454/8 +f 319/582/1 315/583/1 320/584/1 +f 266/585/5 317/509/5 263/586/5 +f 320/584/1 84/587/1 309/588/1 +f 319/582/1 93/589/1 316/507/1 +f 263/586/5 220/590/5 314/591/5 +f 266/585/5 218/592/5 318/508/5 +f 319/593/8 322/594/8 321/595/8 +f 263/58/8 323/596/8 266/597/8 +f 83/598/2 320/599/2 309/600/2 +f 313/601/2 323/596/2 105/602/2 +f 92/603/1 322/594/1 83/604/1 +f 308/605/3 321/595/3 92/606/3 +f 290/607/8 325/477/8 288/608/8 +f 327/609/8 326/486/8 290/607/8 +f 328/610/8 292/480/8 327/609/8 +f 329/550/8 294/471/8 328/610/8 +f 330/543/8 296/559/8 329/550/8 +f 331/545/8 298/566/8 330/543/8 +f 332/539/8 333/501/8 289/534/8 +f 289/534/8 334/481/8 291/532/8 +f 291/532/8 293/474/8 335/611/8 +f 335/611/8 295/558/8 336/612/8 +f 336/612/8 297/565/8 337/553/8 +f 337/553/8 299/574/8 338/542/8 +f 339/547/8 300/573/8 331/545/8 +f 338/542/8 301/569/8 340/540/8 +f 304/537/8 341/613/8 303/535/8 +f 306/614/8 343/615/8 305/616/8 +f 304/617/8 325/477/8 342/618/8 +f 303/619/8 287/575/8 332/539/8 +f 305/620/8 302/572/8 339/547/8 +f 306/548/8 301/569/8 344/621/8 +f 345/538/8 348/622/8 346/623/8 +f 347/533/8 350/624/8 348/622/8 +f 349/625/8 352/626/8 350/624/8 +f 351/627/8 354/628/8 352/626/8 +f 353/629/8 356/551/8 354/628/8 +f 355/552/8 358/544/8 356/551/8 +f 357/541/8 360/546/8 358/544/8 +f 361/630/8 346/623/8 362/536/8 +f 359/549/8 363/631/8 360/546/8 +f 288/608/3 348/622/3 290/607/3 +f 305/616/1 364/632/1 306/614/1 +f 335/611/2 349/625/2 291/532/2 +f 290/607/3 350/624/3 327/609/3 +f 304/617/3 346/623/3 288/608/3 +f 336/612/2 351/627/2 335/611/2 +f 327/609/3 352/626/3 328/610/3 +f 332/539/2 361/630/2 303/619/2 +f 337/553/2 353/629/2 336/612/2 +f 328/610/3 354/628/3 329/550/3 +f 339/547/3 363/631/3 305/620/3 +f 373/633/3 368/634/3 367/635/3 +f 384/636/1 371/637/1 381/638/1 +f 377/639/2 370/640/2 369/641/2 +f 388/642/5 365/643/5 385/644/5 +f 375/645/8 388/642/8 391/646/8 +f 368/634/8 389/647/8 383/648/8 +f 376/649/8 391/646/8 389/647/8 +f 371/650/2 379/651/2 378/652/2 +f 378/652/2 380/653/2 377/639/2 +f 365/654/3 375/645/3 374/655/3 +f 374/655/3 376/649/3 373/633/3 +f 394/656/6 374/655/6 373/633/6 +f 393/657/6 396/658/6 394/656/6 +f 365/659/5 404/660/5 385/661/5 +f 381/662/6 394/656/6 382/663/6 +f 390/664/8 380/653/8 379/651/8 +f 389/647/8 392/665/8 390/664/8 +f 384/636/8 379/651/8 372/666/8 +f 383/648/8 390/664/8 384/636/8 +f 392/665/8 370/640/8 380/653/8 +f 391/646/8 387/667/8 392/665/8 +f 385/661/2 403/668/2 396/669/2 +f 395/670/6 385/671/6 396/658/6 +f 370/640/5 386/672/5 369/673/5 +f 387/667/5 385/644/5 386/672/5 +f 368/634/1 382/674/1 367/675/1 +f 383/648/1 381/638/1 382/674/1 +f 382/676/1 400/677/1 367/678/1 +f 394/679/2 399/680/2 382/676/2 +f 374/681/3 398/682/3 365/659/3 +f 373/683/5 402/684/5 394/685/5 +f 396/686/1 397/687/1 374/681/1 +f 367/678/3 401/688/3 373/683/3 +f 413/689/3 408/690/3 407/691/3 +f 424/692/1 411/693/1 421/694/1 +f 417/695/2 410/696/2 409/697/2 +f 428/698/5 405/699/5 425/700/5 +f 415/701/8 428/698/8 431/702/8 +f 408/690/8 429/703/8 423/704/8 +f 416/705/8 431/702/8 429/703/8 +f 411/706/2 419/707/2 418/708/2 +f 418/708/2 420/709/2 417/695/2 +f 405/710/3 415/701/3 414/711/3 +f 414/711/3 416/705/3 413/689/3 +f 434/712/6 414/711/6 413/689/6 +f 433/713/6 436/714/6 434/712/6 +f 405/715/5 444/716/5 425/717/5 +f 421/718/6 434/712/6 422/719/6 +f 430/720/8 420/709/8 419/707/8 +f 429/703/8 432/721/8 430/720/8 +f 424/692/8 419/707/8 412/722/8 +f 423/704/8 430/720/8 424/692/8 +f 432/721/8 410/696/8 420/709/8 +f 431/702/8 427/723/8 432/721/8 +f 425/717/2 443/724/2 436/725/2 +f 435/726/6 425/727/6 436/714/6 +f 410/696/5 426/728/5 409/729/5 +f 427/723/5 425/700/5 426/728/5 +f 408/690/1 422/730/1 407/731/1 +f 423/704/1 421/694/1 422/730/1 +f 422/732/1 440/733/1 407/734/1 +f 434/735/2 439/736/2 422/732/2 +f 414/737/3 438/738/3 405/715/3 +f 413/739/5 442/740/5 434/741/5 +f 436/742/1 437/743/1 414/737/1 +f 407/734/3 441/744/3 413/739/3 +f 453/745/3 448/746/3 447/747/3 +f 464/748/1 451/749/1 461/750/1 +f 457/751/2 450/752/2 449/753/2 +f 468/754/5 445/755/5 465/756/5 +f 455/757/8 468/754/8 471/758/8 +f 448/746/8 469/759/8 463/760/8 +f 456/761/8 471/758/8 469/759/8 +f 451/762/2 459/763/2 458/764/2 +f 458/764/2 460/765/2 457/751/2 +f 445/766/3 455/757/3 454/767/3 +f 454/767/3 456/761/3 453/745/3 +f 474/768/6 454/767/6 453/745/6 +f 473/769/6 476/770/6 474/768/6 +f 445/771/5 484/772/5 465/773/5 +f 461/774/6 474/768/6 462/775/6 +f 470/776/8 460/765/8 459/763/8 +f 469/759/8 472/777/8 470/776/8 +f 464/748/8 459/763/8 452/778/8 +f 463/760/8 470/776/8 464/748/8 +f 472/777/8 450/752/8 460/765/8 +f 471/758/8 467/779/8 472/777/8 +f 465/773/2 483/780/2 476/781/2 +f 475/782/6 465/783/6 476/770/6 +f 450/752/5 466/784/5 449/785/5 +f 467/779/5 465/756/5 466/784/5 +f 448/746/1 462/786/1 447/787/1 +f 463/760/1 461/750/1 462/786/1 +f 462/788/1 480/789/1 447/790/1 +f 474/791/2 479/792/2 462/788/2 +f 454/793/3 478/794/3 445/771/3 +f 453/795/5 482/796/5 474/797/5 +f 476/798/1 477/799/1 454/793/1 +f 447/790/3 481/800/3 453/795/3 +f 493/801/3 488/802/3 487/803/3 +f 504/804/1 491/805/1 501/806/1 +f 497/807/2 490/808/2 489/809/2 +f 508/810/5 485/811/5 505/812/5 +f 495/813/8 508/810/8 511/814/8 +f 488/802/8 509/815/8 503/816/8 +f 496/817/8 511/814/8 509/815/8 +f 491/818/2 499/819/2 498/820/2 +f 498/820/2 500/821/2 497/807/2 +f 485/822/3 495/813/3 494/823/3 +f 494/823/3 496/817/3 493/801/3 +f 514/824/6 494/823/6 493/801/6 +f 513/825/6 516/826/6 514/824/6 +f 485/827/5 524/828/5 505/829/5 +f 501/830/6 514/824/6 502/831/6 +f 510/832/8 500/821/8 499/819/8 +f 509/815/8 512/833/8 510/832/8 +f 504/804/8 499/819/8 492/834/8 +f 503/816/8 510/832/8 504/804/8 +f 512/833/8 490/808/8 500/821/8 +f 511/814/8 507/835/8 512/833/8 +f 505/829/2 523/836/2 516/837/2 +f 515/838/6 505/839/6 516/826/6 +f 490/808/5 506/840/5 489/841/5 +f 507/835/5 505/812/5 506/840/5 +f 488/802/1 502/842/1 487/843/1 +f 503/816/1 501/806/1 502/842/1 +f 502/844/1 520/845/1 487/846/1 +f 514/847/2 519/848/2 502/844/2 +f 494/849/3 518/850/3 485/827/3 +f 493/851/5 522/852/5 514/853/5 +f 516/854/1 517/855/1 494/849/1 +f 487/846/3 521/856/3 493/851/3 +f 533/857/3 528/858/3 527/859/3 +f 544/860/1 531/861/1 541/862/1 +f 537/863/2 530/864/2 529/865/2 +f 548/866/5 525/867/5 545/868/5 +f 535/869/8 548/866/8 551/870/8 +f 528/858/8 549/871/8 543/872/8 +f 536/873/8 551/870/8 549/871/8 +f 531/874/2 539/875/2 538/876/2 +f 538/876/2 540/877/2 537/863/2 +f 525/878/3 535/869/3 534/879/3 +f 534/879/3 536/873/3 533/857/3 +f 554/880/6 534/879/6 533/857/6 +f 553/881/6 556/882/6 554/880/6 +f 525/883/5 564/884/5 545/885/5 +f 541/886/6 554/880/6 542/887/6 +f 550/888/8 540/877/8 539/875/8 +f 549/871/8 552/889/8 550/888/8 +f 544/860/8 539/875/8 532/890/8 +f 543/872/8 550/888/8 544/860/8 +f 552/889/8 530/864/8 540/877/8 +f 551/870/8 547/891/8 552/889/8 +f 545/885/2 563/892/2 556/893/2 +f 555/894/6 545/895/6 556/882/6 +f 530/864/5 546/896/5 529/897/5 +f 547/891/5 545/868/5 546/896/5 +f 528/858/1 542/898/1 527/899/1 +f 543/872/1 541/862/1 542/898/1 +f 542/900/1 560/901/1 527/902/1 +f 554/903/2 559/904/2 542/900/2 +f 534/905/3 558/906/3 525/883/3 +f 533/907/5 562/908/5 554/909/5 +f 556/910/1 557/911/1 534/905/1 +f 527/902/3 561/912/3 533/907/3 +f 573/913/3 568/914/3 567/915/3 +f 584/916/1 571/917/1 581/918/1 +f 577/919/2 570/920/2 569/921/2 +f 588/922/5 565/923/5 585/924/5 +f 575/925/8 588/922/8 591/926/8 +f 568/914/8 589/927/8 583/928/8 +f 576/929/8 591/926/8 589/927/8 +f 571/930/2 579/931/2 578/932/2 +f 578/932/2 580/933/2 577/919/2 +f 565/934/3 575/925/3 574/935/3 +f 574/935/3 576/929/3 573/913/3 +f 594/936/6 574/935/6 573/913/6 +f 593/937/6 596/938/6 594/936/6 +f 565/939/5 604/940/5 585/941/5 +f 581/942/6 594/936/6 582/943/6 +f 590/944/8 580/933/8 579/931/8 +f 589/927/8 592/945/8 590/944/8 +f 584/916/8 579/931/8 572/946/8 +f 583/928/8 590/944/8 584/916/8 +f 592/945/8 570/920/8 580/933/8 +f 591/926/8 587/947/8 592/945/8 +f 585/941/2 603/948/2 596/949/2 +f 595/950/6 585/951/6 596/938/6 +f 570/920/5 586/952/5 569/953/5 +f 587/947/5 585/924/5 586/952/5 +f 568/914/1 582/954/1 567/955/1 +f 583/928/1 581/918/1 582/954/1 +f 582/956/1 600/957/1 567/958/1 +f 594/959/2 599/960/2 582/956/2 +f 574/961/3 598/962/3 565/939/3 +f 573/963/5 602/964/5 594/965/5 +f 596/966/1 597/967/1 574/961/1 +f 567/958/3 601/968/3 573/963/3 +f 613/969/3 608/970/3 607/971/3 +f 624/972/1 611/973/1 621/974/1 +f 617/975/2 610/976/2 609/977/2 +f 628/978/5 605/979/5 625/980/5 +f 615/981/8 628/978/8 631/982/8 +f 608/970/8 629/983/8 623/984/8 +f 616/985/8 631/982/8 629/983/8 +f 611/986/2 619/987/2 618/988/2 +f 618/988/2 620/989/2 617/975/2 +f 605/990/3 615/981/3 614/991/3 +f 614/991/3 616/985/3 613/969/3 +f 634/992/6 614/991/6 613/969/6 +f 633/993/6 636/994/6 634/992/6 +f 605/995/5 644/996/5 625/997/5 +f 621/998/6 634/992/6 622/999/6 +f 630/1000/8 620/989/8 619/987/8 +f 629/983/8 632/1001/8 630/1000/8 +f 624/972/8 619/987/8 612/1002/8 +f 623/984/8 630/1000/8 624/972/8 +f 632/1001/8 610/976/8 620/989/8 +f 631/982/8 627/1003/8 632/1001/8 +f 625/997/2 643/1004/2 636/1005/2 +f 635/1006/6 625/1007/6 636/994/6 +f 610/976/5 626/1008/5 609/1009/5 +f 627/1003/5 625/980/5 626/1008/5 +f 608/970/1 622/1010/1 607/1011/1 +f 623/984/1 621/974/1 622/1010/1 +f 622/1012/1 640/1013/1 607/1014/1 +f 634/1015/2 639/1016/2 622/1012/2 +f 614/1017/3 638/1018/3 605/995/3 +f 613/1019/5 642/1020/5 634/1021/5 +f 636/1022/1 637/1023/1 614/1017/1 +f 607/1014/3 641/1024/3 613/1019/3 +f 653/1025/3 648/1026/3 647/1027/3 +f 664/1028/1 651/1029/1 661/1030/1 +f 657/1031/2 650/1032/2 649/1033/2 +f 668/1034/5 645/1035/5 665/1036/5 +f 655/1037/8 668/1034/8 671/1038/8 +f 648/1026/8 669/1039/8 663/1040/8 +f 656/1041/8 671/1038/8 669/1039/8 +f 651/1042/2 659/1043/2 658/1044/2 +f 658/1044/2 660/1045/2 657/1031/2 +f 645/1046/3 655/1037/3 654/1047/3 +f 654/1047/3 656/1041/3 653/1025/3 +f 674/1048/6 654/1047/6 653/1025/6 +f 673/1049/6 676/1050/6 674/1048/6 +f 645/1051/5 684/1052/5 665/1053/5 +f 661/1054/6 674/1048/6 662/1055/6 +f 670/1056/8 660/1045/8 659/1043/8 +f 669/1039/8 672/1057/8 670/1056/8 +f 664/1028/8 659/1043/8 652/1058/8 +f 663/1040/8 670/1056/8 664/1028/8 +f 672/1057/8 650/1032/8 660/1045/8 +f 671/1038/8 667/1059/8 672/1057/8 +f 665/1053/2 683/1060/2 676/1061/2 +f 675/1062/6 665/1063/6 676/1050/6 +f 650/1032/5 666/1064/5 649/1065/5 +f 667/1059/5 665/1036/5 666/1064/5 +f 648/1026/1 662/1066/1 647/1067/1 +f 663/1040/1 661/1030/1 662/1066/1 +f 662/1068/1 680/1069/1 647/1070/1 +f 674/1071/2 679/1072/2 662/1068/2 +f 654/1073/3 678/1074/3 645/1051/3 +f 653/1075/5 682/1076/5 674/1077/5 +f 676/1078/1 677/1079/1 654/1073/1 +f 647/1070/3 681/1080/3 653/1075/3 +f 693/1081/3 688/1082/3 687/1083/3 +f 704/1084/1 691/1085/1 701/1086/1 +f 697/1087/2 690/1088/2 689/1089/2 +f 708/1090/5 685/1091/5 705/1092/5 +f 695/1093/8 708/1090/8 711/1094/8 +f 688/1082/8 709/1095/8 703/1096/8 +f 696/1097/8 711/1094/8 709/1095/8 +f 691/1098/2 699/1099/2 698/1100/2 +f 698/1100/2 700/1101/2 697/1087/2 +f 685/1102/3 695/1093/3 694/1103/3 +f 694/1103/3 696/1097/3 693/1081/3 +f 714/1104/6 694/1103/6 693/1081/6 +f 713/1105/6 716/1106/6 714/1104/6 +f 685/1107/5 724/1108/5 705/1109/5 +f 701/1110/6 714/1104/6 702/1111/6 +f 710/1112/8 700/1101/8 699/1099/8 +f 709/1095/8 712/1113/8 710/1112/8 +f 704/1084/8 699/1099/8 692/1114/8 +f 703/1096/8 710/1112/8 704/1084/8 +f 712/1113/8 690/1088/8 700/1101/8 +f 711/1094/8 707/1115/8 712/1113/8 +f 705/1109/2 723/1116/2 716/1117/2 +f 715/1118/6 705/1119/6 716/1106/6 +f 690/1088/5 706/1120/5 689/1121/5 +f 707/1115/5 705/1092/5 706/1120/5 +f 688/1082/1 702/1122/1 687/1123/1 +f 703/1096/1 701/1086/1 702/1122/1 +f 702/1124/1 720/1125/1 687/1126/1 +f 714/1127/2 719/1128/2 702/1124/2 +f 694/1129/3 718/1130/3 685/1107/3 +f 693/1131/5 722/1132/5 714/1133/5 +f 716/1134/1 717/1135/1 694/1129/1 +f 687/1126/3 721/1136/3 693/1131/3 +f 733/1137/3 728/1138/3 727/1139/3 +f 744/1140/1 731/1141/1 741/1142/1 +f 737/1143/2 730/1144/2 729/1145/2 +f 748/1146/5 725/1147/5 745/1148/5 +f 735/1149/8 748/1146/8 751/1150/8 +f 728/1138/8 749/1151/8 743/1152/8 +f 736/1153/8 751/1150/8 749/1151/8 +f 731/1154/2 739/1155/2 738/1156/2 +f 738/1156/2 740/1157/2 737/1143/2 +f 725/1158/3 735/1149/3 734/1159/3 +f 734/1159/3 736/1153/3 733/1137/3 +f 754/1160/6 734/1159/6 733/1137/6 +f 753/1161/6 756/1162/6 754/1160/6 +f 725/1163/5 764/1164/5 745/1165/5 +f 741/1166/6 754/1160/6 742/1167/6 +f 750/1168/8 740/1157/8 739/1155/8 +f 749/1151/8 752/1169/8 750/1168/8 +f 744/1140/8 739/1155/8 732/1170/8 +f 743/1152/8 750/1168/8 744/1140/8 +f 752/1169/8 730/1144/8 740/1157/8 +f 751/1150/8 747/1171/8 752/1169/8 +f 745/1165/2 763/1172/2 756/1173/2 +f 755/1174/6 745/1175/6 756/1162/6 +f 730/1144/5 746/1176/5 729/1177/5 +f 747/1171/5 745/1148/5 746/1176/5 +f 728/1138/1 742/1178/1 727/1179/1 +f 743/1152/1 741/1142/1 742/1178/1 +f 742/1180/1 760/1181/1 727/1182/1 +f 754/1183/2 759/1184/2 742/1180/2 +f 734/1185/3 758/1186/3 725/1163/3 +f 733/1187/5 762/1188/5 754/1189/5 +f 756/1190/1 757/1191/1 734/1185/1 +f 727/1182/3 761/1192/3 733/1187/3 +f 773/1193/3 768/1194/3 767/1195/3 +f 784/1196/1 771/1197/1 781/1198/1 +f 777/1199/2 770/1200/2 769/1201/2 +f 788/1202/5 765/1203/5 785/1204/5 +f 775/1205/8 788/1202/8 791/1206/8 +f 768/1194/8 789/1207/8 783/1208/8 +f 776/1209/8 791/1206/8 789/1207/8 +f 771/1210/2 779/1211/2 778/1212/2 +f 778/1212/2 780/1213/2 777/1199/2 +f 765/1214/3 775/1205/3 774/1215/3 +f 774/1215/3 776/1209/3 773/1193/3 +f 794/1216/6 774/1215/6 773/1193/6 +f 793/1217/6 796/1218/6 794/1216/6 +f 765/1219/5 804/1220/5 785/1221/5 +f 781/1222/6 794/1216/6 782/1223/6 +f 790/1224/8 780/1213/8 779/1211/8 +f 789/1207/8 792/1225/8 790/1224/8 +f 784/1196/8 779/1211/8 772/1226/8 +f 783/1208/8 790/1224/8 784/1196/8 +f 792/1225/8 770/1200/8 780/1213/8 +f 791/1206/8 787/1227/8 792/1225/8 +f 785/1221/2 803/1228/2 796/1229/2 +f 795/1230/6 785/1231/6 796/1218/6 +f 770/1200/5 786/1232/5 769/1233/5 +f 787/1227/5 785/1204/5 786/1232/5 +f 768/1194/1 782/1234/1 767/1235/1 +f 783/1208/1 781/1198/1 782/1234/1 +f 782/1236/1 800/1237/1 767/1238/1 +f 794/1239/2 799/1240/2 782/1236/2 +f 774/1241/3 798/1242/3 765/1219/3 +f 773/1243/5 802/1244/5 794/1245/5 +f 796/1246/1 797/1247/1 774/1241/1 +f 767/1238/3 801/1248/3 773/1243/3 +f 813/1249/2 808/1250/2 816/1251/2 +f 811/1252/1 824/1253/1 821/1254/1 +f 817/1255/3 810/1256/3 820/1257/3 +f 805/1258/5 828/1259/5 825/1260/5 +f 828/1259/8 815/1261/8 831/1262/8 +f 829/1263/8 808/1250/8 823/1264/8 +f 831/1262/8 816/1251/8 829/1263/8 +f 811/1265/3 819/1266/3 812/1267/3 +f 818/1268/3 820/1257/3 819/1266/3 +f 805/1269/2 815/1261/2 806/1270/2 +f 814/1271/2 816/1251/2 815/1261/2 +f 814/1271/6 834/1272/6 813/1249/6 +f 836/1273/6 833/1274/6 834/1272/6 +f 844/1275/5 805/1276/5 825/1277/5 +f 834/1272/6 821/1278/6 822/1279/6 +f 820/1257/8 830/1280/8 819/1266/8 +f 832/1281/8 829/1263/8 830/1280/8 +f 819/1266/8 824/1253/8 812/1267/8 +f 830/1280/8 823/1264/8 824/1253/8 +f 810/1256/8 832/1281/8 820/1257/8 +f 827/1282/8 831/1262/8 832/1281/8 +f 843/1283/3 825/1277/3 836/1284/3 +f 825/1285/6 835/1286/6 836/1273/6 +f 826/1287/5 810/1256/5 809/1288/5 +f 825/1260/5 827/1282/5 826/1287/5 +f 822/1289/1 808/1250/1 807/1290/1 +f 821/1254/1 823/1264/1 822/1289/1 +f 840/1291/1 822/1292/1 807/1293/1 +f 839/1294/3 834/1295/3 822/1292/3 +f 838/1296/2 814/1297/2 805/1276/2 +f 842/1298/5 813/1299/5 834/1300/5 +f 837/1301/1 836/1302/1 814/1297/1 +f 841/1303/2 807/1293/2 813/1299/2 +f 853/1304/2 848/1305/2 856/1306/2 +f 851/1307/1 864/1308/1 861/1309/1 +f 857/1310/3 850/1311/3 860/1312/3 +f 845/1313/5 868/1314/5 865/1315/5 +f 868/1314/8 855/1316/8 871/1317/8 +f 869/1318/8 848/1305/8 863/1319/8 +f 871/1317/8 856/1306/8 869/1318/8 +f 851/1320/3 859/1321/3 852/1322/3 +f 858/1323/3 860/1312/3 859/1321/3 +f 845/1324/2 855/1316/2 846/1325/2 +f 854/1326/2 856/1306/2 855/1316/2 +f 854/1326/6 874/1327/6 853/1304/6 +f 876/1328/6 873/1329/6 874/1327/6 +f 884/1330/5 845/1331/5 865/1332/5 +f 874/1327/6 861/1333/6 862/1334/6 +f 860/1312/8 870/1335/8 859/1321/8 +f 872/1336/8 869/1318/8 870/1335/8 +f 859/1321/8 864/1308/8 852/1322/8 +f 870/1335/8 863/1319/8 864/1308/8 +f 850/1311/8 872/1336/8 860/1312/8 +f 867/1337/8 871/1317/8 872/1336/8 +f 883/1338/3 865/1332/3 876/1339/3 +f 865/1340/6 875/1341/6 876/1328/6 +f 866/1342/5 850/1311/5 849/1343/5 +f 865/1315/5 867/1337/5 866/1342/5 +f 862/1344/1 848/1305/1 847/1345/1 +f 861/1309/1 863/1319/1 862/1344/1 +f 880/1346/1 862/1347/1 847/1348/1 +f 879/1349/3 874/1350/3 862/1347/3 +f 878/1351/2 854/1352/2 845/1331/2 +f 882/1353/5 853/1354/5 874/1355/5 +f 877/1356/1 876/1357/1 854/1352/1 +f 881/1358/2 847/1348/2 853/1354/2 +f 893/1359/2 888/1360/2 896/1361/2 +f 891/1362/1 904/1363/1 901/1364/1 +f 897/1365/3 890/1366/3 900/1367/3 +f 885/1368/5 908/1369/5 905/1370/5 +f 908/1369/8 895/1371/8 911/1372/8 +f 909/1373/8 888/1360/8 903/1374/8 +f 911/1372/8 896/1361/8 909/1373/8 +f 891/1375/3 899/1376/3 892/1377/3 +f 898/1378/3 900/1367/3 899/1376/3 +f 885/1379/2 895/1371/2 886/1380/2 +f 894/1381/2 896/1361/2 895/1371/2 +f 894/1381/6 914/1382/6 893/1359/6 +f 916/1383/6 913/1384/6 914/1382/6 +f 924/1385/5 885/1386/5 905/1387/5 +f 914/1382/6 901/1388/6 902/1389/6 +f 900/1367/8 910/1390/8 899/1376/8 +f 912/1391/8 909/1373/8 910/1390/8 +f 899/1376/8 904/1363/8 892/1377/8 +f 910/1390/8 903/1374/8 904/1363/8 +f 890/1366/8 912/1391/8 900/1367/8 +f 907/1392/8 911/1372/8 912/1391/8 +f 923/1393/3 905/1387/3 916/1394/3 +f 905/1395/6 915/1396/6 916/1383/6 +f 906/1397/5 890/1366/5 889/1398/5 +f 905/1370/5 907/1392/5 906/1397/5 +f 902/1399/1 888/1360/1 887/1400/1 +f 901/1364/1 903/1374/1 902/1399/1 +f 920/1401/1 902/1402/1 887/1403/1 +f 919/1404/3 914/1405/3 902/1402/3 +f 918/1406/2 894/1407/2 885/1386/2 +f 922/1408/5 893/1409/5 914/1410/5 +f 917/1411/1 916/1412/1 894/1407/1 +f 921/1413/2 887/1403/2 893/1409/2 +f 933/1414/2 928/1415/2 936/1416/2 +f 931/1417/1 944/1418/1 941/1419/1 +f 937/1420/3 930/1421/3 940/1422/3 +f 925/1423/5 948/1424/5 945/1425/5 +f 948/1424/8 935/1426/8 951/1427/8 +f 949/1428/8 928/1415/8 943/1429/8 +f 951/1427/8 936/1416/8 949/1428/8 +f 931/1430/3 939/1431/3 932/1432/3 +f 938/1433/3 940/1422/3 939/1431/3 +f 925/1434/2 935/1426/2 926/1435/2 +f 934/1436/2 936/1416/2 935/1426/2 +f 934/1436/6 954/1437/6 933/1414/6 +f 956/1438/6 953/1439/6 954/1437/6 +f 964/1440/5 925/1441/5 945/1442/5 +f 954/1437/6 941/1443/6 942/1444/6 +f 940/1422/8 950/1445/8 939/1431/8 +f 952/1446/8 949/1428/8 950/1445/8 +f 939/1431/8 944/1418/8 932/1432/8 +f 950/1445/8 943/1429/8 944/1418/8 +f 930/1421/8 952/1446/8 940/1422/8 +f 947/1447/8 951/1427/8 952/1446/8 +f 963/1448/3 945/1442/3 956/1449/3 +f 945/1450/6 955/1451/6 956/1438/6 +f 946/1452/5 930/1421/5 929/1453/5 +f 945/1425/5 947/1447/5 946/1452/5 +f 942/1454/1 928/1415/1 927/1455/1 +f 941/1419/1 943/1429/1 942/1454/1 +f 960/1456/1 942/1457/1 927/1458/1 +f 959/1459/3 954/1460/3 942/1457/3 +f 958/1461/2 934/1462/2 925/1441/2 +f 962/1463/5 933/1464/5 954/1465/5 +f 957/1466/1 956/1467/1 934/1462/1 +f 961/1468/2 927/1458/2 933/1464/2 +f 973/1469/2 968/1470/2 976/1471/2 +f 971/1472/1 984/1473/1 981/1474/1 +f 977/1475/3 970/1476/3 980/1477/3 +f 965/1478/5 988/1479/5 985/1480/5 +f 988/1479/8 975/1481/8 991/1482/8 +f 989/1483/8 968/1470/8 983/1484/8 +f 991/1482/8 976/1471/8 989/1483/8 +f 971/1485/3 979/1486/3 972/1487/3 +f 978/1488/3 980/1477/3 979/1486/3 +f 965/1489/2 975/1481/2 966/1490/2 +f 974/1491/2 976/1471/2 975/1481/2 +f 974/1491/6 994/1492/6 973/1469/6 +f 996/1493/6 993/1494/6 994/1492/6 +f 1004/1495/5 965/1496/5 985/1497/5 +f 994/1492/6 981/1498/6 982/1499/6 +f 980/1477/8 990/1500/8 979/1486/8 +f 992/1501/8 989/1483/8 990/1500/8 +f 979/1486/8 984/1473/8 972/1487/8 +f 990/1500/8 983/1484/8 984/1473/8 +f 970/1476/8 992/1501/8 980/1477/8 +f 987/1502/8 991/1482/8 992/1501/8 +f 1003/1503/3 985/1497/3 996/1504/3 +f 985/1505/6 995/1506/6 996/1493/6 +f 986/1507/5 970/1476/5 969/1508/5 +f 985/1480/5 987/1502/5 986/1507/5 +f 982/1509/1 968/1470/1 967/1510/1 +f 981/1474/1 983/1484/1 982/1509/1 +f 1000/1511/1 982/1512/1 967/1513/1 +f 999/1514/3 994/1515/3 982/1512/3 +f 998/1516/2 974/1517/2 965/1496/2 +f 1002/1518/5 973/1519/5 994/1520/5 +f 997/1521/1 996/1522/1 974/1517/1 +f 1001/1523/2 967/1513/2 973/1519/2 +f 1013/1524/2 1008/1525/2 1016/1526/2 +f 1011/1527/1 1024/1528/1 1021/1529/1 +f 1017/1530/3 1010/1531/3 1020/1532/3 +f 1005/1533/5 1028/1534/5 1025/1535/5 +f 1028/1534/8 1015/1536/8 1031/1537/8 +f 1029/1538/8 1008/1525/8 1023/1539/8 +f 1031/1537/8 1016/1526/8 1029/1538/8 +f 1011/1540/3 1019/1541/3 1012/1542/3 +f 1018/1543/3 1020/1532/3 1019/1541/3 +f 1005/1544/2 1015/1536/2 1006/1545/2 +f 1014/1546/2 1016/1526/2 1015/1536/2 +f 1014/1546/6 1034/1547/6 1013/1524/6 +f 1036/1548/6 1033/1549/6 1034/1547/6 +f 1044/1550/5 1005/1551/5 1025/1552/5 +f 1034/1547/6 1021/1553/6 1022/1554/6 +f 1020/1532/8 1030/1555/8 1019/1541/8 +f 1032/1556/8 1029/1538/8 1030/1555/8 +f 1019/1541/8 1024/1528/8 1012/1542/8 +f 1030/1555/8 1023/1539/8 1024/1528/8 +f 1010/1531/8 1032/1556/8 1020/1532/8 +f 1027/1557/8 1031/1537/8 1032/1556/8 +f 1043/1558/3 1025/1552/3 1036/1559/3 +f 1025/1560/6 1035/1561/6 1036/1548/6 +f 1026/1562/5 1010/1531/5 1009/1563/5 +f 1025/1535/5 1027/1557/5 1026/1562/5 +f 1022/1564/1 1008/1525/1 1007/1565/1 +f 1021/1529/1 1023/1539/1 1022/1564/1 +f 1040/1566/1 1022/1567/1 1007/1568/1 +f 1039/1569/3 1034/1570/3 1022/1567/3 +f 1038/1571/2 1014/1572/2 1005/1551/2 +f 1042/1573/5 1013/1574/5 1034/1575/5 +f 1037/1576/1 1036/1577/1 1014/1572/1 +f 1041/1578/2 1007/1568/2 1013/1574/2 +f 1053/1579/2 1048/1580/2 1056/1581/2 +f 1051/1582/1 1064/1583/1 1061/1584/1 +f 1057/1585/3 1050/1586/3 1060/1587/3 +f 1045/1588/5 1068/1589/5 1065/1590/5 +f 1068/1589/8 1055/1591/8 1071/1592/8 +f 1069/1593/8 1048/1580/8 1063/1594/8 +f 1071/1592/8 1056/1581/8 1069/1593/8 +f 1051/1595/3 1059/1596/3 1052/1597/3 +f 1058/1598/3 1060/1587/3 1059/1596/3 +f 1045/1599/2 1055/1591/2 1046/1600/2 +f 1054/1601/2 1056/1581/2 1055/1591/2 +f 1054/1601/6 1074/1602/6 1053/1579/6 +f 1076/1603/6 1073/1604/6 1074/1602/6 +f 1084/1605/5 1045/1606/5 1065/1607/5 +f 1074/1602/6 1061/1608/6 1062/1609/6 +f 1060/1587/8 1070/1610/8 1059/1596/8 +f 1072/1611/8 1069/1593/8 1070/1610/8 +f 1059/1596/8 1064/1583/8 1052/1597/8 +f 1070/1610/8 1063/1594/8 1064/1583/8 +f 1050/1586/8 1072/1611/8 1060/1587/8 +f 1067/1612/8 1071/1592/8 1072/1611/8 +f 1083/1613/3 1065/1607/3 1076/1614/3 +f 1065/1615/6 1075/1616/6 1076/1603/6 +f 1066/1617/5 1050/1586/5 1049/1618/5 +f 1065/1590/5 1067/1612/5 1066/1617/5 +f 1062/1619/1 1048/1580/1 1047/1620/1 +f 1061/1584/1 1063/1594/1 1062/1619/1 +f 1080/1621/1 1062/1622/1 1047/1623/1 +f 1079/1624/3 1074/1625/3 1062/1622/3 +f 1078/1626/2 1054/1627/2 1045/1606/2 +f 1082/1628/5 1053/1629/5 1074/1630/5 +f 1077/1631/1 1076/1632/1 1054/1627/1 +f 1081/1633/2 1047/1623/2 1053/1629/2 +f 1093/1634/2 1088/1635/2 1096/1636/2 +f 1091/1637/1 1104/1638/1 1101/1639/1 +f 1097/1640/3 1090/1641/3 1100/1642/3 +f 1085/1643/5 1108/1644/5 1105/1645/5 +f 1108/1644/8 1095/1646/8 1111/1647/8 +f 1109/1648/8 1088/1635/8 1103/1649/8 +f 1111/1647/8 1096/1636/8 1109/1648/8 +f 1091/1650/3 1099/1651/3 1092/1652/3 +f 1098/1653/3 1100/1642/3 1099/1651/3 +f 1085/1654/2 1095/1646/2 1086/1655/2 +f 1094/1656/2 1096/1636/2 1095/1646/2 +f 1094/1656/6 1114/1657/6 1093/1634/6 +f 1116/1658/6 1113/1659/6 1114/1657/6 +f 1124/1660/5 1085/1661/5 1105/1662/5 +f 1114/1657/6 1101/1663/6 1102/1664/6 +f 1100/1642/8 1110/1665/8 1099/1651/8 +f 1112/1666/8 1109/1648/8 1110/1665/8 +f 1099/1651/8 1104/1638/8 1092/1652/8 +f 1110/1665/8 1103/1649/8 1104/1638/8 +f 1090/1641/8 1112/1666/8 1100/1642/8 +f 1107/1667/8 1111/1647/8 1112/1666/8 +f 1123/1668/3 1105/1662/3 1116/1669/3 +f 1105/1670/6 1115/1671/6 1116/1658/6 +f 1106/1672/5 1090/1641/5 1089/1673/5 +f 1105/1645/5 1107/1667/5 1106/1672/5 +f 1102/1674/1 1088/1635/1 1087/1675/1 +f 1101/1639/1 1103/1649/1 1102/1674/1 +f 1120/1676/1 1102/1677/1 1087/1678/1 +f 1119/1679/3 1114/1680/3 1102/1677/3 +f 1118/1681/2 1094/1682/2 1085/1661/2 +f 1122/1683/5 1093/1684/5 1114/1685/5 +f 1117/1686/1 1116/1687/1 1094/1682/1 +f 1121/1688/2 1087/1678/2 1093/1684/2 +f 1133/1689/2 1128/1690/2 1136/1691/2 +f 1131/1692/1 1144/1693/1 1141/1694/1 +f 1137/1695/3 1130/1696/3 1140/1697/3 +f 1125/1698/5 1148/1699/5 1145/1700/5 +f 1148/1699/8 1135/1701/8 1151/1702/8 +f 1149/1703/8 1128/1690/8 1143/1704/8 +f 1151/1702/8 1136/1691/8 1149/1703/8 +f 1131/1705/3 1139/1706/3 1132/1707/3 +f 1138/1708/3 1140/1697/3 1139/1706/3 +f 1125/1709/2 1135/1701/2 1126/1710/2 +f 1134/1711/2 1136/1691/2 1135/1701/2 +f 1134/1711/6 1154/1712/6 1133/1689/6 +f 1156/1713/6 1153/1714/6 1154/1712/6 +f 1164/1715/5 1125/1716/5 1145/1717/5 +f 1154/1712/6 1141/1718/6 1142/1719/6 +f 1140/1697/8 1150/1720/8 1139/1706/8 +f 1152/1721/8 1149/1703/8 1150/1720/8 +f 1139/1706/8 1144/1693/8 1132/1707/8 +f 1150/1720/8 1143/1704/8 1144/1693/8 +f 1130/1696/8 1152/1721/8 1140/1697/8 +f 1147/1722/8 1151/1702/8 1152/1721/8 +f 1163/1723/3 1145/1717/3 1156/1724/3 +f 1145/1725/6 1155/1726/6 1156/1713/6 +f 1146/1727/5 1130/1696/5 1129/1728/5 +f 1145/1700/5 1147/1722/5 1146/1727/5 +f 1142/1729/1 1128/1690/1 1127/1730/1 +f 1141/1694/1 1143/1704/1 1142/1729/1 +f 1160/1731/1 1142/1732/1 1127/1733/1 +f 1159/1734/3 1154/1735/3 1142/1732/3 +f 1158/1736/2 1134/1737/2 1125/1716/2 +f 1162/1738/5 1133/1739/5 1154/1740/5 +f 1157/1741/1 1156/1742/1 1134/1737/1 +f 1161/1743/2 1127/1733/2 1133/1739/2 +f 1173/1744/2 1168/1745/2 1176/1746/2 +f 1171/1747/1 1184/1748/1 1181/1749/1 +f 1177/1750/3 1170/1751/3 1180/1752/3 +f 1165/1753/5 1188/1754/5 1185/1755/5 +f 1188/1754/8 1175/1756/8 1191/1757/8 +f 1189/1758/8 1168/1745/8 1183/1759/8 +f 1191/1757/8 1176/1746/8 1189/1758/8 +f 1171/1760/3 1179/1761/3 1172/1762/3 +f 1178/1763/3 1180/1752/3 1179/1761/3 +f 1165/1764/2 1175/1756/2 1166/1765/2 +f 1174/1766/2 1176/1746/2 1175/1756/2 +f 1174/1766/6 1194/1767/6 1173/1744/6 +f 1196/1768/6 1193/1769/6 1194/1767/6 +f 1204/1770/5 1165/1771/5 1185/1772/5 +f 1194/1767/6 1181/1773/6 1182/1774/6 +f 1180/1752/8 1190/1775/8 1179/1761/8 +f 1192/1776/8 1189/1758/8 1190/1775/8 +f 1179/1761/8 1184/1748/8 1172/1762/8 +f 1190/1775/8 1183/1759/8 1184/1748/8 +f 1170/1751/8 1192/1776/8 1180/1752/8 +f 1187/1777/8 1191/1757/8 1192/1776/8 +f 1203/1778/3 1185/1772/3 1196/1779/3 +f 1185/1780/6 1195/1781/6 1196/1768/6 +f 1186/1782/5 1170/1751/5 1169/1783/5 +f 1185/1755/5 1187/1777/5 1186/1782/5 +f 1182/1784/1 1168/1745/1 1167/1785/1 +f 1181/1749/1 1183/1759/1 1182/1784/1 +f 1200/1786/1 1182/1787/1 1167/1788/1 +f 1199/1789/3 1194/1790/3 1182/1787/3 +f 1198/1791/2 1174/1792/2 1165/1771/2 +f 1202/1793/5 1173/1794/5 1194/1795/5 +f 1197/1796/1 1196/1797/1 1174/1792/1 +f 1201/1798/2 1167/1788/2 1173/1794/2 +f 1213/1799/2 1208/1800/2 1216/1801/2 +f 1211/1802/1 1224/1803/1 1221/1804/1 +f 1217/1805/3 1210/1806/3 1220/1807/3 +f 1205/1808/5 1228/1809/5 1225/1810/5 +f 1228/1809/8 1215/1811/8 1231/1812/8 +f 1229/1813/8 1208/1800/8 1223/1814/8 +f 1231/1812/8 1216/1801/8 1229/1813/8 +f 1211/1815/3 1219/1816/3 1212/1817/3 +f 1218/1818/3 1220/1807/3 1219/1816/3 +f 1205/1819/2 1215/1811/2 1206/1820/2 +f 1214/1821/2 1216/1801/2 1215/1811/2 +f 1214/1821/6 1234/1822/6 1213/1799/6 +f 1236/1823/6 1233/1824/6 1234/1822/6 +f 1244/1825/5 1205/1826/5 1225/1827/5 +f 1234/1822/6 1221/1828/6 1222/1829/6 +f 1220/1807/8 1230/1830/8 1219/1816/8 +f 1232/1831/8 1229/1813/8 1230/1830/8 +f 1219/1816/8 1224/1803/8 1212/1817/8 +f 1230/1830/8 1223/1814/8 1224/1803/8 +f 1210/1806/8 1232/1831/8 1220/1807/8 +f 1227/1832/8 1231/1812/8 1232/1831/8 +f 1243/1833/3 1225/1827/3 1236/1834/3 +f 1225/1835/6 1235/1836/6 1236/1823/6 +f 1226/1837/5 1210/1806/5 1209/1838/5 +f 1225/1810/5 1227/1832/5 1226/1837/5 +f 1222/1839/1 1208/1800/1 1207/1840/1 +f 1221/1804/1 1223/1814/1 1222/1839/1 +f 1240/1841/1 1222/1842/1 1207/1843/1 +f 1239/1844/3 1234/1845/3 1222/1842/3 +f 1238/1846/2 1214/1847/2 1205/1826/2 +f 1242/1848/5 1213/1849/5 1234/1850/5 +f 1237/1851/1 1236/1852/1 1214/1847/1 +f 1241/1853/2 1207/1843/2 1213/1849/2 +f 1245/1854/3 1248/1855/3 1247/1856/3 +f 1248/1857/1 1251/1858/1 1247/1859/1 +f 1252/1860/2 1249/1861/2 1251/1862/2 +f 1251/1858/1 1253/1863/1 1247/1859/1 +f 1248/1855/9 1250/1864/9 1252/1860/9 +f 1255/1865/11 1254/1866/11 1253/1863/11 +f 1253/1863/1 1257/1867/1 1247/1859/1 +f 1251/1868/2 1256/1869/2 1255/1865/2 +f 1259/1870/1 1261/1871/1 1257/1867/1 +f 1247/1856/9 1258/1872/9 1245/1854/9 +f 1254/1866/11 1259/1870/11 1253/1863/11 +f 1261/1873/3 1264/1874/3 1262/1875/3 +f 1262/1876/3 1267/1877/3 1261/1878/3 +f 1260/1879/11 1263/1880/11 1259/1870/11 +f 1265/1881/9 1268/1882/9 1266/1883/9 +f 1261/1871/1 1265/1884/1 1257/1867/1 +f 1258/1872/2 1265/1881/2 1266/1883/2 +f 1269/1885/3 1272/1886/3 1270/1887/3 +f 1275/1888/5 1272/1889/5 1271/1890/5 +f 1273/1891/2 1276/1892/2 1275/1893/2 +f 1277/1894/5 1275/1888/5 1271/1890/5 +f 1274/1895/10 1272/1886/10 1276/1892/10 +f 1278/1896/12 1279/1897/12 1277/1894/12 +f 1281/1898/5 1277/1894/5 1271/1890/5 +f 1275/1899/2 1280/1900/2 1273/1901/2 +f 1285/1902/5 1283/1903/5 1281/1898/5 +f 1282/1904/10 1271/1905/10 1269/1885/10 +f 1283/1903/12 1278/1896/12 1277/1894/12 +f 1288/1906/3 1285/1907/3 1286/1908/3 +f 1291/1909/3 1286/1910/3 1285/1911/3 +f 1287/1912/12 1284/1913/12 1283/1903/12 +f 1292/1914/10 1289/1915/10 1290/1916/10 +f 1289/1917/5 1285/1902/5 1281/1898/5 +f 1282/1904/2 1289/1915/2 1281/1918/2 +f 1294/1919/4 1295/1920/4 1293/1921/4 +f 1296/1922/1 1299/1923/1 1295/1920/1 +f 1297/1924/5 1294/1919/5 1293/1921/5 +f 1299/1925/13 1293/1921/13 1295/1920/13 +f 1296/1922/14 1298/1926/14 1300/1927/14 +f 1302/1928/4 1303/1929/4 1301/1930/4 +f 1304/1931/1 1307/1932/1 1303/1929/1 +f 1305/1933/5 1302/1928/5 1301/1930/5 +f 1307/1934/13 1301/1930/13 1303/1929/13 +f 1304/1931/14 1306/1935/14 1308/1936/14 +f 1310/1937/4 1311/1938/4 1309/1939/4 +f 1312/1940/1 1315/1941/1 1311/1938/1 +f 1313/1942/5 1310/1937/5 1309/1939/5 +f 1315/1943/13 1309/1939/13 1311/1938/13 +f 1312/1940/14 1314/1944/14 1316/1945/14 +f 1318/1946/4 1319/1947/4 1317/1948/4 +f 1320/1949/1 1323/1950/1 1319/1947/1 +f 1321/1951/5 1318/1946/5 1317/1948/5 +f 1323/1952/13 1317/1948/13 1319/1947/13 +f 1320/1949/14 1322/1953/14 1324/1954/14 +f 1326/1955/4 1327/1956/4 1325/1957/4 +f 1328/1958/1 1331/1959/1 1327/1956/1 +f 1329/1960/5 1326/1955/5 1325/1957/5 +f 1331/1961/13 1325/1957/13 1327/1956/13 +f 1328/1958/14 1330/1962/14 1332/1963/14 +f 1335/1964/7 1334/1965/7 1333/1966/7 +f 1335/1964/1 1340/1967/1 1336/1968/1 +f 1337/1969/5 1334/1965/5 1338/1970/5 +f 1333/1966/15 1339/1971/15 1335/1964/15 +f 1338/1972/16 1336/1968/16 1340/1973/16 +f 1343/1974/7 1342/1975/7 1341/1976/7 +f 1343/1974/1 1348/1977/1 1344/1978/1 +f 1345/1979/5 1342/1975/5 1346/1980/5 +f 1341/1976/15 1347/1981/15 1343/1974/15 +f 1346/1982/16 1344/1978/16 1348/1983/16 +f 1351/1984/7 1350/1985/7 1349/1986/7 +f 1351/1984/1 1356/1987/1 1352/1988/1 +f 1353/1989/5 1350/1985/5 1354/1990/5 +f 1349/1986/15 1355/1991/15 1351/1984/15 +f 1354/1992/16 1352/1988/16 1356/1993/16 +f 1359/1994/7 1358/1995/7 1357/1996/7 +f 1359/1994/1 1364/1997/1 1360/1998/1 +f 1361/1999/5 1358/1995/5 1362/2000/5 +f 1357/1996/15 1363/2001/15 1359/1994/15 +f 1362/2002/16 1360/1998/16 1364/2003/16 +f 1367/2004/7 1366/2005/7 1365/2006/7 +f 1367/2004/1 1372/2007/1 1368/2008/1 +f 1369/2009/5 1366/2005/5 1370/2010/5 +f 1365/2006/15 1371/2011/15 1367/2004/15 +f 1370/2012/16 1368/2008/16 1372/2013/16 +f 1376/2014/1 1379/2015/1 1375/2016/1 +f 1378/2017/5 1373/2018/5 1377/2019/5 +f 1382/2020/5 1386/2021/5 1374/2022/5 +f 1374/2023/5 1378/2017/5 1382/2020/5 +f 1380/2024/1 1376/2025/1 1381/2026/1 +f 1376/2027/1 1384/2028/1 1381/2026/1 +f 1387/2029/1 1383/2030/1 1390/2031/1 +f 1386/2032/5 1385/2033/5 1388/2034/5 +f 1384/2028/1 1383/2035/1 1387/2029/1 +f 1386/2036/5 1392/2037/5 1393/2038/5 +f 1386/2039/5 1388/2034/5 1389/2040/5 +f 1383/2041/1 1391/2042/1 1390/2031/1 +f 1398/2043/1 1401/2044/1 1397/2045/1 +f 1400/2046/5 1395/2047/5 1399/2048/5 +f 1404/2049/5 1408/2050/5 1396/2051/5 +f 1396/2052/5 1400/2046/5 1404/2049/5 +f 1402/2053/1 1398/2054/1 1403/2055/1 +f 1398/2056/1 1406/2057/1 1403/2055/1 +f 1409/2058/1 1405/2059/1 1412/2060/1 +f 1408/2061/5 1407/2062/5 1410/2063/5 +f 1406/2057/1 1405/2064/1 1409/2058/1 +f 1408/2065/5 1414/2066/5 1415/2067/5 +f 1408/2068/5 1410/2063/5 1411/2069/5 +f 1405/2070/1 1413/2071/1 1412/2060/1 +f 1420/2072/1 1423/2073/1 1419/2074/1 +f 1422/2075/5 1417/2076/5 1421/2077/5 +f 1426/2078/5 1430/2079/5 1418/2080/5 +f 1418/2081/5 1422/2075/5 1426/2078/5 +f 1424/2082/1 1420/2083/1 1425/2084/1 +f 1420/2085/1 1428/2086/1 1425/2084/1 +f 1431/2087/1 1427/2088/1 1434/2089/1 +f 1430/2090/5 1429/2091/5 1432/2092/5 +f 1428/2086/1 1427/2093/1 1431/2087/1 +f 1430/2094/5 1436/2095/5 1437/2096/5 +f 1430/2097/5 1432/2092/5 1433/2098/5 +f 1427/2099/1 1435/2100/1 1434/2089/1 +f 1442/2101/1 1445/2102/1 1441/2103/1 +f 1444/2104/5 1439/2105/5 1443/2106/5 +f 1448/2107/5 1452/2108/5 1440/2109/5 +f 1440/2110/5 1444/2104/5 1448/2107/5 +f 1446/2111/1 1442/2112/1 1447/2113/1 +f 1442/2114/1 1450/2115/1 1447/2113/1 +f 1453/2116/1 1449/2117/1 1456/2118/1 +f 1452/2119/5 1451/2120/5 1454/2121/5 +f 1450/2115/1 1449/2122/1 1453/2116/1 +f 1452/2123/5 1458/2124/5 1459/2125/5 +f 1452/2126/5 1454/2121/5 1455/2127/5 +f 1449/2128/1 1457/2129/1 1456/2118/1 +f 1464/2130/1 1467/2131/1 1463/2132/1 +f 1466/2133/5 1461/2134/5 1465/2135/5 +f 1470/2136/5 1474/2137/5 1462/2138/5 +f 1462/2139/5 1466/2133/5 1470/2136/5 +f 1468/2140/1 1464/2141/1 1469/2142/1 +f 1464/2143/1 1472/2144/1 1469/2142/1 +f 1475/2145/1 1471/2146/1 1478/2147/1 +f 1474/2148/5 1473/2149/5 1476/2150/5 +f 1472/2144/1 1471/2151/1 1475/2145/1 +f 1474/2152/5 1480/2153/5 1481/2154/5 +f 1474/2155/5 1476/2150/5 1477/2156/5 +f 1471/2157/1 1479/2158/1 1478/2147/1 +f 224/1/1 1/12/1 2/2/1 +f 153/4/2 178/356/2 179/5/2 +f 163/8/3 188/377/3 186/9/3 +f 221/13/4 10/2159/4 9/14/4 +f 105/16/5 323/596/5 324/17/5 +f 8/19/4 232/21/4 222/15/4 +f 7/20/4 233/23/4 232/21/4 +f 6/22/4 234/25/4 233/23/4 +f 41/24/4 235/27/4 234/25/4 +f 42/26/4 236/29/4 235/27/4 +f 43/28/4 237/31/4 236/29/4 +f 44/30/4 238/417/4 237/31/4 +f 126/32/4 240/2160/4 242/33/4 +f 31/35/1 21/2161/1 20/36/1 +f 45/38/6 63/2162/6 64/39/6 +f 219/41/3 259/526/3 257/42/3 +f 89/44/2 271/51/2 256/45/2 +f 99/47/3 255/490/3 278/48/3 +f 88/50/2 270/413/2 271/51/2 +f 98/49/3 278/48/3 277/52/3 +f 91/54/2 273/491/2 281/55/2 +f 104/57/3 324/17/3 263/58/3 +f 160/60/6 183/369/6 184/61/6 +f 74/63/6 73/66/6 53/64/6 +f 64/39/6 63/2162/6 73/66/6 +f 74/63/6 75/68/6 65/67/6 +f 75/68/6 76/70/6 66/69/6 +f 76/70/6 77/72/6 67/71/6 +f 77/72/6 78/74/6 68/73/6 +f 78/74/6 79/76/6 69/75/6 +f 79/76/6 80/78/6 70/77/6 +f 80/78/6 81/109/6 71/79/6 +f 215/80/6 124/111/6 122/81/6 +f 32/83/7 31/2163/7 224/84/7 +f 21/86/8 31/2164/8 32/87/8 +f 64/39/6 65/67/6 4/89/6 +f 65/67/6 66/69/6 46/90/6 +f 66/69/6 67/71/6 47/91/6 +f 67/71/6 68/73/6 48/92/6 +f 68/73/6 69/75/6 49/93/6 +f 69/75/6 70/77/6 50/94/6 +f 70/77/6 71/79/6 51/95/6 +f 213/82/6 122/81/6 5/96/6 +f 19/98/2 20/2165/2 21/99/2 +f 54/65/6 53/64/6 20/101/6 +f 54/65/6 55/103/6 75/68/6 +f 55/103/6 56/104/6 76/70/6 +f 56/104/6 57/105/6 77/72/6 +f 57/105/6 58/106/6 78/74/6 +f 58/106/6 59/107/6 79/76/6 +f 59/107/6 60/108/6 80/78/6 +f 60/108/6 61/153/6 81/109/6 +f 211/110/6 123/155/6 124/111/6 +f 39/112/7 231/116/7 243/113/7 +f 38/115/7 230/118/7 231/116/7 +f 37/117/7 229/120/7 230/118/7 +f 36/119/7 228/122/7 229/120/7 +f 35/121/7 227/124/7 228/122/7 +f 34/123/7 226/126/7 227/124/7 +f 33/125/7 225/127/7 226/126/7 +f 32/83/7 223/85/7 225/127/7 +f 10/128/3 45/2166/3 3/129/3 +f 32/87/8 33/132/8 23/131/8 +f 33/132/8 34/134/8 24/133/8 +f 34/134/8 35/136/8 25/135/8 +f 35/136/8 36/138/8 26/137/8 +f 36/138/8 37/140/8 27/139/8 +f 37/140/8 38/142/8 28/141/8 +f 38/142/8 39/402/8 29/143/8 +f 208/144/8 125/2167/8 30/145/8 +f 19/102/6 18/147/6 55/103/6 +f 18/147/6 17/148/6 56/104/6 +f 17/148/6 16/149/6 57/105/6 +f 16/149/6 15/150/6 58/106/6 +f 15/150/6 14/151/6 59/107/6 +f 14/151/6 13/152/6 60/108/6 +f 13/152/6 12/399/6 61/153/6 +f 203/154/6 11/2168/6 123/155/6 +f 22/100/2 23/157/2 18/156/2 +f 23/157/2 24/159/2 17/158/2 +f 24/159/2 25/161/2 16/160/2 +f 25/161/2 26/163/2 15/162/2 +f 26/163/2 27/165/2 14/164/2 +f 27/165/2 28/167/2 13/166/2 +f 28/167/2 29/396/2 12/168/2 +f 206/169/2 30/2169/2 11/170/2 +f 216/172/3 44/175/3 51/173/3 +f 44/175/3 43/177/3 50/176/3 +f 43/177/3 42/179/3 49/178/3 +f 42/179/3 41/181/3 48/180/3 +f 41/181/3 6/183/3 47/182/3 +f 6/183/3 7/185/3 46/184/3 +f 7/185/3 8/187/3 4/186/3 +f 8/187/3 9/130/3 3/129/3 +f 123/188/5 11/2170/5 30/189/5 +f 52/191/2 138/280/2 142/192/2 +f 72/194/2 117/232/2 115/195/2 +f 103/197/6 144/284/6 141/198/6 +f 128/200/5 239/204/5 240/201/5 +f 72/206/5 122/210/5 124/207/5 +f 109/209/5 127/213/5 122/210/5 +f 82/208/5 124/207/5 128/211/5 +f 110/212/5 128/211/5 127/213/5 +f 108/214/2 118/238/2 120/215/2 +f 110/217/3 114/234/3 116/218/3 +f 82/220/8 116/230/8 117/221/8 +f 109/223/6 115/227/6 114/224/6 +f 108/226/5 114/224/5 115/227/5 +f 112/229/5 113/237/5 117/221/5 +f 111/231/5 115/195/5 117/232/5 +f 108/214/5 112/216/5 116/218/5 +f 120/215/5 118/238/5 119/235/5 +f 112/229/6 120/215/6 121/236/6 +f 113/233/3 121/236/3 119/235/3 +f 111/228/8 119/235/8 118/238/8 +f 52/239/5 5/245/5 122/210/5 +f 106/241/5 124/207/5 123/188/5 +f 62/242/5 123/188/5 125/190/5 +f 101/244/5 126/247/5 5/245/5 +f 102/246/5 127/213/5 126/247/5 +f 40/243/5 125/190/5 128/211/5 +f 107/240/5 122/210/5 127/213/5 +f 103/248/5 128/211/5 124/207/5 +f 134/249/8 150/290/8 151/250/8 +f 135/252/2 151/250/2 145/253/2 +f 62/255/8 139/276/8 140/256/8 +f 102/258/3 143/286/3 137/259/3 +f 101/261/6 142/282/6 143/262/6 +f 40/264/3 141/278/3 139/265/3 +f 107/267/8 137/274/8 138/268/8 +f 106/270/2 140/288/2 144/271/2 +f 129/273/5 130/296/5 138/268/5 +f 131/275/5 132/298/5 140/256/5 +f 133/277/5 131/295/5 139/265/5 +f 134/279/5 142/192/5 138/280/5 +f 135/251/5 143/262/5 142/282/5 +f 133/283/5 141/198/5 144/284/5 +f 135/252/5 129/254/5 137/259/5 +f 136/287/5 144/271/5 140/288/5 +f 145/253/5 151/250/5 150/290/5 +f 147/292/5 149/297/5 152/293/5 +f 133/277/2 149/297/2 147/292/2 +f 129/273/6 145/253/6 146/291/6 +f 132/289/3 148/294/3 152/293/3 +f 136/285/8 152/293/8 149/297/8 +f 130/281/3 146/291/3 150/290/3 +f 131/275/6 147/292/6 148/294/6 +f 2/299/1 154/303/1 153/300/1 +f 63/302/1 155/305/1 154/303/1 +f 45/304/1 156/306/1 155/305/1 +f 10/301/1 153/300/1 156/306/1 +f 63/302/1 158/309/1 157/307/1 +f 2/299/1 159/311/1 158/309/1 +f 1/310/1 160/312/1 159/311/1 +f 73/308/1 157/307/1 160/312/1 +f 31/35/1 162/314/1 161/313/1 +f 53/37/1 163/315/1 162/314/1 +f 73/308/1 164/316/1 163/315/1 +f 1/310/1 161/313/1 164/316/1 +f 166/317/3 190/381/3 191/318/3 +f 175/320/6 199/385/6 200/321/6 +f 170/323/6 194/382/6 193/324/6 +f 158/326/8 182/362/8 181/327/8 +f 164/329/8 187/379/8 188/330/8 +f 155/332/3 180/358/3 177/333/3 +f 157/335/3 181/364/3 183/336/3 +f 162/338/6 186/372/6 185/339/6 +f 156/341/8 179/361/8 180/342/8 +f 159/344/2 184/367/2 182/345/2 +f 161/347/2 185/375/2 187/348/2 +f 154/350/6 177/354/6 178/351/6 +f 166/353/1 178/351/1 177/354/1 +f 166/317/1 167/319/1 179/5/1 +f 165/357/1 177/333/1 180/358/1 +f 167/360/1 168/390/1 180/342/1 +f 170/323/1 169/325/1 181/327/1 +f 171/363/1 183/336/1 181/364/1 +f 172/366/1 170/388/1 182/345/1 +f 172/368/1 184/61/1 183/369/1 +f 173/371/1 185/339/1 186/372/1 +f 173/374/1 175/387/1 187/348/1 +f 174/376/1 186/9/1 188/377/1 +f 175/320/1 176/322/1 188/330/1 +f 189/380/1 192/389/1 191/318/1 +f 194/382/1 196/391/1 195/383/1 +f 198/384/1 200/321/1 199/385/1 +f 174/373/8 198/384/8 197/386/8 +f 169/365/2 193/324/2 195/383/2 +f 168/359/2 192/389/2 189/380/2 +f 173/374/3 197/386/3 199/385/3 +f 172/366/3 196/391/3 194/382/3 +f 167/360/6 191/318/6 192/389/6 +f 176/378/2 200/321/2 198/384/2 +f 165/355/8 189/380/8 190/381/8 +f 171/370/8 195/383/8 196/391/8 +f 126/392/3 202/395/3 209/393/3 +f 202/395/3 216/172/3 201/174/3 +f 29/396/2 205/398/2 204/397/2 +f 205/398/2 206/169/2 203/171/2 +f 12/399/6 204/401/6 210/400/6 +f 204/401/6 203/154/6 211/110/6 +f 39/402/8 207/404/8 205/403/8 +f 207/404/8 208/144/8 206/146/8 +f 208/405/7 241/408/7 239/406/7 +f 207/114/7 243/113/7 241/408/7 +f 61/153/6 210/400/6 214/409/6 +f 210/400/6 211/110/6 215/80/6 +f 71/79/6 212/411/6 201/410/6 +f 212/411/6 213/82/6 209/97/6 +f 81/109/6 214/409/6 212/411/6 +f 214/409/6 215/80/6 213/82/6 +f 87/412/2 269/506/2 270/413/2 +f 97/53/3 277/52/3 276/414/3 +f 216/416/4 244/418/4 238/417/4 +f 202/34/4 242/33/4 244/418/4 +f 307/419/8 221/453/8 222/420/8 +f 310/422/8 84/426/8 223/423/8 +f 85/425/8 225/428/8 223/423/8 +f 86/427/8 226/430/8 225/428/8 +f 87/429/8 227/432/8 226/430/8 +f 88/431/8 228/434/8 227/432/8 +f 89/433/8 229/436/8 228/434/8 +f 90/435/8 230/438/8 229/436/8 +f 91/437/8 231/462/8 230/438/8 +f 93/421/8 222/420/8 232/439/8 +f 94/440/8 232/439/8 233/441/8 +f 95/442/8 233/441/8 234/443/8 +f 96/444/8 234/443/8 235/445/8 +f 97/446/8 235/445/8 236/447/8 +f 98/448/8 236/447/8 237/449/8 +f 99/450/8 237/449/8 238/451/8 +f 310/422/8 224/424/8 221/453/8 +f 312/454/8 240/460/8 239/455/8 +f 311/456/8 239/455/8 241/457/8 +f 312/454/8 220/466/8 242/459/8 +f 217/461/8 243/463/8 231/462/8 +f 218/458/8 241/457/8 243/463/8 +f 100/452/8 238/451/8 244/464/8 +f 219/465/8 244/464/8 242/459/8 +f 316/2171/3 93/2172/3 283/469/3 +f 93/2172/3 94/467/3 283/469/3 +f 250/470/2 292/480/2 294/471/2 +f 253/473/3 295/558/3 293/474/3 +f 262/476/2 342/618/2 325/477/2 +f 268/479/2 326/486/2 292/480/2 +f 251/475/3 293/474/3 334/481/3 +f 265/483/5 343/615/5 344/484/5 +f 267/478/2 325/477/2 326/486/2 +f 259/526/3 219/41/3 286/489/3 +f 219/41/3 220/487/3 286/489/3 +f 100/43/3 257/42/3 255/490/3 +f 90/46/2 256/45/2 273/491/2 +f 318/2173/2 218/2174/2 285/492/2 +f 218/2174/2 217/56/2 285/492/2 +f 246/511/2 85/497/2 284/495/2 +f 85/497/2 84/493/2 284/495/2 +f 95/496/3 247/500/3 245/468/3 +f 85/497/2 246/511/2 248/498/2 +f 96/415/3 276/414/3 247/500/3 +f 249/482/3 334/481/3 333/501/3 +f 261/503/1 341/613/1 342/504/1 +f 86/499/2 248/498/2 269/506/2 +f 284/495/9 315/583/9 316/507/9 +f 318/508/10 285/492/10 286/489/10 +f 268/510/8 248/498/8 246/511/8 +f 250/513/8 269/506/8 248/498/8 +f 252/514/8 270/413/8 269/506/8 +f 254/515/8 271/51/8 270/413/8 +f 272/516/8 256/45/8 271/51/8 +f 258/517/8 273/491/8 256/45/8 +f 274/518/8 245/468/8 247/500/8 +f 275/519/8 247/500/8 276/414/8 +f 249/520/8 276/414/8 277/52/8 +f 251/521/8 277/52/8 278/48/8 +f 253/522/8 278/48/8 255/490/8 +f 279/523/8 255/490/8 257/42/8 +f 260/525/8 281/55/8 273/491/8 +f 280/524/8 257/42/8 259/526/8 +f 262/528/8 284/495/8 283/469/8 +f 264/530/8 286/489/8 285/492/8 +f 262/528/8 267/512/8 246/511/8 +f 261/529/8 283/469/8 245/468/8 +f 265/531/8 285/492/8 281/55/8 +f 264/530/8 282/527/8 259/526/8 +f 291/532/2 349/625/2 347/533/2 +f 303/535/5 361/630/5 362/536/5 +f 289/534/2 347/533/2 345/538/2 +f 340/540/2 359/549/2 357/541/2 +f 330/543/3 356/551/3 358/544/3 +f 331/545/3 358/544/3 360/546/3 +f 306/548/2 364/632/2 359/549/2 +f 329/550/3 354/628/3 356/551/3 +f 338/542/2 357/541/2 355/552/2 +f 274/554/3 287/575/3 341/555/3 +f 279/557/3 297/565/3 295/558/3 +f 252/472/2 294/471/2 296/559/2 +f 260/561/2 302/572/2 343/562/2 +f 280/564/3 299/574/3 297/565/3 +f 254/560/2 296/559/2 298/566/2 +f 264/568/3 344/621/3 301/569/3 +f 258/571/2 300/573/2 302/572/2 +f 272/567/2 298/566/2 300/573/2 +f 282/570/3 301/569/3 299/574/3 +f 275/502/3 333/501/3 287/575/3 +f 92/576/8 307/419/8 93/421/8 +f 83/578/8 309/2175/8 84/426/8 +f 83/578/8 310/422/8 307/419/8 +f 104/579/8 312/454/8 311/456/8 +f 105/580/8 311/456/8 218/458/8 +f 104/579/8 314/2176/8 220/466/8 +f 319/582/1 316/507/1 315/583/1 +f 266/585/5 318/508/5 317/509/5 +f 320/584/1 315/583/1 84/587/1 +f 319/582/1 308/2177/1 93/589/1 +f 263/586/5 317/509/5 220/590/5 +f 266/585/5 313/2178/5 218/592/5 +f 319/593/8 320/599/8 322/594/8 +f 263/58/8 324/17/8 323/596/8 +f 83/598/2 322/594/2 320/599/2 +f 313/601/2 266/597/2 323/596/2 +f 92/603/1 321/595/1 322/594/1 +f 308/605/3 319/593/3 321/595/3 +f 290/607/8 326/486/8 325/477/8 +f 327/609/8 292/480/8 326/486/8 +f 328/610/8 294/471/8 292/480/8 +f 329/550/8 296/559/8 294/471/8 +f 330/543/8 298/566/8 296/559/8 +f 331/545/8 300/573/8 298/566/8 +f 332/539/8 287/575/8 333/501/8 +f 289/534/8 333/501/8 334/481/8 +f 291/532/8 334/481/8 293/474/8 +f 335/611/8 293/474/8 295/558/8 +f 336/612/8 295/558/8 297/565/8 +f 337/553/8 297/565/8 299/574/8 +f 339/547/8 302/572/8 300/573/8 +f 338/542/8 299/574/8 301/569/8 +f 304/537/8 342/504/8 341/613/8 +f 306/614/8 344/484/8 343/615/8 +f 304/617/8 288/608/8 325/477/8 +f 303/619/8 341/555/8 287/575/8 +f 305/620/8 343/562/8 302/572/8 +f 306/548/8 340/540/8 301/569/8 +f 345/538/8 347/533/8 348/622/8 +f 347/533/8 349/625/8 350/624/8 +f 349/625/8 351/627/8 352/626/8 +f 351/627/8 353/629/8 354/628/8 +f 353/629/8 355/552/8 356/551/8 +f 355/552/8 357/541/8 358/544/8 +f 357/541/8 359/549/8 360/546/8 +f 361/630/8 345/538/8 346/623/8 +f 359/549/8 364/632/8 363/631/8 +f 288/608/3 346/623/3 348/622/3 +f 305/616/1 363/631/1 364/632/1 +f 335/611/2 351/627/2 349/625/2 +f 290/607/3 348/622/3 350/624/3 +f 304/617/3 362/536/3 346/623/3 +f 336/612/2 353/629/2 351/627/2 +f 327/609/3 350/624/3 352/626/3 +f 332/539/2 345/538/2 361/630/2 +f 337/553/2 355/552/2 353/629/2 +f 328/610/3 352/626/3 354/628/3 +f 339/547/3 360/546/3 363/631/3 +f 373/633/3 376/649/3 368/634/3 +f 384/636/1 372/666/1 371/637/1 +f 377/639/2 380/653/2 370/640/2 +f 388/642/5 366/2179/5 365/643/5 +f 375/645/8 366/2179/8 388/642/8 +f 368/634/8 376/649/8 389/647/8 +f 376/649/8 375/645/8 391/646/8 +f 371/650/2 372/666/2 379/651/2 +f 378/652/2 379/651/2 380/653/2 +f 365/654/3 366/2179/3 375/645/3 +f 374/655/3 375/645/3 376/649/3 +f 394/656/6 396/658/6 374/655/6 +f 393/657/6 395/670/6 396/658/6 +f 365/659/5 398/682/5 404/660/5 +f 381/662/6 393/657/6 394/656/6 +f 390/664/8 392/665/8 380/653/8 +f 389/647/8 391/646/8 392/665/8 +f 384/636/8 390/664/8 379/651/8 +f 383/648/8 389/647/8 390/664/8 +f 392/665/8 387/667/8 370/640/8 +f 391/646/8 388/642/8 387/667/8 +f 385/661/2 404/660/2 403/668/2 +f 395/670/6 386/2180/6 385/671/6 +f 370/640/5 387/667/5 386/672/5 +f 387/667/5 388/642/5 385/644/5 +f 368/634/1 383/648/1 382/674/1 +f 383/648/1 384/636/1 381/638/1 +f 382/676/1 399/680/1 400/677/1 +f 394/679/2 402/2181/2 399/680/2 +f 374/681/3 397/687/3 398/682/3 +f 373/683/5 401/688/5 402/684/5 +f 396/686/1 403/2182/1 397/687/1 +f 367/678/3 400/677/3 401/688/3 +f 413/689/3 416/705/3 408/690/3 +f 424/692/1 412/722/1 411/693/1 +f 417/695/2 420/709/2 410/696/2 +f 428/698/5 406/2183/5 405/699/5 +f 415/701/8 406/2183/8 428/698/8 +f 408/690/8 416/705/8 429/703/8 +f 416/705/8 415/701/8 431/702/8 +f 411/706/2 412/722/2 419/707/2 +f 418/708/2 419/707/2 420/709/2 +f 405/710/3 406/2183/3 415/701/3 +f 414/711/3 415/701/3 416/705/3 +f 434/712/6 436/714/6 414/711/6 +f 433/713/6 435/726/6 436/714/6 +f 405/715/5 438/738/5 444/716/5 +f 421/718/6 433/713/6 434/712/6 +f 430/720/8 432/721/8 420/709/8 +f 429/703/8 431/702/8 432/721/8 +f 424/692/8 430/720/8 419/707/8 +f 423/704/8 429/703/8 430/720/8 +f 432/721/8 427/723/8 410/696/8 +f 431/702/8 428/698/8 427/723/8 +f 425/717/2 444/716/2 443/724/2 +f 435/726/6 426/2184/6 425/727/6 +f 410/696/5 427/723/5 426/728/5 +f 427/723/5 428/698/5 425/700/5 +f 408/690/1 423/704/1 422/730/1 +f 423/704/1 424/692/1 421/694/1 +f 422/732/1 439/736/1 440/733/1 +f 434/735/2 442/2185/2 439/736/2 +f 414/737/3 437/743/3 438/738/3 +f 413/739/5 441/744/5 442/740/5 +f 436/742/1 443/2186/1 437/743/1 +f 407/734/3 440/733/3 441/744/3 +f 453/745/3 456/761/3 448/746/3 +f 464/748/1 452/778/1 451/749/1 +f 457/751/2 460/765/2 450/752/2 +f 468/754/5 446/2187/5 445/755/5 +f 455/757/8 446/2187/8 468/754/8 +f 448/746/8 456/761/8 469/759/8 +f 456/761/8 455/757/8 471/758/8 +f 451/762/2 452/778/2 459/763/2 +f 458/764/2 459/763/2 460/765/2 +f 445/766/3 446/2187/3 455/757/3 +f 454/767/3 455/757/3 456/761/3 +f 474/768/6 476/770/6 454/767/6 +f 473/769/6 475/782/6 476/770/6 +f 445/771/5 478/794/5 484/772/5 +f 461/774/6 473/769/6 474/768/6 +f 470/776/8 472/777/8 460/765/8 +f 469/759/8 471/758/8 472/777/8 +f 464/748/8 470/776/8 459/763/8 +f 463/760/8 469/759/8 470/776/8 +f 472/777/8 467/779/8 450/752/8 +f 471/758/8 468/754/8 467/779/8 +f 465/773/2 484/772/2 483/780/2 +f 475/782/6 466/2188/6 465/783/6 +f 450/752/5 467/779/5 466/784/5 +f 467/779/5 468/754/5 465/756/5 +f 448/746/1 463/760/1 462/786/1 +f 463/760/1 464/748/1 461/750/1 +f 462/788/1 479/792/1 480/789/1 +f 474/791/2 482/2189/2 479/792/2 +f 454/793/3 477/799/3 478/794/3 +f 453/795/5 481/800/5 482/796/5 +f 476/798/1 483/2190/1 477/799/1 +f 447/790/3 480/789/3 481/800/3 +f 493/801/3 496/817/3 488/802/3 +f 504/804/1 492/834/1 491/805/1 +f 497/807/2 500/821/2 490/808/2 +f 508/810/5 486/2191/5 485/811/5 +f 495/813/8 486/2191/8 508/810/8 +f 488/802/8 496/817/8 509/815/8 +f 496/817/8 495/813/8 511/814/8 +f 491/818/2 492/834/2 499/819/2 +f 498/820/2 499/819/2 500/821/2 +f 485/822/3 486/2191/3 495/813/3 +f 494/823/3 495/813/3 496/817/3 +f 514/824/6 516/826/6 494/823/6 +f 513/825/6 515/838/6 516/826/6 +f 485/827/5 518/850/5 524/828/5 +f 501/830/6 513/825/6 514/824/6 +f 510/832/8 512/833/8 500/821/8 +f 509/815/8 511/814/8 512/833/8 +f 504/804/8 510/832/8 499/819/8 +f 503/816/8 509/815/8 510/832/8 +f 512/833/8 507/835/8 490/808/8 +f 511/814/8 508/810/8 507/835/8 +f 505/829/2 524/828/2 523/836/2 +f 515/838/6 506/2192/6 505/839/6 +f 490/808/5 507/835/5 506/840/5 +f 507/835/5 508/810/5 505/812/5 +f 488/802/1 503/816/1 502/842/1 +f 503/816/1 504/804/1 501/806/1 +f 502/844/1 519/848/1 520/845/1 +f 514/847/2 522/2193/2 519/848/2 +f 494/849/3 517/855/3 518/850/3 +f 493/851/5 521/856/5 522/852/5 +f 516/854/1 523/2194/1 517/855/1 +f 487/846/3 520/845/3 521/856/3 +f 533/857/3 536/873/3 528/858/3 +f 544/860/1 532/890/1 531/861/1 +f 537/863/2 540/877/2 530/864/2 +f 548/866/5 526/2195/5 525/867/5 +f 535/869/8 526/2195/8 548/866/8 +f 528/858/8 536/873/8 549/871/8 +f 536/873/8 535/869/8 551/870/8 +f 531/874/2 532/890/2 539/875/2 +f 538/876/2 539/875/2 540/877/2 +f 525/878/3 526/2195/3 535/869/3 +f 534/879/3 535/869/3 536/873/3 +f 554/880/6 556/882/6 534/879/6 +f 553/881/6 555/894/6 556/882/6 +f 525/883/5 558/906/5 564/884/5 +f 541/886/6 553/881/6 554/880/6 +f 550/888/8 552/889/8 540/877/8 +f 549/871/8 551/870/8 552/889/8 +f 544/860/8 550/888/8 539/875/8 +f 543/872/8 549/871/8 550/888/8 +f 552/889/8 547/891/8 530/864/8 +f 551/870/8 548/866/8 547/891/8 +f 545/885/2 564/884/2 563/892/2 +f 555/894/6 546/2196/6 545/895/6 +f 530/864/5 547/891/5 546/896/5 +f 547/891/5 548/866/5 545/868/5 +f 528/858/1 543/872/1 542/898/1 +f 543/872/1 544/860/1 541/862/1 +f 542/900/1 559/904/1 560/901/1 +f 554/903/2 562/2197/2 559/904/2 +f 534/905/3 557/911/3 558/906/3 +f 533/907/5 561/912/5 562/908/5 +f 556/910/1 563/2198/1 557/911/1 +f 527/902/3 560/901/3 561/912/3 +f 573/913/3 576/929/3 568/914/3 +f 584/916/1 572/946/1 571/917/1 +f 577/919/2 580/933/2 570/920/2 +f 588/922/5 566/2199/5 565/923/5 +f 575/925/8 566/2199/8 588/922/8 +f 568/914/8 576/929/8 589/927/8 +f 576/929/8 575/925/8 591/926/8 +f 571/930/2 572/946/2 579/931/2 +f 578/932/2 579/931/2 580/933/2 +f 565/934/3 566/2199/3 575/925/3 +f 574/935/3 575/925/3 576/929/3 +f 594/936/6 596/938/6 574/935/6 +f 593/937/6 595/950/6 596/938/6 +f 565/939/5 598/962/5 604/940/5 +f 581/942/6 593/937/6 594/936/6 +f 590/944/8 592/945/8 580/933/8 +f 589/927/8 591/926/8 592/945/8 +f 584/916/8 590/944/8 579/931/8 +f 583/928/8 589/927/8 590/944/8 +f 592/945/8 587/947/8 570/920/8 +f 591/926/8 588/922/8 587/947/8 +f 585/941/2 604/940/2 603/948/2 +f 595/950/6 586/2200/6 585/951/6 +f 570/920/5 587/947/5 586/952/5 +f 587/947/5 588/922/5 585/924/5 +f 568/914/1 583/928/1 582/954/1 +f 583/928/1 584/916/1 581/918/1 +f 582/956/1 599/960/1 600/957/1 +f 594/959/2 602/2201/2 599/960/2 +f 574/961/3 597/967/3 598/962/3 +f 573/963/5 601/968/5 602/964/5 +f 596/966/1 603/2202/1 597/967/1 +f 567/958/3 600/957/3 601/968/3 +f 613/969/3 616/985/3 608/970/3 +f 624/972/1 612/1002/1 611/973/1 +f 617/975/2 620/989/2 610/976/2 +f 628/978/5 606/2203/5 605/979/5 +f 615/981/8 606/2203/8 628/978/8 +f 608/970/8 616/985/8 629/983/8 +f 616/985/8 615/981/8 631/982/8 +f 611/986/2 612/1002/2 619/987/2 +f 618/988/2 619/987/2 620/989/2 +f 605/990/3 606/2203/3 615/981/3 +f 614/991/3 615/981/3 616/985/3 +f 634/992/6 636/994/6 614/991/6 +f 633/993/6 635/1006/6 636/994/6 +f 605/995/5 638/1018/5 644/996/5 +f 621/998/6 633/993/6 634/992/6 +f 630/1000/8 632/1001/8 620/989/8 +f 629/983/8 631/982/8 632/1001/8 +f 624/972/8 630/1000/8 619/987/8 +f 623/984/8 629/983/8 630/1000/8 +f 632/1001/8 627/1003/8 610/976/8 +f 631/982/8 628/978/8 627/1003/8 +f 625/997/2 644/996/2 643/1004/2 +f 635/1006/6 626/2204/6 625/1007/6 +f 610/976/5 627/1003/5 626/1008/5 +f 627/1003/5 628/978/5 625/980/5 +f 608/970/1 623/984/1 622/1010/1 +f 623/984/1 624/972/1 621/974/1 +f 622/1012/1 639/1016/1 640/1013/1 +f 634/1015/2 642/2205/2 639/1016/2 +f 614/1017/3 637/1023/3 638/1018/3 +f 613/1019/5 641/1024/5 642/1020/5 +f 636/1022/1 643/2206/1 637/1023/1 +f 607/1014/3 640/1013/3 641/1024/3 +f 653/1025/3 656/1041/3 648/1026/3 +f 664/1028/1 652/1058/1 651/1029/1 +f 657/1031/2 660/1045/2 650/1032/2 +f 668/1034/5 646/2207/5 645/1035/5 +f 655/1037/8 646/2207/8 668/1034/8 +f 648/1026/8 656/1041/8 669/1039/8 +f 656/1041/8 655/1037/8 671/1038/8 +f 651/1042/2 652/1058/2 659/1043/2 +f 658/1044/2 659/1043/2 660/1045/2 +f 645/1046/3 646/2207/3 655/1037/3 +f 654/1047/3 655/1037/3 656/1041/3 +f 674/1048/6 676/1050/6 654/1047/6 +f 673/1049/6 675/1062/6 676/1050/6 +f 645/1051/5 678/1074/5 684/1052/5 +f 661/1054/6 673/1049/6 674/1048/6 +f 670/1056/8 672/1057/8 660/1045/8 +f 669/1039/8 671/1038/8 672/1057/8 +f 664/1028/8 670/1056/8 659/1043/8 +f 663/1040/8 669/1039/8 670/1056/8 +f 672/1057/8 667/1059/8 650/1032/8 +f 671/1038/8 668/1034/8 667/1059/8 +f 665/1053/2 684/1052/2 683/1060/2 +f 675/1062/6 666/2208/6 665/1063/6 +f 650/1032/5 667/1059/5 666/1064/5 +f 667/1059/5 668/1034/5 665/1036/5 +f 648/1026/1 663/1040/1 662/1066/1 +f 663/1040/1 664/1028/1 661/1030/1 +f 662/1068/1 679/1072/1 680/1069/1 +f 674/1071/2 682/2209/2 679/1072/2 +f 654/1073/3 677/1079/3 678/1074/3 +f 653/1075/5 681/1080/5 682/1076/5 +f 676/1078/1 683/2210/1 677/1079/1 +f 647/1070/3 680/1069/3 681/1080/3 +f 693/1081/3 696/1097/3 688/1082/3 +f 704/1084/1 692/1114/1 691/1085/1 +f 697/1087/2 700/1101/2 690/1088/2 +f 708/1090/5 686/2211/5 685/1091/5 +f 695/1093/8 686/2211/8 708/1090/8 +f 688/1082/8 696/1097/8 709/1095/8 +f 696/1097/8 695/1093/8 711/1094/8 +f 691/1098/2 692/1114/2 699/1099/2 +f 698/1100/2 699/1099/2 700/1101/2 +f 685/1102/3 686/2211/3 695/1093/3 +f 694/1103/3 695/1093/3 696/1097/3 +f 714/1104/6 716/1106/6 694/1103/6 +f 713/1105/6 715/1118/6 716/1106/6 +f 685/1107/5 718/1130/5 724/1108/5 +f 701/1110/6 713/1105/6 714/1104/6 +f 710/1112/8 712/1113/8 700/1101/8 +f 709/1095/8 711/1094/8 712/1113/8 +f 704/1084/8 710/1112/8 699/1099/8 +f 703/1096/8 709/1095/8 710/1112/8 +f 712/1113/8 707/1115/8 690/1088/8 +f 711/1094/8 708/1090/8 707/1115/8 +f 705/1109/2 724/1108/2 723/1116/2 +f 715/1118/6 706/2212/6 705/1119/6 +f 690/1088/5 707/1115/5 706/1120/5 +f 707/1115/5 708/1090/5 705/1092/5 +f 688/1082/1 703/1096/1 702/1122/1 +f 703/1096/1 704/1084/1 701/1086/1 +f 702/1124/1 719/1128/1 720/1125/1 +f 714/1127/2 722/2213/2 719/1128/2 +f 694/1129/3 717/1135/3 718/1130/3 +f 693/1131/5 721/1136/5 722/1132/5 +f 716/1134/1 723/2214/1 717/1135/1 +f 687/1126/3 720/1125/3 721/1136/3 +f 733/1137/3 736/1153/3 728/1138/3 +f 744/1140/1 732/1170/1 731/1141/1 +f 737/1143/2 740/1157/2 730/1144/2 +f 748/1146/5 726/2215/5 725/1147/5 +f 735/1149/8 726/2215/8 748/1146/8 +f 728/1138/8 736/1153/8 749/1151/8 +f 736/1153/8 735/1149/8 751/1150/8 +f 731/1154/2 732/1170/2 739/1155/2 +f 738/1156/2 739/1155/2 740/1157/2 +f 725/1158/3 726/2215/3 735/1149/3 +f 734/1159/3 735/1149/3 736/1153/3 +f 754/1160/6 756/1162/6 734/1159/6 +f 753/1161/6 755/1174/6 756/1162/6 +f 725/1163/5 758/1186/5 764/1164/5 +f 741/1166/6 753/1161/6 754/1160/6 +f 750/1168/8 752/1169/8 740/1157/8 +f 749/1151/8 751/1150/8 752/1169/8 +f 744/1140/8 750/1168/8 739/1155/8 +f 743/1152/8 749/1151/8 750/1168/8 +f 752/1169/8 747/1171/8 730/1144/8 +f 751/1150/8 748/1146/8 747/1171/8 +f 745/1165/2 764/1164/2 763/1172/2 +f 755/1174/6 746/2216/6 745/1175/6 +f 730/1144/5 747/1171/5 746/1176/5 +f 747/1171/5 748/1146/5 745/1148/5 +f 728/1138/1 743/1152/1 742/1178/1 +f 743/1152/1 744/1140/1 741/1142/1 +f 742/1180/1 759/1184/1 760/1181/1 +f 754/1183/2 762/2217/2 759/1184/2 +f 734/1185/3 757/1191/3 758/1186/3 +f 733/1187/5 761/1192/5 762/1188/5 +f 756/1190/1 763/2218/1 757/1191/1 +f 727/1182/3 760/1181/3 761/1192/3 +f 773/1193/3 776/1209/3 768/1194/3 +f 784/1196/1 772/1226/1 771/1197/1 +f 777/1199/2 780/1213/2 770/1200/2 +f 788/1202/5 766/2219/5 765/1203/5 +f 775/1205/8 766/2219/8 788/1202/8 +f 768/1194/8 776/1209/8 789/1207/8 +f 776/1209/8 775/1205/8 791/1206/8 +f 771/1210/2 772/1226/2 779/1211/2 +f 778/1212/2 779/1211/2 780/1213/2 +f 765/1214/3 766/2219/3 775/1205/3 +f 774/1215/3 775/1205/3 776/1209/3 +f 794/1216/6 796/1218/6 774/1215/6 +f 793/1217/6 795/1230/6 796/1218/6 +f 765/1219/5 798/1242/5 804/1220/5 +f 781/1222/6 793/1217/6 794/1216/6 +f 790/1224/8 792/1225/8 780/1213/8 +f 789/1207/8 791/1206/8 792/1225/8 +f 784/1196/8 790/1224/8 779/1211/8 +f 783/1208/8 789/1207/8 790/1224/8 +f 792/1225/8 787/1227/8 770/1200/8 +f 791/1206/8 788/1202/8 787/1227/8 +f 785/1221/2 804/1220/2 803/1228/2 +f 795/1230/6 786/2220/6 785/1231/6 +f 770/1200/5 787/1227/5 786/1232/5 +f 787/1227/5 788/1202/5 785/1204/5 +f 768/1194/1 783/1208/1 782/1234/1 +f 783/1208/1 784/1196/1 781/1198/1 +f 782/1236/1 799/1240/1 800/1237/1 +f 794/1239/2 802/2221/2 799/1240/2 +f 774/1241/3 797/1247/3 798/1242/3 +f 773/1243/5 801/1248/5 802/1244/5 +f 796/1246/1 803/2222/1 797/1247/1 +f 767/1238/3 800/1237/3 801/1248/3 +f 813/1249/2 807/2223/2 808/1250/2 +f 811/1252/1 812/1267/1 824/1253/1 +f 817/1255/3 809/2224/3 810/1256/3 +f 805/1258/5 806/1270/5 828/1259/5 +f 828/1259/8 806/1270/8 815/1261/8 +f 829/1263/8 816/1251/8 808/1250/8 +f 831/1262/8 815/1261/8 816/1251/8 +f 811/1265/3 818/1268/3 819/1266/3 +f 818/1268/3 817/1255/3 820/1257/3 +f 805/1269/2 814/1271/2 815/1261/2 +f 814/1271/2 813/1249/2 816/1251/2 +f 814/1271/6 836/1273/6 834/1272/6 +f 836/1273/6 835/1286/6 833/1274/6 +f 844/1275/5 838/1296/5 805/1276/5 +f 834/1272/6 833/1274/6 821/1278/6 +f 820/1257/8 832/1281/8 830/1280/8 +f 832/1281/8 831/1262/8 829/1263/8 +f 819/1266/8 830/1280/8 824/1253/8 +f 830/1280/8 829/1263/8 823/1264/8 +f 810/1256/8 827/1282/8 832/1281/8 +f 827/1282/8 828/1259/8 831/1262/8 +f 843/1283/3 844/1275/3 825/1277/3 +f 825/1285/6 826/2225/6 835/1286/6 +f 826/1287/5 827/1282/5 810/1256/5 +f 825/1260/5 828/1259/5 827/1282/5 +f 822/1289/1 823/1264/1 808/1250/1 +f 821/1254/1 824/1253/1 823/1264/1 +f 840/1291/1 839/1294/1 822/1292/1 +f 839/1294/3 842/2226/3 834/1295/3 +f 838/1296/2 837/1301/2 814/1297/2 +f 842/1298/5 841/1303/5 813/1299/5 +f 837/1301/1 843/2227/1 836/1302/1 +f 841/1303/2 840/1291/2 807/1293/2 +f 853/1304/2 847/2228/2 848/1305/2 +f 851/1307/1 852/1322/1 864/1308/1 +f 857/1310/3 849/2229/3 850/1311/3 +f 845/1313/5 846/1325/5 868/1314/5 +f 868/1314/8 846/1325/8 855/1316/8 +f 869/1318/8 856/1306/8 848/1305/8 +f 871/1317/8 855/1316/8 856/1306/8 +f 851/1320/3 858/1323/3 859/1321/3 +f 858/1323/3 857/1310/3 860/1312/3 +f 845/1324/2 854/1326/2 855/1316/2 +f 854/1326/2 853/1304/2 856/1306/2 +f 854/1326/6 876/1328/6 874/1327/6 +f 876/1328/6 875/1341/6 873/1329/6 +f 884/1330/5 878/1351/5 845/1331/5 +f 874/1327/6 873/1329/6 861/1333/6 +f 860/1312/8 872/1336/8 870/1335/8 +f 872/1336/8 871/1317/8 869/1318/8 +f 859/1321/8 870/1335/8 864/1308/8 +f 870/1335/8 869/1318/8 863/1319/8 +f 850/1311/8 867/1337/8 872/1336/8 +f 867/1337/8 868/1314/8 871/1317/8 +f 883/1338/3 884/1330/3 865/1332/3 +f 865/1340/6 866/2230/6 875/1341/6 +f 866/1342/5 867/1337/5 850/1311/5 +f 865/1315/5 868/1314/5 867/1337/5 +f 862/1344/1 863/1319/1 848/1305/1 +f 861/1309/1 864/1308/1 863/1319/1 +f 880/1346/1 879/1349/1 862/1347/1 +f 879/1349/3 882/2231/3 874/1350/3 +f 878/1351/2 877/1356/2 854/1352/2 +f 882/1353/5 881/1358/5 853/1354/5 +f 877/1356/1 883/2232/1 876/1357/1 +f 881/1358/2 880/1346/2 847/1348/2 +f 893/1359/2 887/2233/2 888/1360/2 +f 891/1362/1 892/1377/1 904/1363/1 +f 897/1365/3 889/2234/3 890/1366/3 +f 885/1368/5 886/1380/5 908/1369/5 +f 908/1369/8 886/1380/8 895/1371/8 +f 909/1373/8 896/1361/8 888/1360/8 +f 911/1372/8 895/1371/8 896/1361/8 +f 891/1375/3 898/1378/3 899/1376/3 +f 898/1378/3 897/1365/3 900/1367/3 +f 885/1379/2 894/1381/2 895/1371/2 +f 894/1381/2 893/1359/2 896/1361/2 +f 894/1381/6 916/1383/6 914/1382/6 +f 916/1383/6 915/1396/6 913/1384/6 +f 924/1385/5 918/1406/5 885/1386/5 +f 914/1382/6 913/1384/6 901/1388/6 +f 900/1367/8 912/1391/8 910/1390/8 +f 912/1391/8 911/1372/8 909/1373/8 +f 899/1376/8 910/1390/8 904/1363/8 +f 910/1390/8 909/1373/8 903/1374/8 +f 890/1366/8 907/1392/8 912/1391/8 +f 907/1392/8 908/1369/8 911/1372/8 +f 923/1393/3 924/1385/3 905/1387/3 +f 905/1395/6 906/2235/6 915/1396/6 +f 906/1397/5 907/1392/5 890/1366/5 +f 905/1370/5 908/1369/5 907/1392/5 +f 902/1399/1 903/1374/1 888/1360/1 +f 901/1364/1 904/1363/1 903/1374/1 +f 920/1401/1 919/1404/1 902/1402/1 +f 919/1404/3 922/2236/3 914/1405/3 +f 918/1406/2 917/1411/2 894/1407/2 +f 922/1408/5 921/1413/5 893/1409/5 +f 917/1411/1 923/2237/1 916/1412/1 +f 921/1413/2 920/1401/2 887/1403/2 +f 933/1414/2 927/2238/2 928/1415/2 +f 931/1417/1 932/1432/1 944/1418/1 +f 937/1420/3 929/2239/3 930/1421/3 +f 925/1423/5 926/1435/5 948/1424/5 +f 948/1424/8 926/1435/8 935/1426/8 +f 949/1428/8 936/1416/8 928/1415/8 +f 951/1427/8 935/1426/8 936/1416/8 +f 931/1430/3 938/1433/3 939/1431/3 +f 938/1433/3 937/1420/3 940/1422/3 +f 925/1434/2 934/1436/2 935/1426/2 +f 934/1436/2 933/1414/2 936/1416/2 +f 934/1436/6 956/1438/6 954/1437/6 +f 956/1438/6 955/1451/6 953/1439/6 +f 964/1440/5 958/1461/5 925/1441/5 +f 954/1437/6 953/1439/6 941/1443/6 +f 940/1422/8 952/1446/8 950/1445/8 +f 952/1446/8 951/1427/8 949/1428/8 +f 939/1431/8 950/1445/8 944/1418/8 +f 950/1445/8 949/1428/8 943/1429/8 +f 930/1421/8 947/1447/8 952/1446/8 +f 947/1447/8 948/1424/8 951/1427/8 +f 963/1448/3 964/1440/3 945/1442/3 +f 945/1450/6 946/2240/6 955/1451/6 +f 946/1452/5 947/1447/5 930/1421/5 +f 945/1425/5 948/1424/5 947/1447/5 +f 942/1454/1 943/1429/1 928/1415/1 +f 941/1419/1 944/1418/1 943/1429/1 +f 960/1456/1 959/1459/1 942/1457/1 +f 959/1459/3 962/2241/3 954/1460/3 +f 958/1461/2 957/1466/2 934/1462/2 +f 962/1463/5 961/1468/5 933/1464/5 +f 957/1466/1 963/2242/1 956/1467/1 +f 961/1468/2 960/1456/2 927/1458/2 +f 973/1469/2 967/2243/2 968/1470/2 +f 971/1472/1 972/1487/1 984/1473/1 +f 977/1475/3 969/2244/3 970/1476/3 +f 965/1478/5 966/1490/5 988/1479/5 +f 988/1479/8 966/1490/8 975/1481/8 +f 989/1483/8 976/1471/8 968/1470/8 +f 991/1482/8 975/1481/8 976/1471/8 +f 971/1485/3 978/1488/3 979/1486/3 +f 978/1488/3 977/1475/3 980/1477/3 +f 965/1489/2 974/1491/2 975/1481/2 +f 974/1491/2 973/1469/2 976/1471/2 +f 974/1491/6 996/1493/6 994/1492/6 +f 996/1493/6 995/1506/6 993/1494/6 +f 1004/1495/5 998/1516/5 965/1496/5 +f 994/1492/6 993/1494/6 981/1498/6 +f 980/1477/8 992/1501/8 990/1500/8 +f 992/1501/8 991/1482/8 989/1483/8 +f 979/1486/8 990/1500/8 984/1473/8 +f 990/1500/8 989/1483/8 983/1484/8 +f 970/1476/8 987/1502/8 992/1501/8 +f 987/1502/8 988/1479/8 991/1482/8 +f 1003/1503/3 1004/1495/3 985/1497/3 +f 985/1505/6 986/2245/6 995/1506/6 +f 986/1507/5 987/1502/5 970/1476/5 +f 985/1480/5 988/1479/5 987/1502/5 +f 982/1509/1 983/1484/1 968/1470/1 +f 981/1474/1 984/1473/1 983/1484/1 +f 1000/1511/1 999/1514/1 982/1512/1 +f 999/1514/3 1002/2246/3 994/1515/3 +f 998/1516/2 997/1521/2 974/1517/2 +f 1002/1518/5 1001/1523/5 973/1519/5 +f 997/1521/1 1003/2247/1 996/1522/1 +f 1001/1523/2 1000/1511/2 967/1513/2 +f 1013/1524/2 1007/2248/2 1008/1525/2 +f 1011/1527/1 1012/1542/1 1024/1528/1 +f 1017/1530/3 1009/2249/3 1010/1531/3 +f 1005/1533/5 1006/1545/5 1028/1534/5 +f 1028/1534/8 1006/1545/8 1015/1536/8 +f 1029/1538/8 1016/1526/8 1008/1525/8 +f 1031/1537/8 1015/1536/8 1016/1526/8 +f 1011/1540/3 1018/1543/3 1019/1541/3 +f 1018/1543/3 1017/1530/3 1020/1532/3 +f 1005/1544/2 1014/1546/2 1015/1536/2 +f 1014/1546/2 1013/1524/2 1016/1526/2 +f 1014/1546/6 1036/1548/6 1034/1547/6 +f 1036/1548/6 1035/1561/6 1033/1549/6 +f 1044/1550/5 1038/1571/5 1005/1551/5 +f 1034/1547/6 1033/1549/6 1021/1553/6 +f 1020/1532/8 1032/1556/8 1030/1555/8 +f 1032/1556/8 1031/1537/8 1029/1538/8 +f 1019/1541/8 1030/1555/8 1024/1528/8 +f 1030/1555/8 1029/1538/8 1023/1539/8 +f 1010/1531/8 1027/1557/8 1032/1556/8 +f 1027/1557/8 1028/1534/8 1031/1537/8 +f 1043/1558/3 1044/1550/3 1025/1552/3 +f 1025/1560/6 1026/2250/6 1035/1561/6 +f 1026/1562/5 1027/1557/5 1010/1531/5 +f 1025/1535/5 1028/1534/5 1027/1557/5 +f 1022/1564/1 1023/1539/1 1008/1525/1 +f 1021/1529/1 1024/1528/1 1023/1539/1 +f 1040/1566/1 1039/1569/1 1022/1567/1 +f 1039/1569/3 1042/2251/3 1034/1570/3 +f 1038/1571/2 1037/1576/2 1014/1572/2 +f 1042/1573/5 1041/1578/5 1013/1574/5 +f 1037/1576/1 1043/2252/1 1036/1577/1 +f 1041/1578/2 1040/1566/2 1007/1568/2 +f 1053/1579/2 1047/2253/2 1048/1580/2 +f 1051/1582/1 1052/1597/1 1064/1583/1 +f 1057/1585/3 1049/2254/3 1050/1586/3 +f 1045/1588/5 1046/1600/5 1068/1589/5 +f 1068/1589/8 1046/1600/8 1055/1591/8 +f 1069/1593/8 1056/1581/8 1048/1580/8 +f 1071/1592/8 1055/1591/8 1056/1581/8 +f 1051/1595/3 1058/1598/3 1059/1596/3 +f 1058/1598/3 1057/1585/3 1060/1587/3 +f 1045/1599/2 1054/1601/2 1055/1591/2 +f 1054/1601/2 1053/1579/2 1056/1581/2 +f 1054/1601/6 1076/1603/6 1074/1602/6 +f 1076/1603/6 1075/1616/6 1073/1604/6 +f 1084/1605/5 1078/1626/5 1045/1606/5 +f 1074/1602/6 1073/1604/6 1061/1608/6 +f 1060/1587/8 1072/1611/8 1070/1610/8 +f 1072/1611/8 1071/1592/8 1069/1593/8 +f 1059/1596/8 1070/1610/8 1064/1583/8 +f 1070/1610/8 1069/1593/8 1063/1594/8 +f 1050/1586/8 1067/1612/8 1072/1611/8 +f 1067/1612/8 1068/1589/8 1071/1592/8 +f 1083/1613/3 1084/1605/3 1065/1607/3 +f 1065/1615/6 1066/2255/6 1075/1616/6 +f 1066/1617/5 1067/1612/5 1050/1586/5 +f 1065/1590/5 1068/1589/5 1067/1612/5 +f 1062/1619/1 1063/1594/1 1048/1580/1 +f 1061/1584/1 1064/1583/1 1063/1594/1 +f 1080/1621/1 1079/1624/1 1062/1622/1 +f 1079/1624/3 1082/2256/3 1074/1625/3 +f 1078/1626/2 1077/1631/2 1054/1627/2 +f 1082/1628/5 1081/1633/5 1053/1629/5 +f 1077/1631/1 1083/2257/1 1076/1632/1 +f 1081/1633/2 1080/1621/2 1047/1623/2 +f 1093/1634/2 1087/2258/2 1088/1635/2 +f 1091/1637/1 1092/1652/1 1104/1638/1 +f 1097/1640/3 1089/2259/3 1090/1641/3 +f 1085/1643/5 1086/1655/5 1108/1644/5 +f 1108/1644/8 1086/1655/8 1095/1646/8 +f 1109/1648/8 1096/1636/8 1088/1635/8 +f 1111/1647/8 1095/1646/8 1096/1636/8 +f 1091/1650/3 1098/1653/3 1099/1651/3 +f 1098/1653/3 1097/1640/3 1100/1642/3 +f 1085/1654/2 1094/1656/2 1095/1646/2 +f 1094/1656/2 1093/1634/2 1096/1636/2 +f 1094/1656/6 1116/1658/6 1114/1657/6 +f 1116/1658/6 1115/1671/6 1113/1659/6 +f 1124/1660/5 1118/1681/5 1085/1661/5 +f 1114/1657/6 1113/1659/6 1101/1663/6 +f 1100/1642/8 1112/1666/8 1110/1665/8 +f 1112/1666/8 1111/1647/8 1109/1648/8 +f 1099/1651/8 1110/1665/8 1104/1638/8 +f 1110/1665/8 1109/1648/8 1103/1649/8 +f 1090/1641/8 1107/1667/8 1112/1666/8 +f 1107/1667/8 1108/1644/8 1111/1647/8 +f 1123/1668/3 1124/1660/3 1105/1662/3 +f 1105/1670/6 1106/2260/6 1115/1671/6 +f 1106/1672/5 1107/1667/5 1090/1641/5 +f 1105/1645/5 1108/1644/5 1107/1667/5 +f 1102/1674/1 1103/1649/1 1088/1635/1 +f 1101/1639/1 1104/1638/1 1103/1649/1 +f 1120/1676/1 1119/1679/1 1102/1677/1 +f 1119/1679/3 1122/2261/3 1114/1680/3 +f 1118/1681/2 1117/1686/2 1094/1682/2 +f 1122/1683/5 1121/1688/5 1093/1684/5 +f 1117/1686/1 1123/2262/1 1116/1687/1 +f 1121/1688/2 1120/1676/2 1087/1678/2 +f 1133/1689/2 1127/2263/2 1128/1690/2 +f 1131/1692/1 1132/1707/1 1144/1693/1 +f 1137/1695/3 1129/2264/3 1130/1696/3 +f 1125/1698/5 1126/1710/5 1148/1699/5 +f 1148/1699/8 1126/1710/8 1135/1701/8 +f 1149/1703/8 1136/1691/8 1128/1690/8 +f 1151/1702/8 1135/1701/8 1136/1691/8 +f 1131/1705/3 1138/1708/3 1139/1706/3 +f 1138/1708/3 1137/1695/3 1140/1697/3 +f 1125/1709/2 1134/1711/2 1135/1701/2 +f 1134/1711/2 1133/1689/2 1136/1691/2 +f 1134/1711/6 1156/1713/6 1154/1712/6 +f 1156/1713/6 1155/1726/6 1153/1714/6 +f 1164/1715/5 1158/1736/5 1125/1716/5 +f 1154/1712/6 1153/1714/6 1141/1718/6 +f 1140/1697/8 1152/1721/8 1150/1720/8 +f 1152/1721/8 1151/1702/8 1149/1703/8 +f 1139/1706/8 1150/1720/8 1144/1693/8 +f 1150/1720/8 1149/1703/8 1143/1704/8 +f 1130/1696/8 1147/1722/8 1152/1721/8 +f 1147/1722/8 1148/1699/8 1151/1702/8 +f 1163/1723/3 1164/1715/3 1145/1717/3 +f 1145/1725/6 1146/2265/6 1155/1726/6 +f 1146/1727/5 1147/1722/5 1130/1696/5 +f 1145/1700/5 1148/1699/5 1147/1722/5 +f 1142/1729/1 1143/1704/1 1128/1690/1 +f 1141/1694/1 1144/1693/1 1143/1704/1 +f 1160/1731/1 1159/1734/1 1142/1732/1 +f 1159/1734/3 1162/2266/3 1154/1735/3 +f 1158/1736/2 1157/1741/2 1134/1737/2 +f 1162/1738/5 1161/1743/5 1133/1739/5 +f 1157/1741/1 1163/2267/1 1156/1742/1 +f 1161/1743/2 1160/1731/2 1127/1733/2 +f 1173/1744/2 1167/2268/2 1168/1745/2 +f 1171/1747/1 1172/1762/1 1184/1748/1 +f 1177/1750/3 1169/2269/3 1170/1751/3 +f 1165/1753/5 1166/1765/5 1188/1754/5 +f 1188/1754/8 1166/1765/8 1175/1756/8 +f 1189/1758/8 1176/1746/8 1168/1745/8 +f 1191/1757/8 1175/1756/8 1176/1746/8 +f 1171/1760/3 1178/1763/3 1179/1761/3 +f 1178/1763/3 1177/1750/3 1180/1752/3 +f 1165/1764/2 1174/1766/2 1175/1756/2 +f 1174/1766/2 1173/1744/2 1176/1746/2 +f 1174/1766/6 1196/1768/6 1194/1767/6 +f 1196/1768/6 1195/1781/6 1193/1769/6 +f 1204/1770/5 1198/1791/5 1165/1771/5 +f 1194/1767/6 1193/1769/6 1181/1773/6 +f 1180/1752/8 1192/1776/8 1190/1775/8 +f 1192/1776/8 1191/1757/8 1189/1758/8 +f 1179/1761/8 1190/1775/8 1184/1748/8 +f 1190/1775/8 1189/1758/8 1183/1759/8 +f 1170/1751/8 1187/1777/8 1192/1776/8 +f 1187/1777/8 1188/1754/8 1191/1757/8 +f 1203/1778/3 1204/1770/3 1185/1772/3 +f 1185/1780/6 1186/2270/6 1195/1781/6 +f 1186/1782/5 1187/1777/5 1170/1751/5 +f 1185/1755/5 1188/1754/5 1187/1777/5 +f 1182/1784/1 1183/1759/1 1168/1745/1 +f 1181/1749/1 1184/1748/1 1183/1759/1 +f 1200/1786/1 1199/1789/1 1182/1787/1 +f 1199/1789/3 1202/2271/3 1194/1790/3 +f 1198/1791/2 1197/1796/2 1174/1792/2 +f 1202/1793/5 1201/1798/5 1173/1794/5 +f 1197/1796/1 1203/2272/1 1196/1797/1 +f 1201/1798/2 1200/1786/2 1167/1788/2 +f 1213/1799/2 1207/2273/2 1208/1800/2 +f 1211/1802/1 1212/1817/1 1224/1803/1 +f 1217/1805/3 1209/2274/3 1210/1806/3 +f 1205/1808/5 1206/1820/5 1228/1809/5 +f 1228/1809/8 1206/1820/8 1215/1811/8 +f 1229/1813/8 1216/1801/8 1208/1800/8 +f 1231/1812/8 1215/1811/8 1216/1801/8 +f 1211/1815/3 1218/1818/3 1219/1816/3 +f 1218/1818/3 1217/1805/3 1220/1807/3 +f 1205/1819/2 1214/1821/2 1215/1811/2 +f 1214/1821/2 1213/1799/2 1216/1801/2 +f 1214/1821/6 1236/1823/6 1234/1822/6 +f 1236/1823/6 1235/1836/6 1233/1824/6 +f 1244/1825/5 1238/1846/5 1205/1826/5 +f 1234/1822/6 1233/1824/6 1221/1828/6 +f 1220/1807/8 1232/1831/8 1230/1830/8 +f 1232/1831/8 1231/1812/8 1229/1813/8 +f 1219/1816/8 1230/1830/8 1224/1803/8 +f 1230/1830/8 1229/1813/8 1223/1814/8 +f 1210/1806/8 1227/1832/8 1232/1831/8 +f 1227/1832/8 1228/1809/8 1231/1812/8 +f 1243/1833/3 1244/1825/3 1225/1827/3 +f 1225/1835/6 1226/2275/6 1235/1836/6 +f 1226/1837/5 1227/1832/5 1210/1806/5 +f 1225/1810/5 1228/1809/5 1227/1832/5 +f 1222/1839/1 1223/1814/1 1208/1800/1 +f 1221/1804/1 1224/1803/1 1223/1814/1 +f 1240/1841/1 1239/1844/1 1222/1842/1 +f 1239/1844/3 1242/2276/3 1234/1845/3 +f 1238/1846/2 1237/1851/2 1214/1847/2 +f 1242/1848/5 1241/1853/5 1213/1849/5 +f 1237/1851/1 1243/2277/1 1236/1852/1 +f 1241/1853/2 1240/1841/2 1207/1843/2 +f 1245/1854/3 1246/2278/3 1248/1855/3 +f 1248/1857/1 1252/2279/1 1251/1858/1 +f 1252/1860/2 1250/1864/2 1249/1861/2 +f 1251/1858/1 1255/1865/1 1253/1863/1 +f 1248/1855/9 1246/2278/9 1250/1864/9 +f 1255/1865/11 1256/1869/11 1254/1866/11 +f 1253/1863/1 1259/1870/1 1257/1867/1 +f 1251/1868/2 1249/2280/2 1256/1869/2 +f 1259/1870/1 1263/1880/1 1261/1871/1 +f 1247/1856/9 1257/2281/9 1258/1872/9 +f 1254/1866/11 1260/1879/11 1259/1870/11 +f 1261/1873/3 1263/1880/3 1264/1874/3 +f 1262/1876/3 1268/1882/3 1267/1877/3 +f 1260/1879/11 1264/1874/11 1263/1880/11 +f 1265/1881/9 1267/1877/9 1268/1882/9 +f 1261/1871/1 1267/2282/1 1265/1884/1 +f 1258/1872/2 1257/2281/2 1265/1881/2 +f 1269/1885/3 1271/1905/3 1272/1886/3 +f 1275/1888/5 1276/2283/5 1272/1889/5 +f 1273/1891/2 1274/1895/2 1276/1892/2 +f 1277/1894/5 1279/1897/5 1275/1888/5 +f 1274/1895/10 1270/1887/10 1272/1886/10 +f 1278/1896/12 1280/1900/12 1279/1897/12 +f 1281/1898/5 1283/1903/5 1277/1894/5 +f 1275/1899/2 1279/1897/2 1280/1900/2 +f 1285/1902/5 1287/1912/5 1283/1903/5 +f 1282/1904/10 1281/1918/10 1271/1905/10 +f 1283/1903/12 1284/1913/12 1278/1896/12 +f 1288/1906/3 1287/1912/3 1285/1907/3 +f 1291/1909/3 1292/1914/3 1286/1910/3 +f 1287/1912/12 1288/1906/12 1284/1913/12 +f 1292/1914/10 1291/1909/10 1289/1915/10 +f 1289/1917/5 1291/2284/5 1285/1902/5 +f 1282/1904/2 1290/1916/2 1289/1915/2 +f 1294/1919/4 1296/1922/4 1295/1920/4 +f 1296/1922/1 1300/2285/1 1299/1923/1 +f 1297/1924/5 1298/2286/5 1294/1919/5 +f 1299/1925/13 1297/2287/13 1293/1921/13 +f 1296/1922/14 1294/1919/14 1298/1926/14 +f 1302/1928/4 1304/1931/4 1303/1929/4 +f 1304/1931/1 1308/2288/1 1307/1932/1 +f 1305/1933/5 1306/2289/5 1302/1928/5 +f 1307/1934/13 1305/2290/13 1301/1930/13 +f 1304/1931/14 1302/1928/14 1306/1935/14 +f 1310/1937/4 1312/1940/4 1311/1938/4 +f 1312/1940/1 1316/2291/1 1315/1941/1 +f 1313/1942/5 1314/2292/5 1310/1937/5 +f 1315/1943/13 1313/2293/13 1309/1939/13 +f 1312/1940/14 1310/1937/14 1314/1944/14 +f 1318/1946/4 1320/1949/4 1319/1947/4 +f 1320/1949/1 1324/2294/1 1323/1950/1 +f 1321/1951/5 1322/2295/5 1318/1946/5 +f 1323/1952/13 1321/2296/13 1317/1948/13 +f 1320/1949/14 1318/1946/14 1322/1953/14 +f 1326/1955/4 1328/1958/4 1327/1956/4 +f 1328/1958/1 1332/2297/1 1331/1959/1 +f 1329/1960/5 1330/2298/5 1326/1955/5 +f 1331/1961/13 1329/2299/13 1325/1957/13 +f 1328/1958/14 1326/1955/14 1330/1962/14 +f 1335/1964/7 1336/1968/7 1334/1965/7 +f 1335/1964/1 1339/2300/1 1340/1967/1 +f 1337/1969/5 1333/1966/5 1334/1965/5 +f 1333/1966/15 1337/2301/15 1339/1971/15 +f 1338/1972/16 1334/1965/16 1336/1968/16 +f 1343/1974/7 1344/1978/7 1342/1975/7 +f 1343/1974/1 1347/2302/1 1348/1977/1 +f 1345/1979/5 1341/1976/5 1342/1975/5 +f 1341/1976/15 1345/2303/15 1347/1981/15 +f 1346/1982/16 1342/1975/16 1344/1978/16 +f 1351/1984/7 1352/1988/7 1350/1985/7 +f 1351/1984/1 1355/2304/1 1356/1987/1 +f 1353/1989/5 1349/1986/5 1350/1985/5 +f 1349/1986/15 1353/2305/15 1355/1991/15 +f 1354/1992/16 1350/1985/16 1352/1988/16 +f 1359/1994/7 1360/1998/7 1358/1995/7 +f 1359/1994/1 1363/2306/1 1364/1997/1 +f 1361/1999/5 1357/1996/5 1358/1995/5 +f 1357/1996/15 1361/2307/15 1363/2001/15 +f 1362/2002/16 1358/1995/16 1360/1998/16 +f 1367/2004/7 1368/2008/7 1366/2005/7 +f 1367/2004/1 1371/2308/1 1372/2007/1 +f 1369/2009/5 1365/2006/5 1366/2005/5 +f 1365/2006/15 1369/2309/15 1371/2011/15 +f 1370/2012/16 1366/2005/16 1368/2008/16 +f 1376/2014/1 1380/2024/1 1379/2015/1 +f 1378/2017/5 1374/2310/5 1373/2018/5 +f 1382/2020/5 1385/2033/5 1386/2021/5 +f 1376/2027/1 1383/2311/1 1384/2028/1 +f 1386/2036/5 1389/2040/5 1392/2037/5 +f 1383/2041/1 1394/2312/1 1391/2042/1 +f 1398/2043/1 1402/2053/1 1401/2044/1 +f 1400/2046/5 1396/2313/5 1395/2047/5 +f 1404/2049/5 1407/2062/5 1408/2050/5 +f 1398/2056/1 1405/2314/1 1406/2057/1 +f 1408/2065/5 1411/2069/5 1414/2066/5 +f 1405/2070/1 1416/2315/1 1413/2071/1 +f 1420/2072/1 1424/2082/1 1423/2073/1 +f 1422/2075/5 1418/2316/5 1417/2076/5 +f 1426/2078/5 1429/2091/5 1430/2079/5 +f 1420/2085/1 1427/2317/1 1428/2086/1 +f 1430/2094/5 1433/2098/5 1436/2095/5 +f 1427/2099/1 1438/2318/1 1435/2100/1 +f 1442/2101/1 1446/2111/1 1445/2102/1 +f 1444/2104/5 1440/2319/5 1439/2105/5 +f 1448/2107/5 1451/2120/5 1452/2108/5 +f 1442/2114/1 1449/2320/1 1450/2115/1 +f 1452/2123/5 1455/2127/5 1458/2124/5 +f 1449/2128/1 1460/2321/1 1457/2129/1 +f 1464/2130/1 1468/2140/1 1467/2131/1 +f 1466/2133/5 1462/2322/5 1461/2134/5 +f 1470/2136/5 1473/2149/5 1474/2137/5 +f 1464/2143/1 1471/2323/1 1472/2144/1 +f 1474/2152/5 1477/2156/5 1480/2153/5 +f 1471/2157/1 1482/2324/1 1479/2158/1 s 1 -f 5/5/11 3/697/12 6/6/13 -f 9/604/14 4/4/15 2/2/16 -f 9/10/14 8/9/17 7/8/18 -f 10/18/19 12/606/20 8/16/17 -f 5/5/11 14/698/21 1/699/22 -f 16/26/23 377/607/24 13/24/25 -f 15/21/26 13/15/25 12/14/20 -f 11/17/27 18/700/28 14/698/21 -f 24/33/11 22/701/12 25/34/13 -f 28/608/14 23/32/15 21/30/16 -f 28/38/14 27/37/17 26/36/18 -f 29/46/19 31/610/29 27/44/17 -f 24/33/11 33/702/21 20/703/22 -f 35/54/23 378/611/24 32/52/25 -f 34/49/30 32/43/25 31/42/29 -f 30/45/27 37/704/28 33/702/21 -f 43/61/11 41/705/12 44/62/13 -f 47/612/14 42/60/15 40/58/16 -f 47/66/14 46/65/17 45/64/18 -f 48/74/19 50/614/29 46/72/17 -f 43/61/11 52/706/31 39/707/22 -f 54/82/23 379/615/24 51/80/25 -f 53/77/32 51/71/25 50/70/29 -f 49/73/33 56/708/28 52/706/31 -f 62/89/11 60/709/12 63/90/13 -f 66/616/14 61/88/15 59/86/16 -f 66/94/14 65/93/17 64/92/34 -f 67/102/19 69/618/20 65/100/17 -f 62/89/11 71/710/21 58/711/22 -f 73/110/23 380/619/24 70/108/25 -f 72/105/26 70/99/25 69/98/20 -f 68/101/27 75/712/28 71/710/21 -f 5/5/11 1/699/22 3/697/12 -f 9/604/14 7/605/18 4/4/15 -f 9/10/14 10/12/19 8/9/17 -f 10/18/19 15/20/26 12/606/20 -f 5/5/11 11/17/27 14/698/21 -f 16/26/23 19/28/35 377/607/24 -f 15/21/26 16/23/23 13/15/25 -f 11/17/27 17/25/36 18/700/28 -f 24/33/11 20/703/22 22/701/12 -f 28/608/14 26/609/18 23/32/15 -f 28/38/14 29/40/19 27/37/17 -f 29/46/19 34/48/30 31/610/29 -f 24/33/11 30/45/27 33/702/21 -f 35/54/23 38/56/35 378/611/24 -f 34/49/30 35/51/23 32/43/25 -f 30/45/27 36/53/36 37/704/28 -f 43/61/11 39/707/22 41/705/12 -f 47/612/14 45/613/18 42/60/15 -f 47/66/14 48/68/19 46/65/17 -f 48/74/19 53/76/32 50/614/29 -f 43/61/11 49/73/33 52/706/31 -f 54/82/23 57/84/35 379/615/24 -f 53/77/32 54/79/23 51/71/25 -f 49/73/33 55/81/36 56/708/28 -f 62/89/11 58/711/22 60/709/12 -f 66/616/14 64/617/34 61/88/15 -f 66/94/14 67/96/19 65/93/17 -f 67/102/19 72/104/26 69/618/20 -f 62/89/11 68/101/27 71/710/21 -f 73/110/23 76/112/35 380/619/24 -f 72/105/26 73/107/23 70/99/25 -f 68/101/27 74/109/36 75/712/28 +f 1374/2310/17 1375/2325/18 1373/2018/19 +f 1380/2024/20 1377/2019/21 1379/2015/22 +f 1380/2024/20 1382/2020/23 1378/2017/24 +f 1384/2028/25 1388/2034/26 1385/2033/27 +f 1381/2026/28 1385/2033/27 1382/2020/23 +f 1374/2022/17 1383/2326/29 1376/2327/30 +f 1387/2029/31 1389/2040/32 1388/2034/26 +f 1386/2036/33 1394/2328/34 1383/2329/29 +f 1390/2031/35 1392/2037/36 1389/2040/32 +f 1396/2313/17 1397/2330/18 1395/2047/19 +f 1402/2053/20 1399/2048/21 1401/2044/22 +f 1402/2053/20 1404/2049/23 1400/2046/24 +f 1406/2057/25 1410/2063/26 1407/2062/27 +f 1403/2055/28 1407/2062/27 1404/2049/23 +f 1396/2051/17 1405/2331/29 1398/2332/30 +f 1409/2058/31 1411/2069/32 1410/2063/26 +f 1408/2065/33 1416/2333/34 1405/2334/29 +f 1412/2060/35 1414/2066/36 1411/2069/32 +f 1418/2316/17 1419/2335/18 1417/2076/19 +f 1424/2082/20 1421/2077/21 1423/2073/22 +f 1424/2082/20 1426/2078/23 1422/2075/24 +f 1428/2086/25 1432/2092/26 1429/2091/27 +f 1425/2084/28 1429/2091/27 1426/2078/23 +f 1418/2080/17 1427/2336/29 1420/2337/30 +f 1431/2087/31 1433/2098/32 1432/2092/26 +f 1430/2094/33 1438/2338/34 1427/2339/29 +f 1434/2089/35 1436/2095/36 1433/2098/32 +f 1440/2319/17 1441/2340/18 1439/2105/19 +f 1446/2111/20 1443/2106/21 1445/2102/22 +f 1446/2111/20 1448/2107/23 1444/2104/24 +f 1450/2115/25 1454/2121/26 1451/2120/27 +f 1447/2113/28 1451/2120/27 1448/2107/23 +f 1440/2109/17 1449/2341/29 1442/2342/30 +f 1453/2116/31 1455/2127/32 1454/2121/26 +f 1452/2123/33 1460/2343/34 1449/2344/29 +f 1456/2118/35 1458/2124/36 1455/2127/32 +f 1462/2322/17 1463/2345/18 1461/2134/19 +f 1468/2140/20 1465/2135/21 1467/2131/22 +f 1468/2140/20 1470/2136/23 1466/2133/24 +f 1472/2144/25 1476/2150/26 1473/2149/27 +f 1469/2142/28 1473/2149/27 1470/2136/23 +f 1462/2138/17 1471/2346/29 1464/2347/30 +f 1475/2145/31 1477/2156/32 1476/2150/26 +f 1474/2152/33 1482/2348/34 1471/2349/29 +f 1478/2147/35 1480/2153/36 1477/2156/32 +f 1374/2310/17 1376/2350/30 1375/2325/18 +f 1380/2024/20 1378/2017/24 1377/2019/21 +f 1380/2024/20 1381/2026/28 1382/2020/23 +f 1384/2028/25 1387/2029/31 1388/2034/26 +f 1381/2026/28 1384/2028/25 1385/2033/27 +f 1374/2022/17 1386/2021/33 1383/2326/29 +f 1387/2029/31 1390/2031/35 1389/2040/32 +f 1386/2036/33 1393/2038/37 1394/2328/34 +f 1390/2031/35 1391/2042/38 1392/2037/36 +f 1396/2313/17 1398/2351/30 1397/2330/18 +f 1402/2053/20 1400/2046/24 1399/2048/21 +f 1402/2053/20 1403/2055/28 1404/2049/23 +f 1406/2057/25 1409/2058/31 1410/2063/26 +f 1403/2055/28 1406/2057/25 1407/2062/27 +f 1396/2051/17 1408/2050/33 1405/2331/29 +f 1409/2058/31 1412/2060/35 1411/2069/32 +f 1408/2065/33 1415/2067/37 1416/2333/34 +f 1412/2060/35 1413/2071/38 1414/2066/36 +f 1418/2316/17 1420/2352/30 1419/2335/18 +f 1424/2082/20 1422/2075/24 1421/2077/21 +f 1424/2082/20 1425/2084/28 1426/2078/23 +f 1428/2086/25 1431/2087/31 1432/2092/26 +f 1425/2084/28 1428/2086/25 1429/2091/27 +f 1418/2080/17 1430/2079/33 1427/2336/29 +f 1431/2087/31 1434/2089/35 1433/2098/32 +f 1430/2094/33 1437/2096/37 1438/2338/34 +f 1434/2089/35 1435/2100/38 1436/2095/36 +f 1440/2319/17 1442/2353/30 1441/2340/18 +f 1446/2111/20 1444/2104/24 1443/2106/21 +f 1446/2111/20 1447/2113/28 1448/2107/23 +f 1450/2115/25 1453/2116/31 1454/2121/26 +f 1447/2113/28 1450/2115/25 1451/2120/27 +f 1440/2109/17 1452/2108/33 1449/2341/29 +f 1453/2116/31 1456/2118/35 1455/2127/32 +f 1452/2123/33 1459/2125/37 1460/2343/34 +f 1456/2118/35 1457/2129/38 1458/2124/36 +f 1462/2322/17 1464/2354/30 1463/2345/18 +f 1468/2140/20 1466/2133/24 1465/2135/21 +f 1468/2140/20 1469/2142/28 1470/2136/23 +f 1472/2144/25 1475/2145/31 1476/2150/26 +f 1469/2142/28 1472/2144/25 1473/2149/27 +f 1462/2138/17 1474/2137/33 1471/2346/29 +f 1475/2145/31 1478/2147/35 1477/2156/32 +f 1474/2152/33 1481/2154/37 1482/2348/34 +f 1478/2147/35 1479/2158/38 1480/2153/36 diff --git a/src/main/resources/assets/hbm/models/machines/industrial_boiler.obj b/src/main/resources/assets/hbm/models/machines/industrial_boiler.obj new file mode 100644 index 000000000..eb3fb03ef --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/industrial_boiler.obj @@ -0,0 +1,2900 @@ +# Blender v2.79 (sub 0) OBJ File: 'industrial_boiler.blend' +# www.blender.org +o Plane +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 -1.500000 0.250000 1.500000 +v 1.500000 0.250000 1.500000 +v -1.500000 0.250000 -1.500000 +v 1.500000 0.250000 -1.500000 +v -1.000000 0.250000 1.000000 +v 1.000000 0.250000 1.000000 +v -1.000000 0.250000 -1.000000 +v 1.000000 0.250000 -1.000000 +v -1.000000 1.250000 -1.000000 +v -1.000000 1.250000 1.000000 +v 1.000000 1.250000 1.000000 +v 1.000000 1.250000 -1.000000 +v 1.000000 1.031250 0.750000 +v 1.500000 1.031250 0.750000 +v 1.000000 1.031250 -0.750000 +v 1.500000 1.031250 -0.750000 +v 1.000000 1.093750 -0.750000 +v 1.000000 1.093750 0.750000 +v 1.500000 1.093750 0.750000 +v 1.500000 1.093750 -0.750000 +v 1.000000 0.906250 0.750000 +v 1.500000 0.906250 0.750000 +v 1.000000 0.906250 -0.750000 +v 1.500000 0.906250 -0.750000 +v 1.000000 0.968750 -0.750000 +v 1.000000 0.968750 0.750000 +v 1.500000 0.968750 0.750000 +v 1.500000 0.968750 -0.750000 +v 1.000000 0.781250 0.750000 +v 1.500000 0.781250 0.750000 +v 1.000000 0.781250 -0.750000 +v 1.500000 0.781250 -0.750000 +v 1.000000 0.843750 -0.750000 +v 1.000000 0.843750 0.750000 +v 1.500000 0.843750 0.750000 +v 1.500000 0.843750 -0.750000 +v 1.000000 1.156250 0.750000 +v 1.500000 1.156250 0.750000 +v 1.000000 1.156250 -0.750000 +v 1.500000 1.156250 -0.750000 +v 1.000000 1.218750 -0.750000 +v 1.000000 1.218750 0.750000 +v 1.500000 1.218750 0.750000 +v 1.500000 1.218750 -0.750000 +v -1.000000 1.031250 -0.750000 +v -1.500000 1.031250 -0.750000 +v -1.000000 1.031250 0.750000 +v -1.500000 1.031250 0.750000 +v -1.000000 1.093750 0.750000 +v -1.000000 1.093750 -0.750000 +v -1.500000 1.093750 -0.750000 +v -1.500000 1.093750 0.750000 +v -1.000000 0.906250 -0.750000 +v -1.500000 0.906250 -0.750000 +v -1.000000 0.906250 0.750000 +v -1.500000 0.906250 0.750000 +v -1.000000 0.968750 0.750000 +v -1.000000 0.968750 -0.750000 +v -1.500000 0.968750 -0.750000 +v -1.500000 0.968750 0.750000 +v -1.000000 0.781250 -0.750000 +v -1.500000 0.781250 -0.750000 +v -1.000000 0.781250 0.750000 +v -1.500000 0.781250 0.750000 +v -1.000000 0.843750 0.750000 +v -1.000000 0.843750 -0.750000 +v -1.500000 0.843750 -0.750000 +v -1.500000 0.843750 0.750000 +v -1.000000 1.156250 -0.750000 +v -1.500000 1.156250 -0.750000 +v -1.000000 1.156250 0.750000 +v -1.500000 1.156250 0.750000 +v -1.000000 1.218750 0.750000 +v -1.000000 1.218750 -0.750000 +v -1.500000 1.218750 -0.750000 +v -1.500000 1.218750 0.750000 +v 0.750000 1.031250 -1.000000 +v 0.750000 1.031250 -1.500000 +v -0.750000 1.031250 -1.000000 +v -0.750000 1.031250 -1.500000 +v -0.750000 1.093750 -1.000000 +v 0.750000 1.093750 -1.000000 +v 0.750000 1.093750 -1.500000 +v -0.750000 1.093750 -1.500000 +v 0.750000 0.906250 -1.000000 +v 0.750000 0.906250 -1.500000 +v -0.750000 0.906250 -1.000000 +v -0.750000 0.906250 -1.500000 +v -0.750000 0.968750 -1.000000 +v 0.750000 0.968750 -1.000000 +v 0.750000 0.968750 -1.500000 +v -0.750000 0.968750 -1.500000 +v 0.750000 0.781250 -1.000000 +v 0.750000 0.781250 -1.500000 +v -0.750000 0.781250 -1.000000 +v -0.750000 0.781250 -1.500000 +v -0.750000 0.843750 -1.000000 +v 0.750000 0.843750 -1.000000 +v 0.750000 0.843750 -1.500000 +v -0.750000 0.843750 -1.500000 +v 0.750000 1.156250 -1.000000 +v 0.750000 1.156250 -1.500000 +v -0.750000 1.156250 -1.000000 +v -0.750000 1.156250 -1.500000 +v -0.750000 1.218750 -1.000000 +v 0.750000 1.218750 -1.000000 +v 0.750000 1.218750 -1.500000 +v -0.750000 1.218750 -1.500000 +v -0.750000 1.031250 1.000000 +v -0.750000 1.031250 1.500000 +v 0.750000 1.031250 1.000000 +v 0.750000 1.031250 1.500000 +v 0.750000 1.093750 1.000000 +v -0.750000 1.093750 1.000000 +v -0.750000 1.093750 1.500000 +v 0.750000 1.093750 1.500000 +v -0.750000 0.906250 1.000000 +v -0.750000 0.906250 1.500000 +v 0.750000 0.906250 1.000000 +v 0.750000 0.906250 1.500000 +v 0.750000 0.968750 1.000000 +v -0.750000 0.968750 1.000000 +v -0.750000 0.968750 1.500000 +v 0.750000 0.968750 1.500000 +v -0.750000 0.781250 1.000000 +v -0.750000 0.781250 1.500000 +v 0.750000 0.781250 1.000000 +v 0.750000 0.781250 1.500000 +v 0.750000 0.843750 1.000000 +v -0.750000 0.843750 1.000000 +v -0.750000 0.843750 1.500000 +v 0.750000 0.843750 1.500000 +v -0.750000 1.156250 1.000000 +v -0.750000 1.156250 1.500000 +v 0.750000 1.156250 1.000000 +v 0.750000 1.156250 1.500000 +v 0.750000 1.218750 1.000000 +v -0.750000 1.218750 1.000000 +v -0.750000 1.218750 1.500000 +v 0.750000 1.218750 1.500000 +v 0.000000 4.250000 -0.866025 +v 0.000000 3.750000 -1.000000 +v 0.191342 4.616025 -0.461940 +v 0.331414 4.250000 -0.800103 +v 0.382683 3.750000 -0.923880 +v 0.353553 4.616025 -0.353553 +v 0.612372 4.250000 -0.612372 +v 0.707107 3.750000 -0.707107 +v 0.461940 4.616025 -0.191342 +v 0.800103 4.250000 -0.331414 +v 0.923879 3.750000 -0.382683 +v 0.500000 4.616025 0.000000 +v 0.866025 4.250000 0.000000 +v 1.000000 3.750000 0.000000 +v 0.461940 4.616025 0.191341 +v 0.800103 4.250000 0.331413 +v 0.923879 3.750000 0.382683 +v 0.353553 4.616025 0.353553 +v 0.612372 4.250000 0.612372 +v 0.707106 3.750000 0.707107 +v 0.191342 4.616025 0.461939 +v 0.331413 4.250000 0.800103 +v 0.382683 3.750000 0.923879 +v -0.000000 4.616025 0.500000 +v -0.000000 4.250000 0.866025 +v -0.000000 3.750000 1.000000 +v -0.191342 4.616025 0.461939 +v -0.331414 4.250000 0.800103 +v -0.382684 3.750000 0.923879 +v -0.382683 1.250000 -0.923880 +v -0.707106 1.250000 -0.707107 +v -0.353553 4.616025 0.353553 +v -0.612372 4.250000 0.612372 +v -0.707107 3.750000 0.707106 +v -0.923879 1.250000 -0.382684 +v -1.000000 1.250000 -0.000000 +v -0.461940 4.616025 0.191341 +v -0.800103 4.250000 0.331413 +v -0.923879 3.750000 0.382683 +v -0.923879 1.250000 0.382683 +v -0.707107 1.250000 0.707106 +v -0.500000 4.616025 -0.000000 +v -0.866025 4.250000 -0.000000 +v -1.000000 3.750000 -0.000000 +v -0.382684 1.250000 0.923879 +v -0.000000 1.250000 1.000000 +v -0.461939 4.616025 -0.191342 +v -0.800103 4.250000 -0.331414 +v -0.923879 3.750000 -0.382684 +v 0.382683 1.250000 0.923879 +v 0.707106 1.250000 0.707107 +v -0.353553 4.616025 -0.353554 +v -0.612372 4.250000 -0.612372 +v -0.707106 3.750000 -0.707107 +v 0.923879 1.250000 0.382683 +v 1.000000 1.250000 0.000000 +v -0.191341 4.616025 -0.461940 +v -0.331413 4.250000 -0.800103 +v -0.382683 3.750000 -0.923880 +v 0.923879 1.250000 -0.382683 +v 0.707107 1.250000 -0.707107 +v -0.000000 4.750000 0.000000 +v 0.000000 4.616025 -0.500000 +v 0.382683 1.250000 -0.923880 +v 0.000000 1.250000 -1.000000 +v 1.000000 0.250000 1.250000 +v 1.250000 0.250000 1.250000 +v 1.000000 0.250000 1.000000 +v 1.250000 0.250000 1.000000 +v 1.000000 3.750000 1.250000 +v 1.250000 3.750000 1.250000 +v 1.000000 3.750000 1.000000 +v 1.250000 3.750000 1.000000 +v 1.000000 0.250000 -1.000000 +v 1.250000 0.250000 -1.000000 +v 1.000000 0.250000 -1.250000 +v 1.250000 0.250000 -1.250000 +v 1.000000 3.750000 -1.000000 +v 1.250000 3.750000 -1.000000 +v 1.000000 3.750000 -1.250000 +v 1.250000 3.750000 -1.250000 +v -1.250000 3.750000 1.250000 +v -1.000000 3.750000 1.250000 +v -1.250000 3.750000 1.000000 +v -1.000000 3.750000 1.000000 +v -1.250000 0.250000 1.250000 +v -1.000000 0.250000 1.250000 +v -1.250000 0.250000 1.000000 +v -1.000000 0.250000 1.000000 +v -1.250000 3.750000 -1.000000 +v -1.000000 3.750000 -1.000000 +v -1.250000 3.750000 -1.250000 +v -1.000000 3.750000 -1.250000 +v -1.250000 0.250000 -1.000000 +v -1.000000 0.250000 -1.000000 +v -1.250000 0.250000 -1.250000 +v -1.000000 0.250000 -1.250000 +v 1.000000 3.750000 1.000000 +v 1.250000 3.750000 1.000000 +v 1.000000 3.750000 -1.000000 +v 1.250000 3.750000 -1.000000 +v 1.250000 3.500000 1.000000 +v 1.000000 3.500000 1.000000 +v 1.000000 3.500000 -1.000000 +v 1.250000 3.500000 -1.000000 +v -1.000000 3.750000 -1.000000 +v -1.250000 3.750000 -1.000000 +v -1.000000 3.750000 1.000000 +v -1.250000 3.750000 1.000000 +v -1.250000 3.500000 -1.000000 +v -1.000000 3.500000 -1.000000 +v -1.000000 3.500000 1.000000 +v -1.250000 3.500000 1.000000 +v 1.000000 3.750000 -1.000000 +v 1.000000 3.750000 -1.250000 +v -1.000000 3.750000 -1.000000 +v -1.000000 3.750000 -1.250000 +v 1.000000 3.500000 -1.250000 +v 1.000000 3.500000 -1.000000 +v -1.000000 3.500000 -1.000000 +v -1.000000 3.500000 -1.250000 +v -1.000000 3.750000 1.000000 +v -1.000000 3.750000 1.250000 +v 1.000000 3.750000 1.000000 +v 1.000000 3.750000 1.250000 +v -1.000000 3.500000 1.250000 +v -1.000000 3.500000 1.000000 +v 1.000000 3.500000 1.000000 +v 1.000000 3.500000 1.250000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.437500 0.000000 0.437500 +v 0.437500 0.000000 0.437500 +v -0.437500 0.000000 -0.437500 +v 0.437500 0.000000 -0.437500 +v -0.500000 0.062500 -0.500000 +v -0.500000 0.062500 0.500000 +v 0.500000 0.062500 0.500000 +v 0.500000 0.062500 -0.500000 +v -0.437500 0.062500 -0.437500 +v -0.437500 0.062500 0.437500 +v 0.437500 0.062500 0.437500 +v 0.437500 0.062500 -0.437500 +v -0.250000 5.000000 0.250000 +v 0.250000 5.000000 0.250000 +v -0.250000 5.000000 -0.250000 +v 0.250000 5.000000 -0.250000 +v -0.250000 4.937500 -0.250000 +v -0.250000 4.937500 0.250000 +v 0.250000 4.937500 0.250000 +v 0.250000 4.937500 -0.250000 +v -0.375000 4.812500 -0.375000 +v -0.375000 4.812500 0.375000 +v 0.375000 4.812500 0.375000 +v 0.375000 4.812500 -0.375000 +v -0.375000 4.562500 -0.375000 +v -0.375000 4.562500 0.375000 +v 0.375000 4.562500 0.375000 +v 0.375000 4.562500 -0.375000 +v 0.375000 4.812500 0.187500 +v 0.375000 4.775888 0.099112 +v 0.375000 4.687500 0.062500 +v 0.375000 4.599112 0.099112 +v 0.375000 4.562500 0.187500 +v 0.375000 4.599112 0.275888 +v 0.375000 4.687500 0.312500 +v 0.375000 4.775888 0.275888 +v 1.125000 4.812500 0.187500 +v 1.125000 4.775888 0.099112 +v 1.125000 4.687500 0.062500 +v 1.125000 4.599112 0.099112 +v 1.125000 4.562500 0.187500 +v 1.125000 4.599112 0.275888 +v 1.125000 4.687500 0.312500 +v 1.125000 4.775888 0.275888 +v 1.301777 4.739277 0.187500 +v 1.275888 4.713388 0.099112 +v 1.213388 4.650888 0.062500 +v 1.150888 4.588388 0.099112 +v 1.150888 4.588388 0.275888 +v 1.213388 4.650888 0.312500 +v 1.275888 4.713388 0.275888 +v 1.375000 4.562500 0.187500 +v 1.338388 4.562500 0.099112 +v 1.250000 4.562500 0.062500 +v 1.161612 4.562500 0.099112 +v 1.161612 4.562500 0.275888 +v 1.250000 4.562500 0.312500 +v 1.338388 4.562500 0.275888 +v 1.125000 0.750000 0.187500 +v 1.375000 0.750000 0.187500 +v 1.338388 0.750000 0.099112 +v 1.250000 0.750000 0.062500 +v 1.161612 0.750000 0.099112 +v 1.161612 0.750000 0.275888 +v 1.250000 0.750000 0.312500 +v 1.338388 0.750000 0.275888 +v 0.375000 4.812500 -0.187500 +v 0.375000 4.775888 -0.275888 +v 0.375000 4.687500 -0.312500 +v 0.375000 4.599112 -0.275888 +v 0.375000 4.562500 -0.187500 +v 0.375000 4.599112 -0.099112 +v 0.375000 4.687500 -0.062500 +v 0.375000 4.775888 -0.099112 +v 1.125000 4.812500 -0.187500 +v 1.125000 4.775888 -0.275888 +v 1.125000 4.687500 -0.312500 +v 1.125000 4.599112 -0.275888 +v 1.125000 4.562500 -0.187500 +v 1.125000 4.599112 -0.099112 +v 1.125000 4.687500 -0.062500 +v 1.125000 4.775888 -0.099112 +v 1.301777 4.739277 -0.187500 +v 1.275888 4.713388 -0.275888 +v 1.213388 4.650888 -0.312500 +v 1.150888 4.588388 -0.275888 +v 1.150888 4.588388 -0.099112 +v 1.213388 4.650888 -0.062500 +v 1.275888 4.713388 -0.099112 +v 1.375000 4.562500 -0.187500 +v 1.338388 4.562500 -0.275888 +v 1.250000 4.562500 -0.312500 +v 1.161612 4.562500 -0.275888 +v 1.161612 4.562500 -0.099112 +v 1.250000 4.562500 -0.062500 +v 1.338388 4.562500 -0.099112 +v 1.125000 0.750000 -0.187500 +v 1.375000 0.750000 -0.187500 +v 1.338388 0.750000 -0.275888 +v 1.250000 0.750000 -0.312500 +v 1.161612 0.750000 -0.275888 +v 1.161612 0.750000 -0.099112 +v 1.250000 0.750000 -0.062500 +v 1.338388 0.750000 -0.099112 +v -1.500000 0.687500 0.187500 +v -1.500000 0.312500 0.187500 +v -1.500000 0.687500 -0.187500 +v -1.500000 0.312500 -0.187500 +v -1.000000 0.750000 -0.750000 +v -1.375000 0.750000 -0.750000 +v -1.000000 0.750000 0.750000 +v -1.375000 0.750000 0.750000 +v -1.000000 0.250000 0.750000 +v -1.000000 0.250000 -0.750000 +v -1.375000 0.250000 -0.750000 +v -1.375000 0.250000 0.750000 +v -1.375000 0.687500 -0.187500 +v -1.375000 0.687500 0.187500 +v -1.375000 0.312500 0.187500 +v -1.375000 0.312500 -0.187500 +v 1.500000 0.687500 -0.187500 +v 1.500000 0.312500 -0.187500 +v 1.500000 0.687500 0.187500 +v 1.500000 0.312500 0.187500 +v 1.000000 0.750000 0.750000 +v 1.375000 0.750000 0.750000 +v 1.000000 0.750000 -0.750000 +v 1.375000 0.750000 -0.750000 +v 1.000000 0.250000 -0.750000 +v 1.000000 0.250000 0.750000 +v 1.375000 0.250000 0.750000 +v 1.375000 0.250000 -0.750000 +v 1.375000 0.687500 0.187500 +v 1.375000 0.687500 -0.187500 +v 1.375000 0.312500 -0.187500 +v 1.375000 0.312500 0.187500 +v 0.187500 0.687500 1.500000 +v 0.187500 0.312500 1.500000 +v -0.187500 0.687500 1.500000 +v -0.187500 0.312500 1.500000 +v -0.750000 0.750000 1.000000 +v -0.750000 0.750000 1.375000 +v 0.750000 0.750000 1.000000 +v 0.750000 0.750000 1.375000 +v 0.750000 0.250000 1.000000 +v -0.750000 0.250000 1.000000 +v -0.750000 0.250000 1.375000 +v 0.750000 0.250000 1.375000 +v -0.187500 0.687500 1.375000 +v 0.187500 0.687500 1.375000 +v 0.187500 0.312500 1.375000 +v -0.187500 0.312500 1.375000 +v -0.187500 0.687500 -1.500000 +v -0.187500 0.312500 -1.500000 +v 0.187500 0.687500 -1.500000 +v 0.187500 0.312500 -1.500000 +v 0.750000 0.750000 -1.000000 +v 0.750000 0.750000 -1.375000 +v -0.750000 0.750000 -1.000000 +v -0.750000 0.750000 -1.375000 +v -0.750000 0.250000 -1.000000 +v 0.750000 0.250000 -1.000000 +v 0.750000 0.250000 -1.375000 +v -0.750000 0.250000 -1.375000 +v 0.187500 0.687500 -1.375000 +v -0.187500 0.687500 -1.375000 +v -0.187500 0.312500 -1.375000 +v 0.187500 0.312500 -1.375000 +v -1.250000 3.750000 -0.312500 +v -1.250000 3.750000 0.312500 +v -1.250000 3.500000 -0.312500 +v -1.250000 3.500000 0.312500 +v -1.375000 3.750000 -0.312500 +v -1.375000 3.750000 0.312500 +v -1.375000 3.500000 -0.312500 +v -1.375000 3.500000 0.312500 +v 1.250000 3.750000 0.312500 +v 1.250000 3.750000 -0.312500 +v 1.250000 3.500000 0.312500 +v 1.250000 3.500000 -0.312500 +v 1.375000 3.750000 0.312500 +v 1.375000 3.750000 -0.312500 +v 1.375000 3.500000 0.312500 +v 1.375000 3.500000 -0.312500 +v -0.312500 3.750000 1.250000 +v 0.312500 3.750000 1.250000 +v -0.312500 3.500000 1.250000 +v 0.312500 3.500000 1.250000 +v -0.312500 3.750000 1.375000 +v 0.312500 3.750000 1.375000 +v -0.312500 3.500000 1.375000 +v 0.312500 3.500000 1.375000 +v 0.312500 3.750000 -1.250000 +v -0.312500 3.750000 -1.250000 +v 0.312500 3.500000 -1.250000 +v -0.312500 3.500000 -1.250000 +v 0.312500 3.750000 -1.375000 +v -0.312500 3.750000 -1.375000 +v 0.312500 3.500000 -1.375000 +v -0.312500 3.500000 -1.375000 +v -0.375000 4.812500 -0.187500 +v -0.375000 4.775888 -0.099112 +v -0.375000 4.687500 -0.062500 +v -0.375000 4.599112 -0.099112 +v -0.375000 4.562500 -0.187500 +v -0.375000 4.599112 -0.275888 +v -0.375000 4.687500 -0.312500 +v -0.375000 4.775888 -0.275888 +v -1.125000 4.812500 -0.187500 +v -1.125000 4.775888 -0.099111 +v -1.125000 4.687500 -0.062500 +v -1.125000 4.599112 -0.099111 +v -1.125000 4.562500 -0.187500 +v -1.125000 4.599112 -0.275888 +v -1.125000 4.687500 -0.312500 +v -1.125000 4.775888 -0.275888 +v -1.301777 4.739277 -0.187500 +v -1.275888 4.713388 -0.099111 +v -1.213388 4.650888 -0.062500 +v -1.150888 4.588388 -0.099111 +v -1.150888 4.588388 -0.275888 +v -1.213388 4.650888 -0.312500 +v -1.275888 4.713388 -0.275888 +v -1.375000 4.562500 -0.187500 +v -1.338388 4.562500 -0.099111 +v -1.250000 4.562500 -0.062500 +v -1.161612 4.562500 -0.099111 +v -1.161612 4.562500 -0.275888 +v -1.250000 4.562500 -0.312500 +v -1.338388 4.562500 -0.275888 +v -1.125000 0.750000 -0.187500 +v -1.375000 0.750000 -0.187500 +v -1.338388 0.750000 -0.099111 +v -1.250000 0.750000 -0.062500 +v -1.161612 0.750000 -0.099111 +v -1.161612 0.750000 -0.275888 +v -1.250000 0.750000 -0.312500 +v -1.338388 0.750000 -0.275888 +v -0.375000 4.812500 0.187500 +v -0.375000 4.775888 0.275888 +v -0.375000 4.687500 0.312500 +v -0.375000 4.599112 0.275888 +v -0.375000 4.562500 0.187500 +v -0.375000 4.599112 0.099112 +v -0.375000 4.687500 0.062500 +v -0.375000 4.775888 0.099112 +v -1.125000 4.812500 0.187500 +v -1.125000 4.775888 0.275889 +v -1.125000 4.687500 0.312500 +v -1.125000 4.599112 0.275889 +v -1.125000 4.562500 0.187500 +v -1.125000 4.599112 0.099112 +v -1.125000 4.687500 0.062500 +v -1.125000 4.775888 0.099112 +v -1.301777 4.739277 0.187500 +v -1.275888 4.713388 0.275889 +v -1.213388 4.650888 0.312500 +v -1.150888 4.588388 0.275889 +v -1.150888 4.588388 0.099112 +v -1.213388 4.650888 0.062500 +v -1.275888 4.713388 0.099112 +v -1.375000 4.562500 0.187500 +v -1.338388 4.562500 0.275889 +v -1.250000 4.562500 0.312500 +v -1.161612 4.562500 0.275889 +v -1.161612 4.562500 0.099112 +v -1.250000 4.562500 0.062500 +v -1.338388 4.562500 0.099112 +v -1.125000 0.750000 0.187500 +v -1.375000 0.750000 0.187500 +v -1.338388 0.750000 0.275889 +v -1.250000 0.750000 0.312500 +v -1.161612 0.750000 0.275889 +v -1.161612 0.750000 0.099112 +v -1.250000 0.750000 0.062500 +v -1.338388 0.750000 0.099112 +v 0.187500 4.812500 -0.375000 +v 0.099112 4.775888 -0.375000 +v 0.062500 4.687500 -0.375000 +v 0.099112 4.599112 -0.375000 +v 0.187500 4.562500 -0.375000 +v 0.275888 4.599112 -0.375000 +v 0.312500 4.687500 -0.375000 +v 0.275888 4.775888 -0.375000 +v 0.187500 4.812500 -1.125000 +v 0.099112 4.775888 -1.125000 +v 0.062500 4.687500 -1.125000 +v 0.099112 4.599112 -1.125000 +v 0.187500 4.562500 -1.125000 +v 0.275888 4.599112 -1.125000 +v 0.312500 4.687500 -1.125000 +v 0.275888 4.775888 -1.125000 +v 0.187500 4.739277 -1.301777 +v 0.099112 4.713388 -1.275888 +v 0.062500 4.650888 -1.213388 +v 0.099112 4.588388 -1.150888 +v 0.275888 4.588388 -1.150888 +v 0.312500 4.650888 -1.213388 +v 0.275888 4.713388 -1.275888 +v 0.187500 4.562500 -1.375000 +v 0.099112 4.562500 -1.338388 +v 0.062500 4.562500 -1.250000 +v 0.099112 4.562500 -1.161612 +v 0.275888 4.562500 -1.161612 +v 0.312500 4.562500 -1.250000 +v 0.275888 4.562500 -1.338388 +v 0.187500 0.750001 -1.125000 +v 0.187500 0.750001 -1.375000 +v 0.099112 0.750001 -1.338388 +v 0.062500 0.750001 -1.250000 +v 0.099112 0.750001 -1.161612 +v 0.275888 0.750001 -1.161612 +v 0.312500 0.750001 -1.250000 +v 0.275888 0.750001 -1.338388 +v -0.187500 4.812500 -0.375000 +v -0.275888 4.775888 -0.375000 +v -0.312500 4.687500 -0.375000 +v -0.275888 4.599112 -0.375000 +v -0.187500 4.562500 -0.375000 +v -0.099112 4.599112 -0.375000 +v -0.062500 4.687500 -0.375000 +v -0.099112 4.775888 -0.375000 +v -0.187500 4.812500 -1.125000 +v -0.275888 4.775888 -1.125000 +v -0.312500 4.687500 -1.125000 +v -0.275888 4.599112 -1.125000 +v -0.187500 4.562500 -1.125000 +v -0.099112 4.599112 -1.125000 +v -0.062500 4.687500 -1.125000 +v -0.099112 4.775888 -1.125000 +v -0.187500 4.739277 -1.301777 +v -0.275888 4.713388 -1.275888 +v -0.312500 4.650888 -1.213388 +v -0.275888 4.588388 -1.150888 +v -0.099112 4.588388 -1.150888 +v -0.062500 4.650888 -1.213388 +v -0.099112 4.713388 -1.275888 +v -0.187500 4.562500 -1.375000 +v -0.275888 4.562500 -1.338388 +v -0.312500 4.562500 -1.250000 +v -0.275889 4.562500 -1.161612 +v -0.099112 4.562500 -1.161612 +v -0.062500 4.562500 -1.250000 +v -0.099112 4.562500 -1.338388 +v -0.187500 0.750001 -1.125000 +v -0.187500 0.750001 -1.375000 +v -0.275888 0.750001 -1.338388 +v -0.312500 0.750001 -1.250000 +v -0.275889 0.750001 -1.161612 +v -0.099112 0.750001 -1.161612 +v -0.062500 0.750001 -1.250000 +v -0.099112 0.750001 -1.338388 +v -0.187500 4.812500 0.375000 +v -0.099111 4.775888 0.375000 +v -0.062500 4.687500 0.375000 +v -0.099111 4.599112 0.375000 +v -0.187500 4.562500 0.375000 +v -0.275888 4.599112 0.375000 +v -0.312500 4.687500 0.375000 +v -0.275888 4.775888 0.375000 +v -0.187500 4.812500 1.125000 +v -0.099111 4.775888 1.125000 +v -0.062500 4.687500 1.125000 +v -0.099111 4.599112 1.125000 +v -0.187500 4.562500 1.125000 +v -0.275888 4.599112 1.125000 +v -0.312500 4.687500 1.125000 +v -0.275888 4.775888 1.125000 +v -0.187500 4.739277 1.301777 +v -0.099111 4.713388 1.275888 +v -0.062500 4.650888 1.213388 +v -0.099111 4.588388 1.150888 +v -0.275888 4.588388 1.150888 +v -0.312500 4.650888 1.213388 +v -0.275888 4.713388 1.275888 +v -0.187500 4.562500 1.375000 +v -0.099111 4.562500 1.338388 +v -0.062500 4.562500 1.250000 +v -0.099111 4.562500 1.161612 +v -0.275888 4.562500 1.161612 +v -0.312500 4.562500 1.250000 +v -0.275888 4.562500 1.338388 +v -0.187500 0.750001 1.125000 +v -0.187500 0.750001 1.375000 +v -0.099111 0.750001 1.338388 +v -0.062500 0.750001 1.250000 +v -0.099111 0.750001 1.161612 +v -0.275888 0.750001 1.161612 +v -0.312500 0.750001 1.250000 +v -0.275888 0.750001 1.338388 +v 0.187500 4.812500 0.375000 +v 0.275888 4.775888 0.375000 +v 0.312500 4.687500 0.375000 +v 0.275888 4.599112 0.375000 +v 0.187500 4.562500 0.375000 +v 0.099112 4.599112 0.375000 +v 0.062500 4.687500 0.375000 +v 0.099112 4.775888 0.375000 +v 0.187500 4.812500 1.125000 +v 0.275889 4.775888 1.125000 +v 0.312500 4.687500 1.125000 +v 0.275889 4.599112 1.125000 +v 0.187500 4.562500 1.125000 +v 0.099112 4.599112 1.125000 +v 0.062500 4.687500 1.125000 +v 0.099112 4.775888 1.125000 +v 0.187500 4.739277 1.301777 +v 0.275889 4.713388 1.275888 +v 0.312500 4.650888 1.213388 +v 0.275889 4.588388 1.150888 +v 0.099112 4.588388 1.150888 +v 0.062500 4.650888 1.213388 +v 0.099112 4.713388 1.275888 +v 0.187500 4.562500 1.375000 +v 0.275889 4.562500 1.338388 +v 0.312500 4.562500 1.250000 +v 0.275889 4.562500 1.161612 +v 0.099112 4.562500 1.161612 +v 0.062500 4.562500 1.250000 +v 0.099112 4.562500 1.338388 +v 0.187500 0.750001 1.125000 +v 0.187500 0.750001 1.375000 +v 0.275889 0.750001 1.338388 +v 0.312500 0.750001 1.250000 +v 0.275889 0.750001 1.161612 +v 0.099112 0.750001 1.161612 +v 0.062500 0.750001 1.250000 +v 0.099112 0.750001 1.338388 +vt 0.655660 0.930000 +vt 0.589623 0.940000 +vt 0.589623 0.930000 +vt -0.000000 0.520000 +vt 0.226415 1.000000 +vt -0.000000 1.000000 +vt 0.226415 0.480000 +vt -0.000000 0.520000 +vt -0.000000 0.480000 +vt 0.226415 0.480000 +vt -0.000000 0.520000 +vt -0.000000 0.480000 +vt 0.226415 0.480000 +vt -0.000000 0.480000 +vt 0.226415 0.480000 +vt -0.000000 0.520000 +vt -0.000000 0.480000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.226415 0.160000 +vt 0.377358 0.480000 +vt 0.226415 0.480000 +vt 0.377358 0.000000 +vt 0.226415 -0.000000 +vt 0.377358 -0.000000 +vt 0.226415 0.160000 +vt 0.226415 -0.000000 +vt 0.377358 -0.000000 +vt 0.226415 0.160000 +vt 0.226415 -0.000000 +vt 0.377358 -0.000000 +vt 0.226415 0.160000 +vt 0.226415 -0.000000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.273585 0.810000 +vt 0.386792 0.730000 +vt 0.386792 0.810000 +vt 0.386792 0.720000 +vt 0.273585 0.640000 +vt 0.386792 0.640000 +vt 0.235849 0.730000 +vt 0.273585 0.720000 +vt 0.273585 0.730000 +vt 0.424528 0.720000 +vt 0.424528 0.730000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.386792 0.640000 +vt 0.273585 0.720000 +vt 0.273585 0.640000 +vt 0.273585 0.730000 +vt 0.386792 0.810000 +vt 0.273585 0.810000 +vt 0.424528 0.720000 +vt 0.386792 0.730000 +vt 0.386792 0.720000 +vt 0.235849 0.730000 +vt 0.235849 0.720000 +vt 0.867925 0.600000 +vt 0.886792 0.560000 +vt 0.886792 0.600000 +vt 0.867925 0.560000 +vt 0.886792 0.600000 +vt 0.867925 0.600000 +vt 0.886792 -0.000000 +vt 0.867925 -0.000000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.905660 -0.000000 +vt 0.886792 0.560000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.867925 -0.000000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.905660 -0.000000 +vt 0.886792 -0.000000 +vt 0.867925 0.560000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.905660 -0.000000 +vt 0.886792 -0.000000 +vt 0.867925 0.560000 +vt 0.867925 -0.000000 +vt 0.886792 0.560000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.867925 -0.000000 +vt 0.849057 0.560000 +vt 0.849057 -0.000000 +vt 0.905660 -0.000000 +vt 0.886792 0.560000 +vt 0.886792 -0.000000 +vt 0.924528 -0.000000 +vt 0.905660 0.560000 +vt 0.867925 0.560000 +vt 0.886792 0.600000 +vt 0.867925 0.600000 +vt 0.886792 0.600000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.424528 0.800000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.424528 0.800000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.424528 0.800000 +vt 0.575472 0.640000 +vt 0.424528 0.680000 +vt 0.424528 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.424528 0.720000 +vt 0.575472 0.760000 +vt 0.424528 0.760000 +vt 0.424528 0.800000 +vt 0.575472 0.680000 +vt 0.575472 0.720000 +vt 0.655660 0.790000 +vt 0.589623 0.790000 +vt 0.575472 0.780000 +vt 0.580189 0.940000 +vt 0.575472 0.940000 +vt 0.669811 0.940000 +vt 0.665094 0.780000 +vt 0.669811 0.780000 +vt 0.584906 0.790000 +vt 0.226415 -0.000000 +vt 0.075472 0.160000 +vt -0.000000 0.000000 +vt 0.150943 0.160000 +vt 0.150943 0.320000 +vt 0.075472 0.320000 +vt 0.665094 0.940000 +vt 0.660377 0.790000 +vt 0.584906 0.950000 +vt 0.655660 0.940000 +vt 0.660377 0.950000 +vt 0.580189 0.780000 +vt 0.584906 0.930000 +vt 0.660377 0.770000 +vt 0.589623 0.780000 +vt 0.584906 0.770000 +vt 0.655660 0.780000 +vt 0.584906 0.960000 +vt 0.660377 0.960000 +vt 0.660377 0.760000 +vt 0.584906 0.760000 +vt 0.660377 0.930000 +vt 0.707547 0.720000 +vt 0.745283 0.800000 +vt 0.707547 0.800000 +vt 0.707547 0.710000 +vt 0.754717 0.680000 +vt 0.745283 0.710000 +vt 0.745283 0.720000 +vt 0.820755 0.720000 +vt 0.858491 0.710000 +vt 0.858491 0.720000 +vt 0.764151 0.720000 +vt 0.801887 0.710000 +vt 0.801887 0.720000 +vt 0.650943 0.720000 +vt 0.688679 0.710000 +vt 0.688679 0.720000 +vt 0.811321 0.640000 +vt 0.811321 0.680000 +vt 0.820755 0.710000 +vt 0.867925 0.680000 +vt 0.764151 0.710000 +vt 0.650943 0.710000 +vt 0.698113 0.680000 +vt 0.641509 0.680000 +vt 0.698113 0.640000 +vt 0.754717 0.640000 +vt 0.867925 0.640000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.235849 0.700000 +vt 0.264151 0.640000 +vt 0.264151 0.700000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.254717 0.560000 +vt 0.367925 0.620000 +vt 0.254717 0.620000 +vt 0.367925 0.480000 +vt 0.367925 0.560000 +vt 0.396226 0.480000 +vt 0.396226 0.560000 +vt 0.226415 0.560000 +vt 0.254717 0.480000 +vt 0.273585 0.700000 +vt 0.235849 0.640000 +vt 0.264151 0.620000 +vt 0.264151 0.720000 +vt 0.235849 0.720000 +vt 0.226415 0.640000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.584906 0.640000 +vt 0.575472 0.680000 +vt 0.575472 0.640000 +vt 0.641509 0.680000 +vt 0.632075 0.640000 +vt 0.641509 0.640000 +vt 0.632075 0.680000 +vt 0.226415 0.520000 +vt 0.226415 0.520000 +vt 0.226415 0.520000 +vt 0.226415 0.520000 +vt 0.377358 0.160000 +vt 0.377358 0.160000 +vt 0.377358 0.160000 +vt 0.377358 0.160000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.235849 0.720000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.424528 0.730000 +vt 0.924528 0.560000 +vt 0.924528 0.560000 +vt 0.924528 0.560000 +vt 0.924528 0.560000 +vt 0.867925 0.600000 +vt 0.575472 0.800000 +vt 0.575472 0.800000 +vt 0.575472 0.800000 +vt 0.575472 0.800000 +vt 0.641509 0.640000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.264151 0.720000 +vt 0.226415 0.700000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.264151 0.720000 +vt 0.226415 0.700000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.264151 0.720000 +vt 0.226415 0.700000 +vt 0.226415 0.480000 +vt 0.273585 0.640000 +vt 0.235849 0.620000 +vt 0.226415 0.700000 +vt 0.584906 0.680000 +vt 0.584906 0.680000 +vt 0.584906 0.680000 +vt 0.584906 0.680000 +vt 0.731132 0.560000 +vt 0.712264 0.480000 +vt 0.735849 0.480000 +vt 0.707547 0.400000 +vt 0.735849 0.400000 +vt 0.721698 0.640000 +vt 0.716981 0.560000 +vt 0.702830 0.560000 +vt 0.683962 0.480000 +vt 0.707547 0.480000 +vt 0.679245 0.400000 +vt 0.693396 0.640000 +vt 0.688679 0.560000 +vt 0.679245 0.480000 +vt 0.660377 0.560000 +vt 0.655660 0.480000 +vt 0.650943 0.400000 +vt 0.674528 0.560000 +vt 0.665094 0.640000 +vt 0.627358 0.480000 +vt 0.622642 0.400000 +vt 0.646226 0.560000 +vt 0.636792 0.640000 +vt 0.632075 0.560000 +vt 0.650943 0.480000 +vt 0.599057 0.480000 +vt 0.594340 0.400000 +vt 0.617925 0.560000 +vt 0.608491 0.640000 +vt 0.603774 0.560000 +vt 0.622642 0.480000 +vt 0.570755 0.480000 +vt 0.566038 0.400000 +vt 0.589623 0.560000 +vt 0.580189 0.640000 +vt 0.575472 0.560000 +vt 0.594340 0.480000 +vt 0.566038 0.480000 +vt 0.537736 0.400000 +vt 0.561321 0.560000 +vt 0.551887 0.640000 +vt 0.547170 0.560000 +vt 0.542453 0.480000 +vt 0.537736 0.480000 +vt 0.509434 0.400000 +vt 0.533019 0.560000 +vt 0.523585 0.640000 +vt 0.518868 0.560000 +vt 0.514151 0.480000 +vt 0.504717 0.560000 +vt 0.495283 0.640000 +vt 0.490566 0.560000 +vt 0.485849 0.480000 +vt 0.509434 0.480000 +vt 0.481132 0.400000 +vt 0.476415 0.560000 +vt 0.457547 0.480000 +vt 0.481132 0.480000 +vt 0.452830 0.400000 +vt 0.466981 0.640000 +vt 0.462264 0.560000 +vt 0.448113 0.560000 +vt 0.429245 0.480000 +vt 0.452830 0.480000 +vt 0.396226 0.400000 +vt 0.424528 0.000000 +vt 0.424528 0.400000 +vt 0.438679 0.640000 +vt 0.433962 0.560000 +vt 0.566038 -0.000000 +vt 0.537736 0.000000 +vt 0.419811 0.560000 +vt 0.400943 0.480000 +vt 0.424528 0.480000 +vt 0.452830 0.000000 +vt 0.410377 0.640000 +vt 0.405660 0.560000 +vt 0.735849 0.000000 +vt 0.844340 0.560000 +vt 0.825472 0.480000 +vt 0.849057 0.480000 +vt 0.594340 0.000000 +vt 0.820755 0.400000 +vt 0.849057 0.400000 +vt 0.834906 0.640000 +vt 0.830189 0.560000 +vt 0.707547 0.000000 +vt 0.820755 0.480000 +vt 0.801887 0.560000 +vt 0.797170 0.480000 +vt 0.792453 0.400000 +vt 0.820755 -0.000000 +vt 0.816038 0.560000 +vt 0.806604 0.640000 +vt 0.764151 0.400000 +vt 0.792453 0.000000 +vt 0.481132 -0.000000 +vt 0.509434 0.000000 +vt 0.768868 0.480000 +vt 0.787736 0.560000 +vt 0.778302 0.640000 +vt 0.773585 0.560000 +vt 0.622642 0.000000 +vt 0.764151 0.000000 +vt 0.792453 0.480000 +vt 0.679245 0.000000 +vt 0.740566 0.480000 +vt 0.759434 0.560000 +vt 0.750000 0.640000 +vt 0.745283 0.560000 +vt 0.650943 -0.000000 +vt 0.849057 0.000000 +vt 0.764151 0.480000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.640000 +vt 0.943396 0.660000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.952830 0.640000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.971698 0.610000 +vt 0.981132 0.640000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.981132 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.971698 0.640000 +vt 0.981132 0.620000 +vt 0.952830 0.610000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.790000 +vt 0.971698 0.670000 +vt 0.971698 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.790000 +vt 0.943396 0.670000 +vt 0.943396 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.981132 0.790000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.640000 +vt 0.943396 0.660000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.962264 0.670000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.952830 0.640000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.981132 0.620000 +vt 0.981132 0.640000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.933962 0.630000 +vt 0.943396 0.640000 +vt 0.971698 0.610000 +vt 0.981132 0.640000 +vt 0.943396 0.620000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.640000 +vt 0.943396 0.660000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.952830 0.640000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.971698 0.610000 +vt 0.981132 0.640000 +vt 0.952830 0.610000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.981132 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.971698 0.640000 +vt 0.981132 0.620000 +vt 0.952830 0.610000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.790000 +vt 0.971698 0.670000 +vt 0.971698 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.790000 +vt 0.943396 0.670000 +vt 0.943396 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.981132 0.790000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.971698 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.962264 0.670000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.981132 0.620000 +vt 0.981132 0.640000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.962264 0.670000 +vt 0.971698 0.790000 +vt 0.962264 0.790000 +vt 0.952830 0.670000 +vt 0.952830 0.790000 +vt 0.933962 0.670000 +vt 0.943396 0.790000 +vt 0.933962 0.790000 +vt 0.990566 0.670000 +vt 1.000000 0.790000 +vt 0.990566 0.790000 +vt 0.971698 0.670000 +vt 0.981132 0.790000 +vt 0.943396 0.670000 +vt 0.924528 0.670000 +vt 0.924528 0.790000 +vt 0.981132 0.670000 +vt 0.981132 0.640000 +vt 0.981132 0.660000 +vt 0.943396 0.660000 +vt 0.952830 0.640000 +vt 0.990566 0.640000 +vt 0.990566 0.650000 +vt 0.962264 0.640000 +vt 0.933962 0.640000 +vt 0.933962 0.650000 +vt 0.962264 0.610000 +vt 0.943396 0.620000 +vt 0.943396 0.640000 +vt 0.971698 0.640000 +vt 0.981132 0.620000 +vt 0.990566 0.630000 +vt 0.924528 0.640000 +vt 0.933962 0.630000 +vt 1.000000 0.640000 +vt 0.990566 0.610000 +vt 1.000000 0.010000 +vt 1.000000 0.610000 +vt 0.952830 0.610000 +vt 0.962264 0.010000 +vt 0.924528 0.610000 +vt 0.933962 0.010000 +vt 0.933962 0.610000 +vt 0.943396 0.010000 +vt 0.943396 0.610000 +vt 0.971698 0.610000 +vt 0.981132 0.010000 +vt 0.981132 0.610000 +vt 0.952830 0.010000 +vt 0.990566 0.010000 +vt 0.971698 0.010000 +vt 0.396226 0.000000 +vt 1.000000 0.670000 +vt 0.981132 0.620000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 0.933962 0.670000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.981132 0.620000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.981132 0.620000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 0.933962 0.670000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vt 1.000000 0.670000 +vt 0.924528 0.010000 +vn 1.0000 0.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 -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.8520 -0.5235 +vn 0.3343 0.4865 -0.8071 +vn 0.0000 0.4865 -0.8736 +vn 0.3795 0.1285 -0.9162 +vn 0.0000 0.1285 -0.9917 +vn 0.2003 0.8520 -0.4836 +vn 0.6178 0.4865 -0.6178 +vn 0.7012 0.1285 -0.7012 +vn 0.3701 0.8520 -0.3701 +vn 0.4836 0.8520 -0.2003 +vn 0.8071 0.4865 -0.3343 +vn 0.9162 0.1285 -0.3795 +vn 0.8736 0.4865 0.0000 +vn 0.9917 0.1285 0.0000 +vn 0.5235 0.8520 0.0000 +vn 0.8071 0.4865 0.3343 +vn 0.9162 0.1285 0.3795 +vn 0.4836 0.8520 0.2003 +vn 0.6178 0.4865 0.6178 +vn 0.7012 0.1285 0.7012 +vn 0.3701 0.8520 0.3701 +vn 0.3795 0.1285 0.9162 +vn 0.2003 0.8520 0.4836 +vn 0.3343 0.4865 0.8071 +vn 0.0000 0.1285 0.9917 +vn 0.0000 0.8520 0.5235 +vn 0.0000 0.4865 0.8736 +vn -0.2003 0.8520 0.4836 +vn -0.3343 0.4865 0.8071 +vn -0.3795 0.1285 0.9162 +vn -0.6178 0.4865 0.6178 +vn -0.7012 0.1285 0.7012 +vn -0.3701 0.8520 0.3701 +vn -0.8071 0.4865 0.3343 +vn -0.9917 0.1285 0.0000 +vn -0.9239 0.0000 0.3827 +vn -0.9162 0.1285 0.3795 +vn -0.4836 0.8520 0.2003 +vn 0.7071 0.0000 0.7071 +vn 0.3827 0.0000 0.9239 +vn -0.8736 0.4865 0.0000 +vn -0.7071 0.0000 0.7071 +vn -0.5235 0.8520 0.0000 +vn -0.8071 0.4865 -0.3343 +vn 0.9239 0.0000 0.3827 +vn -0.9162 0.1285 -0.3795 +vn -0.4836 0.8520 -0.2003 +vn 0.3827 0.0000 -0.9239 +vn -0.3701 0.8520 -0.3701 +vn -0.6178 0.4865 -0.6178 +vn -0.7012 0.1285 -0.7012 +vn -0.9239 0.0000 -0.3827 +vn -0.3795 0.1285 -0.9162 +vn -0.7071 0.0000 -0.7071 +vn -0.3827 0.0000 0.9239 +vn -0.3343 0.4865 -0.8071 +vn -0.2003 0.8520 -0.4836 +vn -0.3827 0.0000 -0.9239 +vn 0.7071 0.0000 -0.7071 +vn 0.9239 0.0000 -0.3827 +vn 0.1866 0.9824 0.0000 +vn 0.1447 0.7194 0.6794 +vn -0.1363 -0.6737 0.7263 +vn 0.0000 -0.7071 0.7071 +vn -0.1363 -0.6737 -0.7263 +vn 0.0000 -0.7071 -0.7071 +vn 0.1447 0.7194 -0.6794 +vn 0.0196 0.0473 0.9987 +vn -0.7071 -0.7071 0.0000 +vn 0.0196 0.0473 -0.9987 +vn 0.5293 0.5293 -0.6630 +vn 0.0670 0.0670 0.9955 +vn -0.4617 -0.4617 -0.7573 +vn -0.4617 -0.4617 0.7573 +vn 0.5293 0.5293 0.6630 +vn 0.9824 0.1866 0.0000 +vn 0.0473 0.0196 0.9987 +vn 0.7194 0.1447 -0.6794 +vn 0.0670 0.0670 -0.9955 +vn -0.6737 -0.1363 -0.7263 +vn -0.6737 -0.1363 0.7263 +vn 0.7194 0.1447 0.6794 +vn 0.0473 0.0196 -0.9987 +vn -0.1447 0.7194 0.6794 +vn -0.1447 0.7194 -0.6794 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 0.7263 +vn 0.7071 -0.7071 0.0000 +vn -0.0196 0.0473 0.9987 +vn -0.5293 0.5293 0.6630 +vn -0.0670 0.0670 -0.9955 +vn 0.4617 -0.4617 0.7573 +vn -0.1866 0.9824 0.0000 +vn 0.4617 -0.4617 -0.7573 +vn 0.1363 -0.6737 -0.7263 +vn -0.5293 0.5293 -0.6630 +vn -0.9824 0.1866 0.0000 +vn -0.0473 0.0196 -0.9987 +vn -0.0473 0.0196 0.9987 +vn -0.0670 0.0670 0.9955 +vn 0.6737 -0.1363 0.7263 +vn 0.6737 -0.1363 -0.7263 +vn -0.7194 0.1447 -0.6794 +vn -0.7194 0.1447 0.6794 +vn 0.0000 0.9824 -0.1866 +vn 0.6794 0.7194 -0.1447 +vn 0.7263 -0.6737 0.1363 +vn -0.7263 -0.6737 0.1363 +vn -0.6794 0.7194 -0.1447 +vn 0.9987 0.0473 -0.0196 +vn -0.9987 0.0473 -0.0196 +vn -0.6630 0.5293 -0.5293 +vn 0.9955 0.0670 -0.0670 +vn -0.7573 -0.4617 0.4617 +vn 0.7573 -0.4617 0.4617 +vn 0.6630 0.5293 -0.5293 +vn 0.0000 0.1866 -0.9824 +vn 0.9987 0.0196 -0.0473 +vn -0.6794 0.1447 -0.7194 +vn -0.9955 0.0670 -0.0670 +vn 0.6794 0.1447 -0.7194 +vn -0.7263 -0.1363 0.6737 +vn 0.7263 -0.1363 0.6737 +vn -0.9987 0.0196 -0.0473 +vn 0.6794 0.7194 0.1447 +vn -0.6794 0.7194 0.1447 +vn -0.9987 0.0473 0.0196 +vn 0.7263 -0.6737 -0.1363 +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.0000 0.9824 0.1866 +vn -0.7573 -0.4617 -0.4617 +vn -0.7263 -0.6737 -0.1363 +vn 0.0000 0.1866 0.9824 +vn -0.9987 0.0196 0.0473 +vn -0.9955 0.0670 0.0670 +vn 0.9987 0.0196 0.0473 +vn 0.9955 0.0670 0.0670 +vn 0.7263 -0.1363 -0.6737 +vn -0.7263 -0.1363 -0.6737 +vn -0.6794 0.1447 0.7194 +vn 0.6794 0.1447 0.7194 +s off +f 281/1/1 288/2/1 279/3/1 +f 6/4/2 7/5/2 5/6/2 +f 3/7/3 8/8/3 4/9/3 +f 2/10/4 5/11/4 1/12/4 +f 4/13/1 6/4/1 2/14/1 +f 1/15/5 7/16/5 3/17/5 +f 19/18/6 18/19/6 17/20/6 +f 15/21/2 13/22/2 14/23/2 +f 12/24/1 15/21/1 10/25/1 +f 9/26/5 13/27/5 11/28/5 +f 11/29/3 16/30/3 12/31/3 +f 10/32/4 14/33/4 9/34/4 +f 23/35/2 21/36/2 22/37/2 +f 19/38/3 24/39/3 20/40/3 +f 18/19/4 22/41/4 17/42/4 +f 20/40/1 23/35/1 18/19/1 +f 27/43/6 26/44/6 25/45/6 +f 31/46/2 29/47/2 30/48/2 +f 27/49/3 32/50/3 28/51/3 +f 26/44/4 30/52/4 25/53/4 +f 28/51/1 31/46/1 26/44/1 +f 35/54/6 34/55/6 33/56/6 +f 39/57/2 37/58/2 38/59/2 +f 35/60/3 40/61/3 36/62/3 +f 34/55/4 38/63/4 33/64/4 +f 36/62/1 39/57/1 34/55/1 +f 43/65/6 42/66/6 41/67/6 +f 47/68/2 45/69/2 46/70/2 +f 43/71/3 48/72/3 44/73/3 +f 42/66/4 46/74/4 41/75/4 +f 44/73/1 47/68/1 42/66/1 +f 51/76/6 50/77/6 49/78/6 +f 55/79/2 53/80/2 54/81/2 +f 51/82/4 56/83/4 52/84/4 +f 50/77/3 54/85/3 49/86/3 +f 52/84/5 55/79/5 50/77/5 +f 59/87/6 58/88/6 57/89/6 +f 63/90/2 61/91/2 62/92/2 +f 59/93/4 64/94/4 60/95/4 +f 58/88/3 62/96/3 57/97/3 +f 60/95/5 63/90/5 58/88/5 +f 67/98/6 66/99/6 65/100/6 +f 71/101/2 69/102/2 70/103/2 +f 67/104/4 72/105/4 68/106/4 +f 66/99/3 70/107/3 65/108/3 +f 68/106/5 71/101/5 66/99/5 +f 75/109/6 74/110/6 73/111/6 +f 79/112/2 77/113/2 78/114/2 +f 75/115/4 80/116/4 76/117/4 +f 74/110/3 78/118/3 73/119/3 +f 76/117/5 79/112/5 74/110/5 +f 83/120/6 82/121/6 81/122/6 +f 87/123/2 85/124/2 86/125/2 +f 83/126/5 88/127/5 84/128/5 +f 82/121/1 86/129/1 81/130/1 +f 84/128/3 87/123/3 82/121/3 +f 91/131/6 90/132/6 89/133/6 +f 95/134/2 93/135/2 94/136/2 +f 91/137/5 96/138/5 92/139/5 +f 90/132/1 94/140/1 89/141/1 +f 92/139/3 95/134/3 90/132/3 +f 99/142/6 98/143/6 97/144/6 +f 103/145/2 101/146/2 102/147/2 +f 99/148/5 104/149/5 100/150/5 +f 98/143/1 102/151/1 97/152/1 +f 100/150/3 103/145/3 98/143/3 +f 107/153/6 106/154/6 105/155/6 +f 111/156/2 109/157/2 110/158/2 +f 107/159/5 112/160/5 108/161/5 +f 106/154/1 110/162/1 105/163/1 +f 108/161/3 111/156/3 106/154/3 +f 115/164/6 114/165/6 113/166/6 +f 119/167/2 117/168/2 118/169/2 +f 115/170/1 120/171/1 116/172/1 +f 114/165/5 118/173/5 113/174/5 +f 116/172/4 119/167/4 114/165/4 +f 123/175/6 122/176/6 121/177/6 +f 127/178/2 125/179/2 126/180/2 +f 123/181/1 128/182/1 124/183/1 +f 122/176/5 126/184/5 121/185/5 +f 124/183/4 127/178/4 122/176/4 +f 131/186/6 130/187/6 129/188/6 +f 135/189/2 133/190/2 134/191/2 +f 131/192/1 136/193/1 132/194/1 +f 130/187/5 134/195/5 129/196/5 +f 132/194/4 135/189/4 130/187/4 +f 139/197/6 138/198/6 137/199/6 +f 143/200/2 141/201/2 142/202/2 +f 139/203/1 144/204/1 140/205/1 +f 138/198/5 142/206/5 137/207/5 +f 140/205/4 143/200/4 138/198/4 +f 223/208/2 224/209/2 222/210/2 +f 215/211/2 216/212/2 214/213/2 +f 213/214/1 215/211/1 211/215/1 +f 210/216/5 216/217/5 212/218/5 +f 212/218/3 217/219/3 213/214/3 +f 211/215/4 214/220/4 210/221/4 +f 221/222/1 223/223/1 219/224/1 +f 218/225/5 224/209/5 220/226/5 +f 220/226/3 225/227/3 221/222/3 +f 219/228/4 222/229/4 218/225/4 +f 232/230/3 229/231/3 233/232/3 +f 231/233/4 226/234/4 230/235/4 +f 233/232/1 227/236/1 231/233/1 +f 230/235/5 228/237/5 232/238/5 +f 240/239/3 237/240/3 241/241/3 +f 239/242/4 234/243/4 238/244/4 +f 241/245/1 235/246/1 239/242/1 +f 238/244/5 236/247/5 240/239/5 +f 236/247/2 235/248/2 237/249/2 +f 229/250/2 226/234/2 227/236/2 +f 243/251/2 244/252/2 242/253/2 +f 248/254/6 246/255/6 247/256/6 +f 244/252/5 247/257/5 242/253/5 +f 256/258/6 254/259/6 255/260/6 +f 243/251/1 249/261/1 245/262/1 +f 251/263/2 252/264/2 250/265/2 +f 252/264/1 255/266/1 250/265/1 +f 251/263/5 257/267/5 253/268/5 +f 259/269/2 260/270/2 258/271/2 +f 264/272/6 262/273/6 263/274/6 +f 260/270/4 263/275/4 258/271/4 +f 272/276/6 270/277/6 271/278/6 +f 259/269/3 265/279/3 261/280/3 +f 267/281/2 268/282/2 266/283/2 +f 268/282/3 271/284/3 266/283/3 +f 267/281/4 273/285/4 269/286/4 +f 280/287/6 279/3/6 278/288/6 +f 274/289/3 284/290/3 275/291/3 +f 277/292/4 282/293/4 276/294/4 +f 279/3/4 287/295/4 278/288/4 +f 3/296/6 274/297/6 1/298/6 +f 4/13/6 276/299/6 3/296/6 +f 2/14/6 277/300/6 4/13/6 +f 1/298/6 275/301/6 2/14/6 +f 285/302/6 286/303/6 282/293/6 +f 284/304/6 289/305/6 285/306/6 +f 283/307/6 288/308/6 284/290/6 +f 282/309/6 287/310/6 283/311/6 +f 278/288/5 286/312/5 280/287/5 +f 275/313/5 285/306/5 277/314/5 +f 276/315/1 283/311/1 274/316/1 +f 280/287/3 289/317/3 281/1/3 +f 291/318/2 292/319/2 290/320/2 +f 296/321/7 301/322/7 297/323/7 +f 291/318/1 297/323/1 293/324/1 +f 292/325/5 295/326/5 290/327/5 +f 293/328/3 294/329/3 292/330/3 +f 290/331/4 296/332/4 291/333/4 +f 301/322/3 302/334/3 298/335/3 +f 294/336/8 299/337/8 295/326/8 +f 297/338/9 298/335/9 294/329/9 +f 295/339/10 300/340/10 296/332/10 +f 299/341/4 304/342/4 300/340/4 +f 300/340/1 305/343/1 301/322/1 +f 298/335/5 303/344/5 299/337/5 +f 384/345/5 383/346/5 382/347/5 +f 387/348/2 388/349/2 386/350/2 +f 387/348/5 393/351/5 389/352/5 +f 389/352/4 390/353/4 388/354/4 +f 386/355/3 392/356/3 387/348/3 +f 400/357/1 399/358/1 398/359/1 +f 383/346/4 395/360/4 382/347/4 +f 385/361/6 396/362/6 383/346/6 +f 382/347/2 394/363/2 384/345/2 +f 384/345/3 397/364/3 385/361/3 +f 403/365/2 404/366/2 402/367/2 +f 403/365/1 409/368/1 405/369/1 +f 405/369/3 406/370/3 404/371/3 +f 402/372/4 408/373/4 403/365/4 +f 399/358/3 411/374/3 398/359/3 +f 401/375/6 412/376/6 399/358/6 +f 398/359/2 410/377/2 400/357/2 +f 400/357/4 413/378/4 401/375/4 +f 416/379/4 415/380/4 414/381/4 +f 419/382/2 420/383/2 418/384/2 +f 419/382/4 425/385/4 421/386/4 +f 421/386/1 422/387/1 420/388/1 +f 418/389/5 424/390/5 419/382/5 +f 432/391/3 431/392/3 430/393/3 +f 415/380/1 427/394/1 414/381/1 +f 417/395/6 428/396/6 415/380/6 +f 414/381/2 426/397/2 416/379/2 +f 416/379/5 429/398/5 417/395/5 +f 435/399/2 436/400/2 434/401/2 +f 435/399/3 441/402/3 437/403/3 +f 437/403/5 438/404/5 436/405/5 +f 434/406/1 440/407/1 435/399/1 +f 431/392/5 443/408/5 430/393/5 +f 433/409/6 444/410/6 431/392/6 +f 432/391/2 443/411/2 442/412/2 +f 432/391/1 445/413/1 433/409/1 +f 452/414/3 446/415/3 448/416/3 +f 447/417/4 453/418/4 449/419/4 +f 451/420/5 452/414/5 453/418/5 +f 460/421/4 454/422/4 456/423/4 +f 455/424/3 461/425/3 457/426/3 +f 459/427/1 460/421/1 461/425/1 +f 468/428/5 462/429/5 464/430/5 +f 463/431/1 469/432/1 465/433/1 +f 467/434/4 468/428/4 469/432/4 +f 476/435/1 470/436/1 472/437/1 +f 471/438/5 477/439/5 473/440/5 +f 475/441/3 476/435/3 477/439/3 +f 281/1/1 289/305/1 288/2/1 +f 6/4/2 8/442/2 7/5/2 +f 3/7/3 7/443/3 8/8/3 +f 2/10/4 6/444/4 5/11/4 +f 4/13/1 8/442/1 6/4/1 +f 1/15/5 5/445/5 7/16/5 +f 19/18/6 20/40/6 18/19/6 +f 15/21/2 16/446/2 13/22/2 +f 12/24/1 16/446/1 15/21/1 +f 9/26/5 14/447/5 13/27/5 +f 11/29/3 13/448/3 16/30/3 +f 10/32/4 15/449/4 14/33/4 +f 23/35/2 24/39/2 21/36/2 +f 19/38/3 21/450/3 24/39/3 +f 18/19/4 23/35/4 22/41/4 +f 20/40/1 24/39/1 23/35/1 +f 27/43/6 28/51/6 26/44/6 +f 31/46/2 32/50/2 29/47/2 +f 27/49/3 29/451/3 32/50/3 +f 26/44/4 31/46/4 30/52/4 +f 28/51/1 32/50/1 31/46/1 +f 35/54/6 36/62/6 34/55/6 +f 39/57/2 40/61/2 37/58/2 +f 35/60/3 37/452/3 40/61/3 +f 34/55/4 39/57/4 38/63/4 +f 36/62/1 40/61/1 39/57/1 +f 43/65/6 44/73/6 42/66/6 +f 47/68/2 48/72/2 45/69/2 +f 43/71/3 45/453/3 48/72/3 +f 42/66/4 47/68/4 46/74/4 +f 44/73/1 48/72/1 47/68/1 +f 51/76/6 52/84/6 50/77/6 +f 55/79/2 56/83/2 53/80/2 +f 51/82/4 53/454/4 56/83/4 +f 50/77/3 55/79/3 54/85/3 +f 52/84/5 56/83/5 55/79/5 +f 59/87/6 60/95/6 58/88/6 +f 63/90/2 64/94/2 61/91/2 +f 59/93/4 61/455/4 64/94/4 +f 58/88/3 63/90/3 62/96/3 +f 60/95/5 64/94/5 63/90/5 +f 67/98/6 68/106/6 66/99/6 +f 71/101/2 72/105/2 69/102/2 +f 67/104/4 69/456/4 72/105/4 +f 66/99/3 71/101/3 70/107/3 +f 68/106/5 72/105/5 71/101/5 +f 75/109/6 76/117/6 74/110/6 +f 79/112/2 80/116/2 77/113/2 +f 75/115/4 77/457/4 80/116/4 +f 74/110/3 79/112/3 78/118/3 +f 76/117/5 80/116/5 79/112/5 +f 83/120/6 84/128/6 82/121/6 +f 87/123/2 88/127/2 85/124/2 +f 83/126/5 85/458/5 88/127/5 +f 82/121/1 87/123/1 86/129/1 +f 84/128/3 88/127/3 87/123/3 +f 91/131/6 92/139/6 90/132/6 +f 95/134/2 96/138/2 93/135/2 +f 91/137/5 93/459/5 96/138/5 +f 90/132/1 95/134/1 94/140/1 +f 92/139/3 96/138/3 95/134/3 +f 99/142/6 100/150/6 98/143/6 +f 103/145/2 104/149/2 101/146/2 +f 99/148/5 101/460/5 104/149/5 +f 98/143/1 103/145/1 102/151/1 +f 100/150/3 104/149/3 103/145/3 +f 107/153/6 108/161/6 106/154/6 +f 111/156/2 112/160/2 109/157/2 +f 107/159/5 109/461/5 112/160/5 +f 106/154/1 111/156/1 110/162/1 +f 108/161/3 112/160/3 111/156/3 +f 115/164/6 116/172/6 114/165/6 +f 119/167/2 120/171/2 117/168/2 +f 115/170/1 117/462/1 120/171/1 +f 114/165/5 119/167/5 118/173/5 +f 116/172/4 120/171/4 119/167/4 +f 123/175/6 124/183/6 122/176/6 +f 127/178/2 128/182/2 125/179/2 +f 123/181/1 125/463/1 128/182/1 +f 122/176/5 127/178/5 126/184/5 +f 124/183/4 128/182/4 127/178/4 +f 131/186/6 132/194/6 130/187/6 +f 135/189/2 136/193/2 133/190/2 +f 131/192/1 133/464/1 136/193/1 +f 130/187/5 135/189/5 134/195/5 +f 132/194/4 136/193/4 135/189/4 +f 139/197/6 140/205/6 138/198/6 +f 143/200/2 144/204/2 141/201/2 +f 139/203/1 141/465/1 144/204/1 +f 138/198/5 143/200/5 142/206/5 +f 140/205/4 144/204/4 143/200/4 +f 223/208/2 225/227/2 224/209/2 +f 215/211/2 217/219/2 216/212/2 +f 213/214/1 217/219/1 215/211/1 +f 210/216/5 214/466/5 216/217/5 +f 212/218/3 216/217/3 217/219/3 +f 211/215/4 215/211/4 214/220/4 +f 221/222/1 225/227/1 223/223/1 +f 218/225/5 222/229/5 224/209/5 +f 220/226/3 224/209/3 225/227/3 +f 219/228/4 223/467/4 222/229/4 +f 232/230/3 228/468/3 229/231/3 +f 231/233/4 227/236/4 226/234/4 +f 233/232/1 229/231/1 227/236/1 +f 230/235/5 226/234/5 228/237/5 +f 240/239/3 236/247/3 237/240/3 +f 239/242/4 235/246/4 234/243/4 +f 241/245/1 237/469/1 235/246/1 +f 238/244/5 234/243/5 236/247/5 +f 236/247/2 234/243/2 235/248/2 +f 229/250/2 228/470/2 226/234/2 +f 243/251/2 245/262/2 244/252/2 +f 248/254/6 249/261/6 246/255/6 +f 244/252/5 248/471/5 247/257/5 +f 256/258/6 257/267/6 254/259/6 +f 243/251/1 246/255/1 249/261/1 +f 251/263/2 253/268/2 252/264/2 +f 252/264/1 256/472/1 255/266/1 +f 251/263/5 254/259/5 257/267/5 +f 259/269/2 261/280/2 260/270/2 +f 264/272/6 265/279/6 262/273/6 +f 260/270/4 264/473/4 263/275/4 +f 272/276/6 273/285/6 270/277/6 +f 259/269/3 262/273/3 265/279/3 +f 267/281/2 269/286/2 268/282/2 +f 268/282/3 272/474/3 271/284/3 +f 267/281/4 270/277/4 273/285/4 +f 280/287/6 281/1/6 279/3/6 +f 274/289/3 283/307/3 284/290/3 +f 277/292/4 285/302/4 282/293/4 +f 279/3/4 288/308/4 287/295/4 +f 3/296/6 276/299/6 274/297/6 +f 4/13/6 277/300/6 276/299/6 +f 2/14/6 275/301/6 277/300/6 +f 1/298/6 274/297/6 275/301/6 +f 285/302/6 289/317/6 286/303/6 +f 284/304/6 288/2/6 289/305/6 +f 283/307/6 287/295/6 288/308/6 +f 282/309/6 286/312/6 287/310/6 +f 278/288/5 287/310/5 286/312/5 +f 275/313/5 284/304/5 285/306/5 +f 276/315/1 282/309/1 283/311/1 +f 280/287/3 286/303/3 289/317/3 +f 291/318/2 293/324/2 292/319/2 +f 296/321/7 300/340/7 301/322/7 +f 291/318/1 296/321/1 297/323/1 +f 292/325/5 294/336/5 295/326/5 +f 293/328/3 297/338/3 294/329/3 +f 290/331/4 295/339/4 296/332/4 +f 301/322/3 305/343/3 302/334/3 +f 294/336/8 298/335/8 299/337/8 +f 297/338/9 301/322/9 298/335/9 +f 295/339/10 299/341/10 300/340/10 +f 299/341/4 303/475/4 304/342/4 +f 300/340/1 304/342/1 305/343/1 +f 298/335/5 302/334/5 303/344/5 +f 384/345/5 385/361/5 383/346/5 +f 387/348/2 389/352/2 388/349/2 +f 387/348/5 392/356/5 393/351/5 +f 389/352/4 393/351/4 390/353/4 +f 386/355/3 391/476/3 392/356/3 +f 400/357/1 401/375/1 399/358/1 +f 383/346/4 396/477/4 395/360/4 +f 385/361/6 397/478/6 396/362/6 +f 382/347/2 395/479/2 394/363/2 +f 384/345/3 394/480/3 397/364/3 +f 403/365/2 405/369/2 404/366/2 +f 403/365/1 408/373/1 409/368/1 +f 405/369/3 409/368/3 406/370/3 +f 402/372/4 407/481/4 408/373/4 +f 399/358/3 412/482/3 411/374/3 +f 401/375/6 413/483/6 412/376/6 +f 398/359/2 411/484/2 410/377/2 +f 400/357/4 410/485/4 413/378/4 +f 416/379/4 417/395/4 415/380/4 +f 419/382/2 421/386/2 420/383/2 +f 419/382/4 424/390/4 425/385/4 +f 421/386/1 425/385/1 422/387/1 +f 418/389/5 423/486/5 424/390/5 +f 432/391/3 433/409/3 431/392/3 +f 415/380/1 428/487/1 427/394/1 +f 417/395/6 429/488/6 428/396/6 +f 414/381/2 427/489/2 426/397/2 +f 416/379/5 426/490/5 429/398/5 +f 435/399/2 437/403/2 436/400/2 +f 435/399/3 440/407/3 441/402/3 +f 437/403/5 441/402/5 438/404/5 +f 434/406/1 439/491/1 440/407/1 +f 431/392/5 444/492/5 443/408/5 +f 433/409/6 445/493/6 444/410/6 +f 432/391/2 430/393/2 443/411/2 +f 432/391/1 442/494/1 445/413/1 +f 452/414/3 450/495/3 446/415/3 +f 447/417/4 451/420/4 453/418/4 +f 451/420/5 450/495/5 452/414/5 +f 460/421/4 458/496/4 454/422/4 +f 455/424/3 459/427/3 461/425/3 +f 459/427/1 458/496/1 460/421/1 +f 468/428/5 466/497/5 462/429/5 +f 463/431/1 467/434/1 469/432/1 +f 467/434/4 466/497/4 468/428/4 +f 476/435/1 474/498/1 470/436/1 +f 471/438/5 475/441/5 477/439/5 +f 475/441/3 474/498/3 476/435/3 +s 1 +f 207/499/11 148/500/12 145/501/13 +f 145/501/13 149/502/14 146/503/15 +f 207/499/11 206/504/2 147/505/16 +f 147/506/16 151/507/17 148/508/12 +f 148/508/12 152/509/18 149/502/14 +f 147/506/16 206/510/2 150/511/19 +f 151/512/17 153/513/20 154/514/21 +f 152/509/18 154/514/21 155/515/22 +f 150/516/19 206/517/2 153/513/20 +f 155/515/22 157/518/23 158/519/24 +f 153/520/20 206/521/2 156/522/25 +f 153/520/20 157/518/23 154/523/21 +f 158/519/24 160/524/26 161/525/27 +f 156/526/25 206/527/2 159/528/28 +f 156/526/25 160/524/26 157/529/23 +f 161/525/27 163/530/29 164/531/30 +f 159/532/28 206/533/2 162/534/31 +f 160/535/26 162/534/31 163/530/29 +f 163/536/29 167/537/32 164/531/30 +f 162/538/31 206/539/2 165/540/33 +f 162/538/31 166/541/34 163/536/29 +f 166/542/34 170/543/35 167/537/32 +f 165/544/33 206/545/2 168/546/36 +f 165/544/33 169/547/37 166/542/34 +f 168/548/36 206/549/2 171/550/38 +f 168/548/36 172/551/39 169/552/37 +f 170/543/35 172/551/39 173/553/40 +f 171/554/38 177/555/41 172/556/39 +f 172/556/39 178/557/42 173/553/40 +f 171/554/38 206/558/2 176/559/43 +f 176/560/43 182/561/44 177/562/41 +f 188/563/45 184/564/46 183/565/47 +f 178/557/42 182/561/44 183/565/47 +f 176/560/43 206/566/2 181/567/48 +f 167/537/32 195/568/49 164/531/30 +f 170/543/35 194/569/50 167/537/32 +f 181/570/48 187/571/51 182/572/44 +f 183/565/47 185/573/52 178/557/42 +f 183/565/47 187/571/51 188/563/45 +f 181/570/48 206/574/2 186/575/53 +f 149/502/14 209/576/3 146/503/15 +f 186/577/53 192/578/54 187/579/51 +f 164/531/30 199/580/55 161/525/27 +f 187/579/51 193/581/56 188/582/45 +f 186/577/53 206/583/2 191/584/57 +f 152/509/18 208/585/58 149/502/14 +f 192/586/54 196/587/59 197/588/60 +f 198/589/61 179/590/62 193/581/56 +f 193/581/56 197/588/60 198/589/61 +f 191/591/57 206/592/2 196/587/59 +f 203/593/63 175/594/64 198/589/61 +f 178/557/42 189/595/65 173/553/40 +f 173/553/40 190/596/4 170/543/35 +f 198/589/61 202/597/66 203/593/63 +f 196/598/59 206/599/2 201/600/67 +f 161/525/27 200/601/1 158/519/24 +f 146/503/15 174/602/68 203/593/63 +f 196/598/59 202/597/66 197/603/60 +f 155/515/22 205/604/69 152/509/18 +f 203/593/63 145/605/13 146/503/15 +f 201/606/67 206/607/2 207/608/11 +f 158/519/24 204/609/70 155/515/22 +f 193/581/56 180/610/5 188/582/45 +f 202/611/66 207/608/11 145/605/13 +f 314/612/71 307/613/9 306/614/2 +f 321/615/72 306/614/2 313/616/10 +f 319/617/73 312/618/4 311/619/74 +f 317/620/75 310/621/6 309/622/76 +f 315/623/77 308/624/3 307/613/9 +f 320/625/78 313/616/10 312/618/4 +f 318/626/79 311/619/74 310/627/6 +f 316/628/80 309/622/76 308/624/3 +f 323/629/81 316/630/80 315/623/77 +f 327/631/82 321/615/72 320/632/78 +f 316/630/80 325/633/83 317/634/75 +f 322/635/7 315/623/77 314/612/71 +f 321/615/72 322/635/7 314/612/71 +f 326/636/84 320/632/78 319/637/73 +f 328/638/85 329/639/86 322/635/7 +f 326/636/84 334/640/87 327/631/82 +f 330/641/88 324/642/89 323/629/81 +f 334/640/87 328/638/85 327/631/82 +f 324/642/89 332/643/90 325/633/83 +f 329/639/86 323/629/81 322/635/7 +f 319/637/73 318/644/79 326/636/84 +f 326/636/84 318/644/79 333/645/91 +f 317/634/75 325/633/83 318/646/79 +f 325/633/83 332/643/90 318/646/79 +f 332/647/90 336/648/5 318/649/79 +f 335/650/92 337/651/1 329/639/86 +f 318/652/79 341/653/52 333/654/91 +f 333/654/91 342/655/4 334/656/87 +f 330/641/88 339/657/3 331/658/93 +f 334/656/87 343/659/49 335/650/92 +f 331/658/93 340/660/64 332/647/90 +f 329/639/86 338/661/69 330/641/88 +f 352/662/71 345/663/9 344/664/2 +f 359/665/72 344/664/2 351/666/10 +f 357/667/73 350/668/4 349/669/74 +f 355/670/75 348/671/6 347/672/76 +f 353/673/77 346/674/3 345/663/9 +f 358/675/78 351/666/10 350/668/4 +f 356/676/79 349/669/74 348/677/6 +f 354/678/80 347/672/76 346/674/3 +f 353/673/77 362/679/89 354/680/80 +f 358/681/78 366/682/85 359/665/72 +f 354/680/80 363/683/83 355/684/75 +f 360/685/7 353/673/77 352/662/71 +f 359/665/72 360/685/7 352/662/71 +f 364/686/84 358/681/78 357/687/73 +f 366/682/85 367/688/86 360/685/7 +f 364/686/84 372/689/87 365/690/82 +f 361/691/81 369/692/93 362/679/89 +f 365/690/82 373/693/92 366/682/85 +f 362/679/89 370/694/90 363/683/83 +f 367/688/86 361/691/81 360/685/7 +f 357/687/73 356/695/79 364/686/84 +f 364/686/84 356/695/79 371/696/91 +f 355/684/75 363/683/83 356/697/79 +f 363/683/83 370/694/90 356/697/79 +f 370/698/90 374/699/5 356/700/79 +f 373/693/92 375/701/1 367/688/86 +f 356/702/79 379/703/52 371/704/91 +f 371/704/91 380/705/4 372/706/87 +f 368/707/88 377/708/3 369/709/93 +f 372/706/87 381/710/49 373/693/92 +f 369/709/93 378/711/64 370/698/90 +f 367/688/86 376/712/69 368/707/88 +f 478/713/2 487/714/94 479/715/10 +f 493/716/95 478/713/2 485/717/9 +f 483/718/76 492/719/96 484/720/3 +f 489/721/97 482/722/6 481/723/74 +f 487/714/94 480/724/4 479/715/10 +f 492/719/96 485/717/9 484/720/3 +f 490/725/98 483/718/76 482/726/6 +f 488/727/99 481/723/74 480/724/4 +f 495/728/100 488/729/99 487/714/94 +f 499/730/101 493/716/95 492/731/96 +f 488/729/99 497/732/102 489/733/97 +f 494/734/8 487/714/94 486/735/103 +f 493/716/95 494/734/8 486/735/103 +f 498/736/104 492/731/96 491/737/105 +f 500/738/106 501/739/107 494/734/8 +f 498/736/104 506/740/108 499/730/101 +f 495/728/100 503/741/109 496/742/110 +f 506/740/108 500/738/106 499/730/101 +f 496/742/110 504/743/111 497/732/102 +f 501/739/107 495/728/100 494/734/8 +f 491/737/105 490/744/98 498/736/104 +f 498/736/104 490/744/98 505/745/112 +f 489/733/97 497/732/102 490/746/98 +f 497/732/102 504/743/111 490/746/98 +f 504/747/111 508/748/1 490/749/98 +f 507/750/113 509/751/5 501/739/107 +f 490/752/98 513/753/69 505/754/112 +f 505/754/112 514/755/3 506/756/108 +f 502/757/114 511/758/4 503/759/109 +f 506/756/108 515/760/64 507/750/113 +f 503/759/109 512/761/49 504/747/111 +f 501/739/107 510/762/52 502/757/114 +f 524/763/103 517/764/10 516/765/2 +f 531/766/95 516/765/2 523/767/9 +f 529/768/105 522/769/3 521/770/76 +f 527/771/97 520/772/6 519/773/74 +f 525/774/94 518/775/4 517/764/10 +f 530/776/96 523/767/9 522/769/3 +f 528/777/98 521/770/76 520/778/6 +f 526/779/99 519/773/74 518/775/4 +f 533/780/100 526/781/99 525/774/94 +f 530/782/96 538/783/106 531/766/95 +f 526/781/99 535/784/102 527/785/97 +f 532/786/8 525/774/94 524/763/103 +f 538/783/106 524/763/103 531/766/95 +f 536/787/104 530/782/96 529/788/105 +f 538/783/106 539/789/107 532/786/8 +f 543/790/112 537/791/101 536/787/104 +f 540/792/114 534/793/110 533/780/100 +f 544/794/108 538/783/106 537/791/101 +f 534/793/110 542/795/111 535/784/102 +f 539/789/107 533/780/100 532/786/8 +f 529/788/105 528/796/98 536/787/104 +f 536/787/104 528/796/98 543/790/112 +f 527/785/97 535/784/102 528/797/98 +f 535/784/102 542/795/111 528/797/98 +f 542/798/111 546/799/1 528/800/98 +f 545/801/113 547/802/5 539/789/107 +f 528/803/98 551/804/69 543/805/112 +f 543/805/112 552/806/3 544/807/108 +f 540/792/114 549/808/4 541/809/109 +f 544/807/108 553/810/64 545/801/113 +f 541/809/109 550/811/49 542/798/111 +f 539/789/107 548/812/52 540/792/114 +f 562/813/115 555/814/8 554/815/2 +f 569/816/116 554/815/2 561/817/7 +f 567/818/117 560/819/1 559/820/98 +f 565/821/118 558/822/6 557/823/79 +f 563/824/119 556/825/5 555/814/8 +f 568/826/120 561/817/7 560/819/1 +f 566/827/74 559/820/98 558/828/6 +f 564/829/121 557/823/79 556/825/5 +f 571/830/122 564/831/121 563/824/119 +f 575/832/123 569/816/116 568/833/120 +f 564/831/121 573/834/124 565/835/118 +f 570/836/9 563/824/119 562/813/115 +f 569/816/116 570/836/9 562/813/115 +f 574/837/125 568/833/120 567/838/117 +f 576/839/126 577/840/127 570/836/9 +f 574/837/125 582/841/128 575/832/123 +f 578/842/129 572/843/130 571/830/122 +f 575/832/123 583/844/131 576/839/126 +f 572/843/130 580/845/132 573/834/124 +f 577/840/127 571/830/122 570/836/9 +f 567/838/117 566/846/74 574/837/125 +f 574/837/125 566/846/74 581/847/133 +f 565/835/118 573/834/124 566/848/74 +f 573/834/124 580/845/132 566/848/74 +f 580/849/132 584/850/4 566/851/74 +f 583/844/131 585/852/3 577/840/127 +f 566/853/74 589/854/49 581/855/133 +f 581/855/133 590/856/1 582/857/128 +f 578/842/129 587/858/5 579/859/134 +f 582/857/128 591/860/69 583/844/131 +f 579/859/134 588/861/52 580/849/132 +f 577/840/127 586/862/64 578/842/129 +f 600/863/115 593/864/8 592/865/2 +f 607/866/116 592/865/2 599/867/7 +f 605/868/117 598/869/1 597/870/98 +f 603/871/118 596/872/6 595/873/79 +f 601/874/119 594/875/5 593/864/8 +f 606/876/120 599/867/7 598/869/1 +f 604/877/74 597/870/98 596/878/6 +f 602/879/121 595/873/79 594/875/5 +f 601/874/119 610/880/130 602/881/121 +f 606/882/120 614/883/126 607/866/116 +f 602/881/121 611/884/124 603/885/118 +f 608/886/9 601/874/119 600/863/115 +f 607/866/116 608/886/9 600/863/115 +f 612/887/125 606/882/120 605/888/117 +f 614/883/126 615/889/127 608/886/9 +f 612/887/125 620/890/128 613/891/123 +f 609/892/122 617/893/134 610/880/130 +f 613/891/123 621/894/131 614/883/126 +f 610/880/130 618/895/132 611/884/124 +f 615/889/127 609/892/122 608/886/9 +f 605/888/117 604/896/74 612/887/125 +f 612/887/125 604/896/74 619/897/133 +f 603/885/118 611/884/124 604/898/74 +f 611/884/124 618/895/132 604/898/74 +f 618/899/132 622/900/4 604/901/74 +f 621/894/131 623/902/3 615/889/127 +f 604/903/74 627/904/49 619/905/133 +f 619/905/133 628/906/1 620/907/128 +f 616/908/129 625/909/5 617/910/134 +f 620/907/128 629/911/69 621/894/131 +f 617/910/134 626/912/52 618/899/132 +f 615/889/127 624/913/64 616/908/129 +f 630/914/2 639/915/135 631/916/7 +f 645/917/136 630/914/2 637/918/8 +f 635/919/79 644/920/137 636/921/5 +f 641/922/138 634/923/6 633/924/98 +f 639/915/135 632/925/1 631/916/7 +f 644/920/137 637/918/8 636/921/5 +f 642/926/76 635/919/79 634/927/6 +f 640/928/139 633/924/98 632/925/1 +f 647/929/140 640/930/139 639/915/135 +f 644/931/137 652/932/141 645/917/136 +f 640/930/139 649/933/142 641/934/138 +f 646/935/10 639/915/135 638/936/143 +f 645/917/136 646/935/10 638/936/143 +f 650/937/144 644/931/137 643/938/145 +f 652/932/141 653/939/146 646/935/10 +f 650/937/144 658/940/147 651/941/148 +f 647/929/140 655/942/149 648/943/150 +f 658/940/147 652/932/141 651/941/148 +f 648/943/150 656/944/151 649/933/142 +f 653/939/146 647/929/140 646/935/10 +f 643/938/145 642/945/76 650/937/144 +f 650/937/144 642/945/76 657/946/152 +f 641/934/138 649/933/142 642/947/76 +f 649/933/142 656/944/151 642/947/76 +f 656/948/151 660/949/3 642/950/76 +f 659/951/153 661/952/4 653/939/146 +f 642/953/76 665/954/64 657/955/152 +f 657/955/152 666/956/5 658/957/147 +f 654/958/154 663/959/1 655/960/149 +f 658/957/147 667/961/52 659/951/153 +f 655/960/149 664/962/69 656/948/151 +f 653/939/146 662/963/49 654/958/154 +f 676/964/143 669/965/7 668/966/2 +f 683/967/136 668/966/2 675/968/8 +f 681/969/145 674/970/5 673/971/79 +f 679/972/138 672/973/6 671/974/98 +f 677/975/135 670/976/1 669/965/7 +f 682/977/137 675/968/8 674/970/5 +f 680/978/76 673/971/79 672/979/6 +f 678/980/139 671/974/98 670/976/1 +f 677/975/135 686/981/150 678/982/139 +f 682/983/137 690/984/141 683/967/136 +f 678/982/139 687/985/142 679/986/138 +f 684/987/10 677/975/135 676/964/143 +f 690/984/141 676/964/143 683/967/136 +f 688/988/144 682/983/137 681/989/145 +f 690/984/141 691/990/146 684/987/10 +f 688/988/144 696/991/147 689/992/148 +f 685/993/140 693/994/149 686/981/150 +f 696/991/147 690/984/141 689/992/148 +f 686/981/150 694/995/151 687/985/142 +f 691/990/146 685/993/140 684/987/10 +f 681/989/145 680/996/76 688/988/144 +f 688/988/144 680/996/76 695/997/152 +f 679/986/138 687/985/142 680/998/76 +f 687/985/142 694/995/151 680/998/76 +f 694/999/151 698/1000/3 680/1001/76 +f 697/1002/153 699/1003/4 691/990/146 +f 680/1004/76 703/1005/64 695/1006/152 +f 695/1006/152 704/1007/5 696/1008/147 +f 692/1009/154 701/1010/1 693/1011/149 +f 696/1008/147 705/1012/52 697/1002/153 +f 693/1011/149 702/1013/69 694/999/151 +f 691/990/146 700/1014/49 692/1009/154 +f 207/499/11 147/505/16 148/500/12 +f 145/501/13 148/500/12 149/502/14 +f 147/506/16 150/511/19 151/507/17 +f 148/508/12 151/507/17 152/509/18 +f 151/512/17 150/516/19 153/513/20 +f 152/509/18 151/512/17 154/514/21 +f 155/515/22 154/523/21 157/518/23 +f 153/520/20 156/522/25 157/518/23 +f 158/519/24 157/529/23 160/524/26 +f 156/526/25 159/528/28 160/524/26 +f 161/525/27 160/535/26 163/530/29 +f 160/535/26 159/532/28 162/534/31 +f 163/536/29 166/541/34 167/537/32 +f 162/538/31 165/540/33 166/541/34 +f 166/542/34 169/547/37 170/543/35 +f 165/544/33 168/546/36 169/547/37 +f 168/548/36 171/550/38 172/551/39 +f 170/543/35 169/552/37 172/551/39 +f 171/554/38 176/559/43 177/555/41 +f 172/556/39 177/555/41 178/557/42 +f 176/560/43 181/567/48 182/561/44 +f 188/563/45 180/1015/5 184/564/46 +f 178/557/42 177/562/41 182/561/44 +f 167/537/32 194/569/50 195/568/49 +f 170/543/35 190/596/4 194/569/50 +f 181/570/48 186/575/53 187/571/51 +f 183/565/47 184/564/46 185/573/52 +f 183/565/47 182/572/44 187/571/51 +f 149/502/14 208/585/58 209/576/3 +f 186/577/53 191/584/57 192/578/54 +f 164/531/30 195/568/49 199/580/55 +f 187/579/51 192/578/54 193/581/56 +f 152/509/18 205/604/69 208/585/58 +f 192/586/54 191/591/57 196/587/59 +f 198/589/61 175/594/64 179/590/62 +f 193/581/56 192/586/54 197/588/60 +f 203/593/63 174/602/68 175/594/64 +f 178/557/42 185/573/52 189/595/65 +f 173/553/40 189/595/65 190/596/4 +f 198/589/61 197/603/60 202/597/66 +f 161/525/27 199/580/55 200/601/1 +f 146/503/15 209/576/3 174/602/68 +f 196/598/59 201/600/67 202/597/66 +f 155/515/22 204/609/70 205/604/69 +f 203/593/63 202/611/66 145/605/13 +f 158/519/24 200/601/1 204/609/70 +f 193/581/56 179/590/62 180/610/5 +f 202/611/66 201/606/67 207/608/11 +f 314/612/71 315/623/77 307/613/9 +f 321/615/72 314/612/71 306/614/2 +f 319/617/73 320/625/78 312/618/4 +f 317/620/75 318/1016/79 310/621/6 +f 315/623/77 316/628/80 308/624/3 +f 320/625/78 321/615/72 313/616/10 +f 318/626/79 319/617/73 311/619/74 +f 316/628/80 317/620/75 309/622/76 +f 323/629/81 324/642/89 316/630/80 +f 327/631/82 328/638/85 321/615/72 +f 316/630/80 324/642/89 325/633/83 +f 322/635/7 323/629/81 315/623/77 +f 321/615/72 328/638/85 322/635/7 +f 326/636/84 327/631/82 320/632/78 +f 328/638/85 335/650/92 329/639/86 +f 326/636/84 333/645/91 334/640/87 +f 330/641/88 331/1017/93 324/642/89 +f 334/640/87 335/650/92 328/638/85 +f 324/642/89 331/1017/93 332/643/90 +f 329/639/86 330/641/88 323/629/81 +f 332/647/90 340/660/64 336/648/5 +f 335/650/92 343/659/49 337/651/1 +f 318/652/79 336/1018/5 341/653/52 +f 333/654/91 341/653/52 342/655/4 +f 330/641/88 338/661/69 339/657/3 +f 334/656/87 342/655/4 343/659/49 +f 331/658/93 339/657/3 340/660/64 +f 329/639/86 337/651/1 338/661/69 +f 352/662/71 353/673/77 345/663/9 +f 359/665/72 352/662/71 344/664/2 +f 357/667/73 358/675/78 350/668/4 +f 355/670/75 356/1019/79 348/671/6 +f 353/673/77 354/678/80 346/674/3 +f 358/675/78 359/665/72 351/666/10 +f 356/676/79 357/667/73 349/669/74 +f 354/678/80 355/670/75 347/672/76 +f 353/673/77 361/691/81 362/679/89 +f 358/681/78 365/690/82 366/682/85 +f 354/680/80 362/679/89 363/683/83 +f 360/685/7 361/691/81 353/673/77 +f 359/665/72 366/682/85 360/685/7 +f 364/686/84 365/690/82 358/681/78 +f 366/682/85 373/693/92 367/688/86 +f 364/686/84 371/696/91 372/689/87 +f 361/691/81 368/707/88 369/692/93 +f 365/690/82 372/689/87 373/693/92 +f 362/679/89 369/692/93 370/694/90 +f 367/688/86 368/707/88 361/691/81 +f 370/698/90 378/711/64 374/699/5 +f 373/693/92 381/710/49 375/701/1 +f 356/702/79 374/1020/5 379/703/52 +f 371/704/91 379/703/52 380/705/4 +f 368/707/88 376/712/69 377/708/3 +f 372/706/87 380/705/4 381/710/49 +f 369/709/93 377/708/3 378/711/64 +f 367/688/86 375/701/1 376/712/69 +f 478/713/2 486/735/103 487/714/94 +f 493/716/95 486/735/103 478/713/2 +f 483/718/76 491/1021/105 492/719/96 +f 489/721/97 490/1022/98 482/722/6 +f 487/714/94 488/727/99 480/724/4 +f 492/719/96 493/716/95 485/717/9 +f 490/725/98 491/1021/105 483/718/76 +f 488/727/99 489/721/97 481/723/74 +f 495/728/100 496/742/110 488/729/99 +f 499/730/101 500/738/106 493/716/95 +f 488/729/99 496/742/110 497/732/102 +f 494/734/8 495/728/100 487/714/94 +f 493/716/95 500/738/106 494/734/8 +f 498/736/104 499/730/101 492/731/96 +f 500/738/106 507/750/113 501/739/107 +f 498/736/104 505/745/112 506/740/108 +f 495/728/100 502/757/114 503/741/109 +f 506/740/108 507/750/113 500/738/106 +f 496/742/110 503/741/109 504/743/111 +f 501/739/107 502/757/114 495/728/100 +f 504/747/111 512/761/49 508/748/1 +f 507/750/113 515/760/64 509/751/5 +f 490/752/98 508/1023/1 513/753/69 +f 505/754/112 513/753/69 514/755/3 +f 502/757/114 510/762/52 511/758/4 +f 506/756/108 514/755/3 515/760/64 +f 503/759/109 511/758/4 512/761/49 +f 501/739/107 509/751/5 510/762/52 +f 524/763/103 525/774/94 517/764/10 +f 531/766/95 524/763/103 516/765/2 +f 529/768/105 530/776/96 522/769/3 +f 527/771/97 528/1024/98 520/772/6 +f 525/774/94 526/779/99 518/775/4 +f 530/776/96 531/766/95 523/767/9 +f 528/777/98 529/768/105 521/770/76 +f 526/779/99 527/771/97 519/773/74 +f 533/780/100 534/793/110 526/781/99 +f 530/782/96 537/791/101 538/783/106 +f 526/781/99 534/793/110 535/784/102 +f 532/786/8 533/780/100 525/774/94 +f 538/783/106 532/786/8 524/763/103 +f 536/787/104 537/791/101 530/782/96 +f 538/783/106 545/801/113 539/789/107 +f 543/790/112 544/794/108 537/791/101 +f 540/792/114 541/1025/109 534/793/110 +f 544/794/108 545/801/113 538/783/106 +f 534/793/110 541/1025/109 542/795/111 +f 539/789/107 540/792/114 533/780/100 +f 542/798/111 550/811/49 546/799/1 +f 545/801/113 553/810/64 547/802/5 +f 528/803/98 546/1026/1 551/804/69 +f 543/805/112 551/804/69 552/806/3 +f 540/792/114 548/812/52 549/808/4 +f 544/807/108 552/806/3 553/810/64 +f 541/809/109 549/808/4 550/811/49 +f 539/789/107 547/802/5 548/812/52 +f 562/813/115 563/824/119 555/814/8 +f 569/816/116 562/813/115 554/815/2 +f 567/818/117 568/826/120 560/819/1 +f 565/821/118 566/1027/74 558/822/6 +f 563/824/119 564/829/121 556/825/5 +f 568/826/120 569/816/116 561/817/7 +f 566/827/74 567/818/117 559/820/98 +f 564/829/121 565/821/118 557/823/79 +f 571/830/122 572/843/130 564/831/121 +f 575/832/123 576/839/126 569/816/116 +f 564/831/121 572/843/130 573/834/124 +f 570/836/9 571/830/122 563/824/119 +f 569/816/116 576/839/126 570/836/9 +f 574/837/125 575/832/123 568/833/120 +f 576/839/126 583/844/131 577/840/127 +f 574/837/125 581/847/133 582/841/128 +f 578/842/129 579/1028/134 572/843/130 +f 575/832/123 582/841/128 583/844/131 +f 572/843/130 579/1028/134 580/845/132 +f 577/840/127 578/842/129 571/830/122 +f 580/849/132 588/861/52 584/850/4 +f 583/844/131 591/860/69 585/852/3 +f 566/853/74 584/1029/4 589/854/49 +f 581/855/133 589/854/49 590/856/1 +f 578/842/129 586/862/64 587/858/5 +f 582/857/128 590/856/1 591/860/69 +f 579/859/134 587/858/5 588/861/52 +f 577/840/127 585/852/3 586/862/64 +f 600/863/115 601/874/119 593/864/8 +f 607/866/116 600/863/115 592/865/2 +f 605/868/117 606/876/120 598/869/1 +f 603/871/118 604/1030/74 596/872/6 +f 601/874/119 602/879/121 594/875/5 +f 606/876/120 607/866/116 599/867/7 +f 604/877/74 605/868/117 597/870/98 +f 602/879/121 603/871/118 595/873/79 +f 601/874/119 609/892/122 610/880/130 +f 606/882/120 613/891/123 614/883/126 +f 602/881/121 610/880/130 611/884/124 +f 608/886/9 609/892/122 601/874/119 +f 607/866/116 614/883/126 608/886/9 +f 612/887/125 613/891/123 606/882/120 +f 614/883/126 621/894/131 615/889/127 +f 612/887/125 619/897/133 620/890/128 +f 609/892/122 616/908/129 617/893/134 +f 613/891/123 620/890/128 621/894/131 +f 610/880/130 617/893/134 618/895/132 +f 615/889/127 616/908/129 609/892/122 +f 618/899/132 626/912/52 622/900/4 +f 621/894/131 629/911/69 623/902/3 +f 604/903/74 622/1031/4 627/904/49 +f 619/905/133 627/904/49 628/906/1 +f 616/908/129 624/913/64 625/909/5 +f 620/907/128 628/906/1 629/911/69 +f 617/910/134 625/909/5 626/912/52 +f 615/889/127 623/902/3 624/913/64 +f 630/914/2 638/936/143 639/915/135 +f 645/917/136 638/936/143 630/914/2 +f 635/919/79 643/1032/145 644/920/137 +f 641/922/138 642/1033/76 634/923/6 +f 639/915/135 640/928/139 632/925/1 +f 644/920/137 645/917/136 637/918/8 +f 642/926/76 643/1032/145 635/919/79 +f 640/928/139 641/922/138 633/924/98 +f 647/929/140 648/943/150 640/930/139 +f 644/931/137 651/941/148 652/932/141 +f 640/930/139 648/943/150 649/933/142 +f 646/935/10 647/929/140 639/915/135 +f 645/917/136 652/932/141 646/935/10 +f 650/937/144 651/941/148 644/931/137 +f 652/932/141 659/951/153 653/939/146 +f 650/937/144 657/946/152 658/940/147 +f 647/929/140 654/958/154 655/942/149 +f 658/940/147 659/951/153 652/932/141 +f 648/943/150 655/942/149 656/944/151 +f 653/939/146 654/958/154 647/929/140 +f 656/948/151 664/962/69 660/949/3 +f 659/951/153 667/961/52 661/952/4 +f 642/953/76 660/1034/3 665/954/64 +f 657/955/152 665/954/64 666/956/5 +f 654/958/154 662/963/49 663/959/1 +f 658/957/147 666/956/5 667/961/52 +f 655/960/149 663/959/1 664/962/69 +f 653/939/146 661/952/4 662/963/49 +f 676/964/143 677/975/135 669/965/7 +f 683/967/136 676/964/143 668/966/2 +f 681/969/145 682/977/137 674/970/5 +f 679/972/138 680/1035/76 672/973/6 +f 677/975/135 678/980/139 670/976/1 +f 682/977/137 683/967/136 675/968/8 +f 680/978/76 681/969/145 673/971/79 +f 678/980/139 679/972/138 671/974/98 +f 677/975/135 685/993/140 686/981/150 +f 682/983/137 689/992/148 690/984/141 +f 678/982/139 686/981/150 687/985/142 +f 684/987/10 685/993/140 677/975/135 +f 690/984/141 684/987/10 676/964/143 +f 688/988/144 689/992/148 682/983/137 +f 690/984/141 697/1002/153 691/990/146 +f 688/988/144 695/997/152 696/991/147 +f 685/993/140 692/1009/154 693/994/149 +f 696/991/147 697/1002/153 690/984/141 +f 686/981/150 693/994/149 694/995/151 +f 691/990/146 692/1009/154 685/993/140 +f 694/999/151 702/1013/69 698/1000/3 +f 697/1002/153 705/1012/52 699/1003/4 +f 680/1004/76 698/1036/3 703/1005/64 +f 695/1006/152 703/1005/64 704/1007/5 +f 692/1009/154 700/1014/49 701/1010/1 +f 696/1008/147 704/1007/5 705/1012/52 +f 693/1011/149 701/1010/1 702/1013/69 +f 691/990/146 699/1003/4 700/1014/49 diff --git a/src/main/resources/assets/hbm/models/machines/microwave.obj b/src/main/resources/assets/hbm/models/machines/microwave.obj index 2f258c742..b13288dd5 100644 --- a/src/main/resources/assets/hbm/models/machines/microwave.obj +++ b/src/main/resources/assets/hbm/models/machines/microwave.obj @@ -1,963 +1,9 @@ -# Blender v2.82 (sub 7) OBJ File: 'microwave.blend' +# Blender v2.79 (sub 0) OBJ File: '' # www.blender.org -mtllib microwave.mtl -o mainbody_Cube.001 -v 0.238197 1.183358 -0.728996 -v 0.234821 1.183358 -0.728996 -v 0.238197 1.183358 -0.735637 -v 0.234821 1.183358 -0.735637 -v 0.238197 0.787154 -0.728996 -v 0.234821 0.787154 -0.728996 -v 0.234338 0.840926 -0.735637 -v 0.234821 1.127133 -0.735637 -v 0.238197 1.127133 -0.735637 -v 0.238197 0.840926 -0.735637 -v 0.155271 1.127133 -0.735637 -v 0.149897 1.125951 -0.735637 -v 0.838582 1.118357 -0.735637 -v 0.836356 1.121211 -0.735637 -v 0.827432 1.125951 -0.735637 -v 0.822058 1.127133 -0.735637 -v 0.826572 0.842109 -0.735637 -v 0.821198 0.840926 -0.735637 -v 0.837722 0.849703 -0.735637 -v 0.835496 0.846848 -0.735637 -v 0.140113 0.846848 -0.735637 -v 0.137887 0.849703 -0.735637 -v 0.154411 0.840926 -0.735637 -v 0.149037 0.842109 -0.735637 -v 0.138747 1.118357 -0.735637 -v 0.140973 1.121211 -0.735637 -v 0.234338 0.840926 -0.731795 -v 0.234821 1.127133 -0.731795 -v 0.140973 1.121211 -0.731795 -v 0.138747 1.118357 -0.731795 -v 0.149897 1.125951 -0.731795 -v 0.155271 1.127133 -0.731795 -v 0.137887 0.849703 -0.731795 -v 0.140113 0.846848 -0.731795 -v 0.149037 0.842109 -0.731795 -v 0.154411 0.840926 -0.731795 -v 0.303131 1.127133 -0.732176 -v 0.303131 0.840926 -0.732176 -v 0.820933 1.127133 -0.732176 -v 0.826308 1.125951 -0.732176 -v 0.835231 1.121211 -0.732176 -v 0.837458 1.118357 -0.732176 -v 0.836597 0.849703 -0.732176 -v 0.834371 0.846848 -0.732176 -v 0.825447 0.842109 -0.732176 -v 0.820073 0.840926 -0.732176 -v 0.234821 0.787154 -0.735637 -v 0.238197 0.787154 -0.735637 -v 0.114423 1.183358 -0.161513 -v 0.117047 1.181387 -0.156304 -v 0.127829 1.183358 -0.151007 -v 0.121182 1.181387 -0.153063 -v 0.127829 1.183358 -0.735637 -v 0.121182 1.181387 -0.733581 -v 0.117047 1.181387 -0.730340 -v 0.114423 1.183358 -0.725132 -v 0.862732 0.787154 -0.159690 -v 0.857794 0.789125 -0.156304 -v 0.849338 0.787154 -0.151007 -v 0.853658 0.789125 -0.153063 -v 0.847012 1.183358 -0.151007 -v 0.853658 1.181387 -0.153063 -v 0.857794 1.181387 -0.156304 -v 0.860417 1.183358 -0.161513 -v 0.853658 0.789125 -0.733581 -v 0.857794 0.789125 -0.730340 -v 0.860417 0.787154 -0.726955 -v 0.848027 0.787154 -0.735637 -v 0.860417 1.183358 -0.725132 -v 0.857794 1.181387 -0.730340 -v 0.853658 1.181387 -0.733581 -v 0.847012 1.183358 -0.735637 -v 0.112109 0.787154 -0.726955 -v 0.115750 0.789125 -0.732973 -v 0.120534 0.789125 -0.735475 -v 0.126814 0.787154 -0.735637 -v 0.125502 0.787154 -0.149193 -v 0.121182 0.789125 -0.153063 -v 0.117047 0.789125 -0.156304 -v 0.114423 0.787154 -0.159690 -v 0.246749 0.852258 -0.727568 -v 0.246749 1.118254 -0.727568 -v 0.246749 0.852258 -0.734150 -v 0.246749 1.118254 -0.734150 -v 0.282202 0.852258 -0.727568 -v 0.282202 1.118254 -0.727568 -v 0.282202 0.852258 -0.734150 -v 0.282202 1.118254 -0.734150 -v 0.246749 0.985256 -0.755632 -v 0.246749 0.985256 -0.762214 -v 0.264475 0.852258 -0.734150 -v 0.264475 1.118254 -0.734150 -v 0.282202 0.985256 -0.762214 -v 0.282202 0.985256 -0.755632 -v 0.264475 0.852258 -0.727568 -v 0.264475 1.118254 -0.727568 -v 0.264475 0.985256 -0.755632 -v 0.264475 0.985256 -0.762214 -v 0.246749 0.852258 -0.730859 -v 0.246749 1.051755 -0.751094 -v 0.246749 1.118254 -0.730859 -v 0.246749 0.918757 -0.754385 -v 0.255612 0.852258 -0.734150 -v 0.273339 1.118254 -0.734150 -v 0.282202 0.918757 -0.754385 -v 0.282202 0.852258 -0.730859 -v 0.282202 1.118254 -0.730859 -v 0.282202 0.918757 -0.747802 -v 0.273339 0.852258 -0.727568 -v 0.255612 1.118254 -0.727568 -v 0.246749 0.918757 -0.747802 -v 0.246749 1.051755 -0.757676 -v 0.273339 0.852258 -0.734150 -v 0.255612 1.118254 -0.734150 -v 0.282202 1.051755 -0.757676 -v 0.282202 1.051755 -0.751094 -v 0.255612 0.852258 -0.727568 -v 0.273339 1.118254 -0.727568 -v 0.264475 1.118254 -0.730849 -v 0.264475 0.852258 -0.730849 -v 0.255612 0.985256 -0.755632 -v 0.273339 0.985256 -0.755632 -v 0.264475 0.918757 -0.747802 -v 0.264475 1.051755 -0.751094 -v 0.282202 0.985256 -0.758923 -v 0.273339 0.985256 -0.762214 -v 0.255612 0.985256 -0.762214 -v 0.264475 0.918757 -0.754385 -v 0.264475 1.051755 -0.757676 -v 0.246749 0.985256 -0.758923 -v 0.246749 0.918757 -0.751094 -v 0.255612 1.051755 -0.757676 -v 0.255612 0.918757 -0.754385 -v 0.273339 0.918757 -0.754385 -v 0.282202 0.918757 -0.751094 -v 0.273339 1.051755 -0.751094 -v 0.273339 0.918757 -0.747802 -v 0.255612 0.918757 -0.747802 -v 0.255612 0.852258 -0.730849 -v 0.273339 1.118254 -0.730849 -v 0.255612 1.118254 -0.730849 -v 0.273339 0.852258 -0.730849 -v 0.255612 1.051755 -0.751094 -v 0.282202 1.051755 -0.754385 -v 0.273339 1.051755 -0.757676 -v 0.246749 1.051755 -0.754385 -v 0.303131 1.127133 -0.208209 -v 0.303131 0.840926 -0.208209 -v 0.820933 1.127133 -0.208209 -v 0.826308 1.125951 -0.208209 -v 0.835231 1.121211 -0.208209 -v 0.837458 1.118357 -0.208209 -v 0.836597 0.849703 -0.208209 -v 0.834371 0.846848 -0.208209 -v 0.825447 0.842109 -0.208209 -v 0.820073 0.840926 -0.208209 -v 0.339101 1.091541 -0.732176 -v 0.339101 0.874846 -0.732176 -v 0.796813 1.091541 -0.732176 -v 0.800847 1.090653 -0.732176 -v 0.807544 1.087096 -0.732176 -v 0.809215 1.084954 -0.732176 -v 0.808569 0.881432 -0.732176 -v 0.806898 0.879290 -0.732176 -v 0.800201 0.875733 -0.732176 -v 0.796168 0.874846 -0.732176 -v 0.238197 0.840926 -0.731795 -v 0.238197 1.127133 -0.731795 -v 0.415576 0.913412 -0.000812 -v 0.415576 1.057100 -0.000812 -v 0.415576 0.913412 -0.157633 -v 0.415576 1.057100 -0.157633 -v 0.559264 0.913412 -0.000812 -v 0.559264 1.057100 -0.000812 -v 0.559264 0.913412 -0.157633 -v 0.559264 1.057100 -0.157633 -vt 0.187756 0.185116 -vt 0.190250 0.359586 -vt 0.187359 0.359553 -vt 0.184816 0.183014 -vt 0.011904 0.361665 -vt 0.011410 0.182951 -vt 0.434160 0.035160 -vt 0.437617 0.233175 -vt 0.433848 0.233203 -vt 0.421314 0.234632 -vt 0.421314 0.024505 -vt 0.424461 0.141338 -vt 0.180342 0.556180 -vt 0.006258 0.555192 -vt 0.180341 0.553216 -vt 0.619010 0.294600 -vt 0.615336 0.293939 -vt 0.618997 0.293255 -vt 0.560911 0.771909 -vt 0.499383 0.771947 -vt 0.573681 0.763070 -vt 0.551781 0.278506 -vt 0.554882 0.277399 -vt 0.554849 0.278591 -vt 0.477598 0.276038 -vt 0.480699 0.274931 -vt 0.480666 0.276123 -vt 0.456844 0.275464 -vt 0.476217 0.274807 -vt 0.476184 0.275999 -vt 0.556296 0.277438 -vt 0.556263 0.278630 -vt 0.477631 0.274846 -vt 0.575727 0.277976 -vt 0.575694 0.279168 -vt 0.550366 0.278467 -vt 0.551814 0.277314 -vt 0.482080 0.276163 -vt 0.550399 0.277275 -vt 0.482113 0.274971 -vt 0.529499 0.294540 -vt 0.531162 0.293570 -vt 0.531174 0.294916 -vt 0.615349 0.295285 -vt 0.613628 0.294117 -vt 0.536559 0.295677 -vt 0.613641 0.295463 -vt 0.534848 0.295531 -vt 0.536546 0.294332 -vt 0.620678 0.294193 -vt 0.620665 0.292848 -vt 0.534835 0.294186 -vt 0.390231 0.176341 -vt 0.365296 0.176585 -vt 0.365277 0.174628 -vt 0.008379 0.053132 -vt 0.010531 0.175541 -vt 0.008501 0.175525 -vt 0.678815 0.051868 -vt 0.681765 0.009865 -vt 0.681766 0.212069 -vt 0.191651 0.177060 -vt 0.014270 0.002844 -vt 0.192984 0.003659 -vt 0.661827 0.216665 -vt 0.508504 0.216408 -vt 0.472754 0.213047 -vt 0.182461 0.549659 -vt 0.002549 0.378060 -vt 0.181254 0.376258 -vt 0.008747 0.359552 -vt 0.004975 0.185105 -vt 0.008120 0.184943 -vt 0.006284 0.051542 -vt 0.010601 0.053093 -vt 0.004000 0.561180 -vt 0.003756 0.551834 -vt 0.006284 0.177060 -vt 0.012743 0.177034 -vt 0.012878 0.051518 -vt 0.184195 0.361727 -vt 0.193393 0.361723 -vt 0.190903 0.184977 -vt 0.194207 0.183009 -vt 0.182571 0.559338 -vt 0.182461 0.550031 -vt 0.006443 0.558120 -vt 0.002020 0.183025 -vt 0.004195 0.360497 -vt 0.005856 0.359540 -vt 0.363575 0.189539 -vt 0.388348 0.187899 -vt 0.391408 0.191039 -vt 0.913862 0.374962 -vt 0.932207 0.411652 -vt 0.913862 0.411652 -vt 0.947121 0.484382 -vt 0.928948 0.502555 -vt 0.928948 0.484382 -vt 0.922832 0.558833 -vt 0.904487 0.595522 -vt 0.904487 0.558833 -vt 0.904487 0.650556 -vt 0.922832 0.668901 -vt 0.904487 0.668901 -vt 0.831108 0.558833 -vt 0.849453 0.595522 -vt 0.831108 0.595522 -vt 0.977866 0.558833 -vt 0.996210 0.595522 -vt 0.977866 0.595522 -vt 0.959521 0.558833 -vt 0.941176 0.595522 -vt 0.941176 0.558833 -vt 0.812764 0.558833 -vt 0.794419 0.595522 -vt 0.794419 0.558833 -vt 0.886142 0.650556 -vt 0.867798 0.668901 -vt 0.867798 0.650556 -vt 0.867798 0.613867 -vt 0.886142 0.632212 -vt 0.867798 0.632212 -vt 0.922832 0.613867 -vt 0.904487 0.632212 -vt 0.904487 0.613867 -vt 0.867798 0.558833 -vt 0.886142 0.595522 -vt 0.867798 0.595522 -vt 0.899580 0.488095 -vt 0.881478 0.506196 -vt 0.881478 0.488095 -vt 0.899580 0.451892 -vt 0.881478 0.469993 -vt 0.881478 0.451892 -vt 0.947121 0.448035 -vt 0.928948 0.466208 -vt 0.928948 0.448035 -vt 0.895517 0.374962 -vt 0.877173 0.411652 -vt 0.877173 0.374962 -vt 0.858828 0.411652 -vt 0.858828 0.374962 -vt 0.877173 0.338273 -vt 0.858828 0.338273 -vt 0.895517 0.338273 -vt 0.917681 0.451892 -vt 0.899580 0.469993 -vt 0.917681 0.433790 -vt 0.899580 0.433790 -vt 0.947121 0.429861 -vt 0.928948 0.429861 -vt 0.867173 0.448727 -vt 0.848828 0.467071 -vt 0.848828 0.448727 -vt 0.867173 0.430382 -vt 0.848828 0.430382 -vt 0.881478 0.433790 -vt 0.867173 0.485416 -vt 0.848828 0.503761 -vt 0.848828 0.485416 -vt 0.867173 0.467071 -vt 0.849453 0.558833 -vt 0.849453 0.522144 -vt 0.867798 0.522144 -vt 0.886142 0.558833 -vt 0.886142 0.613867 -vt 0.922832 0.595522 -vt 0.849453 0.632212 -vt 0.849453 0.613867 -vt 0.849453 0.668901 -vt 0.849453 0.650556 -vt 0.776074 0.595522 -vt 0.776074 0.558833 -vt 0.794419 0.522144 -vt 0.776074 0.522144 -vt 0.812764 0.522144 -vt 0.941176 0.522144 -vt 0.922832 0.522144 -vt 0.959521 0.522144 -vt 0.959521 0.595522 -vt 0.977866 0.522144 -vt 0.996210 0.558833 -vt 0.812764 0.595522 -vt 0.831108 0.522144 -vt 0.886142 0.668901 -vt 0.922832 0.632212 -vt 0.904487 0.522144 -vt 0.886142 0.522144 -vt 0.917681 0.488095 -vt 0.899580 0.506196 -vt 0.917681 0.469993 -vt 0.947121 0.466208 -vt 0.895517 0.411652 -vt 0.913862 0.338273 -vt 0.932207 0.374962 -vt 0.002361 0.690819 -vt 0.139582 0.797050 -vt 0.002382 0.797077 -vt 0.002401 0.574653 -vt 0.139602 0.577216 -vt 0.002401 0.577243 -vt 0.002381 0.685835 -vt 0.139582 0.688398 -vt 0.002381 0.688425 -vt 0.002381 0.579638 -vt 0.139602 0.683414 -vt 0.002401 0.683441 -vt 0.142087 0.686223 -vt 0.139686 0.823759 -vt 0.139686 0.686202 -vt 0.139581 0.685808 -vt 0.139686 0.574626 -vt 0.278011 0.686118 -vt 0.139686 0.686118 -vt 0.248444 0.686223 -vt 0.142087 0.823780 -vt 0.139581 0.579611 -vt 0.139561 0.690792 -vt 0.250041 0.742196 -vt 0.249216 0.741377 -vt 0.249011 0.740883 -vt 0.774121 0.040412 -vt 0.741243 0.024151 -vt 0.740050 0.027021 -vt 0.969467 0.033059 -vt 0.943495 0.044419 -vt 0.971709 0.034142 -vt 0.946381 0.253662 -vt 0.739889 0.270791 -vt 0.975938 0.269283 -vt 0.769234 0.254505 -vt 0.778655 0.034951 -vt 0.748853 0.018299 -vt 0.746005 0.019438 -vt 0.975297 0.038147 -vt 0.946804 0.049219 -vt 0.976119 0.040486 -vt 0.775156 0.037976 -vt 0.946189 0.047450 -vt 0.941812 0.043603 -vt 0.456798 0.276753 -vt 0.529486 0.293195 -vt 0.696767 0.284505 -vt 0.696612 0.283178 -vt 0.740071 0.299235 -vt 0.431207 0.203196 -vt 0.430221 0.118309 -vt 0.434139 0.035214 -vt 0.688985 0.442006 -vt 0.730728 0.480254 -vt 0.688985 0.480254 -vt 0.730728 0.556749 -vt 0.688985 0.518501 -vt 0.730728 0.518501 -vt 0.754269 0.654412 -vt 0.666048 0.576401 -vt 0.754269 0.576401 -vt 0.730728 0.442006 -vt 0.688985 0.403759 -vt 0.730728 0.403759 -vt 0.437617 0.035132 -vt 0.428782 0.141338 -vt 0.428782 0.234632 -vt 0.422863 0.024375 -vt 0.423529 0.042958 -vt 0.424425 0.042882 -vt 0.499383 0.483956 -vt 0.561202 0.483917 -vt 0.573995 0.492741 -vt 0.572269 0.489869 -vt 0.565361 0.485105 -vt 0.571963 0.765944 -vt 0.565067 0.770717 -vt 0.456877 0.274272 -vt 0.362261 0.174619 -vt 0.362252 0.177081 -vt 0.221168 0.176128 -vt 0.218310 0.173556 -vt 0.218310 0.006092 -vt 0.221417 0.003539 -vt 0.388881 0.003540 -vt 0.391433 0.006646 -vt 0.393601 0.173750 -vt 0.525055 0.212989 -vt 0.674718 0.186092 -vt 0.524902 0.186971 -vt 0.472754 0.045915 -vt 0.472804 0.009580 -vt 0.673151 0.046188 -vt 0.676096 0.185512 -vt 0.678376 0.183205 -vt 0.674995 0.046955 -vt 0.678054 0.050022 -vt 0.678940 0.181820 -vt 0.012947 0.175130 -vt 0.698934 0.213354 -vt 0.698934 0.245794 -vt 0.666837 0.221675 -vt 0.666837 0.245794 -vt 0.503488 0.245686 -vt 0.472755 0.245833 -vt 0.503488 0.221424 -vt 0.666162 0.220045 -vt 0.663456 0.217340 -vt 0.504163 0.219793 -vt 0.506872 0.217084 -vt 0.004989 0.551834 -vt 0.390747 0.356145 -vt 0.386158 0.360486 -vt 0.360628 0.189572 -vt 0.219798 0.360486 -vt 0.216697 0.357385 -vt 0.216697 0.191025 -vt 0.219798 0.187924 -vt 0.360628 0.187426 -vt 0.363600 0.187579 -vt 0.947121 0.502555 -vt 0.922832 0.650556 -vt 0.867173 0.503761 -vt 0.996210 0.522144 -vt 0.917681 0.506196 -vt 0.932207 0.338273 -vt 0.139601 0.574626 -vt 0.278011 0.574626 -vt 0.248444 0.823780 -vt 0.249011 0.687906 -vt 0.294366 0.687906 -vt 0.294366 0.740616 -vt 0.294160 0.741111 -vt 0.292839 0.742143 -vt 0.250538 0.742399 -vt 0.293336 0.741935 -vt 0.781306 0.033891 -vt 0.457098 0.275488 -vt 0.976119 0.297728 -vt 0.433827 0.231012 -vt 0.431907 0.231171 -vt 0.429916 0.203288 -vt 0.426195 0.118261 -vt 0.427181 0.035132 -vt 0.688985 0.556749 -vt 0.666048 0.654412 -vn 0.6168 0.0000 0.7871 -vn 0.0025 0.0046 1.0000 -vn 0.0000 0.0000 -1.0000 -vn 1.0000 0.0000 0.0000 -vn -0.6168 0.0073 -0.7871 -vn -0.4637 -0.8731 -0.1506 -vn 0.4691 0.8832 0.0000 -vn 0.4691 -0.8832 0.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.2148 0.9766 0.0000 -vn 0.2148 -0.9766 0.0000 -vn 0.0000 1.0000 0.0000 -vn 0.7885 0.6150 0.0000 -vn 1.0000 -0.0032 0.0000 -vn 0.7885 -0.6150 0.0000 -vn -0.2143 0.9743 -0.0697 -vn -0.7638 -0.5958 -0.2482 -vn -0.9511 0.0030 -0.3090 -vn -0.7639 0.5958 -0.2482 -vn -0.2143 -0.9743 -0.0696 -vn -0.4637 0.8731 -0.1507 -vn 0.6168 0.0000 -0.7871 -vn 1.0000 0.0058 -0.0041 -vn -1.0000 0.0058 0.0041 -vn -0.6168 0.0000 0.7871 -vn 0.5448 -0.4689 -0.6952 -vn -0.2589 -0.8607 -0.4385 -vn 0.3836 0.7831 -0.4895 -vn 0.8931 0.0000 -0.4499 -vn 0.3427 0.0009 -0.9394 -vn 0.3836 0.7831 0.4895 -vn 0.2955 0.0000 0.9553 -vn 0.5448 -0.4690 0.6952 -vn 0.5674 0.0071 0.8234 -vn -0.3836 0.7831 -0.4895 -vn -0.2969 0.0051 -0.9549 -vn -0.8565 0.0063 -0.5161 -vn -0.5448 -0.4689 0.6952 -vn -0.6654 0.0073 0.7465 -vn -0.3836 0.7831 0.4895 -vn -0.8931 0.0000 0.4499 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.3335 -0.9427 -vn 0.0000 -0.3335 0.9427 -vn 0.0000 0.1169 0.9931 -vn 0.0000 -0.1169 -0.9931 -vn 0.0000 0.0681 -0.9977 -vn 0.0000 -0.2911 -0.9567 -vn 0.0000 -0.0681 0.9977 -vn 0.0000 0.2911 0.9567 -vn -0.4691 0.8832 0.0000 -vn -0.4691 -0.8832 0.0000 -vn -1.0000 0.0032 0.0000 -vn -0.2149 0.9766 0.0000 -vn -0.7885 -0.6150 0.0000 -vn -0.7886 0.6150 0.0000 -vn -0.2148 -0.9766 0.0000 -vn -0.0059 0.0000 -1.0000 -vn 0.0000 0.0000 1.0000 -vn 1.0000 0.0090 0.0000 -vn 0.9796 -0.0017 -0.2012 -vn -0.4635 0.0050 -0.8861 -vn -0.4637 -0.8731 -0.1507 -vn -0.2143 0.9743 -0.0696 -vn -0.7639 -0.5957 -0.2482 -vn -0.7639 0.5957 -0.2482 -vn 0.4513 -0.6177 -0.6440 -vn -0.2689 -0.8145 -0.5141 -vn 0.7912 0.0028 -0.6115 -vn 0.2956 0.0000 -0.9553 -vn 0.3836 0.7831 0.4894 -vn 0.4288 0.0025 0.9034 -vn 0.5423 -0.0782 0.8365 -vn 0.8931 0.0000 0.4499 -vn -0.3836 0.7831 -0.4894 -vn -0.0258 0.0001 -0.9997 -vn -0.8920 0.0073 -0.4520 -vn -0.6855 -0.0817 0.7235 -vn -0.2955 0.0000 0.9553 -vn -0.7912 0.0028 0.6115 -vn -0.7885 0.6150 0.0000 -usemtl Material.002 -s off -f 60/1/1 63/2/1 62/3/1 -f 59/4/2 51/5/2 77/6/2 -f 5/7/3 2/8/3 1/9/3 -f 2/10/4 6/11/4 28/12/4 -f 54/13/5 74/14/5 55/15/5 -f 15/16/6 41/17/6 40/18/6 -f 32/19/3 28/20/3 30/21/3 -f 21/22/7 35/23/7 24/24/7 -f 12/25/8 29/26/8 26/27/8 -f 8/28/9 32/29/9 11/30/9 -f 24/24/10 36/31/10 23/32/10 -f 11/30/11 31/33/11 12/25/11 -f 23/32/12 27/34/12 7/35/12 -f 22/36/13 34/37/13 21/22/13 -f 25/38/14 33/39/14 22/36/14 -f 26/27/15 30/40/15 25/38/15 -f 18/41/16 45/42/16 17/43/16 -f 14/44/17 42/45/17 41/17/17 -f 19/46/18 42/45/18 13/47/18 -f 20/48/19 43/49/19 19/46/19 -f 16/50/20 40/18/20 39/51/20 -f 17/43/21 44/52/21 20/48/21 -f 76/53/9 47/54/9 6/55/9 -f 66/56/22 71/57/22 70/58/22 -f 13/59/3 72/60/3 68/61/3 -f 67/62/23 64/63/23 57/64/23 -f 25/65/3 22/66/3 76/67/3 -f 80/68/24 56/69/24 73/70/24 -f 52/71/25 79/72/25 78/73/25 -f 67/74/26 65/75/26 66/56/26 -f 74/14/27 76/76/27 73/77/27 -f 69/78/28 71/57/28 72/79/28 -f 69/78/29 66/56/29 70/58/29 -f 72/79/30 65/75/30 68/80/30 -f 61/81/31 63/2/31 64/82/31 -f 61/81/32 60/1/32 62/3/32 -f 59/4/33 58/83/33 60/1/33 -f 64/82/34 58/83/34 57/84/34 -f 53/85/35 55/15/35 56/86/35 -f 53/85/36 75/87/36 54/13/36 -f 73/77/37 55/15/37 74/14/37 -f 80/88/38 78/73/38 79/72/38 -f 51/5/39 78/73/39 77/6/39 -f 49/89/40 52/71/40 51/5/40 -f 49/89/41 79/72/41 50/90/41 -f 2/91/12 53/92/12 56/93/12 -f 146/94/42 84/95/42 112/96/42 -f 104/97/43 115/98/43 145/99/43 -f 107/100/4 116/101/4 144/102/4 -f 143/103/44 82/104/44 100/105/44 -f 142/106/9 85/107/9 109/108/9 -f 141/109/12 82/110/12 110/111/12 -f 119/112/12 118/113/12 140/114/12 -f 120/115/9 117/116/9 139/117/9 -f 121/118/45 111/119/45 138/120/45 -f 137/121/45 97/122/45 123/123/45 -f 118/124/44 124/125/44 136/126/44 -f 135/127/4 94/128/4 108/129/4 -f 126/130/46 105/131/46 134/132/46 -f 127/133/46 128/134/46 133/135/46 -f 114/136/43 129/137/43 132/138/43 -f 130/139/42 102/140/42 131/141/42 -f 131/141/42 83/142/42 99/143/42 -f 111/144/42 99/143/42 81/145/42 -f 89/146/42 131/141/42 111/144/42 -f 132/147/47 98/148/47 127/133/47 -f 112/149/47 127/133/47 90/150/47 -f 84/151/43 132/138/43 112/152/43 -f 133/153/48 91/154/48 103/155/48 -f 102/156/48 103/155/48 83/157/48 -f 90/150/46 133/135/46 102/158/46 -f 134/159/48 87/160/48 113/161/48 -f 128/162/48 113/161/48 91/154/48 -f 98/148/46 134/132/46 128/134/46 -f 106/163/4 108/129/4 85/107/4 -f 87/164/4 135/127/4 106/163/4 -f 105/165/4 125/166/4 135/127/4 -f 136/126/49 97/122/49 122/167/49 -f 116/101/49 122/167/49 94/128/49 -f 86/168/44 136/126/44 116/101/44 -f 137/121/50 95/169/50 109/170/50 -f 108/129/50 109/170/50 85/107/50 -f 94/128/45 137/121/45 108/129/45 -f 138/120/50 81/171/50 117/172/50 -f 123/123/50 117/172/50 95/169/50 -f 97/122/45 138/120/45 123/123/45 -f 139/117/9 81/173/9 99/174/9 -f 103/175/9 99/174/9 83/176/9 -f 91/177/9 139/117/9 103/175/9 -f 140/114/12 86/168/12 107/100/12 -f 104/178/12 107/100/12 88/179/12 -f 92/180/12 140/114/12 104/178/12 -f 141/109/12 96/181/12 119/112/12 -f 114/182/12 119/112/12 92/180/12 -f 114/182/12 101/183/12 141/109/12 -f 142/106/9 95/184/9 120/115/9 -f 113/185/9 120/115/9 91/177/9 -f 113/185/9 106/163/9 142/106/9 -f 143/103/49 89/186/49 121/118/49 -f 124/125/49 121/118/49 97/122/49 -f 96/187/44 143/103/44 124/125/44 -f 144/102/4 94/128/4 125/166/4 -f 115/188/4 125/166/4 93/189/4 -f 88/179/4 144/102/4 115/188/4 -f 145/190/47 93/191/47 126/130/47 -f 129/192/47 126/130/47 98/148/47 -f 92/193/43 145/99/43 129/137/43 -f 130/139/42 112/96/42 90/194/42 -f 89/146/42 146/94/42 130/139/42 -f 100/195/42 101/196/42 146/94/42 -f 39/197/9 147/198/9 37/199/9 -f 45/200/51 154/201/51 44/202/51 -f 41/203/52 150/204/52 40/205/52 -f 43/206/53 152/207/53 42/208/53 -f 46/209/54 155/210/54 45/211/54 -f 42/208/55 151/212/55 41/203/55 -f 37/213/4 148/214/4 38/215/4 -f 38/216/12 156/217/12 46/209/12 -f 44/202/56 153/218/56 43/206/56 -f 40/205/57 149/219/57 39/197/57 -f 154/220/3 155/221/3 156/222/3 -f 166/223/3 45/224/3 46/225/3 -f 42/226/3 161/227/3 41/228/3 -f 157/229/3 38/230/3 37/231/3 -f 158/232/3 46/225/3 38/230/3 -f 164/233/3 43/234/3 44/235/3 -f 40/236/3 159/237/3 39/238/3 -f 39/238/3 157/229/3 37/231/3 -f 165/239/3 44/235/3 45/224/3 -f 41/228/3 160/240/3 40/236/3 -f 43/234/3 162/241/3 42/226/3 -f 10/242/12 46/243/12 18/41/12 -f 9/244/9 39/51/9 168/245/9 -f 167/246/58 37/231/58 38/230/58 -f 168/247/42 167/248/42 5/249/42 -f 170/250/42 171/251/42 169/252/42 -f 176/253/4 173/254/4 175/255/4 -f 174/256/59 169/257/59 173/258/59 -f 175/255/9 169/252/9 171/251/9 -f 172/259/12 174/260/12 176/261/12 -f 60/1/1 58/83/1 63/2/1 -f 59/4/59 61/81/59 51/5/59 -f 5/7/3 6/262/3 2/8/3 -f 8/263/4 4/264/4 28/12/4 -f 4/264/4 2/10/4 28/12/4 -f 6/11/60 47/265/60 27/266/60 -f 47/265/60 7/267/60 27/266/60 -f 6/11/61 27/266/61 28/12/61 -f 54/13/62 75/87/62 74/14/62 -f 15/16/63 14/44/63 41/17/63 -f 28/20/3 27/268/3 30/21/3 -f 27/268/3 36/269/3 33/270/3 -f 33/270/3 36/269/3 34/271/3 -f 36/269/3 35/272/3 34/271/3 -f 33/270/3 30/21/3 27/268/3 -f 30/21/3 29/273/3 31/274/3 -f 31/274/3 32/19/3 30/21/3 -f 21/22/7 34/37/7 35/23/7 -f 12/25/8 31/33/8 29/26/8 -f 8/28/9 28/275/9 32/29/9 -f 24/24/10 35/23/10 36/31/10 -f 11/30/11 32/29/11 31/33/11 -f 23/32/12 36/31/12 27/34/12 -f 22/36/13 33/39/13 34/37/13 -f 25/38/14 30/40/14 33/39/14 -f 26/27/15 29/26/15 30/40/15 -f 18/41/64 46/243/64 45/42/64 -f 14/44/65 13/47/65 42/45/65 -f 19/46/18 43/49/18 42/45/18 -f 20/48/66 44/52/66 43/49/66 -f 16/50/20 15/16/20 40/18/20 -f 17/43/21 45/42/21 44/52/21 -f 5/276/9 48/277/9 68/278/9 -f 68/278/9 67/279/9 5/276/9 -f 67/279/9 57/280/9 59/281/9 -f 5/276/9 67/279/9 59/281/9 -f 59/281/9 77/282/9 80/283/9 -f 5/276/9 59/281/9 80/283/9 -f 80/283/9 73/284/9 6/55/9 -f 5/276/9 80/283/9 6/55/9 -f 73/284/9 76/53/9 6/55/9 -f 66/56/22 65/75/22 71/57/22 -f 68/61/3 48/285/3 18/286/3 -f 48/285/3 10/287/3 18/286/3 -f 9/288/3 3/289/3 16/290/3 -f 3/289/3 72/60/3 16/290/3 -f 68/61/3 18/286/3 17/291/3 -f 68/61/3 17/291/3 20/292/3 -f 15/293/3 16/290/3 72/60/3 -f 14/294/3 15/293/3 72/60/3 -f 68/61/3 20/292/3 19/295/3 -f 13/59/3 14/294/3 72/60/3 -f 68/61/3 19/295/3 13/59/3 -f 67/62/4 69/296/4 64/63/4 -f 53/297/3 4/298/3 11/299/3 -f 4/298/3 8/300/3 11/299/3 -f 7/301/3 47/302/3 23/303/3 -f 47/302/3 76/67/3 23/303/3 -f 53/297/3 11/299/3 12/304/3 -f 53/297/3 12/304/3 26/305/3 -f 24/306/3 23/303/3 76/67/3 -f 21/307/3 24/306/3 76/67/3 -f 53/297/3 26/305/3 25/65/3 -f 22/66/3 21/307/3 76/67/3 -f 53/297/3 25/65/3 76/67/3 -f 80/68/42 49/308/42 56/69/42 -f 52/71/25 50/90/25 79/72/25 -f 67/74/67 68/80/67 65/75/67 -f 74/14/68 75/87/68 76/76/68 -f 69/78/28 70/58/28 71/57/28 -f 69/78/69 67/74/69 66/56/69 -f 72/79/70 71/57/70 65/75/70 -f 61/81/71 62/3/71 63/2/71 -f 61/81/72 59/4/72 60/1/72 -f 59/4/73 57/84/73 58/83/73 -f 64/82/74 63/2/74 58/83/74 -f 53/85/75 54/13/75 55/15/75 -f 53/85/76 76/76/76 75/87/76 -f 73/77/77 56/86/77 55/15/77 -f 80/88/78 77/6/78 78/73/78 -f 51/5/79 52/71/79 78/73/79 -f 49/89/40 50/90/40 52/71/40 -f 49/89/80 80/88/80 79/72/80 -f 56/93/12 49/309/12 2/91/12 -f 49/309/12 51/310/12 1/311/12 -f 2/91/12 49/309/12 1/311/12 -f 51/310/12 61/312/12 1/311/12 -f 61/312/12 64/313/12 1/311/12 -f 64/313/12 69/314/12 1/311/12 -f 69/314/12 72/315/12 1/311/12 -f 72/315/12 3/316/12 1/311/12 -f 2/91/12 4/317/12 53/92/12 -f 146/94/42 101/196/42 84/95/42 -f 104/97/43 88/318/43 115/98/43 -f 107/100/4 86/168/4 116/101/4 -f 143/103/44 110/319/44 82/104/44 -f 142/106/9 106/163/9 85/107/9 -f 141/109/12 101/183/12 82/110/12 -f 119/112/12 96/181/12 118/113/12 -f 120/115/9 95/184/9 117/116/9 -f 121/118/45 89/186/45 111/119/45 -f 137/121/45 122/167/45 97/122/45 -f 118/124/44 96/187/44 124/125/44 -f 135/127/4 125/166/4 94/128/4 -f 126/130/46 93/191/46 105/131/46 -f 127/133/46 98/148/46 128/134/46 -f 114/136/43 92/193/43 129/137/43 -f 130/139/42 90/194/42 102/140/42 -f 131/141/42 102/140/42 83/142/42 -f 111/144/42 131/141/42 99/143/42 -f 89/146/42 130/139/42 131/141/42 -f 132/147/47 129/192/47 98/148/47 -f 112/149/47 132/147/47 127/133/47 -f 84/151/43 114/136/43 132/138/43 -f 133/153/48 128/162/48 91/154/48 -f 102/156/48 133/153/48 103/155/48 -f 90/150/46 127/133/46 133/135/46 -f 134/159/48 105/320/48 87/160/48 -f 128/162/48 134/159/48 113/161/48 -f 98/148/46 126/130/46 134/132/46 -f 106/163/4 135/127/4 108/129/4 -f 87/164/4 105/165/4 135/127/4 -f 105/165/4 93/189/4 125/166/4 -f 136/126/49 124/125/49 97/122/49 -f 116/101/49 136/126/49 122/167/49 -f 86/168/44 118/124/44 136/126/44 -f 137/121/50 123/123/50 95/169/50 -f 108/129/50 137/121/50 109/170/50 -f 94/128/45 122/167/45 137/121/45 -f 138/120/50 111/119/50 81/171/50 -f 123/123/50 138/120/50 117/172/50 -f 97/122/45 121/118/45 138/120/45 -f 139/117/9 117/116/9 81/173/9 -f 103/175/9 139/117/9 99/174/9 -f 91/177/9 120/115/9 139/117/9 -f 140/114/12 118/113/12 86/168/12 -f 104/178/12 140/114/12 107/100/12 -f 92/180/12 119/112/12 140/114/12 -f 141/109/12 110/111/12 96/181/12 -f 114/182/12 141/109/12 119/112/12 -f 114/182/12 84/321/12 101/183/12 -f 142/106/9 109/108/9 95/184/9 -f 113/185/9 142/106/9 120/115/9 -f 113/185/9 87/164/9 106/163/9 -f 143/103/49 100/105/49 89/186/49 -f 124/125/49 143/103/49 121/118/49 -f 96/187/44 110/319/44 143/103/44 -f 144/102/4 116/101/4 94/128/4 -f 115/188/4 144/102/4 125/166/4 -f 88/179/4 107/100/4 144/102/4 -f 145/190/47 115/322/47 93/191/47 -f 129/192/47 145/190/47 126/130/47 -f 92/193/43 104/97/43 145/99/43 -f 130/139/42 146/94/42 112/96/42 -f 89/146/42 100/195/42 146/94/42 -f 100/195/42 82/323/42 101/196/42 -f 39/197/9 149/219/9 147/198/9 -f 45/200/51 155/324/51 154/201/51 -f 41/203/52 151/212/52 150/204/52 -f 43/206/53 153/218/53 152/207/53 -f 46/209/54 156/217/54 155/210/54 -f 42/208/55 152/207/55 151/212/55 -f 37/213/4 147/325/4 148/214/4 -f 38/216/12 148/326/12 156/217/12 -f 44/202/81 154/201/81 153/218/81 -f 40/205/57 150/204/57 149/219/57 -f 156/222/3 148/327/3 147/328/3 -f 147/328/3 149/329/3 156/222/3 -f 149/329/3 150/330/3 152/331/3 -f 156/222/3 149/329/3 153/332/3 -f 150/330/3 151/333/3 152/331/3 -f 152/331/3 153/332/3 149/329/3 -f 153/332/3 154/220/3 156/222/3 -f 166/223/3 165/239/3 45/224/3 -f 42/226/3 162/241/3 161/227/3 -f 157/229/3 158/232/3 38/230/3 -f 158/232/3 166/223/3 46/225/3 -f 164/233/3 163/334/3 43/234/3 -f 40/236/3 160/240/3 159/237/3 -f 39/238/3 159/237/3 157/229/3 -f 165/239/3 164/233/3 44/235/3 -f 41/228/3 161/227/3 160/240/3 -f 43/234/3 163/334/3 162/241/3 -f 10/242/12 167/335/12 46/243/12 -f 9/244/9 16/50/9 39/51/9 -f 167/246/58 168/336/58 37/231/58 -f 1/337/42 3/338/42 168/247/42 -f 3/338/42 9/339/42 168/247/42 -f 10/340/42 48/341/42 167/248/42 -f 48/341/42 5/249/42 167/248/42 -f 1/337/42 168/247/42 5/249/42 -f 170/250/42 172/259/42 171/251/42 -f 176/253/4 174/342/4 173/254/4 -f 174/256/59 170/343/59 169/257/59 -f 175/255/9 173/254/9 169/252/9 -f 172/259/12 170/250/12 174/260/12 -o window_Cube.002 -v 0.809482 1.091828 -0.732264 -v 0.338840 1.091828 -0.732264 -v 0.338840 0.874469 -0.732264 -v 0.809482 0.874469 -0.732264 -vt 0.978282 0.984581 -vt 0.711622 0.781054 -vt 0.978133 0.780594 -vt 0.713513 0.984128 -vn 0.0000 0.0000 -1.0000 -usemtl Material.002 -s off -f 178/344/82 180/345/82 179/346/82 -f 178/344/82 177/347/82 180/345/82 o plate_Cylinder -v 0.573046 0.817783 -0.643769 v 0.573046 0.868036 -0.643769 v 0.729762 0.817783 -0.568299 +v 0.573046 0.817783 -0.643769 v 0.729762 0.868036 -0.568299 v 0.768467 0.817783 -0.398719 v 0.768467 0.868036 -0.398719 @@ -969,132 +15,132 @@ v 0.377625 0.817783 -0.398719 v 0.377625 0.868036 -0.398719 v 0.416330 0.817783 -0.568299 v 0.416330 0.868036 -0.568299 -v 0.572966 0.867427 -0.529802 -v 0.572966 0.983075 -0.566974 -v 0.647860 0.867427 -0.486562 -v 0.680052 0.983075 -0.505148 -v 0.647860 0.867427 -0.400082 -v 0.680052 0.983075 -0.381496 -v 0.572966 0.867427 -0.356843 -v 0.572966 0.983075 -0.319670 -v 0.498072 0.867427 -0.400082 -v 0.465880 0.983075 -0.381496 -v 0.498072 0.867427 -0.486562 -v 0.465880 0.983075 -0.505148 -v 0.610413 0.867427 -0.508182 v 0.626509 0.983075 -0.536061 -v 0.572966 0.941312 -0.556665 v 0.671124 0.941312 -0.499994 -v 0.647860 0.867427 -0.443322 +v 0.622045 0.941312 -0.528329 v 0.680052 0.983075 -0.443322 v 0.671124 0.941312 -0.386651 -v 0.610413 0.867427 -0.378463 +v 0.671124 0.941312 -0.443322 v 0.626509 0.983075 -0.350583 v 0.572966 0.941312 -0.329980 -v 0.535519 0.867427 -0.378463 +v 0.622045 0.941312 -0.358315 v 0.519423 0.983075 -0.350583 v 0.474808 0.941312 -0.386651 -v 0.498072 0.867427 -0.443322 +v 0.523887 0.941312 -0.358315 +v 0.572966 0.983075 -0.347524 +v 0.531484 0.983075 -0.371474 v 0.465880 0.983075 -0.443322 v 0.474808 0.941312 -0.499994 -v 0.535519 0.867427 -0.508182 -v 0.519423 0.983075 -0.536061 -v 0.523887 0.941312 -0.528329 v 0.474808 0.941312 -0.443322 -v 0.523887 0.941312 -0.358315 -v 0.622045 0.941312 -0.358315 -v 0.671124 0.941312 -0.443322 -v 0.622045 0.941312 -0.528329 -v 0.572966 0.983075 -0.539121 -v 0.655930 0.983075 -0.491222 -v 0.655930 0.983075 -0.395423 -v 0.572966 0.983075 -0.347524 -v 0.490002 0.983075 -0.395423 -v 0.490002 0.983075 -0.491222 -v 0.614448 0.983075 -0.515171 -v 0.655930 0.983075 -0.443322 +v 0.519423 0.983075 -0.536061 +v 0.572966 0.941312 -0.556665 +v 0.523887 0.941312 -0.528329 +v 0.572966 0.867427 -0.529802 +v 0.535519 0.867427 -0.508182 +v 0.498072 0.867427 -0.486562 +v 0.498072 0.867427 -0.443322 +v 0.498072 0.867427 -0.400082 +v 0.535519 0.867427 -0.378463 +v 0.572966 0.867427 -0.356843 +v 0.610413 0.867427 -0.378463 +v 0.647860 0.867427 -0.400082 +v 0.647860 0.867427 -0.443322 +v 0.647860 0.867427 -0.486562 +v 0.610413 0.867427 -0.508182 v 0.614448 0.983075 -0.371474 -v 0.531484 0.983075 -0.371474 -v 0.490002 0.983075 -0.443322 -v 0.531484 0.983075 -0.515171 -v 0.572966 0.962908 -0.514054 -v 0.634221 0.962908 -0.478688 v 0.634221 0.962908 -0.407956 -v 0.572966 0.962908 -0.372591 -v 0.511710 0.962908 -0.407956 -v 0.511710 0.962908 -0.478688 -v 0.603594 0.962908 -0.496371 -v 0.634221 0.962908 -0.443322 v 0.603594 0.962908 -0.390274 +v 0.572966 0.983075 -0.539121 +v 0.572966 0.983075 -0.566974 +v 0.614448 0.983075 -0.515171 +v 0.655930 0.983075 -0.395423 +v 0.490002 0.983075 -0.491222 +v 0.465880 0.983075 -0.505148 +v 0.655930 0.983075 -0.491222 +v 0.655930 0.983075 -0.443322 +v 0.490002 0.983075 -0.395423 +v 0.465880 0.983075 -0.381496 +v 0.680052 0.983075 -0.505148 +v 0.572966 0.983075 -0.319670 +v 0.680052 0.983075 -0.381496 +v 0.531484 0.983075 -0.515171 +v 0.490002 0.983075 -0.443322 v 0.542338 0.962908 -0.390274 +v 0.634221 0.962908 -0.443322 +v 0.511710 0.962908 -0.407956 +v 0.634221 0.962908 -0.478688 +v 0.572966 0.962908 -0.372591 +v 0.511710 0.962908 -0.478688 +v 0.572966 0.962908 -0.514054 +v 0.603594 0.962908 -0.496371 v 0.511710 0.962908 -0.443322 v 0.542338 0.962908 -0.496371 -v 0.595406 0.982933 -0.519550 -v 0.702492 0.982933 -0.457724 -v 0.702492 0.982933 -0.334072 -v 0.595406 0.982933 -0.272246 -v 0.488321 0.982933 -0.334072 -v 0.488321 0.982933 -0.457724 -v 0.648949 0.982933 -0.488637 -v 0.702492 0.982933 -0.395898 -v 0.648949 0.982933 -0.303159 v 0.541863 0.982933 -0.303159 -v 0.488321 0.982933 -0.395898 -v 0.541863 0.982933 -0.488637 -v 0.678370 0.982933 -0.347999 -v 0.512442 0.982933 -0.347999 -v 0.553924 0.982933 -0.324049 -v 0.553924 0.982933 -0.467747 -v 0.648949 0.999716 -0.488637 -v 0.595406 0.999716 -0.519550 -v 0.702492 0.999716 -0.395898 -v 0.702492 0.999716 -0.457724 -v 0.648949 0.999716 -0.303159 -v 0.702492 0.999716 -0.334072 -v 0.541863 0.999716 -0.303159 -v 0.595406 0.999716 -0.272246 -v 0.488321 0.999716 -0.395898 -v 0.488321 0.999716 -0.334072 -v 0.541863 0.999716 -0.488637 -v 0.488321 0.999716 -0.457724 -v 0.595406 0.999716 -0.491697 -v 0.636888 0.999716 -0.324049 -v 0.553924 0.999716 -0.324049 -v 0.512442 0.999716 -0.395898 -v 0.553924 0.999716 -0.467747 -v 0.595406 0.982933 -0.491697 -v 0.678370 0.982933 -0.443797 v 0.595406 0.982933 -0.300100 +v 0.595406 0.982933 -0.272246 +v 0.595406 0.982933 -0.491697 +v 0.541863 0.982933 -0.488637 +v 0.595406 0.982933 -0.519550 +v 0.648949 0.982933 -0.488637 +v 0.648949 0.982933 -0.303159 +v 0.678370 0.982933 -0.347999 +v 0.702492 0.982933 -0.334072 v 0.512442 0.982933 -0.443797 -v 0.636888 0.982933 -0.467747 -v 0.678370 0.982933 -0.395898 -v 0.636888 0.982933 -0.324049 -v 0.512442 0.982933 -0.395898 -v 0.636888 0.999716 -0.467747 -v 0.678370 0.999716 -0.395898 -v 0.678370 0.999716 -0.443797 -v 0.678370 0.999716 -0.347999 +v 0.488321 0.982933 -0.395898 +v 0.488321 0.982933 -0.457724 +v 0.702492 0.982933 -0.395898 +v 0.678370 0.982933 -0.443797 +v 0.702492 0.982933 -0.457724 +v 0.512442 0.982933 -0.347999 +v 0.488321 0.982933 -0.334072 +v 0.541863 0.999716 -0.303159 v 0.595406 0.999716 -0.300100 -v 0.512442 0.999716 -0.347999 +v 0.553924 0.999716 -0.324049 +v 0.541863 0.999716 -0.488637 +v 0.595406 0.999716 -0.491697 +v 0.595406 0.999716 -0.519550 +v 0.648949 0.999716 -0.488637 +v 0.636888 0.999716 -0.467747 +v 0.648949 0.999716 -0.303159 +v 0.678370 0.999716 -0.347999 +v 0.636888 0.999716 -0.324049 +v 0.488321 0.999716 -0.395898 v 0.512442 0.999716 -0.443797 -v 0.556395 0.998139 -0.385001 -v 0.526238 0.998974 -0.385001 -v 0.556395 0.998139 -0.406796 -v 0.526238 0.998974 -0.406796 -v 0.634417 0.998139 -0.385001 -v 0.667116 0.998562 -0.385001 -v 0.634417 0.998139 -0.406796 -v 0.667116 0.998562 -0.406796 -v 0.556395 0.998139 -0.395898 -v 0.526238 0.998974 -0.395898 +v 0.488321 0.999716 -0.457724 +v 0.702492 0.999716 -0.395898 +v 0.678370 0.999716 -0.443797 +v 0.678370 0.999716 -0.395898 +v 0.512442 0.999716 -0.347999 +v 0.488321 0.999716 -0.334072 +v 0.702492 0.999716 -0.457724 +v 0.595406 0.999716 -0.272246 +v 0.702492 0.999716 -0.334072 +v 0.553924 0.999716 -0.467747 +v 0.512442 0.999716 -0.395898 v 0.595406 1.026090 -0.406796 -v 0.595406 1.052068 -0.406796 -v 0.634417 0.998139 -0.395898 -v 0.667116 0.998562 -0.395898 +v 0.667116 0.998562 -0.406796 +v 0.634417 0.998139 -0.406796 v 0.595406 1.026090 -0.385001 +v 0.526238 0.998974 -0.385001 +v 0.556395 0.998139 -0.385001 +v 0.634417 0.998139 -0.395898 +v 0.595406 1.026090 -0.395898 +v 0.526238 0.998974 -0.395898 v 0.595406 1.052068 -0.385001 v 0.595406 1.052068 -0.395898 -v 0.595406 1.026090 -0.395898 +v 0.667116 0.998562 -0.385001 +v 0.667116 0.998562 -0.395898 +v 0.595406 1.052068 -0.406796 +v 0.526238 0.998974 -0.406796 +v 0.556395 0.998139 -0.395898 +v 0.556395 0.998139 -0.406796 +v 0.634417 0.998139 -0.385001 +v 0.553924 0.982933 -0.324049 +v 0.636888 0.982933 -0.324049 +v 0.678370 0.982933 -0.395898 +v 0.553924 0.982933 -0.467747 +v 0.636888 0.982933 -0.467747 +v 0.512442 0.982933 -0.395898 vt 0.516568 0.925663 vt 0.501815 0.874025 vt 0.516568 0.874025 @@ -1345,26 +391,32 @@ vn 0.0000 1.0000 0.0000 vn -0.9749 0.0000 -0.2225 vn -0.4339 0.0000 -0.9010 vn 0.4890 -0.2091 -0.8469 +vn 0.4889 -0.2090 -0.8469 +vn 0.4889 -0.2091 -0.8469 vn 0.9779 -0.2091 0.0000 -vn 0.4890 -0.2091 0.8469 +vn 0.4889 -0.2091 0.8469 +vn -0.4889 -0.2091 0.8469 vn -0.4890 -0.2091 0.8469 vn -0.9779 -0.2091 0.0000 +vn -0.4890 -0.2091 -0.8469 vn -0.4889 -0.2091 -0.8469 vn -0.4769 -0.3003 -0.8260 -vn -0.4890 -0.2091 -0.8469 +vn -0.4889 -0.2090 -0.8469 vn -0.9538 -0.3003 0.0000 vn -0.4769 -0.3003 0.8260 vn 0.4769 -0.3003 0.8260 +vn 0.4769 -0.3003 0.8261 +vn 0.4890 -0.2091 0.8469 vn 0.9538 -0.3003 0.0000 vn 0.4769 -0.3003 -0.8260 -vn 0.4889 -0.2091 -0.8469 vn -0.3403 0.7326 -0.5894 vn 0.3403 0.7326 -0.5894 vn -0.3403 0.7326 0.5894 +vn -0.3403 0.7327 0.5894 vn 0.6806 0.7326 0.0000 vn -0.6806 0.7326 0.0000 vn 0.3403 0.7326 0.5894 -vn 0.0000 -1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 vn -0.5000 0.0000 -0.8660 vn 0.5000 0.0000 -0.8660 vn 1.0000 0.0000 0.0000 @@ -1373,251 +425,1187 @@ vn -0.5000 0.0000 0.8660 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn -0.5824 -0.8129 0.0000 -vn -0.6089 0.7933 0.0000 +vn -0.6089 0.7932 0.0000 vn 0.5980 0.8015 0.0000 vn 0.5824 -0.8129 0.0000 -vn -0.6089 0.7932 0.0000 -usemtl Material.002 -s off -f 182/348/83 183/349/83 181/350/83 -f 184/351/84 185/352/84 183/349/84 -f 186/353/85 187/354/85 185/352/85 -f 188/355/86 189/356/86 187/354/86 -f 190/357/87 191/358/87 189/356/87 -f 190/359/88 188/360/88 182/361/88 -f 192/362/89 193/363/89 191/358/89 -f 194/364/90 181/365/90 193/363/90 -f 208/366/91 210/367/91 230/368/91 -f 212/369/92 213/370/92 229/371/92 -f 215/372/93 216/373/93 228/374/93 -f 218/375/94 219/376/94 227/377/94 -f 218/375/88 234/378/88 240/379/88 -f 221/380/95 222/381/95 226/382/95 -f 224/383/96 209/384/96 225/385/96 -f 225/385/97 195/386/97 223/387/97 -f 205/388/97 225/385/97 223/387/97 -f 222/381/98 224/383/98 225/385/98 -f 226/382/99 205/388/99 220/389/99 -f 203/390/99 226/382/99 220/389/99 -f 219/376/95 221/380/95 226/382/95 -f 227/377/100 203/390/100 217/391/100 -f 201/392/100 227/377/100 217/391/100 -f 216/373/94 218/375/94 227/377/94 -f 228/374/101 201/392/101 214/393/101 -f 199/394/101 228/374/101 214/393/101 -f 213/370/93 215/372/93 228/374/93 -f 229/371/102 199/394/102 211/395/102 -f 197/396/102 229/371/102 211/395/102 -f 210/367/92 212/369/92 229/371/92 -f 230/368/103 197/396/103 207/397/103 -f 195/398/103 230/368/103 207/397/103 -f 209/399/104 208/366/104 230/368/104 -f 239/400/105 245/401/105 251/402/105 -f 224/383/88 231/403/88 196/404/88 -f 208/366/88 231/405/88 237/406/88 -f 215/372/88 233/407/88 239/408/88 -f 221/380/88 236/409/88 206/410/88 -f 212/369/88 232/411/88 238/412/88 -f 218/375/88 235/413/88 204/414/88 -f 208/366/88 232/411/88 198/415/88 -f 215/372/88 234/378/88 202/416/88 -f 212/369/88 233/407/88 200/417/88 -f 224/383/88 236/409/88 242/418/88 -f 221/380/88 235/413/88 241/419/88 -f 252/420/88 251/421/88 250/422/88 -f 240/423/106 247/424/106 235/425/106 -f 237/426/107 244/427/107 232/428/107 -f 240/423/106 246/429/106 252/430/106 -f 241/431/108 248/432/108 236/433/108 -f 237/426/107 243/434/107 249/435/107 -f 238/436/109 245/401/109 233/437/109 -f 241/431/108 247/424/108 253/438/108 -f 242/439/110 243/434/110 231/440/110 -f 238/436/109 244/427/109 250/441/109 -f 239/400/105 246/429/105 234/442/105 -f 242/439/110 248/432/110 254/443/110 -f 264/444/111 290/445/111 258/446/111 -f 288/447/111 266/448/111 255/449/111 -f 261/450/111 288/447/111 255/449/111 -f 263/451/111 267/452/111 257/453/111 -f 291/454/111 265/455/111 260/456/111 -f 262/457/111 289/458/111 256/459/111 -f 268/460/111 264/444/111 259/461/111 -f 289/458/111 261/450/111 256/459/111 -f 290/445/111 263/451/111 258/446/111 -f 267/452/111 262/457/111 257/453/111 -f 266/448/111 291/454/111 260/456/111 -f 265/455/111 268/460/111 259/461/111 -f 277/462/88 300/463/88 285/464/88 -f 281/465/88 283/466/88 272/467/88 -f 271/468/88 283/466/88 296/469/88 -f 275/470/88 299/471/88 284/472/88 -f 279/473/88 302/474/88 282/475/88 -f 273/476/88 298/477/88 297/478/88 -f 277/462/88 301/479/88 280/480/88 -f 271/468/88 298/477/88 274/481/88 -f 275/470/88 300/463/88 278/482/88 -f 273/476/88 299/471/88 276/483/88 -f 281/465/88 302/474/88 287/484/88 -f 279/473/88 301/479/88 286/485/88 -f 260/486/112 281/487/112 266/488/112 -f 261/489/113 274/490/113 256/491/113 -f 262/492/114 276/493/114 257/494/114 -f 255/495/113 271/496/113 261/489/113 -f 263/497/115 278/498/115 258/499/115 -f 256/500/114 273/501/114 262/492/114 -f 264/502/116 280/503/116 259/504/116 -f 257/494/115 275/505/115 263/497/115 -f 265/506/117 282/507/117 260/486/117 -f 258/499/116 277/508/116 264/502/116 -f 266/488/112 272/509/112 255/495/112 -f 259/504/117 279/510/117 265/506/117 -f 285/511/88 284/512/88 297/513/88 -f 313/514/118 310/515/118 309/516/118 -f 317/517/86 304/518/86 303/519/86 -f 315/520/119 317/521/119 320/522/119 -f 312/523/120 318/524/120 319/525/120 -f 319/526/121 308/527/121 316/528/121 -f 314/529/121 316/530/121 310/515/121 -f 306/531/120 319/532/120 314/533/120 -f 320/534/122 303/519/122 311/535/122 -f 313/536/122 311/537/122 305/538/122 -f 309/516/119 320/539/119 313/514/119 -f 308/527/86 317/521/86 307/540/86 -f 306/531/118 313/536/118 305/538/118 -f 269/541/88 294/542/88 293/543/88 -f 182/348/83 184/351/83 183/349/83 -f 184/351/84 186/353/84 185/352/84 -f 186/353/85 188/355/85 187/354/85 -f 188/355/86 190/357/86 189/356/86 -f 190/357/87 192/362/87 191/358/87 -f 186/544/88 184/545/88 188/360/88 -f 184/545/88 182/361/88 188/360/88 -f 182/361/88 194/546/88 192/547/88 -f 192/547/88 190/359/88 182/361/88 -f 192/362/89 194/364/89 193/363/89 -f 194/364/90 182/548/90 181/365/90 -f 208/366/91 198/415/91 210/367/91 -f 212/369/92 200/417/92 213/370/92 -f 215/372/93 202/416/93 216/373/93 -f 218/375/94 204/414/94 219/376/94 -f 218/375/88 202/416/88 234/378/88 -f 221/380/95 206/410/95 222/381/95 -f 224/383/98 196/404/98 209/384/98 -f 225/385/97 209/384/97 195/386/97 -f 205/388/97 222/381/97 225/385/97 -f 222/381/98 206/410/98 224/383/98 -f 226/382/99 222/381/99 205/388/99 -f 203/390/99 219/376/99 226/382/99 -f 219/376/95 204/414/95 221/380/95 -f 227/377/100 219/376/100 203/390/100 -f 201/392/100 216/373/100 227/377/100 -f 216/373/94 202/416/94 218/375/94 -f 228/374/101 216/373/101 201/392/101 -f 199/394/101 213/370/101 228/374/101 -f 213/370/93 200/417/93 215/372/93 -f 229/371/102 213/370/102 199/394/102 -f 197/396/102 210/367/102 229/371/102 -f 210/367/92 198/415/92 212/369/92 -f 230/368/103 210/367/103 197/396/103 -f 195/398/103 209/399/103 230/368/103 -f 209/399/91 196/549/91 208/366/91 -f 239/400/105 233/437/105 245/401/105 -f 224/383/88 242/418/88 231/403/88 -f 208/366/88 196/549/88 231/405/88 -f 215/372/88 200/417/88 233/407/88 -f 221/380/88 241/419/88 236/409/88 -f 212/369/88 198/415/88 232/411/88 -f 218/375/88 240/379/88 235/413/88 -f 208/366/88 237/406/88 232/411/88 -f 215/372/88 239/408/88 234/378/88 -f 212/369/88 238/412/88 233/407/88 -f 224/383/88 206/410/88 236/409/88 -f 221/380/88 204/414/88 235/413/88 -f 250/422/88 244/550/88 249/551/88 -f 249/551/88 243/552/88 254/553/88 -f 254/553/88 248/554/88 253/555/88 -f 253/555/88 247/556/88 252/420/88 -f 252/420/88 246/557/88 251/421/88 -f 251/421/88 245/558/88 250/422/88 -f 250/422/88 249/551/88 252/420/88 -f 249/551/88 254/553/88 252/420/88 -f 254/553/88 253/555/88 252/420/88 -f 240/423/106 252/430/106 247/424/106 -f 237/426/107 249/435/107 244/427/107 -f 240/423/106 234/442/106 246/429/106 -f 241/431/108 253/438/108 248/432/108 -f 237/426/107 231/440/107 243/434/107 -f 238/436/109 250/441/109 245/401/109 -f 241/431/108 235/425/108 247/424/108 -f 242/439/110 254/443/110 243/434/110 -f 238/436/109 232/428/109 244/427/109 -f 239/400/105 251/402/105 246/429/105 -f 242/439/110 236/433/110 248/432/110 -f 264/444/111 269/559/111 290/445/111 -f 288/447/111 270/560/111 266/448/111 -f 261/450/111 292/561/111 288/447/111 -f 263/451/111 294/562/111 267/452/111 -f 291/454/111 295/563/111 265/455/111 -f 262/457/111 293/564/111 289/458/111 -f 268/460/111 269/559/111 264/444/111 -f 289/458/111 292/561/111 261/450/111 -f 290/445/111 294/562/111 263/451/111 -f 267/452/111 293/564/111 262/457/111 -f 266/448/111 270/560/111 291/454/111 -f 265/455/111 295/563/111 268/460/111 -f 277/462/88 278/482/88 300/463/88 -f 281/465/88 287/484/88 283/466/88 -f 271/468/88 272/467/88 283/466/88 -f 275/470/88 276/483/88 299/471/88 -f 279/473/88 286/485/88 302/474/88 -f 273/476/88 274/481/88 298/477/88 -f 277/462/88 285/464/88 301/479/88 -f 271/468/88 296/469/88 298/477/88 -f 275/470/88 284/472/88 300/463/88 -f 273/476/88 297/478/88 299/471/88 -f 281/465/88 282/475/88 302/474/88 -f 279/473/88 280/480/88 301/479/88 -f 260/486/112 282/507/112 281/487/112 -f 261/489/113 271/496/113 274/490/113 -f 262/492/114 273/501/114 276/493/114 -f 255/495/113 272/509/113 271/496/113 -f 263/497/115 275/505/115 278/498/115 -f 256/500/114 274/565/114 273/501/114 -f 264/502/116 277/508/116 280/503/116 -f 257/494/115 276/493/115 275/505/115 -f 265/506/117 279/510/117 282/507/117 -f 258/499/116 278/498/116 277/508/116 -f 266/488/112 281/487/112 272/509/112 -f 259/504/117 280/503/117 279/510/117 -f 297/513/88 298/566/88 296/567/88 -f 296/567/88 283/568/88 287/569/88 -f 287/569/88 302/570/88 286/571/88 -f 286/571/88 301/572/88 285/511/88 -f 285/511/88 300/573/88 284/512/88 -f 284/512/88 299/574/88 297/513/88 -f 297/513/88 296/567/88 285/511/88 -f 296/567/88 287/569/88 285/511/88 -f 287/569/88 286/571/88 285/511/88 -f 313/514/118 314/529/118 310/515/118 -f 317/517/86 318/524/86 304/518/86 -f 315/520/119 307/540/119 317/521/119 -f 312/523/123 304/518/123 318/524/123 -f 319/526/121 318/575/121 308/527/121 -f 314/529/121 319/576/121 316/530/121 -f 306/531/123 312/577/123 319/532/123 -f 320/534/122 317/517/122 303/519/122 -f 313/536/122 320/578/122 311/537/122 -f 309/516/119 315/579/119 320/539/119 -f 308/527/86 318/575/86 317/521/86 -f 306/531/118 314/533/118 313/536/118 -f 293/543/88 289/580/88 292/581/88 -f 292/581/88 288/582/88 270/583/88 -f 270/583/88 291/584/88 295/585/88 -f 295/585/88 268/586/88 269/541/88 -f 269/541/88 290/587/88 294/542/88 -f 294/542/88 267/588/88 293/543/88 -f 293/543/88 292/581/88 269/541/88 -f 292/581/88 270/583/88 269/541/88 -f 270/583/88 295/585/88 269/541/88 -l 289 298 +vn 0.4890 -0.2090 -0.8469 +vn -0.4769 -0.3003 -0.8261 +vn -0.4890 -0.2090 -0.8469 +vn -0.4769 -0.3003 0.8261 +vn 0.4769 -0.3003 -0.8261 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/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 10/12/6 8/13/6 1/14/6 +f 12/15/7 13/16/7 11/11/7 +f 14/17/8 3/18/8 13/16/8 +f 15/19/9 16/20/10 17/21/11 +f 18/22/12 19/23/12 20/24/12 +f 21/25/13 22/26/13 23/27/13 +f 24/28/14 25/29/15 26/30/14 +f 24/28/6 27/31/6 28/32/6 +f 29/33/16 30/34/16 31/35/16 +f 32/36/17 33/37/17 34/38/18 +f 34/38/19 35/39/19 36/40/19 +f 37/41/19 34/38/19 36/40/19 +f 30/34/20 32/36/17 34/38/18 +f 31/35/21 37/41/21 38/42/21 +f 39/43/21 31/35/21 38/42/21 +f 25/29/16 29/33/16 31/35/16 +f 26/30/22 39/43/22 40/44/22 +f 41/45/22 26/30/22 40/44/22 +f 22/26/14 24/28/14 26/30/14 +f 23/27/23 41/45/23 42/46/23 +f 43/47/24 23/27/23 42/46/23 +f 19/23/25 21/25/13 23/27/13 +f 20/24/26 43/47/26 44/48/26 +f 45/49/26 20/24/26 44/48/26 +f 16/20/12 18/22/12 20/24/12 +f 17/21/27 45/49/27 46/50/27 +f 35/51/27 17/21/27 46/50/27 +f 33/52/9 15/19/9 17/21/11 +f 47/53/28 48/54/28 49/55/28 +f 32/36/6 50/56/6 51/57/6 +f 15/19/6 50/58/6 52/59/6 +f 21/25/6 53/60/6 47/61/6 +f 29/33/6 54/62/6 55/63/6 +f 18/22/6 56/64/6 57/65/6 +f 24/28/6 58/66/6 59/67/6 +f 15/19/6 56/64/6 60/68/6 +f 21/25/6 27/31/6 61/69/6 +f 18/22/6 53/60/6 62/70/6 +f 32/36/6 54/62/6 63/71/6 +f 29/33/6 58/66/6 64/72/6 +f 65/73/6 49/74/6 66/75/6 +f 28/76/29 67/77/29 58/78/29 +f 52/79/30 68/80/30 56/81/31 +f 28/76/29 69/82/29 65/83/29 +f 64/84/32 70/85/32 54/86/32 +f 52/79/30 71/87/30 72/88/30 +f 57/89/33 48/54/33 53/90/33 +f 64/84/32 67/77/32 73/91/32 +f 63/92/34 71/87/34 50/93/34 +f 57/89/33 68/80/33 66/94/33 +f 47/53/28 69/82/28 27/95/28 +f 63/92/34 70/85/34 74/96/34 +f 75/97/35 76/98/35 77/99/35 +f 78/100/35 79/101/35 80/102/35 +f 81/103/35 78/100/35 80/102/35 +f 82/104/35 83/105/35 84/106/35 +f 85/107/35 86/108/35 87/109/35 +f 88/110/35 89/111/35 90/112/35 +f 91/113/35 75/97/35 92/114/35 +f 89/111/35 81/103/35 90/112/35 +f 76/98/35 82/104/35 77/99/35 +f 83/105/35 88/110/35 84/106/35 +f 79/101/35 85/107/35 87/109/35 +f 86/108/35 91/113/35 92/114/35 +f 93/115/6 94/116/6 95/117/6 +f 96/118/6 97/119/6 98/120/6 +f 99/121/6 97/119/6 100/122/6 +f 101/123/6 102/124/6 103/125/6 +f 104/126/6 105/127/6 106/128/6 +f 107/129/6 108/130/6 109/131/6 +f 93/115/6 110/132/6 111/133/6 +f 99/121/6 108/130/6 112/134/6 +f 101/123/6 94/116/6 113/135/6 +f 107/129/6 102/124/6 114/136/6 +f 96/118/6 105/127/6 115/137/6 +f 104/126/6 110/132/6 116/138/6 +f 87/139/36 96/140/36 79/141/36 +f 81/142/37 112/143/37 90/144/37 +f 88/145/38 114/146/38 84/147/38 +f 80/148/37 99/149/37 81/142/37 +f 82/150/39 113/151/39 77/152/39 +f 90/153/38 107/154/38 88/145/38 +f 75/155/40 111/156/40 92/157/40 +f 84/147/39 101/158/39 82/150/39 +f 86/159/41 106/160/41 87/139/41 +f 77/152/40 93/161/40 75/155/40 +f 79/141/36 98/162/36 80/148/36 +f 92/157/41 104/163/41 86/159/41 +f 95/164/6 103/165/6 109/166/6 +f 117/167/42 118/168/42 119/169/42 +f 120/170/4 121/171/4 122/172/4 +f 123/173/43 120/174/43 124/175/43 +f 125/176/44 126/177/44 127/178/44 +f 127/179/45 128/180/45 129/181/45 +f 130/182/45 129/183/45 118/168/45 +f 131/184/44 127/185/44 130/186/44 +f 124/187/46 122/172/46 132/188/46 +f 117/189/46 132/190/46 133/191/46 +f 119/169/43 124/192/43 117/167/43 +f 128/180/4 120/174/4 134/193/4 +f 131/184/42 117/189/42 133/191/42 +f 135/194/6 136/195/6 137/196/6 +f 1/1/1 4/4/1 2/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/15/5 11/11/5 +f 6/197/6 4/198/6 8/13/6 +f 4/198/6 1/14/6 8/13/6 +f 1/14/6 14/199/6 12/200/6 +f 12/200/6 10/12/6 1/14/6 +f 12/15/7 14/17/7 13/16/7 +f 14/17/8 1/201/8 3/18/8 +f 15/19/9 60/68/47 16/20/10 +f 18/22/12 62/70/12 19/23/12 +f 21/25/13 61/69/13 22/26/13 +f 24/28/14 59/67/15 25/29/15 +f 24/28/6 61/69/6 27/31/6 +f 29/33/16 55/63/16 30/34/16 +f 32/36/17 51/57/17 33/37/17 +f 34/38/19 33/37/19 35/39/19 +f 37/41/48 30/34/48 34/38/48 +f 30/34/20 55/63/49 32/36/17 +f 31/35/21 30/34/21 37/41/21 +f 39/43/21 25/29/21 31/35/21 +f 25/29/16 59/67/16 29/33/16 +f 26/30/22 25/29/22 39/43/22 +f 41/45/50 22/26/50 26/30/50 +f 22/26/14 61/69/14 24/28/14 +f 23/27/23 22/26/24 41/45/23 +f 43/47/23 19/23/23 23/27/23 +f 19/23/25 62/70/25 21/25/13 +f 20/24/26 19/23/26 43/47/26 +f 45/49/26 16/20/26 20/24/26 +f 16/20/12 60/68/12 18/22/12 +f 17/21/27 16/20/51 45/49/27 +f 35/51/27 33/52/27 17/21/27 +f 33/52/9 51/202/9 15/19/9 +f 47/53/28 53/90/28 48/54/28 +f 32/36/6 63/71/6 50/56/6 +f 15/19/6 51/202/6 50/58/6 +f 21/25/6 62/70/6 53/60/6 +f 29/33/6 64/72/6 54/62/6 +f 18/22/6 60/68/6 56/64/6 +f 24/28/6 28/32/6 58/66/6 +f 15/19/6 52/59/6 56/64/6 +f 21/25/6 47/61/6 27/31/6 +f 18/22/6 57/65/6 53/60/6 +f 32/36/6 55/63/6 54/62/6 +f 29/33/6 59/67/6 58/66/6 +f 66/75/6 68/203/6 72/204/6 +f 72/204/6 71/205/6 74/206/6 +f 74/206/6 70/207/6 73/208/6 +f 73/208/6 67/209/6 65/73/6 +f 65/73/6 69/210/6 49/74/6 +f 49/74/6 48/211/6 66/75/6 +f 66/75/6 72/204/6 65/73/6 +f 72/204/6 74/206/6 65/73/6 +f 74/206/6 73/208/6 65/73/6 +f 28/76/29 65/83/29 67/77/29 +f 52/79/30 72/88/30 68/80/30 +f 28/76/29 27/95/29 69/82/29 +f 64/84/32 73/91/32 70/85/32 +f 52/79/30 50/93/30 71/87/30 +f 57/89/33 66/94/33 48/54/33 +f 64/84/32 58/78/32 67/77/32 +f 63/92/34 74/96/34 71/87/34 +f 57/89/33 56/81/33 68/80/33 +f 47/53/28 49/55/28 69/82/28 +f 63/92/34 54/86/34 70/85/34 +f 75/97/35 135/212/35 76/98/35 +f 78/100/35 138/213/35 79/101/35 +f 81/103/35 139/214/35 78/100/35 +f 82/104/35 136/215/35 83/105/35 +f 85/107/35 140/216/35 86/108/35 +f 88/110/35 137/217/35 89/111/35 +f 91/113/35 135/212/35 75/97/35 +f 89/111/35 139/214/35 81/103/35 +f 76/98/35 136/215/35 82/104/35 +f 83/105/35 137/217/35 88/110/35 +f 79/101/35 138/213/35 85/107/35 +f 86/108/35 140/216/35 91/113/35 +f 93/115/6 113/135/6 94/116/6 +f 96/118/6 115/137/6 97/119/6 +f 99/121/6 98/120/6 97/119/6 +f 101/123/6 114/136/6 102/124/6 +f 104/126/6 116/138/6 105/127/6 +f 107/129/6 112/134/6 108/130/6 +f 93/115/6 95/117/6 110/132/6 +f 99/121/6 100/122/6 108/130/6 +f 101/123/6 103/125/6 94/116/6 +f 107/129/6 109/131/6 102/124/6 +f 96/118/6 106/128/6 105/127/6 +f 104/126/6 111/133/6 110/132/6 +f 87/139/36 106/160/36 96/140/36 +f 81/142/37 99/149/37 112/143/37 +f 88/145/38 107/154/38 114/146/38 +f 80/148/37 98/162/37 99/149/37 +f 82/150/39 101/158/39 113/151/39 +f 90/153/38 112/218/38 107/154/38 +f 75/155/40 93/161/40 111/156/40 +f 84/147/39 114/146/39 101/158/39 +f 86/159/41 104/163/41 106/160/41 +f 77/152/40 113/151/40 93/161/40 +f 79/141/36 96/140/36 98/162/36 +f 92/157/41 111/156/41 104/163/41 +f 109/166/6 108/219/6 100/220/6 +f 100/220/6 97/221/6 115/222/6 +f 115/222/6 105/223/6 116/224/6 +f 116/224/6 110/225/6 95/164/6 +f 95/164/6 94/226/6 103/165/6 +f 103/165/6 102/227/6 109/166/6 +f 109/166/6 100/220/6 95/164/6 +f 100/220/6 115/222/6 95/164/6 +f 115/222/6 116/224/6 95/164/6 +f 117/167/42 130/182/42 118/168/42 +f 120/170/4 126/177/4 121/171/4 +f 123/173/43 134/193/43 120/174/43 +f 125/176/44 121/171/44 126/177/44 +f 127/179/45 126/228/45 128/180/45 +f 130/182/45 127/229/45 129/183/45 +f 131/184/44 125/230/44 127/185/44 +f 124/187/46 120/170/46 122/172/46 +f 117/189/46 124/231/46 132/190/46 +f 119/169/43 123/232/43 124/192/43 +f 128/180/4 126/228/4 120/174/4 +f 131/184/42 130/186/42 117/189/42 +f 137/196/6 89/233/6 139/234/6 +f 139/234/6 78/235/6 138/236/6 +f 138/236/6 85/237/6 140/238/6 +f 140/238/6 91/239/6 135/194/6 +f 135/194/6 76/240/6 136/195/6 +f 136/195/6 83/241/6 137/196/6 +f 137/196/6 139/234/6 135/194/6 +f 139/234/6 138/236/6 135/194/6 +f 138/236/6 140/238/6 135/194/6 +l 89 108 +o window_Cube.002 +v 0.338840 1.091828 -0.732264 +v 0.809482 0.874469 -0.732264 +v 0.338840 0.874469 -0.732264 +v 0.809482 1.091828 -0.732264 +vt 0.978282 0.984581 +vt 0.711622 0.781054 +vt 0.978133 0.780594 +vt 0.713513 0.984128 +vn 0.0000 0.0000 -1.0000 +s 1 +f 141/242/52 142/243/52 143/244/52 +f 141/242/52 144/245/52 142/243/52 +o mainbody_Cube.001 +v 0.853658 0.789125 -0.153063 +v 0.857794 1.181387 -0.156304 +v 0.853658 1.181387 -0.153063 +v 0.849338 0.787154 -0.151007 +v 0.127829 1.183358 -0.151007 +v 0.125502 0.787154 -0.149193 +v 0.238197 0.787154 -0.728996 +v 0.234821 1.183358 -0.728996 +v 0.238197 1.183358 -0.728996 +v 0.234821 0.787154 -0.728996 +v 0.234821 1.127133 -0.731795 +v 0.121182 1.181387 -0.733581 +v 0.115750 0.789125 -0.732973 +v 0.117047 1.181387 -0.730340 +v 0.827432 1.125951 -0.735637 +v 0.835231 1.121211 -0.732176 +v 0.826308 1.125951 -0.732176 +v 0.155271 1.127133 -0.731795 +v 0.138747 1.118357 -0.731795 +v 0.140113 0.846848 -0.735637 +v 0.149037 0.842109 -0.731795 +v 0.149037 0.842109 -0.735637 +v 0.149897 1.125951 -0.735637 +v 0.140973 1.121211 -0.731795 +v 0.140973 1.121211 -0.735637 +v 0.234821 1.127133 -0.735637 +v 0.155271 1.127133 -0.735637 +v 0.154411 0.840926 -0.731795 +v 0.154411 0.840926 -0.735637 +v 0.149897 1.125951 -0.731795 +v 0.234338 0.840926 -0.731795 +v 0.234338 0.840926 -0.735637 +v 0.137887 0.849703 -0.735637 +v 0.140113 0.846848 -0.731795 +v 0.138747 1.118357 -0.735637 +v 0.137887 0.849703 -0.731795 +v 0.821198 0.840926 -0.735637 +v 0.825447 0.842109 -0.732176 +v 0.826572 0.842109 -0.735637 +v 0.836356 1.121211 -0.735637 +v 0.837458 1.118357 -0.732176 +v 0.837722 0.849703 -0.735637 +v 0.838582 1.118357 -0.735637 +v 0.835496 0.846848 -0.735637 +v 0.836597 0.849703 -0.732176 +v 0.822058 1.127133 -0.735637 +v 0.820933 1.127133 -0.732176 +v 0.834371 0.846848 -0.732176 +v 0.126814 0.787154 -0.735637 +v 0.234821 0.787154 -0.735637 +v 0.857794 0.789125 -0.730340 +v 0.853658 1.181387 -0.733581 +v 0.857794 1.181387 -0.730340 +v 0.847012 1.183358 -0.735637 +v 0.848027 0.787154 -0.735637 +v 0.860417 0.787154 -0.726955 +v 0.860417 1.183358 -0.161513 +v 0.862732 0.787154 -0.159690 +v 0.114423 0.787154 -0.159690 +v 0.114423 1.183358 -0.725132 +v 0.112109 0.787154 -0.726955 +v 0.121182 1.181387 -0.153063 +v 0.117047 0.789125 -0.156304 +v 0.121182 0.789125 -0.153063 +v 0.853658 0.789125 -0.733581 +v 0.860417 1.183358 -0.725132 +v 0.847012 1.183358 -0.151007 +v 0.857794 0.789125 -0.156304 +v 0.127829 1.183358 -0.735637 +v 0.120534 0.789125 -0.735475 +v 0.114423 1.183358 -0.161513 +v 0.117047 1.181387 -0.156304 +v 0.246749 1.051755 -0.754385 +v 0.246749 1.118254 -0.734150 +v 0.246749 1.051755 -0.757676 +v 0.273339 1.118254 -0.734150 +v 0.282202 1.051755 -0.757676 +v 0.273339 1.051755 -0.757676 +v 0.282202 1.118254 -0.730859 +v 0.282202 1.051755 -0.751094 +v 0.282202 1.051755 -0.754385 +v 0.255612 1.051755 -0.751094 +v 0.246749 1.118254 -0.727568 +v 0.246749 1.051755 -0.751094 +v 0.273339 0.852258 -0.730849 +v 0.282202 0.852258 -0.727568 +v 0.273339 0.852258 -0.727568 +v 0.255612 1.118254 -0.730849 +v 0.255612 1.118254 -0.727568 +v 0.264475 1.118254 -0.730849 +v 0.273339 1.118254 -0.727568 +v 0.273339 1.118254 -0.730849 +v 0.264475 0.852258 -0.730849 +v 0.255612 0.852258 -0.727568 +v 0.255612 0.852258 -0.730849 +v 0.255612 0.985256 -0.755632 +v 0.246749 0.918757 -0.747802 +v 0.255612 0.918757 -0.747802 +v 0.273339 0.918757 -0.747802 +v 0.264475 0.985256 -0.755632 +v 0.264475 0.918757 -0.747802 +v 0.264475 1.051755 -0.751094 +v 0.273339 1.051755 -0.751094 +v 0.282202 0.918757 -0.751094 +v 0.282202 0.985256 -0.755632 +v 0.282202 0.918757 -0.747802 +v 0.273339 0.985256 -0.762214 +v 0.282202 0.918757 -0.754385 +v 0.273339 0.918757 -0.754385 +v 0.255612 0.985256 -0.762214 +v 0.264475 0.918757 -0.754385 +v 0.255612 0.918757 -0.754385 +v 0.255612 1.118254 -0.734150 +v 0.264475 1.051755 -0.757676 +v 0.255612 1.051755 -0.757676 +v 0.246749 0.985256 -0.758923 +v 0.246749 0.918757 -0.754385 +v 0.246749 0.918757 -0.751094 +v 0.246749 0.852258 -0.734150 +v 0.246749 0.852258 -0.730859 +v 0.246749 0.852258 -0.727568 +v 0.246749 0.985256 -0.755632 +v 0.264475 0.985256 -0.762214 +v 0.246749 0.985256 -0.762214 +v 0.264475 0.852258 -0.734150 +v 0.255612 0.852258 -0.734150 +v 0.282202 0.852258 -0.734150 +v 0.273339 0.852258 -0.734150 +v 0.282202 0.852258 -0.730859 +v 0.282202 0.985256 -0.758923 +v 0.273339 0.985256 -0.755632 +v 0.282202 1.118254 -0.727568 +v 0.264475 0.852258 -0.727568 +v 0.282202 1.118254 -0.734150 +v 0.264475 1.118254 -0.734150 +v 0.264475 1.118254 -0.727568 +v 0.246749 1.118254 -0.730859 +v 0.282202 0.985256 -0.762214 +v 0.303131 1.127133 -0.208209 +v 0.303131 1.127133 -0.732176 +v 0.834371 0.846848 -0.208209 +v 0.826308 1.125951 -0.208209 +v 0.837458 1.118357 -0.208209 +v 0.820073 0.840926 -0.732176 +v 0.825447 0.842109 -0.208209 +v 0.835231 1.121211 -0.208209 +v 0.303131 0.840926 -0.208209 +v 0.303131 0.840926 -0.732176 +v 0.820073 0.840926 -0.208209 +v 0.836597 0.849703 -0.208209 +v 0.820933 1.127133 -0.208209 +v 0.796168 0.874846 -0.732176 +v 0.807544 1.087096 -0.732176 +v 0.339101 1.091541 -0.732176 +v 0.339101 0.874846 -0.732176 +v 0.806898 0.879290 -0.732176 +v 0.796813 1.091541 -0.732176 +v 0.800201 0.875733 -0.732176 +v 0.800847 1.090653 -0.732176 +v 0.809215 1.084954 -0.732176 +v 0.238197 0.840926 -0.735637 +v 0.238197 1.127133 -0.735637 +v 0.238197 1.127133 -0.731795 +v 0.238197 0.840926 -0.731795 +v 0.234821 1.183358 -0.735637 +v 0.238197 0.787154 -0.735637 +v 0.238197 1.183358 -0.735637 +v 0.808569 0.881432 -0.732176 +vt 0.187756 0.185116 +vt 0.190250 0.359586 +vt 0.187359 0.359553 +vt 0.184816 0.183014 +vt 0.011904 0.361665 +vt 0.011410 0.182951 +vt 0.434160 0.035160 +vt 0.437617 0.233175 +vt 0.433848 0.233203 +vt 0.421314 0.234632 +vt 0.421314 0.024505 +vt 0.424461 0.141338 +vt 0.180342 0.556180 +vt 0.006258 0.555192 +vt 0.180341 0.553216 +vt 0.619010 0.294600 +vt 0.615336 0.293939 +vt 0.618997 0.293255 +vt 0.560911 0.771909 +vt 0.499383 0.771947 +vt 0.573681 0.763070 +vt 0.551781 0.278506 +vt 0.554882 0.277399 +vt 0.554849 0.278591 +vt 0.477598 0.276038 +vt 0.480699 0.274931 +vt 0.480666 0.276123 +vt 0.456844 0.275464 +vt 0.476217 0.274807 +vt 0.476184 0.275999 +vt 0.556296 0.277438 +vt 0.556263 0.278630 +vt 0.477631 0.274846 +vt 0.575727 0.277976 +vt 0.575694 0.279168 +vt 0.550366 0.278467 +vt 0.551814 0.277314 +vt 0.482080 0.276163 +vt 0.550399 0.277275 +vt 0.482113 0.274971 +vt 0.529499 0.294540 +vt 0.531162 0.293570 +vt 0.531174 0.294916 +vt 0.615349 0.295285 +vt 0.613628 0.294117 +vt 0.536559 0.295677 +vt 0.613641 0.295463 +vt 0.534848 0.295531 +vt 0.536546 0.294332 +vt 0.620678 0.294193 +vt 0.620665 0.292848 +vt 0.534835 0.294186 +vt 0.390231 0.176341 +vt 0.365296 0.176585 +vt 0.365277 0.174628 +vt 0.008379 0.053132 +vt 0.010531 0.175541 +vt 0.008501 0.175525 +vt 0.678815 0.051868 +vt 0.681765 0.009865 +vt 0.681766 0.212069 +vt 0.191651 0.177060 +vt 0.014270 0.002844 +vt 0.192984 0.003659 +vt 0.661827 0.216665 +vt 0.508504 0.216408 +vt 0.472754 0.213047 +vt 0.182461 0.549659 +vt 0.002549 0.378060 +vt 0.181254 0.376258 +vt 0.008747 0.359552 +vt 0.004975 0.185105 +vt 0.008120 0.184943 +vt 0.006284 0.051542 +vt 0.010601 0.053093 +vt 0.004000 0.561180 +vt 0.003756 0.551834 +vt 0.006284 0.177060 +vt 0.012743 0.177034 +vt 0.012878 0.051518 +vt 0.184195 0.361727 +vt 0.193393 0.361723 +vt 0.190903 0.184977 +vt 0.194207 0.183009 +vt 0.182571 0.559338 +vt 0.182461 0.550031 +vt 0.006443 0.558120 +vt 0.002020 0.183025 +vt 0.004195 0.360497 +vt 0.005856 0.359540 +vt 0.363575 0.189539 +vt 0.388348 0.187899 +vt 0.391408 0.191039 +vt 0.913862 0.374962 +vt 0.932207 0.411652 +vt 0.913862 0.411652 +vt 0.947121 0.484382 +vt 0.928948 0.502555 +vt 0.928948 0.484382 +vt 0.922832 0.558833 +vt 0.904487 0.595522 +vt 0.904487 0.558833 +vt 0.904487 0.650556 +vt 0.922832 0.668901 +vt 0.904487 0.668901 +vt 0.831108 0.558833 +vt 0.849453 0.595522 +vt 0.831108 0.595522 +vt 0.977866 0.558833 +vt 0.996210 0.595522 +vt 0.977866 0.595522 +vt 0.959521 0.558833 +vt 0.941176 0.595522 +vt 0.941176 0.558833 +vt 0.812764 0.558833 +vt 0.794419 0.595522 +vt 0.794419 0.558833 +vt 0.886142 0.650556 +vt 0.867798 0.668901 +vt 0.867798 0.650556 +vt 0.867798 0.613867 +vt 0.886142 0.632212 +vt 0.867798 0.632212 +vt 0.922832 0.613867 +vt 0.904487 0.632212 +vt 0.904487 0.613867 +vt 0.867798 0.558833 +vt 0.886142 0.595522 +vt 0.867798 0.595522 +vt 0.899580 0.488095 +vt 0.881478 0.506196 +vt 0.881478 0.488095 +vt 0.899580 0.451892 +vt 0.881478 0.469993 +vt 0.881478 0.451892 +vt 0.947121 0.448035 +vt 0.928948 0.466208 +vt 0.928948 0.448035 +vt 0.895517 0.374962 +vt 0.877173 0.411652 +vt 0.877173 0.374962 +vt 0.858828 0.411652 +vt 0.858828 0.374962 +vt 0.877173 0.338273 +vt 0.858828 0.338273 +vt 0.895517 0.338273 +vt 0.917681 0.451892 +vt 0.899580 0.469993 +vt 0.917681 0.433790 +vt 0.899580 0.433790 +vt 0.947121 0.429861 +vt 0.928948 0.429861 +vt 0.867173 0.448727 +vt 0.848828 0.467071 +vt 0.848828 0.448727 +vt 0.867173 0.430382 +vt 0.848828 0.430382 +vt 0.881478 0.433790 +vt 0.867173 0.485416 +vt 0.848828 0.503761 +vt 0.848828 0.485416 +vt 0.867173 0.467071 +vt 0.849453 0.558833 +vt 0.849453 0.522144 +vt 0.867798 0.522144 +vt 0.886142 0.558833 +vt 0.886142 0.613867 +vt 0.922832 0.595522 +vt 0.849453 0.632212 +vt 0.849453 0.613867 +vt 0.849453 0.668901 +vt 0.849453 0.650556 +vt 0.776074 0.595522 +vt 0.776074 0.558833 +vt 0.794419 0.522144 +vt 0.776074 0.522144 +vt 0.812764 0.522144 +vt 0.941176 0.522144 +vt 0.922832 0.522144 +vt 0.959521 0.522144 +vt 0.959521 0.595522 +vt 0.977866 0.522144 +vt 0.996210 0.558833 +vt 0.812764 0.595522 +vt 0.831108 0.522144 +vt 0.886142 0.668901 +vt 0.922832 0.632212 +vt 0.904487 0.522144 +vt 0.886142 0.522144 +vt 0.917681 0.488095 +vt 0.899580 0.506196 +vt 0.917681 0.469993 +vt 0.947121 0.466208 +vt 0.895517 0.411652 +vt 0.913862 0.338273 +vt 0.932207 0.374962 +vt 0.002361 0.690819 +vt 0.139582 0.797050 +vt 0.002382 0.797077 +vt 0.002401 0.574653 +vt 0.139602 0.577216 +vt 0.002401 0.577243 +vt 0.002381 0.685835 +vt 0.139582 0.688398 +vt 0.002381 0.688425 +vt 0.002381 0.579638 +vt 0.139602 0.683414 +vt 0.002401 0.683441 +vt 0.142087 0.686223 +vt 0.139686 0.823759 +vt 0.139686 0.686202 +vt 0.139581 0.685808 +vt 0.139686 0.574626 +vt 0.278011 0.686118 +vt 0.139686 0.686118 +vt 0.248444 0.686223 +vt 0.142087 0.823780 +vt 0.139581 0.579611 +vt 0.139561 0.690792 +vt 0.250041 0.742196 +vt 0.249216 0.741377 +vt 0.249011 0.740883 +vt 0.774121 0.040412 +vt 0.741243 0.024151 +vt 0.740050 0.027021 +vt 0.969467 0.033059 +vt 0.943495 0.044419 +vt 0.971709 0.034142 +vt 0.946381 0.253662 +vt 0.739889 0.270791 +vt 0.975938 0.269283 +vt 0.769234 0.254505 +vt 0.778655 0.034951 +vt 0.748853 0.018299 +vt 0.746005 0.019438 +vt 0.975297 0.038147 +vt 0.946804 0.049219 +vt 0.976119 0.040486 +vt 0.775156 0.037976 +vt 0.946189 0.047450 +vt 0.941812 0.043603 +vt 0.456798 0.276753 +vt 0.529486 0.293195 +vt 0.696767 0.284505 +vt 0.696612 0.283178 +vt 0.740071 0.299235 +vt 0.431207 0.203196 +vt 0.430221 0.118309 +vt 0.434139 0.035214 +vt 0.437617 0.035132 +vt 0.428782 0.141338 +vt 0.428782 0.234632 +vt 0.422863 0.024375 +vt 0.423529 0.042958 +vt 0.424425 0.042882 +vt 0.499383 0.483956 +vt 0.561202 0.483917 +vt 0.573995 0.492741 +vt 0.572269 0.489869 +vt 0.565361 0.485105 +vt 0.571963 0.765944 +vt 0.565067 0.770717 +vt 0.456877 0.274272 +vt 0.362261 0.174619 +vt 0.362252 0.177081 +vt 0.221168 0.176128 +vt 0.218310 0.173556 +vt 0.218310 0.006092 +vt 0.221417 0.003539 +vt 0.388881 0.003540 +vt 0.391433 0.006646 +vt 0.393601 0.173750 +vt 0.525055 0.212989 +vt 0.674718 0.186092 +vt 0.524902 0.186971 +vt 0.472754 0.045915 +vt 0.472804 0.009580 +vt 0.673151 0.046188 +vt 0.676096 0.185512 +vt 0.678376 0.183205 +vt 0.674995 0.046955 +vt 0.678054 0.050022 +vt 0.678940 0.181820 +vt 0.012947 0.175130 +vt 0.698934 0.213354 +vt 0.698934 0.245794 +vt 0.666837 0.221675 +vt 0.666837 0.245794 +vt 0.503488 0.245686 +vt 0.472755 0.245833 +vt 0.503488 0.221424 +vt 0.666162 0.220045 +vt 0.663456 0.217340 +vt 0.504163 0.219793 +vt 0.506872 0.217084 +vt 0.004989 0.551834 +vt 0.390747 0.356145 +vt 0.386158 0.360486 +vt 0.360628 0.189572 +vt 0.219798 0.360486 +vt 0.216697 0.357385 +vt 0.216697 0.191025 +vt 0.219798 0.187924 +vt 0.360628 0.187426 +vt 0.363600 0.187579 +vt 0.947121 0.502555 +vt 0.922832 0.650556 +vt 0.867173 0.503761 +vt 0.996210 0.522144 +vt 0.917681 0.506196 +vt 0.932207 0.338273 +vt 0.139601 0.574626 +vt 0.278011 0.574626 +vt 0.248444 0.823780 +vt 0.249011 0.687906 +vt 0.294366 0.687906 +vt 0.294366 0.740616 +vt 0.294160 0.741111 +vt 0.292839 0.742143 +vt 0.250538 0.742399 +vt 0.293336 0.741935 +vt 0.781306 0.033891 +vt 0.457098 0.275488 +vt 0.976119 0.297728 +vt 0.433827 0.231012 +vt 0.431907 0.231171 +vt 0.429916 0.203288 +vt 0.426195 0.118261 +vt 0.427181 0.035132 +vn 0.6168 0.0000 0.7871 +vn 0.0021 0.0039 1.0000 +vn 0.0003 0.0007 1.0000 +vn 0.0025 0.0046 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn -0.6169 0.0073 -0.7870 +vn -0.4638 -0.8731 -0.1507 +vn -0.4637 -0.8731 -0.1507 +vn 0.4690 0.8832 0.0000 +vn 0.4691 -0.8832 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.2150 0.9766 0.0000 +vn 0.2148 -0.9767 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7883 0.6153 0.0000 +vn 0.7884 0.6151 0.0000 +vn 1.0000 -0.0032 0.0000 +vn 0.7885 -0.6150 0.0000 +vn -0.2141 0.9743 -0.0697 +vn -0.7638 -0.5958 -0.2482 +vn -0.7637 -0.5959 -0.2482 +vn -0.9511 0.0030 -0.3089 +vn -0.7639 0.5956 -0.2483 +vn -0.2143 -0.9743 -0.0696 +vn -0.4636 0.8731 -0.1507 +vn 0.6168 0.0000 -0.7871 +vn 1.0000 0.0052 -0.0037 +vn 1.0000 0.0005 -0.0005 +vn 1.0000 0.0058 -0.0041 +vn -1.0000 0.0052 0.0037 +vn -1.0000 0.0005 0.0005 +vn -1.0000 0.0058 0.0041 +vn -0.6169 -0.0000 0.7871 +vn 0.5448 -0.4689 -0.6952 +vn -0.2589 -0.8606 -0.4385 +vn 0.3836 0.7830 -0.4896 +vn 0.3837 0.7830 -0.4896 +vn 0.8931 0.0000 -0.4498 +vn 0.3427 0.0009 -0.9394 +vn 0.3836 0.7832 0.4893 +vn 0.3836 0.7831 0.4895 +vn 0.2955 -0.0000 0.9553 +vn 0.5448 -0.4689 0.6952 +vn 0.5674 0.0071 0.8234 +vn -0.3835 0.7833 -0.4892 +vn -0.3835 0.7833 -0.4893 +vn -0.2969 0.0051 -0.9549 +vn -0.8565 0.0063 -0.5161 +vn -0.5449 -0.4688 0.6952 +vn -0.6654 0.0073 0.7465 +vn -0.3837 0.7830 0.4895 +vn -0.3836 0.7831 0.4895 +vn -0.8931 -0.0000 0.4499 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.3335 -0.9427 +vn 0.0000 -0.3335 0.9427 +vn 0.0000 0.1169 0.9931 +vn 0.0000 -0.1169 -0.9931 +vn 0.0000 0.0681 -0.9977 +vn 0.0000 -0.2911 -0.9567 +vn 0.0000 -0.0681 0.9977 +vn 0.0000 0.2911 0.9567 +vn -0.4690 0.8832 0.0000 +vn -0.4691 -0.8831 0.0000 +vn -1.0000 0.0032 0.0000 +vn -0.2150 0.9766 0.0000 +vn -0.7886 -0.6149 -0.0000 +vn -0.7886 0.6149 0.0000 +vn -0.2148 -0.9767 0.0000 +vn 0.0000 -1.0000 0.0001 +vn -0.0059 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +vn 1.0000 0.0090 0.0000 +vn 0.9796 -0.0017 -0.2008 +vn -0.4634 0.0050 -0.8861 +vn 0.7886 0.6149 0.0000 +vn -0.2142 0.9743 -0.0695 +vn -0.7639 -0.5958 -0.2481 +vn -0.9511 0.0029 -0.3088 +vn 0.4513 -0.6178 -0.6439 +vn -0.2689 -0.8145 -0.5141 +vn 0.7912 0.0028 -0.6115 +vn 0.2955 0.0000 -0.9553 +vn 0.3837 0.7830 0.4897 +vn 0.4288 0.0025 0.9034 +vn 0.5423 -0.0784 0.8365 +vn 0.8932 -0.0000 0.4498 +vn -0.3836 0.7831 -0.4895 +vn -0.0258 0.0001 -0.9997 +vn -0.8919 0.0073 -0.4521 +vn -0.6855 -0.0819 0.7235 +vn -0.2955 -0.0000 0.9553 +vn -0.7912 0.0028 0.6115 +vn -0.7887 -0.6148 -0.0000 +s 1 +f 145/246/53 146/247/53 147/248/53 +f 148/249/54 149/250/55 150/251/56 +f 151/252/57 152/253/57 153/254/57 +f 152/255/58 154/256/58 155/257/58 +f 156/258/59 157/259/59 158/260/59 +f 159/261/60 160/262/61 161/263/60 +f 162/264/57 155/265/57 163/266/57 +f 164/267/62 165/268/62 166/269/62 +f 167/270/63 168/271/63 169/272/63 +f 170/273/64 162/274/64 171/275/64 +f 166/269/65 172/276/65 173/277/65 +f 171/275/66 174/278/66 167/270/66 +f 173/277/67 175/279/67 176/280/67 +f 177/281/68 178/282/69 164/267/69 +f 179/283/70 180/284/70 177/281/70 +f 169/272/71 163/285/71 179/283/71 +f 181/286/72 182/287/72 183/288/72 +f 184/289/73 185/290/73 160/262/74 +f 186/291/75 185/290/75 187/292/75 +f 188/293/76 189/294/76 186/291/76 +f 190/295/77 161/263/77 191/296/77 +f 183/288/78 192/297/78 188/293/78 +f 193/298/64 194/299/64 154/300/64 +f 195/301/79 196/302/79 197/303/79 +f 187/304/57 198/305/57 199/306/57 +f 200/307/80 201/308/81 202/309/82 +f 179/310/57 177/311/57 193/312/57 +f 203/313/83 204/314/84 205/315/85 +f 206/316/86 207/317/86 208/318/86 +f 200/319/87 209/320/87 195/301/87 +f 157/259/88 193/321/88 205/322/88 +f 210/323/89 196/302/90 198/324/90 +f 210/323/91 195/301/91 197/303/91 +f 198/324/92 209/320/92 199/325/92 +f 211/326/93 146/247/94 201/327/94 +f 211/326/95 145/246/95 147/248/95 +f 148/249/96 212/328/96 145/246/96 +f 201/327/97 212/328/97 202/329/97 +f 213/330/98 158/260/99 204/331/99 +f 213/330/100 214/332/100 156/258/100 +f 205/322/101 158/260/101 157/259/101 +f 203/333/102 208/318/102 207/317/102 +f 149/250/103 208/318/103 150/251/103 +f 215/334/104 206/316/105 149/250/105 +f 215/334/106 207/317/106 216/335/106 +f 152/336/67 213/337/67 204/338/67 +f 217/339/107 218/340/107 219/341/107 +f 220/342/108 221/343/108 222/344/108 +f 223/345/58 224/346/58 225/347/58 +f 226/348/109 227/349/109 228/350/109 +f 229/351/64 230/352/64 231/353/64 +f 232/354/67 227/355/67 233/356/67 +f 234/357/67 235/358/67 236/359/67 +f 237/360/64 238/361/64 239/362/64 +f 240/363/110 241/364/110 242/365/110 +f 243/366/110 244/367/110 245/368/110 +f 235/369/109 246/370/109 247/371/109 +f 248/372/58 249/373/58 250/374/58 +f 251/375/111 252/376/111 253/377/111 +f 254/378/111 255/379/111 256/380/111 +f 257/381/108 258/382/108 259/383/108 +f 260/384/107 261/385/107 262/386/107 +f 262/386/107 263/387/107 264/388/107 +f 241/389/107 264/388/107 265/390/107 +f 266/391/107 262/386/107 241/389/107 +f 259/392/112 267/393/112 254/378/112 +f 219/394/112 254/378/112 268/395/112 +f 218/396/108 259/383/108 219/397/108 +f 256/398/113 269/399/113 270/400/113 +f 261/401/113 270/400/113 263/402/113 +f 268/395/111 256/380/111 261/403/111 +f 253/404/113 271/405/113 272/406/113 +f 255/407/113 272/406/113 269/399/113 +f 267/393/111 253/377/111 255/379/111 +f 273/408/58 250/374/58 230/352/58 +f 271/409/58 248/372/58 273/408/58 +f 252/410/58 274/411/58 248/372/58 +f 247/371/114 244/367/114 275/412/114 +f 224/346/114 275/412/114 249/373/114 +f 276/413/109 247/371/109 224/346/109 +f 243/366/115 277/414/115 231/415/115 +f 250/374/115 231/415/115 230/352/115 +f 249/373/110 243/366/110 250/374/110 +f 242/365/115 265/416/115 238/417/115 +f 245/368/115 238/417/115 277/414/115 +f 244/367/110 242/365/110 245/368/110 +f 239/362/64 265/418/64 264/419/64 +f 270/420/64 264/419/64 263/421/64 +f 269/422/64 239/362/64 270/420/64 +f 236/359/67 276/413/67 223/345/67 +f 220/423/67 223/345/67 278/424/67 +f 279/425/67 236/359/67 220/423/67 +f 232/354/67 280/426/67 234/357/67 +f 257/427/67 234/357/67 279/425/67 +f 257/427/67 281/428/67 232/354/67 +f 229/351/64 277/429/64 237/360/64 +f 272/430/64 237/360/64 269/422/64 +f 272/430/64 273/408/64 229/351/64 +f 226/348/114 266/431/114 240/363/114 +f 246/370/114 240/363/114 244/367/114 +f 280/432/109 226/348/109 246/370/109 +f 225/347/58 249/373/58 274/411/58 +f 221/433/58 274/411/58 282/434/58 +f 278/424/58 225/347/58 221/433/58 +f 222/435/112 282/436/112 251/375/112 +f 258/437/112 251/375/112 267/393/112 +f 279/438/108 222/344/108 258/382/108 +f 260/384/107 219/341/107 268/439/107 +f 266/391/107 217/339/107 260/384/107 +f 228/440/107 281/441/107 217/339/107 +f 191/442/64 283/443/64 284/444/64 +f 182/445/116 285/446/116 192/447/116 +f 160/448/117 286/449/117 161/450/117 +f 189/451/118 287/452/118 185/453/118 +f 288/454/119 289/455/119 182/456/119 +f 185/453/120 290/457/120 160/448/120 +f 284/458/58 291/459/58 292/460/58 +f 292/461/67 293/462/67 288/454/67 +f 192/447/121 294/463/121 189/451/121 +f 161/450/122 295/464/122 191/442/122 +f 285/465/57 289/466/57 293/467/57 +f 296/468/57 182/469/57 288/470/57 +f 185/471/57 297/472/57 160/473/57 +f 298/474/57 292/475/57 284/476/57 +f 299/477/57 288/470/57 292/475/57 +f 300/478/57 189/479/57 192/480/57 +f 161/481/57 301/482/57 191/483/57 +f 191/483/57 298/474/57 284/476/57 +f 302/484/57 192/480/57 182/469/57 +f 160/473/57 303/485/57 161/481/57 +f 189/479/57 304/486/57 185/471/57 +f 305/487/67 288/488/67 181/286/67 +f 306/489/64 191/296/123 307/490/64 +f 308/491/124 284/476/124 292/475/124 +f 307/492/107 308/493/107 151/494/107 +f 145/246/53 212/328/53 146/247/53 +f 148/249/54 211/326/125 149/250/55 +f 151/252/57 154/495/57 152/253/57 +f 170/496/58 309/497/58 155/257/58 +f 309/497/58 152/255/58 155/257/58 +f 154/256/126 194/498/126 175/499/126 +f 194/498/126 176/500/126 175/499/126 +f 154/256/127 175/499/127 155/257/127 +f 156/258/128 214/332/128 157/259/128 +f 159/261/60 184/289/61 160/262/61 +f 155/265/57 175/501/57 163/266/57 +f 175/501/57 172/502/57 180/503/57 +f 180/503/57 172/502/57 178/504/57 +f 172/502/57 165/505/57 178/504/57 +f 180/503/57 163/266/57 175/501/57 +f 163/266/57 168/506/57 174/507/57 +f 174/507/57 162/264/57 163/266/57 +f 164/267/62 178/282/62 165/268/62 +f 167/270/63 174/278/63 168/271/63 +f 170/273/64 155/508/64 162/274/64 +f 166/269/65 165/268/65 172/276/65 +f 171/275/66 162/274/66 174/278/66 +f 173/277/67 172/276/67 175/279/67 +f 177/281/68 180/284/129 178/282/69 +f 179/283/70 163/285/70 180/284/70 +f 169/272/71 168/271/71 163/285/71 +f 181/286/130 288/488/130 182/287/130 +f 184/289/73 187/292/131 185/290/73 +f 186/291/132 189/294/132 185/290/132 +f 188/293/76 192/297/76 189/294/76 +f 190/295/77 159/261/77 161/263/77 +f 183/288/78 182/287/78 192/297/78 +f 151/509/64 310/510/64 199/511/64 +f 199/511/64 200/512/64 151/509/64 +f 200/512/64 202/513/64 148/514/64 +f 151/509/64 200/512/64 148/514/64 +f 148/514/64 150/515/64 203/516/64 +f 151/509/64 148/514/64 203/516/64 +f 203/516/64 205/517/64 154/300/64 +f 151/509/64 203/516/64 154/300/64 +f 205/517/64 193/298/64 154/300/64 +f 195/301/79 209/320/79 196/302/79 +f 199/306/57 310/518/57 181/519/57 +f 310/518/57 305/520/57 181/519/57 +f 306/521/57 311/522/57 190/523/57 +f 311/522/57 198/305/57 190/523/57 +f 199/306/57 181/519/57 183/524/57 +f 199/306/57 183/524/57 188/525/57 +f 159/526/57 190/523/57 198/305/57 +f 184/527/57 159/526/57 198/305/57 +f 199/306/57 188/525/57 186/528/57 +f 187/304/57 184/527/57 198/305/57 +f 199/306/57 186/528/57 187/304/57 +f 200/307/80 210/529/58 201/308/81 +f 213/530/57 309/531/57 171/532/57 +f 309/531/57 170/533/57 171/532/57 +f 176/534/57 194/535/57 173/536/57 +f 194/535/57 193/312/57 173/536/57 +f 213/530/57 171/532/57 167/537/57 +f 213/530/57 167/537/57 169/538/57 +f 166/539/57 173/536/57 193/312/57 +f 164/540/57 166/539/57 193/312/57 +f 213/530/57 169/538/57 179/310/57 +f 177/311/57 164/540/57 193/312/57 +f 213/530/57 179/310/57 193/312/57 +f 203/313/83 215/541/107 204/314/84 +f 206/316/86 216/335/86 207/317/86 +f 200/319/133 199/325/133 209/320/133 +f 157/259/134 214/332/134 193/321/134 +f 210/323/89 197/303/89 196/302/90 +f 210/323/135 200/319/135 195/301/135 +f 198/324/136 196/302/136 209/320/136 +f 211/326/93 147/248/137 146/247/94 +f 211/326/138 148/249/138 145/246/138 +f 148/249/139 202/329/139 212/328/139 +f 201/327/140 146/247/140 212/328/140 +f 213/330/98 156/258/141 158/260/99 +f 213/330/142 193/321/142 214/332/142 +f 205/322/143 204/331/143 158/260/143 +f 203/333/144 150/251/144 208/318/144 +f 149/250/145 206/316/145 208/318/145 +f 215/334/104 216/335/104 206/316/105 +f 215/334/146 203/333/146 207/317/146 +f 204/338/67 215/542/67 152/336/67 +f 215/542/67 149/543/67 153/544/67 +f 152/336/67 215/542/67 153/544/67 +f 149/543/67 211/545/67 153/544/67 +f 211/545/67 201/546/67 153/544/67 +f 201/546/67 210/547/67 153/544/67 +f 210/547/67 198/548/67 153/544/67 +f 198/548/67 311/549/67 153/544/67 +f 152/336/67 309/550/67 213/337/67 +f 217/339/107 281/441/107 218/340/107 +f 220/342/108 278/551/108 221/343/108 +f 223/345/58 276/413/58 224/346/58 +f 226/348/109 233/552/109 227/349/109 +f 229/351/64 273/408/64 230/352/64 +f 232/354/67 281/428/67 227/355/67 +f 234/357/67 280/426/67 235/358/67 +f 237/360/64 277/429/64 238/361/64 +f 240/363/110 266/431/110 241/364/110 +f 243/366/110 275/412/110 244/367/110 +f 235/369/109 280/432/109 246/370/109 +f 248/372/58 274/411/58 249/373/58 +f 251/375/111 282/436/111 252/376/111 +f 254/378/111 267/393/111 255/379/111 +f 257/381/108 279/438/108 258/382/108 +f 260/384/107 268/439/107 261/385/107 +f 262/386/107 261/385/107 263/387/107 +f 241/389/107 262/386/107 264/388/107 +f 266/391/107 260/384/107 262/386/107 +f 259/392/112 258/437/112 267/393/112 +f 219/394/112 259/392/112 254/378/112 +f 218/396/108 257/381/108 259/383/108 +f 256/398/113 255/407/113 269/399/113 +f 261/401/113 256/398/113 270/400/113 +f 268/395/111 254/378/111 256/380/111 +f 253/404/113 252/553/113 271/405/113 +f 255/407/113 253/404/113 272/406/113 +f 267/393/111 251/375/111 253/377/111 +f 273/408/58 248/372/58 250/374/58 +f 271/409/58 252/410/58 248/372/58 +f 252/410/58 282/434/58 274/411/58 +f 247/371/114 246/370/114 244/367/114 +f 224/346/114 247/371/114 275/412/114 +f 276/413/109 235/369/109 247/371/109 +f 243/366/115 245/368/115 277/414/115 +f 250/374/115 243/366/115 231/415/115 +f 249/373/110 275/412/110 243/366/110 +f 242/365/115 241/364/115 265/416/115 +f 245/368/115 242/365/115 238/417/115 +f 244/367/110 240/363/110 242/365/110 +f 239/362/64 238/361/64 265/418/64 +f 270/420/64 239/362/64 264/419/64 +f 269/422/64 237/360/64 239/362/64 +f 236/359/67 235/358/67 276/413/67 +f 220/423/67 236/359/67 223/345/67 +f 279/425/67 234/357/67 236/359/67 +f 232/354/67 233/356/67 280/426/67 +f 257/427/67 232/354/67 234/357/67 +f 257/427/67 218/554/67 281/428/67 +f 229/351/64 231/353/64 277/429/64 +f 272/430/64 229/351/64 237/360/64 +f 272/430/64 271/409/64 273/408/64 +f 226/348/114 228/350/114 266/431/114 +f 246/370/114 226/348/114 240/363/114 +f 280/432/109 233/552/109 226/348/109 +f 225/347/58 224/346/58 249/373/58 +f 221/433/58 225/347/58 274/411/58 +f 278/424/58 223/345/58 225/347/58 +f 222/435/112 221/555/112 282/436/112 +f 258/437/112 222/435/112 251/375/112 +f 279/438/108 220/342/108 222/344/108 +f 260/384/107 217/339/107 219/341/107 +f 266/391/107 228/440/107 217/339/107 +f 228/440/107 227/556/107 281/441/107 +f 191/442/64 295/464/64 283/443/64 +f 182/445/116 289/557/116 285/446/116 +f 160/448/117 290/457/117 286/449/117 +f 189/451/118 294/463/118 287/452/118 +f 288/454/119 293/462/119 289/455/119 +f 185/453/147 287/452/147 290/457/147 +f 284/458/58 283/558/58 291/459/58 +f 292/461/67 291/559/67 293/462/67 +f 192/447/121 285/446/121 294/463/121 +f 161/450/122 286/449/122 295/464/122 +f 293/467/57 291/560/57 283/561/57 +f 283/561/57 295/562/57 293/467/57 +f 295/562/57 286/563/57 287/564/57 +f 293/467/57 295/562/57 294/565/57 +f 286/563/57 290/566/57 287/564/57 +f 287/564/57 294/565/57 295/562/57 +f 294/565/57 285/465/57 293/467/57 +f 296/468/57 302/484/57 182/469/57 +f 185/471/57 304/486/57 297/472/57 +f 298/474/57 299/477/57 292/475/57 +f 299/477/57 296/468/57 288/470/57 +f 300/478/57 312/567/57 189/479/57 +f 161/481/57 303/485/57 301/482/57 +f 191/483/57 301/482/57 298/474/57 +f 302/484/57 300/478/57 192/480/57 +f 160/473/57 297/472/57 303/485/57 +f 189/479/57 312/567/57 304/486/57 +f 305/487/67 308/568/67 288/488/67 +f 306/489/64 190/295/123 191/296/123 +f 308/491/124 307/569/124 284/476/124 +f 153/570/107 311/571/107 307/492/107 +f 311/571/107 306/572/107 307/492/107 +f 305/573/107 310/574/107 308/493/107 +f 310/574/107 151/494/107 308/493/107 +f 153/570/107 307/492/107 151/494/107 diff --git a/src/main/resources/assets/hbm/models/machines/piston_inserter.obj b/src/main/resources/assets/hbm/models/machines/piston_inserter.obj new file mode 100644 index 000000000..ff7cc6c6d --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/piston_inserter.obj @@ -0,0 +1,507 @@ +# Blender v3.2.0 OBJ File: 'piston_inserter.blend' +# www.blender.org +mtllib piston_inserter.mtl +o Frame +v -0.125000 0.000000 0.125000 +v -0.125000 1.000000 0.125000 +v -0.125000 0.000000 -0.125000 +v -0.125000 1.000000 -0.125000 +v 0.125000 0.000000 0.125000 +v 0.125000 1.000000 0.125000 +v 0.125000 0.000000 -0.125000 +v 0.125000 1.000000 -0.125000 +v -0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v -0.375000 1.000000 0.375000 +v -0.375000 1.000000 -0.375000 +v 0.375000 1.000000 -0.375000 +v 0.375000 1.000000 0.375000 +v -0.375000 0.000000 -0.375000 +v -0.375000 0.000000 0.375000 +v 0.375000 0.000000 -0.375000 +v 0.375000 0.000000 0.375000 +v 0.312500 0.937500 0.375000 +v 0.375000 0.937500 0.375000 +v 0.125000 0.937500 0.125000 +v 0.375000 0.937500 0.312500 +v 0.004327 0.858644 -0.020544 +v 0.062500 0.937500 0.125000 +v 0.125000 0.937500 0.062500 +v -0.312500 0.937500 -0.375000 +v -0.375000 0.937500 -0.375000 +v -0.125000 0.937500 -0.125000 +v -0.375000 0.937500 -0.312500 +v -0.062500 0.937500 -0.125000 +v -0.125000 0.937500 -0.062500 +v 0.375000 0.937500 -0.312500 +v 0.375000 0.937500 -0.375000 +v 0.125000 0.937500 -0.125000 +v 0.312500 0.937500 -0.375000 +v 0.125000 0.937500 -0.062500 +v 0.062500 0.937500 -0.125000 +v -0.375000 0.937500 0.312500 +v -0.375000 0.937500 0.375000 +v -0.125000 0.937500 0.125000 +v -0.312500 0.937500 0.375000 +v -0.125000 0.937500 0.062500 +v -0.062500 0.937500 0.125000 +v 0.312500 0.062500 0.375000 +v 0.375000 0.062500 0.375000 +v 0.125000 0.062500 0.125000 +v 0.375000 0.062500 0.312500 +v 0.062500 0.062500 0.125000 +v 0.125000 0.062500 0.062500 +v -0.312500 0.062500 -0.375000 +v -0.375000 0.062500 -0.375000 +v -0.125000 0.062500 -0.125000 +v -0.375000 0.062500 -0.312500 +v -0.062500 0.062500 -0.125000 +v -0.125000 0.062500 -0.062500 +v 0.375000 0.062500 -0.312500 +v 0.375000 0.062500 -0.375000 +v 0.125000 0.062500 -0.125000 +v 0.312500 0.062500 -0.375000 +v 0.125000 0.062500 -0.062500 +v 0.062500 0.062500 -0.125000 +v -0.375000 0.062500 0.312500 +v -0.375000 0.062500 0.375000 +v -0.125000 0.062500 0.125000 +v -0.312500 0.062500 0.375000 +v -0.125000 0.062500 0.062500 +v -0.062500 0.062500 0.125000 +v 0.312500 0.062500 -0.375000 +v 0.375000 0.062500 -0.375000 +v 0.125000 0.062500 -0.125000 +v 0.375000 0.062500 -0.312500 +v 0.062500 0.062500 -0.125000 +v 0.125000 0.062500 -0.062500 +v -0.312500 0.062500 0.375000 +v -0.375000 0.062500 0.375000 +v -0.125000 0.062500 0.125000 +v -0.375000 0.062500 0.312500 +v -0.062500 0.062500 0.125000 +v -0.125000 0.062500 0.062500 +v 0.375000 0.062500 0.312500 +v 0.375000 0.062500 0.375000 +v 0.125000 0.062500 0.125000 +v 0.312500 0.062500 0.375000 +v 0.125000 0.062500 0.062500 +v 0.062500 0.062500 0.125000 +v -0.375000 0.062500 -0.312500 +v -0.375000 0.062500 -0.375000 +v -0.125000 0.062500 -0.125000 +v -0.312500 0.062500 -0.375000 +v -0.125000 0.062500 -0.062500 +v -0.062500 0.062500 -0.125000 +v 0.312500 0.937500 -0.375000 +v 0.375000 0.937500 -0.375000 +v 0.125000 0.937500 -0.125000 +v 0.375000 0.937500 -0.312500 +v 0.062500 0.937500 -0.125000 +v 0.125000 0.937500 -0.062500 +v -0.312500 0.937500 0.375000 +v -0.375000 0.937500 0.375000 +v -0.125000 0.937500 0.125000 +v -0.375000 0.937500 0.312500 +v -0.062500 0.937500 0.125000 +v -0.125000 0.937500 0.062500 +v 0.375000 0.937500 0.312500 +v 0.375000 0.937500 0.375000 +v 0.125000 0.937500 0.125000 +v 0.312500 0.937500 0.375000 +v 0.125000 0.937500 0.062500 +v 0.062500 0.937500 0.125000 +v -0.375000 0.937500 -0.312500 +v -0.375000 0.937500 -0.375000 +v -0.125000 0.937500 -0.125000 +v -0.312500 0.937500 -0.375000 +v -0.125000 0.937500 -0.062500 +v -0.062500 0.937500 -0.125000 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.714286 0.416667 +vt 0.571429 0.333333 +vt 0.714286 0.333333 +vt 0.714286 0.750000 +vt 0.571429 0.833333 +vt 0.571429 0.750000 +vt 0.071429 0.708333 +vt 0.500000 0.708333 +vt 0.071429 0.958333 +vt 0.000000 0.666667 +vt 0.500000 0.958333 +vt 0.000000 1.000000 +vt 0.571429 1.000000 +vt 0.500000 0.041667 +vt 0.500000 0.291667 +vt 0.071429 0.291667 +vt 0.000000 0.000000 +vt 0.071429 0.041667 +vt 0.571429 0.000000 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.714286 0.416667 +vt 0.571429 0.750000 +vt 0.571429 0.416667 +vt 0.571429 -0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.333333 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.214286 0.125000 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.357143 0.208333 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.214286 0.208333 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.357143 0.125000 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt -0.000000 0.666667 +vt 0.000000 0.666667 +vt 0.000000 0.666667 +vt 0.571429 0.416667 +vt 0.714286 0.833333 +vt 0.714286 0.750000 +vt 0.714286 0.750000 +vt 0.714286 0.750000 +vt 0.714286 0.750000 +vt 1.000000 -0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 -0.000000 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vt 0.250000 0.125000 +vt 0.214286 0.145833 +vt 0.071429 0.041667 +vt 0.321429 0.208333 +vt 0.357143 0.187500 +vt 0.500000 0.291667 +vt 0.214286 0.187500 +vt 0.250000 0.208333 +vt 0.071429 0.291667 +vt 0.357143 0.145833 +vt 0.321429 0.125000 +vt 0.500000 0.041667 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl None +s off +f 9/1/1 13/2/1 14/3/1 +f 10/4/2 15/5/2 13/6/2 +f 11/7/3 16/8/3 15/9/3 +f 12/10/4 14/11/4 16/12/4 +f 7/13/5 1/14/5 3/15/5 +f 4/16/6 6/17/6 8/18/6 +f 18/19/6 9/1/6 17/20/6 +f 19/21/6 10/22/6 18/19/6 +f 20/23/6 11/24/6 19/21/6 +f 17/20/6 12/25/6 20/23/6 +f 22/26/5 13/6/5 21/27/5 +f 21/27/5 15/5/5 23/28/5 +f 23/28/5 16/29/5 24/30/5 +f 24/30/5 14/31/5 22/26/5 +f 8/32/2 3/33/2 4/34/2 +f 6/35/3 7/36/3 8/37/3 +f 2/38/4 5/39/4 6/40/4 +f 4/41/1 1/42/1 2/43/1 +f 23/44/1 20/45/1 19/46/1 +f 24/47/2 17/48/2 20/49/2 +f 22/50/3 18/51/3 17/52/3 +f 21/53/4 19/54/4 18/55/4 +f 27/56/5 28/57/5 25/58/5 +f 34/59/5 35/60/5 32/61/5 +f 40/62/5 41/63/5 38/64/5 +f 46/65/5 47/66/5 44/67/5 +f 52/68/5 53/69/5 50/70/5 +f 58/71/5 59/72/5 56/73/5 +f 64/74/5 65/75/5 62/76/5 +f 70/77/5 71/78/5 68/79/5 +f 76/80/6 77/81/6 74/82/6 +f 82/83/6 83/84/6 80/85/6 +f 88/86/6 89/87/6 86/88/6 +f 94/89/6 95/90/6 92/91/6 +f 100/92/6 101/93/6 98/94/6 +f 106/95/6 107/96/6 104/97/6 +f 112/98/6 113/99/6 110/100/6 +f 118/101/6 119/102/6 116/103/6 +f 9/1/1 10/22/1 13/2/1 +f 10/4/2 11/104/2 15/5/2 +f 11/7/3 12/105/3 16/8/3 +f 12/10/4 9/106/4 14/11/4 +f 7/13/5 5/107/5 1/14/5 +f 4/16/6 2/108/6 6/17/6 +f 18/19/6 10/22/6 9/1/6 +f 19/21/6 11/24/6 10/22/6 +f 20/23/6 12/25/6 11/24/6 +f 17/20/6 9/1/6 12/25/6 +f 22/26/5 14/31/5 13/6/5 +f 21/27/5 13/6/5 15/5/5 +f 23/28/5 15/5/5 16/29/5 +f 24/30/5 16/29/5 14/31/5 +f 8/32/2 7/109/2 3/33/2 +f 6/35/3 5/110/3 7/36/3 +f 2/38/4 1/111/4 5/39/4 +f 4/41/1 3/112/1 1/42/1 +f 23/44/1 24/113/1 20/45/1 +f 24/47/2 22/114/2 17/48/2 +f 22/50/3 21/115/3 18/51/3 +f 21/53/4 23/116/4 19/54/4 +f 25/58/5 30/117/5 27/56/5 +f 27/56/5 31/118/5 28/57/5 +f 28/57/5 26/119/5 25/58/5 +f 32/61/5 36/120/5 34/59/5 +f 34/59/5 37/121/5 35/60/5 +f 35/60/5 33/122/5 32/61/5 +f 38/64/5 42/123/5 40/62/5 +f 40/62/5 43/124/5 41/63/5 +f 41/63/5 39/125/5 38/64/5 +f 44/67/5 48/126/5 46/65/5 +f 46/65/5 49/127/5 47/66/5 +f 47/66/5 45/128/5 44/67/5 +f 50/70/5 54/129/5 52/68/5 +f 52/68/5 55/130/5 53/69/5 +f 53/69/5 51/131/5 50/70/5 +f 56/73/5 60/132/5 58/71/5 +f 58/71/5 61/133/5 59/72/5 +f 59/72/5 57/134/5 56/73/5 +f 62/76/5 66/135/5 64/74/5 +f 64/74/5 67/136/5 65/75/5 +f 65/75/5 63/137/5 62/76/5 +f 68/79/5 72/138/5 70/77/5 +f 70/77/5 73/139/5 71/78/5 +f 71/78/5 69/140/5 68/79/5 +f 74/82/6 78/141/6 76/80/6 +f 76/80/6 79/142/6 77/81/6 +f 77/81/6 75/143/6 74/82/6 +f 80/85/6 84/144/6 82/83/6 +f 82/83/6 85/145/6 83/84/6 +f 83/84/6 81/146/6 80/85/6 +f 86/88/6 90/147/6 88/86/6 +f 88/86/6 91/148/6 89/87/6 +f 89/87/6 87/149/6 86/88/6 +f 92/91/6 96/150/6 94/89/6 +f 94/89/6 97/151/6 95/90/6 +f 95/90/6 93/152/6 92/91/6 +f 98/94/6 102/153/6 100/92/6 +f 100/92/6 103/154/6 101/93/6 +f 101/93/6 99/155/6 98/94/6 +f 104/97/6 108/156/6 106/95/6 +f 106/95/6 109/157/6 107/96/6 +f 107/96/6 105/158/6 104/97/6 +f 110/100/6 114/159/6 112/98/6 +f 112/98/6 115/160/6 113/99/6 +f 113/99/6 111/161/6 110/100/6 +f 116/103/6 120/162/6 118/101/6 +f 118/101/6 121/163/6 119/102/6 +f 119/102/6 117/164/6 116/103/6 +l 27 29 +o Piston +v -0.062500 1.000000 0.062500 +v -0.125000 1.062500 0.125000 +v -0.062500 1.000000 -0.062500 +v -0.125000 1.062500 -0.125000 +v 0.062500 1.000000 0.062500 +v 0.125000 1.062500 0.125000 +v 0.062500 1.000000 -0.062500 +v 0.125000 1.062500 -0.125000 +v -0.125000 1.000000 -0.125000 +v -0.125000 1.000000 0.125000 +v 0.125000 1.000000 -0.125000 +v 0.125000 1.000000 0.125000 +v -0.062500 0.062500 -0.062500 +v -0.062500 0.062500 0.062500 +v 0.062500 0.062500 -0.062500 +v 0.062500 0.062500 0.062500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.857143 0.708333 +vt 0.714286 0.687500 +vt 0.857143 0.687500 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.857143 0.791667 +vt 0.714286 0.875000 +vt 0.714286 0.791667 +vt 0.821429 0.770833 +vt 0.714286 0.791667 +vt 0.750000 0.770833 +vt 0.714286 0.708333 +vt 0.750000 0.729167 +vt 0.857143 0.708333 +vt 0.821429 0.729167 +vt 0.857143 0.791667 +vt 0.821429 0.333333 +vt 0.750000 0.375000 +vt 0.750000 0.333333 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.821429 0.375000 +vt 0.750000 0.687500 +vt 0.750000 0.375000 +vt 0.714286 0.708333 +vt 0.714286 0.708333 +vt 0.714286 0.708333 +vt 0.714286 0.708333 +vt 0.821429 0.687500 +vt 0.857143 0.875000 +vt 0.821429 0.375000 +vt 0.821429 0.687500 +vt 0.821429 0.687500 +vt 0.821429 0.687500 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +usemtl None +s off +f 123/165/7 130/166/7 131/167/7 +f 125/168/8 132/169/8 130/170/8 +f 129/171/9 133/172/9 132/173/9 +f 127/174/10 131/175/10 133/176/10 +f 126/177/9 136/178/9 128/179/9 +f 125/180/11 127/181/11 129/182/11 +f 122/183/12 130/184/12 124/185/12 +f 124/185/12 132/186/12 128/187/12 +f 128/187/12 133/188/12 126/189/12 +f 126/189/12 131/190/12 122/183/12 +f 136/191/12 135/192/12 134/193/12 +f 124/194/7 135/195/7 122/196/7 +f 122/197/10 137/198/10 126/199/10 +f 128/200/8 134/201/8 124/202/8 +f 123/165/7 125/203/7 130/166/7 +f 125/168/8 129/204/8 132/169/8 +f 129/171/9 127/205/9 133/172/9 +f 127/174/10 123/206/10 131/175/10 +f 126/177/9 137/207/9 136/178/9 +f 125/180/11 123/208/11 127/181/11 +f 122/183/12 131/190/12 130/184/12 +f 124/185/12 130/184/12 132/186/12 +f 128/187/12 132/186/12 133/188/12 +f 126/189/12 133/188/12 131/190/12 +f 136/191/12 137/209/12 135/192/12 +f 124/194/7 134/210/7 135/195/7 +f 122/197/10 135/211/10 137/198/10 +f 128/200/8 136/212/8 134/201/8 diff --git a/src/main/resources/assets/hbm/models/machines/steamhammer.obj b/src/main/resources/assets/hbm/models/machines/steamhammer.obj new file mode 100644 index 000000000..5960e6fea --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/steamhammer.obj @@ -0,0 +1,2331 @@ +# Blender v2.79 (sub 0) OBJ File: 'steamhammer.blend' +# www.blender.org +o Piston2 +v -0.562750 2.000000 -0.687500 +v -0.187750 2.000000 -0.687500 +v -0.562750 2.000000 -1.062500 +v -0.187750 2.000000 -1.062500 +v -0.562750 2.250000 -1.062500 +v -0.562750 2.250000 -0.687500 +v -0.187750 2.250000 -0.687500 +v -0.187750 2.250000 -1.062500 +vt 0.771739 0.206349 +vt 0.804348 0.158730 +vt 0.804348 0.206349 +vt 0.771739 0.126984 +vt 0.739130 0.158730 +vt 0.739130 0.126984 +vt 0.836957 0.126984 +vt 0.804348 0.126984 +vt 0.771739 0.158730 +vt 0.869565 0.126984 +vt 0.836957 0.158730 +vt 0.869565 0.158730 +vn 0.0000 1.0000 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.0000 0.0000 1.0000 +s off +f 7/1/1 5/2/1 6/3/1 +f 4/4/2 7/5/2 2/6/2 +f 1/7/3 5/2/3 3/8/3 +f 3/8/4 8/9/4 4/4/4 +f 2/10/5 6/11/5 1/7/5 +f 7/1/1 8/9/1 5/2/1 +f 4/4/2 8/9/2 7/5/2 +f 1/7/3 6/11/3 5/2/3 +f 3/8/4 5/2/4 8/9/4 +f 2/10/5 7/12/5 6/11/5 +o Piston1 +v 0.187250 2.000000 -0.687500 +v 0.562250 2.000000 -0.687500 +v 0.187250 2.000000 -1.062500 +v 0.562250 2.000000 -1.062500 +v 0.187250 2.250000 -1.062500 +v 0.187250 2.250000 -0.687500 +v 0.562250 2.250000 -0.687500 +v 0.562250 2.250000 -1.062500 +vt 0.771739 0.206349 +vt 0.804348 0.158730 +vt 0.804348 0.206349 +vt 0.869565 0.126984 +vt 0.836957 0.158730 +vt 0.836957 0.126984 +vt 0.771739 0.126984 +vt 0.739130 0.158730 +vt 0.739130 0.126984 +vt 0.804348 0.126984 +vt 0.771739 0.158730 +vt 0.869565 0.158730 +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 +s off +f 15/13/6 13/14/6 14/15/6 +f 10/16/7 14/17/7 9/18/7 +f 12/19/8 15/20/8 10/21/8 +f 9/18/9 13/14/9 11/22/9 +f 11/22/10 16/23/10 12/19/10 +f 15/13/6 16/23/6 13/14/6 +f 10/16/7 15/24/7 14/17/7 +f 12/19/8 16/23/8 15/20/8 +f 9/18/9 14/17/9 13/14/9 +f 11/22/10 13/14/10 16/23/10 +o HammerRight_HammerRicht +v 1.875000 0.687500 -0.125000 +v 2.125000 0.687500 -0.125000 +v 1.875000 0.687500 -0.375000 +v 2.125000 0.687500 -0.375000 +v 1.875000 0.812500 -0.375000 +v 1.875000 0.812500 -0.125000 +v 2.125000 0.812500 -0.125000 +v 2.125000 0.812500 -0.375000 +v 1.906250 0.812500 -0.156250 +v 2.093750 0.812500 -0.156250 +v 1.906250 0.812500 -0.343750 +v 2.093750 0.812500 -0.343750 +v 1.906250 1.812500 -0.343750 +v 1.906250 1.812500 -0.156250 +v 2.093750 1.812500 -0.156250 +v 2.093750 1.812500 -0.343750 +vt 0.695652 0.507937 +vt 0.673913 0.539683 +vt 0.673913 0.507937 +vt 0.690217 0.563492 +vt 0.673913 0.555556 +vt 0.695652 0.555556 +vt 0.717391 0.539683 +vt 0.695652 0.539683 +vt 0.652174 0.555556 +vt 0.652174 0.539683 +vt 0.739130 0.539683 +vt 0.717391 0.555556 +vt 0.684783 0.587302 +vt 0.668478 0.714286 +vt 0.668478 0.587302 +vt 0.690217 0.579365 +vt 0.695652 0.587302 +vt 0.679348 0.579365 +vt 0.673913 0.587302 +vt 0.679348 0.563492 +vt 0.717391 0.587302 +vt 0.701087 0.714286 +vt 0.701087 0.587302 +vt 0.684783 0.714286 +vt 0.652174 0.714286 +vt 0.652174 0.587302 +vt 0.739130 0.555556 +vt 0.717391 0.714286 +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 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 19/25/11 18/26/11 17/27/11 +f 28/28/12 23/29/12 24/30/12 +f 19/31/13 24/30/13 20/32/13 +f 18/26/14 22/33/14 17/34/14 +f 20/32/15 23/29/15 18/26/15 +f 17/35/16 21/36/16 19/31/16 +f 28/37/15 31/38/15 26/39/15 +f 27/40/12 24/30/12 21/41/12 +f 25/42/12 21/41/12 22/43/12 +f 26/44/12 22/43/12 23/29/12 +f 25/45/16 29/46/16 27/47/16 +f 27/47/13 32/48/13 28/37/13 +f 26/39/14 30/49/14 25/50/14 +f 19/25/11 20/32/11 18/26/11 +f 28/28/12 26/44/12 23/29/12 +f 19/31/13 21/36/13 24/30/13 +f 18/26/14 23/29/14 22/33/14 +f 20/32/15 24/30/15 23/29/15 +f 17/35/16 22/51/16 21/36/16 +f 28/37/15 32/48/15 31/38/15 +f 27/40/12 28/28/12 24/30/12 +f 25/42/12 27/40/12 21/41/12 +f 26/44/12 25/42/12 22/43/12 +f 25/45/16 30/52/16 29/46/16 +f 27/47/13 29/46/13 32/48/13 +f 26/39/14 31/38/14 30/49/14 +o HammerLeft +v 1.875000 0.687500 0.375000 +v 2.125000 0.687500 0.375000 +v 1.875000 0.687500 0.125000 +v 2.125000 0.687500 0.125000 +v 1.875000 0.812500 0.125000 +v 1.875000 0.812500 0.375000 +v 2.125000 0.812500 0.375000 +v 2.125000 0.812500 0.125000 +v 1.906250 0.812500 0.343750 +v 2.093750 0.812500 0.343750 +v 1.906250 0.812500 0.156250 +v 2.093750 0.812500 0.156250 +v 1.906250 1.812500 0.156250 +v 1.906250 1.812500 0.343750 +v 2.093750 1.812500 0.343750 +v 2.093750 1.812500 0.156250 +vt 0.695652 0.507937 +vt 0.673913 0.539683 +vt 0.673913 0.507937 +vt 0.690217 0.563492 +vt 0.673913 0.555556 +vt 0.695652 0.555556 +vt 0.717391 0.539683 +vt 0.695652 0.539683 +vt 0.652174 0.555556 +vt 0.652174 0.539683 +vt 0.739130 0.539683 +vt 0.717391 0.555556 +vt 0.684783 0.587302 +vt 0.668478 0.714286 +vt 0.668478 0.587302 +vt 0.690217 0.579365 +vt 0.695652 0.587302 +vt 0.679348 0.579365 +vt 0.673913 0.587302 +vt 0.679348 0.563492 +vt 0.717391 0.587302 +vt 0.701087 0.714286 +vt 0.701087 0.587302 +vt 0.684783 0.714286 +vt 0.652174 0.714286 +vt 0.652174 0.587302 +vt 0.739130 0.555556 +vt 0.717391 0.714286 +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 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 35/53/17 34/54/17 33/55/17 +f 44/56/18 39/57/18 40/58/18 +f 35/59/19 40/58/19 36/60/19 +f 34/54/20 38/61/20 33/62/20 +f 36/60/21 39/57/21 34/54/21 +f 33/63/22 37/64/22 35/59/22 +f 44/65/21 47/66/21 42/67/21 +f 43/68/18 40/58/18 37/69/18 +f 41/70/18 37/69/18 38/71/18 +f 42/72/18 38/71/18 39/57/18 +f 41/73/22 45/74/22 43/75/22 +f 43/75/19 48/76/19 44/65/19 +f 42/67/20 46/77/20 41/78/20 +f 35/53/17 36/60/17 34/54/17 +f 44/56/18 42/72/18 39/57/18 +f 35/59/19 37/64/19 40/58/19 +f 34/54/20 39/57/20 38/61/20 +f 36/60/21 40/58/21 39/57/21 +f 33/63/22 38/79/22 37/64/22 +f 44/65/21 48/76/21 47/66/21 +f 43/68/18 44/56/18 40/58/18 +f 41/70/18 43/68/18 37/69/18 +f 42/72/18 41/70/18 38/71/18 +f 41/73/22 46/80/22 45/74/22 +f 43/75/19 45/74/19 48/76/19 +f 42/67/20 47/66/20 46/77/20 +o Main +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 0.500000 1.500000 +v 0.500000 0.500000 1.500000 +v -0.500000 1.000000 1.500000 +v 0.500000 1.000000 1.500000 +v -0.500000 0.500000 -1.500000 +v 0.500000 0.500000 -1.500000 +v -0.500000 1.000000 -1.500000 +v 0.500000 1.000000 -1.500000 +v -1.187500 0.500000 -1.500000 +v -0.812500 0.500000 -1.500000 +v -1.187500 0.687500 -1.500000 +v -0.812500 0.687500 -1.500000 +v -1.187500 0.500000 1.500000 +v -0.812500 0.500000 1.500000 +v -1.187500 0.687500 1.500000 +v -0.812500 0.687500 1.500000 +v -0.500000 0.500000 -1.250000 +v 0.500000 0.500000 -1.250000 +v -0.500000 1.000000 -1.250000 +v 0.500000 1.000000 -1.250000 +v -1.187500 0.500000 -1.250000 +v -0.812500 0.500000 -1.250000 +v -1.187500 0.687500 -1.250000 +v -0.812500 0.687500 -1.250000 +v -0.500000 0.500000 1.250000 +v 0.500000 0.500000 1.250000 +v -0.500000 1.000000 1.250000 +v 0.500000 1.000000 1.250000 +v -1.187500 0.500000 1.250000 +v -0.812500 0.500000 1.250000 +v -1.187500 0.687500 1.250000 +v -0.812500 0.687500 1.250000 +v -1.500000 0.500000 1.500000 +v 1.500000 0.500000 1.500000 +v -1.500000 0.500000 -1.500000 +v 1.500000 0.500000 -1.500000 +v 1.249500 0.500000 -1.250000 +v 1.249500 0.500000 1.250000 +v -1.250000 0.500000 -1.250000 +v -1.250000 0.500000 1.250000 +v 1.249500 1.500000 -1.250000 +v 1.249500 1.500000 1.250000 +v -1.250000 1.500000 -1.250000 +v -1.250000 1.500000 1.250000 +v 1.249500 2.000000 -0.500000 +v 1.249500 2.000000 0.500000 +v -1.250000 2.000000 -0.500000 +v -1.250000 2.000000 0.500000 +v 1.750000 1.875000 0.500000 +v 2.250000 1.875000 0.500000 +v 1.750000 1.875000 -0.500000 +v 2.250000 1.875000 -0.500000 +v 1.750000 3.375000 -0.500000 +v 1.750000 3.375000 0.500000 +v 2.250000 3.375000 0.500000 +v 2.250000 3.375000 -0.500000 +v 0.250000 2.000000 0.375000 +v 0.250000 2.000000 -0.375000 +v 1.000000 2.000000 -0.375000 +v 1.000000 2.000000 0.375000 +v 1.250000 2.250000 0.375000 +v 1.000000 2.750000 0.375000 +v 1.250000 2.250000 -0.375000 +v 1.000000 2.750000 -0.375000 +v 1.750000 2.750000 -0.375000 +v 1.750000 2.250000 -0.375000 +v 1.750000 2.750000 0.375000 +v 1.750000 2.250000 0.375000 +v 1.812500 1.875000 -0.437500 +v 1.812500 1.875000 0.437500 +v 2.187500 1.875000 0.437500 +v 2.187500 1.875000 -0.437500 +v 1.812500 1.812500 -0.437500 +v 1.812500 1.812500 0.437500 +v 2.187500 1.812500 0.437500 +v 2.187500 1.812500 -0.437500 +v 1.875000 3.500000 -0.375000 +v 1.875000 3.500000 0.375000 +v 2.125000 3.500000 0.375000 +v 2.125000 3.500000 -0.375000 +v 1.875000 3.250000 -0.500000 +v 1.786612 3.213388 -0.500000 +v 1.750000 3.125000 -0.500000 +v 1.786612 3.036612 -0.500000 +v 1.875000 3.000000 -0.500000 +v 1.963388 3.036612 -0.500000 +v 2.000000 3.125000 -0.500000 +v 1.963388 3.213388 -0.500000 +v 1.875000 3.176777 -0.676777 +v 1.786612 3.150888 -0.650888 +v 1.750000 3.088388 -0.588388 +v 1.786612 3.025888 -0.525888 +v 1.963388 3.025888 -0.525888 +v 2.000000 3.088388 -0.588388 +v 1.963388 3.150888 -0.650888 +v 1.875000 3.000000 -0.750000 +v 1.786612 3.000000 -0.713388 +v 1.750000 3.000000 -0.625000 +v 1.786612 3.000000 -0.536612 +v 1.963388 3.000000 -0.536612 +v 2.000000 3.000000 -0.625000 +v 1.963388 3.000000 -0.713388 +v 1.875000 1.875000 -0.500000 +v 1.875000 1.875000 -0.750000 +v 1.786612 1.875000 -0.713388 +v 1.750000 1.875000 -0.625000 +v 1.786612 1.875000 -0.536612 +v 1.963388 1.875000 -0.536612 +v 2.000000 1.875000 -0.625000 +v 1.963388 1.875000 -0.713388 +v 1.838388 1.786612 -0.500000 +v 1.838388 1.786612 -0.750000 +v 1.775888 1.849112 -0.713388 +v 1.775888 1.849112 -0.536612 +v 1.900888 1.724112 -0.536612 +v 1.926777 1.698223 -0.625000 +v 1.900888 1.724112 -0.713388 +v 1.750000 1.750000 -0.500000 +v 1.750000 1.750000 -0.750000 +v 1.750000 1.838388 -0.713388 +v 1.750000 1.838388 -0.536612 +v 1.750000 1.661612 -0.536612 +v 1.750000 1.625000 -0.625000 +v 1.750000 1.661612 -0.713388 +v 1.250000 1.875000 -0.625000 +v 1.250000 1.750000 -0.500000 +v 1.250000 1.750000 -0.750000 +v 1.250000 1.838388 -0.713388 +v 1.250000 1.838388 -0.536612 +v 1.250000 1.661612 -0.536612 +v 1.250000 1.625000 -0.625000 +v 1.250000 1.661612 -0.713388 +v 2.000000 3.500000 0.125000 +v 1.911612 3.500000 0.161612 +v 1.875000 3.500000 0.250000 +v 1.911612 3.500000 0.338388 +v 2.000000 3.500000 0.375000 +v 2.088388 3.500000 0.338388 +v 2.125000 3.500000 0.250000 +v 2.088388 3.500000 0.161612 +v 1.963388 3.588388 0.125000 +v 1.900888 3.525888 0.161612 +v 1.900888 3.525888 0.338388 +v 1.963388 3.588388 0.375000 +v 2.025888 3.650888 0.338388 +v 2.051777 3.676777 0.250000 +v 2.025888 3.650888 0.161612 +v 1.875000 3.625000 0.125000 +v 1.875000 3.536612 0.161612 +v 1.875000 3.536612 0.338388 +v 1.875000 3.625000 0.375000 +v 1.875000 3.713388 0.338388 +v 1.875000 3.750000 0.250000 +v 1.875000 3.713388 0.161612 +v 1.625000 3.500000 0.250000 +v 1.625000 3.625000 0.125000 +v 1.625000 3.536612 0.161612 +v 1.625000 3.536612 0.338388 +v 1.625000 3.625000 0.375000 +v 1.625000 3.713388 0.338388 +v 1.625000 3.750000 0.250000 +v 1.625000 3.713388 0.161612 +v 1.536612 3.588388 0.125000 +v 1.599111 3.525888 0.161612 +v 1.599111 3.525888 0.338388 +v 1.536612 3.588388 0.375000 +v 1.474112 3.650888 0.338388 +v 1.448223 3.676777 0.250000 +v 1.474112 3.650888 0.161612 +v 1.500000 3.500000 0.125000 +v 1.588388 3.500000 0.161612 +v 1.588388 3.500000 0.338388 +v 1.500000 3.500000 0.375000 +v 1.411612 3.500000 0.338388 +v 1.375000 3.500000 0.250000 +v 1.411612 3.500000 0.161612 +v 1.625000 3.000000 0.250000 +v 1.500000 3.000000 0.125000 +v 1.588388 3.000000 0.161612 +v 1.588388 3.000000 0.338388 +v 1.500000 3.000000 0.375000 +v 1.411612 3.000000 0.338388 +v 1.375000 3.000000 0.250000 +v 1.411612 3.000000 0.161612 +v 1.551777 2.823223 0.250000 +v 1.463388 2.911612 0.125000 +v 1.525888 2.849112 0.161612 +v 1.525888 2.849112 0.338388 +v 1.463388 2.911612 0.375000 +v 1.400888 2.974112 0.338388 +v 1.400888 2.974112 0.161612 +v 1.375000 2.750000 0.250000 +v 1.375000 2.875000 0.125000 +v 1.375000 2.786612 0.161612 +v 1.375000 2.786612 0.338388 +v 1.375000 2.875000 0.375000 +v 1.375000 2.963388 0.338388 +v 1.375000 2.963388 0.161612 +v 0.250000 3.000000 0.250000 +v 0.250000 2.750000 0.250000 +v 0.250000 2.875000 0.125000 +v 0.250000 2.786612 0.161612 +v 0.250000 2.786612 0.338388 +v 0.250000 2.875000 0.375000 +v 0.250000 2.963388 0.338388 +v 0.250000 2.963388 0.161612 +v 0.073223 2.926777 0.250000 +v 0.161612 2.838388 0.125000 +v 0.224112 2.775889 0.161612 +v 0.224112 2.775889 0.338388 +v 0.161612 2.838388 0.375000 +v 0.099112 2.900888 0.338388 +v 0.099112 2.900888 0.161612 +v 0.000000 2.750000 0.250000 +v 0.125000 2.750000 0.125000 +v 0.213388 2.750000 0.161612 +v 0.213388 2.750000 0.338388 +v 0.125000 2.750000 0.375000 +v 0.036612 2.750000 0.338388 +v 0.036612 2.750000 0.161612 +v 0.250000 2.000000 0.250000 +v 0.000000 2.000000 0.250000 +v 0.125000 2.000000 0.125000 +v 0.213388 2.000000 0.161612 +v 0.213388 2.000000 0.338388 +v 0.125000 2.000000 0.375000 +v 0.036612 2.000000 0.338388 +v 0.036612 2.000000 0.161612 +v 1.812500 1.812500 0.062500 +v 2.187500 1.812500 0.062500 +v 1.812500 1.812500 -0.062500 +v 2.187500 1.812500 -0.062500 +v 2.187500 1.875000 -0.062500 +v 1.812500 1.875000 -0.062500 +v 1.812500 1.875000 0.062500 +v 2.187500 1.875000 0.062500 +v 0.124750 2.000000 -0.625000 +v 0.624750 2.000000 -0.625000 +v 0.124750 2.000000 -1.125000 +v 0.624750 2.000000 -1.125000 +v 0.124750 1.500000 -1.125000 +v 0.124750 1.500000 -0.625000 +v 0.624750 1.500000 -0.625000 +v 0.624750 1.500000 -1.125000 +v -0.625250 2.000000 -0.625000 +v -0.125250 2.000000 -0.625000 +v -0.625250 2.000000 -1.125000 +v -0.125250 2.000000 -1.125000 +v -0.625250 1.500000 -1.125000 +v -0.625250 1.500000 -0.625000 +v -0.125250 1.500000 -0.625000 +v -0.125250 1.500000 -1.125000 +v 2.125000 3.250000 -0.500000 +v 2.036612 3.213388 -0.500000 +v 2.000000 3.125000 -0.500000 +v 2.036612 3.036612 -0.500000 +v 2.125000 3.000000 -0.500000 +v 2.213388 3.036612 -0.500000 +v 2.250000 3.125000 -0.500000 +v 2.213388 3.213388 -0.500000 +v 2.125000 3.176777 -0.676777 +v 2.036612 3.150888 -0.650888 +v 2.000000 3.088388 -0.588388 +v 2.036612 3.025888 -0.525888 +v 2.213388 3.025888 -0.525888 +v 2.250000 3.088388 -0.588388 +v 2.213388 3.150888 -0.650888 +v 2.125000 3.000000 -0.750000 +v 2.036612 3.000000 -0.713388 +v 2.000000 3.000000 -0.625000 +v 2.036612 3.000000 -0.536612 +v 2.213388 3.000000 -0.536612 +v 2.250000 3.000000 -0.625000 +v 2.213388 3.000000 -0.713388 +v 2.125000 1.625000 -0.500000 +v 2.125000 1.625000 -0.750000 +v 2.036612 1.625000 -0.713388 +v 2.000000 1.625000 -0.625000 +v 2.036612 1.625000 -0.536612 +v 2.213388 1.625000 -0.536612 +v 2.250000 1.625000 -0.625000 +v 2.213388 1.625000 -0.713388 +v 2.088388 1.536612 -0.500000 +v 2.088388 1.536612 -0.750000 +v 2.025888 1.599112 -0.713388 +v 2.025888 1.599112 -0.536612 +v 2.150888 1.474112 -0.536612 +v 2.176777 1.448223 -0.625000 +v 2.150888 1.474112 -0.713388 +v 2.000000 1.500000 -0.500000 +v 2.000000 1.500000 -0.750000 +v 2.000000 1.588388 -0.713388 +v 2.000000 1.588388 -0.536612 +v 2.000000 1.411612 -0.536612 +v 2.000000 1.375000 -0.625000 +v 2.000000 1.411612 -0.713388 +v 1.250000 1.625000 -0.625000 +v 1.250000 1.500000 -0.500000 +v 1.250000 1.500000 -0.750000 +v 1.250000 1.588388 -0.713388 +v 1.250000 1.588388 -0.536612 +v 1.250000 1.411612 -0.536612 +v 1.250000 1.375000 -0.625000 +v 1.250000 1.411612 -0.713388 +v 0.124750 2.000000 1.125000 +v 0.624750 2.000000 1.125000 +v 0.124750 2.000000 0.625000 +v 0.624750 2.000000 0.625000 +v 0.124750 1.500000 0.625000 +v 0.124750 1.500000 1.125000 +v 0.624750 1.500000 1.125000 +v 0.624750 1.500000 0.625000 +v -0.625250 2.000000 1.125000 +v -0.125250 2.000000 1.125000 +v -0.625250 2.000000 0.625000 +v -0.125250 2.000000 0.625000 +v -0.625250 1.500000 0.625000 +v -0.625250 1.500000 1.125000 +v -0.125250 1.500000 1.125000 +v -0.125250 1.500000 0.625000 +v -0.562750 2.000000 1.062500 +v -0.187750 2.000000 1.062500 +v -0.562750 2.000000 0.687500 +v -0.187750 2.000000 0.687500 +v -0.500250 2.000000 1.000000 +v -0.250250 2.000000 1.000000 +v -0.500250 2.000000 0.750000 +v -0.250250 2.000000 0.750000 +v -0.562750 2.125000 0.687500 +v -0.562750 2.125000 1.062500 +v -0.187750 2.125000 1.062500 +v -0.187750 2.125000 0.687500 +v -0.500250 2.125000 0.750000 +v -0.500250 2.125000 1.000000 +v -0.250250 2.125000 1.000000 +v -0.250250 2.125000 0.750000 +v -0.406500 2.062500 1.000000 +v -0.406500 2.062500 0.750000 +v -0.469000 2.062500 1.000000 +v -0.469000 2.062500 0.750000 +v -0.281500 2.062500 1.000000 +v -0.281500 2.062500 0.750000 +v -0.344000 2.062500 1.000000 +v -0.344000 2.062500 0.750000 +v 0.187250 2.000000 1.062500 +v 0.562250 2.000000 1.062500 +v 0.187250 2.000000 0.687500 +v 0.562250 2.000000 0.687500 +v 0.249750 2.000000 1.000000 +v 0.499750 2.000000 1.000000 +v 0.249750 2.000000 0.750000 +v 0.499750 2.000000 0.750000 +v 0.187250 2.125000 0.687500 +v 0.187250 2.125000 1.062500 +v 0.562250 2.125000 1.062500 +v 0.562250 2.125000 0.687500 +v 0.249750 2.125000 0.750000 +v 0.249750 2.125000 1.000000 +v 0.499750 2.125000 1.000000 +v 0.499750 2.125000 0.750000 +v 0.343500 2.062500 1.000000 +v 0.343500 2.062500 0.750000 +v 0.281000 2.062500 1.000000 +v 0.281000 2.062500 0.750000 +v 0.468500 2.062500 1.000000 +v 0.468500 2.062500 0.750000 +v 0.406000 2.062500 1.000000 +v 0.406000 2.062500 0.750000 +v 2.000000 3.500000 -0.375000 +v 1.911612 3.500000 -0.338388 +v 1.875000 3.500000 -0.250000 +v 1.911612 3.500000 -0.161612 +v 2.000000 3.500000 -0.125000 +v 2.088388 3.500000 -0.161612 +v 2.125000 3.500000 -0.250000 +v 2.088388 3.500000 -0.338388 +v 1.963388 3.588388 -0.375000 +v 1.900888 3.525888 -0.338388 +v 1.900888 3.525888 -0.161612 +v 1.963388 3.588388 -0.125000 +v 2.025888 3.650888 -0.161612 +v 2.051777 3.676777 -0.250000 +v 2.025888 3.650888 -0.338388 +v 1.875000 3.625000 -0.375000 +v 1.875000 3.536612 -0.338388 +v 1.875000 3.536612 -0.161612 +v 1.875000 3.625000 -0.125000 +v 1.875000 3.713388 -0.161612 +v 1.875000 3.750000 -0.250000 +v 1.875000 3.713388 -0.338388 +v 1.625000 3.500000 -0.250000 +v 1.625000 3.625000 -0.375000 +v 1.625000 3.536612 -0.338388 +v 1.625000 3.536612 -0.161612 +v 1.625000 3.625000 -0.125000 +v 1.625000 3.713388 -0.161612 +v 1.625000 3.750000 -0.250000 +v 1.625000 3.713388 -0.338388 +v 1.536612 3.588388 -0.375000 +v 1.599111 3.525888 -0.338388 +v 1.599111 3.525888 -0.161612 +v 1.536612 3.588388 -0.125000 +v 1.474112 3.650888 -0.161612 +v 1.448223 3.676777 -0.250000 +v 1.474112 3.650888 -0.338388 +v 1.500000 3.500000 -0.375000 +v 1.588388 3.500000 -0.338388 +v 1.588388 3.500000 -0.161612 +v 1.500000 3.500000 -0.125000 +v 1.411612 3.500000 -0.161612 +v 1.375000 3.500000 -0.250000 +v 1.411612 3.500000 -0.338388 +v 1.625000 3.000000 -0.250000 +v 1.500000 3.000000 -0.375000 +v 1.588388 3.000000 -0.338388 +v 1.588388 3.000000 -0.161612 +v 1.500000 3.000000 -0.125000 +v 1.411612 3.000000 -0.161612 +v 1.375000 3.000000 -0.250000 +v 1.411612 3.000000 -0.338388 +v 1.551777 2.823223 -0.250000 +v 1.463388 2.911612 -0.375000 +v 1.525888 2.849112 -0.338388 +v 1.525888 2.849112 -0.161612 +v 1.463388 2.911612 -0.125000 +v 1.400888 2.974112 -0.161612 +v 1.400888 2.974112 -0.338388 +v 1.375000 2.750000 -0.250000 +v 1.375000 2.875000 -0.375000 +v 1.375000 2.786612 -0.338388 +v 1.375000 2.786612 -0.161612 +v 1.375000 2.875000 -0.125000 +v 1.375000 2.963388 -0.161612 +v 1.375000 2.963388 -0.338388 +v 0.250000 3.000000 -0.250000 +v 0.250000 2.750000 -0.250000 +v 0.250000 2.875000 -0.375000 +v 0.250000 2.786612 -0.338388 +v 0.250000 2.786612 -0.161612 +v 0.250000 2.875000 -0.125000 +v 0.250000 2.963388 -0.161612 +v 0.250000 2.963388 -0.338388 +v 0.073223 2.926777 -0.250000 +v 0.161612 2.838388 -0.375000 +v 0.224112 2.775889 -0.338388 +v 0.224112 2.775889 -0.161612 +v 0.161612 2.838388 -0.125000 +v 0.099112 2.900888 -0.161612 +v 0.099112 2.900888 -0.338388 +v 0.000000 2.750000 -0.250000 +v 0.125000 2.750000 -0.375000 +v 0.213388 2.750000 -0.338388 +v 0.213388 2.750000 -0.161612 +v 0.125000 2.750000 -0.125000 +v 0.036612 2.750000 -0.161612 +v 0.036612 2.750000 -0.338388 +v 0.250000 2.000000 -0.250000 +v 0.000000 2.000000 -0.250000 +v 0.125000 2.000000 -0.375000 +v 0.213388 2.000000 -0.338388 +v 0.213388 2.000000 -0.161612 +v 0.125000 2.000000 -0.125000 +v 0.036612 2.000000 -0.161612 +v 0.036612 2.000000 -0.338388 +vt 0.304348 -0.000000 +vt 0.043478 0.380952 +vt 0.043478 -0.000000 +vt 0.282609 0.730159 +vt 0.239130 0.698413 +vt 0.282609 0.698413 +vt 0.239130 0.539683 +vt 0.282609 0.571429 +vt 0.239130 0.571429 +vt 0.217391 0.690476 +vt 0.201087 0.658730 +vt 0.217391 0.658730 +vt 0.201087 0.579365 +vt 0.217391 0.611111 +vt 0.201087 0.611111 +vt 0.179348 0.658730 +vt 0.217391 0.698413 +vt 0.146739 0.658730 +vt 0.130435 0.690476 +vt 0.130435 0.658730 +vt 0.146739 0.611111 +vt 0.168478 0.658730 +vt 0.065217 0.571429 +vt 0.108696 0.539683 +vt 0.108696 0.571429 +vt 0.108696 0.698413 +vt 0.065217 0.730159 +vt 0.065217 0.698413 +vt 0.130435 0.611111 +vt 0.146739 0.579365 +vt 0.130435 0.698413 +vt 0.304348 0.444444 +vt 0.304348 0.380952 +vt 0.043478 0.825397 +vt 0.304348 0.888889 +vt 0.043478 0.888889 +vt -0.000000 0.444444 +vt 0.043478 0.571429 +vt 0.043478 0.698413 +vt 0.304348 0.698413 +vt 0.304348 0.571429 +vt 0.347826 0.444444 +vt 0.065217 0.476190 +vt 0.043478 0.444444 +vt 0.065217 0.571429 +vt 0.282609 0.476190 +vt 0.282609 0.571429 +vt 0.282609 0.738095 +vt 0.304348 0.738095 +vt 0.065217 0.738095 +vt 0.065217 0.698413 +vt 0.065217 0.793651 +vt 0.304348 0.825397 +vt 0.304348 0.785714 +vt 0.282609 0.793651 +vt 0.282609 0.785714 +vt 0.043478 0.785714 +vt 0.065217 0.785714 +vt 0.652174 0.698413 +vt 0.434783 0.698413 +vt 0.500000 0.507937 +vt 0.652174 0.507937 +vt 0.695652 0.412698 +vt 0.722826 0.452381 +vt 0.391304 0.412698 +vt 0.434783 0.507937 +vt 0.364130 0.452381 +vt 0.586957 0.190476 +vt 0.652174 0.190476 +vt 0.434783 0.190476 +vt 0.500000 0.190476 +vt 0.586957 0.507937 +vt 0.434783 -0.000000 +vt 0.652174 0.000000 +vt 0.353261 0.753968 +vt 0.347826 0.706349 +vt 0.353261 0.706349 +vt 0.521739 0.952381 +vt 0.489130 0.968254 +vt 0.478261 0.952381 +vt 0.478261 0.761905 +vt 0.391304 0.952381 +vt 0.391304 0.761905 +vt 0.608696 0.761905 +vt 0.521739 0.761905 +vt 0.347826 0.952381 +vt 0.347826 0.761905 +vt 0.391304 0.753968 +vt 0.385870 0.706349 +vt 0.391304 0.706349 +vt 0.891304 0.206349 +vt 0.847826 0.301587 +vt 0.847826 0.206349 +vt 0.782609 0.206349 +vt 0.739130 0.269841 +vt 0.739130 0.206349 +vt 0.934783 0.269841 +vt 0.891304 0.301587 +vt 0.804348 0.269841 +vt 0.804348 0.206349 +vt 0.782609 0.269841 +vt 0.739130 0.301587 +vt 0.353261 0.706349 +vt 0.385870 0.753968 +vt 0.353261 0.753968 +vt 0.782609 0.301587 +vt 0.782609 0.396825 +vt 0.956522 0.301587 +vt 0.847826 0.396825 +vt 0.891304 0.396825 +vt 0.385870 0.761905 +vt 0.385870 0.753968 +vt 0.472826 0.706349 +vt 0.478261 0.698413 +vt 0.391304 0.698413 +vt 0.396739 0.753968 +vt 0.429348 0.753968 +vt 0.440217 0.706349 +vt 0.440217 0.753968 +vt 0.347826 0.706349 +vt 0.347826 0.753968 +vt 0.385870 0.706349 +vt 0.391304 0.753968 +vt 0.402174 0.968254 +vt 0.467391 1.000000 +vt 0.402174 1.000000 +vt 0.358696 0.968254 +vt 0.608696 0.952381 +vt 0.532609 0.968254 +vt 0.385870 0.761905 +vt 0.385870 0.698413 +vt 0.385870 0.698413 +vt 0.472826 0.753968 +vt 0.429348 0.706349 +vt 0.869565 0.126984 +vt 0.913043 0.063492 +vt 0.913043 0.126984 +vt 0.869565 0.126984 +vt 0.913043 0.063492 +vt 0.913043 0.126984 +vt 0.869565 0.063492 +vt 0.913043 -0.000000 +vt 0.956522 0.063492 +vt 1.000000 -0.000000 +vt 1.000000 0.063492 +vt 0.826087 0.063492 +vt 0.869565 -0.000000 +vt 0.956522 -0.000000 +vt 0.869565 0.063492 +vt 0.913043 -0.000000 +vt 0.956522 0.063492 +vt 1.000000 -0.000000 +vt 1.000000 0.063492 +vt 0.826087 0.063492 +vt 0.869565 -0.000000 +vt 0.956522 -0.000000 +vt 0.739130 0.063492 +vt 0.695652 0.126984 +vt 0.695652 0.063492 +vt 0.739130 0.063492 +vt 0.695652 0.126984 +vt 0.695652 0.063492 +vt 0.782609 0.063492 +vt 0.826087 0.000000 +vt 0.826087 0.063492 +vt 0.739130 0.000000 +vt 0.782609 0.000000 +vt 0.652174 0.063492 +vt 0.695652 0.000000 +vt 0.782609 0.063492 +vt 0.826087 0.000000 +vt 0.826087 0.063492 +vt 0.739130 0.000000 +vt 0.782609 0.000000 +vt 0.652174 0.063492 +vt 0.695652 0.000000 +vt 0.673913 0.071429 +vt 0.652174 0.079365 +vt 0.652174 0.071429 +vt 0.673913 0.063492 +vt 0.652174 0.071429 +vt 0.652174 0.063492 +vt 0.673913 0.063492 +vt 0.652174 0.071429 +vt 0.652174 0.063492 +vt 0.673913 0.071429 +vt 0.652174 0.079365 +vt 0.652174 0.071429 +vt 0.798913 0.095238 +vt 0.771739 0.079365 +vt 0.804348 0.079365 +vt 0.766304 0.095238 +vt 0.739130 0.079365 +vt 0.831522 0.095238 +vt 0.836957 0.079365 +vt 0.864130 0.095238 +vt 0.869565 0.079365 +vt 0.842391 0.111111 +vt 0.864130 0.111111 +vt 0.777174 0.111111 +vt 0.798913 0.111111 +vt 0.869565 0.063492 +vt 0.836957 0.063492 +vt 0.804348 0.063492 +vt 0.771739 0.063492 +vt 0.809783 0.111111 +vt 0.831522 0.111111 +vt 0.744565 0.111111 +vt 0.766304 0.111111 +vt 0.739130 0.063492 +vt 0.798913 0.095238 +vt 0.771739 0.079365 +vt 0.804348 0.079365 +vt 0.766304 0.095238 +vt 0.739130 0.079365 +vt 0.831522 0.095238 +vt 0.836957 0.079365 +vt 0.864130 0.095238 +vt 0.869565 0.079365 +vt 0.842391 0.111111 +vt 0.864130 0.111111 +vt 0.777174 0.111111 +vt 0.798913 0.111111 +vt 0.869565 0.063492 +vt 0.836957 0.063492 +vt 0.804348 0.063492 +vt 0.771739 0.063492 +vt 0.809783 0.111111 +vt 0.831522 0.111111 +vt 0.744565 0.111111 +vt 0.766304 0.111111 +vt 0.739130 0.063492 +vt 0.239130 0.730159 +vt 0.282609 0.539683 +vt 0.201087 0.690476 +vt 0.217391 0.579365 +vt 0.179348 0.611111 +vt 0.217391 0.571429 +vt 0.146739 0.690476 +vt 0.168478 0.611111 +vt 0.065217 0.539683 +vt 0.108696 0.730159 +vt 0.130435 0.579365 +vt 0.130435 0.571429 +vt -0.000000 0.825397 +vt 0.043478 0.738095 +vt 0.347826 0.825397 +vt 0.282609 0.698413 +vt 0.434783 0.571429 +vt 0.652174 0.571429 +vt 0.722826 0.500000 +vt 0.739130 0.500000 +vt 0.739130 0.507937 +vt 0.739130 0.190476 +vt 0.695652 0.285714 +vt 0.739130 0.285714 +vt 0.739130 0.412698 +vt 0.739130 0.452381 +vt 0.391304 0.285714 +vt 0.347826 0.285714 +vt 0.347826 0.190476 +vt 0.347826 0.507937 +vt 0.364130 0.500000 +vt 0.347826 0.500000 +vt 0.347826 0.452381 +vt 0.347826 0.412698 +vt 0.652174 0.126984 +vt 0.434783 0.126984 +vt 0.347826 0.753968 +vt 0.510870 0.968254 +vt 0.934783 0.206349 +vt 0.956522 0.396825 +vt 0.353261 0.761905 +vt 0.396739 0.706349 +vt 0.391304 0.706349 +vt 0.467391 0.968254 +vt 0.380435 0.968254 +vt 0.597826 0.968254 +vt 0.353261 0.761905 +vt 0.353261 0.698413 +vt 0.353261 0.698413 +vt 0.826087 -0.000000 +vt 0.826087 -0.000000 +vt 0.739130 0.126984 +vt 0.739130 0.126984 +vt 0.652174 0.000000 +vt 0.652174 0.000000 +vt 0.673913 0.079365 +vt 0.673913 0.071429 +vt 0.673913 0.071429 +vt 0.673913 0.079365 +vt 0.777174 0.095238 +vt 0.744565 0.095238 +vt 0.809783 0.095238 +vt 0.842391 0.095238 +vt 0.777174 0.095238 +vt 0.744565 0.095238 +vt 0.809783 0.095238 +vt 0.842391 0.095238 +vt 0.978261 0.698413 +vt 0.967391 0.674603 +vt 0.978261 0.674603 +vt 0.945652 0.682540 +vt 0.956522 0.674603 +vt 0.956522 0.690476 +vt 0.989130 0.698413 +vt 1.000000 0.674603 +vt 1.000000 0.690476 +vt 0.967391 0.698413 +vt 0.923913 0.682540 +vt 0.913043 0.674603 +vt 0.923913 0.674603 +vt 0.989130 0.674603 +vt 0.967391 0.650794 +vt 0.913043 0.658730 +vt 0.923913 0.666667 +vt 0.989130 0.650794 +vt 0.978261 0.650794 +vt 0.945652 0.674603 +vt 0.956522 0.658730 +vt 1.000000 0.658730 +vt 0.934783 0.674603 +vt 0.945652 0.666667 +vt 0.923913 0.650794 +vt 0.934783 0.507937 +vt 0.934783 0.650794 +vt 0.956522 0.650794 +vt 0.967391 0.507937 +vt 0.913043 0.650794 +vt 0.923913 0.507937 +vt 0.989130 0.507937 +vt 0.945652 0.507937 +vt 0.945652 0.650794 +vt 0.978261 0.507937 +vt 0.956522 0.507937 +vt 1.000000 0.507937 +vt 1.000000 0.650794 +vt 0.989130 0.492063 +vt 0.978261 0.484127 +vt 0.989130 0.484127 +vt 0.934783 0.500000 +vt 0.945652 0.484127 +vt 0.978261 0.500000 +vt 0.956522 0.484127 +vt 0.923913 0.484127 +vt 0.934783 0.484127 +vt 0.967391 0.484127 +vt 0.934783 0.468254 +vt 0.967391 0.460317 +vt 0.978261 0.468254 +vt 0.989130 0.476190 +vt 0.945652 0.460317 +vt 0.956522 0.460317 +vt 1.000000 0.484127 +vt 0.913043 0.484127 +vt 0.923913 0.492063 +vt 0.923913 0.476190 +vt 0.923913 0.460317 +vt 0.934783 0.396825 +vt 0.934783 0.460317 +vt 0.967391 0.396825 +vt 0.978261 0.460317 +vt 0.989130 0.396825 +vt 0.989130 0.460317 +vt 0.913043 0.460317 +vt 0.923913 0.396825 +vt 0.945652 0.396825 +vt 1.000000 0.396825 +vt 1.000000 0.460317 +vt 0.978261 0.396825 +vt 0.956522 0.396825 +vt 0.771739 0.920635 +vt 0.782609 0.896825 +vt 0.782609 0.920635 +vt 0.793478 0.920635 +vt 0.804348 0.896825 +vt 0.804348 0.912698 +vt 0.750000 0.896825 +vt 0.760870 0.912698 +vt 0.750000 0.904762 +vt 0.771739 0.896825 +vt 0.815217 0.904762 +vt 0.771739 0.873016 +vt 0.793478 0.873016 +vt 0.793478 0.896825 +vt 0.750000 0.888889 +vt 0.760870 0.896825 +vt 0.782609 0.873016 +vt 0.815217 0.888889 +vt 0.815217 0.896825 +vt 0.739130 0.896825 +vt 0.826087 0.896825 +vt 0.804348 0.873016 +vt 0.793478 0.841270 +vt 0.804348 0.841270 +vt 0.750000 0.873016 +vt 0.760870 0.841270 +vt 0.760870 0.873016 +vt 0.739130 0.841270 +vt 0.750000 0.841270 +vt 0.771739 0.841270 +vt 0.815217 0.841270 +vt 0.815217 0.873016 +vt 0.826087 0.841270 +vt 0.826087 0.873016 +vt 0.782609 0.841270 +vt 0.760870 0.833333 +vt 0.771739 0.817460 +vt 0.782609 0.817460 +vt 0.793478 0.817460 +vt 0.815217 0.825397 +vt 0.804348 0.817460 +vt 0.815217 0.817460 +vt 0.804348 0.833333 +vt 0.750000 0.825397 +vt 0.760870 0.817460 +vt 0.793478 0.793651 +vt 0.804348 0.801587 +vt 0.750000 0.809524 +vt 0.760870 0.801587 +vt 0.771739 0.793651 +vt 0.815217 0.809524 +vt 0.782609 0.793651 +vt 0.739130 0.817460 +vt 0.750000 0.817460 +vt 0.826087 0.817460 +vt 0.760870 0.793651 +vt 0.750000 0.730159 +vt 0.760870 0.730159 +vt 0.815217 0.793651 +vt 0.826087 0.730159 +vt 0.826087 0.793651 +vt 0.771739 0.730159 +vt 0.739130 0.793651 +vt 0.750000 0.793651 +vt 0.793478 0.730159 +vt 0.804348 0.793651 +vt 0.815217 0.730159 +vt 0.782609 0.730159 +vt 0.804348 0.730159 +vt 0.760870 0.722222 +vt 0.771739 0.706349 +vt 0.771739 0.714286 +vt 0.804348 0.722222 +vt 0.815217 0.706349 +vt 0.739130 0.706349 +vt 0.750000 0.706349 +vt 0.793478 0.706349 +vt 0.804348 0.706349 +vt 0.760870 0.706349 +vt 0.826087 0.706349 +vt 0.750000 0.682540 +vt 0.760870 0.690476 +vt 0.826087 0.682540 +vt 0.771739 0.698413 +vt 0.815217 0.682540 +vt 0.793478 0.698413 +vt 0.804348 0.690476 +vt 0.782609 0.706349 +vt 0.793478 0.714286 +vt 0.782609 0.682540 +vt 0.793478 0.539683 +vt 0.793478 0.682540 +vt 0.815217 0.539683 +vt 0.826087 0.539683 +vt 0.771739 0.682540 +vt 0.782609 0.539683 +vt 0.760870 0.682540 +vt 0.771739 0.539683 +vt 0.804348 0.682540 +vt 0.739130 0.682540 +vt 0.750000 0.539683 +vt 0.804348 0.539683 +vt 0.760870 0.539683 +vt 0.760870 0.531746 +vt 0.771739 0.515873 +vt 0.804348 0.531746 +vt 0.815217 0.515873 +vt 0.815217 0.523810 +vt 0.782609 0.515873 +vt 0.793478 0.515873 +vt 0.804348 0.515873 +vt 0.750000 0.523810 +vt 0.760870 0.515873 +vt 0.793478 0.492063 +vt 0.771739 0.492063 +vt 0.815217 0.507937 +vt 0.782609 0.492063 +vt 0.804348 0.500000 +vt 0.750000 0.507937 +vt 0.760870 0.500000 +vt 0.739130 0.515873 +vt 0.750000 0.515873 +vt 0.826087 0.515873 +vt 0.815217 0.492063 +vt 0.826087 0.396825 +vt 0.826087 0.492063 +vt 0.793478 0.396825 +vt 0.739130 0.492063 +vt 0.750000 0.396825 +vt 0.750000 0.492063 +vt 0.760870 0.492063 +vt 0.771739 0.396825 +vt 0.804348 0.492063 +vt 0.815217 0.396825 +vt 0.782609 0.396825 +vt 0.804348 0.396825 +vt 0.760870 0.396825 +vt 0.858696 0.746032 +vt 0.869565 0.738095 +vt 0.869565 0.753968 +vt 0.891304 0.761905 +vt 0.880435 0.738095 +vt 0.891304 0.738095 +vt 0.913043 0.753968 +vt 0.902174 0.738095 +vt 0.913043 0.738095 +vt 0.880435 0.761905 +vt 0.836957 0.746032 +vt 0.826087 0.738095 +vt 0.836957 0.738095 +vt 0.902174 0.761905 +vt 0.880435 0.714286 +vt 0.826087 0.722222 +vt 0.836957 0.730159 +vt 0.902174 0.714286 +vt 0.891304 0.714286 +vt 0.858696 0.738095 +vt 0.869565 0.722222 +vt 0.913043 0.722222 +vt 0.847826 0.738095 +vt 0.858696 0.730159 +vt 0.836957 0.714286 +vt 0.847826 0.539683 +vt 0.847826 0.714286 +vt 0.869565 0.714286 +vt 0.880435 0.539683 +vt 0.826087 0.714286 +vt 0.836957 0.539683 +vt 0.902174 0.539683 +vt 0.858696 0.539683 +vt 0.858696 0.714286 +vt 0.891304 0.539683 +vt 0.869565 0.539683 +vt 0.913043 0.539683 +vt 0.913043 0.714286 +vt 0.891304 0.531746 +vt 0.902174 0.515873 +vt 0.902174 0.523810 +vt 0.847826 0.515873 +vt 0.858696 0.515873 +vt 0.891304 0.515873 +vt 0.869565 0.515873 +vt 0.847826 0.531746 +vt 0.836957 0.515873 +vt 0.880435 0.515873 +vt 0.847826 0.500000 +vt 0.880435 0.492063 +vt 0.891304 0.500000 +vt 0.902174 0.507937 +vt 0.858696 0.492063 +vt 0.869565 0.492063 +vt 0.913043 0.515873 +vt 0.826087 0.515873 +vt 0.836957 0.523810 +vt 0.836957 0.507937 +vt 0.836957 0.492063 +vt 0.847826 0.396825 +vt 0.847826 0.492063 +vt 0.880435 0.396825 +vt 0.891304 0.492063 +vt 0.902174 0.396825 +vt 0.902174 0.492063 +vt 0.826087 0.492063 +vt 0.836957 0.396825 +vt 0.858696 0.396825 +vt 0.913043 0.396825 +vt 0.913043 0.492063 +vt 0.891304 0.396825 +vt 0.869565 0.396825 +vt 0.771739 0.920635 +vt 0.782609 0.896825 +vt 0.782609 0.920635 +vt 0.793478 0.896825 +vt 0.804348 0.912698 +vt 0.793478 0.920635 +vt 0.750000 0.896825 +vt 0.760870 0.912698 +vt 0.750000 0.904762 +vt 0.760870 0.896825 +vt 0.804348 0.896825 +vt 0.815217 0.904762 +vt 0.771739 0.896825 +vt 0.782609 0.873016 +vt 0.793478 0.873016 +vt 0.750000 0.888889 +vt 0.771739 0.873016 +vt 0.815217 0.888889 +vt 0.815217 0.896825 +vt 0.739130 0.896825 +vt 0.826087 0.896825 +vt 0.804348 0.873016 +vt 0.793478 0.841270 +vt 0.804348 0.841270 +vt 0.750000 0.873016 +vt 0.760870 0.841270 +vt 0.760870 0.873016 +vt 0.739130 0.841270 +vt 0.750000 0.841270 +vt 0.771739 0.841270 +vt 0.815217 0.841270 +vt 0.815217 0.873016 +vt 0.826087 0.841270 +vt 0.826087 0.873016 +vt 0.782609 0.841270 +vt 0.760870 0.833333 +vt 0.771739 0.817460 +vt 0.793478 0.817460 +vt 0.815217 0.825397 +vt 0.804348 0.817460 +vt 0.815217 0.817460 +vt 0.782609 0.817460 +vt 0.804348 0.833333 +vt 0.750000 0.825397 +vt 0.760870 0.817460 +vt 0.793478 0.793651 +vt 0.804348 0.801587 +vt 0.750000 0.809524 +vt 0.760870 0.801587 +vt 0.771739 0.793651 +vt 0.815217 0.809524 +vt 0.782609 0.793651 +vt 0.739130 0.817460 +vt 0.750000 0.817460 +vt 0.826087 0.817460 +vt 0.760870 0.793651 +vt 0.750000 0.730159 +vt 0.760870 0.730159 +vt 0.815217 0.793651 +vt 0.826087 0.730159 +vt 0.826087 0.793651 +vt 0.771739 0.730159 +vt 0.739130 0.793651 +vt 0.750000 0.793651 +vt 0.793478 0.730159 +vt 0.804348 0.793651 +vt 0.815217 0.730159 +vt 0.782609 0.730159 +vt 0.804348 0.730159 +vt 0.760870 0.722222 +vt 0.771739 0.706349 +vt 0.771739 0.714286 +vt 0.804348 0.722222 +vt 0.815217 0.706349 +vt 0.739130 0.730159 +vt 0.750000 0.706349 +vt 0.793478 0.706349 +vt 0.804348 0.706349 +vt 0.760870 0.706349 +vt 0.826087 0.706349 +vt 0.750000 0.682540 +vt 0.760870 0.690476 +vt 0.815217 0.682540 +vt 0.826087 0.682540 +vt 0.771739 0.698413 +vt 0.739130 0.706349 +vt 0.793478 0.698413 +vt 0.804348 0.690476 +vt 0.782609 0.706349 +vt 0.793478 0.714286 +vt 0.782609 0.682540 +vt 0.793478 0.539683 +vt 0.793478 0.682540 +vt 0.815217 0.539683 +vt 0.826087 0.539683 +vt 0.771739 0.682540 +vt 0.782609 0.539683 +vt 0.760870 0.682540 +vt 0.771739 0.539683 +vt 0.804348 0.682540 +vt 0.739130 0.682540 +vt 0.750000 0.539683 +vt 0.804348 0.539683 +vt 0.760870 0.539683 +vt 0.760870 0.531746 +vt 0.771739 0.515873 +vt 0.815217 0.523810 +vt 0.804348 0.515873 +vt 0.815217 0.515873 +vt 0.782609 0.515873 +vt 0.804348 0.531746 +vt 0.793478 0.515873 +vt 0.750000 0.515873 +vt 0.760870 0.515873 +vt 0.793478 0.492063 +vt 0.771739 0.492063 +vt 0.815217 0.507937 +vt 0.782609 0.492063 +vt 0.804348 0.500000 +vt 0.750000 0.507937 +vt 0.760870 0.500000 +vt 0.739130 0.515873 +vt 0.750000 0.523810 +vt 0.826087 0.515873 +vt 0.815217 0.492063 +vt 0.826087 0.396825 +vt 0.826087 0.492063 +vt 0.793478 0.396825 +vt 0.739130 0.492063 +vt 0.750000 0.396825 +vt 0.750000 0.492063 +vt 0.760870 0.492063 +vt 0.771739 0.396825 +vt 0.804348 0.492063 +vt 0.815217 0.396825 +vt 0.782609 0.396825 +vt 0.804348 0.396825 +vt 0.760870 0.396825 +vt 0.913043 0.690476 +vt 0.913043 0.507937 +vt 0.913043 0.396825 +vt 0.804348 0.880952 +vt 0.760870 0.880952 +vt 0.739130 0.873016 +vt 0.739130 0.730159 +vt 0.739130 0.539683 +vt 0.739130 0.396825 +vt 0.826087 0.753968 +vt 0.826087 0.539683 +vt 0.826087 0.396825 +vt 0.804348 0.880952 +vt 0.760870 0.880952 +vt 0.739130 0.873016 +vt 0.739130 0.539683 +vt 0.739130 0.396825 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.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.0000 0.8321 -0.5547 +vn 0.0000 0.8321 0.5547 +vn 0.0000 0.7071 -0.7071 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.6630 0.5293 -0.5293 +vn 0.7311 -0.6303 0.2611 +vn 0.9955 0.0670 -0.0670 +vn 0.9947 0.0948 -0.0392 +vn -0.6332 0.7150 -0.2962 +vn -0.9955 0.0670 -0.0670 +vn -0.9947 0.0948 -0.0392 +vn 0.6332 0.7150 -0.2962 +vn -0.7311 -0.6303 0.2611 +vn -0.7573 -0.4617 0.4617 +vn -0.6630 0.5293 -0.5293 +vn 0.6794 0.1447 -0.7194 +vn -0.9987 0.0196 -0.0473 +vn -0.7263 -0.1363 0.6737 +vn -0.6794 0.1447 -0.7194 +vn 0.0000 0.1866 -0.9824 +vn 0.7573 -0.4617 0.4617 +vn 0.9987 0.0196 -0.0473 +vn 0.0000 -0.1944 0.9809 +vn 0.7263 -0.1363 0.6737 +vn 0.0473 -0.0196 0.9987 +vn 0.7194 -0.1447 -0.6794 +vn -0.6737 0.1363 0.7263 +vn -0.6737 0.1363 -0.7263 +vn 0.7194 -0.1447 0.6794 +vn 0.0473 -0.0196 -0.9987 +vn 0.9824 -0.1866 0.0000 +vn 0.0670 -0.0670 -0.9955 +vn -0.4617 0.4617 -0.7573 +vn 0.5293 -0.5293 0.6630 +vn -0.4617 0.4617 0.7573 +vn 0.0670 -0.0670 0.9955 +vn 0.5293 -0.5293 -0.6630 +vn 0.0196 -0.0473 0.9987 +vn 0.1447 -0.7194 -0.6794 +vn 0.0196 -0.0473 -0.9987 +vn -0.1363 0.6737 -0.7263 +vn 0.1447 -0.7194 0.6794 +vn 0.1866 -0.9824 0.0000 +vn -0.1363 0.6737 0.7263 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.7150 0.2962 -0.6332 +vn 0.9239 0.3827 0.0000 +vn 0.7150 0.2962 0.6332 +vn 0.0670 0.0670 0.9955 +vn 0.0948 0.0392 0.9947 +vn -0.4617 -0.4617 -0.7573 +vn 0.0948 0.0392 -0.9947 +vn -0.6303 -0.2611 -0.7311 +vn 0.5293 0.5293 -0.6630 +vn -0.6303 -0.2611 0.7311 +vn 0.1447 0.7194 -0.6794 +vn 0.1447 0.7194 0.6794 +vn 0.5293 0.5293 0.6630 +vn -0.1363 -0.6737 -0.7263 +vn 0.0670 0.0670 -0.9955 +vn 0.1866 0.9824 0.0000 +vn -0.1363 -0.6737 0.7263 +vn -0.4617 -0.4617 0.7573 +vn -0.1944 -0.9809 0.0000 +vn 0.0196 0.0473 0.9987 +vn -0.1447 0.7194 0.6794 +vn -0.0196 0.0473 0.9987 +vn -0.0196 0.0473 -0.9987 +vn 0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.1447 0.7194 -0.6794 +vn 0.1363 -0.6737 0.7263 +vn -0.1866 0.9824 0.0000 +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.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.0473 0.0196 -0.9987 +vn -0.7194 0.1447 -0.6794 +vn 0.6737 -0.1363 0.7263 +vn -0.9824 0.1866 0.0000 +vn 0.4617 -0.4617 -0.7573 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +s off +f 51/81/23 50/82/23 49/83/23 +f 69/84/24 59/85/24 57/86/24 +f 72/87/25 58/88/25 60/89/25 +f 73/90/24 63/91/24 61/92/24 +f 76/93/25 62/94/25 64/95/25 +f 75/96/26 64/95/26 63/91/26 +f 71/97/26 60/89/26 59/85/26 +f 67/98/24 81/99/24 65/100/24 +f 68/101/26 83/102/26 67/98/26 +f 54/103/25 80/104/25 56/105/25 +f 55/106/24 77/107/24 53/108/24 +f 66/109/25 84/110/25 68/101/25 +f 56/105/26 79/111/26 55/106/26 +f 88/112/25 50/82/25 52/113/25 +f 85/114/24 51/115/24 49/116/24 +f 60/89/27 57/86/27 59/85/27 +f 64/95/27 61/92/27 63/91/27 +f 53/108/28 56/105/28 55/106/28 +f 65/100/28 68/101/28 67/98/28 +f 50/117/28 54/118/28 53/119/28 +f 57/120/27 58/121/27 52/122/27 +f 88/112/26 90/123/26 86/124/26 +f 54/118/26 90/123/26 78/125/26 +f 89/126/26 58/121/26 70/127/26 +f 74/128/26 57/120/26 62/129/26 +f 82/130/26 53/119/26 77/131/26 +f 92/132/26 87/133/26 85/114/26 +f 61/134/26 91/135/26 73/136/26 +f 92/132/26 65/137/26 81/138/26 +f 91/139/24 92/140/24 100/141/24 +f 95/142/27 71/143/27 76/144/27 +f 79/145/28 96/146/28 84/147/28 +f 95/142/29 97/148/29 93/149/29 +f 94/150/30 100/141/30 96/146/30 +f 98/151/26 99/152/26 100/141/26 +f 90/153/25 89/154/25 97/148/25 +f 284/155/28 286/156/28 283/157/28 +f 105/158/31 132/159/31 108/160/31 +f 104/161/25 107/162/25 102/163/25 +f 101/164/24 105/158/24 103/165/24 +f 103/165/27 108/160/27 104/161/27 +f 102/163/28 106/166/28 101/167/28 +f 124/168/27 125/169/27 121/170/27 +f 117/171/26 114/172/26 119/173/26 +f 120/174/23 115/175/23 118/176/23 +f 117/171/27 115/177/27 116/178/27 +f 119/173/28 113/179/28 120/180/28 +f 113/181/32 111/182/32 115/175/32 +f 126/183/23 282/184/23 127/185/23 +f 112/186/28 114/172/28 109/187/28 +f 111/188/27 116/178/27 115/177/27 +f 109/189/33 116/178/33 110/190/33 +f 124/191/25 284/155/25 128/192/25 +f 104/161/23 121/193/23 103/194/23 +f 101/195/23 123/196/23 102/163/23 +f 288/197/23 286/198/23 285/199/23 +f 122/200/28 127/185/28 123/201/28 +f 281/202/27 288/203/27 282/184/27 +f 128/192/23 283/157/23 125/169/23 +f 131/204/26 129/205/26 130/206/26 +f 107/162/34 130/207/34 106/166/34 +f 108/160/35 131/204/35 107/162/35 +f 106/208/33 129/209/33 105/158/33 +f 288/210/25 127/185/25 282/184/25 +f 126/183/24 287/211/24 281/202/24 +f 283/157/24 121/212/24 125/169/24 +f 285/199/23 124/213/23 104/161/23 +f 103/194/23 286/198/23 287/214/23 +f 290/215/26 291/216/26 289/217/26 +f 298/218/26 299/219/26 297/220/26 +f 292/221/27 293/222/27 291/216/27 +f 289/223/28 295/224/28 290/225/28 +f 290/226/25 296/227/25 292/221/25 +f 291/216/24 294/228/24 289/223/24 +f 300/229/27 301/230/27 299/219/27 +f 297/231/28 303/232/28 298/233/28 +f 298/234/25 304/235/25 300/229/25 +f 299/219/24 302/236/24 297/231/24 +f 358/237/26 359/238/26 357/239/26 +f 366/240/26 367/241/26 365/242/26 +f 360/243/27 361/244/27 359/245/27 +f 357/239/28 363/246/28 358/237/28 +f 358/237/25 364/247/25 360/243/25 +f 359/248/24 362/249/24 357/239/24 +f 368/250/27 369/251/27 367/252/27 +f 365/242/28 371/253/28 366/240/28 +f 366/240/25 372/254/25 368/250/25 +f 367/255/24 370/256/24 365/242/24 +f 414/257/26 415/258/26 413/259/26 +f 418/260/26 419/261/26 417/262/26 +f 394/263/26 395/264/26 393/265/26 +f 390/266/26 391/267/26 389/268/26 +f 387/269/26 382/270/26 383/271/26 +f 386/272/26 381/273/26 382/270/26 +f 388/274/26 383/271/26 384/275/26 +f 385/276/26 384/275/26 381/277/26 +f 380/278/28 385/276/28 379/279/28 +f 377/280/27 387/269/27 378/281/27 +f 375/282/27 384/275/27 376/283/27 +f 374/284/28 382/270/28 373/285/28 +f 378/286/24 388/274/24 380/287/24 +f 379/288/25 386/272/25 377/289/25 +f 376/283/25 383/271/25 374/284/25 +f 373/285/24 381/273/24 375/290/24 +f 411/291/26 406/292/26 407/293/26 +f 410/294/26 405/295/26 406/292/26 +f 412/296/26 407/293/26 408/297/26 +f 409/298/26 408/297/26 405/299/26 +f 404/300/28 409/298/28 403/301/28 +f 401/302/27 411/291/27 402/303/27 +f 399/304/27 408/297/27 400/305/27 +f 398/306/28 406/292/28 397/307/28 +f 402/308/24 412/296/24 404/309/24 +f 403/310/25 410/294/25 401/311/25 +f 400/305/25 407/293/25 398/306/25 +f 397/307/24 405/295/24 399/312/24 +f 51/81/23 52/113/23 50/82/23 +f 69/84/24 71/313/24 59/85/24 +f 72/87/25 70/314/25 58/88/25 +f 73/90/24 75/315/24 63/91/24 +f 76/93/25 74/316/25 62/94/25 +f 75/96/26 76/317/26 64/95/26 +f 71/97/26 72/318/26 60/89/26 +f 67/98/24 83/319/24 81/99/24 +f 68/101/26 84/320/26 83/102/26 +f 54/103/25 78/321/25 80/104/25 +f 55/106/24 79/322/24 77/107/24 +f 66/109/25 82/323/25 84/110/25 +f 56/105/26 80/324/26 79/111/26 +f 88/112/25 86/124/25 50/82/25 +f 85/114/24 87/133/24 51/115/24 +f 60/89/27 58/88/27 57/86/27 +f 64/95/27 62/94/27 61/92/27 +f 53/108/28 54/103/28 56/105/28 +f 65/100/28 66/109/28 68/101/28 +f 85/114/28 49/325/28 65/137/28 +f 49/325/28 50/117/28 53/119/28 +f 65/137/28 49/325/28 66/326/28 +f 50/117/28 86/124/28 54/118/28 +f 53/119/28 66/326/28 49/325/28 +f 52/122/27 51/327/27 57/120/27 +f 51/327/27 87/133/27 61/134/27 +f 61/134/27 62/129/27 51/327/27 +f 62/129/27 57/120/27 51/327/27 +f 58/121/27 88/112/27 52/122/27 +f 88/112/26 89/126/26 90/123/26 +f 54/118/26 86/124/26 90/123/26 +f 89/126/26 88/112/26 58/121/26 +f 74/128/26 69/328/26 57/120/26 +f 82/130/26 66/326/26 53/119/26 +f 92/132/26 91/135/26 87/133/26 +f 61/134/26 87/133/26 91/135/26 +f 92/132/26 85/114/26 65/137/26 +f 92/140/24 96/329/24 100/141/24 +f 100/141/24 99/152/24 91/139/24 +f 99/152/24 95/330/24 91/139/24 +f 75/331/27 73/332/27 91/333/27 +f 93/149/27 89/334/27 72/335/27 +f 89/334/27 70/336/27 72/335/27 +f 75/331/27 91/333/27 95/142/27 +f 69/337/27 74/338/27 76/144/27 +f 76/144/27 75/331/27 95/142/27 +f 95/142/27 93/149/27 71/143/27 +f 93/149/27 72/335/27 71/143/27 +f 71/143/27 69/337/27 76/144/27 +f 80/339/28 78/340/28 90/341/28 +f 96/146/28 92/342/28 83/343/28 +f 92/342/28 81/344/28 83/343/28 +f 80/339/28 90/341/28 94/150/28 +f 82/345/28 77/346/28 84/147/28 +f 77/346/28 79/145/28 84/147/28 +f 79/145/28 80/339/28 94/150/28 +f 96/146/28 83/343/28 84/147/28 +f 79/145/28 94/150/28 96/146/28 +f 95/142/29 99/152/29 97/148/29 +f 94/150/30 98/151/30 100/141/30 +f 98/151/26 97/148/26 99/152/26 +f 89/154/25 93/347/25 97/148/25 +f 97/148/25 98/151/25 90/153/25 +f 98/151/25 94/348/25 90/153/25 +f 284/155/28 285/349/28 286/156/28 +f 105/158/31 129/350/31 132/159/31 +f 104/161/25 108/160/25 107/162/25 +f 101/164/24 106/208/24 105/158/24 +f 103/165/27 105/158/27 108/160/27 +f 102/163/28 107/162/28 106/166/28 +f 124/168/27 128/192/27 125/169/27 +f 117/171/26 116/178/26 114/172/26 +f 120/174/23 113/181/23 115/175/23 +f 117/171/27 118/351/27 115/177/27 +f 119/173/28 114/172/28 113/179/28 +f 113/181/32 112/186/32 111/182/32 +f 126/183/23 281/202/23 282/184/23 +f 112/186/28 113/179/28 114/172/28 +f 111/188/27 110/352/27 116/178/27 +f 109/189/33 114/172/33 116/178/33 +f 124/191/25 285/353/25 284/155/25 +f 104/161/23 124/213/23 121/193/23 +f 101/195/23 122/354/23 123/196/23 +f 288/197/23 287/214/23 286/198/23 +f 122/200/28 126/183/28 127/185/28 +f 281/202/27 287/355/27 288/203/27 +f 128/192/23 284/155/23 283/157/23 +f 131/204/26 132/356/26 129/205/26 +f 107/162/34 131/357/34 130/207/34 +f 108/160/35 132/356/35 131/204/35 +f 106/208/33 130/358/33 129/209/33 +f 288/210/25 123/359/25 127/185/25 +f 126/183/24 122/360/24 287/211/24 +f 283/157/24 286/361/24 121/212/24 +f 104/161/23 102/163/23 288/197/23 +f 102/163/23 123/196/23 288/197/23 +f 288/197/23 285/199/23 104/161/23 +f 122/354/23 101/195/23 287/214/23 +f 101/195/23 103/194/23 287/214/23 +f 103/194/23 121/193/23 286/198/23 +f 290/215/26 292/221/26 291/216/26 +f 298/218/26 300/229/26 299/219/26 +f 292/221/27 296/227/27 293/222/27 +f 289/223/28 294/228/28 295/224/28 +f 290/226/25 295/362/25 296/227/25 +f 291/216/24 293/222/24 294/228/24 +f 300/229/27 304/235/27 301/230/27 +f 297/231/28 302/236/28 303/232/28 +f 298/234/25 303/363/25 304/235/25 +f 299/219/24 301/230/24 302/236/24 +f 358/237/26 360/364/26 359/238/26 +f 366/240/26 368/365/26 367/241/26 +f 360/243/27 364/247/27 361/244/27 +f 357/239/28 362/249/28 363/246/28 +f 358/237/25 363/246/25 364/247/25 +f 359/248/24 361/366/24 362/249/24 +f 368/250/27 372/254/27 369/251/27 +f 365/242/28 370/256/28 371/253/28 +f 366/240/25 371/253/25 372/254/25 +f 367/255/24 369/367/24 370/256/24 +f 414/257/26 416/368/26 415/258/26 +f 418/260/26 420/369/26 419/261/26 +f 394/263/26 396/370/26 395/264/26 +f 390/266/26 392/371/26 391/267/26 +f 387/269/26 386/372/26 382/270/26 +f 386/272/26 385/373/26 381/273/26 +f 388/274/26 387/374/26 383/271/26 +f 385/276/26 388/375/26 384/275/26 +f 380/278/28 388/375/28 385/276/28 +f 377/280/27 386/372/27 387/269/27 +f 375/282/27 381/277/27 384/275/27 +f 374/284/28 383/271/28 382/270/28 +f 378/286/24 387/374/24 388/274/24 +f 379/288/25 385/373/25 386/272/25 +f 376/283/25 384/275/25 383/271/25 +f 373/285/24 382/270/24 381/273/24 +f 411/291/26 410/376/26 406/292/26 +f 410/294/26 409/377/26 405/295/26 +f 412/296/26 411/378/26 407/293/26 +f 409/298/26 412/379/26 408/297/26 +f 404/300/28 412/379/28 409/298/28 +f 401/302/27 410/376/27 411/291/27 +f 399/304/27 405/299/27 408/297/27 +f 398/306/28 407/293/28 406/292/28 +f 402/308/24 411/378/24 412/296/24 +f 403/310/25 409/377/25 410/294/25 +f 400/305/25 408/297/25 407/293/25 +f 397/307/24 406/292/24 405/295/24 +s 1 +f 133/380/36 147/381/37 141/382/31 +f 138/383/38 146/384/39 139/385/40 +f 134/386/41 143/387/42 135/388/43 +f 139/385/40 147/381/37 140/389/44 +f 136/390/45 143/391/42 144/392/46 +f 133/380/36 142/393/47 134/386/41 +f 146/384/39 154/394/48 147/381/37 +f 144/392/46 150/395/49 151/396/50 +f 141/382/31 149/397/51 142/393/47 +f 147/381/37 148/398/52 141/382/31 +f 145/399/53 153/400/54 146/384/39 +f 143/387/42 149/397/51 150/401/49 +f 137/402/55 145/399/53 138/383/38 +f 136/390/45 144/392/46 137/402/55 +f 144/392/46 151/396/50 137/402/55 +f 145/399/53 137/402/55 152/403/56 +f 151/404/50 155/405/57 137/406/55 +f 153/407/54 162/408/58 154/394/48 +f 150/409/49 159/410/59 151/404/50 +f 148/398/52 157/411/60 149/397/51 +f 137/406/55 160/412/61 152/413/56 +f 154/394/48 156/414/62 148/398/52 +f 152/413/56 161/415/63 153/407/54 +f 149/397/51 158/416/33 150/417/49 +f 157/418/60 164/419/64 165/420/65 +f 155/421/57 167/422/66 160/412/61 +f 162/408/58 164/419/64 156/423/62 +f 160/412/61 168/424/32 161/415/63 +f 155/421/57 166/425/67 163/426/68 +f 162/408/58 168/424/32 169/427/69 +f 166/425/67 170/428/70 163/426/68 +f 168/424/32 176/429/71 169/427/69 +f 165/420/65 171/430/72 172/431/73 +f 163/426/68 174/432/74 167/422/66 +f 164/419/64 176/429/71 171/430/72 +f 167/422/66 175/433/75 168/424/32 +f 157/418/60 165/420/65 158/434/33 +f 165/420/65 172/431/73 158/434/33 +f 158/435/33 166/425/67 159/436/59 +f 166/425/67 158/435/33 173/437/76 +f 173/438/76 178/439/28 170/440/70 +f 175/433/75 184/441/77 176/429/71 +f 171/442/72 180/443/31 172/444/73 +f 158/445/33 181/446/34 173/438/76 +f 170/440/70 182/447/78 174/432/74 +f 172/444/73 177/448/26 158/449/33 +f 176/429/71 179/450/27 171/442/72 +f 174/432/74 183/451/23 175/433/75 +f 192/452/79 198/453/35 191/454/80 +f 190/455/81 196/456/82 189/457/83 +f 194/458/84 185/459/85 186/460/86 +f 185/459/85 199/461/87 192/452/79 +f 198/453/35 190/455/81 191/454/80 +f 196/456/82 188/462/88 189/457/83 +f 206/463/89 198/453/35 199/461/87 +f 204/464/90 196/456/82 197/465/91 +f 201/466/92 193/467/93 194/458/84 +f 193/467/93 206/463/89 199/461/87 +f 205/468/94 197/465/91 198/453/35 +f 196/456/82 202/469/95 195/470/96 +f 186/460/86 187/471/97 194/458/84 +f 187/472/97 188/462/88 195/470/96 +f 195/470/96 202/469/95 187/472/97 +f 194/458/84 187/471/97 201/466/92 +f 203/473/98 212/474/99 211/475/100 +f 201/476/92 208/477/101 200/478/102 +f 201/476/92 207/479/32 209/480/103 +f 200/478/102 214/481/104 206/463/89 +f 205/468/94 212/474/99 204/464/90 +f 203/473/98 210/482/105 202/483/95 +f 202/483/95 207/484/32 187/485/97 +f 206/463/89 213/486/106 205/468/94 +f 208/487/101 221/488/107 214/481/104 +f 212/474/99 220/489/33 219/490/108 +f 210/491/105 218/492/109 217/493/110 +f 213/486/106 221/488/107 220/489/33 +f 211/494/100 219/490/108 218/492/109 +f 209/495/103 215/496/111 208/487/101 +f 218/492/109 226/497/112 225/498/113 +f 215/496/111 223/499/114 222/500/115 +f 215/496/111 228/501/116 221/488/107 +f 220/489/33 226/497/112 219/490/108 +f 218/492/109 224/502/117 217/493/110 +f 220/489/33 228/501/116 227/503/118 +f 207/504/32 216/505/119 209/495/103 +f 216/505/119 207/504/32 223/499/114 +f 210/491/105 217/493/110 207/506/32 +f 217/493/110 224/502/117 207/506/32 +f 222/507/115 231/508/58 230/509/62 +f 224/510/117 229/511/63 207/512/32 +f 222/507/115 236/513/60 228/501/116 +f 207/514/32 231/508/58 223/515/114 +f 227/503/118 234/516/59 226/497/112 +f 225/517/113 232/518/61 224/510/117 +f 228/501/116 235/519/33 227/503/118 +f 225/517/113 234/516/59 233/520/57 +f 230/521/62 243/522/65 236/523/60 +f 233/524/57 240/525/66 232/518/61 +f 231/508/58 237/526/32 239/527/69 +f 233/524/57 242/528/67 241/529/68 +f 230/521/62 239/527/69 238/530/64 +f 232/518/61 237/531/32 229/511/63 +f 238/530/64 246/532/71 245/533/72 +f 240/525/66 244/534/75 237/531/32 +f 238/530/64 250/535/73 243/522/65 +f 241/529/68 247/536/74 240/525/66 +f 237/526/32 246/532/71 239/527/69 +f 241/529/68 249/537/76 248/538/70 +f 236/523/60 243/522/65 235/539/33 +f 243/522/65 250/535/73 235/539/33 +f 234/540/59 235/539/33 242/528/67 +f 242/528/67 235/539/33 249/537/76 +f 235/541/33 257/542/99 249/543/76 +f 244/534/75 255/544/105 252/545/32 +f 250/546/73 251/547/106 235/541/33 +f 245/548/72 258/549/104 250/546/73 +f 248/550/70 255/544/105 247/536/74 +f 244/551/75 254/552/103 246/532/71 +f 248/550/70 257/542/99 256/553/100 +f 245/548/72 254/552/103 253/554/101 +f 253/555/101 265/556/107 258/549/104 +f 256/557/100 262/558/110 255/559/105 +f 251/547/106 265/556/107 259/560/33 +f 256/557/100 264/561/108 263/562/109 +f 254/563/103 260/564/111 253/555/101 +f 251/547/106 264/561/108 257/542/99 +f 259/560/33 271/565/112 264/561/108 +f 260/564/111 272/566/116 265/556/107 +f 263/562/109 269/567/117 262/558/110 +f 265/556/107 266/568/118 259/560/33 +f 263/562/109 271/565/112 270/569/113 +f 260/564/111 268/570/114 267/571/115 +f 252/572/32 261/573/119 254/563/103 +f 261/573/119 252/572/32 268/570/114 +f 255/559/105 262/558/110 252/574/32 +f 262/558/110 269/567/117 252/574/32 +f 269/575/117 273/576/25 252/577/32 +f 266/568/118 279/578/120 271/565/112 +f 252/579/32 276/580/121 268/581/114 +f 267/582/115 280/583/122 272/566/116 +f 270/584/113 277/585/123 269/575/117 +f 272/566/116 274/586/24 266/568/118 +f 270/584/113 279/578/120 278/587/28 +f 267/582/115 276/580/121 275/588/27 +f 310/589/38 318/590/39 311/591/40 +f 305/592/36 319/593/37 313/594/31 +f 307/595/43 314/596/47 315/597/42 +f 311/591/40 319/593/37 312/598/44 +f 308/599/45 315/600/42 316/601/46 +f 306/602/41 313/594/31 314/596/47 +f 318/590/39 326/603/48 319/593/37 +f 316/601/46 322/604/49 323/605/50 +f 313/594/31 321/606/51 314/596/47 +f 313/594/31 326/603/48 320/607/52 +f 317/608/53 325/609/54 318/590/39 +f 315/597/42 321/606/51 322/610/49 +f 309/611/55 317/608/53 310/589/38 +f 308/599/45 316/601/46 309/611/55 +f 316/601/46 323/605/50 309/611/55 +f 317/608/53 309/611/55 324/612/56 +f 323/613/50 327/614/57 309/615/55 +f 325/616/54 334/617/58 326/603/48 +f 322/618/49 331/619/59 323/613/50 +f 320/607/52 329/620/60 321/606/51 +f 309/615/55 332/621/61 324/622/56 +f 326/603/48 328/623/62 320/607/52 +f 324/622/56 333/624/63 325/616/54 +f 321/606/51 330/625/33 322/626/49 +f 328/627/62 337/628/65 329/629/60 +f 332/621/61 335/630/68 339/631/66 +f 334/617/58 336/632/64 328/627/62 +f 332/621/61 340/633/32 333/624/63 +f 327/634/57 338/635/67 335/630/68 +f 333/624/63 341/636/69 334/617/58 +f 338/635/67 342/637/70 335/630/68 +f 340/633/32 348/638/71 341/636/69 +f 337/628/65 343/639/72 344/640/73 +f 339/631/66 342/637/70 346/641/74 +f 341/636/69 343/639/72 336/632/64 +f 339/631/66 347/642/75 340/633/32 +f 329/629/60 337/628/65 330/643/33 +f 337/628/65 344/640/73 330/643/33 +f 330/644/33 338/635/67 331/645/59 +f 338/635/67 330/644/33 345/646/76 +f 345/647/76 350/648/28 342/649/70 +f 347/642/75 356/650/77 348/638/71 +f 343/651/72 352/652/31 344/653/73 +f 330/654/33 353/655/34 345/647/76 +f 342/649/70 354/656/78 346/641/74 +f 344/653/73 349/657/26 330/658/33 +f 348/638/71 351/659/27 343/651/72 +f 346/641/74 355/660/23 347/642/75 +f 428/661/79 434/662/35 427/663/80 +f 433/664/91 425/665/83 426/666/81 +f 430/667/84 421/668/85 422/669/86 +f 429/670/93 428/661/79 421/668/85 +f 434/662/35 426/666/81 427/663/80 +f 432/671/82 424/672/88 425/665/83 +f 435/673/87 441/674/94 434/662/35 +f 440/675/90 432/671/82 433/664/91 +f 437/676/92 429/670/93 430/667/84 +f 429/670/93 442/677/89 435/673/87 +f 434/662/35 440/675/90 433/664/91 +f 432/671/82 438/678/95 431/679/96 +f 422/669/86 423/680/97 430/667/84 +f 423/681/97 424/672/88 431/679/96 +f 431/679/96 438/678/95 423/681/97 +f 430/667/84 423/680/97 437/676/92 +f 439/682/98 448/683/99 447/684/100 +f 437/685/92 444/686/101 436/687/102 +f 437/685/92 443/688/32 445/689/103 +f 436/687/102 450/690/104 442/677/89 +f 441/674/94 448/683/99 440/675/90 +f 439/682/98 446/691/105 438/692/95 +f 438/692/95 443/693/32 423/694/97 +f 442/677/89 449/695/106 441/674/94 +f 444/696/101 457/697/107 450/690/104 +f 449/695/106 455/698/108 448/683/99 +f 446/699/105 454/700/109 453/701/110 +f 450/690/104 456/702/33 449/695/106 +f 447/703/100 455/698/108 454/700/109 +f 445/704/103 451/705/111 444/696/101 +f 454/700/109 462/706/112 461/707/113 +f 451/705/111 459/708/114 458/709/115 +f 451/705/111 464/710/116 457/697/107 +f 456/702/33 462/706/112 455/698/108 +f 454/700/109 460/711/117 453/701/110 +f 457/697/107 463/712/118 456/702/33 +f 443/713/32 452/714/119 445/704/103 +f 452/714/119 443/713/32 459/708/114 +f 446/699/105 453/701/110 443/715/32 +f 453/701/110 460/711/117 443/715/32 +f 458/716/115 467/717/58 466/718/62 +f 460/719/117 465/720/63 443/721/32 +f 458/716/115 472/722/60 464/710/116 +f 443/723/32 467/717/58 459/724/114 +f 463/712/118 470/725/59 462/706/112 +f 461/726/113 468/727/61 460/719/117 +f 464/710/116 471/728/33 463/712/118 +f 461/726/113 470/725/59 469/729/57 +f 466/730/62 479/731/65 472/732/60 +f 469/733/57 476/734/66 468/727/61 +f 465/735/63 475/736/69 467/717/58 +f 469/733/57 478/737/67 477/738/68 +f 466/730/62 475/736/69 474/739/64 +f 468/727/61 473/740/32 465/720/63 +f 474/739/64 482/741/71 481/742/72 +f 473/740/32 483/743/74 480/744/75 +f 474/739/64 486/745/73 479/731/65 +f 477/738/68 483/743/74 476/734/66 +f 473/746/32 482/741/71 475/736/69 +f 477/738/68 485/747/76 484/748/70 +f 472/732/60 479/731/65 471/749/33 +f 479/731/65 486/745/73 471/749/33 +f 470/750/59 471/749/33 478/737/67 +f 478/737/67 471/749/33 485/747/76 +f 471/751/33 493/752/99 485/753/76 +f 480/744/75 491/754/105 488/755/32 +f 486/756/73 487/757/106 471/751/33 +f 481/758/72 494/759/104 486/756/73 +f 484/760/70 491/754/105 483/743/74 +f 480/761/75 490/762/103 482/741/71 +f 484/760/70 493/752/99 492/763/100 +f 481/758/72 490/762/103 489/764/101 +f 489/765/101 501/766/107 494/759/104 +f 491/767/105 499/768/109 498/769/110 +f 487/757/106 501/766/107 495/770/33 +f 492/771/100 500/772/108 499/768/109 +f 489/765/101 497/773/119 496/774/111 +f 487/757/106 500/772/108 493/752/99 +f 495/770/33 507/775/112 500/772/108 +f 496/774/111 508/776/116 501/766/107 +f 499/768/109 505/777/117 498/769/110 +f 495/770/33 508/776/116 502/778/118 +f 499/768/109 507/775/112 506/779/113 +f 496/774/111 504/780/114 503/781/115 +f 488/782/32 497/773/119 490/783/103 +f 497/773/119 488/782/32 504/780/114 +f 491/767/105 498/769/110 488/784/32 +f 498/769/110 505/777/117 488/784/32 +f 505/785/117 509/786/25 488/787/32 +f 502/778/118 515/788/120 507/775/112 +f 488/789/32 512/790/121 504/791/114 +f 503/792/115 516/793/122 508/776/116 +f 506/794/113 513/795/123 505/785/117 +f 508/776/116 510/796/24 502/778/118 +f 506/794/113 515/788/120 514/797/28 +f 503/792/115 512/790/121 511/798/27 +f 133/380/36 140/389/44 147/381/37 +f 138/383/38 145/399/53 146/384/39 +f 134/386/41 142/393/47 143/387/42 +f 139/385/40 146/384/39 147/381/37 +f 136/390/45 135/799/43 143/391/42 +f 133/380/36 141/382/31 142/393/47 +f 146/384/39 153/400/54 154/394/48 +f 144/392/46 143/391/42 150/395/49 +f 141/382/31 148/398/52 149/397/51 +f 147/381/37 154/394/48 148/398/52 +f 145/399/53 152/403/56 153/400/54 +f 143/387/42 142/393/47 149/397/51 +f 151/404/50 159/410/59 155/405/57 +f 153/407/54 161/415/63 162/408/58 +f 150/409/49 158/800/33 159/410/59 +f 148/398/52 156/414/62 157/411/60 +f 137/406/55 155/405/57 160/412/61 +f 154/394/48 162/408/58 156/414/62 +f 152/413/56 160/412/61 161/415/63 +f 149/397/51 157/411/60 158/416/33 +f 157/418/60 156/423/62 164/419/64 +f 155/421/57 163/426/68 167/422/66 +f 162/408/58 169/427/69 164/419/64 +f 160/412/61 167/422/66 168/424/32 +f 155/421/57 159/436/59 166/425/67 +f 162/408/58 161/415/63 168/424/32 +f 166/425/67 173/437/76 170/428/70 +f 168/424/32 175/433/75 176/429/71 +f 165/420/65 164/419/64 171/430/72 +f 163/426/68 170/428/70 174/432/74 +f 164/419/64 169/427/69 176/429/71 +f 167/422/66 174/432/74 175/433/75 +f 173/438/76 181/446/34 178/439/28 +f 175/433/75 183/451/23 184/441/77 +f 171/442/72 179/450/27 180/443/31 +f 158/445/33 177/801/26 181/446/34 +f 170/440/70 178/439/28 182/447/78 +f 172/444/73 180/443/31 177/448/26 +f 176/429/71 184/441/77 179/450/27 +f 174/432/74 182/447/78 183/451/23 +f 192/452/79 199/461/87 198/453/35 +f 190/455/81 197/465/91 196/456/82 +f 194/458/84 193/467/93 185/459/85 +f 185/459/85 193/467/93 199/461/87 +f 198/453/35 197/465/91 190/455/81 +f 196/456/82 195/470/96 188/462/88 +f 206/463/89 205/468/94 198/453/35 +f 204/464/90 203/802/98 196/456/82 +f 201/466/92 200/803/102 193/467/93 +f 193/467/93 200/803/102 206/463/89 +f 205/468/94 204/464/90 197/465/91 +f 196/456/82 203/802/98 202/469/95 +f 203/473/98 204/464/90 212/474/99 +f 201/476/92 209/480/103 208/477/101 +f 201/476/92 187/804/97 207/479/32 +f 200/478/102 208/477/101 214/481/104 +f 205/468/94 213/486/106 212/474/99 +f 203/473/98 211/475/100 210/482/105 +f 202/483/95 210/482/105 207/484/32 +f 206/463/89 214/481/104 213/486/106 +f 208/487/101 215/496/111 221/488/107 +f 212/474/99 213/486/106 220/489/33 +f 210/491/105 211/494/100 218/492/109 +f 213/486/106 214/481/104 221/488/107 +f 211/494/100 212/474/99 219/490/108 +f 209/495/103 216/505/119 215/496/111 +f 218/492/109 219/490/108 226/497/112 +f 215/496/111 216/505/119 223/499/114 +f 215/496/111 222/500/115 228/501/116 +f 220/489/33 227/503/118 226/497/112 +f 218/492/109 225/498/113 224/502/117 +f 220/489/33 221/488/107 228/501/116 +f 222/507/115 223/515/114 231/508/58 +f 224/510/117 232/518/61 229/511/63 +f 222/507/115 230/509/62 236/513/60 +f 207/514/32 229/805/63 231/508/58 +f 227/503/118 235/519/33 234/516/59 +f 225/517/113 233/520/57 232/518/61 +f 228/501/116 236/513/60 235/519/33 +f 225/517/113 226/497/112 234/516/59 +f 230/521/62 238/530/64 243/522/65 +f 233/524/57 241/529/68 240/525/66 +f 231/508/58 229/805/63 237/526/32 +f 233/524/57 234/540/59 242/528/67 +f 230/521/62 231/508/58 239/527/69 +f 232/518/61 240/525/66 237/531/32 +f 238/530/64 239/527/69 246/532/71 +f 240/525/66 247/536/74 244/534/75 +f 238/530/64 245/533/72 250/535/73 +f 241/529/68 248/538/70 247/536/74 +f 237/526/32 244/551/75 246/532/71 +f 241/529/68 242/528/67 249/537/76 +f 235/541/33 251/547/106 257/542/99 +f 244/534/75 247/536/74 255/544/105 +f 250/546/73 258/549/104 251/547/106 +f 245/548/72 253/554/101 258/549/104 +f 248/550/70 256/553/100 255/544/105 +f 244/551/75 252/806/32 254/552/103 +f 248/550/70 249/543/76 257/542/99 +f 245/548/72 246/532/71 254/552/103 +f 253/555/101 260/564/111 265/556/107 +f 256/557/100 263/562/109 262/558/110 +f 251/547/106 258/549/104 265/556/107 +f 256/557/100 257/542/99 264/561/108 +f 254/563/103 261/573/119 260/564/111 +f 251/547/106 259/560/33 264/561/108 +f 259/560/33 266/568/118 271/565/112 +f 260/564/111 267/571/115 272/566/116 +f 263/562/109 270/569/113 269/567/117 +f 265/556/107 272/566/116 266/568/118 +f 263/562/109 264/561/108 271/565/112 +f 260/564/111 261/573/119 268/570/114 +f 269/575/117 277/585/123 273/576/25 +f 266/568/118 274/586/24 279/578/120 +f 252/579/32 273/807/25 276/580/121 +f 267/582/115 275/588/27 280/583/122 +f 270/584/113 278/587/28 277/585/123 +f 272/566/116 280/583/122 274/586/24 +f 270/584/113 271/565/112 279/578/120 +f 267/582/115 268/581/114 276/580/121 +f 310/589/38 317/608/53 318/590/39 +f 305/592/36 312/598/44 319/593/37 +f 307/595/43 306/602/41 314/596/47 +f 311/591/40 318/590/39 319/593/37 +f 308/599/45 307/808/43 315/600/42 +f 306/602/41 305/592/36 313/594/31 +f 318/590/39 325/609/54 326/603/48 +f 316/601/46 315/600/42 322/604/49 +f 313/594/31 320/607/52 321/606/51 +f 313/594/31 319/593/37 326/603/48 +f 317/608/53 324/612/56 325/609/54 +f 315/597/42 314/596/47 321/606/51 +f 323/613/50 331/619/59 327/614/57 +f 325/616/54 333/624/63 334/617/58 +f 322/618/49 330/809/33 331/619/59 +f 320/607/52 328/623/62 329/620/60 +f 309/615/55 327/614/57 332/621/61 +f 326/603/48 334/617/58 328/623/62 +f 324/622/56 332/621/61 333/624/63 +f 321/606/51 329/620/60 330/625/33 +f 328/627/62 336/632/64 337/628/65 +f 332/621/61 327/634/57 335/630/68 +f 334/617/58 341/636/69 336/632/64 +f 332/621/61 339/631/66 340/633/32 +f 327/634/57 331/645/59 338/635/67 +f 333/624/63 340/633/32 341/636/69 +f 338/635/67 345/646/76 342/637/70 +f 340/633/32 347/642/75 348/638/71 +f 337/628/65 336/632/64 343/639/72 +f 339/631/66 335/630/68 342/637/70 +f 341/636/69 348/638/71 343/639/72 +f 339/631/66 346/641/74 347/642/75 +f 345/647/76 353/655/34 350/648/28 +f 347/642/75 355/660/23 356/650/77 +f 343/651/72 351/659/27 352/652/31 +f 330/654/33 349/810/26 353/655/34 +f 342/649/70 350/648/28 354/656/78 +f 344/653/73 352/652/31 349/657/26 +f 348/638/71 356/650/77 351/659/27 +f 346/641/74 354/656/78 355/660/23 +f 428/661/79 435/673/87 434/662/35 +f 433/664/91 432/671/82 425/665/83 +f 430/667/84 429/670/93 421/668/85 +f 429/670/93 435/673/87 428/661/79 +f 434/662/35 433/664/91 426/666/81 +f 432/671/82 431/679/96 424/672/88 +f 435/673/87 442/677/89 441/674/94 +f 440/675/90 439/811/98 432/671/82 +f 437/676/92 436/812/102 429/670/93 +f 429/670/93 436/812/102 442/677/89 +f 434/662/35 441/674/94 440/675/90 +f 432/671/82 439/811/98 438/678/95 +f 439/682/98 440/675/90 448/683/99 +f 437/685/92 445/689/103 444/686/101 +f 437/685/92 423/813/97 443/688/32 +f 436/687/102 444/686/101 450/690/104 +f 441/674/94 449/695/106 448/683/99 +f 439/682/98 447/684/100 446/691/105 +f 438/692/95 446/691/105 443/693/32 +f 442/677/89 450/690/104 449/695/106 +f 444/696/101 451/705/111 457/697/107 +f 449/695/106 456/702/33 455/698/108 +f 446/699/105 447/703/100 454/700/109 +f 450/690/104 457/697/107 456/702/33 +f 447/703/100 448/683/99 455/698/108 +f 445/704/103 452/714/119 451/705/111 +f 454/700/109 455/698/108 462/706/112 +f 451/705/111 452/714/119 459/708/114 +f 451/705/111 458/709/115 464/710/116 +f 456/702/33 463/712/118 462/706/112 +f 454/700/109 461/707/113 460/711/117 +f 457/697/107 464/710/116 463/712/118 +f 458/716/115 459/724/114 467/717/58 +f 460/719/117 468/727/61 465/720/63 +f 458/716/115 466/718/62 472/722/60 +f 443/723/32 465/735/63 467/717/58 +f 463/712/118 471/728/33 470/725/59 +f 461/726/113 469/729/57 468/727/61 +f 464/710/116 472/722/60 471/728/33 +f 461/726/113 462/706/112 470/725/59 +f 466/730/62 474/739/64 479/731/65 +f 469/733/57 477/738/68 476/734/66 +f 465/735/63 473/746/32 475/736/69 +f 469/733/57 470/750/59 478/737/67 +f 466/730/62 467/717/58 475/736/69 +f 468/727/61 476/734/66 473/740/32 +f 474/739/64 475/736/69 482/741/71 +f 473/740/32 476/734/66 483/743/74 +f 474/739/64 481/742/72 486/745/73 +f 477/738/68 484/748/70 483/743/74 +f 473/746/32 480/761/75 482/741/71 +f 477/738/68 478/737/67 485/747/76 +f 471/751/33 487/757/106 493/752/99 +f 480/744/75 483/743/74 491/754/105 +f 486/756/73 494/759/104 487/757/106 +f 481/758/72 489/764/101 494/759/104 +f 484/760/70 492/763/100 491/754/105 +f 480/761/75 488/814/32 490/762/103 +f 484/760/70 485/753/76 493/752/99 +f 481/758/72 482/741/71 490/762/103 +f 489/765/101 496/774/111 501/766/107 +f 491/767/105 492/771/100 499/768/109 +f 487/757/106 494/759/104 501/766/107 +f 492/771/100 493/752/99 500/772/108 +f 489/765/101 490/783/103 497/773/119 +f 487/757/106 495/770/33 500/772/108 +f 495/770/33 502/778/118 507/775/112 +f 496/774/111 503/781/115 508/776/116 +f 499/768/109 506/779/113 505/777/117 +f 495/770/33 501/766/107 508/776/116 +f 499/768/109 500/772/108 507/775/112 +f 496/774/111 497/773/119 504/780/114 +f 505/785/117 513/795/123 509/786/25 +f 502/778/118 510/796/24 515/788/120 +f 488/789/32 509/815/25 512/790/121 +f 503/792/115 511/798/27 516/793/122 +f 506/794/113 514/797/28 513/795/123 +f 508/776/116 516/793/122 510/796/24 +f 506/794/113 507/775/112 515/788/120 +f 503/792/115 504/791/114 512/790/121 diff --git a/src/main/resources/assets/hbm/models/machines/watz_pump.obj b/src/main/resources/assets/hbm/models/machines/watz_pump.obj new file mode 100644 index 000000000..e259e6ee0 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/watz_pump.obj @@ -0,0 +1,1647 @@ +# Blender v2.79 (sub 0) OBJ File: 'watz_pump.blend' +# www.blender.org +o Plane +v -0.500000 0.000000 -0.375000 +v -0.500000 0.000000 0.375000 +v 0.375000 0.000000 0.500000 +v -0.375000 0.000000 0.500000 +v -0.375000 0.000000 1.500000 +v 0.375000 0.000000 1.500000 +v -0.375000 0.000000 -1.500000 +v 0.375000 0.000000 -1.500000 +v -1.500000 0.000000 0.375000 +v 1.500000 0.000000 0.375000 +v -1.500000 0.000000 -0.375000 +v 1.500000 0.000000 -0.375000 +v -0.375000 0.000000 -0.500000 +v 0.375000 0.000000 -0.500000 +v 0.500000 0.000000 0.375000 +v 0.500000 0.000000 -0.375000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v -0.375000 0.250000 1.500000 +v 0.375000 0.250000 1.500000 +v -0.375000 0.250000 -1.500000 +v 0.375000 0.250000 -1.500000 +v -1.500000 0.250000 0.375000 +v 1.500000 0.250000 0.375000 +v -1.500000 0.250000 -0.375000 +v 1.500000 0.250000 -0.375000 +v -0.375000 0.500000 0.500000 +v 0.375000 0.500000 0.500000 +v -0.375000 0.500000 -0.500000 +v 0.375000 0.500000 -0.500000 +v -0.500000 0.500000 0.375000 +v 0.500000 0.500000 0.375000 +v -0.500000 0.500000 -0.375000 +v 0.500000 0.500000 -0.375000 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 -0.500000 +v 0.500000 0.500000 -0.500000 +v -0.375000 1.500000 0.500000 +v 0.375000 1.500000 0.500000 +v -0.375000 1.500000 -0.500000 +v 0.375000 1.500000 -0.500000 +v -0.500000 1.500000 0.375000 +v 0.500000 1.500000 0.375000 +v -0.500000 1.500000 -0.375000 +v 0.500000 1.500000 -0.375000 +v -0.250000 1.750000 0.250000 +v 0.250000 1.750000 0.250000 +v -0.250000 1.750000 -0.250000 +v 0.250000 1.750000 -0.250000 +v -0.250000 2.000000 -0.250000 +v -0.250000 2.000000 0.250000 +v 0.250000 2.000000 0.250000 +v 0.250000 2.000000 -0.250000 +v 0.099111 1.161611 -0.500000 +v 0.062500 1.250000 -0.500000 +v 0.099111 1.338388 -0.500000 +v 0.187500 1.374999 -0.500000 +v 0.275888 1.338388 -0.500000 +v 0.312500 1.250000 -0.500000 +v 0.275888 1.161611 -0.500000 +v 0.187500 1.125000 -0.500000 +v 0.099111 1.161611 -0.875000 +v 0.062500 1.250000 -0.875000 +v 0.099111 1.338388 -0.875000 +v 0.187500 1.374999 -0.875000 +v 0.275888 1.338388 -0.875000 +v 0.312500 1.250000 -0.875000 +v 0.275888 1.161611 -0.875000 +v 0.099111 1.150888 -0.900888 +v 0.062500 1.213388 -0.963388 +v 0.099111 1.275888 -1.025888 +v 0.187500 1.301776 -1.051777 +v 0.275888 1.275888 -1.025888 +v 0.312500 1.213388 -0.963388 +v 0.275888 1.150888 -0.900888 +v 0.099111 1.125000 -0.911612 +v 0.062500 1.125000 -1.000000 +v 0.099111 1.125000 -1.088388 +v 0.187500 1.125000 -1.125000 +v 0.275888 1.125000 -1.088388 +v 0.312500 1.125000 -1.000000 +v 0.275888 1.125000 -0.911612 +v 0.187500 1.125000 -0.875000 +v 0.099111 0.250000 -0.911612 +v 0.062500 0.250000 -1.000000 +v 0.099111 0.250000 -1.088388 +v 0.187500 0.250000 -1.125000 +v 0.275888 0.250000 -1.088388 +v 0.312500 0.250000 -1.000000 +v 0.275888 0.250000 -0.911612 +v 0.187500 0.250000 -0.875000 +v 0.275889 1.161611 0.500000 +v 0.312500 1.250000 0.500000 +v 0.275889 1.338388 0.500000 +v 0.187500 1.374999 0.500000 +v 0.099112 1.338388 0.500000 +v 0.062500 1.250000 0.500000 +v 0.099112 1.161611 0.500000 +v 0.187500 1.125000 0.500000 +v 0.275889 1.161611 0.875000 +v 0.312500 1.250000 0.875000 +v 0.275889 1.338388 0.875000 +v 0.187500 1.374999 0.875000 +v 0.099112 1.338388 0.875000 +v 0.062500 1.250000 0.875000 +v 0.099112 1.161611 0.875000 +v 0.275889 1.150888 0.900888 +v 0.312500 1.213388 0.963388 +v 0.275889 1.275888 1.025888 +v 0.187500 1.301776 1.051777 +v 0.099112 1.275888 1.025888 +v 0.062500 1.213388 0.963388 +v 0.099112 1.150888 0.900888 +v 0.275889 1.125000 0.911612 +v 0.312500 1.125000 1.000000 +v 0.275889 1.125000 1.088388 +v 0.187500 1.125000 1.125000 +v 0.099112 1.125000 1.088388 +v 0.062500 1.125000 1.000000 +v 0.099112 1.125000 0.911612 +v 0.187500 1.125000 0.875000 +v 0.275889 0.250000 0.911612 +v 0.312500 0.250000 1.000000 +v 0.275889 0.250000 1.088388 +v 0.187500 0.250000 1.125000 +v 0.099112 0.250000 1.088388 +v 0.062500 0.250000 1.000000 +v 0.099112 0.250000 0.911612 +v 0.187500 0.250000 0.875000 +v -0.187500 0.250000 -0.875000 +v -0.099112 0.250000 -0.911612 +v -0.062500 0.250000 -1.000000 +v -0.099112 0.250000 -1.088388 +v -0.187500 0.250000 -1.125000 +v -0.275889 0.250000 -1.088388 +v -0.312500 0.250000 -1.000000 +v -0.275889 0.250000 -0.911612 +v -0.187500 1.125000 -0.875000 +v -0.099112 1.125000 -0.911612 +v -0.062500 1.125000 -1.000000 +v -0.099112 1.125000 -1.088388 +v -0.187500 1.125000 -1.125000 +v -0.275889 1.125000 -1.088388 +v -0.312500 1.125000 -1.000000 +v -0.275889 1.125000 -0.911612 +v -0.099112 1.150888 -0.900888 +v -0.062500 1.213388 -0.963388 +v -0.099112 1.275888 -1.025888 +v -0.187500 1.301776 -1.051777 +v -0.275889 1.275888 -1.025888 +v -0.312500 1.213388 -0.963388 +v -0.275889 1.150888 -0.900888 +v -0.099112 1.161611 -0.875000 +v -0.062500 1.250000 -0.875000 +v -0.099112 1.338388 -0.875000 +v -0.187500 1.374999 -0.875000 +v -0.275889 1.338388 -0.875000 +v -0.312500 1.250000 -0.875000 +v -0.275889 1.161611 -0.875000 +v -0.187500 1.125000 -0.500000 +v -0.099112 1.161611 -0.500000 +v -0.062500 1.250000 -0.500000 +v -0.099112 1.338388 -0.500000 +v -0.187500 1.374999 -0.500000 +v -0.275889 1.338388 -0.500000 +v -0.312500 1.250000 -0.500000 +v -0.275889 1.161611 -0.500000 +v -0.187500 0.250000 0.875000 +v -0.275888 0.250000 0.911612 +v -0.312500 0.250000 1.000000 +v -0.275888 0.250000 1.088388 +v -0.187500 0.250000 1.125000 +v -0.099111 0.250000 1.088388 +v -0.062500 0.250000 1.000000 +v -0.099111 0.250000 0.911612 +v -0.187500 1.125000 0.875000 +v -0.275888 1.125000 0.911612 +v -0.312500 1.125000 1.000000 +v -0.275888 1.125000 1.088388 +v -0.187500 1.125000 1.125000 +v -0.099111 1.125000 1.088388 +v -0.062500 1.125000 1.000000 +v -0.099111 1.125000 0.911612 +v -0.275888 1.150888 0.900888 +v -0.312500 1.213388 0.963388 +v -0.275888 1.275888 1.025888 +v -0.187500 1.301776 1.051777 +v -0.099111 1.275888 1.025888 +v -0.062500 1.213388 0.963388 +v -0.099111 1.150888 0.900888 +v -0.275888 1.161611 0.875000 +v -0.312500 1.250000 0.875000 +v -0.275888 1.338388 0.875000 +v -0.187500 1.374999 0.875000 +v -0.099111 1.338388 0.875000 +v -0.062500 1.250000 0.875000 +v -0.099111 1.161611 0.875000 +v -0.187500 1.125000 0.500000 +v -0.275888 1.161611 0.500000 +v -0.312500 1.250000 0.500000 +v -0.275888 1.338388 0.500000 +v -0.187500 1.374999 0.500000 +v -0.099111 1.338388 0.500000 +v -0.062500 1.250000 0.500000 +v -0.099111 1.161611 0.500000 +v -0.500000 1.161612 -0.099111 +v -0.500000 1.250000 -0.062500 +v -0.500000 1.338388 -0.099111 +v -0.500000 1.375000 -0.187500 +v -0.500000 1.338388 -0.275888 +v -0.500000 1.250000 -0.312500 +v -0.500000 1.161612 -0.275888 +v -0.500000 1.125000 -0.187500 +v -0.875000 1.161612 -0.099111 +v -0.875000 1.250000 -0.062500 +v -0.875000 1.338388 -0.099111 +v -0.875000 1.375000 -0.187500 +v -0.875000 1.338388 -0.275888 +v -0.875000 1.250000 -0.312500 +v -0.875000 1.161612 -0.275888 +v -0.900888 1.150888 -0.099111 +v -0.963388 1.213388 -0.062500 +v -1.025888 1.275888 -0.099111 +v -1.051777 1.301776 -0.187500 +v -1.025888 1.275888 -0.275888 +v -0.963388 1.213388 -0.312500 +v -0.900888 1.150888 -0.275888 +v -0.911612 1.125000 -0.099111 +v -1.000000 1.125000 -0.062500 +v -1.088388 1.125000 -0.099111 +v -1.125000 1.125000 -0.187500 +v -1.088388 1.125000 -0.275888 +v -1.000000 1.125000 -0.312500 +v -0.911612 1.125000 -0.275888 +v -0.875000 1.125000 -0.187500 +v -0.911612 0.250000 -0.099111 +v -1.000000 0.250000 -0.062500 +v -1.088388 0.250000 -0.099111 +v -1.125000 0.250000 -0.187500 +v -1.088388 0.250000 -0.275888 +v -1.000000 0.250000 -0.312500 +v -0.911612 0.250000 -0.275888 +v -0.875000 0.250000 -0.187500 +v 0.500000 1.161612 -0.275889 +v 0.500000 1.250000 -0.312500 +v 0.500000 1.338388 -0.275889 +v 0.500000 1.375000 -0.187500 +v 0.500000 1.338388 -0.099112 +v 0.500000 1.250000 -0.062500 +v 0.500000 1.161612 -0.099112 +v 0.500000 1.125000 -0.187500 +v 0.875000 1.161612 -0.275889 +v 0.875000 1.250000 -0.312500 +v 0.875000 1.338388 -0.275889 +v 0.875000 1.375000 -0.187500 +v 0.875000 1.338388 -0.099112 +v 0.875000 1.250000 -0.062500 +v 0.875000 1.161612 -0.099112 +v 0.900888 1.150888 -0.275889 +v 0.963388 1.213388 -0.312500 +v 1.025888 1.275888 -0.275889 +v 1.051777 1.301776 -0.187500 +v 1.025888 1.275888 -0.099112 +v 0.963388 1.213388 -0.062500 +v 0.900888 1.150888 -0.099112 +v 0.911612 1.125000 -0.275889 +v 1.000000 1.125000 -0.312500 +v 1.088388 1.125000 -0.275889 +v 1.125000 1.125000 -0.187500 +v 1.088388 1.125000 -0.099112 +v 1.000000 1.125000 -0.062500 +v 0.911612 1.125000 -0.099112 +v 0.875000 1.125000 -0.187500 +v 0.911612 0.250000 -0.275889 +v 1.000000 0.250000 -0.312500 +v 1.088388 0.250000 -0.275889 +v 1.125000 0.250000 -0.187500 +v 1.088388 0.250000 -0.099112 +v 1.000000 0.250000 -0.062500 +v 0.911612 0.250000 -0.099112 +v 0.875000 0.250000 -0.187500 +v -0.875000 0.250000 0.187500 +v -0.911612 0.250000 0.099112 +v -1.000000 0.250000 0.062500 +v -1.088388 0.250000 0.099112 +v -1.125000 0.250000 0.187500 +v -1.088388 0.250000 0.275889 +v -1.000000 0.250000 0.312500 +v -0.911612 0.250000 0.275889 +v -0.875000 1.125000 0.187500 +v -0.911612 1.125000 0.099112 +v -1.000000 1.125000 0.062500 +v -1.088388 1.125000 0.099112 +v -1.125000 1.125000 0.187500 +v -1.088388 1.125000 0.275889 +v -1.000000 1.125000 0.312500 +v -0.911612 1.125000 0.275889 +v -0.900888 1.150888 0.099112 +v -0.963388 1.213388 0.062500 +v -1.025888 1.275888 0.099112 +v -1.051777 1.301776 0.187500 +v -1.025888 1.275888 0.275889 +v -0.963388 1.213388 0.312500 +v -0.900888 1.150888 0.275889 +v -0.875000 1.161612 0.099112 +v -0.875000 1.250000 0.062500 +v -0.875000 1.338388 0.099112 +v -0.875000 1.375000 0.187500 +v -0.875000 1.338388 0.275889 +v -0.875000 1.250000 0.312500 +v -0.875000 1.161612 0.275889 +v -0.500000 1.125000 0.187500 +v -0.500000 1.161612 0.099112 +v -0.500000 1.250000 0.062500 +v -0.500000 1.338388 0.099112 +v -0.500000 1.375000 0.187500 +v -0.500000 1.338388 0.275889 +v -0.500000 1.250000 0.312500 +v -0.500000 1.161612 0.275889 +v 0.875000 0.250000 0.187500 +v 0.911612 0.250000 0.275888 +v 1.000000 0.250000 0.312500 +v 1.088388 0.250000 0.275888 +v 1.125000 0.250000 0.187500 +v 1.088388 0.250000 0.099111 +v 1.000000 0.250000 0.062500 +v 0.911612 0.250000 0.099111 +v 0.875000 1.125000 0.187500 +v 0.911612 1.125000 0.275888 +v 1.000000 1.125000 0.312500 +v 1.088388 1.125000 0.275888 +v 1.125000 1.125000 0.187500 +v 1.088388 1.125000 0.099111 +v 1.000000 1.125000 0.062500 +v 0.911612 1.125000 0.099111 +v 0.900888 1.150888 0.275888 +v 0.963388 1.213388 0.312500 +v 1.025888 1.275888 0.275888 +v 1.051777 1.301776 0.187500 +v 1.025888 1.275888 0.099111 +v 0.963388 1.213388 0.062500 +v 0.900888 1.150888 0.099111 +v 0.875000 1.161612 0.275888 +v 0.875000 1.250000 0.312500 +v 0.875000 1.338388 0.275888 +v 0.875000 1.375000 0.187500 +v 0.875000 1.338388 0.099111 +v 0.875000 1.250000 0.062500 +v 0.875000 1.161612 0.099111 +v 0.500000 1.125000 0.187500 +v 0.500000 1.161612 0.275888 +v 0.500000 1.250000 0.312500 +v 0.500000 1.338388 0.275888 +v 0.500000 1.375000 0.187500 +v 0.500000 1.338388 0.099111 +v 0.500000 1.250000 0.062500 +v 0.500000 1.161612 0.099111 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.021277 1.000000 +vt 0.148936 0.500000 +vt 0.148936 1.000000 +vt 0.148936 0.000000 +vt -0.000000 0.437500 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 -0.000000 +vt 0.382979 0.125000 +vt 0.382979 -0.000000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.510638 0.125000 +vt 0.382979 0.625000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.680851 -0.000000 +vt 0.212766 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.191489 0.250000 +vt 0.170213 -0.000000 +vt 0.191489 -0.000000 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.212766 0.250000 +vt 0.191489 0.312500 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.702128 -0.000000 +vt 0.702128 -0.000000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.702128 -0.000000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.702128 -0.000000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.680851 0.500000 +vt 0.680851 0.000000 +vt 0.829787 0.000000 +vt 0.702128 0.500000 +vt 0.808511 0.625000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.808511 0.625000 +vt 0.829787 0.500000 +vt 0.829787 0.500000 +vt 0.808511 0.625000 +vt 0.829787 0.500000 +vt 0.808511 0.625000 +vt 0.829787 0.500000 +vt 0.691489 0.625000 +vt 0.691489 0.625000 +vt 0.691489 0.625000 +vt 0.691489 0.625000 +vt 0.808511 1.000000 +vt 0.723404 1.000000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.723404 0.750000 +vt 0.723404 0.625000 +vt 0.021277 0.500000 +vt 0.021277 0.500000 +vt 0.021277 0.500000 +vt 0.021277 0.500000 +vt -0.000000 0.000000 +vt 0.021277 0.000000 +vt -0.000000 0.062500 +vt 0.170213 0.000000 +vt 0.170213 0.062500 +vt 0.170213 0.437500 +vt 0.170213 0.500000 +vt -0.000000 0.500000 +vt 0.510638 0.625000 +vt 0.510638 0.625000 +vt 0.510638 0.625000 +vt 0.510638 0.625000 +vt 0.680851 0.250000 +vt 0.680851 0.250000 +vt 0.680851 0.250000 +vt 0.680851 0.250000 +vt 0.170213 0.250000 +vt 0.170213 0.250000 +vt 0.170213 0.250000 +vt 0.170213 0.250000 +vt 0.808511 0.750000 +vt 0.808511 0.750000 +vt 0.808511 0.750000 +vt 0.808511 0.750000 +vt 0.872340 0.625000 +vt 0.893617 0.812500 +vt 0.872340 0.812500 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.625000 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.872340 0.531250 +vt 0.893617 0.593750 +vt 0.872340 0.562500 +vt 0.914894 0.531250 +vt 0.936170 0.593750 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.531250 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.893617 0.625000 +vt 0.872340 0.812500 +vt 0.872340 0.625000 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.812500 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.872340 0.531250 +vt 0.893617 0.593750 +vt 0.872340 0.562500 +vt 0.914894 0.531250 +vt 0.936170 0.593750 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.531250 +vt 0.936170 0.531250 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.936170 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.500000 +vt 0.851064 0.531250 +vt 0.978723 0.531250 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.914894 0.625000 +vt 0.872340 0.562500 +vt 0.978723 0.500000 +vt 1.000000 0.531250 +vt 0.829787 0.531250 +vt 0.957447 0.625000 +vt 0.936170 0.812500 +vt 0.936170 0.625000 +vt 0.893617 0.812500 +vt 0.893617 0.625000 +vt 0.872340 0.625000 +vt 0.851064 0.812500 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.914894 0.812500 +vt 0.872340 0.812500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.500000 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.914894 0.625000 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.872340 0.562500 +vt 1.000000 0.531250 +vt 0.978723 0.531250 +vt 0.829787 0.531250 +vt 0.936170 0.625000 +vt 0.957447 0.812500 +vt 0.936170 0.812500 +vt 0.893617 0.625000 +vt 0.914894 0.812500 +vt 0.893617 0.812500 +vt 0.851064 0.625000 +vt 0.872340 0.812500 +vt 0.851064 0.812500 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.625000 +vt 1.000000 0.812500 +vt 0.978723 0.812500 +vt 0.872340 0.625000 +vt 0.872340 0.625000 +vt 0.893617 0.812500 +vt 0.872340 0.812500 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.625000 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.562500 +vt 0.872340 0.531250 +vt 0.914894 0.531250 +vt 0.936170 0.593750 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.593750 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.893617 0.625000 +vt 0.872340 0.812500 +vt 0.872340 0.625000 +vt 0.914894 0.625000 +vt 0.936170 0.812500 +vt 0.914894 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 0.957447 0.625000 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.851064 0.812500 +vt 0.893617 0.812500 +vt 0.936170 0.625000 +vt 0.851064 0.531250 +vt 0.851064 0.562500 +vt 0.829787 0.531250 +vt 0.851064 0.500000 +vt 0.978723 0.531250 +vt 1.000000 0.531250 +vt 0.978723 0.562500 +vt 0.978723 0.500000 +vt 0.872340 0.531250 +vt 0.893617 0.593750 +vt 0.872340 0.562500 +vt 0.936170 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.531250 +vt 0.957447 0.562500 +vt 0.893617 0.531250 +vt 0.936170 0.593750 +vt 0.936170 0.468750 +vt 0.914894 0.437500 +vt 0.957447 0.500000 +vt 0.893617 0.468750 +vt 0.872340 0.500000 +vt 0.872340 -0.000000 +vt 0.851064 0.437500 +vt 0.851064 -0.000000 +vt 0.914894 -0.000000 +vt 0.893617 0.437500 +vt 0.893617 -0.000000 +vt 0.957447 -0.000000 +vt 0.936170 0.437500 +vt 0.936170 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.978723 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 0.872340 0.437500 +vt 0.957447 0.437500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.500000 +vt 0.851064 0.531250 +vt 0.978723 0.500000 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.914894 0.625000 +vt 0.872340 0.562500 +vt 1.000000 0.531250 +vt 0.978723 0.531250 +vt 0.829787 0.531250 +vt 0.957447 0.625000 +vt 0.936170 0.812500 +vt 0.936170 0.625000 +vt 0.893617 0.625000 +vt 0.914894 0.812500 +vt 0.893617 0.812500 +vt 0.872340 0.625000 +vt 0.851064 0.812500 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.872340 0.812500 +vt 0.978723 -0.000000 +vt 0.957447 0.437500 +vt 0.957447 -0.000000 +vt 0.936170 -0.000000 +vt 0.914894 0.437500 +vt 0.914894 -0.000000 +vt 0.893617 -0.000000 +vt 0.872340 0.437500 +vt 0.872340 -0.000000 +vt 0.851064 -0.000000 +vt 0.829787 0.437500 +vt 0.829787 -0.000000 +vt 1.000000 -0.000000 +vt 0.978723 0.437500 +vt 0.936170 0.437500 +vt 0.893617 0.437500 +vt 0.851064 0.437500 +vt 0.872340 0.500000 +vt 0.893617 0.531250 +vt 0.872340 0.531250 +vt 0.957447 0.500000 +vt 0.936170 0.531250 +vt 0.936170 0.468750 +vt 0.893617 0.468750 +vt 0.851064 0.500000 +vt 0.851064 0.531250 +vt 0.978723 0.531250 +vt 0.957447 0.531250 +vt 0.914894 0.531250 +vt 0.957447 0.562500 +vt 0.936170 0.593750 +vt 0.893617 0.593750 +vt 0.851064 0.562500 +vt 0.978723 0.562500 +vt 0.914894 0.625000 +vt 0.872340 0.562500 +vt 0.978723 0.500000 +vt 1.000000 0.531250 +vt 0.829787 0.531250 +vt 0.957447 0.625000 +vt 0.936170 0.812500 +vt 0.936170 0.625000 +vt 0.893617 0.812500 +vt 0.893617 0.625000 +vt 0.872340 0.625000 +vt 0.851064 0.812500 +vt 0.851064 0.625000 +vt 0.829787 0.812500 +vt 0.829787 0.625000 +vt 0.978723 0.625000 +vt 0.957447 0.812500 +vt 1.000000 0.625000 +vt 0.978723 0.812500 +vt 0.914894 0.812500 +vt 0.872340 0.812500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.625000 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vt 1.000000 0.437500 +vt 1.000000 0.812500 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.2425 0.9701 0.0000 +vn 0.0000 0.9701 0.2425 +vn 0.2425 0.9701 0.0000 +vn 0.0000 0.9701 -0.2425 +vn 0.0000 1.0000 0.0000 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.7071 0.7071 0.0000 +vn -0.4851 0.7276 -0.4851 +vn -0.4851 0.7276 0.4851 +vn 0.4851 0.7276 0.4851 +vn 0.4851 0.7276 -0.4851 +vn 0.9987 0.0473 -0.0196 +vn 0.0000 0.9824 -0.1866 +vn 0.0000 -0.7071 0.7071 +vn -0.7071 -0.7071 0.0000 +vn -0.7263 -0.6737 0.1363 +vn -0.9987 0.0473 -0.0196 +vn 0.7263 -0.6737 0.1363 +vn 0.7071 -0.7071 0.0000 +vn 0.6794 0.7194 -0.1447 +vn -0.6794 0.7194 -0.1447 +vn 0.7573 -0.4617 0.4617 +vn 0.7263 -0.1363 0.6737 +vn -0.7573 -0.4617 0.4617 +vn -0.7263 -0.1363 0.6737 +vn 0.9955 0.0670 -0.0670 +vn -0.9955 0.0670 -0.0670 +vn 0.6630 0.5293 -0.5293 +vn -0.6630 0.5293 -0.5293 +vn -0.6794 0.1447 -0.7194 +vn 0.0000 0.1866 -0.9824 +vn -0.9987 0.0196 -0.0473 +vn 0.6794 0.1447 -0.7194 +vn 0.9987 0.0196 -0.0473 +vn -0.6794 0.7194 0.1447 +vn -0.9987 0.0473 0.0196 +vn 0.0000 0.9824 0.1866 +vn 0.0000 -0.7071 -0.7071 +vn 0.7263 -0.6737 -0.1363 +vn 0.9987 0.0473 0.0196 +vn -0.7263 -0.6737 -0.1363 +vn 0.6794 0.7194 0.1447 +vn -0.7573 -0.4617 -0.4617 +vn -0.7263 -0.1363 -0.6737 +vn 0.7573 -0.4617 -0.4617 +vn 0.7263 -0.1363 -0.6737 +vn -0.9955 0.0670 0.0670 +vn 0.9955 0.0670 0.0670 +vn -0.6630 0.5293 0.5293 +vn 0.6630 0.5293 0.5293 +vn 0.0000 0.1866 0.9824 +vn 0.9987 0.0196 0.0473 +vn -0.6794 0.1447 0.7194 +vn 0.6794 0.1447 0.7194 +vn -0.9987 0.0196 0.0473 +vn -0.0196 0.0473 -0.9987 +vn -0.1866 0.9824 0.0000 +vn 0.1363 -0.6737 0.7263 +vn -0.0196 0.0473 0.9987 +vn 0.1363 -0.6737 -0.7263 +vn -0.1447 0.7194 -0.6794 +vn -0.1447 0.7194 0.6794 +vn 0.4617 -0.4617 -0.7573 +vn 0.6737 -0.1363 -0.7263 +vn 0.4617 -0.4617 0.7573 +vn 0.6737 -0.1363 0.7263 +vn -0.5293 0.5293 -0.6630 +vn -0.0670 0.0670 -0.9955 +vn -0.0670 0.0670 0.9955 +vn -0.5293 0.5293 0.6630 +vn -0.7194 0.1447 0.6794 +vn -0.9824 0.1866 0.0000 +vn -0.0473 0.0196 0.9987 +vn -0.7194 0.1447 -0.6794 +vn -0.0473 0.0196 -0.9987 +vn 0.1447 0.7194 0.6794 +vn 0.0196 0.0473 0.9987 +vn 0.1866 0.9824 0.0000 +vn -0.1363 -0.6737 -0.7263 +vn 0.0196 0.0473 -0.9987 +vn -0.1363 -0.6737 0.7263 +vn 0.1447 0.7194 -0.6794 +vn -0.4617 -0.4617 0.7573 +vn -0.6737 -0.1363 0.7263 +vn -0.4617 -0.4617 -0.7573 +vn -0.6737 -0.1363 -0.7263 +vn 0.0670 0.0670 0.9955 +vn 0.5293 0.5293 -0.6630 +vn 0.0670 0.0670 -0.9955 +vn 0.5293 0.5293 0.6630 +vn 0.7194 0.1447 -0.6794 +vn 0.9824 0.1866 0.0000 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1447 0.6794 +vn 0.0473 0.0196 0.9987 +s off +f 5/1/1 3/2/1 6/3/1 +f 11/4/1 2/5/1 9/6/1 +f 8/7/1 13/8/1 7/9/1 +f 10/10/1 16/11/1 12/12/1 +f 1/13/1 16/11/1 3/14/1 +f 9/15/2 27/16/2 11/17/2 +f 6/18/3 21/19/3 5/20/3 +f 12/21/4 26/22/4 10/23/4 +f 7/24/5 24/25/5 8/26/5 +f 25/27/6 35/28/6 27/16/6 +f 22/29/7 29/30/7 21/19/7 +f 28/31/8 34/32/8 26/22/8 +f 23/33/9 32/34/9 24/25/9 +f 16/35/5 28/31/5 12/21/5 +f 24/25/4 14/36/4 8/26/4 +f 13/37/2 23/33/2 7/24/2 +f 27/16/5 1/38/5 11/17/5 +f 2/39/3 25/27/3 9/15/3 +f 21/19/2 4/40/2 5/20/2 +f 3/41/4 22/29/4 6/18/4 +f 26/22/3 15/42/3 10/23/3 +f 40/43/4 16/44/4 20/45/4 +f 14/36/5 40/43/5 20/45/5 +f 39/46/5 13/47/5 19/48/5 +f 1/38/2 39/46/2 19/48/2 +f 37/49/2 2/50/2 17/51/2 +f 4/40/3 37/49/3 17/51/3 +f 38/52/3 3/53/3 18/54/3 +f 15/42/4 38/52/4 18/54/4 +f 38/52/10 34/55/10 30/56/10 +f 40/43/10 32/57/10 36/58/10 +f 39/46/10 35/59/10 31/60/10 +f 37/49/10 29/61/10 33/62/10 +f 36/63/4 46/64/4 34/65/4 +f 35/66/11 43/67/11 31/68/11 +f 31/69/5 44/70/5 32/71/5 +f 34/65/12 42/72/12 30/73/12 +f 29/74/13 45/75/13 33/76/13 +f 33/77/2 47/78/2 35/66/2 +f 32/71/14 48/79/14 36/80/14 +f 30/81/3 41/82/3 29/74/3 +f 52/83/4 55/84/4 50/85/4 +f 50/86/15 41/82/15 42/87/15 +f 52/83/16 46/64/16 48/88/16 +f 51/89/17 44/70/17 43/90/17 +f 49/91/18 47/78/18 45/92/18 +f 47/78/19 51/93/19 43/67/19 +f 41/82/20 49/94/20 45/75/20 +f 46/64/21 50/95/21 42/72/21 +f 44/70/22 52/96/22 48/79/22 +f 55/84/10 53/97/10 54/98/10 +f 49/91/2 53/99/2 51/100/2 +f 51/89/5 56/101/5 52/102/5 +f 50/86/3 54/103/3 49/104/3 +f 5/1/1 4/105/1 3/2/1 +f 11/4/1 1/106/1 2/5/1 +f 8/7/1 14/107/1 13/8/1 +f 10/10/1 15/108/1 16/11/1 +f 17/109/1 2/110/1 4/111/1 +f 2/110/1 1/13/1 4/111/1 +f 1/13/1 19/112/1 13/113/1 +f 14/114/1 20/115/1 16/11/1 +f 1/13/1 13/113/1 14/114/1 +f 15/108/1 18/116/1 3/14/1 +f 3/14/1 4/111/1 1/13/1 +f 1/13/1 14/114/1 16/11/1 +f 16/11/1 15/108/1 3/14/1 +f 9/15/2 25/27/2 27/16/2 +f 6/18/3 22/29/3 21/19/3 +f 12/21/4 28/31/4 26/22/4 +f 7/24/5 23/33/5 24/25/5 +f 25/27/6 33/117/6 35/28/6 +f 22/29/7 30/118/7 29/30/7 +f 28/31/8 36/119/8 34/32/8 +f 23/33/9 31/120/9 32/34/9 +f 16/35/5 36/121/5 28/31/5 +f 24/25/4 32/57/4 14/36/4 +f 13/37/2 31/122/2 23/33/2 +f 27/16/5 35/59/5 1/38/5 +f 2/39/3 33/123/3 25/27/3 +f 21/19/2 29/61/2 4/40/2 +f 3/41/4 30/124/4 22/29/4 +f 26/22/3 34/55/3 15/42/3 +f 40/43/4 36/125/4 16/44/4 +f 14/36/5 32/57/5 40/43/5 +f 39/46/5 31/126/5 13/47/5 +f 1/38/2 35/59/2 39/46/2 +f 37/49/2 33/127/2 2/50/2 +f 4/40/3 29/61/3 37/49/3 +f 38/52/3 30/128/3 3/53/3 +f 15/42/4 34/55/4 38/52/4 +f 36/63/4 48/88/4 46/64/4 +f 35/66/11 47/78/11 43/67/11 +f 31/69/5 43/90/5 44/70/5 +f 34/65/12 46/64/12 42/72/12 +f 29/74/13 41/82/13 45/75/13 +f 33/77/2 45/92/2 47/78/2 +f 32/71/14 44/70/14 48/79/14 +f 30/81/3 42/87/3 41/82/3 +f 52/83/4 56/129/4 55/84/4 +f 50/86/15 49/104/15 41/82/15 +f 52/83/16 50/85/16 46/64/16 +f 51/89/17 52/102/17 44/70/17 +f 49/91/18 51/100/18 47/78/18 +f 55/84/10 56/129/10 53/97/10 +f 49/91/2 54/130/2 53/99/2 +f 51/89/5 53/131/5 56/101/5 +f 50/86/3 55/132/3 54/103/3 +s 1 +f 70/133/23 61/134/16 62/135/4 +f 68/136/24 59/137/18 60/138/10 +f 86/139/25 57/140/26 65/141/27 +f 65/141/27 58/142/2 66/143/28 +f 71/144/29 64/145/1 86/146/25 +f 70/133/23 63/147/30 71/144/29 +f 68/136/24 61/134/16 69/148/31 +f 67/149/32 58/142/2 59/137/18 +f 78/150/33 71/151/29 86/152/25 +f 85/153/34 78/150/33 86/152/25 +f 72/154/35 86/155/25 65/156/27 +f 79/157/36 86/155/25 72/154/35 +f 77/158/37 69/159/31 70/160/23 +f 75/161/17 67/162/32 68/136/24 +f 73/163/38 65/156/27 66/164/28 +f 77/158/37 71/151/29 78/150/33 +f 75/161/17 69/159/31 76/165/39 +f 74/166/40 66/164/28 67/162/32 +f 81/167/41 75/161/17 82/168/42 +f 80/169/43 72/154/35 73/163/38 +f 85/153/34 77/158/37 78/150/33 +f 82/168/42 76/165/39 83/170/44 +f 80/169/43 74/166/40 81/167/41 +f 84/171/45 76/165/39 77/158/37 +f 92/172/4 85/173/34 93/174/12 +f 90/175/5 83/176/44 91/177/14 +f 88/178/2 81/179/41 89/180/11 +f 94/181/3 79/182/36 87/183/13 +f 93/174/12 86/184/25 94/185/3 +f 91/177/14 84/186/45 92/172/4 +f 89/180/11 82/168/42 90/175/5 +f 87/183/13 80/187/43 88/178/2 +f 107/188/46 100/189/2 108/190/47 +f 106/191/48 97/192/16 98/193/10 +f 124/194/49 95/195/30 103/196/50 +f 103/196/50 96/197/4 104/198/51 +f 109/199/52 102/200/1 124/201/49 +f 108/190/47 101/202/26 109/199/52 +f 107/188/46 98/193/10 99/203/18 +f 104/198/51 97/192/16 105/204/53 +f 116/205/54 109/206/52 124/207/49 +f 123/208/55 116/205/54 124/207/49 +f 110/209/56 124/210/49 103/211/50 +f 117/212/57 124/210/49 110/209/56 +f 115/213/58 107/214/46 108/215/47 +f 113/216/15 105/217/53 106/191/48 +f 111/218/59 103/211/50 104/219/51 +f 115/213/58 109/206/52 116/205/54 +f 113/216/15 107/214/46 114/220/60 +f 112/221/61 104/219/51 105/217/53 +f 120/222/62 112/221/61 113/216/15 +f 117/212/57 111/218/59 118/223/63 +f 123/208/55 115/213/58 116/205/54 +f 120/222/62 114/220/60 121/224/64 +f 119/225/65 111/218/59 112/221/61 +f 122/226/66 114/220/60 115/213/58 +f 130/227/2 123/228/55 131/229/11 +f 128/230/3 121/231/64 129/232/13 +f 126/233/4 119/234/65 127/235/12 +f 132/236/5 117/237/57 125/238/14 +f 131/229/11 124/239/49 132/240/5 +f 129/232/13 122/241/66 130/227/2 +f 127/235/12 120/222/62 128/230/3 +f 125/238/14 118/242/63 126/233/4 +f 140/243/13 147/244/43 139/245/2 +f 138/246/11 145/247/42 137/248/5 +f 136/249/14 143/250/45 135/251/4 +f 134/252/12 141/253/25 133/254/3 +f 133/255/3 148/256/36 140/243/13 +f 139/245/2 146/257/41 138/246/11 +f 137/248/5 144/258/44 136/249/14 +f 135/251/4 142/259/34 134/252/12 +f 143/260/45 151/261/39 150/262/37 +f 147/263/43 153/264/40 146/265/41 +f 145/247/42 151/261/39 144/266/44 +f 142/267/34 150/262/37 149/268/33 +f 147/263/43 155/269/35 154/270/38 +f 146/265/41 152/271/17 145/247/42 +f 153/264/40 161/272/28 160/273/32 +f 152/271/17 158/274/31 151/261/39 +f 150/262/37 156/275/29 149/268/33 +f 154/270/38 162/276/27 161/272/28 +f 152/271/17 160/273/32 159/277/24 +f 150/262/37 158/274/31 157/278/23 +f 148/279/36 141/280/25 155/269/35 +f 155/269/35 141/280/25 162/276/27 +f 142/267/34 149/268/33 141/281/25 +f 149/268/33 156/275/29 141/281/25 +f 161/282/28 168/283/18 160/284/32 +f 159/277/24 166/285/16 158/286/31 +f 157/287/23 164/288/30 156/289/29 +f 156/289/29 163/290/1 141/291/25 +f 162/292/27 169/293/2 161/282/28 +f 141/294/25 170/295/26 162/292/27 +f 160/284/32 167/296/10 159/277/24 +f 158/286/31 165/297/4 157/287/23 +f 178/298/14 185/299/63 177/300/4 +f 176/301/12 183/302/62 175/303/3 +f 174/304/13 181/305/66 173/306/2 +f 172/307/11 179/308/49 171/309/5 +f 171/310/5 186/311/57 178/298/14 +f 177/300/4 184/312/65 176/301/12 +f 175/303/3 182/313/64 174/304/13 +f 173/306/2 180/314/55 172/307/11 +f 181/315/66 189/316/60 188/317/58 +f 185/318/63 191/319/61 184/320/65 +f 183/302/62 189/316/60 182/321/64 +f 181/315/66 187/322/54 180/323/55 +f 186/324/57 192/325/59 185/318/63 +f 184/320/65 190/326/15 183/302/62 +f 191/319/61 199/327/51 198/328/53 +f 189/316/60 197/329/48 196/330/46 +f 188/317/58 194/331/52 187/322/54 +f 192/325/59 200/332/50 199/327/51 +f 190/326/15 198/328/53 197/329/48 +f 189/316/60 195/333/47 188/317/58 +f 186/324/57 179/334/49 193/335/56 +f 193/335/56 179/334/49 200/332/50 +f 180/323/55 187/322/54 179/336/49 +f 187/322/54 194/331/52 179/336/49 +f 198/337/53 207/338/4 206/339/16 +f 196/340/46 205/341/10 204/342/18 +f 194/343/52 203/344/2 202/345/26 +f 194/343/52 201/346/1 179/347/49 +f 200/348/50 207/338/4 199/349/51 +f 200/348/50 201/350/1 208/351/30 +f 198/337/53 205/341/10 197/329/48 +f 196/340/46 203/344/2 195/352/47 +f 222/353/67 213/354/17 214/355/5 +f 220/356/68 211/357/15 212/358/10 +f 238/359/30 209/360/25 217/361/69 +f 217/361/69 210/362/3 218/363/70 +f 223/364/71 216/365/1 238/366/30 +f 222/353/67 215/367/49 223/364/71 +f 221/368/72 212/358/10 213/354/17 +f 219/369/73 210/362/3 211/357/15 +f 230/370/74 223/371/71 238/372/30 +f 237/373/75 230/370/74 238/372/30 +f 224/374/76 238/375/30 217/376/69 +f 231/377/77 238/375/30 224/374/76 +f 228/378/78 222/379/67 229/380/79 +f 227/381/18 219/382/73 220/356/68 +f 225/383/80 217/376/69 218/384/70 +f 229/380/79 223/371/71 230/370/74 +f 227/381/18 221/385/72 228/378/78 +f 226/386/81 218/384/70 219/382/73 +f 233/387/82 227/381/18 234/388/83 +f 231/377/77 225/383/80 232/389/84 +f 237/373/75 229/380/79 230/370/74 +f 234/388/83 228/378/78 235/390/85 +f 232/389/84 226/386/81 233/387/82 +f 236/391/86 228/378/78 229/380/79 +f 244/392/5 237/393/75 245/394/14 +f 242/395/2 235/396/85 243/397/11 +f 240/398/3 233/399/82 241/400/13 +f 246/401/4 231/402/77 239/403/12 +f 245/394/14 238/404/30 246/405/4 +f 243/397/11 236/406/86 244/392/5 +f 241/400/13 234/388/83 242/395/2 +f 239/403/12 232/407/84 240/398/3 +f 259/408/87 252/409/3 260/410/88 +f 258/411/89 249/412/17 250/413/10 +f 276/414/26 247/415/49 255/416/90 +f 255/416/90 248/417/5 256/418/91 +f 261/419/92 254/420/1 276/421/26 +f 260/410/88 253/422/25 261/419/92 +f 259/408/87 250/413/10 251/423/15 +f 256/418/91 249/412/17 257/424/93 +f 268/425/94 261/426/92 276/427/26 +f 275/428/95 268/425/94 276/427/26 +f 262/429/96 276/430/26 255/431/90 +f 269/432/97 276/430/26 262/429/96 +f 267/433/98 259/434/87 260/435/88 +f 264/436/99 258/411/89 265/437/16 +f 263/438/100 255/431/90 256/439/91 +f 267/433/98 261/426/92 268/425/94 +f 266/440/101 258/411/89 259/434/87 +f 264/436/99 256/439/91 257/441/93 +f 271/442/102 265/437/16 272/443/103 +f 270/444/104 262/429/96 263/438/100 +f 275/428/95 267/433/98 268/425/94 +f 272/443/103 266/440/101 273/445/105 +f 270/444/104 264/436/99 271/442/102 +f 274/446/106 266/440/101 267/433/98 +f 282/447/3 275/448/95 283/449/13 +f 280/450/4 273/451/105 281/452/12 +f 278/453/5 271/454/102 279/455/14 +f 284/456/2 269/457/97 277/458/11 +f 283/449/13 276/459/26 284/460/2 +f 281/452/12 274/461/106 282/447/3 +f 279/455/14 272/443/103 280/450/4 +f 277/458/11 270/462/104 278/453/5 +f 292/463/12 299/464/84 291/465/3 +f 290/466/13 297/467/83 289/468/2 +f 288/469/11 295/470/86 287/471/5 +f 286/472/14 293/473/30 285/474/4 +f 285/475/4 300/476/77 292/463/12 +f 291/465/3 298/477/82 290/466/13 +f 289/468/2 296/478/85 288/469/11 +f 287/471/5 294/479/75 286/472/14 +f 295/480/86 303/481/78 302/482/79 +f 299/483/84 305/484/81 298/485/82 +f 297/467/83 303/481/78 296/486/85 +f 294/487/75 302/482/79 301/488/74 +f 300/489/77 306/490/80 299/483/84 +f 297/467/83 305/484/81 304/491/18 +f 305/484/81 313/492/70 312/493/73 +f 304/491/18 310/494/72 303/481/78 +f 302/482/79 308/495/71 301/488/74 +f 306/490/80 314/496/69 313/492/70 +f 305/484/81 311/497/68 304/491/18 +f 303/481/78 309/498/67 302/482/79 +f 300/489/77 293/499/30 307/500/76 +f 307/500/76 293/499/30 314/496/69 +f 294/487/75 301/488/74 293/501/30 +f 301/488/74 308/495/71 293/501/30 +f 313/502/70 320/503/15 312/504/73 +f 310/505/72 319/506/10 318/507/17 +f 309/508/67 316/509/49 308/510/71 +f 308/510/71 315/511/1 293/512/30 +f 314/513/69 321/514/3 313/502/70 +f 293/515/30 322/516/25 314/513/69 +f 311/497/68 320/503/15 319/506/10 +f 310/505/72 317/517/5 309/508/67 +f 330/518/11 337/519/104 329/520/5 +f 328/521/14 335/522/103 327/523/4 +f 326/524/12 333/525/106 325/526/3 +f 324/527/13 331/528/26 323/529/2 +f 323/530/2 338/531/97 330/518/11 +f 329/520/5 336/532/102 328/521/14 +f 327/523/4 334/533/105 326/524/12 +f 325/526/3 332/534/95 324/527/13 +f 333/535/106 341/536/101 340/537/98 +f 337/538/104 343/539/99 336/540/102 +f 335/522/103 341/536/101 334/541/105 +f 332/542/95 340/537/98 339/543/94 +f 337/538/104 345/544/96 344/545/100 +f 336/540/102 342/546/16 335/522/103 +f 343/539/99 351/547/91 350/548/93 +f 342/546/16 348/549/87 341/536/101 +f 340/537/98 346/550/92 339/543/94 +f 344/545/100 352/551/90 351/547/91 +f 343/539/99 349/552/89 342/546/16 +f 340/537/98 348/549/87 347/553/88 +f 338/554/97 331/555/26 345/544/96 +f 345/544/96 331/555/26 352/551/90 +f 332/542/95 339/543/94 331/556/26 +f 339/543/94 346/550/92 331/556/26 +f 351/557/91 358/558/17 350/559/93 +f 349/552/89 356/560/15 348/561/87 +f 347/562/88 354/563/25 346/564/92 +f 346/564/92 353/565/1 331/566/26 +f 352/567/90 359/568/5 351/557/91 +f 331/569/26 360/570/49 352/567/90 +f 349/552/89 358/558/17 357/571/10 +f 348/561/87 355/572/3 347/562/88 +f 70/133/23 69/148/31 61/134/16 +f 68/136/24 67/149/32 59/137/18 +f 86/139/25 64/573/1 57/140/26 +f 65/141/27 57/140/26 58/142/2 +f 71/144/29 63/147/30 64/145/1 +f 70/133/23 62/135/4 63/147/30 +f 68/136/24 60/138/10 61/134/16 +f 67/149/32 66/143/28 58/142/2 +f 77/158/37 76/165/39 69/159/31 +f 75/161/17 74/166/40 67/162/32 +f 73/163/38 72/154/35 65/156/27 +f 77/158/37 70/160/23 71/151/29 +f 75/161/17 68/136/24 69/159/31 +f 74/166/40 73/163/38 66/164/28 +f 81/167/41 74/166/40 75/161/17 +f 80/169/43 79/157/36 72/154/35 +f 85/153/34 84/171/45 77/158/37 +f 82/168/42 75/161/17 76/165/39 +f 80/169/43 73/163/38 74/166/40 +f 84/171/45 83/170/44 76/165/39 +f 92/172/4 84/186/45 85/173/34 +f 90/175/5 82/168/42 83/176/44 +f 88/178/2 80/187/43 81/179/41 +f 94/181/3 86/574/25 79/182/36 +f 93/174/12 85/173/34 86/184/25 +f 91/177/14 83/176/44 84/186/45 +f 89/180/11 81/179/41 82/168/42 +f 87/183/13 79/182/36 80/187/43 +f 107/188/46 99/203/18 100/189/2 +f 106/191/48 105/204/53 97/192/16 +f 124/194/49 102/575/1 95/195/30 +f 103/196/50 95/195/30 96/197/4 +f 109/199/52 101/202/26 102/200/1 +f 108/190/47 100/189/2 101/202/26 +f 107/188/46 106/191/48 98/193/10 +f 104/198/51 96/197/4 97/192/16 +f 115/213/58 114/220/60 107/214/46 +f 113/216/15 112/221/61 105/217/53 +f 111/218/59 110/209/56 103/211/50 +f 115/213/58 108/215/47 109/206/52 +f 113/216/15 106/191/48 107/214/46 +f 112/221/61 111/218/59 104/219/51 +f 120/222/62 119/225/65 112/221/61 +f 117/212/57 110/209/56 111/218/59 +f 123/208/55 122/226/66 115/213/58 +f 120/222/62 113/216/15 114/220/60 +f 119/225/65 118/223/63 111/218/59 +f 122/226/66 121/224/64 114/220/60 +f 130/227/2 122/241/66 123/228/55 +f 128/230/3 120/222/62 121/231/64 +f 126/233/4 118/242/63 119/234/65 +f 132/236/5 124/576/49 117/237/57 +f 131/229/11 123/228/55 124/239/49 +f 129/232/13 121/231/64 122/241/66 +f 127/235/12 119/234/65 120/222/62 +f 125/238/14 117/237/57 118/242/63 +f 140/243/13 148/256/36 147/244/43 +f 138/246/11 146/257/41 145/247/42 +f 136/249/14 144/258/44 143/250/45 +f 134/252/12 142/259/34 141/253/25 +f 133/255/3 141/577/25 148/256/36 +f 139/245/2 147/244/43 146/257/41 +f 137/248/5 145/247/42 144/258/44 +f 135/251/4 143/250/45 142/259/34 +f 143/260/45 144/266/44 151/261/39 +f 147/263/43 154/270/38 153/264/40 +f 145/247/42 152/271/17 151/261/39 +f 142/267/34 143/260/45 150/262/37 +f 147/263/43 148/279/36 155/269/35 +f 146/265/41 153/264/40 152/271/17 +f 153/264/40 154/270/38 161/272/28 +f 152/271/17 159/277/24 158/274/31 +f 150/262/37 157/278/23 156/275/29 +f 154/270/38 155/269/35 162/276/27 +f 152/271/17 153/264/40 160/273/32 +f 150/262/37 151/261/39 158/274/31 +f 161/282/28 169/293/2 168/283/18 +f 159/277/24 167/296/10 166/285/16 +f 157/287/23 165/297/4 164/288/30 +f 156/289/29 164/288/30 163/290/1 +f 162/292/27 170/295/26 169/293/2 +f 141/294/25 163/578/1 170/295/26 +f 160/284/32 168/283/18 167/296/10 +f 158/286/31 166/285/16 165/297/4 +f 178/298/14 186/311/57 185/299/63 +f 176/301/12 184/312/65 183/302/62 +f 174/304/13 182/313/64 181/305/66 +f 172/307/11 180/314/55 179/308/49 +f 171/310/5 179/579/49 186/311/57 +f 177/300/4 185/299/63 184/312/65 +f 175/303/3 183/302/62 182/313/64 +f 173/306/2 181/305/66 180/314/55 +f 181/315/66 182/321/64 189/316/60 +f 185/318/63 192/325/59 191/319/61 +f 183/302/62 190/326/15 189/316/60 +f 181/315/66 188/317/58 187/322/54 +f 186/324/57 193/335/56 192/325/59 +f 184/320/65 191/319/61 190/326/15 +f 191/319/61 192/325/59 199/327/51 +f 189/316/60 190/326/15 197/329/48 +f 188/317/58 195/333/47 194/331/52 +f 192/325/59 193/335/56 200/332/50 +f 190/326/15 191/319/61 198/328/53 +f 189/316/60 196/330/46 195/333/47 +f 198/337/53 199/349/51 207/338/4 +f 196/340/46 197/329/48 205/341/10 +f 194/343/52 195/352/47 203/344/2 +f 194/343/52 202/345/26 201/346/1 +f 200/348/50 208/351/30 207/338/4 +f 200/348/50 179/580/49 201/350/1 +f 198/337/53 206/339/16 205/341/10 +f 196/340/46 204/342/18 203/344/2 +f 222/353/67 221/368/72 213/354/17 +f 220/356/68 219/369/73 211/357/15 +f 238/359/30 216/581/1 209/360/25 +f 217/361/69 209/360/25 210/362/3 +f 223/364/71 215/367/49 216/365/1 +f 222/353/67 214/355/5 215/367/49 +f 221/368/72 220/356/68 212/358/10 +f 219/369/73 218/363/70 210/362/3 +f 228/378/78 221/385/72 222/379/67 +f 227/381/18 226/386/81 219/382/73 +f 225/383/80 224/374/76 217/376/69 +f 229/380/79 222/379/67 223/371/71 +f 227/381/18 220/356/68 221/385/72 +f 226/386/81 225/383/80 218/384/70 +f 233/387/82 226/386/81 227/381/18 +f 231/377/77 224/374/76 225/383/80 +f 237/373/75 236/391/86 229/380/79 +f 234/388/83 227/381/18 228/378/78 +f 232/389/84 225/383/80 226/386/81 +f 236/391/86 235/390/85 228/378/78 +f 244/392/5 236/406/86 237/393/75 +f 242/395/2 234/388/83 235/396/85 +f 240/398/3 232/407/84 233/399/82 +f 246/401/4 238/582/30 231/402/77 +f 245/394/14 237/393/75 238/404/30 +f 243/397/11 235/396/85 236/406/86 +f 241/400/13 233/399/82 234/388/83 +f 239/403/12 231/402/77 232/407/84 +f 259/408/87 251/423/15 252/409/3 +f 258/411/89 257/424/93 249/412/17 +f 276/414/26 254/583/1 247/415/49 +f 255/416/90 247/415/49 248/417/5 +f 261/419/92 253/422/25 254/420/1 +f 260/410/88 252/409/3 253/422/25 +f 259/408/87 258/411/89 250/413/10 +f 256/418/91 248/417/5 249/412/17 +f 267/433/98 266/440/101 259/434/87 +f 264/436/99 257/441/93 258/411/89 +f 263/438/100 262/429/96 255/431/90 +f 267/433/98 260/435/88 261/426/92 +f 266/440/101 265/437/16 258/411/89 +f 264/436/99 263/438/100 256/439/91 +f 271/442/102 264/436/99 265/437/16 +f 270/444/104 269/432/97 262/429/96 +f 275/428/95 274/446/106 267/433/98 +f 272/443/103 265/437/16 266/440/101 +f 270/444/104 263/438/100 264/436/99 +f 274/446/106 273/445/105 266/440/101 +f 282/447/3 274/461/106 275/448/95 +f 280/450/4 272/443/103 273/451/105 +f 278/453/5 270/462/104 271/454/102 +f 284/456/2 276/584/26 269/457/97 +f 283/449/13 275/448/95 276/459/26 +f 281/452/12 273/451/105 274/461/106 +f 279/455/14 271/454/102 272/443/103 +f 277/458/11 269/457/97 270/462/104 +f 292/463/12 300/476/77 299/464/84 +f 290/466/13 298/477/82 297/467/83 +f 288/469/11 296/478/85 295/470/86 +f 286/472/14 294/479/75 293/473/30 +f 285/475/4 293/585/30 300/476/77 +f 291/465/3 299/464/84 298/477/82 +f 289/468/2 297/467/83 296/478/85 +f 287/471/5 295/470/86 294/479/75 +f 295/480/86 296/486/85 303/481/78 +f 299/483/84 306/490/80 305/484/81 +f 297/467/83 304/491/18 303/481/78 +f 294/487/75 295/480/86 302/482/79 +f 300/489/77 307/500/76 306/490/80 +f 297/467/83 298/485/82 305/484/81 +f 305/484/81 306/490/80 313/492/70 +f 304/491/18 311/497/68 310/494/72 +f 302/482/79 309/498/67 308/495/71 +f 306/490/80 307/500/76 314/496/69 +f 305/484/81 312/493/73 311/497/68 +f 303/481/78 310/494/72 309/498/67 +f 313/502/70 321/514/3 320/503/15 +f 310/505/72 311/497/68 319/506/10 +f 309/508/67 317/517/5 316/509/49 +f 308/510/71 316/509/49 315/511/1 +f 314/513/69 322/516/25 321/514/3 +f 293/515/30 315/586/1 322/516/25 +f 311/497/68 312/504/73 320/503/15 +f 310/505/72 318/507/17 317/517/5 +f 330/518/11 338/531/97 337/519/104 +f 328/521/14 336/532/102 335/522/103 +f 326/524/12 334/533/105 333/525/106 +f 324/527/13 332/534/95 331/528/26 +f 323/530/2 331/587/26 338/531/97 +f 329/520/5 337/519/104 336/532/102 +f 327/523/4 335/522/103 334/533/105 +f 325/526/3 333/525/106 332/534/95 +f 333/535/106 334/541/105 341/536/101 +f 337/538/104 344/545/100 343/539/99 +f 335/522/103 342/546/16 341/536/101 +f 332/542/95 333/535/106 340/537/98 +f 337/538/104 338/554/97 345/544/96 +f 336/540/102 343/539/99 342/546/16 +f 343/539/99 344/545/100 351/547/91 +f 342/546/16 349/552/89 348/549/87 +f 340/537/98 347/553/88 346/550/92 +f 344/545/100 345/544/96 352/551/90 +f 343/539/99 350/548/93 349/552/89 +f 340/537/98 341/536/101 348/549/87 +f 351/557/91 359/568/5 358/558/17 +f 349/552/89 357/571/10 356/560/15 +f 347/562/88 355/572/3 354/563/25 +f 346/564/92 354/563/25 353/565/1 +f 352/567/90 360/570/49 359/568/5 +f 331/569/26 353/588/1 360/570/49 +f 349/552/89 350/559/93 358/558/17 +f 348/561/87 356/560/15 355/572/3 diff --git a/src/main/resources/assets/hbm/models/mobs/glyphid.obj b/src/main/resources/assets/hbm/models/mobs/glyphid.obj new file mode 100644 index 000000000..84cdc3f0e --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/glyphid.obj @@ -0,0 +1,996 @@ +# Blender v2.79 (sub 0) OBJ File: 'glyphid.blend' +# www.blender.org +o JawLeft +v 0.187500 0.312500 0.250000 +v 0.187500 0.312500 0.625000 +v 0.187500 0.500000 0.250000 +v 0.187500 0.500000 0.625000 +v 0.000000 0.312500 0.250000 +v 0.000000 0.312500 0.625000 +v 0.000000 0.500000 0.625000 +vt 0.112500 0.408451 +vt 0.075000 0.492958 +vt 0.075000 0.408451 +vt 0.150000 0.408451 +vt 0.112500 0.492958 +vt 0.075000 0.535211 +vt 0.150000 0.492958 +vt 0.112500 0.535211 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 1/1/1 6/2/1 5/3/1 +f 3/4/2 2/5/2 1/1/2 +f 2/5/3 7/6/3 6/2/3 +f 1/1/1 2/5/1 6/2/1 +f 3/4/2 4/7/2 2/5/2 +f 2/5/3 4/8/3 7/6/3 +o JawRight +v -0.187500 0.312500 0.625000 +v -0.187500 0.312500 0.250000 +v -0.187500 0.500000 0.250000 +v -0.187500 0.500000 0.625000 +v 0.000000 0.312500 0.250000 +v 0.000000 0.312500 0.625000 +v 0.000000 0.500000 0.625000 +vt 0.075000 0.408451 +vt 0.037500 0.492958 +vt 0.037500 0.408451 +vt 0.075000 0.492958 +vt 0.037500 0.535211 +vt 0.000000 0.492958 +vt 0.000000 0.408451 +vt 0.075000 0.535211 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 12/9/4 8/10/4 9/11/4 +f 13/12/5 11/13/5 8/10/5 +f 9/11/6 11/14/6 10/15/6 +f 12/9/4 13/12/4 8/10/4 +f 13/12/5 14/16/5 11/13/5 +f 9/11/6 8/10/6 11/14/6 +o JawTop +v -0.187500 0.687500 0.250000 +v 0.187500 0.687500 0.250000 +v -0.187500 0.687500 0.625000 +v 0.187500 0.687500 0.625000 +v -0.187500 0.500000 0.250000 +v 0.187500 0.500000 0.250000 +v -0.187500 0.500000 0.625000 +v 0.187500 0.500000 0.625000 +v 0.000000 0.500000 0.625000 +vt -0.000000 0.661972 +vt 0.037500 0.577465 +vt 0.037500 0.661972 +vt 0.075000 0.535211 +vt 0.112500 0.577465 +vt 0.112500 0.661972 +vt 0.150000 0.577465 +vt 0.150000 0.661972 +vt -0.000000 0.577465 +vt 0.037500 0.535211 +vt 0.112500 0.535211 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 19/17/7 17/18/7 15/19/7 +f 23/20/8 18/21/8 17/18/8 +f 16/22/9 22/23/9 20/24/9 +f 15/19/10 18/21/10 16/22/10 +f 19/17/7 21/25/7 17/18/7 +f 17/18/8 21/26/8 23/20/8 +f 23/20/8 22/27/8 18/21/8 +f 16/22/9 18/21/9 22/23/9 +f 15/19/10 17/18/10 18/21/10 +o LegRightUpper +v -0.562500 0.250000 -0.031250 +v -0.562500 0.187500 -0.031250 +v -0.562500 0.250000 0.031250 +v -0.562500 0.187500 0.031250 +v -0.062500 0.250000 0.031250 +v -0.062500 0.250000 -0.031250 +v -0.062500 0.187500 -0.031250 +v -0.062500 0.187500 0.031250 +vt 0.612500 0.380282 +vt 0.625000 0.394366 +vt 0.612500 0.394366 +vt 0.625000 0.507042 +vt 0.612500 0.521127 +vt 0.612500 0.507042 +vt 0.637500 0.394366 +vt 0.600000 0.507042 +vt 0.600000 0.394366 +vt 0.650000 0.394366 +vt 0.637500 0.507042 +vt 0.625000 0.380282 +vt 0.625000 0.521127 +vt 0.650000 0.507042 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +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 +s off +f 25/28/11 26/29/11 24/30/11 +f 28/31/12 30/32/12 29/33/12 +f 27/34/13 28/31/13 26/29/13 +f 24/30/14 30/35/14 25/36/14 +f 25/37/15 31/38/15 27/34/15 +f 26/29/16 29/33/16 24/30/16 +f 25/28/11 27/39/11 26/29/11 +f 28/31/12 31/40/12 30/32/12 +f 27/34/13 31/38/13 28/31/13 +f 24/30/14 29/33/14 30/35/14 +f 25/37/15 30/41/15 31/38/15 +f 26/29/16 28/31/16 29/33/16 +o LegLeftLower +v 0.562500 0.250000 0.031250 +v 0.562500 0.187500 0.031250 +v 0.562500 0.250000 -0.031250 +v 0.562500 0.187500 -0.031250 +v 0.937500 0.250000 -0.031250 +v 0.937500 0.250000 0.031250 +v 0.937500 0.187500 0.031250 +v 0.937500 0.187500 -0.031250 +v 1.000000 0.187500 0.000000 +v 0.500000 0.218750 0.062500 +v 0.500000 0.218750 -0.062500 +v 0.875000 0.218750 -0.062500 +v 0.875000 0.218750 0.062500 +v 0.500000 0.281250 -0.062500 +v 0.500000 0.281250 0.062500 +v 0.875000 0.281250 -0.062500 +v 0.875000 0.281250 0.062500 +vt 0.675000 0.507042 +vt 0.662500 0.521127 +vt 0.662500 0.507042 +vt 0.662500 0.422535 +vt 0.650000 0.422535 +vt 0.650000 0.408451 +vt 0.687500 0.422535 +vt 0.693750 0.408451 +vt 0.700000 0.422535 +vt 0.675000 0.422535 +vt 0.687500 0.507042 +vt 0.650000 0.507042 +vt 0.750000 0.408451 +vt 0.775000 0.492958 +vt 0.750000 0.492958 +vt 0.687500 0.408451 +vt 0.668750 0.408451 +vt 0.712500 0.492958 +vt 0.737500 0.408451 +vt 0.737500 0.492958 +vt 0.712500 0.507042 +vt 0.737500 0.507042 +vt 0.737500 0.394366 +vt 0.712500 0.408451 +vt 0.712500 0.394366 +vt 0.700000 0.408451 +vt 0.700000 0.492958 +vt 0.675000 0.521127 +vt 0.700000 0.507042 +vt 0.775000 0.408451 +vn -1.0000 0.0000 0.0000 +vn 0.4472 0.0000 0.8944 +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.4472 0.0000 -0.8944 +vn 0.7071 0.7071 0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 34/42/17 33/43/17 32/44/17 +f 37/45/18 38/46/18 40/47/18 +f 39/48/19 40/49/19 38/50/19 +f 32/44/20 36/51/20 34/42/20 +f 34/42/21 39/48/21 35/52/21 +f 33/53/22 37/45/22 32/44/22 +f 43/54/19 41/55/19 42/56/19 +f 40/57/23 39/48/23 36/51/23 +f 36/51/24 37/45/24 40/58/24 +f 46/59/20 47/60/20 45/61/20 +f 41/62/17 45/61/17 42/63/17 +f 42/56/21 47/60/21 43/54/21 +f 43/64/25 48/65/25 44/66/25 +f 44/67/22 46/59/22 41/68/22 +f 34/42/17 35/69/17 33/43/17 +f 38/50/19 33/70/19 35/52/19 +f 35/52/19 39/48/19 38/50/19 +f 32/44/20 37/45/20 36/51/20 +f 34/42/21 36/51/21 39/48/21 +f 33/53/22 38/46/22 37/45/22 +f 43/54/19 44/71/19 41/55/19 +f 46/59/20 48/65/20 47/60/20 +f 41/62/17 46/59/17 45/61/17 +f 42/56/21 45/61/21 47/60/21 +f 43/64/25 47/60/25 48/65/25 +f 44/67/22 48/65/22 46/59/22 +o LegLeftUpper +v 0.562500 0.250000 0.031250 +v 0.562500 0.187500 0.031250 +v 0.562500 0.250000 -0.031250 +v 0.562500 0.187500 -0.031250 +v 0.062500 0.250000 -0.031250 +v 0.062500 0.250000 0.031250 +v 0.062500 0.187500 0.031250 +v 0.062500 0.187500 -0.031250 +vt 0.612500 0.380282 +vt 0.625000 0.394366 +vt 0.612500 0.394366 +vt 0.625000 0.507042 +vt 0.612500 0.521127 +vt 0.612500 0.507042 +vt 0.637500 0.394366 +vt 0.600000 0.507042 +vt 0.600000 0.394366 +vt 0.650000 0.394366 +vt 0.637500 0.507042 +vt 0.625000 0.380282 +vt 0.625000 0.521127 +vt 0.650000 0.507042 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +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 +s off +f 50/72/26 51/73/26 49/74/26 +f 53/75/27 55/76/27 54/77/27 +f 52/78/28 53/75/28 51/73/28 +f 49/74/29 55/79/29 50/80/29 +f 50/81/30 56/82/30 52/78/30 +f 51/73/31 54/77/31 49/74/31 +f 50/72/26 52/83/26 51/73/26 +f 53/75/27 56/84/27 55/76/27 +f 52/78/28 56/82/28 53/75/28 +f 49/74/29 54/77/29 55/79/29 +f 50/81/30 55/85/30 56/82/30 +f 51/73/31 53/75/31 54/77/31 +o ArmorRight +v 0.000000 0.343750 -1.281250 +v 0.000000 0.343750 -0.468750 +v 0.000000 0.843750 -1.281250 +v 0.000000 0.843750 -0.468750 +v -0.343750 0.343750 -1.281250 +v -0.343750 0.343750 -0.468750 +v -0.343750 0.843750 -1.281250 +v -0.343750 0.843750 -0.468750 +v -0.281250 0.781250 -1.406250 +v -0.281250 0.343750 -1.406250 +v -0.281250 0.781250 -1.281250 +v -0.281250 0.343750 -1.281250 +v 0.000000 0.343750 -1.406250 +v 0.000000 0.781250 -1.406250 +v 0.000000 0.781250 -1.281250 +vt 0.168750 0.295775 +vt 0.237500 0.112676 +vt 0.237500 0.295775 +vt 0.168750 0.000000 +vt 0.168750 0.112676 +vt 0.168750 0.408451 +vt 0.337500 0.295775 +vt 0.475000 0.267606 +vt 0.418750 0.295775 +vt 0.418750 0.267606 +vt 0.475000 0.169014 +vt 0.500000 0.267606 +vt 0.418750 0.169014 +vt 0.237500 -0.000000 +vt 0.237500 0.408451 +vt 0.337500 0.112676 +vt 0.475000 0.295775 +vt 0.500000 0.169014 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -1.0000 0.0000 0.0000 +s off +f 60/86/32 63/87/32 64/88/32 +f 57/89/33 63/87/33 59/90/33 +f 64/88/34 58/91/34 60/86/34 +f 63/87/35 62/92/35 64/88/35 +f 65/93/32 71/94/32 70/95/32 +f 66/96/35 67/97/35 65/93/35 +f 65/93/33 69/98/33 66/96/33 +f 60/86/32 59/90/32 63/87/32 +f 57/89/33 61/99/33 63/87/33 +f 64/88/34 62/100/34 58/91/34 +f 63/87/35 61/101/35 62/92/35 +f 65/93/32 67/102/32 71/94/32 +f 66/96/35 68/103/35 67/97/35 +f 65/93/33 70/95/33 69/98/33 +o ArmorLeft +v 0.000000 0.343750 -1.281250 +v 0.000000 0.343750 -0.468750 +v 0.000000 0.843750 -1.281250 +v 0.000000 0.843750 -0.468750 +v 0.343750 0.343750 -1.281250 +v 0.343750 0.343750 -0.468750 +v 0.000000 0.781250 -1.281250 +v 0.343750 0.843750 -1.281250 +v 0.000000 0.781250 -1.406250 +v 0.343750 0.843750 -0.468750 +v 0.000000 0.343750 -1.406250 +v 0.281250 0.781250 -1.281250 +v 0.281250 0.343750 -1.281250 +v 0.281250 0.781250 -1.406250 +v 0.281250 0.343750 -1.406250 +vt 0.168750 0.295775 +vt 0.100000 0.408451 +vt 0.100000 0.295775 +vt 0.418750 0.267606 +vt 0.362500 0.295775 +vt 0.362500 0.267606 +vt 0.100000 0.000000 +vt 0.168750 0.112676 +vt 0.100000 0.112676 +vt -0.000000 0.112676 +vt 0.337500 0.169014 +vt 0.362500 0.169014 +vt 0.418750 0.169014 +vt 0.168750 0.408451 +vt 0.418750 0.295775 +vt 0.168750 0.000000 +vt 0.000000 0.295775 +vt 0.337500 0.267606 +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 +s off +f 75/104/36 77/105/36 81/106/36 +f 80/107/37 83/108/37 85/109/37 +f 76/110/38 74/111/38 79/112/38 +f 81/106/39 76/113/39 79/112/39 +f 85/109/39 84/114/39 86/115/39 +f 80/107/38 86/115/38 82/116/38 +f 81/106/37 74/111/37 75/104/37 +f 75/104/36 73/117/36 77/105/36 +f 80/107/37 78/118/37 83/108/37 +f 76/110/38 72/119/38 74/111/38 +f 81/106/39 77/120/39 76/113/39 +f 85/109/39 83/121/39 84/114/39 +f 80/107/38 85/109/38 86/115/38 +f 81/106/37 79/112/37 74/111/37 +o ArmorFront +v -0.281250 0.781250 0.281250 +v -0.281250 0.781250 -0.281250 +v 0.281250 0.781250 0.281250 +v 0.281250 0.781250 -0.281250 +v -0.281250 0.531250 0.281250 +v -0.281250 0.531250 -0.281250 +v 0.281250 0.531250 0.281250 +v 0.281250 0.531250 -0.281250 +vt 0.775000 0.633803 +vt 0.887500 0.507042 +vt 0.887500 0.633803 +vt 0.937500 0.633803 +vt 0.775000 0.690141 +vt 0.725000 0.507042 +vt 0.775000 0.507042 +vt 0.775000 0.450704 +vt 0.937500 0.507042 +vt 0.887500 0.690141 +vt 0.725000 0.633803 +vt 0.887500 0.450704 +vn 0.0000 1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +s off +f 88/122/40 89/123/40 90/124/40 +f 89/123/41 94/125/41 90/124/41 +f 90/124/42 92/126/42 88/122/42 +f 88/122/43 91/127/43 87/128/43 +f 91/129/44 89/123/44 87/128/44 +f 88/122/40 87/128/40 89/123/40 +f 89/123/41 93/130/41 94/125/41 +f 90/124/42 94/131/42 92/126/42 +f 88/122/43 92/132/43 91/127/43 +f 91/129/44 93/133/44 89/123/44 +o ArmRightUpper +v -0.375000 0.687500 0.437500 +v -0.375000 0.562500 0.437500 +v -0.375000 0.687500 0.062500 +v -0.375000 0.562500 0.062500 +v -0.250000 0.687500 0.062500 +v -0.250000 0.687500 0.437500 +v -0.250000 0.562500 0.437500 +v -0.250000 0.562500 0.062500 +vt 0.325000 0.633803 +vt 0.300000 0.549296 +vt 0.325000 0.549296 +vt 0.375000 0.549296 +vt 0.350000 0.633803 +vt 0.350000 0.549296 +vt 0.350000 0.661972 +vt 0.325000 0.661972 +vt 0.325000 0.521127 +vt 0.400000 0.633803 +vt 0.400000 0.549296 +vt 0.300000 0.633803 +vt 0.375000 0.633803 +vt 0.350000 0.521127 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +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 +s off +f 97/134/45 96/135/45 95/136/45 +f 101/137/46 99/138/46 100/139/46 +f 97/134/47 102/140/47 98/141/47 +f 96/142/48 100/139/48 95/136/48 +f 98/143/49 101/137/49 96/144/49 +f 95/136/50 99/138/50 97/134/50 +f 97/134/45 98/145/45 96/135/45 +f 101/137/46 102/146/46 99/138/46 +f 97/134/47 99/138/47 102/140/47 +f 96/142/48 101/147/48 100/139/48 +f 98/143/49 102/146/49 101/137/49 +f 95/136/50 100/139/50 99/138/50 +o ArmRightMid +v -0.375000 0.687500 0.437500 +v -0.375000 0.562500 0.437500 +v -0.250000 0.687500 0.437500 +v -0.250000 0.562500 0.437500 +v -0.375000 0.687500 0.937500 +v -0.375000 0.562500 0.937500 +v -0.250000 0.687500 0.937500 +v -0.250000 0.562500 0.937500 +vt 0.450000 0.633803 +vt 0.425000 0.661972 +vt 0.425000 0.633803 +vt 0.425000 0.492958 +vt 0.450000 0.521127 +vt 0.425000 0.521127 +vt 0.475000 0.633803 +vt 0.500000 0.521127 +vt 0.500000 0.633803 +vt 0.400000 0.633803 +vt 0.475000 0.521127 +vt 0.450000 0.661972 +vt 0.450000 0.492958 +vt 0.400000 0.521127 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 105/148/51 104/149/51 103/150/51 +f 108/151/52 109/152/52 107/153/52 +f 106/154/53 108/155/53 104/156/53 +f 104/157/54 107/153/54 103/150/54 +f 103/150/55 109/152/55 105/148/55 +f 105/148/56 110/158/56 106/154/56 +f 105/148/51 106/159/51 104/149/51 +f 108/151/52 110/160/52 109/152/52 +f 106/154/53 110/158/53 108/155/53 +f 104/157/54 108/161/54 107/153/54 +f 103/150/55 107/153/55 109/152/55 +f 105/148/56 109/152/56 110/158/56 +o ArmRightArmor +v -0.437500 0.625000 0.812500 +v -0.187500 0.625000 0.812500 +v -0.437500 0.625000 1.562500 +v -0.187500 0.625000 1.562500 +v -0.187500 0.750000 0.812500 +v -0.437500 0.750000 0.812500 +v -0.187500 0.750000 1.562500 +v -0.437500 0.750000 1.562500 +vt 0.400000 0.492958 +vt 0.450000 0.323944 +vt 0.450000 0.492958 +vt 0.325000 0.492958 +vt 0.375000 0.323944 +vt 0.375000 0.492958 +vt 0.300000 0.323944 +vt 0.300000 0.492958 +vt 0.375000 0.521127 +vt 0.400000 0.323944 +vt 0.375000 0.295775 +vt 0.325000 0.323944 +vt 0.325000 0.295775 +vt 0.325000 0.521127 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +s off +f 112/162/57 113/163/57 111/164/57 +f 116/165/58 117/166/58 115/167/58 +f 113/168/59 116/165/59 111/169/59 +f 112/170/60 116/165/60 115/167/60 +f 112/162/61 117/166/61 114/171/61 +f 114/172/62 118/173/62 113/174/62 +f 112/162/57 114/171/57 113/163/57 +f 116/165/58 118/173/58 117/166/58 +f 113/168/59 118/173/59 116/165/59 +f 112/170/60 111/175/60 116/165/60 +f 112/162/61 115/167/61 117/166/61 +f 114/172/62 117/166/62 118/173/62 +o ArmRightLower +v -0.375000 0.687500 0.937500 +v -0.375000 0.562500 0.937500 +v -0.250000 0.687500 0.937500 +v -0.250000 0.562500 0.937500 +v -0.375000 0.687500 1.687500 +v -0.375000 0.562500 1.687500 +v -0.250000 0.687500 1.687500 +v -0.250000 0.562500 1.687500 +v -0.312500 0.562500 1.812500 +vt 0.550000 0.633803 +vt 0.525000 0.661972 +vt 0.525000 0.633803 +vt 0.525000 0.464789 +vt 0.537500 0.436620 +vt 0.550000 0.464789 +vt 0.575000 0.464789 +vt 0.575000 0.633803 +vt 0.587500 0.436620 +vt 0.600000 0.464789 +vt 0.500000 0.633803 +vt 0.575000 0.436620 +vt 0.500000 0.436620 +vt 0.500000 0.464789 +vt 0.550000 0.661972 +vt 0.600000 0.633803 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8944 0.0000 0.4472 +vn -0.8944 0.0000 0.4472 +s off +f 121/176/63 120/177/63 119/178/63 +f 123/179/64 127/180/64 125/181/64 +f 121/176/65 123/179/65 125/181/65 +f 121/176/66 126/182/66 122/183/66 +f 126/182/67 127/184/67 124/185/67 +f 120/186/68 123/179/68 119/178/68 +f 125/181/69 127/187/69 126/182/69 +f 127/188/70 123/179/70 124/189/70 +f 121/176/63 122/190/63 120/177/63 +f 121/176/65 119/178/65 123/179/65 +f 121/176/66 125/181/66 126/182/66 +f 124/185/67 120/191/67 122/183/67 +f 122/183/67 126/182/67 124/185/67 +f 120/186/68 124/189/68 123/179/68 +o ArmLeftArmor +v 0.187500 0.625000 0.812500 +v 0.437500 0.625000 0.812500 +v 0.187500 0.625000 1.562500 +v 0.437500 0.625000 1.562500 +v 0.437500 0.750000 0.812500 +v 0.187500 0.750000 0.812500 +v 0.437500 0.750000 1.562500 +v 0.187500 0.750000 1.562500 +vt 0.400000 0.492958 +vt 0.450000 0.323944 +vt 0.450000 0.492958 +vt 0.325000 0.492958 +vt 0.375000 0.323944 +vt 0.375000 0.492958 +vt 0.300000 0.323944 +vt 0.300000 0.492958 +vt 0.375000 0.521127 +vt 0.400000 0.323944 +vt 0.325000 0.295775 +vt 0.325000 0.323944 +vt 0.325000 0.521127 +vt 0.375000 0.295775 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +s off +f 129/192/71 130/193/71 128/194/71 +f 133/195/72 134/196/72 132/197/72 +f 130/198/73 133/195/73 128/199/73 +f 129/200/74 133/195/74 132/197/74 +f 129/192/75 134/196/75 131/201/75 +f 130/202/76 134/196/76 135/203/76 +f 129/192/71 131/201/71 130/193/71 +f 133/195/72 135/203/72 134/196/72 +f 130/198/73 135/203/73 133/195/73 +f 129/200/74 128/204/74 133/195/74 +f 129/192/75 132/197/75 134/196/75 +f 130/202/76 131/205/76 134/196/76 +o ArmLeftUpper +v 0.250000 0.687500 0.437500 +v 0.250000 0.562500 0.437500 +v 0.250000 0.687500 0.062500 +v 0.250000 0.562500 0.062500 +v 0.375000 0.687500 0.062500 +v 0.375000 0.687500 0.437500 +v 0.375000 0.562500 0.437500 +v 0.375000 0.562500 0.062500 +vt 0.325000 0.633803 +vt 0.300000 0.549296 +vt 0.325000 0.549296 +vt 0.375000 0.549296 +vt 0.350000 0.633803 +vt 0.350000 0.549296 +vt 0.350000 0.661972 +vt 0.325000 0.661972 +vt 0.325000 0.521127 +vt 0.400000 0.633803 +vt 0.400000 0.549296 +vt 0.300000 0.633803 +vt 0.375000 0.633803 +vt 0.350000 0.521127 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +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 +s off +f 138/206/77 137/207/77 136/208/77 +f 142/209/78 140/210/78 141/211/78 +f 138/206/79 143/212/79 139/213/79 +f 137/214/80 141/211/80 136/208/80 +f 139/215/81 142/209/81 137/216/81 +f 136/208/82 140/210/82 138/206/82 +f 138/206/77 139/217/77 137/207/77 +f 142/209/78 143/218/78 140/210/78 +f 138/206/79 140/210/79 143/212/79 +f 137/214/80 142/219/80 141/211/80 +f 139/215/81 143/218/81 142/209/81 +f 136/208/82 141/211/82 140/210/82 +o ArmLeftMid +v 0.250000 0.687500 0.437500 +v 0.250000 0.562500 0.437500 +v 0.375000 0.687500 0.437500 +v 0.375000 0.562500 0.437500 +v 0.250000 0.687500 0.937500 +v 0.250000 0.562500 0.937500 +v 0.375000 0.687500 0.937500 +v 0.375000 0.562500 0.937500 +vt 0.450000 0.633803 +vt 0.425000 0.661972 +vt 0.425000 0.633803 +vt 0.425000 0.492958 +vt 0.450000 0.521127 +vt 0.425000 0.521127 +vt 0.475000 0.633803 +vt 0.500000 0.521127 +vt 0.500000 0.633803 +vt 0.400000 0.633803 +vt 0.475000 0.521127 +vt 0.450000 0.661972 +vt 0.450000 0.492958 +vt 0.400000 0.521127 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +s off +f 146/220/83 145/221/83 144/222/83 +f 149/223/84 150/224/84 148/225/84 +f 147/226/85 149/227/85 145/228/85 +f 145/229/86 148/225/86 144/222/86 +f 144/222/87 150/224/87 146/220/87 +f 146/220/88 151/230/88 147/226/88 +f 146/220/83 147/231/83 145/221/83 +f 149/223/84 151/232/84 150/224/84 +f 147/226/85 151/230/85 149/227/85 +f 145/229/86 149/233/86 148/225/86 +f 144/222/87 148/225/87 150/224/87 +f 146/220/88 150/224/88 151/230/88 +o ArmLeftLower +v 0.250000 0.687500 0.937500 +v 0.250000 0.562500 0.937500 +v 0.375000 0.687500 0.937500 +v 0.375000 0.562500 0.937500 +v 0.250000 0.687500 1.687500 +v 0.250000 0.562500 1.687500 +v 0.375000 0.687500 1.687500 +v 0.375000 0.562500 1.687500 +v 0.312500 0.562500 1.812500 +vt 0.550000 0.633803 +vt 0.525000 0.661972 +vt 0.525000 0.633803 +vt 0.525000 0.464789 +vt 0.537500 0.436620 +vt 0.550000 0.464789 +vt 0.575000 0.464789 +vt 0.575000 0.633803 +vt 0.587500 0.436620 +vt 0.600000 0.464789 +vt 0.500000 0.633803 +vt 0.575000 0.436620 +vt 0.500000 0.436620 +vt 0.500000 0.464789 +vt 0.550000 0.661972 +vt 0.600000 0.633803 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 -0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.8944 0.0000 0.4472 +vn -0.8944 0.0000 0.4472 +s off +f 154/234/89 153/235/89 152/236/89 +f 156/237/90 160/238/90 158/239/90 +f 154/234/91 156/237/91 158/239/91 +f 154/234/92 159/240/92 155/241/92 +f 159/240/93 160/242/93 157/243/93 +f 153/244/94 156/237/94 152/236/94 +f 158/239/95 160/245/95 159/240/95 +f 160/246/96 156/237/96 157/247/96 +f 154/234/89 155/248/89 153/235/89 +f 154/234/91 152/236/91 156/237/91 +f 154/234/92 158/239/92 159/240/92 +f 157/243/93 153/249/93 155/241/93 +f 155/241/93 159/240/93 157/243/93 +f 153/244/94 157/247/94 156/237/94 +o Body +v -0.250000 0.250000 0.250000 +v -0.250000 0.750000 0.250000 +v -0.250000 0.250000 -0.250000 +v -0.250000 0.750000 -0.250000 +v 0.250000 0.250000 0.250000 +v 0.250000 0.750000 0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 0.750000 -0.250000 +v -0.187500 0.312500 -0.250000 +v -0.187500 0.687500 -0.250000 +v 0.187500 0.312500 -0.250000 +v 0.187500 0.687500 -0.250000 +v -0.187500 0.687500 -0.500000 +v -0.187500 0.312500 -0.500000 +v 0.187500 0.312500 -0.500000 +v 0.187500 0.687500 -0.500000 +v -0.312500 0.187500 -0.500000 +v 0.312500 0.187500 -0.500000 +v -0.312500 0.812500 -0.500000 +v 0.312500 0.812500 -0.500000 +v -0.312500 0.812500 -1.250000 +v -0.312500 0.187500 -1.250000 +v 0.312500 0.187500 -1.250000 +v 0.312500 0.812500 -1.250000 +v -0.250000 0.250000 -1.250000 +v 0.250000 0.250000 -1.250000 +v -0.250000 0.750000 -1.250000 +v 0.250000 0.750000 -1.250000 +v -0.250000 0.750000 -1.375000 +v -0.250000 0.250000 -1.375000 +v 0.250000 0.250000 -1.375000 +v 0.250000 0.750000 -1.375000 +v -0.187500 0.250000 0.187500 +v 0.187500 0.250000 0.187500 +v -0.187500 0.250000 -0.187500 +v 0.187500 0.250000 -0.187500 +v -0.187500 0.187500 -0.187500 +v -0.187500 0.187500 0.187500 +v 0.187500 0.187500 0.187500 +v 0.187500 0.187500 -0.187500 +vt 0.100000 0.887324 +vt 0.000000 0.774648 +vt 0.100000 0.774648 +vt 0.400000 0.887324 +vt 0.300000 0.774648 +vt 0.400000 0.774648 +vt 0.300000 0.887324 +vt 0.200000 0.774648 +vt 0.200000 0.887324 +vt 0.200000 0.661972 +vt 0.100000 0.661972 +vt 0.100000 1.000000 +vt 0.200000 1.000000 +vt 0.400000 0.746479 +vt 0.450000 0.830986 +vt 0.400000 0.830986 +vt 0.400000 0.661972 +vt 0.450000 0.746479 +vt 0.450000 0.915493 +vt 0.400000 0.915493 +vt 0.450000 1.000000 +vt 0.400000 1.000000 +vt 0.725000 0.690141 +vt 0.600000 0.830986 +vt 0.600000 0.690141 +vt 1.000000 0.830986 +vt 0.875000 0.690141 +vt 1.000000 0.690141 +vt 0.875000 0.830986 +vt 0.725000 0.830986 +vt 0.450000 0.690141 +vt 0.600000 1.000000 +vt 0.725000 0.521127 +vt 0.850000 0.971831 +vt 0.750000 0.859155 +vt 0.850000 0.859155 +vt 0.750000 1.000000 +vt 0.850000 1.000000 +vt 0.850000 0.830986 +vt 0.750000 0.830986 +vt 0.725000 0.859155 +vt 0.750000 0.971831 +vt 0.725000 0.971831 +vt 0.875000 0.971831 +vt 0.875000 0.859155 +vt 0.212500 0.901408 +vt 0.287500 0.985915 +vt 0.212500 0.985915 +vt 0.300000 0.985915 +vt 0.287500 0.901408 +vt 0.300000 0.901408 +vt 0.200000 0.901408 +vt 0.200000 0.985915 +vt 0.287500 0.887324 +vt 0.212500 0.887324 +vt 0.212500 1.000000 +vt 0.287500 1.000000 +vt 0.000000 0.887324 +vt 0.450000 0.661972 +vt 0.450000 0.830986 +vt 0.725000 1.000000 +vt 0.600000 0.521127 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 162/250/97 163/251/97 161/252/97 +f 164/253/98 167/254/98 163/255/98 +f 168/256/99 165/257/99 167/254/99 +f 166/258/100 161/252/100 165/257/100 +f 167/259/101 161/252/101 163/260/101 +f 164/261/102 166/258/102 168/262/102 +f 171/263/99 176/264/99 172/265/99 +f 169/266/101 175/267/101 171/263/101 +f 172/265/102 173/268/102 170/269/102 +f 170/269/97 174/270/97 169/271/97 +f 178/272/100 179/273/100 177/274/100 +f 181/275/98 183/276/98 182/277/98 +f 178/272/99 184/278/99 180/279/99 +f 179/273/97 182/280/97 177/274/97 +f 180/279/102 181/281/102 179/273/102 +f 177/274/101 183/282/101 178/272/101 +f 189/283/98 191/284/98 190/285/98 +f 188/286/102 189/283/102 187/287/102 +f 185/288/101 191/284/101 186/289/101 +f 186/290/99 192/291/99 188/292/99 +f 187/293/97 190/285/97 185/294/97 +f 197/295/101 199/296/101 198/297/101 +f 194/298/99 200/299/99 196/300/99 +f 195/301/97 198/297/97 193/302/97 +f 196/303/98 197/295/98 195/304/98 +f 193/305/100 199/296/100 194/306/100 +f 162/250/97 164/307/97 163/251/97 +f 164/253/98 168/256/98 167/254/98 +f 168/256/99 166/258/99 165/257/99 +f 166/258/100 162/250/100 161/252/100 +f 167/259/101 165/257/101 161/252/101 +f 164/261/102 162/250/102 166/258/102 +f 171/263/99 175/267/99 176/264/99 +f 169/266/101 174/308/101 175/267/101 +f 172/265/102 176/264/102 173/268/102 +f 170/269/97 173/268/97 174/270/97 +f 178/272/100 180/279/100 179/273/100 +f 181/275/98 184/278/98 183/276/98 +f 178/272/99 183/276/99 184/278/99 +f 179/273/97 181/309/97 182/280/97 +f 180/279/102 184/310/102 181/281/102 +f 177/274/101 182/311/101 183/282/101 +f 189/283/98 192/291/98 191/284/98 +f 188/286/102 192/291/102 189/283/102 +f 185/288/101 190/285/101 191/284/101 +f 186/290/99 191/284/99 192/291/99 +f 187/293/97 189/283/97 190/285/97 +f 197/295/101 200/299/101 199/296/101 +f 194/298/99 199/296/99 200/299/99 +f 195/301/97 197/295/97 198/297/97 +f 196/303/98 200/299/98 197/295/98 +f 193/305/100 198/297/100 199/296/100 +o LegRightLower +v -0.562500 0.250000 -0.031250 +v -0.562500 0.187500 -0.031250 +v -0.562500 0.250000 0.031250 +v -0.562500 0.187500 0.031250 +v -0.937500 0.250000 0.031250 +v -0.937500 0.250000 -0.031250 +v -0.937500 0.187500 -0.031250 +v -0.937500 0.187500 0.031250 +v -1.000000 0.187500 0.000000 +v -0.500000 0.218750 -0.062500 +v -0.500000 0.218750 0.062500 +v -0.875000 0.218750 0.062500 +v -0.875000 0.218750 -0.062500 +v -0.500000 0.281250 0.062500 +v -0.500000 0.281250 -0.062500 +v -0.875000 0.281250 0.062500 +v -0.875000 0.281250 -0.062500 +vt 0.675000 0.507042 +vt 0.662500 0.521127 +vt 0.662500 0.507042 +vt 0.662500 0.422535 +vt 0.650000 0.422535 +vt 0.650000 0.408451 +vt 0.687500 0.422535 +vt 0.693750 0.408451 +vt 0.700000 0.422535 +vt 0.675000 0.422535 +vt 0.687500 0.507042 +vt 0.650000 0.507042 +vt 0.750000 0.408451 +vt 0.775000 0.492958 +vt 0.750000 0.492958 +vt 0.687500 0.408451 +vt 0.668750 0.408451 +vt 0.712500 0.492958 +vt 0.737500 0.408451 +vt 0.737500 0.492958 +vt 0.712500 0.507042 +vt 0.737500 0.507042 +vt 0.737500 0.394366 +vt 0.712500 0.408451 +vt 0.712500 0.394366 +vt 0.700000 0.408451 +vt 0.700000 0.492958 +vt 0.675000 0.521127 +vt 0.700000 0.507042 +vt 0.775000 0.408451 +vn 1.0000 0.0000 0.0000 +vn -0.4472 0.0000 -0.8944 +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.4472 0.0000 0.8944 +vn -0.7071 0.7071 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 203/312/103 202/313/103 201/314/103 +f 206/315/104 207/316/104 209/317/104 +f 208/318/105 209/319/105 207/320/105 +f 201/314/106 205/321/106 203/312/106 +f 203/312/107 208/318/107 204/322/107 +f 202/323/108 206/315/108 201/314/108 +f 212/324/105 210/325/105 211/326/105 +f 209/327/109 208/318/109 205/321/109 +f 205/321/110 206/315/110 209/328/110 +f 215/329/106 216/330/106 214/331/106 +f 210/332/103 214/331/103 211/333/103 +f 211/326/107 216/330/107 212/324/107 +f 212/334/111 217/335/111 213/336/111 +f 213/337/108 215/329/108 210/338/108 +f 203/312/103 204/339/103 202/313/103 +f 207/320/105 202/340/105 204/322/105 +f 204/322/105 208/318/105 207/320/105 +f 201/314/106 206/315/106 205/321/106 +f 203/312/107 205/321/107 208/318/107 +f 202/323/108 207/316/108 206/315/108 +f 212/324/105 213/341/105 210/325/105 +f 215/329/106 217/335/106 216/330/106 +f 210/332/103 215/329/103 214/331/103 +f 211/326/107 214/331/107 216/330/107 +f 212/334/111 216/330/111 217/335/111 +f 213/337/108 217/335/108 215/329/108 diff --git a/src/main/resources/assets/hbm/models/mobs/quadcopter.obj b/src/main/resources/assets/hbm/models/mobs/quadcopter.obj new file mode 100644 index 000000000..2c9858362 --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/quadcopter.obj @@ -0,0 +1,360 @@ +# Blender v2.79 (sub 0) OBJ File: 'quadcopter.blend' +# www.blender.org +o Cube_Cube.001 +v -0.187500 0.125000 0.500000 +v -0.187500 0.375000 0.500000 +v -0.187500 0.125000 -0.500000 +v -0.187500 0.375000 -0.500000 +v 0.187500 0.125000 0.500000 +v 0.187500 0.375000 0.500000 +v 0.187500 0.125000 -0.500000 +v 0.187500 0.375000 -0.500000 +v 0.437500 0.125000 0.562500 +v 0.437500 0.500000 0.562500 +v 0.437500 0.125000 0.437500 +v 0.437500 0.500000 0.437500 +v 0.562500 0.125000 0.562500 +v 0.562500 0.500000 0.562500 +v 0.562500 0.125000 0.437500 +v 0.562500 0.500000 0.437500 +v 0.437500 0.125000 -0.437500 +v 0.437500 0.500000 -0.437500 +v 0.437500 0.125000 -0.562500 +v 0.437500 0.500000 -0.562500 +v 0.562500 0.125000 -0.437500 +v 0.562500 0.500000 -0.437500 +v 0.562500 0.125000 -0.562500 +v 0.562500 0.500000 -0.562500 +v -0.562500 0.125000 0.562500 +v -0.562500 0.500000 0.562500 +v -0.562500 0.125000 0.437500 +v -0.562500 0.500000 0.437500 +v -0.437500 0.125000 0.562500 +v -0.437500 0.500000 0.562500 +v -0.437500 0.125000 0.437500 +v -0.437500 0.500000 0.437500 +v -0.562500 0.125000 -0.437500 +v -0.562500 0.500000 -0.437500 +v -0.562500 0.125000 -0.562500 +v -0.562500 0.500000 -0.562500 +v -0.437500 0.125000 -0.437500 +v -0.437500 0.500000 -0.437500 +v -0.437500 0.125000 -0.562500 +v -0.437500 0.500000 -0.562500 +v 0.437500 0.187500 0.531250 +v 0.437500 0.312500 0.531250 +v 0.437500 0.187500 0.468750 +v 0.437500 0.312500 0.468750 +v 0.187500 0.187500 0.343750 +v 0.187500 0.187500 0.406250 +v 0.187500 0.312500 0.406250 +v 0.187500 0.312500 0.343750 +v -0.437500 0.187500 -0.531250 +v -0.437500 0.312500 -0.531250 +v -0.437500 0.187500 -0.468750 +v -0.437500 0.312500 -0.468750 +v -0.187500 0.187500 -0.343750 +v -0.187500 0.187500 -0.406250 +v -0.187500 0.312500 -0.406250 +v -0.187500 0.312500 -0.343750 +v 0.437500 0.312500 -0.531250 +v 0.437500 0.187500 -0.531250 +v 0.437500 0.312500 -0.468750 +v 0.437500 0.187500 -0.468750 +v 0.187500 0.312500 -0.343750 +v 0.187500 0.312500 -0.406250 +v 0.187500 0.187500 -0.406250 +v 0.187500 0.187500 -0.343750 +v -0.437500 0.312500 0.531250 +v -0.437500 0.187500 0.531250 +v -0.437500 0.312500 0.468750 +v -0.437500 0.187500 0.468750 +v -0.187500 0.312500 0.343750 +v -0.187500 0.312500 0.406250 +v -0.187500 0.187500 0.406250 +v -0.187500 0.187500 0.343750 +v -0.500000 0.500000 0.250000 +v -0.676777 0.500000 0.323223 +v -0.750000 0.500000 0.500000 +v -0.676777 0.500000 0.676777 +v -0.500000 0.500000 0.750000 +v -0.323223 0.500000 0.676777 +v -0.250000 0.500000 0.500000 +v -0.323223 0.500000 0.323223 +v 0.500000 0.500000 0.250000 +v 0.323223 0.500000 0.323223 +v 0.250000 0.500000 0.500000 +v 0.323223 0.500000 0.676777 +v 0.500000 0.500000 0.750000 +v 0.676777 0.500000 0.676777 +v 0.750000 0.500000 0.500000 +v 0.676777 0.500000 0.323223 +v -0.500000 0.500000 -0.750000 +v -0.676777 0.500000 -0.676777 +v -0.750000 0.500000 -0.500000 +v -0.676777 0.500000 -0.323223 +v -0.500000 0.500000 -0.250000 +v -0.323223 0.500000 -0.323223 +v -0.250000 0.500000 -0.500000 +v -0.323223 0.500000 -0.676777 +v 0.500000 0.500000 -0.750000 +v 0.323223 0.500000 -0.676777 +v 0.250000 0.500000 -0.500000 +v 0.323223 0.500000 -0.323223 +v 0.500000 0.500000 -0.250000 +v 0.676777 0.500000 -0.323223 +v 0.750000 0.500000 -0.500000 +v 0.676777 0.500000 -0.676777 +vt 0.125000 0.800000 +vt 0.625000 1.000000 +vt 0.125000 1.000000 +vt 0.625000 0.800000 +vt 0.750000 0.500000 +vt 0.750000 0.800000 +vt 0.625000 0.500000 +vt 0.125000 0.300000 +vt 0.625000 0.300000 +vt 0.125000 0.500000 +vt 0.000000 0.800000 +vt 0.000000 0.500000 +vt 0.125000 0.000000 +vt 0.625000 0.000000 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.875000 0.598554 +vt 0.750904 0.400000 +vt 0.875000 0.201446 +vt 0.812500 1.000000 +vt 0.750000 0.700000 +vt 0.812500 0.700000 +vt 1.000000 1.000000 +vt 0.937500 0.700000 +vt 1.000000 0.700000 +vt 0.937500 1.000000 +vt 0.875000 0.700000 +vt 0.875000 1.000000 +vt 0.875000 0.600000 +vt 0.812500 0.600000 +vt 0.625000 0.200000 +vt 0.750000 0.300000 +vt 0.625000 0.300000 +vt 0.625000 0.050000 +vt 0.750000 0.150000 +vt 0.625000 0.150000 +vt 0.750000 0.300000 +vt 0.625000 0.200000 +vt 0.750000 0.200000 +vt 0.750000 0.150000 +vt 0.625000 0.050000 +vt 0.750000 0.050000 +vt 0.625000 0.150000 +vt 0.750000 0.000000 +vt 0.625000 0.000000 +vt 0.750000 0.200000 +vt 0.750000 0.000000 +vt 0.750000 0.050000 +vt 0.625000 0.050000 +vt 0.750000 0.150000 +vt 0.625000 0.150000 +vt 0.625000 0.200000 +vt 0.750000 0.300000 +vt 0.625000 0.300000 +vt 0.750000 0.150000 +vt 0.625000 0.050000 +vt 0.750000 0.050000 +vt 0.750000 0.300000 +vt 0.625000 0.200000 +vt 0.750000 0.200000 +vt 0.625000 0.000000 +vt 0.750000 0.000000 +vt 0.625000 0.150000 +vt 0.625000 0.000000 +vt 0.750000 0.050000 +vt 0.750000 0.200000 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.875000 0.598554 +vt 0.875000 0.598554 +vt 0.750904 0.400000 +vt 0.875000 0.201446 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.875000 0.598554 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 1.000000 +vt 0.787251 0.540399 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.750000 1.000000 +vt 0.625000 0.300000 +vt 0.625000 0.000000 +vt 0.625000 0.300000 +vt 0.750000 0.000000 +vt 0.787251 0.540399 +vt 0.875000 0.201446 +vt 0.750904 0.400000 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vt 0.787251 0.540399 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vt 0.999096 0.400000 +vt 0.962749 0.540399 +vt 0.787251 0.540399 +vt 0.875000 0.201446 +vt 0.750904 0.400000 +vt 0.787251 0.259601 +vt 0.962749 0.259601 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.4472 0.0000 -0.8944 +vn -0.4472 0.0000 0.8944 +vn 0.4472 0.0000 0.8944 +vn -0.4472 0.0000 -0.8944 +s off +f 2/1/1 3/2/1 1/3/1 +f 4/4/2 7/5/2 3/6/2 +f 8/7/3 5/8/3 7/9/3 +f 6/10/4 1/11/4 5/12/4 +f 7/9/5 1/13/5 3/14/5 +f 4/4/6 6/10/6 8/7/6 +f 10/15/1 11/16/1 9/17/1 +f 12/18/2 15/19/2 11/20/2 +f 16/21/3 13/22/3 15/19/3 +f 14/23/4 9/17/4 13/22/4 +f 15/24/5 9/17/5 11/25/5 +f 18/26/1 19/27/1 17/28/1 +f 20/29/2 23/30/2 19/31/2 +f 24/32/3 21/33/3 23/30/3 +f 22/34/4 17/28/4 21/33/4 +f 23/35/5 17/28/5 19/36/5 +f 26/37/1 27/38/1 25/39/1 +f 28/40/2 31/41/2 27/42/2 +f 32/43/3 29/44/3 31/41/3 +f 30/45/4 25/39/4 29/44/4 +f 31/46/5 25/39/5 27/47/5 +f 81/48/6 83/49/6 85/50/6 +f 34/51/1 35/52/1 33/53/1 +f 36/54/2 39/55/2 35/56/2 +f 40/57/3 37/58/3 39/55/3 +f 38/59/4 33/53/4 37/58/4 +f 39/60/5 33/53/5 35/61/5 +f 50/62/7 54/63/7 49/64/7 +f 51/65/8 56/66/8 52/67/8 +f 43/68/7 48/69/7 44/70/7 +f 42/71/8 46/72/8 41/73/8 +f 44/70/6 47/74/6 42/71/6 +f 43/75/5 46/72/5 45/76/5 +f 52/67/6 55/77/6 50/62/6 +f 51/65/5 54/78/5 53/79/5 +f 66/80/9 70/81/9 65/82/9 +f 67/83/10 72/84/10 68/85/10 +f 59/86/9 64/87/9 60/88/9 +f 58/89/10 62/90/10 57/91/10 +f 60/88/5 63/92/5 58/93/5 +f 59/86/6 62/90/6 61/94/6 +f 68/95/5 71/96/5 66/80/5 +f 67/83/6 70/81/6 69/97/6 +f 79/98/6 80/99/6 73/100/6 +f 97/101/6 99/102/6 101/103/6 +f 95/104/6 96/105/6 89/106/6 +f 2/1/1 4/4/1 3/2/1 +f 4/4/2 8/7/2 7/5/2 +f 8/7/3 6/10/3 5/8/3 +f 6/10/4 2/1/4 1/11/4 +f 7/9/5 5/8/5 1/13/5 +f 4/4/6 2/1/6 6/10/6 +f 10/15/1 12/107/1 11/16/1 +f 12/18/2 16/21/2 15/19/2 +f 16/21/3 14/23/3 13/22/3 +f 14/23/4 10/15/4 9/17/4 +f 15/24/5 13/22/5 9/17/5 +f 18/26/1 20/108/1 19/27/1 +f 20/29/2 24/32/2 23/30/2 +f 24/32/3 22/34/3 21/33/3 +f 22/34/4 18/26/4 17/28/4 +f 23/35/5 21/33/5 17/28/5 +f 26/37/1 28/109/1 27/38/1 +f 28/40/2 32/43/2 31/41/2 +f 32/43/3 30/45/3 29/44/3 +f 30/45/4 26/37/4 25/39/4 +f 31/46/5 29/44/5 25/39/5 +f 81/48/6 82/110/6 83/49/6 +f 83/49/6 84/111/6 85/50/6 +f 85/50/6 86/112/6 87/113/6 +f 87/113/6 88/114/6 85/50/6 +f 88/114/6 81/48/6 85/50/6 +f 34/51/1 36/115/1 35/52/1 +f 36/54/2 40/57/2 39/55/2 +f 40/57/3 38/59/3 37/58/3 +f 38/59/4 34/51/4 33/53/4 +f 39/60/5 37/58/5 33/53/5 +f 50/62/7 55/77/7 54/63/7 +f 51/65/8 53/79/8 56/66/8 +f 43/68/7 45/116/7 48/69/7 +f 42/71/8 47/74/8 46/72/8 +f 44/70/6 48/69/6 47/74/6 +f 43/75/5 41/73/5 46/72/5 +f 52/67/6 56/66/6 55/77/6 +f 51/65/5 49/117/5 54/78/5 +f 66/80/9 71/96/9 70/81/9 +f 67/83/10 69/97/10 72/84/10 +f 59/86/9 61/94/9 64/87/9 +f 58/89/10 63/118/10 62/90/10 +f 60/88/5 64/87/5 63/92/5 +f 59/86/6 57/91/6 62/90/6 +f 68/95/5 72/119/5 71/96/5 +f 67/83/6 65/82/6 70/81/6 +f 73/100/6 74/120/6 77/121/6 +f 74/120/6 75/122/6 77/121/6 +f 75/122/6 76/123/6 77/121/6 +f 77/121/6 78/124/6 73/100/6 +f 78/124/6 79/98/6 73/100/6 +f 97/101/6 98/125/6 99/102/6 +f 99/102/6 100/126/6 101/103/6 +f 101/103/6 102/127/6 103/128/6 +f 103/128/6 104/129/6 101/103/6 +f 104/129/6 97/101/6 101/103/6 +f 89/106/6 90/130/6 93/131/6 +f 90/130/6 91/132/6 93/131/6 +f 91/132/6 92/133/6 93/131/6 +f 93/131/6 94/134/6 89/106/6 +f 94/134/6 95/104/6 89/106/6 diff --git a/src/main/resources/assets/hbm/models/trinkets/bobble.obj b/src/main/resources/assets/hbm/models/trinkets/bobble.obj index 5a6183975..ca368efed 100644 --- a/src/main/resources/assets/hbm/models/trinkets/bobble.obj +++ b/src/main/resources/assets/hbm/models/trinkets/bobble.obj @@ -1,5 +1,179 @@ # Blender v2.79 (sub 0) OBJ File: 'bobble.blend' # www.blender.org +o PeepHat +v 0.281250 2.625000 -0.281250 +v 0.281250 2.625000 0.281250 +v -0.281250 2.625000 0.281250 +v -0.281250 2.625000 -0.281250 +v -0.281250 2.500000 -0.281250 +v -0.281250 2.500000 0.281250 +v 0.281250 2.500000 0.281250 +v 0.281250 2.500000 -0.281250 +v 0.000000 2.687500 0.062500 +v 0.000000 2.687500 -0.062500 +v 0.000000 2.625000 0.000000 +vt -0.000000 0.890625 +vt 0.015625 0.984375 +vt -0.000000 0.984375 +vt 0.125000 0.984375 +vt 0.109375 0.890625 +vt 0.125000 0.890625 +vt 0.015625 1.000000 +vt 0.109375 0.984375 +vt 0.109375 1.000000 +vt 0.109375 0.875000 +vt 0.015625 0.890625 +vt 0.015625 0.875000 +vt 0.000000 1.000000 +vt -0.000000 0.984375 +vt 0.015625 0.984375 +vn 0.0000 0.0000 1.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 1.0000 0.0000 +s off +f 7/1/1 3/2/1 6/3/1 +f 5/4/2 1/5/2 8/6/2 +f 6/7/3 4/8/3 5/9/3 +f 8/10/4 2/11/4 7/12/4 +f 2/11/5 4/8/5 3/2/5 +f 9/13/4 11/14/4 10/15/4 +f 7/1/1 2/11/1 3/2/1 +f 5/4/2 4/8/2 1/5/2 +f 6/7/3 3/2/3 4/8/3 +f 8/10/4 1/5/4 2/11/4 +f 2/11/5 1/5/5 4/8/5 +o PeepTail +v -0.114030 1.104741 -0.062500 +v -0.071277 0.987279 -0.062500 +v -0.114030 1.104741 0.062500 +v -0.071277 0.987279 0.062500 +v -0.583876 0.933731 -0.062500 +v -0.541124 0.816269 -0.062500 +v -0.583876 0.933731 0.062500 +v -0.541124 0.816269 0.062500 +v -0.547280 0.814373 0.062500 +v -0.704707 1.160419 0.125000 +v -0.547280 0.814373 -0.062500 +v -0.704707 1.160419 -0.125000 +v -0.426539 0.846725 0.062500 +v -0.463226 1.225123 0.125000 +v -0.426539 0.846725 -0.062500 +v -0.463226 1.225123 -0.125000 +v -0.801764 1.522641 0.125000 +v -0.801764 1.522641 -0.125000 +v -0.560283 1.587345 -0.125000 +v -0.560283 1.587345 0.125000 +v -0.757570 1.599187 0.062500 +v -0.757570 1.599187 -0.062500 +v -0.636829 1.631540 -0.062500 +v -0.636829 1.631540 0.062500 +vt 0.937500 0.562500 +vt 0.968750 0.687500 +vt 0.937500 0.687500 +vt 0.968750 0.687500 +vt 0.937500 0.562500 +vt 0.968750 0.562500 +vt 0.937500 0.687500 +vt 0.968750 0.562500 +vt 0.968750 0.687500 +vt 0.968750 0.562500 +vt 0.937500 0.687500 +vt 0.937500 0.562500 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.937500 0.546875 +vt 0.890625 0.453125 +vt 0.921875 0.453125 +vt 0.890625 0.421875 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.937500 0.640625 +vt 0.890625 0.656250 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.875000 0.640625 +vt 0.875000 0.546875 +vt 0.921875 0.687500 +vt 0.890625 0.687500 +vt 0.921875 0.656250 +vt 0.890625 0.656250 +vt 0.937500 0.640625 +vt 0.890625 0.656250 +vt 0.937500 0.640625 +vt 0.890625 0.656250 +vt 0.968750 0.562500 +vt 0.937500 0.687500 +vt 0.937500 0.562500 +vt 0.968750 0.687500 +vt 0.921875 0.421875 +vt 0.921875 0.656250 +vt 0.937500 0.640625 +vt 0.921875 0.656250 +vt 0.921875 0.656250 +vn -0.3420 0.9397 0.0000 +vn 0.3420 -0.9397 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9102 -0.4141 0.0000 +vn 0.0425 -0.1588 -0.9864 +vn 0.9953 0.0965 0.0000 +vn 0.0425 -0.1588 0.9864 +vn 0.2588 -0.9659 0.0000 +vn 0.9659 0.2588 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.9659 -0.2588 0.0000 +vn -0.2588 0.9659 0.0000 +vn -0.1830 0.6830 0.7071 +vn -0.1830 0.6830 -0.7071 +vn 0.5000 0.8660 0.0000 +s off +f 16/16/6 14/17/6 12/18/6 +f 13/19/7 19/20/7 17/21/7 +f 14/22/8 19/23/8 15/24/8 +f 16/25/9 13/26/9 17/27/9 +f 21/28/10 22/29/10 20/30/10 +f 23/31/11 26/32/11 22/33/11 +f 27/34/12 24/35/12 26/36/12 +f 25/37/13 20/38/13 24/39/13 +f 26/40/14 20/30/14 22/29/14 +f 27/34/15 31/41/15 25/42/15 +f 28/43/16 33/44/16 29/45/16 +f 21/28/17 29/45/17 23/46/17 +f 25/37/8 28/47/8 21/48/8 +f 23/31/9 30/49/9 27/50/9 +f 33/44/18 35/51/18 34/52/18 +f 28/47/19 35/53/19 32/54/19 +f 29/55/20 34/56/20 30/49/20 +f 30/57/21 35/58/21 31/41/21 +f 16/16/6 18/59/6 14/17/6 +f 13/19/7 15/60/7 19/20/7 +f 14/22/8 18/61/8 19/23/8 +f 16/25/9 12/62/9 13/26/9 +f 21/28/10 23/46/10 22/29/10 +f 23/31/11 27/50/11 26/32/11 +f 27/34/12 25/42/12 24/35/12 +f 25/37/13 21/48/13 20/38/13 +f 26/40/14 24/63/14 20/30/14 +f 27/34/15 30/57/15 31/41/15 +f 28/43/16 32/64/16 33/44/16 +f 21/28/17 28/43/17 29/45/17 +f 25/37/8 31/65/8 28/47/8 +f 23/31/9 29/55/9 30/49/9 +f 33/44/18 32/64/18 35/51/18 +f 28/47/19 31/65/19 35/53/19 +f 29/55/20 33/66/20 34/56/20 +f 30/57/21 34/67/21 35/58/21 o Drillgon v -0.250000 0.500000 0.437500 v -0.250000 1.125000 0.437500 @@ -307,157 +481,157 @@ vn 0.0000 -0.9487 0.3162 vn 0.0000 0.7071 0.7071 vn 0.0000 0.7071 -0.7071 s off -f 2/1/1 3/2/1 1/3/1 -f 4/4/2 7/5/2 3/2/2 -f 8/6/3 5/7/3 7/5/3 -f 6/8/4 1/9/4 5/7/4 -f 5/7/3 15/10/3 7/5/3 -f 4/4/5 11/11/5 8/6/5 -f 11/12/3 36/13/3 12/14/3 -f 8/6/6 12/14/6 6/8/6 -f 2/1/1 10/15/1 4/4/1 -f 2/16/7 12/17/7 9/18/7 -f 15/10/8 14/19/8 13/20/8 -f 1/9/9 16/21/9 5/7/9 -f 7/5/10 13/22/10 3/2/10 -f 3/2/1 14/23/1 1/3/1 -f 18/24/11 19/25/11 17/26/11 -f 20/27/12 23/28/12 19/29/12 -f 24/30/13 21/31/13 23/32/13 -f 22/33/14 17/34/14 21/35/14 -f 20/27/15 22/33/15 24/30/15 -f 26/36/14 27/37/14 25/38/14 -f 28/39/11 31/40/11 27/41/11 -f 32/42/12 29/43/12 31/44/12 -f 30/45/13 25/46/13 29/47/13 -f 28/39/15 30/45/15 32/42/15 -f 34/48/15 36/13/15 35/49/15 -f 9/50/1 34/51/1 10/15/1 -f 12/17/4 33/52/4 9/18/4 -f 10/53/2 35/54/2 11/11/2 -f 38/55/1 39/56/1 37/57/1 -f 42/58/4 56/59/4 41/60/4 -f 44/61/3 41/60/3 43/62/3 -f 38/63/4 55/64/4 42/65/4 -f 43/66/8 37/67/8 39/68/8 -f 40/69/15 42/65/15 44/70/15 -f 46/71/1 47/72/1 45/73/1 -f 51/74/2 64/75/2 52/76/2 -f 52/76/3 49/77/3 51/74/3 -f 53/78/16 58/79/16 54/80/16 -f 51/81/8 45/82/8 47/83/8 -f 48/84/15 50/85/15 52/86/15 -f 37/57/4 54/80/4 38/55/4 -f 41/87/4 53/88/4 37/67/4 -f 59/89/4 57/90/4 60/91/4 -f 54/92/17 59/89/17 55/64/17 -f 55/93/18 60/94/18 56/59/18 -f 56/95/19 57/96/19 53/88/19 -f 64/97/20 65/98/20 61/99/20 -f 47/83/2 63/100/2 51/81/2 -f 52/86/2 61/99/2 48/84/2 -f 48/101/2 62/102/2 47/72/2 -f 65/98/2 67/103/2 66/104/2 -f 61/105/21 66/106/21 62/102/21 -f 63/107/22 68/108/22 64/75/22 -f 62/109/23 67/110/23 63/100/23 -f 72/111/2 75/112/2 71/113/2 -f 76/114/3 73/115/3 75/112/3 -f 74/116/4 69/117/4 73/115/4 -f 75/112/8 69/118/8 71/119/8 -f 72/120/15 74/116/15 76/114/15 -f 84/121/1 86/122/1 88/123/1 -f 83/124/9 81/125/9 84/121/9 -f 79/126/24 84/127/24 78/128/24 -f 87/129/25 88/123/25 86/122/25 -f 89/130/10 90/131/10 88/123/10 -f 87/129/3 83/132/3 89/130/3 -f 90/131/1 84/127/1 88/123/1 -f 83/133/3 91/134/3 89/130/3 -f 96/135/3 97/136/3 99/137/3 -f 95/138/10 94/139/10 96/135/10 -f 92/140/25 96/141/25 77/142/25 -f 97/136/24 100/143/24 99/137/24 -f 100/143/9 101/144/9 99/137/9 -f 98/145/1 95/146/1 100/143/1 -f 101/144/3 96/141/3 99/137/3 -f 95/147/1 102/148/1 100/143/1 -f 2/1/1 4/4/1 3/2/1 -f 4/4/2 8/6/2 7/5/2 -f 8/6/3 6/8/3 5/7/3 -f 6/8/4 2/16/4 1/9/4 -f 5/7/3 16/149/3 15/10/3 -f 4/4/5 10/53/5 11/11/5 -f 11/12/3 35/49/3 36/13/3 -f 8/6/6 11/12/6 12/14/6 -f 2/1/1 9/50/1 10/15/1 -f 2/16/7 6/8/7 12/17/7 -f 15/10/8 16/149/8 14/19/8 -f 1/9/9 14/150/9 16/21/9 -f 7/5/10 15/151/10 13/22/10 -f 3/2/1 13/152/1 14/23/1 -f 18/24/11 20/27/11 19/25/11 -f 20/27/12 24/30/12 23/28/12 -f 24/30/13 22/33/13 21/31/13 -f 22/33/14 18/24/14 17/34/14 -f 20/27/15 18/24/15 22/33/15 -f 26/36/14 28/39/14 27/37/14 -f 28/39/11 32/42/11 31/40/11 -f 32/42/12 30/45/12 29/43/12 -f 30/45/13 26/36/13 25/46/13 -f 28/39/15 26/36/15 30/45/15 -f 34/48/15 33/153/15 36/13/15 -f 9/50/1 33/154/1 34/51/1 -f 12/17/4 36/155/4 33/52/4 -f 10/53/2 34/156/2 35/54/2 -f 38/55/1 40/157/1 39/56/1 -f 42/58/4 55/93/4 56/59/4 -f 44/61/3 42/58/3 41/60/3 -f 38/63/4 54/92/4 55/64/4 -f 43/66/8 41/87/8 37/67/8 -f 40/69/15 38/63/15 42/65/15 -f 46/71/1 48/101/1 47/72/1 -f 51/74/2 63/107/2 64/75/2 -f 52/76/3 50/158/3 49/77/3 -f 53/78/16 57/159/16 58/79/16 -f 51/81/8 49/160/8 45/82/8 -f 48/84/15 46/161/15 50/85/15 -f 37/57/4 53/78/4 54/80/4 -f 41/87/4 56/95/4 53/88/4 -f 59/89/4 58/162/4 57/90/4 -f 54/92/17 58/162/17 59/89/17 -f 55/93/18 59/163/18 60/94/18 -f 56/95/19 60/164/19 57/96/19 -f 64/97/20 68/165/20 65/98/20 -f 47/83/2 62/109/2 63/100/2 -f 52/86/2 64/97/2 61/99/2 -f 48/101/2 61/105/2 62/102/2 -f 65/98/2 68/165/2 67/103/2 -f 61/105/21 65/166/21 66/106/21 -f 63/107/22 67/167/22 68/108/22 -f 62/109/23 66/168/23 67/110/23 -f 72/111/2 76/114/2 75/112/2 -f 76/114/3 74/116/3 73/115/3 -f 74/116/4 70/169/4 69/117/4 -f 75/112/8 73/115/8 69/118/8 -f 72/120/15 70/170/15 74/116/15 -f 84/121/1 81/125/1 86/122/1 -f 83/124/9 80/171/9 81/125/9 -f 79/126/24 83/172/24 84/127/24 -f 87/129/25 89/130/25 88/123/25 -f 89/130/10 91/134/10 90/131/10 -f 87/129/3 80/173/3 83/132/3 -f 90/131/1 78/128/1 84/127/1 -f 83/133/3 79/174/3 91/134/3 -f 96/135/3 94/139/3 97/136/3 -f 95/138/10 93/175/10 94/139/10 -f 92/140/25 95/176/25 96/141/25 -f 97/136/24 98/145/24 100/143/24 -f 100/143/9 102/148/9 101/144/9 -f 98/145/1 93/177/1 95/146/1 -f 101/144/3 77/142/3 96/141/3 -f 95/147/1 92/178/1 102/148/1 -l 82 85 +f 37/68/22 38/69/22 36/70/22 +f 39/71/23 42/72/23 38/69/23 +f 43/73/24 40/74/24 42/72/24 +f 41/75/25 36/76/25 40/74/25 +f 40/74/24 50/77/24 42/72/24 +f 39/71/26 46/78/26 43/73/26 +f 46/79/24 71/80/24 47/81/24 +f 43/73/27 47/81/27 41/75/27 +f 37/68/22 45/82/22 39/71/22 +f 37/83/28 47/84/28 44/85/28 +f 50/77/29 49/86/29 48/87/29 +f 36/76/30 51/88/30 40/74/30 +f 42/72/31 48/89/31 38/69/31 +f 38/69/22 49/90/22 36/70/22 +f 53/91/32 54/92/32 52/93/32 +f 55/94/33 58/95/33 54/96/33 +f 59/97/34 56/98/34 58/99/34 +f 57/100/35 52/101/35 56/102/35 +f 55/94/36 57/100/36 59/97/36 +f 61/103/35 62/104/35 60/105/35 +f 63/106/32 66/107/32 62/108/32 +f 67/109/33 64/110/33 66/111/33 +f 65/112/34 60/113/34 64/114/34 +f 63/106/36 65/112/36 67/109/36 +f 69/115/36 71/80/36 70/116/36 +f 44/117/22 69/118/22 45/82/22 +f 47/84/25 68/119/25 44/85/25 +f 45/120/23 70/121/23 46/78/23 +f 73/122/22 74/123/22 72/124/22 +f 77/125/25 91/126/25 76/127/25 +f 79/128/24 76/127/24 78/129/24 +f 73/130/25 90/131/25 77/132/25 +f 78/133/29 72/134/29 74/135/29 +f 75/136/36 77/132/36 79/137/36 +f 81/138/22 82/139/22 80/140/22 +f 86/141/23 99/142/23 87/143/23 +f 87/143/24 84/144/24 86/141/24 +f 88/145/37 93/146/37 89/147/37 +f 86/148/29 80/149/29 82/150/29 +f 83/151/36 85/152/36 87/153/36 +f 72/124/25 89/147/25 73/122/25 +f 76/154/25 88/155/25 72/134/25 +f 94/156/25 92/157/25 95/158/25 +f 89/159/38 94/156/38 90/131/38 +f 90/160/39 95/161/39 91/126/39 +f 91/162/40 92/163/40 88/155/40 +f 99/164/41 100/165/41 96/166/41 +f 82/150/23 98/167/23 86/148/23 +f 87/153/23 96/166/23 83/151/23 +f 83/168/23 97/169/23 82/139/23 +f 100/165/23 102/170/23 101/171/23 +f 96/172/42 101/173/42 97/169/42 +f 98/174/43 103/175/43 99/142/43 +f 97/176/44 102/177/44 98/167/44 +f 107/178/23 110/179/23 106/180/23 +f 111/181/24 108/182/24 110/179/24 +f 109/183/25 104/184/25 108/182/25 +f 110/179/29 104/185/29 106/186/29 +f 107/187/36 109/183/36 111/181/36 +f 119/188/22 121/189/22 123/190/22 +f 118/191/30 116/192/30 119/188/30 +f 114/193/45 119/194/45 113/195/45 +f 122/196/46 123/190/46 121/189/46 +f 124/197/31 125/198/31 123/190/31 +f 122/196/24 118/199/24 124/197/24 +f 125/198/22 119/194/22 123/190/22 +f 118/200/24 126/201/24 124/197/24 +f 131/202/24 132/203/24 134/204/24 +f 130/205/31 129/206/31 131/202/31 +f 127/207/46 131/208/46 112/209/46 +f 132/203/45 135/210/45 134/204/45 +f 135/210/30 136/211/30 134/204/30 +f 133/212/22 130/213/22 135/210/22 +f 136/211/24 131/208/24 134/204/24 +f 130/214/22 137/215/22 135/210/22 +f 37/68/22 39/71/22 38/69/22 +f 39/71/23 43/73/23 42/72/23 +f 43/73/24 41/75/24 40/74/24 +f 41/75/25 37/83/25 36/76/25 +f 40/74/24 51/216/24 50/77/24 +f 39/71/26 45/120/26 46/78/26 +f 46/79/24 70/116/24 71/80/24 +f 43/73/27 46/79/27 47/81/27 +f 37/68/22 44/117/22 45/82/22 +f 37/83/28 41/75/28 47/84/28 +f 50/77/29 51/216/29 49/86/29 +f 36/76/30 49/217/30 51/88/30 +f 42/72/31 50/218/31 48/89/31 +f 38/69/22 48/219/22 49/90/22 +f 53/91/32 55/94/32 54/92/32 +f 55/94/33 59/97/33 58/95/33 +f 59/97/34 57/100/34 56/98/34 +f 57/100/35 53/91/35 52/101/35 +f 55/94/36 53/91/36 57/100/36 +f 61/103/35 63/106/35 62/104/35 +f 63/106/32 67/109/32 66/107/32 +f 67/109/33 65/112/33 64/110/33 +f 65/112/34 61/103/34 60/113/34 +f 63/106/36 61/103/36 65/112/36 +f 69/115/36 68/220/36 71/80/36 +f 44/117/22 68/221/22 69/118/22 +f 47/84/25 71/222/25 68/119/25 +f 45/120/23 69/223/23 70/121/23 +f 73/122/22 75/224/22 74/123/22 +f 77/125/25 90/160/25 91/126/25 +f 79/128/24 77/125/24 76/127/24 +f 73/130/25 89/159/25 90/131/25 +f 78/133/29 76/154/29 72/134/29 +f 75/136/36 73/130/36 77/132/36 +f 81/138/22 83/168/22 82/139/22 +f 86/141/23 98/174/23 99/142/23 +f 87/143/24 85/225/24 84/144/24 +f 88/145/37 92/226/37 93/146/37 +f 86/148/29 84/227/29 80/149/29 +f 83/151/36 81/228/36 85/152/36 +f 72/124/25 88/145/25 89/147/25 +f 76/154/25 91/162/25 88/155/25 +f 94/156/25 93/229/25 92/157/25 +f 89/159/38 93/229/38 94/156/38 +f 90/160/39 94/230/39 95/161/39 +f 91/162/40 95/231/40 92/163/40 +f 99/164/41 103/232/41 100/165/41 +f 82/150/23 97/176/23 98/167/23 +f 87/153/23 99/164/23 96/166/23 +f 83/168/23 96/172/23 97/169/23 +f 100/165/23 103/232/23 102/170/23 +f 96/172/42 100/233/42 101/173/42 +f 98/174/43 102/234/43 103/175/43 +f 97/176/44 101/235/44 102/177/44 +f 107/178/23 111/181/23 110/179/23 +f 111/181/24 109/183/24 108/182/24 +f 109/183/25 105/236/25 104/184/25 +f 110/179/29 108/182/29 104/185/29 +f 107/187/36 105/237/36 109/183/36 +f 119/188/22 116/192/22 121/189/22 +f 118/191/30 115/238/30 116/192/30 +f 114/193/45 118/239/45 119/194/45 +f 122/196/46 124/197/46 123/190/46 +f 124/197/31 126/201/31 125/198/31 +f 122/196/24 115/240/24 118/199/24 +f 125/198/22 113/195/22 119/194/22 +f 118/200/24 114/241/24 126/201/24 +f 131/202/24 129/206/24 132/203/24 +f 130/205/31 128/242/31 129/206/31 +f 127/207/46 130/243/46 131/208/46 +f 132/203/45 133/212/45 135/210/45 +f 135/210/30 137/215/30 136/211/30 +f 133/212/22 128/244/22 130/213/22 +f 136/211/24 112/209/24 131/208/24 +f 130/214/22 127/245/22 137/215/22 +l 117 120 o Cube v 0.045753 0.237741 0.312500 v 0.045753 0.737741 0.312500 @@ -570,126 +744,126 @@ vn 0.0000 -0.9848 -0.1736 vn 0.0000 -0.1736 0.9848 vn 0.0000 0.1736 -0.9848 s off -f 104//26 105//26 103//26 -f 106//27 109//27 105//27 -f 110//28 107//28 109//28 -f 108//29 103//29 107//29 -f 109//30 103//30 105//30 -f 106//31 108//31 110//31 -f 112//32 113//32 111//32 -f 113//27 118//27 117//27 -f 118//33 115//33 117//33 -f 116//29 111//29 115//29 -f 117//34 111//34 113//34 -f 114//35 116//35 118//35 -f 120//36 121//36 119//36 -f 122//27 125//27 121//27 -f 126//37 123//37 125//37 -f 123//29 120//29 119//29 -f 125//38 119//38 121//38 -f 122//39 124//39 126//39 -f 128//26 129//26 127//26 -f 130//27 133//27 129//27 -f 134//28 131//28 133//28 -f 132//29 127//29 131//29 -f 133//30 127//30 129//30 -f 130//31 132//31 134//31 -f 137//30 136//30 135//30 -f 141//31 139//31 140//31 -f 137//27 142//27 138//27 -f 136//29 140//29 135//29 -f 138//28 141//28 136//28 -f 135//26 139//26 137//26 -f 145//30 144//30 143//30 -f 149//31 147//31 148//31 -f 146//28 149//28 144//28 -f 143//26 147//26 145//26 -f 145//27 150//27 146//27 -f 144//29 148//29 143//29 -f 152//40 153//40 151//40 -f 154//41 157//41 153//41 -f 157//42 156//42 155//42 -f 156//43 151//43 155//43 -f 153//44 155//44 151//44 -f 154//45 156//45 158//45 -f 160//40 161//40 159//40 -f 162//27 165//27 161//27 -f 166//42 163//42 165//42 -f 163//29 160//29 159//29 -f 165//46 159//46 161//46 -f 162//47 164//47 166//47 -f 168//28 169//28 167//28 -f 170//48 173//48 169//48 -f 174//26 171//26 173//26 -f 172//49 167//49 171//49 -f 173//50 167//50 169//50 -f 170//51 172//51 174//51 -f 176//28 177//28 175//28 -f 178//52 181//52 177//52 -f 181//26 180//26 179//26 -f 180//53 175//53 179//53 -f 181//54 175//54 177//54 -f 178//55 180//55 182//55 -f 104//26 106//26 105//26 -f 106//27 110//27 109//27 -f 110//28 108//28 107//28 -f 108//29 104//29 103//29 -f 109//30 107//30 103//30 -f 106//31 104//31 108//31 -f 112//32 114//32 113//32 -f 113//27 114//27 118//27 -f 118//33 116//33 115//33 -f 116//29 112//29 111//29 -f 117//34 115//34 111//34 -f 114//35 112//35 116//35 -f 120//36 122//36 121//36 -f 122//27 126//27 125//27 -f 126//37 124//37 123//37 -f 123//29 124//29 120//29 -f 125//38 123//38 119//38 -f 122//39 120//39 124//39 -f 128//26 130//26 129//26 -f 130//27 134//27 133//27 -f 134//28 132//28 131//28 -f 132//29 128//29 127//29 -f 133//30 131//30 127//30 -f 130//31 128//31 132//31 -f 137//30 138//30 136//30 -f 141//31 142//31 139//31 -f 137//27 139//27 142//27 -f 136//29 141//29 140//29 -f 138//28 142//28 141//28 -f 135//26 140//26 139//26 -f 145//30 146//30 144//30 -f 149//31 150//31 147//31 -f 146//28 150//28 149//28 -f 143//26 148//26 147//26 -f 145//27 147//27 150//27 -f 144//29 149//29 148//29 -f 152//40 154//40 153//40 -f 154//41 158//41 157//41 -f 157//42 158//42 156//42 -f 156//43 152//43 151//43 -f 153//44 157//44 155//44 -f 154//45 152//45 156//45 -f 160//40 162//40 161//40 -f 162//27 166//27 165//27 -f 166//42 164//42 163//42 -f 163//29 164//29 160//29 -f 165//46 163//46 159//46 -f 162//47 160//47 164//47 -f 168//28 170//28 169//28 -f 170//48 174//48 173//48 -f 174//26 172//26 171//26 -f 172//49 168//49 167//49 -f 173//50 171//50 167//50 -f 170//51 168//51 172//51 -f 176//28 178//28 177//28 -f 178//52 182//52 181//52 -f 181//26 182//26 180//26 -f 180//53 176//53 175//53 -f 181//54 179//54 175//54 -f 178//55 176//55 180//55 +f 139//47 140//47 138//47 +f 141//48 144//48 140//48 +f 145//49 142//49 144//49 +f 143//50 138//50 142//50 +f 144//51 138//51 140//51 +f 141//52 143//52 145//52 +f 147//53 148//53 146//53 +f 148//48 153//48 152//48 +f 153//54 150//54 152//54 +f 151//50 146//50 150//50 +f 152//55 146//55 148//55 +f 149//56 151//56 153//56 +f 155//57 156//57 154//57 +f 157//48 160//48 156//48 +f 161//58 158//58 160//58 +f 158//50 155//50 154//50 +f 160//59 154//59 156//59 +f 157//60 159//60 161//60 +f 163//47 164//47 162//47 +f 165//48 168//48 164//48 +f 169//49 166//49 168//49 +f 167//50 162//50 166//50 +f 168//51 162//51 164//51 +f 165//52 167//52 169//52 +f 172//51 171//51 170//51 +f 176//52 174//52 175//52 +f 172//48 177//48 173//48 +f 171//50 175//50 170//50 +f 173//49 176//49 171//49 +f 170//47 174//47 172//47 +f 180//51 179//51 178//51 +f 184//52 182//52 183//52 +f 181//49 184//49 179//49 +f 178//47 182//47 180//47 +f 180//48 185//48 181//48 +f 179//50 183//50 178//50 +f 187//61 188//61 186//61 +f 189//62 192//62 188//62 +f 192//63 191//63 190//63 +f 191//64 186//64 190//64 +f 188//65 190//65 186//65 +f 189//66 191//66 193//66 +f 195//61 196//61 194//61 +f 197//48 200//48 196//48 +f 201//63 198//63 200//63 +f 198//50 195//50 194//50 +f 200//67 194//67 196//67 +f 197//68 199//68 201//68 +f 203//49 204//49 202//49 +f 205//69 208//69 204//69 +f 209//47 206//47 208//47 +f 207//70 202//70 206//70 +f 208//71 202//71 204//71 +f 205//72 207//72 209//72 +f 211//49 212//49 210//49 +f 213//73 216//73 212//73 +f 216//47 215//47 214//47 +f 215//74 210//74 214//74 +f 216//75 210//75 212//75 +f 213//76 215//76 217//76 +f 139//47 141//47 140//47 +f 141//48 145//48 144//48 +f 145//49 143//49 142//49 +f 143//50 139//50 138//50 +f 144//51 142//51 138//51 +f 141//52 139//52 143//52 +f 147//53 149//53 148//53 +f 148//48 149//48 153//48 +f 153//54 151//54 150//54 +f 151//50 147//50 146//50 +f 152//55 150//55 146//55 +f 149//56 147//56 151//56 +f 155//57 157//57 156//57 +f 157//48 161//48 160//48 +f 161//58 159//58 158//58 +f 158//50 159//50 155//50 +f 160//59 158//59 154//59 +f 157//60 155//60 159//60 +f 163//47 165//47 164//47 +f 165//48 169//48 168//48 +f 169//49 167//49 166//49 +f 167//50 163//50 162//50 +f 168//51 166//51 162//51 +f 165//52 163//52 167//52 +f 172//51 173//51 171//51 +f 176//52 177//52 174//52 +f 172//48 174//48 177//48 +f 171//50 176//50 175//50 +f 173//49 177//49 176//49 +f 170//47 175//47 174//47 +f 180//51 181//51 179//51 +f 184//52 185//52 182//52 +f 181//49 185//49 184//49 +f 178//47 183//47 182//47 +f 180//48 182//48 185//48 +f 179//50 184//50 183//50 +f 187//61 189//61 188//61 +f 189//62 193//62 192//62 +f 192//63 193//63 191//63 +f 191//64 187//64 186//64 +f 188//65 192//65 190//65 +f 189//66 187//66 191//66 +f 195//61 197//61 196//61 +f 197//48 201//48 200//48 +f 201//63 199//63 198//63 +f 198//50 199//50 195//50 +f 200//67 198//67 194//67 +f 197//68 195//68 199//68 +f 203//49 205//49 204//49 +f 205//69 209//69 208//69 +f 209//47 207//47 206//47 +f 207//70 203//70 202//70 +f 208//71 206//71 202//71 +f 205//72 203//72 207//72 +f 211//49 213//49 212//49 +f 213//73 217//73 216//73 +f 216//47 217//47 215//47 +f 215//74 211//74 210//74 +f 216//75 214//75 210//75 +f 213//76 211//76 215//76 o FumoHead v -0.250000 0.750000 -0.250000 v -0.250000 0.750000 0.250000 @@ -840,74 +1014,74 @@ vn 0.7071 0.0000 0.7071 vn 0.8944 0.0000 0.4472 vn 0.8944 0.0000 -0.4472 s off -f 183/179/56 185/180/56 184/181/56 -f 189/182/57 187/183/57 188/184/57 -f 183/185/58 190/186/58 186/187/58 -f 185/188/59 188/189/59 184/190/59 -f 186/187/60 189/182/60 185/188/60 -f 184/191/61 187/192/61 183/185/61 -f 191/193/56 193/194/56 192/195/56 -f 197/196/57 195/197/57 196/198/57 -f 191/199/58 198/200/58 194/201/58 -f 193/202/59 196/203/59 192/204/59 -f 194/201/60 197/196/60 193/202/60 -f 192/205/61 195/206/61 191/199/61 -f 203/207/56 202/208/56 199/209/56 -f 206/210/56 200/211/56 201/212/56 -f 208/213/56 201/214/56 202/215/56 -f 210/216/56 199/217/56 200/218/56 -f 200/218/56 205/219/56 210/216/56 -f 201/212/56 207/220/56 206/210/56 -f 202/215/56 204/221/56 208/213/56 -f 199/209/56 209/222/56 203/207/56 -f 213/223/57 216/224/57 214/225/57 -f 211/226/57 218/227/57 212/228/57 -f 212/229/57 220/230/57 213/231/57 -f 214/232/57 222/233/57 211/234/57 -f 211/234/57 222/233/57 217/235/57 -f 212/228/57 218/227/57 219/236/57 -f 213/231/57 220/230/57 215/237/57 -f 214/225/57 216/224/57 221/238/57 -f 206/210/59 217/239/59 205/240/59 -f 203/207/58 215/241/58 204/242/58 -f 204/243/62 220/230/62 208/213/62 -f 209/244/63 216/224/63 203/207/63 -f 205/245/64 222/233/64 210/216/64 -f 210/216/61 221/246/61 209/247/61 -f 208/213/60 219/248/60 207/249/60 -f 207/250/65 218/227/65 206/210/65 -f 228/251/66 230/252/66 227/253/66 -f 224/254/67 226/255/67 223/256/67 -f 183/179/56 186/257/56 185/180/56 -f 189/182/57 190/186/57 187/183/57 -f 183/185/58 187/192/58 190/186/58 -f 185/188/59 189/182/59 188/189/59 -f 186/187/60 190/186/60 189/182/60 -f 184/191/61 188/258/61 187/192/61 -f 191/193/56 194/259/56 193/194/56 -f 197/196/57 198/200/57 195/197/57 -f 191/199/58 195/206/58 198/200/58 -f 193/202/59 197/196/59 196/203/59 -f 194/201/60 198/200/60 197/196/60 -f 192/205/61 196/260/61 195/206/61 -f 203/207/56 204/242/56 202/208/56 -f 206/210/56 205/240/56 200/211/56 -f 208/213/56 207/249/56 201/214/56 -f 210/216/56 209/247/56 199/217/56 -f 213/223/57 215/241/57 216/224/57 -f 211/226/57 217/239/57 218/227/57 -f 212/229/57 219/248/57 220/230/57 -f 214/232/57 221/246/57 222/233/57 -f 206/210/59 218/227/59 217/239/59 -f 203/207/58 216/224/58 215/241/58 -f 204/243/62 215/261/62 220/230/62 -f 209/244/63 221/262/63 216/224/63 -f 205/245/64 217/263/64 222/233/64 -f 210/216/61 222/233/61 221/246/61 -f 208/213/60 220/230/60 219/248/60 -f 207/250/65 219/264/65 218/227/65 -f 228/251/66 229/265/66 230/252/66 -f 224/254/67 225/266/67 226/255/67 +f 218/246/77 220/247/77 219/248/77 +f 224/249/78 222/250/78 223/251/78 +f 218/252/79 225/253/79 221/254/79 +f 220/255/80 223/256/80 219/257/80 +f 221/254/81 224/249/81 220/255/81 +f 219/258/82 222/259/82 218/252/82 +f 226/260/77 228/261/77 227/262/77 +f 232/263/78 230/264/78 231/265/78 +f 226/266/79 233/267/79 229/268/79 +f 228/269/80 231/270/80 227/271/80 +f 229/268/81 232/263/81 228/269/81 +f 227/272/82 230/273/82 226/266/82 +f 238/274/77 237/275/77 234/276/77 +f 241/277/77 235/278/77 236/279/77 +f 243/280/77 236/281/77 237/282/77 +f 245/283/77 234/284/77 235/285/77 +f 235/285/77 240/286/77 245/283/77 +f 236/279/77 242/287/77 241/277/77 +f 237/282/77 239/288/77 243/280/77 +f 234/276/77 244/289/77 238/274/77 +f 248/290/78 251/291/78 249/292/78 +f 246/293/78 253/294/78 247/295/78 +f 247/296/78 255/297/78 248/298/78 +f 249/299/78 257/300/78 246/301/78 +f 246/301/78 257/300/78 252/302/78 +f 247/295/78 253/294/78 254/303/78 +f 248/298/78 255/297/78 250/304/78 +f 249/292/78 251/291/78 256/305/78 +f 241/277/80 252/306/80 240/307/80 +f 238/274/79 250/308/79 239/309/79 +f 239/310/83 255/297/83 243/280/83 +f 244/311/84 251/291/84 238/274/84 +f 240/312/85 257/300/85 245/283/85 +f 245/283/82 256/313/82 244/314/82 +f 243/280/81 254/315/81 242/316/81 +f 242/317/86 253/294/86 241/277/86 +f 263/318/87 265/319/87 262/320/87 +f 259/321/88 261/322/88 258/323/88 +f 218/246/77 221/324/77 220/247/77 +f 224/249/78 225/253/78 222/250/78 +f 218/252/79 222/259/79 225/253/79 +f 220/255/80 224/249/80 223/256/80 +f 221/254/81 225/253/81 224/249/81 +f 219/258/82 223/325/82 222/259/82 +f 226/260/77 229/326/77 228/261/77 +f 232/263/78 233/267/78 230/264/78 +f 226/266/79 230/273/79 233/267/79 +f 228/269/80 232/263/80 231/270/80 +f 229/268/81 233/267/81 232/263/81 +f 227/272/82 231/327/82 230/273/82 +f 238/274/77 239/309/77 237/275/77 +f 241/277/77 240/307/77 235/278/77 +f 243/280/77 242/316/77 236/281/77 +f 245/283/77 244/314/77 234/284/77 +f 248/290/78 250/308/78 251/291/78 +f 246/293/78 252/306/78 253/294/78 +f 247/296/78 254/315/78 255/297/78 +f 249/299/78 256/313/78 257/300/78 +f 241/277/80 253/294/80 252/306/80 +f 238/274/79 251/291/79 250/308/79 +f 239/310/83 250/328/83 255/297/83 +f 244/311/84 256/329/84 251/291/84 +f 240/312/85 252/330/85 257/300/85 +f 245/283/82 257/300/82 256/313/82 +f 243/280/81 255/297/81 254/315/81 +f 242/317/86 254/331/86 253/294/86 +f 263/318/87 264/332/87 265/319/87 +f 259/321/88 260/333/88 261/322/88 o Fumo v -0.390165 0.375000 -0.213388 v -0.213388 0.375000 -0.390165 @@ -1244,122 +1418,122 @@ vn 0.0000 0.9659 -0.2588 vn 0.0000 -0.9659 0.2588 vn 0.0000 -0.2588 -0.9659 s off -f 336/267/68 342/268/68 338/269/68 -f 336/270/69 337/271/69 335/272/69 -f 259/273/70 241/274/70 242/275/70 -f 333/276/71 331/277/71 332/278/71 -f 328/279/72 333/280/72 327/281/72 -f 240/282/73 241/283/73 239/284/73 -f 260/285/74 239/286/74 241/274/74 -f 236/287/75 237/288/75 238/289/75 -f 246/290/76 243/291/76 245/292/76 -f 262/293/77 242/275/77 240/282/77 -f 261/294/78 240/282/78 239/295/78 -f 249/296/74 248/297/74 247/298/74 -f 253/299/77 251/300/77 252/301/77 -f 250/302/68 253/299/68 248/303/68 -f 247/304/79 251/305/79 249/306/79 -f 249/306/80 254/307/80 250/302/80 -f 248/303/81 252/308/81 247/309/81 -f 255/310/82 258/311/82 256/312/82 -f 259/313/83 261/314/83 260/315/83 -f 271/316/84 274/317/84 272/318/84 -f 268/319/85 269/320/85 270/321/85 -f 328/279/77 331/322/77 334/323/77 -f 329/324/74 333/325/74 332/326/74 -f 275/327/86 278/328/86 276/329/86 -f 279/330/87 282/331/87 280/332/87 -f 284/333/88 285/334/88 286/335/88 -f 289/336/89 288/337/89 287/338/89 -f 231/339/90 234/340/90 233/341/90 -f 313/342/91 312/343/91 314/344/91 -f 298/345/68 288/346/68 290/347/68 -f 295/348/92 290/347/92 289/336/92 -f 297/349/93 287/350/93 288/346/93 -f 297/351/94 295/352/94 296/353/94 -f 263/354/95 266/355/95 265/356/95 -f 315/357/96 318/358/96 317/359/96 -f 294/360/97 291/361/97 292/362/97 -f 296/363/79 289/336/79 287/364/79 -f 299/365/98 302/366/98 301/367/98 -f 305/368/89 304/369/89 303/370/89 -f 306/371/68 309/372/68 304/373/68 -f 307/374/92 306/371/92 305/368/92 -f 309/372/93 303/375/93 304/373/93 -f 309/376/94 307/377/94 308/378/94 -f 308/379/79 305/368/79 303/380/79 -f 329/381/99 328/279/99 327/382/99 -f 329/324/100 331/322/100 330/383/100 -f 326/384/101 323/385/101 324/386/101 -f 322/387/102 319/388/102 320/389/102 -f 338/269/103 339/390/103 337/271/103 -f 335/391/104 341/392/104 336/267/104 -f 339/393/105 341/394/105 340/395/105 -f 335/396/79 339/390/79 340/397/79 -f 344/398/69 345/399/69 343/400/69 -f 346/401/68 349/402/68 350/403/68 -f 346/401/103 347/404/103 345/399/103 -f 343/405/104 349/402/104 344/406/104 -f 347/407/105 349/408/105 348/409/105 -f 345/399/79 348/410/79 343/411/79 -f 336/267/68 341/392/68 342/268/68 -f 336/270/69 338/269/69 337/271/69 -f 259/273/70 260/285/70 241/274/70 -f 333/276/71 334/412/71 331/277/71 -f 328/279/72 334/323/72 333/280/72 -f 240/282/73 242/275/73 241/283/73 -f 260/285/74 261/413/74 239/286/74 -f 236/287/75 235/414/75 237/288/75 -f 246/290/76 244/415/76 243/291/76 -f 262/293/77 259/273/77 242/275/77 -f 261/294/78 262/293/78 240/282/78 -f 249/296/74 250/416/74 248/297/74 -f 253/299/77 254/307/77 251/300/77 -f 250/302/68 254/307/68 253/299/68 -f 247/304/79 252/417/79 251/305/79 -f 249/306/80 251/305/80 254/307/80 -f 248/303/81 253/299/81 252/308/81 -f 255/310/82 257/418/82 258/311/82 -f 259/313/83 262/419/83 261/314/83 -f 271/316/84 273/420/84 274/317/84 -f 268/319/85 267/421/85 269/320/85 -f 328/279/77 330/383/77 331/322/77 -f 329/324/74 327/422/74 333/325/74 -f 275/327/86 277/423/86 278/328/86 -f 279/330/87 281/424/87 282/331/87 -f 284/333/88 283/425/88 285/334/88 -f 289/336/89 290/347/89 288/337/89 -f 231/339/90 232/426/90 234/340/90 -f 313/342/91 311/427/91 312/343/91 -f 298/345/68 297/349/68 288/346/68 -f 295/348/92 298/345/92 290/347/92 -f 297/349/93 296/428/93 287/350/93 -f 297/351/94 298/429/94 295/352/94 -f 263/354/95 264/430/95 266/355/95 -f 315/357/96 316/431/96 318/358/96 -f 294/360/97 293/432/97 291/361/97 -f 296/363/79 295/348/79 289/336/79 -f 299/365/98 300/433/98 302/366/98 -f 305/368/89 306/371/89 304/369/89 -f 306/371/68 310/434/68 309/372/68 -f 307/374/92 310/434/92 306/371/92 -f 309/372/93 308/435/93 303/375/93 -f 309/376/94 310/436/94 307/377/94 -f 308/379/79 307/374/79 305/368/79 -f 329/381/99 330/383/99 328/279/99 -f 329/324/100 332/326/100 331/322/100 -f 326/384/101 325/437/101 323/385/101 -f 322/387/102 321/438/102 319/388/102 -f 338/269/103 342/268/103 339/390/103 -f 335/391/104 340/439/104 341/392/104 -f 339/393/105 342/440/105 341/394/105 -f 335/396/79 337/271/79 339/390/79 -f 344/398/69 346/401/69 345/399/69 -f 346/401/68 344/406/68 349/402/68 -f 346/401/103 350/403/103 347/404/103 -f 343/405/104 348/441/104 349/402/104 -f 347/407/105 350/442/105 349/408/105 -f 345/399/79 347/404/79 348/410/79 +f 371/334/89 377/335/89 373/336/89 +f 371/337/90 372/338/90 370/339/90 +f 294/340/91 276/341/91 277/342/91 +f 368/343/92 366/344/92 367/345/92 +f 363/346/93 368/347/93 362/348/93 +f 275/349/94 276/350/94 274/351/94 +f 295/352/95 274/353/95 276/341/95 +f 271/354/96 272/355/96 273/356/96 +f 281/357/97 278/358/97 280/359/97 +f 297/360/98 277/342/98 275/349/98 +f 296/361/99 275/349/99 274/362/99 +f 284/363/95 283/364/95 282/365/95 +f 288/366/98 286/367/98 287/368/98 +f 285/369/89 288/366/89 283/370/89 +f 282/371/100 286/372/100 284/373/100 +f 284/373/101 289/374/101 285/369/101 +f 283/370/102 287/375/102 282/376/102 +f 290/377/103 293/378/103 291/379/103 +f 294/380/104 296/381/104 295/382/104 +f 306/383/105 309/384/105 307/385/105 +f 303/386/106 304/387/106 305/388/106 +f 363/346/98 366/389/98 369/390/98 +f 364/391/95 368/392/95 367/393/95 +f 310/394/107 313/395/107 311/396/107 +f 314/397/108 317/398/108 315/399/108 +f 319/400/109 320/401/109 321/402/109 +f 324/403/110 323/404/110 322/405/110 +f 266/406/111 269/407/111 268/408/111 +f 348/409/112 347/410/112 349/411/112 +f 333/412/89 323/413/89 325/414/89 +f 330/415/113 325/414/113 324/403/113 +f 332/416/114 322/417/114 323/413/114 +f 332/418/115 330/419/115 331/420/115 +f 298/421/116 301/422/116 300/423/116 +f 350/424/117 353/425/117 352/426/117 +f 329/427/118 326/428/118 327/429/118 +f 331/430/100 324/403/100 322/431/100 +f 334/432/119 337/433/119 336/434/119 +f 340/435/110 339/436/110 338/437/110 +f 341/438/89 344/439/89 339/440/89 +f 342/441/113 341/438/113 340/435/113 +f 344/439/114 338/442/114 339/440/114 +f 344/443/115 342/444/115 343/445/115 +f 343/446/100 340/435/100 338/447/100 +f 364/448/120 363/346/120 362/449/120 +f 364/391/121 366/389/121 365/450/121 +f 361/451/122 358/452/122 359/453/122 +f 357/454/123 354/455/123 355/456/123 +f 373/336/124 374/457/124 372/338/124 +f 370/458/125 376/459/125 371/334/125 +f 374/460/126 376/461/126 375/462/126 +f 370/463/100 374/457/100 375/464/100 +f 379/465/90 380/466/90 378/467/90 +f 381/468/89 384/469/89 385/470/89 +f 381/468/124 382/471/124 380/466/124 +f 378/472/125 384/469/125 379/473/125 +f 382/474/126 384/475/126 383/476/126 +f 380/466/100 383/477/100 378/478/100 +f 371/334/89 376/459/89 377/335/89 +f 371/337/90 373/336/90 372/338/90 +f 294/340/91 295/352/91 276/341/91 +f 368/343/92 369/479/92 366/344/92 +f 363/346/93 369/390/93 368/347/93 +f 275/349/94 277/342/94 276/350/94 +f 295/352/95 296/480/95 274/353/95 +f 271/354/96 270/481/96 272/355/96 +f 281/357/97 279/482/97 278/358/97 +f 297/360/98 294/340/98 277/342/98 +f 296/361/99 297/360/99 275/349/99 +f 284/363/95 285/483/95 283/364/95 +f 288/366/98 289/374/98 286/367/98 +f 285/369/89 289/374/89 288/366/89 +f 282/371/100 287/484/100 286/372/100 +f 284/373/101 286/372/101 289/374/101 +f 283/370/102 288/366/102 287/375/102 +f 290/377/103 292/485/103 293/378/103 +f 294/380/104 297/486/104 296/381/104 +f 306/383/105 308/487/105 309/384/105 +f 303/386/106 302/488/106 304/387/106 +f 363/346/98 365/450/98 366/389/98 +f 364/391/95 362/489/95 368/392/95 +f 310/394/107 312/490/107 313/395/107 +f 314/397/108 316/491/108 317/398/108 +f 319/400/109 318/492/109 320/401/109 +f 324/403/110 325/414/110 323/404/110 +f 266/406/111 267/493/111 269/407/111 +f 348/409/112 346/494/112 347/410/112 +f 333/412/89 332/416/89 323/413/89 +f 330/415/113 333/412/113 325/414/113 +f 332/416/114 331/495/114 322/417/114 +f 332/418/115 333/496/115 330/419/115 +f 298/421/116 299/497/116 301/422/116 +f 350/424/117 351/498/117 353/425/117 +f 329/427/118 328/499/118 326/428/118 +f 331/430/100 330/415/100 324/403/100 +f 334/432/119 335/500/119 337/433/119 +f 340/435/110 341/438/110 339/436/110 +f 341/438/89 345/501/89 344/439/89 +f 342/441/113 345/501/113 341/438/113 +f 344/439/114 343/502/114 338/442/114 +f 344/443/115 345/503/115 342/444/115 +f 343/446/100 342/441/100 340/435/100 +f 364/448/120 365/450/120 363/346/120 +f 364/391/121 367/393/121 366/389/121 +f 361/451/122 360/504/122 358/452/122 +f 357/454/123 356/505/123 354/455/123 +f 373/336/124 377/335/124 374/457/124 +f 370/458/125 375/506/125 376/459/125 +f 374/460/126 377/507/126 376/461/126 +f 370/463/100 372/338/100 374/457/100 +f 379/465/90 381/468/90 380/466/90 +f 381/468/89 379/473/89 384/469/89 +f 381/468/124 385/470/124 382/471/124 +f 378/472/125 383/508/125 384/469/125 +f 382/474/126 385/509/126 384/475/126 +f 380/466/100 382/471/100 383/477/100 o Horn v 0.205806 2.419194 0.062500 v 0.294194 2.330806 0.062500 @@ -1380,10 +1554,10 @@ vn 0.0587 0.0587 -0.9965 vn 0.0587 0.0587 0.9965 vn -0.6459 0.7634 0.0000 s off -f 354/443/106 355/444/106 352/445/106 -f 353/446/107 355/444/107 354/447/107 -f 352/448/108 355/444/108 351/449/108 -f 353/450/109 351/451/109 355/444/109 +f 389/510/127 390/511/127 387/512/127 +f 388/513/128 390/511/128 389/514/128 +f 387/515/129 390/511/129 386/516/129 +f 388/517/130 386/518/130 390/511/130 o PelletShine v -0.000000 0.250000 -0.375000 v -0.187500 0.250000 -0.324760 @@ -1447,64 +1621,64 @@ vn 0.1862 0.6947 0.6947 vn 0.5086 0.6947 0.5086 vn 0.0000 1.0000 0.0000 s off -f 370//110 357//110 358//110 -f 377//111 364//111 365//111 -f 374//112 361//112 362//112 -f 371//113 358//113 359//113 -f 378//114 365//114 366//114 -f 375//115 362//115 363//115 -f 372//116 359//116 360//116 -f 379//117 366//117 367//117 -f 369//118 356//118 357//118 -f 376//119 363//119 364//119 -f 373//120 360//120 361//120 -f 368//121 367//121 356//121 -f 377//122 388//122 376//122 -f 377//123 390//123 389//123 -f 378//124 391//124 390//124 -f 379//125 380//125 391//125 -f 368//126 381//126 380//126 -f 369//127 382//127 381//127 -f 371//128 382//128 370//128 -f 372//129 383//129 371//129 -f 373//130 384//130 372//130 -f 374//131 385//131 373//131 -f 375//132 386//132 374//132 -f 376//133 387//133 375//133 -f 388//134 390//134 380//134 -f 370//110 369//110 357//110 -f 377//111 376//111 364//111 -f 374//112 373//112 361//112 -f 371//113 370//113 358//113 -f 378//114 377//114 365//114 -f 375//115 374//115 362//115 -f 372//116 371//116 359//116 -f 379//117 378//117 366//117 -f 369//118 368//118 356//118 -f 376//119 375//119 363//119 -f 373//120 372//120 360//120 -f 368//121 379//121 367//121 -f 377//122 389//122 388//122 -f 377//123 378//123 390//123 -f 378//124 379//124 391//124 -f 379//125 368//125 380//125 -f 368//126 369//126 381//126 -f 369//127 370//127 382//127 -f 371//128 383//128 382//128 -f 372//129 384//129 383//129 -f 373//130 385//130 384//130 -f 374//131 386//131 385//131 -f 375//132 387//132 386//132 -f 376//133 388//133 387//133 -f 380//134 381//134 384//134 -f 381//134 382//134 384//134 -f 382//134 383//134 384//134 -f 384//134 385//134 386//134 -f 386//134 387//134 388//134 -f 388//134 389//134 390//134 -f 390//134 391//134 380//134 -f 384//134 386//134 380//134 -f 386//134 388//134 380//134 +f 405//131 392//131 393//131 +f 412//132 399//132 400//132 +f 409//133 396//133 397//133 +f 406//134 393//134 394//134 +f 413//135 400//135 401//135 +f 410//136 397//136 398//136 +f 407//137 394//137 395//137 +f 414//138 401//138 402//138 +f 404//139 391//139 392//139 +f 411//140 398//140 399//140 +f 408//141 395//141 396//141 +f 403//142 402//142 391//142 +f 412//143 423//143 411//143 +f 412//144 425//144 424//144 +f 413//145 426//145 425//145 +f 414//146 415//146 426//146 +f 403//147 416//147 415//147 +f 404//148 417//148 416//148 +f 406//149 417//149 405//149 +f 407//150 418//150 406//150 +f 408//151 419//151 407//151 +f 409//152 420//152 408//152 +f 410//153 421//153 409//153 +f 411//154 422//154 410//154 +f 423//155 425//155 415//155 +f 405//131 404//131 392//131 +f 412//132 411//132 399//132 +f 409//133 408//133 396//133 +f 406//134 405//134 393//134 +f 413//135 412//135 400//135 +f 410//136 409//136 397//136 +f 407//137 406//137 394//137 +f 414//138 413//138 401//138 +f 404//139 403//139 391//139 +f 411//140 410//140 398//140 +f 408//141 407//141 395//141 +f 403//142 414//142 402//142 +f 412//143 424//143 423//143 +f 412//144 413//144 425//144 +f 413//145 414//145 426//145 +f 414//146 403//146 415//146 +f 403//147 404//147 416//147 +f 404//148 405//148 417//148 +f 406//149 418//149 417//149 +f 407//150 419//150 418//150 +f 408//151 420//151 419//151 +f 409//152 421//152 420//152 +f 410//153 422//153 421//153 +f 411//154 423//154 422//154 +f 415//155 416//155 419//155 +f 416//155 417//155 419//155 +f 417//155 418//155 419//155 +f 419//155 420//155 421//155 +f 421//155 422//155 423//155 +f 423//155 424//155 425//155 +f 425//155 426//155 415//155 +f 419//155 421//155 415//155 +f 421//155 423//155 415//155 o Pellet v 0.000000 0.250000 -0.312500 v -0.156250 0.250000 -0.270633 @@ -1630,64 +1804,64 @@ vn 0.6947 0.6947 0.1862 vn 0.6947 0.6947 -0.1862 vn 0.0000 1.0000 -0.0000 s off -f 398/452/135 409/453/135 397/454/135 -f 395/455/136 406/456/136 394/457/136 -f 402/458/137 413/459/137 401/460/137 -f 399/461/138 410/462/138 398/452/138 -f 396/463/139 407/464/139 395/465/139 -f 403/466/140 414/467/140 402/458/140 -f 393/468/141 404/469/141 392/470/141 -f 400/471/142 411/472/142 399/461/142 -f 397/454/143 408/473/143 396/463/143 -f 392/470/144 415/474/144 403/466/144 -f 394/457/145 405/475/145 393/468/145 -f 401/460/146 412/476/146 400/471/146 -f 414/467/147 427/477/147 426/478/147 -f 415/474/148 416/479/148 427/480/148 -f 405/475/149 416/481/149 404/469/149 -f 406/456/150 417/482/150 405/475/150 -f 407/483/151 418/484/151 406/456/151 -f 408/473/152 419/485/152 407/464/152 -f 409/453/153 420/486/153 408/473/153 -f 410/462/154 421/487/154 409/453/154 -f 411/472/155 422/488/155 410/462/155 -f 411/472/156 424/489/156 423/490/156 -f 412/476/157 425/491/157 424/492/157 -f 413/459/158 426/493/158 425/494/158 -f 420/495/159 424/496/159 416/497/159 -f 398/452/135 410/462/135 409/453/135 -f 395/455/136 407/483/136 406/456/136 -f 402/458/137 414/467/137 413/459/137 -f 399/461/138 411/472/138 410/462/138 -f 396/463/139 408/473/139 407/464/139 -f 403/466/140 415/474/140 414/467/140 -f 393/468/141 405/475/141 404/469/141 -f 400/471/142 412/476/142 411/472/142 -f 397/454/143 409/453/143 408/473/143 -f 392/470/144 404/469/144 415/474/144 -f 394/457/145 406/456/145 405/475/145 -f 401/460/146 413/459/146 412/476/146 -f 414/467/147 415/474/147 427/477/147 -f 415/474/148 404/469/148 416/479/148 -f 405/475/149 417/498/149 416/481/149 -f 406/456/150 418/499/150 417/482/150 -f 407/483/151 419/500/151 418/484/151 -f 408/473/152 420/501/152 419/485/152 -f 409/453/153 421/502/153 420/486/153 -f 410/462/154 422/503/154 421/487/154 -f 411/472/155 423/504/155 422/488/155 -f 411/472/156 412/476/156 424/489/156 -f 412/476/157 413/459/157 425/491/157 -f 413/459/158 414/467/158 426/493/158 -f 416/497/159 417/505/159 418/506/159 -f 418/506/159 419/507/159 420/495/159 -f 420/495/159 421/508/159 422/509/159 -f 422/509/159 423/510/159 420/495/159 -f 423/510/159 424/496/159 420/495/159 -f 424/496/159 425/511/159 426/512/159 -f 426/512/159 427/513/159 416/497/159 -f 416/497/159 418/506/159 420/495/159 -f 424/496/159 426/512/159 416/497/159 +f 433/519/156 444/520/156 432/521/156 +f 430/522/157 441/523/157 429/524/157 +f 437/525/158 448/526/158 436/527/158 +f 434/528/159 445/529/159 433/519/159 +f 431/530/160 442/531/160 430/532/160 +f 438/533/161 449/534/161 437/525/161 +f 428/535/162 439/536/162 427/537/162 +f 435/538/163 446/539/163 434/528/163 +f 432/521/164 443/540/164 431/530/164 +f 427/537/165 450/541/165 438/533/165 +f 429/524/166 440/542/166 428/535/166 +f 436/527/167 447/543/167 435/538/167 +f 449/534/168 462/544/168 461/545/168 +f 450/541/169 451/546/169 462/547/169 +f 440/542/170 451/548/170 439/536/170 +f 441/523/171 452/549/171 440/542/171 +f 442/550/172 453/551/172 441/523/172 +f 443/540/173 454/552/173 442/531/173 +f 444/520/174 455/553/174 443/540/174 +f 445/529/175 456/554/175 444/520/175 +f 446/539/176 457/555/176 445/529/176 +f 446/539/177 459/556/177 458/557/177 +f 447/543/178 460/558/178 459/559/178 +f 448/526/179 461/560/179 460/561/179 +f 455/562/180 459/563/180 451/564/180 +f 433/519/156 445/529/156 444/520/156 +f 430/522/157 442/550/157 441/523/157 +f 437/525/158 449/534/158 448/526/158 +f 434/528/159 446/539/159 445/529/159 +f 431/530/160 443/540/160 442/531/160 +f 438/533/161 450/541/161 449/534/161 +f 428/535/162 440/542/162 439/536/162 +f 435/538/163 447/543/163 446/539/163 +f 432/521/164 444/520/164 443/540/164 +f 427/537/165 439/536/165 450/541/165 +f 429/524/166 441/523/166 440/542/166 +f 436/527/167 448/526/167 447/543/167 +f 449/534/168 450/541/168 462/544/168 +f 450/541/169 439/536/169 451/546/169 +f 440/542/170 452/565/170 451/548/170 +f 441/523/171 453/566/171 452/549/171 +f 442/550/172 454/567/172 453/551/172 +f 443/540/173 455/568/173 454/552/173 +f 444/520/174 456/569/174 455/553/174 +f 445/529/175 457/570/175 456/554/175 +f 446/539/176 458/571/176 457/555/176 +f 446/539/177 447/543/177 459/556/177 +f 447/543/178 448/526/178 460/558/178 +f 448/526/179 449/534/179 461/560/179 +f 451/564/180 452/572/180 453/573/180 +f 453/573/180 454/574/180 455/562/180 +f 455/562/180 456/575/180 457/576/180 +f 457/576/180 458/577/180 455/562/180 +f 458/577/180 459/563/180 455/562/180 +f 459/563/180 460/578/180 461/579/180 +f 461/579/180 462/580/180 451/564/180 +f 451/564/180 453/573/180 455/562/180 +f 459/563/180 461/579/180 451/564/180 o Head v 0.375000 1.750000 0.375000 v -0.375000 1.750000 0.375000 @@ -1744,30 +1918,30 @@ vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 431/514/160 428/515/160 429/516/160 -f 432/517/161 434/518/161 433/519/161 -f 430/520/162 432/517/162 428/521/162 -f 428/521/163 433/522/163 429/523/163 -f 429/524/164 434/525/164 431/526/164 -f 431/526/165 435/527/165 430/520/165 -f 439/528/160 436/529/160 437/530/160 -f 440/531/161 442/532/161 441/533/161 -f 438/534/162 440/531/162 436/535/162 -f 436/535/163 441/536/163 437/537/163 -f 437/538/164 442/539/164 439/540/164 -f 439/540/165 443/541/165 438/534/165 -f 431/514/160 430/542/160 428/515/160 -f 432/517/161 435/527/161 434/518/161 -f 430/520/162 435/527/162 432/517/162 -f 428/521/163 432/517/163 433/522/163 -f 429/524/164 433/543/164 434/525/164 -f 431/526/165 434/525/165 435/527/165 -f 439/528/160 438/544/160 436/529/160 -f 440/531/161 443/541/161 442/532/161 -f 438/534/162 443/541/162 440/531/162 -f 436/535/163 440/531/163 441/536/163 -f 437/538/164 441/545/164 442/539/164 -f 439/540/165 442/539/165 443/541/165 +f 466/581/181 463/582/181 464/583/181 +f 467/584/182 469/585/182 468/586/182 +f 465/587/183 467/584/183 463/588/183 +f 463/588/184 468/589/184 464/590/184 +f 464/591/185 469/592/185 466/593/185 +f 466/593/186 470/594/186 465/587/186 +f 474/595/181 471/596/181 472/597/181 +f 475/598/182 477/599/182 476/600/182 +f 473/601/183 475/598/183 471/602/183 +f 471/602/184 476/603/184 472/604/184 +f 472/605/185 477/606/185 474/607/185 +f 474/607/186 478/608/186 473/601/186 +f 466/581/181 465/609/181 463/582/181 +f 467/584/182 470/594/182 469/585/182 +f 465/587/183 470/594/183 467/584/183 +f 463/588/184 467/584/184 468/589/184 +f 464/591/185 468/610/185 469/592/185 +f 466/593/186 469/592/186 470/594/186 +f 474/595/181 473/611/181 471/596/181 +f 475/598/182 478/608/182 477/599/182 +f 473/601/183 478/608/183 475/598/183 +f 471/602/184 475/598/184 476/603/184 +f 472/605/185 476/612/185 477/606/185 +f 474/607/186 477/606/186 478/608/186 o LA v -0.125000 1.000000 -0.250000 v 0.125000 1.000000 -0.250000 @@ -1824,30 +1998,30 @@ vn 0.0000 1.0000 0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 s off -f 450/546/166 445/547/166 449/548/166 -f 449/548/167 451/549/167 450/546/167 -f 448/550/168 446/551/168 451/549/168 -f 450/546/169 446/552/169 447/553/169 -f 449/554/170 444/555/170 448/556/170 -f 446/557/171 445/547/171 447/553/171 -f 457/558/170 452/559/170 456/560/170 -f 459/561/166 453/562/166 457/563/166 -f 458/564/169 455/565/169 459/561/169 -f 456/566/168 454/567/168 458/568/168 -f 454/569/171 453/562/171 455/565/171 -f 457/563/167 458/568/167 459/561/167 -f 450/546/166 447/553/166 445/547/166 -f 449/548/167 448/550/167 451/549/167 -f 448/550/168 444/570/168 446/551/168 -f 450/546/169 451/571/169 446/552/169 -f 449/554/170 445/572/170 444/555/170 -f 446/557/171 444/573/171 445/547/171 -f 457/558/170 453/574/170 452/559/170 -f 459/561/166 455/565/166 453/562/166 -f 458/564/169 454/575/169 455/565/169 -f 456/566/168 452/576/168 454/567/168 -f 454/569/171 452/577/171 453/562/171 -f 457/563/167 456/566/167 458/568/167 +f 485/613/187 480/614/187 484/615/187 +f 484/615/188 486/616/188 485/613/188 +f 483/617/189 481/618/189 486/616/189 +f 485/613/190 481/619/190 482/620/190 +f 484/621/191 479/622/191 483/623/191 +f 481/624/192 480/614/192 482/620/192 +f 492/625/191 487/626/191 491/627/191 +f 494/628/187 488/629/187 492/630/187 +f 493/631/190 490/632/190 494/628/190 +f 491/633/189 489/634/189 493/635/189 +f 489/636/192 488/629/192 490/632/192 +f 492/630/188 493/635/188 494/628/188 +f 485/613/187 482/620/187 480/614/187 +f 484/615/188 483/617/188 486/616/188 +f 483/617/189 479/637/189 481/618/189 +f 485/613/190 486/638/190 481/619/190 +f 484/621/191 480/639/191 479/622/191 +f 481/624/192 479/640/192 480/614/192 +f 492/625/191 488/641/191 487/626/191 +f 494/628/187 490/632/187 488/629/187 +f 493/631/190 489/642/190 490/632/190 +f 491/633/189 487/643/189 489/634/189 +f 489/636/192 487/644/192 488/629/192 +f 492/630/188 491/633/188 493/635/188 o RA v -0.125000 1.750000 0.250000 v 0.125000 1.750000 0.250000 @@ -1904,30 +2078,30 @@ vn 0.0000 -1.0000 0.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 1.0000 0.0000 s off -f 462/578/172 460/579/172 461/580/172 -f 465/581/173 466/582/173 464/583/173 -f 463/584/174 465/585/174 460/579/174 -f 462/586/175 467/587/175 463/588/175 -f 461/580/176 466/582/176 462/578/176 -f 461/580/177 465/589/177 464/583/177 -f 470/590/172 469/591/172 468/592/172 -f 473/593/173 474/594/173 472/595/173 -f 471/596/174 473/597/174 469/591/174 -f 469/598/177 472/595/177 468/592/177 -f 468/592/176 474/594/176 470/590/176 -f 470/599/175 475/600/175 471/601/175 -f 462/578/172 463/584/172 460/579/172 -f 465/581/173 467/602/173 466/582/173 -f 463/584/174 467/603/174 465/585/174 -f 462/586/175 466/604/175 467/587/175 -f 461/580/176 464/583/176 466/582/176 -f 461/580/177 460/605/177 465/589/177 -f 470/590/172 471/596/172 469/591/172 -f 473/593/173 475/606/173 474/594/173 -f 471/596/174 475/607/174 473/597/174 -f 469/598/177 473/608/177 472/595/177 -f 468/592/176 472/595/176 474/594/176 -f 470/599/175 474/609/175 475/600/175 +f 497/645/193 495/646/193 496/647/193 +f 500/648/194 501/649/194 499/650/194 +f 498/651/195 500/652/195 495/646/195 +f 497/653/196 502/654/196 498/655/196 +f 496/647/197 501/649/197 497/645/197 +f 496/647/198 500/656/198 499/650/198 +f 505/657/193 504/658/193 503/659/193 +f 508/660/194 509/661/194 507/662/194 +f 506/663/195 508/664/195 504/658/195 +f 504/665/198 507/662/198 503/659/198 +f 503/659/197 509/661/197 505/657/197 +f 505/666/196 510/667/196 506/668/196 +f 497/645/193 498/651/193 495/646/193 +f 500/648/194 502/669/194 501/649/194 +f 498/651/195 502/670/195 500/652/195 +f 497/653/196 501/671/196 502/654/196 +f 496/647/197 499/650/197 501/649/197 +f 496/647/198 495/672/198 500/656/198 +f 505/657/193 506/663/193 504/658/193 +f 508/660/194 510/673/194 509/661/194 +f 506/663/195 510/674/195 508/664/195 +f 504/665/198 508/675/198 507/662/198 +f 503/659/197 507/662/197 509/661/197 +f 505/666/196 509/676/196 510/667/196 o LL v -0.125000 1.000000 -0.250000 v -0.125000 0.250000 -0.250000 @@ -1984,30 +2158,30 @@ vn 1.0000 0.0000 -0.0000 vn 0.0000 1.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 477/610/178 483/611/178 481/612/178 -f 480/613/179 477/614/179 481/615/179 -f 482/616/180 481/617/180 483/618/180 -f 478/619/181 483/618/181 479/620/181 -f 480/621/182 478/619/182 476/622/182 -f 476/623/183 479/620/183 477/614/183 -f 488/624/182 486/625/182 484/626/182 -f 485/627/178 491/628/178 489/629/178 -f 486/625/181 491/630/181 487/631/181 -f 484/632/183 487/631/183 485/633/183 -f 488/634/179 485/633/179 489/635/179 -f 490/636/180 489/637/180 491/630/180 -f 477/610/178 479/638/178 483/611/178 -f 480/613/179 476/623/179 477/614/179 -f 482/616/180 480/639/180 481/617/180 -f 478/619/181 482/616/181 483/618/181 -f 480/621/182 482/616/182 478/619/182 -f 476/623/183 478/619/183 479/620/183 -f 488/624/182 490/636/182 486/625/182 -f 485/627/178 487/640/178 491/628/178 -f 486/625/181 490/636/181 491/630/181 -f 484/632/183 486/625/183 487/631/183 -f 488/634/179 484/632/179 485/633/179 -f 490/636/180 488/641/180 489/637/180 +f 512/677/199 518/678/199 516/679/199 +f 515/680/200 512/681/200 516/682/200 +f 517/683/201 516/684/201 518/685/201 +f 513/686/202 518/685/202 514/687/202 +f 515/688/203 513/686/203 511/689/203 +f 511/690/204 514/687/204 512/681/204 +f 523/691/203 521/692/203 519/693/203 +f 520/694/199 526/695/199 524/696/199 +f 521/692/202 526/697/202 522/698/202 +f 519/699/204 522/698/204 520/700/204 +f 523/701/200 520/700/200 524/702/200 +f 525/703/201 524/704/201 526/697/201 +f 512/677/199 514/705/199 518/678/199 +f 515/680/200 511/690/200 512/681/200 +f 517/683/201 515/706/201 516/684/201 +f 513/686/202 517/683/202 518/685/202 +f 515/688/203 517/683/203 513/686/203 +f 511/690/204 513/686/204 514/687/204 +f 523/691/203 525/703/203 521/692/203 +f 520/694/199 522/707/199 526/695/199 +f 521/692/202 525/703/202 526/697/202 +f 519/699/204 521/692/204 522/698/204 +f 523/701/200 519/699/200 520/700/200 +f 525/703/201 523/708/201 524/704/201 o RL v 0.125000 0.250000 0.250000 v 0.125000 1.000000 0.250000 @@ -2064,30 +2238,30 @@ vn 1.0000 0.0000 -0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 s off -f 493/642/184 494/643/184 492/644/184 -f 495/645/185 498/646/185 494/647/185 -f 499/648/186 496/649/186 498/646/186 -f 497/650/187 492/644/187 496/649/187 -f 498/651/188 492/652/188 494/653/188 -f 495/654/189 497/650/189 499/655/189 -f 501/656/184 502/657/184 500/658/184 -f 503/659/185 506/660/185 502/661/185 -f 507/662/186 504/663/186 506/660/186 -f 505/664/187 500/658/187 504/663/187 -f 506/665/188 500/666/188 502/667/188 -f 503/668/189 505/664/189 507/669/189 -f 493/642/184 495/670/184 494/643/184 -f 495/645/185 499/648/185 498/646/185 -f 499/648/186 497/650/186 496/649/186 -f 497/650/187 493/642/187 492/644/187 -f 498/651/188 496/671/188 492/652/188 -f 495/654/189 493/642/189 497/650/189 -f 501/656/184 503/672/184 502/657/184 -f 503/659/185 507/662/185 506/660/185 -f 507/662/186 505/664/186 504/663/186 -f 505/664/187 501/656/187 500/658/187 -f 506/665/188 504/673/188 500/666/188 -f 503/668/189 501/656/189 505/664/189 +f 528/709/205 529/710/205 527/711/205 +f 530/712/206 533/713/206 529/714/206 +f 534/715/207 531/716/207 533/713/207 +f 532/717/208 527/711/208 531/716/208 +f 533/718/209 527/719/209 529/720/209 +f 530/721/210 532/717/210 534/722/210 +f 536/723/205 537/724/205 535/725/205 +f 538/726/206 541/727/206 537/728/206 +f 542/729/207 539/730/207 541/727/207 +f 540/731/208 535/725/208 539/730/208 +f 541/732/209 535/733/209 537/734/209 +f 538/735/210 540/731/210 542/736/210 +f 528/709/205 530/737/205 529/710/205 +f 530/712/206 534/715/206 533/713/206 +f 534/715/207 532/717/207 531/716/207 +f 532/717/208 528/709/208 527/711/208 +f 533/718/209 531/738/209 527/719/209 +f 530/721/210 528/709/210 532/717/210 +f 536/723/205 538/739/205 537/724/205 +f 538/726/206 542/729/206 541/727/206 +f 542/729/207 540/731/207 539/730/207 +f 540/731/208 536/723/208 535/725/208 +f 541/732/209 539/740/209 535/733/209 +f 538/735/210 536/723/210 540/731/210 o Head17 v 0.375000 1.750000 0.375000 v -0.375000 1.750000 0.375000 @@ -2144,30 +2318,30 @@ vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 511/674/190 508/675/190 509/676/190 -f 512/677/191 514/678/191 513/679/191 -f 510/680/192 512/677/192 508/681/192 -f 508/681/193 513/682/193 509/683/193 -f 509/684/194 514/685/194 511/686/194 -f 511/686/195 515/687/195 510/680/195 -f 519/688/190 516/689/190 517/690/190 -f 520/691/191 522/692/191 521/693/191 -f 518/694/192 520/691/192 516/695/192 -f 516/695/193 521/696/193 517/697/193 -f 517/698/194 522/699/194 519/700/194 -f 519/700/195 523/701/195 518/694/195 -f 511/674/190 510/702/190 508/675/190 -f 512/677/191 515/687/191 514/678/191 -f 510/680/192 515/687/192 512/677/192 -f 508/681/193 512/677/193 513/682/193 -f 509/684/194 513/703/194 514/685/194 -f 511/686/195 514/685/195 515/687/195 -f 519/688/190 518/704/190 516/689/190 -f 520/691/191 523/701/191 522/692/191 -f 518/694/192 523/701/192 520/691/192 -f 516/695/193 520/691/193 521/696/193 -f 517/698/194 521/705/194 522/699/194 -f 519/700/195 522/699/195 523/701/195 +f 546/741/211 543/742/211 544/743/211 +f 547/744/212 549/745/212 548/746/212 +f 545/747/213 547/744/213 543/748/213 +f 543/748/214 548/749/214 544/750/214 +f 544/751/215 549/752/215 546/753/215 +f 546/753/216 550/754/216 545/747/216 +f 554/755/211 551/756/211 552/757/211 +f 555/758/212 557/759/212 556/760/212 +f 553/761/213 555/758/213 551/762/213 +f 551/762/214 556/763/214 552/764/214 +f 552/765/215 557/766/215 554/767/215 +f 554/767/216 558/768/216 553/761/216 +f 546/741/211 545/769/211 543/742/211 +f 547/744/212 550/754/212 549/745/212 +f 545/747/213 550/754/213 547/744/213 +f 543/748/214 547/744/214 548/749/214 +f 544/751/215 548/770/215 549/752/215 +f 546/753/216 549/752/216 550/754/216 +f 554/755/211 553/771/211 551/756/211 +f 555/758/212 558/768/212 557/759/212 +f 553/761/213 558/768/213 555/758/213 +f 551/762/214 555/758/214 556/763/214 +f 552/765/215 556/772/215 557/766/215 +f 554/767/216 557/766/216 558/768/216 o RA17 v -0.125000 1.750000 0.250000 v 0.125000 1.750000 0.250000 @@ -2200,18 +2374,18 @@ vn 0.0000 -1.0000 0.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 1.0000 0.0000 s off -f 526/706/196 524/707/196 525/708/196 -f 529/709/197 530/710/197 528/711/197 -f 527/712/198 529/713/198 524/707/198 -f 526/714/199 531/715/199 527/716/199 -f 525/708/200 530/710/200 526/706/200 -f 525/708/201 529/717/201 528/711/201 -f 526/706/196 527/712/196 524/707/196 -f 529/709/197 531/718/197 530/710/197 -f 527/712/198 531/719/198 529/713/198 -f 526/714/199 530/720/199 531/715/199 -f 525/708/200 528/711/200 530/710/200 -f 525/708/201 524/721/201 529/717/201 +f 561/773/217 559/774/217 560/775/217 +f 564/776/218 565/777/218 563/778/218 +f 562/779/219 564/780/219 559/774/219 +f 561/781/220 566/782/220 562/783/220 +f 560/775/221 565/777/221 561/773/221 +f 560/775/222 564/784/222 563/778/222 +f 561/773/217 562/779/217 559/774/217 +f 564/776/218 566/785/218 565/777/218 +f 562/779/219 566/786/219 564/780/219 +f 561/781/220 565/787/220 566/782/220 +f 560/775/221 563/778/221 565/777/221 +f 560/775/222 559/788/222 564/784/222 o LA17 v -0.125000 1.000000 -0.500000 v 0.125000 1.000000 -0.500000 @@ -2244,18 +2418,18 @@ vn 0.0000 -1.0000 0.0000 vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 -0.0000 s off -f 533/722/202 534/723/202 535/724/202 -f 538/725/203 534/726/203 539/727/203 -f 533/722/204 538/725/204 537/728/204 -f 532/729/205 537/730/205 536/731/205 -f 539/732/206 537/728/206 538/725/206 -f 534/733/207 536/734/207 539/732/207 -f 533/722/202 532/735/202 534/723/202 -f 538/725/203 535/724/203 534/726/203 -f 533/722/204 535/724/204 538/725/204 -f 532/729/205 533/736/205 537/730/205 -f 539/732/206 536/734/206 537/728/206 -f 534/733/207 532/737/207 536/734/207 +f 568/789/223 569/790/223 570/791/223 +f 573/792/224 569/793/224 574/794/224 +f 568/789/225 573/792/225 572/795/225 +f 567/796/226 572/797/226 571/798/226 +f 574/799/227 572/795/227 573/792/227 +f 569/800/228 571/801/228 574/799/228 +f 568/789/223 567/802/223 569/790/223 +f 573/792/224 570/791/224 569/793/224 +f 568/789/225 570/791/225 573/792/225 +f 567/796/226 568/803/226 572/797/226 +f 574/799/227 571/801/227 572/795/227 +f 569/800/228 567/804/228 571/801/228 o LL17 v -0.125000 1.000000 0.000000 v -0.125000 0.250000 0.000000 @@ -2288,18 +2462,18 @@ vn 0.0000 0.0000 1.0000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 s off -f 542/738/208 544/739/208 540/740/208 -f 547/741/209 541/742/209 545/743/209 -f 547/744/210 542/738/210 543/745/210 -f 543/745/211 540/746/211 541/747/211 -f 541/747/212 544/748/212 545/749/212 -f 545/750/213 546/751/213 547/744/213 -f 542/738/208 546/751/208 544/739/208 -f 547/741/209 543/752/209 541/742/209 -f 547/744/210 546/751/210 542/738/210 -f 543/745/211 542/738/211 540/746/211 -f 541/747/212 540/746/212 544/748/212 -f 545/750/213 544/753/213 546/751/213 +f 577/805/229 579/806/229 575/807/229 +f 582/808/230 576/809/230 580/810/230 +f 582/811/231 577/805/231 578/812/231 +f 578/812/232 575/813/232 576/814/232 +f 576/814/233 579/815/233 580/816/233 +f 580/817/234 581/818/234 582/811/234 +f 577/805/229 581/818/229 579/806/229 +f 582/808/230 578/819/230 576/809/230 +f 582/811/231 581/818/231 577/805/231 +f 578/812/232 577/805/232 575/813/232 +f 576/814/233 575/813/233 579/815/233 +f 580/817/234 579/820/234 581/818/234 o RL17 v 0.125000 0.250000 0.250000 v 0.125000 1.000000 0.250000 @@ -2332,18 +2506,18 @@ vn 1.0000 0.0000 -0.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 s off -f 549/754/214 550/755/214 548/756/214 -f 551/757/215 554/758/215 550/759/215 -f 555/760/216 552/761/216 554/758/216 -f 553/762/217 548/756/217 552/761/217 -f 554/763/218 548/764/218 550/765/218 -f 551/766/219 553/762/219 555/767/219 -f 549/754/214 551/768/214 550/755/214 -f 551/757/215 555/760/215 554/758/215 -f 555/760/216 553/762/216 552/761/216 -f 553/762/217 549/754/217 548/756/217 -f 554/763/218 552/769/218 548/764/218 -f 551/766/219 549/754/219 553/762/219 +f 584/821/235 585/822/235 583/823/235 +f 586/824/236 589/825/236 585/826/236 +f 590/827/237 587/828/237 589/825/237 +f 588/829/238 583/823/238 587/828/238 +f 589/830/239 583/831/239 585/832/239 +f 586/833/240 588/829/240 590/834/240 +f 584/821/235 586/835/235 585/822/235 +f 586/824/236 590/827/236 589/825/236 +f 590/827/237 588/829/237 587/828/237 +f 588/829/238 584/821/238 583/823/238 +f 589/830/239 587/836/239 583/831/239 +f 586/833/240 584/821/240 588/829/240 o Body17 v 0.125000 1.750000 0.250000 v -0.125000 1.750000 0.250000 @@ -2376,18 +2550,18 @@ vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 0.0000 1.0000 s off -f 556/770/220 559/771/220 557/772/220 -f 562/773/221 560/774/221 561/775/221 -f 559/776/222 561/777/222 557/778/222 -f 558/779/223 562/780/223 559/776/223 -f 556/770/224 563/781/224 558/779/224 -f 557/782/225 560/783/225 556/770/225 -f 556/770/220 558/779/220 559/771/220 -f 562/773/221 563/784/221 560/774/221 -f 559/776/222 562/780/222 561/777/222 -f 558/779/223 563/781/223 562/780/223 -f 556/770/224 560/783/224 563/781/224 -f 557/782/225 561/785/225 560/783/225 +f 591/837/241 594/838/241 592/839/241 +f 597/840/242 595/841/242 596/842/242 +f 594/843/243 596/844/243 592/845/243 +f 593/846/244 597/847/244 594/843/244 +f 591/837/245 598/848/245 593/846/245 +f 592/849/246 595/850/246 591/837/246 +f 591/837/241 593/846/241 594/838/241 +f 597/840/242 598/851/242 595/841/242 +f 594/843/243 597/847/243 596/844/243 +f 593/846/244 598/848/244 597/847/244 +f 591/837/245 595/850/245 598/848/245 +f 592/849/246 596/852/246 595/850/246 o Socket v 0.625000 0.000000 0.625000 v 0.625000 0.000000 -0.625000 @@ -2424,18 +2598,18 @@ vn 1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn 0.0000 0.0000 1.0000 s off -f 566/786/226 565/787/226 564/788/226 -f 570/789/227 568/790/227 569/791/227 -f 566/792/228 571/793/228 567/794/228 -f 565/795/229 569/796/229 564/797/229 -f 567/798/230 570/799/230 565/787/230 -f 564/800/231 568/790/231 566/801/231 -f 566/786/226 567/798/226 565/787/226 -f 570/789/227 571/802/227 568/790/227 -f 566/792/228 568/803/228 571/793/228 -f 565/795/229 570/804/229 569/796/229 -f 567/798/230 571/805/230 570/799/230 -f 564/800/231 569/791/231 568/790/231 +f 601/853/247 600/854/247 599/855/247 +f 605/856/248 603/857/248 604/858/248 +f 601/859/249 606/860/249 602/861/249 +f 600/862/250 604/863/250 599/864/250 +f 602/865/251 605/866/251 600/854/251 +f 599/867/252 603/857/252 601/868/252 +f 601/853/247 602/865/247 600/854/247 +f 605/856/248 606/869/248 603/857/248 +f 601/859/249 603/870/249 606/860/249 +f 600/862/250 605/871/250 604/863/250 +f 602/865/251 606/872/251 605/866/251 +f 599/867/252 604/858/252 603/857/252 o Body v 0.125000 1.750000 0.250000 v -0.125000 1.750000 0.250000 @@ -2492,27 +2666,27 @@ vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 -0.0000 vn 0.0000 0.0000 1.0000 s off -f 572/806/232 575/807/232 573/808/232 -f 578/809/233 576/810/233 577/811/233 -f 575/812/234 577/813/234 573/814/234 -f 574/815/235 578/816/235 575/812/235 -f 572/806/236 579/817/236 574/815/236 -f 573/818/237 576/819/237 572/806/237 -f 580/820/232 583/821/232 581/822/232 -f 585/823/233 587/824/233 584/825/233 -f 583/826/234 585/827/234 581/828/234 -f 582/829/235 586/830/235 583/826/235 -f 580/820/236 587/831/236 582/829/236 -f 581/832/237 584/833/237 580/820/237 -f 572/806/232 574/815/232 575/807/232 -f 578/809/233 579/834/233 576/810/233 -f 575/812/234 578/816/234 577/813/234 -f 574/815/235 579/817/235 578/816/235 -f 572/806/236 576/819/236 579/817/236 -f 573/818/237 577/835/237 576/819/237 -f 580/820/232 582/829/232 583/821/232 -f 585/823/233 586/836/233 587/824/233 -f 583/826/234 586/830/234 585/827/234 -f 582/829/235 587/831/235 586/830/235 -f 580/820/236 584/833/236 587/831/236 -f 581/832/237 585/837/237 584/833/237 +f 607/873/253 610/874/253 608/875/253 +f 613/876/254 611/877/254 612/878/254 +f 610/879/255 612/880/255 608/881/255 +f 609/882/256 613/883/256 610/879/256 +f 607/873/257 614/884/257 609/882/257 +f 608/885/258 611/886/258 607/873/258 +f 615/887/253 618/888/253 616/889/253 +f 620/890/254 622/891/254 619/892/254 +f 618/893/255 620/894/255 616/895/255 +f 617/896/256 621/897/256 618/893/256 +f 615/887/257 622/898/257 617/896/257 +f 616/899/258 619/900/258 615/887/258 +f 607/873/253 609/882/253 610/874/253 +f 613/876/254 614/901/254 611/877/254 +f 610/879/255 613/883/255 612/880/255 +f 609/882/256 614/884/256 613/883/256 +f 607/873/257 611/886/257 614/884/257 +f 608/885/258 612/902/258 611/886/258 +f 615/887/253 617/896/253 618/888/253 +f 620/890/254 621/903/254 622/891/254 +f 618/893/255 621/897/255 620/894/255 +f 617/896/256 622/898/256 621/897/256 +f 615/887/257 619/900/257 622/898/257 +f 616/899/258 620/904/258 619/900/258 diff --git a/src/main/resources/assets/hbm/models/vehicles/tram.obj b/src/main/resources/assets/hbm/models/vehicles/tram.obj new file mode 100644 index 000000000..e8d11cf51 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tram.obj @@ -0,0 +1,854 @@ +# Blender v2.79 (sub 0) OBJ File: 'tram_new.blend' +# www.blender.org +o Plane +v -1.000000 0.250000 2.500000 +v 1.000000 0.250000 2.500000 +v -1.000000 0.250000 -2.500000 +v 1.000000 0.250000 -2.500000 +v -1.000000 0.750000 -2.500000 +v -1.000000 0.750000 2.500000 +v 1.000000 0.750000 2.500000 +v 1.000000 0.750000 -2.500000 +v 0.562500 0.375000 2.562500 +v 0.562500 0.875000 2.562500 +v 0.562500 0.375000 2.062500 +v 0.562500 0.875000 2.062500 +v 1.062500 0.375000 2.562500 +v 1.062500 0.875000 2.562500 +v 1.062500 0.375000 2.062500 +v 1.062500 0.875000 2.062500 +v -1.062500 0.375000 2.562500 +v -1.062500 0.875000 2.562500 +v -1.062500 0.375000 2.062500 +v -1.062500 0.875000 2.062500 +v -0.562500 0.375000 2.562500 +v -0.562500 0.875000 2.562500 +v -0.562500 0.375000 2.062500 +v -0.562500 0.875000 2.062500 +v 0.562500 0.375000 -1.812500 +v 0.562500 0.875000 -1.812500 +v 0.562500 0.375000 -2.562500 +v 0.562500 0.875000 -2.562500 +v 1.062500 0.375000 -1.812500 +v 1.062500 0.875000 -1.812500 +v 1.062500 0.375000 -2.562500 +v 1.062500 0.875000 -2.562500 +v -1.062500 0.375000 -1.812500 +v -1.062500 0.875000 -1.812500 +v -1.062500 0.375000 -2.562500 +v -1.062500 0.875000 -2.562500 +v -0.562500 0.375000 -1.812500 +v -0.562500 0.875000 -1.812500 +v -0.562500 0.375000 -2.562500 +v -0.562500 0.875000 -2.562500 +v 0.875000 0.750000 1.062500 +v -0.125000 0.750000 1.062500 +v 0.000000 1.625000 1.187500 +v 0.750000 1.625000 1.187500 +v 0.000000 0.750000 1.187500 +v 0.750000 0.750000 1.187500 +v 0.875000 0.750000 1.875000 +v 0.687500 0.750000 2.062500 +v 0.062500 0.750000 2.062500 +v -0.125000 0.750000 1.875000 +v 0.687500 1.750000 2.062500 +v 0.875000 1.750000 1.875000 +v -0.125000 1.750000 1.875000 +v 0.062500 1.750000 2.062500 +v 0.000000 1.625000 1.875000 +v 0.750000 1.625000 1.875000 +v 0.687500 1.750000 1.937500 +v 0.062500 1.750000 1.937500 +v -0.875000 0.750000 1.250000 +v 0.750000 1.750000 1.875000 +v -0.875000 0.750000 1.750000 +v 0.000000 1.750000 1.875000 +v 0.687500 1.625000 1.937500 +v 0.062500 1.625000 1.937500 +v 0.000000 0.750000 1.062500 +v 0.750000 0.750000 1.062500 +v 0.875000 1.500000 1.062500 +v 0.875000 1.750000 1.187500 +v -0.125000 1.750000 1.187500 +v -0.125000 1.500000 1.062500 +v 0.750000 1.750000 1.187500 +v 0.750000 1.500000 1.062500 +v -0.187500 0.750000 1.750000 +v 0.000000 1.500000 1.062500 +v 0.000000 1.750000 1.187500 +v -0.187500 0.750000 1.250000 +v -0.187500 0.937500 1.250000 +v -0.187500 0.937500 1.750000 +v -0.875000 0.937500 1.250000 +v -0.875000 0.937500 1.750000 +v -0.187500 1.062500 1.375000 +v -0.187500 1.062500 1.625000 +v -0.875000 1.062500 1.375000 +v -0.875000 1.062500 1.625000 +v 0.937500 0.750000 1.000000 +v 0.812500 0.750000 1.000000 +v 0.937500 0.750000 0.875000 +v 0.812500 0.750000 0.875000 +v 0.812500 1.750000 0.875000 +v 0.937500 1.750000 0.875000 +v 0.812500 1.750000 1.000000 +v 0.937500 1.750000 1.000000 +v -0.812500 0.750000 0.750000 +v -0.937500 0.750000 0.750000 +v -0.812500 0.750000 0.625000 +v -0.937500 0.750000 0.625000 +v -0.812500 1.375000 0.750000 +v -0.937500 1.375000 0.750000 +v -0.812500 1.500000 0.625000 +v -0.937500 1.500000 0.625000 +v -0.812500 1.375000 1.125000 +v -0.937500 1.375000 1.250000 +v -0.812500 1.500000 1.125000 +v -0.937500 1.500000 1.250000 +v -0.125000 1.375000 1.125000 +v -0.125000 1.375000 1.250000 +v -0.125000 1.500000 1.125000 +v -0.125000 1.500000 1.250000 +v 0.875000 0.250000 -1.625000 +v 0.750000 0.250000 1.750000 +v 0.750000 0.073223 -1.676777 +v 0.875000 0.250000 -1.250000 +v 0.875000 0.250000 1.750000 +v 0.750000 0.073223 1.323223 +v 0.750000 0.000000 1.500000 +v 0.750000 0.073223 1.676777 +v 0.750000 0.250000 -1.250000 +v 0.750000 0.250000 1.250000 +v 0.875000 0.250000 -1.375000 +v 0.875000 0.073223 -1.323223 +v 0.875000 0.250000 1.250000 +v 0.875000 0.073223 1.323223 +v 0.875000 0.000000 1.500000 +v 0.875000 0.073223 1.676777 +v 0.875000 0.250000 1.625000 +v 0.875000 0.000000 -1.500000 +v 0.875000 0.073223 -1.676777 +v 0.875000 0.250000 -1.750000 +v 0.875000 0.250000 1.375000 +v 0.875000 0.161612 1.411612 +v 0.875000 0.125000 1.500000 +v 0.875000 0.161612 1.588388 +v 0.937500 0.250000 1.625000 +v 0.750000 0.250000 -1.750000 +v 0.750000 0.073223 -1.323223 +v 0.750000 0.000000 -1.500000 +v 0.937500 0.250000 1.375000 +v 0.937500 0.161612 1.411612 +v 0.937500 0.125000 1.500000 +v 0.937500 0.161612 1.588388 +v 0.875000 0.161612 -1.588388 +v 0.875000 0.125000 -1.500000 +v 0.875000 0.161612 -1.411612 +v 0.937500 0.250000 -1.375000 +v 0.937500 0.250000 -1.625000 +v 0.937500 0.161612 -1.588388 +v 0.937500 0.125000 -1.500000 +v 0.937500 0.161612 -1.411612 +v -0.750000 0.250000 2.000000 +v 0.750000 0.250000 2.000000 +v -0.750000 0.250000 -2.000000 +v 0.750000 0.250000 -2.000000 +v -0.750000 0.125000 -1.875000 +v -0.750000 0.125000 1.875000 +v 0.750000 0.125000 1.875000 +v 0.750000 0.125000 -1.875000 +v -0.875000 0.250000 1.625000 +v -0.750000 0.250000 -1.750000 +v -0.750000 0.073223 1.676777 +v -0.875000 0.250000 1.250000 +v -0.875000 0.250000 -1.750000 +v -0.750000 0.073223 -1.323223 +v -0.750000 0.000000 -1.500000 +v -0.750000 0.073223 -1.676777 +v -0.750000 0.250000 1.250000 +v -0.750000 0.250000 -1.250000 +v -0.875000 0.250000 1.375000 +v -0.875000 0.073223 1.323223 +v -0.875000 0.250000 -1.250000 +v -0.875000 0.073223 -1.323223 +v -0.875000 0.000000 -1.500000 +v -0.875000 0.073223 -1.676777 +v -0.875000 0.250000 -1.625000 +v -0.875000 0.000000 1.500000 +v -0.875000 0.073223 1.676777 +v -0.875000 0.250000 1.750000 +v -0.875000 0.250000 -1.375000 +v -0.875000 0.161612 -1.411611 +v -0.875000 0.125000 -1.500000 +v -0.875000 0.161612 -1.588388 +v -0.937500 0.250000 -1.625000 +v -0.750000 0.250000 1.750000 +v -0.750000 0.073223 1.323223 +v -0.750000 0.000000 1.500000 +v -0.937500 0.250000 -1.375000 +v -0.937500 0.161612 -1.411611 +v -0.937500 0.125000 -1.500000 +v -0.937500 0.161612 -1.588388 +v -0.875000 0.161612 1.588389 +v -0.875000 0.125000 1.500000 +v -0.875000 0.161612 1.411612 +v -0.937500 0.250000 1.375000 +v -0.937500 0.250000 1.625000 +v -0.937500 0.161612 1.588389 +v -0.937500 0.125000 1.500000 +v -0.937500 0.161612 1.411612 +vt 0.543210 0.090909 +vt 0.049383 0.454545 +vt 0.049383 0.090909 +vt 0.049383 0.090909 +vt 0.543210 0.454545 +vt 0.049383 0.454545 +vt 0.543210 0.000000 +vt 0.049383 0.000000 +vt 0.049383 0.545455 +vt 0.543210 0.545455 +vt 0.592593 0.454545 +vt 0.543210 0.090909 +vt 0.592593 0.090909 +vt -0.000000 0.090909 +vt -0.000000 0.454545 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.987654 0.318182 +vt 0.913580 0.477273 +vt 0.913580 0.318182 +vt 0.567901 0.454545 +vt 0.555556 0.590909 +vt 0.555556 0.454545 +vt 0.777778 0.318182 +vt 0.716049 0.500000 +vt 0.716901 0.318679 +vt 0.697531 0.500000 +vt 0.629630 0.522727 +vt 0.629630 0.500000 +vt 0.777778 0.522727 +vt 0.716049 0.522727 +vt 0.697531 0.318182 +vt 0.796296 0.500000 +vt 0.777778 0.500000 +vt 0.864198 0.500000 +vt 0.796296 0.522727 +vt 0.617284 0.454545 +vt 0.604938 0.318182 +vt 0.617284 0.318182 +vt 0.901235 0.318182 +vt 0.888889 0.454545 +vt 0.888889 0.318182 +vt 0.709877 0.534091 +vt 0.697531 0.534091 +vt 0.783951 0.534091 +vt 0.796296 0.534091 +vt 0.919753 0.636364 +vt 0.981481 0.613636 +vt 0.981481 0.636364 +vt 0.913580 0.636364 +vt 0.919753 0.613636 +vt 0.913580 0.602273 +vt 0.987654 0.477273 +vt 0.987654 0.636364 +vt 1.000000 0.477273 +vt 0.987654 0.602273 +vt 0.876543 0.454545 +vt 0.901235 0.602273 +vt 0.604938 0.454545 +vt 0.592593 0.477273 +vt 0.592593 0.318182 +vt 0.876543 0.500000 +vt 0.604938 0.500000 +vt 0.623457 0.659091 +vt 0.691358 0.636364 +vt 0.691358 0.659091 +vt 0.691358 0.534091 +vt 0.623457 0.568182 +vt 0.623457 0.534091 +vt 0.722222 0.568182 +vt 0.722222 0.659091 +vt 0.506173 0.727273 +vt 0.518519 0.750000 +vt 0.506173 0.750000 +vt 0.623457 0.693182 +vt 0.691358 0.693182 +vt 0.691358 0.590909 +vt 0.623457 0.636364 +vt 0.623457 0.590909 +vt 0.506173 0.545455 +vt 0.493827 0.727273 +vt 0.493827 0.545455 +vt 0.518519 0.545455 +vt 0.592593 0.659091 +vt 0.592593 0.568182 +vt 0.543210 0.545455 +vt 0.530864 0.727273 +vt 0.530864 0.545455 +vt 0.518519 0.727273 +vt 0.580247 0.568182 +vt 0.567901 0.590909 +vt 0.592593 0.568182 +vt 0.580247 0.454545 +vt 0.592593 0.454545 +vt 0.543210 0.568182 +vt 0.543210 0.454545 +vt 0.592593 0.681818 +vt 0.580247 0.613636 +vt 0.592593 0.613636 +vt 0.555556 0.681818 +vt 0.543210 0.613636 +vt 0.567901 0.704545 +vt 0.580247 0.704545 +vt 0.567901 0.852273 +vt 0.555556 0.727273 +vt 0.543210 0.852273 +vt 0.543210 0.727273 +vt 0.592593 0.727273 +vt 0.580247 0.852273 +vt 0.555556 0.852273 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.975309 0.022727 +vt 0.604938 0.295455 +vt 0.604938 0.022727 +vt 0.987654 0.295455 +vt 0.987654 0.022727 +vt 0.592593 0.022727 +vt 0.592593 0.295455 +vt 0.592593 0.318182 +vt 0.975309 0.295455 +vt 0.987654 0.318182 +vt 0.987654 0.000000 +vt 0.592593 0.000000 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.475309 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.543210 0.454545 +vt -0.000000 0.727273 +vt -0.000000 0.727273 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.697531 0.522727 +vt 0.796296 0.318182 +vt 0.864198 0.522727 +vt 0.901235 0.477273 +vt 0.901235 0.500000 +vt 0.913580 0.613636 +vt 0.987654 0.613636 +vt 1.000000 0.602273 +vt 0.876543 0.318182 +vt 0.901235 0.477273 +vt 0.592593 0.500000 +vt 0.888889 0.500000 +vt 0.617284 0.500000 +vt 0.691358 0.568182 +vt 0.703704 0.659091 +vt 0.703704 0.568182 +vt 0.611111 0.568182 +vt 0.611111 0.659091 +vt 0.543210 0.727273 +vt 0.543210 0.681818 +vt 0.592593 0.852273 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.493827 0.545455 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.493827 0.545455 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 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.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 2/8/3 +f 1/9/4 5/5/4 3/10/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/6/6 1/15/6 +f 10/16/4 11/17/4 9/18/4 +f 12/19/5 15/20/5 11/21/5 +f 16/22/3 13/23/3 15/24/3 +f 14/25/6 9/18/6 13/23/6 +f 15/26/1 9/18/1 11/27/1 +f 12/19/2 14/25/2 16/28/2 +f 18/29/4 19/30/4 17/31/4 +f 20/32/5 23/33/5 19/34/5 +f 24/35/3 21/36/3 23/37/3 +f 22/38/6 17/31/6 21/36/6 +f 23/39/1 17/31/1 19/40/1 +f 20/32/2 22/38/2 24/41/2 +f 26/42/4 27/43/4 25/44/4 +f 28/45/5 31/46/5 27/43/5 +f 32/47/3 29/48/3 31/46/3 +f 30/49/6 25/50/6 29/51/6 +f 31/46/1 25/52/1 27/43/1 +f 28/45/2 30/49/2 32/47/2 +f 34/53/4 35/54/4 33/55/4 +f 36/56/5 39/57/5 35/54/5 +f 40/58/3 37/59/3 39/57/3 +f 38/60/6 33/61/6 37/62/6 +f 39/57/1 33/63/1 35/54/1 +f 36/56/2 38/60/2 40/58/2 +f 45/64/5 44/65/5 46/66/5 +f 96/67/5 99/68/5 95/69/5 +f 48/70/6 54/71/6 49/72/6 +f 53/73/2 75/74/2 69/75/2 +f 54/71/2 57/76/2 58/77/2 +f 54/71/7 50/78/7 49/72/7 +f 48/70/8 52/79/8 51/80/8 +f 68/81/2 60/82/2 52/79/2 +f 70/83/5 65/84/5 42/85/5 +f 46/86/4 72/87/4 66/88/4 +f 54/71/2 62/89/2 53/90/2 +f 60/91/2 51/80/2 52/92/2 +f 57/93/5 64/94/5 58/95/5 +f 60/96/9 63/97/9 57/93/9 +f 56/98/2 44/65/2 43/99/2 +f 64/94/10 62/100/10 58/95/10 +f 75/101/3 55/102/3 43/99/3 +f 67/103/3 68/81/3 52/79/3 +f 53/73/4 69/75/4 70/83/4 +f 60/104/4 44/65/4 56/98/4 +f 74/105/3 43/106/3 45/107/3 +f 72/87/11 68/108/11 67/103/11 +f 70/83/11 75/109/11 74/105/11 +f 67/103/5 66/88/5 72/87/5 +f 78/110/12 84/111/12 80/112/12 +f 59/113/5 77/114/5 76/115/5 +f 59/116/4 61/117/4 84/111/4 +f 90/118/2 91/119/2 92/120/2 +f 73/121/6 80/112/6 61/122/6 +f 83/123/2 82/124/2 81/125/2 +f 87/126/3 92/127/3 85/128/3 +f 88/129/5 90/118/5 87/126/5 +f 77/114/13 83/123/13 81/125/13 +f 73/130/3 76/131/3 81/125/3 +f 85/132/6 91/133/6 86/134/6 +f 86/134/4 89/135/4 88/129/4 +f 96/67/4 98/136/4 100/137/4 +f 97/138/6 94/139/6 93/140/6 +f 95/69/3 97/141/3 93/142/3 +f 101/143/1 98/144/1 97/145/1 +f 100/137/2 103/146/2 99/68/2 +f 103/146/3 97/147/3 99/68/3 +f 98/144/4 104/148/4 100/137/4 +f 102/149/6 108/150/6 104/148/6 +f 103/151/5 105/152/5 101/153/5 +f 101/154/1 106/155/1 102/149/1 +f 103/151/2 108/150/2 107/156/2 +f 126/157/3 143/158/3 120/159/3 +f 123/160/3 132/161/3 124/162/3 +f 117/163/4 111/164/4 136/165/4 +f 121/166/3 130/167/3 122/168/3 +f 148/169/3 147/170/3 146/171/3 +f 126/157/3 141/172/3 142/173/3 +f 113/174/3 132/175/3 125/176/3 +f 123/160/3 130/177/3 131/178/3 +f 112/179/3 143/180/3 119/181/3 +f 128/182/3 141/183/3 127/184/3 +f 140/185/3 139/186/3 138/187/3 +f 114/188/4 115/189/4 116/190/4 +f 153/191/1 155/192/1 154/193/1 +f 152/194/14 153/191/14 151/195/14 +f 149/196/15 155/192/15 150/197/15 +f 150/198/3 156/199/3 152/200/3 +f 151/201/4 154/193/4 149/202/4 +f 174/203/4 191/204/4 168/205/4 +f 171/206/4 180/207/4 172/208/4 +f 165/209/3 159/210/3 184/211/3 +f 169/212/4 178/213/4 170/214/4 +f 195/215/4 194/216/4 193/217/4 +f 175/218/4 190/219/4 174/203/4 +f 172/208/4 173/220/4 161/221/4 +f 170/214/4 179/222/4 171/206/4 +f 168/205/4 167/223/4 160/224/4 +f 176/225/4 189/226/4 175/218/4 +f 187/227/4 186/228/4 185/229/4 +f 162/230/3 163/231/3 164/232/3 +f 3/1/1 4/233/1 2/2/1 +f 7/4/2 8/12/2 5/5/2 +f 4/7/3 8/12/3 7/4/3 +f 1/9/4 6/6/4 5/5/4 +f 3/11/5 5/5/5 8/12/5 +f 2/14/6 7/4/6 6/6/6 +f 10/16/4 12/234/4 11/17/4 +f 12/19/5 16/28/5 15/20/5 +f 16/22/3 14/25/3 13/23/3 +f 14/25/6 10/16/6 9/18/6 +f 15/26/1 13/23/1 9/18/1 +f 12/19/2 10/16/2 14/25/2 +f 18/29/4 20/235/4 19/30/4 +f 20/32/5 24/41/5 23/33/5 +f 24/35/3 22/38/3 21/36/3 +f 22/38/6 18/29/6 17/31/6 +f 23/39/1 21/36/1 17/31/1 +f 20/32/2 18/29/2 22/38/2 +f 26/42/4 28/45/4 27/43/4 +f 28/45/5 32/47/5 31/46/5 +f 32/47/3 30/236/3 29/48/3 +f 30/49/6 26/237/6 25/50/6 +f 31/46/1 29/238/1 25/52/1 +f 28/45/2 26/237/2 30/49/2 +f 34/53/4 36/56/4 35/54/4 +f 36/56/5 40/58/5 39/57/5 +f 40/58/3 38/239/3 37/59/3 +f 38/60/6 34/240/6 33/61/6 +f 39/57/1 37/241/1 33/63/1 +f 36/56/2 34/240/2 38/60/2 +f 45/64/5 43/99/5 44/65/5 +f 96/67/5 100/137/5 99/68/5 +f 48/70/6 51/80/6 54/71/6 +f 53/73/2 62/242/2 75/74/2 +f 54/71/2 51/80/2 57/76/2 +f 54/71/7 53/73/7 50/78/7 +f 48/70/8 47/243/8 52/79/8 +f 68/81/2 71/244/2 60/82/2 +f 70/83/5 74/105/5 65/84/5 +f 46/86/4 44/245/4 72/87/4 +f 44/245/4 71/246/4 72/87/4 +f 54/71/2 58/77/2 62/89/2 +f 60/91/2 57/76/2 51/80/2 +f 57/93/5 63/97/5 64/94/5 +f 60/96/9 56/247/9 63/97/9 +f 43/99/2 55/102/2 56/98/2 +f 55/102/2 64/94/2 56/98/2 +f 64/94/2 63/97/2 56/98/2 +f 64/94/10 55/248/10 62/100/10 +f 75/101/3 62/249/3 55/102/3 +f 52/79/3 47/243/3 67/103/3 +f 47/243/3 41/250/3 67/103/3 +f 70/83/4 42/85/4 50/78/4 +f 50/78/4 53/73/4 70/83/4 +f 60/104/4 71/251/4 44/65/4 +f 45/107/3 65/84/3 74/105/3 +f 74/105/3 75/252/3 43/106/3 +f 72/87/11 71/253/11 68/108/11 +f 70/83/11 69/254/11 75/109/11 +f 67/103/5 41/250/5 66/88/5 +f 78/110/12 82/124/12 84/111/12 +f 59/113/5 79/255/5 77/114/5 +f 61/117/4 80/256/4 84/111/4 +f 84/111/4 83/123/4 59/116/4 +f 83/123/4 79/257/4 59/116/4 +f 90/118/2 89/135/2 91/119/2 +f 73/121/6 78/110/6 80/112/6 +f 83/123/2 84/111/2 82/124/2 +f 87/126/3 90/118/3 92/127/3 +f 88/129/5 89/135/5 90/118/5 +f 77/114/13 79/255/13 83/123/13 +f 76/131/3 77/258/3 81/125/3 +f 81/125/3 82/124/3 73/130/3 +f 82/124/3 78/259/3 73/130/3 +f 85/132/6 92/260/6 91/133/6 +f 86/134/4 91/133/4 89/135/4 +f 96/67/4 94/139/4 98/136/4 +f 97/138/6 98/136/6 94/139/6 +f 95/69/3 99/68/3 97/141/3 +f 101/143/1 102/149/1 98/144/1 +f 100/137/2 104/148/2 103/146/2 +f 103/146/3 101/261/3 97/147/3 +f 98/144/4 102/149/4 104/148/4 +f 102/149/6 106/155/6 108/150/6 +f 103/151/5 107/156/5 105/152/5 +f 101/154/1 105/262/1 106/155/1 +f 103/151/2 104/148/2 108/150/2 +f 126/157/3 142/263/3 143/158/3 +f 123/160/3 131/264/3 132/161/3 +f 136/165/4 135/265/4 117/163/4 +f 117/163/4 134/266/4 111/164/4 +f 121/166/3 129/267/3 130/167/3 +f 145/268/3 144/269/3 146/171/3 +f 144/269/3 148/169/3 146/171/3 +f 126/157/3 127/184/3 141/172/3 +f 113/174/3 124/162/3 132/175/3 +f 123/160/3 122/168/3 130/177/3 +f 112/179/3 120/159/3 143/180/3 +f 128/182/3 109/270/3 141/183/3 +f 137/271/3 133/272/3 138/187/3 +f 133/272/3 140/185/3 138/187/3 +f 110/273/4 118/274/4 116/190/4 +f 118/274/4 114/188/4 116/190/4 +f 153/191/1 156/199/1 155/192/1 +f 152/194/14 156/199/14 153/191/14 +f 149/196/15 154/193/15 155/192/15 +f 150/198/3 155/192/3 156/199/3 +f 151/201/4 153/191/4 154/193/4 +f 174/203/4 190/275/4 191/204/4 +f 171/206/4 179/276/4 180/207/4 +f 184/211/3 183/277/3 165/209/3 +f 165/209/3 182/278/3 159/210/3 +f 169/212/4 177/279/4 178/213/4 +f 193/217/4 192/280/4 196/281/4 +f 196/281/4 195/215/4 193/217/4 +f 175/218/4 189/282/4 190/219/4 +f 172/208/4 180/283/4 173/220/4 +f 170/214/4 178/284/4 179/222/4 +f 168/205/4 191/285/4 167/223/4 +f 176/225/4 157/286/4 189/226/4 +f 185/229/4 181/287/4 188/288/4 +f 188/288/4 187/227/4 185/229/4 +f 158/289/3 166/290/3 164/232/3 +f 166/290/3 162/230/3 164/232/3 +s 1 +f 114/291/14 123/160/1 115/292/1 +f 141/172/14 147/293/1 142/173/1 +f 115/292/1 124/162/15 116/294/15 +f 118/295/16 122/168/14 114/291/14 +f 143/180/15 144/296/17 119/181/17 +f 109/270/16 146/297/14 141/183/14 +f 116/294/15 113/174/17 110/298/17 +f 142/263/1 148/299/15 143/158/15 +f 135/300/15 112/179/17 117/301/17 +f 131/264/1 140/302/15 132/161/15 +f 129/267/16 138/303/14 130/167/14 +f 134/304/16 127/184/14 111/305/14 +f 136/306/1 120/159/15 135/300/15 +f 132/175/15 133/307/17 125/176/17 +f 130/177/14 139/308/1 131/178/1 +f 111/305/14 126/157/1 136/306/1 +f 162/309/15 171/206/1 163/310/1 +f 189/282/15 195/311/1 190/219/1 +f 163/310/1 172/208/14 164/312/14 +f 166/313/17 170/214/15 162/309/15 +f 191/285/14 192/314/16 167/223/16 +f 157/286/17 194/315/15 189/226/15 +f 158/316/16 172/208/14 161/221/16 +f 190/275/1 196/317/14 191/204/14 +f 183/318/14 160/224/16 165/319/16 +f 179/276/1 188/320/14 180/207/14 +f 177/279/17 186/321/15 178/213/15 +f 159/322/15 176/225/17 175/218/15 +f 184/323/1 168/205/14 183/318/14 +f 180/283/14 181/324/16 173/220/16 +f 178/284/15 187/325/1 179/222/1 +f 159/322/15 174/203/1 184/323/1 +f 114/291/14 122/168/14 123/160/1 +f 141/172/14 146/326/14 147/293/1 +f 115/292/1 123/160/1 124/162/15 +f 118/295/16 121/166/16 122/168/14 +f 143/180/15 148/327/15 144/296/17 +f 109/270/16 145/328/16 146/297/14 +f 116/294/15 124/162/15 113/174/17 +f 142/263/1 147/329/1 148/299/15 +f 135/300/15 120/159/15 112/179/17 +f 131/264/1 139/330/1 140/302/15 +f 129/267/16 137/331/16 138/303/14 +f 134/304/16 128/182/16 127/184/14 +f 136/306/1 126/157/1 120/159/15 +f 132/175/15 140/332/15 133/307/17 +f 130/177/14 138/333/14 139/308/1 +f 111/305/14 127/184/14 126/157/1 +f 162/309/15 170/214/15 171/206/1 +f 189/282/15 194/334/15 195/311/1 +f 163/310/1 171/206/1 172/208/14 +f 166/313/17 169/212/17 170/214/15 +f 191/285/14 196/335/14 192/314/16 +f 157/286/17 193/336/17 194/315/15 +f 158/316/16 164/312/14 172/208/14 +f 190/275/1 195/337/1 196/317/14 +f 183/318/14 168/205/14 160/224/16 +f 179/276/1 187/338/1 188/320/14 +f 177/279/17 185/339/17 186/321/15 +f 159/322/15 182/340/17 176/225/17 +f 184/323/1 174/203/1 168/205/14 +f 180/283/14 188/341/14 181/324/16 +f 178/284/15 186/342/15 187/325/1 +f 159/322/15 175/218/15 174/203/1 diff --git a/src/main/resources/assets/hbm/models/vehicles/tram_trailer.obj b/src/main/resources/assets/hbm/models/vehicles/tram_trailer.obj new file mode 100644 index 000000000..270cdde15 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tram_trailer.obj @@ -0,0 +1,561 @@ +# Blender v2.79 (sub 0) OBJ File: 'tram_trailer.blend' +# www.blender.org +o Plane +v -1.000000 0.250000 2.500000 +v 1.000000 0.250000 2.500000 +v -1.000000 0.250000 -2.500000 +v 1.000000 0.250000 -2.500000 +v -1.000000 0.750000 -2.500000 +v -1.000000 0.750000 2.500000 +v 1.000000 0.750000 2.500000 +v 1.000000 0.750000 -2.500000 +v 0.562500 0.375000 2.562500 +v 0.562500 0.875000 2.562500 +v 0.562500 0.375000 2.062500 +v 0.562500 0.875000 2.062500 +v 1.062500 0.375000 2.562500 +v 1.062500 0.875000 2.562500 +v 1.062500 0.375000 2.062500 +v 1.062500 0.875000 2.062500 +v -1.062500 0.375000 2.562500 +v -1.062500 0.875000 2.562500 +v -1.062500 0.375000 2.062500 +v -1.062500 0.875000 2.062500 +v -0.562500 0.375000 2.562500 +v -0.562500 0.875000 2.562500 +v -0.562500 0.375000 2.062500 +v -0.562500 0.875000 2.062500 +v 0.562500 0.375000 -1.812500 +v 0.562500 0.875000 -1.812500 +v 0.562500 0.375000 -2.562500 +v 0.562500 0.875000 -2.562500 +v 1.062500 0.375000 -1.812500 +v 1.062500 0.875000 -1.812500 +v 1.062500 0.375000 -2.562500 +v 1.062500 0.875000 -2.562500 +v -1.062500 0.375000 -1.812500 +v -1.062500 0.875000 -1.812500 +v -1.062500 0.375000 -2.562500 +v -1.062500 0.875000 -2.562500 +v -0.562500 0.375000 -1.812500 +v -0.562500 0.875000 -1.812500 +v -0.562500 0.375000 -2.562500 +v -0.562500 0.875000 -2.562500 +v 0.875000 0.250000 -1.625000 +v 0.750000 0.250000 1.750000 +v 0.750000 0.073223 -1.676777 +v 0.875000 0.250000 -1.250000 +v 0.875000 0.250000 1.750000 +v 0.750000 0.073223 1.323223 +v 0.750000 0.000000 1.500000 +v 0.750000 0.073223 1.676777 +v 0.750000 0.250000 -1.250000 +v 0.750000 0.250000 1.250000 +v 0.875000 0.250000 -1.375000 +v 0.875000 0.073223 -1.323223 +v 0.875000 0.250000 1.250000 +v 0.875000 0.073223 1.323223 +v 0.875000 0.000000 1.500000 +v 0.875000 0.073223 1.676777 +v 0.875000 0.250000 1.625000 +v 0.875000 0.000000 -1.500000 +v 0.875000 0.073223 -1.676777 +v 0.875000 0.250000 -1.750000 +v 0.875000 0.250000 1.375000 +v 0.875000 0.161612 1.411612 +v 0.875000 0.125000 1.500000 +v 0.875000 0.161612 1.588388 +v 0.937500 0.250000 1.625000 +v 0.750000 0.250000 -1.750000 +v 0.750000 0.073223 -1.323223 +v 0.750000 0.000000 -1.500000 +v 0.937500 0.250000 1.375000 +v 0.937500 0.161612 1.411612 +v 0.937500 0.125000 1.500000 +v 0.937500 0.161612 1.588388 +v 0.875000 0.161612 -1.588388 +v 0.875000 0.125000 -1.500000 +v 0.875000 0.161612 -1.411612 +v 0.937500 0.250000 -1.375000 +v 0.937500 0.250000 -1.625000 +v 0.937500 0.161612 -1.588388 +v 0.937500 0.125000 -1.500000 +v 0.937500 0.161612 -1.411612 +v -0.750000 0.250000 2.000000 +v 0.750000 0.250000 2.000000 +v -0.750000 0.250000 -2.000000 +v 0.750000 0.250000 -2.000000 +v -0.750000 0.125000 -1.875000 +v -0.750000 0.125000 1.875000 +v 0.750000 0.125000 1.875000 +v 0.750000 0.125000 -1.875000 +v -0.875000 0.250000 1.625000 +v -0.750000 0.250000 -1.750000 +v -0.750000 0.073223 1.676777 +v -0.875000 0.250000 1.250000 +v -0.875000 0.250000 -1.750000 +v -0.750000 0.073223 -1.323223 +v -0.750000 0.000000 -1.500000 +v -0.750000 0.073223 -1.676777 +v -0.750000 0.250000 1.250000 +v -0.750000 0.250000 -1.250000 +v -0.875000 0.250000 1.375000 +v -0.875000 0.073223 1.323223 +v -0.875000 0.250000 -1.250000 +v -0.875000 0.073223 -1.323223 +v -0.875000 0.000000 -1.500000 +v -0.875000 0.073223 -1.676777 +v -0.875000 0.250000 -1.625000 +v -0.875000 0.000000 1.500000 +v -0.875000 0.073223 1.676777 +v -0.875000 0.250000 1.750000 +v -0.875000 0.250000 -1.375000 +v -0.875000 0.161612 -1.411611 +v -0.875000 0.125000 -1.500000 +v -0.875000 0.161612 -1.588388 +v -0.937500 0.250000 -1.625000 +v -0.750000 0.250000 1.750000 +v -0.750000 0.073223 1.323223 +v -0.750000 0.000000 1.500000 +v -0.937500 0.250000 -1.375000 +v -0.937500 0.161612 -1.411611 +v -0.937500 0.125000 -1.500000 +v -0.937500 0.161612 -1.588388 +v -0.875000 0.161612 1.588389 +v -0.875000 0.125000 1.500000 +v -0.875000 0.161612 1.411612 +v -0.937500 0.250000 1.375000 +v -0.937500 0.250000 1.625000 +v -0.937500 0.161612 1.588389 +v -0.937500 0.125000 1.500000 +v -0.937500 0.161612 1.411612 +vt 0.543210 0.090909 +vt 0.049383 0.454545 +vt 0.049383 0.090909 +vt 0.049383 0.090909 +vt 0.543210 0.454545 +vt 0.049383 0.454545 +vt 0.543210 0.000000 +vt 0.049383 0.000000 +vt 0.049383 0.545455 +vt 0.543210 0.545455 +vt 0.592593 0.454545 +vt 0.543210 0.090909 +vt 0.592593 0.090909 +vt -0.000000 0.090909 +vt -0.000000 0.454545 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.049383 0.727273 +vt -0.000000 0.636364 +vt 0.049383 0.636364 +vt 0.049383 0.818182 +vt 0.098765 0.909091 +vt 0.049383 0.909091 +vt 0.148148 0.727273 +vt 0.098765 0.636364 +vt 0.148148 0.636364 +vt 0.098765 0.727273 +vt 0.098765 0.545455 +vt 0.049383 0.545455 +vt 0.098765 0.818182 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.345679 0.772727 +vt 0.271605 0.681818 +vt 0.345679 0.681818 +vt 0.271605 0.772727 +vt 0.222222 0.681818 +vt 0.222222 0.772727 +vt 0.148148 0.681818 +vt 0.222222 0.909091 +vt 0.271605 1.000000 +vt 0.222222 1.000000 +vt 0.271605 0.545455 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.469136 0.590909 +vt 0.456790 0.590909 +vt 0.419753 0.568182 +vt 0.432099 0.590909 +vt 0.419753 0.590909 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.349457 0.574879 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.975309 0.022727 +vt 0.604938 0.295455 +vt 0.604938 0.022727 +vt 0.987654 0.295455 +vt 0.987654 0.022727 +vt 0.592593 0.022727 +vt 0.592593 0.295455 +vt 0.592593 0.318182 +vt 0.975309 0.295455 +vt 0.987654 0.318182 +vt 0.987654 0.000000 +vt 0.592593 0.000000 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.456790 0.568182 +vt 0.438272 0.590909 +vt 0.438272 0.568182 +vt 0.419210 0.590495 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.475309 0.568182 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.475309 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.456790 0.590909 +vt 0.419753 0.590909 +vt 0.419753 0.568182 +vt 0.493827 0.568182 +vt 0.475309 0.590909 +vt 0.358021 0.568349 +vt 0.366584 0.574879 +vt 0.370132 0.590644 +vt 0.377874 0.558974 +vt 0.394996 0.545918 +vt 0.412118 0.558974 +vt 0.543210 0.454545 +vt -0.000000 0.727273 +vt -0.000000 0.727273 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.148148 0.772727 +vt 0.271605 0.909091 +vt 0.222222 0.545455 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.487654 0.590909 +vt 0.370132 0.590644 +vt 0.345910 0.590644 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.450617 0.590909 +vt 0.450617 0.590909 +vt 0.412118 0.558974 +vt 0.370781 0.590495 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.469136 0.590909 +vt 0.432099 0.590909 +vt 0.487654 0.590909 +vt 0.345910 0.590644 +vt 0.349457 0.574879 +vt 0.419210 0.590495 +vt 0.370781 0.590495 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.493827 0.545455 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.456790 0.602273 +vt 0.438272 0.545455 +vt 0.493827 0.545455 +vt 0.419753 0.602273 +vt 0.475309 0.602273 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.438272 0.545455 +vt 0.419753 0.545455 +vt 0.438272 0.602273 +vt 0.475309 0.602273 +vt 0.475309 0.545455 +vt 0.456790 0.545455 +vt 0.419753 0.602273 +vt 0.456790 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vt 0.469136 0.602273 +vt 0.432099 0.602273 +vt 0.487654 0.602273 +vt 0.450617 0.602273 +vt 0.450617 0.602273 +vt 0.487654 0.602273 +vt 0.493827 0.545455 +vt 0.432099 0.602273 +vt 0.469136 0.602273 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 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.0000 0.0000 1.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 -0.3827 0.9239 +s off +f 3/1/1 2/2/1 1/3/1 +f 7/4/2 5/5/2 6/6/2 +f 4/7/3 7/4/3 2/8/3 +f 1/9/4 5/5/4 3/10/4 +f 3/11/5 8/12/5 4/13/5 +f 2/14/6 6/6/6 1/15/6 +f 10/16/4 11/17/4 9/18/4 +f 12/19/5 15/20/5 11/21/5 +f 16/22/3 13/23/3 15/24/3 +f 14/25/6 9/18/6 13/23/6 +f 15/26/1 9/18/1 11/27/1 +f 12/19/2 14/25/2 16/28/2 +f 18/29/4 19/30/4 17/31/4 +f 20/32/5 23/33/5 19/34/5 +f 24/35/3 21/36/3 23/37/3 +f 22/38/6 17/31/6 21/36/6 +f 23/39/1 17/31/1 19/40/1 +f 20/32/2 22/38/2 24/41/2 +f 26/42/4 27/43/4 25/44/4 +f 28/45/5 31/46/5 27/43/5 +f 32/47/3 29/48/3 31/46/3 +f 30/49/6 25/50/6 29/51/6 +f 31/46/1 25/52/1 27/43/1 +f 28/45/2 30/49/2 32/47/2 +f 34/53/4 35/54/4 33/55/4 +f 36/56/5 39/57/5 35/54/5 +f 40/58/3 37/59/3 39/57/3 +f 38/60/6 33/61/6 37/62/6 +f 39/57/1 33/63/1 35/54/1 +f 36/56/2 38/60/2 40/58/2 +f 58/64/3 75/65/3 52/66/3 +f 55/67/3 64/68/3 56/69/3 +f 49/70/4 43/71/4 68/72/4 +f 53/73/3 62/74/3 54/75/3 +f 80/76/3 79/77/3 78/78/3 +f 58/64/3 73/79/3 74/80/3 +f 45/81/3 64/82/3 57/83/3 +f 55/67/3 62/84/3 63/85/3 +f 44/86/3 75/87/3 51/88/3 +f 60/89/3 73/90/3 59/91/3 +f 72/92/3 71/93/3 70/94/3 +f 46/95/4 47/96/4 48/97/4 +f 85/98/1 87/99/1 86/100/1 +f 84/101/7 85/98/7 83/102/7 +f 81/103/8 87/99/8 82/104/8 +f 82/105/3 88/106/3 84/107/3 +f 83/108/4 86/100/4 81/109/4 +f 106/110/4 123/111/4 100/112/4 +f 103/113/4 112/114/4 104/115/4 +f 97/116/3 91/117/3 116/118/3 +f 101/119/4 110/120/4 102/121/4 +f 127/122/4 126/123/4 125/124/4 +f 107/125/4 122/126/4 106/110/4 +f 104/115/4 105/127/4 93/128/4 +f 102/121/4 111/129/4 103/113/4 +f 100/112/4 99/130/4 92/131/4 +f 108/132/4 121/133/4 107/125/4 +f 119/134/4 118/135/4 117/136/4 +f 94/137/3 95/138/3 96/139/3 +f 3/1/1 4/140/1 2/2/1 +f 7/4/2 8/12/2 5/5/2 +f 4/7/3 8/12/3 7/4/3 +f 1/9/4 6/6/4 5/5/4 +f 3/11/5 5/5/5 8/12/5 +f 2/14/6 7/4/6 6/6/6 +f 10/16/4 12/141/4 11/17/4 +f 12/19/5 16/28/5 15/20/5 +f 16/22/3 14/25/3 13/23/3 +f 14/25/6 10/16/6 9/18/6 +f 15/26/1 13/23/1 9/18/1 +f 12/19/2 10/16/2 14/25/2 +f 18/29/4 20/142/4 19/30/4 +f 20/32/5 24/41/5 23/33/5 +f 24/35/3 22/38/3 21/36/3 +f 22/38/6 18/29/6 17/31/6 +f 23/39/1 21/36/1 17/31/1 +f 20/32/2 18/29/2 22/38/2 +f 26/42/4 28/45/4 27/43/4 +f 28/45/5 32/47/5 31/46/5 +f 32/47/3 30/143/3 29/48/3 +f 30/49/6 26/144/6 25/50/6 +f 31/46/1 29/145/1 25/52/1 +f 28/45/2 26/144/2 30/49/2 +f 34/53/4 36/56/4 35/54/4 +f 36/56/5 40/58/5 39/57/5 +f 40/58/3 38/146/3 37/59/3 +f 38/60/6 34/147/6 33/61/6 +f 39/57/1 37/148/1 33/63/1 +f 36/56/2 34/147/2 38/60/2 +f 58/64/3 74/149/3 75/65/3 +f 55/67/3 63/150/3 64/68/3 +f 68/72/4 67/151/4 49/70/4 +f 49/70/4 66/152/4 43/71/4 +f 53/73/3 61/153/3 62/74/3 +f 77/154/3 76/155/3 78/78/3 +f 76/155/3 80/76/3 78/78/3 +f 58/64/3 59/91/3 73/79/3 +f 45/81/3 56/69/3 64/82/3 +f 55/67/3 54/75/3 62/84/3 +f 44/86/3 52/66/3 75/87/3 +f 60/89/3 41/156/3 73/90/3 +f 69/157/3 65/158/3 70/94/3 +f 65/158/3 72/92/3 70/94/3 +f 42/159/4 50/160/4 48/97/4 +f 50/160/4 46/95/4 48/97/4 +f 85/98/1 88/106/1 87/99/1 +f 84/101/7 88/106/7 85/98/7 +f 81/103/8 86/100/8 87/99/8 +f 82/105/3 87/99/3 88/106/3 +f 83/108/4 85/98/4 86/100/4 +f 106/110/4 122/161/4 123/111/4 +f 103/113/4 111/162/4 112/114/4 +f 116/118/3 115/163/3 97/116/3 +f 97/116/3 114/164/3 91/117/3 +f 101/119/4 109/165/4 110/120/4 +f 125/124/4 124/166/4 128/167/4 +f 128/167/4 127/122/4 125/124/4 +f 107/125/4 121/168/4 122/126/4 +f 104/115/4 112/169/4 105/127/4 +f 102/121/4 110/170/4 111/129/4 +f 100/112/4 123/171/4 99/130/4 +f 108/132/4 89/172/4 121/133/4 +f 117/136/4 113/173/4 120/174/4 +f 120/174/4 119/134/4 117/136/4 +f 90/175/3 98/176/3 96/139/3 +f 98/176/3 94/137/3 96/139/3 +s 1 +f 46/177/7 55/67/1 47/178/1 +f 73/79/7 79/179/1 74/80/1 +f 47/178/1 56/69/8 48/180/8 +f 50/181/9 54/75/7 46/177/7 +f 75/87/8 76/182/10 51/88/10 +f 41/156/9 78/183/7 73/90/7 +f 48/180/8 45/81/10 42/184/10 +f 74/149/1 80/185/8 75/65/8 +f 67/186/8 44/86/10 49/187/10 +f 63/150/1 72/188/8 64/68/8 +f 61/153/9 70/189/7 62/74/7 +f 66/190/9 59/91/7 43/191/7 +f 68/192/1 52/66/8 67/186/8 +f 64/82/8 65/193/10 57/83/10 +f 62/84/7 71/194/1 63/85/1 +f 43/191/7 58/64/1 68/192/1 +f 94/195/8 103/113/1 95/196/1 +f 121/168/8 127/197/1 122/126/1 +f 95/196/1 104/115/7 96/198/7 +f 98/199/10 102/121/8 94/195/8 +f 123/171/7 124/200/9 99/130/9 +f 89/172/10 126/201/8 121/133/8 +f 90/202/9 104/115/7 93/128/9 +f 122/161/1 128/203/7 123/111/7 +f 115/204/7 92/131/9 97/205/9 +f 111/162/1 120/206/7 112/114/7 +f 109/165/10 118/207/8 110/120/8 +f 91/208/8 108/132/10 107/125/8 +f 116/209/1 100/112/7 115/204/7 +f 112/169/7 113/210/9 105/127/9 +f 110/170/8 119/211/1 111/129/1 +f 91/208/8 106/110/1 116/209/1 +f 46/177/7 54/75/7 55/67/1 +f 73/79/7 78/212/7 79/179/1 +f 47/178/1 55/67/1 56/69/8 +f 50/181/9 53/73/9 54/75/7 +f 75/87/8 80/213/8 76/182/10 +f 41/156/9 77/214/9 78/183/7 +f 48/180/8 56/69/8 45/81/10 +f 74/149/1 79/215/1 80/185/8 +f 67/186/8 52/66/8 44/86/10 +f 63/150/1 71/216/1 72/188/8 +f 61/153/9 69/217/9 70/189/7 +f 66/190/9 60/89/9 59/91/7 +f 68/192/1 58/64/1 52/66/8 +f 64/82/8 72/218/8 65/193/10 +f 62/84/7 70/219/7 71/194/1 +f 43/191/7 59/91/7 58/64/1 +f 94/195/8 102/121/8 103/113/1 +f 121/168/8 126/220/8 127/197/1 +f 95/196/1 103/113/1 104/115/7 +f 98/199/10 101/119/10 102/121/8 +f 123/171/7 128/221/7 124/200/9 +f 89/172/10 125/222/10 126/201/8 +f 90/202/9 96/198/7 104/115/7 +f 122/161/1 127/223/1 128/203/7 +f 115/204/7 100/112/7 92/131/9 +f 111/162/1 119/224/1 120/206/7 +f 109/165/10 117/225/10 118/207/8 +f 91/208/8 114/226/10 108/132/10 +f 116/209/1 106/110/1 100/112/7 +f 112/169/7 120/227/7 113/210/9 +f 110/170/8 118/228/8 119/211/1 +f 91/208/8 107/125/8 106/110/1 diff --git a/src/main/resources/assets/hbm/models/vehicles/tunnel_bore.obj b/src/main/resources/assets/hbm/models/vehicles/tunnel_bore.obj new file mode 100644 index 000000000..94434ba94 --- /dev/null +++ b/src/main/resources/assets/hbm/models/vehicles/tunnel_bore.obj @@ -0,0 +1,7617 @@ +# Blender v2.79 (sub 0) OBJ File: 'tunnel_bore.blend' +# www.blender.org +o Plane +v 0.750000 0.073223 3.051777 +v 0.750000 0.250000 3.125000 +v 0.750000 0.426777 3.051777 +v 0.750000 0.500000 2.875000 +v 0.750000 0.500000 2.125000 +v 0.750000 0.426777 2.301777 +v 0.750000 0.250000 2.375000 +v 0.750000 0.073223 2.301777 +v 0.750000 0.000000 2.125000 +v 0.750000 0.073223 1.948223 +v 0.750000 0.250000 1.875000 +v 0.750000 0.426777 1.948223 +v -0.750000 0.500000 2.125000 +v -0.750000 0.426777 2.301777 +v -0.750000 0.250000 2.375000 +v -0.750000 0.073223 2.301777 +v -0.750000 0.000000 2.125000 +v -0.750000 0.073223 1.948223 +v -0.750000 0.250000 1.875000 +v -0.750000 0.426777 1.948223 +v 0.687500 0.426777 2.301777 +v 0.687500 0.500000 2.125000 +v 0.687500 0.250000 2.375000 +v 0.687500 0.073223 2.301777 +v 0.687500 0.000000 2.125000 +v 0.687500 0.073223 1.948223 +v 0.687500 0.250000 1.875000 +v 0.687500 0.426777 1.948223 +v -0.687500 0.426777 2.301777 +v -0.687500 0.500000 2.125000 +v -0.687500 0.250000 2.375000 +v -0.687500 0.073223 2.301777 +v -0.687500 0.000000 2.125000 +v -0.687500 0.073223 1.948223 +v -0.687500 0.250000 1.875000 +v -0.687500 0.426777 1.948223 +v 0.750000 0.382582 2.257582 +v 0.750000 0.437500 2.125000 +v 0.750000 0.250000 2.312500 +v 0.750000 0.117417 2.257582 +v 0.750000 0.062500 2.125000 +v 0.750000 0.117418 1.992417 +v 0.750000 0.250000 1.937500 +v 0.750000 0.382582 1.992417 +v 0.812500 0.382582 2.257582 +v 0.812500 0.437500 2.125000 +v 0.812500 0.250000 2.312500 +v 0.812500 0.117417 2.257582 +v 0.812500 0.062500 2.125000 +v 0.812500 0.117418 1.992417 +v 0.812500 0.250000 1.937500 +v 0.812500 0.382582 1.992417 +v -0.750000 0.382582 2.257582 +v -0.750000 0.437500 2.125000 +v -0.750000 0.250000 2.312500 +v -0.750000 0.117417 2.257582 +v -0.750000 0.062500 2.125000 +v -0.750000 0.117418 1.992417 +v -0.750000 0.250000 1.937500 +v -0.750000 0.382582 1.992417 +v -0.812500 0.382582 2.257582 +v -0.812500 0.437500 2.125000 +v -0.812500 0.250000 2.312500 +v -0.812500 0.117417 2.257582 +v -0.812500 0.062500 2.125000 +v -0.812500 0.117418 1.992417 +v -0.812500 0.250000 1.937500 +v -0.812500 0.382582 1.992417 +v 0.750000 0.000000 2.875000 +v 0.750000 0.073223 2.698223 +v 0.750000 0.250000 2.625000 +v 0.750000 0.426777 2.698223 +v -0.750000 0.500000 2.875000 +v -0.750000 0.426777 3.051777 +v -0.750000 0.250000 3.125000 +v -0.750000 0.073223 3.051777 +v -0.750000 0.000000 2.875000 +v -0.750000 0.073223 2.698223 +v -0.750000 0.250000 2.625000 +v -0.750000 0.426777 2.698223 +v 0.687500 0.426777 3.051777 +v 0.687500 0.500000 2.875000 +v 0.687500 0.250000 3.125000 +v 0.687500 0.073223 3.051777 +v 0.687500 0.000000 2.875000 +v 0.687500 0.073223 2.698223 +v 0.687500 0.250000 2.625000 +v 0.687500 0.426777 2.698223 +v -0.687500 0.426777 3.051777 +v -0.687500 0.500000 2.875000 +v -0.687500 0.250000 3.125000 +v -0.687500 0.073223 3.051777 +v -0.687500 0.000000 2.875000 +v -0.687500 0.073223 2.698223 +v -0.687500 0.250000 2.625000 +v -0.687500 0.426777 2.698223 +v 0.750000 0.382582 3.007583 +v 0.750000 0.437500 2.875000 +v 0.750000 0.250000 3.062500 +v 0.750000 0.117417 3.007583 +v 0.750000 0.062500 2.875000 +v 0.750000 0.117418 2.742417 +v 0.750000 0.250000 2.687500 +v 0.750000 0.382582 2.742417 +v 0.812500 0.382582 3.007583 +v 0.812500 0.437500 2.875000 +v 0.812500 0.250000 3.062500 +v 0.812500 0.117417 3.007583 +v 0.812500 0.062500 2.875000 +v 0.812500 0.117418 2.742417 +v 0.812500 0.250000 2.687500 +v 0.812500 0.382582 2.742417 +v -0.750000 0.382582 3.007583 +v -0.750000 0.437500 2.875000 +v -0.750000 0.250000 3.062500 +v -0.750000 0.117417 3.007583 +v -0.750000 0.062500 2.875000 +v -0.750000 0.117418 2.742417 +v -0.750000 0.250000 2.687500 +v -0.750000 0.382582 2.742417 +v -0.812500 0.382582 3.007583 +v -0.812500 0.437500 2.875000 +v -0.812500 0.250000 3.062500 +v -0.812500 0.117417 3.007583 +v -0.812500 0.062500 2.875000 +v -0.812500 0.117418 2.742417 +v -0.812500 0.250000 2.687500 +v -0.812500 0.382582 2.742417 +v 1.000000 0.625000 3.250000 +v 1.000000 0.625000 1.750000 +v -1.000000 0.625000 3.250000 +v -1.000000 0.625000 1.750000 +v 1.000000 0.250000 3.250000 +v 1.000000 0.250000 1.750000 +v -1.000000 0.250000 3.250000 +v -1.000000 0.250000 1.750000 +v 1.000000 0.250000 1.625000 +v -1.000000 0.250000 1.625000 +v 1.000000 0.250000 3.375000 +v -1.000000 0.250000 3.375000 +v 1.000000 0.750000 1.625000 +v -1.000000 0.750000 1.625000 +v 1.000000 0.750000 3.375000 +v -1.000000 0.750000 3.375000 +v 0.687500 0.125000 3.125000 +v 0.687500 0.125000 1.875000 +v -0.687500 0.125000 3.125000 +v -0.687500 0.125000 1.875000 +v 0.687500 0.250000 1.750000 +v -0.687500 0.250000 1.750000 +v 0.687500 0.250000 3.250000 +v -0.687500 0.250000 3.250000 +v 0.687500 0.625000 1.750000 +v 0.687500 0.625000 3.250000 +v -0.687500 0.625000 1.750000 +v -0.687500 0.625000 3.250000 +v 0.750000 0.073223 -1.948224 +v 0.750000 0.250000 -1.875000 +v 0.750000 0.426777 -1.948224 +v 0.750000 0.500000 -2.125000 +v 0.750000 0.500000 -2.875000 +v 0.750000 0.426777 -2.698223 +v 0.750000 0.250000 -2.625000 +v 0.750000 0.073223 -2.698223 +v 0.750000 0.000000 -2.875000 +v 0.750000 0.073223 -3.051777 +v 0.750000 0.250000 -3.125000 +v 0.750000 0.426777 -3.051777 +v -0.750000 0.500000 -2.875000 +v -0.750000 0.426777 -2.698223 +v -0.750000 0.250000 -2.625000 +v -0.750000 0.073223 -2.698223 +v -0.750000 0.000000 -2.875000 +v -0.750000 0.073223 -3.051777 +v -0.750000 0.250000 -3.125000 +v -0.750000 0.426777 -3.051777 +v 0.687500 0.426777 -2.698223 +v 0.687500 0.500000 -2.875000 +v 0.687500 0.250000 -2.625000 +v 0.687500 0.073223 -2.698223 +v 0.687500 0.000000 -2.875000 +v 0.687500 0.073223 -3.051777 +v 0.687500 0.250000 -3.125000 +v 0.687500 0.426777 -3.051777 +v -0.687500 0.426777 -2.698223 +v -0.687500 0.500000 -2.875000 +v -0.687500 0.250000 -2.625000 +v -0.687500 0.073223 -2.698223 +v -0.687500 0.000000 -2.875000 +v -0.687500 0.073223 -3.051777 +v -0.687500 0.250000 -3.125000 +v -0.687500 0.426777 -3.051777 +v 0.750000 0.382582 -2.742418 +v 0.750000 0.437500 -2.875000 +v 0.750000 0.250000 -2.687500 +v 0.750000 0.117417 -2.742418 +v 0.750000 0.062500 -2.875000 +v 0.750000 0.117418 -3.007583 +v 0.750000 0.250000 -3.062500 +v 0.750000 0.382582 -3.007583 +v 0.812500 0.382582 -2.742418 +v 0.812500 0.437500 -2.875000 +v 0.812500 0.250000 -2.687500 +v 0.812500 0.117417 -2.742418 +v 0.812500 0.062500 -2.875000 +v 0.812500 0.117418 -3.007583 +v 0.812500 0.250000 -3.062500 +v 0.812500 0.382582 -3.007583 +v -0.750000 0.382582 -2.742418 +v -0.750000 0.437500 -2.875000 +v -0.750000 0.250000 -2.687500 +v -0.750000 0.117417 -2.742418 +v -0.750000 0.062500 -2.875000 +v -0.750000 0.117418 -3.007583 +v -0.750000 0.250000 -3.062500 +v -0.750000 0.382582 -3.007583 +v -0.812500 0.382582 -2.742418 +v -0.812500 0.437500 -2.875000 +v -0.812500 0.250000 -2.687500 +v -0.812500 0.117417 -2.742418 +v -0.812500 0.062500 -2.875000 +v -0.812500 0.117418 -3.007583 +v -0.812500 0.250000 -3.062500 +v -0.812500 0.382582 -3.007583 +v 0.750000 0.000000 -2.125000 +v 0.750000 0.073223 -2.301777 +v 0.750000 0.250000 -2.375000 +v 0.750000 0.426777 -2.301777 +v -0.750000 0.500000 -2.125000 +v -0.750000 0.426777 -1.948223 +v -0.750000 0.250000 -1.875000 +v -0.750000 0.073223 -1.948223 +v -0.750000 0.000000 -2.125000 +v -0.750000 0.073223 -2.301777 +v -0.750000 0.250000 -2.375000 +v -0.750000 0.426777 -2.301777 +v 0.687500 0.426777 -1.948224 +v 0.687500 0.500000 -2.125000 +v 0.687500 0.250000 -1.875000 +v 0.687500 0.073223 -1.948224 +v 0.687500 0.000000 -2.125000 +v 0.687500 0.073223 -2.301777 +v 0.687500 0.250000 -2.375000 +v 0.687500 0.426777 -2.301777 +v -0.687500 0.426777 -1.948223 +v -0.687500 0.500000 -2.125000 +v -0.687500 0.250000 -1.875000 +v -0.687500 0.073223 -1.948223 +v -0.687500 0.000000 -2.125000 +v -0.687500 0.073223 -2.301777 +v -0.687500 0.250000 -2.375000 +v -0.687500 0.426777 -2.301777 +v 0.750000 0.382582 -1.992417 +v 0.750000 0.437500 -2.125000 +v 0.750000 0.250000 -1.937500 +v 0.750000 0.117417 -1.992417 +v 0.750000 0.062500 -2.125000 +v 0.750000 0.117418 -2.257583 +v 0.750000 0.250000 -2.312500 +v 0.750000 0.382582 -2.257583 +v 0.812500 0.382582 -1.992417 +v 0.812500 0.437500 -2.125000 +v 0.812500 0.250000 -1.937500 +v 0.812500 0.117417 -1.992417 +v 0.812500 0.062500 -2.125000 +v 0.812500 0.117418 -2.257583 +v 0.812500 0.250000 -2.312500 +v 0.812500 0.382582 -2.257583 +v -0.750000 0.382582 -1.992417 +v -0.750000 0.437500 -2.125000 +v -0.750000 0.250000 -1.937500 +v -0.750000 0.117417 -1.992417 +v -0.750000 0.062500 -2.125000 +v -0.750000 0.117418 -2.257583 +v -0.750000 0.250000 -2.312500 +v -0.750000 0.382582 -2.257583 +v -0.812500 0.382582 -1.992417 +v -0.812500 0.437500 -2.125000 +v -0.812500 0.250000 -1.937500 +v -0.812500 0.117417 -1.992417 +v -0.812500 0.062500 -2.125000 +v -0.812500 0.117418 -2.257583 +v -0.812500 0.250000 -2.312500 +v -0.812500 0.382582 -2.257583 +v 1.000000 0.625000 -1.750000 +v 1.000000 0.625000 -3.250000 +v -1.000000 0.625000 -1.750000 +v -1.000000 0.625000 -3.250000 +v 1.000000 0.250000 -1.750000 +v 1.000000 0.250000 -3.250000 +v -1.000000 0.250000 -1.750000 +v -1.000000 0.250000 -3.250000 +v 1.000000 0.250000 -3.375000 +v -1.000000 0.250000 -3.375000 +v 1.000000 0.250000 -1.625000 +v -1.000000 0.250000 -1.625000 +v 1.000000 0.750000 -3.375000 +v -1.000000 0.750000 -3.375000 +v 1.000000 0.750000 -1.625000 +v -1.000000 0.750000 -1.625000 +v 0.687500 0.125000 -1.875000 +v 0.687500 0.125000 -3.125000 +v -0.687500 0.125000 -1.875000 +v -0.687500 0.125000 -3.125000 +v 0.687500 0.250000 -3.250000 +v -0.687500 0.250000 -3.250000 +v 0.687500 0.250000 -1.750000 +v -0.687500 0.250000 -1.750000 +v 0.687500 0.625000 -3.250000 +v 0.687500 0.625000 -1.750000 +v -0.687500 0.625000 -3.250000 +v -0.687500 0.625000 -1.750000 +v -0.750000 0.750000 3.500000 +v 0.750000 0.750000 3.500000 +v -0.750000 0.750000 -3.500000 +v 0.750000 0.750000 -3.500000 +v -0.750000 1.000000 -3.500000 +v -0.750000 1.000000 3.500000 +v 0.750000 1.000000 3.500000 +v 0.750000 1.000000 -3.500000 +v -0.750000 0.750000 -1.500000 +v -0.750000 0.750000 1.500000 +v 0.750000 0.750000 1.500000 +v 0.750000 0.750000 -1.500000 +v -0.750000 0.250000 -1.000000 +v -0.750000 0.250000 1.000000 +v 0.750000 0.250000 1.000000 +v 0.750000 0.250000 -1.000000 +v 0.530330 1.469670 3.750000 +v 0.750000 2.000000 3.750000 +v 0.530330 2.530330 3.750000 +v 0.000000 2.750000 3.750000 +v -0.530330 2.530330 3.750000 +v -0.750000 2.000000 3.750000 +v -0.530330 1.469670 3.750000 +v -0.000000 1.250000 3.750000 +v -1.000000 1.000000 3.500000 +v 1.000000 1.000000 3.500000 +v -1.000000 1.000000 -0.500000 +v 1.000000 1.000000 -0.500000 +v -1.000000 2.500000 -0.500000 +v -1.000000 2.500000 3.500000 +v 1.000000 2.500000 3.500000 +v 1.000000 2.500000 -0.500000 +v -0.250000 3.000000 -0.500000 +v -0.250000 3.000000 3.500000 +v 0.250000 3.000000 3.500000 +v 0.250000 3.000000 -0.500000 +v 1.000000 1.187500 -0.312500 +v 1.000000 1.812500 -0.312500 +v 1.000000 1.187500 0.062500 +v 1.000000 1.812500 0.062500 +v 0.750000 1.187500 -0.312500 +v 0.750000 1.812500 -0.312500 +v 0.750000 1.187500 0.062500 +v 0.750000 1.812500 0.062500 +v 0.750000 1.375000 -0.250000 +v 0.750000 1.463388 -0.213388 +v 0.750000 1.500000 -0.125000 +v 0.750000 1.463388 -0.036612 +v 0.750000 1.375000 -0.000000 +v 0.750000 1.286612 -0.036612 +v 0.750000 1.250000 -0.125000 +v 0.750000 1.286612 -0.213388 +v 1.000000 1.375000 -0.250000 +v 1.000000 1.463388 -0.213388 +v 1.000000 1.500000 -0.125000 +v 1.000000 1.463388 -0.036612 +v 1.000000 1.375000 -0.000000 +v 1.000000 1.286612 -0.036612 +v 1.000000 1.250000 -0.125000 +v 1.000000 1.286612 -0.213388 +v 1.176777 1.375000 -0.176777 +v 1.150888 1.463388 -0.150888 +v 1.088388 1.500000 -0.088388 +v 1.025888 1.463388 -0.025888 +v 1.025888 1.286612 -0.025888 +v 1.088388 1.250000 -0.088388 +v 1.150888 1.286612 -0.150888 +v 1.250000 1.375000 -0.000000 +v 1.213388 1.463388 -0.000000 +v 1.125000 1.500000 -0.000000 +v 1.036612 1.463388 -0.000000 +v 1.036612 1.286612 -0.000000 +v 1.125000 1.250000 -0.000000 +v 1.213388 1.286612 0.000000 +v 1.000000 1.375000 2.750000 +v 1.250000 1.375000 2.750000 +v 1.213388 1.463388 2.750000 +v 1.125000 1.500000 2.750000 +v 1.036612 1.463388 2.750000 +v 1.036612 1.286612 2.750000 +v 1.125000 1.250000 2.750000 +v 1.213388 1.286612 2.750000 +v 1.000000 1.411612 2.838388 +v 1.250000 1.411612 2.838388 +v 1.213388 1.474112 2.775888 +v 1.036612 1.474112 2.775888 +v 1.036612 1.349112 2.900888 +v 1.125000 1.323223 2.926777 +v 1.213388 1.349112 2.900888 +v 1.000000 1.500000 2.875000 +v 1.250000 1.500000 2.875000 +v 1.213388 1.500000 2.786612 +v 1.036612 1.500000 2.786612 +v 1.036612 1.500000 2.963388 +v 1.125000 1.500000 3.000000 +v 1.213388 1.500000 2.963388 +v 1.125000 2.000000 2.750000 +v 1.000000 2.000000 2.875000 +v 1.250000 2.000000 2.875000 +v 1.213388 2.000000 2.786612 +v 1.036612 2.000000 2.786612 +v 1.036612 2.000000 2.963388 +v 1.125000 2.000000 3.000000 +v 1.213388 2.000000 2.963388 +v 1.088388 2.088388 2.750000 +v 1.176777 2.176777 2.875000 +v 1.150888 2.150888 2.786612 +v 1.025888 2.025888 2.786612 +v 1.025888 2.025888 2.963388 +v 1.088388 2.088388 3.000000 +v 1.150888 2.150888 2.963388 +v 1.000000 2.125000 2.750000 +v 1.000000 2.250000 2.875000 +v 1.000000 2.213388 2.786612 +v 1.000000 2.036612 2.786612 +v 1.000000 2.036612 2.963388 +v 1.000000 2.125000 3.000000 +v 1.000000 2.213388 2.963388 +v 0.750000 1.625000 -0.250000 +v 0.750000 1.713388 -0.213388 +v 0.750000 1.750000 -0.125000 +v 0.750000 1.713388 -0.036612 +v 0.750000 1.625000 -0.000000 +v 0.750000 1.536612 -0.036612 +v 0.750000 1.500000 -0.125000 +v 0.750000 1.536612 -0.213388 +v 1.000000 1.625000 -0.250000 +v 1.000000 1.713388 -0.213388 +v 1.000000 1.750000 -0.125000 +v 1.000000 1.713388 -0.036612 +v 1.000000 1.625000 -0.000000 +v 1.000000 1.536612 -0.036612 +v 1.000000 1.500000 -0.125000 +v 1.000000 1.536612 -0.213388 +v 1.176777 1.625000 -0.176777 +v 1.150888 1.713388 -0.150888 +v 1.088388 1.750000 -0.088388 +v 1.025888 1.713388 -0.025888 +v 1.025888 1.536612 -0.025888 +v 1.088388 1.500000 -0.088388 +v 1.150888 1.536612 -0.150888 +v 1.250000 1.625000 -0.000000 +v 1.213388 1.713388 -0.000000 +v 1.125000 1.750000 -0.000000 +v 1.036612 1.713388 -0.000000 +v 1.036612 1.536612 -0.000000 +v 1.125000 1.500000 -0.000000 +v 1.213388 1.536612 0.000000 +v 1.000000 1.625000 2.500000 +v 1.250000 1.625000 2.500000 +v 1.213388 1.713388 2.500000 +v 1.125000 1.750000 2.500000 +v 1.036612 1.713388 2.500000 +v 1.036612 1.536612 2.500000 +v 1.125000 1.500000 2.500000 +v 1.213388 1.536612 2.500000 +v 1.000000 1.661612 2.588388 +v 1.250000 1.661612 2.588388 +v 1.213388 1.724112 2.525888 +v 1.036612 1.724112 2.525888 +v 1.036612 1.599112 2.650888 +v 1.125000 1.573223 2.676777 +v 1.213388 1.599112 2.650888 +v 1.000000 1.750000 2.625000 +v 1.250000 1.750000 2.625000 +v 1.213388 1.750000 2.536612 +v 1.036612 1.750000 2.536612 +v 1.036612 1.750000 2.713388 +v 1.125000 1.750000 2.750000 +v 1.213388 1.750000 2.713388 +v 1.125000 2.000000 2.500000 +v 1.000000 2.250000 2.625000 +v 1.250000 2.000000 2.625000 +v 1.213388 2.000000 2.536612 +v 1.036612 2.000000 2.536612 +v 1.036612 2.000000 2.713388 +v 1.125000 2.000000 2.750000 +v 1.213388 2.000000 2.713388 +v 1.088388 2.088388 2.500000 +v 1.176777 2.176777 2.625000 +v 1.150888 2.150888 2.536612 +v 1.025888 2.025888 2.536612 +v 1.025888 2.025888 2.713388 +v 1.088388 2.088388 2.750000 +v 1.150888 2.150888 2.713388 +v 1.000000 2.125000 2.500000 +v 1.000000 2.250000 2.625000 +v 1.000000 2.213388 2.536612 +v 1.000000 2.036612 2.536612 +v 1.000000 2.036612 2.713388 +v 1.000000 2.125000 2.750000 +v 1.000000 2.213388 2.713388 +v -0.750000 1.187500 -0.312500 +v -0.750000 1.812500 -0.312500 +v -0.750000 1.187500 0.062500 +v -0.750000 1.812500 0.062500 +v -1.000000 1.187500 -0.312500 +v -1.000000 1.812500 -0.312500 +v -1.000000 1.187500 0.062500 +v -1.000000 1.812500 0.062500 +v -0.750000 1.375000 -0.250000 +v -0.750000 1.463388 -0.213388 +v -0.750000 1.500000 -0.125000 +v -0.750000 1.463388 -0.036612 +v -0.750000 1.375000 0.000000 +v -0.750000 1.286612 -0.036612 +v -0.750000 1.250000 -0.125000 +v -0.750000 1.286612 -0.213388 +v -1.000000 1.375000 -0.250000 +v -1.000000 1.463388 -0.213388 +v -1.000000 1.500000 -0.125000 +v -1.000000 1.463388 -0.036612 +v -1.000000 1.375000 0.000000 +v -1.000000 1.286612 -0.036612 +v -1.000000 1.250000 -0.125000 +v -1.000000 1.286612 -0.213388 +v -1.176777 1.375000 -0.176777 +v -1.150888 1.463388 -0.150888 +v -1.088388 1.500000 -0.088388 +v -1.025888 1.463388 -0.025888 +v -1.025888 1.286612 -0.025888 +v -1.088388 1.250000 -0.088388 +v -1.150888 1.286612 -0.150888 +v -1.250000 1.375000 -0.000000 +v -1.213388 1.463388 -0.000000 +v -1.125000 1.500000 -0.000000 +v -1.036612 1.463388 -0.000000 +v -1.036612 1.286612 -0.000000 +v -1.125000 1.250000 -0.000000 +v -1.213388 1.286612 0.000000 +v -1.000000 1.375000 2.750000 +v -1.250000 1.375000 2.750000 +v -1.213388 1.463388 2.750000 +v -1.125000 1.500000 2.750000 +v -1.036612 1.463388 2.750000 +v -1.036612 1.286612 2.750000 +v -1.125000 1.250000 2.750000 +v -1.213388 1.286612 2.750000 +v -1.000000 1.411612 2.838388 +v -1.250000 1.411612 2.838388 +v -1.213388 1.474112 2.775888 +v -1.036612 1.474112 2.775888 +v -1.036612 1.349112 2.900888 +v -1.125000 1.323223 2.926777 +v -1.213388 1.349112 2.900888 +v -1.000000 1.500000 2.875000 +v -1.250000 1.500000 2.875000 +v -1.213388 1.500000 2.786612 +v -1.036612 1.500000 2.786612 +v -1.036612 1.500000 2.963388 +v -1.125000 1.500000 3.000000 +v -1.213388 1.500000 2.963388 +v -1.125000 2.000000 2.750000 +v -1.000000 2.000000 2.875000 +v -1.250000 2.000000 2.875000 +v -1.213388 2.000000 2.786612 +v -1.036612 2.000000 2.786612 +v -1.036612 2.000000 2.963388 +v -1.125000 2.000000 3.000000 +v -1.213388 2.000000 2.963388 +v -1.088388 2.088388 2.750000 +v -1.176777 2.176777 2.875000 +v -1.150888 2.150888 2.786612 +v -1.025888 2.025888 2.786612 +v -1.025888 2.025888 2.963388 +v -1.088388 2.088388 3.000000 +v -1.150888 2.150888 2.963388 +v -1.000000 2.125000 2.750000 +v -1.000000 2.250000 2.875000 +v -1.000000 2.213388 2.786612 +v -1.000000 2.036612 2.786612 +v -1.000000 2.036612 2.963388 +v -1.000000 2.125000 3.000000 +v -1.000000 2.213388 2.963388 +v -0.750000 1.625000 -0.250000 +v -0.750000 1.713388 -0.213388 +v -0.750000 1.750000 -0.125000 +v -0.750000 1.713388 -0.036612 +v -0.750000 1.625000 0.000000 +v -0.750000 1.536612 -0.036612 +v -0.750000 1.500000 -0.125000 +v -0.750000 1.536612 -0.213388 +v -1.000000 1.625000 -0.250000 +v -1.000000 1.713388 -0.213388 +v -1.000000 1.750000 -0.125000 +v -1.000000 1.713388 -0.036612 +v -1.000000 1.625000 0.000000 +v -1.000000 1.536612 -0.036612 +v -1.000000 1.500000 -0.125000 +v -1.000000 1.536612 -0.213388 +v -1.176777 1.625000 -0.176777 +v -1.150888 1.713388 -0.150888 +v -1.088388 1.750000 -0.088388 +v -1.025888 1.713388 -0.025888 +v -1.025888 1.536612 -0.025888 +v -1.088388 1.500000 -0.088388 +v -1.150888 1.536612 -0.150888 +v -1.250000 1.625000 -0.000000 +v -1.213388 1.713388 -0.000000 +v -1.125000 1.750000 -0.000000 +v -1.036612 1.713388 -0.000000 +v -1.036612 1.536612 -0.000000 +v -1.125000 1.500000 -0.000000 +v -1.213388 1.536612 0.000000 +v -1.000000 1.625000 2.500000 +v -1.250000 1.625000 2.500000 +v -1.213388 1.713388 2.500000 +v -1.125000 1.750000 2.500000 +v -1.036612 1.713388 2.500000 +v -1.036612 1.536612 2.500000 +v -1.125000 1.500000 2.500000 +v -1.213388 1.536612 2.500000 +v -1.000000 1.661612 2.588388 +v -1.250000 1.661612 2.588388 +v -1.213388 1.724112 2.525888 +v -1.036612 1.724112 2.525888 +v -1.036612 1.599112 2.650888 +v -1.125000 1.573223 2.676777 +v -1.213388 1.599112 2.650888 +v -1.000000 1.750000 2.625000 +v -1.250000 1.750000 2.625000 +v -1.213388 1.750000 2.536612 +v -1.036612 1.750000 2.536612 +v -1.036612 1.750000 2.713388 +v -1.125000 1.750000 2.750000 +v -1.213388 1.750000 2.713388 +v -1.125000 2.000000 2.500000 +v -1.000000 2.250000 2.625000 +v -1.250000 2.000000 2.625000 +v -1.213388 2.000000 2.536612 +v -1.036612 2.000000 2.536612 +v -1.036612 2.000000 2.713388 +v -1.125000 2.000000 2.750000 +v -1.213388 2.000000 2.713388 +v -1.088388 2.088388 2.500000 +v -1.176777 2.176777 2.625000 +v -1.150888 2.150888 2.536612 +v -1.025888 2.025888 2.536612 +v -1.025888 2.025888 2.713388 +v -1.088388 2.088388 2.750000 +v -1.150888 2.150888 2.713388 +v -1.000000 2.125000 2.500000 +v -1.000000 2.250000 2.625000 +v -1.000000 2.213388 2.536612 +v -1.000000 2.036612 2.536612 +v -1.000000 2.036612 2.713388 +v -1.000000 2.125000 2.750000 +v -1.000000 2.213388 2.713388 +v -0.000000 1.250000 3.500000 +v -0.530330 1.469670 3.500000 +v -0.750000 2.000000 3.500000 +v -0.530330 2.530330 3.500000 +v 0.000000 2.750000 3.500000 +v 0.530330 2.530330 3.500000 +v 0.750000 2.000000 3.500000 +v 0.530330 1.469670 3.500000 +v 0.000000 3.500000 4.250000 +v -0.750000 3.299038 4.250000 +v -1.299038 2.750000 4.250000 +v -1.500000 2.000000 4.250000 +v -1.299038 1.250000 4.250000 +v -0.750000 0.700962 4.250000 +v -0.000000 0.500000 4.250000 +v 0.750000 0.700962 4.250000 +v 1.299038 1.250000 4.250000 +v 1.500000 1.999999 4.250000 +v 1.299038 2.749999 4.250000 +v 0.750001 3.299038 4.250000 +v 0.000000 3.500000 5.000000 +v -0.750000 3.299038 5.000000 +v -1.299038 2.750000 5.000000 +v -1.500000 2.000000 5.000000 +v -1.299038 1.250000 5.000000 +v -0.750000 0.700962 5.000000 +v -0.000000 0.500000 5.000000 +v 0.750000 0.700962 5.000000 +v 1.299038 1.250000 5.000000 +v 1.500000 1.999999 5.000000 +v 1.299038 2.749999 5.000000 +v 0.750001 3.299038 5.000000 +v 0.000000 3.312500 5.750000 +v -0.656250 3.136658 5.750000 +v -1.136658 2.656250 5.750000 +v -1.312500 2.000000 5.750000 +v -1.136658 1.343750 5.750000 +v -0.656250 0.863342 5.750000 +v -0.000000 0.687500 5.750000 +v 0.656250 0.863341 5.750000 +v 1.136658 1.343750 5.750000 +v 1.312500 1.999999 5.750000 +v 1.136659 2.656250 5.750000 +v 0.656251 3.136658 5.750000 +v 0.000000 2.937500 6.500000 +v -0.468750 2.811899 6.500000 +v -0.811899 2.468750 6.500000 +v -0.937500 2.000000 6.500000 +v -0.811899 1.531250 6.500000 +v -0.468750 1.188101 6.500000 +v -0.000000 1.062500 6.500000 +v 0.468750 1.188101 6.500000 +v 0.811899 1.531250 6.500000 +v 0.937500 2.000000 6.500000 +v 0.811899 2.468750 6.500000 +v 0.468751 2.811899 6.500000 +v 0.000000 2.375000 7.250000 +v -0.187500 2.324759 7.250000 +v -0.324759 2.187500 7.250000 +v -0.375000 2.000000 7.250000 +v -0.324759 1.812500 7.250000 +v -0.187500 1.675241 7.250000 +v -0.000000 1.625000 7.250000 +v 0.187500 1.675240 7.250000 +v 0.324759 1.812500 7.250000 +v 0.375000 2.000000 7.250000 +v 0.324760 2.187500 7.250000 +v 0.187500 2.324759 7.250000 +v 1.375000 2.249999 4.875000 +v 1.375000 1.749999 4.875000 +v 1.375000 2.249999 4.375000 +v 1.375000 1.749999 4.375000 +v 1.625000 2.249999 4.375000 +v 1.625000 2.249999 4.875000 +v 1.625000 1.749999 4.875000 +v 1.625000 1.749999 4.375000 +v 1.875000 2.374999 4.500000 +v 1.875000 2.374999 4.750000 +v 1.875000 2.124999 4.750000 +v 1.875000 2.124999 4.500000 +v 1.290549 1.913017 5.621202 +v 1.161140 1.430054 5.621202 +v 1.374415 1.890545 5.128798 +v 1.245005 1.407582 5.128798 +v 1.612228 1.826823 5.172210 +v 1.528362 1.849295 5.664614 +v 1.398953 1.366332 5.664614 +v 1.482818 1.343860 5.172210 +v 1.861427 1.889460 5.338723 +v 1.819494 1.900696 5.584925 +v 1.754789 1.659214 5.584925 +v 1.796722 1.647979 5.338723 +v 0.894345 2.249999 6.351577 +v 0.894345 1.749999 6.351577 +v 1.105654 2.249999 5.898423 +v 1.105654 1.749999 5.898423 +v 1.332231 2.249999 6.004077 +v 1.120922 2.249999 6.457232 +v 1.120922 1.749999 6.457232 +v 1.332231 1.749999 6.004077 +v 1.505981 2.374999 6.223021 +v 1.400326 2.374999 6.449597 +v 1.400326 2.124999 6.449597 +v 1.505981 2.124999 6.223021 +v 0.375000 2.249999 7.091506 +v 0.375000 1.749999 7.091506 +v 0.625000 2.249999 6.658494 +v 0.625000 1.749999 6.658494 +v 0.841506 2.249999 6.783494 +v 0.591506 2.249999 7.216506 +v 0.591506 1.749999 7.216506 +v 0.841506 1.749999 6.783494 +v 0.995513 2.374999 7.016747 +v 0.870513 2.374999 7.233253 +v 0.870513 2.124999 7.233253 +v 0.995513 2.124999 7.016747 +v -1.375000 1.750001 4.875000 +v -1.375000 2.250001 4.875000 +v -1.375000 1.750001 4.375000 +v -1.375000 2.250001 4.375000 +v -1.625000 1.750001 4.375000 +v -1.625000 1.750001 4.875000 +v -1.625000 2.250001 4.875000 +v -1.625000 2.250001 4.375000 +v -1.875000 1.625001 4.500000 +v -1.875000 1.625001 4.750000 +v -1.875000 1.875001 4.750000 +v -1.875000 1.875001 4.500000 +v 0.249999 0.625000 4.875000 +v -0.250001 0.625000 4.875000 +v 0.249999 0.625000 4.375000 +v -0.250001 0.625000 4.375000 +v 0.249999 0.375000 4.375000 +v 0.249999 0.375000 4.875000 +v -0.250001 0.375000 4.875000 +v -0.250001 0.375000 4.375000 +v 0.374999 0.125000 4.500000 +v 0.374999 0.125000 4.750000 +v 0.124999 0.125000 4.750000 +v 0.124999 0.125000 4.500000 +v -0.249999 3.375000 4.875000 +v 0.250001 3.375000 4.875000 +v -0.249999 3.375000 4.375000 +v 0.250001 3.375000 4.375000 +v -0.249999 3.625000 4.375000 +v -0.249999 3.625000 4.875000 +v 0.250001 3.625000 4.875000 +v 0.250001 3.625000 4.375000 +v -0.374999 3.875000 4.500000 +v -0.374999 3.875000 4.750000 +v -0.124999 3.875000 4.750000 +v -0.124999 3.875000 4.500000 +v 1.315784 1.529006 4.875000 +v 1.065784 1.095993 4.875000 +v 1.315784 1.529006 4.375000 +v 1.065784 1.095993 4.375000 +v 1.532291 1.404006 4.375000 +v 1.532291 1.404006 4.875000 +v 1.282291 0.970993 4.875000 +v 1.282291 0.970993 4.375000 +v 1.811297 1.387259 4.500000 +v 1.811297 1.387259 4.750000 +v 1.686297 1.170753 4.750000 +v 1.686297 1.170753 4.500000 +v -1.315784 2.470994 4.875000 +v -1.065784 2.904007 4.875000 +v -1.315784 2.470994 4.375000 +v -1.065784 2.904007 4.375000 +v -1.532291 2.595994 4.375000 +v -1.532291 2.595994 4.875000 +v -1.282291 3.029007 4.875000 +v -1.282291 3.029007 4.375000 +v -1.811297 2.612741 4.500000 +v -1.811297 2.612741 4.750000 +v -1.686297 2.829247 4.750000 +v -1.686297 2.829247 4.500000 +v -0.470994 0.684216 4.875000 +v -0.904007 0.934216 4.875000 +v -0.470994 0.684216 4.375000 +v -0.904007 0.934216 4.375000 +v -0.595994 0.467709 4.375000 +v -0.595994 0.467709 4.875000 +v -1.029007 0.717709 4.875000 +v -1.029007 0.717709 4.375000 +v -0.612741 0.188703 4.500000 +v -0.612741 0.188703 4.750000 +v -0.829247 0.313703 4.750000 +v -0.829247 0.313703 4.500000 +v 0.470994 3.315784 4.875000 +v 0.904007 3.065784 4.875000 +v 0.470994 3.315784 4.375000 +v 0.904007 3.065784 4.375000 +v 0.595995 3.532291 4.375000 +v 0.595995 3.532291 4.875000 +v 1.029007 3.282291 4.875000 +v 1.029007 3.282291 4.375000 +v 0.612741 3.811297 4.500000 +v 0.612741 3.811297 4.750000 +v 0.829248 3.686297 4.750000 +v 0.829248 3.686297 4.500000 +v 0.904006 0.934215 4.875000 +v 0.470993 0.684215 4.875000 +v 0.904006 0.934215 4.375000 +v 0.470993 0.684215 4.375000 +v 1.029006 0.717708 4.375000 +v 1.029006 0.717708 4.875000 +v 0.595993 0.467708 4.875000 +v 0.595993 0.467708 4.375000 +v 1.262259 0.563702 4.500000 +v 1.262259 0.563702 4.750000 +v 1.045753 0.438702 4.750000 +v 1.045753 0.438702 4.500000 +v -0.904006 3.065785 4.875000 +v -0.470993 3.315785 4.875000 +v -0.904006 3.065785 4.375000 +v -0.470993 3.315785 4.375000 +v -1.029006 3.282291 4.375000 +v -1.029006 3.282291 4.875000 +v -0.595993 3.532291 4.875000 +v -0.595993 3.532291 4.375000 +v -1.262259 3.436298 4.500000 +v -1.262259 3.436298 4.750000 +v -1.045752 3.561298 4.750000 +v -1.045752 3.561298 4.500000 +v -1.065785 1.095994 4.875000 +v -1.315785 1.529007 4.875000 +v -1.065785 1.095994 4.375000 +v -1.315785 1.529007 4.375000 +v -1.282292 0.970994 4.375000 +v -1.282292 0.970994 4.875000 +v -1.532292 1.404007 4.875000 +v -1.532292 1.404007 4.375000 +v -1.436298 0.737741 4.500000 +v -1.436298 0.737741 4.750000 +v -1.561298 0.954248 4.750000 +v -1.561298 0.954248 4.500000 +v 1.065785 2.904006 4.875000 +v 1.315785 2.470993 4.875000 +v 1.065785 2.904006 4.375000 +v 1.315785 2.470993 4.375000 +v 1.282292 3.029006 4.375000 +v 1.282292 3.029006 4.875000 +v 1.532292 2.595993 4.875000 +v 1.532292 2.595993 4.375000 +v 1.436298 3.262259 4.500000 +v 1.436298 3.262259 4.750000 +v 1.561298 3.045752 4.750000 +v 1.561298 3.045752 4.500000 +v 1.074157 1.279396 5.621202 +v 0.720603 0.925842 5.621202 +v 1.135551 1.218002 5.128798 +v 0.781998 0.864448 5.128798 +v 1.309642 1.043911 5.172210 +v 1.248248 1.105304 5.664614 +v 0.894695 0.751751 5.664614 +v 0.956088 0.690357 5.172210 +v 1.556773 0.973556 5.338723 +v 1.526076 1.004253 5.584925 +v 1.349299 0.827477 5.584925 +v 1.379996 0.796780 5.338723 +v 0.569945 0.838860 5.621202 +v 0.086982 0.709450 5.621202 +v 0.592417 0.754994 5.128798 +v 0.109454 0.625585 5.128798 +v 0.656138 0.517182 5.172210 +v 0.633667 0.601047 5.664614 +v 0.150704 0.471638 5.664614 +v 0.173175 0.387772 5.172210 +v 0.834983 0.332687 5.338723 +v 0.823747 0.374620 5.584925 +v 0.582266 0.309916 5.584925 +v 0.593501 0.267983 5.338723 +v 0.086983 3.290549 5.621202 +v 0.569946 3.161140 5.621202 +v 0.109455 3.374415 5.128798 +v 0.592418 3.245006 5.128798 +v 0.173177 3.612228 5.172210 +v 0.150705 3.528362 5.664614 +v 0.633668 3.398952 5.664614 +v 0.656140 3.482818 5.172210 +v 0.110540 3.861427 5.338723 +v 0.099304 3.819494 5.584925 +v 0.340785 3.754789 5.584925 +v 0.352021 3.796722 5.338723 +v 0.720604 3.074157 5.621202 +v 1.074158 2.720603 5.621202 +v 0.781998 3.135550 5.128798 +v 1.135552 2.781997 5.128798 +v 0.956089 3.309642 5.172210 +v 0.894696 3.248248 5.664614 +v 1.248249 2.894695 5.664614 +v 1.309643 2.956089 5.172210 +v 1.026444 3.556773 5.338723 +v 0.995747 3.526076 5.584925 +v 1.172523 3.349299 5.584925 +v 1.203220 3.379996 5.338723 +v 1.161140 2.569945 5.621202 +v 1.290550 2.086982 5.621202 +v 1.245006 2.592417 5.128798 +v 1.374415 2.109454 5.128798 +v 1.482818 2.656138 5.172210 +v 1.398953 2.633667 5.664614 +v 1.528362 2.150704 5.664614 +v 1.612228 2.173176 5.172210 +v 1.667313 2.834983 5.338723 +v 1.625380 2.823747 5.584925 +v 1.690084 2.582266 5.584925 +v 1.732017 2.593501 5.338723 +v -1.290549 2.086983 5.621202 +v -1.161140 2.569946 5.621202 +v -1.374415 2.109455 5.128798 +v -1.245005 2.592418 5.128798 +v -1.612228 2.173177 5.172210 +v -1.528362 2.150705 5.664614 +v -1.398953 2.633668 5.664614 +v -1.482818 2.656140 5.172210 +v -1.861427 2.110540 5.338723 +v -1.819494 2.099304 5.584925 +v -1.754789 2.340786 5.584925 +v -1.796722 2.352022 5.338723 +v -1.074157 2.720604 5.621202 +v -0.720603 3.074158 5.621202 +v -1.135550 2.781999 5.128798 +v -0.781997 3.135552 5.128798 +v -1.309641 2.956089 5.172210 +v -1.248248 2.894696 5.664614 +v -0.894694 3.248249 5.664614 +v -0.956088 3.309643 5.172210 +v -1.556773 3.026444 5.338723 +v -1.526076 2.995747 5.584925 +v -1.349299 3.172523 5.584925 +v -1.379996 3.203220 5.338723 +v -0.569945 3.161140 5.621202 +v -0.086982 3.290550 5.621202 +v -0.592416 3.245006 5.128798 +v -0.109454 3.374415 5.128798 +v -0.656138 3.482818 5.172210 +v -0.633666 3.398953 5.664614 +v -0.150704 3.528362 5.664614 +v -0.173175 3.612228 5.172210 +v -0.834983 3.667313 5.338723 +v -0.823747 3.625380 5.584925 +v -0.582265 3.690084 5.584925 +v -0.593501 3.732017 5.338723 +v -0.086983 0.709451 5.621202 +v -0.569946 0.838860 5.621202 +v -0.109455 0.625585 5.128798 +v -0.592418 0.754994 5.128798 +v -0.173177 0.387772 5.172210 +v -0.150705 0.471638 5.664614 +v -0.633668 0.601048 5.664614 +v -0.656140 0.517182 5.172210 +v -0.110540 0.138573 5.338723 +v -0.099304 0.180506 5.584925 +v -0.340786 0.245211 5.584925 +v -0.352021 0.203278 5.338723 +v -0.720604 0.925843 5.621202 +v -1.074158 1.279397 5.621202 +v -0.781998 0.864450 5.128798 +v -1.135552 1.218003 5.128798 +v -0.956089 0.690358 5.172210 +v -0.894696 0.751752 5.664614 +v -1.248249 1.105306 5.664614 +v -1.309643 1.043912 5.172210 +v -1.026444 0.443227 5.338723 +v -0.995747 0.473924 5.584925 +v -1.172524 0.650701 5.584925 +v -1.203220 0.620004 5.338723 +v -1.161140 1.430055 5.621202 +v -1.290550 1.913018 5.621202 +v -1.245006 1.407584 5.128798 +v -1.374415 1.890546 5.128798 +v -1.482818 1.343862 5.172210 +v -1.398953 1.366334 5.664614 +v -1.528362 1.849296 5.664614 +v -1.612228 1.826825 5.172210 +v -1.667313 1.165017 5.338723 +v -1.625380 1.176253 5.584925 +v -1.690084 1.417735 5.584925 +v -1.732017 1.406499 5.338723 +v -0.894345 1.750001 6.351577 +v -0.894345 2.250001 6.351577 +v -1.105654 1.750001 5.898423 +v -1.105654 2.250001 5.898423 +v -1.332231 1.750001 6.004077 +v -1.120922 1.750001 6.457232 +v -1.120922 2.250001 6.457232 +v -1.332231 2.250001 6.004077 +v -1.505981 1.625001 6.223021 +v -1.400326 1.625001 6.449597 +v -1.400326 1.875001 6.449597 +v -1.505981 1.875001 6.223021 +v 0.249999 1.105655 6.351577 +v -0.250001 1.105655 6.351577 +v 0.249999 0.894346 5.898423 +v -0.250001 0.894346 5.898423 +v 0.249999 0.667769 6.004077 +v 0.249999 0.879078 6.457232 +v -0.250001 0.879078 6.457232 +v -0.250001 0.667769 6.004077 +v 0.374999 0.494019 6.223021 +v 0.374999 0.599674 6.449597 +v 0.124999 0.599674 6.449597 +v 0.124999 0.494019 6.223021 +v -0.249999 2.894345 6.351577 +v 0.250001 2.894345 6.351577 +v -0.249999 3.105654 5.898423 +v 0.250001 3.105654 5.898423 +v -0.249999 3.332232 6.004077 +v -0.249999 3.120922 6.457232 +v 0.250001 3.120922 6.457232 +v 0.250001 3.332232 6.004077 +v -0.374999 3.505981 6.223021 +v -0.374999 3.400326 6.449597 +v -0.124999 3.400326 6.449597 +v -0.124999 3.505981 6.223021 +v 0.809174 1.544379 6.351577 +v 0.455620 1.190825 6.351577 +v 0.958592 1.394960 5.898423 +v 0.605039 1.041407 5.898423 +v 1.118806 1.234746 6.004077 +v 0.969388 1.384165 6.457232 +v 0.615835 1.030611 6.457232 +v 0.765253 0.881193 6.004077 +v 1.330054 1.200275 6.223021 +v 1.255345 1.274984 6.449597 +v 1.078568 1.098207 6.449597 +v 1.153277 1.023499 6.223021 +v -0.809174 2.455621 6.351577 +v -0.455620 2.809175 6.351577 +v -0.958592 2.605040 5.898423 +v -0.605039 2.958593 5.898423 +v -1.118806 2.765254 6.004077 +v -0.969388 2.615836 6.457232 +v -0.615834 2.969389 6.457232 +v -0.765252 3.118807 6.004077 +v -1.330054 2.799725 6.223021 +v -1.255345 2.725016 6.449597 +v -1.078568 2.901793 6.449597 +v -1.153277 2.976501 6.223021 +v -0.455621 1.190826 6.351577 +v -0.809175 1.544380 6.351577 +v -0.605040 1.041408 5.898423 +v -0.958593 1.394961 5.898423 +v -0.765254 0.881194 6.004077 +v -0.615835 1.030612 6.457232 +v -0.969389 1.384166 6.457232 +v -1.118807 1.234747 6.004077 +v -0.799725 0.669946 6.223021 +v -0.725016 0.744655 6.449597 +v -0.901793 0.921432 6.449597 +v -0.976501 0.846723 6.223021 +v 0.455622 2.809174 6.351577 +v 0.809175 2.455620 6.351577 +v 0.605040 2.958592 5.898423 +v 0.958593 2.605039 5.898423 +v 0.765254 3.118806 6.004077 +v 0.615836 2.969388 6.457232 +v 0.969389 2.615834 6.457232 +v 1.118807 2.765253 6.004077 +v 0.799725 3.330054 6.223021 +v 0.725016 3.255345 6.449597 +v 0.901793 3.078568 6.449597 +v 0.976502 3.153277 6.223021 +v -0.375000 1.750001 7.091506 +v -0.375000 2.250001 7.091506 +v -0.625000 1.750001 6.658494 +v -0.625000 2.250001 6.658494 +v -0.841506 1.750001 6.783494 +v -0.591506 1.750001 7.216506 +v -0.591506 2.250001 7.216506 +v -0.841506 2.250001 6.783494 +v -0.995513 1.625001 7.016747 +v -0.870513 1.625001 7.233253 +v -0.870512 1.875001 7.233253 +v -0.995512 1.875001 7.016747 +v 0.404006 1.800240 7.091506 +v -0.029007 1.550240 7.091506 +v 0.529006 1.583734 6.658494 +v 0.095993 1.333734 6.658494 +v 0.637259 1.396234 6.783494 +v 0.512259 1.612740 7.216506 +v 0.079246 1.362740 7.216506 +v 0.204246 1.146234 6.783494 +v 0.822515 1.325360 7.016747 +v 0.760015 1.433614 7.233253 +v 0.543509 1.308614 7.233253 +v 0.606009 1.200360 7.016747 +v -0.404006 2.199760 7.091506 +v 0.029007 2.449760 7.091506 +v -0.529006 2.416266 6.658494 +v -0.095993 2.666266 6.658494 +v -0.637259 2.603766 6.783494 +v -0.512259 2.387260 7.216506 +v -0.079246 2.637260 7.216506 +v -0.204246 2.853766 6.783494 +v -0.822515 2.674640 7.016747 +v -0.760015 2.566386 7.233253 +v -0.543509 2.691386 7.233253 +v -0.606009 2.799640 7.016747 +v 0.029006 1.550241 7.091506 +v -0.404007 1.800241 7.091506 +v -0.095994 1.333735 6.658494 +v -0.529007 1.583735 6.658494 +v -0.204248 1.146235 6.783494 +v -0.079247 1.362741 7.216506 +v -0.512260 1.612741 7.216506 +v -0.637260 1.396235 6.783494 +v -0.172997 0.950361 7.016747 +v -0.110498 1.058614 7.233253 +v -0.327004 1.183614 7.233253 +v -0.389504 1.075361 7.016747 +v -0.029006 2.449759 7.091506 +v 0.404007 2.199759 7.091506 +v 0.095994 2.666265 6.658494 +v 0.529007 2.416265 6.658494 +v 0.204248 2.853765 6.783494 +v 0.079247 2.637259 7.216506 +v 0.512260 2.387259 7.216506 +v 0.637260 2.603765 6.783494 +v 0.172998 3.049639 7.016747 +v 0.110498 2.941386 7.233253 +v 0.327004 2.816386 7.233253 +v 0.389504 2.924639 7.016747 +v 0.000000 2.250000 7.250000 +v -0.176777 2.176777 7.250000 +v -0.250000 2.000000 7.250000 +v -0.176777 1.823223 7.250000 +v 0.000000 1.750000 7.250000 +v 0.176777 1.823223 7.250000 +v 0.250000 2.000000 7.250000 +v 0.176777 2.176777 7.250000 +v 0.000000 2.250000 7.625000 +v -0.176777 2.176777 7.375000 +v -0.250000 2.000000 7.625000 +v -0.176777 1.823223 7.375000 +v 0.000000 1.750000 7.625000 +v 0.176777 1.823223 7.375000 +v 0.250000 2.000000 7.625000 +v 0.176777 2.176777 7.375000 +v 0.000000 2.937500 3.750000 +v -0.468750 2.811899 3.750000 +v -0.811899 2.468750 3.750000 +v -0.937500 2.000000 3.750000 +v -0.811899 1.531250 3.750000 +v -0.468750 1.188101 3.750000 +v -0.000000 1.062500 3.750000 +v 0.468750 1.188101 3.750000 +v 0.811899 1.531250 3.750000 +v 0.937500 2.000000 3.750000 +v 0.811899 2.468750 3.750000 +v 0.468751 2.811899 3.750000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 1.000000 -1.750000 +v 0.500000 1.000000 -1.750000 +v -0.500000 1.750000 -1.750000 +v -0.500000 1.750000 -0.500000 +v 0.500000 1.750000 -0.500000 +v 0.500000 1.750000 -1.750000 +v -0.500000 2.000000 -1.250000 +v -0.500000 2.000000 -0.500000 +v 0.500000 2.000000 -0.500000 +v 0.500000 2.000000 -1.250000 +v -0.375000 1.000000 -2.125000 +v 0.375000 1.000000 -2.125000 +v -0.375000 1.000000 -2.875000 +v 0.375000 1.000000 -2.875000 +v -0.375000 1.487500 -2.875000 +v -0.375000 1.487500 -2.125000 +v 0.375000 1.487500 -2.125000 +v 0.375000 1.487500 -2.875000 +v -0.375000 1.737500 -2.875000 +v 0.375000 1.737500 -2.875000 +v -0.375000 1.737500 -3.000000 +v 0.375000 1.737500 -3.000000 +v -0.375000 2.487500 -3.000000 +v -0.375000 2.487500 -2.875000 +v 0.375000 2.487500 -2.875000 +v 0.375000 2.487500 -3.000000 +v 0.125000 1.737500 -2.875000 +v 0.250000 1.737500 -2.875000 +v 0.125000 1.737500 -3.000000 +v 0.250000 1.737500 -3.000000 +v 0.125000 0.987500 -3.000000 +v 0.125000 0.987500 -2.875000 +v 0.250000 0.987500 -2.875000 +v 0.250000 0.987500 -3.000000 +v -0.250000 1.737500 -2.875000 +v -0.125000 1.737500 -2.875000 +v -0.250000 1.737500 -3.000000 +v -0.125000 1.737500 -3.000000 +v -0.250000 0.987500 -3.000000 +v -0.250000 0.987500 -2.875000 +v -0.125000 0.987500 -2.875000 +v -0.125000 0.987500 -3.000000 +v 0.500000 1.000000 -0.500000 +v 0.750000 1.000000 -0.500000 +v 0.500000 1.000000 -0.750000 +v 0.750000 1.000000 -0.750000 +v 0.500000 3.500000 -0.500000 +v 0.750000 3.500000 -0.500000 +v 0.500000 3.500000 -0.750000 +v 0.750000 3.500000 -0.750000 +v -0.750000 1.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v -0.750000 1.000000 -0.750000 +v -0.500000 1.000000 -0.750000 +v -0.750000 3.500000 -0.500000 +v -0.500000 3.500000 -0.500000 +v -0.750000 3.500000 -0.750000 +v -0.500000 3.500000 -0.750000 +v 0.500000 1.000000 -3.250000 +v 0.750000 1.000000 -3.250000 +v 0.500000 1.000000 -3.500000 +v 0.750000 1.000000 -3.500000 +v 0.500000 3.500000 -3.250000 +v 0.750000 3.500000 -3.250000 +v 0.500000 3.500000 -3.500000 +v 0.750000 3.500000 -3.500000 +v -0.750000 1.000000 -3.250000 +v -0.500000 1.000000 -3.250000 +v -0.750000 1.000000 -3.500000 +v -0.500000 1.000000 -3.500000 +v -0.750000 3.500000 -3.250000 +v -0.500000 3.500000 -3.250000 +v -0.750000 3.500000 -3.500000 +v -0.500000 3.500000 -3.500000 +v -0.750000 3.500000 -0.250000 +v 0.750000 3.500000 -0.250000 +v -0.750000 3.500000 -3.750000 +v 0.750000 3.500000 -3.750000 +v -0.750000 3.750000 -3.750000 +v -0.750000 3.750000 -0.250000 +v 0.750000 3.750000 -0.250000 +v 0.750000 3.750000 -3.750000 +v -0.500000 1.000000 -3.125000 +v 0.500000 1.000000 -3.125000 +v -0.500000 1.000000 -3.875000 +v 0.500000 1.000000 -3.875000 +v -0.500000 1.500000 -3.875000 +v -0.500000 1.500000 -3.125000 +v 0.500000 1.500000 -3.125000 +v 0.500000 1.500000 -3.875000 +v 0.125000 3.875000 -0.625000 +v 0.125000 3.875000 -0.875000 +v -0.125000 3.875000 -0.625000 +v -0.125000 3.875000 -0.875000 +v 0.125000 3.750000 -0.875000 +v -0.125000 3.750000 -0.875000 +v 0.125000 3.750000 -0.625000 +v -0.125000 3.750000 -0.625000 +v -0.750000 0.750000 -3.875000 +v -0.750000 1.000000 -3.625000 +v -0.750000 1.500000 -3.625000 +v -0.750000 1.750000 -3.875000 +v -0.750000 1.000000 -4.625000 +v -0.750000 0.750000 -4.375000 +v -0.750000 1.750000 -4.375000 +v -0.750000 1.500000 -4.625000 +v 0.750000 1.000000 -3.625000 +v 0.750000 0.750000 -3.875000 +v 0.750000 1.750000 -3.875000 +v 0.750000 1.500000 -3.625000 +v 0.750000 0.750000 -4.375000 +v 0.750000 1.000000 -4.625000 +v 0.750000 1.500000 -4.625000 +v 0.750000 1.750000 -4.375000 +v -0.250000 3.812500 -0.687500 +v 0.250000 3.812500 -0.687500 +v -0.250000 4.312500 -0.687500 +v 0.250000 4.312500 -0.687500 +v -0.250000 4.312500 -0.562500 +v -0.250000 3.812500 -0.562500 +v 0.250000 3.812500 -0.562500 +v 0.250000 4.312500 -0.562500 +v -0.125000 4.187500 -0.812500 +v -0.125000 3.937500 -0.812500 +v 0.125000 3.937500 -0.812500 +v 0.125000 4.187500 -0.812500 +v -0.187500 4.250000 -0.562500 +v -0.187500 3.875000 -0.562500 +v 0.187500 3.875000 -0.562500 +v 0.187500 4.250000 -0.562500 +v -0.187500 4.250000 -0.500000 +v -0.187500 3.875000 -0.500000 +v 0.187500 3.875000 -0.500000 +v 0.187500 4.250000 -0.500000 +v 0.375000 1.000000 -3.312500 +v 0.500000 1.000000 -3.312500 +v 0.375000 1.000000 -3.437500 +v 0.500000 1.000000 -3.437500 +v -0.501000 3.500000 -3.312500 +v -0.376000 3.500000 -3.312500 +v -0.501000 3.500000 -3.437500 +v -0.376000 3.500000 -3.437500 +v -0.500000 1.000000 -3.312500 +v -0.375000 1.000000 -3.312500 +v -0.500000 1.000000 -3.437500 +v -0.375000 1.000000 -3.437500 +v 0.374000 3.500000 -3.312500 +v 0.499000 3.500000 -3.312500 +v 0.374000 3.500000 -3.437500 +v 0.499000 3.500000 -3.437500 +v -0.750000 1.250000 -4.250000 +v -0.750000 1.338388 -4.213388 +v -0.750000 1.375000 -4.125000 +v -0.750000 1.338388 -4.036612 +v -0.750000 1.250000 -4.000000 +v -0.750000 1.161612 -4.036612 +v -0.750000 1.125000 -4.125000 +v -0.750000 1.161612 -4.213388 +v -1.000000 1.250000 -4.250000 +v -1.000000 1.338388 -4.213388 +v -1.000000 1.375000 -4.125000 +v -1.000000 1.338388 -4.036612 +v -1.000000 1.250000 -4.000000 +v -1.000000 1.161612 -4.036612 +v -1.000000 1.125000 -4.125000 +v -1.000000 1.161612 -4.213388 +v -1.088388 1.213388 -4.250000 +v -1.150888 1.275888 -4.213388 +v -1.176777 1.301777 -4.125000 +v -1.150888 1.275888 -4.036612 +v -1.088388 1.213388 -4.000000 +v -1.025888 1.150888 -4.036612 +v -1.025888 1.150888 -4.213388 +v -1.125000 1.125000 -4.250000 +v -1.213388 1.125000 -4.213388 +v -1.250000 1.125000 -4.125000 +v -1.213388 1.125000 -4.036612 +v -1.125000 1.125000 -4.000000 +v -1.036612 1.125000 -4.036612 +v -1.036612 1.125000 -4.213388 +v -1.000000 1.000000 -4.125000 +v -1.125000 1.000000 -4.250000 +v -1.213388 1.000000 -4.213388 +v -1.250000 1.000000 -4.125000 +v -1.213388 1.000000 -4.036612 +v -1.125000 1.000000 -4.000000 +v -1.036612 1.000000 -4.036612 +v -1.036612 1.000000 -4.213388 +v -1.000000 0.911612 -4.088388 +v -1.125000 0.823223 -4.176777 +v -1.213388 0.849112 -4.150888 +v -1.250000 0.911612 -4.088388 +v -1.213388 0.974112 -4.025888 +v -1.036612 0.974112 -4.025888 +v -1.036612 0.849112 -4.150888 +v -1.000000 0.875000 -4.000000 +v -1.125000 0.750000 -4.000000 +v -1.213388 0.786612 -4.000000 +v -1.250000 0.875000 -4.000000 +v -1.213388 0.963388 -4.000000 +v -1.036612 0.963388 -4.000000 +v -1.036612 0.786612 -4.000000 +v -1.125000 1.000000 0.500000 +v -1.000000 0.875000 0.500000 +v -1.125000 0.750000 0.500000 +v -1.213388 0.786612 0.500000 +v -1.250000 0.875000 0.500000 +v -1.213388 0.963388 0.500000 +v -1.036612 0.963388 0.500000 +v -1.036612 0.786612 0.500000 +v -1.088388 1.000000 0.588388 +v -1.088388 0.750000 0.588388 +v -1.150888 0.786612 0.650888 +v -1.176777 0.875000 0.676777 +v -1.150888 0.963388 0.650888 +v -1.025888 0.963388 0.525888 +v -1.025888 0.786612 0.525888 +v -1.000000 1.000000 0.625000 +v -1.000000 0.750000 0.625000 +v -1.000000 0.786612 0.713388 +v -1.000000 0.875000 0.750000 +v -1.000000 0.963388 0.713388 +v -1.000000 0.963388 0.536612 +v -1.000000 0.786612 0.536612 +v -0.750000 0.875000 0.500000 +v -0.750000 1.000000 0.625000 +v -0.750000 0.750000 0.625000 +v -0.750000 0.786612 0.713388 +v -0.750000 0.875000 0.750000 +v -0.750000 0.963388 0.713388 +v -0.750000 0.963388 0.536612 +v -0.750000 0.786612 0.536612 +v 1.125000 3.375000 -0.250000 +v 1.125000 3.375000 -3.750000 +v 1.125000 3.625000 -0.250000 +v 1.125000 3.625000 -3.750000 +v -1.125000 3.375000 -3.750000 +v -1.125000 3.375000 -0.250000 +v -1.125000 3.625000 -3.750000 +v -1.125000 3.625000 -0.250000 +v 0.625000 2.500000 2.500000 +v 0.448223 2.500000 2.573223 +v 0.375000 2.500000 2.750000 +v 0.448223 2.500000 2.926777 +v 0.625000 2.500000 3.000000 +v 0.801777 2.500000 2.926777 +v 0.875000 2.500000 2.750000 +v 0.801777 2.500000 2.573223 +v 0.625000 2.500000 1.750000 +v 0.448223 2.500000 1.823223 +v 0.375000 2.500000 2.000000 +v 0.448223 2.500000 2.176777 +v 0.625000 2.500000 2.250000 +v 0.801777 2.500000 2.176777 +v 0.875000 2.500000 2.000000 +v 0.801777 2.500000 1.823223 +v 0.625000 3.000000 2.500000 +v 0.448223 3.000000 2.573223 +v 0.375000 3.000000 2.750000 +v 0.448223 3.000000 2.926777 +v 0.625000 3.000000 3.000000 +v 0.801777 3.000000 2.926777 +v 0.875000 3.000000 2.750000 +v 0.801777 3.000000 2.573223 +v 0.625000 3.000000 1.750000 +v 0.448223 3.000000 1.823223 +v 0.375000 3.000000 2.000000 +v 0.448223 3.000000 2.176777 +v 0.625000 3.000000 2.250000 +v 0.801777 3.000000 2.176777 +v 0.875000 3.000000 2.000000 +v 0.801777 3.000000 1.823223 +v 0.536612 3.125000 2.661612 +v 0.625000 3.125000 2.625000 +v 0.500000 3.125000 2.750000 +v 0.536612 3.125000 2.838388 +v 0.625000 3.125000 2.875000 +v 0.713388 3.125000 2.838388 +v 0.750000 3.125000 2.750000 +v 0.713388 3.125000 2.661612 +v 0.536612 3.125000 1.911612 +v 0.625000 3.125000 1.875000 +v 0.500000 3.125000 2.000000 +v 0.536612 3.125000 2.088388 +v 0.625000 3.125000 2.125000 +v 0.713388 3.125000 2.088388 +v 0.750000 3.125000 2.000000 +v 0.713388 3.125000 1.911612 +vt 0.964670 0.929866 +vt 0.974078 0.932982 +vt 0.966013 0.933222 +vt 0.116235 0.984543 +vt 0.106827 0.981428 +vt 0.114891 0.981188 +vt 0.156962 0.964302 +vt 0.159223 0.974514 +vt 0.156962 0.975209 +vt 0.462708 0.953115 +vt 0.470311 0.972098 +vt 0.451956 0.980603 +vt 0.154207 0.964945 +vt 0.755545 0.794827 +vt 0.751880 0.784538 +vt 0.755565 0.784537 +vt 0.817620 0.267565 +vt 0.821321 0.278052 +vt 0.817636 0.278053 +vt 0.751860 0.711424 +vt 0.755565 0.721885 +vt 0.751880 0.721885 +vt 0.751880 0.701001 +vt 0.755545 0.711424 +vt 0.162261 0.984488 +vt 0.154207 0.975852 +vt 0.751880 0.805410 +vt 0.751860 0.794828 +vt 0.817636 0.257169 +vt 0.821305 0.267565 +vt 0.412886 0.978242 +vt 0.418184 0.961190 +vt 0.430976 0.972687 +vt 0.412778 0.715128 +vt 0.409073 0.704667 +vt 0.412758 0.704667 +vt 0.409093 0.694244 +vt 0.412778 0.694244 +vt 0.433731 0.972043 +vt 0.425678 0.963407 +vt 0.428433 0.962764 +vt 0.406278 0.810175 +vt 0.409983 0.820757 +vt 0.406298 0.820758 +vt 0.409963 0.831153 +vt 0.406294 0.820758 +vt 0.409979 0.820758 +vt 0.433731 0.982950 +vt 0.409983 0.799885 +vt 0.409963 0.810175 +vt 0.409979 0.841641 +vt 0.406278 0.831153 +vt 0.893080 0.866947 +vt 0.896780 0.859229 +vt 0.896765 0.866947 +vt 0.168818 0.983136 +vt 0.169754 0.986705 +vt 0.175053 0.980560 +vt 0.172792 0.970348 +vt 0.175053 0.969653 +vt 0.169754 0.960374 +vt 0.163197 0.961726 +vt 0.162261 0.958157 +vt 0.159223 0.966334 +vt 0.163197 0.981474 +vt 0.172792 0.978528 +vt 0.168818 0.963388 +vt 0.171573 0.982493 +vt 0.161979 0.973871 +vt 0.165953 0.961082 +vt 0.896777 0.906201 +vt 0.893080 0.898336 +vt 0.896765 0.898335 +vt 0.246705 0.859638 +vt 0.243005 0.851792 +vt 0.246690 0.851792 +vt 0.243019 0.843975 +vt 0.246705 0.843975 +vt 0.165953 0.980831 +vt 0.896780 0.874884 +vt 0.893095 0.874884 +vt 0.893092 0.890539 +vt 0.896777 0.890539 +vt 0.161979 0.965691 +vt 0.565196 0.854933 +vt 0.560292 0.847110 +vt 0.563120 0.847190 +vt 0.105483 0.984864 +vt 0.101124 0.975631 +vt 0.097880 0.965881 +vt 0.106827 0.961053 +vt 0.101124 0.967191 +vt 0.123838 0.965107 +vt 0.114891 0.960813 +vt 0.116235 0.957377 +vt 0.120593 0.975050 +vt 0.123838 0.976360 +vt 0.097880 0.977134 +vt 0.105483 0.957698 +vt 0.120593 0.966610 +vt 0.729674 0.974152 +vt 0.729674 0.982591 +vt 0.710205 0.974733 +vt 0.893080 0.874884 +vt 0.889380 0.866947 +vt 0.893065 0.866947 +vt 0.324434 0.896666 +vt 0.328108 0.904462 +vt 0.324423 0.904462 +vt 0.565196 0.839279 +vt 0.562369 0.839199 +vt 0.893080 0.859229 +vt 0.889395 0.859230 +vt 0.328119 0.912328 +vt 0.324434 0.912328 +vt 0.409185 0.851630 +vt 0.412886 0.859476 +vt 0.409200 0.859476 +vt 0.409200 0.843813 +vt 0.412871 0.851630 +vt 0.151452 0.969653 +vt 0.149191 0.978528 +vt 0.149191 0.970348 +vt 0.975422 0.957033 +vt 0.983025 0.976016 +vt 0.964669 0.984520 +vt 0.154207 0.979917 +vt 0.151452 0.980560 +vt 0.563977 0.807733 +vt 0.560312 0.797443 +vt 0.563997 0.797443 +vt 0.669146 0.650553 +vt 0.672847 0.661041 +vt 0.669162 0.661041 +vt 0.409073 0.746436 +vt 0.412778 0.756897 +vt 0.409093 0.756897 +vt 0.409093 0.736013 +vt 0.412758 0.746436 +vt 0.146153 0.960374 +vt 0.154207 0.969010 +vt 0.560312 0.818316 +vt 0.560292 0.807733 +vt 0.669162 0.640158 +vt 0.672831 0.650553 +vt 0.987895 0.337962 +vt 0.982596 0.344107 +vt 0.975103 0.315559 +vt 0.412778 0.694244 +vt 0.409073 0.683783 +vt 0.412758 0.683783 +vt 0.409093 0.673360 +vt 0.412778 0.673360 +vt 0.990650 0.326412 +vt 0.982596 0.317776 +vt 0.985351 0.317133 +vt 0.817620 0.246587 +vt 0.821325 0.257169 +vt 0.817640 0.257169 +vt 0.563977 0.828711 +vt 0.560308 0.818316 +vt 0.563993 0.818316 +vt 0.990650 0.337319 +vt 0.987895 0.327055 +vt 0.821325 0.236296 +vt 0.821305 0.246586 +vt 0.563993 0.839199 +vt 0.560292 0.828711 +vt 0.889395 0.843575 +vt 0.893065 0.851292 +vt 0.889380 0.851292 +vt 0.139597 0.961726 +vt 0.138660 0.958157 +vt 0.133361 0.975209 +vt 0.135623 0.966334 +vt 0.135623 0.974514 +vt 0.138660 0.984488 +vt 0.145217 0.983136 +vt 0.146153 0.986705 +vt 0.145217 0.963388 +vt 0.133361 0.964302 +vt 0.139597 0.981474 +vt 0.136841 0.962369 +vt 0.146436 0.970991 +vt 0.142462 0.983779 +vt 0.246701 0.906618 +vt 0.243005 0.898753 +vt 0.246690 0.898752 +vt 0.246705 0.843975 +vt 0.243005 0.836129 +vt 0.246690 0.836129 +vt 0.243019 0.828312 +vt 0.246705 0.828312 +vt 0.142462 0.964031 +vt 0.893080 0.859229 +vt 0.889395 0.859229 +vt 0.243016 0.890956 +vt 0.246701 0.890956 +vt 0.756764 0.842028 +vt 0.751860 0.834205 +vt 0.754688 0.834284 +vt 0.983025 0.937276 +vt 0.975422 0.929546 +vt 0.983025 0.948528 +vt 0.974078 0.953356 +vt 0.979780 0.947219 +vt 0.957066 0.949303 +vt 0.966013 0.953597 +vt 0.964669 0.957033 +vt 0.957066 0.938050 +vt 0.960311 0.939360 +vt 0.979780 0.938779 +vt 0.975422 0.956712 +vt 0.960311 0.947800 +vt 0.840983 0.975291 +vt 0.854749 0.968913 +vt 0.860452 0.983150 +vt 0.896780 0.859229 +vt 0.893080 0.851292 +vt 0.896765 0.851292 +vt 0.561508 0.886259 +vt 0.565182 0.894056 +vt 0.561496 0.894056 +vt 0.753937 0.826294 +vt 0.756764 0.826373 +vt 0.893095 0.843575 +vt 0.896780 0.843575 +vt 0.565193 0.901922 +vt 0.561508 0.901922 +vt 0.142103 0.829484 +vt 0.145803 0.837330 +vt 0.142118 0.837330 +vt 0.142118 0.821667 +vt 0.145788 0.829484 +vt 0.889441 0.388429 +vt 0.871015 0.410580 +vt 0.871015 0.388430 +vt 0.814488 0.877039 +vt 0.832914 0.788483 +vt 0.832914 0.877037 +vt 0.283727 0.803652 +vt 0.262037 0.789471 +vt 0.284136 0.789488 +vt 0.841473 0.533162 +vt 0.870954 0.415024 +vt 0.870954 0.533163 +vt 0.291281 0.651453 +vt 0.259197 0.742079 +vt 0.261815 0.651431 +vt 0.642122 0.081258 +vt 0.745310 0.199398 +vt 0.642122 0.199396 +vt 0.261815 0.808370 +vt 0.261628 0.803635 +vt 0.281483 0.746831 +vt 0.291281 0.808393 +vt 0.288663 0.742101 +vt 0.673557 0.849500 +vt 0.651456 0.856720 +vt 0.651456 0.849711 +vt 0.680924 0.758312 +vt 0.673557 0.765392 +vt 0.651456 0.758595 +vt 0.669406 0.433451 +vt 0.743070 0.514682 +vt 0.669406 0.514671 +vt 0.743070 0.433462 +vt 0.750186 0.514717 +vt 0.661790 0.433484 +vt 0.501319 0.862125 +vt 0.501319 0.792035 +vt 0.530787 0.784743 +vt 0.254484 0.784731 +vt 0.252614 0.737380 +vt 0.281892 0.732667 +vt 0.387852 0.758143 +vt 0.406278 0.846693 +vt 0.387852 0.846696 +vt 0.899666 0.390799 +vt 0.918092 0.412949 +vt 0.899666 0.412949 +vt 0.784792 0.997004 +vt 0.798931 0.975265 +vt 0.798931 0.997403 +vt 0.661790 0.514704 +vt 0.654423 0.533161 +vt 0.757553 0.533178 +vt 0.750186 0.533176 +vt 0.313312 0.984464 +vt 0.303904 0.981349 +vt 0.311968 0.981109 +vt 0.832563 0.984542 +vt 0.823155 0.981427 +vt 0.831219 0.981186 +vt 0.915578 0.972216 +vt 0.913317 0.981090 +vt 0.913317 0.972910 +vt 0.231573 0.949085 +vt 0.239176 0.968068 +vt 0.220820 0.976572 +vt 0.918333 0.982479 +vt 0.915578 0.983122 +vt 0.563977 0.786860 +vt 0.560312 0.776571 +vt 0.563997 0.776570 +vt 0.669146 0.671437 +vt 0.672847 0.681924 +vt 0.669162 0.681925 +vt 0.751860 0.732308 +vt 0.755565 0.742769 +vt 0.751880 0.742769 +vt 0.751880 0.721885 +vt 0.755545 0.732308 +vt 0.913035 0.962293 +vt 0.918333 0.971573 +vt 0.560312 0.797443 +vt 0.560292 0.786860 +vt 0.669162 0.661041 +vt 0.672831 0.671437 +vt 0.889044 0.984399 +vt 0.883746 0.990544 +vt 0.876252 0.961996 +vt 0.412778 0.736012 +vt 0.409073 0.725552 +vt 0.412758 0.725551 +vt 0.409093 0.715128 +vt 0.412778 0.715128 +vt 0.891799 0.972849 +vt 0.883746 0.964213 +vt 0.886501 0.963569 +vt 0.142103 0.790211 +vt 0.145808 0.800793 +vt 0.142123 0.800794 +vt 0.842211 0.224305 +vt 0.838541 0.213910 +vt 0.842226 0.213909 +vt 0.891799 0.983756 +vt 0.889044 0.973492 +vt 0.145808 0.779921 +vt 0.145788 0.790211 +vt 0.838541 0.234793 +vt 0.838526 0.224305 +vt 0.324437 0.881011 +vt 0.328108 0.888728 +vt 0.324423 0.888729 +vt 0.910280 0.962936 +vt 0.903723 0.964288 +vt 0.902786 0.960720 +vt 0.897488 0.966864 +vt 0.899749 0.977077 +vt 0.897488 0.977771 +vt 0.902786 0.987051 +vt 0.909343 0.985699 +vt 0.910280 0.989267 +vt 0.909343 0.965951 +vt 0.899749 0.968897 +vt 0.903723 0.984036 +vt 0.900968 0.964931 +vt 0.910562 0.973553 +vt 0.906588 0.986342 +vt 0.131059 0.912323 +vt 0.127362 0.904457 +vt 0.131047 0.904457 +vt 0.565196 0.870596 +vt 0.561496 0.862750 +vt 0.565182 0.862750 +vt 0.561511 0.854933 +vt 0.565196 0.854933 +vt 0.906588 0.966594 +vt 0.328123 0.896665 +vt 0.324437 0.896666 +vt 0.127373 0.896660 +vt 0.131059 0.896660 +vt 0.837819 0.869340 +vt 0.832914 0.861517 +vt 0.835742 0.861597 +vt 0.814208 0.977133 +vt 0.821811 0.984863 +vt 0.814208 0.965880 +vt 0.823155 0.961052 +vt 0.817453 0.967190 +vt 0.840166 0.965105 +vt 0.831219 0.960811 +vt 0.832563 0.957375 +vt 0.836921 0.975048 +vt 0.840166 0.976358 +vt 0.817453 0.975629 +vt 0.821811 0.957696 +vt 0.836921 0.966609 +vt 0.748507 0.983944 +vt 0.748507 0.975504 +vt 0.767975 0.983363 +vt 0.131062 0.896660 +vt 0.127362 0.888723 +vt 0.131047 0.888723 +vt 0.703416 0.900457 +vt 0.707089 0.908254 +vt 0.703404 0.908254 +vt 0.834991 0.853606 +vt 0.837819 0.853686 +vt 0.127377 0.881006 +vt 0.131062 0.881005 +vt 0.707101 0.916120 +vt 0.703416 0.916120 +vt 0.561496 0.878413 +vt 0.565196 0.886259 +vt 0.561511 0.886259 +vt 0.561511 0.870596 +vt 0.565182 0.878413 +vt 0.945965 0.971483 +vt 0.943703 0.980358 +vt 0.943703 0.972178 +vt 0.957166 0.373615 +vt 0.957166 0.362362 +vt 0.983125 0.372840 +vt 0.948720 0.981747 +vt 0.945965 0.982390 +vt 0.409963 0.789302 +vt 0.406298 0.779013 +vt 0.409983 0.779012 +vt 0.751860 0.815806 +vt 0.755561 0.826293 +vt 0.751875 0.826294 +vt 0.751860 0.753192 +vt 0.755565 0.763653 +vt 0.751880 0.763653 +vt 0.751880 0.742769 +vt 0.755545 0.753192 +vt 0.940666 0.962204 +vt 0.948720 0.970840 +vt 0.406298 0.799885 +vt 0.406278 0.789302 +vt 0.751875 0.805410 +vt 0.755545 0.815805 +vt 0.968947 0.211996 +vt 0.974245 0.194945 +vt 0.987037 0.206441 +vt 0.755565 0.784537 +vt 0.751860 0.774076 +vt 0.755545 0.774076 +vt 0.751880 0.763653 +vt 0.755565 0.763653 +vt 0.989792 0.205797 +vt 0.981739 0.197161 +vt 0.984494 0.196518 +vt 0.142103 0.811084 +vt 0.145808 0.821666 +vt 0.142123 0.821667 +vt 0.246690 0.817824 +vt 0.243020 0.807429 +vt 0.246705 0.807429 +vt 0.989792 0.216704 +vt 0.145808 0.800794 +vt 0.145788 0.811083 +vt 0.243020 0.828312 +vt 0.243005 0.817824 +vt 0.243019 0.875302 +vt 0.246690 0.883018 +vt 0.243005 0.883019 +vt 0.934109 0.963556 +vt 0.933173 0.959987 +vt 0.927874 0.977039 +vt 0.930135 0.968164 +vt 0.930135 0.976344 +vt 0.933173 0.986318 +vt 0.939729 0.984966 +vt 0.940666 0.988535 +vt 0.939729 0.965218 +vt 0.927874 0.966132 +vt 0.934109 0.983304 +vt 0.931354 0.964199 +vt 0.940948 0.972821 +vt 0.936974 0.985610 +vt 0.781669 0.918250 +vt 0.777972 0.910384 +vt 0.781658 0.910384 +vt 0.602063 0.875303 +vt 0.598363 0.867457 +vt 0.602049 0.867457 +vt 0.598378 0.859640 +vt 0.602063 0.859640 +vt 0.936974 0.965861 +vt 0.246705 0.890955 +vt 0.243019 0.890956 +vt 0.777984 0.902588 +vt 0.781669 0.902588 +vt 0.785854 0.081220 +vt 0.780950 0.073397 +vt 0.783777 0.073477 +vt 0.294957 0.977055 +vt 0.302560 0.984785 +vt 0.294957 0.965802 +vt 0.303904 0.960974 +vt 0.298202 0.967112 +vt 0.320915 0.965028 +vt 0.311968 0.960734 +vt 0.313312 0.957298 +vt 0.320915 0.976281 +vt 0.317670 0.974971 +vt 0.298202 0.975552 +vt 0.302560 0.957619 +vt 0.317670 0.966531 +vt 0.566017 0.975236 +vt 0.579783 0.968857 +vt 0.585486 0.983094 +vt 0.896780 0.890538 +vt 0.893080 0.882602 +vt 0.896765 0.882601 +vt 0.561508 0.901922 +vt 0.565182 0.909718 +vt 0.561496 0.909718 +vt 0.783026 0.065486 +vt 0.785854 0.065566 +vt 0.893095 0.874885 +vt 0.896780 0.874884 +vt 0.565193 0.917584 +vt 0.561508 0.917584 +vt 0.243005 0.867455 +vt 0.246705 0.875301 +vt 0.243019 0.875301 +vt 0.243019 0.859638 +vt 0.246690 0.867455 +vt 0.962328 0.168381 +vt 0.943902 0.190531 +vt 0.943902 0.168381 +vt 0.672850 0.533178 +vt 0.654423 0.621734 +vt 0.654423 0.533180 +vt 0.090326 0.810172 +vt 0.068636 0.795991 +vt 0.090735 0.796008 +vt 0.841473 0.651302 +vt 0.870954 0.533164 +vt 0.870954 0.651303 +vt 0.097880 0.657973 +vt 0.065796 0.748599 +vt 0.068414 0.657951 +vt 0.642122 0.199398 +vt 0.745310 0.317538 +vt 0.642122 0.317536 +vt 0.068414 0.814890 +vt 0.068227 0.810155 +vt 0.088082 0.753351 +vt 0.097880 0.814913 +vt 0.095262 0.748621 +vt 0.644089 0.849500 +vt 0.621987 0.856720 +vt 0.621987 0.849711 +vt 0.651456 0.758312 +vt 0.644088 0.765392 +vt 0.621987 0.758595 +vt 0.654164 0.739885 +vt 0.580500 0.658653 +vt 0.654164 0.658665 +vt 0.580500 0.739873 +vt 0.573383 0.658618 +vt 0.661780 0.739852 +vt 0.501319 0.791682 +vt 0.501319 0.861772 +vt 0.471850 0.869063 +vt 0.061083 0.791251 +vt 0.059213 0.743900 +vt 0.088491 0.739187 +vt 0.889380 0.887828 +vt 0.870954 0.799278 +vt 0.889380 0.799275 +vt 0.673633 0.967035 +vt 0.692059 0.989184 +vt 0.673633 0.989185 +vt 0.325765 0.996349 +vt 0.339904 0.974610 +vt 0.339904 0.996748 +vt 0.661780 0.658632 +vt 0.669146 0.758312 +vt 0.566017 0.758296 +vt 0.566017 0.640158 +vt 0.000136 0.000014 +vt 0.088582 0.118072 +vt 0.000136 0.118085 +vt 0.088582 0.413485 +vt 0.177029 0.000000 +vt 0.177029 0.413483 +vt 0.627394 0.081258 +vt 0.638423 0.149560 +vt 0.623696 0.149171 +vt 0.471824 0.873341 +vt 0.457084 0.784737 +vt 0.471824 0.784737 +vt 0.624752 0.224985 +vt 0.642122 0.414907 +vt 0.029469 0.525549 +vt 0.044203 0.413264 +vt 0.044203 0.805768 +vt 0.000136 0.295193 +vt 0.088582 0.413250 +vt 0.000136 0.413264 +vt 0.088446 0.264661 +vt 0.088582 0.295179 +vt 0.000000 0.146603 +vt 0.000000 0.264674 +vt 0.626338 0.338705 +vt 0.595561 0.243161 +vt 0.029469 0.693765 +vt 0.000000 0.553867 +vt 0.619388 0.849014 +vt 0.605094 0.880278 +vt 0.604655 0.849011 +vt 0.331691 0.869731 +vt 0.349759 0.838197 +vt 0.345683 0.869865 +vt 0.058964 0.818944 +vt 0.044280 0.850210 +vt 0.044223 0.818943 +vt 0.768198 0.031410 +vt 0.787591 0.000000 +vt 0.777652 0.031028 +vt 0.335766 0.900690 +vt 0.349759 0.900824 +vt 0.442365 0.577926 +vt 0.530807 0.577926 +vt 0.530811 0.696065 +vt 0.412886 0.651166 +vt 0.294957 0.415042 +vt 0.412886 0.415023 +vt 0.619826 0.817628 +vt 0.605094 0.817625 +vt 0.778137 0.062999 +vt 0.787591 0.062617 +vt 0.059213 0.624775 +vt 0.059213 0.602103 +vt 0.088667 0.567265 +vt 0.128680 0.570366 +vt 0.164527 0.555144 +vt 0.165498 0.569328 +vt 0.566017 0.415870 +vt 0.606537 0.447023 +vt 0.566017 0.640158 +vt 0.221117 0.651300 +vt 0.250599 0.415023 +vt 0.250599 0.651300 +vt 0.059021 0.787558 +vt 0.044280 0.787558 +vt 0.177029 0.415155 +vt 0.177029 0.651431 +vt 0.294957 0.651428 +vt 0.294957 0.415152 +vt 0.177029 0.564772 +vt 0.164527 0.543809 +vt 0.166673 0.413485 +vt 0.986770 0.176000 +vt 0.972029 0.139084 +vt 0.986770 0.139084 +vt 0.191770 0.993851 +vt 0.177029 0.971700 +vt 0.191770 0.971700 +vt 0.127710 0.556183 +vt 0.127710 0.544848 +vt 0.191770 0.971702 +vt 0.206511 0.993838 +vt 0.191770 0.993841 +vt 0.128680 0.559031 +vt 0.078311 0.415979 +vt 0.972750 0.888042 +vt 0.987491 0.924958 +vt 0.972750 0.924959 +vt 0.766935 0.081220 +vt 0.752194 0.059070 +vt 0.766935 0.059069 +vt 0.991464 0.789133 +vt 0.980153 0.751916 +vt 0.991464 0.752235 +vt 0.473857 0.973494 +vt 0.488598 0.995630 +vt 0.473857 0.995633 +vt 0.654423 0.415023 +vt 0.606537 0.425996 +vt 0.643372 0.446670 +vt 0.643372 0.425643 +vt 0.654423 0.639311 +vt 0.953091 0.805785 +vt 0.974079 0.842889 +vt 0.953091 0.842688 +vt 0.723832 0.341514 +vt 0.699899 0.399398 +vt 0.642122 0.375422 +vt 0.253827 0.385635 +vt 0.297997 0.341280 +vt 0.297997 0.385582 +vt 0.177029 0.385442 +vt 0.209550 0.341282 +vt 0.209550 0.385584 +vt 0.442122 0.057873 +vt 0.486065 0.074394 +vt 0.466891 0.095357 +vt 0.253829 0.179730 +vt 0.297998 0.135044 +vt 0.297998 0.179321 +vt 0.488240 0.530725 +vt 0.533171 0.492408 +vt 0.532770 0.534460 +vt 0.404174 0.032951 +vt 0.461296 0.036909 +vt 0.209551 0.179335 +vt 0.253829 0.135453 +vt 0.444360 0.534460 +vt 0.488642 0.488673 +vt 0.330222 0.341137 +vt 0.330222 0.385439 +vt 0.253827 0.341333 +vt 0.177029 0.178242 +vt 0.209551 0.135058 +vt 0.330222 0.133941 +vt 0.330222 0.178218 +vt 0.215035 0.090456 +vt 0.253778 0.090801 +vt 0.450950 0.453374 +vt 0.489346 0.450106 +vt 0.320622 0.296811 +vt 0.253777 0.296983 +vt 0.177029 0.133965 +vt 0.292426 0.090443 +vt 0.320622 0.089478 +vt 0.292425 0.296936 +vt 0.177029 0.341140 +vt 0.215034 0.296938 +vt 0.495995 0.054605 +vt 0.528309 0.453374 +vt 0.423348 0.011988 +vt 0.474322 0.021806 +vt 0.514272 0.125355 +vt 0.551268 0.110288 +vt 0.553753 0.132145 +vt 0.253676 0.045774 +vt 0.490353 0.415023 +vt 0.301423 0.252461 +vt 0.226003 0.252551 +vt 0.253676 0.252584 +vt 0.205676 0.044844 +vt 0.226003 0.045527 +vt 0.301422 0.044829 +vt 0.281282 0.252550 +vt 0.205677 0.252463 +vt 0.578111 0.100362 +vt 0.591333 0.118248 +vt 0.281282 0.045519 +vt 0.518184 0.417358 +vt 0.541129 0.000000 +vt 0.532977 0.037258 +vt 0.514286 0.009926 +vt 0.523067 0.105438 +vt 0.547770 0.077403 +vt 0.253523 0.000372 +vt 0.569330 0.004850 +vt 0.543714 0.033287 +vt 0.527688 0.068132 +vt 0.536489 0.075463 +vt 0.253524 0.208136 +vt 0.234323 0.000000 +vt 0.242454 0.000273 +vt 0.591333 0.023176 +vt 0.554994 0.035227 +vt 0.264567 0.208123 +vt 0.495995 0.031968 +vt 0.525660 0.046075 +vt 0.558507 0.073432 +vt 0.264566 0.000270 +vt 0.523724 0.057376 +vt 0.966035 0.766820 +vt 0.936572 0.781587 +vt 0.936570 0.766820 +vt 0.703100 0.952165 +vt 0.680255 0.967034 +vt 0.673635 0.952165 +vt 0.213217 0.912249 +vt 0.227959 0.941781 +vt 0.213217 0.941782 +vt 0.703098 0.937397 +vt 0.673633 0.937397 +vt 0.936552 0.759416 +vt 0.966033 0.744649 +vt 0.966034 0.759416 +vt 0.096015 0.889985 +vt 0.084703 0.860147 +vt 0.096015 0.860466 +vt 0.059213 0.882540 +vt 0.068666 0.896917 +vt 0.059213 0.897299 +vt 0.936551 0.744649 +vt 0.958695 0.729848 +vt 0.084703 0.889665 +vt 0.068666 0.882158 +vt 0.242673 0.934318 +vt 0.242673 0.949085 +vt 0.058944 0.786858 +vt 0.044203 0.757324 +vt 0.058944 0.757323 +vt 0.847202 0.020110 +vt 0.869097 0.000000 +vt 0.876682 0.020110 +vt 0.931764 0.109288 +vt 0.917245 0.079726 +vt 0.931764 0.079755 +vt 0.847153 0.034349 +vt 0.876634 0.034349 +vt 0.088849 0.964659 +vt 0.059213 0.950394 +vt 0.088658 0.950394 +vt 0.403216 0.197512 +vt 0.390263 0.167165 +vt 0.403216 0.168564 +vt 0.366754 0.191339 +vt 0.373792 0.203238 +vt 0.366754 0.205813 +vt 0.081462 0.934219 +vt 0.390263 0.196113 +vt 0.373792 0.188764 +vt 0.901451 0.087162 +vt 0.901451 0.072396 +vt 0.739714 0.938818 +vt 0.724972 0.909286 +vt 0.739714 0.909285 +vt 0.029488 0.950347 +vt 0.050963 0.965522 +vt 0.036228 0.965522 +vt 0.177029 0.867980 +vt 0.190411 0.897579 +vt 0.177029 0.897513 +vt 0.058950 0.935582 +vt 0.029480 0.935582 +vt 0.966265 0.722480 +vt 0.936783 0.707712 +vt 0.966265 0.707712 +vt 0.927380 0.921683 +vt 0.913134 0.892037 +vt 0.927380 0.892165 +vt 0.206884 0.890190 +vt 0.213066 0.904813 +vt 0.206884 0.904957 +vt 0.944197 0.692928 +vt 0.958938 0.692928 +vt 0.913134 0.921555 +vt 0.896994 0.914288 +vt 0.955365 0.892305 +vt 0.929738 0.914650 +vt 0.927380 0.892037 +vt 0.000000 0.950810 +vt 0.022693 0.935582 +vt 0.029472 0.950810 +vt 0.710205 0.900457 +vt 0.697413 0.870846 +vt 0.710205 0.870924 +vt 0.000008 0.965574 +vt 0.029480 0.965574 +vt 0.937002 0.029548 +vt 0.966483 0.014780 +vt 0.966484 0.029548 +vt 0.443196 0.922096 +vt 0.428673 0.892493 +vt 0.443196 0.892578 +vt 0.680958 0.878219 +vt 0.673633 0.863590 +vt 0.680958 0.863452 +vt 0.944417 0.000000 +vt 0.959158 0.000000 +vt 0.428673 0.922011 +vt 0.412886 0.914791 +vt 0.986770 0.139084 +vt 0.998081 0.168921 +vt 0.986770 0.168602 +vt 0.943731 0.929546 +vt 0.929738 0.929412 +vt 0.966038 0.781587 +vt 0.943691 0.796388 +vt 0.955365 0.921828 +vt 0.943731 0.914784 +vt 0.710205 0.916591 +vt 0.710205 0.901824 +vt 0.971888 0.139084 +vt 0.944043 0.153845 +vt 0.943902 0.139084 +vt 0.379655 0.911290 +vt 0.358059 0.933373 +vt 0.350190 0.911290 +vt 0.840983 0.902484 +vt 0.855723 0.932019 +vt 0.840983 0.932019 +vt 0.636525 0.965810 +vt 0.651260 0.993705 +vt 0.636525 0.993846 +vt 0.380361 0.910450 +vt 0.364922 0.891463 +vt 0.379655 0.891508 +vt 0.365628 0.868803 +vt 0.380361 0.868847 +vt 0.372794 0.948140 +vt 0.358061 0.948140 +vt 0.365628 0.910405 +vt 0.350190 0.901819 +vt 0.350542 0.890489 +vt 0.870543 0.924610 +vt 0.870543 0.939377 +vt 0.879290 0.207889 +vt 0.895312 0.226384 +vt 0.880585 0.226800 +vt 0.814194 0.947579 +vt 0.799454 0.918044 +vt 0.814194 0.918044 +vt 0.500029 0.947445 +vt 0.522075 0.925361 +vt 0.529511 0.947445 +vt 0.879290 0.185217 +vt 0.894017 0.207473 +vt 0.507334 0.910594 +vt 0.522075 0.910594 +vt 0.972029 0.153844 +vt 0.953497 0.168381 +vt 0.894017 0.184802 +vt 0.909068 0.194782 +vt 0.784792 0.925401 +vt 0.784792 0.910633 +vt 0.938537 0.445694 +vt 0.951270 0.474960 +vt 0.938537 0.475212 +vt 0.566017 0.926567 +vt 0.588511 0.902648 +vt 0.595482 0.926567 +vt 0.409860 0.917707 +vt 0.395118 0.947240 +vt 0.395118 0.917707 +vt 0.566269 0.939322 +vt 0.595734 0.939322 +vt 0.967717 0.593972 +vt 0.954984 0.564470 +vt 0.967717 0.564437 +vt 0.571270 0.859640 +vt 0.593110 0.876307 +vt 0.566017 0.870919 +vt 0.584817 0.899954 +vt 0.595874 0.893504 +vt 0.598363 0.902648 +vt 0.954984 0.594005 +vt 0.938537 0.571858 +vt 0.582328 0.890810 +vt 0.380361 0.925172 +vt 0.380361 0.910405 +vt 0.953489 0.849231 +vt 0.924040 0.861987 +vt 0.924007 0.849231 +vt 0.748507 0.902588 +vt 0.763248 0.932121 +vt 0.748507 0.932121 +vt 0.953522 0.861987 +vt 0.931359 0.885905 +vt 0.983025 0.959112 +vt 0.995091 0.989749 +vt 0.983025 0.986783 +vt 0.969804 0.328751 +vt 0.956007 0.317896 +vt 0.969804 0.315559 +vt 0.951270 0.445442 +vt 0.967716 0.467544 +vt 0.943918 0.319448 +vt 0.956007 0.331088 +vt 0.943918 0.345832 +vt 0.777972 0.924820 +vt 0.777972 0.939586 +vt 0.621987 0.935434 +vt 0.634971 0.965669 +vt 0.621987 0.963470 +vt 0.929861 0.576163 +vt 0.916328 0.601859 +vt 0.902162 0.580169 +vt 0.936570 0.774219 +vt 0.921830 0.803754 +vt 0.921830 0.774220 +vt 0.930178 0.562975 +vt 0.902479 0.566981 +vt 0.132867 0.881005 +vt 0.111630 0.862785 +vt 0.125418 0.863581 +vt 0.118931 0.838991 +vt 0.132719 0.839787 +vt 0.749851 0.848667 +vt 0.737119 0.863678 +vt 0.737119 0.848919 +vt 0.119080 0.880209 +vt 0.097880 0.872293 +vt 0.101530 0.860396 +vt 0.907008 0.781587 +vt 0.907008 0.766820 +vt 0.604655 0.835846 +vt 0.583418 0.817625 +vt 0.597206 0.818422 +vt 0.444353 0.945749 +vt 0.459093 0.916214 +vt 0.459093 0.945749 +vt 0.590867 0.835050 +vt 0.566017 0.839031 +vt 0.597354 0.859640 +vt 0.858414 0.240277 +vt 0.871146 0.225477 +vt 0.871146 0.240244 +vt 0.634971 0.937633 +vt 0.651445 0.958813 +vt 0.583566 0.858844 +vt 0.569741 0.847743 +vt 0.473752 0.938348 +vt 0.473752 0.953115 +vt 0.982458 0.554962 +vt 0.994994 0.580555 +vt 0.982458 0.582998 +vt 0.294957 0.920393 +vt 0.316994 0.893834 +vt 0.324423 0.920393 +vt 0.206565 0.941814 +vt 0.191825 0.912279 +vt 0.206565 0.912280 +vt 0.981225 0.002443 +vt 0.993761 0.028036 +vt 0.981224 0.030479 +vt 0.877837 0.562975 +vt 0.885056 0.580631 +vt 0.870954 0.580631 +vt 0.876087 0.604307 +vt 0.890189 0.604307 +vt 0.302509 0.881011 +vt 0.317242 0.881011 +vt 0.994718 0.680733 +vt 0.981006 0.658623 +vt 0.994718 0.651199 +vt 0.902162 0.582136 +vt 0.177029 0.919724 +vt 0.177029 0.904957 +vt 0.493898 0.886996 +vt 0.485939 0.869662 +vt 0.500029 0.869063 +vt 0.560238 0.946457 +vt 0.545497 0.916922 +vt 0.560238 0.916923 +vt 0.127362 0.881006 +vt 0.105258 0.907565 +vt 0.097880 0.881005 +vt 0.500029 0.910433 +vt 0.479809 0.887595 +vt 0.119967 0.920387 +vt 0.105226 0.920387 +vt 0.456298 0.873331 +vt 0.442586 0.851502 +vt 0.456298 0.843813 +vt 0.485939 0.911031 +vt 0.471850 0.901288 +vt 0.530811 0.924243 +vt 0.530811 0.909476 +vt 0.995825 0.959112 +vt 0.983025 0.929546 +vt 0.995825 0.929578 +vt 0.471824 0.878696 +vt 0.445870 0.900743 +vt 0.444353 0.873341 +vt 0.936551 0.737285 +vt 0.921811 0.766820 +vt 0.921811 0.737286 +vt 0.982683 0.463525 +vt 0.995483 0.493092 +vt 0.982683 0.493060 +vt 0.979111 0.438491 +vt 0.966311 0.408725 +vt 0.979111 0.408973 +vt 0.994942 0.353858 +vt 0.983125 0.384683 +vt 0.983125 0.356429 +vt 0.459605 0.916214 +vt 0.445870 0.913537 +vt 0.966311 0.438242 +vt 0.957166 0.415639 +vt 0.471824 0.904284 +vt 0.459605 0.903420 +vt 0.907008 0.744615 +vt 0.907008 0.729848 +vt 0.995463 0.534502 +vt 0.982663 0.504736 +vt 0.995463 0.504984 +vt 0.953091 0.842645 +vt 0.938350 0.813112 +vt 0.953091 0.813111 +vt 0.770345 0.277132 +vt 0.745310 0.295722 +vt 0.752720 0.270236 +vt 0.782162 0.302814 +vt 0.782162 0.274560 +vt 0.754122 0.313297 +vt 0.745310 0.309849 +vt 0.692059 0.967034 +vt 0.706082 0.990789 +vt 0.692059 0.995070 +vt 0.770345 0.305386 +vt 0.754122 0.299170 +vt 0.923672 0.820552 +vt 0.923672 0.805785 +vt 0.901255 0.640872 +vt 0.878767 0.614761 +vt 0.893448 0.614761 +vt 0.901255 0.633840 +vt 0.915759 0.604334 +vt 0.915759 0.633867 +vt 0.870954 0.651303 +vt 0.900317 0.651303 +vt 0.621987 0.935434 +vt 0.611526 0.966055 +vt 0.611525 0.936762 +vt 0.876682 0.005171 +vt 0.890599 0.033451 +vt 0.876682 0.031129 +vt 0.892512 0.604307 +vt 0.877830 0.604307 +vt 0.595871 0.944745 +vt 0.890599 0.007493 +vt 0.906946 0.012979 +vt 0.931580 0.626437 +vt 0.931580 0.641204 +vt 0.899666 0.279928 +vt 0.922730 0.254730 +vt 0.928880 0.279928 +vt 0.899687 0.488906 +vt 0.914180 0.518457 +vt 0.899687 0.518440 +vt 0.980258 0.694228 +vt 0.994144 0.721429 +vt 0.980258 0.722729 +vt 0.500072 0.887605 +vt 0.514770 0.869063 +vt 0.514813 0.887605 +vt 0.500037 0.910594 +vt 0.514778 0.910594 +vt 0.907614 0.240457 +vt 0.922221 0.240457 +vt 0.999072 0.139084 +vt 0.988145 0.119393 +vt 0.999072 0.109991 +vt 0.529535 0.888717 +vt 0.930020 0.511045 +vt 0.930020 0.525812 +vt 0.412886 0.961190 +vt 0.437982 0.943782 +vt 0.441973 0.961190 +vt 0.931740 0.072394 +vt 0.917194 0.042861 +vt 0.931740 0.042860 +vt 0.870954 0.876316 +vt 0.853941 0.859053 +vt 0.868637 0.858345 +vt 0.248196 0.934532 +vt 0.275447 0.948711 +vt 0.247076 0.948711 +vt 0.856258 0.900420 +vt 0.856258 0.877024 +vt 0.424080 0.929550 +vt 0.438624 0.929550 +vt 0.269158 0.964953 +vt 0.254972 0.964953 +vt 0.840983 0.890786 +vt 0.901451 0.050242 +vt 0.901451 0.035474 +vt 0.187961 0.823449 +vt 0.182523 0.854643 +vt 0.177029 0.848759 +vt 0.931743 0.153554 +vt 0.917200 0.183076 +vt 0.917200 0.153542 +vt 0.433731 0.961190 +vt 0.444326 0.991963 +vt 0.433731 0.990366 +vt 0.987491 0.918587 +vt 0.998036 0.888042 +vt 0.998036 0.917370 +vt 0.212628 0.859527 +vt 0.198949 0.835216 +vt 0.212628 0.832853 +vt 0.968947 0.179035 +vt 0.979248 0.194945 +vt 0.968947 0.193699 +vt 0.989907 0.878189 +vt 0.974286 0.855435 +vt 0.989907 0.849231 +vt 0.198949 0.861890 +vt 0.901451 0.160950 +vt 0.901451 0.146183 +vt 0.339469 0.167165 +vt 0.337437 0.192658 +vt 0.330222 0.190941 +vt 0.931752 0.146183 +vt 0.917219 0.116626 +vt 0.931752 0.116649 +vt 0.000000 0.965574 +vt 0.014291 0.995301 +vt 0.000000 0.995020 +vt 0.943918 0.256276 +vt 0.958186 0.226617 +vt 0.958186 0.256128 +vt 0.366754 0.169635 +vt 0.353900 0.199870 +vt 0.353900 0.170599 +vt 0.337437 0.207293 +vt 0.330222 0.205576 +vt 0.970599 0.248318 +vt 0.901451 0.124055 +vt 0.901451 0.109288 +vt 0.847153 0.020023 +vt 0.824336 0.000000 +vt 0.839064 0.000000 +vt 0.929981 0.353829 +vt 0.915466 0.324325 +vt 0.929981 0.324296 +vt 0.817537 0.034281 +vt 0.846995 0.034281 +vt 0.927676 0.959987 +vt 0.956770 0.945704 +vt 0.957066 0.959987 +vt 0.595250 0.971053 +vt 0.585486 0.997805 +vt 0.585486 0.968857 +vt 0.933670 0.672428 +vt 0.946588 0.685293 +vt 0.933670 0.686841 +vt 0.934995 0.929546 +vt 0.949690 0.929546 +vt 0.960148 0.680129 +vt 0.946588 0.670879 +vt 0.960148 0.651303 +vt 0.899666 0.331655 +vt 0.899666 0.316889 +vt 0.681135 0.852911 +vt 0.699251 0.824487 +vt 0.710205 0.849462 +vt 0.929990 0.451963 +vt 0.915460 0.422455 +vt 0.929990 0.422430 +vt 0.710205 0.860004 +vt 0.500029 0.913006 +vt 0.489530 0.943800 +vt 0.489529 0.914630 +vt 0.621813 0.996470 +vt 0.610397 0.966055 +vt 0.621813 0.970512 +vt 0.696793 0.814291 +vt 0.684716 0.826212 +vt 0.682258 0.816015 +vt 0.473857 0.937308 +vt 0.473857 0.922722 +vt 0.176344 0.903313 +vt 0.161925 0.892503 +vt 0.176344 0.880881 +vt 0.899687 0.429790 +vt 0.899687 0.415023 +vt 0.132867 0.880881 +vt 0.152167 0.906960 +vt 0.137638 0.906324 +vt 0.929980 0.533211 +vt 0.915439 0.562760 +vt 0.915439 0.533226 +vt 0.344230 0.920166 +vt 0.335545 0.901112 +vt 0.349759 0.900824 +vt 0.380361 0.976039 +vt 0.394707 0.947240 +vt 0.394707 0.974827 +vt 0.349759 0.942478 +vt 0.330017 0.920455 +vt 0.152167 0.921241 +vt 0.137638 0.920606 +vt 0.407360 0.964151 +vt 0.161925 0.910716 +vt 0.161925 0.882153 +vt 0.899687 0.540579 +vt 0.899687 0.525812 +vt 0.896994 0.960720 +vt 0.921599 0.943285 +vt 0.926210 0.960720 +vt 0.899687 0.451988 +vt 0.914175 0.481525 +vt 0.899687 0.481523 +vt 0.595871 0.966055 +vt 0.610397 0.994624 +vt 0.595871 0.993749 +vt 0.872419 0.206186 +vt 0.865373 0.225087 +vt 0.858501 0.205806 +vt 0.879290 0.183826 +vt 0.865373 0.183446 +vt 0.907515 0.929047 +vt 0.922123 0.929047 +vt 0.844584 0.215836 +vt 0.898043 0.932245 +vt 0.906990 0.943285 +vt 0.930024 0.474138 +vt 0.930024 0.488906 +vt 0.924007 0.892037 +vt 0.911531 0.859852 +vt 0.924007 0.864637 +vt 0.930000 0.390785 +vt 0.915509 0.361264 +vt 0.930000 0.361251 +vt 0.997467 0.256207 +vt 0.986911 0.225605 +vt 0.997467 0.226909 +vt 1.000000 0.408725 +vt 0.989493 0.439062 +vt 0.989493 0.409644 +vt 0.986308 0.051236 +vt 0.997283 0.073676 +vt 0.986308 0.077909 +vt 0.980677 0.300850 +vt 0.970338 0.314625 +vt 0.970338 0.299915 +vt 0.813486 0.996727 +vt 0.798931 0.975123 +vt 0.813486 0.974866 +vt 0.896994 0.861225 +vt 0.899055 0.882466 +vt 0.899666 0.368625 +vt 0.899666 0.353858 +vt 0.907805 0.689730 +vt 0.933670 0.667101 +vt 0.933669 0.692928 +vt 0.899666 0.279953 +vt 0.914167 0.309462 +vt 0.899666 0.309487 +vt 0.014291 0.965574 +vt 0.028564 0.995253 +vt 0.014291 0.995074 +vt 0.970527 0.256276 +vt 0.956278 0.285850 +vt 0.956278 0.256317 +vt 0.860452 0.970406 +vt 0.870063 0.998184 +vt 0.860452 0.999677 +vt 0.920339 0.651303 +vt 0.933271 0.652902 +vt 0.943918 0.263818 +vt 0.907008 0.661332 +vt 0.920737 0.665502 +vt 0.929993 0.302122 +vt 0.929993 0.316889 +vt 0.444697 0.167165 +vt 0.450662 0.190055 +vt 0.439941 0.189763 +vt 0.029814 0.935515 +vt 0.016477 0.906049 +vt 0.029814 0.905982 +vt 0.088695 0.994193 +vt 0.073954 0.964659 +vt 0.088695 0.964659 +vt 0.938537 0.504731 +vt 0.953278 0.475217 +vt 0.953278 0.504736 +vt 0.476257 0.167440 +vt 0.466140 0.197272 +vt 0.466140 0.167750 +vt 0.450662 0.204817 +vt 0.439941 0.204524 +vt 0.967944 0.482843 +vt 0.967944 0.497602 +vt 0.000000 0.913428 +vt 0.000000 0.898662 +vt 0.958707 0.641151 +vt 0.944179 0.619074 +vt 0.957742 0.619074 +vt 0.703404 0.937397 +vt 0.690111 0.907840 +vt 0.703404 0.907863 +vt 0.636525 0.994083 +vt 0.621987 0.966335 +vt 0.636525 0.965669 +vt 0.160425 0.860561 +vt 0.154052 0.880743 +vt 0.146643 0.860422 +vt 0.154026 0.838991 +vt 0.167808 0.839130 +vt 0.944207 0.604307 +vt 0.957771 0.604307 +vt 0.132867 0.870721 +vt 0.931638 0.611617 +vt 0.931580 0.641151 +vt 0.673633 0.915225 +vt 0.673633 0.900457 +vt 0.840983 0.920532 +vt 0.814684 0.942608 +vt 0.814208 0.920532 +vt 0.089108 0.934197 +vt 0.075682 0.904684 +vt 0.089108 0.904663 +vt 0.885044 0.907726 +vt 0.877080 0.888041 +vt 0.891171 0.887831 +vt 0.966687 0.564437 +vt 0.939027 0.549763 +vt 0.967177 0.549763 +vt 0.877080 0.929761 +vt 0.870954 0.907936 +vt 0.828040 0.957375 +vt 0.814653 0.957375 +vt 0.958453 0.534262 +vt 0.840920 0.950066 +vt 0.828071 0.942608 +vt 0.059213 0.912066 +vt 0.059213 0.897299 +vt 0.412886 0.858026 +vt 0.438575 0.881201 +vt 0.424468 0.882796 +vt 0.651792 0.905901 +vt 0.638464 0.935370 +vt 0.638464 0.905837 +vt 0.442586 0.843813 +vt 0.414373 0.847003 +vt 0.943902 0.139084 +vt 0.954794 0.107922 +vt 0.954794 0.136057 +vt 0.787591 0.008959 +vt 0.802291 0.035439 +vt 0.787591 0.034917 +vt 0.442586 0.890898 +vt 0.428479 0.892493 +vt 0.970652 0.113588 +vt 0.970652 0.127656 +vt 0.802291 0.009481 +vt 0.817537 0.012979 +vt 0.621987 0.913224 +vt 0.621987 0.898457 +vt 0.000000 0.864289 +vt 0.025565 0.887597 +vt 0.011562 0.889071 +vt 0.276940 0.934470 +vt 0.263548 0.904999 +vt 0.276940 0.904936 +vt 0.029806 0.850210 +vt 0.001801 0.853157 +vt 0.943902 0.078131 +vt 0.954890 0.047002 +vt 0.954890 0.074875 +vt 0.557918 0.946457 +vt 0.530811 0.960977 +vt 0.535682 0.949097 +vt 0.015803 0.898662 +vt 0.029806 0.897188 +vt 0.970791 0.066471 +vt 0.553047 0.958337 +vt 0.546800 0.975213 +vt 0.247076 0.912377 +vt 0.247076 0.897610 +vt 0.309717 0.870324 +vt 0.331691 0.853742 +vt 0.331691 0.881011 +vt 0.936783 0.700281 +vt 0.923486 0.729848 +vt 0.923486 0.700313 +vt 0.339180 0.793760 +vt 0.350162 0.824891 +vt 0.339180 0.821921 +vt 0.997234 0.106597 +vt 0.986375 0.080794 +vt 0.997234 0.078131 +vt 0.294957 0.858747 +vt 0.300252 0.879418 +vt 0.939970 0.430992 +vt 0.930000 0.442325 +vt 0.930000 0.428092 +vt 0.993944 0.722729 +vt 0.980258 0.737457 +vt 0.980258 0.724613 +vt 0.304422 0.849653 +vt 0.320704 0.848398 +vt 0.907008 0.707695 +vt 0.907008 0.692928 +vt 0.771071 0.902452 +vt 0.748507 0.880372 +vt 0.754601 0.880304 +vt 0.784493 0.872949 +vt 0.771071 0.872918 +vt 0.996081 0.287373 +vt 0.985003 0.256276 +vt 0.996081 0.259472 +vt 0.996357 0.604307 +vt 0.985403 0.635442 +vt 0.985403 0.607208 +vt 0.937001 0.031808 +vt 0.910411 0.015747 +vt 0.937001 0.017127 +vt 0.899307 0.391649 +vt 0.889441 0.402546 +vt 0.889441 0.388429 +vt 0.970791 0.076536 +vt 0.986308 0.054442 +vt 0.986308 0.069209 +vt 0.920242 0.000690 +vt 0.754601 0.865537 +vt 0.414230 0.204192 +vt 0.439941 0.182245 +vt 0.433827 0.204829 +vt 0.324145 0.957218 +vt 0.311405 0.927765 +vt 0.324145 0.927685 +vt 0.261817 0.994488 +vt 0.247076 0.964953 +vt 0.261817 0.964953 +vt 0.938537 0.504736 +vt 0.953277 0.534262 +vt 0.938537 0.534256 +vt 0.403216 0.174953 +vt 0.403216 0.204476 +vt 0.430142 0.167165 +vt 0.439941 0.167483 +vt 0.967922 0.512362 +vt 0.967922 0.527122 +vt 0.414229 0.174670 +vt 0.430142 0.181926 +vt 0.294957 0.935159 +vt 0.294957 0.920393 +vt 0.840983 0.920532 +vt 0.827897 0.889864 +vt 0.840983 0.893109 +vt 0.127034 0.957377 +vt 0.114323 0.927780 +vt 0.127034 0.927843 +vt 0.984461 0.828146 +vt 0.996365 0.798421 +vt 0.996365 0.827948 +vt 0.972750 0.929546 +vt 0.955365 0.912110 +vt 0.969975 0.912440 +vt 0.958140 0.888042 +vt 0.972750 0.888372 +vt 0.827735 0.877039 +vt 0.840821 0.880285 +vt 0.743954 0.994906 +vt 0.729674 0.978602 +vt 0.743954 0.968354 +vt 0.814488 0.888393 +vt 0.814811 0.914041 +vt 0.097880 0.935154 +vt 0.097880 0.920387 +vt 0.897839 0.842822 +vt 0.923672 0.821805 +vt 0.923672 0.849231 +vt 0.059213 0.934147 +vt 0.046392 0.904675 +vt 0.059213 0.904613 +vt 0.595545 0.201701 +vt 0.585686 0.182139 +vt 0.595545 0.176447 +vt 0.651792 0.922954 +vt 0.671798 0.899294 +vt 0.665940 0.923791 +vt 0.657650 0.939368 +vt 0.671798 0.940204 +vt 0.910333 0.805785 +vt 0.923249 0.808990 +vt 0.782331 0.995300 +vt 0.767975 0.979427 +vt 0.782331 0.969126 +vt 0.896994 0.817191 +vt 0.910755 0.818600 +vt 0.029933 0.912065 +vt 0.029933 0.897299 +vt 0.636192 0.872830 +vt 0.656307 0.883402 +vt 0.636192 0.898457 +vt 0.161991 0.958140 +vt 0.149307 0.928622 +vt 0.161991 0.928605 +vt 0.621987 0.870868 +vt 0.621987 0.896495 +vt 0.325765 0.942767 +vt 0.334862 0.974211 +vt 0.325765 0.968525 +vt 0.644073 0.858683 +vt 0.956432 0.224254 +vt 0.967965 0.213133 +vt 0.968947 0.226617 +vt 0.334862 0.948453 +vt 0.349759 0.971227 +vt 0.968947 0.199671 +vt 0.955451 0.210770 +vt 0.943918 0.194945 +vt 0.132867 0.936009 +vt 0.132867 0.921241 +vt 0.733896 0.901766 +vt 0.710205 0.879642 +vt 0.717434 0.879613 +vt 0.746743 0.901782 +vt 0.733896 0.872231 +vt 0.746743 0.872248 +vt 0.670998 0.872701 +vt 0.658028 0.856980 +vt 0.672719 0.856720 +vt 0.205740 0.942199 +vt 0.193400 0.971315 +vt 0.193400 0.941814 +vt 0.658028 0.897793 +vt 0.656307 0.872960 +vt 0.883426 0.959434 +vt 0.894865 0.948690 +vt 0.895899 0.961996 +vt 0.177029 0.949098 +vt 0.895899 0.934885 +vt 0.882392 0.946128 +vt 0.870954 0.929761 +vt 0.717434 0.864846 +vt 0.983418 0.139084 +vt 0.984832 0.128363 +vt 0.988145 0.138893 +vt 0.850168 0.403043 +vt 0.860611 0.410567 +vt 0.850168 0.410423 +vt 0.817687 0.229288 +vt 0.827921 0.234935 +vt 0.817620 0.236296 +vt 0.752194 0.066472 +vt 0.741750 0.059069 +vt 0.752194 0.059088 +vt 0.731347 0.066472 +vt 0.731346 0.059089 +vt 0.983418 0.118211 +vt 0.988145 0.118021 +vt 0.871015 0.403040 +vt 0.871015 0.410419 +vt 0.838526 0.229288 +vt 0.838459 0.236296 +vt 0.530811 0.985673 +vt 0.545690 0.975213 +vt 0.545690 0.996097 +vt 0.670640 0.637997 +vt 0.654423 0.637997 +vt 0.667488 0.621734 +vt 0.545690 0.985674 +vt 0.560450 0.975213 +vt 0.560450 0.996097 +vt 0.406278 0.769051 +vt 0.412418 0.758140 +vt 0.412418 0.779012 +vt 0.387852 0.867580 +vt 0.408699 0.846696 +vt 0.408699 0.867579 +vt 0.281282 0.207867 +vt 0.253676 0.208123 +vt 0.488881 0.569214 +vt 0.387178 0.073855 +vt 0.455655 0.167165 +vt 0.429472 0.137861 +vt 0.471844 0.135361 +vt 0.461455 0.571549 +vt 0.361579 0.070305 +vt 0.363216 0.027271 +vt 0.226003 0.414991 +vt 0.426376 0.112859 +vt 0.441784 0.577926 +vt 0.412886 0.544664 +vt 0.340958 0.079731 +vt 0.330222 0.042353 +vt 0.566017 0.544664 +vt 0.516712 0.571549 +vt 0.410895 0.089431 +vt 0.373133 0.163615 +vt 0.333936 0.124611 +vt 0.650297 0.073795 +vt 0.591333 0.000009 +vt 0.650297 0.000000 +vt 0.723977 0.059069 +vt 0.709235 0.000000 +vt 0.723975 0.000000 +vt 0.726928 0.317538 +vt 0.767994 0.364559 +vt 0.723832 0.362775 +vt 0.768199 0.059069 +vt 0.768196 0.000000 +vt 0.767994 0.411947 +vt 0.723832 0.410163 +vt 0.709235 0.070090 +vt 0.665032 0.000423 +vt 0.709235 0.000000 +vt 0.555026 0.132145 +vt 0.496062 0.176448 +vt 0.496062 0.132146 +vt 0.782715 0.384109 +vt 0.782715 0.412542 +vt 0.665032 0.070513 +vt 0.650297 0.028601 +vt 0.495995 0.205917 +vt 0.555026 0.176447 +vt 0.554959 0.205916 +vt 0.247083 0.852695 +vt 0.291274 0.808393 +vt 0.291281 0.852695 +vt 0.294957 0.838063 +vt 0.339180 0.793760 +vt 0.339180 0.838062 +vt 0.214276 0.807429 +vt 0.241946 0.841506 +vt 0.213217 0.841419 +vt 0.029806 0.850210 +vt 0.058550 0.894513 +vt 0.029806 0.894512 +vt 0.243004 0.869919 +vt 0.214276 0.869832 +vt 0.213217 0.870194 +vt 0.241950 0.911973 +vt 0.213217 0.912248 +vt 0.175201 0.836580 +vt 0.167835 0.880880 +vt 0.167835 0.836579 +vt 0.593056 0.176447 +vt 0.585686 0.132145 +vt 0.593056 0.132145 +vt 0.063939 0.814913 +vt 0.059213 0.859381 +vt 0.059213 0.815104 +vt 0.787591 0.079722 +vt 0.794587 0.035506 +vt 0.794587 0.079789 +vt 0.097873 0.815870 +vt 0.063939 0.859190 +vt 0.044223 0.805909 +vt 0.000000 0.850210 +vt 0.000000 0.805911 +vt 0.979735 0.842889 +vt 0.974079 0.798452 +vt 0.979735 0.798612 +vt 0.840285 0.832783 +vt 0.832914 0.788483 +vt 0.840285 0.788483 +vt 0.983837 0.408725 +vt 0.989493 0.453161 +vt 0.983837 0.453002 +vt 0.889380 0.799275 +vt 0.896750 0.843574 +vt 0.889380 0.843575 +vt 0.979111 0.408916 +vt 0.979111 0.453193 +vt 0.096104 0.941649 +vt 0.089108 0.897299 +vt 0.096104 0.897366 +vt 0.984461 0.842698 +vt 0.984462 0.798421 +vt 0.739714 0.901824 +vt 0.746710 0.946175 +vt 0.739714 0.946108 +vt 0.872718 0.146229 +vt 0.880089 0.168381 +vt 0.865348 0.168380 +vt 0.802360 0.120640 +vt 0.809592 0.137493 +vt 0.794862 0.137793 +vt 0.883001 0.651622 +vt 0.871690 0.798893 +vt 0.871690 0.651303 +vt 0.885695 0.415023 +vt 0.870954 0.562690 +vt 0.870954 0.415024 +vt 0.862237 0.799275 +vt 0.862237 0.651685 +vt 0.901451 0.035608 +vt 0.887459 0.183087 +vt 0.887459 0.035474 +vt 0.850168 0.388110 +vt 0.861479 0.240839 +vt 0.861479 0.388429 +vt 0.751860 0.701001 +vt 0.737119 0.848667 +vt 0.737119 0.701002 +vt 0.870932 0.240457 +vt 0.870932 0.388047 +vt 0.899687 0.415157 +vt 0.885695 0.562636 +vt 0.885695 0.415023 +vt 0.484970 0.414874 +vt 0.573416 0.208131 +vt 0.573416 0.414873 +vt 0.440746 0.414756 +vt 0.352300 0.208145 +vt 0.440746 0.208131 +vt 0.841473 0.798956 +vt 0.852784 0.651685 +vt 0.852784 0.799275 +vt 0.044203 0.757323 +vt 0.058944 0.609657 +vt 0.058944 0.757323 +vt 0.862237 0.651303 +vt 0.862237 0.798893 +vt 0.899666 0.240591 +vt 0.885673 0.388070 +vt 0.885673 0.240457 +vt 0.865348 0.035793 +vt 0.854037 0.183064 +vt 0.854037 0.035474 +vt 0.885673 0.240457 +vt 0.870932 0.388123 +vt 0.870932 0.240457 +vt 0.844584 0.183446 +vt 0.844584 0.035856 +vt 0.883001 0.798915 +vt 0.896994 0.651437 +vt 0.896994 0.799049 +vt 0.802890 0.052627 +vt 0.817089 0.120339 +vt 0.872718 0.057625 +vt 0.887459 0.146230 +vt 0.412886 0.843806 +vt 0.457084 0.784744 +vt 0.457084 0.843813 +vt 0.097880 0.779921 +vt 0.142103 0.838991 +vt 0.097880 0.838990 +vt 0.556220 0.132197 +vt 0.584492 0.177472 +vt 0.555026 0.177524 +vt 0.841473 0.799275 +vt 0.870954 0.858345 +vt 0.841473 0.858344 +vt 0.585686 0.205880 +vt 0.556220 0.205932 +vt 0.814261 0.910351 +vt 0.784792 0.868579 +vt 0.814261 0.868297 +vt 0.560292 0.776571 +vt 0.530811 0.865174 +vt 0.530811 0.776570 +vt 0.350190 0.679023 +vt 0.364911 0.651185 +vt 0.409073 0.662447 +vt 0.656865 0.414165 +vt 0.671596 0.399398 +vt 0.671598 0.414165 +vt 0.457174 0.784669 +vt 0.427691 0.696065 +vt 0.457173 0.696066 +vt 0.607994 0.817625 +vt 0.566017 0.802462 +vt 0.580009 0.758312 +vt 0.360266 0.756950 +vt 0.394352 0.690285 +vt 0.389707 0.758140 +vt 0.486083 0.784739 +vt 0.471850 0.696065 +vt 0.486083 0.696135 +vt 0.471850 0.784737 +vt 0.515549 0.696140 +vt 0.530781 0.784678 +vt 0.515549 0.784743 +vt 0.427691 0.784669 +vt 0.412886 0.696132 +vt 0.642122 0.414165 +vt 0.656863 0.399398 +vt 0.656863 0.414165 +vt 0.720798 0.414165 +vt 0.713428 0.399398 +vt 0.720798 0.399398 +vt 0.757218 0.862685 +vt 0.749851 0.848738 +vt 0.757218 0.848667 +vt 0.832914 0.844113 +vt 0.840633 0.853606 +vt 0.833267 0.853584 +vt 0.833267 0.832783 +vt 0.840281 0.844135 +vt 0.036818 0.995056 +vt 0.029480 0.972871 +vt 0.036818 0.965522 +vt 0.870464 0.968913 +vt 0.840983 0.939377 +vt 0.870464 0.939378 +vt 0.044189 0.995056 +vt 0.051555 0.995057 +vt 0.044189 0.965522 +vt 0.051555 0.965523 +vt 0.965611 0.286041 +vt 0.970338 0.315368 +vt 0.965611 0.315559 +vt 0.979915 0.226617 +vt 0.986911 0.256207 +vt 0.979915 0.256139 +vt 0.943918 0.293133 +vt 0.955229 0.308211 +vt 0.943918 0.307892 +vt 0.058672 0.987709 +vt 0.955229 0.293452 +vt 0.970599 0.234133 +vt 0.731346 0.059069 +vt 0.709235 0.081220 +vt 0.709235 0.059070 +vt 0.591333 0.073804 +vt 0.595018 0.095955 +vt 0.591333 0.095955 +vt 0.595016 0.118106 +vt 0.591333 0.095955 +vt 0.595016 0.095955 +vt 0.593056 0.132240 +vt 0.595420 0.154283 +vt 0.593056 0.154379 +vt 0.409073 0.651185 +vt 0.412571 0.673360 +vt 0.409073 0.673327 +vt 0.677465 0.688132 +vt 0.672850 0.533178 +vt 0.677465 0.534214 +vt 0.943902 0.194945 +vt 0.936956 0.047002 +vt 0.943902 0.047845 +vt 0.682889 0.535830 +vt 0.936956 0.351416 +vt 0.930000 0.197387 +vt 0.936956 0.194945 +vt 0.902495 0.652723 +vt 0.907008 0.803039 +vt 0.902495 0.804460 +vt 0.943918 0.344853 +vt 0.936956 0.195637 +vt 0.943918 0.194945 +vt 0.896994 0.654048 +vt 0.896994 0.805785 +vt 0.938537 0.447879 +vt 0.931580 0.601871 +vt 0.931580 0.445442 +vt 0.817620 0.269935 +vt 0.802890 0.270236 +vt 0.462892 0.208166 +vt 0.484970 0.208133 +vt 0.352300 0.414770 +vt 0.330222 0.208398 +vt 0.880089 0.035475 +vt 0.887459 0.057626 +vt 0.058938 0.609516 +vt 0.044203 0.413405 +vt 0.058938 0.413264 +vt 0.595561 0.414905 +vt 0.462892 0.415003 +vt 0.810388 0.035474 +vt 0.817620 0.052327 +vt 0.805264 0.964065 +vt 0.801275 0.968061 +vt 0.795634 0.954418 +vt 0.366586 0.968588 +vt 0.356956 0.964592 +vt 0.360944 0.954945 +vt 0.444353 0.961620 +vt 0.451956 0.953436 +vt 0.470311 0.960845 +vt 0.462708 0.980282 +vt 0.444353 0.972873 +vt 0.755565 0.701001 +vt 0.159506 0.985131 +vt 0.755565 0.805410 +vt 0.821321 0.257169 +vt 0.425678 0.989738 +vt 0.418184 0.987521 +vt 0.412886 0.967335 +vt 0.430976 0.983593 +vt 0.409093 0.715128 +vt 0.406298 0.799886 +vt 0.406294 0.841641 +vt 0.893095 0.859230 +vt 0.171573 0.962745 +vt 0.175547 0.969704 +vt 0.175547 0.977884 +vt 0.893092 0.906201 +vt 0.243019 0.859638 +vt 0.562369 0.854853 +vt 0.723971 0.988729 +vt 0.715907 0.988970 +vt 0.710205 0.983172 +vt 0.715907 0.968595 +vt 0.723971 0.968354 +vt 0.889395 0.874884 +vt 0.328119 0.896666 +vt 0.412886 0.843813 +vt 0.957066 0.965538 +vt 0.964669 0.957354 +vt 0.983025 0.964763 +vt 0.975422 0.984200 +vt 0.957066 0.976790 +vt 0.412778 0.736013 +vt 0.148908 0.959731 +vt 0.563997 0.818315 +vt 0.672847 0.640158 +vt 0.975103 0.341890 +vt 0.969804 0.332611 +vt 0.969804 0.321704 +vt 0.409093 0.694244 +vt 0.817640 0.236297 +vt 0.560307 0.839199 +vt 0.893080 0.843575 +vt 0.136841 0.982117 +vt 0.132868 0.975157 +vt 0.132867 0.966977 +vt 0.146436 0.979171 +vt 0.243016 0.906618 +vt 0.243019 0.843975 +vt 0.753937 0.841948 +vt 0.854749 0.989288 +vt 0.846685 0.989529 +vt 0.840983 0.983731 +vt 0.846685 0.969154 +vt 0.860452 0.974710 +vt 0.893095 0.859229 +vt 0.565193 0.886259 +vt 0.145803 0.821667 +vt 0.889441 0.410579 +vt 0.814488 0.788486 +vt 0.841473 0.415023 +vt 0.745310 0.081260 +vt 0.259384 0.746814 +vt 0.680924 0.856438 +vt 0.651456 0.765603 +vt 0.750186 0.433497 +vt 0.508686 0.784955 +vt 0.530787 0.868851 +vt 0.508686 0.869063 +vt 0.259793 0.732650 +vt 0.406278 0.758140 +vt 0.918092 0.390799 +vt 0.784792 0.974866 +vt 0.661790 0.533163 +vt 0.654423 0.415023 +vt 0.661790 0.415025 +vt 0.757553 0.415040 +vt 0.750186 0.415038 +vt 0.213217 0.957590 +vt 0.220820 0.949406 +vt 0.239176 0.956815 +vt 0.231573 0.976252 +vt 0.213217 0.968842 +vt 0.755565 0.721885 +vt 0.563997 0.797442 +vt 0.672847 0.661041 +vt 0.876252 0.988327 +vt 0.870954 0.979047 +vt 0.870954 0.968141 +vt 0.409093 0.736013 +vt 0.142123 0.779921 +vt 0.842226 0.234792 +vt 0.328123 0.881011 +vt 0.900968 0.984680 +vt 0.896994 0.977720 +vt 0.896994 0.969540 +vt 0.910562 0.981733 +vt 0.127373 0.912323 +vt 0.561511 0.870596 +vt 0.834991 0.869261 +vt 0.754209 0.969366 +vt 0.762273 0.969126 +vt 0.767975 0.974923 +vt 0.762273 0.989500 +vt 0.754209 0.989741 +vt 0.127377 0.896660 +vt 0.707101 0.900457 +vt 0.565196 0.870596 +vt 0.964769 0.354179 +vt 0.975522 0.353858 +vt 0.983125 0.361588 +vt 0.975522 0.381024 +vt 0.964769 0.381345 +vt 0.755565 0.742769 +vt 0.943421 0.961561 +vt 0.409983 0.799884 +vt 0.755561 0.805410 +vt 0.981739 0.223492 +vt 0.974245 0.221275 +vt 0.968947 0.201089 +vt 0.987037 0.217347 +vt 0.751880 0.784537 +vt 0.142123 0.800794 +vt 0.246705 0.828312 +vt 0.246705 0.875301 +vt 0.931354 0.983947 +vt 0.927380 0.976988 +vt 0.927380 0.968808 +vt 0.940948 0.981001 +vt 0.777984 0.918250 +vt 0.598378 0.875303 +vt 0.783026 0.081141 +vt 0.579783 0.989232 +vt 0.571719 0.989473 +vt 0.566017 0.983675 +vt 0.571719 0.969098 +vt 0.585486 0.974655 +vt 0.893095 0.890539 +vt 0.565193 0.901922 +vt 0.246705 0.859638 +vt 0.962328 0.190531 +vt 0.672850 0.621731 +vt 0.841473 0.533163 +vt 0.745310 0.199400 +vt 0.065983 0.753334 +vt 0.651456 0.856438 +vt 0.621987 0.765603 +vt 0.573383 0.739838 +vt 0.493951 0.868851 +vt 0.471850 0.784955 +vt 0.493951 0.784743 +vt 0.066392 0.739170 +vt 0.870954 0.887831 +vt 0.692059 0.967034 +vt 0.325765 0.974211 +vt 0.661780 0.640173 +vt 0.669146 0.640174 +vt 0.661780 0.758311 +vt 0.573383 0.640159 +vt 0.573383 0.758297 +vt 0.088582 0.000000 +vt 0.088582 0.000002 +vt 0.642122 0.081647 +vt 0.457084 0.873341 +vt 0.627394 0.414518 +vt 0.029469 0.805909 +vt 0.029469 0.413405 +vt 0.088446 0.146589 +vt 0.596618 0.318974 +vt 0.000000 0.666011 +vt 0.619826 0.880280 +vt 0.335766 0.838063 +vt 0.059021 0.850210 +vt 0.778137 0.000382 +vt 0.442369 0.696065 +vt 0.412887 0.651763 +vt 0.412886 0.622228 +vt 0.294957 0.651185 +vt 0.177029 0.655457 +vt 0.088667 0.657951 +vt 0.221117 0.415024 +vt 0.165498 0.557992 +vt 0.972029 0.176001 +vt 0.177029 0.993851 +vt 0.206511 0.971700 +vt 0.987491 0.888042 +vt 0.752194 0.081220 +vt 0.980153 0.788814 +vt 0.488598 0.973492 +vt 0.974079 0.805986 +vt 0.642122 0.341514 +vt 0.666055 0.317538 +vt 0.699900 0.317538 +vt 0.723832 0.375422 +vt 0.666054 0.399398 +vt 0.444761 0.492408 +vt 0.186578 0.089499 +vt 0.186578 0.296814 +vt 0.441118 0.000000 +vt 0.462927 0.417358 +vt 0.501064 0.087112 +vt 0.242455 0.208123 +vt 0.563795 0.042558 +vt 0.567759 0.053314 +vt 0.565823 0.064615 +vt 0.694987 0.967034 +vt 0.227959 0.912248 +vt 0.943954 0.729848 +vt 0.044203 0.786858 +vt 0.854357 0.000000 +vt 0.917245 0.109259 +vt 0.059404 0.964659 +vt 0.066739 0.934219 +vt 0.724972 0.938819 +vt 0.058958 0.950347 +vt 0.190411 0.868046 +vt 0.936783 0.722480 +vt 0.213066 0.890047 +vt 0.896994 0.929047 +vt 0.007957 0.935582 +vt 0.697413 0.900379 +vt 0.937001 0.014780 +vt 0.673633 0.878356 +vt 0.412886 0.929550 +vt 0.998081 0.139403 +vt 0.958424 0.796388 +vt 0.372791 0.933373 +vt 0.855723 0.902485 +vt 0.651260 0.965669 +vt 0.350542 0.911290 +vt 0.799454 0.947578 +vt 0.507334 0.925361 +vt 0.967490 0.168381 +vt 0.909068 0.183446 +vt 0.573778 0.902648 +vt 0.409860 0.947240 +vt 0.598363 0.865028 +vt 0.938537 0.586626 +vt 0.763248 0.902588 +vt 0.946100 0.885905 +vt 0.995091 0.962078 +vt 0.967716 0.452785 +vt 0.930178 0.599855 +vt 0.936570 0.803754 +vt 0.749851 0.863426 +vt 0.101604 0.881005 +vt 0.444353 0.916214 +vt 0.858414 0.225510 +vt 0.651445 0.944795 +vt 0.566091 0.859640 +vt 0.994994 0.552519 +vt 0.302261 0.893834 +vt 0.191825 0.941813 +vt 0.993761 0.000000 +vt 0.891939 0.562975 +vt 0.981006 0.673390 +vt 0.899595 0.570298 +vt 0.545497 0.946456 +vt 0.119999 0.907565 +vt 0.442586 0.866261 +vt 0.474915 0.913006 +vt 0.983025 0.959080 +vt 0.936551 0.766819 +vt 0.995483 0.463557 +vt 0.994942 0.382112 +vt 0.957166 0.430398 +vt 0.982663 0.534254 +vt 0.938350 0.842646 +vt 0.706082 0.976771 +vt 0.871892 0.640872 +vt 0.901255 0.604307 +vt 0.621987 0.964727 +vt 0.595871 0.959391 +vt 0.906946 0.000000 +vt 0.908122 0.254730 +vt 0.914180 0.488922 +vt 0.994144 0.692928 +vt 0.500029 0.869063 +vt 0.988145 0.133940 +vt 0.529552 0.877222 +vt 0.423439 0.943782 +vt 0.917194 0.072396 +vt 0.276568 0.934532 +vt 0.870954 0.899711 +vt 0.840983 0.902484 +vt 0.931743 0.183089 +vt 0.444326 0.962787 +vt 0.987491 0.889258 +vt 0.979248 0.180280 +vt 0.974286 0.869913 +vt 0.182523 0.867980 +vt 0.917219 0.146159 +vt 0.014291 0.965855 +vt 0.943918 0.226765 +vt 0.366754 0.198906 +vt 0.970599 0.233562 +vt 0.817696 0.020023 +vt 0.915466 0.353858 +vt 0.927380 0.945704 +vt 0.595250 1.000000 +vt 0.915460 0.451988 +vt 0.681135 0.863452 +vt 0.500029 0.942176 +vt 0.610397 0.992013 +vt 0.161925 0.903718 +vt 0.929980 0.562745 +vt 0.380361 0.948453 +vt 0.335545 0.942767 +vt 0.407360 0.950358 +vt 0.914175 0.451990 +vt 0.610397 0.966930 +vt 0.879290 0.225467 +vt 0.848020 0.225477 +vt 0.915509 0.390799 +vt 0.986911 0.254902 +vt 1.000000 0.438143 +vt 0.997283 0.047002 +vt 0.980677 0.315559 +vt 0.798931 0.986053 +vt 0.910500 0.849231 +vt 0.914167 0.279928 +vt 0.028564 0.965753 +vt 0.970527 0.285809 +vt 0.870063 0.968913 +vt 0.943918 0.278585 +vt 0.016477 0.935582 +vt 0.073954 0.994193 +vt 0.938537 0.475212 +vt 0.476257 0.196963 +vt 0.690112 0.937375 +vt 0.621987 0.994749 +vt 0.167835 0.880881 +vt 0.136572 0.880881 +vt 0.075682 0.934219 +vt 0.938537 0.564437 +vt 0.891171 0.929551 +vt 0.944378 0.534262 +vt 0.441099 0.854836 +vt 0.651792 0.935434 +vt 0.943902 0.110949 +vt 0.817537 0.000000 +vt 0.028005 0.861342 +vt 0.263548 0.934532 +vt 0.943902 0.050258 +vt 0.970791 0.052535 +vt 0.557918 0.973893 +vt 0.936783 0.729816 +vt 0.350162 0.796730 +vt 0.986375 0.109260 +vt 0.939970 0.445225 +vt 0.993944 0.748418 +vt 0.318056 0.838063 +vt 0.758881 0.902588 +vt 0.784493 0.902483 +vt 0.985003 0.284177 +vt 0.996357 0.632541 +vt 0.910411 0.030427 +vt 0.899307 0.405766 +vt 0.970791 0.047002 +vt 0.906946 0.000000 +vt 0.311405 0.957298 +vt 0.247076 0.994488 +vt 0.953277 0.504742 +vt 0.114323 0.957314 +vt 0.984461 0.798619 +vt 0.958140 0.929215 +vt 0.729674 0.991878 +vt 0.046392 0.934208 +vt 0.585686 0.207393 +vt 0.657650 0.898457 +vt 0.767975 0.992514 +vt 0.656307 0.870589 +vt 0.149307 0.958157 +vt 0.629868 0.856720 +vt 0.349759 0.958349 +vt 0.719437 0.901824 +vt 0.205740 0.971700 +vt 0.672719 0.897533 +vt 0.177029 0.963849 +vt 0.970652 0.128936 +vt 0.860611 0.388429 +vt 0.828122 0.213909 +vt 0.741750 0.081220 +vt 0.387852 0.846697 +vt 0.419353 0.157739 +vt 0.253676 0.415023 +vt 0.537491 0.577926 +vt 0.330840 0.099609 +vt 0.398732 0.167165 +vt 0.349416 0.148039 +vt 0.591333 0.073804 +vt 0.709237 0.059069 +vt 0.771091 0.319322 +vt 0.650297 0.070654 +vt 0.247076 0.808393 +vt 0.294957 0.793761 +vt 0.243004 0.807515 +vt 0.058550 0.850212 +vt 0.241950 0.869919 +vt 0.175201 0.880881 +vt 0.585686 0.176447 +vt 0.787591 0.035439 +vt 0.097873 0.860147 +vt 0.044223 0.850209 +vt 0.974079 0.842729 +vt 0.832914 0.832783 +vt 0.989493 0.408884 +vt 0.896750 0.799275 +vt 0.089108 0.941582 +vt 0.746710 0.901891 +vt 0.883001 0.799212 +vt 0.885695 0.562689 +vt 0.901451 0.183221 +vt 0.850168 0.240520 +vt 0.751860 0.848667 +vt 0.899687 0.562770 +vt 0.841473 0.651365 +vt 0.044203 0.609658 +vt 0.899666 0.388204 +vt 0.865348 0.183384 +vt 0.885673 0.388123 +vt 0.883001 0.651303 +vt 0.412886 0.784737 +vt 0.142103 0.779922 +vt 0.585686 0.132145 +vt 0.870954 0.799276 +vt 0.784792 0.910633 +vt 0.560292 0.865175 +vt 0.409073 0.681402 +vt 0.364911 0.689095 +vt 0.350190 0.660068 +vt 0.394352 0.652374 +vt 0.656863 0.399398 +vt 0.607994 0.758580 +vt 0.621987 0.773476 +vt 0.621987 0.802998 +vt 0.580009 0.817357 +vt 0.566017 0.772940 +vt 0.471850 0.784669 +vt 0.471850 0.696133 +vt 0.530781 0.696074 +vt 0.412886 0.784736 +vt 0.642122 0.399398 +vt 0.713428 0.414165 +vt 0.749851 0.862756 +vt 0.840633 0.832805 +vt 0.029480 0.987639 +vt 0.840983 0.968912 +vt 0.044189 0.965522 +vt 0.044189 0.995056 +vt 0.970338 0.285850 +vt 0.986911 0.226684 +vt 0.058672 0.972942 +vt 0.970599 0.248894 +vt 0.731346 0.081219 +vt 0.595018 0.073804 +vt 0.591333 0.118106 +vt 0.595420 0.132145 +vt 0.412571 0.651218 +vt 0.672850 0.687095 +vt 0.936956 0.194102 +vt 0.682889 0.689748 +vt 0.930000 0.353858 +vt 0.907008 0.651303 +vt 0.936956 0.345546 +vt 0.938537 0.604307 +vt 0.462892 0.414907 +vt 0.330222 0.415023 +vt 0.865348 0.035474 +vt 0.044203 0.609657 +vt 0.595561 0.208163 +vt 0.462892 0.208378 +vt 0.795658 0.035774 +vt 0.795634 0.968061 +vt 0.791645 0.964065 +vt 0.791645 0.958414 +vt 0.801275 0.954418 +vt 0.805264 0.958414 +vt 0.366586 0.954945 +vt 0.370574 0.958941 +vt 0.370574 0.964592 +vt 0.360944 0.968588 +vt 0.356956 0.958941 +vt 0.840460 0.788483 +vt 0.826298 0.781930 +vt 0.840969 0.783363 +vt 0.978146 0.445442 +vt 0.972911 0.460217 +vt 0.972911 0.445450 +vt 0.173362 0.668339 +vt 0.158158 0.664634 +vt 0.172823 0.663137 +vt 0.338345 0.792162 +vt 0.344324 0.782451 +vt 0.343550 0.793760 +vt 0.349529 0.781273 +vt 0.348755 0.792582 +vt 0.826801 0.776663 +vt 0.841473 0.778096 +vt 0.967723 0.460209 +vt 0.967723 0.445442 +vt 0.157640 0.659449 +vt 0.172305 0.657951 +vt 0.349996 0.772078 +vt 0.821320 0.779273 +vt 0.825343 0.775885 +vt 0.149163 0.664025 +vt 0.817292 0.782513 +vt 0.158697 0.669837 +vt 0.153192 0.667315 +vt 0.339587 0.771658 +vt 0.344872 0.771678 +vt 0.819678 0.773869 +vt 0.156769 0.672208 +vt 0.151573 0.672729 +vt 0.345098 0.761664 +vt 0.350190 0.763531 +vt 0.824862 0.774302 +vt 0.146399 0.673267 +vt 0.967716 0.461741 +vt 0.747134 0.533279 +vt 0.752390 0.535160 +vt 0.747115 0.534531 +vt 0.978146 0.460209 +vt 0.978139 0.461741 +vt 0.757553 0.533178 +vt 0.757534 0.534430 +vt 0.168015 0.834331 +vt 0.339780 0.763110 +vt 0.345098 0.657410 +vt 0.752409 0.689358 +vt 0.350190 0.659277 +vt 0.747134 0.688729 +vt 0.840613 0.612722 +vt 0.162841 0.834869 +vt 0.814488 0.773289 +vt 0.835429 0.612290 +vt 0.757553 0.688628 +vt 0.750252 0.694335 +vt 0.342943 0.653972 +vt 0.346509 0.653408 +vt 0.841473 0.603731 +vt 0.746502 0.690187 +vt 0.830239 0.611709 +vt 0.836436 0.601755 +vt 0.339149 0.657849 +vt 0.166620 0.956640 +vt 0.171330 0.947403 +vt 0.171898 0.957875 +vt 0.337738 0.652374 +vt 0.744978 0.700715 +vt 0.745043 0.696439 +vt 0.164284 0.953107 +vt 0.166135 0.947701 +vt 0.177029 0.956088 +vt 0.176544 0.947150 +vt 0.744976 0.690803 +vt 0.173211 0.833810 +vt 0.173362 0.835329 +vt 0.744818 0.687109 +vt 0.162993 0.836388 +vt 0.337351 0.662768 +vt 0.337625 0.657381 +vt 0.308183 0.656192 +vt 0.308296 0.651185 +vt 0.715574 0.696725 +vt 0.715508 0.691089 +vt 0.715349 0.687395 +vt 0.164000 0.947870 +vt 0.164578 0.918209 +vt 0.169773 0.917911 +vt 0.174987 0.917658 +vt 0.875804 0.170534 +vt 0.881058 0.172658 +vt 0.875837 0.174185 +vt 0.171654 0.912583 +vt 0.175538 0.916097 +vt 0.710205 0.688125 +vt 0.167788 0.909114 +vt 0.297660 0.654077 +vt 0.307909 0.661578 +vt 0.299105 0.658660 +vt 0.886260 0.174204 +vt 0.881058 0.183080 +vt 0.300162 0.666935 +vt 0.294957 0.665337 +vt 0.875837 0.183081 +vt 0.176744 0.910148 +vt 0.177029 0.915384 +vt 0.306078 0.664612 +vt 0.302591 0.663024 +vt 0.176478 0.904957 +vt 0.783388 0.865537 +vt 0.769284 0.858858 +vt 0.783942 0.860422 +vt 0.947432 0.045847 +vt 0.952666 0.031071 +vt 0.952666 0.045839 +vt 0.737119 0.711378 +vt 0.721879 0.707823 +vt 0.736529 0.706181 +vt 0.811383 0.410943 +vt 0.817362 0.401232 +vt 0.816588 0.412542 +vt 0.822566 0.400055 +vt 0.821792 0.411364 +vt 0.769835 0.853595 +vt 0.784493 0.855160 +vt 0.957854 0.031079 +vt 0.957855 0.045847 +vt 0.721310 0.702643 +vt 0.735960 0.701001 +vt 0.823033 0.390860 +vt 0.764331 0.856155 +vt 0.768384 0.852803 +vt 0.712878 0.707303 +vt 0.760273 0.859359 +vt 0.722469 0.713020 +vt 0.716940 0.710553 +vt 0.812157 0.399634 +vt 0.817909 0.390460 +vt 0.762737 0.850737 +vt 0.720564 0.715410 +vt 0.715374 0.715982 +vt 0.812624 0.390439 +vt 0.818136 0.380446 +vt 0.823227 0.382312 +vt 0.767917 0.851217 +vt 0.710205 0.716571 +vt 0.957861 0.029548 +vt 0.252614 0.805169 +vt 0.247083 0.804418 +vt 0.252374 0.803940 +vt 0.947431 0.031079 +vt 0.947438 0.029548 +vt 0.242442 0.807429 +vt 0.242201 0.806199 +vt 0.731762 0.862739 +vt 0.812818 0.381892 +vt 0.818136 0.285669 +vt 0.218099 0.667278 +vt 0.823227 0.287536 +vt 0.223390 0.666800 +vt 0.783553 0.704461 +vt 0.726594 0.863328 +vt 0.757553 0.850110 +vt 0.778373 0.703981 +vt 0.213217 0.669059 +vt 0.219181 0.661961 +vt 0.815980 0.282232 +vt 0.819547 0.281667 +vt 0.779474 0.693456 +vt 0.784493 0.695477 +vt 0.223707 0.665243 +vt 0.773188 0.703354 +vt 0.812186 0.286108 +vt 0.975988 0.115372 +vt 0.980419 0.105997 +vt 0.981301 0.116447 +vt 0.810662 0.285640 +vt 0.810775 0.280633 +vt 0.223022 0.654626 +vt 0.223842 0.658823 +vt 0.973548 0.111910 +vt 0.975235 0.106452 +vt 0.986375 0.114507 +vt 0.985623 0.105587 +vt 0.225072 0.664324 +vt 0.736952 0.862167 +vt 0.737119 0.863684 +vt 0.225991 0.667905 +vt 0.726760 0.864846 +vt 0.810388 0.291027 +vt 0.795941 0.285046 +vt 0.796055 0.280039 +vt 0.237408 0.651431 +vt 0.252614 0.652433 +vt 0.240376 0.664709 +vt 0.973107 0.106685 +vt 0.974015 0.091736 +vt 0.979199 0.091281 +vt 0.984403 0.090871 +vt 0.239458 0.661128 +vt 0.865348 0.170534 +vt 0.870602 0.172658 +vt 0.865381 0.174185 +vt 0.980919 0.085899 +vt 0.984906 0.089295 +vt 0.245258 0.662928 +vt 0.976951 0.082548 +vt 0.785419 0.282930 +vt 0.795667 0.290432 +vt 0.786863 0.287514 +vt 0.875804 0.174204 +vt 0.870602 0.183080 +vt 0.790349 0.291878 +vt 0.782715 0.294191 +vt 0.865381 0.183081 +vt 0.986375 0.088537 +vt 0.793125 0.294612 +vt 0.787920 0.295789 +vt 0.985513 0.078131 +vt 0.985934 0.083312 +vt 0.826279 0.421580 +vt 0.840462 0.415023 +vt 0.840951 0.420145 +vt 0.942197 0.031083 +vt 0.947431 0.045842 +vt 0.942197 0.045850 +vt 0.829399 0.207229 +vt 0.844584 0.203521 +vt 0.844065 0.208726 +vt 0.344482 0.837758 +vt 0.339180 0.825185 +vt 0.344482 0.826422 +vt 0.349594 0.836226 +vt 0.349594 0.824891 +vt 0.826801 0.426845 +vt 0.841473 0.425410 +vt 0.937008 0.031075 +vt 0.937008 0.045842 +vt 0.828862 0.212413 +vt 0.843527 0.213909 +vt 0.783034 0.263412 +vt 0.790275 0.270235 +vt 0.784746 0.269487 +vt 0.821301 0.424238 +vt 0.820385 0.207837 +vt 0.817293 0.420996 +vt 0.825791 0.416458 +vt 0.824433 0.204549 +vt 0.829919 0.202025 +vt 0.788270 0.263118 +vt 0.794862 0.266989 +vt 0.819658 0.429642 +vt 0.827990 0.199654 +vt 0.828464 0.201239 +vt 0.785554 0.252179 +vt 0.793151 0.260914 +vt 0.824862 0.429206 +vt 0.825343 0.427624 +vt 0.822814 0.199135 +vt 0.937001 0.029548 +vt 0.830116 0.199848 +vt 0.947431 0.031075 +vt 0.947425 0.029548 +vt 0.827052 0.429170 +vt 0.839251 0.037532 +vt 0.750148 0.102116 +vt 0.790833 0.251576 +vt 0.101901 0.758239 +vt 0.136907 0.657951 +vt 0.140928 0.661594 +vt 0.745310 0.104011 +vt 0.780716 0.254074 +vt 0.107372 0.758897 +vt 0.146399 0.662251 +vt 0.840581 0.590789 +vt 0.834057 0.036992 +vt 0.817620 0.198596 +vt 0.835377 0.591224 +vt 0.814488 0.430221 +vt 0.102612 0.762236 +vt 0.097880 0.754596 +vt 0.751105 0.096775 +vt 0.841473 0.599778 +vt 0.107580 0.760067 +vt 0.836422 0.601755 +vt 0.830207 0.591804 +vt 0.755706 0.099949 +vt 0.755426 0.101513 +vt 0.675544 0.700236 +vt 0.670318 0.691257 +vt 0.675536 0.689748 +vt 0.755692 0.093528 +vt 0.682885 0.694918 +vt 0.680748 0.700216 +vt 0.680742 0.691264 +vt 0.754774 0.089352 +vt 0.746944 0.094894 +vt 0.106839 0.765673 +vt 0.844427 0.038051 +vt 0.844584 0.036532 +vt 0.111088 0.756183 +vt 0.108818 0.761074 +vt 0.834214 0.035474 +vt 0.757050 0.098998 +vt 0.758052 0.102557 +vt 0.785664 0.091933 +vt 0.682868 0.729695 +vt 0.682889 0.700162 +vt 0.135666 0.773237 +vt 0.783388 0.082286 +vt 0.675523 0.729769 +vt 0.670325 0.700209 +vt 0.794862 0.085258 +vt 0.784306 0.086463 +vt 0.680727 0.729749 +vt 0.677678 0.734991 +vt 0.141957 0.771990 +vt 0.137936 0.768347 +vt 0.673983 0.738657 +vt 0.670304 0.729742 +vt 0.794674 0.090904 +vt 0.786666 0.095491 +vt 0.655499 0.070654 +vt 0.650297 0.081116 +vt 0.650297 0.072186 +vt 0.146399 0.779921 +vt 0.146031 0.772248 +vt 0.660721 0.081097 +vt 0.660721 0.072167 +vt 0.681359 0.731279 +vt 0.682889 0.737157 +vt 0.142172 0.776484 +vt 0.136844 0.774304 +vt 0.682877 0.742355 +vt 0.834940 0.247140 +vt 0.849064 0.240457 +vt 0.849598 0.245574 +vt 0.945165 0.429627 +vt 0.950400 0.444387 +vt 0.945165 0.444394 +vt 0.799041 0.861478 +vt 0.814261 0.857920 +vt 0.813691 0.863119 +vt 0.876448 0.240277 +vt 0.871146 0.227703 +vt 0.876448 0.228941 +vt 0.881560 0.238745 +vt 0.881560 0.227410 +vt 0.835510 0.252401 +vt 0.850168 0.250834 +vt 0.939977 0.429619 +vt 0.939977 0.444386 +vt 0.798453 0.866656 +vt 0.813103 0.868297 +vt 0.201657 0.816152 +vt 0.208423 0.823449 +vt 0.202956 0.822328 +vt 0.829987 0.249843 +vt 0.790021 0.861997 +vt 0.825950 0.246638 +vt 0.834406 0.242023 +vt 0.794101 0.858749 +vt 0.799611 0.856279 +vt 0.206901 0.816212 +vt 0.213217 0.820519 +vt 0.828392 0.255261 +vt 0.797706 0.853889 +vt 0.798165 0.855479 +vt 0.204927 0.805114 +vt 0.211919 0.814342 +vt 0.833592 0.254779 +vt 0.834059 0.253192 +vt 0.792535 0.853320 +vt 0.939970 0.428092 +vt 0.799830 0.854104 +vt 0.950400 0.429619 +vt 0.950393 0.428092 +vt 0.835781 0.254723 +vt 0.808918 0.706562 +vt 0.181983 0.666831 +vt 0.210233 0.804869 +vt 0.354507 0.852005 +vt 0.378027 0.758140 +vt 0.382344 0.761424 +vt 0.177029 0.668396 +vt 0.199972 0.806679 +vt 0.360015 0.852190 +vt 0.387852 0.761610 +vt 0.849196 0.401539 +vt 0.803730 0.705971 +vt 0.787347 0.852729 +vt 0.843996 0.402021 +vt 0.823227 0.255887 +vt 0.355558 0.855926 +vt 0.350190 0.848720 +vt 0.183297 0.661568 +vt 0.845134 0.412542 +vt 0.360322 0.853339 +vt 0.839803 0.411626 +vt 0.838831 0.402646 +vt 0.187675 0.665045 +vt 0.187290 0.666586 +vt 0.978059 0.614795 +vt 0.972837 0.605814 +vt 0.978056 0.604307 +vt 0.188092 0.658638 +vt 0.985402 0.609480 +vt 0.983263 0.614778 +vt 0.983260 0.605826 +vt 0.187457 0.654408 +vt 0.179272 0.659410 +vt 0.361642 0.854236 +vt 0.814089 0.707132 +vt 0.814261 0.705615 +vt 0.363485 0.849168 +vt 0.803902 0.704455 +vt 0.189079 0.664187 +vt 0.189840 0.667805 +vt 0.203591 0.661627 +vt 0.985403 0.614724 +vt 0.983245 0.629544 +vt 0.377380 0.854076 +vt 0.201969 0.651849 +vt 0.978041 0.629561 +vt 0.375536 0.859143 +vt 0.360063 0.858988 +vt 0.972839 0.614766 +vt 0.213217 0.655588 +vt 0.202604 0.656078 +vt 0.983876 0.631074 +vt 0.381698 0.857360 +vt 0.976497 0.638449 +vt 0.972822 0.629532 +vt 0.212650 0.661209 +vt 0.204352 0.665245 +vt 0.665942 0.081116 +vt 0.671144 0.070655 +vt 0.671144 0.079585 +vt 0.385779 0.857269 +vt 0.382296 0.861820 +vt 0.660721 0.070674 +vt 0.660721 0.079603 +vt 0.985403 0.636953 +vt 0.980194 0.634785 +vt 0.376801 0.860105 +vt 0.985389 0.642151 +vt 0.977174 0.396112 +vt 0.971940 0.381353 +vt 0.977174 0.381345 +vt 0.493800 0.983954 +vt 0.499031 0.998708 +vt 0.493810 0.998721 +vt 0.557461 0.583426 +vt 0.562763 0.596000 +vt 0.557461 0.594762 +vt 0.552349 0.584958 +vt 0.552349 0.596294 +vt 0.918092 0.392971 +vt 0.923393 0.407723 +vt 0.918111 0.407739 +vt 0.982363 0.396120 +vt 0.982363 0.381353 +vt 0.488598 0.983947 +vt 0.488608 0.998715 +vt 0.923374 0.392955 +vt 0.928529 0.407727 +vt 0.555305 0.579480 +vt 0.978677 0.405033 +vt 0.975015 0.401333 +vt 0.488608 0.975018 +vt 0.493812 0.973492 +vt 0.971940 0.396120 +vt 0.971307 0.397649 +vt 0.499021 0.983940 +vt 0.499031 0.975011 +vt 0.562763 0.584664 +vt 0.559081 0.577926 +vt 0.969804 0.403496 +vt 0.969781 0.398282 +vt 0.786203 0.680598 +vt 0.776920 0.683114 +vt 0.777303 0.678854 +vt 0.781664 0.693456 +vt 0.776567 0.688739 +vt 0.785467 0.690483 +vt 0.551718 0.583802 +vt 0.550098 0.577966 +vt 0.787347 0.685157 +vt 0.928529 0.391427 +vt 0.928510 0.392959 +vt 0.550421 0.588362 +vt 0.550193 0.583359 +vt 0.918111 0.391439 +vt 0.918162 0.390799 +vt 0.769951 0.678376 +vt 0.776450 0.692435 +vt 0.769215 0.688260 +vt 0.962355 0.396138 +vt 0.969725 0.396138 +vt 0.542734 0.578174 +vt 0.542829 0.583567 +vt 0.969781 0.408725 +vt 0.962434 0.403496 +vt 0.769568 0.682635 +vt 0.962411 0.398282 +vt 0.960891 0.398280 +vt 0.957166 0.396130 +vt 0.532510 0.581237 +vt 0.764522 0.680249 +vt 0.543058 0.588570 +vt 0.534102 0.586181 +vt 0.768473 0.677677 +vt 0.769098 0.691956 +vt 0.760600 0.684188 +vt 0.762736 0.675167 +vt 0.767950 0.676188 +vt 0.804084 0.416283 +vt 0.808728 0.425293 +vt 0.803532 0.425049 +vt 0.537946 0.590101 +vt 0.541225 0.591698 +vt 0.536018 0.593505 +vt 0.814488 0.416919 +vt 0.809375 0.415023 +vt 0.757553 0.675511 +vt 0.530811 0.591992 +vt 0.962411 0.408724 +vt 0.960891 0.408722 +vt 0.699802 0.814291 +vt 0.699703 0.812762 +vt 0.704915 0.812443 +vt 0.710205 0.813636 +vt 0.710106 0.812107 +vt 0.787347 0.690214 +vt 0.693474 0.546819 +vt 0.547668 0.763703 +vt 0.688283 0.547155 +vt 0.813936 0.425684 +vt 0.792544 0.690458 +vt 0.781479 0.423542 +vt 0.542462 0.762189 +vt 0.786693 0.424564 +vt 0.797751 0.690850 +vt 0.794380 0.695798 +vt 0.776296 0.423887 +vt 0.782246 0.415023 +vt 0.683071 0.547474 +vt 0.690111 0.541809 +vt 0.787347 0.417292 +vt 0.790483 0.699330 +vt 0.694009 0.545253 +vt 0.799138 0.703556 +vt 0.695493 0.544525 +vt 0.798289 0.692414 +vt 0.799451 0.698273 +vt 0.995450 0.288888 +vt 0.990191 0.297830 +vt 0.990220 0.287373 +vt 0.694840 0.534104 +vt 0.695177 0.539323 +vt 0.985027 0.288905 +vt 0.985003 0.297831 +vt 0.552875 0.761896 +vt 0.552942 0.763361 +vt 0.552970 0.764940 +vt 0.542529 0.763655 +vt 0.542556 0.765234 +vt 0.542556 0.776570 +vt 0.710205 0.543599 +vt 0.547668 0.775038 +vt 0.799774 0.693139 +vt 0.814165 0.699172 +vt 0.995426 0.297814 +vt 0.990216 0.312598 +vt 0.709889 0.538397 +vt 0.985027 0.312598 +vt 0.813852 0.704455 +vt 0.672557 0.969836 +vt 0.661790 0.940204 +vt 0.672557 0.940318 +vt 0.937378 0.420521 +vt 0.930000 0.391245 +vt 0.937378 0.390999 +vt 0.948631 0.383380 +vt 0.937378 0.353881 +vt 0.948631 0.353858 +vt 0.948631 0.420497 +vt 0.948631 0.390975 +vt 0.957166 0.383593 +vt 0.957166 0.354071 +vt 0.957166 0.420711 +vt 0.957166 0.391188 +vt 0.510468 0.977137 +vt 0.500029 0.947558 +vt 0.510468 0.947603 +vt 0.484296 0.973492 +vt 0.473857 0.943913 +vt 0.484296 0.943959 +vt 0.520876 0.977090 +vt 0.520876 0.947557 +vt 0.494704 0.973445 +vt 0.494704 0.943912 +vt 0.525156 0.976978 +vt 0.525156 0.947445 +vt 0.498984 0.973333 +vt 0.498984 0.943800 +vt 0.963519 0.878749 +vt 0.953522 0.849408 +vt 0.963519 0.849231 +vt 0.661790 0.969723 +vt 0.651792 0.940381 +vt 0.974286 0.878863 +vt 0.974286 0.849345 +vt 0.937378 0.383404 +vt 0.930000 0.354128 +vt 0.964176 0.886377 +vt 0.812030 0.955571 +vt 0.358167 0.948141 +vt 0.662447 0.977350 +vt 0.792770 0.974866 +vt 0.804052 0.974866 +vt 0.940685 0.390975 +vt 0.946312 0.428080 +vt 0.940685 0.428092 +vt 0.377427 0.956132 +vt 0.784792 0.955571 +vt 0.784792 0.966874 +vt 0.369450 0.975427 +vt 0.377427 0.967435 +vt 0.792770 0.947579 +vt 0.350190 0.967435 +vt 0.358167 0.975427 +vt 0.804052 0.947579 +vt 0.825789 0.787050 +vt 0.339120 0.780853 +vt 0.157243 0.670622 +vt 0.339780 0.658856 +vt 0.753870 0.697124 +vt 0.831098 0.602717 +vt 0.715509 0.701001 +vt 0.162444 0.918379 +vt 0.881020 0.168381 +vt 0.714001 0.691303 +vt 0.886260 0.183100 +vt 0.305366 0.665758 +vt 0.768730 0.863972 +vt 0.721023 0.713820 +vt 0.812818 0.287115 +vt 0.215065 0.659983 +vt 0.774128 0.694371 +vt 0.971887 0.091969 +vt 0.870564 0.168381 +vt 0.240887 0.660606 +vt 0.875804 0.183100 +vt 0.793836 0.293466 +vt 0.339180 0.836520 +vt 0.099094 0.761419 +vt 0.831099 0.600792 +vt 0.133686 0.777836 +vt 0.792398 0.081258 +vt 0.791944 0.094889 +vt 0.655500 0.081116 +vt 0.682885 0.731913 +vt 0.136907 0.775621 +vt 0.871146 0.239039 +vt 0.351983 0.855414 +vt 0.850168 0.410519 +vt 0.985368 0.644257 +vt 0.387852 0.868803 +vt 0.211028 0.651431 +vt 0.209659 0.665000 +vt 0.665942 0.070654 +vt 0.386801 0.864882 +vt 0.985402 0.631709 +vt 0.376976 0.861411 +vt 0.759006 0.687185 +vt 0.541790 0.590701 +vt 0.776950 0.416615 +vt 0.686191 0.538347 +vt 0.552970 0.776276 +vt 0.814488 0.694038 +vt 0.995450 0.312581 +vt 0.709552 0.533178 +vt 0.930000 0.420768 +vt 0.500029 0.977091 +vt 0.473857 0.973446 +vt 0.953522 0.878926 +vt 0.651792 0.969899 +vt 0.930000 0.383651 +vt 0.969559 0.886434 +vt 0.812030 0.966873 +vt 0.369450 0.948140 +vt 0.667830 0.977407 +vt 0.946312 0.390963 +vt 0.350190 0.956133 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.3827 -0.9239 +vn -0.0000 -0.9239 -0.3827 +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.9239 0.3827 +vn 0.0000 0.3827 0.9239 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 -0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn -0.3827 -0.9239 0.0000 +vn -0.9239 0.3827 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.3827 -0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.5547 0.8321 0.0000 +vn -0.5547 0.8321 0.0000 +vn 0.2588 0.9659 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.9659 -0.2588 0.0000 +vn -0.2588 -0.9659 0.0000 +vn -0.9659 0.2588 0.0000 +vn 0.9659 0.2588 0.0000 +vn 0.2588 -0.9659 0.0000 +vn -0.9659 -0.2588 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.2588 0.9659 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.2516 -0.9389 0.2347 +vn -0.9389 -0.2516 0.2347 +vn 0.6874 0.6873 0.2347 +vn -0.2516 0.9389 0.2347 +vn 0.6874 -0.6873 0.2347 +vn -0.6874 -0.6873 0.2347 +vn 0.2516 0.9389 0.2347 +vn -0.6873 0.6873 0.2347 +vn 0.9389 -0.2516 0.2347 +vn -0.2516 -0.9389 0.2347 +vn -0.9389 0.2516 0.2347 +vn 0.9389 0.2516 0.2347 +vn 0.8698 0.2331 0.4349 +vn 0.2331 -0.8698 0.4349 +vn -0.8698 -0.2331 0.4349 +vn 0.6367 0.6367 0.4349 +vn -0.2331 0.8698 0.4349 +vn 0.6367 -0.6367 0.4349 +vn -0.6367 -0.6367 0.4349 +vn 0.2331 0.8698 0.4349 +vn -0.6367 0.6367 0.4349 +vn 0.8698 -0.2331 0.4349 +vn -0.2331 -0.8698 0.4349 +vn -0.8698 0.2331 0.4349 +vn -0.7822 0.2096 0.5867 +vn 0.7822 0.2096 0.5867 +vn 0.2096 -0.7822 0.5867 +vn -0.7822 -0.2096 0.5867 +vn 0.5726 0.5726 0.5867 +vn -0.2096 0.7822 0.5867 +vn 0.5726 -0.5726 0.5867 +vn -0.5726 -0.5726 0.5867 +vn 0.2096 0.7822 0.5867 +vn -0.5726 0.5726 0.5867 +vn 0.7822 -0.2096 0.5867 +vn -0.2096 -0.7822 0.5867 +vn 0.8321 -0.5547 0.0000 +vn -0.4472 0.8944 0.0000 +vn 0.4472 0.0000 -0.8944 +vn 0.4472 0.0000 0.8944 +vn 0.6479 -0.7479 0.1445 +vn -0.1677 0.0449 0.9848 +vn 0.1677 -0.0449 -0.9848 +vn 0.9513 -0.2549 0.1736 +vn -0.1939 0.9779 -0.0777 +vn 0.5754 -0.1542 -0.8032 +vn 0.2754 -0.0738 0.9585 +vn 0.7541 -0.5547 0.3516 +vn -0.4226 0.0000 0.9063 +vn 0.4226 0.0000 -0.9063 +vn 0.9063 0.0000 0.4226 +vn -0.4053 0.8944 -0.1890 +vn 0.7833 0.0000 -0.6216 +vn 0.0273 0.0000 0.9996 +vn -0.8321 0.5547 0.0000 +vn 0.7206 -0.5547 0.4160 +vn -0.5000 0.0000 0.8660 +vn 0.5000 0.0000 -0.8660 +vn 0.8660 0.0000 0.5000 +vn -0.3873 0.8944 -0.2236 +vn 0.8345 0.0000 -0.5510 +vn -0.0599 0.0000 0.9982 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 0.0000 -0.8944 +vn -0.4472 0.0000 0.8944 +vn -0.5547 -0.8321 0.0000 +vn 0.8944 0.4472 0.0000 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.4472 0.8944 +vn -0.8944 -0.4472 0.0000 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.4472 0.8944 +vn -0.5000 -0.8660 0.0000 +vn 0.4432 -0.8964 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.0599 0.9982 0.0000 +vn 0.3873 -0.2236 -0.8944 +vn 0.3873 -0.2236 0.8944 +vn -0.4432 0.8964 0.0000 +vn -0.8660 0.5000 0.0000 +vn -0.0599 -0.9982 0.0000 +vn -0.3873 0.2236 -0.8944 +vn -0.3873 0.2236 0.8944 +vn -0.8964 -0.4432 0.0000 +vn 0.9982 -0.0599 0.0000 +vn -0.2236 -0.3873 -0.8944 +vn -0.2236 -0.3873 0.8944 +vn 0.8964 0.4432 0.0000 +vn -0.9982 0.0599 0.0000 +vn 0.2236 0.3873 -0.8944 +vn 0.2236 0.3873 0.8944 +vn -0.8660 -0.5000 0.0000 +vn -0.0644 -0.9979 0.0000 +vn 0.8660 0.5000 0.0000 +vn 0.5000 -0.8660 0.0000 +vn 0.5510 0.8345 0.0000 +vn 0.2236 -0.3873 -0.8944 +vn 0.2236 -0.3873 0.8944 +vn 0.0644 0.9979 0.0000 +vn -0.5000 0.8660 0.0000 +vn -0.5510 -0.8345 0.0000 +vn -0.2236 0.3873 -0.8944 +vn -0.2236 0.3873 0.8944 +vn -0.9979 0.0644 0.0000 +vn 0.8345 -0.5510 0.0000 +vn -0.3873 -0.2236 -0.8944 +vn -0.3873 -0.2236 0.8944 +vn 0.9979 -0.0644 0.0000 +vn -0.8345 0.5510 0.0000 +vn 0.3873 0.2236 -0.8944 +vn 0.3873 0.2236 0.8944 +vn 0.1872 -0.9716 0.1445 +vn -0.1228 0.1228 0.9848 +vn 0.1228 -0.1228 -0.9848 +vn 0.6964 -0.6964 0.1736 +vn 0.3210 0.9439 -0.0777 +vn 0.4212 -0.4212 -0.8032 +vn 0.2016 -0.2016 0.9585 +vn -0.3237 -0.9351 0.1445 +vn -0.0449 0.1677 0.9848 +vn 0.0449 -0.1677 -0.9848 +vn 0.2549 -0.9513 0.1736 +vn 0.7500 0.6569 -0.0777 +vn 0.1542 -0.5754 -0.8032 +vn 0.0738 -0.2754 0.9585 +vn 0.7479 0.6479 0.1445 +vn -0.0449 -0.1677 0.9848 +vn 0.0449 0.1677 -0.9848 +vn 0.2549 0.9513 0.1736 +vn -0.9779 -0.1939 -0.0777 +vn 0.1542 0.5754 -0.8032 +vn 0.0738 0.2754 0.9585 +vn 0.9716 0.1872 0.1445 +vn -0.1228 -0.1228 0.9848 +vn 0.1228 0.1228 -0.9848 +vn 0.6964 0.6964 0.1736 +vn -0.9439 0.3210 -0.0777 +vn 0.4212 0.4212 -0.8032 +vn 0.2016 0.2016 0.9585 +vn 0.9351 -0.3237 0.1445 +vn -0.1677 -0.0449 0.9848 +vn 0.1677 0.0449 -0.9848 +vn 0.9513 0.2549 0.1736 +vn -0.6569 0.7500 -0.0777 +vn 0.5754 0.1542 -0.8032 +vn 0.2754 0.0738 0.9585 +vn -0.6479 0.7479 0.1445 +vn 0.1677 -0.0449 0.9848 +vn -0.1677 0.0449 -0.9848 +vn -0.9513 0.2549 0.1736 +vn 0.1939 -0.9779 -0.0777 +vn -0.5754 0.1542 -0.8032 +vn -0.2754 0.0738 0.9585 +vn -0.1872 0.9716 0.1445 +vn 0.1228 -0.1228 0.9848 +vn -0.1228 0.1228 -0.9848 +vn -0.6964 0.6964 0.1736 +vn -0.3210 -0.9439 -0.0777 +vn -0.4212 0.4212 -0.8032 +vn -0.2016 0.2016 0.9585 +vn 0.3237 0.9351 0.1445 +vn 0.0449 -0.1677 0.9848 +vn -0.0449 0.1677 -0.9848 +vn -0.2549 0.9513 0.1736 +vn -0.7500 -0.6569 -0.0777 +vn -0.1542 0.5754 -0.8032 +vn -0.0738 0.2754 0.9585 +vn -0.7479 -0.6479 0.1445 +vn 0.0449 0.1677 0.9848 +vn -0.0449 -0.1677 -0.9848 +vn -0.2549 -0.9513 0.1736 +vn 0.9779 0.1939 -0.0777 +vn -0.1542 -0.5754 -0.8032 +vn -0.0738 -0.2754 0.9585 +vn -0.9716 -0.1872 0.1445 +vn 0.1228 0.1228 0.9848 +vn -0.1228 -0.1228 -0.9848 +vn -0.6964 -0.6964 0.1736 +vn 0.9439 -0.3210 -0.0777 +vn -0.4212 -0.4212 -0.8032 +vn -0.2016 -0.2016 0.9585 +vn -0.9351 0.3237 0.1445 +vn 0.1677 0.0449 0.9848 +vn -0.1677 -0.0449 -0.9848 +vn -0.9513 -0.2549 0.1736 +vn 0.6569 -0.7500 -0.0777 +vn -0.5754 -0.1542 -0.8032 +vn -0.2754 -0.0738 0.9585 +vn -0.7541 0.5547 0.3516 +vn 0.4226 0.0000 0.9063 +vn -0.4226 0.0000 -0.9063 +vn -0.9063 0.0000 0.4226 +vn 0.4053 -0.8944 -0.1890 +vn -0.7833 0.0000 -0.6216 +vn -0.0273 0.0000 0.9996 +vn -0.5547 -0.7541 0.3516 +vn 0.0000 0.4226 0.9063 +vn 0.0000 -0.4226 -0.9063 +vn 0.0000 -0.9063 0.4226 +vn 0.8944 0.4053 -0.1890 +vn 0.0000 -0.7833 -0.6216 +vn 0.0000 -0.0273 0.9996 +vn 0.5547 0.7541 0.3516 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 0.9063 0.4226 +vn -0.8944 -0.4053 -0.1890 +vn 0.0000 0.7833 -0.6216 +vn 0.0000 0.0273 0.9996 +vn 0.1410 -0.9255 0.3516 +vn -0.2988 0.2988 0.9063 +vn 0.2988 -0.2988 -0.9063 +vn 0.6409 -0.6409 0.4226 +vn 0.3459 0.9191 -0.1890 +vn 0.5539 -0.5539 -0.6216 +vn 0.0193 -0.0193 0.9996 +vn -0.1410 0.9255 0.3516 +vn 0.2988 -0.2988 0.9063 +vn -0.2988 0.2988 -0.9063 +vn -0.6409 0.6409 0.4226 +vn -0.3459 -0.9191 -0.1890 +vn -0.5539 0.5539 -0.6216 +vn -0.0193 0.0193 0.9996 +vn -0.9255 -0.1410 0.3516 +vn 0.2988 0.2988 0.9063 +vn -0.2988 -0.2988 -0.9063 +vn -0.6409 -0.6409 0.4226 +vn 0.9191 -0.3459 -0.1890 +vn -0.5539 -0.5539 -0.6216 +vn -0.0193 -0.0193 0.9996 +vn 0.9255 0.1410 0.3516 +vn -0.2988 -0.2988 0.9063 +vn 0.2988 0.2988 -0.9063 +vn 0.6409 0.6409 0.4226 +vn -0.9191 0.3459 -0.1890 +vn 0.5539 0.5539 -0.6216 +vn 0.0193 0.0193 0.9996 +vn -0.7206 0.5547 0.4160 +vn 0.5000 -0.0000 0.8660 +vn -0.5000 0.0000 -0.8660 +vn -0.8660 0.0000 0.5000 +vn 0.3873 -0.8944 -0.2236 +vn -0.8345 0.0000 -0.5510 +vn 0.0599 -0.0000 0.9982 +vn -0.1201 -0.9014 0.4160 +vn -0.2500 0.4330 0.8660 +vn 0.2500 -0.4330 -0.8660 +vn 0.4330 -0.7500 0.5000 +vn 0.5809 0.7826 -0.2236 +vn 0.4173 -0.7227 -0.5510 +vn -0.0300 0.0519 0.9982 +vn 0.1201 0.9014 0.4160 +vn 0.2500 -0.4330 0.8660 +vn -0.2500 0.4330 -0.8660 +vn -0.4330 0.7500 0.5000 +vn -0.5809 -0.7826 -0.2236 +vn -0.4173 0.7227 -0.5510 +vn 0.0300 -0.0519 0.9982 +vn -0.8407 -0.3467 0.4160 +vn 0.2500 0.4330 0.8660 +vn -0.2500 -0.4330 -0.8660 +vn -0.4330 -0.7500 0.5000 +vn 0.9682 -0.1118 -0.2236 +vn -0.4173 -0.7227 -0.5510 +vn 0.0300 0.0519 0.9982 +vn 0.8407 0.3467 0.4160 +vn -0.2500 -0.4330 0.8660 +vn 0.2500 0.4330 -0.8660 +vn 0.4330 0.7500 0.5000 +vn -0.9682 0.1118 -0.2236 +vn 0.4173 0.7227 -0.5510 +vn -0.0300 -0.0519 0.9982 +vn 0.0000 -0.9597 0.2811 +vn -0.9597 0.0000 0.2811 +vn 0.0000 0.9597 0.2811 +vn 0.9597 0.0000 0.2811 +vn -0.1753 -0.6541 -0.7358 +vn -0.6541 0.1753 -0.7358 +vn 0.6541 0.1753 -0.7358 +vn 0.1753 -0.6541 -0.7358 +vn -0.6541 -0.1753 -0.7358 +vn 0.4788 0.4788 -0.7358 +vn -0.1753 0.6541 -0.7358 +vn 0.4788 -0.4788 -0.7358 +vn -0.4788 -0.4788 -0.7358 +vn 0.1753 0.6541 -0.7358 +vn -0.4788 0.4788 -0.7358 +vn 0.6541 -0.1753 -0.7358 +vn 0.0000 0.8944 -0.4472 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.7071 0.0000 -0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.9437 0.3307 0.0000 +vn -0.9437 -0.3307 0.0000 +vn 0.9440 -0.3300 0.0000 +vn -0.9440 0.3300 0.0000 +vn 0.3162 0.9487 0.0000 +vn -0.3162 -0.9487 0.0000 +vn -0.3162 0.9487 0.0000 +vn 0.3162 -0.9487 0.0000 +vn 0.4213 0.4212 -0.8032 +vn 0.0196 -0.9987 -0.0473 +vn -0.7071 -0.0000 0.7071 +vn 0.0196 0.9987 -0.0473 +vn 0.1866 -0.0000 -0.9824 +vn 0.1448 -0.6794 -0.7194 +vn -0.1363 -0.7263 0.6737 +vn -0.1363 0.7263 0.6737 +vn 0.1448 0.6794 -0.7194 +vn 0.5294 -0.6630 -0.5294 +vn 0.0671 -0.9955 -0.0671 +vn -0.4617 -0.7574 0.4617 +vn 0.5294 0.6630 -0.5294 +vn 0.0671 0.9955 -0.0671 +vn 0.0473 -0.9987 -0.0196 +vn -0.6737 0.7263 0.1363 +vn 0.0473 0.9987 -0.0196 +vn 0.9824 -0.0000 -0.1866 +vn 0.7194 -0.6794 -0.1448 +vn -0.6737 -0.7263 0.1363 +vn 0.7194 0.6794 -0.1448 +vn -0.4617 0.7574 0.4617 +vn 0.9987 -0.0473 0.0196 +vn -0.9987 -0.0473 0.0196 +vn 0.6794 -0.7194 0.1448 +vn -0.7263 0.6737 -0.1363 +vn -0.6794 -0.7194 0.1448 +vn 0.7263 0.6737 -0.1363 +vn -0.0000 -0.9824 0.1866 +vn -0.9955 -0.0671 0.0671 +vn 0.9955 -0.0671 0.0671 +vn 0.6630 -0.5294 0.5294 +vn -0.6630 -0.5294 0.5294 +vn -0.7574 0.4617 -0.4617 +vn 0.7574 0.4617 -0.4617 +vn 0.0000 -0.1866 0.9824 +vn 0.9987 -0.0196 0.0473 +vn -0.6794 -0.1448 0.7194 +vn -0.9987 -0.0196 0.0473 +vn 0.6794 -0.1448 0.7194 +vn -0.7263 0.1363 -0.6737 +vn 0.7263 0.1363 -0.6737 +vn 0.7194 0.1448 -0.6794 +vn 0.9824 0.1866 -0.0000 +vn -0.5880 -0.0639 -0.8063 +vn 0.0473 0.0196 -0.9987 +vn 0.7194 0.1448 0.6794 +vn 0.0473 0.0196 0.9987 +vn -0.5880 -0.0639 0.8063 +vn 0.5294 0.5294 0.6630 +vn 0.0671 0.0671 0.9955 +vn -0.2706 -0.2706 0.9239 +vn 0.0671 0.0671 -0.9955 +vn 0.5294 0.5294 -0.6630 +vn 0.0393 0.0948 -0.9947 +vn 0.2962 0.7150 -0.6333 +vn 0.2962 0.7150 0.6333 +vn 0.0393 0.0948 0.9947 +vn -0.1566 -0.3780 0.9125 +vn -0.2706 -0.2706 -0.9239 +vn -0.6725 -0.0522 0.7382 +vn -0.6725 -0.0522 -0.7382 +vn -0.1566 -0.3780 -0.9125 +vn -0.0196 -0.9987 -0.0473 +vn 0.7071 0.0000 0.7071 +vn -0.0196 0.9987 -0.0473 +vn -0.1866 -0.0000 -0.9824 +vn -0.1448 -0.6794 -0.7194 +vn 0.1363 -0.7263 0.6737 +vn 0.1363 0.7263 0.6737 +vn -0.1448 0.6794 -0.7194 +vn -0.5294 -0.6630 -0.5294 +vn -0.0671 -0.9955 -0.0671 +vn -0.5294 0.6630 -0.5294 +vn -0.0671 0.9955 -0.0671 +vn -0.0473 -0.9987 -0.0196 +vn 0.6737 0.7263 0.1363 +vn 0.4617 0.7574 0.4617 +vn -0.9824 -0.0000 -0.1866 +vn 0.6737 -0.7263 0.1363 +vn 0.4617 -0.7574 0.4617 +vn -0.0473 0.9987 -0.0196 +vn -0.7194 0.6794 -0.1448 +vn -0.7194 -0.6794 -0.1448 +vn -0.7194 0.1448 -0.6794 +vn 0.5880 -0.0639 -0.8063 +vn -0.7194 0.1448 0.6794 +vn -0.0473 0.0196 0.9987 +vn -0.9824 0.1866 -0.0000 +vn 0.5880 -0.0639 0.8063 +vn -0.0671 0.0671 0.9955 +vn -0.0671 0.0671 -0.9955 +vn -0.0473 0.0196 -0.9987 +vn -0.5294 0.5294 0.6630 +vn -0.5294 0.5294 -0.6630 +vn -0.2962 0.7150 -0.6333 +vn -0.2962 0.7150 0.6333 +vn 0.2706 -0.2706 0.9239 +vn -0.0393 0.0948 0.9947 +vn -0.0393 0.0948 -0.9947 +vn 0.2706 -0.2706 -0.9239 +vn 0.6725 -0.0522 0.7382 +vn 0.6725 -0.0522 -0.7382 +vn -0.0196 0.0473 0.9987 +vn -0.1866 0.9824 -0.0000 +vn -0.0196 0.0473 -0.9987 +vn 0.1363 -0.6737 -0.7263 +vn 0.1363 -0.6737 0.7263 +vn -0.1448 0.7194 0.6794 +vn -0.1448 0.7194 -0.6794 +vn 0.4617 -0.4617 0.7574 +vn 0.6737 -0.1363 0.7263 +vn 0.4617 -0.4617 -0.7574 +vn 0.6737 -0.1363 -0.7263 +vn -0.7263 0.1363 0.6737 +vn -0.6794 -0.1448 -0.7194 +vn 0.9987 -0.0196 -0.0473 +vn 0.0000 -0.1866 -0.9824 +vn 0.6794 -0.1448 -0.7194 +vn -0.9987 -0.0196 -0.0473 +vn 0.7263 0.1363 0.6737 +vn 0.7574 0.4617 0.4617 +vn 0.9955 -0.0671 -0.0671 +vn -0.9955 -0.0671 -0.0671 +vn 0.6630 -0.5294 -0.5294 +vn -0.7574 0.4617 0.4617 +vn -0.6630 -0.5294 -0.5294 +vn -0.9987 -0.0473 -0.0196 +vn -0.7263 0.6737 0.1363 +vn -0.0000 -0.9824 -0.1866 +vn -0.6794 -0.7194 -0.1448 +vn 0.7263 0.6737 0.1363 +vn 0.9987 -0.0473 -0.0196 +vn 0.6794 -0.7194 -0.1448 +vn -0.7194 -0.6794 0.1448 +vn 0.6737 0.7263 -0.1363 +vn -0.0473 0.9987 0.0196 +vn -0.0473 -0.9987 0.0196 +vn -0.9824 -0.0000 0.1866 +vn 0.6737 -0.7263 -0.1363 +vn -0.7194 0.6794 0.1448 +vn -0.0671 -0.9955 0.0671 +vn -0.0671 0.9955 0.0671 +vn -0.5294 0.6630 0.5294 +vn -0.5294 -0.6630 0.5294 +vn 0.4617 0.7574 -0.4617 +vn -0.1448 -0.6794 0.7194 +vn 0.1363 0.7263 -0.6737 +vn 0.4617 -0.7574 -0.4617 +vn -0.0196 -0.9987 0.0473 +vn -0.1866 -0.0000 0.9824 +vn -0.1448 0.6794 0.7194 +vn -0.0196 0.9987 0.0473 +vn 0.1363 -0.7263 -0.6737 +vn 0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 -0.5000 +vn -0.5000 0.7071 0.5000 +vn 0.5000 0.7071 0.5000 +vn 0.1566 -0.3780 0.9125 +vn 0.1566 -0.3780 -0.9125 +s off +f 74/1/1 114/2/1 113/3/1 +f 14/4/1 54/5/1 53/6/1 +f 12/7/2 43/8/2 11/9/2 +f 22/10/1 27/11/1 25/12/1 +f 11/9/3 28/13/3 12/7/3 +f 9/14/4 26/15/4 10/16/4 +f 7/17/5 24/18/5 8/19/5 +f 5/20/6 21/21/6 6/22/6 +f 12/23/7 22/24/7 5/20/7 +f 10/25/8 27/26/8 11/9/8 +f 9/14/9 24/27/9 25/28/9 +f 6/29/10 23/30/10 7/17/10 +f 31/31/2 33/32/2 35/33/2 +f 14/34/6 30/35/6 13/36/6 +f 13/36/7 36/37/7 20/38/7 +f 19/39/8 34/40/8 18/41/8 +f 17/42/9 32/43/9 16/44/9 +f 15/45/10 29/46/10 14/47/10 +f 20/48/3 35/33/3 19/39/3 +f 17/42/4 34/49/4 33/50/4 +f 16/51/5 31/52/5 15/45/5 +f 41/53/4 50/54/4 49/55/4 +f 10/25/2 41/56/2 9/57/2 +f 8/58/2 39/59/2 7/60/2 +f 6/61/2 38/62/2 5/63/2 +f 12/7/2 38/62/2 44/64/2 +f 11/9/2 42/65/2 10/25/2 +f 9/57/2 40/66/2 8/58/2 +f 6/61/2 39/59/2 37/67/2 +f 49/68/2 51/69/2 46/70/2 +f 40/71/5 47/72/5 39/73/5 +f 37/74/6 46/75/6 38/76/6 +f 38/76/7 52/77/7 44/78/7 +f 43/8/8 50/79/8 42/65/8 +f 41/53/9 48/80/9 40/81/9 +f 39/73/10 45/82/10 37/83/10 +f 43/8/3 52/84/3 51/69/3 +f 58/85/8 67/86/8 59/87/8 +f 13/88/1 60/89/1 54/5/1 +f 19/90/1 58/91/1 59/92/1 +f 16/93/1 57/94/1 17/95/1 +f 14/4/1 55/96/1 15/97/1 +f 19/90/1 60/89/1 20/98/1 +f 17/95/1 58/91/1 18/99/1 +f 16/93/1 55/96/1 56/100/1 +f 64/101/1 63/102/1 67/103/1 +f 56/104/9 65/105/9 57/106/9 +f 53/107/10 63/108/10 55/109/10 +f 60/110/3 67/86/3 68/111/3 +f 58/112/4 65/105/4 66/113/4 +f 55/109/5 64/114/5 56/115/5 +f 54/116/6 61/117/6 53/118/6 +f 60/119/7 62/120/7 54/116/7 +f 71/121/2 104/122/2 103/123/2 +f 82/124/1 87/125/1 85/126/1 +f 71/121/3 88/127/3 72/128/3 +f 69/129/4 86/130/4 70/131/4 +f 2/132/5 84/133/5 1/134/5 +f 4/135/6 81/136/6 3/137/6 +f 72/138/7 82/139/7 4/135/7 +f 70/140/8 87/141/8 71/121/8 +f 69/129/9 84/142/9 85/143/9 +f 3/144/10 83/145/10 2/132/10 +f 96/146/2 90/147/2 93/148/2 +f 74/149/6 90/150/6 73/151/6 +f 73/151/7 96/152/7 80/153/7 +f 79/154/8 94/155/8 78/156/8 +f 77/157/9 92/158/9 76/159/9 +f 75/160/10 89/161/10 74/162/10 +f 80/163/3 95/164/3 79/154/3 +f 77/157/4 94/165/4 93/166/4 +f 76/167/5 91/168/5 75/160/5 +f 102/169/4 109/170/4 101/171/4 +f 70/140/2 101/172/2 69/173/2 +f 2/174/2 100/175/2 99/176/2 +f 3/177/2 98/178/2 4/179/2 +f 72/128/2 98/178/2 104/122/2 +f 71/121/2 102/180/2 70/140/2 +f 1/181/2 101/172/2 100/175/2 +f 2/174/2 97/182/2 3/177/2 +f 109/183/2 111/184/2 106/185/2 +f 100/186/5 107/187/5 99/188/5 +f 97/189/6 106/190/6 98/191/6 +f 98/191/7 112/192/7 104/193/7 +f 103/123/8 110/194/8 102/180/8 +f 101/171/9 108/195/9 100/196/9 +f 99/188/10 105/197/10 97/198/10 +f 104/122/3 111/184/3 103/123/3 +f 118/199/8 127/200/8 119/201/8 +f 80/202/1 114/2/1 73/203/1 +f 79/204/1 118/205/1 119/206/1 +f 76/207/1 117/208/1 77/209/1 +f 75/210/1 113/3/1 115/211/1 +f 79/204/1 120/212/1 80/202/1 +f 78/213/1 117/208/1 118/205/1 +f 75/210/1 116/214/1 76/207/1 +f 127/215/1 125/216/1 123/217/1 +f 116/218/9 125/219/9 117/220/9 +f 113/221/10 123/222/10 115/223/10 +f 119/201/3 128/224/3 120/225/3 +f 117/220/4 126/226/4 118/227/4 +f 115/223/5 124/228/5 116/229/5 +f 114/230/6 121/231/6 113/232/6 +f 120/233/7 122/234/7 114/230/7 +f 134/235/11 153/236/11 149/237/11 +f 154/238/12 130/239/12 129/240/12 +f 129/241/13 151/242/13 154/243/13 +f 143/244/11 140/245/11 139/246/11 +f 142/247/13 137/248/13 138/249/13 +f 142/250/14 143/251/14 141/252/14 +f 129/241/2 139/253/2 133/254/2 +f 130/255/2 143/256/2 129/241/2 +f 130/255/2 137/248/2 141/257/2 +f 132/258/1 138/259/1 136/260/1 +f 144/261/1 132/258/1 131/262/1 +f 131/262/1 140/263/1 144/261/1 +f 147/264/12 146/265/12 145/266/12 +f 148/267/15 149/268/15 146/265/15 +f 145/266/16 152/269/16 147/264/16 +f 148/270/1 147/271/1 156/272/1 +f 145/273/2 146/274/2 153/275/2 +f 132/276/12 156/277/12 131/278/12 +f 136/279/11 155/280/11 132/281/11 +f 156/282/13 135/283/13 131/284/13 +f 152/269/12 151/285/12 139/286/12 +f 137/287/12 134/288/12 149/268/12 +f 230/289/1 270/290/1 269/291/1 +f 170/292/1 210/293/1 209/294/1 +f 167/295/2 200/296/2 199/297/2 +f 178/298/1 183/299/1 181/300/1 +f 167/295/3 184/301/3 168/302/3 +f 165/303/4 182/304/4 166/305/4 +f 163/306/5 180/307/5 164/308/5 +f 161/309/6 177/310/6 162/311/6 +f 168/312/7 178/313/7 161/309/7 +f 167/295/8 182/314/8 183/315/8 +f 165/303/9 180/316/9 181/317/9 +f 162/318/10 179/319/10 163/306/10 +f 192/320/2 186/321/2 189/322/2 +f 170/323/6 186/324/6 169/325/6 +f 169/325/7 192/326/7 176/327/7 +f 175/328/8 190/329/8 174/330/8 +f 173/331/9 188/332/9 172/333/9 +f 171/334/10 185/335/10 170/336/10 +f 176/337/3 191/338/3 175/328/3 +f 173/331/4 190/339/4 189/340/4 +f 171/334/5 188/341/5 187/342/5 +f 198/343/4 205/344/4 197/345/4 +f 166/346/2 197/347/2 165/348/2 +f 164/349/2 195/350/2 163/351/2 +f 162/352/2 194/353/2 161/354/2 +f 168/302/2 194/353/2 200/296/2 +f 167/295/2 198/355/2 166/346/2 +f 165/348/2 196/356/2 164/349/2 +f 162/352/2 195/350/2 193/357/2 +f 205/358/2 207/359/2 202/360/2 +f 196/361/5 203/362/5 195/363/5 +f 193/364/6 202/365/6 194/366/6 +f 194/366/7 208/367/7 200/368/7 +f 199/297/8 206/369/8 198/355/8 +f 197/345/9 204/370/9 196/371/9 +f 195/363/10 201/372/10 193/373/10 +f 200/296/3 207/359/3 199/297/3 +f 214/374/8 223/375/8 215/376/8 +f 176/377/1 210/293/1 169/378/1 +f 175/379/1 214/380/1 215/381/1 +f 172/382/1 213/383/1 173/384/1 +f 170/292/1 211/385/1 171/386/1 +f 175/379/1 216/387/1 176/377/1 +f 174/388/1 213/383/1 214/380/1 +f 172/382/1 211/385/1 212/389/1 +f 220/390/1 219/391/1 223/392/1 +f 212/393/9 221/394/9 213/395/9 +f 209/396/10 219/397/10 211/398/10 +f 215/376/3 224/399/3 216/400/3 +f 213/395/4 222/401/4 214/402/4 +f 211/398/5 220/403/5 212/404/5 +f 210/405/6 217/406/6 209/407/6 +f 216/408/7 218/409/7 210/405/7 +f 227/410/2 260/411/2 259/412/2 +f 240/413/1 239/414/1 243/415/1 +f 227/410/3 244/416/3 228/417/3 +f 225/418/4 242/419/4 226/420/4 +f 158/421/5 240/422/5 157/423/5 +f 160/424/6 237/425/6 159/426/6 +f 228/427/7 238/428/7 160/424/7 +f 226/429/8 243/430/8 227/410/8 +f 225/418/9 240/431/9 241/432/9 +f 159/433/10 239/434/10 158/421/10 +f 247/435/2 249/436/2 251/437/2 +f 230/438/6 246/439/6 229/440/6 +f 229/440/7 252/441/7 236/442/7 +f 235/443/8 250/444/8 234/445/8 +f 233/446/9 248/447/9 232/448/9 +f 231/449/10 245/450/10 230/451/10 +f 236/452/3 251/437/3 235/443/3 +f 233/446/4 250/453/4 249/454/4 +f 231/449/5 248/455/5 247/456/5 +f 258/457/4 265/458/4 257/459/4 +f 226/429/2 257/460/2 225/461/2 +f 158/462/2 256/463/2 255/464/2 +f 159/465/2 254/466/2 160/467/2 +f 228/417/2 254/466/2 260/411/2 +f 227/410/2 258/468/2 226/429/2 +f 157/469/2 257/460/2 256/463/2 +f 158/462/2 253/470/2 159/465/2 +f 265/471/2 267/472/2 262/473/2 +f 256/474/5 263/475/5 255/476/5 +f 253/477/6 262/478/6 254/479/6 +f 254/479/7 268/480/7 260/481/7 +f 259/412/8 266/482/8 258/468/8 +f 257/459/9 264/483/9 256/484/9 +f 255/476/10 261/485/10 253/486/10 +f 260/411/3 267/472/3 259/412/3 +f 274/487/8 283/488/8 275/489/8 +f 236/490/1 270/290/1 229/491/1 +f 235/492/1 274/493/1 275/494/1 +f 232/495/1 273/496/1 233/497/1 +f 231/498/1 269/291/1 271/499/1 +f 235/492/1 276/500/1 236/490/1 +f 234/501/1 273/496/1 274/493/1 +f 231/498/1 272/502/1 232/495/1 +f 283/503/1 281/504/1 279/505/1 +f 272/506/9 281/507/9 273/508/9 +f 269/509/10 279/510/10 271/511/10 +f 275/489/3 284/512/3 276/513/3 +f 273/508/4 282/514/4 274/515/4 +f 271/511/5 280/516/5 272/517/5 +f 270/518/6 277/519/6 269/520/6 +f 276/521/7 278/522/7 270/518/7 +f 290/523/11 309/524/11 305/525/11 +f 310/526/12 286/527/12 285/528/12 +f 285/529/13 307/530/13 310/531/13 +f 299/532/11 296/533/11 295/534/11 +f 298/535/13 293/536/13 294/537/13 +f 298/538/14 299/539/14 297/540/14 +f 285/529/2 295/541/2 289/542/2 +f 286/543/2 299/544/2 285/529/2 +f 286/543/2 293/536/2 297/545/2 +f 288/546/1 294/547/1 292/548/1 +f 300/549/1 288/546/1 287/550/1 +f 287/550/1 296/551/1 300/549/1 +f 303/552/12 302/553/12 301/554/12 +f 304/555/15 305/556/15 302/553/15 +f 301/554/16 308/557/16 303/552/16 +f 304/558/1 303/559/1 312/560/1 +f 301/561/2 302/562/2 309/563/2 +f 288/564/12 312/565/12 287/566/12 +f 292/567/11 311/568/11 288/569/11 +f 312/570/13 291/571/13 287/572/13 +f 307/573/12 296/574/12 308/557/12 +f 294/575/12 293/576/12 305/556/12 +f 315/577/12 324/578/12 321/579/12 +f 319/580/14 317/581/14 318/582/14 +f 315/583/13 320/584/13 316/585/13 +f 314/586/11 318/587/11 313/588/11 +f 324/589/2 320/584/2 319/590/2 +f 322/591/1 318/592/1 317/593/1 +f 322/594/12 314/595/12 313/596/12 +f 322/594/16 327/597/16 323/598/16 +f 325/599/12 327/597/12 326/600/12 +f 324/578/15 325/599/15 321/579/15 +f 323/601/2 328/602/2 324/589/2 +f 321/603/1 326/604/1 322/591/1 +f 336/605/17 662/606/17 661/607/17 +f 334/608/18 664/609/18 663/610/18 +f 332/611/19 666/612/19 665/613/19 +f 330/614/20 668/615/20 667/616/20 +f 335/617/21 663/610/21 662/618/21 +f 342/619/11 337/620/11 338/621/11 +f 339/622/12 338/623/12 337/624/12 +f 329/625/22 661/607/22 668/626/22 +f 331/627/23 667/616/23 666/628/23 +f 345/629/13 348/630/13 344/631/13 +f 354/632/2 355/633/2 353/634/2 +f 341/635/1 512/636/1 342/637/1 +f 347/638/14 345/639/14 346/640/14 +f 333/641/24 665/613/24 664/642/24 +f 344/643/25 347/638/25 343/644/25 +f 342/645/26 345/639/26 341/646/26 +f 340/647/2 351/648/2 338/649/2 +f 350/650/11 353/651/11 349/652/11 +f 349/653/14 355/654/14 351/655/14 +f 351/648/13 356/656/13 352/657/13 +f 352/658/12 354/659/12 350/660/12 +f 350/661/2 340/647/2 344/631/2 +f 352/657/2 344/631/2 343/662/2 +f 338/649/2 352/657/2 343/662/2 +f 506/663/11 509/664/11 505/665/11 +f 505/666/14 511/667/14 507/668/14 +f 507/669/13 512/670/13 508/671/13 +f 508/672/12 510/673/12 506/674/12 +f 339/675/1 510/676/1 341/635/1 +f 339/675/1 511/677/1 509/678/1 +f 512/636/1 337/679/1 342/637/1 +f 505/680/1 508/681/1 506/682/1 +f 331/683/11 333/684/11 335/685/11 +f 669/686/27 692/687/27 680/688/27 +f 671/689/28 682/690/28 670/691/28 +f 678/692/29 689/693/29 677/694/29 +f 675/695/30 686/696/30 674/697/30 +f 672/698/31 683/699/31 671/700/31 +f 679/701/32 690/702/32 678/692/32 +f 676/703/33 687/704/33 675/695/33 +f 673/705/34 684/706/34 672/698/34 +f 680/688/35 691/707/35 679/708/35 +f 670/691/36 681/709/36 669/686/36 +f 677/710/37 688/711/37 676/703/37 +f 674/697/38 685/712/38 673/713/38 +f 687/704/39 700/714/39 699/715/39 +f 684/706/40 697/716/40 696/717/40 +f 692/687/41 703/718/41 691/707/41 +f 682/690/42 693/719/42 681/709/42 +f 689/720/43 700/714/43 688/711/43 +f 685/712/44 698/721/44 697/722/44 +f 681/709/45 704/723/45 692/687/45 +f 683/724/46 694/725/46 682/690/46 +f 690/702/47 701/726/47 689/693/47 +f 687/704/48 698/721/48 686/696/48 +f 684/706/49 695/727/49 683/699/49 +f 691/728/50 702/729/50 690/702/50 +f 703/730/51 714/731/51 702/732/51 +f 700/714/52 711/733/52 699/715/52 +f 697/716/53 708/734/53 696/717/53 +f 704/723/54 715/735/54 703/718/54 +f 693/719/55 706/736/55 705/737/55 +f 700/714/56 713/738/56 712/739/56 +f 698/721/57 709/740/57 697/722/57 +f 693/719/58 716/741/58 704/723/58 +f 694/725/59 707/742/59 706/736/59 +f 702/732/60 713/743/60 701/744/60 +f 699/715/61 710/745/61 698/721/61 +f 696/717/62 707/746/62 695/727/62 +f 708/747/63 719/748/63 707/749/63 +f 715/750/64 726/751/64 714/731/64 +f 712/739/65 723/752/65 711/733/65 +f 709/753/66 720/754/66 708/747/66 +f 715/750/67 728/755/67 727/756/67 +f 706/736/68 717/757/68 705/737/68 +f 712/739/69 725/758/69 724/759/69 +f 710/760/70 721/761/70 709/753/70 +f 716/741/71 717/757/71 728/762/71 +f 706/763/72 719/748/72 718/764/72 +f 714/731/73 725/765/73 713/743/73 +f 711/733/74 722/766/74 710/745/74 +f 727/756/11 717/767/11 721/761/11 +f 777/768/12 781/769/12 779/770/12 +f 736/771/75 739/772/75 735/773/75 +f 730/774/11 734/775/11 729/776/11 +f 732/777/12 735/773/12 730/778/12 +f 729/779/14 733/780/14 731/781/14 +f 731/782/13 736/783/13 732/784/13 +f 739/785/2 737/786/2 738/787/2 +f 734/788/76 737/789/76 733/780/76 +f 733/790/77 740/791/77 736/783/77 +f 734/775/78 739/792/78 738/793/78 +f 780/794/14 783/795/14 778/796/14 +f 748/797/79 751/798/79 747/799/79 +f 742/800/80 746/801/80 741/802/80 +f 744/803/30 747/799/30 742/804/30 +f 743/805/27 746/806/27 745/807/27 +f 743/808/81 748/809/81 744/810/81 +f 751/811/82 749/812/82 750/813/82 +f 746/806/83 749/814/83 745/807/83 +f 745/815/84 752/816/84 748/809/84 +f 746/801/85 751/817/85 750/818/85 +f 778/819/11 782/820/11 777/821/11 +f 759/822/86 764/823/86 763/824/86 +f 754/825/87 758/826/87 753/827/87 +f 756/828/12 759/822/12 754/829/12 +f 755/830/14 758/831/14 757/832/14 +f 755/833/88 760/834/88 756/835/88 +f 763/836/89 761/837/89 762/838/89 +f 757/832/90 762/839/90 761/840/90 +f 757/841/91 764/842/91 760/834/91 +f 758/826/92 763/836/92 762/838/92 +f 784/843/93 787/844/93 783/845/93 +f 772/846/94 775/847/94 771/848/94 +f 766/849/95 770/850/95 765/851/95 +f 768/852/12 771/848/12 766/853/12 +f 765/854/14 769/855/14 767/856/14 +f 767/857/96 772/858/96 768/859/96 +f 775/860/97 773/861/97 774/862/97 +f 769/855/98 774/863/98 773/864/98 +f 769/865/99 776/866/99 772/858/99 +f 770/850/100 775/860/100 774/862/100 +f 779/867/13 784/868/13 780/869/13 +f 787/844/1 785/870/1 786/871/1 +f 782/872/101 785/873/101 781/769/101 +f 781/874/102 788/875/102 784/843/102 +f 782/820/103 787/876/103 786/877/103 +f 801/878/1 805/879/1 803/880/1 +f 796/881/104 799/882/104 795/883/104 +f 790/884/11 794/885/11 789/886/11 +f 792/887/1 795/888/1 790/889/1 +f 789/890/2 793/891/2 791/892/2 +f 791/892/13 796/893/13 792/894/13 +f 799/882/12 797/895/12 798/896/12 +f 794/897/105 797/898/105 793/891/105 +f 793/891/106 800/899/106 796/893/106 +f 794/885/107 799/900/107 798/901/107 +f 804/902/2 807/903/2 802/904/2 +f 802/905/11 806/906/11 801/907/11 +f 808/908/25 811/909/25 807/910/25 +f 803/911/13 808/912/13 804/902/13 +f 811/909/14 809/913/14 810/914/14 +f 806/915/108 809/916/108 805/879/108 +f 805/917/109 812/918/109 808/912/109 +f 806/906/110 811/919/110 810/920/110 +f 825/921/111 829/922/111 827/923/111 +f 820/924/112 823/925/112 819/926/112 +f 813/927/11 819/928/11 818/929/11 +f 816/930/111 819/926/111 814/931/111 +f 813/932/113 817/933/113 815/934/113 +f 816/935/13 817/936/13 820/937/13 +f 823/938/114 821/939/114 822/940/114 +f 818/941/115 821/942/115 817/933/115 +f 817/936/116 824/943/116 820/937/116 +f 818/929/117 823/944/117 822/945/117 +f 828/946/113 831/947/113 826/948/113 +f 826/949/11 830/950/11 825/951/11 +f 832/952/118 835/953/118 831/947/118 +f 827/954/13 832/955/13 828/956/13 +f 835/957/119 833/958/119 834/959/119 +f 830/960/120 833/961/120 829/922/120 +f 829/962/121 836/963/121 832/964/121 +f 830/950/122 835/965/122 834/966/122 +f 849/967/119 853/968/119 851/969/119 +f 844/970/123 847/971/123 843/972/123 +f 837/973/11 843/974/11 842/975/11 +f 840/976/119 843/972/119 838/977/119 +f 837/978/114 841/979/114 839/980/114 +f 839/980/13 844/981/13 840/982/13 +f 847/983/111 845/984/111 846/985/111 +f 842/986/124 845/987/124 841/979/124 +f 841/979/125 848/988/125 844/981/125 +f 842/975/126 847/989/126 846/990/126 +f 852/991/114 855/992/114 850/993/114 +f 849/994/11 855/995/11 854/996/11 +f 856/997/127 859/998/127 855/992/127 +f 851/999/13 856/997/13 852/991/13 +f 859/1000/113 857/1001/113 858/1002/113 +f 854/1003/128 857/1004/128 853/968/128 +f 853/1005/129 860/1006/129 856/997/129 +f 854/996/130 859/1007/130 858/1008/130 +f 873/1009/131 877/1010/131 875/1011/131 +f 868/1012/132 871/1013/132 867/1014/132 +f 862/1015/11 866/1016/11 861/1017/11 +f 864/1018/131 867/1019/131 862/1020/131 +f 861/1021/133 865/1022/133 863/1023/133 +f 864/1024/13 865/1022/13 868/1025/13 +f 871/1013/134 869/1026/134 870/1027/134 +f 866/1028/135 869/1029/135 865/1030/135 +f 865/1022/136 872/1031/136 868/1025/136 +f 866/1016/137 871/1032/137 870/1033/137 +f 876/1034/133 879/1035/133 874/1036/133 +f 874/1037/11 878/1038/11 873/1039/11 +f 880/1040/138 883/1041/138 879/1042/138 +f 875/1043/13 880/1044/13 876/1034/13 +f 883/1041/139 881/1045/139 882/1046/139 +f 878/1047/140 881/1048/140 877/1049/140 +f 877/1050/141 884/1051/141 880/1044/141 +f 878/1038/142 883/1052/142 882/1053/142 +f 897/1054/139 901/1055/139 899/1056/139 +f 892/1057/143 895/1058/143 891/1059/143 +f 885/1060/11 891/1061/11 890/1062/11 +f 888/1063/139 891/1064/139 886/1065/139 +f 885/1066/134 889/1067/134 887/1068/134 +f 888/1069/13 889/1070/13 892/1071/13 +f 895/1058/131 893/1072/131 894/1073/131 +f 890/1074/144 893/1075/144 889/1067/144 +f 889/1076/145 896/1077/145 892/1057/145 +f 890/1062/146 895/1078/146 894/1079/146 +f 900/1080/134 903/1081/134 898/1082/134 +f 898/1083/11 902/1084/11 897/1085/11 +f 904/1086/147 907/1087/147 903/1088/147 +f 899/1089/13 904/1086/13 900/1090/13 +f 907/1087/133 905/1091/133 906/1092/133 +f 902/1093/148 905/1094/148 901/1095/148 +f 901/1096/149 908/1097/149 904/1086/149 +f 902/1084/150 907/1098/150 906/1099/150 +f 915/1100/151 920/1101/151 919/1102/151 +f 909/1103/152 915/1104/152 914/1105/152 +f 912/1106/38 915/1100/38 910/1107/38 +f 911/1108/35 914/1109/35 913/1110/35 +f 911/1111/153 916/1112/153 912/1113/153 +f 918/1114/154 920/1101/154 917/1115/154 +f 914/1109/155 917/1116/155 913/1110/155 +f 913/1117/156 920/1118/156 916/1112/156 +f 914/1105/157 919/1119/157 918/1120/157 +f 928/1121/158 931/1122/158 927/1123/158 +f 922/1124/159 926/1125/159 921/1126/159 +f 924/1127/34 927/1128/34 922/1129/34 +f 923/1130/32 926/1131/32 925/1132/32 +f 924/1133/160 925/1132/160 928/1134/160 +f 931/1122/161 929/1135/161 930/1136/161 +f 926/1137/162 929/1138/162 925/1139/162 +f 925/1132/163 932/1140/163 928/1134/163 +f 926/1125/164 931/1141/164 930/1142/164 +f 940/1143/165 943/1144/165 939/1145/165 +f 934/1146/166 938/1147/166 933/1148/166 +f 936/1149/29 939/1150/29 934/1151/29 +f 935/1152/31 938/1153/31 937/1154/31 +f 936/1149/167 937/1155/167 940/1156/167 +f 943/1144/168 941/1157/168 942/1158/168 +f 937/1154/169 942/1159/169 941/1160/169 +f 937/1155/170 944/1161/170 940/1156/170 +f 938/1147/171 943/1162/171 942/1163/171 +f 951/1164/172 956/1165/172 955/1166/172 +f 945/1167/173 951/1168/173 950/1169/173 +f 948/1170/37 951/1171/37 946/1172/37 +f 947/1173/28 950/1174/28 949/1175/28 +f 947/1176/174 952/1177/174 948/1178/174 +f 954/1179/175 956/1180/175 953/1181/175 +f 950/1182/176 953/1183/176 949/1184/176 +f 949/1185/177 956/1165/177 952/1177/177 +f 950/1169/178 955/1186/178 954/1187/178 +f 963/1188/179 968/1189/179 967/1190/179 +f 958/1191/180 962/1192/180 957/1193/180 +f 960/1194/33 963/1195/33 958/1196/33 +f 959/1197/36 962/1198/36 961/1199/36 +f 960/1200/181 961/1201/181 964/1202/181 +f 967/1190/182 965/1203/182 966/1204/182 +f 962/1198/183 965/1205/183 961/1199/183 +f 961/1201/184 968/1189/184 964/1202/184 +f 962/1192/185 967/1206/185 966/1207/185 +f 975/1208/186 980/1209/186 979/1210/186 +f 970/1211/187 974/1212/187 969/1213/187 +f 972/1214/27 975/1208/27 970/1215/27 +f 969/1216/30 973/1217/30 971/1218/30 +f 972/1219/188 973/1220/188 976/1221/188 +f 979/1222/189 977/1223/189 978/1224/189 +f 973/1217/190 978/1225/190 977/1226/190 +f 973/1227/191 980/1228/191 976/1229/191 +f 974/1212/192 979/1230/192 978/1231/192 +f 988/1232/193 991/1233/193 987/1234/193 +f 982/1235/194 986/1236/194 981/1237/194 +f 982/1238/35 988/1232/35 987/1234/35 +f 983/1239/38 986/1240/38 985/1241/38 +f 983/1242/195 988/1243/195 984/1244/195 +f 990/1245/196 992/1246/196 989/1247/196 +f 985/1241/197 990/1248/197 989/1249/197 +f 985/1250/198 992/1251/198 988/1252/198 +f 986/1236/199 991/1253/199 990/1254/199 +f 999/1255/200 1004/1256/200 1003/1257/200 +f 993/1258/201 999/1259/201 998/1260/201 +f 996/1261/32 999/1262/32 994/1263/32 +f 995/1264/34 998/1265/34 997/1266/34 +f 995/1267/202 1000/1268/202 996/1261/202 +f 1003/1257/203 1001/1269/203 1002/1270/203 +f 998/1265/204 1001/1271/204 997/1266/204 +f 997/1272/205 1004/1256/205 1000/1273/205 +f 998/1260/206 1003/1274/206 1002/1275/206 +f 1012/1276/207 1015/1277/207 1011/1278/207 +f 1006/1279/208 1010/1280/208 1005/1281/208 +f 1008/1282/31 1011/1283/31 1006/1284/31 +f 1007/1285/29 1010/1286/29 1009/1287/29 +f 1008/1288/209 1009/1287/209 1012/1289/209 +f 1015/1277/210 1013/1290/210 1014/1291/210 +f 1010/1286/211 1013/1292/211 1009/1287/211 +f 1009/1293/212 1016/1294/212 1012/1276/212 +f 1010/1280/213 1015/1295/213 1014/1296/213 +f 1023/1297/214 1028/1298/214 1027/1299/214 +f 1018/1300/215 1022/1301/215 1017/1302/215 +f 1020/1303/28 1023/1304/28 1018/1305/28 +f 1019/1306/37 1022/1307/37 1021/1308/37 +f 1019/1309/216 1024/1310/216 1020/1311/216 +f 1027/1312/217 1025/1313/217 1026/1314/217 +f 1022/1315/218 1025/1316/218 1021/1317/218 +f 1021/1318/219 1028/1298/219 1024/1319/219 +f 1022/1301/220 1027/1320/220 1026/1321/220 +f 1036/1322/221 1039/1323/221 1035/1324/221 +f 1030/1325/222 1034/1326/222 1029/1327/222 +f 1032/1328/36 1035/1329/36 1030/1330/36 +f 1031/1331/33 1034/1332/33 1033/1333/33 +f 1031/1334/223 1036/1335/223 1032/1336/223 +f 1039/1323/224 1037/1337/224 1038/1338/224 +f 1034/1332/225 1037/1339/225 1033/1333/225 +f 1033/1340/226 1040/1341/226 1036/1322/226 +f 1034/1326/227 1039/1342/227 1038/1343/227 +f 1047/1344/228 1052/1345/228 1051/1346/228 +f 1042/1347/229 1046/1348/229 1041/1349/229 +f 1044/1350/14 1047/1351/14 1042/1352/14 +f 1043/1353/12 1046/1354/12 1045/1355/12 +f 1044/1356/230 1045/1357/230 1048/1358/230 +f 1051/1346/231 1049/1359/231 1050/1360/231 +f 1045/1355/232 1050/1361/232 1049/1362/232 +f 1045/1357/233 1052/1345/233 1048/1358/233 +f 1046/1348/234 1051/1363/234 1050/1364/234 +f 1059/1365/235 1064/1366/235 1063/1367/235 +f 1054/1368/236 1058/1369/236 1053/1370/236 +f 1056/1371/1 1059/1372/1 1054/1373/1 +f 1055/1374/2 1058/1375/2 1057/1376/2 +f 1055/1374/237 1060/1377/237 1056/1378/237 +f 1063/1367/238 1061/1379/238 1062/1380/238 +f 1058/1375/239 1061/1381/239 1057/1376/239 +f 1057/1382/240 1064/1366/240 1060/1383/240 +f 1058/1369/241 1063/1384/241 1062/1385/241 +f 1072/1386/242 1075/1387/242 1071/1388/242 +f 1066/1389/243 1070/1390/243 1065/1391/243 +f 1068/1392/2 1071/1393/2 1066/1394/2 +f 1067/1395/1 1070/1396/1 1069/1397/1 +f 1068/1392/244 1069/1398/244 1072/1399/244 +f 1075/1387/245 1073/1400/245 1074/1401/245 +f 1070/1396/246 1073/1402/246 1069/1397/246 +f 1069/1403/247 1076/1404/247 1072/1386/247 +f 1070/1390/248 1075/1405/248 1074/1406/248 +f 1083/1407/249 1088/1408/249 1087/1409/249 +f 1077/1410/250 1083/1411/250 1082/1412/250 +f 1080/1413/38 1083/1407/38 1078/1414/38 +f 1079/1415/35 1082/1416/35 1081/1417/35 +f 1079/1418/251 1084/1419/251 1080/1420/251 +f 1087/1409/252 1085/1421/252 1086/1422/252 +f 1081/1417/253 1086/1423/253 1085/1424/253 +f 1081/1425/254 1088/1426/254 1084/1419/254 +f 1082/1412/255 1087/1427/255 1086/1428/255 +f 1095/1429/256 1100/1430/256 1099/1431/256 +f 1090/1432/257 1094/1433/257 1089/1434/257 +f 1092/1435/35 1095/1429/35 1090/1436/35 +f 1091/1437/38 1094/1438/38 1093/1439/38 +f 1091/1440/258 1096/1441/258 1092/1442/258 +f 1098/1443/259 1100/1430/259 1097/1444/259 +f 1094/1438/260 1097/1445/260 1093/1439/260 +f 1093/1446/261 1100/1447/261 1096/1441/261 +f 1094/1433/262 1099/1448/262 1098/1449/262 +f 1108/1450/263 1111/1451/263 1107/1452/263 +f 1101/1453/264 1107/1454/264 1106/1455/264 +f 1104/1456/28 1107/1457/28 1102/1458/28 +f 1101/1459/37 1105/1460/37 1103/1461/37 +f 1103/1462/265 1108/1450/265 1104/1463/265 +f 1111/1464/266 1109/1465/266 1110/1466/266 +f 1105/1467/267 1110/1468/267 1109/1469/267 +f 1105/1470/268 1112/1471/268 1108/1450/268 +f 1106/1455/269 1111/1472/269 1110/1473/269 +f 1119/1474/270 1124/1475/270 1123/1476/270 +f 1113/1477/271 1119/1474/271 1118/1478/271 +f 1116/1479/37 1119/1480/37 1114/1481/37 +f 1115/1482/28 1118/1483/28 1117/1484/28 +f 1116/1485/272 1117/1486/272 1120/1487/272 +f 1123/1488/273 1121/1489/273 1122/1490/273 +f 1117/1491/274 1122/1492/274 1121/1493/274 +f 1117/1486/275 1124/1494/275 1120/1487/275 +f 1118/1478/276 1123/1476/276 1122/1495/276 +f 1132/1496/277 1135/1497/277 1131/1498/277 +f 1126/1499/278 1130/1500/278 1125/1501/278 +f 1128/1502/14 1131/1503/14 1126/1504/14 +f 1125/1505/12 1129/1506/12 1127/1507/12 +f 1127/1508/279 1132/1496/279 1128/1509/279 +f 1135/1497/280 1133/1510/280 1134/1511/280 +f 1129/1506/281 1134/1512/281 1133/1513/281 +f 1129/1514/282 1136/1515/282 1132/1496/282 +f 1130/1500/283 1135/1516/283 1134/1517/283 +f 1143/1518/284 1148/1519/284 1147/1520/284 +f 1138/1521/285 1142/1522/285 1137/1523/285 +f 1138/1524/131 1144/1525/131 1143/1526/131 +f 1137/1527/133 1141/1528/133 1139/1529/133 +f 1139/1529/286 1144/1530/286 1140/1531/286 +f 1147/1520/287 1145/1532/287 1146/1533/287 +f 1142/1534/288 1145/1535/288 1141/1536/288 +f 1141/1537/289 1148/1519/289 1144/1538/289 +f 1142/1522/290 1147/1539/290 1146/1540/290 +f 1156/1541/291 1159/1542/291 1155/1543/291 +f 1150/1544/292 1154/1545/292 1149/1546/292 +f 1152/1547/133 1155/1548/133 1150/1549/133 +f 1151/1550/131 1154/1551/131 1153/1552/131 +f 1152/1553/293 1153/1552/293 1156/1554/293 +f 1159/1542/294 1157/1555/294 1158/1556/294 +f 1154/1557/295 1157/1558/295 1153/1559/295 +f 1153/1560/296 1160/1561/296 1156/1541/296 +f 1154/1545/297 1159/1562/297 1158/1563/297 +f 1168/1564/298 1171/1565/298 1167/1566/298 +f 1162/1567/299 1166/1568/299 1161/1569/299 +f 1164/1570/119 1167/1566/119 1162/1571/119 +f 1161/1572/114 1165/1573/114 1163/1574/114 +f 1164/1570/300 1165/1575/300 1168/1564/300 +f 1171/1576/301 1169/1577/301 1170/1578/301 +f 1166/1579/302 1169/1580/302 1165/1573/302 +f 1165/1581/303 1172/1582/303 1168/1583/303 +f 1166/1568/304 1171/1584/304 1170/1585/304 +f 1179/1586/305 1184/1587/305 1183/1588/305 +f 1174/1589/306 1178/1590/306 1173/1591/306 +f 1176/1592/114 1179/1593/114 1174/1594/114 +f 1175/1595/119 1178/1596/119 1177/1597/119 +f 1176/1592/307 1177/1598/307 1180/1599/307 +f 1183/1600/308 1181/1601/308 1182/1602/308 +f 1178/1596/309 1181/1603/309 1177/1597/309 +f 1177/1604/310 1184/1605/310 1180/1606/310 +f 1178/1590/311 1183/1588/311 1182/1607/311 +f 1200/1608/23 1191/1609/23 1192/1610/23 +f 1198/1611/22 1189/1612/22 1190/1613/22 +f 1196/1614/21 1187/1615/21 1188/1616/21 +f 1194/1617/24 1185/1618/24 1186/1619/24 +f 1185/1618/19 1200/1620/19 1192/1621/19 +f 1191/1609/20 1198/1622/20 1190/1623/20 +f 1189/1612/17 1196/1624/17 1188/1625/17 +f 1187/1615/18 1194/1626/18 1186/1627/18 +f 1193/1628/312 1194/1629/312 1200/1630/312 +f 1199/1631/313 1200/1632/313 1198/1633/313 +f 1197/1634/314 1198/1635/314 1196/1636/314 +f 1195/1637/315 1196/1638/315 1194/1639/315 +f 1194/1640/11 1198/1641/11 1200/1642/11 +f 675/695/316 1206/1643/316 1207/1644/316 +f 671/700/317 1204/1645/317 672/698/317 +f 678/692/318 1211/1646/318 679/701/318 +f 675/1647/319 1208/1648/319 676/1649/319 +f 673/705/320 1204/1645/320 1205/1650/320 +f 679/701/321 1212/1651/321 680/1652/321 +f 669/686/322 1202/1653/322 670/691/322 +f 677/694/323 1208/1648/323 1209/1654/323 +f 673/705/324 1206/1655/324 674/1656/324 +f 680/1652/325 1201/1657/325 669/1658/325 +f 670/1659/326 1203/1660/326 671/700/326 +f 677/694/327 1210/1661/327 678/692/327 +f 1205/1662/13 1203/1663/13 1211/1646/13 +f 1215/1664/12 1214/1665/12 1213/1666/12 +f 1219/1667/11 1222/1668/11 1218/1669/11 +f 1215/1670/13 1220/1671/13 1216/1672/13 +f 1214/1673/11 1218/1669/11 1213/1674/11 +f 1216/1672/2 1219/1675/2 1214/1676/2 +f 1213/1677/1 1217/1678/1 1215/1679/1 +f 1223/1680/14 1221/1681/14 1222/1682/14 +f 1219/1675/2 1224/1683/2 1223/1684/2 +f 1218/1685/1 1221/1686/1 1217/1678/1 +f 1217/1687/328 1224/1688/328 1220/1689/328 +f 1227/1690/12 1226/1691/12 1225/1692/12 +f 1231/1693/14 1229/1694/14 1230/1695/14 +f 1227/1696/13 1232/1697/13 1228/1698/13 +f 1226/1699/11 1230/1700/11 1225/1701/11 +f 1228/1698/2 1231/1702/2 1226/1703/2 +f 1225/1704/1 1229/1705/1 1227/1706/1 +f 1235/1707/12 1234/1708/12 1233/1709/12 +f 1239/1710/14 1237/1711/14 1238/1712/14 +f 1236/1713/2 1239/1714/2 1234/1715/2 +f 1233/1716/1 1237/1717/1 1235/1718/1 +f 1235/1719/13 1240/1720/13 1236/1713/13 +f 1234/1721/11 1238/1722/11 1233/1723/11 +f 1256/1724/13 1251/1725/13 1252/1726/13 +f 1254/1727/11 1250/1728/11 1249/1729/11 +f 1248/1730/13 1243/1731/13 1244/1732/13 +f 1246/1733/11 1242/1734/11 1241/1735/11 +f 1247/1736/2 1244/1732/2 1242/1737/2 +f 1245/1738/1 1241/1739/1 1243/1740/1 +f 1255/1741/2 1252/1726/2 1250/1742/2 +f 1253/1743/1 1249/1744/1 1251/1745/1 +f 1289/1746/11 1454/1747/11 1452/1748/11 +f 1292/1749/13 1450/1750/13 1448/1751/13 +f 1259/1752/13 1264/1753/13 1260/1754/13 +f 1258/1755/11 1261/1756/11 1257/1757/11 +f 1260/1754/2 1262/1758/2 1258/1759/2 +f 1257/1760/1 1263/1761/1 1259/1762/1 +f 1267/1763/13 1272/1764/13 1268/1765/13 +f 1266/1766/11 1269/1767/11 1265/1768/11 +f 1268/1765/2 1270/1769/2 1266/1770/2 +f 1265/1771/1 1271/1772/1 1267/1773/1 +f 1295/1774/14 1293/1775/14 1294/1776/14 +f 1291/1777/12 1290/1778/12 1289/1779/12 +f 1275/1780/13 1280/1781/13 1276/1782/13 +f 1274/1783/11 1277/1784/11 1273/1785/11 +f 1276/1782/2 1278/1786/2 1274/1787/2 +f 1273/1788/1 1279/1789/1 1275/1790/1 +f 1283/1791/13 1288/1792/13 1284/1793/13 +f 1282/1794/11 1285/1795/11 1281/1796/11 +f 1284/1793/2 1286/1797/2 1282/1798/2 +f 1281/1799/1 1287/1800/1 1283/1801/1 +f 1291/1802/13 1296/1803/13 1292/1749/13 +f 1290/1804/11 1294/1805/11 1289/1746/11 +f 1299/1806/12 1298/1807/12 1297/1808/12 +f 1303/1809/14 1301/1810/14 1302/1811/14 +f 1299/1812/13 1304/1813/13 1300/1814/13 +f 1298/1815/11 1302/1816/11 1297/1817/11 +f 1300/1814/2 1303/1818/2 1298/1819/2 +f 1297/1820/1 1301/1821/1 1299/1822/1 +f 1324/1823/11 1314/1824/11 1321/1825/11 +f 1328/1826/2 1324/1827/2 1322/1828/2 +f 1310/1829/12 1311/1830/12 1312/1831/12 +f 1319/1832/14 1323/1833/14 1328/1834/14 +f 1316/1835/1 1320/1836/1 1318/1837/1 +f 1320/1838/13 1326/1839/13 1317/1840/13 +f 1318/1841/15 1326/1842/15 1325/1843/15 +f 1328/1834/329 1320/1844/329 1319/1832/329 +f 1322/1845/16 1314/1846/16 1313/1847/16 +f 1316/1848/330 1324/1849/330 1323/1833/330 +f 1325/1843/12 1313/1847/12 1318/1841/12 +f 1305/1850/14 1308/1851/14 1307/1852/14 +f 1311/1853/11 1307/1854/11 1312/1855/11 +f 1312/1856/1 1308/1857/1 1310/1858/1 +f 1309/1859/2 1305/1860/2 1311/1861/2 +f 1310/1862/13 1306/1863/13 1309/1859/13 +f 1332/1864/329 1337/1865/329 1331/1866/329 +f 1335/1867/11 1333/1868/11 1334/1869/11 +f 1331/1866/14 1336/1870/14 1332/1864/14 +f 1330/1871/12 1334/1872/12 1329/1873/12 +f 1332/1874/2 1335/1875/2 1330/1876/2 +f 1329/1877/1 1333/1878/1 1331/1879/1 +f 1337/1880/13 1339/1881/13 1338/1882/13 +f 1329/1873/15 1339/1883/15 1330/1871/15 +f 1330/1876/331 1340/1884/331 1332/1874/331 +f 1331/1879/332 1338/1885/332 1329/1877/332 +f 1347/1886/11 1345/1887/11 1346/1888/11 +f 1341/1889/14 1348/1890/14 1344/1891/14 +f 1343/1892/12 1346/1893/12 1342/1894/12 +f 1344/1895/2 1347/1896/2 1343/1897/2 +f 1342/1898/1 1345/1899/1 1341/1900/1 +f 1356/1901/333 1350/1902/333 1352/1903/333 +f 1353/1904/334 1351/1905/334 1349/1906/334 +f 1351/1907/13 1356/1901/13 1352/1903/13 +f 1354/1908/11 1349/1909/11 1350/1910/11 +f 1364/1911/335 1358/1912/335 1360/1913/335 +f 1361/1914/336 1359/1915/336 1357/1916/336 +f 1363/1917/13 1360/1913/13 1359/1918/13 +f 1358/1919/11 1361/1920/11 1357/1921/11 +f 1448/1751/2 1449/1922/2 1447/1923/2 +f 1295/1774/337 1450/1924/337 1296/1925/337 +f 1292/1926/338 1447/1927/338 1290/1778/338 +f 1290/1804/11 1449/1928/11 1295/1929/11 +f 1452/1930/1 1453/1931/1 1451/1932/1 +f 1293/1775/339 1454/1933/339 1294/1776/339 +f 1289/1779/340 1451/1934/340 1291/1777/340 +f 1291/1802/13 1453/1935/13 1293/1936/13 +f 1502/1937/14 1496/1938/14 1499/1939/14 +f 1491/1940/14 1493/1941/14 1488/1942/14 +f 74/1/1 73/203/1 114/2/1 +f 14/4/1 13/88/1 54/5/1 +f 12/7/2 44/64/2 43/8/2 +f 23/1943/1 21/1944/1 22/10/1 +f 22/10/1 28/1945/1 27/11/1 +f 27/11/1 26/1946/1 25/12/1 +f 25/12/1 24/1947/1 23/1943/1 +f 23/1943/1 22/10/1 25/12/1 +f 11/9/3 27/26/3 28/13/3 +f 9/14/4 25/28/4 26/15/4 +f 7/17/5 23/30/5 24/18/5 +f 5/20/6 22/24/6 21/21/6 +f 12/23/7 28/1948/7 22/24/7 +f 10/25/8 26/1949/8 27/26/8 +f 9/14/9 8/1950/9 24/27/9 +f 6/29/10 21/1951/10 23/30/10 +f 30/1952/2 29/1953/2 31/31/2 +f 31/31/2 32/1954/2 33/32/2 +f 33/32/2 34/40/2 35/33/2 +f 35/33/2 36/1955/2 30/1952/2 +f 30/1952/2 31/31/2 35/33/2 +f 14/34/6 29/1956/6 30/35/6 +f 13/36/7 30/35/7 36/37/7 +f 19/39/8 35/33/8 34/40/8 +f 17/42/9 33/50/9 32/43/9 +f 15/45/10 31/52/10 29/46/10 +f 20/48/3 36/1955/3 35/33/3 +f 17/42/4 18/1957/4 34/49/4 +f 16/51/5 32/1958/5 31/52/5 +f 41/53/4 42/1959/4 50/54/4 +f 10/25/2 42/65/2 41/56/2 +f 8/58/2 40/66/2 39/59/2 +f 6/61/2 37/67/2 38/62/2 +f 12/7/2 5/63/2 38/62/2 +f 11/9/2 43/8/2 42/65/2 +f 9/57/2 41/56/2 40/66/2 +f 6/61/2 7/60/2 39/59/2 +f 46/70/2 45/1960/2 49/68/2 +f 45/1960/2 47/1961/2 49/68/2 +f 47/1961/2 48/1962/2 49/68/2 +f 49/68/2 50/79/2 51/69/2 +f 51/69/2 52/84/2 46/70/2 +f 40/71/5 48/1963/5 47/72/5 +f 37/74/6 45/1964/6 46/75/6 +f 38/76/7 46/75/7 52/77/7 +f 43/8/8 51/69/8 50/79/8 +f 41/53/9 49/55/9 48/80/9 +f 39/73/10 47/72/10 45/82/10 +f 43/8/3 44/64/3 52/84/3 +f 58/85/8 66/1965/8 67/86/8 +f 13/88/1 20/98/1 60/89/1 +f 19/90/1 18/99/1 58/91/1 +f 16/93/1 56/100/1 57/94/1 +f 14/4/1 53/6/1 55/96/1 +f 19/90/1 59/92/1 60/89/1 +f 17/95/1 57/94/1 58/91/1 +f 16/93/1 15/97/1 55/96/1 +f 63/102/1 61/1966/1 67/103/1 +f 61/1966/1 62/1967/1 67/103/1 +f 62/1967/1 68/1968/1 67/103/1 +f 67/103/1 66/1969/1 65/1970/1 +f 65/1970/1 64/101/1 67/103/1 +f 56/104/9 64/1971/9 65/105/9 +f 53/107/10 61/1972/10 63/108/10 +f 60/110/3 59/87/3 67/86/3 +f 58/112/4 57/106/4 65/105/4 +f 55/109/5 63/108/5 64/114/5 +f 54/116/6 62/120/6 61/117/6 +f 60/119/7 68/1973/7 62/120/7 +f 71/121/2 72/128/2 104/122/2 +f 83/1974/1 81/1975/1 82/124/1 +f 82/124/1 88/1976/1 87/125/1 +f 87/125/1 86/1977/1 85/126/1 +f 85/126/1 84/1978/1 83/1974/1 +f 83/1974/1 82/124/1 85/126/1 +f 71/121/3 87/141/3 88/127/3 +f 69/129/4 85/143/4 86/130/4 +f 2/132/5 83/145/5 84/133/5 +f 4/135/6 82/139/6 81/136/6 +f 72/138/7 88/1979/7 82/139/7 +f 70/140/8 86/1980/8 87/141/8 +f 69/129/9 1/1981/9 84/142/9 +f 3/144/10 81/1982/10 83/145/10 +f 90/147/2 89/1983/2 91/1984/2 +f 91/1984/2 92/1985/2 90/147/2 +f 92/1985/2 93/148/2 90/147/2 +f 93/148/2 94/155/2 95/164/2 +f 95/164/2 96/146/2 93/148/2 +f 74/149/6 89/1986/6 90/150/6 +f 73/151/7 90/150/7 96/152/7 +f 79/154/8 95/164/8 94/155/8 +f 77/157/9 93/166/9 92/158/9 +f 75/160/10 91/168/10 89/161/10 +f 80/163/3 96/146/3 95/164/3 +f 77/157/4 78/1987/4 94/165/4 +f 76/167/5 92/1988/5 91/168/5 +f 102/169/4 110/1989/4 109/170/4 +f 70/140/2 102/180/2 101/172/2 +f 2/174/2 1/181/2 100/175/2 +f 3/177/2 97/182/2 98/178/2 +f 72/128/2 4/179/2 98/178/2 +f 71/121/2 103/123/2 102/180/2 +f 1/181/2 69/173/2 101/172/2 +f 2/174/2 99/176/2 97/182/2 +f 106/185/2 105/1990/2 107/1991/2 +f 107/1991/2 108/1992/2 109/183/2 +f 109/183/2 110/194/2 111/184/2 +f 111/184/2 112/1993/2 106/185/2 +f 106/185/2 107/1991/2 109/183/2 +f 100/186/5 108/1994/5 107/187/5 +f 97/189/6 105/1995/6 106/190/6 +f 98/191/7 106/190/7 112/192/7 +f 103/123/8 111/184/8 110/194/8 +f 101/171/9 109/170/9 108/195/9 +f 99/188/10 107/187/10 105/197/10 +f 104/122/3 112/1993/3 111/184/3 +f 118/199/8 126/1996/8 127/200/8 +f 80/202/1 120/212/1 114/2/1 +f 79/204/1 78/213/1 118/205/1 +f 76/207/1 116/214/1 117/208/1 +f 75/210/1 74/1/1 113/3/1 +f 79/204/1 119/206/1 120/212/1 +f 78/213/1 77/209/1 117/208/1 +f 75/210/1 115/211/1 116/214/1 +f 123/217/1 121/1997/1 122/1998/1 +f 122/1998/1 128/1999/1 127/215/1 +f 127/215/1 126/2000/1 125/216/1 +f 125/216/1 124/2001/1 123/217/1 +f 123/217/1 122/1998/1 127/215/1 +f 116/218/9 124/2002/9 125/219/9 +f 113/221/10 121/2003/10 123/222/10 +f 119/201/3 127/200/3 128/224/3 +f 117/220/4 125/219/4 126/226/4 +f 115/223/5 123/222/5 124/228/5 +f 114/230/6 122/234/6 121/231/6 +f 120/233/7 128/2004/7 122/234/7 +f 134/235/11 130/2005/11 153/236/11 +f 154/238/12 153/2006/12 130/239/12 +f 129/241/13 133/254/13 151/242/13 +f 143/244/11 144/2007/11 140/245/11 +f 142/247/13 141/257/13 137/248/13 +f 142/250/14 144/2008/14 143/251/14 +f 129/241/2 143/256/2 139/253/2 +f 130/255/2 141/257/2 143/256/2 +f 130/255/2 134/2009/2 137/248/2 +f 132/258/1 142/2010/1 138/259/1 +f 144/261/1 142/2010/1 132/258/1 +f 131/262/1 135/2011/1 140/263/1 +f 147/264/12 148/267/12 146/265/12 +f 148/267/15 150/2012/15 149/268/15 +f 145/266/16 151/285/16 152/269/16 +f 147/271/1 152/2013/1 156/272/1 +f 156/272/1 155/2014/1 148/270/1 +f 155/2014/1 150/2015/1 148/270/1 +f 146/274/2 149/2016/2 153/275/2 +f 153/275/2 154/243/2 145/273/2 +f 154/243/2 151/242/2 145/273/2 +f 132/276/12 155/2017/12 156/277/12 +f 136/279/11 150/2018/11 155/280/11 +f 156/282/13 152/2019/13 135/283/13 +f 151/285/12 133/2020/12 139/286/12 +f 139/286/12 140/2021/12 152/269/12 +f 140/2021/12 135/2022/12 152/269/12 +f 149/268/12 150/2012/12 138/2023/12 +f 150/2012/12 136/2024/12 138/2023/12 +f 138/2023/12 137/287/12 149/268/12 +f 230/289/1 229/491/1 270/290/1 +f 170/292/1 169/378/1 210/293/1 +f 167/295/2 168/302/2 200/296/2 +f 179/2025/1 177/2026/1 178/298/1 +f 178/298/1 184/2027/1 183/299/1 +f 183/299/1 182/2028/1 181/300/1 +f 181/300/1 180/2029/1 179/2025/1 +f 179/2025/1 178/298/1 181/300/1 +f 167/295/3 183/315/3 184/301/3 +f 165/303/4 181/317/4 182/304/4 +f 163/306/5 179/319/5 180/307/5 +f 161/309/6 178/313/6 177/310/6 +f 168/312/7 184/2030/7 178/313/7 +f 167/295/8 166/346/8 182/314/8 +f 165/303/9 164/2031/9 180/316/9 +f 162/318/10 177/2032/10 179/319/10 +f 186/321/2 185/2033/2 187/2034/2 +f 187/2034/2 188/2035/2 186/321/2 +f 188/2035/2 189/322/2 186/321/2 +f 189/322/2 190/329/2 191/338/2 +f 191/338/2 192/320/2 189/322/2 +f 170/323/6 185/2036/6 186/324/6 +f 169/325/7 186/324/7 192/326/7 +f 175/328/8 191/338/8 190/329/8 +f 173/331/9 189/340/9 188/332/9 +f 171/334/10 187/342/10 185/335/10 +f 176/337/3 192/320/3 191/338/3 +f 173/331/4 174/2037/4 190/339/4 +f 171/334/5 172/2038/5 188/341/5 +f 198/343/4 206/2039/4 205/344/4 +f 166/346/2 198/355/2 197/347/2 +f 164/349/2 196/356/2 195/350/2 +f 162/352/2 193/357/2 194/353/2 +f 168/302/2 161/354/2 194/353/2 +f 167/295/2 199/297/2 198/355/2 +f 165/348/2 197/347/2 196/356/2 +f 162/352/2 163/351/2 195/350/2 +f 202/360/2 201/2040/2 205/358/2 +f 201/2040/2 203/2041/2 205/358/2 +f 203/2041/2 204/2042/2 205/358/2 +f 205/358/2 206/369/2 207/359/2 +f 207/359/2 208/2043/2 202/360/2 +f 196/361/5 204/2044/5 203/362/5 +f 193/364/6 201/2045/6 202/365/6 +f 194/366/7 202/365/7 208/367/7 +f 199/297/8 207/359/8 206/369/8 +f 197/345/9 205/344/9 204/370/9 +f 195/363/10 203/362/10 201/372/10 +f 200/296/3 208/2043/3 207/359/3 +f 214/374/8 222/2046/8 223/375/8 +f 176/377/1 216/387/1 210/293/1 +f 175/379/1 174/388/1 214/380/1 +f 172/382/1 212/389/1 213/383/1 +f 170/292/1 209/294/1 211/385/1 +f 175/379/1 215/381/1 216/387/1 +f 174/388/1 173/384/1 213/383/1 +f 172/382/1 171/386/1 211/385/1 +f 219/391/1 217/2047/1 223/392/1 +f 217/2047/1 218/2048/1 223/392/1 +f 218/2048/1 224/2049/1 223/392/1 +f 223/392/1 222/2050/1 221/2051/1 +f 221/2051/1 220/390/1 223/392/1 +f 212/393/9 220/2052/9 221/394/9 +f 209/396/10 217/2053/10 219/397/10 +f 215/376/3 223/375/3 224/399/3 +f 213/395/4 221/394/4 222/401/4 +f 211/398/5 219/397/5 220/403/5 +f 210/405/6 218/409/6 217/406/6 +f 216/408/7 224/2054/7 218/409/7 +f 227/410/2 228/417/2 260/411/2 +f 239/414/1 237/2055/1 243/415/1 +f 237/2055/1 238/2056/1 243/415/1 +f 238/2056/1 244/2057/1 243/415/1 +f 243/415/1 242/2058/1 241/2059/1 +f 241/2059/1 240/413/1 243/415/1 +f 227/410/3 243/430/3 244/416/3 +f 225/418/4 241/432/4 242/419/4 +f 158/421/5 239/434/5 240/422/5 +f 160/424/6 238/428/6 237/425/6 +f 228/427/7 244/2060/7 238/428/7 +f 226/429/8 242/2061/8 243/430/8 +f 225/418/9 157/2062/9 240/431/9 +f 159/433/10 237/2063/10 239/434/10 +f 246/2064/2 245/2065/2 247/435/2 +f 247/435/2 248/2066/2 249/436/2 +f 249/436/2 250/444/2 251/437/2 +f 251/437/2 252/2067/2 246/2064/2 +f 246/2064/2 247/435/2 251/437/2 +f 230/438/6 245/2068/6 246/439/6 +f 229/440/7 246/439/7 252/441/7 +f 235/443/8 251/437/8 250/444/8 +f 233/446/9 249/454/9 248/447/9 +f 231/449/10 247/456/10 245/450/10 +f 236/452/3 252/2067/3 251/437/3 +f 233/446/4 234/2069/4 250/453/4 +f 231/449/5 232/2070/5 248/455/5 +f 258/457/4 266/2071/4 265/458/4 +f 226/429/2 258/468/2 257/460/2 +f 158/462/2 157/469/2 256/463/2 +f 159/465/2 253/470/2 254/466/2 +f 228/417/2 160/467/2 254/466/2 +f 227/410/2 259/412/2 258/468/2 +f 157/469/2 225/461/2 257/460/2 +f 158/462/2 255/464/2 253/470/2 +f 262/473/2 261/2072/2 263/2073/2 +f 263/2073/2 264/2074/2 265/471/2 +f 265/471/2 266/482/2 267/472/2 +f 267/472/2 268/2075/2 262/473/2 +f 262/473/2 263/2073/2 265/471/2 +f 256/474/5 264/2076/5 263/475/5 +f 253/477/6 261/2077/6 262/478/6 +f 254/479/7 262/478/7 268/480/7 +f 259/412/8 267/472/8 266/482/8 +f 257/459/9 265/458/9 264/483/9 +f 255/476/10 263/475/10 261/485/10 +f 260/411/3 268/2075/3 267/472/3 +f 274/487/8 282/2078/8 283/488/8 +f 236/490/1 276/500/1 270/290/1 +f 235/492/1 234/501/1 274/493/1 +f 232/495/1 272/502/1 273/496/1 +f 231/498/1 230/289/1 269/291/1 +f 235/492/1 275/494/1 276/500/1 +f 234/501/1 233/497/1 273/496/1 +f 231/498/1 271/499/1 272/502/1 +f 279/505/1 277/2079/1 278/2080/1 +f 278/2080/1 284/2081/1 283/503/1 +f 283/503/1 282/2082/1 281/504/1 +f 281/504/1 280/2083/1 279/505/1 +f 279/505/1 278/2080/1 283/503/1 +f 272/506/9 280/2084/9 281/507/9 +f 269/509/10 277/2085/10 279/510/10 +f 275/489/3 283/488/3 284/512/3 +f 273/508/4 281/507/4 282/514/4 +f 271/511/5 279/510/5 280/516/5 +f 270/518/6 278/522/6 277/519/6 +f 276/521/7 284/2086/7 278/522/7 +f 290/523/11 286/2087/11 309/524/11 +f 310/526/12 309/2088/12 286/527/12 +f 285/529/13 289/542/13 307/530/13 +f 299/532/11 300/2089/11 296/533/11 +f 298/535/13 297/545/13 293/536/13 +f 298/538/14 300/2090/14 299/539/14 +f 285/529/2 299/544/2 295/541/2 +f 286/543/2 297/545/2 299/544/2 +f 286/543/2 290/2091/2 293/536/2 +f 288/546/1 298/2092/1 294/547/1 +f 300/549/1 298/2092/1 288/546/1 +f 287/550/1 291/2093/1 296/551/1 +f 303/552/12 304/555/12 302/553/12 +f 304/555/15 306/2094/15 305/556/15 +f 301/554/16 307/573/16 308/557/16 +f 303/559/1 308/2095/1 312/560/1 +f 312/560/1 311/2096/1 304/558/1 +f 311/2096/1 306/2097/1 304/558/1 +f 302/562/2 305/2098/2 309/563/2 +f 309/563/2 310/531/2 301/561/2 +f 310/531/2 307/530/2 301/561/2 +f 288/564/12 311/2099/12 312/565/12 +f 292/567/11 306/2100/11 311/568/11 +f 312/570/13 308/2101/13 291/571/13 +f 307/573/12 289/2102/12 295/2103/12 +f 295/2103/12 296/574/12 307/573/12 +f 296/574/12 291/2104/12 308/557/12 +f 290/2105/12 305/556/12 293/576/12 +f 305/556/12 306/2094/12 294/575/12 +f 306/2094/12 292/2106/12 294/575/12 +f 315/577/12 316/2107/12 324/578/12 +f 319/580/14 320/2108/14 317/581/14 +f 315/583/13 317/2109/13 320/584/13 +f 314/586/11 319/2110/11 318/587/11 +f 319/590/2 314/2111/2 323/601/2 +f 324/589/2 316/585/2 320/584/2 +f 319/590/2 323/601/2 324/589/2 +f 317/593/1 315/2112/1 321/603/1 +f 322/591/1 313/2113/1 318/592/1 +f 317/593/1 321/603/1 322/591/1 +f 322/594/12 323/598/12 314/595/12 +f 322/594/16 326/600/16 327/597/16 +f 325/599/12 328/2114/12 327/597/12 +f 324/578/15 328/2114/15 325/599/15 +f 323/601/2 327/2115/2 328/602/2 +f 321/603/1 325/2116/1 326/604/1 +f 336/605/17 335/2117/17 662/606/17 +f 334/608/18 333/2118/18 664/609/18 +f 332/611/19 331/2119/19 666/612/19 +f 330/614/20 329/2120/20 668/615/20 +f 335/617/21 334/608/21 663/610/21 +f 338/621/11 343/2121/11 342/619/11 +f 343/2121/11 347/2122/11 342/619/11 +f 347/2122/11 346/2123/11 342/619/11 +f 339/622/12 340/2124/12 338/623/12 +f 329/625/22 336/605/22 661/607/22 +f 331/627/23 330/614/23 667/616/23 +f 344/631/13 340/647/13 339/2125/13 +f 339/2125/13 341/2126/13 344/631/13 +f 341/2126/13 345/629/13 344/631/13 +f 354/632/2 356/656/2 355/633/2 +f 341/635/1 510/676/1 512/636/1 +f 347/638/14 348/2127/14 345/639/14 +f 333/641/24 332/611/24 665/613/24 +f 344/643/25 348/2127/25 347/638/25 +f 342/645/26 346/640/26 345/639/26 +f 340/647/2 349/2128/2 351/648/2 +f 350/650/11 354/2129/11 353/651/11 +f 349/653/14 353/2130/14 355/654/14 +f 351/648/13 355/633/13 356/656/13 +f 352/658/12 356/2131/12 354/659/12 +f 350/661/2 349/2128/2 340/647/2 +f 352/657/2 350/661/2 344/631/2 +f 338/649/2 351/648/2 352/657/2 +f 506/663/11 510/2132/11 509/664/11 +f 505/666/14 509/2133/14 511/667/14 +f 507/669/13 511/2134/13 512/670/13 +f 508/672/12 512/2135/12 510/673/12 +f 339/675/1 509/678/1 510/676/1 +f 339/675/1 337/679/1 511/677/1 +f 512/636/1 511/677/1 337/679/1 +f 505/680/1 507/2136/1 508/681/1 +f 335/685/11 336/2137/11 331/683/11 +f 336/2137/11 329/2138/11 331/683/11 +f 329/2138/11 330/2139/11 331/683/11 +f 331/683/11 332/2140/11 333/684/11 +f 333/684/11 334/2141/11 335/685/11 +f 669/686/27 681/709/27 692/687/27 +f 671/689/28 683/724/28 682/690/28 +f 678/692/29 690/702/29 689/693/29 +f 675/695/30 687/704/30 686/696/30 +f 672/698/31 684/706/31 683/699/31 +f 679/701/32 691/728/32 690/702/32 +f 676/703/33 688/711/33 687/704/33 +f 673/705/34 685/2142/34 684/706/34 +f 680/688/35 692/687/35 691/707/35 +f 670/691/36 682/690/36 681/709/36 +f 677/710/37 689/720/37 688/711/37 +f 674/697/38 686/696/38 685/712/38 +f 687/704/39 688/711/39 700/714/39 +f 684/706/40 685/2142/40 697/716/40 +f 692/687/41 704/723/41 703/718/41 +f 682/690/42 694/725/42 693/719/42 +f 689/720/43 701/2143/43 700/714/43 +f 685/712/44 686/696/44 698/721/44 +f 681/709/45 693/719/45 704/723/45 +f 683/724/46 695/2144/46 694/725/46 +f 690/702/47 702/729/47 701/726/47 +f 687/704/48 699/715/48 698/721/48 +f 684/706/49 696/717/49 695/727/49 +f 691/728/50 703/2145/50 702/729/50 +f 703/730/51 715/750/51 714/731/51 +f 700/714/52 712/739/52 711/733/52 +f 697/716/53 709/2146/53 708/734/53 +f 704/723/54 716/741/54 715/735/54 +f 693/719/55 694/725/55 706/736/55 +f 700/714/56 701/2143/56 713/738/56 +f 698/721/57 710/745/57 709/740/57 +f 693/719/58 705/737/58 716/741/58 +f 694/725/59 695/2144/59 707/742/59 +f 702/732/60 714/731/60 713/743/60 +f 699/715/61 711/733/61 710/745/61 +f 696/717/62 708/734/62 707/746/62 +f 708/747/63 720/754/63 719/748/63 +f 715/750/64 727/756/64 726/751/64 +f 712/739/65 724/759/65 723/752/65 +f 709/753/66 721/761/66 720/754/66 +f 715/750/67 716/2147/67 728/755/67 +f 706/736/68 718/2148/68 717/757/68 +f 712/739/69 713/738/69 725/758/69 +f 710/760/70 722/2149/70 721/761/70 +f 716/741/71 705/737/71 717/757/71 +f 706/763/72 707/749/72 719/748/72 +f 714/731/73 726/751/73 725/765/73 +f 711/733/74 723/752/74 722/766/74 +f 717/767/11 718/764/11 721/761/11 +f 718/764/11 719/748/11 721/761/11 +f 719/748/11 720/754/11 721/761/11 +f 721/761/11 722/2149/11 725/765/11 +f 722/2149/11 723/2150/11 725/765/11 +f 723/2150/11 724/2151/11 725/765/11 +f 725/765/11 726/751/11 727/756/11 +f 727/756/11 728/755/11 717/767/11 +f 725/765/11 727/756/11 721/761/11 +f 777/768/12 782/872/12 781/769/12 +f 736/771/75 740/2152/75 739/772/75 +f 730/774/11 735/2153/11 734/775/11 +f 732/777/12 736/771/12 735/773/12 +f 729/779/14 734/788/14 733/780/14 +f 731/782/13 733/790/13 736/783/13 +f 739/785/2 740/791/2 737/786/2 +f 734/788/76 738/2154/76 737/789/76 +f 733/790/77 737/786/77 740/791/77 +f 734/775/78 735/2153/78 739/792/78 +f 780/794/14 784/2155/14 783/795/14 +f 748/797/79 752/2156/79 751/798/79 +f 742/800/80 747/2157/80 746/801/80 +f 744/803/30 748/797/30 747/799/30 +f 743/805/27 741/2158/27 746/806/27 +f 743/808/81 745/815/81 748/809/81 +f 751/811/82 752/816/82 749/812/82 +f 746/806/83 750/2159/83 749/814/83 +f 745/815/84 749/812/84 752/816/84 +f 746/801/85 747/2157/85 751/817/85 +f 778/819/11 783/2160/11 782/820/11 +f 759/822/86 760/2161/86 764/823/86 +f 754/825/87 759/2162/87 758/826/87 +f 756/828/12 760/2161/12 759/822/12 +f 755/830/14 753/2163/14 758/831/14 +f 755/833/88 757/841/88 760/834/88 +f 763/836/89 764/2164/89 761/837/89 +f 757/832/90 758/831/90 762/839/90 +f 757/841/91 761/2165/91 764/842/91 +f 758/826/92 759/2162/92 763/836/92 +f 784/843/93 788/875/93 787/844/93 +f 772/846/94 776/2166/94 775/847/94 +f 766/849/95 771/2167/95 770/850/95 +f 768/852/12 772/846/12 771/848/12 +f 765/854/14 770/2168/14 769/855/14 +f 767/857/96 769/865/96 772/858/96 +f 775/860/97 776/2169/97 773/861/97 +f 769/855/98 770/2168/98 774/863/98 +f 769/865/99 773/2170/99 776/866/99 +f 770/850/100 771/2167/100 775/860/100 +f 779/867/13 781/2171/13 784/868/13 +f 787/844/1 788/875/1 785/870/1 +f 782/872/101 786/2172/101 785/873/101 +f 781/874/102 785/870/102 788/875/102 +f 782/820/103 783/2160/103 787/876/103 +f 801/878/1 806/915/1 805/879/1 +f 796/881/104 800/2173/104 799/882/104 +f 790/884/11 795/2174/11 794/885/11 +f 792/887/1 796/2175/1 795/888/1 +f 789/890/2 794/897/2 793/891/2 +f 791/892/13 793/891/13 796/893/13 +f 799/882/12 800/2173/12 797/895/12 +f 794/897/105 798/2176/105 797/898/105 +f 793/891/106 797/898/106 800/899/106 +f 794/885/107 795/2174/107 799/900/107 +f 804/902/2 808/912/2 807/903/2 +f 802/905/11 807/2177/11 806/906/11 +f 808/908/25 812/2178/25 811/909/25 +f 803/911/13 805/917/13 808/912/13 +f 811/909/14 812/2178/14 809/913/14 +f 806/915/108 810/2179/108 809/916/108 +f 805/917/109 809/2180/109 812/918/109 +f 806/906/110 807/2177/110 811/919/110 +f 825/921/111 830/960/111 829/922/111 +f 820/924/112 824/2181/112 823/925/112 +f 813/927/11 814/2182/11 819/928/11 +f 816/930/111 820/924/111 819/926/111 +f 813/932/113 818/941/113 817/933/113 +f 816/935/13 815/2183/13 817/936/13 +f 823/938/114 824/943/114 821/939/114 +f 818/941/115 822/2184/115 821/942/115 +f 817/936/116 821/939/116 824/943/116 +f 818/929/117 819/928/117 823/944/117 +f 828/946/113 832/952/113 831/947/113 +f 826/949/11 831/2185/11 830/950/11 +f 832/952/118 836/2186/118 835/953/118 +f 827/954/13 829/2187/13 832/955/13 +f 835/957/119 836/963/119 833/958/119 +f 830/960/120 834/2188/120 833/961/120 +f 829/962/121 833/958/121 836/963/121 +f 830/950/122 831/2185/122 835/965/122 +f 849/967/119 854/1003/119 853/968/119 +f 844/970/123 848/2189/123 847/971/123 +f 837/973/11 838/2190/11 843/974/11 +f 840/976/119 844/970/119 843/972/119 +f 837/978/114 842/986/114 841/979/114 +f 839/980/13 841/979/13 844/981/13 +f 847/983/111 848/2191/111 845/984/111 +f 842/986/124 846/2192/124 845/987/124 +f 841/979/125 845/987/125 848/988/125 +f 842/975/126 843/974/126 847/989/126 +f 852/991/114 856/997/114 855/992/114 +f 849/994/11 850/2193/11 855/995/11 +f 856/997/127 860/1006/127 859/998/127 +f 851/999/13 853/1005/13 856/997/13 +f 859/1000/113 860/2194/113 857/1001/113 +f 854/1003/128 858/2195/128 857/1004/128 +f 853/1005/129 857/2196/129 860/1006/129 +f 854/996/130 855/995/130 859/1007/130 +f 873/1009/131 878/2197/131 877/1010/131 +f 868/1012/132 872/2198/132 871/1013/132 +f 862/1015/11 867/2199/11 866/1016/11 +f 864/1018/131 868/2200/131 867/1019/131 +f 861/1021/133 866/2201/133 865/1022/133 +f 864/1024/13 863/1023/13 865/1022/13 +f 871/1013/134 872/2198/134 869/1026/134 +f 866/1028/135 870/2202/135 869/1029/135 +f 865/1022/136 869/2203/136 872/1031/136 +f 866/1016/137 867/2199/137 871/1032/137 +f 876/1034/133 880/1044/133 879/1035/133 +f 874/1037/11 879/2204/11 878/1038/11 +f 880/1040/138 884/2205/138 883/1041/138 +f 875/1043/13 877/1050/13 880/1044/13 +f 883/1041/139 884/2205/139 881/1045/139 +f 878/1047/140 882/2206/140 881/1048/140 +f 877/1050/141 881/2207/141 884/1051/141 +f 878/1038/142 879/2204/142 883/1052/142 +f 897/1054/139 902/2208/139 901/1055/139 +f 892/1057/143 896/1077/143 895/1058/143 +f 885/1060/11 886/2209/11 891/1061/11 +f 888/1063/139 892/2210/139 891/1064/139 +f 885/1066/134 890/1074/134 889/1067/134 +f 888/1069/13 887/2211/13 889/1070/13 +f 895/1058/131 896/1077/131 893/1072/131 +f 890/1074/144 894/2212/144 893/1075/144 +f 889/1076/145 893/1072/145 896/1077/145 +f 890/1062/146 891/1061/146 895/1078/146 +f 900/1080/134 904/2213/134 903/1081/134 +f 898/1083/11 903/2214/11 902/1084/11 +f 904/1086/147 908/1097/147 907/1087/147 +f 899/1089/13 901/1096/13 904/1086/13 +f 907/1087/133 908/1097/133 905/1091/133 +f 902/1093/148 906/2215/148 905/1094/148 +f 901/1096/149 905/1091/149 908/1097/149 +f 902/1084/150 903/2214/150 907/1098/150 +f 915/1100/151 916/2216/151 920/1101/151 +f 909/1103/152 910/2217/152 915/1104/152 +f 912/1106/38 916/2216/38 915/1100/38 +f 911/1108/35 909/2218/35 914/1109/35 +f 911/1111/153 913/1117/153 916/1112/153 +f 918/1114/154 919/1102/154 920/1101/154 +f 914/1109/155 918/2219/155 917/1116/155 +f 913/1117/156 917/2220/156 920/1118/156 +f 914/1105/157 915/1104/157 919/1119/157 +f 928/1121/158 932/2221/158 931/1122/158 +f 922/1124/159 927/2222/159 926/1125/159 +f 924/1127/34 928/2223/34 927/1128/34 +f 923/1130/32 921/2224/32 926/1131/32 +f 924/1133/160 923/1130/160 925/1132/160 +f 931/1122/161 932/2221/161 929/1135/161 +f 926/1137/162 930/2225/162 929/1138/162 +f 925/1132/163 929/2226/163 932/1140/163 +f 926/1125/164 927/2222/164 931/1141/164 +f 940/1143/165 944/2227/165 943/1144/165 +f 934/1146/166 939/2228/166 938/1147/166 +f 936/1149/29 940/1156/29 939/1150/29 +f 935/1152/31 933/2229/31 938/1153/31 +f 936/1149/167 935/2230/167 937/1155/167 +f 943/1144/168 944/2227/168 941/1157/168 +f 937/1154/169 938/1153/169 942/1159/169 +f 937/1155/170 941/2231/170 944/1161/170 +f 938/1147/171 939/2228/171 943/1162/171 +f 951/1164/172 952/1177/172 956/1165/172 +f 945/1167/173 946/2232/173 951/1168/173 +f 948/1170/37 952/2233/37 951/1171/37 +f 947/1173/28 945/2234/28 950/1174/28 +f 947/1176/174 949/1185/174 952/1177/174 +f 954/1179/175 955/2235/175 956/1180/175 +f 950/1182/176 954/2236/176 953/1183/176 +f 949/1185/341 953/2237/341 956/1165/341 +f 950/1169/178 951/1168/178 955/1186/178 +f 963/1188/179 964/1202/179 968/1189/179 +f 958/1191/180 963/2238/180 962/1192/180 +f 960/1194/33 964/2239/33 963/1195/33 +f 959/1197/36 957/2240/36 962/1198/36 +f 960/1200/181 959/2241/181 961/1201/181 +f 967/1190/182 968/1189/182 965/1203/182 +f 962/1198/183 966/2242/183 965/1205/183 +f 961/1201/184 965/1203/184 968/1189/184 +f 962/1192/185 963/2238/185 967/1206/185 +f 975/1208/186 976/2243/186 980/1209/186 +f 970/1211/187 975/2244/187 974/1212/187 +f 972/1214/27 976/2243/27 975/1208/27 +f 969/1216/30 974/2245/30 973/1217/30 +f 972/1219/188 971/2246/188 973/1220/188 +f 979/1222/189 980/1228/189 977/1223/189 +f 973/1217/190 974/2245/190 978/1225/190 +f 973/1227/191 977/1223/191 980/1228/191 +f 974/1212/192 975/2244/192 979/1230/192 +f 988/1232/193 992/1246/193 991/1233/193 +f 982/1235/194 987/2247/194 986/1236/194 +f 982/1238/35 984/2248/35 988/1232/35 +f 983/1239/38 981/2249/38 986/1240/38 +f 983/1242/195 985/2250/195 988/1243/195 +f 990/1245/196 991/1233/196 992/1246/196 +f 985/1241/197 986/1240/197 990/1248/197 +f 985/1250/198 989/2251/198 992/1251/198 +f 986/1236/199 987/2247/199 991/1253/199 +f 999/1255/200 1000/1273/200 1004/1256/200 +f 993/1258/201 994/2252/201 999/1259/201 +f 996/1261/32 1000/1268/32 999/1262/32 +f 995/1264/34 993/2253/34 998/1265/34 +f 995/1267/202 997/2254/202 1000/1268/202 +f 1003/1257/203 1004/1256/203 1001/1269/203 +f 998/1265/204 1002/2255/204 1001/1271/204 +f 997/1272/205 1001/1269/205 1004/1256/205 +f 998/1260/206 999/1259/206 1003/1274/206 +f 1012/1276/207 1016/1294/207 1015/1277/207 +f 1006/1279/208 1011/2256/208 1010/1280/208 +f 1008/1282/31 1012/2257/31 1011/1283/31 +f 1007/1285/29 1005/2258/29 1010/1286/29 +f 1008/1288/209 1007/1285/209 1009/1287/209 +f 1015/1277/210 1016/1294/210 1013/1290/210 +f 1010/1286/211 1014/2259/211 1013/1292/211 +f 1009/1293/212 1013/1290/212 1016/1294/212 +f 1010/1280/213 1011/2256/213 1015/1295/213 +f 1023/1297/214 1024/1319/214 1028/1298/214 +f 1018/1300/215 1023/2260/215 1022/1301/215 +f 1020/1303/28 1024/2261/28 1023/1304/28 +f 1019/1306/37 1017/2262/37 1022/1307/37 +f 1019/1309/216 1021/2263/216 1024/1310/216 +f 1027/1312/217 1028/2264/217 1025/1313/217 +f 1022/1315/218 1026/2265/218 1025/1316/218 +f 1021/1318/219 1025/2266/219 1028/1298/219 +f 1022/1301/220 1023/2260/220 1027/1320/220 +f 1036/1322/221 1040/1341/221 1039/1323/221 +f 1030/1325/222 1035/2267/222 1034/1326/222 +f 1032/1328/36 1036/2268/36 1035/1329/36 +f 1031/1331/33 1029/2269/33 1034/1332/33 +f 1031/1334/223 1033/2270/223 1036/1335/223 +f 1039/1323/224 1040/1341/224 1037/1337/224 +f 1034/1332/225 1038/2271/225 1037/1339/225 +f 1033/1340/226 1037/1337/226 1040/1341/226 +f 1034/1326/227 1035/2267/227 1039/1342/227 +f 1047/1344/228 1048/1358/228 1052/1345/228 +f 1042/1347/229 1047/2272/229 1046/1348/229 +f 1044/1350/14 1048/2273/14 1047/1351/14 +f 1043/1353/12 1041/2274/12 1046/1354/12 +f 1044/1356/230 1043/2275/230 1045/1357/230 +f 1051/1346/231 1052/1345/231 1049/1359/231 +f 1045/1355/232 1046/1354/232 1050/1361/232 +f 1045/1357/233 1049/1359/233 1052/1345/233 +f 1046/1348/234 1047/2272/234 1051/1363/234 +f 1059/1365/235 1060/1383/235 1064/1366/235 +f 1054/1368/236 1059/2276/236 1058/1369/236 +f 1056/1371/1 1060/2277/1 1059/1372/1 +f 1055/1374/2 1053/2278/2 1058/1375/2 +f 1055/1374/237 1057/1376/237 1060/1377/237 +f 1063/1367/238 1064/1366/238 1061/1379/238 +f 1058/1375/239 1062/2279/239 1061/1381/239 +f 1057/1382/240 1061/1379/240 1064/1366/240 +f 1058/1369/241 1059/2276/241 1063/1384/241 +f 1072/1386/242 1076/1404/242 1075/1387/242 +f 1066/1389/243 1071/2280/243 1070/1390/243 +f 1068/1392/2 1072/1399/2 1071/1393/2 +f 1067/1395/1 1065/2281/1 1070/1396/1 +f 1068/1392/244 1067/2282/244 1069/1398/244 +f 1075/1387/245 1076/1404/245 1073/1400/245 +f 1070/1396/246 1074/2283/246 1073/1402/246 +f 1069/1403/247 1073/1400/247 1076/1404/247 +f 1070/1390/248 1071/2280/248 1075/1405/248 +f 1083/1407/249 1084/2284/249 1088/1408/249 +f 1077/1410/250 1078/2285/250 1083/1411/250 +f 1080/1413/38 1084/2284/38 1083/1407/38 +f 1079/1415/35 1077/2286/35 1082/1416/35 +f 1079/1418/251 1081/1425/251 1084/1419/251 +f 1087/1409/252 1088/1408/252 1085/1421/252 +f 1081/1417/253 1082/1416/253 1086/1423/253 +f 1081/1425/254 1085/2287/254 1088/1426/254 +f 1082/1412/255 1083/1411/255 1087/1427/255 +f 1095/1429/256 1096/2288/256 1100/1430/256 +f 1090/1432/257 1095/2289/257 1094/1433/257 +f 1092/1435/35 1096/2288/35 1095/1429/35 +f 1091/1437/38 1089/2290/38 1094/1438/38 +f 1091/1440/258 1093/1446/258 1096/1441/258 +f 1098/1443/259 1099/1431/259 1100/1430/259 +f 1094/1438/260 1098/2291/260 1097/1445/260 +f 1093/1446/261 1097/2292/261 1100/1447/261 +f 1094/1433/262 1095/2289/262 1099/1448/262 +f 1108/1450/263 1112/1471/263 1111/1451/263 +f 1101/1453/264 1102/2293/264 1107/1454/264 +f 1104/1456/28 1108/2294/28 1107/1457/28 +f 1101/1459/37 1106/2295/37 1105/1460/37 +f 1103/1462/265 1105/1470/265 1108/1450/265 +f 1111/1464/266 1112/2296/266 1109/1465/266 +f 1105/1467/267 1106/2297/267 1110/1468/267 +f 1105/1470/268 1109/2298/268 1112/1471/268 +f 1106/1455/269 1107/1454/269 1111/1472/269 +f 1119/1474/270 1120/2299/270 1124/1475/270 +f 1113/1477/271 1114/2300/271 1119/1474/271 +f 1116/1479/37 1120/2301/37 1119/1480/37 +f 1115/1482/28 1113/2302/28 1118/1483/28 +f 1116/1485/272 1115/2303/272 1117/1486/272 +f 1123/1488/273 1124/2304/273 1121/1489/273 +f 1117/1491/274 1118/2305/274 1122/1492/274 +f 1117/1486/275 1121/2306/275 1124/1494/275 +f 1118/1478/276 1119/1474/276 1123/1476/276 +f 1132/1496/277 1136/1515/277 1135/1497/277 +f 1126/1499/278 1131/2307/278 1130/1500/278 +f 1128/1502/14 1132/2308/14 1131/1503/14 +f 1125/1505/12 1130/2309/12 1129/1506/12 +f 1127/1508/279 1129/1514/279 1132/1496/279 +f 1135/1497/280 1136/1515/280 1133/1510/280 +f 1129/1506/281 1130/2309/281 1134/1512/281 +f 1129/1514/282 1133/1510/282 1136/1515/282 +f 1130/1500/283 1131/2307/283 1135/1516/283 +f 1143/1518/284 1144/1538/284 1148/1519/284 +f 1138/1521/285 1143/2310/285 1142/1522/285 +f 1138/1524/131 1140/2311/131 1144/1525/131 +f 1137/1527/133 1142/2312/133 1141/1528/133 +f 1139/1529/286 1141/1528/286 1144/1530/286 +f 1147/1520/287 1148/1519/287 1145/1532/287 +f 1142/1534/288 1146/2313/288 1145/1535/288 +f 1141/1537/289 1145/1532/289 1148/1519/289 +f 1142/1522/290 1143/2310/290 1147/1539/290 +f 1156/1541/291 1160/1561/291 1159/1542/291 +f 1150/1544/292 1155/2314/292 1154/1545/292 +f 1152/1547/133 1156/2315/133 1155/1548/133 +f 1151/1550/131 1149/2316/131 1154/1551/131 +f 1152/1553/293 1151/1550/293 1153/1552/293 +f 1159/1542/294 1160/1561/294 1157/1555/294 +f 1154/1557/295 1158/2317/295 1157/1558/295 +f 1153/1560/296 1157/1555/296 1160/1561/296 +f 1154/1545/297 1155/2314/297 1159/1562/297 +f 1168/1564/298 1172/2318/298 1171/1565/298 +f 1162/1567/299 1167/2319/299 1166/1568/299 +f 1164/1570/119 1168/1564/119 1167/1566/119 +f 1161/1572/114 1166/1579/114 1165/1573/114 +f 1164/1570/300 1163/2320/300 1165/1575/300 +f 1171/1576/301 1172/1582/301 1169/1577/301 +f 1166/1579/302 1170/2321/302 1169/1580/302 +f 1165/1581/303 1169/1577/303 1172/1582/303 +f 1166/1568/304 1167/2319/304 1171/1584/304 +f 1179/1586/305 1180/2322/305 1184/1587/305 +f 1174/1589/306 1179/1586/306 1178/1590/306 +f 1176/1592/114 1180/1599/114 1179/1593/114 +f 1175/1595/119 1173/2323/119 1178/1596/119 +f 1176/1592/307 1175/2324/307 1177/1598/307 +f 1183/1600/308 1184/1605/308 1181/1601/308 +f 1178/1596/309 1182/2325/309 1181/1603/309 +f 1177/1604/310 1181/1601/310 1184/1605/310 +f 1178/1590/311 1179/1586/311 1183/1588/311 +f 1200/1608/23 1199/2326/23 1191/1609/23 +f 1198/1611/22 1197/2327/22 1189/1612/22 +f 1196/1614/21 1195/2328/21 1187/1615/21 +f 1194/1617/24 1193/2329/24 1185/1618/24 +f 1185/1618/19 1193/2329/19 1200/1620/19 +f 1191/1609/20 1199/2326/20 1198/1622/20 +f 1189/1612/17 1197/2327/17 1196/1624/17 +f 1187/1615/18 1195/2328/18 1194/1626/18 +f 1194/1640/11 1196/2330/11 1198/1641/11 +f 675/695/316 674/697/316 1206/1643/316 +f 671/700/317 1203/1660/317 1204/1645/317 +f 678/692/318 1210/1661/318 1211/1646/318 +f 675/1647/319 1207/2331/319 1208/1648/319 +f 673/705/320 672/698/320 1204/1645/320 +f 679/701/321 1211/1646/321 1212/1651/321 +f 669/686/322 1201/2332/322 1202/1653/322 +f 677/694/323 676/1649/323 1208/1648/323 +f 673/705/324 1205/1650/324 1206/1655/324 +f 680/1652/325 1212/1651/325 1201/1657/325 +f 670/1659/326 1202/2333/326 1203/1660/326 +f 677/694/327 1209/1654/327 1210/1661/327 +f 1203/1663/13 1202/2334/13 1211/1646/13 +f 1202/2334/13 1201/1657/13 1211/1646/13 +f 1201/1657/13 1212/1651/13 1211/1646/13 +f 1211/1646/13 1210/1661/13 1209/1654/13 +f 1209/1654/13 1208/1648/13 1207/2331/13 +f 1207/2331/13 1206/2335/13 1205/1662/13 +f 1205/1662/13 1204/2336/13 1203/1663/13 +f 1211/1646/13 1209/1654/13 1207/2331/13 +f 1207/2331/13 1205/1662/13 1211/1646/13 +f 1215/1664/12 1216/2337/12 1214/1665/12 +f 1219/1667/11 1223/2338/11 1222/1668/11 +f 1215/1670/13 1217/2339/13 1220/1671/13 +f 1214/1673/11 1219/1667/11 1218/1669/11 +f 1216/1672/2 1220/1671/2 1219/1675/2 +f 1213/1677/1 1218/1685/1 1217/1678/1 +f 1223/1680/14 1224/1688/14 1221/1681/14 +f 1219/1675/2 1220/1671/2 1224/1683/2 +f 1218/1685/1 1222/2340/1 1221/1686/1 +f 1217/1687/328 1221/1681/328 1224/1688/328 +f 1227/1690/12 1228/2341/12 1226/1691/12 +f 1231/1693/14 1232/2342/14 1229/1694/14 +f 1227/1696/13 1229/2343/13 1232/1697/13 +f 1226/1699/11 1231/2344/11 1230/1700/11 +f 1228/1698/2 1232/1697/2 1231/1702/2 +f 1225/1704/1 1230/2345/1 1229/1705/1 +f 1235/1707/12 1236/2346/12 1234/1708/12 +f 1239/1710/14 1240/2347/14 1237/1711/14 +f 1236/1713/2 1240/1720/2 1239/1714/2 +f 1233/1716/1 1238/2348/1 1237/1717/1 +f 1235/1719/13 1237/2349/13 1240/1720/13 +f 1234/1721/11 1239/2350/11 1238/1722/11 +f 1256/1724/13 1253/2351/13 1251/1725/13 +f 1254/1727/11 1255/2352/11 1250/1728/11 +f 1248/1730/13 1245/2353/13 1243/1731/13 +f 1246/1733/11 1247/2354/11 1242/1734/11 +f 1247/1736/2 1248/1730/2 1244/1732/2 +f 1245/1738/1 1246/2355/1 1241/1739/1 +f 1255/1741/2 1256/1724/2 1252/1726/2 +f 1253/1743/1 1254/2356/1 1249/1744/1 +f 1289/1746/11 1294/1805/11 1454/1747/11 +f 1292/1749/13 1296/1803/13 1450/1750/13 +f 1259/1752/13 1263/2357/13 1264/1753/13 +f 1258/1755/11 1262/2358/11 1261/1756/11 +f 1260/1754/2 1264/1753/2 1262/1758/2 +f 1257/1760/1 1261/2359/1 1263/1761/1 +f 1267/1763/13 1271/2360/13 1272/1764/13 +f 1266/1766/11 1270/2361/11 1269/1767/11 +f 1268/1765/2 1272/1764/2 1270/1769/2 +f 1265/1771/1 1269/2362/1 1271/1772/1 +f 1295/1774/14 1296/1925/14 1293/1775/14 +f 1291/1777/12 1292/1926/12 1290/1778/12 +f 1275/1780/13 1279/2363/13 1280/1781/13 +f 1274/1783/11 1278/2364/11 1277/1784/11 +f 1276/1782/2 1280/1781/2 1278/1786/2 +f 1273/1788/1 1277/2365/1 1279/1789/1 +f 1283/1791/13 1287/2366/13 1288/1792/13 +f 1282/1794/11 1286/2367/11 1285/1795/11 +f 1284/1793/2 1288/1792/2 1286/1797/2 +f 1281/1799/1 1285/2368/1 1287/1800/1 +f 1291/1802/13 1293/1936/13 1296/1803/13 +f 1290/1804/11 1295/1929/11 1294/1805/11 +f 1299/1806/12 1300/2369/12 1298/1807/12 +f 1303/1809/14 1304/2370/14 1301/1810/14 +f 1299/1812/13 1301/2371/13 1304/1813/13 +f 1298/1815/11 1303/2372/11 1302/1816/11 +f 1300/1814/2 1304/1813/2 1303/1818/2 +f 1297/1820/1 1302/2373/1 1301/1821/1 +f 1324/1823/11 1315/2374/11 1314/1824/11 +f 1322/1828/2 1325/2375/2 1326/1839/2 +f 1326/1839/2 1327/2376/2 1328/1826/2 +f 1328/1826/2 1323/2377/2 1324/1827/2 +f 1324/1827/2 1321/2378/2 1322/1828/2 +f 1322/1828/2 1326/1839/2 1328/1826/2 +f 1310/1829/12 1309/2379/12 1311/1830/12 +f 1319/1832/14 1316/1848/14 1323/1833/14 +f 1318/1837/1 1313/2380/1 1314/2381/1 +f 1314/2381/1 1315/2382/1 1316/1835/1 +f 1316/1835/1 1319/2383/1 1320/1836/1 +f 1320/1836/1 1317/2384/1 1318/1837/1 +f 1318/1837/1 1314/2381/1 1316/1835/1 +f 1320/1838/13 1327/2376/13 1326/1839/13 +f 1318/1841/15 1317/2385/15 1326/1842/15 +f 1328/1834/329 1327/2386/329 1320/1844/329 +f 1322/1845/16 1321/2387/16 1314/1846/16 +f 1316/1848/330 1315/2388/330 1324/1849/330 +f 1325/1843/12 1322/1845/12 1313/1847/12 +f 1305/1850/14 1306/2389/14 1308/1851/14 +f 1311/1853/11 1305/2390/11 1307/1854/11 +f 1312/1856/1 1307/2391/1 1308/1857/1 +f 1309/1859/2 1306/1863/2 1305/1860/2 +f 1310/1862/13 1308/2392/13 1306/1863/13 +f 1332/1864/329 1340/2393/329 1337/1865/329 +f 1335/1867/11 1336/2394/11 1333/1868/11 +f 1331/1866/14 1333/2395/14 1336/1870/14 +f 1330/1871/12 1335/2396/12 1334/1872/12 +f 1332/1874/2 1336/2397/2 1335/1875/2 +f 1329/1877/1 1334/2398/1 1333/1878/1 +f 1337/1880/13 1340/1884/13 1339/1881/13 +f 1329/1873/15 1338/2399/15 1339/1883/15 +f 1330/1876/331 1339/1881/331 1340/1884/331 +f 1331/1879/332 1337/2400/332 1338/1885/332 +f 1347/1886/11 1348/2401/11 1345/1887/11 +f 1341/1889/14 1345/2402/14 1348/1890/14 +f 1343/1892/12 1347/2403/12 1346/1893/12 +f 1344/1895/2 1348/2404/2 1347/1896/2 +f 1342/1898/1 1346/2405/1 1345/1899/1 +f 1356/1901/333 1354/2406/333 1350/1902/333 +f 1353/1904/334 1355/2407/334 1351/1905/334 +f 1351/1907/13 1355/2408/13 1356/1901/13 +f 1354/1908/11 1353/2409/11 1349/1909/11 +f 1364/1911/335 1362/2410/335 1358/1912/335 +f 1361/1914/336 1363/2411/336 1359/1915/336 +f 1363/1917/13 1364/1911/13 1360/1913/13 +f 1358/1919/11 1362/2412/11 1361/1920/11 +f 1448/1751/2 1450/1750/2 1449/1922/2 +f 1295/1774/337 1449/2413/337 1450/1924/337 +f 1292/1926/338 1448/2414/338 1447/1927/338 +f 1290/1804/11 1447/2415/11 1449/1928/11 +f 1452/1930/1 1454/2416/1 1453/1931/1 +f 1293/1775/339 1453/2417/339 1454/1933/339 +f 1289/1779/340 1452/2418/340 1451/1934/340 +f 1291/1802/13 1451/2419/13 1453/1935/13 +f 1496/1938/14 1495/2420/14 1499/1939/14 +f 1495/2420/14 1497/2421/14 1499/1939/14 +f 1497/2421/14 1498/2422/14 1499/1939/14 +f 1499/1939/14 1500/2423/14 1501/2424/14 +f 1501/2424/14 1502/1937/14 1499/1939/14 +f 1488/1942/14 1487/2425/14 1489/2426/14 +f 1489/2426/14 1490/2427/14 1491/1940/14 +f 1491/1940/14 1492/2428/14 1493/1941/14 +f 1493/1941/14 1494/2429/14 1488/1942/14 +f 1488/1942/14 1489/2426/14 1491/1940/14 +s 1 +f 364/2430/15 371/2431/342 363/2432/12 +f 362/2433/16 369/2434/343 361/2435/11 +f 360/2436/330 367/2437/344 359/2438/14 +f 358/2439/329 365/2440/345 357/2441/13 +f 357/2441/13 372/2442/346 364/2443/15 +f 363/2432/12 370/2444/347 362/2445/16 +f 361/2435/11 368/2446/348 360/2447/330 +f 359/2438/14 366/2448/349 358/2449/329 +f 365/2440/345 379/2450/350 372/2442/346 +f 370/2444/347 378/2451/351 377/2452/352 +f 367/2437/344 374/2453/353 366/2448/349 +f 371/2431/342 379/2454/350 378/2451/351 +f 368/2455/348 375/2456/354 367/2437/344 +f 365/2440/345 374/2457/353 373/2458/331 +f 379/2454/350 385/2459/355 378/2451/351 +f 375/2456/354 383/2460/356 382/2461/357 +f 374/2457/353 380/2462/358 373/2458/331 +f 379/2450/350 380/2462/358 386/2463/359 +f 378/2451/351 384/2464/360 377/2452/352 +f 374/2453/353 382/2461/357 381/2465/361 +f 368/2446/348 369/2434/343 376/2466/362 +f 376/2467/362 369/2468/343 383/2469/356 +f 370/2470/347 377/2471/352 369/2434/343 +f 377/2472/352 384/2473/360 369/2468/343 +f 383/2460/356 390/2474/329 382/2461/357 +f 381/2475/361 388/2476/363 380/2462/358 +f 384/2473/360 387/2477/364 369/2468/343 +f 380/2462/358 394/2478/365 386/2463/359 +f 369/2468/343 391/2479/366 383/2469/356 +f 385/2459/355 392/2480/367 384/2464/360 +f 382/2461/357 389/2481/368 381/2465/361 +f 386/2482/359 393/2483/369 385/2459/355 +f 392/2484/367 395/2485/370 387/2477/364 +f 394/2478/365 396/2486/371 401/2487/372 +f 393/2483/369 399/2488/373 392/2480/367 +f 387/2477/364 398/2489/374 391/2479/366 +f 394/2490/365 400/2491/16 393/2483/369 +f 388/2476/363 397/2492/375 396/2486/371 +f 401/2493/372 407/2494/376 400/2495/16 +f 397/2492/375 403/2496/377 396/2486/371 +f 395/2485/370 406/2497/378 402/2498/379 +f 396/2499/371 408/2500/380 401/2493/372 +f 399/2501/373 407/2494/376 406/2502/378 +f 395/2485/370 405/2503/381 398/2489/374 +f 391/2504/366 398/2505/374 390/2474/329 +f 398/2489/374 405/2503/381 390/2506/329 +f 389/2481/368 390/2474/329 397/2507/375 +f 397/2492/375 390/2508/329 404/2509/382 +f 403/2496/377 412/2510/383 411/2511/384 +f 390/2508/329 412/2510/383 404/2509/382 +f 406/2497/378 410/2512/1 402/2498/379 +f 390/2506/329 413/2513/385 409/2514/386 +f 403/2515/377 416/2516/387 408/2500/380 +f 406/2502/378 415/2517/388 414/2518/389 +f 402/2498/379 413/2513/385 405/2503/381 +f 408/2500/380 415/2517/388 407/2494/376 +f 416/2519/387 418/2520/35 423/2521/390 +f 414/2518/389 422/2522/391 421/2523/392 +f 413/2513/385 417/2524/393 409/2514/386 +f 415/2517/388 423/2525/390 422/2522/391 +f 412/2510/383 418/2526/35 411/2511/384 +f 409/2527/386 419/2528/394 412/2510/383 +f 419/2529/394 425/2530/19 418/2520/35 +f 419/2528/394 424/2531/395 426/2532/396 +f 423/2521/390 425/2530/19 430/2533/397 +f 421/2523/392 429/2534/398 428/2535/399 +f 420/2536/400 424/2531/395 417/2537/393 +f 422/2522/391 430/2538/397 429/2534/398 +f 438/2539/15 445/2540/342 437/2541/12 +f 436/2542/16 443/2543/343 435/2544/11 +f 434/2545/330 441/2546/344 433/2547/14 +f 432/2548/329 439/2549/345 431/2550/13 +f 431/2550/13 446/2551/346 438/2552/15 +f 437/2541/12 444/2553/347 436/2554/16 +f 435/2544/11 442/2555/348 434/2556/330 +f 433/2547/14 440/2557/349 432/2558/329 +f 439/2549/345 453/2559/350 446/2551/346 +f 444/2553/347 452/2560/351 451/2561/352 +f 441/2546/344 448/2562/353 440/2557/349 +f 445/2540/342 453/2563/350 452/2560/351 +f 442/2564/348 449/2565/354 441/2546/344 +f 440/2566/349 447/2567/331 439/2549/345 +f 453/2563/350 459/2568/355 452/2560/351 +f 449/2565/354 457/2569/356 456/2570/357 +f 448/2571/353 454/2572/358 447/2567/331 +f 447/2567/331 460/2573/359 453/2559/350 +f 452/2560/351 458/2574/360 451/2561/352 +f 448/2562/353 456/2570/357 455/2575/361 +f 442/2555/348 443/2543/343 450/2576/362 +f 450/2577/362 443/2578/343 457/2579/356 +f 444/2580/347 451/2581/352 443/2543/343 +f 451/2582/352 458/2583/360 443/2578/343 +f 457/2569/356 464/2584/329 456/2570/357 +f 455/2585/361 462/2586/363 454/2572/358 +f 458/2583/360 461/2587/364 443/2578/343 +f 454/2572/358 468/2588/365 460/2573/359 +f 443/2578/343 465/2589/366 457/2579/356 +f 459/2568/355 466/2590/367 458/2574/360 +f 456/2570/357 463/2591/368 455/2575/361 +f 460/2592/359 467/2593/369 459/2568/355 +f 466/2594/367 469/2595/370 461/2587/364 +f 468/2588/365 470/2596/371 475/2597/372 +f 466/2590/367 474/2598/16 473/2599/373 +f 461/2587/364 472/2600/374 465/2589/366 +f 468/2601/365 474/2598/16 467/2593/369 +f 462/2586/363 471/2602/375 470/2596/371 +f 475/2603/372 481/2604/376 474/2605/16 +f 470/2596/371 478/2606/382 477/2607/377 +f 469/2595/370 480/2608/378 476/2609/379 +f 470/2610/371 482/2611/380 475/2603/372 +f 473/2612/373 481/2604/376 480/2613/378 +f 469/2595/370 479/2614/381 472/2600/374 +f 465/2615/366 472/2616/374 464/2584/329 +f 472/2600/374 479/2614/381 464/2617/329 +f 463/2591/368 464/2584/329 471/2618/375 +f 471/2602/375 464/2619/329 478/2606/382 +f 477/2607/377 486/2620/383 485/2621/384 +f 464/2619/329 486/2620/383 478/2606/382 +f 476/2609/379 488/2622/401 484/2623/1 +f 479/2614/381 483/2624/386 464/2617/329 +f 477/2625/377 490/2626/387 482/2611/380 +f 480/2613/378 489/2627/388 488/2628/401 +f 476/2609/379 487/2629/402 479/2614/381 +f 482/2611/380 489/2627/388 481/2604/376 +f 490/2630/387 492/2631/35 497/2632/390 +f 488/2628/401 496/2633/391 495/2634/392 +f 487/2629/402 491/2635/393 483/2624/386 +f 489/2627/388 497/2636/390 496/2633/391 +f 486/2620/383 492/2637/35 485/2621/384 +f 483/2638/386 493/2639/394 486/2620/383 +f 493/2640/394 499/2641/19 492/2631/35 +f 491/2642/393 500/2643/396 493/2639/394 +f 497/2632/390 499/2641/19 504/2644/397 +f 496/2633/391 502/2645/399 495/2634/392 +f 491/2642/393 501/2646/403 498/2647/395 +f 496/2633/391 504/2648/397 503/2649/398 +f 527/2650/404 520/2651/15 519/2652/12 +f 525/2653/405 518/2654/16 517/2655/11 +f 523/2656/406 516/2657/330 515/2658/14 +f 521/2659/407 514/2660/329 513/2661/13 +f 528/2662/408 513/2661/13 520/2663/15 +f 526/2664/409 519/2652/12 518/2665/16 +f 524/2666/410 517/2655/11 516/2667/330 +f 522/2668/411 515/2658/14 514/2669/329 +f 535/2670/412 521/2671/407 528/2672/408 +f 526/2664/409 534/2673/413 527/2650/404 +f 530/2674/414 523/2656/406 522/2668/411 +f 527/2650/404 535/2675/412 528/2676/408 +f 531/2677/415 524/2678/410 523/2656/406 +f 529/2679/332 522/2680/411 521/2671/407 +f 541/2681/416 535/2675/412 534/2673/413 +f 531/2677/415 539/2682/417 532/2683/418 +f 536/2684/419 530/2685/414 529/2679/332 +f 535/2670/412 536/2684/419 529/2679/332 +f 540/2686/420 534/2673/413 533/2687/421 +f 530/2674/414 538/2688/422 531/2677/415 +f 524/2666/410 532/2689/418 525/2653/405 +f 532/2683/418 539/2682/417 525/2690/405 +f 526/2691/409 525/2653/405 533/2692/421 +f 533/2687/421 525/2693/405 540/2686/420 +f 546/2694/329 539/2682/417 538/2688/422 +f 544/2695/364 537/2696/423 536/2684/419 +f 543/2697/363 540/2698/420 525/2699/405 +f 550/2700/367 536/2684/419 542/2701/424 +f 547/2702/368 525/2699/405 539/2703/417 +f 548/2704/365 541/2681/416 540/2686/420 +f 545/2705/366 538/2688/422 537/2706/423 +f 549/2707/369 542/2708/424 541/2681/416 +f 551/2709/371 548/2710/365 543/2697/363 +f 550/2700/367 552/2711/370 544/2695/364 +f 555/2712/372 549/2707/369 548/2704/365 +f 554/2713/375 543/2697/363 547/2702/368 +f 556/2714/16 550/2715/367 549/2707/369 +f 544/2695/364 553/2716/374 545/2717/366 +f 563/2718/376 557/2719/373 556/2720/16 +f 559/2721/379 553/2716/374 552/2711/370 +f 551/2722/371 562/2723/380 555/2724/372 +f 564/2725/378 552/2711/370 557/2726/373 +f 555/2724/372 563/2718/376 556/2720/16 +f 554/2713/375 558/2727/377 551/2709/371 +f 547/2728/368 546/2694/329 554/2729/375 +f 554/2713/375 546/2730/329 561/2731/382 +f 545/2705/366 553/2732/374 546/2694/329 +f 553/2716/374 560/2733/381 546/2734/329 +f 559/2721/379 568/2735/425 560/2733/381 +f 568/2735/425 546/2734/329 560/2733/381 +f 566/2736/2 562/2723/380 558/2737/377 +f 546/2730/329 569/2738/426 561/2731/382 +f 572/2739/427 559/2721/379 564/2725/378 +f 562/2723/380 571/2740/428 563/2718/376 +f 569/2738/426 558/2727/377 561/2731/382 +f 571/2740/428 564/2741/378 563/2718/376 +f 572/2739/427 574/2742/28 567/2743/429 +f 570/2744/430 578/2745/431 571/2740/428 +f 573/2746/432 569/2738/426 565/2747/433 +f 571/2740/428 579/2748/434 572/2749/427 +f 574/2742/28 568/2735/425 567/2743/429 +f 575/2750/435 565/2751/433 568/2735/425 +f 574/2752/28 582/2753/436 575/2754/435 +f 582/2755/436 573/2746/432 575/2756/435 +f 586/2757/437 574/2752/28 579/2758/434 +f 577/2759/438 585/2760/439 578/2745/431 +f 580/2761/440 576/2762/441 573/2746/432 +f 578/2745/431 586/2763/437 579/2748/434 +f 601/2764/404 594/2765/15 593/2766/12 +f 599/2767/405 592/2768/16 591/2769/11 +f 597/2770/406 590/2771/330 589/2772/14 +f 595/2773/407 588/2774/329 587/2775/13 +f 602/2776/408 587/2775/13 594/2777/15 +f 600/2778/409 593/2766/12 592/2779/16 +f 598/2780/410 591/2769/11 590/2781/330 +f 596/2782/411 589/2772/14 588/2783/329 +f 609/2784/412 595/2785/407 602/2786/408 +f 600/2778/409 608/2787/413 601/2764/404 +f 604/2788/414 597/2770/406 596/2782/411 +f 601/2764/404 609/2789/412 602/2790/408 +f 605/2791/415 598/2792/410 597/2770/406 +f 603/2793/332 596/2794/411 595/2785/407 +f 615/2795/416 609/2789/412 608/2787/413 +f 605/2791/415 613/2796/417 606/2797/418 +f 610/2798/419 604/2799/414 603/2793/332 +f 609/2784/412 610/2798/419 603/2793/332 +f 614/2800/420 608/2787/413 607/2801/421 +f 604/2788/414 612/2802/422 605/2791/415 +f 598/2780/410 606/2803/418 599/2767/405 +f 606/2797/418 613/2796/417 599/2804/405 +f 600/2805/409 599/2767/405 607/2806/421 +f 607/2801/421 599/2807/405 614/2800/420 +f 620/2808/329 613/2796/417 612/2802/422 +f 618/2809/364 611/2810/423 610/2798/419 +f 617/2811/363 614/2812/420 599/2813/405 +f 624/2814/367 610/2798/419 616/2815/424 +f 621/2816/368 599/2813/405 613/2817/417 +f 622/2818/365 615/2795/416 614/2800/420 +f 619/2819/366 612/2802/422 611/2820/423 +f 623/2821/369 616/2822/424 615/2795/416 +f 625/2823/371 622/2824/365 617/2811/363 +f 624/2814/367 626/2825/370 618/2809/364 +f 622/2818/365 630/2826/16 623/2821/369 +f 628/2827/375 617/2811/363 621/2816/368 +f 623/2821/369 631/2828/373 624/2829/367 +f 618/2809/364 627/2830/374 619/2831/366 +f 637/2832/376 631/2833/373 630/2834/16 +f 633/2835/379 627/2830/374 626/2825/370 +f 625/2836/371 636/2837/380 629/2838/372 +f 638/2839/378 626/2825/370 631/2840/373 +f 629/2838/372 637/2832/376 630/2834/16 +f 635/2841/382 625/2823/371 628/2827/375 +f 621/2842/368 620/2808/329 628/2843/375 +f 628/2827/375 620/2844/329 635/2841/382 +f 619/2819/366 627/2845/374 620/2808/329 +f 627/2830/374 634/2846/381 620/2847/329 +f 633/2835/379 642/2848/425 634/2846/381 +f 642/2848/425 620/2847/329 634/2846/381 +f 632/2849/377 644/2850/442 636/2837/380 +f 639/2851/433 635/2841/382 620/2844/329 +f 646/2852/427 633/2835/379 638/2839/378 +f 636/2837/380 645/2853/428 637/2832/376 +f 643/2854/443 632/2855/377 635/2841/382 +f 645/2853/428 638/2856/378 637/2832/376 +f 646/2852/427 648/2857/28 641/2858/429 +f 651/2859/438 645/2853/428 644/2850/442 +f 647/2860/432 643/2854/443 639/2851/433 +f 645/2853/428 653/2861/434 646/2862/427 +f 648/2857/28 642/2848/425 641/2858/429 +f 649/2863/435 639/2864/433 642/2848/425 +f 648/2865/28 656/2866/436 649/2867/435 +f 649/2868/435 654/2869/440 647/2860/432 +f 660/2870/437 648/2865/28 653/2871/434 +f 651/2859/438 659/2872/439 652/2873/431 +f 654/2869/440 650/2874/441 647/2860/432 +f 652/2873/431 660/2875/437 653/2861/434 +f 1377/2876/444 1370/2877/16 1369/2878/11 +f 1375/2879/445 1368/2880/330 1367/2881/14 +f 1373/2882/446 1366/2883/329 1365/2884/13 +f 1380/2885/447 1365/2884/13 1372/2886/15 +f 1378/2887/448 1371/2888/12 1370/2889/16 +f 1376/2890/449 1369/2878/11 1368/2891/330 +f 1374/2892/450 1367/2881/14 1366/2893/329 +f 1379/2894/37 1372/2895/15 1371/2888/12 +f 1380/2885/447 1381/2896/432 1373/2882/446 +f 1377/2876/444 1384/2897/434 1385/2898/431 +f 1375/2879/445 1382/2899/435 1383/2900/28 +f 1378/2901/448 1385/2898/431 1386/2902/451 +f 1376/2903/449 1383/2900/28 1384/2904/434 +f 1374/2905/450 1381/2896/432 1382/2906/435 +f 1386/2902/451 1392/2907/428 1393/2908/452 +f 1384/2909/434 1390/2910/429 1391/2911/427 +f 1381/2912/432 1389/2913/425 1382/2914/435 +f 1387/2915/453 1388/2916/433 1381/2896/432 +f 1384/2897/434 1392/2907/428 1385/2898/431 +f 1382/2914/435 1390/2910/429 1383/2917/28 +f 1379/2894/37 1387/2918/453 1380/2919/447 +f 1387/2915/453 1379/2920/37 1394/2921/454 +f 1378/2887/448 1386/2922/451 1379/2894/37 +f 1386/2922/451 1393/2923/452 1379/2894/37 +f 1390/2910/429 1399/2924/455 1391/2911/427 +f 1388/2925/433 1397/2926/456 1389/2913/425 +f 1393/2908/452 1395/2927/457 1379/2928/37 +f 1394/2921/454 1396/2929/458 1388/2916/433 +f 1379/2920/37 1402/2930/459 1394/2921/454 +f 1391/2931/427 1400/2932/330 1392/2907/428 +f 1389/2913/425 1398/2933/460 1390/2910/429 +f 1392/2907/428 1401/2934/461 1393/2908/452 +f 1395/2927/457 1408/2935/462 1403/2936/463 +f 1402/2930/459 1404/2937/15 1396/2929/458 +f 1397/2926/456 1406/2938/464 1398/2933/460 +f 1395/2939/457 1409/2940/465 1402/2930/459 +f 1398/2933/460 1407/2941/466 1399/2924/455 +f 1396/2942/458 1405/2943/467 1397/2926/456 +f 1407/2941/466 1413/2944/468 1414/2945/469 +f 1405/2946/467 1411/2947/470 1412/2948/471 +f 1403/2949/463 1415/2950/472 1410/2951/473 +f 1409/2952/465 1411/2947/470 1404/2953/15 +f 1406/2938/464 1412/2954/471 1413/2944/468 +f 1403/2949/463 1416/2955/474 1409/2940/465 +f 1399/2956/455 1407/2957/466 1400/2932/330 +f 1407/2958/466 1414/2959/469 1400/2960/330 +f 1400/2932/330 1408/2935/462 1401/2934/461 +f 1408/2961/462 1400/2960/330 1415/2962/472 +f 1411/2947/470 1420/2963/475 1412/2948/471 +f 1400/2960/330 1423/2964/476 1415/2962/472 +f 1415/2950/472 1418/2965/331 1410/2951/473 +f 1414/2959/469 1417/2966/477 1400/2960/330 +f 1416/2967/474 1419/2968/478 1411/2947/470 +f 1412/2954/471 1421/2969/479 1413/2944/468 +f 1410/2951/473 1424/2970/480 1416/2955/474 +f 1413/2944/468 1422/2971/481 1414/2945/469 +f 1424/2972/480 1426/2973/482 1419/2968/478 +f 1420/2974/475 1428/2975/343 1421/2969/479 +f 1422/2976/481 1425/2977/483 1417/2966/477 +f 1421/2969/479 1429/2978/484 1422/2971/481 +f 1420/2963/475 1426/2973/482 1427/2979/485 +f 1417/2966/477 1430/2980/486 1423/2964/476 +f 1426/2973/482 1434/2981/487 1427/2979/485 +f 1425/2977/483 1437/2982/488 1430/2980/486 +f 1431/2983/489 1433/2984/490 1426/2973/482 +f 1427/2985/485 1435/2986/491 1428/2987/343 +f 1425/2977/483 1436/2988/492 1432/2989/493 +f 1429/2990/484 1435/2986/491 1436/2991/492 +f 1423/2992/476 1430/2993/486 1418/2965/331 +f 1430/2993/486 1437/2994/488 1418/2965/331 +f 1418/2965/331 1431/2995/489 1424/2970/480 +f 1431/2995/489 1418/2965/331 1438/2996/494 +f 1418/2965/331 1446/2997/15 1438/2996/494 +f 1432/2989/493 1445/2998/329 1437/2982/488 +f 1437/2994/488 1439/2999/13 1418/2965/331 +f 1438/3000/494 1441/3001/12 1433/2984/490 +f 1434/3002/487 1443/3003/11 1435/2986/491 +f 1436/2988/492 1440/3004/14 1432/2989/493 +f 1435/2986/491 1444/3005/330 1436/2991/492 +f 1433/2984/490 1442/3006/16 1434/2981/487 +f 1479/3007/13 1470/3008/331 1463/3009/13 +f 1480/3010/332 1463/3011/13 1464/3012/332 +f 1473/3013/1 1456/3014/332 1457/3015/1 +f 1481/3016/1 1464/3012/332 1465/3017/1 +f 1474/3018/343 1457/3015/1 1458/3019/343 +f 1482/3020/343 1465/3017/1 1466/3021/343 +f 1475/3022/11 1458/3023/343 1459/3024/11 +f 1483/3025/11 1466/3026/343 1467/3027/11 +f 1476/3028/405 1459/3024/11 1460/3029/405 +f 1484/3030/405 1467/3027/11 1468/3031/405 +f 1477/3032/2 1460/3029/405 1461/3033/2 +f 1485/3034/2 1468/3031/405 1469/3035/2 +f 1478/3036/331 1461/3037/2 1462/3038/331 +f 1486/3039/331 1469/3040/2 1470/3008/331 +f 1471/3041/13 1462/3038/331 1455/3042/13 +f 1472/3043/332 1455/3044/13 1456/3014/332 +f 1471/3041/329 1494/3045/495 1478/3036/495 +f 1485/3046/35 1502/1937/495 1501/2424/35 +f 1471/3047/329 1487/2425/496 1488/1942/329 +f 1479/3007/329 1502/3048/495 1486/3039/495 +f 1480/3049/496 1496/1938/329 1479/3050/329 +f 1473/3013/28 1487/3051/496 1472/3043/496 +f 1480/3010/496 1497/3052/28 1495/3053/496 +f 1473/3054/28 1490/2427/497 1489/2426/28 +f 1482/3055/497 1497/2421/28 1481/3056/28 +f 1475/3057/330 1490/2427/497 1474/3058/497 +f 1483/3059/330 1498/2422/497 1482/3055/497 +f 1475/3057/330 1492/2428/498 1491/1940/330 +f 1483/3059/330 1500/2423/498 1499/1939/330 +f 1477/3060/35 1492/2428/498 1476/3061/498 +f 1485/3046/35 1500/2423/498 1484/3062/498 +f 1477/3060/35 1494/2429/495 1493/1941/35 +f 364/2430/15 372/3063/346 371/2431/342 +f 362/2433/16 370/2470/347 369/2434/343 +f 360/2436/330 368/2455/348 367/2437/344 +f 358/2439/329 366/3064/349 365/2440/345 +f 357/2441/13 365/2440/345 372/2442/346 +f 363/2432/12 371/2431/342 370/2444/347 +f 361/2435/11 369/2434/343 368/2446/348 +f 359/2438/14 367/2437/344 366/2448/349 +f 365/2440/345 373/2458/331 379/2450/350 +f 370/2444/347 371/2431/342 378/2451/351 +f 367/2437/344 375/2456/354 374/2453/353 +f 371/2431/342 372/3063/346 379/2454/350 +f 368/2455/348 376/3065/362 375/2456/354 +f 365/2440/345 366/3064/349 374/2457/353 +f 379/2454/350 386/2482/359 385/2459/355 +f 375/2456/354 376/3065/362 383/2460/356 +f 374/2457/353 381/2475/361 380/2462/358 +f 379/2450/350 373/2458/331 380/2462/358 +f 378/2451/351 385/2459/355 384/2464/360 +f 374/2453/353 375/2456/354 382/2461/357 +f 383/2460/356 391/2504/366 390/2474/329 +f 381/2475/361 389/3066/368 388/2476/363 +f 384/2473/360 392/2484/367 387/2477/364 +f 380/2462/358 388/2476/363 394/2478/365 +f 369/2468/343 387/2477/364 391/2479/366 +f 385/2459/355 393/2483/369 392/2480/367 +f 382/2461/357 390/2474/329 389/2481/368 +f 386/2482/359 394/2490/365 393/2483/369 +f 392/2484/367 399/3067/373 395/2485/370 +f 394/2478/365 388/2476/363 396/2486/371 +f 393/2483/369 400/2491/16 399/2488/373 +f 387/2477/364 395/2485/370 398/2489/374 +f 394/2490/365 401/3068/372 400/2491/16 +f 388/2476/363 389/3066/368 397/2492/375 +f 401/2493/372 408/2500/380 407/2494/376 +f 397/2492/375 404/2509/382 403/2496/377 +f 395/2485/370 399/3067/373 406/2497/378 +f 396/2499/371 403/2515/377 408/2500/380 +f 399/2501/373 400/2495/16 407/2494/376 +f 395/2485/370 402/2498/379 405/2503/381 +f 403/2496/377 404/2509/382 412/2510/383 +f 390/2508/329 409/2527/386 412/2510/383 +f 406/2497/378 414/3069/389 410/2512/1 +f 390/2506/329 405/2503/381 413/2513/385 +f 403/2515/377 411/3070/384 416/2516/387 +f 406/2502/378 407/2494/376 415/2517/388 +f 402/2498/379 410/2512/1 413/2513/385 +f 408/2500/380 416/2516/387 415/2517/388 +f 416/2519/387 411/3071/384 418/2520/35 +f 414/2518/389 415/2517/388 422/2522/391 +f 413/2513/385 420/3072/400 417/2524/393 +f 415/2517/388 416/2516/387 423/2525/390 +f 412/2510/383 419/2528/394 418/2526/35 +f 409/2527/386 417/2537/393 419/2528/394 +f 419/2529/394 426/3073/396 425/2530/19 +f 419/2528/394 417/2537/393 424/2531/395 +f 423/2521/390 418/2520/35 425/2530/19 +f 421/2523/392 422/2522/391 429/2534/398 +f 420/2536/400 427/3074/403 424/2531/395 +f 422/2522/391 423/2525/390 430/2538/397 +f 438/2539/15 446/3075/346 445/2540/342 +f 436/2542/16 444/2580/347 443/2543/343 +f 434/2545/330 442/2564/348 441/2546/344 +f 432/2548/329 440/2566/349 439/2549/345 +f 431/2550/13 439/2549/345 446/2551/346 +f 437/2541/12 445/2540/342 444/2553/347 +f 435/2544/11 443/2543/343 442/2555/348 +f 433/2547/14 441/2546/344 440/2557/349 +f 439/2549/345 447/2567/331 453/2559/350 +f 444/2553/347 445/2540/342 452/2560/351 +f 441/2546/344 449/2565/354 448/2562/353 +f 445/2540/342 446/3075/346 453/2563/350 +f 442/2564/348 450/3076/362 449/2565/354 +f 440/2566/349 448/2571/353 447/2567/331 +f 453/2563/350 460/2592/359 459/2568/355 +f 449/2565/354 450/3076/362 457/2569/356 +f 448/2571/353 455/2585/361 454/2572/358 +f 447/2567/331 454/2572/358 460/2573/359 +f 452/2560/351 459/2568/355 458/2574/360 +f 448/2562/353 449/2565/354 456/2570/357 +f 457/2569/356 465/2615/366 464/2584/329 +f 455/2585/361 463/3077/368 462/2586/363 +f 458/2583/360 466/2594/367 461/2587/364 +f 454/2572/358 462/2586/363 468/2588/365 +f 443/2578/343 461/2587/364 465/2589/366 +f 459/2568/355 467/2593/369 466/2590/367 +f 456/2570/357 464/2584/329 463/2591/368 +f 460/2592/359 468/2601/365 467/2593/369 +f 466/2594/367 473/3078/373 469/2595/370 +f 468/2588/365 462/2586/363 470/2596/371 +f 466/2590/367 467/2593/369 474/2598/16 +f 461/2587/364 469/2595/370 472/2600/374 +f 468/2601/365 475/3079/372 474/2598/16 +f 462/2586/363 463/3077/368 471/2602/375 +f 475/2603/372 482/2611/380 481/2604/376 +f 470/2596/371 471/2602/375 478/2606/382 +f 469/2595/370 473/3078/373 480/2608/378 +f 470/2610/371 477/2625/377 482/2611/380 +f 473/2612/373 474/2605/16 481/2604/376 +f 469/2595/370 476/2609/379 479/2614/381 +f 477/2607/377 478/2606/382 486/2620/383 +f 464/2619/329 483/2638/386 486/2620/383 +f 476/2609/379 480/2608/378 488/2622/401 +f 479/2614/381 487/2629/402 483/2624/386 +f 477/2625/377 485/3080/384 490/2626/387 +f 480/2613/378 481/2604/376 489/2627/388 +f 476/2609/379 484/2623/1 487/2629/402 +f 482/2611/380 490/2626/387 489/2627/388 +f 490/2630/387 485/3081/384 492/2631/35 +f 488/2628/401 489/2627/388 496/2633/391 +f 487/2629/402 494/3082/400 491/2635/393 +f 489/2627/388 490/2626/387 497/2636/390 +f 486/2620/383 493/2639/394 492/2637/35 +f 483/2638/386 491/2642/393 493/2639/394 +f 493/2640/394 500/3083/396 499/2641/19 +f 491/2642/393 498/2647/395 500/2643/396 +f 497/2632/390 492/2631/35 499/2641/19 +f 496/2633/391 503/2649/398 502/2645/399 +f 491/2642/393 494/3084/400 501/2646/403 +f 496/2633/391 497/2636/390 504/2648/397 +f 527/2650/404 528/2676/408 520/2651/15 +f 525/2653/405 526/2691/409 518/2654/16 +f 523/2656/406 524/2678/410 516/2657/330 +f 521/2659/407 522/3085/411 514/2660/329 +f 528/2662/408 521/2659/407 513/2661/13 +f 526/2664/409 527/2650/404 519/2652/12 +f 524/2666/410 525/2653/405 517/2655/11 +f 522/2668/411 523/2656/406 515/2658/14 +f 535/2670/412 529/2679/332 521/2671/407 +f 526/2664/409 533/2687/421 534/2673/413 +f 530/2674/414 531/2677/415 523/2656/406 +f 527/2650/404 534/2673/413 535/2675/412 +f 531/2677/415 532/2683/418 524/2678/410 +f 529/2679/332 530/2685/414 522/2680/411 +f 541/2681/416 542/2708/424 535/2675/412 +f 531/2677/415 538/2688/422 539/2682/417 +f 536/2684/419 537/2696/423 530/2685/414 +f 535/2670/412 542/2701/424 536/2684/419 +f 540/2686/420 541/2681/416 534/2673/413 +f 530/2674/414 537/2706/423 538/2688/422 +f 546/2694/329 547/2728/368 539/2682/417 +f 544/2695/364 545/2717/366 537/2696/423 +f 543/2697/363 548/2710/365 540/2698/420 +f 550/2700/367 544/2695/364 536/2684/419 +f 547/2702/368 543/2697/363 525/2699/405 +f 548/2704/365 549/2707/369 541/2681/416 +f 545/2705/366 546/2694/329 538/2688/422 +f 549/2707/369 550/2715/367 542/2708/424 +f 551/2709/371 555/3086/372 548/2710/365 +f 550/2700/367 557/2726/373 552/2711/370 +f 555/2712/372 556/2714/16 549/2707/369 +f 554/2713/375 551/2709/371 543/2697/363 +f 556/2714/16 557/3087/373 550/2715/367 +f 544/2695/364 552/2711/370 553/2716/374 +f 563/2718/376 564/2741/378 557/2719/373 +f 559/2721/379 560/2733/381 553/2716/374 +f 551/2722/371 558/2737/377 562/2723/380 +f 564/2725/378 559/2721/379 552/2711/370 +f 555/2724/372 562/2723/380 563/2718/376 +f 554/2713/375 561/2731/382 558/2727/377 +f 559/2721/379 567/2743/429 568/2735/425 +f 568/2735/425 565/2751/433 546/2734/329 +f 566/2736/2 570/2744/430 562/2723/380 +f 546/2730/329 565/2747/433 569/2738/426 +f 572/2739/427 567/2743/429 559/2721/379 +f 562/2723/380 570/2744/430 571/2740/428 +f 569/2738/426 566/3088/2 558/2727/377 +f 571/2740/428 572/2749/427 564/2741/378 +f 572/2739/427 579/3089/434 574/2742/28 +f 570/2744/430 577/2759/438 578/2745/431 +f 573/2746/432 576/2762/441 569/2738/426 +f 571/2740/428 578/2745/431 579/2748/434 +f 574/2742/28 575/2750/435 568/2735/425 +f 575/2750/435 573/3090/432 565/2751/433 +f 574/2752/28 581/3091/24 582/2753/436 +f 582/2755/436 580/2761/440 573/2746/432 +f 586/2757/437 581/3091/24 574/2752/28 +f 577/2759/438 584/3092/499 585/2760/439 +f 580/2761/440 583/3093/500 576/2762/441 +f 578/2745/431 585/2760/439 586/2763/437 +f 601/2764/404 602/2790/408 594/2765/15 +f 599/2767/405 600/2805/409 592/2768/16 +f 597/2770/406 598/2792/410 590/2771/330 +f 595/2773/407 596/3094/411 588/2774/329 +f 602/2776/408 595/2773/407 587/2775/13 +f 600/2778/409 601/2764/404 593/2766/12 +f 598/2780/410 599/2767/405 591/2769/11 +f 596/2782/411 597/2770/406 589/2772/14 +f 609/2784/412 603/2793/332 595/2785/407 +f 600/2778/409 607/2801/421 608/2787/413 +f 604/2788/414 605/2791/415 597/2770/406 +f 601/2764/404 608/2787/413 609/2789/412 +f 605/2791/415 606/2797/418 598/2792/410 +f 603/2793/332 604/2799/414 596/2794/411 +f 615/2795/416 616/2822/424 609/2789/412 +f 605/2791/415 612/2802/422 613/2796/417 +f 610/2798/419 611/2810/423 604/2799/414 +f 609/2784/412 616/2815/424 610/2798/419 +f 614/2800/420 615/2795/416 608/2787/413 +f 604/2788/414 611/2820/423 612/2802/422 +f 620/2808/329 621/2842/368 613/2796/417 +f 618/2809/364 619/2831/366 611/2810/423 +f 617/2811/363 622/2824/365 614/2812/420 +f 624/2814/367 618/2809/364 610/2798/419 +f 621/2816/368 617/2811/363 599/2813/405 +f 622/2818/365 623/2821/369 615/2795/416 +f 619/2819/366 620/2808/329 612/2802/422 +f 623/2821/369 624/2829/367 616/2822/424 +f 625/2823/371 629/3095/372 622/2824/365 +f 624/2814/367 631/2840/373 626/2825/370 +f 622/2818/365 629/3096/372 630/2826/16 +f 628/2827/375 625/2823/371 617/2811/363 +f 623/2821/369 630/2826/16 631/2828/373 +f 618/2809/364 626/2825/370 627/2830/374 +f 637/2832/376 638/2856/378 631/2833/373 +f 633/2835/379 634/2846/381 627/2830/374 +f 625/2836/371 632/2849/377 636/2837/380 +f 638/2839/378 633/2835/379 626/2825/370 +f 629/2838/372 636/2837/380 637/2832/376 +f 635/2841/382 632/2855/377 625/2823/371 +f 633/2835/379 641/2858/429 642/2848/425 +f 642/2848/425 639/2864/433 620/2847/329 +f 632/2849/377 640/3097/2 644/2850/442 +f 639/2851/433 643/2854/443 635/2841/382 +f 646/2852/427 641/2858/429 633/2835/379 +f 636/2837/380 644/2850/442 645/2853/428 +f 643/2854/443 640/3098/2 632/2855/377 +f 645/2853/428 646/2862/427 638/2856/378 +f 646/2852/427 653/3099/434 648/2857/28 +f 651/2859/438 652/2873/431 645/2853/428 +f 647/2860/432 650/2874/441 643/2854/443 +f 645/2853/428 652/2873/431 653/2861/434 +f 648/2857/28 649/2863/435 642/2848/425 +f 649/2863/435 647/3100/432 639/2864/433 +f 648/2865/28 655/3101/24 656/2866/436 +f 649/2868/435 656/3102/436 654/2869/440 +f 660/2870/437 655/3101/24 648/2865/28 +f 651/2859/438 658/3103/499 659/2872/439 +f 654/2869/440 657/3104/500 650/2874/441 +f 652/2873/431 659/2872/439 660/2875/437 +f 1377/2876/444 1378/2901/448 1370/2877/16 +f 1375/2879/445 1376/2903/449 1368/2880/330 +f 1373/2882/446 1374/2905/450 1366/2883/329 +f 1380/2885/447 1373/2882/446 1365/2884/13 +f 1378/2887/448 1379/2894/37 1371/2888/12 +f 1376/2890/449 1377/2876/444 1369/2878/11 +f 1374/2892/450 1375/2879/445 1367/2881/14 +f 1379/2894/37 1380/2919/447 1372/2895/15 +f 1380/2885/447 1387/2915/453 1381/2896/432 +f 1377/2876/444 1376/2890/449 1384/2897/434 +f 1375/2879/445 1374/2892/450 1382/2899/435 +f 1378/2901/448 1377/2876/444 1385/2898/431 +f 1376/2903/449 1375/2879/445 1383/2900/28 +f 1374/2905/450 1373/2882/446 1381/2896/432 +f 1386/2902/451 1385/2898/431 1392/2907/428 +f 1384/2909/434 1383/2917/28 1390/2910/429 +f 1381/2912/432 1388/2925/433 1389/2913/425 +f 1387/2915/453 1394/2921/454 1388/2916/433 +f 1384/2897/434 1391/2931/427 1392/2907/428 +f 1382/2914/435 1389/2913/425 1390/2910/429 +f 1390/2910/429 1398/2933/460 1399/2924/455 +f 1388/2925/433 1396/2942/458 1397/2926/456 +f 1393/2908/452 1401/2934/461 1395/2927/457 +f 1394/2921/454 1402/2930/459 1396/2929/458 +f 1379/2920/37 1395/2939/457 1402/2930/459 +f 1391/2931/427 1399/2956/455 1400/2932/330 +f 1389/2913/425 1397/2926/456 1398/2933/460 +f 1392/2907/428 1400/2932/330 1401/2934/461 +f 1395/2927/457 1401/2934/461 1408/2935/462 +f 1402/2930/459 1409/2940/465 1404/2937/15 +f 1397/2926/456 1405/2943/467 1406/2938/464 +f 1395/2939/457 1403/2949/463 1409/2940/465 +f 1398/2933/460 1406/2938/464 1407/2941/466 +f 1396/2942/458 1404/3105/15 1405/2943/467 +f 1407/2941/466 1406/2938/464 1413/2944/468 +f 1405/2946/467 1404/2953/15 1411/2947/470 +f 1403/2949/463 1408/3106/462 1415/2950/472 +f 1409/2952/465 1416/2967/474 1411/2947/470 +f 1406/2938/464 1405/2943/467 1412/2954/471 +f 1403/2949/463 1410/2951/473 1416/2955/474 +f 1411/2947/470 1419/2968/478 1420/2963/475 +f 1400/2960/330 1417/2966/477 1423/2964/476 +f 1415/2950/472 1423/2992/476 1418/2965/331 +f 1414/2959/469 1422/2976/481 1417/2966/477 +f 1416/2967/474 1424/2972/480 1419/2968/478 +f 1412/2954/471 1420/2974/475 1421/2969/479 +f 1410/2951/473 1418/2965/331 1424/2970/480 +f 1413/2944/468 1421/2969/479 1422/2971/481 +f 1424/2972/480 1431/2983/489 1426/2973/482 +f 1420/2974/475 1427/3107/485 1428/2975/343 +f 1422/2976/481 1429/3108/484 1425/2977/483 +f 1421/2969/479 1428/2975/343 1429/2978/484 +f 1420/2963/475 1419/2968/478 1426/2973/482 +f 1417/2966/477 1425/2977/483 1430/2980/486 +f 1426/2973/482 1433/2984/490 1434/2981/487 +f 1425/2977/483 1432/2989/493 1437/2982/488 +f 1431/2983/489 1438/3000/494 1433/2984/490 +f 1427/2985/485 1434/3002/487 1435/2986/491 +f 1425/2977/483 1429/3108/484 1436/2988/492 +f 1429/2990/484 1428/2987/343 1435/2986/491 +f 1418/2965/331 1439/2999/13 1446/2997/15 +f 1432/2989/493 1440/3004/14 1445/2998/329 +f 1437/2994/488 1445/3109/329 1439/2999/13 +f 1438/3000/494 1446/3110/15 1441/3001/12 +f 1434/3002/487 1442/3111/16 1443/3003/11 +f 1436/2988/492 1444/3112/330 1440/3004/14 +f 1435/2986/491 1443/3003/11 1444/3005/330 +f 1433/2984/490 1441/3001/12 1442/3006/16 +f 1479/3007/13 1486/3039/331 1470/3008/331 +f 1480/3010/332 1479/3113/13 1463/3011/13 +f 1473/3013/1 1472/3043/332 1456/3014/332 +f 1481/3016/1 1480/3010/332 1464/3012/332 +f 1474/3018/343 1473/3013/1 1457/3015/1 +f 1482/3020/343 1481/3016/1 1465/3017/1 +f 1475/3022/11 1474/3114/343 1458/3023/343 +f 1483/3025/11 1482/3115/343 1466/3026/343 +f 1476/3028/405 1475/3022/11 1459/3024/11 +f 1484/3030/405 1483/3025/11 1467/3027/11 +f 1477/3032/2 1476/3028/405 1460/3029/405 +f 1485/3034/2 1484/3030/405 1468/3031/405 +f 1478/3036/331 1477/3116/2 1461/3037/2 +f 1486/3039/331 1485/3117/2 1469/3040/2 +f 1471/3041/13 1478/3036/331 1462/3038/331 +f 1472/3043/332 1471/3118/13 1455/3044/13 +f 1471/3041/329 1488/3119/329 1494/3045/495 +f 1485/3046/35 1486/3120/495 1502/1937/495 +f 1471/3047/329 1472/3121/496 1487/2425/496 +f 1479/3007/329 1496/3122/329 1502/3048/495 +f 1480/3049/496 1495/2420/496 1496/1938/329 +f 1473/3013/28 1489/3123/28 1487/3051/496 +f 1480/3010/496 1481/3016/28 1497/3052/28 +f 1473/3054/28 1474/3058/497 1490/2427/497 +f 1482/3055/497 1498/2422/497 1497/2421/28 +f 1475/3057/330 1491/1940/330 1490/2427/497 +f 1483/3059/330 1499/1939/330 1498/2422/497 +f 1475/3057/330 1476/3061/498 1492/2428/498 +f 1483/3059/330 1484/3062/498 1500/2423/498 +f 1477/3060/35 1493/1941/35 1492/2428/498 +f 1485/3046/35 1501/2424/35 1500/2423/498 +f 1477/3060/35 1478/3124/495 1494/2429/495 diff --git a/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj b/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj new file mode 100644 index 000000000..6e34a53d1 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/UAC pistol.obj @@ -0,0 +1,9880 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o bool_obj_bool_obj_data.002 +v -0.395192 7.596701 -3.479156 +v 0.584592 7.596701 -3.479156 +v 0.584592 6.166869 -3.479156 +v -0.395192 6.166869 -3.479156 +v -0.395192 8.736673 -5.713195 +v 0.584592 8.736673 -5.713195 +v -0.395192 9.164925 -5.571519 +v 0.584592 9.164925 -5.571519 +v -0.395192 9.566045 -5.817649 +v 0.584592 9.566045 -5.817649 +v -0.395192 9.328085 -6.240386 +v 0.584592 9.328085 -6.240386 +v -0.395192 8.650140 -6.472072 +v 0.584592 8.650140 -6.472072 +v -0.395192 8.023211 -6.974553 +v 0.584592 8.023211 -6.974553 +v -0.395192 7.262578 -7.039774 +v 0.584592 7.262578 -7.039774 +v -0.395192 7.029797 -6.702052 +v 0.584592 7.029797 -6.702052 +v -0.395192 7.269282 -6.422195 +v 0.584592 7.269282 -6.422195 +v -0.395192 7.572930 -6.422195 +v 0.584592 7.572930 -6.422195 +v -0.395192 8.226030 -6.011783 +v 0.584592 8.226030 -6.011783 +v -0.395192 6.903951 -4.234123 +v 0.584592 6.903951 -4.234123 +v -0.395192 6.148036 -4.191928 +v 0.584592 6.148036 -4.191928 +v -0.395192 7.596701 -3.479156 +v 0.584592 7.596701 -3.479156 +v 0.584592 6.166869 -3.479156 +v -0.395192 6.166869 -3.479156 +v -0.395192 8.736673 -5.713195 +v 0.584592 8.736673 -5.713195 +v -0.395192 9.164925 -5.571519 +v 0.584592 9.164925 -5.571519 +v -0.395192 9.566045 -5.817649 +v 0.584592 9.566045 -5.817649 +v -0.395192 9.328085 -6.240386 +v 0.584592 9.328085 -6.240386 +v -0.395192 8.650140 -6.472072 +v 0.584592 8.650140 -6.472072 +v -0.395192 8.023211 -6.974553 +v 0.584592 8.023211 -6.974553 +v -0.395192 7.262578 -7.039774 +v 0.584592 7.262578 -7.039774 +v -0.395192 7.029797 -6.702052 +v 0.584592 7.029797 -6.702052 +v -0.395192 7.269282 -6.422195 +v 0.584592 7.269282 -6.422195 +v -0.395192 7.572930 -6.422195 +v 0.584592 7.572930 -6.422195 +v -0.395192 8.226030 -6.011783 +v 0.584592 8.226030 -6.011783 +v -0.395192 6.903951 -4.234123 +v 0.584592 6.903951 -4.234123 +v -0.395192 6.148036 -4.191928 +v 0.584592 6.148036 -4.191928 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.395485 0.647711 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.395485 0.647711 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.395485 0.647711 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.382588 0.627146 +vt 0.395485 0.647711 +vt 0.382588 0.627146 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.5222 0.8528 +vn 0.0000 -0.6977 0.7164 +vn 0.0000 0.3799 0.9250 +vn 0.0000 0.1152 0.9933 +vn 0.0000 0.9679 0.2512 +vn 0.0000 0.6394 -0.7689 +vn 0.0000 0.4816 -0.8764 +vn 0.0000 0.3715 -0.9284 +vn 0.0000 -0.4267 -0.9044 +vn 0.0000 -0.9986 0.0521 +vn 0.0000 -0.4182 0.9083 +vn 0.0000 -0.2769 0.9609 +vn 0.0000 -0.9829 0.1841 +vn 0.0000 -0.4738 -0.8807 +vn 0.0000 -0.4737 -0.8807 +vn 0.0000 -0.7356 -0.6775 +s off +f 22/1/1 20/2/1 18/3/1 +f 17/4/2 21/5/2 23/6/2 +f 25/7/2 15/8/2 23/6/2 +f 16/9/1 26/10/1 24/11/1 +f 14/12/1 6/13/1 26/10/1 +f 13/14/2 25/7/2 5/15/2 +f 5/15/2 11/16/2 13/14/2 +f 12/17/1 6/13/1 14/12/1 +f 7/18/2 9/19/2 11/16/2 +f 12/17/1 10/20/1 8/21/1 +f 6/13/1 28/22/1 26/10/1 +f 28/22/1 3/23/1 30/24/1 +f 27/25/2 5/15/2 25/7/2 +f 27/25/2 4/26/2 1/27/2 +f 16/9/1 24/11/1 18/3/1 +f 24/11/1 22/1/1 18/3/1 +f 23/6/2 15/8/2 17/4/2 +f 17/4/2 19/28/2 21/5/2 +f 25/7/2 13/14/2 15/8/2 +f 16/9/1 14/12/1 26/10/1 +f 5/15/2 7/18/2 11/16/2 +f 12/17/1 8/21/1 6/13/1 +f 6/13/1 2/29/1 28/22/1 +f 28/22/1 2/29/1 3/23/1 +f 27/25/2 1/27/2 5/15/2 +f 27/25/2 29/30/2 4/26/2 +s 1 +f 31/31/3 33/32/4 32/33/3 +f 32/33/3 35/34/5 31/31/3 +f 36/35/5 37/36/6 35/34/5 +f 38/37/6 39/38/7 37/36/6 +f 40/39/7 41/40/8 39/38/7 +f 42/41/8 43/42/9 41/40/8 +f 44/43/9 45/44/10 43/42/9 +f 46/45/10 47/46/11 45/44/10 +f 48/47/11 49/48/12 47/46/11 +f 50/49/12 51/50/13 49/48/12 +f 52/51/13 53/52/14 51/50/13 +f 54/53/14 55/54/15 53/52/14 +f 56/55/15 57/56/16 55/54/15 +f 58/57/17 59/58/18 57/56/16 +f 34/59/4 60/60/18 33/32/4 +f 31/31/3 34/59/4 33/32/4 +f 32/33/3 36/35/5 35/34/5 +f 36/35/5 38/37/6 37/36/6 +f 38/37/6 40/39/7 39/38/7 +f 40/39/7 42/41/8 41/40/8 +f 42/41/8 44/43/9 43/42/9 +f 44/43/9 46/45/10 45/44/10 +f 46/45/10 48/47/11 47/46/11 +f 48/47/11 50/49/12 49/48/12 +f 50/49/12 52/51/13 51/50/13 +f 52/51/13 54/53/14 53/52/14 +f 54/53/14 56/55/15 55/54/15 +f 56/55/15 58/57/17 57/56/16 +f 58/57/17 60/60/18 59/58/18 +f 34/59/4 59/58/18 60/60/18 +o slide_pistol_0 +v 1.014517 11.207904 -2.625849 +v 1.014517 11.207904 -2.300615 +v 1.014517 10.723700 -1.978914 +v -1.014517 10.157009 -2.625849 +v -1.014517 11.207904 -2.625849 +v -0.335502 10.613042 -2.625849 +v -1.526129 9.326169 3.920666 +v -1.526129 9.326169 3.413728 +v -1.526129 8.752565 3.413728 +v -1.705540 8.752565 3.920666 +v -1.705540 7.184847 3.920666 +v -1.705540 8.402288 6.532843 +v -1.526129 8.752565 3.920666 +v -1.705540 8.752565 3.920666 +v -1.705540 8.752759 6.288157 +v -1.526129 8.752565 3.920666 +v -1.524936 8.752759 6.288157 +v 1.705540 7.247200 -1.820036 +v 1.526129 7.247200 -1.820036 +v 1.526043 7.614016 -2.276281 +v 1.321148 7.184845 12.021435 +v -1.171832 7.184845 11.897297 +v 1.156401 7.184845 11.897297 +v 1.526043 7.614016 -2.276281 +v 1.526129 7.247200 -1.820036 +v 1.526043 7.184847 -2.765843 +v 1.321148 7.184845 11.214216 +v -1.705540 7.184847 2.105287 +v -1.705540 8.757562 2.105289 +v -1.705540 8.927025 1.935824 +v 1.526129 7.247200 -1.820036 +v 1.526129 7.184847 -1.313097 +v 1.526043 7.184847 -2.765843 +v -1.524936 9.326169 6.288157 +v -1.326382 10.025589 6.288157 +v -1.705540 9.660696 6.288157 +v -1.705540 9.326169 6.288157 +v 0.813732 7.184845 16.849926 +v 1.705540 7.184845 12.021435 +v 1.705540 7.184845 18.319260 +v 1.326382 7.184845 19.492821 +v -1.705540 7.967402 7.346316 +v -1.705540 8.055081 6.892088 +v 1.705540 7.637856 11.214216 +v 1.705540 7.184845 11.214216 +v 1.705540 7.967402 7.346316 +v -1.705540 7.184847 3.920666 +v -1.526129 7.184847 3.920666 +v -1.171832 7.184845 5.830760 +v 1.705540 7.184847 3.920666 +v 1.705540 7.184845 11.214216 +v 1.156401 7.184845 5.830760 +v 1.705540 7.184847 -2.765843 +v 1.705540 7.184847 -4.842922 +v 1.705540 8.782389 -4.842922 +v 1.705540 7.614016 -2.276281 +v 1.231429 7.184847 -4.842922 +v 1.526129 7.184847 -1.313097 +v 1.231024 7.184847 1.879624 +v -1.526129 7.184847 2.105287 +v -1.526129 7.184847 2.612226 +v -1.526129 8.752565 2.612226 +v 1.705540 7.184847 3.920666 +v 1.321148 7.184845 11.214216 +v 1.705540 7.184845 11.214216 +v 1.705540 7.637856 11.214216 +v -0.813732 7.184845 16.849926 +v 1.526129 7.184847 3.920666 +v 0.000000 9.832471 21.944122 +v 0.947015 10.390595 21.944122 +v -0.947015 10.390595 21.944122 +v 1.705540 8.055081 6.892088 +v -1.171832 7.184845 11.897297 +v -1.171832 8.402286 11.660704 +v -1.171832 8.578351 11.777046 +v 0.167762 11.355708 20.190464 +v -0.167762 11.355708 20.190464 +v -0.167762 10.787156 20.190464 +v 0.814306 10.492231 20.190464 +v 0.814306 10.492231 19.285318 +v 0.359371 10.492231 19.285318 +v 0.893030 10.492231 20.116810 +v 0.893030 10.492231 19.372772 +v -1.526129 7.184847 3.413727 +v 1.526129 7.184847 3.413727 +v -0.393269 7.184847 1.879624 +v 0.393269 7.184847 1.879624 +v -1.333642 8.402288 6.532843 +v -1.333642 8.055081 6.892088 +v -1.333642 7.967402 7.346316 +v -1.016029 10.321226 11.777046 +v -0.947015 10.390595 11.777046 +v -0.654714 10.019365 11.777046 +v -0.813732 7.184845 16.849926 +v 0.813732 7.184845 16.849926 +v 0.813732 5.420440 16.849926 +v 0.471660 5.087638 16.849926 +v -0.471660 5.087638 16.849926 +v -0.813732 5.420440 16.849926 +v -1.333642 7.184845 21.944122 +v -1.333642 7.184845 19.492821 +v -0.813732 7.184845 21.944122 +v -1.526129 7.184847 0.796846 +v -1.705540 7.184847 0.796846 +v -1.705540 7.184847 -0.004656 +v -0.728164 8.051682 1.879624 +v -0.393269 9.417000 1.879624 +v -0.393269 7.184847 1.879624 +v -0.728164 7.586768 1.879624 +v -1.238688 7.184847 1.879624 +v 1.231024 9.417000 1.879624 +v 1.231024 8.051682 1.879624 +v 0.728164 8.051682 1.879624 +v 1.526129 7.184847 2.105287 +v 1.526129 7.184847 2.612226 +v 1.705540 7.184847 -1.313097 +v 1.705540 7.184847 -0.511595 +v 1.526129 7.184847 -0.511595 +v 1.705540 7.184847 2.612226 +v 1.705540 7.184847 3.413727 +v 1.526129 7.184847 3.920666 +v 1.526129 9.833411 3.920666 +v 1.705540 9.660696 3.920666 +v 0.408756 10.107763 -3.259710 +v -0.409408 10.107763 -3.259710 +v -0.409408 10.390597 -3.172265 +v 1.705540 9.660696 3.413728 +v 1.526129 9.833411 3.413728 +v 1.526129 7.184847 3.413727 +v -0.392768 7.184847 -4.842922 +v 0.393269 9.417000 1.879624 +v 0.393269 7.184847 1.879624 +v 0.392768 7.184847 -4.842922 +v 1.705540 7.184847 2.612226 +v 1.526129 7.184847 2.612226 +v 1.526129 9.833411 2.612226 +v 1.526129 7.184847 2.105287 +v 1.705540 7.184847 2.105287 +v 1.705540 9.660696 2.105289 +v 0.392768 8.782389 -4.842922 +v 0.392768 9.417337 -4.333549 +v 1.231024 7.184847 1.879624 +v 1.231024 7.586768 1.879624 +v 1.231429 7.587345 -4.842922 +v 0.408756 10.390597 -3.531358 +v 0.408756 10.107763 -3.763226 +v 0.408756 10.107763 -3.259710 +v 1.526129 9.833411 1.303785 +v 1.705540 9.660696 1.303785 +v 1.705540 7.184847 1.303785 +v 0.728571 7.587345 -4.842922 +v 0.728571 8.051105 -4.842922 +v 1.231429 8.051105 -4.842922 +v 1.705540 9.660696 0.796846 +v 1.526129 9.833411 0.796846 +v 1.526129 7.184847 0.796846 +v 0.813732 7.184845 21.944122 +v 1.231024 9.417000 1.879624 +v 0.393269 9.417000 1.879624 +v 0.392768 9.417337 -4.333549 +v 1.231024 7.586768 1.879624 +v 0.728164 7.586768 1.879624 +v 0.728571 7.587345 -4.842922 +v 1.526129 9.833411 -0.004656 +v 1.705540 9.660696 -0.004656 +v 1.705540 7.184847 -0.004656 +v 1.705540 7.184847 -4.842922 +v 1.231429 7.184847 -4.842922 +v 1.231429 7.587345 -4.842922 +v 1.526129 7.184847 -0.511595 +v 1.705540 7.184847 -0.511595 +v 1.705540 9.660696 -0.511595 +v 1.231429 9.417337 -4.333549 +v 1.231429 8.782389 -4.842922 +v 1.231024 9.417000 1.879624 +v 0.728164 7.586768 1.879624 +v 0.728164 8.051682 1.879624 +v 0.728571 8.051105 -4.842922 +v 1.526129 9.833411 -1.313097 +v 1.705540 9.660696 -1.313097 +v 1.705540 7.184847 -1.313097 +v 1.231024 8.051682 1.879624 +v 0.728164 8.051682 1.879624 +v 1.231024 8.051682 1.879624 +v 1.231429 8.051105 -4.842922 +v 0.947015 10.390597 -2.821980 +v -0.947015 10.390597 -2.821980 +v -1.132077 10.212755 -2.753814 +v 1.526129 7.247200 -1.820036 +v 1.705540 7.247200 -1.820036 +v 1.705540 9.660696 -1.820036 +v 1.705540 8.752767 6.288157 +v 1.705540 8.402288 6.532843 +v -1.132077 10.212755 0.576711 +v -0.947015 10.390597 0.637665 +v 0.947015 10.390597 0.637665 +v 1.326382 7.184845 21.944122 +v 1.526129 7.184847 -0.004656 +v -1.526129 7.184847 2.612226 +v -1.238688 7.184847 1.879624 +v 1.705540 7.184847 2.105287 +v 1.526129 7.184847 1.303785 +v 1.705540 7.184847 1.303785 +v 1.526129 7.184847 0.796846 +v 1.705540 7.184847 -0.004656 +v 0.728164 7.586768 1.879624 +v 1.231024 7.586768 1.879624 +v 1.231024 7.184847 1.879624 +v 0.393269 7.184847 1.879624 +v -1.238688 9.417000 1.879624 +v -1.526129 7.184847 2.105287 +v -1.705540 7.184847 -1.313097 +v -1.526129 7.184847 -1.313097 +v -1.526129 7.184847 -0.511595 +v -1.705540 7.184847 2.612226 +v -1.526129 9.326169 3.920666 +v -1.705540 9.326169 3.920666 +v -1.705540 9.660696 3.920666 +v -1.526129 7.184847 3.920666 +v -1.705540 7.184847 3.920666 +v -1.705540 8.752565 3.920666 +v -1.705540 7.184847 3.413727 +v -1.526129 7.184847 3.413727 +v -1.526129 8.752565 3.413728 +v -1.705540 9.326169 3.413728 +v -1.526129 9.326169 3.413728 +v -1.526129 9.833411 3.413728 +v -1.705540 7.184847 2.612226 +v -1.705540 7.184847 3.413727 +v -1.705540 8.752565 3.413728 +v -0.393269 9.417000 1.879624 +v -0.392768 8.782389 -4.842922 +v -0.392768 7.184847 -4.842922 +v -1.526129 9.326169 2.612226 +v -1.705540 9.326169 2.612226 +v -1.705540 9.660696 2.612226 +v -1.526129 7.184847 2.612226 +v -1.705540 7.184847 2.612226 +v -1.705540 8.752565 2.612226 +v -0.392768 9.417337 -4.333549 +v -1.238688 7.184847 1.879624 +v -1.238688 7.184847 -4.842922 +v -1.238688 7.587345 -4.842922 +v -0.409408 10.390597 -3.531358 +v -0.409408 10.390597 -3.172265 +v -0.409408 10.107763 -3.259710 +v -1.526129 9.833411 1.303785 +v -1.526129 7.184847 1.303785 +v -1.705540 7.184847 1.303785 +v -0.728571 7.587345 -4.842922 +v -1.238688 7.587345 -4.842922 +v -1.238688 8.051105 -4.842922 +v -1.705540 9.660696 0.796846 +v -1.705540 7.184847 0.796846 +v -1.526129 7.184847 0.796846 +v -1.238688 9.417000 1.879624 +v -1.238688 9.417337 -4.333549 +v -0.392768 9.417337 -4.333549 +v -1.238688 7.586768 1.879624 +v -1.238688 7.587345 -4.842922 +v -0.728571 7.587345 -4.842922 +v -1.526129 9.833411 -0.004656 +v -1.526129 7.184847 -0.004656 +v -1.705540 7.184847 -0.004656 +v -1.238688 7.184847 -4.842922 +v -1.705540 7.184847 -4.842922 +v -1.526129 7.184847 -0.511595 +v -1.526129 9.833411 -0.511595 +v -1.705540 9.660696 -0.511595 +v -1.238688 8.782389 -4.842922 +v -1.238688 9.417337 -4.333549 +v -1.238688 9.417000 1.879624 +v -0.728164 7.586768 1.879624 +v -0.728571 7.587345 -4.842922 +v -0.728571 8.051105 -4.842922 +v -1.526129 7.184847 -0.004656 +v -1.238688 7.184847 -4.842922 +v -1.526129 9.833411 -1.313097 +v -1.526129 7.184847 -1.313097 +v -1.705540 7.184847 -1.313097 +v -1.238688 8.051682 1.879624 +v -1.238688 8.051105 -4.842922 +v -0.728164 8.051682 1.879624 +v -0.728571 8.051105 -4.842922 +v -1.238688 8.051105 -4.842922 +v -1.705540 7.184847 -4.842922 +v -1.526129 7.184847 -1.820036 +v -1.705540 7.184847 2.105287 +v -1.705540 7.184847 1.303785 +v -1.526129 7.184847 -1.820036 +v -1.526129 9.833411 -1.820036 +v -1.705540 9.660696 -1.820036 +v -1.526129 7.184847 1.303785 +v -1.526129 7.184847 3.413727 +v -1.526129 7.184847 3.920666 +v -1.526129 8.752565 3.920666 +v -0.947015 10.390597 6.288157 +v -0.654714 10.019367 6.288157 +v -0.409408 10.390597 6.288157 +v -1.171832 9.475291 6.288157 +v -0.409408 10.019367 5.830760 +v -0.409408 10.390597 5.830760 +v -0.409408 10.390597 6.288157 +v 0.408756 10.019367 5.830760 +v 0.408756 10.019367 6.288157 +v 0.408756 10.390597 6.288157 +v 0.408756 10.019367 5.830760 +v 0.408756 10.390597 5.830760 +v -0.409408 10.390597 5.830760 +v 0.408756 10.019367 6.288157 +v 0.632517 10.019367 6.288157 +v 0.408756 10.390597 6.288157 +v 0.958007 9.683089 6.288157 +v 1.018419 10.321527 6.288157 +v -1.171832 9.475289 11.777046 +v -1.171832 7.184845 5.830760 +v -1.171832 8.752774 6.288157 +v -1.171832 8.402288 6.532843 +v -0.409408 10.019367 6.288157 +v -1.333642 8.402286 11.660704 +v -1.171832 8.402286 11.660704 +v -1.171832 8.402288 6.532843 +v -0.409408 10.019367 5.830760 +v -0.654714 10.019367 5.830760 +v -1.171832 9.475291 5.830760 +v -1.171832 7.184845 5.830760 +v 1.156401 7.184845 5.830760 +v 1.156401 9.475291 5.830760 +v 1.014517 11.207904 -2.625849 +v 0.335502 10.613042 -2.625849 +v 0.335502 11.207904 -2.625849 +v -0.167762 11.355708 20.190464 +v 0.167762 11.355708 20.190464 +v 0.167762 11.355708 19.816681 +v 0.143185 11.207904 -2.300615 +v 0.143185 11.269897 -2.300615 +v 0.143185 11.269897 -2.690542 +v 1.014517 11.207904 -2.625849 +v 0.335502 11.207904 -2.625849 +v 0.335502 11.207904 -2.300615 +v 1.014517 11.207904 -2.300615 +v 0.335502 11.207904 -2.625849 +v 0.335502 11.269897 -2.690542 +v 0.335502 11.269897 -2.300615 +v 0.335502 10.613042 -2.625849 +v 0.335502 10.613042 -2.690542 +v 0.335502 11.269897 -2.690542 +v 0.143185 11.269897 -2.300615 +v 0.335502 11.269897 -2.300615 +v 0.335502 11.269897 -2.690542 +v -0.720340 8.093417 11.897297 +v -0.389845 7.872590 11.897297 +v -1.171832 7.184845 11.897297 +v -0.941169 8.423912 11.897297 +v -1.018714 8.813757 11.897297 +v 0.000000 7.795043 11.897297 +v 0.471660 5.087638 21.944122 +v 0.813732 5.420440 21.944122 +v -0.813732 5.420440 21.944122 +v 0.813732 7.184845 21.944122 +v -1.333642 7.184845 21.944122 +v -0.813732 7.184845 21.944122 +v -0.720340 8.093417 21.944122 +v -1.018714 8.813757 21.944122 +v -1.326382 10.025587 21.944122 +v -0.720340 9.534097 21.944122 +v 0.720340 9.534097 21.944122 +v 1.326382 10.025587 21.944122 +v 1.018714 8.813757 21.944122 +v 1.326382 7.184845 21.944122 +v 0.720340 8.093417 21.944122 +v 0.941169 9.203602 21.944122 +v 0.389845 9.754926 21.944122 +v -0.941169 9.203602 21.944122 +v -0.941169 8.423912 21.944122 +v -0.389845 7.872588 21.944122 +v 0.000000 7.795043 21.944122 +v 0.389845 7.872588 21.944122 +v 0.941169 8.423912 21.944122 +v -0.471660 5.087638 21.944122 +v -0.389845 9.754926 21.944122 +v 1.321148 7.637856 11.214216 +v 1.321148 7.444345 12.021435 +v 1.321148 7.184845 12.021435 +v 1.705540 7.184845 12.021435 +v 1.321148 7.184845 12.021435 +v 1.321148 7.444345 12.021435 +v 1.705540 7.637856 11.214216 +v 1.705540 7.444345 12.021435 +v 1.321148 7.444345 12.021435 +v -1.526129 9.326169 3.413728 +v -1.705540 9.326169 3.413728 +v -1.705540 9.326169 2.612226 +v -1.524936 9.326169 6.288157 +v -1.705540 9.326169 6.288157 +v -1.705540 9.326169 3.920666 +v -1.526129 8.752565 2.612226 +v -1.705540 8.752565 2.612226 +v -1.705540 8.752565 3.413728 +v -1.526129 8.752565 2.612226 +v 0.632517 10.019367 5.830760 +v 0.335502 10.613042 -2.690542 +v 0.143185 10.723700 -2.690542 +v 0.143185 11.269897 -2.690542 +v -0.335502 10.613042 -2.690542 +v -0.143185 10.723700 -2.690542 +v -0.335502 10.613042 -2.625849 +v -0.335502 10.613042 -2.690542 +v 0.335502 10.613042 -2.690542 +v 0.143185 10.723700 -2.690542 +v 0.143185 10.723700 -1.978914 +v -0.814306 10.492231 20.190464 +v -0.359371 10.492231 20.190464 +v -0.359371 10.492231 19.285318 +v -0.893030 10.492231 20.116810 +v -0.814306 10.492231 19.285318 +v -0.335502 11.207904 -2.625849 +v -0.335502 10.613042 -2.625849 +v -0.335502 11.207904 -2.625849 +v -0.335502 11.269897 -2.690542 +v -0.335502 11.269897 -2.690542 +v -0.143185 11.269897 -2.690542 +v -0.143185 10.723700 -2.690542 +v -0.143185 11.269897 -2.690542 +v -0.143185 11.207904 -2.300615 +v -0.335502 11.207904 -2.625849 +v -0.335502 11.207904 -2.300615 +v -0.335502 11.269897 -2.300615 +v -0.143185 11.269897 -2.300615 +v -0.143185 11.269897 -2.690542 +v -0.335502 11.269897 -2.690542 +v -0.143185 11.269897 -2.300615 +v -0.335502 11.207904 -2.625849 +v -1.014517 11.207904 -2.625849 +v -0.335502 11.207904 -2.300615 +v -1.014517 11.207904 -2.300615 +v 1.014517 10.157009 -2.625849 +v 1.014517 10.606321 -1.825947 +v 1.014517 10.491154 -1.431074 +v 1.014517 10.157009 -2.625849 +v 0.167762 10.787156 20.190464 +v -0.359371 10.492231 20.190464 +v -1.014517 11.207904 -2.625849 +v -1.014517 10.157009 -2.625849 +v -1.014517 10.723700 -1.978914 +v -1.014517 10.606321 -1.825947 +v -1.014517 10.491154 -1.431074 +v 0.359371 10.492231 20.190464 +v -1.014517 11.207904 -2.300615 +v -0.451145 8.974197 5.975873 +v 0.000000 8.787328 5.975873 +v -0.345291 9.132619 5.975873 +v 0.186870 8.336183 5.975873 +v 0.000000 8.299012 5.975873 +v -0.186870 9.238472 5.975873 +v 0.000000 9.275643 5.975873 +v 0.345291 8.442036 5.975873 +v 0.186870 9.238472 5.975873 +v 0.345291 9.132619 5.975873 +v 0.451145 8.600457 5.975873 +v 0.451145 8.974197 5.975873 +v 0.488316 8.787328 5.975873 +v -0.488316 8.787328 5.975873 +v -0.186870 8.336183 5.975873 +v -0.451145 8.600457 5.975873 +v -0.345291 8.442036 5.975873 +v -1.659889 9.270180 6.250484 +v -1.659889 9.270180 2.190356 +v -1.659889 8.796173 2.190356 +v -1.659889 9.139336 2.059511 +v -1.659889 8.927017 2.059511 +v -1.360494 9.270180 6.250484 +v -1.659889 9.270180 6.250484 +v -1.659889 8.796173 6.250484 +v -1.705540 8.752759 6.288157 +v -1.524936 8.752759 6.288157 +v -1.524936 9.326169 6.288157 +v 1.705540 7.614016 -2.276281 +v -1.705540 7.184847 1.303785 +v -1.705540 9.151711 1.935824 +v 1.321148 7.637856 11.214216 +v 0.359371 10.492231 20.190464 +v -1.238688 7.586768 1.879624 +v 0.393269 9.417000 1.879624 +v 1.705540 7.184847 3.920666 +v 0.408756 10.390597 -3.172265 +v 1.705540 7.184847 3.413727 +v 0.392768 7.184847 -4.842922 +v 1.705540 9.660696 2.612226 +v 1.526129 9.833411 2.105289 +v 1.231429 7.184847 -4.842922 +v 0.408756 10.390597 -3.172265 +v 1.526129 7.184847 1.303785 +v 1.705540 7.184847 0.796846 +v 1.231429 9.417337 -4.333549 +v 1.231429 7.587345 -4.842922 +v 1.526129 7.184847 -0.004656 +v 1.526129 9.833411 -0.511595 +v 0.728571 7.587345 -4.842922 +v 1.526129 7.184847 -1.313097 +v 1.231429 8.051105 -4.842922 +v 0.728571 8.051105 -4.842922 +v 1.132077 10.212755 -2.753814 +v 1.526129 9.833411 -1.820036 +v 1.132077 10.212755 0.576711 +v 1.705540 7.184847 0.796846 +v -1.238688 8.051682 1.879624 +v -1.705540 7.184847 -0.511595 +v -1.705540 7.184847 3.413727 +v -1.526129 9.833411 3.920666 +v -1.526129 8.752565 3.920666 +v -1.705540 8.752565 3.413728 +v -1.705540 9.660696 3.413728 +v -1.705540 8.752565 2.612226 +v -0.393269 7.184847 1.879624 +v -1.526129 9.833411 2.612226 +v -1.526129 8.752565 2.612226 +v -1.705540 7.184845 18.319260 +v -1.238688 7.586768 1.879624 +v -0.409408 10.107763 -3.763226 +v -1.705540 9.660696 1.303785 +v -0.728571 8.051105 -4.842922 +v -1.526129 9.833411 0.796846 +v -0.393269 9.417000 1.879624 +v -0.728164 7.586768 1.879624 +v -1.705540 9.660696 -0.004656 +v -1.705540 7.184847 -0.511595 +v -0.728164 8.051682 1.879624 +v -1.705540 9.660696 -1.313097 +v -1.238688 8.051682 1.879624 +v -1.705540 7.184847 -1.820036 +v -1.705540 7.184847 -1.820036 +v -1.705540 7.184847 -4.842922 +v -1.705540 7.184847 -1.820036 +v -1.705540 8.782389 -4.842922 +v -1.526129 8.752565 3.413728 +v -0.409408 10.019367 6.288157 +v 0.408756 10.390597 5.830760 +v -1.326382 10.025587 11.777046 +v -1.333642 8.402288 6.532843 +v -0.167762 11.355708 19.816681 +v 0.335502 11.207904 -2.300615 +v 0.335502 11.207904 -2.625849 +v 0.143185 11.269897 -2.690542 +v 1.321148 7.184845 11.214216 +v 1.705540 7.444345 12.021435 +v 1.321148 7.637856 11.214216 +v -1.526129 9.326169 2.612226 +v -1.526129 9.326169 3.920666 +v -1.526129 8.752565 3.413728 +v -1.526129 9.326169 2.612226 +v 0.335502 11.269897 -2.690542 +v 0.335502 10.613042 -2.625849 +v -0.893030 10.492231 19.372772 +v -0.335502 10.613042 -2.690542 +v -0.143185 10.723700 -1.978914 +v -0.335502 11.269897 -2.690542 +v -0.335502 11.269897 -2.300615 +v -1.659889 8.796173 6.250484 +v -1.360494 8.796173 6.250484 +v -1.705540 8.402288 6.532843 +v -1.333642 8.402288 6.532843 +v -1.524936 8.752759 6.288157 +v -1.171832 8.752774 6.288157 +v -0.654714 10.019365 11.897297 +v -0.654714 10.019365 11.777046 +v 0.632517 10.019365 11.777046 +v 0.632517 10.019365 11.777046 +v -1.705540 9.660696 6.288157 +v -1.705540 9.660696 3.920666 +v -1.705540 9.326169 3.920666 +v -1.526129 8.752565 2.110282 +v -1.526129 9.321173 2.105289 +v -1.524936 9.151711 1.935824 +v -1.526129 7.184847 1.303785 +v -1.526129 9.833411 1.303785 +v -1.526129 9.833411 0.796846 +v -1.705540 9.660696 1.303785 +v 1.526129 9.833411 -1.820036 +v 1.526129 9.833411 -1.313097 +v -1.171832 9.475289 11.777046 +v 1.705540 7.184845 18.319260 +v 1.705540 7.184845 12.021435 +v 1.705540 7.444345 12.021435 +v 1.705540 9.660696 -1.820036 +v 1.705540 7.247200 -1.820036 +v 1.705540 7.967400 18.319260 +v 1.526043 7.184847 -2.765843 +v 1.705540 7.184847 -4.842922 +v 1.705540 7.184847 -2.765843 +v -1.526129 9.321173 2.105289 +v -1.705540 9.321173 2.105289 +v -1.705540 9.151711 1.935824 +v -1.705540 8.927025 1.935824 +v -1.705540 8.757562 2.105289 +v -1.526129 8.752565 2.110282 +v 1.018714 8.813757 11.876558 +v 1.156401 9.475289 11.866871 +v 1.156401 7.184845 11.897297 +v -1.014517 10.157009 0.196241 +v -1.014517 10.369081 0.196241 +v 0.167762 10.787156 19.556133 +v 0.167762 11.355708 19.816681 +v 0.167762 11.355708 20.190464 +v 0.359371 10.492231 20.190464 +v 0.359371 10.492231 19.285318 +v 0.872165 9.770428 11.711023 +v 1.156401 9.475289 11.866871 +v 0.632517 10.019365 11.897297 +v 1.018419 10.321525 11.521421 +v 1.019789 10.321226 19.320282 +v 1.326382 10.025587 21.944122 +v 0.872165 9.770428 11.711023 +v 0.947015 10.390595 11.752501 +v 1.018419 10.321525 11.521421 +v 1.018419 10.321527 6.288157 +v 0.958007 9.683089 6.288157 +v 0.958007 9.683128 11.555180 +v 0.632517 10.019367 5.830760 +v 1.156401 9.475291 5.830760 +v 0.958007 9.683089 6.288157 +v 1.326382 7.967400 19.492821 +v 1.326382 7.967402 7.346316 +v 1.326382 8.055081 6.892088 +v 1.326382 8.402288 6.532843 +v 1.326382 10.025589 6.288157 +v -1.333642 7.967400 19.492821 +v -1.333642 8.578351 11.777046 +v -1.333642 8.402286 11.660704 +v -1.326382 10.025587 21.944122 +v -1.326382 10.025587 11.777046 +v 0.947015 10.390595 19.208494 +v 0.947015 10.390595 11.752501 +v 0.869641 10.390595 11.777046 +v -0.409408 10.390597 -3.531358 +v -0.409408 10.107763 -3.763226 +v -0.947015 10.390597 -3.531358 +v 0.869641 10.390595 11.777046 +v -1.238688 8.782389 -4.842922 +v -1.333642 8.578351 11.777046 +v -1.526129 7.184847 -0.004656 +v -1.526129 9.833411 -0.004656 +v -1.526129 9.833411 -0.511595 +v -0.947015 10.390597 0.637665 +v -0.947015 10.390597 6.288157 +v -0.409408 10.390597 5.830760 +v 0.408756 10.390597 5.830760 +v 0.947015 10.390597 0.637665 +v 0.408756 10.390597 6.288157 +v 1.018419 10.321527 6.288157 +v -1.171832 9.475291 5.830760 +v -1.171832 9.475291 6.288157 +v 1.018419 10.321527 6.288157 +v 1.326382 10.025589 6.288157 +v 1.132077 10.212755 0.576711 +v -0.409408 10.390597 6.288157 +v -1.526129 9.833411 2.105289 +v -1.526129 9.833411 2.612226 +v -1.132077 10.212755 0.576711 +v -1.526129 9.833411 3.920666 +v -1.326382 10.025589 6.288157 +v -1.526129 9.833411 3.413728 +v 0.947015 10.390597 -3.531358 +v 0.947015 10.390597 -2.821980 +v 1.132077 10.212755 -2.753814 +v 0.947015 10.390595 19.208494 +v -0.947015 10.390595 19.208494 +v -1.016029 10.321226 19.320282 +v 0.947015 10.390595 20.281315 +v -0.947015 10.390595 20.281315 +v -0.947015 10.390595 21.944122 +v 1.705540 7.184847 2.612226 +v 1.705540 9.660696 2.612226 +v 1.705540 9.660696 3.413728 +v 1.019789 10.321226 20.144449 +v -1.016029 10.321226 20.144449 +v 1.326382 7.967400 19.492821 +v 1.326382 7.184845 19.492821 +v 0.471660 5.087638 16.849926 +v 0.813732 5.420440 16.849926 +v 0.813732 5.420440 21.944122 +v 0.408756 10.390597 -3.531358 +v 0.408756 10.390597 -3.172265 +v 1.019789 10.321226 20.144449 +v -0.409408 10.107763 -3.763226 +v -0.409408 10.107763 -3.259710 +v 0.408756 10.107763 -3.259710 +v 1.705540 7.967402 7.346316 +v 1.326382 7.967402 7.346316 +v 1.326382 7.967400 19.492821 +v 1.326382 7.184845 21.944122 +v 1.326382 7.184845 19.492821 +v 1.526129 7.184847 1.303785 +v 1.526129 7.184847 0.796846 +v 1.526129 9.833411 0.796846 +v 1.705540 8.402288 6.532843 +v 1.326382 8.402288 6.532843 +v 1.326382 8.055081 6.892088 +v 1.705540 8.055081 6.892088 +v 1.705540 9.660696 6.288157 +v 1.326382 10.025589 6.288157 +v 1.326382 8.752767 6.288157 +v 1.705540 9.660696 -4.131680 +v 1.231429 9.417337 -4.333549 +v 0.408756 10.107763 -3.763226 +v -0.392768 9.417337 -4.333549 +v -0.409408 10.390597 -3.172265 +v -0.947015 10.390597 -2.821980 +v 0.392768 9.417337 -4.333549 +v 0.392768 8.782389 -4.842922 +v 1.231429 8.782389 -4.842922 +v 1.705540 8.782389 -4.842922 +v 1.705540 9.660696 -4.131680 +v 0.947015 10.390597 -3.531358 +v 1.526129 9.833411 2.612226 +v 1.705540 9.660696 6.288157 +v 1.705540 9.660696 3.920666 +v 1.526129 9.833411 3.920666 +v -1.132077 10.212755 0.576711 +v 1.132077 10.212755 0.576711 +v 1.132077 10.212755 -2.753814 +v 1.705540 9.660696 -1.313097 +v 1.705540 9.660696 -0.511595 +v 1.705540 7.184847 -0.511595 +v 1.705540 9.660696 -0.004656 +v 1.705540 9.660696 0.796846 +v 1.705540 7.184847 0.796846 +v 1.526129 7.184847 2.612226 +v 1.526129 7.184847 2.105287 +v 1.526129 9.833411 2.105289 +v 1.705540 9.660696 3.920666 +v 1.705540 9.660696 6.288157 +v 1.019789 10.321226 19.320282 +v -0.471660 5.087638 16.849926 +v 0.471660 5.087638 21.944122 +v 0.813732 7.184845 16.849926 +v 0.813732 7.184845 21.944122 +v 0.947015 10.390595 20.281315 +v 0.947015 10.390595 21.944122 +v 1.705540 8.752767 6.288157 +v 1.526129 7.184847 3.920666 +v 1.526129 7.184847 3.413727 +v 1.526129 9.833411 3.413728 +v 0.392768 7.184847 -4.842922 +v -0.392768 7.184847 -4.842922 +v -0.392768 8.782389 -4.842922 +v 0.408756 10.390597 -3.531358 +v 1.526129 7.184847 -0.004656 +v 1.526129 7.184847 -0.511595 +v 1.526129 9.833411 -0.511595 +v 1.705540 7.184847 1.303785 +v 1.705540 9.660696 1.303785 +v 1.705540 9.660696 2.105289 +v 1.526129 9.833411 3.413728 +v 1.526129 9.833411 -0.511595 +v 1.526129 9.833411 -1.313097 +v 1.526129 9.833411 -1.820036 +v 1.526129 9.833411 -0.004656 +v 1.526129 9.833411 2.105289 +v 1.526129 9.833411 1.303785 +v 1.705540 7.184847 -2.765843 +v 1.705540 7.614016 -2.276281 +v 1.526043 7.614016 -2.276281 +v -0.947015 10.390597 -3.531358 +v -1.705540 9.660696 -4.131680 +v -1.132077 10.212755 -2.753814 +v -1.705540 7.184845 18.319260 +v -1.705540 7.967400 18.319260 +v -1.526129 9.833411 -1.313097 +v -1.526129 9.833411 -0.511595 +v -1.705540 9.660696 -1.820036 +v -1.526129 9.833411 -1.820036 +v -1.705540 9.660696 3.413728 +v -1.705540 9.660696 2.612226 +v -1.705540 9.326169 2.612226 +v -1.333642 7.184845 19.492821 +v -0.471660 5.087638 21.944122 +v -0.813732 5.420440 21.944122 +v -0.409408 10.390597 -3.531358 +v -1.705540 7.184847 2.105287 +v -1.526129 7.184847 2.105287 +v -1.526129 9.833411 2.105289 +v -1.705540 7.967402 7.346316 +v -1.705540 7.967400 18.319260 +v -1.333642 7.967400 19.492821 +v -1.333642 7.184845 19.492821 +v -1.705540 9.321173 2.105289 +v -1.705540 9.660696 2.105289 +v -1.705540 8.055081 6.892088 +v -1.333642 8.055081 6.892088 +v -1.333642 7.967402 7.346316 +v -1.705540 9.660696 -0.511595 +v -1.238688 9.417337 -4.333549 +v -1.705540 9.660696 -4.131680 +v -1.526129 9.833411 1.303785 +v -1.705540 8.782389 -4.842922 +v -1.705540 9.660696 -1.313097 +v -1.705540 7.184847 -1.313097 +v -1.705540 7.184847 -0.511595 +v -1.705540 9.660696 -0.004656 +v -1.705540 7.184847 -0.004656 +v -1.705540 7.184847 0.796846 +v -1.526129 9.833411 -0.004656 +v -1.705540 9.660696 0.796846 +v -1.526129 9.833411 0.796846 +v -0.813732 5.420440 16.849926 +v -0.813732 7.184845 21.944122 +v -1.526129 7.184847 -1.313097 +v -1.526129 9.833411 -1.313097 +v -1.526129 9.833411 -1.820036 +v -0.947015 10.390595 11.777046 +v -1.016029 10.321226 11.777046 +v -1.705540 8.752759 6.288157 +v -1.526129 9.833411 3.920666 +v -1.526129 9.833411 3.413728 +v -1.526129 9.326169 3.413728 +v 1.326382 8.752767 6.288157 +v -1.171832 8.402288 6.532843 +v -1.171832 8.578351 11.777046 +v -1.171832 8.402286 11.660704 +v 0.632517 10.019367 5.830760 +v 0.632517 10.019367 6.288157 +v 0.408756 10.019367 6.288157 +v -0.654714 10.019367 5.830760 +v -0.409408 10.019367 5.830760 +v -0.409408 10.019367 6.288157 +v 0.632517 10.019367 6.288157 +v 0.958007 9.683128 11.555180 +v 1.156401 7.184845 5.830760 +v 1.156401 7.184845 11.897297 +v 0.941169 9.203602 11.872112 +v 1.018714 8.813757 11.876558 +v 1.018714 8.813757 21.944122 +v 0.720340 9.534097 11.876596 +v 0.941169 9.203602 21.944122 +v 0.389845 9.754926 11.891426 +v 0.720340 9.534097 21.944122 +v 0.000000 9.832471 11.897297 +v 0.389845 9.754926 21.944122 +v 0.814306 10.296812 20.190464 +v 0.814306 10.492231 20.190464 +v 0.000000 9.832471 21.944122 +v -0.389845 9.754926 21.944122 +v -0.389845 9.754926 11.897297 +v -0.720340 9.534097 21.944122 +v -0.720340 9.534097 11.896717 +v 0.893030 10.296812 20.116810 +v 0.893030 10.492231 20.116810 +v 0.893030 10.296812 19.372772 +v 0.893030 10.492231 19.372772 +v -0.941169 9.203602 11.897297 +v -0.941169 9.203602 21.944122 +v -1.018714 8.813757 21.944122 +v -1.018714 8.813757 11.897297 +v -0.941169 8.423912 21.944122 +v -0.941169 8.423912 11.897297 +v -0.720340 8.093417 21.944122 +v -0.720340 8.093417 11.897297 +v -0.389845 7.872588 21.944122 +v -0.389845 7.872590 11.897297 +v 0.000000 7.795043 21.944122 +v 0.000000 7.795043 11.897297 +v 0.000000 7.795043 21.944122 +v 0.389845 7.872588 21.944122 +v 0.389845 7.872590 11.897297 +v 0.720340 8.093417 21.944122 +v 0.720340 8.093417 11.890942 +v 0.814306 10.296812 19.285318 +v 0.814306 10.492231 19.285318 +v 0.893030 10.492231 19.372772 +v 0.941169 8.423912 11.883170 +v 0.941169 8.423912 21.944122 +v 0.359371 10.492231 19.285318 +v -0.814306 10.296812 19.285318 +v -0.359371 10.492231 19.285318 +v -0.167762 10.787156 19.556133 +v 0.167762 10.787156 19.556133 +v -0.167762 11.355708 19.816681 +v 0.167762 11.355708 19.816681 +v -0.814306 10.157009 0.372431 +v 0.814306 10.157009 0.372431 +v 0.814306 10.357646 0.372431 +v 1.014517 10.157009 0.196241 +v 1.014517 10.369081 0.196241 +v -0.143185 10.723700 -1.978914 +v 0.143185 10.723700 -1.978914 +v 0.143185 10.723700 -2.690542 +v 0.143185 11.207904 -2.300615 +v 0.143185 10.723700 -1.978914 +v 0.335502 11.207904 -2.300615 +v 1.014517 10.723700 -1.978914 +v 1.014517 11.207904 -2.300615 +v 1.014517 10.606321 -1.825947 +v -1.014517 10.606321 -1.825947 +v -1.014517 10.491154 -1.431074 +v 1.014517 10.491154 -1.431074 +v -0.814306 10.357646 0.372431 +v 0.814306 10.357646 0.372431 +v 1.014517 10.369081 0.196241 +v -1.014517 10.369081 0.196241 +v -1.171832 9.475289 11.897297 +v 0.632517 10.019365 11.897297 +v 0.720340 9.534097 11.876596 +v 0.000000 9.832471 11.897297 +v -0.654714 10.019365 11.897297 +v -0.720340 9.534097 11.896717 +v -1.171832 9.475289 11.897297 +v 0.941169 8.423912 11.883170 +v 0.720340 8.093417 11.890942 +v 0.389845 7.872590 11.897297 +v -0.941169 9.203602 11.897297 +v -0.389845 9.754926 11.897297 +v 0.389845 9.754926 11.891426 +v 0.941169 9.203602 11.872112 +v -1.524936 8.927025 1.935824 +v -1.526129 9.833411 2.105289 +v -1.526129 9.321173 2.105289 +v -1.526129 9.326169 2.612226 +v 0.335502 11.269897 -2.300615 +v 0.143185 11.269897 -2.300615 +v -0.167762 10.787156 19.556133 +v -0.167762 10.787156 20.190464 +v -0.167762 11.355708 20.190464 +v -0.359371 10.492231 20.190464 +v -0.814306 10.492231 20.190464 +v -0.814306 10.296812 20.190464 +v -0.893030 10.296812 20.116810 +v -0.893030 10.296812 19.372772 +v -0.893030 10.492231 20.116810 +v -0.893030 10.296812 19.372772 +v -0.893030 10.492231 19.372772 +v -0.814306 10.492231 19.285318 +v -0.143185 10.723700 -1.978914 +v -1.014517 10.723700 -1.978914 +v -0.814306 10.357646 0.372431 +v -0.335502 11.269897 -2.300615 +v -0.335502 11.207904 -2.300615 +v -0.143185 11.207904 -2.300615 +v 1.526129 9.833411 0.796846 +v -0.451145 8.974197 5.975873 +v -0.345291 9.132619 5.975873 +v -0.345291 9.132619 5.773401 +v -0.186870 9.238472 5.975873 +v -0.186870 9.238472 5.773401 +v 0.345291 8.442036 5.975873 +v 0.186870 8.336183 5.975873 +v 0.186870 8.336183 5.773401 +v 0.000000 9.275643 5.975873 +v 0.000000 9.275643 5.773401 +v 0.186870 9.238472 5.975873 +v 0.186870 9.238472 5.773401 +v 0.451145 8.600457 5.975873 +v 0.345291 8.442036 5.773401 +v 0.345291 9.132619 5.975873 +v 0.345291 9.132619 5.773401 +v 0.451145 8.974197 5.975873 +v 0.451145 8.974197 5.773401 +v 0.488316 8.787328 5.975873 +v 0.451145 8.600457 5.773401 +v 0.488316 8.787328 5.773401 +v -0.186870 8.336183 5.975873 +v -0.345291 8.442036 5.975873 +v -0.345291 8.442036 5.773401 +v -0.451145 8.600457 5.975873 +v -0.488316 8.787328 5.975873 +v -0.488316 8.787328 5.773401 +v 0.000000 8.299012 5.975873 +v -0.186870 8.336183 5.773401 +v 0.000000 8.299012 5.773401 +v -0.451145 8.974197 5.773401 +v -0.451145 8.600457 5.773401 +v -1.360494 8.796173 2.190356 +v -1.659889 8.796173 2.190356 +v -1.659889 8.927017 2.059511 +v -1.659889 9.139336 2.059511 +v -1.360494 9.139336 2.059511 +v -1.360494 8.927017 2.059511 +v -1.360494 9.270180 2.190356 +v -1.659889 9.270180 2.190356 +v -1.659889 9.270180 6.250484 +v -1.360494 8.796173 6.250484 +v -1.659889 8.796173 6.250484 +v -1.705540 9.326169 6.288157 +v -1.524936 8.927025 1.935824 +v -1.526129 7.184847 0.796846 +v -1.526129 8.752565 2.110282 +v -1.524936 9.151711 1.935824 +v 0.167762 10.787156 20.190464 +v -1.526129 7.184847 -0.511595 +v 0.947015 10.390595 21.944122 +v 1.705540 7.184847 3.413727 +v 0.408756 10.107763 -3.763226 +v 1.705540 7.967400 18.319260 +v 1.526129 9.833411 1.303785 +v -1.132077 10.212755 -2.753814 +v 1.705540 7.184847 -1.313097 +v 1.705540 7.184847 -0.004656 +v 1.526129 9.833411 2.612226 +v 1.526129 9.833411 3.920666 +v 1.526129 9.833411 -0.004656 +v 1.705540 7.184847 2.105287 +v 1.526043 7.184847 -2.765843 +v -1.705540 9.326169 3.413728 +v -1.333642 7.967400 19.492821 +v -1.705540 9.660696 2.105289 +v -1.333642 7.184845 21.944122 +v -0.813732 7.184845 16.849926 +v -1.526129 7.184847 -1.820036 +v -1.526129 9.326169 3.920666 +v -1.333642 8.402286 11.660704 +v 0.408756 10.019367 5.830760 +v -0.654714 10.019367 6.288157 +v 0.869641 10.390595 11.777046 +v 0.000000 7.795043 11.897297 +v 0.893030 10.296812 19.372772 +v -0.143185 10.723700 -2.690542 +v -1.526129 9.833411 2.612226 +v -0.167762 11.355708 19.816681 +v -0.359371 10.492231 19.285318 +v -0.893030 10.492231 19.372772 +v -0.143185 11.269897 -2.300615 +v -1.014517 11.207904 -2.300615 +v -1.360494 9.270180 6.250484 +vt 0.665882 0.347767 +vt 0.666023 0.347766 +vt 0.666162 0.347974 +vt 0.668422 0.348903 +vt 0.668420 0.348450 +vt 0.668128 0.348707 +vt 0.670331 0.347891 +vt 0.670113 0.347891 +vt 0.670112 0.348138 +vt 0.648961 0.347035 +vt 0.648963 0.347711 +vt 0.650088 0.347182 +vt 0.670330 0.348139 +vt 0.670330 0.348216 +vt 0.671351 0.348220 +vt 0.670330 0.348139 +vt 0.671351 0.348142 +vt 0.655673 0.344315 +vt 0.655725 0.344372 +vt 0.655911 0.344201 +vt 0.649593 0.340884 +vt 0.649645 0.341960 +vt 0.649646 0.340955 +vt 0.655911 0.344201 +vt 0.655725 0.344372 +vt 0.656134 0.344371 +vt 0.649941 0.340885 +vt 0.655073 0.340475 +vt 0.655070 0.339797 +vt 0.654996 0.339724 +vt 0.671575 0.327451 +vt 0.671356 0.327477 +vt 0.671982 0.327480 +vt 0.644693 0.340192 +vt 0.644385 0.340134 +vt 0.644557 0.340283 +vt 0.644700 0.340269 +vt 0.647509 0.341099 +vt 0.649593 0.340718 +vt 0.646875 0.340713 +vt 0.646368 0.340876 +vt 0.650439 0.347369 +vt 0.650243 0.347332 +vt 0.648903 0.346602 +vt 0.648902 0.346797 +vt 0.650571 0.346464 +vt 0.653087 0.342196 +vt 0.653087 0.342119 +vt 0.652263 0.341965 +vt 0.653089 0.340724 +vt 0.649942 0.340719 +vt 0.652265 0.340960 +vt 0.652957 0.336625 +vt 0.652061 0.336628 +vt 0.652064 0.337317 +vt 0.653168 0.336809 +vt 0.656866 0.340895 +vt 0.655346 0.340806 +vt 0.653970 0.340890 +vt 0.671253 0.338233 +vt 0.671472 0.338233 +vt 0.671470 0.337557 +vt 0.652046 0.346806 +vt 0.665497 0.338599 +vt 0.665663 0.338599 +vt 0.665663 0.338404 +vt 0.647507 0.341802 +vt 0.653089 0.340802 +vt 0.669772 0.341914 +vt 0.669364 0.341701 +vt 0.670181 0.341704 +vt 0.650766 0.346427 +vt 0.652276 0.346675 +vt 0.652808 0.346599 +vt 0.652882 0.346653 +vt 0.666531 0.348446 +vt 0.666675 0.348446 +vt 0.666674 0.348692 +vt 0.671544 0.335436 +vt 0.671154 0.335438 +vt 0.671154 0.335634 +vt 0.671512 0.335403 +vt 0.671191 0.335404 +vt 0.653306 0.342119 +vt 0.653308 0.340802 +vt 0.653969 0.341610 +vt 0.653969 0.341314 +vt 0.657096 0.340687 +vt 0.657251 0.340835 +vt 0.657446 0.340872 +vt 0.666338 0.341178 +vt 0.666344 0.341136 +vt 0.666141 0.341132 +vt 0.671982 0.327709 +vt 0.671281 0.327706 +vt 0.671277 0.328466 +vt 0.671424 0.328610 +vt 0.671831 0.328612 +vt 0.671979 0.328470 +vt 0.645308 0.342022 +vt 0.646366 0.342024 +vt 0.645309 0.341798 +vt 0.654435 0.342121 +vt 0.654435 0.342199 +vt 0.654781 0.342199 +vt 0.671983 0.325746 +vt 0.671796 0.325132 +vt 0.671793 0.326094 +vt 0.671982 0.325897 +vt 0.672220 0.326096 +vt 0.671777 0.334214 +vt 0.671776 0.334827 +vt 0.672010 0.334827 +vt 0.653873 0.340803 +vt 0.653654 0.340803 +vt 0.655346 0.340729 +vt 0.655001 0.340728 +vt 0.655001 0.340805 +vt 0.653654 0.340725 +vt 0.653308 0.340725 +vt 0.671788 0.332239 +vt 0.671789 0.331098 +vt 0.671711 0.331172 +vt 0.652553 0.348753 +vt 0.652553 0.349106 +vt 0.652681 0.349106 +vt 0.672085 0.331172 +vt 0.672007 0.331098 +vt 0.672006 0.332240 +vt 0.656870 0.341615 +vt 0.668193 0.332067 +vt 0.669156 0.332072 +vt 0.669169 0.329174 +vt 0.671795 0.322170 +vt 0.671872 0.322170 +vt 0.671867 0.321028 +vt 0.672090 0.322169 +vt 0.672168 0.322168 +vt 0.672163 0.321101 +vt 0.668481 0.329171 +vt 0.668206 0.329389 +vt 0.666338 0.332059 +vt 0.666535 0.332060 +vt 0.666549 0.329162 +vt 0.652436 0.348631 +vt 0.652336 0.348753 +vt 0.652553 0.348753 +vt 0.671870 0.322396 +vt 0.671793 0.322471 +vt 0.671795 0.323538 +vt 0.670269 0.345604 +vt 0.670270 0.345453 +vt 0.670505 0.345454 +vt 0.672166 0.322470 +vt 0.672088 0.322396 +vt 0.672090 0.323538 +vt 0.645310 0.341095 +vt 0.667770 0.332065 +vt 0.668193 0.332067 +vt 0.668206 0.329389 +vt 0.666535 0.332060 +vt 0.666770 0.332061 +vt 0.666784 0.329163 +vt 0.671056 0.346443 +vt 0.670979 0.346517 +vt 0.670974 0.347585 +vt 0.670666 0.345804 +vt 0.670503 0.345803 +vt 0.670504 0.345605 +vt 0.671270 0.347586 +vt 0.671347 0.347586 +vt 0.671352 0.346519 +vt 0.667782 0.329387 +vt 0.667509 0.329166 +vt 0.667770 0.332065 +vt 0.666770 0.332061 +vt 0.666922 0.332062 +vt 0.666935 0.329164 +vt 0.671361 0.326336 +vt 0.671283 0.326410 +vt 0.671279 0.327477 +vt 0.667157 0.332063 +vt 0.666922 0.332062 +vt 0.667157 0.332063 +vt 0.667170 0.329165 +vt 0.657272 0.345497 +vt 0.657273 0.344680 +vt 0.657191 0.344600 +vt 0.671575 0.327451 +vt 0.671652 0.327452 +vt 0.671656 0.326411 +vt 0.651028 0.346127 +vt 0.650922 0.346278 +vt 0.655755 0.344598 +vt 0.655674 0.344677 +vt 0.655673 0.345494 +vt 0.645310 0.340874 +vt 0.654782 0.340805 +vt 0.653652 0.342120 +vt 0.653968 0.342037 +vt 0.653873 0.340726 +vt 0.654218 0.340804 +vt 0.654219 0.340726 +vt 0.654437 0.340804 +vt 0.654782 0.340727 +vt 0.672010 0.334979 +vt 0.671775 0.334978 +vt 0.671775 0.335176 +vt 0.672199 0.335177 +vt 0.672223 0.325134 +vt 0.653871 0.342120 +vt 0.655345 0.342200 +vt 0.655345 0.342122 +vt 0.655000 0.342122 +vt 0.653652 0.342197 +vt 0.656756 0.344189 +vt 0.656833 0.344189 +vt 0.656833 0.344045 +vt 0.671877 0.347120 +vt 0.671954 0.347119 +vt 0.671951 0.346443 +vt 0.671581 0.347121 +vt 0.671659 0.347121 +vt 0.671655 0.346445 +vt 0.656460 0.344190 +vt 0.656538 0.344190 +vt 0.656537 0.343971 +vt 0.671606 0.348023 +vt 0.671952 0.348024 +vt 0.671954 0.347348 +vt 0.667304 0.332303 +vt 0.667016 0.335199 +vt 0.666328 0.335196 +vt 0.671469 0.337246 +vt 0.671546 0.337245 +vt 0.671544 0.337101 +vt 0.671472 0.338233 +vt 0.671549 0.338232 +vt 0.671547 0.337557 +vt 0.667291 0.334981 +vt 0.669169 0.332311 +vt 0.669156 0.335209 +vt 0.668958 0.335208 +vt 0.652436 0.349228 +vt 0.652591 0.349228 +vt 0.652553 0.349106 +vt 0.672007 0.329730 +vt 0.672007 0.330872 +vt 0.672084 0.330872 +vt 0.669596 0.345601 +vt 0.669357 0.345600 +vt 0.669358 0.345449 +vt 0.671711 0.329804 +vt 0.671711 0.330872 +vt 0.671788 0.330872 +vt 0.667731 0.332305 +vt 0.667718 0.334983 +vt 0.667291 0.334981 +vt 0.668972 0.332310 +vt 0.668958 0.335208 +vt 0.668720 0.335207 +vt 0.672007 0.332466 +vt 0.672006 0.333607 +vt 0.672083 0.333608 +vt 0.669356 0.345798 +vt 0.669196 0.345797 +vt 0.671787 0.333607 +vt 0.671789 0.332465 +vt 0.671711 0.332540 +vt 0.667991 0.335204 +vt 0.667718 0.334983 +vt 0.667731 0.332305 +vt 0.668734 0.332309 +vt 0.668720 0.335207 +vt 0.668569 0.335206 +vt 0.654781 0.342122 +vt 0.656868 0.342041 +vt 0.672089 0.323764 +vt 0.672090 0.324906 +vt 0.672168 0.324906 +vt 0.668344 0.332307 +vt 0.668331 0.335205 +vt 0.668582 0.332308 +vt 0.668569 0.335206 +vt 0.668331 0.335205 +vt 0.656869 0.342187 +vt 0.655687 0.342123 +vt 0.653870 0.342198 +vt 0.654216 0.342198 +vt 0.671872 0.324906 +vt 0.671870 0.323765 +vt 0.671793 0.323839 +vt 0.654216 0.342121 +vt 0.671659 0.347121 +vt 0.671877 0.347120 +vt 0.671874 0.346444 +vt 0.644214 0.339986 +vt 0.644362 0.339846 +vt 0.644193 0.339756 +vt 0.644615 0.340046 +vt 0.644334 0.339545 +vt 0.644175 0.339559 +vt 0.644193 0.339756 +vt 0.661765 0.343274 +vt 0.661774 0.343476 +vt 0.661938 0.343468 +vt 0.644761 0.345897 +vt 0.644761 0.345737 +vt 0.644408 0.345736 +vt 0.661774 0.343476 +vt 0.661779 0.343575 +vt 0.661938 0.343468 +vt 0.661664 0.343724 +vt 0.661914 0.343724 +vt 0.666088 0.341451 +vt 0.652408 0.344048 +vt 0.653077 0.344280 +vt 0.652920 0.344378 +vt 0.644352 0.339741 +vt 0.665748 0.341793 +vt 0.665706 0.341738 +vt 0.663936 0.343063 +vt 0.644408 0.345896 +vt 0.644302 0.345896 +vt 0.644079 0.346130 +vt 0.644077 0.347117 +vt 0.645080 0.347119 +vt 0.645082 0.346132 +vt 0.667545 0.348453 +vt 0.667839 0.348708 +vt 0.667838 0.348452 +vt 0.671547 0.336174 +vt 0.671546 0.336029 +vt 0.671385 0.336030 +vt 0.645949 0.348760 +vt 0.645922 0.348760 +vt 0.645922 0.348928 +vt 0.645519 0.348898 +vt 0.645812 0.348899 +vt 0.645813 0.348759 +vt 0.645520 0.348758 +vt 0.645812 0.348899 +vt 0.645839 0.348927 +vt 0.645839 0.348759 +vt 0.665999 0.338618 +vt 0.666027 0.338619 +vt 0.666027 0.338335 +vt 0.645922 0.348760 +vt 0.645839 0.348759 +vt 0.645839 0.348927 +vt 0.671398 0.339640 +vt 0.671245 0.339741 +vt 0.671571 0.340011 +vt 0.671500 0.339488 +vt 0.671536 0.339308 +vt 0.671066 0.339776 +vt 0.669561 0.343988 +vt 0.669414 0.343844 +vt 0.670116 0.343846 +vt 0.669417 0.343083 +vt 0.670343 0.343087 +vt 0.670119 0.343086 +vt 0.670101 0.342715 +vt 0.670239 0.342384 +vt 0.670344 0.341862 +vt 0.670103 0.342052 +vt 0.669440 0.342050 +vt 0.669200 0.341858 +vt 0.669301 0.342381 +vt 0.669196 0.343083 +vt 0.669438 0.342713 +vt 0.669338 0.342202 +vt 0.669592 0.341949 +vt 0.670204 0.342205 +vt 0.670203 0.342563 +vt 0.669948 0.342816 +vt 0.669769 0.342851 +vt 0.669589 0.342815 +vt 0.669336 0.342560 +vt 0.669968 0.343989 +vt 0.669951 0.341950 +vt 0.665497 0.338404 +vt 0.665149 0.338488 +vt 0.665150 0.338600 +vt 0.664984 0.338600 +vt 0.665150 0.338600 +vt 0.665149 0.338488 +vt 0.665458 0.338243 +vt 0.665110 0.338327 +vt 0.665149 0.338488 +vt 0.670113 0.347891 +vt 0.670113 0.347813 +vt 0.669767 0.347812 +vt 0.671352 0.347895 +vt 0.671352 0.347817 +vt 0.670331 0.347814 +vt 0.669766 0.348137 +vt 0.669766 0.348214 +vt 0.670112 0.348215 +vt 0.669766 0.348137 +vt 0.644857 0.345897 +vt 0.666027 0.338619 +vt 0.666110 0.338571 +vt 0.666110 0.338335 +vt 0.666316 0.338619 +vt 0.666233 0.338571 +vt 0.666316 0.338647 +vt 0.666316 0.338619 +vt 0.666027 0.338619 +vt 0.646157 0.348929 +vt 0.646158 0.348622 +vt 0.671549 0.336766 +vt 0.671548 0.336570 +vt 0.671158 0.336572 +vt 0.671517 0.336801 +vt 0.671159 0.336768 +vt 0.668127 0.348451 +vt 0.666344 0.338619 +vt 0.666344 0.338363 +vt 0.666317 0.338336 +vt 0.666317 0.338336 +vt 0.666234 0.338336 +vt 0.646280 0.348929 +vt 0.646516 0.348930 +vt 0.646490 0.348762 +vt 0.646626 0.348903 +vt 0.646626 0.348763 +vt 0.646599 0.348763 +vt 0.646517 0.348762 +vt 0.646516 0.348930 +vt 0.646599 0.348931 +vt 0.646517 0.348762 +vt 0.646626 0.348903 +vt 0.646918 0.348904 +vt 0.646626 0.348763 +vt 0.646919 0.348764 +vt 0.665884 0.348220 +vt 0.666228 0.348025 +vt 0.666399 0.348073 +vt 0.667547 0.348906 +vt 0.666529 0.348691 +vt 0.666756 0.348819 +vt 0.669247 0.347752 +vt 0.669249 0.348205 +vt 0.668969 0.347962 +vt 0.668904 0.348013 +vt 0.668734 0.348063 +vt 0.666446 0.348817 +vt 0.669107 0.347753 +vt 0.651009 0.348764 +vt 0.651047 0.348947 +vt 0.651082 0.348764 +vt 0.650945 0.349104 +vt 0.650893 0.349053 +vt 0.651150 0.348791 +vt 0.651202 0.348842 +vt 0.651013 0.349131 +vt 0.651231 0.348909 +vt 0.651231 0.348982 +vt 0.651086 0.349131 +vt 0.651204 0.349050 +vt 0.651153 0.349102 +vt 0.650942 0.348793 +vt 0.650864 0.348986 +vt 0.650891 0.348845 +vt 0.650864 0.348913 +vt 0.672001 0.336533 +vt 0.671992 0.338283 +vt 0.672197 0.338284 +vt 0.672049 0.338339 +vt 0.672140 0.338340 +vt 0.665496 0.328592 +vt 0.665496 0.328721 +vt 0.665700 0.328722 +vt 0.649982 0.347032 +vt 0.671351 0.348142 +vt 0.671352 0.347895 +vt 0.655858 0.344144 +vt 0.654727 0.340476 +vt 0.654996 0.339627 +vt 0.665497 0.338404 +vt 0.671545 0.335632 +vt 0.672221 0.325898 +vt 0.672200 0.334214 +vt 0.671711 0.332239 +vt 0.652681 0.348753 +vt 0.672084 0.332240 +vt 0.656871 0.341319 +vt 0.671790 0.321103 +vt 0.672085 0.321027 +vt 0.666351 0.329161 +vt 0.652591 0.348631 +vt 0.671872 0.323538 +vt 0.672168 0.323538 +vt 0.667782 0.329387 +vt 0.666549 0.329162 +vt 0.671051 0.347585 +vt 0.671275 0.346444 +vt 0.666784 0.329163 +vt 0.671356 0.327477 +vt 0.667170 0.329165 +vt 0.666935 0.329164 +vt 0.657189 0.345576 +vt 0.671579 0.326337 +vt 0.655754 0.345574 +vt 0.654437 0.340727 +vt 0.672221 0.325747 +vt 0.654999 0.342199 +vt 0.653306 0.342197 +vt 0.656755 0.343970 +vt 0.671874 0.346444 +vt 0.671578 0.346445 +vt 0.656460 0.344046 +vt 0.671609 0.347347 +vt 0.666342 0.332298 +vt 0.671466 0.337028 +vt 0.671470 0.337557 +vt 0.646872 0.342185 +vt 0.668972 0.332310 +vt 0.652336 0.349106 +vt 0.672085 0.329805 +vt 0.669596 0.345450 +vt 0.671789 0.329730 +vt 0.667304 0.332303 +vt 0.668734 0.332309 +vt 0.672085 0.332540 +vt 0.671710 0.333607 +vt 0.668582 0.332308 +vt 0.672166 0.323838 +vt 0.668344 0.332307 +vt 0.655687 0.342193 +vt 0.671795 0.324906 +vt 0.652075 0.340487 +vt 0.653379 0.340482 +vt 0.652073 0.339798 +vt 0.671655 0.346445 +vt 0.644352 0.339741 +vt 0.661929 0.343266 +vt 0.666317 0.341361 +vt 0.663978 0.343119 +vt 0.671386 0.336174 +vt 0.645813 0.348759 +vt 0.665999 0.338362 +vt 0.645922 0.348928 +vt 0.665497 0.338599 +vt 0.664984 0.338489 +vt 0.665497 0.338404 +vt 0.669767 0.347890 +vt 0.670331 0.347891 +vt 0.670112 0.348138 +vt 0.669767 0.347890 +vt 0.666027 0.338335 +vt 0.666027 0.338646 +vt 0.671197 0.336802 +vt 0.666316 0.338619 +vt 0.646282 0.348623 +vt 0.646599 0.348931 +vt 0.646599 0.348763 +vt 0.672205 0.336534 +vt 0.665701 0.328592 +vt 0.645130 0.340230 +vt 0.645115 0.340070 +vt 0.644939 0.340169 +vt 0.644925 0.340018 +vt 0.653589 0.346722 +vt 0.653589 0.346671 +vt 0.654138 0.346662 +vt 0.665807 0.340688 +vt 0.656870 0.339398 +vt 0.655850 0.339403 +vt 0.655851 0.339547 +vt 0.669550 0.348136 +vt 0.669549 0.347891 +vt 0.669475 0.347964 +vt 0.672007 0.330872 +vt 0.672007 0.329730 +vt 0.671789 0.329730 +vt 0.654722 0.339409 +vt 0.671579 0.326337 +vt 0.671361 0.326336 +vt 0.653268 0.346667 +vt 0.645840 0.346789 +vt 0.648555 0.346796 +vt 0.648555 0.346685 +vt 0.653368 0.337690 +vt 0.653364 0.336650 +vt 0.645841 0.346452 +vt 0.655971 0.340807 +vt 0.656866 0.340731 +vt 0.655971 0.340730 +vt 0.671250 0.337251 +vt 0.671173 0.337252 +vt 0.671174 0.337355 +vt 0.671175 0.337452 +vt 0.671176 0.337555 +vt 0.671254 0.337557 +vt 0.670598 0.339307 +vt 0.670569 0.339021 +vt 0.670567 0.340009 +vt 0.668033 0.348210 +vt 0.668032 0.348119 +vt 0.671272 0.335785 +vt 0.671385 0.336030 +vt 0.671546 0.336029 +vt 0.671545 0.335632 +vt 0.671154 0.335634 +vt 0.654284 0.346628 +vt 0.654463 0.346686 +vt 0.654139 0.346714 +vt 0.343293 0.494352 +vt 0.403663 0.495033 +vt 0.424011 0.491967 +vt 0.665656 0.340670 +vt 0.665851 0.340483 +vt 0.665756 0.340431 +vt 0.664125 0.338873 +vt 0.663934 0.339073 +vt 0.665576 0.340641 +vt 0.654003 0.344111 +vt 0.654328 0.344094 +vt 0.654215 0.344297 +vt 0.405218 0.475819 +vt 0.311194 0.474745 +vt 0.651779 0.345198 +vt 0.651935 0.345050 +vt 0.652048 0.344354 +vt 0.651583 0.345233 +vt 0.662656 0.340850 +vt 0.659345 0.340602 +vt 0.659296 0.340678 +vt 0.424375 0.496265 +vt 0.345807 0.496601 +vt 0.345855 0.507785 +vt 0.646508 0.344057 +vt 0.649684 0.344093 +vt 0.649669 0.344043 +vt 0.669763 0.344216 +vt 0.669762 0.344374 +vt 0.669531 0.344215 +vt 0.665873 0.340511 +vt 0.669360 0.345109 +vt 0.665821 0.341739 +vt 0.672006 0.333607 +vt 0.672007 0.332466 +vt 0.671789 0.332465 +vt 0.654433 0.338957 +vt 0.656867 0.338944 +vt 0.656669 0.338713 +vt 0.656667 0.338361 +vt 0.654429 0.338141 +vt 0.656864 0.338360 +vt 0.656863 0.338096 +vt 0.653400 0.344098 +vt 0.653390 0.344296 +vt 0.652050 0.344171 +vt 0.649802 0.344145 +vt 0.656863 0.337912 +vt 0.654402 0.338030 +vt 0.656866 0.338712 +vt 0.655067 0.339300 +vt 0.655286 0.339299 +vt 0.654407 0.339067 +vt 0.655849 0.339296 +vt 0.656869 0.339171 +vt 0.655631 0.339297 +vt 0.652632 0.338147 +vt 0.652938 0.338146 +vt 0.652967 0.338035 +vt 0.662503 0.338903 +vt 0.662477 0.339733 +vt 0.662538 0.339781 +vt 0.411117 0.477267 +vt 0.411370 0.492239 +vt 0.424354 0.492076 +vt 0.655278 0.336619 +vt 0.655279 0.337686 +vt 0.655624 0.337686 +vt 0.662902 0.338878 +vt 0.662914 0.339780 +vt 0.662981 0.339739 +vt 0.645309 0.346450 +vt 0.645308 0.346788 +vt 0.666773 0.346076 +vt 0.666773 0.346282 +vt 0.668969 0.346283 +vt 0.652633 0.338379 +vt 0.652788 0.338378 +vt 0.302821 0.490584 +vt 0.410043 0.495106 +vt 0.652336 0.349106 +vt 0.652553 0.349106 +vt 0.652553 0.348753 +vt 0.661163 0.348102 +vt 0.661163 0.347939 +vt 0.655926 0.347949 +vt 0.424262 0.469977 +vt 0.405287 0.469761 +vt 0.671872 0.323538 +vt 0.672090 0.323538 +vt 0.672088 0.322396 +vt 0.661578 0.348101 +vt 0.661577 0.347938 +vt 0.661362 0.347939 +vt 0.661362 0.348102 +vt 0.662153 0.348100 +vt 0.662310 0.347937 +vt 0.661761 0.347938 +vt 0.670672 0.344629 +vt 0.670508 0.344764 +vt 0.670115 0.344376 +vt 0.669789 0.344760 +vt 0.652789 0.338731 +vt 0.652941 0.338962 +vt 0.670084 0.344762 +vt 0.670082 0.345113 +vt 0.670506 0.345115 +vt 0.670670 0.345116 +vt 0.652372 0.337694 +vt 0.670348 0.344219 +vt 0.655279 0.337793 +vt 0.656863 0.337685 +vt 0.655843 0.337686 +vt 0.655843 0.337793 +vt 0.655755 0.344598 +vt 0.655754 0.345574 +vt 0.657189 0.345576 +vt 0.653587 0.337690 +vt 0.653932 0.337689 +vt 0.653928 0.336621 +vt 0.654151 0.337688 +vt 0.654496 0.337687 +vt 0.654493 0.336620 +vt 0.671872 0.322170 +vt 0.672090 0.322169 +vt 0.672085 0.321027 +vt 0.652049 0.345739 +vt 0.651029 0.345736 +vt 0.662560 0.338873 +vt 0.666774 0.345670 +vt 0.668969 0.346078 +vt 0.666773 0.347043 +vt 0.668969 0.347044 +vt 0.411093 0.495895 +vt 0.423965 0.496042 +vt 0.646451 0.344107 +vt 0.661762 0.348101 +vt 0.671788 0.332239 +vt 0.672006 0.332240 +vt 0.672007 0.331098 +vt 0.670079 0.345801 +vt 0.669784 0.345800 +vt 0.669787 0.345111 +vt 0.670116 0.344218 +vt 0.671051 0.347585 +vt 0.671270 0.347586 +vt 0.671275 0.346444 +vt 0.654713 0.336619 +vt 0.654715 0.337686 +vt 0.655060 0.337686 +vt 0.655624 0.337793 +vt 0.653933 0.337796 +vt 0.653587 0.337797 +vt 0.653369 0.337798 +vt 0.654151 0.337795 +vt 0.655060 0.337793 +vt 0.654715 0.337794 +vt 0.656181 0.344310 +vt 0.655958 0.344139 +vt 0.655911 0.344201 +vt 0.652635 0.338964 +vt 0.652378 0.339418 +vt 0.652971 0.339073 +vt 0.655170 0.347691 +vt 0.655169 0.347353 +vt 0.653593 0.339306 +vt 0.653939 0.339305 +vt 0.653375 0.339415 +vt 0.653374 0.339307 +vt 0.655631 0.339404 +vt 0.655286 0.339406 +vt 0.655287 0.339550 +vt 0.655701 0.347689 +vt 0.668970 0.345671 +vt 0.668970 0.345465 +vt 0.652634 0.338732 +vt 0.403381 0.492993 +vt 0.410153 0.492980 +vt 0.671176 0.338233 +vt 0.671253 0.338233 +vt 0.671248 0.337030 +vt 0.645543 0.340191 +vt 0.650254 0.339752 +vt 0.650742 0.339545 +vt 0.405500 0.512252 +vt 0.405526 0.518299 +vt 0.655068 0.339554 +vt 0.655068 0.339408 +vt 0.645344 0.340210 +vt 0.645329 0.340050 +vt 0.645528 0.340032 +vt 0.653939 0.339413 +vt 0.669362 0.344758 +vt 0.669202 0.344621 +vt 0.654722 0.339302 +vt 0.669200 0.345108 +vt 0.653593 0.339414 +vt 0.653597 0.340482 +vt 0.653943 0.340480 +vt 0.654158 0.339412 +vt 0.654162 0.340479 +vt 0.654508 0.340478 +vt 0.654157 0.339304 +vt 0.654504 0.339410 +vt 0.654503 0.339303 +vt 0.666774 0.345464 +vt 0.668970 0.344705 +vt 0.672090 0.324906 +vt 0.672089 0.323764 +vt 0.671870 0.323765 +vt 0.659341 0.339758 +vt 0.659342 0.339807 +vt 0.644946 0.340247 +vt 0.656755 0.343970 +vt 0.656537 0.343971 +vt 0.656538 0.344190 +vt 0.652042 0.344901 +vt 0.645109 0.340001 +vt 0.665779 0.341683 +vt 0.665706 0.341738 +vt 0.661666 0.343279 +vt 0.661676 0.343481 +vt 0.661774 0.343476 +vt 0.653725 0.344114 +vt 0.653832 0.344119 +vt 0.653822 0.344318 +vt 0.654014 0.344308 +vt 0.654333 0.346558 +vt 0.655311 0.344043 +vt 0.655447 0.346648 +vt 0.661438 0.342326 +vt 0.661436 0.342143 +vt 0.657096 0.342143 +vt 0.661436 0.342509 +vt 0.657096 0.342326 +vt 0.661430 0.342692 +vt 0.657096 0.342509 +vt 0.661427 0.342875 +vt 0.657096 0.342692 +vt 0.666250 0.348901 +vt 0.666250 0.348816 +vt 0.657096 0.342875 +vt 0.657096 0.343058 +vt 0.661427 0.343058 +vt 0.657096 0.343240 +vt 0.661427 0.343240 +vt 0.666203 0.348900 +vt 0.666204 0.348816 +vt 0.665882 0.348899 +vt 0.665883 0.348814 +vt 0.661427 0.343423 +vt 0.657096 0.343423 +vt 0.657096 0.343606 +vt 0.661427 0.343606 +vt 0.657096 0.343789 +vt 0.661427 0.343789 +vt 0.657096 0.343972 +vt 0.661427 0.343972 +vt 0.657096 0.344155 +vt 0.661427 0.344155 +vt 0.657096 0.344338 +vt 0.661427 0.344338 +vt 0.657096 0.341411 +vt 0.657096 0.341594 +vt 0.661427 0.341594 +vt 0.657096 0.341777 +vt 0.661430 0.341777 +vt 0.649012 0.349171 +vt 0.649012 0.349086 +vt 0.648961 0.349086 +vt 0.661433 0.341960 +vt 0.657096 0.341960 +vt 0.649208 0.349086 +vt 0.649714 0.349170 +vt 0.649518 0.349086 +vt 0.649435 0.348914 +vt 0.649290 0.348914 +vt 0.649435 0.348644 +vt 0.649290 0.348644 +vt 0.667918 0.348211 +vt 0.667216 0.348214 +vt 0.667216 0.348127 +vt 0.667101 0.348214 +vt 0.667100 0.348123 +vt 0.646282 0.348623 +vt 0.646158 0.348622 +vt 0.646157 0.348929 +vt 0.656458 0.342453 +vt 0.656457 0.342704 +vt 0.656541 0.342453 +vt 0.656833 0.342705 +vt 0.656833 0.342454 +vt 0.656832 0.342788 +vt 0.655958 0.342785 +vt 0.655957 0.342962 +vt 0.656832 0.342965 +vt 0.656041 0.343742 +vt 0.656743 0.343745 +vt 0.656829 0.343669 +vt 0.655955 0.343666 +vt 0.653267 0.346719 +vt 0.670795 0.338787 +vt 0.670736 0.338975 +vt 0.671068 0.338839 +vt 0.671350 0.338788 +vt 0.671399 0.338977 +vt 0.671573 0.339023 +vt 0.670633 0.339486 +vt 0.670735 0.339638 +vt 0.670887 0.339740 +vt 0.671500 0.339129 +vt 0.671247 0.338875 +vt 0.670888 0.338874 +vt 0.670634 0.339127 +vt 0.671253 0.337451 +vt 0.671248 0.337030 +vt 0.671250 0.337251 +vt 0.671469 0.337246 +vt 0.656541 0.342427 +vt 0.656458 0.342426 +vt 0.671274 0.336420 +vt 0.671548 0.336419 +vt 0.671547 0.336174 +vt 0.671548 0.336570 +vt 0.666952 0.348820 +vt 0.666952 0.348904 +vt 0.666998 0.348905 +vt 0.667319 0.348906 +vt 0.666998 0.348820 +vt 0.649765 0.349170 +vt 0.649765 0.349086 +vt 0.649714 0.349086 +vt 0.656334 0.342703 +vt 0.655958 0.342702 +vt 0.667918 0.348124 +vt 0.656252 0.342426 +vt 0.656251 0.342452 +vt 0.656334 0.342453 +vt 0.654496 0.337794 +vt 0.651009 0.348764 +vt 0.651082 0.348764 +vt 0.651103 0.348667 +vt 0.651150 0.348791 +vt 0.651206 0.348710 +vt 0.651013 0.349131 +vt 0.650945 0.349104 +vt 0.650889 0.349185 +vt 0.651202 0.348842 +vt 0.651285 0.348789 +vt 0.651231 0.348909 +vt 0.651328 0.348892 +vt 0.651086 0.349131 +vt 0.650992 0.349228 +vt 0.651231 0.348982 +vt 0.651328 0.349003 +vt 0.651204 0.349050 +vt 0.651285 0.349106 +vt 0.651153 0.349102 +vt 0.651103 0.349228 +vt 0.651206 0.349185 +vt 0.650864 0.348986 +vt 0.650864 0.348913 +vt 0.650767 0.348892 +vt 0.650891 0.348845 +vt 0.650942 0.348793 +vt 0.650889 0.348710 +vt 0.650893 0.349053 +vt 0.650767 0.349003 +vt 0.650810 0.349106 +vt 0.650992 0.348667 +vt 0.650810 0.348789 +vt 0.663495 0.328582 +vt 0.663495 0.328711 +vt 0.663575 0.328712 +vt 0.663666 0.328712 +vt 0.663667 0.328583 +vt 0.663575 0.328583 +vt 0.663746 0.328583 +vt 0.663746 0.328713 +vt 0.665496 0.328721 +vt 0.661745 0.328574 +vt 0.661745 0.328703 +vt 0.656871 0.339542 +vt 0.669475 0.348061 +vt 0.671788 0.330872 +vt 0.671254 0.337557 +vt 0.671252 0.337354 +vt 0.671545 0.335784 +vt 0.671787 0.333607 +vt 0.424233 0.477149 +vt 0.655624 0.336619 +vt 0.662967 0.338908 +vt 0.652336 0.348753 +vt 0.656433 0.348111 +vt 0.671870 0.322396 +vt 0.657191 0.344600 +vt 0.653583 0.336623 +vt 0.654148 0.336621 +vt 0.671867 0.321028 +vt 0.671789 0.331098 +vt 0.671056 0.346443 +vt 0.655059 0.336619 +vt 0.656134 0.344371 +vt 0.655632 0.339548 +vt 0.655699 0.347352 +vt 0.659343 0.339981 +vt 0.671171 0.337105 +vt 0.424469 0.518218 +vt 0.666774 0.344703 +vt 0.671872 0.324906 +vt 0.656756 0.344189 +vt 0.665748 0.341793 +vt 0.661765 0.343274 +vt 0.653715 0.344312 +vt 0.659330 0.338958 +vt 0.661427 0.341411 +vt 0.648961 0.349171 +vt 0.646280 0.348929 +vt 0.671466 0.337028 +vt 0.671386 0.336174 +vt 0.671158 0.336572 +vt 0.667319 0.348822 +vt 0.656334 0.342426 +vt 0.655959 0.342451 +vt 0.665496 0.328592 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 -0.0001 +vn -1.0000 0.0000 0.0005 +vn -1.0000 0.0000 0.0002 +vn 0.0000 -0.7793 -0.6266 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0001 -0.0001 +vn 1.0000 -0.0005 -0.0001 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.2954 -0.9554 +vn 1.0000 0.0000 -0.0001 +vn -1.0000 0.0000 -0.0001 +vn 0.0000 -1.0000 -0.0001 +vn -1.0000 0.0001 -0.0001 +vn 0.0000 0.3579 0.9338 +vn 0.0000 0.3242 -0.9460 +vn 0.0000 -0.9724 -0.2331 +vn 0.0000 0.6488 0.7610 +vn -0.0000 0.6112 0.7915 +vn -0.0000 0.3594 0.9332 +vn -0.0000 0.3979 0.9174 +vn 0.3944 -0.9189 0.0000 +vn -0.2584 -0.9660 0.0000 +vn -0.0544 0.0347 -0.9979 +vn -0.9202 0.3915 0.0000 +vn -0.9202 0.3914 0.0000 +vn -1.0000 -0.0000 -0.0023 +vn -1.0000 -0.0001 -0.0070 +vn -0.7948 0.6069 -0.0000 +vn -0.8837 0.4681 0.0000 +vn -0.9815 0.1914 -0.0000 +vn 0.9202 0.3914 0.0000 +vn 0.7785 0.6277 -0.0000 +vn 0.8716 -0.4902 0.0001 +vn 0.9946 0.0000 0.1036 +vn 0.9501 0.3120 -0.0000 +vn 0.9922 0.0000 0.1244 +vn 0.0000 -0.9849 0.1730 +vn -0.0000 -0.8848 0.4659 +vn -0.0000 -0.5054 0.8629 +vn 0.0001 -0.2527 0.9675 +vn 0.0000 -0.3827 0.9239 +vn -0.0001 0.5055 0.8628 +vn -0.0151 0.3827 0.9237 +vn -0.0075 0.3820 0.9241 +vn -0.0098 -0.0134 -0.9999 +vn -0.0135 0.0030 -0.9999 +vn -0.0078 -0.0088 -0.9999 +vn -0.9112 -0.0000 0.4119 +vn 0.9588 0.2841 -0.0000 +vn 0.8386 0.5448 0.0000 +vn -0.8061 -0.3082 -0.5053 +vn -0.8143 -0.5805 -0.0013 +vn -0.5167 -0.8561 0.0000 +vn 0.6939 0.7201 -0.0000 +vn 0.4341 0.8971 0.0825 +vn 0.9006 0.4347 0.0001 +vn -0.6892 0.1308 -0.7126 +vn -0.9536 0.0970 -0.2850 +vn -0.9956 0.0942 -0.0000 +vn -0.8233 -0.5676 0.0006 +vn -0.9600 -0.2555 -0.1143 +vn -0.3908 -0.9205 0.0012 +vn -0.9277 -0.3732 0.0009 +vn -0.8233 -0.5676 0.0008 +vn 0.8835 0.4684 0.0000 +vn -0.9987 0.0005 0.0512 +vn -1.0000 0.0021 0.0000 +vn -0.9198 0.3923 -0.0002 +vn -0.8535 0.5212 0.0001 +vn 0.1239 0.9740 0.1894 +vn 0.4932 0.8699 -0.0000 +vn -0.0000 0.9039 -0.4278 +vn 0.0000 0.8020 -0.5974 +vn -0.2691 0.9151 -0.3004 +vn -0.1559 0.0685 -0.9854 +vn 0.0000 0.2196 -0.9756 +vn 0.0000 0.2883 -0.9575 +vn -0.8561 0.5167 0.0000 +vn -0.2979 0.9546 0.0000 +vn -0.2469 0.9690 0.0000 +vn 0.0544 0.9985 0.0027 +vn 0.3979 0.9174 0.0029 +vn 0.1126 0.9936 0.0000 +vn 0.4235 0.9059 0.0029 +vn 0.9695 -0.2451 0.0000 +vn 0.8716 -0.4902 0.0000 +vn 0.4233 0.9060 0.0029 +vn 0.6497 0.7602 -0.0000 +vn -0.8837 0.4680 0.0000 +vn -0.6017 0.7987 -0.0000 +vn -0.8561 0.5168 0.0000 +vn -0.6934 0.7206 0.0000 +vn -0.8186 0.5743 0.0000 +vn 0.2692 0.9150 -0.3004 +vn 0.1831 0.9831 -0.0000 +vn 0.5496 0.8354 0.0000 +vn -0.2622 0.9451 0.1950 +vn -0.4802 0.8651 0.1452 +vn 0.3027 0.9480 -0.0986 +vn -0.3083 0.9299 -0.2006 +vn -0.2470 0.9690 0.0000 +vn 0.3052 0.9313 -0.1990 +vn -0.3051 0.9470 -0.1000 +vn 0.9878 0.0000 0.1556 +vn 0.4972 -0.8676 0.0000 +vn 0.9665 -0.2568 0.0000 +vn 0.8580 -0.5136 0.0000 +vn 0.0000 0.9980 0.0635 +vn 0.0000 0.9919 0.1269 +vn 0.8837 0.4681 0.0000 +vn 0.0000 0.6730 0.7397 +vn 0.0000 0.6239 0.7815 +vn 0.0000 0.8374 0.5466 +vn 0.0000 0.9284 0.3717 +vn 0.0000 0.1989 0.9800 +vn 0.0033 0.6337 -0.7736 +vn 0.0022 0.6323 -0.7747 +vn -0.0001 0.7210 -0.6930 +vn -0.0000 0.6324 -0.7747 +vn -0.2468 0.9691 0.0000 +vn 0.0000 0.6332 -0.7740 +vn -0.0001 0.4392 -0.8984 +vn 0.0028 0.4406 -0.8977 +vn 0.8561 0.5169 -0.0001 +vn 0.2691 0.9151 -0.3004 +vn 0.7948 0.6069 -0.0000 +vn 0.8561 0.5168 0.0000 +vn 0.9660 0.2584 0.0000 +vn 0.8561 0.5168 -0.0002 +vn 0.8561 0.5168 -0.0001 +vn -0.3763 -0.9265 0.0000 +vn 0.2486 -0.9686 0.0000 +vn 0.3737 0.9275 -0.0000 +vn -0.0001 0.2196 -0.9756 +vn 0.8837 0.4680 0.0000 +vn 0.7785 0.6276 -0.0000 +vn 0.9202 0.3915 0.0000 +vn 0.0000 -0.7520 0.6592 +vn -0.8561 0.5169 -0.0001 +vn -0.6262 0.7797 -0.0000 +vn -0.9883 0.0000 0.1528 +vn -0.9881 0.0006 0.1536 +vn -0.8580 -0.5136 -0.0000 +vn -0.0139 -0.0016 0.9999 +vn 0.0000 -0.0032 1.0000 +vn -0.9881 0.0014 0.1536 +vn 0.0000 0.9284 0.3716 +vn -0.0000 0.8374 0.5465 +vn -0.0022 0.6324 -0.7746 +vn -0.0027 0.6339 -0.7734 +vn -0.0015 0.4406 -0.8977 +vn -0.9660 0.2584 -0.0000 +vn -0.9665 -0.2568 -0.0000 +vn -0.3839 0.9234 0.0000 +vn -0.6994 0.7147 0.0000 +vn 0.0000 0.5725 0.8199 +vn 0.0000 0.5724 0.8200 +vn 0.0000 0.2878 -0.9577 +vn 0.0000 0.5513 -0.8343 +vn -0.3908 -0.9205 0.0007 +vn -0.3902 -0.9207 0.0000 +vn -0.9601 -0.2554 -0.1143 +vn -0.9472 -0.3207 0.0000 +vn -0.9978 0.0661 -0.0000 +vn -0.9978 -0.0662 0.0000 +vn -0.7523 -0.6588 -0.0000 +vn -0.8965 -0.4430 -0.0000 +vn -0.4430 -0.8965 0.0000 +vn -0.6588 -0.7523 0.0000 +vn -0.0661 -0.9978 0.0000 +vn -0.3207 -0.9472 0.0000 +vn 0.1802 -0.0001 0.9836 +vn 0.4855 -0.0001 0.8742 +vn 0.0662 -0.9978 0.0000 +vn 0.3827 -0.9239 0.0000 +vn 0.3828 -0.9238 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.8510 -0.0001 0.5252 +vn 0.9649 0.0000 0.2626 +vn 0.9715 0.0000 -0.2369 +vn 0.8806 -0.0000 -0.4739 +vn 0.8965 -0.4430 -0.0000 +vn 0.9472 -0.3207 0.0000 +vn 0.9978 0.0662 -0.0000 +vn 0.9978 -0.0662 0.0000 +vn 0.8965 0.4430 -0.0000 +vn 0.9472 0.3207 0.0000 +vn 0.6588 0.7523 0.0000 +vn 0.7523 0.6588 0.0001 +vn 0.3207 0.9472 0.0000 +vn 0.4430 0.8965 0.0000 +vn -0.0662 0.9978 0.0000 +vn 0.0661 0.9978 0.0000 +vn -0.0661 0.9978 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.3829 0.9238 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.4068 0.0000 -0.9135 +vn -0.8965 0.4430 0.0000 +vn -0.9472 0.3207 0.0000 +vn 0.0000 0.2895 -0.9572 +vn -0.3241 -0.0000 -0.9460 +vn -0.0000 0.2399 -0.9708 +vn 0.0000 0.5962 -0.8028 +vn -0.0000 0.5087 -0.8609 +vn 0.0000 0.4166 -0.9091 +vn -0.2336 0.0000 0.9723 +vn 0.3531 0.0000 0.9356 +vn 0.9112 -0.0000 0.4119 +vn 0.0000 0.8520 0.5235 +vn -0.0003 0.7892 0.6142 +vn 0.0000 0.1917 0.9814 +vn -0.0000 0.7892 0.6142 +vn 0.0000 0.4287 0.9035 +vn 0.0000 0.6411 0.7674 +vn 0.0000 0.5534 0.8329 +vn 0.0000 0.8920 0.4521 +vn 0.0000 0.8459 0.5334 +vn 0.0000 0.9771 0.2126 +vn 0.0000 0.9896 0.1439 +vn 0.0000 0.9979 0.0648 +vn 0.0000 0.9977 0.0682 +vn 0.0000 0.9974 0.0716 +vn 0.9695 -0.2451 -0.0001 +vn -0.0111 0.0273 -0.9996 +vn -0.0194 0.0258 -0.9995 +vn -0.0030 0.0101 -0.9999 +vn 0.0000 0.0008 -1.0000 +vn -0.0005 0.0005 -1.0000 +vn -0.0009 -0.0000 -1.0000 +vn -0.0148 -0.0140 -0.9998 +vn -0.0127 -0.0131 -0.9998 +vn -0.0055 -0.0061 -1.0000 +vn -0.0004 -0.0004 -1.0000 +vn 0.0004 0.0004 -1.0000 +vn -0.0138 0.0348 -0.9993 +vn -0.0152 -0.0072 -0.9999 +vn 0.0000 0.2527 0.9675 +vn -0.9588 0.2841 -0.0000 +vn -0.8386 0.5448 0.0000 +vn -0.4855 0.0000 0.8742 +vn -0.2428 0.0000 0.9701 +vn -0.8510 0.0000 0.5252 +vn -0.9715 0.0001 -0.2369 +vn -0.9649 0.0000 0.2626 +vn -0.9715 0.0000 -0.2370 +vn -0.8806 -0.0000 -0.4739 +vn -0.4068 0.0000 -0.9135 +vn 0.0000 0.8521 0.5234 +vn -0.4670 -0.0000 0.8842 +vn -0.6588 0.7523 0.0000 +vn -0.7523 0.6588 0.0000 +vn -0.3207 0.9472 0.0000 +vn -0.4430 0.8965 0.0000 +vn 0.6588 -0.7523 0.0000 +vn 0.3207 -0.9472 0.0000 +vn 0.4430 -0.8965 0.0000 +vn 0.7523 -0.6588 0.0000 +vn 0.7523 0.6588 0.0000 +vn 0.9978 -0.0661 0.0000 +vn 0.9978 0.0661 0.0000 +vn -0.9978 -0.0661 0.0000 +vn 0.0661 -0.9978 0.0000 +vn -0.0001 -0.8629 -0.5054 +vn -0.0000 -0.9675 -0.2527 +vn -0.0001 -0.5054 -0.8629 +vn -0.0000 0.2527 -0.9675 +vn 0.0000 0.5054 -0.8629 +vn 0.0000 -0.2527 -0.9675 +vn 0.0000 0.9675 -0.2527 +vn 0.0001 0.8629 -0.5054 +vn -1.0000 0.0000 -0.0068 +vn -1.0000 0.0000 -0.0028 +vn 0.0000 -0.3821 0.9241 +vn 0.3738 0.9275 -0.0000 +vn 0.0001 0.7210 -0.6930 +vn 0.7948 0.6069 -0.0002 +vn -0.6262 0.7797 -0.0001 +vn 0.0000 -0.9849 0.1731 +vn -0.9987 0.0000 0.0512 +vn -1.0000 0.0026 0.0000 +vn 0.0662 0.9978 -0.0000 +vn 0.9715 0.0000 -0.2370 +s off +f 61/61/19 62/62/19 63/63/19 +f 64/64/20 65/65/20 66/66/20 +f 67/67/21 68/68/21 69/69/21 +f 70/70/21 71/71/21 72/72/21 +f 73/73/22 74/74/22 75/75/22 +f 67/67/23 76/76/24 77/77/23 +f 78/78/25 79/79/25 80/80/25 +f 81/81/26 82/82/26 83/83/26 +f 84/84/27 85/85/27 86/86/27 +f 81/81/26 83/83/26 87/87/26 +f 88/88/21 89/89/21 90/90/21 +f 91/91/28 92/92/28 93/93/28 +f 94/94/29 95/95/29 96/96/29 +f 96/96/29 97/97/29 94/94/29 +f 98/98/26 81/81/26 99/99/26 +f 100/100/26 101/101/26 98/98/26 +f 71/71/21 102/102/21 103/103/21 +f 104/104/19 105/105/19 106/106/19 +f 107/107/26 108/108/26 109/109/26 +f 110/110/26 111/111/26 112/112/26 +f 100/100/26 98/98/26 99/99/26 +f 113/113/19 114/114/19 115/115/19 +f 115/115/19 116/116/19 113/113/19 +f 117/117/26 118/118/26 119/119/26 +f 120/120/21 121/121/21 122/122/21 +f 105/105/19 123/123/19 106/106/19 +f 124/124/29 125/125/29 126/126/29 +f 111/111/26 87/87/26 112/112/26 +f 83/83/26 112/112/26 87/87/26 +f 98/98/26 127/127/26 81/81/26 +f 112/112/26 128/128/26 110/110/26 +f 129/129/29 130/130/29 131/131/29 +f 132/132/19 106/106/19 123/123/19 +f 133/133/19 134/134/19 135/135/19 +f 136/136/29 137/137/29 138/138/29 +f 139/139/30 140/140/30 141/141/30 +f 142/142/30 143/143/30 140/140/30 +f 112/112/26 109/109/26 108/108/26 +f 144/144/26 145/145/26 128/128/26 +f 146/146/26 147/147/26 145/145/26 +f 148/148/21 149/149/21 150/150/21 +f 151/151/20 152/152/20 153/153/20 +f 154/154/20 155/155/20 156/156/20 +f 157/157/20 158/158/20 159/159/20 +f 160/160/26 161/161/26 162/162/26 +f 163/163/26 164/164/26 165/165/26 +f 166/166/20 167/167/20 168/168/20 +f 169/169/20 168/168/20 170/170/20 +f 171/171/20 172/172/20 173/173/20 +f 174/174/26 175/175/26 119/119/26 +f 176/176/26 177/177/26 178/178/26 +f 179/179/26 180/180/26 145/145/26 +f 181/181/20 182/182/20 183/183/20 +f 184/184/31 185/185/31 186/186/31 +f 187/187/29 188/188/29 189/189/29 +f 147/147/26 146/146/26 190/190/26 +f 191/191/32 192/192/32 193/193/32 +f 194/194/20 195/195/20 196/196/20 +f 197/197/29 198/198/29 199/199/29 +f 200/200/27 201/201/27 191/191/27 +f 202/202/33 203/203/33 204/204/33 +f 205/205/21 206/206/21 207/207/21 +f 208/208/20 209/209/20 210/210/20 +f 211/211/20 212/212/20 213/213/20 +f 214/214/29 215/215/29 216/216/29 +f 101/101/26 217/217/26 98/98/26 +f 218/218/34 219/219/34 220/220/34 +f 221/221/34 222/222/34 223/223/34 +f 224/224/20 225/225/20 226/226/20 +f 227/227/20 228/228/20 229/229/20 +f 230/230/29 231/231/29 232/232/29 +f 229/229/20 213/213/20 227/227/20 +f 233/233/35 234/234/35 235/235/35 +f 236/236/33 237/237/33 238/238/33 +f 239/239/20 240/240/20 241/241/20 +f 242/242/33 235/235/33 234/234/33 +f 243/243/22 244/244/22 245/245/22 +f 246/246/36 247/247/36 248/248/36 +f 249/249/29 250/250/29 251/251/29 +f 252/252/19 253/253/19 123/123/19 +f 254/254/37 255/255/37 256/256/37 +f 101/101/26 257/257/26 217/217/26 +f 178/178/26 258/258/26 119/119/26 +f 145/145/26 147/147/26 119/119/26 +f 144/144/26 259/259/26 260/260/26 +f 261/261/26 174/174/26 119/119/26 +f 119/119/26 262/262/26 263/263/26 +f 264/264/26 262/262/26 119/119/26 +f 264/264/26 258/258/26 265/265/26 +f 266/266/20 267/267/20 268/268/20 +f 173/173/20 266/266/20 269/269/20 +f 270/270/20 167/167/20 166/166/20 +f 259/259/26 271/271/26 260/260/26 +f 272/272/26 273/273/26 274/274/26 +f 275/275/26 259/259/26 144/144/26 +f 276/276/20 277/277/20 278/278/20 +f 279/279/20 280/280/20 281/281/20 +f 282/282/29 283/283/29 284/284/29 +f 285/285/29 286/286/29 287/287/29 +f 288/288/21 289/289/21 290/290/21 +f 291/291/33 292/292/33 293/293/33 +f 294/294/20 295/295/20 296/296/20 +f 297/297/20 298/298/20 299/299/20 +f 107/107/26 82/82/26 161/161/26 +f 300/300/35 292/292/35 291/291/35 +f 301/301/19 302/302/19 303/303/19 +f 304/304/19 305/305/19 306/306/19 +f 307/307/20 308/308/20 309/309/20 +f 127/127/26 161/161/26 82/82/26 +f 310/310/20 311/311/20 312/312/20 +f 313/313/29 314/314/29 315/315/29 +f 162/162/26 161/161/26 127/127/26 +f 316/316/34 317/317/34 318/318/34 +f 319/319/34 320/320/34 321/321/34 +f 322/322/20 323/323/20 324/324/20 +f 325/325/20 326/326/20 311/311/20 +f 327/327/29 328/328/29 329/329/29 +f 312/312/20 311/311/20 326/326/20 +f 330/330/19 331/331/19 332/332/19 +f 333/333/32 334/334/32 335/335/32 +f 260/260/26 336/336/26 274/274/26 +f 337/337/26 260/260/26 273/273/26 +f 338/338/20 339/339/20 340/340/20 +f 341/341/19 342/342/19 330/330/19 +f 343/343/22 344/344/22 345/345/22 +f 346/346/26 337/337/26 347/347/26 +f 348/348/26 349/349/26 260/260/26 +f 350/350/29 351/351/29 352/352/29 +f 353/353/26 260/260/26 349/349/26 +f 354/354/21 355/355/21 356/356/21 +f 163/163/26 336/336/26 260/260/26 +f 357/357/29 358/358/29 359/359/29 +f 95/95/29 360/360/29 358/358/29 +f 95/95/29 94/94/29 360/360/29 +f 361/361/19 362/362/19 363/363/19 +f 364/364/21 365/365/21 366/366/21 +f 367/367/29 368/368/29 369/369/29 +f 370/370/29 371/371/29 372/372/29 +f 373/373/29 374/374/29 372/372/29 +f 151/151/20 153/153/20 375/375/20 +f 376/376/19 377/377/19 378/378/19 +f 358/358/29 379/379/29 359/359/29 +f 380/380/30 381/381/30 382/382/30 +f 383/383/29 384/384/29 385/385/29 +f 386/386/29 387/387/29 388/388/29 +f 389/389/20 390/390/20 391/391/20 +f 392/392/30 393/393/30 394/394/30 +f 395/395/21 396/396/21 397/397/21 +f 398/398/30 399/399/30 400/400/30 +f 400/400/30 401/401/30 398/398/30 +f 402/402/19 403/403/19 404/404/19 +f 405/405/19 406/406/19 407/407/19 +f 408/408/30 409/409/30 410/410/30 +f 378/378/19 134/134/19 133/133/19 +f 109/109/26 82/82/26 107/107/26 +f 411/411/20 412/412/20 413/413/20 +f 414/414/20 411/411/20 413/413/20 +f 415/415/20 414/414/20 413/413/20 +f 376/376/19 378/378/19 133/133/19 +f 412/412/20 416/416/20 413/413/20 +f 417/417/29 418/418/29 419/419/29 +f 419/419/29 418/418/29 420/420/29 +f 421/421/29 422/422/29 423/423/29 +f 424/424/29 425/425/29 421/421/29 +f 131/131/29 425/425/29 426/426/29 +f 427/427/29 428/428/29 130/130/29 +f 429/429/29 430/430/29 428/428/29 +f 431/431/29 420/420/29 430/430/29 +f 432/432/29 429/429/29 428/428/29 +f 427/427/29 432/432/29 428/428/29 +f 129/129/29 433/433/29 130/130/29 +f 434/434/29 426/426/29 425/425/29 +f 424/424/29 434/434/29 425/425/29 +f 435/435/29 424/424/29 421/421/29 +f 436/436/29 423/423/29 422/422/29 +f 437/437/29 436/436/29 422/422/29 +f 437/437/29 422/422/29 420/420/29 +f 431/431/29 438/438/29 420/420/29 +f 429/429/29 439/439/29 430/430/29 +f 440/440/29 417/417/29 419/419/29 +f 422/422/29 419/419/29 420/420/29 +f 435/435/29 421/421/29 423/423/29 +f 441/441/29 131/131/29 426/426/29 +f 433/433/29 427/427/29 130/130/29 +f 439/439/29 431/431/29 430/430/29 +f 438/438/29 437/437/29 420/420/29 +f 441/441/29 129/129/29 131/131/29 +f 442/442/19 443/443/19 444/444/19 +f 127/127/26 82/82/26 81/81/26 +f 445/445/20 446/446/20 447/447/20 +f 448/448/38 449/449/38 450/450/38 +f 451/451/26 452/452/26 453/453/26 +f 454/454/26 455/455/26 456/456/26 +f 457/457/30 458/458/30 459/459/30 +f 460/460/21 69/69/21 68/68/21 +f 388/388/29 461/461/29 367/367/29 +f 383/383/29 385/385/29 388/388/29 +f 462/462/20 463/463/20 464/464/20 +f 462/462/20 465/465/20 466/466/20 +f 467/467/26 468/468/26 469/469/26 +f 470/470/21 471/471/21 395/395/21 +f 472/472/30 473/473/30 474/474/30 +f 475/475/30 472/472/30 476/476/30 +f 66/66/20 65/65/20 477/477/20 +f 478/478/21 479/479/21 480/480/21 +f 465/465/20 481/481/20 482/482/20 +f 483/483/19 484/484/19 485/485/19 +f 486/486/21 487/487/21 488/488/21 +f 489/489/30 490/490/30 491/491/30 +f 492/492/19 485/485/19 484/484/19 +f 493/493/30 494/494/30 495/495/30 +f 496/496/30 495/495/30 494/494/30 +f 497/497/19 498/498/19 499/499/19 +f 497/497/19 63/63/19 498/498/19 +f 66/66/20 390/390/20 500/500/20 +f 390/390/20 389/389/20 500/500/20 +f 501/501/29 138/138/29 502/502/29 +f 503/503/21 504/504/21 505/505/21 +f 506/506/21 505/505/21 504/504/21 +f 507/507/21 506/506/21 504/504/21 +f 64/64/20 66/66/20 500/500/20 +f 508/508/29 501/501/29 502/502/29 +f 509/509/21 503/503/21 505/505/21 +f 497/497/19 61/61/19 63/63/19 +f 501/501/29 136/136/29 138/138/29 +f 510/510/29 511/511/29 512/512/29 +f 513/513/29 511/511/29 514/514/29 +f 512/512/29 511/511/29 515/515/29 +f 515/515/29 511/511/29 516/516/29 +f 517/517/29 511/511/29 513/513/29 +f 516/516/29 511/511/29 518/518/29 +f 518/518/29 511/511/29 519/519/29 +f 520/520/29 511/511/29 517/517/29 +f 519/519/29 511/511/29 521/521/29 +f 521/521/29 511/511/29 522/522/29 +f 522/522/29 511/511/29 520/520/29 +f 523/523/29 511/511/29 510/510/29 +f 514/514/29 511/511/29 524/524/29 +f 525/525/29 511/511/29 523/523/29 +f 524/524/29 511/511/29 526/526/29 +f 526/526/29 511/511/29 525/525/29 +f 527/527/21 528/528/21 529/529/21 +f 530/530/21 531/531/21 529/529/21 +f 532/532/29 533/533/29 534/534/29 +f 76/76/21 67/67/21 69/69/21 +f 535/535/21 70/70/21 72/72/21 +f 536/536/22 73/73/22 75/75/22 +f 537/537/23 67/67/23 77/77/23 +f 538/538/25 78/78/25 80/80/25 +f 539/539/21 88/88/21 90/90/21 +f 90/90/21 540/540/21 539/539/21 +f 72/72/21 71/71/21 103/103/21 +f 541/541/29 124/124/29 126/126/29 +f 253/253/19 132/132/19 123/123/19 +f 542/542/30 139/139/30 141/141/30 +f 139/139/30 142/142/30 140/140/30 +f 128/128/26 112/112/26 108/108/26 +f 108/108/26 144/144/26 128/128/26 +f 144/144/26 146/146/26 145/145/26 +f 159/159/20 154/154/20 156/156/20 +f 156/156/20 157/157/20 159/159/20 +f 336/336/26 163/163/26 165/165/26 +f 169/169/20 166/166/20 168/168/20 +f 543/543/20 169/169/20 170/170/20 +f 544/544/20 171/171/20 173/173/20 +f 118/118/26 176/176/26 178/178/26 +f 175/175/26 179/179/26 145/145/26 +f 545/545/20 181/181/20 183/183/20 +f 546/546/31 184/184/31 186/186/31 +f 547/547/29 187/187/29 189/189/29 +f 548/548/26 147/147/26 190/190/26 +f 200/200/32 191/191/32 193/193/32 +f 549/549/20 194/194/20 196/196/20 +f 550/550/29 197/197/29 199/199/29 +f 551/551/33 202/202/33 204/204/33 +f 552/552/21 205/205/21 207/207/21 +f 553/553/20 208/208/20 210/210/20 +f 229/229/20 211/211/20 213/213/20 +f 554/554/29 214/214/29 216/216/29 +f 555/555/34 218/218/34 220/220/34 +f 556/556/34 221/221/34 223/223/34 +f 557/557/20 224/224/20 226/226/20 +f 558/558/29 230/230/29 232/232/29 +f 559/559/33 236/236/33 238/238/33 +f 560/560/20 239/239/20 241/241/20 +f 561/561/33 242/242/33 234/234/33 +f 562/562/22 243/243/22 245/245/22 +f 563/563/36 246/246/36 248/248/36 +f 564/564/29 249/249/29 251/251/29 +f 565/565/37 254/254/37 256/256/37 +f 118/118/26 178/178/26 119/119/26 +f 175/175/26 145/145/26 119/119/26 +f 146/146/26 144/144/26 260/260/26 +f 263/263/26 261/261/26 119/119/26 +f 258/258/26 264/264/26 119/119/26 +f 566/566/26 264/264/26 265/265/26 +f 269/269/20 266/266/20 268/268/20 +f 544/544/20 173/173/20 269/269/20 +f 567/567/20 270/270/20 166/166/20 +f 568/568/26 272/272/26 274/274/26 +f 569/569/26 275/275/26 144/144/26 +f 570/570/20 276/276/20 278/278/20 +f 571/571/20 279/279/20 281/281/20 +f 572/572/29 282/282/29 284/284/29 +f 573/573/29 285/285/29 287/287/29 +f 574/574/21 288/288/21 290/290/21 +f 575/575/33 291/291/33 293/293/33 +f 576/576/20 294/294/20 296/296/20 +f 577/577/20 297/297/20 299/299/20 +f 578/578/26 107/107/26 161/161/26 +f 579/579/19 301/301/19 303/303/19 +f 580/580/19 304/304/19 306/306/19 +f 581/581/20 307/307/20 309/309/20 +f 582/582/20 310/310/20 312/312/20 +f 583/583/29 313/313/29 315/315/29 +f 584/584/34 316/316/34 318/318/34 +f 585/585/34 319/319/34 321/321/34 +f 586/586/20 322/322/20 324/324/20 +f 587/587/29 327/327/29 329/329/29 +f 588/588/32 333/333/32 335/335/32 +f 273/273/26 260/260/26 274/274/26 +f 347/347/26 337/337/26 273/273/26 +f 589/589/20 338/338/20 340/340/20 +f 332/332/19 341/341/19 330/330/19 +f 590/590/22 343/343/22 345/345/22 +f 591/591/26 346/346/26 347/347/26 +f 271/271/26 348/348/26 260/260/26 +f 592/592/29 350/350/29 352/352/29 +f 593/593/21 594/594/21 595/595/21 +f 596/596/21 354/354/21 356/356/21 +f 353/353/26 163/163/26 260/260/26 +f 357/357/29 95/95/29 358/358/29 +f 597/597/19 361/361/19 363/363/19 +f 598/598/21 364/364/21 366/366/21 +f 383/383/29 367/367/29 369/369/29 +f 371/371/29 373/373/29 372/372/29 +f 599/599/20 151/151/20 375/375/20 +f 600/600/30 380/380/30 382/382/30 +f 385/385/29 386/386/29 388/388/29 +f 601/601/30 392/392/30 394/394/30 +f 602/602/19 402/402/19 404/404/19 +f 603/603/19 405/405/19 407/407/19 +f 604/604/30 408/408/30 410/410/30 +f 605/605/19 442/442/19 444/444/19 +f 606/606/20 445/445/20 447/447/20 +f 607/607/38 448/448/38 450/450/38 +f 608/608/26 451/451/26 453/453/26 +f 609/609/26 454/454/26 456/456/26 +f 610/610/30 457/457/30 459/459/30 +f 611/611/21 460/460/21 68/68/21 +f 367/367/29 383/383/29 388/388/29 +f 612/612/20 462/462/20 464/464/20 +f 463/463/20 462/462/20 466/466/20 +f 613/613/26 467/467/26 469/469/26 +f 397/397/21 470/470/21 395/395/21 +f 476/476/30 472/472/30 474/474/30 +f 614/614/30 475/475/30 476/476/30 +f 615/615/21 478/478/21 480/480/21 +f 466/466/20 465/465/20 482/482/20 +f 616/616/19 483/483/19 485/485/19 +f 617/617/21 486/486/21 488/488/21 +f 618/618/30 489/489/30 491/491/30 +f 619/619/21 527/527/21 529/529/21 +f 528/528/21 530/530/21 529/529/21 +f 620/620/29 532/532/29 534/534/29 +s 1 +f 621/621/39 622/622/40 623/623/41 +f 623/623/41 624/624/42 360/360/29 +f 625/625/43 626/626/43 627/627/44 +f 628/628/45 153/153/20 152/152/20 +f 629/629/46 630/630/47 631/631/21 +f 632/632/48 633/633/48 634/634/49 +f 635/635/21 636/636/50 637/637/51 +f 540/540/21 638/638/52 539/539/21 +f 639/639/53 640/640/54 92/92/19 +f 641/641/55 626/626/43 625/625/43 +f 642/642/56 643/643/19 644/644/19 +f 116/116/19 115/115/19 645/645/57 +f 645/645/57 646/646/19 116/116/19 +f 644/644/19 104/104/19 647/647/58 +f 104/104/19 106/106/19 647/647/58 +f 118/118/26 117/117/26 648/648/59 +f 649/649/26 650/650/60 648/648/59 +f 642/642/56 644/644/19 647/647/58 +f 651/651/61 652/652/62 653/653/63 +f 654/654/64 655/655/65 656/656/66 +f 657/657/67 658/658/68 659/659/69 +f 660/660/70 661/661/70 507/507/21 +f 662/662/71 663/663/19 664/664/19 +f 665/665/72 666/666/72 662/662/71 +f 667/667/73 668/668/74 669/669/75 +f 670/670/76 671/671/77 672/672/78 +f 673/673/73 674/674/79 675/675/80 +f 676/676/81 677/677/82 678/678/83 +f 679/679/84 680/680/85 681/681/86 +f 672/672/78 682/682/56 683/683/19 +f 684/684/19 685/685/19 686/686/87 +f 683/687/19 684/684/19 686/686/87 +f 687/688/88 688/689/89 689/690/21 +f 690/691/90 691/692/91 688/693/89 +f 687/688/88 689/690/21 148/148/21 +f 692/694/92 693/695/93 694/696/30 +f 695/697/94 696/698/95 697/699/96 +f 628/628/45 698/700/97 673/673/73 +f 699/701/98 312/312/20 326/326/20 +f 375/375/20 700/702/99 599/599/20 +f 701/703/21 702/704/50 703/705/100 +f 704/706/101 705/707/102 706/708/30 +f 707/709/103 708/710/104 704/706/101 +f 707/709/103 709/711/105 710/712/106 +f 711/713/107 712/714/108 377/377/19 +f 686/686/87 713/715/109 670/716/76 +f 714/717/87 715/718/110 708/710/104 +f 716/719/30 706/708/30 705/707/102 +f 717/720/111 718/721/50 719/722/112 +f 720/723/113 721/724/114 719/722/112 +f 704/706/101 719/722/112 721/724/114 +f 722/725/115 720/723/113 719/722/112 +f 723/726/116 724/727/117 725/728/118 +f 726/729/92 727/730/119 728/731/120 +f 729/732/121 730/733/122 731/734/123 +f 732/735/19 733/736/53 734/737/53 +f 735/738/124 736/739/125 730/740/122 +f 647/647/58 737/741/56 738/742/126 +f 739/743/127 740/744/128 741/745/129 +f 723/726/116 742/746/94 743/747/30 +f 672/672/78 686/748/87 670/670/76 +f 672/672/78 671/671/77 744/749/124 +f 745/750/95 746/751/30 747/752/30 +f 748/753/130 749/754/131 750/755/30 +f 672/672/78 751/756/19 752/757/126 +f 753/758/19 754/759/19 755/760/132 +f 756/761/133 757/762/134 758/763/135 +f 759/764/136 758/763/135 749/754/131 +f 760/765/29 761/766/29 762/767/137 +f 763/768/138 764/769/139 765/770/140 +f 766/771/141 696/698/95 765/770/140 +f 767/772/30 768/773/142 724/727/117 +f 766/771/141 769/774/143 770/775/144 +f 771/776/98 764/769/139 772/777/145 +f 764/769/139 769/774/143 765/770/140 +f 773/778/146 645/645/57 115/115/19 +f 765/770/140 774/779/147 763/768/138 +f 743/747/30 724/727/117 723/726/116 +f 734/737/53 733/736/53 775/780/148 +f 776/781/149 777/782/150 778/783/148 +f 779/784/112 780/785/110 781/786/118 +f 782/787/150 783/788/151 784/789/19 +f 764/769/139 763/768/138 772/777/145 +f 785/790/150 786/791/152 787/792/19 +f 788/793/19 789/794/19 790/795/132 +f 791/796/150 792/797/149 252/252/19 +f 793/798/77 728/731/120 736/739/125 +f 794/799/153 739/743/127 795/800/154 +f 740/744/128 796/801/19 797/802/19 +f 798/803/121 799/804/155 672/672/78 +f 670/716/76 693/695/93 671/805/77 +f 757/762/134 756/761/133 800/806/42 +f 801/807/19 802/808/19 803/809/132 +f 804/810/20 805/811/20 806/812/156 +f 765/770/140 807/813/94 774/779/147 +f 771/776/98 772/777/145 227/227/20 +f 808/814/19 809/815/19 810/816/132 +f 811/817/19 812/818/53 813/819/53 +f 252/252/19 123/123/19 791/796/150 +f 814/820/157 775/780/148 715/718/110 +f 815/821/157 816/822/158 715/718/110 +f 645/645/57 773/778/146 725/728/118 +f 816/822/158 817/823/159 725/728/118 +f 783/788/151 782/787/150 816/822/158 +f 818/824/148 815/821/157 715/718/110 +f 786/791/152 785/790/150 818/824/148 +f 819/825/157 820/826/148 715/718/110 +f 813/819/53 812/818/53 820/826/148 +f 775/780/148 819/825/157 715/718/110 +f 714/717/87 778/783/148 715/718/110 +f 821/827/60 822/828/160 823/829/160 +f 824/830/96 825/831/161 826/832/162 +f 71/71/21 827/833/163 828/834/163 +f 826/832/162 829/835/50 830/836/113 +f 831/837/47 832/838/46 826/832/162 +f 833/839/47 834/840/47 835/841/21 +f 832/838/46 829/835/50 826/832/162 +f 828/834/163 827/833/163 836/842/164 +f 794/799/153 837/843/153 838/844/165 +f 839/845/94 824/830/96 767/772/30 +f 691/692/91 690/691/90 728/846/120 +f 728/846/120 690/691/90 736/847/125 +f 840/848/166 841/849/167 656/656/66 +f 652/652/62 651/651/61 842/850/29 +f 710/712/106 708/710/104 707/709/103 +f 843/851/130 844/852/30 845/853/30 +f 690/691/90 687/854/88 846/855/168 +f 847/856/21 848/857/113 638/638/52 +f 621/621/39 849/858/169 850/859/170 +f 849/858/169 843/851/130 851/860/131 +f 852/861/113 830/836/113 829/835/50 +f 853/862/171 854/863/172 696/698/95 +f 848/857/113 717/720/111 855/864/50 +f 853/862/171 699/701/98 856/865/173 +f 766/771/141 853/862/171 696/698/95 +f 831/837/47 825/831/161 595/595/21 +f 697/699/96 696/698/95 854/863/172 +f 768/773/142 767/772/30 824/830/96 +f 833/839/47 722/725/115 718/721/50 +f 629/629/46 721/724/114 720/723/113 +f 857/866/174 858/867/21 859/868/21 +f 854/863/172 853/862/171 856/865/173 +f 860/869/174 861/870/21 862/871/21 +f 594/594/21 831/837/47 595/595/21 +f 830/836/113 863/872/50 719/722/112 +f 864/873/113 865/874/111 863/872/50 +f 866/875/175 838/844/165 867/876/21 +f 730/733/122 736/847/125 690/691/90 +f 868/877/21 869/878/50 870/879/47 +f 871/880/176 872/881/177 728/731/120 +f 621/621/39 623/623/41 873/882/178 +f 874/883/113 875/884/115 876/885/21 +f 855/864/50 717/720/111 719/722/112 +f 685/685/19 877/886/19 686/686/87 +f 698/700/97 674/674/79 673/673/73 +f 377/377/19 376/376/19 711/713/107 +f 622/622/40 878/887/179 624/624/42 +f 700/702/99 879/888/180 880/889/181 +f 700/702/99 375/375/20 879/888/180 +f 881/890/182 882/891/183 883/892/26 +f 884/893/43 885/894/26 886/895/26 +f 712/714/108 711/713/107 884/893/43 +f 679/679/84 681/681/86 887/896/183 +f 871/880/176 727/730/119 726/729/92 +f 688/693/89 687/854/88 690/691/90 +f 693/695/93 692/694/92 671/805/77 +f 668/668/74 888/897/184 681/681/86 +f 680/680/85 889/898/21 890/899/21 +f 668/668/74 667/667/73 888/897/184 +f 669/669/75 627/627/44 667/667/73 +f 891/900/185 892/901/186 893/902/187 +f 894/903/188 891/900/185 895/904/189 +f 896/905/190 894/903/188 897/906/191 +f 898/907/192 896/905/190 899/908/193 +f 900/909/194 901/910/195 508/508/29 +f 902/911/196 903/912/197 904/913/198 +f 905/914/199 906/915/199 904/913/198 +f 907/916/200 908/917/201 901/910/195 +f 909/918/202 910/919/203 908/917/201 +f 911/920/204 906/915/199 905/914/199 +f 912/921/205 913/922/206 914/923/207 +f 913/922/206 915/924/208 916/925/209 +f 915/924/208 917/926/210 918/927/211 +f 917/926/210 919/928/212 920/929/213 +f 919/928/212 921/930/214 922/931/215 +f 923/932/216 924/933/217 925/934/218 +f 926/935/219 927/936/219 925/934/218 +f 928/937/220 929/938/220 930/939/203 +f 931/940/221 927/936/219 926/935/219 +f 892/901/186 931/940/221 932/941/222 +f 928/937/220 933/942/223 929/938/220 +f 934/943/224 935/944/225 933/942/223 +f 936/945/226 937/946/227 933/942/223 +f 938/947/228 939/948/228 937/946/227 +f 940/949/229 941/950/230 942/951/230 +f 943/952/231 944/953/231 942/951/230 +f 945/954/232 946/955/233 947/956/30 +f 948/957/234 949/958/235 950/959/236 +f 951/960/237 952/961/238 950/959/236 +f 949/958/235 953/962/239 951/960/237 +f 954/963/240 953/962/239 949/958/235 +f 955/964/241 956/965/242 953/962/239 +f 957/966/243 958/967/243 959/968/244 +f 960/969/245 959/968/244 956/965/242 +f 135/135/19 641/641/55 961/970/246 +f 962/971/247 658/658/68 963/972/248 +f 964/973/249 965/974/250 962/971/247 +f 966/975/251 967/976/252 965/974/250 +f 415/415/20 413/413/20 967/976/252 +f 416/416/20 659/659/69 413/413/20 +f 968/977/253 657/657/67 659/659/69 +f 969/978/254 968/977/253 659/659/69 +f 970/979/255 969/978/254 659/659/69 +f 416/416/20 970/979/255 659/659/69 +f 971/980/256 415/415/20 967/976/252 +f 966/975/251 971/980/256 967/976/252 +f 964/973/249 972/981/257 965/974/250 +f 973/982/258 964/973/249 962/971/247 +f 974/983/259 963/972/248 658/658/68 +f 657/657/67 974/983/259 658/658/68 +f 133/133/19 135/135/19 961/970/246 +f 973/982/258 962/971/247 963/972/248 +f 972/981/257 966/975/251 965/974/250 +f 653/653/63 654/654/64 975/984/260 +f 632/632/48 460/460/21 611/611/21 +f 976/985/51 977/986/48 978/987/21 +f 979/988/29 980/989/29 948/957/234 +f 981/990/261 982/991/261 983/992/21 +f 984/993/262 982/991/261 981/990/261 +f 985/994/263 986/995/264 502/502/29 +f 987/996/265 986/995/264 985/994/263 +f 988/997/266 987/996/265 989/998/267 +f 934/943/224 990/999/268 991/1000/269 +f 935/944/225 934/943/224 992/1001/270 +f 954/963/240 993/1002/271 994/1003/237 +f 660/660/70 940/949/229 995/1004/272 +f 996/1005/29 997/1006/236 998/1007/234 +f 993/1002/271 998/1007/234 997/1006/236 +f 994/1003/237 993/1002/271 997/1006/236 +f 499/499/19 944/953/231 943/952/231 +f 502/502/29 986/995/264 900/909/194 +f 497/497/19 499/499/19 943/952/231 +f 508/508/29 502/502/29 900/909/194 +f 504/504/21 660/660/70 507/507/21 +f 820/826/148 999/1008/157 715/718/110 +f 816/822/158 725/728/118 715/718/110 +f 863/872/50 865/874/111 719/722/112 +f 830/836/113 719/722/112 826/832/162 +f 1000/1009/221 1001/1010/273 1002/1011/274 +f 1001/1010/273 1003/1012/275 1004/1013/276 +f 1005/1014/277 1006/1015/278 1007/1016/279 +f 1003/1012/275 1008/1017/215 1009/1018/216 +f 1008/1017/215 1010/1019/213 1011/1020/212 +f 1012/1021/204 1005/1014/277 1013/1022/280 +f 1010/1019/213 1014/1023/281 1015/1024/210 +f 1014/1023/281 1016/1025/209 1017/1026/208 +f 1018/1027/282 1012/1021/204 1019/1028/205 +f 1016/1025/209 1018/1027/282 1020/1029/283 +f 1021/1030/190 1022/1031/188 1023/1032/191 +f 1024/1033/185 1025/1034/186 1026/1035/284 +f 1027/1036/192 1021/1030/190 1028/1037/193 +f 1006/1015/278 1027/1036/192 1029/1038/285 +f 1025/1034/186 1000/1009/221 1030/1039/222 +f 1022/1031/188 1024/1033/185 1031/1040/189 +f 1032/1041/286 1033/1042/287 1034/1043/288 +f 1035/1044/289 1036/1045/290 1037/1046/291 +f 1038/1047/292 1039/1048/293 1040/1049/30 +f 1041/1050/26 1042/1051/26 1033/1042/287 +f 1036/1045/290 1035/1044/289 1039/1048/293 +f 94/94/29 623/623/41 360/360/29 +f 669/669/75 625/625/43 627/627/44 +f 698/700/97 628/628/45 152/152/20 +f 1043/1052/21 629/629/46 631/631/21 +f 1044/1053/294 632/632/48 634/634/49 +f 1045/1054/21 635/635/21 637/637/51 +f 91/91/19 639/639/53 92/92/19 +f 961/970/246 641/641/55 625/625/43 +f 117/117/26 649/649/26 648/648/59 +f 1046/1055/295 120/120/21 122/122/21 +f 1047/1056/296 651/651/61 653/653/63 +f 975/984/260 654/654/64 656/656/66 +f 1048/1057/71 662/662/71 664/664/19 +f 1048/1057/71 665/665/72 662/662/71 +f 678/678/83 673/673/73 675/675/80 +f 675/675/80 676/676/81 678/678/83 +f 686/748/87 672/672/78 683/683/19 +f 150/150/21 687/688/88 148/148/21 +f 856/865/173 699/701/98 326/326/20 +f 1049/1058/21 701/703/21 703/705/100 +f 706/708/30 707/709/103 704/706/101 +f 710/712/106 714/717/87 708/710/104 +f 705/707/102 704/706/101 721/724/114 +f 718/721/50 722/725/115 719/722/112 +f 773/778/146 723/726/116 725/728/118 +f 793/798/77 726/729/92 728/731/120 +f 1050/1059/297 729/732/121 731/734/123 +f 1051/1060/19 732/735/19 734/737/53 +f 729/1061/121 735/738/124 730/740/122 +f 642/642/56 647/647/58 738/742/126 +f 795/800/154 739/743/127 741/745/129 +f 1052/1062/298 745/750/95 747/752/30 +f 1053/1063/30 748/753/130 750/755/30 +f 682/682/56 672/672/78 752/757/126 +f 1054/1064/299 753/758/19 755/760/132 +f 759/764/136 756/761/133 758/763/135 +f 748/753/130 759/764/136 749/754/131 +f 800/806/42 760/765/29 762/767/137 +f 769/774/143 766/771/141 765/770/140 +f 743/747/30 767/772/30 724/727/117 +f 806/812/156 766/771/141 770/775/144 +f 814/820/157 734/737/53 775/780/148 +f 714/717/87 776/781/149 778/783/148 +f 1055/1065/300 779/784/112 781/786/118 +f 1056/1066/19 782/787/150 784/789/19 +f 1057/1067/19 785/790/150 787/792/19 +f 1058/1068/299 788/793/19 790/795/132 +f 735/738/124 793/798/77 736/739/125 +f 837/843/153 794/799/153 795/800/154 +f 741/745/129 740/744/128 797/802/19 +f 744/749/124 798/803/121 672/672/78 +f 762/767/137 757/762/134 800/806/42 +f 1059/1069/148 801/807/19 803/809/132 +f 770/775/144 804/810/20 806/812/156 +f 213/213/20 771/776/98 227/227/20 +f 1060/1070/299 808/814/19 810/816/132 +f 1061/1071/19 811/817/19 813/819/53 +f 778/783/148 814/820/157 715/718/110 +f 817/823/159 645/645/57 725/728/118 +f 815/821/157 783/788/151 816/822/158 +f 999/1008/157 818/824/148 715/718/110 +f 999/1008/157 786/791/152 818/824/148 +f 819/825/157 813/819/53 820/826/148 +f 1062/1072/301 821/827/60 823/829/160 +f 768/773/142 824/830/96 826/832/162 +f 102/102/21 71/71/21 828/834/163 +f 825/831/161 831/837/47 826/832/162 +f 1063/1073/21 833/839/47 835/841/21 +f 1064/1074/302 828/834/163 836/842/164 +f 866/875/175 794/799/153 838/844/165 +f 872/881/177 691/1075/91 728/731/120 +f 655/655/65 840/848/166 656/656/66 +f 1065/1076/29 652/652/62 842/850/29 +f 851/860/131 843/851/130 845/853/30 +f 1066/1077/303 690/691/90 846/855/168 +f 540/540/21 847/856/21 638/638/52 +f 622/622/40 621/621/39 850/859/170 +f 850/859/170 849/858/169 851/860/131 +f 857/866/174 852/861/113 829/835/50 +f 638/638/52 848/857/113 855/864/50 +f 834/840/47 833/839/47 718/721/50 +f 630/630/47 629/629/46 720/723/113 +f 852/861/113 857/866/174 859/868/21 +f 864/873/113 860/869/174 862/871/21 +f 860/869/174 864/873/113 863/872/50 +f 1067/1078/21 866/875/175 867/876/21 +f 731/734/123 730/733/122 690/691/90 +f 1068/1079/21 868/877/21 870/879/47 +f 727/730/119 871/880/176 728/731/120 +f 1069/1080/21 874/883/113 876/885/21 +f 865/874/111 855/864/50 719/722/112 +f 623/623/41 622/622/40 624/624/42 +f 1070/1081/181 700/702/99 880/889/181 +f 1071/1082/26 881/890/182 883/892/26 +f 1072/1083/43 884/893/43 886/895/26 +f 1072/1083/43 712/714/108 884/893/43 +f 1073/1084/30 871/880/176 726/729/92 +f 680/680/85 668/668/74 681/681/86 +f 668/668/74 680/680/85 890/899/21 +f 895/904/189 891/900/185 893/902/187 +f 897/906/191 894/903/188 895/904/189 +f 899/908/193 896/905/190 897/906/191 +f 902/911/196 898/907/192 899/908/193 +f 898/907/192 902/911/196 904/913/198 +f 903/912/197 905/914/199 904/913/198 +f 900/909/194 907/916/200 901/910/195 +f 907/916/200 909/918/202 908/917/201 +f 912/921/205 911/920/204 905/914/199 +f 911/920/204 912/921/205 914/923/207 +f 914/923/207 913/922/206 916/925/209 +f 916/925/209 915/924/208 918/927/211 +f 918/927/211 917/926/210 920/929/213 +f 920/929/213 919/928/212 922/931/215 +f 1074/1085/304 923/932/216 925/934/218 +f 924/933/217 926/935/219 925/934/218 +f 1075/1086/305 928/937/220 930/939/203 +f 932/941/222 931/940/221 926/935/219 +f 893/902/187 892/901/186 932/941/222 +f 928/937/220 934/943/224 933/942/223 +f 935/944/225 936/945/226 933/942/223 +f 936/945/226 938/947/228 937/946/227 +f 995/1004/272 940/949/229 942/951/230 +f 941/950/230 943/952/231 942/951/230 +f 1076/1087/30 945/954/232 947/956/30 +f 949/958/235 951/960/237 950/959/236 +f 993/1002/271 954/963/240 949/958/235 +f 954/963/240 955/964/241 953/962/239 +f 960/969/245 957/966/243 959/968/244 +f 955/964/241 960/969/245 956/965/242 +f 1047/1056/296 653/653/63 975/984/260 +f 633/633/48 632/632/48 611/611/21 +f 1077/1088/50 976/985/51 978/987/21 +f 950/959/236 979/988/29 948/957/234 +f 1078/1089/21 981/990/261 983/992/21 +f 1079/1090/262 984/993/262 981/990/261 +f 989/998/267 987/996/265 985/994/263 +f 1080/1091/269 988/997/266 989/998/267 +f 992/1001/270 934/943/224 991/1000/269 +f 661/661/70 660/660/70 995/1004/272 +f 1081/1092/29 996/1005/29 998/1007/234 +f 1082/1093/238 994/1003/237 997/1006/236 +f 1030/1039/222 1000/1009/221 1002/1011/274 +f 1002/1011/274 1001/1010/273 1004/1013/276 +f 1013/1022/280 1005/1014/277 1007/1016/279 +f 1004/1013/276 1003/1012/275 1009/1018/216 +f 1009/1018/216 1008/1017/215 1011/1020/212 +f 1019/1028/205 1012/1021/204 1013/1022/280 +f 1011/1020/212 1010/1019/213 1015/1024/210 +f 1015/1024/210 1014/1023/281 1017/1026/208 +f 1020/1029/283 1018/1027/282 1019/1028/205 +f 1017/1026/208 1016/1025/209 1020/1029/283 +f 1028/1037/193 1021/1030/190 1023/1032/191 +f 1031/1040/189 1024/1033/185 1026/1035/284 +f 1029/1038/285 1027/1036/192 1028/1037/193 +f 1007/1016/279 1006/1015/278 1029/1038/285 +f 1026/1035/284 1025/1034/186 1030/1039/222 +f 1023/1032/191 1022/1031/188 1031/1040/189 +f 1037/1046/291 1032/1041/286 1034/1043/288 +f 1034/1043/288 1035/1044/289 1037/1046/291 +f 1083/1094/30 1038/1047/292 1040/1049/30 +f 1032/1041/286 1041/1050/26 1033/1042/287 +f 1038/1047/292 1036/1045/290 1039/1048/293 +o trigger_pistol_0 +v 0.255916 1.582615 6.859656 +v 0.255916 1.449703 6.660409 +v 0.255916 1.810704 6.457509 +v 0.255916 2.466018 6.344805 +v 0.255916 1.892926 6.633237 +v 0.577175 1.435798 6.186546 +v 0.577175 1.810704 6.457509 +v 0.577175 1.449703 6.660409 +v 0.577175 3.484048 5.722968 +v 0.577175 3.243770 6.479860 +v 0.577175 2.895699 6.381779 +v 0.577175 1.924939 5.885275 +v 0.577175 2.439333 5.691723 +v 0.577175 2.466018 6.344805 +v 0.577175 3.484048 5.722968 +v 0.401255 3.484048 5.722968 +v 0.401255 3.243770 6.479860 +v 0.401255 3.588838 6.684444 +v 0.401255 3.243770 6.479860 +v 0.401255 3.484048 5.722968 +v 0.401255 4.331120 5.796535 +v 0.401255 4.331120 7.553139 +v 0.401255 3.911054 6.978125 +v 0.401255 4.776393 4.607953 +v 0.401255 5.500355 4.607955 +v 0.401255 5.500353 7.553141 +v -0.401255 4.331120 5.796535 +v -0.401255 4.776393 4.607953 +v 0.401255 4.776393 4.607953 +v -0.401255 5.500355 4.607955 +v 0.401255 5.500355 4.607955 +v 0.401255 4.776393 4.607953 +v 0.577175 2.851677 5.639833 +v -0.577175 3.484048 5.722968 +v -0.577175 3.243770 6.479860 +v -0.401255 3.243770 6.479860 +v -0.255916 1.582615 6.859656 +v -0.255916 1.892926 6.633237 +v -0.255916 1.810704 6.457509 +v -0.401255 3.243770 6.479860 +v -0.401255 3.588838 6.684444 +v -0.401255 3.484048 5.722968 +v -0.401255 4.331120 7.553139 +v -0.401255 4.331120 5.796535 +v -0.401255 3.911054 6.978125 +v -0.401255 4.776393 4.607953 +v -0.401255 5.500355 4.607955 +v -0.401255 5.500353 7.553141 +v -0.255916 2.466018 6.344805 +v -0.577175 2.466018 6.344805 +v -0.577175 2.895699 6.381779 +v -0.577175 2.851677 5.639833 +v -0.577175 1.810704 6.457509 +v -0.577175 1.435798 6.186546 +v -0.577175 1.449703 6.660409 +v -0.577175 3.484048 5.722968 +v -0.577175 1.924939 5.885275 +v -0.577175 2.439333 5.691723 +v 0.577175 3.243770 6.479860 +v 0.401255 4.331120 5.796535 +v -0.401255 4.776393 4.607953 +v -0.401255 3.484048 5.722968 +v -0.255916 1.449703 6.660409 +v -0.577175 3.243770 6.479860 +v -0.255916 1.892926 6.633237 +v 0.255916 1.892926 6.633237 +v 0.255916 2.466018 6.344805 +v 0.577175 2.895699 6.381779 +v 0.577175 3.243770 6.479860 +v 0.401255 3.243770 6.479860 +v -0.401255 3.243770 6.479860 +v -0.577175 2.895699 6.381779 +v -0.136434 1.170197 7.267153 +v 0.136434 1.170197 7.267153 +v 0.255916 1.274900 7.159120 +v -0.255916 1.274900 7.159120 +v 0.255916 1.582615 6.859656 +v -0.255916 1.582615 6.859656 +v -0.136434 1.170197 7.267153 +v -0.140214 0.908798 7.158844 +v 0.140214 0.908798 7.158844 +v 0.255916 1.049089 7.041913 +v 0.255916 1.274900 7.159120 +v 0.136434 1.170197 7.267153 +v 0.255916 2.466018 6.344805 +v 0.577175 2.466018 6.344805 +v 0.577175 1.049089 7.041913 +v 0.255916 1.049089 7.041913 +v 0.140214 0.908798 7.158844 +v -0.140214 0.908798 7.158844 +v -0.238265 0.780515 7.270253 +v 0.238265 0.780515 7.270253 +v 0.577175 1.810704 6.457509 +v 0.255916 1.810704 6.457509 +v 0.255916 1.449703 6.660409 +v 0.577175 1.449703 6.660409 +v -0.242153 0.574698 7.190140 +v 0.242153 0.574698 7.190140 +v 0.238265 0.780515 7.270253 +v 0.557295 0.748788 6.906375 +v 0.577175 1.049089 7.041913 +v 0.577175 1.022907 6.562050 +v -0.255916 2.466018 6.344805 +v -0.401255 4.331120 5.796535 +v 0.401255 4.331120 5.796535 +v 0.401255 3.484048 5.722968 +v 0.401255 3.588838 6.684444 +v -0.401255 3.588838 6.684444 +v 0.401255 3.911054 6.978125 +v 0.401255 4.331120 7.553139 +v -0.401255 4.331120 7.553139 +v -0.401255 3.911054 6.978125 +v 0.401255 5.500353 7.553141 +v -0.401255 5.500353 7.553141 +v 0.577175 2.851677 5.639833 +v 0.577175 3.484048 5.722968 +v -0.577175 2.851677 5.639833 +v -0.401255 3.484048 5.722968 +v 0.577175 1.022907 6.562050 +v -0.577175 1.022907 6.562050 +v -0.577175 1.435798 6.186546 +v 0.577175 1.435798 6.186546 +v -0.577175 1.924939 5.885275 +v -0.577175 2.439333 5.691723 +v 0.577175 2.439333 5.691723 +v 0.577175 1.924939 5.885275 +v 0.242153 0.574698 7.190140 +v -0.242153 0.574698 7.190140 +v -0.557295 0.748788 6.906375 +v 0.557295 0.748788 6.906375 +v -0.577175 3.243770 6.479860 +v -0.255916 1.049089 7.041913 +v -0.577175 2.466018 6.344805 +v -0.255916 1.274900 7.159120 +v -0.577175 1.049089 7.041913 +v -0.577175 3.484048 5.722968 +v -0.577175 1.810704 6.457509 +v -0.577175 1.449703 6.660409 +v -0.255916 1.449703 6.660409 +v -0.255916 1.810704 6.457509 +v -0.255916 1.049089 7.041913 +v -0.557295 0.748788 6.906375 +v -0.238265 0.780515 7.270253 +v -0.577175 1.022907 6.562050 +v -0.577175 1.049089 7.041913 +v -0.255916 2.466018 6.344805 +vt 0.482997 0.972676 +vt 0.483169 0.972693 +vt 0.483177 0.972380 +vt 0.483034 0.971858 +vt 0.483023 0.972386 +vt 0.471310 0.981774 +vt 0.471246 0.981454 +vt 0.471009 0.981626 +vt 0.472210 0.980596 +vt 0.471654 0.980527 +vt 0.471614 0.980779 +vt 0.471647 0.981549 +vt 0.471923 0.981275 +vt 0.471511 0.981066 +vt 0.472210 0.980596 +vt 0.472225 0.980472 +vt 0.471669 0.980404 +vt 0.471639 0.980122 +vt 0.471669 0.980404 +vt 0.472225 0.980472 +vt 0.472428 0.979907 +vt 0.471300 0.979390 +vt 0.471545 0.979829 +vt 0.473322 0.979971 +vt 0.473535 0.979507 +vt 0.471644 0.978639 +vt 0.480249 0.946278 +vt 0.480249 0.945382 +vt 0.480816 0.945382 +vt 0.480249 0.944870 +vt 0.480816 0.944870 +vt 0.480816 0.945382 +vt 0.472077 0.981026 +vt 0.468113 0.980573 +vt 0.468670 0.980511 +vt 0.468657 0.980387 +vt 0.482644 0.972678 +vt 0.482622 0.972386 +vt 0.482468 0.972377 +vt 0.468657 0.980387 +vt 0.468690 0.980106 +vt 0.468100 0.980449 +vt 0.469037 0.979378 +vt 0.467904 0.979882 +vt 0.468786 0.979814 +vt 0.467009 0.979936 +vt 0.466802 0.979469 +vt 0.468701 0.978624 +vt 0.482618 0.971864 +vt 0.468807 0.981051 +vt 0.468707 0.980763 +vt 0.468241 0.981005 +vt 0.469067 0.981441 +vt 0.469000 0.981761 +vt 0.469302 0.981616 +vt 0.468113 0.980573 +vt 0.468666 0.981532 +vt 0.468393 0.981256 +vt 0.471654 0.980527 +vt 0.480816 0.946278 +vt 0.480249 0.945382 +vt 0.468100 0.980449 +vt 0.482469 0.972694 +vt 0.468670 0.980511 +vt 0.482622 0.972386 +vt 0.483023 0.972386 +vt 0.483034 0.971858 +vt 0.480078 0.973332 +vt 0.480077 0.973077 +vt 0.479953 0.973077 +vt 0.479387 0.973079 +vt 0.479263 0.973334 +vt 0.482753 0.972998 +vt 0.482894 0.972996 +vt 0.482958 0.972932 +vt 0.482686 0.972938 +vt 0.482997 0.972676 +vt 0.482644 0.972678 +vt 0.482753 0.972998 +vt 0.482726 0.973162 +vt 0.482929 0.973155 +vt 0.483051 0.973046 +vt 0.482958 0.972932 +vt 0.482894 0.972996 +vt 0.479852 0.973637 +vt 0.480079 0.973637 +vt 0.480081 0.974789 +vt 0.479855 0.974790 +vt 0.479773 0.974919 +vt 0.479575 0.974919 +vt 0.479506 0.975040 +vt 0.479843 0.975039 +vt 0.480080 0.974106 +vt 0.479853 0.974107 +vt 0.479854 0.974399 +vt 0.480081 0.974399 +vt 0.469982 0.982043 +vt 0.470324 0.982045 +vt 0.470322 0.981889 +vt 0.470645 0.982004 +vt 0.470647 0.981771 +vt 0.470947 0.981928 +vt 0.479491 0.973638 +vt 0.480249 0.946278 +vt 0.480816 0.946278 +vt 0.480816 0.946878 +vt 0.479953 0.972794 +vt 0.479386 0.972795 +vt 0.479952 0.972486 +vt 0.479951 0.971983 +vt 0.479384 0.971985 +vt 0.479385 0.972488 +vt 0.479949 0.971158 +vt 0.479382 0.971159 +vt 0.480940 0.947328 +vt 0.480940 0.946878 +vt 0.480125 0.947328 +vt 0.480249 0.946878 +vt 0.480940 0.948810 +vt 0.480125 0.948810 +vt 0.480125 0.948416 +vt 0.480940 0.948415 +vt 0.480125 0.948010 +vt 0.480125 0.947622 +vt 0.480940 0.947622 +vt 0.480940 0.948010 +vt 0.480704 0.949355 +vt 0.480362 0.949355 +vt 0.480139 0.949120 +vt 0.480926 0.949120 +vt 0.479262 0.973079 +vt 0.482592 0.973062 +vt 0.479264 0.973639 +vt 0.482686 0.972938 +vt 0.479266 0.974791 +vt 0.480125 0.946878 +vt 0.479265 0.974108 +vt 0.479265 0.974401 +vt 0.479492 0.974400 +vt 0.479492 0.974108 +vt 0.479493 0.974791 +vt 0.469662 0.981998 +vt 0.469986 0.981887 +vt 0.469361 0.981919 +vt 0.469663 0.981765 +vt 0.482618 0.971864 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.9531 0.3026 +vn 0.0000 -0.9364 -0.3508 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.4977 0.8674 +vn 0.0000 0.5444 0.8388 +vn 0.0000 0.1395 0.9902 +vn 0.0000 -0.1979 0.9802 +vn 0.0000 -0.2712 0.9625 +vn 0.0000 -0.3535 0.9354 +vn -0.0000 -0.3697 0.9291 +vn 0.0000 -0.1606 0.9870 +vn 0.0000 0.7181 0.6960 +vn 0.0000 0.7113 0.7029 +vn -0.0000 0.7044 0.7098 +vn 0.0000 0.6629 0.7487 +vn 0.0000 0.6268 0.7792 +vn -0.4404 -0.3550 0.8247 +vn -0.4552 -0.3352 0.8249 +vn 0.2991 -0.3616 0.8831 +vn 0.9038 -0.1780 0.3893 +vn 0.9745 -0.1034 0.1993 +vn 0.5796 -0.3268 0.7465 +vn 0.0001 0.1395 0.9902 +vn 0.0000 0.0850 0.9964 +vn -0.0023 0.6611 0.7503 +vn -0.0000 0.6735 0.7392 +vn -0.0023 0.6496 0.7603 +vn 0.0017 0.6512 0.7589 +vn 0.0038 0.6541 0.7564 +vn -0.0023 0.6547 0.7559 +vn 0.0000 0.3882 0.9216 +vn 0.0000 0.2799 0.9600 +vn 0.0000 0.5604 0.8282 +vn 0.0000 0.6274 0.7787 +vn -0.2580 -0.3462 0.9020 +vn 0.3908 -0.3275 0.8603 +vn 0.3829 -0.3520 0.8541 +vn 0.8580 -0.2283 0.4601 +vn 0.9627 -0.1436 0.2294 +vn 0.9997 -0.0226 0.0012 +vn 0.0000 0.1148 0.9934 +vn 0.0000 0.0865 -0.9962 +vn 0.0000 0.1129 -0.9936 +vn 0.0000 -0.5671 0.8236 +vn 0.0000 -0.6219 0.7831 +vn 0.0000 -0.7215 0.6924 +vn -0.0001 -0.5953 0.8035 +vn 0.0001 -0.2977 0.9547 +vn 0.0000 -0.7663 0.6425 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 0.0456 -0.9990 +vn 0.0000 0.1303 -0.9915 +vn 0.0000 0.0285 -0.9996 +vn 0.0000 0.1158 -0.9933 +vn -0.0000 -0.7114 -0.7028 +vn -0.0000 -0.7480 -0.6637 +vn 0.0000 -0.6258 -0.7800 +vn 0.0000 -0.5761 -0.8174 +vn -0.0000 -0.4689 -0.8832 +vn 0.0000 -0.2781 -0.9606 +vn 0.0000 -0.2019 -0.9794 +vn -0.0000 -0.4113 -0.9115 +vn 0.0000 -0.8524 -0.5229 +vn 0.0000 -0.8304 -0.5572 +vn 0.0000 -0.8071 -0.5904 +vn -0.9038 -0.1780 0.3893 +vn -0.9745 -0.1034 0.1993 +vn 0.0023 0.6611 0.7503 +vn -0.8580 -0.2283 0.4601 +vn -0.5059 -0.3351 0.7948 +vn -0.9997 -0.0226 0.0012 +vn -0.9627 -0.1436 0.2294 +vn 0.0000 0.1149 0.9934 +s off +f 1084/1095/306 1085/1096/306 1086/1097/306 +f 1086/1097/306 1087/1098/306 1088/1099/306 +f 1089/1100/306 1090/1101/306 1091/1102/306 +f 1092/1103/306 1093/1104/306 1094/1105/306 +f 1089/1100/306 1095/1106/306 1090/1101/306 +f 1096/1107/306 1097/1108/306 1090/1101/306 +f 1098/1109/307 1099/1110/307 1100/1111/307 +f 1101/1112/306 1102/1113/306 1103/1114/306 +f 1104/1115/306 1105/1116/306 1106/1117/306 +f 1101/1112/306 1103/1114/306 1104/1115/306 +f 1104/1115/306 1107/1118/306 1108/1119/306 +f 1109/1120/306 1105/1116/306 1104/1115/306 +f 1110/1121/308 1111/1122/308 1112/1123/308 +f 1113/1124/309 1114/1125/309 1115/1126/309 +f 1097/1108/306 1096/1107/306 1116/1127/306 +f 1117/1128/307 1118/1129/307 1119/1130/307 +f 1120/1131/310 1121/1132/310 1122/1133/310 +f 1123/1134/310 1124/1135/310 1125/1136/310 +f 1126/1137/310 1127/1138/310 1128/1139/310 +f 1124/1135/310 1128/1139/310 1127/1138/310 +f 1129/1140/310 1127/1138/310 1130/1141/310 +f 1131/1142/310 1130/1141/310 1127/1138/310 +f 1132/1143/310 1122/1133/310 1121/1132/310 +f 1133/1144/310 1134/1145/310 1135/1146/310 +f 1136/1147/310 1137/1148/310 1138/1149/310 +f 1139/1150/310 1135/1146/310 1134/1145/310 +f 1140/1151/310 1137/1148/310 1136/1147/310 +f 1141/1152/310 1140/1151/310 1136/1147/310 +f 1088/1099/306 1084/1095/306 1086/1097/306 +f 1116/1127/306 1092/1103/306 1094/1105/306 +f 1095/1106/306 1096/1107/306 1090/1101/306 +f 1142/1153/307 1098/1109/307 1100/1111/307 +f 1106/1117/306 1101/1112/306 1104/1115/306 +f 1108/1119/306 1109/1120/306 1104/1115/306 +f 1143/1154/308 1110/1121/308 1112/1123/308 +f 1144/1155/309 1113/1124/309 1115/1126/309 +f 1094/1105/306 1097/1108/306 1116/1127/306 +f 1145/1156/307 1117/1128/307 1119/1130/307 +f 1146/1157/310 1120/1131/310 1122/1133/310 +f 1125/1136/310 1124/1135/310 1127/1138/310 +f 1126/1137/310 1131/1142/310 1127/1138/310 +f 1141/1152/310 1133/1144/310 1135/1146/310 +f 1147/1158/310 1139/1150/310 1134/1145/310 +f 1133/1144/310 1141/1152/310 1136/1147/310 +s 1 +f 1148/1159/311 1149/1160/312 1150/1161/313 +f 1151/1162/314 1152/1163/315 1153/1164/316 +f 1154/1165/317 1155/1166/318 1151/1162/314 +f 1156/1167/319 1157/1168/319 1158/1169/320 +f 1159/1170/321 1158/1169/320 1160/1171/322 +f 1149/1160/312 1148/1159/311 1161/1172/323 +f 1162/1173/324 1163/1174/325 1164/1175/326 +f 1165/1176/327 1166/1177/328 1167/1178/329 +f 1168/1179/330 1169/1180/331 1151/1162/314 +f 1085/1096/306 1084/1095/306 1166/1177/328 +f 1170/1181/332 1171/1182/333 1172/1183/334 +f 1173/1184/335 1174/1185/336 1175/1186/337 +f 1176/1187/338 1177/1188/339 1178/1189/340 +f 1169/1180/331 1168/1179/330 1177/1188/339 +f 1171/1182/333 1170/1181/332 1179/1190/341 +f 1180/1191/342 1181/1192/343 1182/1193/344 +f 1183/1194/345 1184/1195/346 1182/1193/344 +f 1185/1196/347 1091/1102/306 1184/1195/346 +f 1185/1196/347 1089/1100/306 1091/1102/306 +f 1155/1166/318 1186/1197/348 1168/1179/330 +f 1187/1198/349 1188/1199/349 1189/1200/350 +f 1190/1201/351 1191/1202/352 1154/1165/317 +f 1191/1202/352 1190/1201/351 1192/1203/353 +f 1193/1204/354 1194/1205/355 1195/1206/356 +f 1196/1207/357 1197/1208/357 1194/1205/355 +f 1198/1209/358 1189/1200/350 1199/1210/359 +f 1200/1211/360 1201/1212/361 1189/1200/350 +f 1202/1213/362 1203/1214/363 1204/1215/364 +f 1205/1216/365 1204/1215/364 1206/1217/366 +f 1207/1218/367 1208/1219/368 1209/1220/369 +f 1200/1211/360 1198/1209/358 1208/1219/368 +f 1210/1221/370 1211/1222/370 1212/1223/371 +f 1203/1214/363 1202/1213/362 1213/1224/372 +f 1214/1225/315 1155/1166/318 1154/1165/317 +f 1215/1226/373 1163/1174/325 1162/1173/324 +f 1216/1227/331 1186/1197/348 1155/1166/318 +f 1146/1157/310 1215/1226/373 1217/1228/374 +f 1218/1229/375 1174/1185/336 1173/1184/335 +f 1201/1212/361 1200/1211/360 1219/1230/359 +f 1220/1231/338 1221/1232/341 1222/1233/340 +f 1216/1227/331 1220/1231/338 1223/1234/339 +f 1224/1235/333 1222/1233/340 1221/1232/341 +f 1225/1236/376 1180/1191/342 1226/1237/377 +f 1227/1238/378 1225/1236/376 1228/1239/379 +f 1137/1148/310 1227/1238/378 1138/1149/310 +f 1229/1240/380 1148/1159/311 1150/1161/313 +f 1153/1164/316 1154/1165/317 1151/1162/314 +f 1159/1170/321 1156/1167/319 1158/1169/320 +f 1161/1172/323 1159/1170/321 1160/1171/322 +f 1160/1171/322 1149/1160/312 1161/1172/323 +f 1167/1178/329 1162/1173/324 1164/1175/326 +f 1164/1175/326 1165/1176/327 1167/1178/329 +f 1165/1176/327 1085/1096/306 1166/1177/328 +f 1175/1186/337 1170/1181/332 1172/1183/334 +f 1172/1183/334 1173/1184/335 1175/1186/337 +f 1179/1190/341 1176/1187/338 1178/1189/340 +f 1176/1187/338 1169/1180/331 1177/1188/339 +f 1178/1189/340 1171/1182/333 1179/1190/341 +f 1226/1237/377 1180/1191/342 1182/1193/344 +f 1181/1192/343 1183/1194/345 1182/1193/344 +f 1183/1194/345 1185/1196/347 1184/1195/346 +f 1151/1162/314 1155/1166/318 1168/1179/330 +f 1201/1212/361 1187/1198/349 1189/1200/350 +f 1153/1164/316 1190/1201/351 1154/1165/317 +f 1195/1206/356 1191/1202/352 1192/1203/353 +f 1192/1203/353 1193/1204/354 1195/1206/356 +f 1193/1204/354 1196/1207/357 1194/1205/355 +f 1198/1209/358 1200/1211/360 1189/1200/350 +f 1205/1216/365 1202/1213/362 1204/1215/364 +f 1209/1220/369 1205/1216/365 1206/1217/366 +f 1206/1217/366 1207/1218/367 1209/1220/369 +f 1207/1218/367 1200/1211/360 1208/1219/368 +f 1213/1224/372 1210/1221/370 1212/1223/371 +f 1212/1223/371 1203/1214/363 1213/1224/372 +f 1217/1228/374 1215/1226/373 1162/1173/324 +f 1120/1131/310 1146/1157/310 1217/1228/374 +f 1224/1235/333 1218/1229/375 1173/1184/335 +f 1223/1234/339 1220/1231/338 1222/1233/340 +f 1186/1197/348 1216/1227/331 1223/1234/339 +f 1218/1229/375 1224/1235/333 1221/1232/341 +f 1228/1239/379 1225/1236/376 1226/1237/377 +f 1138/1149/310 1227/1238/378 1228/1239/379 +o mag_pistol_0 +v -1.109136 1.854146 1.546994 +v -1.109136 6.483851 2.313161 +v -1.109136 1.746315 1.309461 +v 1.109136 6.483851 2.313161 +v 1.109136 6.193875 2.563060 +v 1.109136 1.854146 1.546994 +v 1.109136 1.746315 1.309461 +v -1.109136 6.193875 2.563060 +v -1.109136 7.455005 0.432841 +v -0.855096 7.454038 0.681172 +v -0.637953 7.455005 0.432841 +v -1.109136 7.447666 2.316916 +v -0.851242 7.447666 2.316916 +v -0.645065 7.456246 0.114420 +v -0.808240 7.456246 0.114420 +v -0.882817 -7.449294 -6.242331 +v -1.332151 -7.578506 -5.806304 +v -1.109136 -7.583717 -5.788713 +v -1.260158 -8.694220 -2.041337 +v -1.109136 -8.686133 -2.068621 +v -0.818644 -8.777006 -1.761974 +v -0.549908 -9.201518 -0.329464 +v 0.549908 -9.201518 -0.329464 +v 0.855096 7.454038 0.681172 +v 1.109136 7.455005 0.432841 +v 0.637953 7.455005 0.432841 +v 0.645065 7.456246 0.114420 +v 0.808240 7.456246 0.114420 +v -0.413784 6.208827 -0.016872 +v 0.413784 6.208827 -0.016872 +v 0.440888 6.323021 -0.358271 +v 0.851242 7.447666 2.316916 +v -0.791829 -7.487273 -6.114170 +v 0.791829 -7.487273 -6.114170 +v 0.882817 -7.449294 -6.242331 +v 1.109136 -7.583717 -5.788713 +v 1.332151 -7.578506 -5.806304 +v 1.109136 -8.686133 -2.068621 +v -0.527911 -9.865828 -0.558223 +v 0.527911 -9.865828 -0.558223 +v 0.549908 -9.201518 -0.329464 +v 0.527911 -9.865828 -0.558223 +v -0.527911 -9.865828 -0.558223 +v -1.263812 -9.320386 -2.284041 +v -0.889556 -7.991921 -6.487401 +v 0.889556 -7.991921 -6.487401 +v 1.326758 -8.130615 -6.048566 +v 1.263812 -9.320386 -2.284041 +v -1.326758 -8.130615 -6.048566 +v 1.260158 -8.694220 -2.041337 +v 0.818644 -8.777006 -1.761974 +v -0.440888 6.323021 -0.358271 +v 1.109136 7.447666 2.316916 +v -0.549908 -9.201518 -0.329464 +v -0.330292 5.643600 3.823889 +v 0.330292 5.643600 3.823889 +v -0.639183 4.693711 3.350439 +v -0.784649 4.758710 3.184810 +v -0.823423 6.188930 3.832172 +v -0.613250 5.916148 3.869261 +v 0.639183 4.693711 3.350439 +v 0.613250 5.916148 3.869261 +v -0.791829 -7.487273 -6.114170 +v -0.440888 6.323021 -0.358271 +v 0.791829 -7.487273 -6.114170 +v 1.109136 6.187971 4.078715 +v 1.109136 1.608211 2.157616 +v 1.109136 7.455005 0.432841 +v 1.109136 -7.583717 -5.788713 +v 1.109136 1.421237 1.150594 +v 1.109136 1.152737 1.225781 +v 0.613250 6.186937 4.344060 +v 0.613250 5.905007 4.230343 +v 0.807799 6.186929 4.345726 +v -0.367306 5.610397 4.110494 +v -0.804550 1.432484 2.382775 +v 0.367306 5.610397 4.110494 +v -0.613250 6.186937 4.344060 +v -0.807799 6.186929 4.345726 +v -0.613250 5.905007 4.230343 +v -0.818644 -8.777006 -1.761974 +v 0.818644 -8.777006 -1.761974 +v -0.775337 0.764493 2.107609 +v -1.109136 1.608211 2.157616 +v -1.109136 7.455005 0.432841 +v -1.109136 1.421237 1.150594 +v -1.109136 -7.583717 -5.788713 +v -1.109136 1.152737 1.225781 +v -0.629678 6.747400 -0.181054 +v 0.440888 6.323021 -0.358271 +v 0.629678 6.747400 -0.181054 +v -0.784480 5.973367 0.123958 +v -0.784649 4.758710 3.184810 +v 0.784480 5.973367 0.123958 +v 1.109136 7.447666 2.316916 +v 1.109136 -8.686133 -2.068621 +v 0.804550 1.432484 2.382775 +v 0.775337 0.764493 2.107609 +v -1.109136 0.828570 1.868721 +v -1.109136 -8.686133 -2.068621 +v -1.109136 6.187971 4.078715 +v -0.613250 6.189570 3.985306 +v -1.109136 6.193875 2.563060 +v -1.109136 6.187971 4.078715 +v -0.823423 6.188930 3.832172 +v -0.808240 7.456246 0.114420 +v -1.109136 7.447666 2.316916 +v -1.109136 6.483851 2.313161 +v -0.839998 6.483851 2.313161 +v -0.855295 6.193875 2.563060 +v -0.855096 7.454038 0.681172 +v -0.851242 7.447666 2.316916 +v -0.839998 6.483851 2.313161 +v -0.613250 5.916148 3.869261 +v -0.613250 5.905007 4.230343 +v -0.367306 5.610397 4.110494 +v -0.613250 6.189570 3.985306 +v -0.613250 6.186937 4.344060 +v -0.804550 1.432484 2.382775 +v -0.804550 1.432484 2.382775 +v -0.836434 1.761413 1.534160 +v -0.864811 1.209287 1.297543 +v -0.866598 1.383340 1.228519 +v -1.109136 1.608211 2.157616 +v -1.109136 1.854146 1.546994 +v -0.836434 1.761413 1.534160 +v -1.109136 1.746315 1.309461 +v -0.853872 1.693580 1.365606 +v -1.109136 1.421237 1.150594 +v -0.866598 1.383340 1.228519 +v -1.109136 1.152737 1.225781 +v -0.864811 1.209287 1.297543 +v -1.109136 0.828570 1.868721 +v -0.775337 0.764493 2.107609 +v -0.818644 -8.777006 -1.761974 +v -1.326758 -8.130615 -6.048566 +v -1.332151 -7.578506 -5.806304 +v -0.882817 -7.449294 -6.242331 +v -1.263812 -9.320386 -2.284041 +v -1.260158 -8.694220 -2.041337 +v -0.527911 -9.865828 -0.558223 +v -0.549908 -9.201518 -0.329464 +v -0.855295 6.193875 2.563060 +v -0.637953 7.455005 0.432841 +v -0.610240 6.670014 0.107513 +v -0.586664 6.044359 -0.058251 +v -0.413784 6.208827 -0.016872 +v -0.629678 6.747400 -0.181054 +v -0.645065 7.456246 0.114420 +v -0.610240 6.670014 0.107513 +v -0.784480 5.973367 0.123958 +v -0.637953 7.455005 0.432841 +v -0.413784 6.208827 -0.016872 +v -0.440888 6.323021 -0.358271 +v -0.807799 6.186929 4.345726 +v -0.613250 6.189570 3.985306 +v 0.586664 6.044359 -0.058251 +v 0.889556 -7.991921 -6.487401 +v -0.889556 -7.991921 -6.487401 +v 0.784480 5.973367 0.123958 +v 0.855096 7.454038 0.681172 +v 0.610240 6.670014 0.107513 +v 0.637953 7.455005 0.432841 +v 0.645065 7.456246 0.114420 +v 0.610240 6.670014 0.107513 +v 1.109136 6.187971 4.078715 +v 1.109136 6.193875 2.563060 +v 0.823423 6.188930 3.832172 +v 0.851242 7.447666 2.316916 +v 0.839998 6.483851 2.313161 +v 0.855295 6.193875 2.563060 +v 0.413784 6.208827 -0.016872 +v 0.440888 6.323021 -0.358271 +v 0.413784 6.208827 -0.016872 +v 0.629678 6.747400 -0.181054 +v 0.807799 6.186929 4.345726 +v 0.613250 6.189570 3.985306 +v 0.784649 4.758710 3.184810 +v 0.586664 6.044359 -0.058251 +v 0.613250 6.186937 4.344060 +v 0.613250 6.189570 3.985306 +v 0.823423 6.188930 3.832172 +v 0.808240 7.456246 0.114420 +v 1.109136 7.447666 2.316916 +v 0.851242 7.447666 2.316916 +v 0.839998 6.483851 2.313161 +v 1.109136 6.483851 2.313161 +v 0.855295 6.193875 2.563060 +v -0.330292 5.643600 3.823889 +v 0.367306 5.610397 4.110494 +v 0.613250 5.916148 3.869261 +v 0.330292 5.643600 3.823889 +v 0.613250 5.905007 4.230343 +v 0.613250 6.186937 4.344060 +v 0.807799 6.186929 4.345726 +v 0.804550 1.432484 2.382775 +v 0.804550 1.432484 2.382775 +v 0.775337 0.764493 2.107609 +v 0.864811 1.209287 1.297543 +v 0.866598 1.383340 1.228519 +v 0.853872 1.693580 1.365606 +v 0.836434 1.761413 1.534160 +v 1.109136 1.608211 2.157616 +v 0.804550 1.432484 2.382775 +v 0.836434 1.761413 1.534160 +v 1.109136 1.854146 1.546994 +v 0.853872 1.693580 1.365606 +v 1.109136 1.746315 1.309461 +v 0.866598 1.383340 1.228519 +v 1.109136 1.421237 1.150594 +v 0.864811 1.209287 1.297543 +v 1.109136 1.152737 1.225781 +v 0.775337 0.764493 2.107609 +v 1.109136 0.828570 1.868721 +v 0.775337 0.764493 2.107609 +v 0.818644 -8.777006 -1.761974 +v -0.613250 6.186937 4.344060 +v 1.326758 -8.130615 -6.048566 +v 0.882817 -7.449294 -6.242331 +v 1.332151 -7.578506 -5.806304 +v 1.260158 -8.694220 -2.041337 +v 1.263812 -9.320386 -2.284041 +v 0.549908 -9.201518 -0.329464 +v 0.637953 7.455005 0.432841 +v 0.610240 6.670014 0.107513 +v 0.586664 6.044359 -0.058251 +v -0.586664 6.044359 -0.058251 +v -0.639183 4.693711 3.350439 +v 0.639183 4.693711 3.350439 +v 0.784649 4.758710 3.184810 +v -1.109136 7.447666 2.316916 +v -0.851242 7.447666 2.316916 +v -0.807799 6.186929 4.345726 +v -0.775337 0.764493 2.107609 +v -0.853872 1.693580 1.365606 +v -0.804550 1.432484 2.382775 +v -0.775337 0.764493 2.107609 +v 0.613250 6.189570 3.985306 +v 1.109136 0.828570 1.868721 +v 0.527911 -9.865828 -0.558223 +v 0.645065 7.456246 0.114420 +v -0.645065 7.456246 0.114420 +vt 0.318637 0.836460 +vt 0.322686 0.835525 +vt 0.318469 0.836302 +vt 0.322662 0.829447 +vt 0.322506 0.829146 +vt 0.318606 0.828545 +vt 0.318439 0.828704 +vt 0.322533 0.835828 +vt 0.335540 0.815841 +vt 0.335689 0.816068 +vt 0.335880 0.815923 +vt 0.335363 0.817407 +vt 0.335570 0.817415 +vt 0.335928 0.815727 +vt 0.335827 0.815658 +vt 0.338110 0.834998 +vt 0.338521 0.834581 +vt 0.338361 0.834565 +vt 0.338450 0.830987 +vt 0.338327 0.831013 +vt 0.338045 0.830721 +vt 0.337797 0.829353 +vt 0.336791 0.829355 +vt 0.338509 0.816056 +vt 0.338639 0.815806 +vt 0.338293 0.815922 +vt 0.338229 0.815719 +vt 0.338328 0.815642 +vt 0.336756 0.815704 +vt 0.337372 0.815710 +vt 0.337407 0.815436 +vt 0.338796 0.817419 +vt 0.338027 0.834876 +vt 0.336577 0.834878 +vt 0.336494 0.835000 +vt 0.336242 0.834568 +vt 0.336082 0.834585 +vt 0.336266 0.831016 +vt 0.351326 0.453820 +vt 0.352262 0.453765 +vt 0.352318 0.454386 +vt 0.365837 0.453882 +vt 0.365836 0.454819 +vt 0.367442 0.455473 +vt 0.371353 0.455145 +vt 0.371355 0.453566 +vt 0.370947 0.453178 +vt 0.367444 0.453230 +vt 0.370945 0.455532 +vt 0.336143 0.830990 +vt 0.336546 0.830723 +vt 0.336722 0.815432 +vt 0.339004 0.817387 +vt 0.351343 0.454443 +vt 0.336608 0.810165 +vt 0.336600 0.809579 +vt 0.335671 0.810452 +vt 0.335670 0.810656 +vt 0.337063 0.810641 +vt 0.336849 0.810420 +vt 0.335654 0.809318 +vt 0.336833 0.809316 +vt 0.308406 0.833228 +vt 0.321347 0.832873 +vt 0.308400 0.831858 +vt 0.323003 0.827899 +vt 0.318606 0.827962 +vt 0.322837 0.831313 +vt 0.308428 0.831448 +vt 0.318119 0.828727 +vt 0.317924 0.828577 +vt 0.334726 0.805815 +vt 0.334724 0.806084 +vt 0.334898 0.805815 +vt 0.333853 0.806363 +vt 0.333448 0.810373 +vt 0.334505 0.806366 +vt 0.333637 0.805810 +vt 0.333465 0.805809 +vt 0.333636 0.806080 +vt 0.333393 0.820149 +vt 0.334845 0.820155 +vt 0.333471 0.811014 +vt 0.318642 0.837043 +vt 0.322847 0.833658 +vt 0.318149 0.836281 +vt 0.308437 0.833638 +vt 0.317955 0.836433 +vt 0.321830 0.833071 +vt 0.321344 0.832110 +vt 0.321826 0.831909 +vt 0.338990 0.829527 +vt 0.338986 0.832448 +vt 0.340382 0.829528 +vt 0.323455 0.829763 +vt 0.308753 0.828027 +vt 0.334875 0.810379 +vt 0.334847 0.811020 +vt 0.317906 0.837069 +vt 0.308789 0.837056 +vt 0.323039 0.837070 +vt 0.337112 0.810416 +vt 0.335399 0.818676 +vt 0.335644 0.820232 +vt 0.335864 0.819933 +vt 0.322740 0.833285 +vt 0.335363 0.817407 +vt 0.335368 0.818297 +vt 0.335604 0.818285 +vt 0.335628 0.818648 +vt 0.336965 0.813654 +vt 0.337545 0.812323 +vt 0.336761 0.811981 +vt 0.336450 0.819974 +vt 0.336387 0.820399 +vt 0.336865 0.820333 +vt 0.336109 0.820051 +vt 0.336132 0.820332 +vt 0.318573 0.837406 +vt 0.297273 0.862936 +vt 0.296468 0.862987 +vt 0.296450 0.863484 +vt 0.296375 0.863361 +vt 0.296982 0.862655 +vt 0.296349 0.862774 +vt 0.296468 0.862987 +vt 0.296171 0.863007 +vt 0.296386 0.863086 +vt 0.296139 0.863393 +vt 0.296375 0.863361 +vt 0.296301 0.863656 +vt 0.296450 0.863484 +vt 0.296981 0.863857 +vt 0.297271 0.863612 +vt 0.308818 0.837437 +vt 0.360171 0.453244 +vt 0.360165 0.453779 +vt 0.359601 0.453718 +vt 0.363650 0.453662 +vt 0.363616 0.454257 +vt 0.365371 0.453864 +vt 0.365306 0.454484 +vt 0.336615 0.811674 +vt 0.336865 0.813929 +vt 0.336111 0.813900 +vt 0.335542 0.813822 +vt 0.335664 0.813999 +vt 0.336339 0.815514 +vt 0.335928 0.815727 +vt 0.336384 0.815738 +vt 0.335562 0.813576 +vt 0.335880 0.815923 +vt 0.336756 0.815704 +vt 0.336722 0.815432 +vt 0.335975 0.820462 +vt 0.336109 0.820051 +vt 0.335363 0.814848 +vt 0.358032 0.453178 +vt 0.359611 0.453190 +vt 0.335454 0.806199 +vt 0.336854 0.806081 +vt 0.335993 0.805859 +vt 0.338293 0.815922 +vt 0.338229 0.815719 +vt 0.337754 0.815749 +vt 0.338970 0.820225 +vt 0.339108 0.818663 +vt 0.338736 0.819939 +vt 0.337473 0.807394 +vt 0.336699 0.807758 +vt 0.336562 0.808069 +vt 0.335538 0.814723 +vt 0.337407 0.815436 +vt 0.337372 0.815710 +vt 0.337796 0.815517 +vt 0.338647 0.820469 +vt 0.338501 0.820063 +vt 0.335647 0.809115 +vt 0.335427 0.805954 +vt 0.338482 0.820342 +vt 0.337096 0.809313 +vt 0.337040 0.809089 +vt 0.322734 0.831687 +vt 0.339004 0.817387 +vt 0.338796 0.817419 +vt 0.338866 0.818294 +vt 0.339103 0.818281 +vt 0.338879 0.818655 +vt 0.336917 0.819991 +vt 0.337747 0.820341 +vt 0.338164 0.819987 +vt 0.337700 0.819998 +vt 0.338225 0.820410 +vt 0.338482 0.820342 +vt 0.323089 0.827553 +vt 0.318534 0.827599 +vt 0.299359 0.862966 +vt 0.299357 0.863640 +vt 0.300188 0.863503 +vt 0.300265 0.863381 +vt 0.300257 0.863103 +vt 0.300174 0.863004 +vt 0.299646 0.862698 +vt 0.299359 0.862966 +vt 0.300174 0.863004 +vt 0.300297 0.862779 +vt 0.300257 0.863103 +vt 0.300477 0.863024 +vt 0.300265 0.863381 +vt 0.300502 0.863417 +vt 0.300188 0.863503 +vt 0.300332 0.863678 +vt 0.299357 0.863640 +vt 0.317870 0.827942 +vt 0.317895 0.827574 +vt 0.308779 0.827646 +vt 0.336132 0.820332 +vt 0.357471 0.453223 +vt 0.358034 0.453706 +vt 0.357469 0.453758 +vt 0.354011 0.454184 +vt 0.353986 0.453589 +vt 0.352318 0.454386 +vt 0.336746 0.805809 +vt 0.335925 0.814967 +vt 0.340207 0.829355 +vt 0.339165 0.829353 +vt 0.339115 0.832606 +vt 0.340249 0.832608 +vt 0.340379 0.832450 +vt 0.323476 0.835203 +vt 0.335570 0.817415 +vt 0.323128 0.837416 +vt 0.297271 0.863612 +vt 0.296386 0.863086 +vt 0.297273 0.862936 +vt 0.317935 0.837436 +vt 0.338501 0.820063 +vt 0.299652 0.863857 +vt 0.352262 0.453765 +vt 0.322736 0.831880 +vt 0.322741 0.833092 +vn -1.0000 0.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0039 +vn -0.0000 0.9588 0.2841 +vn 0.0000 0.9484 0.3172 +vn 0.0000 -0.3256 0.9455 +vn 0.0000 -0.9535 -0.3014 +vn 0.1103 0.4144 -0.9034 +vn -0.0735 0.4256 -0.9019 +vn 0.3275 0.3966 -0.8576 +vn 0.9708 0.1320 -0.2001 +vn 0.7758 0.2586 -0.5755 +vn 0.4477 0.3447 -0.8251 +vn -0.3560 0.3788 -0.8543 +vn -0.5482 0.3301 -0.7685 +vn -0.1944 0.3772 -0.9055 +vn -0.0010 0.3847 -0.9230 +vn 0.1540 0.3797 -0.9122 +vn 0.8357 -0.2111 0.5070 +vn 0.9636 -0.1035 0.2467 +vn 0.9886 0.0575 -0.1389 +vn 0.9535 0.1154 -0.2784 +vn -0.0080 -0.3741 0.9274 +vn 0.0012 -0.3791 0.9254 +vn 0.2219 -0.3696 0.9023 +vn -0.0034 -0.3819 0.9242 +vn -0.1726 -0.3764 0.9102 +vn 0.0022 -0.3819 0.9242 +vn 0.0080 -0.3741 0.9274 +vn -0.2219 -0.3696 0.9023 +vn -0.0011 -0.3791 0.9254 +vn -0.4729 -0.3319 0.8162 +vn 0.3572 -0.3516 0.8653 +vn -0.1539 -0.3721 0.9154 +vn -0.9636 -0.1035 0.2467 +vn -0.9886 0.0575 -0.1389 +vn -0.9535 0.1154 -0.2784 +vn -0.0009 0.3847 -0.9230 +vn 0.0010 0.3847 -0.9230 +vn 0.0009 0.3847 -0.9230 +vn 0.0000 0.9310 0.3650 +vn 0.0000 0.9300 0.3676 +vn 0.0000 0.9302 0.3669 +vn 0.9710 -0.0914 0.2209 +vn 0.2322 -0.3719 0.8988 +vn 0.1539 -0.3734 0.9148 +vn -0.8442 -0.2022 0.4964 +vn -0.9710 -0.0914 0.2209 +vn -0.8357 -0.2111 0.5070 +vn 0.5563 0.3246 -0.7649 +vn 0.0001 0.9608 0.2772 +vn -0.0015 1.0000 0.0040 +vn -0.0014 1.0000 0.0023 +vn -0.5115 0.3297 -0.7935 +vn 0.0000 -0.0039 1.0000 +vn 0.0001 0.4597 0.8881 +vn 0.0000 0.2278 0.9737 +vn -0.0000 0.8351 0.5501 +vn 0.9387 -0.0984 0.3305 +vn 0.9999 0.0117 -0.0023 +vn 0.9998 0.0092 0.0149 +vn 0.9323 0.3580 0.0512 +vn 0.9411 0.3379 0.0104 +vn 0.5309 0.8401 0.1116 +vn -0.9980 -0.0211 0.0598 +vn -0.9970 0.0146 0.0763 +vn -0.9979 -0.0076 0.0647 +vn -0.9959 0.0068 0.0899 +vn -0.2927 -0.8910 -0.3470 +vn -0.3083 -0.9391 0.1520 +vn -0.3077 -0.9451 -0.1103 +vn -0.3087 -0.5872 0.7483 +vn -0.2906 -0.7546 0.5883 +vn -0.3189 0.0702 0.9452 +vn -0.3014 -0.1559 0.9407 +vn -0.2877 0.6969 0.6569 +vn -0.3131 0.5002 0.8073 +vn -0.1491 0.8829 0.4452 +vn -0.2405 0.8515 0.4659 +vn -0.9295 0.1497 -0.3372 +vn -0.9281 0.1420 -0.3443 +vn -0.3883 0.3779 -0.8405 +vn -0.9660 -0.0947 0.2406 +vn -0.9906 -0.0493 0.1279 +vn -0.9257 -0.1502 0.3472 +vn -0.9273 -0.1397 0.3472 +vn 0.9997 0.0240 0.0100 +vn 0.9368 -0.1053 0.3338 +vn 0.8731 -0.0619 0.4836 +vn 0.2534 -0.2345 0.9385 +vn 0.0038 -0.2478 0.9688 +vn 0.9613 0.2751 0.0139 +vn 0.9983 0.0446 -0.0387 +vn 0.8731 -0.0618 0.4836 +vn 0.9557 -0.0568 0.2888 +vn 0.9367 -0.1053 0.3338 +vn 0.9220 0.3843 0.0482 +vn 0.9207 0.3862 0.0561 +vn -0.0011 1.0000 0.0067 +vn -0.0020 1.0000 0.0042 +vn -0.1880 -0.2385 0.9528 +vn 0.2591 0.4017 -0.8784 +vn -0.3925 0.3826 -0.8364 +vn -0.9557 -0.0568 0.2888 +vn -0.9387 -0.0984 0.3305 +vn -0.8731 -0.0618 0.4836 +vn -0.9367 -0.1053 0.3338 +vn -0.9983 0.0446 -0.0387 +vn 0.0015 1.0000 0.0040 +vn -0.0000 0.9608 0.2772 +vn 0.0012 1.0000 0.0025 +vn -0.9999 0.0117 -0.0023 +vn -0.9998 0.0092 0.0149 +vn -0.9997 0.0240 0.0100 +vn -0.0058 -0.2497 0.9683 +vn -0.9207 0.3862 0.0561 +vn -0.9220 0.3843 0.0482 +vn -0.9613 0.2751 0.0139 +vn 0.0011 1.0000 0.0067 +vn 0.0020 1.0000 0.0042 +vn -0.9140 0.1852 -0.3611 +vn -0.0000 1.0000 0.0073 +vn -0.5563 0.3246 -0.7649 +vn -0.7857 0.2615 -0.5606 +vn 0.5115 0.3297 -0.7935 +vn 0.0000 0.4597 0.8881 +vn 0.2491 0.9578 0.1431 +vn -0.4021 0.9083 0.1151 +vn -0.9323 0.3580 0.0512 +vn -0.3771 0.9132 0.1545 +vn -0.9411 0.3379 0.0104 +vn 0.9980 -0.0211 0.0598 +vn 0.9949 -0.0724 0.0701 +vn 0.9979 -0.0076 0.0647 +vn 0.9959 0.0068 0.0899 +vn 0.9944 -0.0057 0.1052 +vn 0.9970 0.0146 0.0763 +vn 0.2927 -0.8910 -0.3470 +vn 0.2692 -0.9013 -0.3393 +vn 0.3091 -0.9446 -0.1104 +vn 0.3083 -0.9391 0.1520 +vn 0.2906 -0.7546 0.5883 +vn 0.3087 -0.5872 0.7483 +vn 0.3014 -0.1559 0.9407 +vn 0.3189 0.0702 0.9452 +vn 0.3131 0.5002 0.8073 +vn 0.2877 0.6969 0.6569 +vn 0.2405 0.8515 0.4659 +vn 0.8442 -0.2022 0.4964 +vn 0.1539 -0.3733 0.9148 +vn 0.9294 0.1498 -0.3372 +vn 0.5126 0.3515 -0.7834 +vn 0.9281 0.1420 -0.3443 +vn 0.9906 -0.0493 0.1279 +vn 0.9660 -0.0947 0.2406 +vn 0.9273 -0.1397 0.3472 +vn -0.9368 -0.1053 0.3338 +vn -0.8731 -0.0619 0.4836 +vn 0.0000 0.9318 0.3630 +vn 0.0000 0.9309 0.3653 +vn -0.0000 0.9303 0.3668 +vn -0.9949 -0.0724 0.0701 +vn -0.9944 -0.0057 0.1052 +vn -0.2692 -0.9013 -0.3393 +vn -0.1539 -0.3720 0.9154 +vn 0.1491 0.8829 0.4452 +vn 0.9257 -0.1502 0.3472 +vn 0.0000 0.3847 -0.9230 +s off +f 1230/1241/381 1231/1242/381 1232/1243/381 +f 1233/1244/382 1234/1245/382 1235/1246/382 +f 1233/1244/382 1235/1246/382 1236/1247/382 +f 1230/1241/381 1237/1248/381 1231/1242/381 +f 1238/1249/383 1239/1250/383 1240/1251/383 +f 1238/1249/383 1241/1252/383 1242/1253/383 +f 1240/1251/383 1243/1254/383 1244/1255/383 +f 1245/1256/384 1246/1257/384 1247/1258/384 +f 1246/1257/384 1248/1259/384 1249/1260/384 +f 1244/1255/383 1238/1249/383 1240/1251/383 +f 1250/1261/384 1251/1262/384 1252/1263/384 +f 1253/1264/383 1254/1265/383 1255/1266/383 +f 1256/1267/383 1255/1266/383 1257/1268/383 +f 1258/1269/385 1259/1270/385 1260/1271/385 +f 1254/1265/383 1253/1264/383 1261/1272/383 +f 1245/1256/384 1262/1273/384 1263/1274/384 +f 1264/1275/384 1263/1274/384 1265/1276/384 +f 1266/1277/384 1265/1276/384 1267/1278/384 +f 1268/1279/386 1269/1280/386 1270/1281/386 +f 1254/1265/383 1257/1268/383 1255/1266/383 +f 1271/1282/387 1272/1283/387 1273/1284/387 +f 1274/1285/387 1275/1286/387 1276/1287/387 +f 1277/1288/387 1273/1284/387 1278/1289/387 +f 1279/1290/384 1267/1278/384 1280/1291/384 +f 1239/1250/383 1238/1249/383 1242/1253/383 +f 1262/1273/384 1245/1256/384 1247/1258/384 +f 1247/1258/384 1246/1257/384 1249/1260/384 +f 1280/1291/384 1250/1261/384 1252/1263/384 +f 1281/1292/385 1258/1269/385 1260/1271/385 +f 1282/1293/383 1254/1265/383 1261/1272/383 +f 1264/1275/384 1245/1256/384 1263/1274/384 +f 1266/1277/384 1264/1275/384 1265/1276/384 +f 1279/1290/384 1266/1277/384 1267/1278/384 +f 1283/1294/386 1268/1279/386 1270/1281/386 +f 1277/1288/387 1271/1282/387 1273/1284/387 +f 1278/1289/387 1274/1285/387 1276/1287/387 +f 1276/1287/387 1277/1288/387 1278/1289/387 +f 1252/1263/384 1279/1290/384 1280/1291/384 +f 1250/1261/384 1249/1260/384 1251/1262/384 +s 1 +f 1284/1295/388 1285/1296/389 1286/1297/390 +f 1286/1297/390 1287/1298/391 1288/1299/392 +f 1286/1297/390 1289/1300/393 1284/1295/388 +f 1285/1296/389 1290/1301/394 1286/1297/390 +f 1285/1296/389 1291/1302/395 1290/1301/394 +f 1292/1303/396 1293/1304/397 1294/1305/398 +f 1295/1306/399 1296/1307/400 1234/1245/382 +f 1297/1308/401 1233/1244/382 1236/1247/382 +f 1298/1309/402 1297/1308/401 1299/1310/382 +f 1299/1310/382 1300/1311/382 1298/1309/402 +f 1301/1312/403 1302/1313/404 1303/1314/405 +f 1304/1315/406 1305/1316/407 1306/1317/408 +f 1307/1318/409 1308/1319/410 1309/1320/411 +f 1310/1321/412 1311/1322/413 1312/1323/414 +f 1230/1241/381 1313/1324/415 1237/1248/381 +f 1232/1243/381 1314/1325/416 1315/1326/381 +f 1315/1326/381 1316/1327/417 1317/1328/381 +f 1292/1303/396 1318/1329/418 1293/1304/397 +f 1293/1304/397 1319/1330/419 1294/1305/398 +f 1294/1305/398 1319/1330/419 1320/1331/420 +f 1321/1332/421 1322/1333/422 1323/1334/423 +f 1297/1308/401 1324/1335/382 1233/1244/382 +f 1296/1307/400 1235/1246/382 1234/1245/382 +f 1297/1308/401 1236/1247/382 1299/1310/382 +f 1300/1311/382 1325/1336/424 1298/1309/402 +f 1302/1313/404 1326/1337/425 1303/1314/405 +f 1302/1313/404 1306/1317/408 1326/1337/425 +f 1305/1316/407 1326/1337/425 1306/1317/408 +f 1304/1315/406 1309/1320/411 1305/1316/407 +f 1308/1319/410 1305/1316/407 1309/1320/411 +f 1311/1322/413 1327/1338/426 1312/1323/414 +f 1328/1339/427 1317/1328/381 1329/1340/428 +f 1231/1242/381 1314/1325/416 1232/1243/381 +f 1313/1324/415 1330/1341/429 1237/1248/381 +f 1314/1325/416 1316/1327/417 1315/1326/381 +f 1316/1327/417 1329/1340/428 1317/1328/381 +f 1288/1299/392 1331/1342/430 1289/1300/393 +f 1332/1343/431 1333/1344/432 1334/1345/433 +f 1335/1346/434 1292/1303/396 1316/1327/417 +f 1336/1347/435 1337/1348/436 1338/1349/437 +f 1337/1348/436 1332/1343/431 1339/1350/438 +f 1340/1351/439 1341/1352/440 1342/1353/441 +f 1343/1354/442 1344/1355/443 1345/1356/444 +f 1343/1354/442 1346/1357/382 1347/1358/382 +f 1330/1341/429 1313/1324/415 1348/1359/407 +f 1349/1360/445 1350/1361/446 1351/1362/447 +f 1352/1363/448 1351/1362/447 1350/1361/446 +f 1353/1364/449 1354/1365/450 1355/1366/451 +f 1354/1365/450 1356/1367/452 1357/1368/453 +f 1356/1367/452 1358/1369/454 1359/1370/455 +f 1358/1369/454 1360/1371/456 1361/1372/457 +f 1360/1371/456 1362/1373/458 1363/1374/459 +f 1328/1339/427 1329/1340/428 1364/1375/412 +f 1365/1376/460 1366/1377/461 1367/1378/462 +f 1365/1376/460 1368/1379/463 1369/1380/464 +f 1368/1379/463 1370/1381/465 1371/1382/466 +f 1287/1298/391 1372/1383/467 1288/1299/392 +f 1373/1384/468 1340/1351/439 1374/1385/469 +f 1374/1385/469 1375/1386/470 1376/1387/471 +f 1377/1388/472 1378/1389/473 1379/1390/474 +f 1340/1351/439 1380/1391/475 1374/1385/469 +f 1378/1389/473 1381/1392/476 1379/1390/474 +f 1380/1391/475 1342/1353/441 1372/1383/467 +f 1382/1393/477 1383/1394/478 1377/1388/472 +f 1333/1344/432 1384/1395/479 1385/1396/480 +f 1380/1391/475 1340/1351/439 1342/1353/441 +f 1339/1350/438 1332/1343/431 1334/1345/433 +f 1287/1298/391 1380/1391/475 1372/1383/467 +f 1374/1385/469 1380/1391/475 1375/1386/470 +f 1375/1386/470 1386/1397/481 1376/1387/471 +f 1379/1390/474 1382/1393/477 1377/1388/472 +f 1387/1398/482 1388/1399/483 1367/1378/462 +f 1389/1400/484 1390/1401/485 1391/1402/486 +f 1392/1403/487 1393/1404/488 1394/1405/486 +f 1395/1406/489 1396/1407/490 1397/1408/491 +f 1398/1409/492 1390/1401/485 1399/1410/493 +f 1399/1410/493 1389/1400/484 1400/1411/494 +f 1376/1387/471 1386/1397/481 1401/1412/495 +f 1402/1413/496 1403/1414/497 1404/1415/498 +f 1405/1416/499 1395/1406/489 1406/1417/500 +f 1390/1401/485 1389/1400/484 1399/1410/493 +f 1389/1400/484 1407/1418/501 1400/1411/494 +f 1389/1400/484 1391/1402/486 1408/1419/481 +f 1403/1414/497 1394/1405/486 1404/1415/498 +f 1395/1406/489 1397/1408/491 1406/1417/500 +f 1405/1416/499 1406/1417/500 1409/1420/502 +f 1291/1302/395 1410/1421/503 1411/1422/504 +f 1334/1345/433 1333/1344/432 1385/1396/480 +f 1412/1423/505 1297/1308/401 1298/1309/402 +f 1413/1424/435 1414/1425/435 1415/1426/437 +f 1416/1427/506 1415/1426/437 1417/1428/438 +f 1418/1429/507 1345/1356/444 1419/1430/508 +f 1420/1431/509 1421/1432/510 1419/1430/508 +f 1420/1431/509 1422/1433/511 1423/1434/381 +f 1295/1306/399 1424/1435/405 1425/1436/425 +f 1426/1437/512 1427/1438/513 1428/1439/514 +f 1429/1440/515 1430/1441/516 1431/1442/517 +f 1432/1443/518 1433/1444/519 1434/1445/520 +f 1435/1446/521 1434/1445/520 1436/1447/522 +f 1437/1448/523 1436/1447/522 1438/1449/524 +f 1439/1450/525 1438/1449/524 1440/1451/526 +f 1441/1452/527 1440/1451/526 1442/1453/528 +f 1443/1454/529 1444/1455/530 1445/1456/413 +f 1385/1396/480 1384/1395/479 1446/1457/502 +f 1447/1458/531 1387/1398/482 1448/1459/532 +f 1447/1458/531 1449/1460/533 1450/1461/534 +f 1451/1462/535 1450/1461/534 1452/1463/536 +f 1400/1411/494 1407/1418/501 1411/1422/504 +f 1390/1401/485 1453/1464/537 1391/1402/486 +f 1386/1397/481 1454/1465/538 1401/1412/495 +f 1393/1404/488 1404/1415/498 1394/1405/486 +f 1396/1407/490 1417/1428/438 1397/1408/491 +f 1249/1260/384 1248/1259/384 1251/1262/384 +f 1312/1323/414 1327/1338/426 1305/1316/407 +f 1455/1466/539 1456/1467/539 1321/1332/421 +f 1457/1468/540 1458/1469/540 1459/1470/541 +f 1322/1333/422 1459/1470/541 1323/1334/423 +f 1411/1422/504 1407/1418/501 1291/1302/395 +f 1300/1311/382 1443/1454/529 1325/1336/424 +f 1327/1338/426 1326/1337/425 1305/1316/407 +f 1231/1242/381 1460/1471/381 1314/1325/416 +f 1407/1418/501 1290/1301/394 1291/1302/395 +f 1289/1300/393 1286/1297/390 1288/1299/392 +f 1314/1325/416 1335/1346/434 1316/1327/417 +f 1461/1472/435 1336/1347/435 1338/1349/437 +f 1338/1349/437 1337/1348/436 1339/1350/438 +f 1418/1429/507 1343/1354/442 1345/1356/444 +f 1344/1355/443 1343/1354/442 1347/1358/382 +f 1462/1473/410 1330/1341/429 1348/1359/407 +f 1463/1474/542 1349/1360/445 1351/1362/447 +f 1464/1475/543 1352/1363/448 1350/1361/446 +f 1465/1476/544 1353/1364/449 1355/1366/451 +f 1355/1366/451 1354/1365/450 1357/1368/453 +f 1357/1368/453 1356/1367/452 1359/1370/455 +f 1359/1370/455 1358/1369/454 1361/1372/457 +f 1361/1372/457 1360/1371/456 1363/1374/459 +f 1466/1477/545 1328/1339/427 1364/1375/412 +f 1388/1399/483 1365/1376/460 1367/1378/462 +f 1366/1377/461 1365/1376/460 1369/1380/464 +f 1369/1380/464 1368/1379/463 1371/1382/466 +f 1448/1459/532 1387/1398/482 1367/1378/462 +f 1294/1305/398 1412/1423/505 1298/1309/402 +f 1416/1427/506 1413/1424/435 1415/1426/437 +f 1396/1407/490 1416/1427/506 1417/1428/438 +f 1421/1432/510 1418/1429/507 1419/1430/508 +f 1422/1433/511 1420/1431/509 1419/1430/508 +f 1467/1478/381 1420/1431/509 1423/1434/381 +f 1296/1307/400 1295/1306/399 1425/1436/425 +f 1431/1442/517 1426/1437/512 1428/1439/514 +f 1428/1439/514 1429/1440/515 1431/1442/517 +f 1435/1446/521 1432/1443/518 1434/1445/520 +f 1437/1448/523 1435/1446/521 1436/1447/522 +f 1439/1450/525 1437/1448/523 1438/1449/524 +f 1441/1452/527 1439/1450/525 1440/1451/526 +f 1468/1479/546 1441/1452/527 1442/1453/528 +f 1325/1336/424 1443/1454/529 1445/1456/413 +f 1449/1460/533 1447/1458/531 1448/1459/532 +f 1451/1462/535 1447/1458/531 1450/1461/534 +f 1469/1480/547 1451/1462/535 1452/1463/536 +f 1323/1334/423 1455/1466/539 1321/1332/421 +f 1322/1333/422 1457/1468/540 1459/1470/541 +f 1294/1305/398 1320/1331/420 1470/1481/548 +f 1294/1305/398 1470/1481/548 1412/1423/505 +f 1292/1303/396 1335/1346/434 1471/1482/548 +f 1292/1303/396 1471/1482/548 1318/1329/418 +o lower_pistol_0 +v 1.709833 6.807340 5.318413 +v 1.709833 6.807340 5.149458 +v 1.965886 6.807340 5.149458 +v 1.363295 6.807340 7.165412 +v 1.363295 6.807340 5.318413 +v 1.882584 6.807340 5.848535 +v 2.253843 6.902664 -4.747439 +v 2.253843 6.534985 -3.056432 +v 1.924818 6.534985 -3.056432 +v 1.924818 6.930664 -2.831019 +v 1.924818 6.534985 -3.056432 +v 2.253843 6.534985 -3.056432 +v 2.253843 6.534985 -3.056432 +v 2.253843 6.902664 -4.747439 +v 2.253843 7.162437 -4.697546 +v 1.924818 6.930664 -2.831019 +v 1.592578 6.930664 -2.831019 +v 1.592578 7.603653 -2.269642 +v 1.592578 6.534985 -3.056432 +v 1.592578 6.902664 -4.747439 +v 1.924818 6.125614 -1.931486 +v 1.592578 6.902664 -4.747439 +v 1.592578 7.162437 -4.697546 +v 2.253843 7.162437 -4.697546 +v 2.253843 7.603653 -2.269642 +v 2.253843 7.371370 -2.466391 +v 1.924818 7.371370 -2.466391 +v 2.253843 7.371370 -2.466391 +v 2.253843 7.603653 -2.269642 +v 2.253843 6.966193 -1.398447 +v 2.253843 7.603653 -2.269642 +v 1.592578 7.603653 -2.269642 +v 1.592578 6.966193 -1.398447 +v 1.592578 7.162437 -4.697546 +v 1.592578 6.902664 -4.747439 +v 1.592578 6.534985 -3.056432 +v 2.253843 6.930664 -2.831019 +v 2.253843 7.162437 -4.697546 +v 1.592578 7.162437 -4.697546 +v 1.924818 7.371370 -2.466391 +v 1.924818 6.726052 -1.549974 +v 1.924818 6.125614 -1.931486 +v 2.253843 6.966193 -1.398447 +v 1.592578 6.966193 -1.398447 +v 1.924818 6.726052 -1.549974 +v 1.709833 7.483092 5.149458 +v 1.709833 6.807340 5.149458 +v 1.709833 7.118922 5.318413 +v 1.363295 7.118922 5.318413 +v 1.363295 6.807340 7.165412 +v 1.363295 7.118922 10.804636 +v 1.363295 6.201983 10.638463 +v 1.363295 6.617640 11.001136 +v 1.363295 7.118922 10.804636 +v 1.882584 7.118922 7.165412 +v 1.363295 7.118922 5.318413 +v 2.249606 7.118922 10.804636 +v 2.249606 7.118922 7.165412 +v 1.709833 7.483090 5.848535 +v 1.709833 7.483090 5.848535 +v 1.882584 7.118922 5.848535 +v 1.965886 7.483090 5.848535 +v 2.249606 7.118922 10.804636 +v 2.249606 6.617640 11.001136 +v 2.249606 6.201983 10.638463 +v 2.249606 7.118922 7.165412 +v 1.363295 6.915576 11.004508 +v 1.363295 6.411723 10.933466 +v 1.709833 7.118922 5.848535 +v 1.709833 7.118922 5.848535 +v 1.882584 6.807340 5.848535 +v 1.965886 6.807340 5.848535 +v 2.249606 6.411723 10.933466 +v 2.249606 6.807340 7.165412 +v 2.249606 6.807340 7.165412 +v 2.249606 6.201983 10.638463 +v 1.363295 6.201983 10.638463 +v 1.363295 6.915576 11.004508 +v 2.249606 6.915576 11.004508 +v 1.363295 6.617640 11.001136 +v 2.249606 6.617640 11.001136 +v 1.363295 6.411723 10.933466 +v 2.249606 6.411723 10.933466 +v 1.882584 6.807340 7.165412 +v 1.709833 7.118922 5.318413 +v 1.363295 6.807340 5.318413 +v 1.363295 7.118922 5.318413 +v 1.709833 7.118922 5.318413 +v 1.709833 6.807340 5.149458 +v 1.709833 7.483092 5.149458 +v 1.965886 7.483092 5.149458 +v 1.965886 7.483092 5.149458 +v 1.709833 7.483092 5.149458 +v 1.709833 7.483090 5.848535 +v 1.965886 6.807340 5.149458 +v 1.965886 7.483092 5.149458 +v 1.965886 7.483090 5.848535 +v 1.882584 6.807340 5.848535 +v 1.882584 7.118922 5.848535 +v 1.882584 7.118922 7.165412 +v 1.882584 6.807340 7.165412 +v 1.882584 7.118922 7.165412 +v 2.249606 7.118922 7.165412 +v 1.363295 6.807340 5.318413 +v 1.882584 7.118922 5.848535 +v 1.709833 6.807340 5.318413 +v 1.709833 7.118922 5.848535 +v 2.249606 6.915576 11.004508 +v 0.741864 8.870750 5.649786 +v 0.685393 8.586851 5.649786 +v 0.685393 8.586849 22.443676 +v -1.051055 4.245723 5.289183 +v -1.051055 4.815591 5.698347 +v -1.582758 4.978194 4.997455 +v -1.051055 0.126897 9.525374 +v -1.051055 0.126897 6.278877 +v -1.051055 -0.223472 3.408138 +v -1.051055 5.194825 19.361946 +v -1.051055 4.834128 12.349441 +v -1.051055 4.834128 19.361946 +v -1.582758 5.194827 5.282278 +v -1.373788 7.218982 19.361946 +v -1.373788 6.342137 19.361946 +v -0.857694 7.218982 19.361946 +v -1.051055 5.194825 19.361946 +v -0.857694 5.453605 19.361946 +v -1.373788 5.534109 19.361946 +v 0.741864 8.870749 22.443676 +v 0.685393 8.586849 22.443676 +v 0.912610 8.492733 22.443676 +v 0.987802 8.870749 22.443676 +v 0.912610 8.492733 22.443676 +v 0.912610 8.492735 5.649786 +v 0.987802 8.870750 5.649786 +v 0.912610 8.492735 5.649786 +v 0.685393 8.586851 5.649786 +v 0.524577 8.346173 5.649786 +v 0.524577 8.346171 22.443676 +v 0.524577 8.346171 22.443676 +v 0.698482 8.172267 22.443676 +v 0.698482 8.172267 22.443676 +v 0.698482 8.172269 5.649786 +v 0.698482 8.172269 5.649786 +v 0.524577 8.346173 5.649786 +v 0.283899 8.185357 5.649786 +v 0.283899 8.185355 22.443676 +v 0.283899 8.185355 22.443676 +v 0.378015 7.958138 22.443676 +v 0.378015 7.958138 22.443676 +v 0.378015 7.958138 5.649786 +v 0.378015 7.958138 5.649786 +v 0.283899 8.185357 5.649786 +v 0.000000 8.128886 5.649786 +v 0.000000 8.128884 22.443676 +v 0.000000 8.128884 22.443676 +v 0.000000 7.882946 22.443676 +v 0.000000 7.882946 22.443676 +v 0.000000 7.882946 5.649786 +v 0.000000 7.882946 5.649786 +v 0.000000 8.128886 5.649786 +v 0.000000 8.128886 5.649786 +v -0.283899 8.185357 5.649786 +v -0.283899 8.185355 22.443676 +v -0.283899 8.185355 22.443676 +v -0.378015 7.958138 22.443676 +v 0.000000 7.882946 22.443676 +v -0.378015 7.958138 22.443676 +v -0.378015 7.958138 5.649786 +v -0.378015 7.958138 5.649786 +v -0.283899 8.185357 5.649786 +v -0.524577 8.346173 5.649786 +v -0.524577 8.346171 22.443676 +v -0.524577 8.346171 22.443676 +v -0.698482 8.172267 22.443676 +v -0.698482 8.172267 22.443676 +v -0.698482 8.172269 5.649786 +v -0.698482 8.172269 5.649786 +v -0.524577 8.346173 5.649786 +v -0.685393 8.586851 5.649786 +v -0.685393 8.586849 22.443676 +v -0.685393 8.586849 22.443676 +v -0.912610 8.492733 22.443676 +v -0.912610 8.492733 22.443676 +v -0.912610 8.492735 5.649786 +v -0.912610 8.492735 5.649786 +v -0.685393 8.586851 5.649786 +v -0.741864 8.870750 5.649786 +v -0.741864 8.870749 22.443676 +v -0.741864 8.870749 22.443676 +v -0.987802 8.870749 22.443676 +v -0.987802 8.870749 22.443676 +v -0.987802 8.870750 5.649786 +v -0.987802 8.870750 5.649786 +v -0.741864 8.870750 5.649786 +v -0.685393 9.154650 5.649786 +v -0.685393 9.154648 22.443676 +v -0.685393 9.154648 22.443676 +v -0.912610 9.248764 22.443676 +v -0.912610 9.248764 22.443676 +v -0.912610 9.248766 5.649786 +v -0.912610 9.248766 5.649786 +v -0.685393 9.154650 5.649786 +v -0.524577 9.395328 5.649786 +v -0.524577 9.395326 22.443676 +v -0.524577 9.395326 22.443676 +v -0.698482 9.569230 22.443676 +v -0.698482 9.569230 22.443676 +v -0.698482 9.569232 5.649786 +v -0.698482 9.569232 5.649786 +v -0.524577 9.395328 5.649786 +v -0.283899 9.556144 5.649786 +v -0.283899 9.556142 22.443676 +v -0.283899 9.556142 22.443676 +v -0.378015 9.783358 22.443676 +v -0.378015 9.783358 22.443676 +v -0.378015 9.783360 5.649786 +v -0.378015 9.783360 5.649786 +v -0.283899 9.556144 5.649786 +v 0.000000 9.612615 5.649786 +v 0.000000 9.612613 22.443676 +v 0.000000 9.612613 22.443676 +v 0.000000 9.858550 22.443676 +v 0.000000 9.858550 22.443676 +v 0.000000 9.858552 5.649786 +v 0.000000 9.858552 5.649786 +v 0.000000 9.612615 5.649786 +v 0.283899 9.556144 5.649786 +v 0.283899 9.556142 22.443676 +v 0.283899 9.556142 22.443676 +v 0.378015 9.783358 22.443676 +v 0.378015 9.783358 22.443676 +v 0.378015 9.783360 5.649786 +v 0.378015 9.783360 5.649786 +v 0.283899 9.556144 5.649786 +v 0.524577 9.395328 5.649786 +v 0.524577 9.395326 22.443676 +v 0.524577 9.395326 22.443676 +v 0.698482 9.569230 22.443676 +v 0.698482 9.569230 22.443676 +v 0.698482 9.569232 5.649786 +v 0.698482 9.569232 5.649786 +v 0.524577 9.395328 5.649786 +v 0.685393 9.154650 5.649786 +v 0.685393 9.154648 22.443676 +v 0.685393 9.154648 22.443676 +v 0.912610 9.248764 22.443676 +v 0.912610 9.248764 22.443676 +v 0.912610 9.248766 5.649786 +v 0.912610 9.248766 5.649786 +v 0.685393 9.154650 5.649786 +v 0.741864 8.870749 22.443676 +v 0.987802 8.870749 22.443676 +v 0.987802 8.870750 5.649786 +v 0.741864 8.870750 5.649786 +v 1.133210 1.741260 4.213062 +v 1.133210 1.619134 4.668841 +v 1.133210 1.560808 4.635167 +v 1.133210 1.285481 5.002494 +v 1.133210 1.251807 4.944168 +v 1.133210 0.829702 5.124619 +v 1.133210 0.829702 5.057271 +v 1.133210 0.373924 5.002494 +v 1.133210 0.407598 4.944168 +v 1.133210 0.040271 4.668841 +v 1.133210 0.098596 4.635167 +v 1.133210 -0.081855 4.213062 +v 1.133210 -0.014506 4.213062 +v 1.133210 0.040271 3.757283 +v 1.133210 0.098596 3.790958 +v 1.133210 0.373924 3.423630 +v 1.133210 0.407598 3.481956 +v 1.133210 0.829702 3.301505 +v 1.133210 0.829702 3.368853 +v 1.133210 1.285481 3.423630 +v 1.133210 1.251807 3.481956 +v 1.133210 1.619134 3.757283 +v 1.133210 1.560808 3.790958 +v 1.133210 1.673911 4.213062 +v 1.133210 1.560808 3.790958 +v 1.133210 1.673911 4.213062 +v 1.469249 1.673911 4.213062 +v 1.020556 1.741260 4.213062 +v 1.020556 1.619134 4.668841 +v 1.133210 1.619134 4.668841 +v 1.469249 1.673911 4.213062 +v 1.469249 1.560808 4.635167 +v 1.469249 0.829702 4.213062 +v 1.133210 1.251807 3.481956 +v 1.469249 1.560808 3.790958 +v 1.020556 1.285481 5.002494 +v 1.133210 1.285481 5.002494 +v 1.469249 1.251807 4.944168 +v 1.133210 0.829702 3.368853 +v 1.469249 1.251807 3.481956 +v 1.020556 0.829702 5.124619 +v 1.133210 0.829702 5.124619 +v 1.469249 0.829702 5.057271 +v 1.133210 0.407598 3.481956 +v 1.133210 0.829702 3.368853 +v 1.469249 0.829702 3.368853 +v 1.020556 0.373924 5.002494 +v 1.133210 0.373924 5.002494 +v 1.469249 0.407598 4.944168 +v 1.133210 0.098596 3.790958 +v 1.469249 0.407598 3.481956 +v 1.020556 0.040271 4.668841 +v 1.133210 0.040271 4.668841 +v 1.469249 0.098596 4.635167 +v 1.133210 -0.014506 4.213062 +v 1.469249 0.098596 3.790958 +v 1.020556 -0.081855 4.213062 +v 1.133210 -0.081855 4.213062 +v 1.469249 -0.014506 4.213062 +v 1.133210 0.098596 4.635167 +v 1.469249 -0.014506 4.213062 +v 1.020556 0.040271 3.757283 +v 1.133210 0.040271 3.757283 +v 1.469249 0.098596 3.790958 +v 1.133210 0.407598 4.944168 +v 1.469249 0.098596 4.635167 +v 1.020556 0.373924 3.423630 +v 1.133210 0.373924 3.423630 +v 1.469249 0.407598 3.481956 +v 1.133210 0.829702 5.057271 +v 1.469249 0.407598 4.944168 +v 1.020556 0.829702 3.301505 +v 1.133210 0.829702 3.301505 +v 1.469249 0.829702 3.368853 +v 1.133210 1.251807 4.944168 +v 1.469249 0.829702 5.057271 +v 1.020556 0.829702 3.301505 +v 1.020556 1.285481 3.423630 +v 1.133210 1.285481 3.423630 +v 1.469249 1.251807 3.481956 +v 1.133210 1.560808 4.635167 +v 1.469249 1.251807 4.944168 +v 1.020556 1.619134 3.757283 +v 1.133210 1.619134 3.757283 +v 1.469249 1.560808 3.790958 +v 1.469249 1.560808 4.635167 +v 1.133210 1.741260 4.213062 +v -2.120367 6.032114 -1.127586 +v -2.168285 6.052625 -0.925915 +v -2.124553 6.332816 -1.081475 +v -1.803483 -8.183756 -0.940654 +v -1.550631 -8.207280 -0.940181 +v -1.803497 2.273637 3.302741 +v -2.107996 4.322828 -0.236828 +v -2.163024 4.259209 -0.066218 +v -2.116467 4.647215 -0.174769 +v -2.168202 1.521683 2.220641 +v -2.172835 -7.439816 -1.372818 +v -2.137654 1.534970 2.385706 +v -1.849792 2.296251 3.228978 +v -1.880736 2.578792 3.289423 +v -1.879857 2.017154 3.056580 +v -1.803508 -5.875544 -4.913877 +v -1.803499 -6.096515 -4.976789 +v -2.130997 -6.177512 -4.485744 +v -1.550631 -5.813593 -4.933243 +v -1.550631 -6.027862 -4.968081 +v -1.839455 4.411472 -0.653382 +v -2.137789 6.702975 -0.434405 +v -1.803504 7.006510 -0.872316 +v -1.803507 7.133335 -0.533682 +v -1.550631 7.026423 -0.881127 +v -1.803483 6.443164 -1.419198 +v -2.176839 -6.680809 -4.296602 +v -2.176541 -6.266698 -4.325728 +v -2.177566 -6.820210 -4.161257 +v -2.121354 -6.703000 -4.498363 +v -2.173862 1.655341 1.737604 +v -1.978566 2.889965 3.247607 +v -1.933436 2.830892 2.688685 +v -2.119590 3.136953 3.088691 +v -1.971355 2.842444 2.231860 +v -2.159245 3.192134 2.951774 +v -2.171134 2.757730 1.304274 +v -2.032148 2.748445 1.721616 +v -2.176745 2.987958 1.594733 +v -2.167308 3.176706 2.349641 +v -1.838198 2.378400 2.963018 +v -1.857113 2.122498 2.578046 +v -2.068853 1.609260 2.541311 +v -1.962750 1.737307 2.831918 +v -1.945670 1.985472 2.045092 +v -2.173443 2.217372 1.117763 +v -2.176554 1.911733 1.296362 +v -2.047754 2.044644 1.547692 +v -1.847373 2.496792 2.548999 +v -1.977065 2.428715 1.644999 +v -1.883795 2.419949 2.091068 +v -2.169390 2.475281 1.132310 +v -2.174314 6.129676 4.109241 +v -2.176527 6.514084 3.866836 +v -2.108078 6.117068 4.317321 +v -2.174668 5.841984 -0.795250 +v -2.179727 5.017104 -0.002164 +v -2.141465 5.765682 -0.955082 +v -2.145445 -6.930309 -4.281384 +v -2.119612 -7.822574 -1.480976 +v -2.176766 -7.604493 -1.548246 +v -2.174624 4.663060 0.053574 +v -2.163947 6.294227 -0.887580 +v -2.176857 6.557230 -0.328893 +v -1.803505 6.986403 4.265716 +v -2.129669 6.678270 3.948849 +v -1.550631 7.011675 4.277203 +v -1.803498 6.146345 4.785964 +v -1.550631 5.888644 4.797830 +v -1.550631 6.141139 4.807182 +v -1.803494 -8.338592 -1.148253 +v -2.121051 -7.647707 -1.285315 +v -1.284940 0.829702 3.740532 +v -1.284940 1.075818 2.934655 +v -1.284940 0.583586 2.934655 +v -1.284940 0.442691 4.456008 +v -1.284940 0.606261 4.619579 +v -1.353546 0.606261 4.619579 +v -1.284940 0.382820 4.232567 +v -1.353546 0.442691 4.456008 +v -1.284940 0.829702 4.679450 +v -1.353546 0.829702 4.679450 +v -1.284940 0.442691 4.009126 +v -1.353546 0.382820 4.232567 +v -1.284940 0.606261 3.845556 +v -1.353546 0.442691 4.009126 +v -1.284940 1.053144 4.619579 +v -1.353546 1.053144 4.619579 +v -1.284940 0.829702 3.785685 +v -1.353546 0.606261 3.845556 +v -1.284940 1.053144 3.845556 +v -1.353546 0.829702 3.785685 +v -1.284940 1.216714 4.456008 +v -1.353546 1.216714 4.456008 +v -1.284940 1.216714 4.009126 +v -1.353546 1.053144 3.845556 +v -1.284940 1.276585 4.232567 +v -1.353546 1.216714 4.009126 +v -1.353546 1.276585 4.232567 +v -1.284940 0.403587 4.478585 +v -1.284940 0.583685 4.658682 +v -1.284940 0.606261 4.619579 +v -1.284940 0.337667 4.232567 +v -1.284940 0.442691 4.456008 +v -1.284940 0.829702 4.724603 +v -1.284940 0.829702 4.679450 +v -1.284940 0.403587 3.986549 +v -1.284940 0.382820 4.232567 +v -1.284940 0.583685 3.806452 +v -1.284940 0.442691 4.009126 +v -1.284940 1.075720 4.658682 +v -1.284940 1.053144 4.619579 +v -1.284940 0.606261 3.845556 +v -1.284940 1.075720 3.806452 +v -1.284940 0.829702 3.785685 +v -1.284940 1.255818 4.478585 +v -1.284940 1.216714 4.456008 +v -1.284940 1.255818 3.986549 +v -1.284940 1.053144 3.845556 +v -1.284940 1.321738 4.232567 +v -1.284940 1.216714 4.009126 +v -1.284940 1.276585 4.232567 +v -1.353546 0.606261 4.619579 +v -1.353546 0.829702 4.232567 +v -1.353546 0.442691 4.456008 +v -1.284940 0.583685 4.658682 +v -1.284940 0.403587 4.478585 +v -0.991334 0.403587 4.478585 +v -1.284940 0.829702 4.724603 +v -0.991334 0.583685 4.658682 +v -1.353546 0.382820 4.232567 +v -1.284940 0.337667 4.232567 +v -0.991334 0.337667 4.232567 +v -1.353546 0.829702 4.679450 +v -1.353546 0.442691 4.009126 +v -1.284940 0.403587 3.986549 +v -0.991334 0.403587 3.986549 +v -1.284940 1.075720 4.658682 +v -0.991334 0.829702 4.724603 +v -1.353546 0.606261 3.845556 +v -1.284940 0.583685 3.806452 +v -0.991334 0.583685 3.806452 +v -1.353546 1.053144 4.619579 +v -1.353546 0.829702 3.785685 +v -1.284940 1.075720 3.806452 +v -0.991334 1.075720 3.806452 +v -0.991334 1.075818 2.934655 +v -1.284940 1.255818 4.478585 +v -0.991334 1.075720 4.658682 +v -1.353546 1.053144 3.845556 +v -1.284940 0.714416 2.803811 +v -1.284940 0.944989 2.803811 +v -0.991334 0.944989 2.803811 +v -1.353546 1.216714 4.456008 +v -1.353546 1.216714 4.009126 +v -1.284940 1.255818 3.986549 +v -0.991334 1.255818 3.986549 +v -1.284940 1.321738 4.232567 +v -0.991334 1.255818 4.478585 +v -1.353546 1.276585 4.232567 +v -0.991334 1.321738 4.232567 +v -1.284940 1.075818 2.934655 +v -1.284940 0.583586 2.934655 +v -0.991334 0.583586 2.934655 +v -1.284940 0.583586 2.934655 +v -1.284940 0.944989 2.803811 +v -1.702916 6.787141 -2.070845 +v -1.702916 6.582519 -2.070845 +v -1.702916 6.727209 -1.926155 +v -1.702916 6.787141 -2.070845 +v -1.702916 6.727209 -1.926155 +v 1.979996 6.727209 -1.926155 +v 1.979996 6.787141 -2.070845 +v 1.979996 6.727209 -1.926155 +v 1.979996 6.582519 -2.070845 +v -1.702916 6.582519 -1.866222 +v -1.702916 6.582519 -1.866222 +v 1.979996 6.582519 -1.866222 +v 1.979996 6.582519 -1.866222 +v -1.702916 6.437829 -1.926155 +v -1.702916 6.437829 -1.926155 +v 1.979996 6.437829 -1.926155 +v 1.979996 6.437829 -1.926155 +v -1.702916 6.377896 -2.070845 +v -1.702916 6.437829 -1.926155 +v -1.702916 6.377896 -2.070845 +v 1.979996 6.377896 -2.070845 +v 1.979996 6.377896 -2.070845 +v -1.702916 6.437829 -2.215535 +v -1.702916 6.437829 -2.215535 +v 1.979996 6.437829 -2.215535 +v 1.979996 6.437829 -2.215535 +v -1.702916 6.582519 -2.275468 +v -1.702916 6.582519 -2.275468 +v 1.979996 6.582519 -2.275468 +v -1.425465 5.714319 12.324278 +v -1.425465 5.534111 12.470450 +v -1.425465 6.342137 12.470450 +v 1.979996 6.582519 -2.275468 +v -1.702916 6.727209 -2.215535 +v -1.373788 5.534109 19.361946 +v -1.702916 6.727209 -2.215535 +v 1.979996 6.727209 -2.215535 +v 1.979996 6.727209 -2.215535 +v -1.425465 5.714319 12.324278 +v -1.425465 6.129148 12.324278 +v -1.582758 6.173631 12.234967 +v -1.425465 5.534111 12.470450 +v -1.582758 5.657321 12.234967 +v 1.979996 6.787141 -2.070845 +v 0.000000 6.215098 -5.421183 +v -1.582758 6.749187 -4.912819 +v 1.582758 6.749187 -4.912819 +v 1.488590 5.921740 -5.685918 +v 0.000000 6.031167 -5.736894 +v -1.582758 5.957942 -5.266877 +v -1.582758 5.870734 -4.399592 +v -1.582758 6.749187 -4.912819 +v 1.582758 5.957942 -5.266877 +v 1.582758 6.154639 -5.365934 +v 1.582758 6.749187 -4.912819 +v 1.582758 5.848901 -5.238699 +v 1.582758 5.870734 -4.399592 +v 0.983988 5.324528 -5.327059 +v -1.425465 6.342137 12.470450 +v -1.582758 6.342137 12.374792 +v -1.582758 5.848901 -5.238699 +v -1.484238 5.789523 -5.649559 +v -0.983988 5.324528 -5.327059 +v 1.488590 5.921740 -5.685918 +v -1.425465 6.342137 12.470450 +v -1.373788 6.342137 19.361946 +v -1.582758 6.342137 18.331852 +v -1.051055 0.805342 10.660654 +v -1.051055 0.446518 11.231197 +v -1.051055 3.374604 10.660654 +v -1.051055 -0.223474 11.574593 +v -1.051055 0.200441 10.158533 +v -0.836559 7.218984 0.486124 +v -1.148529 7.218984 0.843372 +v -1.148529 -7.632973 -5.164886 +v -1.092400 5.576506 -6.393807 +v -1.582758 6.342137 18.331852 +v -1.582758 7.218982 18.331852 +v -1.582758 6.342137 12.374792 +v -1.051055 5.194827 6.202400 +v -1.051055 5.194825 19.361946 +v -1.582758 5.194825 18.331852 +v -1.373788 5.194825 19.361946 +v -0.580398 3.816195 5.489355 +v -0.580398 5.143752 5.307025 +v -0.580398 4.250057 5.891657 +v -1.148529 7.218984 4.965837 +v -1.148529 -8.749960 -1.489985 +v -0.580398 4.410827 6.286258 +v -0.580398 4.410827 8.504850 +v -1.051055 4.410827 9.595867 +v -1.582758 7.218984 -4.804955 +v -0.843982 7.218984 5.409400 +v -1.148529 7.218984 4.965837 +v -0.957142 7.218984 5.409400 +v -1.582758 7.218984 5.409400 +v -1.582758 7.218984 5.409400 +v -1.582758 7.218982 18.331852 +v -0.857694 7.218984 12.938878 +v -1.213076 8.145895 -1.953275 +v -0.692288 8.145895 -1.953275 +v -0.427195 9.430100 -1.953275 +v -0.708688 7.624437 -1.953275 +v -0.397424 7.218984 -1.953275 +v -1.213076 7.624437 -1.953275 +v -1.213076 7.218984 -1.953275 +v -1.213076 7.218984 -1.953275 +v -0.836559 7.218984 0.486124 +v -0.397424 7.218984 -1.953275 +v -0.843982 7.218984 5.409400 +v -0.957142 7.218984 5.409400 +v -0.957142 7.863286 5.710876 +v -1.488590 5.921740 -5.685918 +v -1.582758 6.154639 -5.365934 +v -1.582758 5.957942 -5.266877 +v -1.488590 5.921740 -5.685918 +v 1.582758 5.957942 -5.266877 +v 1.484238 5.789523 -5.649559 +v -1.051055 0.730363 5.438924 +v -1.052369 1.419883 5.161799 +v -1.051770 1.087353 3.958939 +v -1.052369 2.312512 5.048415 +v -1.052369 3.020580 5.130578 +v -1.051055 4.245723 5.289183 +v -1.582758 0.545047 3.068055 +v -1.582758 -0.142682 2.781362 +v -1.051055 -0.223472 3.408138 +v -1.582758 4.606297 4.761065 +v -1.582758 1.087353 3.294126 +v -1.051770 1.087353 3.958939 +v 1.494327 1.329366 3.504859 +v 1.493618 0.998143 3.367662 +v 1.582758 -0.142682 2.781362 +v -1.582758 -2.770208 -4.057409 +v -1.582758 2.997752 -1.677936 +v -1.582758 0.676579 2.788985 +v -1.582758 0.955821 2.788985 +v -1.582758 1.087353 2.951361 +v -1.582758 7.218984 0.532610 +v -0.443586 5.533404 -6.767138 +v -0.528251 5.631948 -6.753191 +v 0.000000 5.631948 -6.801856 +v 1.239158 -6.459403 -6.210184 +v 1.239158 -6.716357 -6.316617 +v 1.239158 -5.908380 -6.182570 +v -1.239158 -6.459403 -6.210184 +v -1.239158 -6.352968 -5.953228 +v -1.239158 -5.908380 -6.182570 +v 1.239158 -7.503078 -5.592237 +v 1.239158 -6.973310 -5.696272 +v 1.239158 -6.751891 -5.355608 +v 1.239158 -7.188473 -6.627295 +v 1.239158 -7.079744 -5.953228 +v 1.239158 -6.352968 -5.953228 +v 1.239158 -6.111135 -5.821549 +v 1.239158 -6.459403 -5.696272 +v 1.239158 -6.353005 -5.417203 +v 1.239158 -6.716357 -5.589839 +v -1.239158 -7.503078 -5.592237 +v -1.239158 -7.079744 -5.953228 +v -1.239158 -7.188473 -6.627295 +v -1.239158 -6.716357 -5.589839 +v -1.239158 -6.973310 -5.696272 +v -1.239158 -6.751891 -5.355608 +v -1.239158 -6.459403 -5.696272 +v -1.239158 -6.353005 -5.417203 +v -1.239158 -6.111135 -5.821549 +v -1.239158 -6.716357 -6.316617 +v 1.239158 -6.973310 -6.210184 +v -1.239158 -6.973310 -6.210184 +v -1.148529 7.218984 0.843372 +v -1.582758 -8.611731 0.338328 +v -1.582758 -7.606416 0.140500 +v -1.539709 -9.237019 0.112444 +v -1.582758 -6.783546 -5.235445 +v -1.582758 -7.547009 -5.447709 +v -1.582758 -6.272798 -5.294007 +v -1.582758 -6.767919 0.122678 +v -1.582758 -5.973763 -5.781600 +v -1.582758 -3.887019 -5.026797 +v 0.000000 5.385467 -6.635780 +v 0.000000 5.533404 -6.815803 +v -0.957142 7.218984 7.609767 +v -1.582758 7.218984 -4.804955 +v -1.213076 7.218984 -4.804955 +v -1.582758 4.316335 -1.880566 +v -1.582758 5.060399 -2.393605 +v -1.213076 9.430100 -1.953275 +v -1.213076 9.430100 -4.335176 +v -1.213076 8.145895 -4.804955 +v -1.582758 5.060399 -2.393605 +v -1.582758 5.705916 -3.303000 +v -0.974568 4.768444 -3.230170 +v -1.113677 5.685023 -6.433600 +v -1.488590 5.921740 -5.685918 +v -1.582758 5.705916 -3.303000 +v -1.582758 7.218984 -4.804955 +v -1.213076 7.218984 -4.804955 +v -0.703050 7.624437 -4.804955 +v -0.702042 8.145895 -4.804955 +v -0.419459 8.845671 -4.804955 +v -1.239158 -7.188473 -6.627295 +v -1.239158 -5.908380 -6.182570 +v -0.974568 -7.096977 -6.928317 +v -1.239158 -5.908380 -6.182570 +v -1.239158 -6.111135 -5.821549 +v -1.582758 -5.973763 -5.781600 +v -1.582758 -7.547009 -5.447709 +v -1.582758 -6.783546 -5.235445 +v -1.239158 -6.751891 -5.355608 +v -1.582758 -6.272798 -5.294007 +v 2.119590 3.136953 3.088691 +v 2.108078 6.117068 4.317321 +v 1.803502 5.931036 4.779144 +v 1.880736 2.578792 3.289423 +v 1.978566 2.889965 3.247607 +v 1.803497 2.273637 3.302741 +v 1.962750 1.737307 2.831918 +v 1.879857 2.017154 3.056580 +v 1.803483 -8.183756 -0.940654 +v 2.068853 1.609260 2.541311 +v 2.137654 1.534970 2.385706 +v 1.803499 -6.096515 -4.976789 +v 2.130997 -6.177512 -4.485744 +v 2.121354 -6.703000 -4.498363 +v 1.550631 -7.022314 -4.915743 +v 1.550631 -6.027862 -4.968081 +v 2.116467 4.647215 -0.174769 +v 2.107996 4.322828 -0.236828 +v 1.839455 4.411472 -0.653382 +v 2.138861 4.925927 -0.212349 +v 1.832909 4.741830 -0.615315 +v 2.141465 5.765682 -0.955082 +v 1.803493 4.979961 -0.698811 +v 2.120367 6.032114 -1.127586 +v 1.803477 5.747915 -1.279529 +v 2.124553 6.332816 -1.081475 +v 1.803468 6.136785 -1.467315 +v 1.803507 7.133335 -0.533682 +v 1.803500 7.103070 4.086896 +v 2.129669 6.678270 3.948849 +v 1.550631 4.920799 -0.676702 +v 1.550631 5.750243 -1.260870 +v 1.550631 6.117420 -1.448276 +v 1.550631 6.431123 -1.427430 +v 1.803483 6.443164 -1.419198 +v 1.550631 4.711940 -0.618973 +v 1.839455 4.411472 -0.653382 +v 2.179727 5.017104 -0.002164 +v 2.174624 4.663060 0.053574 +v 2.119612 -7.822574 -1.480976 +v 2.176766 -7.604493 -1.548246 +v 2.121051 -7.647707 -1.285315 +v 1.803505 -7.014567 -4.882656 +v 2.137789 6.702975 -0.434405 +v 1.550631 4.418573 -0.651555 +v 1.550631 5.888644 4.797830 +v 1.550631 -8.207280 -0.940181 +v 2.163024 4.259209 -0.066218 +v 2.172835 -7.439816 -1.372818 +v 1.803508 -5.875544 -4.913877 +v 1.803504 7.006510 -0.872316 +v 1.550631 7.026423 -0.881127 +v 2.176857 6.557230 -0.328893 +v 2.163947 6.294227 -0.887580 +v 2.176527 6.514084 3.866836 +v 2.168285 6.052625 -0.925915 +v -0.823032 5.400963 -6.289593 +v -1.373788 7.218982 19.361946 +v -0.857694 7.218982 19.361946 +v 1.092400 5.576506 -6.393807 +v 0.443586 5.533404 -6.767138 +v 0.823032 5.400963 -6.289593 +v 0.403942 7.218984 -4.804955 +v 1.213076 7.218984 -4.804955 +v 0.974568 5.132455 -4.066989 +v 1.213076 8.145895 -4.804955 +v 1.213076 8.845671 -4.804955 +v 1.213076 9.430100 -4.335176 +v 0.703050 7.624437 -4.804955 +v 0.708688 7.624437 -1.953275 +v 1.213076 7.624437 -1.953275 +v 1.213076 7.624437 -1.953275 +v 1.213076 7.218984 -1.953275 +v 1.213076 7.218984 -4.804955 +v 0.703050 7.624437 -4.804955 +v 0.702042 8.145895 -4.804955 +v 0.692288 8.145895 -1.953275 +v 0.692288 8.145895 -1.953275 +v 0.702042 8.145895 -4.804955 +v 1.213076 8.145895 -4.804955 +v 1.213076 9.430100 -4.335176 +v 0.450662 9.430100 -4.335176 +v 0.427195 9.430100 -1.953275 +v 1.582758 7.218984 -4.804955 +v 0.528251 5.631948 -6.753191 +v 0.000000 5.631948 -6.801856 +v 1.113677 5.685023 -6.433600 +v 1.582758 6.154639 -5.365934 +v -0.403942 7.218984 -4.804955 +v 1.213076 7.218984 -1.953275 +v 1.582758 7.218984 -4.804955 +v 1.213076 7.218984 -4.804955 +v 0.703050 7.624437 -4.804955 +v 0.419459 8.845671 -4.804955 +v 1.213076 7.624437 -4.804955 +v 1.213076 8.845671 -4.804955 +v 1.213076 8.145895 -4.804955 +v 0.702042 8.145895 -4.804955 +v 0.450662 9.430100 -4.335176 +v 1.213076 9.430100 -4.335176 +v 0.836559 7.218984 0.486124 +v 0.397424 7.218984 -1.953275 +v -1.582758 6.154639 -5.365934 +v 1.582758 2.997752 -1.677936 +v 1.582758 4.606297 4.761065 +v 1.582758 5.060399 -2.393605 +v 1.582758 5.705916 -3.303000 +v 1.582758 7.218984 0.532610 +v 1.582758 4.978194 4.997455 +v 1.582758 7.218984 5.409400 +v 1.582758 6.173631 12.234967 +v 1.582758 5.194827 5.282278 +v 1.582758 5.194825 18.331852 +v 1.582758 5.534111 12.374792 +v 1.582758 4.316335 -1.880566 +v 1.582758 7.218984 -4.804955 +v 1.582758 6.342137 12.374792 +v 1.582758 5.657321 12.234967 +v 1.582758 7.218982 18.331852 +v 1.582758 7.218984 5.409400 +v 0.857694 7.218984 12.938878 +v 1.148529 7.218984 4.965837 +v 0.957142 7.218984 5.409400 +v 0.857694 7.218982 19.361946 +v 1.373788 7.218982 19.361946 +v 0.957142 7.218984 7.609767 +v 1.148529 7.218984 0.843372 +v 0.957142 7.218984 6.277361 +v 0.857694 5.453763 12.938878 +v 0.580191 5.127946 12.938878 +v 0.580398 5.127510 19.361946 +v 0.857694 7.218984 12.938878 +v 0.857694 5.453605 19.361946 +v -1.803494 -8.338592 -1.148253 +v -1.803496 -7.249153 -4.729249 +v -1.550631 -7.254866 -4.756801 +v -1.550631 -8.362582 -1.129572 +v -1.803505 -7.014567 -4.882656 +v -1.803500 7.103070 4.086896 +v -1.550631 7.159328 -0.581056 +v -1.839455 4.411472 -0.653382 +v -1.550631 4.418573 -0.651555 +v -1.803502 5.931036 4.779144 +v -2.138861 4.925927 -0.212349 +v -1.550631 -7.022314 -4.915743 +v -1.832909 4.741830 -0.615315 +v -1.803493 4.979961 -0.698811 +v -1.803477 5.747915 -1.279529 +v -1.803468 6.136785 -1.467315 +v -1.550631 4.920799 -0.676702 +v -1.550631 5.750243 -1.260870 +v -1.550631 6.117420 -1.448276 +v -1.550631 6.431123 -1.427430 +v -1.550631 4.711940 -0.618973 +v 2.168202 1.521683 2.220641 +v 1.849792 2.296251 3.228978 +v 1.550631 -5.813593 -4.933243 +v 2.176839 -6.680809 -4.296602 +v 2.177566 -6.820210 -4.161257 +v 2.145445 -6.930309 -4.281384 +v 2.173862 1.655341 1.737604 +v 1.933436 2.830892 2.688685 +v 1.971355 2.842444 2.231860 +v 2.167308 3.176706 2.349641 +v 2.159245 3.192134 2.951774 +v 2.032148 2.748445 1.721616 +v 2.171134 2.757730 1.304274 +v 2.176745 2.987958 1.594733 +v 1.838198 2.378400 2.963018 +v 1.857113 2.122498 2.578046 +v 1.945670 1.985472 2.045092 +v 2.047754 2.044644 1.547692 +v 2.176554 1.911733 1.296362 +v 2.173443 2.217372 1.117763 +v 1.847373 2.496792 2.548999 +v 1.977065 2.428715 1.644999 +v 1.883795 2.419949 2.091068 +v 2.169390 2.475281 1.132310 +v 2.174314 6.129676 4.109241 +v 2.174668 5.841984 -0.795250 +v 2.176541 -6.266698 -4.325728 +v 1.803505 6.986403 4.265716 +v 1.803498 6.146345 4.785964 +v 1.550631 7.011675 4.277203 +v 1.550631 6.141139 4.807182 +v 1.803494 -8.338592 -1.148253 +v 1.550631 -8.362582 -1.129572 +v 1.803494 -8.338592 -1.148253 +v 1.803496 -7.249153 -4.729249 +v 1.550631 -7.254866 -4.756801 +v 1.550631 7.159328 -0.581056 +v 1.550631 7.128137 4.054968 +v -1.239158 -6.353005 -5.417203 +v -1.113677 5.685023 -6.433600 +v -1.582758 6.173631 12.234967 +v -1.582758 5.657321 12.234967 +v -0.974568 4.193733 -2.693952 +v -1.582758 4.316335 -1.880566 +v -1.582758 5.870734 -4.399592 +v -0.974568 5.132455 -4.066989 +v -0.974568 2.986196 -2.567274 +v -1.582758 2.997752 -1.677936 +v -0.974568 -2.299957 -4.683156 +v -1.582758 -2.770208 -4.057409 +v -0.974568 -3.532901 -5.626941 +v -1.582758 -3.887019 -5.026797 +v -1.582758 -5.973763 -5.781600 +v -0.427195 9.430100 -1.953275 +v -0.397424 7.218984 -1.953275 +v -0.450662 9.430100 -4.335176 +v -0.580398 4.410827 6.286258 +v -0.580398 5.143752 8.504850 +v 0.403942 7.218984 -4.804955 +v -0.580398 3.410160 5.307025 +v 0.397424 7.218984 -1.953275 +v 0.450662 9.430100 -4.335176 +v 0.419459 8.845671 -4.804955 +v -0.857694 5.453763 12.938878 +v -0.857694 5.453605 19.361946 +v -0.580398 5.127510 19.361946 +v -0.857694 7.218984 12.938878 +v -0.857694 7.218982 19.361946 +v -0.957142 7.863286 7.609767 +v -0.957142 7.218984 5.409400 +v -0.957142 7.218984 6.277361 +v -0.957142 7.863286 5.710876 +v -1.213076 8.845671 -4.804955 +v -0.703050 7.624437 -4.804955 +v -1.213076 7.624437 -4.804955 +v -1.213076 7.624437 -1.953275 +v -1.213076 7.624437 -1.953275 +v -1.213076 7.624437 -4.804955 +v -1.213076 7.218984 -4.804955 +v -1.148529 -8.749960 -1.489985 +v -0.843982 -8.845317 -1.176260 +v -1.539709 -9.237019 0.112444 +v -0.703050 7.624437 -4.804955 +v -0.708688 7.624437 -1.953275 +v -0.692288 8.145895 -1.953275 +v -0.580398 3.410160 5.307025 +v -0.580398 3.816195 5.489355 +v -1.051055 3.816076 5.489355 +v -1.051055 4.250057 5.891657 +v -0.580398 4.250057 5.891657 +v -1.051055 4.410827 6.286258 +v -0.692288 8.145895 -1.953275 +v -1.213076 8.145895 -1.953275 +v -1.213076 8.145895 -4.804955 +v -1.052369 3.020580 5.130578 +v -1.582758 5.534109 18.331852 +v -1.582758 5.534111 12.374792 +v -1.582758 5.194825 18.331852 +v -1.051055 3.986079 11.231197 +v -1.213076 9.430100 -4.335176 +v -1.213076 9.430100 -1.953275 +v -0.427195 9.430100 -1.953275 +v -1.051055 4.197896 10.160744 +v -1.051055 4.410827 9.595867 +v -1.051055 5.194827 6.202400 +v -1.051055 4.410827 6.286258 +v -1.051055 4.815591 5.698347 +v -1.051055 4.250057 5.891657 +v 1.051203 0.060934 3.592092 +v 1.051055 -0.223472 3.408138 +v 1.358388 0.595196 3.367662 +v -1.051055 0.491167 10.501270 +v -1.051055 3.846210 10.532600 +v -1.051055 3.816076 5.489355 +v -1.051055 0.303245 5.858099 +v -1.051055 0.145061 11.660562 +v -0.403942 7.218984 -4.804955 +v -0.419459 8.845671 -4.804955 +v -0.580398 5.127510 19.361946 +v -1.213076 7.624437 -4.804955 +v -1.213076 8.845671 -4.804955 +v -1.213076 9.430100 -4.335176 +v -0.528251 5.631948 -6.753191 +v -1.051055 -7.663412 0.798394 +v -1.051055 -6.827383 0.859532 +v -1.051055 -9.408401 0.676293 +v -1.051055 -8.710466 0.929088 +v -0.832096 -2.281892 2.617995 +v -1.051055 -0.223472 3.408138 +v -1.051055 -6.827383 0.859532 +v -0.832096 -3.798709 2.025143 +v -0.832096 -3.666983 2.980051 +v -0.832096 -2.992427 3.243009 +v -1.051055 4.834128 19.361946 +v -1.582758 5.534111 12.374792 +v -1.582758 5.534109 18.331852 +v -1.373788 5.534109 19.361946 +v -1.373788 7.218982 19.361946 +v -1.373788 5.194825 19.361946 +v -0.372438 10.036927 5.890272 +v -0.372438 10.296735 5.890272 +v 0.372438 10.036927 5.890272 +v -0.570611 9.870735 5.890272 +v 0.570611 9.870735 5.890272 +v 0.667251 10.036927 5.890272 +v -0.667251 10.036927 5.890272 +v -0.372438 10.036927 5.890272 +v -0.667251 10.036927 5.890272 +v -0.666265 10.036925 11.908644 +v -1.159394 7.167399 5.890272 +v -1.159394 7.167399 11.908644 +v -1.159394 9.473119 11.908644 +v -1.018901 7.167399 11.908644 +v -1.018901 9.373807 11.908644 +v -1.159394 9.473119 11.908644 +v -1.018901 7.167399 5.890272 +v -1.159394 7.167399 5.890272 +v -1.159394 9.473121 5.890272 +v -0.570611 9.870733 11.908644 +v -0.666265 10.036925 11.908644 +v 1.018901 9.373809 5.890272 +v 1.018901 7.167399 5.890272 +v 1.018901 7.167399 11.908644 +v 1.018901 9.373807 11.908644 +v 0.570611 9.870733 11.908644 +v -0.372438 10.036927 8.085609 +v 0.372438 10.036927 8.085609 +v 0.372438 10.296735 5.890272 +v 1.018901 7.167399 5.890272 +v 1.018901 9.373809 5.890272 +v 1.159394 9.473121 5.890272 +v 0.372438 10.036927 5.890272 +v 0.372438 10.296735 5.890272 +v 0.372438 10.036927 8.085609 +v 0.372438 10.036927 5.890272 +v 0.372438 10.036927 8.085609 +v 0.666265 10.036925 11.908644 +v 1.159394 7.167399 5.890272 +v 1.159394 9.473121 5.890272 +v 1.159394 9.473119 11.908644 +v 1.018901 7.167399 11.908644 +v 1.159394 7.167399 11.908644 +v 1.159394 9.473119 11.908644 +v 0.570611 9.870733 11.908644 +v 1.018901 9.373807 11.908644 +v 0.667251 10.036927 5.890272 +v -1.018901 9.373809 5.890272 +v -1.018901 9.373807 11.908644 +v -1.018901 7.167399 11.908644 +v -0.372438 10.036927 8.085609 +v -0.372438 10.296735 5.890272 +v -0.372438 10.036927 5.890272 +v -0.372438 10.036927 8.085609 +v -0.570611 9.870735 5.890272 +v -0.570611 9.870733 11.908644 +v 0.570611 9.870735 5.890272 +v 0.372438 10.296735 5.890272 +v 1.592578 6.930664 -2.831019 +v 1.924818 6.930664 -2.831019 +v 1.924818 6.930664 -2.831019 +v 2.253843 6.726052 -1.549974 +v 1.592578 6.125614 -1.931486 +v 1.592578 6.966193 -1.398447 +v 1.924818 6.125614 -1.931486 +v 1.592578 6.125614 -1.931486 +v 1.592578 7.603653 -2.269642 +v 1.592578 6.930664 -2.831019 +v 1.924818 6.534985 -3.056432 +v 1.924818 6.726052 -1.549974 +v 1.924818 7.371370 -2.466391 +v 2.253843 7.371370 -2.466391 +v -1.051770 0.545047 3.730687 +v 1.360567 1.614293 3.789785 +v 1.051232 1.834943 4.322482 +v 1.050937 1.614293 3.789785 +v 1.360567 1.614293 3.789785 +v -1.582758 0.676579 2.788985 +v -1.582758 0.545047 3.068055 +v -1.051770 0.545047 2.951361 +v 1.050937 0.595196 3.367662 +v 1.050937 1.614293 3.789785 +v 1.052369 1.419883 5.161799 +v 1.051232 1.834943 4.322482 +v -1.051770 0.545047 3.730687 +v 1.051055 0.126897 6.278877 +v 1.051055 -0.223472 3.408138 +v 1.051055 0.303245 5.858099 +v 1.051232 1.834943 4.322482 +v 1.050937 0.998143 3.367662 +v 1.358388 0.595196 3.367662 +v 1.493618 0.998143 3.367662 +v 1.050937 0.998143 3.367662 +v -1.051770 1.087353 3.958939 +v -1.582758 1.087353 3.294126 +v -1.582758 1.087353 2.951361 +v 1.050937 0.062500 3.588312 +v 1.051055 0.730363 5.438924 +v 1.050937 1.329366 3.504859 +v 1.239158 -6.352968 -5.953228 +v -1.239158 -6.352968 -5.953228 +v -1.239158 -6.459403 -6.210184 +v -1.239158 -6.973310 -6.210184 +v 1.239158 -6.973310 -6.210184 +v 1.239158 -6.716357 -6.316617 +v -1.239158 -7.079744 -5.953228 +v -1.239158 -6.716357 -5.589839 +v 1.239158 -6.716357 -5.589839 +v 1.239158 -6.973310 -5.696272 +v -0.836559 -7.541790 -5.464879 +v -1.148529 -7.632973 -5.164886 +v -1.239158 -7.503078 -5.592237 +v -0.843982 -8.845317 -1.176260 +v -1.582758 -7.547009 -5.447709 +v -0.974568 -7.096977 -6.928317 +v -1.239158 -7.188473 -6.627295 +v -0.857694 5.453763 12.938878 +v 0.857694 5.453763 12.938878 +v 0.857694 7.218984 12.938878 +v -0.580191 5.127946 12.938878 +v 0.580191 5.127946 12.938878 +v 0.427195 9.430100 -1.953275 +v -1.051055 -9.408401 0.676293 +v -0.580191 5.127946 12.938878 +v 0.403942 7.218984 -4.804955 +v 1.239158 -6.459403 -6.210184 +v -1.239158 -6.459403 -5.696272 +v 1.239158 -6.459403 -5.696272 +v 1.239158 -7.079744 -5.953228 +v 1.239158 -6.352968 -5.953228 +v 0.957142 7.218984 5.409400 +v 0.843982 7.218984 5.409400 +v 0.957142 7.863286 5.710876 +v 1.213076 7.624437 -1.953275 +v 0.708688 7.624437 -1.953275 +v 0.397424 7.218984 -1.953275 +v 0.692288 8.145895 -1.953275 +v 0.427195 9.430100 -1.953275 +v 1.213076 8.145895 -1.953275 +v 1.213076 9.430100 -1.953275 +v -0.957142 7.218984 6.277361 +v 1.582758 7.218982 18.331852 +v 0.843982 7.218984 5.409400 +v 1.582758 5.870734 -4.399592 +v 0.580398 4.410827 6.286258 +v 1.051055 4.410827 6.286258 +v 1.051055 4.410827 9.595867 +v -0.580398 4.410827 8.504850 +v -0.580398 5.143752 8.504850 +v 0.580398 5.143752 8.504850 +v 0.580398 5.143752 5.307025 +v 0.580398 3.816195 5.489355 +v 0.580398 4.250057 5.891657 +v 1.582758 5.194825 18.331852 +v 1.373788 5.194825 19.361946 +v 1.051055 5.194825 19.361946 +v 1.051055 5.194827 6.202400 +v 1.582758 5.194827 5.282278 +v 1.582758 6.342137 18.331852 +v 1.051055 4.834128 12.349441 +v -1.051055 4.834128 12.349441 +v -1.051055 3.986079 11.231197 +v -1.051055 4.197896 10.160744 +v 1.051055 -0.223474 11.574593 +v 1.051055 0.126897 9.525374 +v 1.051055 0.200441 10.158533 +v -1.051770 0.545047 2.951361 +v -1.051770 1.087353 2.951361 +v -1.051770 0.955821 2.753111 +v 1.050937 0.062500 3.588312 +v 1.051203 0.060934 3.592092 +v 1.358388 0.595196 3.367662 +v -1.582758 0.955821 2.788985 +v -1.051770 0.955821 2.753111 +v 1.051055 0.446518 11.231197 +v 1.051055 0.805342 10.660654 +v 1.051055 3.374604 10.660654 +v 1.425465 6.342137 12.470450 +v 1.582758 6.342137 12.374792 +v 1.582758 6.342137 18.331852 +v 1.425465 6.129148 12.324278 +v 1.582758 6.173631 12.234967 +v 1.582758 6.342137 12.374792 +v 1.425465 5.534111 12.470450 +v 1.582758 5.534111 12.374792 +v 1.582758 5.657321 12.234967 +v 1.425465 5.714319 12.324278 +v 1.425465 6.342137 12.470450 +v 1.373788 6.342137 19.361946 +v 1.373788 5.534109 19.361946 +v 1.425465 5.714319 12.324278 +v 1.425465 6.129148 12.324278 +v 1.051055 5.194825 19.361946 +v 1.373788 5.194825 19.361946 +v 1.373788 5.534109 19.361946 +v 1.373788 6.342137 19.361946 +v 1.373788 7.218982 19.361946 +v 0.857694 7.218982 19.361946 +v -1.582758 0.676579 2.788985 +v -1.051770 0.676579 2.753111 +v 1.051055 5.194827 6.202400 +v 1.051055 4.815591 5.698347 +v 1.051055 4.834128 12.349441 +v 1.051055 5.194825 19.361946 +v 1.051055 4.834128 19.361946 +v 1.051203 0.060934 3.592092 +v 1.050937 0.062500 3.588312 +v 1.051055 -0.223472 3.408138 +v 1.051055 4.245723 5.289183 +v 1.582758 5.534109 18.331852 +v 1.373788 5.534109 19.361946 +v 1.373788 5.194825 19.361946 +v 1.373788 7.218982 19.361946 +v 1.373788 6.342137 19.361946 +v 1.373788 5.534109 19.361946 +v 1.051055 4.834128 19.361946 +v 0.857694 5.453605 19.361946 +v 0.580398 5.127510 19.361946 +v -1.051055 0.145061 11.660562 +v -1.051055 -0.223474 11.574593 +v 1.051055 -0.223474 11.574593 +v 1.494327 1.329366 3.504859 +v 1.051055 -0.223474 11.574593 +v -1.051055 -0.223474 11.574593 +v -1.051055 -0.223472 3.408138 +v -1.051055 0.446518 11.231197 +v -1.051055 0.145061 11.660562 +v 1.051055 0.145061 11.660562 +v 1.051055 0.446518 11.231197 +v -1.051055 4.834128 19.361946 +v -0.832096 -2.992427 3.243009 +v 0.832096 -2.992427 3.243009 +v 0.832096 -2.281892 2.617995 +v -0.832096 -3.666983 2.980051 +v 0.832096 -3.666983 2.980051 +v 0.832096 -2.992427 3.243009 +v 0.832096 -3.798709 2.025143 +v 0.832096 -2.281892 2.617995 +v 0.832096 -2.992427 3.243009 +v -0.832096 -3.798709 2.025143 +v 0.832096 -3.798709 2.025143 +v 0.832096 -3.666983 2.980051 +v 1.051055 -0.223472 3.408138 +v 1.051055 -6.827383 0.859532 +v 1.582758 -6.767919 0.122678 +v 1.582758 -7.606416 0.140500 +v 1.051055 -7.663412 0.798394 +v 1.051055 -8.710466 0.929088 +v 0.832096 -2.281892 2.617995 +v 0.832096 -3.798709 2.025143 +v 1.051055 -6.827383 0.859532 +v 1.051055 -9.408401 0.676293 +v 1.539709 -9.237019 0.112444 +v 1.582758 -8.611731 0.338328 +v 1.051055 -7.663412 0.798394 +v -1.051055 -7.663412 0.798394 +v -1.051055 -8.710466 0.929088 +v -0.832096 -3.798709 2.025143 +v -1.051055 -9.408401 0.676293 +v 1.051055 -9.408401 0.676293 +v 1.051055 -8.710466 0.929088 +v -0.403942 7.218984 -4.804955 +v 1.051055 0.491167 10.501270 +v 1.051055 0.145061 11.660562 +v 1.051055 4.245723 5.289183 +v 1.052369 3.020580 5.130578 +v 1.052369 2.312512 5.048415 +v 1.051055 3.816076 5.489355 +v 1.051055 4.250057 5.891657 +v 1.051055 4.410827 6.286258 +v 1.051055 4.815591 5.698347 +v 1.051055 5.194827 6.202400 +v 1.051055 4.410827 9.595867 +v 1.051055 4.197896 10.160744 +v 1.051055 3.986079 11.231197 +v 1.051055 3.846210 10.532600 +v 1.050937 1.329366 3.504859 +v -1.052369 3.020580 5.130578 +v -1.052369 2.312512 5.048415 +v 1.052369 2.312512 5.048415 +v 1.052369 3.020580 5.130578 +v 1.051055 3.816076 5.489355 +v 0.580398 3.410160 5.307025 +v 0.580398 4.250057 5.891657 +v 1.051055 4.250057 5.891657 +v 0.580398 3.816195 5.489355 +v -1.051055 0.126897 9.525374 +v -1.051055 0.200441 10.158533 +v 1.051055 0.200441 10.158533 +v -1.051055 0.491167 10.501270 +v 1.051055 0.491167 10.501270 +v -1.051055 0.126897 6.278877 +v 1.051055 0.126897 9.525374 +v -1.051055 0.805342 10.660654 +v 1.051055 0.805342 10.660654 +v -1.051055 0.303245 5.858099 +v 1.051055 0.126897 6.278877 +v -1.051055 3.374604 10.660654 +v 1.051055 3.374604 10.660654 +v -1.051055 0.730363 5.438924 +v 1.051055 0.303245 5.858099 +v -1.051055 3.846210 10.532600 +v 1.051055 3.846210 10.532600 +v -1.052369 1.419883 5.161799 +v 1.051055 0.730363 5.438924 +v 1.051055 4.197896 10.160744 +v 1.052369 1.419883 5.161799 +v 0.580398 5.143752 5.307025 +v -0.580398 5.143752 5.307025 +v -0.580398 3.410160 5.307025 +v 0.580398 3.410160 5.307025 +v 0.580398 4.410827 6.286258 +v 0.580398 5.143752 8.504850 +v -0.580398 5.143752 8.504850 +v -0.580398 5.143752 5.307025 +v 0.580398 4.410827 8.504850 +v 0.580398 5.143752 8.504850 +v 0.580398 4.410827 8.504850 +v 1.582758 -3.887019 -5.026797 +v 1.582758 -5.973763 -5.781600 +v 1.239158 -5.908380 -6.182570 +v 0.974568 -7.096977 -6.928317 +v 0.974568 -3.532901 -5.626941 +v 0.974568 -2.299957 -4.683156 +v 1.582758 -2.770208 -4.057409 +v 0.974568 2.986196 -2.567274 +v 1.582758 2.997752 -1.677936 +v 0.974568 4.768444 -3.230170 +v 1.582758 5.705916 -3.303000 +v 0.974568 4.193733 -2.693952 +v 1.582758 4.316335 -1.880566 +v 1.582758 5.060399 -2.393605 +v 1.113677 5.685023 -6.433600 +v 1.488590 5.921740 -5.685918 +v 0.528251 5.631948 -6.753191 +v 1.239158 -6.353005 -5.417203 +v 1.582758 -6.272798 -5.294007 +v 1.582758 -6.783546 -5.235445 +v 1.239158 -6.111135 -5.821549 +v 1.582758 -7.547009 -5.447709 +v 1.239158 -7.503078 -5.592237 +v 1.239158 -6.751891 -5.355608 +v 1.239158 -5.908380 -6.182570 +v 1.582758 -5.973763 -5.781600 +v 1.239158 -7.188473 -6.627295 +v 1.213076 9.430100 -1.953275 +v 1.213076 8.145895 -1.953275 +v 1.582758 -2.770208 -4.057409 +v 1.582758 -3.887019 -5.026797 +v 1.582758 -6.272798 -5.294007 +v 1.582758 -5.973763 -5.781600 +v 1.582758 -6.783546 -5.235445 +v 1.582758 -7.547009 -5.447709 +v 1.582758 -7.547009 -5.447709 +v 1.148529 -7.632973 -5.164886 +v 1.239158 -7.503078 -5.592237 +v 0.836559 -7.541790 -5.464879 +v 0.974568 -7.096977 -6.928317 +v 1.239158 -7.188473 -6.627295 +v 1.539709 -9.237019 0.112444 +v 1.051055 -9.408401 0.676293 +v 0.843982 -8.845317 -1.176260 +v 0.843982 -8.845317 -1.176260 +v 0.843982 7.218984 5.409400 +v 1.148529 7.218984 4.965837 +v 1.148529 7.218984 0.843372 +v 1.148529 -7.632973 -5.164886 +v 0.836559 7.218984 0.486124 +v 0.836559 -7.541790 -5.464879 +v 1.148529 -7.632973 -5.164886 +v -0.836559 -7.541790 -5.464879 +v -0.843982 7.218984 5.409400 +v 1.148529 -8.749960 -1.489985 +v 0.957142 7.863286 7.609767 +v -0.957142 7.863286 7.609767 +v -0.957142 7.218984 7.609767 +v 0.957142 7.218984 5.409400 +v 0.957142 7.863286 5.710876 +v 0.957142 7.863286 7.609767 +v -0.957142 7.863286 7.609767 +v 0.957142 7.863286 7.609767 +v 0.957142 7.863286 5.710876 +v 0.957142 7.218984 7.609767 +v 0.957142 7.218984 6.277361 +v 2.253843 6.930664 -2.831019 +v 2.253843 6.930664 -2.831019 +v 1.592578 6.125614 -1.931486 +v 2.253843 6.902664 -4.747439 +v 2.253843 6.726052 -1.549974 +v 2.253843 6.966193 -1.398447 +v 1.709833 6.807340 5.318413 +v 1.965886 6.807340 5.149458 +v 1.965886 7.483090 5.848535 +v 1.965886 6.807340 5.848535 +v 1.882584 6.807340 7.165412 +v 2.249606 6.807340 7.165412 +v -1.051055 5.194827 6.202400 +v -1.373788 5.194825 19.361946 +v 0.000000 8.128884 22.443676 +v 0.000000 7.882946 5.649786 +v 1.469249 0.829702 3.368853 +v 1.133210 0.829702 3.301505 +v -0.991334 0.714416 2.803811 +v -0.991334 0.583586 2.934655 +v -1.284940 0.714416 2.803811 +v 1.979996 6.437829 -1.926155 +v -1.425465 6.129148 12.324278 +v -1.373788 6.342137 19.361946 +v -1.582758 6.342137 12.374792 +v -1.582758 5.194827 5.282278 +v -1.213076 9.430100 -1.953275 +v -1.051770 0.545047 3.730687 +v -1.213076 8.145895 -1.953275 +v -1.239158 -7.503078 -5.592237 +v 1.213076 7.624437 -4.804955 +v 1.213076 7.624437 -4.804955 +v 0.708688 7.624437 -1.953275 +v 1.213076 8.145895 -1.953275 +v 1.213076 9.430100 -1.953275 +v 0.857694 7.218982 19.361946 +v -1.550631 -8.362582 -1.129572 +v -1.550631 7.128137 4.054968 +v 1.550631 -8.362582 -1.129572 +v -0.580398 4.410827 8.504850 +v -0.957142 7.218984 7.609767 +v -0.708688 7.624437 -1.953275 +v -1.213076 7.218984 -1.953275 +v -0.702042 8.145895 -4.804955 +v -0.702042 8.145895 -4.804955 +v -0.450662 9.430100 -4.335176 +v -1.213076 8.145895 -4.804955 +v -0.450662 9.430100 -4.335176 +v -0.832096 -2.281892 2.617995 +v -1.373788 6.342137 19.361946 +v -1.373788 5.534109 19.361946 +v -1.159394 9.473121 5.890272 +v -1.159394 7.167399 11.908644 +v -1.018901 9.373809 5.890272 +v -0.372438 10.296735 5.890272 +v 1.159394 7.167399 5.890272 +v 1.159394 7.167399 11.908644 +v 0.666265 10.036925 11.908644 +v -1.018901 7.167399 5.890272 +v 2.253843 6.726052 -1.549974 +v -1.051770 0.676579 2.753111 +v 1.050937 0.595196 3.367662 +v -1.051770 1.087353 2.951361 +v -1.239158 -6.716357 -6.316617 +v -1.239158 -6.973310 -5.696272 +v -0.857694 7.218984 12.938878 +v -1.239158 -6.352968 -5.953228 +v 1.213076 7.218984 -1.953275 +v 0.580398 4.410827 8.504850 +v 1.051055 3.986079 11.231197 +v -1.051770 0.676579 2.753111 +v 1.050937 0.062500 3.588312 +v 1.373788 6.342137 19.361946 +v 1.425465 6.342137 12.470450 +v 1.425465 5.534111 12.470450 +v 1.582758 5.534109 18.331852 +v 1.051055 0.145061 11.660562 +v 1.051055 -0.223472 3.408138 +v 1.051055 4.834128 19.361946 +v -0.832096 -2.281892 2.617995 +v -0.832096 -2.992427 3.243009 +v 0.832096 -3.666983 2.980051 +v -0.832096 -3.666983 2.980051 +v 1.052369 3.020580 5.130578 +v 0.580398 3.410160 5.307025 +v 0.580398 5.143752 5.307025 +v 1.148529 -8.749960 -1.489985 +v 1.148529 7.218984 0.843372 +v 0.957142 7.218984 7.609767 +v -0.957142 7.863286 5.710876 +v 1.965886 6.807340 5.848535 +vt 0.359688 0.958662 +vt 0.362249 0.958669 +vt 0.362239 0.962551 +vt 0.331697 0.953329 +vt 0.359702 0.953407 +vt 0.351642 0.961259 +vt 0.811898 0.853744 +vt 0.802908 0.853744 +vt 0.802908 0.855453 +vt 0.510231 0.845136 +vt 0.505784 0.850420 +vt 0.501968 0.847202 +vt 0.501968 0.847202 +vt 0.477758 0.837077 +vt 0.479214 0.833341 +vt 0.823042 0.855453 +vt 0.823042 0.857179 +vt 0.827595 0.857179 +vt 0.802908 0.857179 +vt 0.811898 0.857179 +vt 0.796689 0.855453 +vt 0.811898 0.857179 +vt 0.813272 0.857179 +vt 0.813272 0.853744 +vt 0.827595 0.853744 +vt 0.826014 0.853744 +vt 0.826014 0.855453 +vt 0.520442 0.836072 +vt 0.524015 0.833150 +vt 0.535257 0.845043 +vt 0.827595 0.853744 +vt 0.827595 0.857179 +vt 0.833203 0.857179 +vt 0.897698 0.596442 +vt 0.896258 0.600185 +vt 0.920512 0.610205 +vt 0.823042 0.853744 +vt 0.813272 0.853744 +vt 0.813272 0.857179 +vt 0.516880 0.839562 +vt 0.528775 0.851703 +vt 0.521438 0.859613 +vt 0.833202 0.853744 +vt 0.833203 0.857179 +vt 0.834678 0.855453 +vt 0.790690 0.954682 +vt 0.780443 0.954656 +vt 0.785161 0.957230 +vt 0.422440 0.965570 +vt 0.450495 0.970002 +vt 0.505626 0.964699 +vt 0.503252 0.978629 +vt 0.508685 0.972269 +vt 0.260623 0.953127 +vt 0.205415 0.960844 +vt 0.177430 0.952890 +vt 0.260584 0.966567 +vt 0.205400 0.966410 +vt 0.790662 0.965283 +vt 0.939733 0.972563 +vt 0.945259 0.969952 +vt 0.939739 0.968680 +vt 0.597353 0.964711 +vt 0.600376 0.972295 +vt 0.594912 0.978629 +vt 0.542169 0.965022 +vt 0.508689 0.967750 +vt 0.507691 0.975401 +vt 0.185454 0.958168 +vt 0.785140 0.965268 +vt 0.949984 0.969959 +vt 0.949986 0.968695 +vt 0.599367 0.975424 +vt 0.542195 0.969746 +vt 0.331659 0.966768 +vt 0.278202 0.966617 +vt 0.278240 0.953177 +vt 0.264946 0.953139 +vt 0.264908 0.966579 +vt 0.269464 0.953153 +vt 0.269426 0.966592 +vt 0.272751 0.953162 +vt 0.272713 0.966602 +vt 0.331675 0.961203 +vt 0.177415 0.958145 +vt 0.359702 0.953407 +vt 0.364426 0.953420 +vt 0.364412 0.958675 +vt 0.968179 0.972572 +vt 0.957932 0.972563 +vt 0.957935 0.968680 +vt 0.794573 0.954693 +vt 0.790690 0.954682 +vt 0.790662 0.965283 +vt 0.804820 0.954720 +vt 0.794573 0.954693 +vt 0.794545 0.965293 +vt 0.516662 0.969893 +vt 0.516635 0.965166 +vt 0.536604 0.965056 +vt 0.536631 0.969780 +vt 0.536604 0.965056 +vt 0.542169 0.965022 +vt 0.422489 0.970295 +vt 0.185446 0.960788 +vt 0.780437 0.957218 +vt 0.945255 0.972571 +vt 0.600401 0.967777 +vt 0.035908 0.941334 +vt 0.035908 0.941635 +vt 0.054072 0.941633 +vt 0.370583 0.810248 +vt 0.374948 0.806042 +vt 0.367858 0.802066 +vt 0.164734 0.678016 +vt 0.213982 0.678118 +vt 0.257519 0.683519 +vt 0.015729 0.600923 +vt 0.122051 0.606551 +vt 0.015721 0.606392 +vt 0.370634 0.800249 +vt 0.812069 0.443349 +vt 0.825366 0.443346 +vt 0.812071 0.451175 +vt 0.842764 0.448237 +vt 0.838841 0.451170 +vt 0.837618 0.443344 +vt 0.051468 0.951958 +vt 0.051191 0.952073 +vt 0.051240 0.952323 +vt 0.035954 0.945310 +vt 0.035954 0.944910 +vt 0.054117 0.944908 +vt 0.053269 0.945680 +vt 0.052868 0.945681 +vt 0.052918 0.945431 +vt 0.035908 0.941935 +vt 0.054072 0.941933 +vt 0.051191 0.945097 +vt 0.050890 0.945097 +vt 0.050841 0.945347 +vt 0.035954 0.944510 +vt 0.054117 0.944508 +vt 0.052499 0.945529 +vt 0.052640 0.945316 +vt 0.035908 0.942235 +vt 0.054072 0.942234 +vt 0.050890 0.952073 +vt 0.050613 0.951958 +vt 0.050471 0.952170 +vt 0.035954 0.944110 +vt 0.054117 0.944108 +vt 0.052215 0.945246 +vt 0.052428 0.945104 +vt 0.035908 0.942536 +vt 0.054072 0.942534 +vt 0.050400 0.951745 +vt 0.050188 0.951887 +vt 0.036076 0.944336 +vt 0.036076 0.943936 +vt 0.054239 0.943934 +vt 0.052062 0.944877 +vt 0.052312 0.944827 +vt 0.035908 0.937730 +vt 0.035908 0.938031 +vt 0.054072 0.938027 +vt 0.050286 0.951468 +vt 0.050035 0.951517 +vt 0.035954 0.943134 +vt 0.035954 0.942734 +vt 0.054117 0.942732 +vt 0.052061 0.944477 +vt 0.052312 0.944526 +vt 0.035908 0.945006 +vt 0.035908 0.945307 +vt 0.054072 0.945304 +vt 0.050286 0.951167 +vt 0.050035 0.951117 +vt 0.035954 0.942334 +vt 0.054117 0.942332 +vt 0.052214 0.944107 +vt 0.052426 0.944249 +vt 0.035908 0.945607 +vt 0.054072 0.945604 +vt 0.050401 0.950890 +vt 0.050188 0.950748 +vt 0.035954 0.941934 +vt 0.054117 0.941932 +vt 0.052496 0.943824 +vt 0.052638 0.944036 +vt 0.035908 0.938631 +vt 0.035908 0.938932 +vt 0.054072 0.938929 +vt 0.050613 0.950677 +vt 0.050471 0.950465 +vt 0.035954 0.941534 +vt 0.054117 0.941532 +vt 0.052865 0.943670 +vt 0.052915 0.943920 +vt 0.035908 0.939232 +vt 0.054072 0.939229 +vt 0.050891 0.950562 +vt 0.050841 0.950312 +vt 0.035954 0.941134 +vt 0.054117 0.941132 +vt 0.053265 0.943670 +vt 0.053216 0.943920 +vt 0.035908 0.939532 +vt 0.054072 0.939530 +vt 0.051191 0.950562 +vt 0.051241 0.950312 +vt 0.035954 0.940734 +vt 0.054117 0.940732 +vt 0.053635 0.943822 +vt 0.053494 0.944035 +vt 0.035908 0.939833 +vt 0.054072 0.939830 +vt 0.051468 0.950678 +vt 0.051610 0.950465 +vt 0.035954 0.940334 +vt 0.054117 0.940332 +vt 0.053918 0.944104 +vt 0.053706 0.944247 +vt 0.035908 0.940133 +vt 0.054072 0.940130 +vt 0.051681 0.950890 +vt 0.051893 0.950748 +vt 0.035954 0.939934 +vt 0.054117 0.939932 +vt 0.054072 0.944474 +vt 0.053822 0.944524 +vt 0.035908 0.940433 +vt 0.054072 0.940431 +vt 0.051796 0.951167 +vt 0.052046 0.951118 +vt 0.035954 0.946910 +vt 0.035954 0.946510 +vt 0.054117 0.946508 +vt 0.054073 0.944874 +vt 0.053822 0.944824 +vt 0.035908 0.940734 +vt 0.054072 0.940731 +vt 0.051796 0.951468 +vt 0.052046 0.951518 +vt 0.035954 0.946110 +vt 0.054117 0.946108 +vt 0.053920 0.945244 +vt 0.053708 0.945102 +vt 0.035908 0.941034 +vt 0.054072 0.941032 +vt 0.051681 0.951746 +vt 0.051893 0.951887 +vt 0.035954 0.945710 +vt 0.054117 0.945708 +vt 0.053638 0.945527 +vt 0.053496 0.945315 +vt 0.054072 0.941332 +vt 0.051610 0.952170 +vt 0.054117 0.945308 +vt 0.053218 0.945430 +vt 0.395541 0.956521 +vt 0.399095 0.962729 +vt 0.398106 0.962988 +vt 0.399068 0.969883 +vt 0.398081 0.969613 +vt 0.395468 0.976063 +vt 0.394748 0.975338 +vt 0.389257 0.979614 +vt 0.388998 0.978628 +vt 0.382104 0.979585 +vt 0.382373 0.978601 +vt 0.375923 0.975984 +vt 0.376648 0.975264 +vt 0.372372 0.969775 +vt 0.373359 0.969515 +vt 0.372399 0.962623 +vt 0.373386 0.962892 +vt 0.375999 0.956443 +vt 0.376720 0.957167 +vt 0.382206 0.952890 +vt 0.382469 0.953878 +vt 0.389360 0.952919 +vt 0.389091 0.953904 +vt 0.394817 0.957240 +vt 0.838965 0.931013 +vt 0.832339 0.930980 +vt 0.832314 0.936076 +vt 0.337664 0.995947 +vt 0.344817 0.995957 +vt 0.344820 0.994249 +vt 0.253929 0.963378 +vt 0.253961 0.970006 +vt 0.241579 0.966752 +vt 0.845592 0.931046 +vt 0.838941 0.936108 +vt 0.351970 0.995967 +vt 0.351972 0.994259 +vt 0.250678 0.975761 +vt 0.852219 0.931079 +vt 0.845567 0.936141 +vt 0.359124 0.995976 +vt 0.359126 0.994268 +vt 0.244954 0.979102 +vt 0.779328 0.930717 +vt 0.772701 0.930684 +vt 0.772676 0.935780 +vt 0.366278 0.995986 +vt 0.366281 0.994278 +vt 0.238328 0.979135 +vt 0.785955 0.930750 +vt 0.779303 0.935813 +vt 0.373434 0.995995 +vt 0.373437 0.994286 +vt 0.232572 0.975848 +vt 0.792581 0.930783 +vt 0.785929 0.935845 +vt 0.380592 0.996004 +vt 0.380594 0.994295 +vt 0.229232 0.970128 +vt 0.799208 0.930816 +vt 0.792556 0.935878 +vt 0.387750 0.996012 +vt 0.387752 0.994303 +vt 0.229199 0.963502 +vt 0.805834 0.930849 +vt 0.799183 0.935911 +vt 0.394910 0.996020 +vt 0.394911 0.994310 +vt 0.232484 0.957745 +vt 0.812460 0.930881 +vt 0.805809 0.935944 +vt 0.402070 0.996027 +vt 0.402072 0.994318 +vt 0.238206 0.954406 +vt 0.819087 0.930915 +vt 0.812435 0.935977 +vt 0.316208 0.995915 +vt 0.323359 0.995926 +vt 0.323362 0.994218 +vt 0.244832 0.954373 +vt 0.825713 0.930947 +vt 0.819061 0.936010 +vt 0.330512 0.995936 +vt 0.330514 0.994229 +vt 0.250586 0.957656 +vt 0.825687 0.936043 +vt 0.337666 0.994239 +vt 0.295338 0.103287 +vt 0.295221 0.104723 +vt 0.293302 0.103617 +vt 0.409234 0.135866 +vt 0.410611 0.137862 +vt 0.319804 0.145507 +vt 0.309657 0.110962 +vt 0.309823 0.112593 +vt 0.306707 0.110882 +vt 0.328674 0.137629 +vt 0.404333 0.130464 +vt 0.328247 0.138878 +vt 0.319775 0.144719 +vt 0.317240 0.144505 +vt 0.322554 0.143866 +vt 0.403938 0.100755 +vt 0.405721 0.101225 +vt 0.404279 0.105677 +vt 0.403791 0.098527 +vt 0.405876 0.098902 +vt 0.309891 0.106421 +vt 0.290334 0.107950 +vt 0.287801 0.103905 +vt 0.286363 0.106300 +vt 0.286167 0.102470 +vt 0.292374 0.100537 +vt 0.407173 0.108601 +vt 0.404441 0.107178 +vt 0.407718 0.109926 +vt 0.407977 0.107246 +vt 0.328434 0.133594 +vt 0.314711 0.143246 +vt 0.316677 0.139029 +vt 0.312958 0.141183 +vt 0.317532 0.135389 +vt 0.312794 0.139989 +vt 0.319955 0.127728 +vt 0.319269 0.131437 +vt 0.317360 0.129659 +vt 0.314226 0.135381 +vt 0.319718 0.142303 +vt 0.322593 0.139719 +vt 0.327219 0.140192 +vt 0.325454 0.142462 +vt 0.324800 0.135588 +vt 0.325027 0.127340 +vt 0.327174 0.129527 +vt 0.325386 0.131443 +vt 0.319686 0.138706 +vt 0.322039 0.131554 +vt 0.321220 0.135209 +vt 0.322767 0.126903 +vt 0.288842 0.142654 +vt 0.286523 0.140196 +vt 0.288488 0.144289 +vt 0.296744 0.105669 +vt 0.303415 0.111921 +vt 0.297301 0.104416 +vt 0.408817 0.109428 +vt 0.407352 0.130669 +vt 0.405962 0.129635 +vt 0.306196 0.112876 +vt 0.293525 0.104978 +vt 0.291353 0.108873 +vt 0.281673 0.142822 +vt 0.285169 0.140549 +vt 0.279556 0.143871 +vt 0.286951 0.148225 +vt 0.288440 0.150917 +vt 0.286064 0.150224 +vt 0.410802 0.134669 +vt 0.405654 0.131658 +vt 0.200676 0.976738 +vt 0.198506 0.962311 +vt 0.206953 0.963581 +vt 0.177491 0.953870 +vt 0.174541 0.955967 +vt 0.174214 0.955054 +vt 0.179011 0.950603 +vt 0.176755 0.953254 +vt 0.170974 0.956250 +vt 0.171141 0.955319 +vt 0.178740 0.946996 +vt 0.178071 0.950430 +vt 0.176717 0.943925 +vt 0.177824 0.947310 +vt 0.167756 0.954771 +vt 0.168348 0.954049 +vt 0.173219 0.942341 +vt 0.176033 0.944690 +vt 0.169417 0.942815 +vt 0.173064 0.943346 +vt 0.165672 0.951916 +vt 0.166544 0.951571 +vt 0.166596 0.945097 +vt 0.169843 0.943734 +vt 0.165246 0.948395 +vt 0.167364 0.945664 +vt 0.166181 0.948525 +vt 0.178034 0.954320 +vt 0.174785 0.956657 +vt 0.174541 0.955967 +vt 0.179705 0.950732 +vt 0.177491 0.953870 +vt 0.170851 0.956935 +vt 0.170974 0.956250 +vt 0.179415 0.946774 +vt 0.179011 0.950603 +vt 0.177257 0.943358 +vt 0.178740 0.946996 +vt 0.167318 0.955307 +vt 0.167756 0.954771 +vt 0.173333 0.941582 +vt 0.176717 0.943925 +vt 0.169069 0.942125 +vt 0.173219 0.942341 +vt 0.165031 0.952168 +vt 0.165672 0.951916 +vt 0.166033 0.944684 +vt 0.169417 0.942815 +vt 0.164562 0.948303 +vt 0.166596 0.945097 +vt 0.165246 0.948395 +vt 0.507413 0.952649 +vt 0.505313 0.947007 +vt 0.509953 0.950848 +vt 0.813137 0.936030 +vt 0.816999 0.936042 +vt 0.817012 0.931590 +vt 0.809275 0.936018 +vt 0.813150 0.931578 +vt 0.511269 0.948024 +vt 0.820861 0.936053 +vt 0.820874 0.931600 +vt 0.504339 0.952914 +vt 0.511023 0.944905 +vt 0.824723 0.936065 +vt 0.824738 0.931614 +vt 0.805411 0.936006 +vt 0.809288 0.931566 +vt 0.509232 0.942284 +vt 0.828587 0.936077 +vt 0.828600 0.931624 +vt 0.501546 0.951644 +vt 0.506263 0.940940 +vt 0.789963 0.935960 +vt 0.789976 0.931508 +vt 0.776758 0.931469 +vt 0.801550 0.935995 +vt 0.805426 0.931555 +vt 0.503041 0.941329 +vt 0.770442 0.935901 +vt 0.773938 0.935912 +vt 0.773952 0.931460 +vt 0.499743 0.949165 +vt 0.500563 0.943259 +vt 0.793825 0.935972 +vt 0.793838 0.931519 +vt 0.797687 0.935984 +vt 0.801564 0.931543 +vt 0.499379 0.946119 +vt 0.797702 0.931532 +vt 0.776744 0.935920 +vt 0.196413 0.977281 +vt 0.841807 0.936117 +vt 0.767649 0.931441 +vt 0.767636 0.935893 +vt 0.179609 0.928425 +vt 0.171162 0.927155 +vt 0.173740 0.925126 +vt 0.204601 0.978514 +vt 0.267733 0.946344 +vt 0.264866 0.947523 +vt 0.267728 0.948720 +vt 0.113559 0.986588 +vt 0.113545 0.988963 +vt 0.169391 0.989268 +vt 0.912369 0.968520 +vt 0.914046 0.966837 +vt 0.915237 0.969701 +vt 0.266045 0.950393 +vt 0.113533 0.991338 +vt 0.169378 0.991642 +vt 0.916421 0.966832 +vt 0.263670 0.950389 +vt 0.113520 0.993713 +vt 0.169365 0.994017 +vt 0.918104 0.968508 +vt 0.261993 0.948704 +vt 0.113623 0.974714 +vt 0.113610 0.977089 +vt 0.169456 0.977394 +vt 0.918104 0.970883 +vt 0.262000 0.946331 +vt 0.113597 0.979464 +vt 0.169443 0.979768 +vt 0.916433 0.972566 +vt 0.263683 0.944656 +vt 0.113584 0.981839 +vt 0.169430 0.982143 +vt 0.278275 0.840654 +vt 0.280295 0.842503 +vt 0.278989 0.832199 +vt 0.914053 0.972571 +vt 0.266059 0.944661 +vt 0.369894 0.831101 +vt 0.113571 0.984213 +vt 0.169417 0.984518 +vt 0.912375 0.970895 +vt 0.467682 0.428415 +vt 0.467409 0.426444 +vt 0.466533 0.426181 +vt 0.468381 0.429055 +vt 0.466914 0.428943 +vt 0.169404 0.986893 +vt 0.920370 0.565509 +vt 0.944401 0.554243 +vt 0.896376 0.554167 +vt 0.897668 0.571337 +vt 0.920362 0.571097 +vt 0.277841 0.781228 +vt 0.285343 0.783006 +vt 0.281869 0.774704 +vt 0.160089 0.800284 +vt 0.159623 0.798905 +vt 0.163138 0.795437 +vt 0.479286 0.894667 +vt 0.489683 0.897471 +vt 0.480471 0.884403 +vt 0.467929 0.425487 +vt 0.467205 0.425127 +vt 0.477729 0.848052 +vt 0.472954 0.850913 +vt 0.479582 0.858578 +vt 0.157244 0.800156 +vt 0.467929 0.425487 +vt 0.498939 0.421464 +vt 0.494112 0.421021 +vt 0.147537 0.667691 +vt 0.138873 0.673114 +vt 0.147618 0.628731 +vt 0.133643 0.683264 +vt 0.155132 0.676881 +vt 0.525965 0.426373 +vt 0.523581 0.425654 +vt 0.523015 0.509761 +vt 0.465526 0.858808 +vt 0.481265 0.779540 +vt 0.480607 0.772219 +vt 0.431532 0.784011 +vt 0.379766 0.803761 +vt 0.488548 0.791601 +vt 0.479552 0.788234 +vt 0.488196 0.788828 +vt 0.816605 0.798274 +vt 0.800394 0.810525 +vt 0.816251 0.807239 +vt 0.503573 0.417403 +vt 0.502943 0.507827 +vt 0.397927 0.482081 +vt 0.364284 0.482080 +vt 0.347740 0.489217 +vt 0.283364 0.770711 +vt 0.524484 0.428283 +vt 0.525220 0.427780 +vt 0.524484 0.428095 +vt 0.372721 0.781916 +vt 0.523960 0.436055 +vt 0.499903 0.435989 +vt 0.509939 0.437367 +vt 0.524487 0.427059 +vt 0.631458 0.968590 +vt 0.631414 0.976488 +vt 0.650864 0.980618 +vt 0.623508 0.976194 +vt 0.617333 0.980879 +vt 0.623551 0.968546 +vt 0.617403 0.968511 +vt 0.536680 0.427704 +vt 0.532638 0.428317 +vt 0.536677 0.429055 +vt 0.505929 0.440946 +vt 0.506151 0.441448 +vt 0.507140 0.440872 +vt 0.274031 0.781088 +vt 0.277202 0.779388 +vt 0.476868 0.846792 +vt 0.471771 0.849575 +vt 0.478536 0.895923 +vt 0.474524 0.892209 +vt 0.226741 0.668989 +vt 0.230965 0.658537 +vt 0.249203 0.663617 +vt 0.232711 0.644999 +vt 0.231484 0.634255 +vt 0.229111 0.615665 +vt 0.344606 0.838417 +vt 0.341288 0.844146 +vt 0.348270 0.846461 +vt 0.365181 0.805114 +vt 0.347197 0.834015 +vt 0.354449 0.835871 +vt 0.213549 0.839343 +vt 0.212248 0.841388 +vt 0.206815 0.848170 +vt 0.278298 0.859067 +vt 0.305848 0.811373 +vt 0.341603 0.836850 +vt 0.341929 0.834401 +vt 0.344203 0.833531 +vt 0.330160 0.776947 +vt 0.462094 0.867217 +vt 0.461172 0.865919 +vt 0.460357 0.872288 +vt 0.542334 0.734232 +vt 0.542982 0.739274 +vt 0.542761 0.725538 +vt 0.612699 0.710711 +vt 0.608902 0.708625 +vt 0.613102 0.701990 +vt 0.528420 0.748113 +vt 0.532710 0.740699 +vt 0.528989 0.736149 +vt 0.546000 0.748127 +vt 0.535991 0.743464 +vt 0.538550 0.732135 +vt 0.536918 0.728310 +vt 0.534592 0.733283 +vt 0.531071 0.731273 +vt 0.532323 0.736601 +vt 0.598796 0.724641 +vt 0.606324 0.719957 +vt 0.616313 0.724533 +vt 0.602661 0.713126 +vt 0.603047 0.717217 +vt 0.599324 0.712678 +vt 0.604936 0.709796 +vt 0.601402 0.707792 +vt 0.607249 0.704798 +vt 0.613286 0.715728 +vt 0.540303 0.742946 +vt 0.610621 0.719398 +vt 0.532048 0.427799 +vt 0.308951 0.916386 +vt 0.308804 0.907417 +vt 0.306065 0.921446 +vt 0.262659 0.892397 +vt 0.259718 0.898761 +vt 0.262865 0.887867 +vt 0.309964 0.899927 +vt 0.259034 0.884614 +vt 0.268399 0.867508 +vt 0.464315 0.872081 +vt 0.461623 0.872221 +vt 0.520840 0.428085 +vt 0.512013 0.428226 +vt 0.944412 0.546931 +vt 0.938804 0.546922 +vt 0.305612 0.799576 +vt 0.301983 0.792453 +vt 0.533427 0.430789 +vt 0.529482 0.430804 +vt 0.528712 0.432934 +vt 0.516798 0.838874 +vt 0.502642 0.840441 +vt 0.512413 0.853965 +vt 0.937195 0.583071 +vt 0.943054 0.571410 +vt 0.294765 0.785732 +vt 0.415487 0.757689 +vt 0.372231 0.763177 +vt 0.415472 0.763294 +vt 0.931076 0.540758 +vt 0.931073 0.532847 +vt 0.926803 0.522223 +vt 0.717079 0.850025 +vt 0.697889 0.850599 +vt 0.717428 0.855838 +vt 0.613102 0.701990 +vt 0.607249 0.704798 +vt 0.604947 0.699432 +vt 0.592611 0.724172 +vt 0.593958 0.711478 +vt 0.599324 0.712678 +vt 0.597415 0.704236 +vt 0.312958 0.141183 +vt 0.288488 0.144289 +vt 0.288507 0.148770 +vt 0.317240 0.144505 +vt 0.314711 0.143246 +vt 0.319804 0.145507 +vt 0.325454 0.142462 +vt 0.322554 0.143866 +vt 0.409234 0.135866 +vt 0.327219 0.140192 +vt 0.328247 0.138878 +vt 0.405721 0.101225 +vt 0.404279 0.105677 +vt 0.407977 0.107246 +vt 0.413761 0.103579 +vt 0.405876 0.098902 +vt 0.306707 0.110882 +vt 0.309657 0.110962 +vt 0.309891 0.106421 +vt 0.304331 0.110232 +vt 0.306789 0.105923 +vt 0.297301 0.104416 +vt 0.304667 0.104836 +vt 0.295338 0.103287 +vt 0.297557 0.100926 +vt 0.293302 0.103617 +vt 0.294488 0.100201 +vt 0.286363 0.106300 +vt 0.281002 0.141297 +vt 0.285169 0.140549 +vt 0.305962 0.103033 +vt 0.298304 0.099009 +vt 0.294755 0.098165 +vt 0.291840 0.098506 +vt 0.292374 0.100537 +vt 0.307621 0.103550 +vt 0.309891 0.106421 +vt 0.303415 0.111921 +vt 0.306196 0.112876 +vt 0.407352 0.130669 +vt 0.405962 0.129635 +vt 0.405654 0.131658 +vt 0.411997 0.105183 +vt 0.290334 0.107950 +vt 0.310018 0.103888 +vt 0.288440 0.150917 +vt 0.410611 0.137862 +vt 0.309823 0.112593 +vt 0.404333 0.130464 +vt 0.403938 0.100755 +vt 0.287801 0.103905 +vt 0.286167 0.102470 +vt 0.291353 0.108873 +vt 0.293525 0.104978 +vt 0.286523 0.140196 +vt 0.295221 0.104723 +vt 0.467771 0.862417 +vt 0.497984 0.436373 +vt 0.497981 0.437334 +vt 0.466787 0.885072 +vt 0.462614 0.877138 +vt 0.468717 0.881368 +vt 0.914272 0.546883 +vt 0.901996 0.546863 +vt 0.498218 0.886038 +vt 0.530203 0.432638 +vt 0.530198 0.431479 +vt 0.530971 0.430508 +vt 0.530207 0.434348 +vt 0.534930 0.434344 +vt 0.534933 0.435180 +vt 0.534933 0.435180 +vt 0.534935 0.435851 +vt 0.530211 0.435865 +vt 0.741145 0.587771 +vt 0.741138 0.579863 +vt 0.784380 0.579822 +vt 0.784380 0.579822 +vt 0.741138 0.579863 +vt 0.741104 0.572114 +vt 0.536277 0.431807 +vt 0.536268 0.430545 +vt 0.532323 0.430534 +vt 0.896388 0.546854 +vt 0.912374 0.587741 +vt 0.920334 0.588416 +vt 0.903490 0.583017 +vt 0.896258 0.565379 +vt 0.926528 0.546902 +vt 0.536670 0.431723 +vt 0.541392 0.432348 +vt 0.541394 0.431735 +vt 0.909744 0.540724 +vt 0.914078 0.522204 +vt 0.902006 0.540711 +vt 0.902038 0.522185 +vt 0.902020 0.532800 +vt 0.909773 0.532813 +vt 0.913623 0.510828 +vt 0.902057 0.510809 +vt 0.532631 0.431088 +vt 0.536673 0.430372 +vt 0.944483 0.565456 +vt 0.180820 0.822971 +vt 0.225631 0.818815 +vt 0.178050 0.808817 +vt 0.172700 0.803752 +vt 0.199189 0.797410 +vt 0.227672 0.816516 +vt 0.038689 0.814747 +vt 0.082486 0.817672 +vt 0.037050 0.828634 +vt 0.119684 0.819896 +vt 0.083750 0.821563 +vt 0.229782 0.815148 +vt 0.231420 0.801261 +vt 0.180716 0.814159 +vt 0.164279 0.792464 +vt 0.083280 0.816529 +vt 0.082798 0.820883 +vt 0.499887 0.441882 +vt 0.523943 0.441948 +vt 0.509930 0.440560 +vt 0.525209 0.431585 +vt 0.524475 0.431266 +vt 0.524472 0.432302 +vt 0.497973 0.440527 +vt 0.497970 0.441488 +vt 0.519850 0.440772 +vt 0.532038 0.431603 +vt 0.523038 0.431262 +vt 0.520831 0.431256 +vt 0.507889 0.443620 +vt 0.508686 0.443623 +vt 0.508723 0.431665 +vt 0.504603 0.443610 +vt 0.507926 0.431663 +vt 0.410802 0.134669 +vt 0.413032 0.107126 +vt 0.415337 0.106231 +vt 0.412617 0.135954 +vt 0.411997 0.105183 +vt 0.281002 0.141297 +vt 0.284455 0.105100 +vt 0.309891 0.106421 +vt 0.310018 0.103888 +vt 0.288507 0.148770 +vt 0.304331 0.110232 +vt 0.413761 0.103579 +vt 0.306789 0.105923 +vt 0.304667 0.104836 +vt 0.297557 0.100926 +vt 0.294488 0.100201 +vt 0.305962 0.103033 +vt 0.298304 0.099009 +vt 0.294755 0.098165 +vt 0.291840 0.098506 +vt 0.307621 0.103550 +vt 0.328674 0.137629 +vt 0.319775 0.144719 +vt 0.403791 0.098527 +vt 0.407173 0.108601 +vt 0.407718 0.109926 +vt 0.408817 0.109428 +vt 0.328434 0.133594 +vt 0.316677 0.139029 +vt 0.317532 0.135389 +vt 0.314226 0.135381 +vt 0.312794 0.139989 +vt 0.319269 0.131437 +vt 0.319955 0.127728 +vt 0.317360 0.129659 +vt 0.319718 0.142303 +vt 0.322593 0.139719 +vt 0.324800 0.135588 +vt 0.325386 0.131443 +vt 0.327174 0.129527 +vt 0.325027 0.127340 +vt 0.319686 0.138706 +vt 0.322039 0.131554 +vt 0.321220 0.135209 +vt 0.322767 0.126903 +vt 0.288842 0.142654 +vt 0.296744 0.105669 +vt 0.404441 0.107178 +vt 0.281673 0.142822 +vt 0.286951 0.148225 +vt 0.279556 0.143871 +vt 0.286064 0.150224 +vt 0.410802 0.134669 +vt 0.412617 0.135954 +vt 0.410802 0.134669 +vt 0.413032 0.107126 +vt 0.415337 0.106231 +vt 0.284455 0.105100 +vt 0.278808 0.141349 +vt 0.601402 0.707792 +vt 0.464288 0.857946 +vt 0.430491 0.785523 +vt 0.430922 0.789755 +vt 0.525633 0.853031 +vt 0.527890 0.837636 +vt 0.488410 0.844488 +vt 0.497813 0.855843 +vt 0.547036 0.854081 +vt 0.545883 0.836789 +vt 0.642072 0.855004 +vt 0.644582 0.840304 +vt 0.664836 0.856850 +vt 0.665550 0.844082 +vt 0.696641 0.843246 +vt 0.541561 0.435406 +vt 0.541562 0.439068 +vt 0.537616 0.435406 +vt 0.818748 0.813198 +vt 0.834622 0.844873 +vt 0.541397 0.430395 +vt 0.819014 0.791969 +vt 0.520041 0.434440 +vt 0.516080 0.430794 +vt 0.515306 0.431766 +vt 0.541405 0.427105 +vt 0.511643 0.443632 +vt 0.511681 0.431675 +vt 0.510884 0.431672 +vt 0.507074 0.443643 +vt 0.507113 0.431685 +vt 0.503826 0.431675 +vt 0.510646 0.441203 +vt 0.506151 0.441448 +vt 0.507810 0.441837 +vt 0.507140 0.440872 +vt 0.528708 0.431775 +vt 0.528715 0.434644 +vt 0.528717 0.435489 +vt 0.533441 0.435479 +vt 0.533441 0.435479 +vt 0.528717 0.435489 +vt 0.528719 0.436161 +vt 0.067244 0.893667 +vt 0.062278 0.889043 +vt 0.041841 0.899568 +vt 0.528715 0.434644 +vt 0.533439 0.434643 +vt 0.533438 0.433779 +vt 0.420110 0.482081 +vt 0.413360 0.482081 +vt 0.413362 0.489218 +vt 0.404388 0.489218 +vt 0.404388 0.482081 +vt 0.397926 0.489218 +vt 0.786497 0.853755 +vt 0.783792 0.853765 +vt 0.783848 0.868579 +vt 0.426594 0.489238 +vt 0.479489 0.785493 +vt 0.432181 0.790646 +vt 0.479552 0.788234 +vt 0.138986 0.619442 +vt 0.527793 0.430554 +vt 0.523847 0.430532 +vt 0.523840 0.431833 +vt 0.155225 0.616260 +vt 0.163798 0.613046 +vt 0.215285 0.601246 +vt 0.213992 0.613134 +vt 0.222920 0.607011 +vt 0.219973 0.615583 +vt 0.213518 0.848409 +vt 0.212031 0.850131 +vt 0.212061 0.844251 +vt 0.149944 0.672461 +vt 0.149575 0.621583 +vt 0.226063 0.622177 +vt 0.220370 0.675456 +vt 0.132351 0.677672 +vt 0.536839 0.439070 +vt 0.536838 0.436375 +vt 0.843786 0.455374 +vt 0.938814 0.540771 +vt 0.938843 0.522242 +vt 0.938861 0.510866 +vt 0.928295 0.587766 +vt 0.316290 0.909189 +vt 0.317939 0.901895 +vt 0.312259 0.924673 +vt 0.315534 0.918706 +vt 0.185045 0.846782 +vt 0.151621 0.850208 +vt 0.258963 0.849871 +vt 0.693736 0.480570 +vt 0.706500 0.473447 +vt 0.706497 0.462469 +vt 0.767028 0.809971 +vt 0.762580 0.817109 +vt 0.761558 0.809972 +vt 0.467778 0.429604 +vt 0.494848 0.426750 +vt 0.499402 0.425107 +vt 0.489382 0.771430 +vt 0.488196 0.788828 +vt 0.510766 0.435967 +vt 0.510768 0.435484 +vt 0.512152 0.435975 +vt 0.510395 0.436275 +vt 0.512519 0.436286 +vt 0.512701 0.435978 +vt 0.510217 0.435965 +vt 0.503404 0.438795 +vt 0.503403 0.439344 +vt 0.514607 0.439360 +vt 0.503395 0.445030 +vt 0.514599 0.445047 +vt 0.514605 0.440754 +vt 0.458385 0.056417 +vt 0.424924 0.056311 +vt 0.423411 0.058436 +vt 0.509540 0.441305 +vt 0.509278 0.441304 +vt 0.509296 0.437010 +vt 0.417408 0.049490 +vt 0.414883 0.050932 +vt 0.508711 0.419461 +vt 0.504603 0.419473 +vt 0.504635 0.430677 +vt 0.508743 0.430665 +vt 0.509989 0.430662 +vt 0.515352 0.424554 +vt 0.513966 0.424552 +vt 0.513960 0.428667 +vt 0.513321 0.441323 +vt 0.513348 0.437216 +vt 0.513611 0.437033 +vt 0.513479 0.428610 +vt 0.513960 0.428667 +vt 0.513966 0.424552 +vt 0.503406 0.437409 +vt 0.507493 0.437415 +vt 0.514611 0.436879 +vt 0.503416 0.431174 +vt 0.503409 0.435467 +vt 0.514613 0.435484 +vt 0.458463 0.025487 +vt 0.458468 0.023357 +vt 0.423510 0.023271 +vt 0.417457 0.032182 +vt 0.425010 0.025404 +vt 0.503407 0.436860 +vt 0.513327 0.419448 +vt 0.513359 0.430652 +vt 0.517467 0.430640 +vt 0.507491 0.438802 +vt 0.515346 0.428669 +vt 0.515827 0.428613 +vt 0.515352 0.424554 +vt 0.512081 0.419451 +vt 0.512113 0.430656 +vt 0.509957 0.419458 +vt 0.512155 0.435491 +vt 0.924937 0.604905 +vt 0.823042 0.855453 +vt 0.510231 0.845136 +vt 0.834678 0.853744 +vt 0.936206 0.619330 +vt 0.946414 0.608213 +vt 0.838373 0.855453 +vt 0.838373 0.857178 +vt 0.935119 0.596362 +vt 0.823042 0.857179 +vt 0.505784 0.850420 +vt 0.528775 0.851703 +vt 0.516880 0.839562 +vt 0.520442 0.836072 +vt 0.252649 0.671850 +vt 0.216060 0.837967 +vt 0.688976 0.721051 +vt 0.688964 0.729778 +vt 0.693650 0.729782 +vt 0.987930 0.703465 +vt 0.987937 0.709256 +vt 0.996010 0.707585 +vt 0.100906 0.686438 +vt 0.107408 0.671030 +vt 0.128190 0.674115 +vt 0.115506 0.667738 +vt 0.995866 0.719402 +vt 0.144996 0.693831 +vt 0.101437 0.698854 +vt 0.138634 0.691115 +vt 0.220429 0.837505 +vt 0.100946 0.680329 +vt 0.693601 0.747407 +vt 0.695654 0.741310 +vt 0.688953 0.741304 +vt 0.995821 0.679724 +vt 0.987837 0.689859 +vt 0.987873 0.695057 +vt 0.104197 0.694536 +vt 0.132322 0.684597 +vt 0.103059 0.675321 +vt 0.632078 0.866868 +vt 0.594498 0.866868 +vt 0.594498 0.862650 +vt 0.594498 0.854215 +vt 0.632078 0.854215 +vt 0.632078 0.858432 +vt 0.203347 0.487944 +vt 0.165767 0.487944 +vt 0.165767 0.483727 +vt 0.166763 0.745860 +vt 0.204344 0.745860 +vt 0.204344 0.750077 +vt 0.130247 0.889012 +vt 0.125486 0.893737 +vt 0.132258 0.895120 +vt 0.500600 0.507658 +vt 0.129961 0.900327 +vt 0.153438 0.891133 +vt 0.148662 0.895139 +vt 0.509791 0.440921 +vt 0.506598 0.440935 +vt 0.506583 0.437649 +vt 0.509277 0.441530 +vt 0.507117 0.441540 +vt 0.520025 0.430778 +vt 0.032914 0.892147 +vt 0.510846 0.443630 +vt 0.515317 0.434461 +vt 0.632078 0.862650 +vt 0.166763 0.741642 +vt 0.204344 0.741642 +vt 0.204344 0.754295 +vt 0.166763 0.754295 +vt 0.204344 0.737425 +vt 0.506125 0.436830 +vt 0.505931 0.437397 +vt 0.507183 0.437514 +vt 0.701232 0.980835 +vt 0.701178 0.973187 +vt 0.694996 0.968511 +vt 0.709083 0.972881 +vt 0.728527 0.968723 +vt 0.709139 0.980778 +vt 0.728612 0.980639 +vt 0.523046 0.428091 +vt 0.120536 0.807751 +vt 0.524476 0.431078 +vt 0.165680 0.801658 +vt 0.397927 0.464479 +vt 0.397927 0.457342 +vt 0.347741 0.457341 +vt 0.842467 0.852745 +vt 0.834622 0.844873 +vt 0.822154 0.857297 +vt 0.787926 0.822949 +vt 0.775618 0.839118 +vt 0.784584 0.838795 +vt 0.119684 0.819896 +vt 0.126237 0.820376 +vt 0.126494 0.822480 +vt 0.043968 0.831329 +vt 0.037050 0.828634 +vt 0.121011 0.813305 +vt 0.377326 0.801464 +vt 0.377276 0.833340 +vt 0.398558 0.833373 +vt 0.338586 0.489217 +vt 0.225253 0.699679 +vt 0.194218 0.694159 +vt 0.203825 0.693107 +vt 0.264472 0.671874 +vt 0.264488 0.663647 +vt 0.268153 0.665649 +vt 0.688940 0.756131 +vt 0.689025 0.756305 +vt 0.693601 0.747407 +vt 0.987901 0.699231 +vt 0.995953 0.699177 +vt 0.220114 0.689486 +vt 0.211500 0.683987 +vt 0.211760 0.645028 +vt 0.468430 0.425751 +vt 0.467704 0.425373 +vt 0.494826 0.421949 +vt 0.467887 0.426702 +vt 0.467013 0.426422 +vt 0.467704 0.425373 +vt 0.468799 0.429341 +vt 0.468185 0.429873 +vt 0.467346 0.429192 +vt 0.468121 0.428683 +vt 0.231220 0.830499 +vt 0.321420 0.821180 +vt 0.322517 0.831775 +vt 0.230329 0.838968 +vt 0.229651 0.833246 +vt 0.842765 0.480112 +vt 0.842765 0.485006 +vt 0.837620 0.485005 +vt 0.825367 0.485004 +vt 0.812070 0.485004 +vt 0.812071 0.477177 +vt 0.987930 0.703465 +vt 0.995981 0.703411 +vt 0.236699 0.817843 +vt 0.233036 0.819558 +vt 0.237514 0.623066 +vt 0.343890 0.618285 +vt 0.343855 0.623755 +vt 0.169223 0.700762 +vt 0.169246 0.700790 +vt 0.167737 0.702484 +vt 0.229706 0.822739 +vt 0.119645 0.817818 +vt 0.126369 0.818161 +vt 0.126237 0.820376 +vt 0.127194 0.807182 +vt 0.127669 0.812736 +vt 0.500038 0.426193 +vt 0.767029 0.841847 +vt 0.838841 0.477179 +vt 0.762580 0.834710 +vt 0.761559 0.841847 +vt 0.460186 0.833470 +vt 0.465924 0.833478 +vt 0.465974 0.801603 +vt 0.695669 0.735883 +vt 0.465974 0.801603 +vt 0.465924 0.833478 +vt 0.589758 0.833672 +vt 0.452231 0.833457 +vt 0.460186 0.833470 +vt 0.460236 0.801593 +vt 0.452281 0.801581 +vt 0.270941 0.833175 +vt 0.706497 0.462469 +vt 0.731733 0.462463 +vt 0.731730 0.448114 +vt 0.706500 0.473447 +vt 0.731735 0.473442 +vt 0.731733 0.462463 +vt 0.744502 0.480559 +vt 0.744475 0.455864 +vt 0.731733 0.462463 +vt 0.706503 0.488064 +vt 0.731738 0.488059 +vt 0.731735 0.473442 +vt 0.151521 0.818331 +vt 0.187828 0.891142 +vt 0.181881 0.889467 +vt 0.180828 0.895063 +vt 0.186407 0.896580 +vt 0.185602 0.903706 +vt 0.184965 0.821547 +vt 0.209662 0.821469 +vt 0.258863 0.817994 +vt 0.182995 0.908105 +vt 0.178426 0.905528 +vt 0.180717 0.901802 +vt 0.271574 0.817954 +vt 0.271675 0.849831 +vt 0.287676 0.849781 +vt 0.209741 0.846705 +vt 0.298932 0.849746 +vt 0.298832 0.817868 +vt 0.287576 0.817904 +vt 0.843786 0.472975 +vt 0.541400 0.429057 +vt 0.209051 0.688734 +vt 0.226594 0.694100 +vt 0.130403 0.631285 +vt 0.127876 0.649844 +vt 0.126560 0.660571 +vt 0.133395 0.637819 +vt 0.139538 0.631279 +vt 0.145537 0.628880 +vt 0.136663 0.622685 +vt 0.144343 0.616985 +vt 0.195720 0.629210 +vt 0.204263 0.632495 +vt 0.220473 0.635814 +vt 0.209866 0.637864 +vt 0.688958 0.735877 +vt 0.161690 0.489238 +vt 0.172499 0.489238 +vt 0.172498 0.457322 +vt 0.426595 0.457322 +vt 0.413362 0.457342 +vt 0.420110 0.464479 +vt 0.404388 0.464479 +vt 0.404389 0.457342 +vt 0.413361 0.464479 +vt 0.262632 0.489217 +vt 0.272298 0.489217 +vt 0.272298 0.457341 +vt 0.279113 0.489217 +vt 0.279113 0.457341 +vt 0.213404 0.489217 +vt 0.262632 0.457341 +vt 0.284455 0.489217 +vt 0.284455 0.457341 +vt 0.206486 0.489217 +vt 0.213404 0.457341 +vt 0.323415 0.489217 +vt 0.323415 0.457341 +vt 0.197411 0.489217 +vt 0.206485 0.457341 +vt 0.330825 0.489217 +vt 0.330825 0.457341 +vt 0.186143 0.489237 +vt 0.197411 0.457342 +vt 0.338586 0.457341 +vt 0.186142 0.457322 +vt 0.787926 0.822949 +vt 0.800394 0.810525 +vt 0.781838 0.791904 +vt 0.769305 0.841505 +vt 0.790535 0.841313 +vt 0.822154 0.857297 +vt 0.834622 0.844873 +vt 0.800394 0.810525 +vt 0.814282 0.865143 +vt 0.822154 0.857297 +vt 0.364285 0.464478 +vt 0.665099 0.895783 +vt 0.696240 0.896784 +vt 0.697528 0.889426 +vt 0.717390 0.884099 +vt 0.664335 0.883183 +vt 0.642311 0.884975 +vt 0.644805 0.899444 +vt 0.547257 0.887636 +vt 0.546159 0.904698 +vt 0.512670 0.887203 +vt 0.503448 0.900859 +vt 0.526257 0.888227 +vt 0.528278 0.903634 +vt 0.517264 0.902279 +vt 0.465653 0.886011 +vt 0.473472 0.893576 +vt 0.461836 0.878509 +vt 0.531071 0.731273 +vt 0.527098 0.727704 +vt 0.523628 0.734935 +vt 0.536918 0.728310 +vt 0.522247 0.747613 +vt 0.528420 0.748113 +vt 0.528989 0.736149 +vt 0.542761 0.725538 +vt 0.534645 0.722946 +vt 0.717036 0.890009 +vt 0.534917 0.430491 +vt 0.534926 0.432618 +vt 0.159128 0.858047 +vt 0.151495 0.864134 +vt 0.146839 0.879266 +vt 0.144046 0.876731 +vt 0.146573 0.882660 +vt 0.144209 0.887363 +vt 0.130019 0.852326 +vt 0.125529 0.858905 +vt 0.132303 0.857539 +vt 0.130277 0.863641 +vt 0.153474 0.861577 +vt 0.148708 0.857559 +vt 0.041897 0.852873 +vt 0.032952 0.860271 +vt 0.062309 0.863447 +vt 0.491739 0.507629 +vt 0.492032 0.416482 +vt 0.489346 0.417357 +vt 0.469285 0.425479 +vt 0.469311 0.509589 +vt 0.534748 0.426440 +vt 0.534114 0.509991 +vt 0.536433 0.509863 +vt 0.525331 0.509924 +vt 0.500893 0.416511 +vt 0.067286 0.858835 +vt 0.519860 0.437209 +vt 0.519310 0.440420 +vt 0.529931 0.440635 +vt 0.530292 0.436681 +vt 0.506125 0.436830 +vt 0.507183 0.437514 +vt 0.510722 0.437437 +vt 0.510646 0.441203 +vt 0.510722 0.437437 +vt 0.507183 0.437514 +vt 0.930383 0.894023 +vt 0.928759 0.883534 +vt 0.907068 0.886893 +vt 0.506415 0.841924 +vt 0.506415 0.841924 +vt 0.796689 0.857179 +vt 0.811898 0.853744 +vt 0.532339 0.848213 +vt 0.833202 0.853744 +vt 0.359688 0.958662 +vt 0.968182 0.968689 +vt 0.794545 0.965293 +vt 0.804792 0.965320 +vt 0.536631 0.969780 +vt 0.542195 0.969746 +vt 0.379766 0.803761 +vt 0.842763 0.443343 +vt 0.050841 0.952323 +vt 0.054072 0.949210 +vt 0.035908 0.949211 +vt 0.054072 0.949510 +vt 0.054605 0.944456 +vt 0.036442 0.944458 +vt 0.054605 0.944056 +vt 0.054072 0.944703 +vt 0.035908 0.944706 +vt 0.054072 0.945003 +vt 0.054117 0.943132 +vt 0.054072 0.945905 +vt 0.035908 0.945908 +vt 0.054072 0.946205 +vt 0.035908 0.946208 +vt 0.054072 0.946505 +vt 0.035908 0.946508 +vt 0.054072 0.946806 +vt 0.054117 0.946908 +vt 0.852193 0.936174 +vt 0.316211 0.994208 +vt 0.770455 0.931449 +vt 0.841820 0.931664 +vt 0.177713 0.925811 +vt 0.169469 0.975019 +vt 0.277487 0.834962 +vt 0.368558 0.820578 +vt 0.467205 0.425127 +vt 0.370634 0.800249 +vt 0.650931 0.968701 +vt 0.351976 0.840046 +vt 0.533435 0.432916 +vt 0.598796 0.724641 +vt 0.530209 0.435193 +vt 0.530209 0.435193 +vt 0.784387 0.587733 +vt 0.784346 0.571925 +vt 0.532332 0.431836 +vt 0.504640 0.431653 +vt 0.412617 0.135954 +vt 0.278808 0.141349 +vt 0.412617 0.135954 +vt 0.842494 0.837028 +vt 0.514929 0.443643 +vt 0.927409 0.934733 +vt 0.929762 0.924701 +vt 0.906663 0.929866 +vt 0.533439 0.434643 +vt 0.533442 0.436150 +vt 0.528715 0.433781 +vt 0.786503 0.868569 +vt 0.527785 0.431817 +vt 0.938826 0.532859 +vt 0.927294 0.510847 +vt 0.693752 0.455875 +vt 0.490040 0.778751 +vt 0.488357 0.785906 +vt 0.503401 0.440738 +vt 0.458378 0.058547 +vt 0.509556 0.437196 +vt 0.515346 0.428669 +vt 0.513582 0.441326 +vt 0.514620 0.431192 +vt 0.414941 0.030725 +vt 0.517435 0.419436 +vt 0.532339 0.848213 +vt 0.995981 0.703411 +vt 0.688948 0.747403 +vt 0.995924 0.695002 +vt 0.594498 0.858432 +vt 0.203347 0.483727 +vt 0.166763 0.750077 +vt 0.509776 0.437635 +vt 0.165767 0.466857 +vt 0.203347 0.466857 +vt 0.165767 0.471074 +vt 0.695084 0.980879 +vt 0.829999 0.865170 +vt 0.398608 0.801497 +vt 0.268144 0.669886 +vt 0.688940 0.756131 +vt 0.499658 0.422525 +vt 0.468430 0.425751 +vt 0.232286 0.840869 +vt 0.495422 0.427721 +vt 0.460236 0.801593 +vt 0.589808 0.801796 +vt 0.270991 0.801299 +vt 0.706494 0.448119 +vt 0.706497 0.462469 +vt 0.731735 0.473442 +vt 0.706500 0.473447 +vt 0.161689 0.457323 +vt 0.769370 0.804329 +vt 0.787926 0.822949 +vt 0.489394 0.507784 +vt 0.537143 0.425757 +vt 0.519297 0.436720 +vt 0.507140 0.440872 +vt 0.507859 0.436561 +vt 0.351639 0.962522 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.9983 -0.0575 +vn 0.0000 -0.9772 -0.2125 +vn 0.0000 -0.9666 -0.2562 +vn 0.0000 -0.4950 0.8689 +vn 1.0000 -0.0000 0.0000 +vn -0.0053 0.6390 -0.7692 +vn 0.0000 0.6406 -0.7679 +vn -0.0035 0.6415 -0.7671 +vn 0.0000 -0.9606 -0.2778 +vn 0.0000 -0.9397 -0.3420 +vn 0.0000 0.1886 -0.9821 +vn 0.0000 0.6463 -0.7631 +vn -0.0036 0.6433 -0.7656 +vn 0.0000 0.8070 0.5905 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.9924 0.1232 +vn 0.0000 -0.5336 0.8457 +vn -0.0011 -0.5347 0.8451 +vn -0.0007 -0.5346 0.8451 +vn 0.0002 0.9819 0.1892 +vn 0.0000 1.0000 -0.0000 +vn -0.0000 0.8598 0.5106 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.9851 -0.1717 +vn 0.0000 -0.9356 0.3532 +vn 0.0000 -0.9999 0.0171 +vn 0.0000 0.3735 0.9276 +vn 0.0000 -0.2142 0.9768 +vn 0.0000 -0.1128 0.9936 +vn 0.0000 -0.6774 0.7356 +vn 0.0000 -0.5021 0.8648 +vn 0.0000 -0.9934 -0.1149 +vn 0.0000 0.0000 -1.0000 +vn -0.9978 0.0662 -0.0000 +vn -0.8965 0.4430 0.0000 +vn -0.9472 0.3207 -0.0000 +vn -0.9575 -0.1451 0.2492 +vn -0.9344 -0.2629 0.2404 +vn -0.9389 -0.2242 0.2612 +vn -0.8781 -0.1764 0.4448 +vn -0.9776 -0.1677 0.1269 +vn 0.9978 -0.0662 0.0000 +vn 0.8965 -0.4430 -0.0000 +vn 0.9472 -0.3207 -0.0000 +vn -0.6588 0.7523 0.0000 +vn -0.7523 0.6588 -0.0000 +vn 0.6588 -0.7523 -0.0000 +vn 0.7523 -0.6588 -0.0000 +vn -0.3207 0.9472 -0.0001 +vn -0.4430 0.8965 -0.0001 +vn 0.3207 -0.9472 -0.0000 +vn 0.4430 -0.8965 -0.0000 +vn 0.0662 0.9978 0.0000 +vn -0.0661 0.9978 0.0000 +vn -0.0662 -0.9978 -0.0000 +vn 0.0661 -0.9978 0.0000 +vn 0.0661 0.9978 0.0000 +vn 0.4430 0.8965 -0.0000 +vn 0.3207 0.9472 0.0000 +vn -0.0661 -0.9978 -0.0000 +vn -0.4430 -0.8965 -0.0000 +vn -0.3207 -0.9472 -0.0000 +vn 0.7523 0.6588 -0.0000 +vn 0.6588 0.7523 0.0000 +vn -0.7523 -0.6588 -0.0000 +vn -0.6588 -0.7523 -0.0000 +vn 0.9472 0.3207 -0.0000 +vn 0.8965 0.4430 -0.0001 +vn -0.9472 -0.3207 -0.0000 +vn -0.8965 -0.4430 -0.0000 +vn 0.9978 0.0662 -0.0000 +vn -0.9978 -0.0662 0.0000 +vn 0.8965 -0.4430 0.0001 +vn -0.3207 0.9472 0.0000 +vn -0.4430 0.8965 0.0000 +vn 0.0662 -0.9978 -0.0000 +vn -0.0662 0.9978 0.0000 +vn -0.4430 -0.8965 0.0001 +vn -0.3207 -0.9472 0.0001 +vn 0.8965 0.4430 0.0000 +vn 0.0000 0.9071 -0.4210 +vn 0.0000 0.9960 0.0890 +vn 0.0000 0.9960 -0.0890 +vn 0.0000 0.9960 0.0889 +vn 0.0000 0.8181 0.5750 +vn 0.0000 0.9071 0.4210 +vn 0.0000 0.5751 -0.8181 +vn 0.0000 0.8181 -0.5751 +vn 0.0000 0.4210 0.9071 +vn 0.0000 0.5750 0.8181 +vn 0.0000 0.0890 -0.9960 +vn 0.0000 0.4210 -0.9071 +vn 0.0000 -0.0889 0.9960 +vn 0.0000 0.0889 0.9960 +vn 0.0000 -0.4210 -0.9071 +vn 0.0000 0.0889 -0.9960 +vn -0.0000 -0.0890 -0.9960 +vn 0.0000 -0.5750 0.8181 +vn 0.0000 -0.4210 0.9071 +vn 0.0000 -0.8181 -0.5751 +vn 0.0000 -0.5751 -0.8181 +vn 0.0000 -0.9071 0.4210 +vn 0.0000 -0.8181 0.5750 +vn 0.0000 -0.9960 -0.0890 +vn 0.0000 -0.9071 -0.4210 +vn 0.0000 -0.9960 -0.0889 +vn 0.0000 -0.9960 0.0889 +vn 0.0000 -0.9960 0.0890 +vn 0.0000 -0.8181 -0.5750 +vn 0.0000 -0.5751 0.8181 +vn 0.0000 -0.8181 0.5751 +vn 0.0000 -0.5750 -0.8181 +vn 0.0000 -0.0890 0.9960 +vn -0.0001 -0.0890 -0.9960 +vn 0.0000 0.0890 0.9960 +vn 0.0000 0.5750 -0.8181 +vn 0.0000 0.8181 0.5751 +vn 0.0000 0.5751 0.8181 +vn 0.0000 0.8181 -0.5750 +vn 0.0000 0.9960 -0.0889 +vn -0.8737 -0.1315 -0.4684 +vn -0.9862 -0.0041 -0.1656 +vn -0.8872 0.2205 -0.4054 +vn -0.7168 -0.3702 0.5909 +vn -0.0822 -0.6000 0.7957 +vn -0.6767 -0.2422 0.6953 +vn -0.9125 0.1216 -0.3905 +vn -0.9940 0.0221 -0.1068 +vn -0.9139 -0.0027 -0.4059 +vn -0.9673 0.2232 0.1202 +vn -0.9954 -0.0433 0.0853 +vn -0.9560 0.1006 0.2757 +vn -0.9685 -0.0991 0.2284 +vn -0.9504 -0.2074 0.2318 +vn -0.9883 0.1182 0.0969 +vn -0.4530 0.2801 -0.8464 +vn -0.4864 0.0390 -0.8729 +vn -0.9142 0.0704 -0.3992 +vn -0.1396 0.2721 -0.9521 +vn -0.0360 0.1283 -0.9911 +vn -0.8460 0.1204 -0.5194 +vn -0.9076 0.3995 -0.1294 +vn -0.4854 0.7468 -0.4545 +vn -0.5755 0.8091 -0.1186 +vn -0.0534 0.7747 -0.6301 +vn -0.3445 0.4756 -0.8094 +vn -0.9779 -0.0642 -0.1992 +vn -0.9947 0.0245 -0.0996 +vn -0.9931 -0.0834 -0.0820 +vn -0.9058 -0.1444 -0.3984 +vn -0.9566 0.2613 0.1289 +vn -0.9201 -0.3126 0.2362 +vn -0.9313 -0.3635 0.0218 +vn -0.9227 -0.2852 0.2592 +vn -0.9128 -0.3909 0.1182 +vn -0.9312 -0.3570 0.0740 +vn -0.9684 -0.1692 0.1830 +vn -0.9038 -0.3696 0.2156 +vn -0.9809 -0.1776 0.0789 +vn -0.9786 -0.2002 0.0480 +vn -0.9987 -0.0475 -0.0201 +vn -0.9688 0.2308 0.0903 +vn -0.9376 0.0952 0.3344 +vn -0.9649 0.1135 0.2367 +vn -0.9495 0.2763 0.1486 +vn -0.9832 0.0556 0.1736 +vn -0.9844 0.1276 0.1212 +vn -0.9290 0.2500 0.2729 +vn -0.9956 -0.0665 0.0653 +vn -0.9625 -0.0724 0.2614 +vn -0.9851 -0.1084 0.1335 +vn -0.9833 -0.0502 0.1751 +vn -0.9846 -0.0087 0.1745 +vn -0.9900 0.1007 0.0988 +vn -0.8989 0.0907 0.4287 +vn -0.9942 -0.0403 -0.1002 +vn -0.9968 -0.0448 -0.0663 +vn -0.8695 -0.2858 -0.4029 +vn -0.9335 -0.3023 -0.1926 +vn -0.9089 -0.4170 0.0072 +vn -0.9846 -0.1696 0.0430 +vn -0.9932 -0.0221 -0.1146 +vn -0.9900 0.0999 -0.0998 +vn -0.9920 0.1239 -0.0234 +vn -0.5747 0.5494 0.6065 +vn -0.8998 0.4026 0.1680 +vn -0.0745 0.7122 0.6980 +vn -0.3706 0.2403 0.8972 +vn -0.0963 -0.2070 0.9736 +vn -0.0758 0.2517 0.9648 +vn -0.6409 -0.7662 -0.0458 +vn -0.9298 -0.2330 0.2848 +vn 0.0000 -0.5750 0.8182 +vn 0.0000 -0.5750 -0.8182 +vn 0.0000 -0.8182 -0.5750 +vn 0.0000 0.5750 0.8182 +vn 0.0000 -0.0889 -0.9960 +vn 0.0000 -0.9239 -0.3826 +vn 0.0000 0.9239 -0.3826 +vn 0.0000 0.9675 -0.2527 +vn 0.0000 -0.3827 -0.9239 +vn 0.0000 0.3827 -0.9239 +vn -0.0000 0.8629 -0.5054 +vn 0.0000 -0.9676 -0.2526 +vn -0.0000 -0.8629 -0.5054 +vn 0.0002 -0.9676 -0.2526 +vn 0.0000 0.9906 0.1368 +vn 0.0000 0.6038 0.7972 +vn 0.0000 0.7972 0.6038 +vn 0.0000 -0.1368 0.9906 +vn 0.0000 0.1368 0.9906 +vn 0.0000 -0.7972 0.6037 +vn -0.0000 -0.6038 0.7972 +vn 0.0000 -0.7972 0.6038 +vn 0.0000 -0.9906 -0.1368 +vn 0.0000 -0.9906 0.1368 +vn 0.0000 -0.6038 -0.7972 +vn 0.0000 -0.7972 -0.6038 +vn 0.0000 0.1368 -0.9906 +vn 0.0000 -0.1368 -0.9906 +vn -1.0000 0.0000 0.0037 +vn -1.0000 0.0000 0.0075 +vn 0.0000 0.7972 -0.6038 +vn 0.0000 0.6038 -0.7972 +vn -0.5344 0.1812 0.8256 +vn -0.5073 -0.3627 0.7818 +vn -0.5247 -0.1884 0.8302 +vn -0.3422 0.8174 0.4635 +vn -0.5018 0.4301 0.7505 +vn 0.0000 0.9906 -0.1368 +vn 0.0138 0.7488 -0.6626 +vn -0.0105 0.4047 -0.9144 +vn 0.0087 0.3748 -0.9271 +vn 0.0713 0.8730 -0.4825 +vn -0.0055 0.9136 -0.4067 +vn -0.9958 -0.0324 -0.0853 +vn -0.9474 -0.3190 -0.0268 +vn 0.9932 -0.0426 -0.1083 +vn 0.9930 -0.0531 -0.1054 +vn 0.9015 -0.4270 -0.0701 +vn 0.9474 -0.3190 -0.0268 +vn 0.4260 -0.8999 -0.0934 +vn -0.4482 -0.5058 0.7370 +vn -0.4877 -0.5255 0.6971 +vn -0.9280 -0.3587 -0.1012 +vn -0.8534 -0.4727 -0.2197 +vn -0.4260 -0.8989 -0.1030 +vn 0.9394 -0.1625 -0.3019 +vn 0.5145 -0.3209 0.7952 +vn 0.9295 -0.1383 0.3419 +vn 0.9268 -0.1407 0.3483 +vn -0.6818 -0.5955 -0.4249 +vn -0.9911 0.0000 0.1331 +vn -0.9978 -0.0000 0.0666 +vn 0.9404 0.1281 -0.3149 +vn 0.9304 0.1374 -0.3398 +vn -0.0000 -0.9918 0.1279 +vn -0.0000 -0.9960 -0.0893 +vn 0.1721 0.4024 -0.8991 +vn 0.0000 0.4238 -0.9058 +vn -0.9476 -0.1416 -0.2864 +vn -0.9930 -0.0531 -0.1054 +vn -0.9476 -0.1416 -0.2865 +vn 0.8934 -0.3903 -0.2225 +vn -1.0000 -0.0006 0.0001 +vn -1.0000 -0.0010 -0.0002 +vn -0.9886 -0.0584 0.1389 +vn -1.0000 0.0000 -0.0006 +vn -1.0000 0.0008 -0.0005 +vn -0.8859 -0.1792 0.4279 +vn -0.9569 -0.1081 0.2694 +vn -0.9391 -0.1502 0.3090 +vn -0.9371 -0.1343 0.3223 +vn 0.4203 -0.4751 0.7730 +vn 0.3339 -0.2816 0.8996 +vn 0.8896 -0.1729 0.4226 +vn -0.9473 0.1523 -0.2819 +vn -0.9802 0.0091 -0.1979 +vn -0.2835 -0.4795 -0.8305 +vn -0.2965 -0.1206 -0.9474 +vn -0.0364 0.1142 -0.9928 +vn 0.9363 0.1191 -0.3304 +vn -0.9363 0.1191 -0.3304 +vn 0.9910 0.0439 -0.1265 +vn -0.9910 0.0439 -0.1265 +vn -0.8724 -0.1036 0.4777 +vn -0.9603 0.0267 0.2778 +vn -0.9801 -0.1117 0.1641 +vn -0.9999 -0.0132 -0.0001 +vn -0.9719 -0.0333 0.2329 +vn -0.9376 0.1183 -0.3271 +vn -0.9212 0.1912 -0.3389 +vn 0.0000 -0.9072 -0.4206 +vn 0.0208 -0.2762 -0.9609 +vn 0.0000 0.2238 -0.9746 +vn 0.0000 0.1500 -0.9887 +vn -0.9257 -0.1856 -0.3295 +vn -0.9477 -0.2262 -0.2251 +vn -0.9436 -0.3063 -0.1256 +vn -0.5812 -0.6406 -0.5019 +vn -0.0857 0.9400 -0.3302 +vn -0.0807 0.8763 -0.4749 +vn 0.0006 0.2651 -0.9642 +vn -0.9910 0.0440 -0.1265 +vn -0.9363 0.1191 -0.3303 +vn -0.4139 0.3096 -0.8560 +vn -0.3758 -0.8080 -0.4538 +vn -0.3691 -0.8001 -0.4728 +vn -0.3743 -0.7996 -0.4696 +vn -0.3715 0.2637 -0.8902 +vn -0.3430 0.0002 -0.9393 +vn -0.3595 0.1300 -0.9240 +vn -0.3937 -0.6141 -0.6841 +vn 0.9227 -0.2852 0.2592 +vn 0.8989 0.0907 0.4287 +vn 0.6998 -0.1880 0.6892 +vn 0.9504 -0.2074 0.2318 +vn 0.9201 -0.3126 0.2362 +vn 0.6767 -0.2422 0.6953 +vn 0.9649 0.1135 0.2367 +vn 0.9883 0.1182 0.0969 +vn 0.7168 -0.3702 0.5909 +vn 0.9376 0.0952 0.3344 +vn 0.9560 0.1006 0.2757 +vn 0.4864 0.0390 -0.8729 +vn 0.9142 0.0704 -0.3992 +vn 0.9058 -0.1444 -0.3984 +vn 0.0717 -0.2461 -0.9666 +vn 0.0360 0.1283 -0.9911 +vn 0.9139 -0.0027 -0.4059 +vn 0.9125 0.1216 -0.3905 +vn 0.8460 0.1204 -0.5194 +vn 0.9083 -0.1711 -0.3818 +vn 0.4795 -0.1233 -0.8689 +vn 0.8695 -0.2858 -0.4029 +vn 0.3927 -0.4709 -0.7900 +vn 0.8737 -0.1315 -0.4684 +vn 0.3129 -0.4800 -0.8196 +vn 0.8872 0.2205 -0.4054 +vn 0.3805 -0.0664 -0.9224 +vn 0.5755 0.8091 -0.1186 +vn 0.3592 0.8985 0.2523 +vn 0.8999 0.4025 0.1679 +vn 0.0333 -0.3953 -0.9180 +vn -0.0238 -0.5460 -0.8375 +vn -0.0633 -0.2827 -0.9571 +vn -0.0221 0.3133 -0.9494 +vn 0.3445 0.4756 -0.8094 +vn 0.0128 -0.0140 -0.9998 +vn 0.0009 0.2043 -0.9789 +vn 0.9968 -0.0448 -0.0663 +vn 0.9932 -0.0221 -0.1146 +vn 0.9089 -0.4170 0.0072 +vn 0.9846 -0.1696 0.0430 +vn 0.9298 -0.2330 0.2848 +vn 0.4446 -0.3490 -0.8249 +vn 0.9076 0.3995 -0.1294 +vn 0.0550 0.2948 -0.9540 +vn 0.0963 -0.2070 0.9736 +vn 0.0822 -0.6000 0.7957 +vn 0.9940 0.0221 -0.1068 +vn 0.9954 -0.0433 0.0853 +vn 0.4530 0.2801 -0.8464 +vn 0.4854 0.7468 -0.4545 +vn 0.0534 0.7747 -0.6301 +vn 0.9920 0.1239 -0.0234 +vn 0.9900 0.0999 -0.0998 +vn 0.9900 0.1007 0.0988 +vn 0.9862 -0.0041 -0.1656 +vn -0.1765 -0.9638 -0.1996 +vn 0.6818 -0.5955 -0.4249 +vn 0.3051 -0.5726 -0.7609 +vn 0.2122 -0.9513 -0.2235 +vn 0.0000 0.0901 -0.9959 +vn 0.4259 -0.8802 -0.2092 +vn 0.9999 0.0167 0.0007 +vn 1.0000 0.0019 0.0034 +vn -0.0000 0.9018 -0.4322 +vn 0.0616 0.9395 -0.3370 +vn 0.0000 0.9364 -0.3510 +vn 0.0857 0.9400 -0.3302 +vn 0.0516 0.7096 -0.7027 +vn -0.0000 0.1126 -0.9936 +vn -0.0000 0.2651 -0.9642 +vn 0.0000 0.2199 -0.9755 +vn -0.0000 0.9018 -0.4321 +vn -0.0613 0.7646 -0.6415 +vn 0.9666 0.0118 -0.2559 +vn 0.9053 -0.1764 0.3864 +vn 0.9477 -0.2262 -0.2251 +vn 0.9436 -0.3063 -0.1256 +vn 0.9389 -0.2242 0.2612 +vn 0.9776 -0.1677 0.1269 +vn 0.9978 -0.0000 0.0666 +vn 0.9257 -0.1856 -0.3295 +vn -0.8895 0.4570 0.0000 +vn -0.2763 0.9611 0.0002 +vn -0.5527 0.8333 0.0001 +vn -0.9736 0.2284 -0.0000 +vn -0.0976 -0.7838 0.6132 +vn -0.6439 -0.6219 -0.4457 +vn -0.0928 -0.7999 -0.5929 +vn -0.0690 -0.9541 -0.2914 +vn -0.4446 -0.3490 -0.8249 +vn -0.3592 0.8985 0.2523 +vn -0.1134 0.9756 -0.1878 +vn -0.0002 0.2043 -0.9789 +vn -0.0550 0.2948 -0.9540 +vn -0.6998 -0.1881 0.6892 +vn -0.9083 -0.1711 -0.3818 +vn -0.0717 -0.2461 -0.9666 +vn -0.4795 -0.1233 -0.8689 +vn -0.3927 -0.4709 -0.7900 +vn -0.3129 -0.4800 -0.8196 +vn -0.3805 -0.0664 -0.9224 +vn -0.0333 -0.3953 -0.9180 +vn 0.0238 -0.5460 -0.8375 +vn 0.0633 -0.2827 -0.9571 +vn 0.0221 0.3133 -0.9494 +vn -0.0128 -0.0140 -0.9998 +vn 0.9673 0.2232 0.1202 +vn 0.9685 -0.0991 0.2284 +vn 0.1396 0.2721 -0.9521 +vn 0.9779 -0.0642 -0.1992 +vn 0.9931 -0.0834 -0.0820 +vn 0.9335 -0.3023 -0.1926 +vn 0.9566 0.2613 0.1289 +vn 0.9313 -0.3635 0.0219 +vn 0.9128 -0.3909 0.1182 +vn 0.9786 -0.2002 0.0480 +vn 0.9312 -0.3570 0.0740 +vn 0.9038 -0.3696 0.2156 +vn 0.9684 -0.1692 0.1830 +vn 0.9809 -0.1776 0.0789 +vn 0.9987 -0.0475 -0.0201 +vn 0.9688 0.2308 0.0903 +vn 0.9495 0.2763 0.1486 +vn 0.9290 0.2500 0.2729 +vn 0.9844 0.1276 0.1212 +vn 0.9832 0.0556 0.1736 +vn 0.9956 -0.0665 0.0653 +vn 0.9625 -0.0724 0.2614 +vn 0.9851 -0.1084 0.1335 +vn 0.9833 -0.0502 0.1751 +vn 0.9846 -0.0087 0.1745 +vn 0.9942 -0.0403 -0.1002 +vn 0.9947 0.0245 -0.0996 +vn 0.5747 0.5494 0.6065 +vn 0.3706 0.2403 0.8972 +vn 0.0745 0.7122 0.6980 +vn 0.0758 0.2517 0.9648 +vn 0.6409 -0.7662 -0.0458 +vn 0.1193 -0.7677 0.6296 +vn 0.0973 -0.7840 0.6130 +vn 0.6439 -0.6219 -0.4457 +vn 0.0928 -0.7999 -0.5929 +vn 0.1134 0.9756 -0.1878 +vn 0.0654 0.9680 0.2423 +vn -0.3723 -0.3800 -0.8468 +vn -0.6432 -0.3414 -0.6854 +vn -0.4592 -0.4012 -0.7925 +vn -0.4263 -0.8678 -0.2554 +vn -0.3935 0.1531 -0.9065 +vn -0.5149 0.4477 -0.7311 +vn -0.4133 0.4461 -0.7938 +vn -0.9212 0.1912 -0.3390 +vn -0.9375 0.1183 -0.3271 +vn 0.9999 0.0135 -0.0099 +vn 0.9998 0.0213 0.0011 +vn 0.9996 0.0271 0.0029 +vn -0.9998 0.0213 0.0011 +vn -0.9996 0.0271 0.0029 +vn -0.9997 0.0252 0.0067 +vn 0.8895 0.4570 0.0000 +vn 0.9736 0.2284 0.0000 +vn 0.4196 0.9077 0.0000 +vn -0.0000 -0.9568 -0.2908 +vn -0.9999 0.0167 0.0007 +vn -0.9995 0.0314 -0.0020 +vn -0.0004 -0.2799 0.9600 +vn 0.0001 -0.5968 0.8024 +vn -0.0004 -0.5061 0.8625 +vn 0.0001 -0.7783 0.6279 +vn 0.0000 -0.8622 0.5066 +vn 0.0000 -0.9667 0.2558 +vn -0.0004 -0.2668 0.9638 +vn -0.9911 -0.0000 0.1332 +vn -0.9894 -0.1160 0.0873 +vn 0.8417 -0.2936 0.4532 +vn 0.4395 -0.3448 0.8294 +vn 0.4540 -0.0806 0.8873 +vn -1.0000 0.0006 0.0012 +vn 1.0000 0.0095 -0.0023 +vn 0.9997 0.0252 0.0067 +vn 0.0001 0.2199 -0.9755 +vn -0.0616 0.9395 -0.3370 +vn -0.4392 0.0051 0.8984 +vn -0.3221 -0.2815 0.9039 +vn -0.4149 -0.3225 0.8508 +vn -0.4184 -0.0205 0.9080 +vn 0.0147 -0.3602 0.9328 +vn -0.3221 -0.2814 0.9039 +vn -0.1337 0.9663 0.2198 +vn -0.9800 0.0000 0.1988 +vn -0.5451 0.8383 0.0000 +vn -0.2015 0.9795 0.0001 +vn -0.9362 0.3516 0.0001 +vn -0.9334 -0.3588 -0.0000 +vn -0.5359 -0.8443 -0.0000 +vn -0.0000 0.9989 0.0471 +vn 0.0000 0.9992 0.0392 +vn 0.0000 0.9931 0.1175 +vn 0.0000 0.9992 0.0393 +vn 0.1595 0.9872 0.0003 +vn 0.9363 0.3512 0.0000 +vn 0.9362 0.3516 0.0001 +vn 0.5451 0.8383 0.0001 +vn 0.9334 -0.3588 -0.0000 +vn 0.4063 -0.9137 -0.0000 +vn -0.2679 -0.9634 -0.0000 +vn 0.0000 -0.5363 0.8440 +vn -0.0005 -0.5361 0.8442 +vn 0.0000 -0.8176 -0.5758 +vn -0.9850 -0.0671 0.1589 +vn 0.4464 -0.6134 0.6515 +vn 0.0000 -0.9239 0.3827 +vn 0.0000 -0.7929 0.6094 +vn 0.4465 -0.6134 0.6515 +vn 0.0655 0.8693 0.4899 +vn 0.0479 0.9748 0.2177 +vn 0.0450 0.9407 0.3362 +vn 1.0000 -0.0001 -0.0003 +vn 1.0000 0.0004 -0.0008 +vn 1.0000 -0.0007 -0.0006 +vn 0.9756 -0.0842 0.2027 +vn 1.0000 0.0004 -0.0001 +vn 0.4540 -0.0805 0.8873 +vn 0.0000 -0.1298 0.9915 +vn 0.0112 -0.9503 0.3111 +vn 1.0000 0.0002 -0.0001 +vn 1.0000 -0.0007 -0.0000 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 0.6037 0.7972 +vn 0.0000 0.7972 0.6037 +vn 0.0000 0.7071 -0.7071 +vn 0.4240 0.3427 -0.8383 +vn -0.9999 0.0135 -0.0099 +vn 0.4193 0.9079 0.0001 +vn -1.0000 0.0095 -0.0023 +vn 0.0001 -0.7972 -0.6037 +vn 0.0000 -0.6037 -0.7972 +vn -0.1722 0.3928 -0.9033 +vn 0.0000 -0.9929 -0.1193 +vn 0.9911 0.0000 0.1332 +vn 0.0000 -0.9478 0.3188 +vn 0.0000 -0.4448 0.8956 +vn -0.0000 -0.8814 -0.4724 +vn -0.9418 0.2820 0.1830 +vn -0.7726 0.5655 0.2886 +vn 0.0646 -0.2831 0.9569 +vn 0.0405 -0.5936 0.8037 +vn 0.5073 -0.3627 0.7818 +vn 0.5247 -0.1884 0.8302 +vn 0.4877 -0.5255 0.6971 +vn 0.3422 0.8174 0.4635 +vn 0.1337 0.9663 0.2198 +vn 0.5018 0.4301 0.7505 +vn 0.5344 0.1812 0.8256 +vn 1.0000 -0.0000 0.0037 +vn 1.0000 0.0000 0.0075 +vn 0.0674 0.0000 0.9977 +vn 0.9894 -0.1160 0.0873 +vn 0.9344 -0.2629 0.2404 +vn -0.9978 -0.0354 0.0555 +vn 0.9575 -0.1436 0.2500 +vn 0.9800 0.0000 0.1988 +vn 0.0000 -0.2272 0.9739 +vn 0.0002 0.6059 0.7955 +vn 0.0000 0.8184 0.5746 +vn -0.0002 0.3029 0.9530 +vn 0.0000 0.6605 0.7508 +vn 0.0000 -0.3632 0.9317 +vn 0.0000 -0.9906 0.1367 +vn 0.4395 -0.3449 0.8294 +vn 0.3228 -0.2420 0.9150 +vn 0.9719 -0.0333 0.2329 +vn 0.9603 0.0267 0.2778 +vn 0.4392 0.0417 0.8974 +vn 0.4198 -0.1075 0.9012 +vn -0.0197 -0.3607 0.9325 +vn -0.0257 -0.3607 0.9323 +vn 0.5470 -0.3017 0.7809 +vn 0.9801 -0.1117 0.1641 +vn 0.8724 -0.1036 0.4777 +vn -0.4184 -0.0204 0.9080 +vn 0.0385 -0.3613 0.9316 +vn 0.5470 -0.3018 0.7808 +vn 0.4198 -0.1076 0.9012 +vn 1.0000 0.0009 -0.0015 +vn 1.0000 0.0001 -0.0016 +vn 1.0000 0.0006 0.0012 +vn 0.0000 -0.4993 0.8664 +vn 0.0000 -0.2667 0.9638 +vn -0.0000 0.0459 0.9989 +vn 0.0000 -0.0351 0.9994 +vn 0.0006 -0.3409 0.9401 +vn 0.0003 -0.5061 0.8625 +vn 0.0003 -0.3136 0.9496 +vn -0.0000 -0.7783 0.6279 +vn -0.0001 -0.5968 0.8024 +vn 0.0000 0.9970 -0.0770 +vn 0.0000 0.8727 -0.4883 +vn -0.0001 0.9526 -0.3041 +vn -0.0000 0.5657 -0.8246 +vn 0.0000 0.6710 -0.7415 +vn 0.0000 0.9914 0.1311 +vn -0.0000 0.9993 -0.0385 +vn 0.0000 0.1546 -0.9880 +vn 0.0000 0.3091 -0.9510 +vn -0.0000 0.8635 0.5044 +vn -0.0000 0.9650 0.2623 +vn 0.0000 -0.1761 -0.9844 +vn 0.0000 -0.0880 -0.9961 +vn -0.0000 0.6016 0.7988 +vn 0.0000 0.7882 0.6154 +vn -0.0000 -0.5913 -0.8065 +vn 0.0000 -0.4311 -0.9023 +vn 0.0000 0.2927 0.9562 +vn -0.0000 0.4905 0.8714 +vn 0.0000 -0.8104 -0.5859 +vn 0.0000 0.2098 0.9777 +vn -0.0002 -0.2799 0.9600 +vn 0.9212 0.1912 -0.3390 +vn 0.9375 0.1183 -0.3271 +vn 0.9363 0.1191 -0.3303 +vn 0.5457 0.2840 -0.7884 +vn 0.4129 0.3969 -0.8198 +vn 0.3689 0.4766 -0.7979 +vn 0.9473 0.1523 -0.2819 +vn 0.5471 0.1521 -0.8231 +vn 0.4428 -0.7141 -0.5422 +vn 0.4578 -0.2885 -0.8409 +vn 0.6432 -0.3414 -0.6854 +vn 0.2347 -0.0372 -0.9713 +vn 0.3723 -0.3800 -0.8468 +vn 0.3937 -0.6141 -0.6841 +vn 0.3430 0.0002 -0.9393 +vn 0.3691 -0.8001 -0.4728 +vn 0.3715 0.2637 -0.8902 +vn 0.4024 0.2750 -0.8731 +vn 0.3595 0.1300 -0.9240 +vn 0.3758 -0.8080 -0.4538 +vn 0.3743 -0.7997 -0.4695 +vn 0.9910 0.0440 -0.1265 +vn 0.9212 0.1912 -0.3389 +vn 0.9376 0.1183 -0.3271 +vn 0.9999 -0.0132 -0.0001 +vn -0.5587 0.3131 -0.7680 +vn -0.1722 0.3928 -0.9034 +vn -0.9404 0.1281 -0.3149 +vn -0.9295 -0.1383 0.3419 +vn -0.9268 -0.1407 0.3483 +vn -0.3897 -0.3446 0.8541 +vn -0.3829 -0.3454 0.8568 +vn -0.9268 -0.1406 0.3483 +vn 0.2529 -0.3618 0.8973 +vn 0.1722 0.4024 -0.8991 +vn -0.0000 -0.6037 0.7972 +vn -0.4024 0.2750 -0.8731 +vn 0.9995 0.0314 -0.0020 +vn -0.1193 -0.7677 0.6296 +vn -0.0654 0.9680 0.2423 +vn 0.0690 -0.9541 -0.2914 +vn -1.0000 0.0019 0.0034 +vn -0.9363 0.3512 0.0000 +vn 0.0373 0.8327 0.5525 +vn 0.0000 0.1951 0.9808 +vn 0.0000 -0.9574 0.2887 +vn 0.0000 0.3827 0.9239 +vn 0.4482 -0.5058 0.7370 +vn 0.0004 -0.3409 0.9401 +vn -0.9304 0.1374 -0.3398 +s 1 +f 1472/1483/549 1473/1484/549 1474/1485/549 +f 1475/1486/550 1476/1487/549 1477/1488/549 +f 1478/1489/551 1479/1490/551 1480/1491/552 +f 1481/1492/553 1482/1493/553 1483/1494/553 +f 1484/1495/554 1485/1496/554 1486/1497/554 +f 1487/1498/555 1488/1499/556 1489/1500/557 +f 1490/1501/558 1491/1502/551 1478/1489/551 +f 1490/1501/558 1480/1491/552 1492/1503/559 +f 1493/1504/560 1494/1505/560 1495/1506/560 +f 1496/1507/561 1497/1508/561 1498/1509/562 +f 1499/1510/554 1500/1511/554 1501/1512/554 +f 1502/1513/563 1503/1514/563 1504/1515/563 +f 1490/1501/558 1478/1489/551 1480/1491/552 +f 1505/1516/564 1506/1517/564 1507/1518/564 +f 1508/1519/565 1509/1520/565 1510/1521/565 +f 1511/1522/554 1512/1523/554 1513/1524/554 +f 1514/1525/566 1515/1526/567 1516/1527/568 +f 1517/1528/564 1518/1529/564 1519/1530/564 +f 1520/1531/564 1521/1532/564 1522/1533/564 +f 1522/1533/564 1523/1534/564 1524/1535/564 +f 1525/1536/569 1526/1537/570 1527/1538/570 +f 1528/1539/571 1529/1540/570 1525/1536/569 +f 1517/1528/564 1519/1530/564 1530/1541/564 +f 1531/1542/572 1532/1543/572 1533/1544/572 +f 1534/1545/554 1535/1546/554 1536/1547/554 +f 1534/1545/554 1536/1547/554 1537/1548/554 +f 1538/1549/564 1522/1533/564 1524/1535/564 +f 1521/1532/564 1523/1534/564 1522/1533/564 +f 1523/1534/564 1539/1550/564 1524/1535/564 +f 1526/1537/570 1540/1551/570 1527/1538/570 +f 1529/1540/570 1526/1537/570 1525/1536/569 +f 1519/1530/564 1541/1552/564 1530/1541/564 +f 1542/1553/572 1543/1554/572 1532/1543/572 +f 1532/1543/572 1543/1554/572 1533/1544/572 +f 1535/1546/554 1544/1555/554 1536/1547/554 +f 1536/1547/554 1545/1556/554 1537/1548/554 +f 1546/1557/573 1547/1558/574 1548/1559/575 +f 1549/1560/576 1550/1561/576 1528/1539/571 +f 1549/1560/576 1551/1562/577 1552/1563/578 +f 1551/1562/577 1553/1564/579 1554/1565/580 +f 1553/1564/579 1548/1559/575 1547/1558/574 +f 1555/1566/581 1548/1559/575 1475/1486/550 +f 1556/1567/570 1527/1538/570 1540/1551/570 +f 1557/1568/582 1558/1569/582 1559/1570/582 +f 1560/1571/582 1561/1572/582 1562/1573/582 +f 1563/1574/570 1564/1575/570 1565/1576/570 +f 1566/1577/554 1567/1578/554 1568/1579/554 +f 1569/1580/554 1570/1581/554 1571/1582/554 +f 1572/1583/582 1573/1584/582 1574/1585/582 +f 1520/1531/564 1575/1586/564 1521/1532/564 +f 1540/1551/570 1526/1537/570 1576/1587/570 +f 1518/1529/564 1577/1588/564 1519/1530/564 +f 1531/1542/572 1578/1589/572 1532/1543/572 +f 1534/1545/554 1579/1590/554 1535/1546/554 +f 1580/1591/583 1581/1592/584 1582/1593/585 +f 1583/1594/586 1584/1595/587 1585/1596/588 +f 1586/1597/564 1587/1598/564 1588/1599/589 +f 1589/1600/564 1590/1601/564 1591/1602/564 +f 1592/1603/590 1585/1596/588 1584/1595/587 +f 1593/1604/572 1594/1605/572 1595/1606/572 +f 1596/1607/572 1597/1608/572 1598/1609/572 +f 1599/1610/572 1600/1611/572 1601/1612/572 +f 1602/1613/591 1603/1614/592 1604/1615/593 +f 1605/1616/582 1606/1617/582 1607/1618/582 +f 1581/1592/584 1608/1619/594 1609/1620/595 +f 1600/1621/572 1610/1622/572 1611/1623/572 +f 1603/1614/592 1612/1624/596 1613/1625/597 +f 1606/1617/582 1614/1626/582 1615/1627/582 +f 1608/1619/594 1616/1628/598 1617/1629/599 +f 1610/1630/572 1618/1631/572 1619/1632/572 +f 1612/1624/596 1620/1633/600 1621/1634/601 +f 1614/1626/582 1622/1635/582 1623/1636/582 +f 1616/1628/598 1624/1637/602 1625/1638/603 +f 1618/1631/572 1626/1639/572 1627/1640/572 +f 1620/1641/600 1628/1642/604 1629/1643/605 +f 1622/1635/582 1630/1644/582 1631/1645/582 +f 1632/1646/606 1633/1647/607 1634/1648/608 +f 1626/1639/572 1635/1649/572 1636/1650/572 +f 1637/1651/609 1638/1652/610 1639/1653/611 +f 1630/1644/582 1640/1654/582 1641/1655/582 +f 1633/1656/607 1642/1657/612 1643/1658/613 +f 1635/1649/572 1644/1659/572 1645/1660/572 +f 1638/1652/610 1646/1661/614 1647/1662/615 +f 1640/1654/582 1648/1663/582 1649/1664/582 +f 1642/1657/612 1650/1665/616 1651/1666/617 +f 1644/1659/572 1652/1667/572 1653/1668/572 +f 1646/1661/614 1654/1669/618 1655/1670/619 +f 1648/1663/582 1656/1671/582 1657/1672/582 +f 1650/1673/616 1658/1674/591 1659/1675/620 +f 1652/1667/572 1660/1676/572 1661/1677/572 +f 1654/1669/618 1662/1678/583 1663/1679/621 +f 1656/1671/582 1664/1680/582 1665/1681/582 +f 1658/1674/591 1666/1682/622 1667/1683/593 +f 1660/1676/572 1668/1684/572 1669/1685/572 +f 1662/1678/583 1670/1686/584 1671/1687/585 +f 1664/1680/582 1672/1688/582 1673/1689/582 +f 1666/1682/622 1674/1690/596 1675/1691/597 +f 1668/1684/572 1676/1692/572 1677/1693/572 +f 1670/1686/584 1678/1694/594 1679/1695/595 +f 1672/1688/582 1680/1696/582 1681/1697/582 +f 1674/1690/596 1682/1698/600 1683/1699/601 +f 1676/1692/572 1684/1700/572 1685/1701/572 +f 1678/1694/594 1686/1702/623 1687/1703/624 +f 1680/1696/582 1688/1704/582 1689/1705/582 +f 1682/1698/600 1690/1706/604 1691/1707/625 +f 1684/1700/572 1692/1708/572 1693/1709/572 +f 1686/1702/623 1694/1710/602 1695/1711/626 +f 1688/1704/582 1696/1712/582 1697/1713/582 +f 1690/1706/604 1698/1714/627 1699/1715/628 +f 1692/1708/572 1700/1716/572 1701/1717/572 +f 1694/1718/602 1702/1719/607 1703/1720/608 +f 1696/1712/582 1704/1721/582 1705/1722/582 +f 1698/1714/627 1706/1723/614 1707/1724/615 +f 1700/1716/572 1708/1725/572 1709/1726/572 +f 1702/1719/607 1710/1727/612 1711/1728/613 +f 1704/1721/582 1712/1729/582 1713/1730/582 +f 1706/1723/614 1714/1731/618 1715/1732/619 +f 1708/1725/572 1716/1733/572 1717/1734/572 +f 1710/1727/612 1718/1735/616 1719/1736/629 +f 1712/1729/582 1720/1737/582 1721/1738/582 +f 1714/1731/618 1580/1591/583 1722/1739/621 +f 1716/1733/572 1599/1610/572 1723/1740/572 +f 1718/1735/616 1602/1613/591 1724/1741/620 +f 1720/1737/582 1605/1616/582 1725/1742/582 +f 1726/1743/554 1727/1744/554 1728/1745/554 +f 1727/1744/554 1729/1746/554 1730/1747/554 +f 1729/1746/554 1731/1748/554 1732/1749/554 +f 1731/1748/554 1733/1750/554 1734/1751/554 +f 1733/1750/554 1735/1752/554 1736/1753/554 +f 1735/1752/554 1737/1754/554 1738/1755/554 +f 1737/1754/554 1739/1756/554 1740/1757/554 +f 1739/1756/554 1741/1758/554 1742/1759/554 +f 1741/1758/554 1743/1760/554 1744/1761/554 +f 1743/1760/554 1745/1762/554 1746/1763/554 +f 1745/1762/554 1747/1764/554 1748/1765/554 +f 1747/1764/554 1726/1743/554 1749/1766/554 +f 1750/1767/630 1751/1768/631 1752/1769/632 +f 1753/1770/633 1754/1771/634 1755/1772/635 +f 1756/1773/554 1757/1774/554 1758/1775/554 +f 1759/1776/636 1750/1767/630 1760/1777/637 +f 1754/1771/634 1761/1778/638 1762/1779/639 +f 1757/1774/554 1763/1780/554 1758/1775/554 +f 1764/1781/640 1759/1776/636 1765/1782/641 +f 1761/1778/638 1766/1783/642 1767/1784/643 +f 1763/1780/554 1768/1785/554 1758/1775/554 +f 1769/1786/644 1770/1787/645 1771/1788/646 +f 1766/1783/642 1772/1789/647 1773/1790/648 +f 1768/1785/554 1774/1791/554 1758/1775/554 +f 1775/1792/649 1769/1786/644 1776/1793/650 +f 1772/1789/647 1777/1794/651 1778/1795/652 +f 1774/1791/554 1779/1796/554 1758/1775/554 +f 1780/1797/653 1775/1792/649 1781/1798/654 +f 1777/1794/651 1782/1799/655 1783/1800/656 +f 1779/1796/554 1784/1801/554 1758/1775/554 +f 1785/1802/651 1780/1797/653 1786/1803/657 +f 1782/1799/655 1787/1804/658 1788/1805/654 +f 1784/1801/554 1789/1806/554 1758/1775/554 +f 1790/1807/659 1785/1802/651 1791/1808/660 +f 1787/1804/658 1792/1809/644 1793/1810/661 +f 1789/1806/554 1794/1811/554 1758/1775/554 +f 1795/1812/662 1790/1807/659 1796/1813/648 +f 1792/1809/644 1797/1814/645 1798/1815/663 +f 1794/1811/554 1799/1816/554 1758/1775/554 +f 1800/1817/638 1795/1812/662 1801/1818/664 +f 1802/1819/640 1803/1820/665 1804/1821/641 +f 1799/1816/554 1805/1822/554 1758/1775/554 +f 1806/1823/666 1800/1817/638 1807/1824/667 +f 1803/1820/665 1808/1825/630 1809/1826/668 +f 1805/1822/554 1810/1827/554 1758/1775/554 +f 1751/1768/631 1806/1823/666 1811/1828/635 +f 1808/1825/630 1753/1770/633 1812/1829/669 +f 1810/1827/554 1756/1773/554 1758/1775/554 +f 1813/1830/670 1814/1831/671 1815/1832/672 +f 1816/1833/673 1817/1834/674 1818/1835/675 +f 1819/1836/676 1820/1837/677 1821/1838/678 +f 1822/1839/679 1823/1840/680 1824/1841/681 +f 1825/1842/682 1818/1835/675 1826/1843/683 +f 1827/1844/684 1818/1835/675 1825/1842/682 +f 1828/1845/685 1829/1846/686 1830/1847/687 +f 1831/1848/688 1832/1849/689 1828/1845/685 +f 1819/1836/676 1833/1850/690 1828/1845/685 +f 1834/1851/691 1835/1852/692 1815/1832/672 +f 1835/1852/692 1834/1851/691 1836/1853/693 +f 1835/1852/692 1837/1854/694 1838/1855/695 +f 1839/1856/696 1840/1857/697 1830/1847/687 +f 1841/1858/698 1839/1856/696 1842/1859/699 +f 1822/1839/679 1843/1860/700 1823/1840/680 +f 1844/1861/701 1845/1862/702 1826/1843/683 +f 1846/1863/703 1845/1862/702 1844/1861/701 +f 1847/1864/704 1845/1862/702 1848/1865/705 +f 1849/1866/706 1850/1867/707 1851/1868/708 +f 1852/1869/709 1851/1868/708 1850/1867/707 +f 1825/1842/682 1826/1843/683 1853/1870/710 +f 1854/1871/711 1824/1841/681 1855/1872/712 +f 1856/1873/713 1827/1844/684 1854/1871/711 +f 1822/1839/679 1824/1841/681 1857/1874/714 +f 1843/1860/700 1822/1839/679 1857/1874/714 +f 1857/1874/714 1824/1841/681 1854/1871/711 +f 1858/1875/715 1859/1876/716 1860/1877/717 +f 1845/1862/702 1853/1870/710 1826/1843/683 +f 1854/1871/711 1853/1870/710 1861/1878/718 +f 1862/1879/719 1863/1880/720 1847/1864/704 +f 1863/1880/720 1861/1878/718 1845/1862/702 +f 1857/1874/714 1863/1880/720 1862/1879/719 +f 1861/1878/718 1863/1880/720 1857/1874/714 +f 1860/1877/717 1862/1879/719 1858/1875/715 +f 1849/1866/706 1864/1881/721 1862/1879/719 +f 1865/1882/722 1848/1865/705 1846/1863/703 +f 1866/1883/723 1865/1882/722 1867/1884/724 +f 1868/1885/725 1814/1831/671 1813/1830/670 +f 1869/1886/726 1868/1885/725 1870/1887/727 +f 1840/1857/697 1820/1837/677 1819/1836/676 +f 1871/1888/728 1872/1889/729 1873/1890/730 +f 1848/1865/705 1845/1862/702 1846/1863/703 +f 1861/1878/718 1853/1870/710 1845/1862/702 +f 1827/1844/684 1825/1842/682 1853/1870/710 +f 1853/1870/710 1854/1871/711 1827/1844/684 +f 1856/1873/713 1854/1871/711 1855/1872/712 +f 1843/1860/700 1860/1877/717 1859/1876/716 +f 1864/1881/721 1858/1875/715 1862/1879/719 +f 1850/1867/707 1849/1866/706 1862/1879/719 +f 1873/1890/730 1823/1840/680 1841/1858/698 +f 1843/1860/700 1859/1876/716 1823/1840/680 +f 1823/1840/680 1859/1876/716 1840/1857/697 +f 1864/1881/721 1820/1837/677 1858/1875/715 +f 1849/1866/706 1820/1837/677 1864/1881/721 +f 1849/1866/706 1851/1868/708 1820/1837/677 +f 1851/1868/708 1852/1869/709 1874/1891/731 +f 1848/1865/705 1865/1882/722 1852/1869/709 +f 1852/1869/709 1866/1883/723 1869/1886/726 +f 1875/1892/732 1868/1885/725 1876/1893/733 +f 1814/1831/671 1868/1885/725 1875/1892/732 +f 1840/1857/697 1839/1856/696 1841/1858/698 +f 1823/1840/680 1840/1857/697 1841/1858/698 +f 1859/1876/716 1858/1875/715 1840/1857/697 +f 1820/1837/677 1840/1857/697 1858/1875/715 +f 1851/1868/708 1874/1891/731 1820/1837/677 +f 1852/1869/709 1869/1886/726 1874/1891/731 +f 1865/1882/722 1866/1883/723 1852/1869/709 +f 1866/1883/723 1876/1893/733 1869/1886/726 +f 1868/1885/725 1869/1886/726 1876/1893/733 +f 1877/1894/734 1878/1895/735 1867/1884/724 +f 1879/1896/736 1877/1894/734 1880/1897/737 +f 1881/1898/738 1882/1899/739 1880/1897/737 +f 1883/1900/740 1816/1833/673 1884/1901/741 +f 1885/1902/564 1886/1903/564 1887/1904/564 +f 1888/1905/652 1889/1906/648 1890/1907/742 +f 1891/1908/656 1888/1905/652 1892/1909/651 +f 1889/1906/648 1893/1910/643 1894/1911/642 +f 1895/1912/654 1891/1908/656 1896/1913/655 +f 1897/1914/743 1895/1912/654 1898/1915/744 +f 1893/1910/643 1899/1916/745 1900/1917/638 +f 1901/1918/746 1897/1914/743 1902/1919/644 +f 1903/1920/641 1901/1918/746 1904/1921/645 +f 1899/1916/745 1905/1922/635 1906/1923/634 +f 1907/1924/668 1903/1920/641 1908/1925/665 +f 1909/1926/669 1907/1924/668 1910/1927/630 +f 1905/1922/635 1909/1926/669 1911/1928/633 +f 1912/1929/564 1913/1930/564 1914/1931/564 +f 1915/1932/564 1912/1929/564 1916/1933/564 +f 1913/1930/564 1917/1934/564 1918/1935/564 +f 1919/1936/564 1915/1932/564 1920/1937/564 +f 1921/1938/564 1919/1936/564 1922/1939/564 +f 1917/1934/564 1923/1940/564 1924/1941/564 +f 1885/1942/564 1921/1938/564 1925/1943/564 +f 1926/1944/564 1885/1942/564 1927/1945/564 +f 1923/1940/564 1928/1946/564 1929/1947/564 +f 1930/1948/564 1926/1944/564 1931/1949/564 +f 1932/1950/564 1930/1948/564 1933/1951/564 +f 1928/1946/564 1932/1950/564 1934/1952/564 +f 1935/1953/564 1936/1954/564 1937/1955/564 +f 1938/1956/647 1939/1957/651 1940/1958/652 +f 1941/1959/642 1938/1956/647 1942/1960/648 +f 1937/1955/564 1936/1954/564 1943/1961/564 +f 1939/1957/651 1944/1962/655 1945/1963/656 +f 1946/1964/564 1936/1954/564 1935/1953/564 +f 1943/1961/564 1936/1954/564 1947/1965/564 +f 1944/1962/655 1948/1966/658 1949/1967/654 +f 1950/1968/638 1941/1959/642 1951/1969/643 +f 1947/1965/564 1936/1954/564 1952/1970/564 +f 1948/1966/658 1953/1971/747 1954/1972/747 +f 1955/1973/564 1936/1954/564 1946/1964/564 +f 1952/1970/564 1936/1954/564 1956/1974/564 +f 1957/1975/748 1958/1976/748 1959/1977/749 +f 1960/1978/634 1950/1968/638 1961/1979/639 +f 1956/1974/564 1936/1954/564 1962/1980/564 +f 1963/1981/750 1964/1982/751 1965/1983/751 +f 1966/1984/564 1936/1954/564 1955/1973/564 +f 1962/1980/564 1936/1954/564 1967/1985/564 +f 1957/1975/748 1968/1986/630 1969/1987/668 +f 1970/1988/633 1960/1978/634 1971/1989/635 +f 1967/1985/564 1936/1954/564 1972/1990/564 +f 1968/1986/630 1970/1988/633 1973/1991/669 +f 1972/1990/564 1936/1954/564 1966/1984/564 +f 1974/1992/752 1959/1977/749 1965/1983/751 +f 1885/1902/564 1926/1993/564 1886/1903/564 +f 1954/1972/747 1953/1971/747 1975/1994/753 +f 1976/1995/754 1977/1996/755 1963/1981/750 +f 1887/1997/564 1886/1998/564 1978/1999/564 +f 1887/1904/564 1921/2000/564 1885/1902/564 +f 1979/2001/564 1980/2002/564 1981/2003/564 +f 1982/2004/756 1983/2005/757 1984/2006/758 +f 1985/2007/554 1986/2008/554 1987/2009/554 +f 1981/2003/564 1980/2002/564 1988/2010/564 +f 1983/2005/757 1989/2011/759 1990/2012/760 +f 1986/2008/554 1991/2013/554 1987/2009/554 +f 1988/2010/564 1980/2002/564 1992/2014/564 +f 1989/2011/759 1993/2015/761 1994/2016/762 +f 1991/2013/554 1995/2017/554 1987/2009/554 +f 1992/2014/564 1980/2002/564 1996/2018/564 +f 1997/2019/763 1998/2020/764 1999/2021/765 +f 1995/2017/554 2000/2022/554 1987/2009/554 +f 1996/2018/564 1980/2002/564 2001/2023/564 +f 1998/2020/764 2002/2024/766 2003/2025/767 +f 2000/2022/554 2004/2026/554 1987/2009/554 +f 2001/2023/564 1980/2002/564 2005/2027/564 +f 2002/2024/766 2006/2028/768 2007/2029/769 +f 2008/2030/564 2009/2031/770 2010/2032/770 +f 2004/2026/554 2011/2033/554 1987/2009/554 +f 2005/2027/564 1980/2002/564 2012/2034/564 +f 2010/2032/770 2009/2031/770 2013/2035/771 +f 2006/2028/768 2014/2036/772 2015/2037/773 +f 2011/2033/554 2016/2038/554 1987/2009/554 +f 2017/2039/774 2018/2040/775 2019/2041/776 +f 2020/2042/777 2017/2039/774 2021/2043/778 +f 2012/2034/564 1980/2002/564 1979/2001/564 +f 2014/2036/772 1982/2004/756 2022/2044/779 +f 2016/2038/554 1985/2007/554 1987/2009/554 +f 2023/2045/780 2024/2046/781 2025/2047/782 +f 2026/2048/783 2027/2049/784 2023/2045/780 +f 2028/2050/785 2029/2051/786 2030/2052/564 +f 2031/2053/787 2032/2054/788 2033/2055/554 +f 2034/2056/789 2035/2057/790 2036/2058/791 +f 2018/2040/775 2037/2059/792 2038/2060/793 +f 2039/2061/794 2040/2062/795 2041/2063/796 +f 2031/2053/787 2042/2064/797 2032/2054/788 +f 2043/2065/549 2044/2066/549 2045/2067/549 +f 2046/2068/564 2047/2069/564 2048/2070/564 +f 1586/1597/564 2049/2071/564 2050/2072/564 +f 2051/2073/798 2052/2074/799 2053/2075/800 +f 2041/2063/796 2040/2062/795 2054/2076/801 +f 2055/2077/802 2056/2078/803 2057/2079/564 +f 2058/2080/549 2059/2081/549 2060/2082/549 +f 2061/2083/549 2060/2082/549 2059/2081/549 +f 2062/2084/554 2063/2085/554 2064/2086/554 +f 2065/2087/804 2066/2088/805 2053/2075/800 +f 2067/2089/806 2068/2090/549 2069/2091/807 +f 2030/2052/564 2029/2051/786 2070/2092/564 +f 2071/2093/570 2072/2094/570 2073/2095/570 +f 2056/2078/803 2074/2096/564 2057/2079/564 +f 2075/2097/570 2076/2098/570 2077/2099/570 +f 2073/2095/570 2072/2094/570 2075/2100/570 +f 2078/2101/572 2079/2102/572 2080/2103/572 +f 2079/2102/572 2081/2104/572 2082/2105/572 +f 2083/2106/572 2084/2107/572 2082/2105/572 +f 2085/2108/570 2086/2109/570 2087/2110/570 +f 2088/2111/808 2089/2112/809 2090/2113/809 +f 2091/2114/810 2028/2050/785 2092/2115/811 +f 2039/2061/794 2093/2116/785 2094/2117/812 +f 2095/2118/787 2034/2056/789 2096/2119/813 +f 2097/2120/814 2098/2121/815 2099/2122/816 +f 2099/2122/816 2098/2121/815 2100/2123/817 +f 2099/2122/816 2100/2123/817 2101/2124/818 +f 2099/2122/816 2101/2124/818 2102/2125/586 +f 2103/2126/819 2104/2127/820 2105/2128/589 +f 2106/2129/821 2107/2130/822 2108/2131/816 +f 2109/2132/823 2110/2133/824 2111/2134/825 +f 2112/2135/826 2104/2127/820 2113/2136/827 +f 2114/2137/564 2115/2138/564 2113/2136/827 +f 2115/2138/564 2116/2139/564 2113/2136/827 +f 2117/2140/564 2113/2136/827 2116/2139/564 +f 2104/2127/820 2114/2137/564 2113/2136/827 +f 2114/2137/564 2104/2127/820 2103/2126/819 +f 2118/2141/828 2119/2142/829 2120/2143/830 +f 2121/2144/554 2122/2145/554 2123/2146/831 +f 2124/2147/564 2125/2148/564 2126/2149/832 +f 2127/2150/554 2128/2151/554 2129/2152/554 +f 2127/2150/554 2130/2153/833 2131/2154/554 +f 2121/2144/554 2123/2146/831 2132/2155/554 +f 2132/2155/554 2133/2156/554 2134/2157/554 +f 2134/2157/554 2135/2158/554 2136/2159/554 +f 2137/2160/564 2138/2161/564 2139/2162/834 +f 2140/2163/564 2141/2164/564 2142/2165/564 +f 2143/2166/564 2140/2163/564 2144/2167/564 +f 2125/2148/564 2143/2166/564 2145/2168/564 +f 2124/2147/564 2126/2149/832 2146/2169/564 +f 2122/2145/554 2147/2170/554 2130/2153/833 +f 2131/2154/554 2128/2151/554 2127/2150/554 +f 2128/2151/554 2136/2159/554 2129/2152/554 +f 2130/2153/833 2147/2170/554 2131/2154/554 +f 2123/2146/831 2133/2156/554 2132/2155/554 +f 2133/2156/554 2135/2158/554 2134/2157/554 +f 2135/2158/554 2129/2152/554 2136/2159/554 +f 2148/2171/564 2146/2169/564 2139/2162/834 +f 2141/2164/564 2138/2161/564 2137/2160/564 +f 2138/2161/564 2148/2171/564 2139/2162/834 +f 2141/2164/564 2137/2160/564 2142/2165/564 +f 2140/2163/564 2142/2165/564 2144/2167/564 +f 2143/2166/564 2144/2167/564 2145/2168/564 +f 2126/2149/832 2139/2162/834 2146/2169/564 +f 2149/2172/570 2086/2109/570 2085/2108/570 +f 2150/2173/835 2151/2174/836 2152/2175/837 +f 2153/2176/564 2154/2177/838 2151/2174/836 +f 2155/2178/564 2153/2176/564 2156/2179/839 +f 2157/2180/840 2155/2178/564 2158/2181/841 +f 2112/2135/826 2158/2181/841 2156/2179/839 +f 2159/2182/842 2118/2141/828 2160/2183/843 +f 2161/2184/570 2075/2100/570 2077/2185/570 +f 2162/2186/844 2163/2187/845 2024/2046/781 +f 2164/2188/846 2113/2136/827 2117/2140/564 +f 2165/2189/847 2164/2188/846 2117/2140/564 +f 2030/2052/564 2092/2115/811 2028/2050/785 +f 2166/2190/564 2167/2191/564 2168/2192/564 +f 2169/2193/847 2170/2194/848 2171/2195/849 +f 2027/2049/784 2172/2196/850 2173/2197/851 +f 2070/2092/564 2174/2198/848 2117/2140/564 +f 2074/2096/564 2117/2140/564 1585/1596/588 +f 2175/2199/570 2085/2200/570 2176/2201/570 +f 2177/2202/582 2178/2203/582 2179/2204/852 +f 2180/2205/853 2181/2206/854 2182/2207/855 +f 2183/2208/856 2184/2209/857 2185/2210/858 +f 2186/2211/859 2187/2212/860 2188/2213/861 +f 2189/2214/862 2185/2210/858 2184/2209/857 +f 2190/2215/863 2191/2216/864 2192/2217/865 +f 2192/2217/865 2193/2218/866 2194/2219/867 +f 2195/2220/868 2196/2221/869 2197/2222/870 +f 2198/2223/871 2199/2224/872 2196/2221/869 +f 2200/2225/873 2199/2224/872 2198/2223/871 +f 2195/2220/868 2198/2223/871 2196/2221/869 +f 2201/2226/874 2202/2227/875 2203/2228/876 +f 2204/2229/877 2205/2230/878 2201/2226/874 +f 2206/2231/879 2207/2232/880 2208/2233/881 +f 2209/2234/882 2206/2231/879 2210/2235/883 +f 2211/2236/884 2209/2234/882 2212/2237/885 +f 2213/2238/886 2211/2236/884 2214/2239/887 +f 2215/2240/888 2213/2238/886 2216/2241/889 +f 2217/2242/890 2218/2243/891 2219/2244/892 +f 2220/2245/893 2212/2237/885 2210/2235/883 +f 2221/2246/894 2214/2239/887 2212/2237/885 +f 2222/2247/895 2216/2241/889 2214/2239/887 +f 2223/2248/896 2224/2249/897 2216/2241/889 +f 2225/2250/898 2210/2235/883 2226/2251/899 +f 2227/2252/900 2228/2253/901 2209/2234/882 +f 2229/2254/902 2230/2255/903 2231/2256/904 +f 2194/2219/867 2190/2215/863 2192/2217/865 +f 2231/2256/904 2200/2225/873 2198/2223/871 +f 2232/2257/905 2201/2226/874 2203/2228/876 +f 2232/2257/905 2204/2229/877 2201/2226/874 +f 2212/2237/885 2209/2234/882 2210/2235/883 +f 2214/2239/887 2211/2236/884 2212/2237/885 +f 2216/2241/889 2213/2238/886 2214/2239/887 +f 2224/2249/897 2215/2240/888 2216/2241/889 +f 2233/2258/906 2217/2242/890 2219/2244/892 +f 2225/2250/898 2220/2245/893 2210/2235/883 +f 2220/2245/893 2221/2246/894 2212/2237/885 +f 2221/2246/894 2222/2247/895 2214/2239/887 +f 2222/2247/895 2223/2248/896 2216/2241/889 +f 2234/2259/907 2225/2250/898 2226/2251/899 +f 2235/2260/908 2236/2261/909 2195/2220/868 +f 2228/2253/901 2237/2262/910 2206/2231/879 +f 2231/2256/904 2238/2263/911 2200/2225/873 +f 2192/2217/865 2195/2220/868 2193/2218/866 +f 2201/2226/874 2205/2230/878 2239/2264/912 +f 2224/2249/897 2240/2265/913 2215/2240/888 +f 2223/2248/896 2241/2266/914 2224/2249/897 +f 2242/2267/915 2233/2258/906 2219/2244/892 +f 2243/2268/916 2215/2240/888 2233/2258/906 +f 2244/2269/917 2242/2267/915 2219/2244/892 +f 2242/2267/915 2243/2268/916 2233/2258/906 +f 2243/2268/916 2245/2270/918 2215/2240/888 +f 2054/2076/801 2118/2141/828 2246/2271/919 +f 2247/2272/570 2248/2273/570 2076/2098/570 +f 2036/2058/791 2249/2274/920 2096/2119/813 +f 2250/2275/921 2249/2274/920 2251/2276/922 +f 2252/2277/923 2253/2278/845 2025/2047/782 +f 2254/2279/924 2036/2058/791 2035/2057/790 +f 2255/2280/554 2256/2281/554 2257/2282/554 +f 2258/2283/570 2259/2284/570 2260/2285/570 +f 2261/2286/554 2262/2287/554 2263/2288/554 +f 2264/2289/925 2265/2290/926 2266/2291/925 +f 2267/2292/549 2268/2293/549 2269/2294/549 +f 2270/2295/927 2271/2296/927 2272/2297/570 +f 2149/2172/570 2075/2100/570 2072/2094/570 +f 2253/2278/845 2273/2298/844 2025/2047/782 +f 2274/2299/928 2275/2300/929 2027/2049/784 +f 2027/2049/784 2026/2048/783 2276/2301/930 +f 2023/2045/780 2025/2047/782 2277/2302/931 +f 2025/2047/782 2024/2046/781 2278/2303/932 +f 2279/2304/570 2280/2305/570 2281/2306/570 +f 2282/2307/582 2252/2277/923 2283/2308/933 +f 2284/2309/582 2253/2278/845 2252/2277/923 +f 2285/2310/934 2286/2311/582 2287/2312/582 +f 2283/2308/933 2288/2313/935 2289/2314/935 +f 2276/2301/930 2274/2299/928 2027/2049/784 +f 2290/2315/570 2279/2304/570 2291/2316/570 +f 2027/2049/784 2173/2197/851 2292/2317/936 +f 2111/2134/825 2293/2318/937 2294/2319/938 +f 2295/2320/939 2296/2321/940 2297/2322/554 +f 2294/2319/938 2297/2322/554 2298/2323/941 +f 2299/2324/554 2300/2325/554 2301/2326/942 +f 2302/2327/943 2301/2326/942 2303/2328/554 +f 2301/2329/942 2298/2323/941 2299/2330/554 +f 2293/2318/937 2297/2322/554 2294/2319/938 +f 2293/2318/937 2304/2331/944 2297/2322/554 +f 2304/2331/944 2295/2320/939 2297/2322/554 +f 2296/2321/940 2305/2332/554 2297/2322/554 +f 2297/2322/554 2299/2330/554 2298/2323/941 +f 2299/2324/554 2306/2333/554 2300/2325/554 +f 2300/2325/554 2307/2334/554 2301/2326/942 +f 2301/2326/942 2307/2334/554 2303/2328/554 +f 2308/2335/570 2309/2336/570 2310/2337/570 +f 2311/2338/570 2312/2339/570 2309/2340/570 +f 2313/2341/570 2314/2342/570 2308/2335/570 +f 2309/2336/570 2315/2343/570 2310/2337/570 +f 2309/2340/570 2316/2344/570 2311/2338/570 +f 2317/2345/570 2315/2346/570 2309/2340/570 +f 2316/2344/570 2309/2340/570 2280/2305/570 +f 2318/2347/945 2319/2348/946 2320/2349/947 +f 2321/2350/564 2318/2347/945 2322/2351/948 +f 1817/1834/674 1816/1833/673 2323/2352/949 +f 2324/2353/950 1883/1900/740 1872/1889/729 +f 2325/2354/951 2326/2355/952 1883/1900/740 +f 2325/2354/951 2324/2353/950 2327/2356/953 +f 1842/1859/699 2327/2356/953 2324/2353/950 +f 2328/2357/954 1878/1895/735 1877/1894/734 +f 2329/2358/955 1837/1854/694 1835/1852/692 +f 2329/2358/955 1836/1853/693 2328/2357/954 +f 2328/2357/954 1877/1894/734 1879/1896/736 +f 1828/1845/685 2330/2359/956 2331/2360/957 +f 1818/1835/675 1881/1898/738 2332/2361/958 +f 1821/1838/678 1874/1891/731 2333/2362/959 +f 1823/1840/680 1873/1890/730 1884/1901/741 +f 1867/1884/724 2332/2361/958 1880/1897/737 +f 1867/1884/724 1846/1863/703 2332/2361/958 +f 1826/1843/683 2332/2361/958 1844/1861/701 +f 1856/1873/713 1818/1835/675 1827/1844/684 +f 1855/1872/712 1816/1833/673 1856/1873/713 +f 1855/1872/712 1824/1841/681 1816/1833/673 +f 1816/1833/673 1818/1835/675 1856/1873/713 +f 1830/1847/687 1829/1846/686 1842/1859/699 +f 1832/1849/689 2334/2363/960 1829/1846/686 +f 1821/1838/678 2335/2364/961 1833/1850/690 +f 1821/1838/678 2333/2362/959 2335/2364/961 +f 2333/2362/959 1870/1887/727 2336/2365/962 +f 1870/1887/727 1813/1830/670 2337/2366/963 +f 1813/1830/670 1815/1832/672 2338/2367/964 +f 2328/2357/954 1836/1853/693 1878/1895/735 +f 2336/2365/962 2339/2368/965 2335/2364/961 +f 2337/2366/963 2340/2369/966 2336/2365/962 +f 2338/2367/964 2341/2370/967 2337/2366/963 +f 1838/1855/695 2342/2371/968 2338/2367/964 +f 2335/2364/961 2343/2372/969 2330/2359/956 +f 1874/1891/731 1869/1886/726 2333/2362/959 +f 1873/1890/730 1872/1889/729 1884/1901/741 +f 1846/1863/703 1844/1861/701 2332/2361/958 +f 1824/1841/681 1884/1901/741 1816/1833/673 +f 1829/1846/686 2327/2356/953 1842/1859/699 +f 2334/2363/960 2327/2356/953 1829/1846/686 +f 2333/2362/959 2336/2365/962 2335/2364/961 +f 1870/1887/727 2337/2366/963 2336/2365/962 +f 1813/1830/670 2338/2367/964 2337/2366/963 +f 1815/1832/672 1838/1855/695 2338/2367/964 +f 1836/1853/693 1834/1851/691 1878/1895/735 +f 2339/2368/965 2343/2372/969 2335/2364/961 +f 2340/2369/966 2339/2368/965 2336/2365/962 +f 2341/2370/967 2340/2369/966 2337/2366/963 +f 2342/2371/968 2341/2370/967 2338/2367/964 +f 2343/2372/969 2331/2360/957 2330/2359/956 +f 1817/1834/674 1881/1898/738 1818/1835/675 +f 1820/1837/677 1874/1891/731 1821/1838/678 +f 1823/1840/680 1884/1901/741 1824/1841/681 +f 1818/1835/675 2332/2361/958 1826/1843/683 +f 1832/1849/689 1829/1846/686 1828/1845/685 +f 1835/1852/692 1838/1855/695 1815/1832/672 +f 1837/1854/694 2342/2371/968 1838/1855/695 +f 1834/1851/691 1876/1893/733 1878/1895/735 +f 1815/1832/672 1875/1892/732 1834/1851/691 +f 1876/1893/733 1866/1883/723 1878/1895/735 +f 1875/1892/732 1876/1893/733 1834/1851/691 +f 1814/1831/671 1875/1892/732 1815/1832/672 +f 2245/2270/918 2213/2238/886 2215/2240/888 +f 2236/2261/909 2198/2223/871 2195/2220/868 +f 2237/2262/910 2207/2232/880 2206/2231/879 +f 2238/2263/911 2344/2373/970 2200/2225/873 +f 2195/2220/868 2345/2374/971 2193/2218/866 +f 2195/2220/868 2197/2222/870 2345/2374/971 +f 2201/2226/874 2239/2264/912 2202/2227/875 +f 2205/2230/878 2346/2375/972 2239/2264/912 +f 2207/2232/880 2202/2227/875 2239/2264/912 +f 2240/2265/913 2233/2258/906 2215/2240/888 +f 2233/2258/906 2240/2265/913 2217/2242/890 +f 2241/2266/914 2240/2265/913 2224/2249/897 +f 2347/2376/973 2203/2228/876 2202/2227/875 +f 2348/2377/974 2349/2378/975 2203/2228/876 +f 2350/2379/976 2344/2373/970 2238/2263/911 +f 2351/2380/977 2194/2219/867 2193/2218/866 +f 2351/2380/977 2190/2215/863 2194/2219/867 +f 2352/2381/978 2353/2382/979 2354/2383/980 +f 2355/2384/981 2356/2385/982 2357/2386/983 +f 2353/2382/979 2352/2381/978 2355/2384/981 +f 2193/2218/866 2345/2374/971 2358/2387/984 +f 2200/2225/873 2359/2388/985 2199/2224/872 +f 2197/2222/870 2196/2221/869 2359/2388/985 +f 2200/2225/873 2344/2373/970 2360/2389/986 +f 2350/2379/976 2361/2390/987 2360/2389/986 +f 2200/2225/873 2360/2389/986 2359/2388/985 +f 2362/2391/988 2363/2392/989 2361/2390/987 +f 2358/2387/984 2351/2380/977 2193/2218/866 +f 2358/2387/984 2359/2388/985 2364/2393/990 +f 2365/2394/991 2355/2384/981 2352/2381/978 +f 2366/2395/992 2352/2381/978 2351/2380/977 +f 2360/2389/986 2361/2390/987 2365/2394/991 +f 2364/2393/990 2359/2388/985 2360/2389/986 +f 2365/2394/991 2361/2390/987 2363/2392/989 +f 2367/2396/993 2356/2385/982 2365/2394/991 +f 2368/2397/994 2191/2216/864 2190/2215/863 +f 2244/2269/917 2219/2244/892 2191/2216/864 +f 2369/2398/995 2211/2236/884 2213/2238/886 +f 2227/2252/900 2209/2234/882 2211/2236/884 +f 2370/2399/996 2202/2227/875 2207/2232/880 +f 2349/2378/975 2348/2377/974 2230/2255/903 +f 2351/2380/977 2354/2383/980 2190/2215/863 +f 2358/2387/984 2364/2393/990 2351/2380/977 +f 2345/2374/971 2197/2222/870 2358/2387/984 +f 2359/2388/985 2358/2387/984 2197/2222/870 +f 2359/2388/985 2196/2221/869 2199/2224/872 +f 2361/2390/987 2350/2379/976 2362/2391/988 +f 2363/2392/989 2367/2396/993 2365/2394/991 +f 2356/2385/982 2355/2384/981 2365/2394/991 +f 2238/2263/911 2230/2255/903 2348/2377/974 +f 2362/2391/988 2350/2379/976 2238/2263/911 +f 2362/2391/988 2238/2263/911 2370/2399/996 +f 2237/2262/910 2367/2396/993 2363/2392/989 +f 2237/2262/910 2356/2385/982 2367/2396/993 +f 2357/2386/983 2356/2385/982 2237/2262/910 +f 2353/2382/979 2357/2386/983 2228/2253/901 +f 2368/2397/994 2354/2383/980 2353/2382/979 +f 2244/2269/917 2353/2382/979 2227/2252/900 +f 2369/2398/995 2243/2268/916 2242/2267/915 +f 2369/2398/995 2245/2270/918 2243/2268/916 +f 2347/2376/973 2370/2399/996 2348/2377/974 +f 2370/2399/996 2238/2263/911 2348/2377/974 +f 2363/2392/989 2362/2391/988 2370/2399/996 +f 2370/2399/996 2237/2262/910 2363/2392/989 +f 2228/2253/901 2357/2386/983 2237/2262/910 +f 2227/2252/900 2353/2382/979 2228/2253/901 +f 2244/2269/917 2368/2397/994 2353/2382/979 +f 2242/2267/915 2244/2269/917 2227/2252/900 +f 2227/2252/900 2369/2398/995 2242/2267/915 +f 2371/2400/997 2372/2401/998 2191/2216/864 +f 2373/2402/999 2374/2403/1000 2372/2401/998 +f 2235/2260/908 2192/2217/865 2372/2401/998 +f 2375/2404/1001 2229/2254/902 2231/2256/904 +f 2236/2261/909 2376/2405/1002 2377/2406/1003 +f 2378/2407/1004 2349/2378/975 2229/2254/902 +f 2379/2408/1005 2378/2407/1004 2375/2404/1001 +f 2379/2408/1005 2204/2229/877 2232/2257/905 +f 2203/2228/876 2349/2378/975 2378/2407/1004 +f 2219/2244/892 2218/2243/891 2371/2400/997 +f 2380/2409/1006 2217/2242/890 2240/2265/913 +f 2380/2409/1006 2381/2410/1007 2218/2243/891 +f 2218/2243/891 2381/2410/1007 2373/2402/999 +f 2239/2264/912 2346/2375/972 2234/2259/907 +f 2235/2260/908 2195/2220/868 2192/2217/865 +f 2228/2253/901 2206/2231/879 2209/2234/882 +f 2230/2255/903 2238/2263/911 2231/2256/904 +f 2192/2217/865 2191/2216/864 2372/2401/998 +f 2382/2411/1008 2188/2213/861 2187/2212/860 +f 2383/2412/1009 2119/2142/829 2118/2141/828 +f 2057/2079/564 2074/2096/564 2384/2413/564 +f 2054/2076/801 2040/2062/795 2094/2117/812 +f 2246/2271/919 2118/2141/828 2159/2182/842 +f 2385/2414/564 2384/2413/564 1592/1603/590 +f 2246/2271/919 2041/2063/796 2054/2076/801 +f 2171/2195/849 2386/2415/1010 2387/2416/846 +f 2388/2417/786 2389/2418/1011 2170/2194/848 +f 2386/2415/1010 2390/2419/1012 2391/2420/827 +f 2039/2061/794 2041/2063/796 2388/2417/786 +f 2389/2418/1011 2171/2195/849 2170/2194/848 +f 2390/2419/1012 2392/2421/1013 2393/2422/826 +f 2392/2421/1013 2394/2423/1014 2395/2424/1015 +f 2395/2424/1015 2394/2423/1014 2181/2206/854 +f 2182/2207/855 2181/2206/854 2394/2423/1014 +f 2396/2425/1016 2395/2424/1015 2181/2206/854 +f 2093/2116/785 2039/2061/794 2388/2417/786 +f 2397/2426/1017 2398/2427/1018 2399/2428/1019 +f 2400/2429/554 2063/2085/554 2401/2430/554 +f 2087/2110/570 2291/2316/570 2402/2431/570 +f 2400/2429/554 2064/2086/554 2063/2085/554 +f 2062/2084/554 2403/2432/554 2063/2085/554 +f 2404/2433/1020 2405/2434/1021 2406/2435/1022 +f 2075/2100/570 2149/2172/570 2175/2436/570 +f 2407/2437/1023 2408/2438/1024 2409/2439/1025 +f 2410/2440/554 2411/2441/554 2408/2442/1024 +f 2412/2443/564 2413/2444/564 2414/2445/564 +f 2163/2187/845 2278/2303/932 2024/2046/781 +f 2415/2446/564 2413/2444/564 2412/2443/564 +f 2416/2447/564 2168/2192/564 2167/2191/564 +f 2417/2448/570 2418/2449/570 2419/2450/570 +f 2420/2451/564 2421/2452/564 2422/2453/564 +f 2423/2454/1026 2424/2455/1026 2425/2456/1026 +f 2426/2457/1027 2427/2458/1028 2428/2459/1027 +f 2429/2460/1029 2430/2461/1030 2431/2462/1031 +f 2432/2463/1032 2431/2462/1031 2430/2461/1030 +f 2433/2464/1033 2067/2089/806 2434/2465/1034 +f 2435/2466/549 2436/2467/549 2437/2468/549 +f 2431/2462/1031 2438/2469/1035 2429/2460/1029 +f 2248/2273/570 2077/2099/570 2076/2098/570 +f 2439/2470/1036 2440/2471/564 2441/2472/803 +f 2047/2069/564 2442/2473/564 2048/2070/564 +f 2443/2474/927 2444/2475/570 2445/2476/570 +f 2446/2477/564 2442/2473/564 1590/1601/564 +f 2447/2478/564 1590/1601/564 2448/2479/1037 +f 2449/2480/564 2448/2479/1037 2450/2481/587 +f 2451/2482/564 2450/2481/587 2102/2125/586 +f 2452/2483/1038 2453/2484/1039 2454/2485/1040 +f 2049/2071/564 2047/2069/564 2455/2486/564 +f 2048/2070/564 2442/2473/564 2456/2487/564 +f 2456/2487/564 2442/2473/564 2446/2477/564 +f 2447/2478/564 2446/2477/564 1590/1601/564 +f 2449/2480/564 2447/2478/564 2448/2479/1037 +f 2448/2479/1037 1590/1601/564 1589/1600/564 +f 2451/2482/564 2449/2480/564 2450/2481/587 +f 2457/2488/1041 2451/2482/564 2102/2125/586 +f 2457/2488/1041 2102/2125/586 2101/2124/818 +f 1588/1599/589 1587/1598/564 2458/2489/564 +f 2097/2120/814 1588/1599/589 2458/2489/564 +f 2459/2490/564 2047/2069/564 2049/2071/564 +f 2050/2072/564 2049/2071/564 2455/2486/564 +f 2455/2486/564 2047/2069/564 2046/2068/564 +f 2460/2491/1042 2461/2492/1043 2398/2427/1018 +f 2462/2493/572 1597/1608/572 1596/1607/572 +f 1595/1606/572 1594/1605/572 1597/1608/572 +f 2463/2494/582 2177/2202/582 2278/2303/932 +f 2464/2495/1044 2179/2204/852 2178/2203/582 +f 2179/2204/852 2464/2495/1044 2465/2496/935 +f 2466/2497/1045 2172/2196/850 2027/2049/784 +f 2156/2179/839 2151/2174/836 2467/2498/1046 +f 2104/2127/820 2468/2499/1047 2105/2128/589 +f 2469/2500/1048 2470/2501/1049 2150/2173/835 +f 2471/2502/1050 2472/2503/589 2473/2504/1051 +f 2151/2174/836 2150/2173/835 2470/2501/1049 +f 2156/2179/839 2468/2499/1047 2104/2127/820 +f 2385/2414/564 1592/1603/590 2440/2471/564 +f 2023/2045/780 2292/2317/936 2024/2046/781 +f 2275/2300/929 2466/2497/1045 2027/2049/784 +f 2474/2505/564 2475/2506/564 2476/2507/564 +f 2174/2198/848 2165/2189/847 2117/2140/564 +f 2117/2140/564 2106/2129/821 1585/1596/588 +f 2384/2413/564 2074/2096/564 1592/1603/590 +f 1592/1603/590 2441/2472/803 2440/2471/564 +f 1585/1596/588 1592/1603/590 2074/2096/564 +f 2041/2063/796 2389/2418/1011 2388/2417/786 +f 2477/2508/572 2462/2509/572 1596/2510/572 +f 1598/1609/572 1597/1608/572 1594/1605/572 +f 2087/2110/570 2086/2109/570 2291/2316/570 +f 2478/2511/1052 2479/2512/570 2480/2513/570 +f 2481/2514/1053 2056/2078/803 2055/2077/802 +f 2439/2470/1036 2441/2472/803 2482/2515/1053 +f 2483/2516/582 2484/2517/582 2485/2518/582 +f 2486/2519/582 2483/2516/582 2487/2520/582 +f 2485/2518/582 2488/2521/582 2487/2520/582 +f 2483/2516/582 2485/2518/582 2487/2520/582 +f 2486/2519/582 2489/2522/582 2483/2516/582 +f 2490/2523/570 2491/2524/1054 2492/2525/1055 +f 2493/2526/564 2494/2527/564 2495/2528/1056 +f 2496/2529/572 2497/2530/572 2498/2531/572 +f 2499/2532/582 2500/2533/582 2501/2534/582 +f 2502/2535/572 2503/2536/572 2498/2531/572 +f 2495/2528/1056 2492/2525/1055 2491/2524/1054 +f 2504/2537/1057 2505/2538/564 2506/2539/564 +f 2504/2537/1057 2507/2540/1057 2508/2541/1058 +f 2509/2542/1059 2510/2543/1060 2511/2544/1061 +f 2512/2545/582 2513/2546/582 2514/2547/582 +f 2514/2547/582 2513/2546/582 2487/2520/582 +f 2515/2548/554 2516/2549/554 2517/2550/554 +f 2518/2551/570 2519/2552/1062 2520/2553/1063 +f 2521/2554/554 2522/2555/1064 2523/2556/1065 +f 2524/2557/572 2525/2558/572 2526/2559/572 +f 2503/2536/572 2502/2535/572 2527/2560/572 +f 2527/2560/572 2528/2561/572 2526/2559/572 +f 2523/2556/1065 2522/2555/1064 2529/2562/1066 +f 2530/2563/1067 2531/2564/1067 2532/2565/554 +f 2520/2553/1063 2519/2552/1062 2533/2566/1059 +f 2501/2534/582 2489/2522/582 2486/2519/582 +f 2534/2567/564 2535/2568/564 2536/2569/564 +f 2530/2563/1067 2537/2570/1068 2538/2571/1068 +f 2539/2572/1069 2508/2541/1058 2538/2571/1068 +f 2484/2517/582 2540/2573/582 2485/2518/582 +f 2541/2574/564 1505/1516/564 1507/1518/564 +f 2542/2575/565 1508/1519/565 1510/1521/565 +f 2543/2576/554 1511/1522/554 1513/1524/554 +f 2544/2577/566 1514/1525/566 1516/1527/568 +f 2545/2578/564 2546/2579/564 2541/2574/564 +f 2547/2580/1070 1516/1527/568 2548/2581/1071 +f 1507/1518/564 2545/2578/564 2541/2574/564 +f 2546/2579/564 2549/2582/564 2541/2574/564 +f 2542/2575/565 1510/1521/565 2550/2583/565 +f 1513/1524/554 2551/2584/554 2543/2576/554 +f 1516/1527/568 1515/1526/567 2548/2581/1071 +f 2552/2585/1072 2553/2586/1072 2554/2587/1072 +f 2555/2588/1073 1588/1599/589 2097/2120/814 +f 2294/2319/938 2556/2589/1074 2109/2132/823 +f 2294/2319/938 2109/2132/823 2111/2134/825 +f 2110/2133/824 2454/2485/1040 2111/2134/825 +f 2116/2139/564 2107/2130/822 2106/2129/821 +f 2557/2590/1075 2558/2591/1076 2559/2592/1077 +f 2560/2593/1078 2561/2594/1079 2562/2595/1080 +f 2563/2596/1081 2564/2597/1082 2565/2598/1083 +f 2564/2597/1082 2566/2599/1084 2565/2598/1083 +f 2453/2484/1039 2111/2134/825 2454/2485/1040 +f 2562/2595/1080 2561/2594/1079 2567/2600/570 +f 2568/2601/554 2569/2602/1085 2570/2603/554 +f 2571/2604/1084 2556/2589/1074 2294/2319/938 +f 2563/2596/1081 2572/2605/554 2564/2597/1082 +f 2573/2606/1086 2574/2607/824 2575/2608/1087 +f 2576/2609/549 2577/2610/549 2578/2611/1088 +f 2579/2612/1089 2563/2596/1081 2580/2613/1090 +f 2572/2605/554 2581/2614/554 2564/2597/1082 +f 2125/2148/564 2145/2168/564 2126/2149/832 +f 2122/2145/554 2130/2153/833 2123/2146/831 +f 2582/2615/549 2583/2616/549 2584/2617/1091 +f 2585/2618/1092 2586/2619/1093 2587/2620/572 +f 2586/2621/1093 2585/2622/1092 2588/2623/570 +f 2589/2624/582 2590/2625/582 2591/2626/1094 +f 2592/2627/1026 2593/2628/1026 2594/2629/1026 +f 2595/2630/1095 2066/2088/805 2065/2087/804 +f 2593/2628/1026 2596/2631/1026 2594/2629/1026 +f 2597/2632/1026 2592/2627/1026 2598/2633/1026 +f 2029/2051/786 2174/2198/848 2070/2092/564 +f 2599/2634/572 2600/2635/572 2601/2636/572 +f 2602/2637/572 2603/2638/572 2600/2635/572 +f 2404/2433/1020 2604/2639/1096 2405/2434/1021 +f 2112/2135/826 2156/2179/839 2104/2127/820 +f 2158/2181/841 2155/2178/564 2156/2179/839 +f 2593/2628/1026 2423/2454/1026 2425/2456/1026 +f 2605/2640/1026 2425/2456/1026 2424/2455/1026 +f 2153/2176/564 2151/2174/836 2156/2179/839 +f 2598/2633/1026 2592/2627/1026 2594/2629/1026 +f 2154/2177/838 2152/2175/837 2151/2174/836 +f 2086/2109/570 2290/2315/570 2291/2316/570 +f 2461/2492/1043 2399/2428/1019 2398/2427/1018 +f 2319/2348/946 2606/2641/1097 2409/2439/1025 +f 2607/2642/1098 2404/2433/1020 2406/2435/1022 +f 2587/2620/572 2608/2643/1091 2584/2617/1091 +f 2589/2624/582 2609/2644/1099 2610/2645/1100 +f 2591/2626/1094 2611/2646/570 2588/2647/570 +f 2612/2648/549 2610/2645/1100 2609/2644/1099 +f 2613/2649/809 2614/2650/1101 2615/2651/809 +f 2088/2111/808 2090/2113/809 2615/2651/809 +f 2616/2652/572 2617/2653/572 2618/2654/572 +f 2619/2655/572 2620/2656/572 2618/2654/572 +f 2621/2657/572 2622/2658/572 2620/2656/572 +f 2623/2659/570 2073/2095/570 2075/2100/570 +f 2299/2324/554 2624/2660/943 2306/2333/554 +f 2311/2338/570 2625/2661/570 2312/2339/570 +f 2626/2662/790 2033/2055/554 2305/2332/554 +f 2627/2663/806 2628/2664/1034 2629/2665/1102 +f 2630/2666/582 2631/2667/582 2632/2668/582 +f 2633/2669/564 2634/2670/564 2635/2671/564 +f 2636/2672/549 2637/2673/549 2638/2674/549 +f 2639/2675/549 2640/2676/549 2636/2672/549 +f 2624/2660/943 2641/2677/1103 2306/2333/554 +f 2642/2678/1104 2643/2679/1104 2644/2680/1105 +f 2645/2681/1106 2069/2091/807 2629/2665/1102 +f 2646/2682/554 2647/2683/554 2648/2684/554 +f 2649/2685/564 2650/2686/564 2651/2687/564 +f 2652/2688/1107 2653/2689/1107 2654/2690/1108 +f 2578/2611/1088 2655/2691/1109 2656/2692/1110 +f 2657/2693/554 2658/2694/554 2659/2695/554 +f 2660/2696/549 2661/2697/549 2662/2698/549 +f 2663/2699/1111 2664/2700/1112 2665/2701/1113 +f 2666/2702/1114 2667/2703/1115 2668/2704/1116 +f 2669/2705/1117 2668/2704/1116 2664/2700/1112 +f 2670/2706/1118 2671/2707/1119 2672/2708/1119 +f 2673/2709/554 2674/2710/554 2670/2706/1118 +f 2675/2711/572 2676/2712/572 2677/2713/572 +f 2678/2714/572 2679/2715/572 2680/2716/572 +f 2655/2691/1109 2681/2717/1120 2682/2718/1120 +f 2301/2329/942 2683/2719/1121 2684/2720/1122 +f 2685/2721/554 2686/2722/554 2687/2723/554 +f 2688/2724/1107 2689/2725/1107 2690/2726/1123 +f 2647/2683/554 2646/2682/554 2569/2602/1085 +f 2569/2602/1085 2579/2612/1089 2570/2603/554 +f 2691/2727/1124 2294/2319/938 2298/2323/941 +f 2692/2728/1103 2693/2729/1125 2694/2730/1125 +f 2695/2731/1125 2696/2732/1125 2641/2677/1103 +f 2667/2703/1115 2666/2702/1114 2697/2733/570 +f 2462/2509/572 2477/2508/572 2698/2734/572 +f 2699/2735/572 2677/2713/572 2678/2714/572 +f 2700/2736/572 2698/2734/572 2675/2737/572 +f 2701/2738/1126 2702/2739/1126 2703/2740/1126 +f 2691/2727/1124 2571/2604/1084 2294/2319/938 +f 2106/2129/821 2117/2140/564 2116/2139/564 +f 2704/2741/823 2559/2592/1077 2558/2591/1076 +f 2705/2742/549 2706/2743/549 2707/2744/549 +f 2563/2596/1081 2565/2598/1083 2580/2613/1090 +f 2708/2745/1127 2709/2746/1128 2710/2747/1128 +f 2644/2680/1105 2708/2745/1127 2711/2748/1129 +f 2712/2749/549 2643/2679/1104 2642/2678/1104 +f 2713/2750/1130 2714/2751/1130 2715/2752/1130 +f 2716/2753/1131 2717/2754/1131 2718/2755/1131 +f 2719/2756/554 2720/2757/554 2721/2758/554 +f 2722/2759/1132 2723/2760/1132 2724/2761/1132 +f 2725/2762/1133 2472/2503/589 2471/2502/1050 +f 2726/2763/1134 2727/2764/1135 2111/2134/825 +f 2728/2765/1136 2729/2766/1137 2730/2767/1138 +f 2731/2768/1139 2732/2769/1140 2733/2770/1134 +f 2734/2771/1141 2735/2772/1142 2736/2773/1143 +f 2726/2763/1134 2111/2134/825 2453/2484/1039 +f 2727/2764/1135 2726/2763/1134 2729/2766/1137 +f 2737/2774/1137 2738/2775/1046 2739/2776/1144 +f 2738/2775/1046 2737/2774/1137 2733/2770/1134 +f 2732/2769/1140 2740/2777/1145 2473/2504/1051 +f 2741/2778/1048 2742/2779/1146 2743/2780/1147 +f 2678/2714/572 2680/2716/572 2699/2735/572 +f 2699/2735/572 2700/2781/572 2675/2711/572 +f 2744/2782/570 2087/2110/570 2402/2431/570 +f 2657/2693/554 2745/2783/554 2658/2694/554 +f 2646/2682/554 2648/2684/554 2745/2783/554 +f 2657/2693/554 2746/2784/554 2646/2682/554 +f 2555/2588/1073 2097/2120/814 2099/2122/816 +f 2099/2122/816 2650/2686/564 2649/2685/564 +f 2566/2599/1084 2747/2785/1124 2748/2786/1148 +f 2570/2603/554 2579/2612/1089 2580/2613/1090 +f 2749/2787/1149 2565/2598/1083 2566/2599/1084 +f 2747/2785/1124 2750/2788/1150 2748/2786/1148 +f 2751/2789/554 2750/2788/1150 2747/2785/1124 +f 2752/2790/554 2751/2789/554 2753/2791/1122 +f 2685/2721/554 2754/2792/1121 2686/2722/554 +f 2755/2793/554 2752/2790/554 2754/2792/1121 +f 2756/2794/554 2755/2793/554 2685/2721/554 +f 2757/2795/554 2758/2796/554 2756/2794/554 +f 2757/2795/554 2659/2695/554 2758/2796/554 +f 2657/2693/554 2646/2682/554 2745/2783/554 +f 2574/2607/824 2704/2741/823 2759/2797/1151 +f 2753/2791/1122 2751/2789/554 2747/2785/1124 +f 2754/2792/1121 2752/2790/554 2753/2791/1122 +f 2685/2721/554 2755/2793/554 2754/2792/1121 +f 2757/2795/554 2756/2794/554 2685/2721/554 +f 2760/2798/1152 2761/2799/1153 2762/2800/1154 +f 2757/2795/554 2657/2693/554 2659/2695/554 +f 2303/2328/554 2692/2728/1103 2302/2327/943 +f 2310/2337/570 2313/2341/570 2308/2335/570 +f 2763/2801/1155 2764/2802/1156 2765/2803/1157 +f 2429/2460/1029 2438/2469/1035 2763/2801/1155 +f 2766/2804/1033 2767/2805/1158 2628/2664/1034 +f 2767/2805/1158 2766/2804/1033 2768/2806/1159 +f 2768/2806/1159 2765/2803/1157 2764/2802/1156 +f 2769/2807/1160 2770/2808/1161 2771/2809/1162 +f 2770/2808/1161 2772/2810/1163 2773/2811/1164 +f 2774/2812/1165 2769/2807/1160 2775/2813/1166 +f 2772/2810/1163 2776/2814/1167 2777/2815/1168 +f 2778/2816/1169 2774/2812/1165 2779/2817/1170 +f 2776/2814/1167 2780/2818/1171 2781/2819/1172 +f 2782/2820/1173 2778/2816/1169 2783/2821/1174 +f 2780/2818/1171 2784/2822/1175 2785/2823/1176 +f 2786/2824/1177 2782/2820/1173 2787/2825/1178 +f 2784/2822/1175 2645/2681/1106 2788/2826/1179 +f 2761/2799/1153 2786/2824/1177 2789/2827/1180 +f 2790/2828/572 2791/2829/572 2792/2830/1181 +f 2793/2831/564 2634/2670/564 2633/2669/564 +f 2635/2671/564 2794/2832/564 2633/2669/564 +f 2795/2833/549 2796/2834/549 2797/2835/549 +f 2794/2832/564 2798/2836/564 2799/2837/564 +f 2068/2090/549 2800/2838/549 2629/2665/1102 +f 2031/2053/787 2033/2055/554 2626/2662/790 +f 2801/2839/1182 2802/2840/1183 2803/2841/1184 +f 2803/2841/1184 2804/2842/1185 2805/2843/1186 +f 2805/2843/1186 2801/2839/1182 2803/2841/1184 +f 2806/2844/1187 2807/2845/1188 2801/2839/1182 +f 2808/2846/1189 2809/2847/937 2807/2845/1188 +f 2810/2848/1190 2254/2279/924 2811/2849/940 +f 2036/2058/791 2096/2119/813 2034/2056/789 +f 2812/2850/1191 2813/2851/944 2809/2847/937 +f 2254/2279/924 2035/2057/790 2811/2849/940 +f 2810/2848/1190 2814/2852/939 2813/2851/944 +f 2036/2058/791 2251/2276/922 2249/2274/920 +f 2160/2183/843 2250/2275/921 2159/2182/842 +f 2250/2275/921 2251/2276/922 2159/2182/842 +f 2249/2274/920 2815/2853/1192 2816/2854/797 +f 2160/2183/843 2120/2143/830 2817/2855/1193 +f 2815/2853/1192 2249/2274/920 2250/2275/921 +f 2818/2856/1194 2819/2857/1195 2820/2858/1196 +f 2819/2857/1195 2818/2856/1194 2821/2859/1197 +f 2822/2860/1198 2823/2861/1199 2824/2862/1200 +f 2821/2859/1197 2825/2863/1201 2826/2864/1202 +f 2803/2841/1184 2827/2865/1203 2804/2842/1185 +f 2182/2207/855 2394/2423/1014 2805/2843/1186 +f 2394/2423/1014 2392/2421/1013 2806/2844/1187 +f 2390/2419/1012 2386/2415/1010 2812/2850/1191 +f 2806/2844/1187 2392/2421/1013 2390/2419/1012 +f 2386/2415/1010 2171/2195/849 2810/2848/1190 +f 2811/2849/940 2814/2852/939 2810/2848/1190 +f 2828/2866/554 2829/2867/554 2255/2280/554 +f 2095/2118/787 2035/2057/790 2034/2056/789 +f 2246/2271/919 2159/2182/842 2251/2276/922 +f 2810/2848/1190 2171/2195/849 2389/2418/1011 +f 2246/2271/919 2251/2276/922 2036/2058/791 +f 2254/2279/924 2389/2418/1011 2041/2063/796 +f 2830/2868/1188 2293/2318/937 2111/2134/825 +f 2831/2869/1204 2830/2868/1188 2727/2764/1135 +f 2832/2870/554 2833/2871/1205 2831/2869/1204 +f 2834/2872/554 2832/2870/554 2727/2764/1135 +f 2835/2873/1206 2834/2872/554 2728/2765/1136 +f 2728/2765/1136 2736/2773/1143 2735/2772/1142 +f 2316/2344/570 2280/2305/570 2279/2304/570 +f 2727/2764/1135 2830/2868/1188 2111/2134/825 +f 2832/2870/554 2831/2869/1204 2727/2764/1135 +f 2728/2765/1136 2834/2872/554 2727/2764/1135 +f 2735/2772/1142 2835/2873/1206 2728/2765/1136 +f 2296/2321/940 2626/2662/790 2305/2332/554 +f 2836/2874/1026 2837/2875/1026 2838/2876/1026 +f 2839/2877/1026 2840/2878/1026 2841/2879/1026 +f 2839/2877/1026 2841/2879/1026 2838/2876/1026 +f 2837/2875/1026 2839/2877/1026 2838/2876/1026 +f 2837/2875/1026 2836/2874/1026 2842/2880/1026 +f 2842/2880/1026 2843/2881/1026 2844/2882/1026 +f 2605/2640/1026 2424/2455/1026 2844/2882/1026 +f 2845/2883/1207 2846/2884/1208 2847/2885/1209 +f 2847/2885/1209 2848/2886/1210 2849/2887/1211 +f 2850/2888/1212 2851/2889/1213 2852/2890/1214 +f 2853/2891/1215 2851/2889/1213 2850/2888/1212 +f 2595/2630/1095 2854/2892/1216 2846/2884/1208 +f 2592/2627/1026 2597/2632/1026 2840/2878/1026 +f 2844/2882/1026 2855/2893/1026 2842/2880/1026 +f 2161/2894/570 2077/2099/570 2310/2337/570 +f 2856/2895/572 2857/2896/572 2858/2897/572 +f 2859/2898/554 2860/2899/554 2861/2900/554 +f 2862/2901/570 2863/2902/570 2864/2903/570 +f 2861/2904/554 2865/2905/554 2866/2906/554 +f 2867/2907/553 1481/1492/553 1483/1494/553 +f 2868/2908/554 1484/1495/554 1486/1497/554 +f 1498/1509/562 1487/1498/555 1489/1500/557 +f 2869/2909/559 1490/1501/558 1492/1503/559 +f 2870/2910/560 1493/1504/560 1495/1506/560 +f 1489/1500/557 1496/1507/561 1498/1509/562 +f 2871/2911/554 1499/1510/554 1501/1512/554 +f 2872/2912/563 1502/1513/563 1504/1515/563 +f 1555/1566/581 1546/1557/573 1548/1559/575 +f 1525/1536/569 1549/1560/576 1528/1539/571 +f 1550/1561/576 1549/1560/576 1552/1563/578 +f 1552/1563/578 1551/1562/577 1554/1565/580 +f 1554/1565/580 1553/1564/579 1547/1558/574 +f 2873/2913/582 1557/1568/582 1559/1570/582 +f 2874/2914/582 1560/1571/582 1562/1573/582 +f 2875/2915/570 1563/1574/570 1565/1576/570 +f 2876/2916/554 1566/1577/554 1568/1579/554 +f 2877/2917/554 1569/1580/554 1571/1582/554 +f 2878/2918/582 1572/1583/582 1574/1585/582 +f 1722/1739/621 1580/1591/583 1582/1593/585 +f 2106/2129/821 1583/1594/586 1585/1596/588 +f 2049/2071/564 1586/1597/564 1588/1599/589 +f 2879/2919/1037 1592/1603/590 1584/1595/587 +f 2880/2920/572 1596/1607/572 1598/1609/572 +f 1723/1740/572 1599/1610/572 1601/1612/572 +f 1724/1741/620 1602/1613/591 1604/1615/593 +f 1725/1742/582 1605/1616/582 1607/1618/582 +f 1582/1593/585 1581/1592/584 1609/1620/595 +f 1601/1612/572 1600/1611/572 1611/2921/572 +f 1604/1615/593 1603/1614/592 1613/1625/597 +f 1607/1618/582 1606/1617/582 1615/1627/582 +f 1609/1620/595 1608/1619/594 1617/1629/599 +f 1611/2921/572 1610/1630/572 1619/1632/572 +f 1613/1625/597 1612/1624/596 1621/1634/601 +f 1615/1627/582 1614/1626/582 1623/1636/582 +f 1617/2922/599 1616/2923/598 1625/2924/603 +f 1619/1632/572 1618/1631/572 1627/1640/572 +f 1621/2925/601 1620/2926/600 1629/2927/605 +f 1623/1636/582 1622/1635/582 1631/1645/582 +f 2881/2928/626 1632/2929/606 1634/2930/608 +f 1627/1640/572 1626/1639/572 1636/1650/572 +f 2882/2931/625 1637/1651/609 1639/1653/611 +f 1631/1645/582 1630/1644/582 1641/1655/582 +f 1634/2930/608 1633/1656/607 1643/1658/613 +f 1636/1650/572 1635/1649/572 1645/1660/572 +f 1639/1653/611 1638/1652/610 1647/1662/615 +f 1641/1655/582 1640/1654/582 1649/1664/582 +f 1643/1658/613 1642/1657/612 1651/1666/617 +f 1645/1660/572 1644/1659/572 1653/1668/572 +f 1647/1662/615 1646/1661/614 1655/1670/619 +f 1649/1664/582 1648/1663/582 1657/1672/582 +f 1651/1666/617 1650/1665/616 1659/2932/620 +f 1653/1668/572 1652/1667/572 1661/1677/572 +f 1655/1670/619 1654/1669/618 1663/1679/621 +f 1657/1672/582 1656/1671/582 1665/1681/582 +f 1659/2932/620 1658/2933/591 1667/2934/593 +f 1661/1677/572 1660/1676/572 1669/1685/572 +f 1663/1679/621 1662/1678/583 1671/1687/585 +f 1665/1681/582 1664/1680/582 1673/1689/582 +f 1667/2934/593 1666/2935/622 1675/2936/597 +f 1669/1685/572 1668/1684/572 1677/1693/572 +f 1671/1687/585 1670/1686/584 1679/1695/595 +f 1673/1689/582 1672/1688/582 1681/1697/582 +f 1675/2936/597 1674/2937/596 1683/2938/601 +f 1677/1693/572 1676/1692/572 1685/1701/572 +f 1679/1695/595 1678/1694/594 1687/1703/624 +f 1681/1697/582 1680/1696/582 1689/1705/582 +f 1683/1699/601 1682/1698/600 1691/1707/625 +f 1685/1701/572 1684/1700/572 1693/1709/572 +f 1687/1703/624 1686/1702/623 1695/1711/626 +f 1689/1705/582 1688/1704/582 1697/1713/582 +f 1691/1707/625 1690/1706/604 1699/1715/628 +f 1693/1709/572 1692/1708/572 1701/1717/572 +f 1695/2939/626 1694/1718/602 1703/1720/608 +f 1697/1713/582 1696/1712/582 1705/1722/582 +f 1699/1715/628 1698/1714/627 1707/1724/615 +f 1701/1717/572 1700/1716/572 1709/1726/572 +f 1703/1720/608 1702/1719/607 1711/1728/613 +f 1705/1722/582 1704/1721/582 1713/1730/582 +f 1707/1724/615 1706/1723/614 1715/1732/619 +f 1709/1726/572 1708/1725/572 1717/1734/572 +f 1711/1728/613 1710/1727/612 1719/1736/629 +f 1713/1730/582 1712/1729/582 1721/1738/582 +f 1715/1732/619 1714/1731/618 1722/1739/621 +f 1717/1734/572 1716/1733/572 1723/1740/572 +f 1719/1736/629 1718/1735/616 1724/1741/620 +f 1721/1738/582 1720/1737/582 1725/1742/582 +f 1749/1766/554 1726/1743/554 1728/1745/554 +f 1728/1745/554 1727/1744/554 1730/1747/554 +f 1730/1747/554 1729/1746/554 1732/1749/554 +f 1732/1749/554 1731/1748/554 1734/1751/554 +f 1734/1751/554 1733/1750/554 1736/1753/554 +f 1736/1753/554 1735/1752/554 1738/1755/554 +f 1738/1755/554 1737/1754/554 1740/1757/554 +f 1740/1757/554 1739/1756/554 1742/1759/554 +f 1742/1759/554 1741/1758/554 1744/1761/554 +f 1744/1761/554 1743/1760/554 1746/1763/554 +f 1746/1763/554 1745/1762/554 1748/1765/554 +f 1748/1765/554 1747/1764/554 1749/1766/554 +f 1760/1777/637 1750/1767/630 1752/1769/632 +f 1812/1829/669 1753/1770/633 1755/1772/635 +f 1765/1782/641 1759/1776/636 1760/1777/637 +f 1755/1772/635 1754/1771/634 1762/1779/639 +f 2883/2940/746 1764/1781/640 1765/1782/641 +f 1762/1779/639 1761/1778/638 1767/1784/643 +f 1776/1793/650 1769/1786/644 1771/1788/646 +f 1767/1784/643 1766/1783/642 1773/1790/648 +f 1781/1798/654 1775/1792/649 1776/1793/650 +f 1773/1790/648 1772/1789/647 1778/1795/652 +f 1786/1803/657 1780/1797/653 1781/1798/654 +f 1778/1795/652 1777/1794/651 1783/1800/656 +f 1791/1808/660 1785/1802/651 1786/1803/657 +f 1783/1800/656 1782/1799/655 1788/1805/654 +f 1796/1813/648 1790/1807/659 1791/1808/660 +f 1788/1805/654 1787/1804/658 1793/1810/661 +f 1801/1818/664 1795/1812/662 1796/1813/648 +f 1793/1810/661 1792/1809/644 1798/1815/663 +f 1807/1824/667 1800/1817/638 1801/1818/664 +f 2884/2941/746 1802/1819/640 1804/1821/641 +f 1811/1828/635 1806/1823/666 1807/1824/667 +f 1804/1821/641 1803/1820/665 1809/1826/668 +f 1752/1769/632 1751/1768/631 1811/1828/635 +f 1809/1826/668 1808/1825/630 1812/1829/669 +f 1830/1847/687 1819/1836/676 1828/1845/685 +f 1842/1859/699 1839/1856/696 1830/1847/687 +f 1871/1888/728 1841/1858/698 1842/1859/699 +f 1852/1869/709 1847/1864/704 1848/1865/705 +f 1847/1864/704 1852/1869/709 1850/1867/707 +f 1860/1877/717 1843/1860/700 1857/1874/714 +f 1850/1867/707 1862/1879/719 1847/1864/704 +f 1847/1864/704 1863/1880/720 1845/1862/702 +f 1860/1877/717 1857/1874/714 1862/1879/719 +f 1854/1871/711 1861/1878/718 1857/1874/714 +f 1867/1884/724 1865/1882/722 1846/1863/703 +f 1878/1895/735 1866/1883/723 1867/1884/724 +f 1870/1887/727 1868/1885/725 1813/1830/670 +f 2333/2362/959 1869/1886/726 1870/1887/727 +f 1830/1847/687 1840/1857/697 1819/1836/676 +f 1841/1858/698 1871/1888/728 1873/1890/730 +f 1880/1897/737 1877/1894/734 1867/1884/724 +f 1882/1899/739 1879/1896/736 1880/1897/737 +f 2332/2361/958 1881/1898/738 1880/1897/737 +f 1872/1889/729 1883/1900/740 1884/1901/741 +f 1892/1909/651 1888/1905/652 1890/1907/742 +f 1896/1913/655 1891/1908/656 1892/1909/651 +f 1890/1907/742 1889/1906/648 1894/1911/642 +f 1898/1915/744 1895/1912/654 1896/1913/655 +f 1902/1919/644 1897/1914/743 1898/1915/744 +f 1894/1911/642 1893/1910/643 1900/1917/638 +f 1904/1921/645 1901/1918/746 1902/1919/644 +f 1908/1925/665 1903/1920/641 1904/1921/645 +f 1900/1917/638 1899/1916/745 1906/1923/634 +f 1910/1927/630 1907/1924/668 1908/1925/665 +f 1911/1928/633 1909/1926/669 1910/1927/630 +f 1906/1923/634 1905/1922/635 1911/1928/633 +f 1916/1933/564 1912/1929/564 1914/1931/564 +f 1920/1937/564 1915/1932/564 1916/1933/564 +f 1914/1931/564 1913/1930/564 1918/1935/564 +f 1922/1939/564 1919/1936/564 1920/1937/564 +f 1925/1943/564 1921/1938/564 1922/1939/564 +f 1918/1935/564 1917/1934/564 1924/1941/564 +f 1927/1945/564 1885/1942/564 1925/1943/564 +f 1931/1949/564 1926/1944/564 1927/1945/564 +f 1924/1941/564 1923/1940/564 1929/1947/564 +f 1933/1951/564 1930/1948/564 1931/1949/564 +f 1934/1952/564 1932/1950/564 1933/1951/564 +f 1929/1947/564 1928/1946/564 1934/1952/564 +f 1942/1960/648 1938/1956/647 1940/1958/652 +f 1951/1969/643 1941/1959/642 1942/1960/648 +f 1940/1958/652 1939/1957/651 1945/1963/656 +f 1945/1963/656 1944/1962/655 1949/1967/654 +f 1961/1979/639 1950/1968/638 1951/1969/643 +f 1949/1967/654 1948/1966/658 1954/1972/747 +f 1974/1992/752 1957/1975/748 1959/1977/749 +f 1971/1989/635 1960/1978/634 1961/1979/639 +f 2885/2942/750 1963/1981/750 1965/1983/751 +f 1958/1976/748 1957/1975/748 1969/1987/668 +f 1973/1991/669 1970/1988/633 1971/1989/635 +f 1969/1987/668 1968/1986/630 1973/1991/669 +f 1964/1982/751 1974/1992/752 1965/1983/751 +f 2886/2943/754 1954/1972/747 1975/1994/753 +f 2885/2942/750 1976/1995/754 1963/1981/750 +f 2887/2944/564 1887/1997/564 1978/1999/564 +f 2022/2044/779 1982/2004/756 1984/2006/758 +f 1984/2006/758 1983/2005/757 1990/2012/760 +f 1990/2012/760 1989/2011/759 1994/2016/762 +f 2888/2945/1217 1997/2019/763 1999/2021/765 +f 1999/2021/765 1998/2020/764 2003/2025/767 +f 2003/2025/767 2002/2024/766 2007/2029/769 +f 2889/2946/564 2008/2030/564 2010/2032/770 +f 2890/2947/771 2010/2032/770 2013/2035/771 +f 2007/2029/769 2006/2028/768 2015/2037/773 +f 2021/2043/778 2017/2039/774 2019/2041/776 +f 2478/2511/1052 2020/2042/777 2021/2043/778 +f 2015/2037/773 2014/2036/772 2022/2044/779 +f 2277/2302/931 2026/2048/783 2023/2045/780 +f 2019/2041/776 2018/2040/775 2038/2060/793 +f 2891/2948/549 2043/2065/549 2045/2067/549 +f 2853/2891/1215 2051/2073/798 2053/2075/800 +f 2892/2949/549 2058/2080/549 2060/2082/549 +f 2052/2074/799 2065/2087/804 2053/2075/800 +f 2434/2465/1034 2067/2089/806 2069/2091/807 +f 2893/2950/572 2078/2101/572 2080/2103/572 +f 2080/2103/572 2079/2102/572 2082/2105/572 +f 2081/2104/572 2083/2106/572 2082/2105/572 +f 2040/2062/795 2039/2061/794 2094/2117/812 +f 2816/2854/797 2095/2118/787 2096/2119/813 +f 2894/2951/1073 2103/2126/819 2105/2128/589 +f 1583/1594/586 2106/2129/821 2108/2131/816 +f 2160/2183/843 2118/2141/828 2120/2143/830 +f 2175/2436/570 2149/2172/570 2085/2108/570 +f 2895/2952/564 2166/2190/564 2168/2192/564 +f 2278/2303/932 2177/2202/582 2179/2204/852 +f 2896/2953/1218 2186/2211/859 2188/2213/861 +f 2382/2411/1008 2189/2214/862 2184/2209/857 +f 2210/2235/883 2206/2231/879 2208/2233/881 +f 2897/2954/570 2258/2283/570 2260/2285/570 +f 2898/2955/554 2261/2286/554 2263/2288/554 +f 2899/2956/1219 2264/2289/925 2266/2291/925 +f 2900/2957/549 2267/2292/549 2269/2294/549 +f 2901/2958/570 2270/2295/927 2272/2297/570 +f 2252/2277/923 2025/2047/782 2278/2303/932 +f 2287/2312/582 2282/2307/582 2283/2308/933 +f 2282/2307/582 2284/2309/582 2252/2277/923 +f 2283/2308/933 2285/2310/934 2287/2312/582 +f 2285/2310/934 2283/2308/933 2289/2314/935 +f 2023/2045/780 2027/2049/784 2292/2317/936 +f 2312/2339/570 2317/2345/570 2309/2340/570 +f 2322/2351/948 2318/2347/945 2320/2349/947 +f 2902/2959/564 2321/2350/564 2322/2351/948 +f 2903/2960/1220 1817/1834/674 2323/2352/949 +f 1871/1888/728 2324/2353/950 1872/1889/729 +f 2324/2353/950 2325/2354/951 1883/1900/740 +f 2334/2363/960 2325/2354/951 2327/2356/953 +f 1871/1888/728 1842/1859/699 2324/2353/950 +f 1836/1853/693 2329/2358/955 1835/1852/692 +f 2904/2961/1221 2329/2358/955 2328/2357/954 +f 2904/2961/1221 2328/2357/954 1879/1896/736 +f 1831/1848/688 1828/1845/685 2331/2360/957 +f 1819/1836/676 1821/1838/678 1833/1850/690 +f 2208/2233/881 2207/2232/880 2239/2264/912 +f 2370/2399/996 2347/2376/973 2202/2227/875 +f 2347/2376/973 2348/2377/974 2203/2228/876 +f 2351/2380/977 2352/2381/978 2354/2383/980 +f 2357/2386/983 2353/2382/979 2355/2384/981 +f 2344/2373/970 2350/2379/976 2360/2389/986 +f 2366/2395/992 2365/2394/991 2352/2381/978 +f 2364/2393/990 2366/2395/992 2351/2380/977 +f 2366/2395/992 2360/2389/986 2365/2394/991 +f 2366/2395/992 2364/2393/990 2360/2389/986 +f 2354/2383/980 2368/2397/994 2190/2215/863 +f 2368/2397/994 2244/2269/917 2191/2216/864 +f 2245/2270/918 2369/2398/995 2213/2238/886 +f 2369/2398/995 2227/2252/900 2211/2236/884 +f 2237/2262/910 2370/2399/996 2207/2232/880 +f 2229/2254/902 2349/2378/975 2230/2255/903 +f 2219/2244/892 2371/2400/997 2191/2216/864 +f 2371/2400/997 2373/2402/999 2372/2401/998 +f 2374/2403/1000 2235/2260/908 2372/2401/998 +f 2198/2223/871 2375/2404/1001 2231/2256/904 +f 2198/2223/871 2236/2261/909 2377/2406/1003 +f 2375/2404/1001 2378/2407/1004 2229/2254/902 +f 2905/2962/1222 2379/2408/1005 2375/2404/1001 +f 2378/2407/1004 2379/2408/1005 2232/2257/905 +f 2232/2257/905 2203/2228/876 2378/2407/1004 +f 2241/2266/914 2380/2409/1006 2240/2265/913 +f 2217/2242/890 2380/2409/1006 2218/2243/891 +f 2371/2400/997 2218/2243/891 2373/2402/999 +f 2226/2251/899 2239/2264/912 2234/2259/907 +f 2189/2214/862 2382/2411/1008 2187/2212/860 +f 2054/2076/801 2383/2412/1009 2118/2141/828 +f 2383/2412/1009 2054/2076/801 2094/2117/812 +f 2169/2193/847 2171/2195/849 2387/2416/846 +f 2387/2416/846 2386/2415/1010 2391/2420/827 +f 2391/2420/827 2390/2419/1012 2393/2422/826 +f 2393/2422/826 2392/2421/1013 2395/2424/1015 +f 2906/2963/554 2400/2429/554 2401/2430/554 +f 2606/2641/1097 2407/2437/1023 2409/2439/1025 +f 2407/2437/1023 2410/2964/554 2408/2438/1024 +f 2907/2965/564 2412/2966/564 2414/2967/564 +f 2908/2968/570 2417/2448/570 2419/2450/570 +f 2909/2969/564 2420/2451/564 2422/2453/564 +f 2910/2970/1223 2426/2457/1027 2428/2459/1027 +f 2433/2464/1033 2432/2463/1032 2430/2461/1030 +f 2432/2463/1032 2433/2464/1033 2434/2465/1034 +f 2911/2971/549 2435/2466/549 2437/2468/549 +f 2912/2972/927 2443/2474/927 2445/2476/570 +f 2163/2187/845 2463/2494/582 2278/2303/932 +f 2913/2973/582 2464/2495/1044 2178/2203/582 +f 2914/2974/935 2179/2204/852 2465/2496/935 +f 2468/2499/1047 2156/2179/839 2467/2498/1046 +f 2152/2175/837 2469/2500/1048 2150/2173/835 +f 2740/2777/1145 2471/2502/1050 2473/2504/1051 +f 2467/2498/1046 2151/2174/836 2470/2501/1049 +f 2915/2975/564 2474/2505/564 2476/2507/564 +f 2020/2042/777 2478/2511/1052 2480/2513/570 +f 2916/2976/1053 2481/2514/1053 2055/2077/802 +f 2917/2977/1053 2439/2470/1036 2482/2515/1053 +f 2533/2566/1059 2490/2523/570 2492/2525/1055 +f 2918/2978/1224 2493/2526/564 2495/2528/1056 +f 2919/2979/572 2496/2529/572 2498/2531/572 +f 2920/2980/582 2499/2532/582 2501/2534/582 +f 2497/2530/572 2502/2535/572 2498/2531/572 +f 2918/2978/1224 2495/2528/1056 2491/2524/1054 +f 2507/2540/1057 2504/2537/1057 2506/2539/564 +f 2539/2572/1069 2504/2537/1057 2508/2541/1058 +f 2921/2981/1061 2509/2542/1059 2511/2544/1061 +f 2922/2982/582 2512/2545/582 2514/2547/582 +f 2488/2521/582 2514/2547/582 2487/2520/582 +f 2529/2562/1066 2518/2551/570 2520/2553/1063 +f 2923/2983/554 2521/2554/554 2523/2556/1065 +f 2528/2561/572 2524/2557/572 2526/2559/572 +f 2924/2984/572 2503/2536/572 2527/2560/572 +f 2924/2984/572 2527/2560/572 2526/2559/572 +f 2520/2553/1063 2523/2556/1065 2529/2562/1066 +f 2925/2985/554 2530/2563/1067 2532/2565/554 +f 2492/2525/1055 2520/2553/1063 2533/2566/1059 +f 2920/2980/582 2501/2534/582 2486/2519/582 +f 2531/2564/1067 2530/2563/1067 2538/2571/1068 +f 2537/2570/1068 2539/2572/1069 2538/2571/1068 +f 2926/2986/1072 2552/2585/1072 2554/2587/1072 +f 2927/2987/1225 2560/2593/1078 2562/2595/1080 +f 2928/2988/1226 2573/2606/1086 2575/2608/1087 +f 2929/2989/1227 2576/2609/549 2578/2611/1088 +f 2608/2643/1091 2582/2615/549 2584/2617/1091 +f 2930/2990/572 2585/2618/1092 2587/2620/572 +f 2611/2991/570 2586/2621/1093 2588/2623/570 +f 2931/2992/1094 2589/2624/582 2591/2626/1094 +f 2854/2892/1216 2595/2630/1095 2065/2087/804 +f 2932/2993/572 2599/2634/572 2601/2636/572 +f 2599/2634/572 2602/2637/572 2600/2635/572 +f 2596/2631/1026 2593/2628/1026 2425/2456/1026 +f 2320/2349/947 2319/2348/946 2409/2439/1025 +f 2930/2990/572 2587/2620/572 2584/2617/1091 +f 2590/2625/582 2589/2624/582 2610/2645/1100 +f 2931/2992/1094 2591/2626/1094 2588/2647/570 +f 2933/2994/549 2612/2995/549 2609/2996/1099 +f 2614/2650/1101 2088/2111/808 2615/2651/809 +f 2934/2997/572 2616/2652/572 2618/2654/572 +f 2617/2653/572 2619/2655/572 2618/2654/572 +f 2619/2655/572 2621/2657/572 2620/2656/572 +f 2161/2184/570 2623/2659/570 2075/2100/570 +f 2800/2838/549 2627/2663/806 2629/2665/1102 +f 2935/2998/582 2630/2666/582 2632/2668/582 +f 2638/2674/549 2639/2675/549 2636/2672/549 +f 2936/2999/1105 2642/2678/1104 2644/2680/1105 +f 2788/2826/1179 2645/2681/1106 2629/2665/1102 +f 2937/3000/564 2649/2685/564 2651/2687/564 +f 2928/2988/1226 2938/3001/1228 2573/2606/1086 +f 2929/2989/1227 2578/2611/1088 2656/2692/1110 +f 2939/3002/549 2660/2696/549 2662/2698/549 +f 2940/3003/1229 2663/2699/1111 2665/2701/1113 +f 2669/2705/1117 2666/2702/1114 2668/2704/1116 +f 2663/2699/1111 2669/2705/1117 2664/2700/1112 +f 2941/3004/1118 2670/2706/1118 2672/2708/1119 +f 2941/3004/1118 2673/2709/554 2670/2706/1118 +f 2699/2735/572 2675/2711/572 2677/2713/572 +f 2656/2692/1110 2655/2691/1109 2682/2718/1120 +f 2298/2323/941 2301/2329/942 2684/2720/1122 +f 2568/2601/554 2647/2683/554 2569/2602/1085 +f 2684/2720/1122 2691/2727/1124 2298/2323/941 +f 2302/2327/943 2692/2728/1103 2694/2730/1125 +f 2624/2660/943 2695/2731/1125 2641/2677/1103 +f 2942/3005/570 2667/2703/1115 2697/2733/570 +f 2700/2736/572 2462/2509/572 2698/2734/572 +f 2943/3006/1126 2701/2738/1126 2703/2740/1126 +f 2759/2797/1151 2704/2741/823 2558/2591/1076 +f 2944/3007/549 2705/2742/549 2707/2744/549 +f 2711/2748/1129 2708/2745/1127 2710/2747/1128 +f 2936/2999/1105 2644/2680/1105 2711/2748/1129 +f 2945/3008/549 2712/2749/549 2642/2678/1104 +f 2946/3009/1130 2713/2750/1130 2715/2752/1130 +f 2947/3010/1131 2716/2753/1131 2718/2755/1131 +f 2948/3011/554 2719/2756/554 2721/2758/554 +f 2949/3012/1132 2722/2759/1132 2724/2761/1132 +f 2731/2768/1139 2725/2762/1133 2471/2502/1050 +f 2736/2773/1143 2728/2765/1136 2730/2767/1138 +f 2725/2762/1133 2731/2768/1139 2733/2770/1134 +f 2730/2767/1138 2734/2771/1141 2736/2773/1143 +f 2728/2765/1136 2727/2764/1135 2729/2766/1137 +f 2743/2780/1147 2737/2774/1137 2739/2776/1144 +f 2473/2504/1051 2738/2775/1046 2733/2770/1134 +f 2733/2770/1134 2732/2769/1140 2473/2504/1051 +f 2739/2776/1144 2741/2778/1048 2743/2780/1147 +f 2555/2588/1073 2099/2122/816 2649/2685/564 +f 2748/2786/1148 2749/2787/1149 2566/2599/1084 +f 2575/2608/1087 2574/2607/824 2759/2797/1151 +f 2950/3013/1230 2760/2798/1152 2762/2800/1154 +f 2765/2803/1157 2429/2460/1029 2763/2801/1155 +f 2627/2663/806 2766/2804/1033 2628/2664/1034 +f 2764/2802/1156 2767/2805/1158 2768/2806/1159 +f 2775/2813/1166 2769/2807/1160 2771/2809/1162 +f 2771/2809/1162 2770/2808/1161 2773/2811/1164 +f 2779/2817/1170 2774/2812/1165 2775/2813/1166 +f 2773/2811/1164 2772/2810/1163 2777/2815/1168 +f 2783/2821/1174 2778/2816/1169 2779/2817/1170 +f 2777/2815/1168 2776/2814/1167 2781/2819/1172 +f 2787/2825/1178 2782/2820/1173 2783/2821/1174 +f 2781/2819/1172 2780/2818/1171 2785/2823/1176 +f 2789/2827/1180 2786/2824/1177 2787/2825/1178 +f 2785/2823/1176 2784/2822/1175 2788/2826/1179 +f 2762/2800/1154 2761/2799/1153 2789/2827/1180 +f 2951/3014/1157 2790/2828/572 2792/2830/1181 +f 2952/3015/549 2795/2833/549 2797/2835/549 +f 2633/2669/564 2794/2832/564 2799/2837/564 +f 2069/2091/807 2068/2090/549 2629/2665/1102 +f 2805/2843/1186 2806/2844/1187 2801/2839/1182 +f 2806/2844/1187 2808/2846/1189 2807/2845/1188 +f 2808/2846/1189 2812/2850/1191 2809/2847/937 +f 2812/2850/1191 2810/2848/1190 2813/2851/944 +f 2096/2119/813 2249/2274/920 2816/2854/797 +f 2250/2275/921 2160/2183/843 2817/2855/1193 +f 2817/2855/1193 2815/2853/1192 2250/2275/921 +f 2824/2862/1200 2818/2856/1194 2820/2858/1196 +f 2826/2864/1202 2819/2857/1195 2821/2859/1197 +f 2820/2858/1196 2822/2860/1198 2824/2862/1200 +f 2804/2842/1185 2182/2207/855 2805/2843/1186 +f 2805/2843/1186 2394/2423/1014 2806/2844/1187 +f 2808/2846/1189 2390/2419/1012 2812/2850/1191 +f 2808/2846/1189 2806/2844/1187 2390/2419/1012 +f 2812/2850/1191 2386/2415/1010 2810/2848/1190 +f 2257/2282/554 2828/2866/554 2255/2280/554 +f 2254/2279/924 2810/2848/1190 2389/2418/1011 +f 2041/2063/796 2246/2271/919 2036/2058/791 +f 2036/2058/791 2254/2279/924 2041/2063/796 +f 2290/2315/570 2316/2344/570 2279/2304/570 +f 2855/2893/1026 2837/2875/1026 2842/2880/1026 +f 2843/2881/1026 2605/2640/1026 2844/2882/1026 +f 2953/3016/1231 2845/2883/1207 2847/2885/1209 +f 2953/3016/1231 2847/2885/1209 2849/2887/1211 +f 2954/3017/1210 2850/2888/1212 2852/2890/1214 +f 2051/2073/798 2853/2891/1215 2850/2888/1212 +f 2845/2883/1207 2595/2630/1095 2846/2884/1208 +f 2839/2877/1026 2592/2627/1026 2840/2878/1026 +f 2315/2343/570 2161/2894/570 2310/2337/570 +f 2955/3018/572 2856/2895/572 2858/2897/572 +f 2956/3019/570 2862/2901/570 2864/2903/570 +f 2859/2898/554 2861/2900/554 2866/3020/554 +f 1472/1483/549 1474/1485/549 2957/3021/549 +f 1472/1483/549 1477/1488/549 1476/1487/549 +f 1477/1488/549 1472/1483/549 2957/3021/549 +f 1555/1566/581 1475/1486/550 1477/1488/549 diff --git a/src/main/resources/assets/hbm/models/weapons/benelli_new.obj b/src/main/resources/assets/hbm/models/weapons/benelli_new.obj new file mode 100644 index 000000000..81b43a6ee --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/benelli_new.obj @@ -0,0 +1,5827 @@ +# Blender v2.79 (sub 0) OBJ File: '' +# www.blender.org +o Cube.007_Cube.012 +v -0.749291 3.198776 0.999861 +v -0.925561 3.198776 0.999861 +v -0.749291 3.375046 0.999861 +v -0.925561 3.198776 1.249144 +v 0.748885 3.197617 0.999051 +v 0.748885 3.373887 0.999051 +v 0.925155 3.197617 0.999051 +v 0.925155 3.197617 1.248335 +v 0.748885 3.373887 1.248335 +v 0.748885 3.197617 1.248335 +v -0.749291 3.375046 1.249144 +v -0.750000 3.200001 1.250000 +v -0.749291 3.198776 1.249144 +v 0.748869 3.197661 -1.749421 +v 0.925138 3.197661 -1.749422 +v 0.748868 3.021391 -1.749422 +v 0.748869 3.021390 3.750661 +v 0.925139 3.197660 3.750661 +v 0.748869 3.197660 3.750661 +v -0.749187 3.199502 -1.749413 +v -0.749187 3.023233 -1.749413 +v -0.925457 3.199503 -1.749413 +v -0.925456 3.199502 3.750652 +v -0.749186 3.023232 3.750652 +v -0.749186 3.199502 3.750652 +v -0.749291 3.198776 3.499861 +v -0.925561 3.198776 3.499861 +v -0.749291 3.375046 3.499861 +v -0.925561 3.198776 3.749144 +v 0.748885 3.197617 3.499051 +v 0.748885 3.373887 3.499051 +v 0.925155 3.197617 3.499051 +v 0.925155 3.197617 3.748335 +v 0.748885 3.373887 3.748335 +v 0.748885 3.197617 3.748335 +v -0.749291 3.375046 3.749144 +v -0.750000 3.200001 3.750000 +v -0.749291 3.198776 3.749144 +v -0.749291 3.198776 2.999861 +v -0.925561 3.198776 2.999861 +v -0.749291 3.375046 2.999861 +v -0.925561 3.198776 3.249144 +v 0.748885 3.197617 2.999051 +v 0.748885 3.373887 2.999051 +v 0.925155 3.197617 2.999051 +v 0.925155 3.197617 3.248334 +v 0.748885 3.373887 3.248334 +v 0.748885 3.197617 3.248334 +v -0.749291 3.375046 3.249144 +v -0.750000 3.200001 3.250000 +v -0.749291 3.198776 3.249144 +v -0.749291 3.198776 2.499861 +v -0.925561 3.198776 2.499861 +v -0.749291 3.375046 2.499861 +v -0.925561 3.198776 2.749144 +v 0.748885 3.197617 2.499051 +v 0.748885 3.373887 2.499051 +v 0.925155 3.197617 2.499051 +v 0.925155 3.197617 2.748335 +v 0.748885 3.373887 2.748335 +v 0.748885 3.197617 2.748335 +v -0.749291 3.375046 2.749144 +v -0.750000 3.200001 2.750000 +v -0.749291 3.198776 2.749144 +v -0.749291 3.198776 1.999861 +v -0.925561 3.198776 1.999861 +v -0.749291 3.375046 1.999861 +v -0.925561 3.198776 2.249144 +v 0.748885 3.197617 1.999051 +v 0.748885 3.373887 1.999051 +v 0.925155 3.197617 1.999051 +v 0.925155 3.197617 2.248335 +v 0.748885 3.373887 2.248335 +v 0.748885 3.197617 2.248335 +v -0.749291 3.375046 2.249144 +v -0.750000 3.200001 2.250000 +v -0.749291 3.198776 2.249144 +v -0.749291 3.198776 1.499861 +v -0.925561 3.198776 1.499861 +v -0.749291 3.375046 1.499861 +v -0.925561 3.198776 1.749144 +v 0.748885 3.197617 1.499051 +v 0.748885 3.373887 1.499051 +v 0.925155 3.197617 1.499051 +v 0.925155 3.197617 1.748335 +v 0.748885 3.373887 1.748335 +v 0.748885 3.197617 1.748335 +v -0.749291 3.375046 1.749144 +v -0.750000 3.200001 1.750000 +v -0.749291 3.198776 1.749144 +v -0.749291 3.198776 0.499861 +v -0.925561 3.198776 0.499861 +v -0.749291 3.375046 0.499861 +v -0.925561 3.198776 0.749144 +v 0.748885 3.197617 0.499051 +v 0.748885 3.373887 0.499051 +v 0.925155 3.197617 0.499051 +v 0.925155 3.197617 0.748335 +v 0.748885 3.373887 0.748335 +v 0.748885 3.197617 0.748335 +v -0.749291 3.375046 0.749144 +v -0.750000 3.200001 0.750000 +v -0.749291 3.198776 0.749144 +v -0.749291 3.198776 -0.000139 +v -0.925561 3.198776 -0.000139 +v -0.749291 3.375046 -0.000139 +v -0.925561 3.198776 0.249144 +v 0.748885 3.197617 -0.000949 +v 0.748885 3.373887 -0.000949 +v 0.925155 3.197617 -0.000949 +v 0.925155 3.197617 0.248335 +v 0.748885 3.373887 0.248335 +v 0.748885 3.197617 0.248335 +v -0.749291 3.375046 0.249144 +v -0.750000 3.200001 0.250000 +v -0.749291 3.198776 0.249144 +v -0.749291 3.198776 -0.500139 +v -0.925561 3.198776 -0.500139 +v -0.749291 3.375046 -0.500139 +v -0.925561 3.198776 -0.250856 +v 0.748885 3.197617 -0.500949 +v 0.748885 3.373887 -0.500949 +v 0.925155 3.197617 -0.500949 +v 0.925155 3.197617 -0.251665 +v 0.748885 3.373887 -0.251665 +v 0.748885 3.197617 -0.251665 +v -0.749291 3.375046 -0.250856 +v -0.750000 3.200001 -0.250000 +v -0.749291 3.198776 -0.250856 +v -0.749291 3.198776 -1.000139 +v -0.925561 3.198776 -1.000139 +v -0.749291 3.375046 -1.000139 +v -0.925561 3.198776 -0.750855 +v 0.748885 3.197617 -1.000948 +v 0.748885 3.373887 -1.000948 +v 0.925155 3.197617 -1.000948 +v 0.925155 3.197617 -0.751665 +v 0.748885 3.373887 -0.751665 +v 0.748885 3.197617 -0.751665 +v -0.749291 3.375046 -0.750855 +v -0.750000 3.200001 -0.749999 +v -0.749291 3.198776 -0.750855 +v -0.749291 3.198776 -1.500139 +v -0.925561 3.198776 -1.500139 +v -0.749291 3.375046 -1.500139 +v -0.925561 3.198776 -1.250856 +v 0.748885 3.197617 -1.500949 +v 0.748885 3.373887 -1.500949 +v 0.925155 3.197617 -1.500949 +v 0.925155 3.197617 -1.251665 +v 0.748885 3.373887 -1.251665 +v 0.748885 3.197617 -1.251665 +v -0.749291 3.375046 -1.250856 +v -0.750000 3.200001 -1.249999 +v -0.749291 3.198776 -1.250856 +v -0.749291 3.198776 -1.751088 +v -0.925561 3.198776 -1.751088 +v -0.749291 3.375046 -1.751088 +v -0.925561 3.198776 -1.501805 +v 0.748885 3.197617 -1.751898 +v 0.748885 3.373887 -1.751898 +v 0.925155 3.197617 -1.751898 +v 0.925155 3.197617 -1.502614 +v 0.748885 3.373887 -1.502614 +v 0.748885 3.197617 -1.502614 +v -0.749291 3.375046 -1.501805 +v -0.750000 3.200001 -1.500949 +v -0.749291 3.198776 -1.501805 +v -0.750000 1.350001 -10.700001 +v -0.692910 1.994416 -10.700001 +v 0.750000 1.350001 -10.700001 +v 0.692910 1.994415 -1.700001 +v 0.692910 1.994416 -10.700001 +v 0.750000 1.350000 -1.700001 +v 0.692910 1.005585 -10.700001 +v 0.692910 1.005584 -1.700001 +v 0.530330 0.713604 -10.700001 +v 0.530330 0.713604 -1.700001 +v 0.287013 0.518509 -10.700001 +v 0.287013 0.518508 -1.700001 +v 0.000000 0.450000 -10.700001 +v 0.000000 0.450000 -1.700001 +v -0.287012 0.518508 -10.700001 +v -0.287012 0.518508 -1.700001 +v -0.530330 0.713604 -10.700001 +v -0.530330 0.713603 -1.700001 +v -0.692910 1.005585 -10.700001 +v -0.692910 1.005584 -1.700001 +v -0.750000 1.350000 -1.700001 +v -0.692910 1.994415 -1.700001 +v 0.000000 3.000000 -1.700000 +v 0.129410 2.982966 -19.500000 +v 0.000000 3.000003 -19.500000 +v 0.129410 2.982962 -1.700000 +v 0.250000 2.933016 -19.500000 +v 0.250000 2.933012 -1.700000 +v 0.353553 2.853557 -19.500000 +v 0.353553 2.853553 -1.700000 +v 0.433013 2.750004 -19.500000 +v 0.433013 2.750000 -1.700000 +v 0.482963 2.629413 -19.500000 +v 0.482963 2.629409 -1.700000 +v 0.500000 2.500003 -19.500000 +v 0.500000 2.500000 -1.700000 +v 0.482963 2.370594 -19.500000 +v 0.482963 2.370590 -1.700000 +v 0.433013 2.250003 -19.500000 +v 0.433013 2.250000 -1.700000 +v 0.353554 2.146450 -19.500000 +v 0.353554 2.146446 -1.700000 +v 0.250000 2.066991 -19.500000 +v 0.250000 2.066987 -1.700000 +v 0.129410 2.017040 -19.500000 +v 0.129410 2.017036 -1.700000 +v 0.000000 2.000003 -19.500000 +v 0.000000 2.000000 -1.700000 +v -0.129409 2.017040 -19.500000 +v -0.129409 2.017036 -1.700000 +v -0.250000 2.066991 -19.500000 +v -0.250000 2.066987 -1.700000 +v -0.353553 2.146450 -19.500000 +v -0.353553 2.146446 -1.700000 +v -0.433013 2.250003 -19.500000 +v -0.433013 2.250000 -1.700000 +v -0.482963 2.370594 -19.500000 +v -0.482963 2.370590 -1.700000 +v -0.500000 2.500003 -19.500000 +v -0.500000 2.500000 -1.700000 +v -0.482963 2.629413 -19.500000 +v -0.482963 2.629409 -1.700000 +v -0.433013 2.750003 -19.500000 +v -0.433013 2.749999 -1.700000 +v -0.353554 2.853557 -19.500000 +v -0.353554 2.853553 -1.700000 +v -0.250000 2.933016 -19.500000 +v -0.250000 2.933012 -1.700000 +v -0.129410 2.982966 -19.500000 +v -0.129410 2.982962 -1.700000 +v 0.217114 2.822436 -19.500000 +v 0.113208 2.865444 -4.500000 +v 0.113208 2.865475 -19.500000 +v 0.000000 2.050003 -17.850000 +v 0.494975 1.844978 -18.550001 +v 0.000000 2.050003 -18.550001 +v 0.494975 1.844978 -17.850000 +v 0.700000 1.350003 -18.550001 +v 0.700000 1.350003 -17.850000 +v 0.494975 0.855029 -18.550001 +v 0.494975 0.855028 -17.850000 +v 0.000000 0.650003 -18.550001 +v 0.000000 0.650003 -17.850000 +v -0.494975 0.855029 -18.550001 +v -0.494975 0.855029 -17.850000 +v -0.700000 1.350003 -18.550001 +v -0.700000 1.350003 -17.850000 +v -0.494975 1.844978 -18.550001 +v -0.494975 1.844978 -17.850000 +v 0.247487 1.102515 -19.300001 +v 0.350000 1.350003 -19.300001 +v 0.247487 1.597490 -19.300001 +v 0.000000 1.700003 -19.300001 +v -0.247487 1.597490 -19.300001 +v -0.350000 1.350003 -19.300001 +v -0.247487 1.102515 -19.300001 +v 0.247487 1.102515 -19.187502 +v 0.000000 1.000003 -19.187502 +v 0.000000 1.000003 -19.300001 +v 0.000000 1.700003 -19.187502 +v 0.247487 1.597490 -19.187502 +v 0.350000 1.350003 -19.187502 +v -0.247487 1.102515 -19.187502 +v 0.000000 1.750000 -1.199998 +v 0.103528 1.736374 -18.200001 +v 0.000000 1.750003 -18.200001 +v 0.103528 1.736370 -1.199998 +v 0.200000 1.696413 -18.200001 +v 0.200000 1.696410 -1.199998 +v 0.282843 1.632846 -18.200001 +v 0.282843 1.632842 -1.199998 +v 0.346410 1.550003 -18.200001 +v 0.346410 1.549999 -1.199998 +v 0.386370 1.453531 -18.200001 +v 0.386370 1.453527 -1.199998 +v 0.400000 1.350003 -18.200001 +v 0.400000 1.349999 -1.199998 +v 0.386370 1.246476 -18.200001 +v 0.386370 1.246472 -1.199998 +v 0.346410 1.150003 -18.200001 +v 0.346410 1.150000 -1.199998 +v 0.282843 1.067161 -18.200001 +v 0.282843 1.067157 -1.199998 +v 0.200000 1.003593 -18.200001 +v 0.200000 1.003590 -1.199998 +v 0.103528 0.963633 -18.200001 +v 0.103528 0.963629 -1.199998 +v 0.000000 0.950003 -18.200001 +v 0.000000 0.950000 -1.199998 +v -0.103527 0.963633 -18.200001 +v -0.103527 0.963629 -1.199998 +v -0.200000 1.003593 -18.200001 +v -0.200000 1.003589 -1.199998 +v -0.282843 1.067161 -18.200001 +v -0.282843 1.067157 -1.199998 +v -0.346410 1.150003 -18.200001 +v -0.346410 1.150000 -1.199998 +v -0.386370 1.246475 -18.200001 +v -0.386370 1.246472 -1.199998 +v -0.400000 1.350003 -18.200001 +v -0.400000 1.349999 -1.199998 +v -0.386370 1.453531 -18.200001 +v -0.386370 1.453527 -1.199998 +v -0.346410 1.550003 -18.200001 +v -0.346410 1.549999 -1.199998 +v -0.282843 1.632846 -18.200001 +v -0.282843 1.632842 -1.199998 +v -0.200000 1.696413 -18.200001 +v -0.200000 1.696410 -1.199998 +v -0.103528 1.736374 -18.200001 +v -0.103528 1.736370 -1.199998 +v 0.000000 1.850003 -15.850002 +v 0.129410 1.832966 -17.850002 +v 0.000000 1.850003 -17.850002 +v 0.129410 1.832966 -15.850002 +v 0.250000 1.783015 -17.850002 +v 0.250000 1.783015 -15.850002 +v 0.353553 1.703556 -17.850002 +v 0.353553 1.703556 -15.850002 +v 0.433013 1.600003 -17.850002 +v 0.433013 1.600003 -15.850002 +v 0.482963 1.479412 -17.850002 +v 0.482963 1.479412 -15.850002 +v 0.500000 1.350003 -17.850002 +v 0.500000 1.350003 -15.850002 +v 0.482963 1.220594 -17.850002 +v 0.482963 1.220594 -15.850002 +v 0.433013 1.100003 -17.850002 +v 0.433013 1.100003 -15.850002 +v 0.353554 0.996450 -17.850002 +v 0.353554 0.996450 -15.850002 +v 0.250000 0.916990 -17.850002 +v 0.250000 0.916990 -15.850002 +v 0.129410 0.867040 -17.850002 +v 0.129410 0.867040 -15.850002 +v 0.000000 0.850003 -17.850002 +v 0.000000 0.850003 -15.850002 +v -0.129409 0.867040 -17.850002 +v -0.129409 0.867040 -15.850002 +v -0.250000 0.916990 -17.850002 +v -0.250000 0.916990 -15.850002 +v -0.353553 0.996450 -17.850002 +v -0.353553 0.996449 -15.850002 +v -0.433013 1.100003 -17.850002 +v -0.433013 1.100003 -15.850002 +v -0.482963 1.220593 -17.850002 +v -0.482963 1.220593 -15.850002 +v -0.500000 1.350003 -17.850002 +v -0.500000 1.350002 -15.850002 +v -0.482963 1.479412 -17.850002 +v -0.482963 1.479412 -15.850002 +v -0.433013 1.600003 -17.850002 +v -0.433013 1.600003 -15.850002 +v -0.353554 1.703556 -17.850002 +v -0.353554 1.703556 -15.850002 +v -0.250000 1.783015 -17.850002 +v -0.250000 1.783015 -15.850002 +v -0.129410 1.832966 -17.850002 +v -0.129410 1.832966 -15.850002 +v 0.000000 1.850003 -15.400005 +v 0.129410 1.832966 -15.600006 +v 0.000000 1.850003 -15.600006 +v 0.129410 1.832966 -15.400005 +v 0.250000 1.783015 -15.600006 +v 0.250000 1.783015 -15.400005 +v 0.353553 1.703556 -15.600006 +v 0.353553 1.703556 -15.400005 +v 0.433013 1.600003 -15.600006 +v 0.433013 1.600003 -15.400005 +v 0.482963 1.479412 -15.600006 +v 0.482963 1.479412 -15.400005 +v 0.500000 1.350003 -15.600006 +v 0.500000 1.350003 -15.400005 +v 0.482963 1.220594 -15.600006 +v 0.482963 1.220594 -15.400005 +v 0.433013 1.100003 -15.600006 +v 0.433013 1.100003 -15.400005 +v 0.353554 0.996450 -15.600006 +v 0.353554 0.996450 -15.400005 +v 0.250000 0.916990 -15.600006 +v 0.250000 0.916990 -15.400005 +v 0.129410 0.867040 -15.600006 +v 0.129410 0.867040 -15.400005 +v 0.000000 0.850003 -15.600006 +v 0.000000 0.850003 -15.400005 +v -0.129409 0.867040 -15.600006 +v -0.129409 0.867040 -15.400005 +v -0.250000 0.916990 -15.600006 +v -0.250000 0.916990 -15.400005 +v -0.353553 0.996449 -15.600006 +v -0.353553 0.996449 -15.400005 +v -0.433013 1.100003 -15.600006 +v -0.433013 1.100003 -15.400005 +v -0.482963 1.220593 -15.600006 +v -0.482963 1.220593 -15.400005 +v -0.500000 1.350003 -15.600006 +v -0.500000 1.350003 -15.400005 +v -0.482963 1.479412 -15.600006 +v -0.482963 1.479412 -15.400005 +v -0.433013 1.600003 -15.600006 +v -0.433013 1.600003 -15.400005 +v -0.353554 1.703556 -15.600006 +v -0.353554 1.703556 -15.400005 +v -0.250000 1.783015 -15.600006 +v -0.250000 1.783015 -15.400005 +v -0.129410 1.832966 -15.600006 +v -0.129410 1.832966 -15.400005 +v 0.000000 1.850003 -15.050005 +v 0.129410 1.832966 -15.250006 +v 0.000000 1.850003 -15.250006 +v 0.129410 1.832966 -15.050005 +v 0.250000 1.783015 -15.250006 +v 0.250000 1.783015 -15.050005 +v 0.353553 1.703556 -15.250006 +v 0.353553 1.703556 -15.050005 +v 0.433013 1.600003 -15.250006 +v 0.433013 1.600003 -15.050005 +v 0.482963 1.479412 -15.250006 +v 0.482963 1.479412 -15.050005 +v 0.500000 1.350003 -15.250006 +v 0.500000 1.350003 -15.050005 +v 0.482963 1.220594 -15.250006 +v 0.482963 1.220594 -15.050005 +v 0.433013 1.100003 -15.250006 +v 0.433013 1.100003 -15.050005 +v 0.353554 0.996450 -15.250006 +v 0.353554 0.996450 -15.050005 +v 0.250000 0.916990 -15.250006 +v 0.250000 0.916990 -15.050005 +v 0.129410 0.867040 -15.250006 +v 0.129410 0.867040 -15.050005 +v 0.000000 0.850003 -15.250006 +v 0.000000 0.850003 -15.050005 +v -0.129409 0.867040 -15.250006 +v -0.129409 0.867040 -15.050005 +v -0.250000 0.916990 -15.250006 +v -0.250000 0.916990 -15.050005 +v -0.353553 0.996450 -15.250006 +v -0.353553 0.996450 -15.050005 +v -0.433013 1.100003 -15.250006 +v -0.433013 1.100003 -15.050005 +v -0.482963 1.220593 -15.250006 +v -0.482963 1.220593 -15.050005 +v -0.500000 1.350003 -15.250006 +v -0.500000 1.350003 -15.050005 +v -0.482963 1.479412 -15.250006 +v -0.482963 1.479412 -15.050005 +v -0.433013 1.600003 -15.250006 +v -0.433013 1.600003 -15.050005 +v -0.353554 1.703556 -15.250006 +v -0.353554 1.703556 -15.050005 +v -0.250000 1.783015 -15.250006 +v -0.250000 1.783015 -15.050005 +v -0.129410 1.832966 -15.250006 +v -0.129410 1.832966 -15.050005 +v 0.000000 1.850001 -10.700005 +v 0.129410 1.832966 -14.900005 +v 0.000000 1.850003 -14.900005 +v 0.129410 1.832963 -10.700005 +v 0.250000 1.783015 -14.900005 +v 0.250000 1.783013 -10.700005 +v 0.353553 1.703556 -14.900005 +v 0.353553 1.703553 -10.700005 +v 0.433013 1.600003 -14.900005 +v 0.433013 1.600001 -10.700005 +v 0.482963 1.479412 -14.900005 +v 0.482963 1.479409 -10.700005 +v 0.500000 1.350003 -14.900005 +v 0.500000 1.350001 -10.700005 +v 0.482963 1.220594 -14.900005 +v 0.482963 1.220591 -10.700005 +v 0.433013 1.100003 -14.900005 +v 0.433013 1.100001 -10.700005 +v 0.353554 0.996450 -14.900005 +v 0.353554 0.996448 -10.700005 +v 0.250000 0.916990 -14.900005 +v 0.250000 0.916987 -10.700005 +v 0.129410 0.867040 -14.900005 +v 0.129410 0.867037 -10.700005 +v 0.000000 0.850003 -14.900005 +v 0.000000 0.850001 -10.700005 +v -0.129409 0.867040 -14.900005 +v -0.129409 0.867037 -10.700005 +v -0.250000 0.916990 -14.900005 +v -0.250000 0.916987 -10.700005 +v -0.353553 0.996450 -14.900005 +v -0.353553 0.996446 -10.700005 +v -0.433013 1.100003 -14.900005 +v -0.433013 1.100001 -10.700005 +v -0.482963 1.220593 -14.900005 +v -0.482963 1.220590 -10.700005 +v -0.500000 1.350003 -14.900005 +v -0.500000 1.349999 -10.700005 +v -0.482963 1.479412 -14.900005 +v -0.482963 1.479409 -10.700005 +v -0.433013 1.600003 -14.900005 +v -0.433013 1.600001 -10.700005 +v -0.353554 1.703556 -14.900005 +v -0.353554 1.703553 -10.700005 +v -0.250000 1.783015 -14.900005 +v -0.250000 1.783013 -10.700005 +v -0.129410 1.832966 -14.900005 +v -0.129410 1.832963 -10.700005 +v 0.000000 2.880379 -19.500000 +v 0.303359 2.756258 -19.500000 +v 0.365776 2.674914 -19.500000 +v 0.401974 2.587524 -19.500000 +v 0.413496 2.500003 -19.500000 +v 0.401974 2.412482 -19.500000 +v 0.365776 2.325093 -19.500000 +v 0.303359 2.243749 -19.500000 +v 0.217114 2.177571 -19.500000 +v 0.113208 2.134532 -19.500000 +v 0.000000 2.119627 -19.500000 +v -0.113207 2.134532 -19.500000 +v -0.217114 2.177571 -19.500000 +v -0.303358 2.243749 -19.500000 +v -0.365776 2.325093 -19.500000 +v -0.401974 2.412482 -19.500000 +v -0.413496 2.500003 -19.500000 +v -0.401974 2.587524 -19.500000 +v -0.365776 2.674914 -19.500000 +v -0.303359 2.756258 -19.500000 +v -0.217115 2.822435 -19.500000 +v -0.113208 2.865475 -19.500000 +v -0.303359 2.756227 -4.500000 +v -0.217115 2.822405 -4.500000 +v -0.303358 2.243718 -4.500000 +v -0.365776 2.325062 -4.500000 +v 0.303359 2.243718 -4.500000 +v 0.217114 2.822405 -4.500000 +v -0.401974 2.412452 -4.500000 +v 0.217114 2.177541 -4.500000 +v 0.303359 2.756227 -4.500000 +v -0.413496 2.499972 -4.500000 +v 0.113208 2.134501 -4.500000 +v 0.365776 2.674883 -4.500000 +v -0.401974 2.587493 -4.500000 +v 0.000000 2.119597 -4.500000 +v 0.401974 2.587494 -4.500000 +v -0.365776 2.674883 -4.500000 +v -0.113207 2.134501 -4.500000 +v 0.413496 2.499973 -4.500000 +v -0.217114 2.177540 -4.500000 +v 0.401974 2.412452 -4.500000 +v 0.000000 2.880348 -4.500000 +v 0.365776 2.325063 -4.500000 +v -0.113208 2.865444 -4.500000 +v -0.247487 1.597490 -19.187502 +v -0.755718 0.647394 5.837500 +v 0.755718 -2.527644 7.135499 +v -0.755718 -2.527644 7.135499 +v -0.755718 -0.180467 8.289835 +v -0.859447 -0.780915 8.274623 +v -0.755718 -0.780915 8.274623 +v -0.755718 -3.377863 7.013356 +v 0.755718 -3.377863 7.013356 +v -0.755718 -2.987607 8.437500 +v 0.755718 -2.987607 8.437500 +v 0.755718 -2.817606 9.400000 +v 0.755718 -2.464953 7.305608 +v 0.860460 -3.026299 7.224965 +v 0.755718 -3.026299 7.224965 +v -0.755718 -0.688223 8.418876 +v 0.755718 -0.688223 8.418876 +v 0.755718 0.185424 9.259533 +v -0.755718 0.582394 8.302500 +v -0.755718 0.185424 9.259533 +v -0.755718 -0.369988 8.426938 +v 0.755718 -0.369988 8.426938 +v 0.755718 0.582394 8.302500 +v -1.000000 2.933334 -1.071110 +v -1.000000 0.800000 -1.699999 +v -1.000000 0.780398 -0.913832 +v 1.000000 0.800000 -1.699999 +v 1.000000 2.933334 -1.699999 +v 1.000000 1.698309 -0.676977 +v 1.000000 2.933304 -1.071133 +v -1.000000 2.933334 -1.699999 +v 1.000000 0.650225 4.306945 +v -1.000000 0.550646 8.300697 +v -1.000000 0.650225 4.306945 +v 1.000000 0.550646 8.300697 +v -1.000000 -3.878247 18.970343 +v 1.000000 2.932952 6.299709 +v 1.000000 -3.878247 18.970343 +v -1.000000 0.817814 19.398920 +v 1.000000 1.917567 8.277368 +v 1.155736 2.325624 6.986647 +v 1.000000 2.325624 6.986647 +v -1.000000 2.237243 7.108925 +v -1.185947 2.308128 6.984412 +v -1.000000 2.308128 6.984412 +v 1.000000 2.123852 8.290171 +v -1.000000 2.123852 8.290171 +v -1.000000 2.933334 6.300001 +v 1.000000 2.527876 7.012211 +v -0.750000 3.200001 3.750000 +v -0.750000 2.900000 -1.750000 +v -0.750000 2.900000 3.750000 +v 0.750000 3.200001 -1.750000 +v 0.750000 2.900000 3.750000 +v 0.750000 2.900000 -1.750000 +v 0.750000 3.200001 3.750000 +v -0.750000 3.200001 -1.750000 +v -0.250000 0.652645 5.427117 +v 0.250000 0.640000 5.690244 +v 0.250000 0.652645 5.427117 +v -0.250000 0.256794 5.586637 +v 0.250000 -0.181354 5.410000 +v -0.250000 -0.181354 5.410000 +v -0.250000 -0.031450 5.624102 +v 0.250000 0.160424 5.735405 +v 0.250000 -0.031450 5.624102 +v 0.250000 0.405741 5.904014 +v 0.250000 0.256794 5.586637 +v -0.250000 0.640000 5.690244 +v 0.250000 0.606441 5.842027 +v -0.250000 0.405741 5.904014 +v -0.250000 0.160424 5.735405 +v -0.250000 0.606441 5.842027 +v -0.500000 0.660000 2.970000 +v 0.500000 0.660000 4.294731 +v 0.500000 0.660000 2.970000 +v 0.500000 0.324113 3.675095 +v -0.500000 0.324113 3.675095 +v -0.500000 0.660000 4.294731 +v 0.500000 0.509328 4.170000 +v -0.500000 -0.124560 4.074054 +v 0.500000 -0.124560 4.074054 +v -0.500000 0.346295 4.124543 +v 0.500000 0.346295 4.124543 +v 0.500000 0.069553 4.199328 +v -0.500000 0.069553 4.199328 +v -0.500000 -0.236114 4.310554 +v 0.500000 -0.146776 4.438249 +v -0.500000 -0.351705 5.529659 +v 0.500000 -0.322895 4.675695 +v 0.500000 -0.351705 5.529659 +v -0.500000 -0.322895 4.675695 +v 0.500000 -0.236114 4.310554 +v 0.500000 -0.262769 5.520746 +v -0.500000 -0.146776 4.438249 +v -0.500000 -0.262769 5.520746 +v -0.500000 -0.202867 5.844228 +v 0.500000 -0.202867 5.844228 +v 0.500000 -0.157875 5.763871 +v -0.500000 0.158226 6.022319 +v 0.500000 0.158226 6.022319 +v -0.500000 0.239107 5.983576 +v 0.500000 0.239107 5.983576 +v -0.500000 -0.157875 5.763871 +v -0.750000 2.930000 6.000000 +v -0.500000 3.441713 5.759016 +v -0.750000 3.441713 5.759016 +v 0.750000 3.441713 5.759016 +v 0.750000 2.930000 6.000000 +v 0.750000 3.523953 4.644016 +v 0.750000 2.930000 3.800829 +v 0.500000 2.930000 6.000000 +v 0.500000 2.930000 3.800829 +v 0.500000 3.427887 3.897640 +v -0.750000 3.830230 5.170968 +v -0.500000 3.823139 5.393547 +v -0.500000 3.830230 5.170968 +v 0.500000 3.523953 4.644016 +v -0.750000 3.523953 4.644016 +v 0.500000 3.823139 5.393547 +v 0.750000 3.823139 5.393547 +v 0.500000 3.830230 5.170968 +v 0.750000 3.830230 5.170968 +v -0.500000 3.523953 4.644016 +v -0.496667 3.427887 3.897640 +v -0.500000 3.427887 3.897640 +v -0.750000 3.427887 3.897640 +v -0.500000 2.930000 3.800829 +v -0.750000 2.930000 3.800829 +v -0.500000 2.930000 6.000000 +v 0.496667 2.930000 3.800829 +v -0.750000 3.823139 5.393547 +v 0.500000 3.441713 5.759016 +v -0.496667 2.930000 3.800829 +v -0.496667 3.523953 4.644016 +v -1.000000 -3.606867 18.872658 +v -1.000000 0.608680 19.257383 +v -1.000000 1.899714 8.276260 +v -1.000000 0.761976 8.347678 +v -1.000000 2.527876 7.012211 +v -1.185947 1.899714 8.276260 +v -1.185947 2.237243 7.108925 +v -1.185947 0.761976 8.347678 +v -1.185947 0.608680 19.257383 +v -1.185947 -3.606867 18.872658 +v 1.000000 2.293221 7.043643 +v 1.000000 -3.628483 18.880440 +v 1.000000 0.817814 19.398920 +v 1.000000 0.745147 8.343928 +v 1.000000 0.625337 19.268656 +v 1.155736 0.745147 8.343928 +v 1.155736 2.293221 7.043643 +v 1.155736 1.917567 8.277368 +v 1.155736 -3.628483 18.880440 +v 1.155736 0.625337 19.268656 +v -0.755718 0.375138 6.127107 +v -0.755718 -2.470537 7.290457 +v -0.755718 -3.057612 7.206118 +v -0.755718 -2.724833 8.420519 +v -0.755718 -2.602371 9.113867 +v -0.755718 -2.817606 9.400000 +v -0.755718 0.126025 8.749284 +v -0.755718 0.318211 8.285953 +v -0.859447 0.375138 6.127107 +v -0.859447 -2.470537 7.290457 +v -0.859447 -2.724833 8.420519 +v -0.859447 0.318211 8.285953 +v -0.859447 -0.180467 8.289835 +v -0.859447 -2.602371 9.113867 +v -0.859447 0.126025 8.749284 +v -0.859447 -3.057612 7.206118 +v 0.755718 0.348518 6.155423 +v 0.755718 0.292380 8.284335 +v 0.755718 0.647394 5.837500 +v 0.755718 -2.581326 9.085890 +v 0.755718 -2.699138 8.418859 +v 0.755718 0.120217 8.699394 +v 0.755718 -0.789979 8.260518 +v 0.755718 -0.161936 8.276430 +v 0.860460 -0.789979 8.260518 +v 0.860460 -2.699138 8.418859 +v 0.860460 -2.464953 7.305608 +v 0.860460 0.292380 8.284335 +v 0.860460 -0.161936 8.276430 +v 0.860460 -2.581326 9.085890 +v 0.860460 0.348518 6.155423 +v 0.860460 0.120217 8.699394 +v 1.000000 2.933104 3.105046 +v -1.000000 2.933334 3.105221 +v 1.000000 0.780398 -0.913832 +v 1.000000 1.335998 -0.650505 +v 0.788792 1.270460 2.926924 +v 1.000000 1.270460 2.928254 +v 1.000000 2.371172 -0.726139 +v 1.000000 2.370995 2.978774 +v 0.788792 1.698309 -0.676977 +v 0.788792 2.370995 2.978774 +v 0.788792 1.666737 2.926896 +v 0.988511 1.668191 5.137841 +v 0.777303 1.668191 5.136976 +v 0.788792 2.371172 -0.726139 +v 0.788792 1.335998 -0.650505 +v 1.000000 1.666737 2.927761 +v 0.777303 1.271914 5.137004 +v 0.988511 1.271914 5.138335 +v -0.500000 0.509328 4.170000 +v 0.750000 3.427887 3.897640 +v -0.496667 3.823139 5.393547 +v -0.496667 3.830230 5.170968 +v 0.212415 3.387585 5.190104 +v 0.249773 3.433107 5.409896 +v 0.212415 3.387585 5.409896 +v 0.249773 3.433107 5.190104 +v 0.277533 3.485042 5.409896 +v 0.277533 3.485042 5.190104 +v 0.294628 3.541395 5.409896 +v 0.294628 3.541395 5.190104 +v 0.300400 3.600000 5.409896 +v 0.300400 3.600000 5.190104 +v 0.294628 3.658605 5.409896 +v 0.294628 3.658605 5.190104 +v 0.277533 3.714958 5.409896 +v 0.277533 3.714958 5.190104 +v 0.249773 3.766893 5.409896 +v 0.249773 3.766893 5.190104 +v 0.212415 3.812415 5.409896 +v 0.212415 3.812415 5.190104 +v 0.166893 3.849773 5.409896 +v 0.166893 3.849773 5.190104 +v 0.114958 3.877533 5.409896 +v 0.114958 3.877533 5.190104 +v 0.058605 3.894628 5.409896 +v 0.058605 3.894628 5.190104 +v 0.000000 3.900400 5.409896 +v 0.000000 3.900400 5.190104 +v -0.058605 3.894628 5.409896 +v -0.058605 3.894628 5.190104 +v -0.114958 3.877533 5.409896 +v -0.114958 3.877533 5.190104 +v -0.166893 3.849773 5.409896 +v -0.166893 3.849773 5.190104 +v -0.212415 3.812415 5.409896 +v -0.212415 3.812415 5.190104 +v -0.249773 3.766893 5.409896 +v -0.249773 3.766893 5.190104 +v -0.277533 3.714958 5.409896 +v -0.277533 3.714958 5.190104 +v -0.294628 3.658605 5.409896 +v -0.294628 3.658605 5.190104 +v -0.300400 3.600000 5.409896 +v -0.300400 3.600000 5.190104 +v -0.294628 3.541395 5.409896 +v -0.294628 3.541395 5.190104 +v -0.277533 3.485042 5.409896 +v -0.277533 3.485042 5.190104 +v -0.249773 3.433107 5.409896 +v -0.249773 3.433107 5.190104 +v -0.212414 3.387585 5.409896 +v 0.146217 3.453784 5.190104 +v 0.171933 3.485118 5.410770 +v 0.171933 3.485118 5.190104 +v 0.202808 3.559659 5.190104 +v 0.191041 3.520868 5.190104 +v 0.206782 3.600000 5.190104 +v 0.202808 3.640341 5.190104 +v 0.171933 3.714882 5.190104 +v 0.191041 3.679132 5.190104 +v 0.146217 3.746217 5.190104 +v 0.114882 3.771933 5.190104 +v 0.040341 3.802808 5.190104 +v 0.079132 3.791041 5.190104 +v 0.000000 3.806782 5.190104 +v -0.040341 3.802808 5.190104 +v -0.114882 3.771933 5.190104 +v -0.079132 3.791041 5.190104 +v -0.146217 3.746217 5.190104 +v -0.171933 3.714881 5.190104 +v -0.202808 3.640341 5.190104 +v -0.191041 3.679132 5.190104 +v -0.206782 3.600000 5.190104 +v -0.202808 3.559659 5.190104 +v -0.191041 3.520868 5.190104 +v -0.171932 3.485118 5.190104 +v -0.212414 3.387585 5.190104 +v -0.040341 3.397192 5.190104 +v 0.000000 3.393219 5.410770 +v 0.000000 3.393219 5.190104 +v -0.114882 3.771933 5.410770 +v 0.191041 3.520868 5.410770 +v -0.146217 3.746217 5.410770 +v 0.202808 3.559659 5.410770 +v -0.171933 3.714881 5.410770 +v 0.206782 3.600000 5.410770 +v -0.191041 3.679132 5.410770 +v 0.202808 3.640341 5.410770 +v -0.202808 3.640341 5.410770 +v 0.191041 3.679132 5.410770 +v -0.206781 3.600000 5.410770 +v 0.171933 3.714882 5.410770 +v -0.202808 3.559659 5.410770 +v 0.146217 3.746217 5.410770 +v -0.191041 3.520868 5.410770 +v 0.114882 3.771933 5.410770 +v -0.171932 3.485118 5.410770 +v 0.079132 3.791041 5.410770 +v 0.040341 3.397192 5.410770 +v 0.040341 3.397192 5.190104 +v -0.146216 3.453783 5.410770 +v -0.146216 3.453783 5.190104 +v 0.040341 3.802808 5.410770 +v 0.079132 3.408959 5.410770 +v 0.079132 3.408959 5.190104 +v -0.114881 3.428067 5.410770 +v -0.114881 3.428067 5.190104 +v 0.000000 3.806782 5.410770 +v 0.114882 3.428067 5.410770 +v 0.114882 3.428067 5.190104 +v -0.079132 3.408959 5.410770 +v -0.079132 3.408959 5.190104 +v -0.040341 3.802808 5.410770 +v 0.146217 3.453784 5.410770 +v -0.040341 3.397192 5.410770 +v -0.079132 3.791041 5.410770 +v 0.169977 3.486425 5.409896 +v 0.188868 3.521768 5.409896 +v 0.200501 3.560118 5.409896 +v 0.204429 3.600000 5.409896 +v 0.200501 3.639882 5.409896 +v 0.188868 3.678232 5.409896 +v 0.169977 3.713575 5.409896 +v 0.144553 3.744553 5.409896 +v 0.113575 3.769977 5.409896 +v 0.078232 3.788868 5.409896 +v 0.039882 3.800501 5.409896 +v 0.000000 3.804429 5.409896 +v -0.039882 3.800501 5.409896 +v -0.078232 3.788868 5.409896 +v -0.113575 3.769977 5.409896 +v -0.144553 3.744553 5.409896 +v -0.169977 3.713575 5.409896 +v -0.188868 3.678231 5.409896 +v -0.200501 3.639882 5.409896 +v -0.204429 3.600000 5.409896 +v -0.200501 3.560118 5.409896 +v -0.188868 3.521768 5.409896 +v -0.169977 3.486425 5.409896 +v -0.144553 3.455447 5.409896 +v -0.499854 3.387367 5.661843 +v -0.499854 2.912633 4.938158 +v -0.499854 2.912633 5.661843 +v -0.499854 3.387367 4.938158 +v 0.519854 2.912633 4.938158 +v 0.519854 3.387367 4.938158 +v 0.519854 2.912633 5.661843 +v 0.519854 3.387367 5.661843 +v 0.212149 3.387367 5.409896 +v 0.212149 3.387367 5.190104 +v -0.212149 3.387367 5.190104 +v -0.212149 3.387367 5.409896 +v 0.000000 3.387367 5.190104 +v 0.042295 3.387367 5.190104 +v 0.088076 3.387367 5.190104 +v 0.142077 3.387367 5.190104 +v -0.142076 3.387367 5.190104 +v -0.088075 3.387367 5.190104 +v -0.042295 3.387367 5.190104 +v 0.039882 3.399499 5.409896 +v 0.000000 3.387367 5.409896 +v 0.042295 3.387367 5.409896 +v 0.078232 3.411132 5.409896 +v 0.088076 3.387367 5.409896 +v 0.113575 3.430023 5.409896 +v 0.142077 3.387367 5.409896 +v 0.144553 3.455447 5.409896 +v -0.088075 3.387367 5.409896 +v -0.113575 3.430023 5.409896 +v -0.142076 3.387367 5.409896 +v -0.042295 3.387367 5.409896 +v -0.078231 3.411132 5.409896 +v -0.039882 3.399499 5.409896 +v 0.000000 3.395571 5.409896 +v -0.285753 2.876174 -17.583353 +v -0.206993 3.392601 -18.284744 +v -0.285753 2.876174 -18.899897 +v 0.285753 2.876174 -18.899897 +v 0.206993 3.392601 -18.284744 +v 0.285753 2.876174 -17.583353 +v 0.206993 3.392601 -17.955841 +v -0.052052 3.504859 -18.120081 +v -0.045935 3.600579 -18.259661 +v -0.052052 3.504859 -18.269205 +v 0.052052 3.504859 -18.269205 +v 0.045935 3.600579 -18.259661 +v 0.052052 3.504859 -18.120081 +v 0.045935 3.600579 -18.122107 +v 0.063413 3.327094 -18.286932 +v -0.063413 3.327094 -18.116322 +v -0.063413 3.327094 -18.286932 +v 0.063413 3.327094 -18.116322 +v -0.197447 3.270684 -17.965662 +v -0.287607 3.625364 -18.247025 +v -0.197447 3.270684 -18.300558 +v -0.199752 3.652224 -18.247025 +v -0.076163 3.307764 -18.300558 +v -0.076163 3.307764 -17.965662 +v -0.199752 3.652224 -17.977015 +v 0.076163 3.307764 -17.965847 +v 0.199752 3.652224 -18.246998 +v 0.076163 3.307764 -18.300491 +v 0.197447 3.270684 -18.300491 +v 0.287607 3.625364 -18.246998 +v 0.197447 3.270684 -17.965847 +v 0.287607 3.625364 -17.977190 +v -0.206993 3.392601 -17.955841 +v -0.045935 3.600579 -18.122107 +v -0.287607 3.625364 -17.977015 +v 0.199752 3.652224 -17.977190 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.968169 +vt 0.415780 0.982469 +vt 0.498282 0.968169 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.939568 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.498282 0.968169 +vt 0.470782 0.982469 +vt 0.470782 0.953868 +vt 0.470782 0.968169 +vt 0.443281 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.982469 +vt 0.443281 0.996769 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.470782 0.996769 +vt 0.443281 0.996769 +vt 0.498282 0.968169 +vt 0.443281 0.982469 +vt 0.415970 0.982469 +vt 0.415780 0.982469 +vt 0.415780 0.968169 +vt 0.443281 0.953868 +vt 0.470782 0.953868 +vt 0.415793 0.982420 +vt 0.443281 0.939568 +vt 0.470782 0.939568 +vt 0.443281 0.939617 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.498282 0.982469 +vt 0.443281 0.968169 +vt 0.435064 0.853152 +vt 0.419806 0.853152 +vt 0.557124 0.853152 +vt 0.572381 0.891623 +vt 0.557124 0.828152 +vt 0.572381 0.828152 +vt 0.557124 0.891623 +vt 0.541866 0.828152 +vt 0.541866 0.891623 +vt 0.526609 0.828152 +vt 0.526609 0.891623 +vt 0.511351 0.828152 +vt 0.511351 0.891623 +vt 0.496094 0.828152 +vt 0.496094 0.891623 +vt 0.480836 0.828152 +vt 0.480836 0.891623 +vt 0.465579 0.828152 +vt 0.465579 0.891623 +vt 0.450321 0.828152 +vt 0.450321 0.891623 +vt 0.435064 0.828152 +vt 0.435064 0.891623 +vt 0.419806 0.828152 +vt 0.572381 0.916623 +vt 0.572381 0.853152 +vt 0.526609 0.916623 +vt 0.541866 0.916623 +vt 0.465579 0.916623 +vt 0.541866 0.853152 +vt 0.450321 0.853152 +vt 0.526609 0.853152 +vt 0.465579 0.853152 +vt 0.511351 0.853152 +vt 0.496094 0.853152 +vt 0.480836 0.853152 +vt 0.419806 0.891623 +vt 0.419806 0.916623 +vt 0.557124 0.916623 +vt 0.435064 0.916623 +vt 0.450321 0.916623 +vt 0.480836 0.916623 +vt 0.496094 0.916623 +vt 0.511351 0.916623 +vt 0.603611 0.962891 +vt 0.600511 0.943544 +vt 0.603611 0.943544 +vt 0.600511 0.962891 +vt 0.597411 0.943544 +vt 0.597411 0.962891 +vt 0.594310 0.943544 +vt 0.594310 0.962891 +vt 0.591210 0.943544 +vt 0.591210 0.962891 +vt 0.588109 0.943544 +vt 0.588109 0.962891 +vt 0.585009 0.943544 +vt 0.585009 0.962891 +vt 0.581908 0.943544 +vt 0.581908 0.962891 +vt 0.578808 0.943544 +vt 0.578808 0.962891 +vt 0.575707 0.943544 +vt 0.575707 0.962891 +vt 0.572607 0.943544 +vt 0.572607 0.962891 +vt 0.569507 0.943544 +vt 0.569507 0.962891 +vt 0.566406 0.943544 +vt 0.566406 0.962891 +vt 0.563306 0.943544 +vt 0.563306 0.962891 +vt 0.560205 0.943544 +vt 0.560205 0.962891 +vt 0.557105 0.943544 +vt 0.557105 0.962891 +vt 0.554004 0.943544 +vt 0.554004 0.962891 +vt 0.550904 0.943544 +vt 0.550904 0.962891 +vt 0.547804 0.943544 +vt 0.547804 0.962891 +vt 0.544703 0.943544 +vt 0.544703 0.962891 +vt 0.541603 0.943544 +vt 0.541603 0.962891 +vt 0.538502 0.943544 +vt 0.538502 0.962891 +vt 0.535402 0.943544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.962891 +vt 0.532301 0.943544 +vt 0.532301 0.962891 +vt 0.529201 0.943544 +vt 0.592763 0.964859 +vt 0.589052 0.965659 +vt 0.589052 0.965659 +vt 0.603611 0.987891 +vt 0.594310 0.968544 +vt 0.603611 0.968544 +vt 0.594310 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.547804 0.968544 +vt 0.565662 0.958871 +vt 0.547804 0.968157 +vt 0.529945 0.958871 +vt 0.547804 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.529201 0.968544 +vt 0.597637 0.952304 +vt 0.572381 0.952304 +vt 0.572381 0.965437 +vt 0.547804 0.968157 +vt 0.554118 0.962154 +vt 0.560431 0.965437 +vt 0.556733 0.958871 +vt 0.565662 0.958871 +vt 0.554118 0.955587 +vt 0.560431 0.952304 +vt 0.547804 0.949584 +vt 0.547804 0.954228 +vt 0.535176 0.952304 +vt 0.541490 0.955587 +vt 0.529945 0.958871 +vt 0.538874 0.958871 +vt 0.535176 0.965437 +vt 0.541490 0.962154 +vt 0.575707 0.987891 +vt 0.585009 0.983745 +vt 0.575707 0.983745 +vt 0.566406 0.987891 +vt 0.566406 0.983745 +vt 0.529201 0.987891 +vt 0.538502 0.983745 +vt 0.529201 0.983745 +vt 0.594310 0.987891 +vt 0.603611 0.983745 +vt 0.594310 0.983745 +vt 0.585009 0.987891 +vt 0.557105 0.987891 +vt 0.557105 0.983745 +vt 0.603611 0.987891 +vt 0.600511 0.968544 +vt 0.603611 0.968544 +vt 0.600511 0.987891 +vt 0.597411 0.968544 +vt 0.597411 0.987891 +vt 0.594310 0.968544 +vt 0.594310 0.987891 +vt 0.591210 0.968544 +vt 0.591210 0.987891 +vt 0.588109 0.968544 +vt 0.588109 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.581908 0.968544 +vt 0.581908 0.987891 +vt 0.578808 0.968544 +vt 0.578808 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.572607 0.968544 +vt 0.572607 0.987891 +vt 0.569507 0.968544 +vt 0.569507 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.563306 0.968544 +vt 0.563306 0.987891 +vt 0.560205 0.968544 +vt 0.560205 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.554004 0.968544 +vt 0.554004 0.987891 +vt 0.550904 0.968544 +vt 0.550904 0.987891 +vt 0.547804 0.968544 +vt 0.547804 0.987891 +vt 0.544703 0.968544 +vt 0.544703 0.987891 +vt 0.541603 0.968544 +vt 0.541603 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.535402 0.968544 +vt 0.529945 0.958871 +vt 0.556733 0.950828 +vt 0.556733 0.966913 +vt 0.535402 0.987891 +vt 0.532301 0.968544 +vt 0.532301 0.987891 +vt 0.529201 0.968544 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.602259 0.956467 +vt 0.603611 0.962891 +vt 0.600511 0.943544 +vt 0.603611 0.943544 +vt 0.600511 0.962891 +vt 0.597411 0.943544 +vt 0.597411 0.962891 +vt 0.594310 0.943544 +vt 0.594310 0.962891 +vt 0.591210 0.943544 +vt 0.591210 0.962891 +vt 0.588109 0.943544 +vt 0.588109 0.962891 +vt 0.585009 0.943544 +vt 0.585009 0.962891 +vt 0.581908 0.943544 +vt 0.581908 0.962891 +vt 0.578808 0.943544 +vt 0.578808 0.962891 +vt 0.575707 0.943544 +vt 0.575707 0.962891 +vt 0.572607 0.943544 +vt 0.572607 0.962891 +vt 0.569507 0.943544 +vt 0.569507 0.962891 +vt 0.566406 0.943544 +vt 0.566406 0.962891 +vt 0.563306 0.943544 +vt 0.563306 0.962891 +vt 0.560205 0.943544 +vt 0.560205 0.962891 +vt 0.557105 0.943544 +vt 0.557105 0.962891 +vt 0.554004 0.943544 +vt 0.554004 0.962891 +vt 0.550904 0.943544 +vt 0.550904 0.962891 +vt 0.547804 0.943544 +vt 0.547804 0.962891 +vt 0.544703 0.943544 +vt 0.544703 0.962891 +vt 0.541603 0.943544 +vt 0.541603 0.962891 +vt 0.538502 0.943544 +vt 0.538502 0.962891 +vt 0.535402 0.943544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.962891 +vt 0.532301 0.943544 +vt 0.532301 0.962891 +vt 0.529201 0.943544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.603611 0.987891 +vt 0.600511 0.968544 +vt 0.603611 0.968544 +vt 0.600511 0.987891 +vt 0.597411 0.968544 +vt 0.597411 0.987891 +vt 0.594310 0.968544 +vt 0.594310 0.987891 +vt 0.591210 0.968544 +vt 0.591210 0.987891 +vt 0.588109 0.968544 +vt 0.588109 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.581908 0.968544 +vt 0.581908 0.987891 +vt 0.578808 0.968544 +vt 0.578808 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.572607 0.968544 +vt 0.572607 0.987891 +vt 0.569507 0.968544 +vt 0.569507 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.563306 0.968544 +vt 0.563306 0.987891 +vt 0.560205 0.968544 +vt 0.560205 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.554004 0.968544 +vt 0.554004 0.987891 +vt 0.550904 0.968544 +vt 0.550904 0.987891 +vt 0.547804 0.968544 +vt 0.547804 0.987891 +vt 0.544703 0.968544 +vt 0.544703 0.987891 +vt 0.541603 0.968544 +vt 0.541603 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.535402 0.968544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.987891 +vt 0.532301 0.968544 +vt 0.532301 0.987891 +vt 0.529201 0.968544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.603611 0.987891 +vt 0.600511 0.968544 +vt 0.603611 0.968544 +vt 0.600511 0.987891 +vt 0.597411 0.968544 +vt 0.597411 0.987891 +vt 0.594310 0.968544 +vt 0.594310 0.987891 +vt 0.591210 0.968544 +vt 0.591210 0.987891 +vt 0.588109 0.968544 +vt 0.588109 0.987891 +vt 0.585009 0.968544 +vt 0.585009 0.987891 +vt 0.581908 0.968544 +vt 0.581908 0.987891 +vt 0.578808 0.968544 +vt 0.578808 0.987891 +vt 0.575707 0.968544 +vt 0.575707 0.987891 +vt 0.572607 0.968544 +vt 0.572607 0.987891 +vt 0.569507 0.968544 +vt 0.569507 0.987891 +vt 0.566406 0.968544 +vt 0.566406 0.987891 +vt 0.563306 0.968544 +vt 0.563306 0.987891 +vt 0.560205 0.968544 +vt 0.560205 0.987891 +vt 0.557105 0.968544 +vt 0.557105 0.987891 +vt 0.554004 0.968544 +vt 0.554004 0.987891 +vt 0.550904 0.968544 +vt 0.550904 0.987891 +vt 0.547804 0.968544 +vt 0.547804 0.987891 +vt 0.544703 0.968544 +vt 0.544703 0.987891 +vt 0.541603 0.968544 +vt 0.541603 0.987891 +vt 0.538502 0.968544 +vt 0.538502 0.987891 +vt 0.535402 0.968544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.987891 +vt 0.532301 0.968544 +vt 0.532301 0.987891 +vt 0.529201 0.968544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.603611 0.962891 +vt 0.600511 0.943544 +vt 0.603611 0.943544 +vt 0.600511 0.962891 +vt 0.597411 0.943544 +vt 0.597411 0.962891 +vt 0.594310 0.943544 +vt 0.594310 0.962891 +vt 0.591210 0.943544 +vt 0.591210 0.962891 +vt 0.588109 0.943544 +vt 0.588109 0.962891 +vt 0.585009 0.943544 +vt 0.585009 0.962891 +vt 0.581908 0.943544 +vt 0.581908 0.962891 +vt 0.578808 0.943544 +vt 0.578808 0.962891 +vt 0.575707 0.943544 +vt 0.575707 0.962891 +vt 0.572607 0.943544 +vt 0.572607 0.962891 +vt 0.569507 0.943544 +vt 0.569507 0.962891 +vt 0.566406 0.943544 +vt 0.566406 0.962891 +vt 0.563306 0.943544 +vt 0.563306 0.962891 +vt 0.560205 0.943544 +vt 0.560205 0.962891 +vt 0.557105 0.943544 +vt 0.557105 0.962891 +vt 0.554004 0.943544 +vt 0.554004 0.962891 +vt 0.550904 0.943544 +vt 0.550904 0.962891 +vt 0.547804 0.943544 +vt 0.547804 0.962891 +vt 0.544703 0.943544 +vt 0.544703 0.962891 +vt 0.541603 0.943544 +vt 0.541603 0.962891 +vt 0.538502 0.943544 +vt 0.538502 0.962891 +vt 0.535402 0.943544 +vt 0.556733 0.950828 +vt 0.565662 0.958871 +vt 0.556733 0.966913 +vt 0.535402 0.962891 +vt 0.532301 0.943544 +vt 0.532301 0.962891 +vt 0.529201 0.943544 +vt 0.572381 0.952304 +vt 0.567759 0.961274 +vt 0.580387 0.967841 +vt 0.585009 0.965935 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.595844 0.963630 +vt 0.600475 0.963514 +vt 0.598073 0.962119 +vt 0.602259 0.961274 +vt 0.599366 0.960496 +vt 0.602867 0.958871 +vt 0.599778 0.958871 +vt 0.599366 0.957245 +vt 0.602259 0.956467 +vt 0.598073 0.955622 +vt 0.600475 0.954228 +vt 0.595844 0.954111 +vt 0.597637 0.952304 +vt 0.592763 0.952882 +vt 0.593938 0.950828 +vt 0.589052 0.952082 +vt 0.589631 0.949901 +vt 0.585009 0.951806 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.580965 0.952082 +vt 0.576080 0.950828 +vt 0.577254 0.952882 +vt 0.572381 0.952304 +vt 0.574174 0.954111 +vt 0.569543 0.954228 +vt 0.571944 0.955622 +vt 0.567759 0.956467 +vt 0.570651 0.957245 +vt 0.567150 0.958871 +vt 0.570240 0.958871 +vt 0.570651 0.960496 +vt 0.567759 0.961274 +vt 0.571944 0.962119 +vt 0.569543 0.963514 +vt 0.574174 0.963630 +vt 0.572381 0.965437 +vt 0.577254 0.964859 +vt 0.576079 0.966913 +vt 0.580965 0.965659 +vt 0.580387 0.967841 +vt 0.585009 0.968157 +vt 0.574174 0.963630 +vt 0.577254 0.964859 +vt 0.574174 0.954111 +vt 0.571944 0.955622 +vt 0.595844 0.954111 +vt 0.592763 0.964859 +vt 0.570651 0.957245 +vt 0.592763 0.952882 +vt 0.595844 0.963630 +vt 0.570240 0.958871 +vt 0.589052 0.952082 +vt 0.598073 0.962119 +vt 0.570651 0.960496 +vt 0.585009 0.951806 +vt 0.599366 0.960496 +vt 0.571944 0.962119 +vt 0.580965 0.952082 +vt 0.599778 0.958871 +vt 0.577254 0.952882 +vt 0.599366 0.957245 +vt 0.585009 0.965935 +vt 0.598073 0.955622 +vt 0.580965 0.965659 +vt 0.538502 0.987891 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.962891 +vt 0.560431 0.965437 +vt 0.535176 0.965437 +vt 0.535176 0.952304 +vt 0.547804 0.949584 +vt 0.560431 0.952304 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.597637 0.965437 +vt 0.602867 0.958871 +vt 0.585009 0.949584 +vt 0.567150 0.958871 +vt 0.547804 0.963514 +vt 0.603611 0.987891 +vt 0.552426 0.967841 +vt 0.538874 0.966913 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565662 0.958871 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.572381 0.952304 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.962891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.987891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.552426 0.967841 +vt 0.547804 0.968157 +vt 0.543181 0.967841 +vt 0.538874 0.966913 +vt 0.535176 0.965437 +vt 0.532338 0.963514 +vt 0.530554 0.961274 +vt 0.529945 0.958871 +vt 0.530554 0.956467 +vt 0.532338 0.954228 +vt 0.535176 0.952304 +vt 0.538874 0.950828 +vt 0.543181 0.949901 +vt 0.547804 0.949584 +vt 0.552426 0.949901 +vt 0.560431 0.952304 +vt 0.563269 0.954228 +vt 0.565054 0.956467 +vt 0.565054 0.961274 +vt 0.563269 0.963514 +vt 0.560431 0.965437 +vt 0.529201 0.962891 +vt 0.585009 0.968157 +vt 0.589631 0.967841 +vt 0.593938 0.966913 +vt 0.597637 0.965437 +vt 0.600475 0.963514 +vt 0.602259 0.961274 +vt 0.602867 0.958871 +vt 0.602259 0.956467 +vt 0.600475 0.954228 +vt 0.597637 0.952304 +vt 0.593938 0.950828 +vt 0.589631 0.949901 +vt 0.585009 0.949584 +vt 0.580387 0.949901 +vt 0.576080 0.950828 +vt 0.569543 0.954228 +vt 0.567759 0.956467 +vt 0.567150 0.958871 +vt 0.569543 0.963514 +vt 0.572381 0.965437 +vt 0.576079 0.966913 +vt 0.396481 0.835451 +vt 0.459833 0.866080 +vt 0.396481 0.866080 +vt 0.545719 0.522092 +vt 0.497611 0.526046 +vt 0.497611 0.526046 +vt 0.462657 0.901337 +vt 0.459833 0.868394 +vt 0.462657 0.868394 +vt 0.467752 0.901337 +vt 0.467752 0.868394 +vt 0.523185 0.868394 +vt 0.388562 0.868394 +vt 0.411544 0.779875 +vt 0.390770 0.774974 +vt 0.390770 0.774974 +vt 0.333129 0.853963 +vt 0.523185 0.853963 +vt 0.564336 0.894415 +vt 0.384270 0.884437 +vt 0.384270 0.894415 +vt 0.333129 0.850928 +vt 0.523185 0.850928 +vt 0.333129 0.845982 +vt 0.625000 0.895044 +vt 0.625000 0.635044 +vt 0.625000 0.505044 +vt 0.563252 0.666138 +vt 0.539872 0.667093 +vt 0.539872 0.666138 +vt 0.360235 0.662320 +vt 0.610235 0.662320 +vt 0.467262 0.676993 +vt 0.389035 0.657551 +vt 0.654591 0.681900 +vt 0.673945 0.683675 +vt 0.539872 0.686553 +vt 0.516493 0.691408 +vt 0.516493 0.686553 +vt 0.371179 0.824396 +vt 0.224012 0.900923 +vt 0.224012 0.824396 +vt 0.504838 0.868908 +vt 0.504838 0.907383 +vt 0.578829 0.907383 +vt 0.371179 0.900923 +vt 0.665512 0.900923 +vt 0.589593 0.872960 +vt 0.579928 0.818991 +vt 0.579928 0.818991 +vt 0.720909 0.823249 +vt 0.728444 0.813188 +vt 0.728444 0.813188 +vt 0.518346 0.900923 +vt 0.665512 0.900923 +vt 0.403568 0.865893 +vt 0.403568 0.865893 +vt 0.403568 0.865893 +vt 0.634882 0.842860 +vt 0.875000 0.895044 +vt 0.625000 0.895044 +vt 0.622404 0.844210 +vt 0.554773 0.879378 +vt 0.554773 0.844210 +vt 0.579328 0.848935 +vt 0.460045 0.910962 +vt 0.460045 0.848935 +vt 0.594184 0.857324 +vt 0.479639 0.916888 +vt 0.479639 0.857324 +vt 0.316829 0.865671 +vt 0.232387 0.909581 +vt 0.232387 0.865671 +vt 0.755432 0.845134 +vt 0.631372 0.909645 +vt 0.631372 0.845134 +vt 0.875000 0.780375 +vt 0.625000 0.886482 +vt 0.625000 0.780375 +vt 0.527665 0.671526 +vt 0.434557 0.728562 +vt 0.434557 0.671526 +vt 0.478702 0.654816 +vt 0.405181 0.693047 +vt 0.405181 0.654816 +vt 0.578288 0.668871 +vt 0.504989 0.711222 +vt 0.504989 0.668871 +vt 0.369079 0.703598 +vt 0.619079 0.688267 +vt 0.619079 0.703598 +vt 0.545910 0.694020 +vt 0.542943 0.694166 +vt 0.538713 0.651138 +vt 0.875000 0.886482 +vt 0.625000 0.894248 +vt 0.348638 0.674242 +vt 0.598638 0.670022 +vt 0.598638 0.674242 +vt 0.862696 0.694629 +vt 0.612696 0.694960 +vt 0.612696 0.694629 +vt 0.528140 0.639470 +vt 0.528140 0.682157 +vt 0.512942 0.688324 +vt 0.875000 0.765044 +vt 0.625000 0.875456 +vt 0.625000 0.765044 +vt 0.560300 0.670191 +vt 0.450392 0.729897 +vt 0.450392 0.670191 +vt 0.737196 0.697591 +vt 0.487196 0.717178 +vt 0.487196 0.697591 +vt 0.252961 0.688828 +vt 0.502961 0.675471 +vt 0.502961 0.688828 +vt 0.585624 0.678619 +vt 0.528884 0.716829 +vt 0.528884 0.678619 +vt 0.571863 0.680723 +vt 0.321863 0.681349 +vt 0.321863 0.680723 +vt 0.424216 0.682430 +vt 0.174216 0.683030 +vt 0.174216 0.682430 +vt 0.324323 0.676884 +vt 0.574323 0.676770 +vt 0.574323 0.676884 +vt 0.216049 0.682677 +vt 0.466049 0.663982 +vt 0.466049 0.682677 +vt 0.216049 0.652466 +vt 0.466049 0.652320 +vt 0.466049 0.652466 +vt 0.601392 0.694569 +vt 0.351392 0.694684 +vt 0.351392 0.694569 +vt 0.485420 0.656087 +vt 0.486296 0.699330 +vt 0.485205 0.699287 +vt 0.181598 0.675854 +vt 0.431598 0.674999 +vt 0.431598 0.675854 +vt 0.456422 0.681871 +vt 0.456979 0.681849 +vt 0.456531 0.703932 +vt 0.410451 0.676654 +vt 0.660451 0.676023 +vt 0.660451 0.676654 +vt 0.532490 0.669456 +vt 0.282490 0.715181 +vt 0.282490 0.669456 +vt 0.375000 0.844421 +vt 0.125000 0.852193 +vt 0.125000 0.844421 +vt 0.626000 0.660251 +vt 0.376000 0.701615 +vt 0.376000 0.660251 +vt 0.593750 0.793481 +vt 0.218750 0.793481 +vt 0.819522 0.793481 +vt 0.604291 0.804188 +vt 0.510661 0.804188 +vt 0.614339 0.751259 +vt 0.375000 0.765044 +vt 0.291667 0.895044 +vt 0.291667 0.765044 +vt 0.625695 0.758273 +vt 0.378906 0.801606 +vt 0.378906 0.758273 +vt 0.664062 0.761468 +vt 0.580729 0.765166 +vt 0.580729 0.761468 +vt 0.625000 0.767416 +vt 0.708333 0.765044 +vt 0.708333 0.767416 +vt 0.677121 0.760761 +vt 0.684017 0.765248 +vt 0.684017 0.797089 +vt 0.677083 0.809854 +vt 0.593750 0.821919 +vt 0.593750 0.809854 +vt 0.630208 0.781780 +vt 0.546875 0.785479 +vt 0.546875 0.781780 +vt 0.109638 0.753166 +vt 0.109638 0.753166 +vt 0.809234 0.800535 +vt 0.629601 0.752856 +vt 0.382812 0.796190 +vt 0.382812 0.752856 +vt 0.375000 0.635044 +vt 0.375000 0.678377 +vt 0.000000 0.505044 +vt 0.263889 0.765044 +vt 0.263889 0.895044 +vt 0.573022 0.757181 +vt 0.705624 0.783892 +vt 0.573022 0.783892 +vt 0.226495 0.821409 +vt 0.627179 0.805925 +vt 0.648505 0.794114 +vt 0.280702 0.812445 +vt 0.496130 0.766499 +vt 0.444553 0.738474 +vt 0.421875 0.760981 +vt 0.355469 0.819888 +vt 0.581240 0.819888 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.341584 0.755253 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.502440 0.838252 +vt 0.335149 0.925244 +vt 0.335149 0.838252 +vt 0.556540 0.854906 +vt 0.463146 0.903471 +vt 0.463146 0.854906 +vt 0.245835 0.915308 +vt 0.224012 0.839396 +vt 0.224012 0.915923 +vt 0.665512 0.915923 +vt 0.643647 0.915691 +vt 0.665512 0.915923 +vt 0.597620 0.901828 +vt 0.125000 0.765044 +vt 0.228633 0.780745 +vt 0.875000 0.895044 +vt 0.875000 0.765044 +vt 0.597620 0.901828 +vt 0.574804 0.873659 +vt 0.285018 0.848638 +vt 0.643647 0.915691 +vt 0.285018 0.848638 +vt 0.759668 0.871099 +vt 0.759668 0.871099 +vt 0.720909 0.823249 +vt 0.245835 0.915308 +vt 0.578887 0.824122 +vt 0.375000 0.765044 +vt 0.625000 0.765044 +vt 0.377872 0.915356 +vt 0.518346 0.915923 +vt 0.371179 0.915923 +vt 0.377872 0.900356 +vt 0.389892 0.832881 +vt 0.625000 0.895044 +vt 0.511639 0.915711 +vt 0.518346 0.915923 +vt 0.389892 0.847881 +vt 0.491200 0.874173 +vt 0.497503 0.902923 +vt 0.389892 0.847881 +vt 0.377872 0.915356 +vt 0.406788 0.779458 +vt 0.406788 0.779458 +vt 0.497503 0.902923 +vt 0.578887 0.824122 +vt 0.511639 0.915711 +vt 0.643647 0.900691 +vt 0.245835 0.900308 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.221470 0.868452 +vt 0.221470 0.868452 +vt 0.221470 0.868452 +vt 0.251000 0.856936 +vt 0.251000 0.856936 +vt 0.251000 0.856936 +vt 0.361735 0.900442 +vt 0.361735 0.900442 +vt 0.361735 0.900442 +vt 0.518346 0.900923 +vt 0.511639 0.900711 +vt 0.236235 0.851817 +vt 0.236235 0.851817 +vt 0.236235 0.851817 +vt 0.164872 0.847978 +vt 0.164872 0.847978 +vt 0.164872 0.847978 +vt 0.209167 0.860775 +vt 0.209167 0.860775 +vt 0.209167 0.860775 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.150429 0.686343 +vt 0.150429 0.686343 +vt 0.150429 0.686343 +vt 0.605366 0.625582 +vt 0.392556 0.635044 +vt 0.410506 0.621173 +vt 0.389781 0.625623 +vt 0.375000 0.618794 +vt 0.390712 0.598254 +vt 0.388734 0.524179 +vt 0.375000 0.505044 +vt 0.382120 0.629248 +vt 0.556923 0.509307 +vt 0.597602 0.514746 +vt 0.507545 0.505044 +vt 0.545076 0.505044 +vt 0.484510 0.505044 +vt 0.391870 0.838038 +vt 0.389721 0.863715 +vt 0.343364 0.852237 +vt 0.390712 0.598254 +vt 0.597602 0.514746 +vt 0.545719 0.522092 +vt 0.410506 0.621173 +vt 0.605366 0.625582 +vt 0.388734 0.524179 +vt 0.556923 0.509307 +vt 0.389781 0.625623 +vt 0.603447 0.775430 +vt 0.594972 0.884555 +vt 0.392556 0.765044 +vt 0.625000 0.765044 +vt 0.375000 0.781294 +vt 0.382120 0.770840 +vt 0.390113 0.874091 +vt 0.392214 0.803595 +vt 0.558295 0.890122 +vt 0.545076 0.895044 +vt 0.498333 0.872319 +vt 0.507545 0.895044 +vt 0.484510 0.895044 +vt 0.548567 0.877213 +vt 0.375000 0.895044 +vt 0.512111 0.852142 +vt 0.478620 0.866125 +vt 0.467060 0.863579 +vt 0.411544 0.779875 +vt 0.498333 0.872319 +vt 0.594972 0.884555 +vt 0.392214 0.803595 +vt 0.548567 0.877213 +vt 0.390113 0.874091 +vt 0.603447 0.775430 +vt 0.558295 0.890122 +vt 0.464672 0.866316 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.243618 0.881248 +vt 0.243618 0.881248 +vt 0.243618 0.881248 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.868394 +vt 0.342454 0.866584 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.539872 0.679250 +vt 0.516493 0.680206 +vt 0.516493 0.679250 +vt 0.718065 0.674451 +vt 0.298249 0.674451 +vt 0.167739 0.674451 +vt 0.563252 0.659791 +vt 0.539872 0.659791 +vt 0.563252 0.654936 +vt 0.539872 0.654936 +vt 0.666833 0.705488 +vt 0.666833 0.669427 +vt 0.666833 0.663889 +vt 0.539872 0.680206 +vt 0.440044 0.779617 +vt 0.437493 0.837443 +vt 0.437493 0.837443 +vt 0.422729 0.709719 +vt 0.360235 0.647539 +vt 0.425280 0.651893 +vt 0.545228 0.642180 +vt 0.610235 0.705405 +vt 0.547899 0.699410 +vt 0.489409 0.751566 +vt 0.570046 0.808982 +vt 0.488685 0.809183 +vt 0.481303 0.837335 +vt 0.481303 0.837335 +vt 0.481303 0.837335 +vt 0.559993 0.779904 +vt 0.482026 0.779717 +vt 0.482026 0.779717 +vt 0.562664 0.837133 +vt 0.559993 0.779904 +vt 0.440044 0.779617 +vt 0.481303 0.837335 +vt 0.562664 0.837133 +vt 0.432662 0.733550 +vt 0.473921 0.791269 +vt 0.430111 0.791377 +vt 0.437493 0.837443 +vt 0.437493 0.837443 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.459833 0.835451 +vt 0.459833 0.901337 +vt 0.564336 0.884437 +vt 0.523185 0.845982 +vt 0.563252 0.667093 +vt 0.610235 0.657539 +vt 0.545228 0.662180 +vt 0.610235 0.647320 +vt 0.467262 0.661993 +vt 0.425280 0.661893 +vt 0.360235 0.647320 +vt 0.360235 0.657539 +vt 0.408389 0.659326 +vt 0.539872 0.691408 +vt 0.578829 0.868908 +vt 0.589593 0.872960 +vt 0.403568 0.865893 +vt 0.622404 0.879378 +vt 0.579328 0.910962 +vt 0.594184 0.916888 +vt 0.316829 0.909581 +vt 0.755432 0.909645 +vt 0.527665 0.728562 +vt 0.478702 0.693047 +vt 0.578288 0.711222 +vt 0.369079 0.688267 +vt 0.468469 0.694166 +vt 0.468469 0.651138 +vt 0.551217 0.656212 +vt 0.551217 0.691333 +vt 0.546274 0.693903 +vt 0.875000 0.894248 +vt 0.348638 0.670022 +vt 0.862696 0.694960 +vt 0.427566 0.688324 +vt 0.427566 0.636026 +vt 0.518084 0.636026 +vt 0.521690 0.636204 +vt 0.522133 0.636346 +vt 0.875000 0.875456 +vt 0.560300 0.729897 +vt 0.737196 0.717178 +vt 0.252961 0.675471 +vt 0.585624 0.716829 +vt 0.571863 0.681349 +vt 0.424216 0.683030 +vt 0.324323 0.676770 +vt 0.216049 0.663982 +vt 0.216049 0.652320 +vt 0.601392 0.694684 +vt 0.485158 0.663146 +vt 0.485415 0.656142 +vt 0.485157 0.699244 +vt 0.485525 0.655862 +vt 0.489162 0.650857 +vt 0.578824 0.650857 +vt 0.578824 0.692226 +vt 0.564711 0.699565 +vt 0.485156 0.683510 +vt 0.485156 0.680598 +vt 0.485157 0.699007 +vt 0.485156 0.663466 +vt 0.492385 0.699565 +vt 0.181598 0.674999 +vt 0.456397 0.700163 +vt 0.456397 0.691415 +vt 0.456397 0.682013 +vt 0.456397 0.689928 +vt 0.456529 0.703904 +vt 0.456398 0.700327 +vt 0.456397 0.681893 +vt 0.458443 0.706603 +vt 0.456585 0.704047 +vt 0.504231 0.685476 +vt 0.504231 0.706603 +vt 0.497023 0.681729 +vt 0.460088 0.681729 +vt 0.410451 0.676023 +vt 0.532490 0.715181 +vt 0.375000 0.852193 +vt 0.626000 0.701615 +vt 0.218750 0.793481 +vt 0.510661 0.750275 +vt 0.613008 0.750275 +vt 0.614339 0.797650 +vt 0.613913 0.799184 +vt 0.375000 0.895044 +vt 0.625695 0.801606 +vt 0.664062 0.765166 +vt 0.625000 0.765044 +vt 0.612858 0.797764 +vt 0.612858 0.760761 +vt 0.683725 0.764195 +vt 0.683103 0.797764 +vt 0.677083 0.821919 +vt 0.630208 0.785479 +vt 0.779674 0.760019 +vt 0.781057 0.757208 +vt 0.109638 0.753166 +vt 0.629601 0.796190 +vt 0.375000 0.505044 +vt 0.236111 0.765044 +vt 0.705624 0.757181 +vt 0.380237 0.736263 +vt 0.226495 0.821409 +vt 0.651589 0.807504 +vt 0.280702 0.812445 +vt 0.280702 0.812445 +vt 0.272135 0.819888 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.320312 0.775200 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.894527 0.754523 +vt 0.502440 0.925244 +vt 0.556540 0.903471 +vt 0.245835 0.900308 +vt 0.285018 0.833638 +vt 0.579240 0.867737 +vt 0.597620 0.886828 +vt 0.228633 0.780745 +vt 0.643647 0.900691 +vt 0.491813 0.871153 +vt 0.497503 0.887923 +vt 0.389892 0.832881 +vt 0.377872 0.900356 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.221470 0.868452 +vt 0.361735 0.900442 +vt 0.361735 0.900442 +vt 0.236235 0.851817 +vt 0.209167 0.860775 +vt 0.209167 0.860775 +vt 0.150429 0.671343 +vt 0.150429 0.671343 +vt 0.378552 0.866324 +vt 0.341437 0.845898 +vt 0.335206 0.844421 +vt 0.337857 0.839061 +vt 0.391890 0.866446 +vt 0.464894 0.838291 +vt 0.518073 0.839407 +vt 0.514496 0.845523 +vt 0.520786 0.844241 +vt 0.512974 0.866402 +vt 0.333129 0.917808 +vt 0.243618 0.881248 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.333129 0.917808 +vt 0.587555 0.674451 +vt 0.666833 0.699950 +vt 0.422729 0.699719 +vt 0.360235 0.705405 +vt 0.360235 0.637539 +vt 0.545228 0.652180 +vt 0.610235 0.647539 +vt 0.610235 0.715405 +vt 0.567375 0.751753 +vt 0.474644 0.733651 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.415872 0.665231 +vt 0.617682 0.716042 +vt 0.616961 0.710037 +vt 0.617682 0.710037 +vt 0.616961 0.716042 +vt 0.616239 0.710037 +vt 0.616239 0.716042 +vt 0.615517 0.710037 +vt 0.615517 0.716042 +vt 0.614795 0.710037 +vt 0.614795 0.716042 +vt 0.614073 0.710037 +vt 0.614073 0.716042 +vt 0.613352 0.710037 +vt 0.613352 0.716042 +vt 0.612630 0.710037 +vt 0.612630 0.716042 +vt 0.611908 0.710037 +vt 0.611908 0.716042 +vt 0.611186 0.710037 +vt 0.611186 0.716042 +vt 0.610464 0.710037 +vt 0.610464 0.716042 +vt 0.609743 0.710037 +vt 0.609743 0.716042 +vt 0.609021 0.710037 +vt 0.609021 0.716042 +vt 0.608299 0.710037 +vt 0.608299 0.716042 +vt 0.607577 0.710037 +vt 0.607577 0.716042 +vt 0.606855 0.710037 +vt 0.606855 0.716042 +vt 0.606134 0.710037 +vt 0.606134 0.716042 +vt 0.605412 0.710037 +vt 0.605412 0.716042 +vt 0.604690 0.710037 +vt 0.604690 0.716042 +vt 0.603968 0.710037 +vt 0.603968 0.716042 +vt 0.603247 0.710037 +vt 0.603247 0.716042 +vt 0.602525 0.710037 +vt 0.602525 0.716042 +vt 0.601803 0.710037 +vt 0.601803 0.716042 +vt 0.601081 0.710037 +vt 0.601081 0.716042 +vt 0.600359 0.710037 +vt 0.605945 0.708437 +vt 0.606419 0.708136 +vt 0.606419 0.708136 +vt 0.607856 0.708635 +vt 0.607166 0.709072 +vt 0.608368 0.708137 +vt 0.606989 0.707421 +vt 0.606772 0.707793 +vt 0.607062 0.707034 +vt 0.608683 0.707596 +vt 0.608683 0.706471 +vt 0.608790 0.707034 +vt 0.606989 0.706647 +vt 0.608368 0.705931 +vt 0.606419 0.705932 +vt 0.606772 0.706274 +vt 0.605945 0.705631 +vt 0.607856 0.705432 +vt 0.606326 0.704637 +vt 0.607166 0.704996 +vt 0.605366 0.705384 +vt 0.605368 0.704371 +vt 0.603991 0.705088 +vt 0.604707 0.705201 +vt 0.603247 0.705050 +vt 0.604328 0.704207 +vt 0.602165 0.704207 +vt 0.603247 0.704151 +vt 0.602502 0.705088 +vt 0.601125 0.704371 +vt 0.601127 0.705384 +vt 0.601786 0.705201 +vt 0.600548 0.705631 +vt 0.600167 0.704637 +vt 0.598637 0.705432 +vt 0.599327 0.704996 +vt 0.600074 0.705932 +vt 0.598125 0.705931 +vt 0.599504 0.706647 +vt 0.599721 0.706274 +vt 0.599431 0.707034 +vt 0.597810 0.706471 +vt 0.597810 0.707596 +vt 0.597703 0.707034 +vt 0.599504 0.707421 +vt 0.598125 0.708137 +vt 0.599721 0.707793 +vt 0.598637 0.708635 +vt 0.600074 0.708136 +vt 0.599327 0.709072 +vt 0.602502 0.708980 +vt 0.603247 0.709018 +vt 0.603247 0.709018 +vt 0.601127 0.705384 +vt 0.606772 0.707793 +vt 0.600548 0.705631 +vt 0.606989 0.707421 +vt 0.600074 0.705932 +vt 0.607062 0.707034 +vt 0.599721 0.706274 +vt 0.606989 0.706647 +vt 0.599504 0.706647 +vt 0.606772 0.706274 +vt 0.599431 0.707034 +vt 0.606419 0.705932 +vt 0.599504 0.707421 +vt 0.605945 0.705631 +vt 0.599721 0.707793 +vt 0.605366 0.705384 +vt 0.600074 0.708136 +vt 0.604707 0.705201 +vt 0.603991 0.708980 +vt 0.603991 0.708980 +vt 0.600548 0.708437 +vt 0.600548 0.708437 +vt 0.603991 0.705088 +vt 0.604707 0.708867 +vt 0.604707 0.708867 +vt 0.601127 0.708683 +vt 0.601127 0.708683 +vt 0.603247 0.705050 +vt 0.605366 0.708683 +vt 0.605366 0.708683 +vt 0.601786 0.708867 +vt 0.601786 0.708867 +vt 0.602502 0.705088 +vt 0.605945 0.708437 +vt 0.602502 0.708980 +vt 0.601786 0.705201 +vt 0.617932 0.708123 +vt 0.618715 0.709072 +vt 0.619404 0.708635 +vt 0.619917 0.708137 +vt 0.618280 0.707784 +vt 0.618495 0.707416 +vt 0.620232 0.707596 +vt 0.620339 0.707034 +vt 0.618568 0.707034 +vt 0.618495 0.706651 +vt 0.620232 0.706471 +vt 0.619917 0.705931 +vt 0.618280 0.706283 +vt 0.619404 0.705432 +vt 0.617932 0.705944 +vt 0.618715 0.704996 +vt 0.617463 0.705647 +vt 0.616891 0.705403 +vt 0.617875 0.704637 +vt 0.616917 0.704371 +vt 0.616239 0.705221 +vt 0.615531 0.705110 +vt 0.615877 0.704207 +vt 0.614795 0.704151 +vt 0.614795 0.705072 +vt 0.614059 0.705110 +vt 0.613714 0.704207 +vt 0.612674 0.704371 +vt 0.613352 0.705221 +vt 0.612699 0.705403 +vt 0.611715 0.704637 +vt 0.610875 0.704996 +vt 0.612128 0.705647 +vt 0.611659 0.705944 +vt 0.610186 0.705432 +vt 0.609674 0.705931 +vt 0.611310 0.706283 +vt 0.611095 0.706651 +vt 0.609358 0.706471 +vt 0.609252 0.707034 +vt 0.611023 0.707034 +vt 0.611095 0.707416 +vt 0.609358 0.707596 +vt 0.609674 0.708137 +vt 0.611310 0.707784 +vt 0.611659 0.708123 +vt 0.610186 0.708635 +vt 0.610875 0.709072 +vt 0.612128 0.708421 +vt 0.618610 0.646303 +vt 0.584515 0.664033 +vt 0.584515 0.646303 +vt 0.618610 0.664033 +vt 0.584515 0.681763 +vt 0.618610 0.681763 +vt 0.584515 0.699492 +vt 0.618610 0.699492 +vt 0.584515 0.717221 +vt 0.550420 0.699492 +vt 0.550420 0.681763 +vt 0.617687 0.710037 +vt 0.617687 0.716042 +vt 0.600355 0.716042 +vt 0.600355 0.710037 +vt 0.603247 0.709074 +vt 0.604027 0.709074 +vt 0.604872 0.709074 +vt 0.607161 0.709074 +vt 0.605868 0.709074 +vt 0.600625 0.709074 +vt 0.599332 0.709074 +vt 0.601621 0.709074 +vt 0.602466 0.709074 +vt 0.615531 0.708958 +vt 0.614795 0.709074 +vt 0.615576 0.709074 +vt 0.616239 0.708846 +vt 0.616420 0.709074 +vt 0.616891 0.708665 +vt 0.617417 0.709074 +vt 0.617463 0.708421 +vt 0.610880 0.709074 +vt 0.613170 0.709074 +vt 0.612699 0.708665 +vt 0.612173 0.709074 +vt 0.614015 0.709074 +vt 0.613352 0.708846 +vt 0.614059 0.708958 +vt 0.628899 0.693320 +vt 0.652705 0.681763 +vt 0.643086 0.693320 +vt 0.643086 0.687935 +vt 0.600359 0.716042 +vt 0.618610 0.717221 +vt 0.614795 0.708996 +vt 0.618710 0.709074 +vt 0.640743 0.693320 +vt 0.652705 0.699492 +vt 0.635992 0.687935 +vt 0.640743 0.687935 +vt 0.638937 0.687935 +vt 0.637406 0.687935 +vt 0.638937 0.693320 +vt 0.635992 0.693320 +vt 0.637406 0.693320 +vt 0.634578 0.687935 +vt 0.633047 0.687935 +vt 0.631242 0.693320 +vt 0.633047 0.693320 +vt 0.634578 0.693320 +vt 0.631242 0.687935 +vt 0.628899 0.687935 +vt 0.543609 0.932938 +vt 0.565766 0.944459 +vt 0.543609 0.944459 +vt 0.543609 0.955981 +vt 0.565766 0.955981 +vt 0.543609 0.967503 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.558011 0.932938 +vt 0.565766 0.944459 +vt 0.558011 0.944459 +vt 0.558011 0.955981 +vt 0.565766 0.955981 +vt 0.558011 0.967503 +vt 0.542329 0.614065 +vt 0.534574 0.625587 +vt 0.534574 0.614065 +vt 0.543609 0.955981 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.543609 0.967503 +vt 0.543609 0.944459 +vt 0.543609 0.932938 +vt 0.543609 0.932938 +vt 0.565766 0.944459 +vt 0.543609 0.944459 +vt 0.565766 0.955981 +vt 0.543609 0.955981 +vt 0.543609 0.967503 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.543609 0.932938 +vt 0.565766 0.944459 +vt 0.543609 0.944459 +vt 0.543609 0.955981 +vt 0.565766 0.955981 +vt 0.543609 0.967503 +vt 0.565766 0.967503 +vt 0.543609 0.979025 +vt 0.521451 0.967503 +vt 0.521451 0.955981 +vt 0.587924 0.955981 +vt 0.565766 0.932938 +vt 0.565766 0.979025 +vt 0.587924 0.967503 +vt 0.565766 0.932938 +vt 0.542329 0.625587 +vt 0.587924 0.967503 +vt 0.558011 0.979025 +vt 0.565766 0.932938 +vt 0.565766 0.979025 +vt 0.587924 0.967503 +vt 0.565766 0.932938 +vt 0.565766 0.979025 +vt 0.587924 0.967503 +vn -0.0003 0.0000 -1.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.0004 0.0000 -1.0000 +vn 0.0027 -1.0000 0.0019 +vn 0.0042 -1.0000 0.0030 +vn 0.0000 -1.0000 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0006 0.0004 1.0000 +vn 0.0011 0.0045 1.0000 +vn 0.0011 0.0049 1.0000 +vn 0.0008 1.0000 0.0000 +vn -0.7071 0.7071 0.0000 +vn -0.0049 0.0049 1.0000 +vn -0.8655 -0.5009 0.0000 +vn -0.0005 0.0000 -1.0000 +vn -0.0008 -1.0000 0.0005 +vn -0.0000 -0.5727 0.8197 +vn -0.0004 -0.8551 0.5184 +vn 0.7704 0.0003 0.6376 +vn 0.7699 -0.0003 0.6381 +vn 0.7698 0.0000 0.6382 +vn 0.7071 -0.7071 -0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7071 -0.7071 -0.0000 +vn 0.0000 -0.5729 0.8196 +vn -0.0004 -0.8552 0.5183 +vn 0.7696 -0.0008 0.6385 +vn 0.7708 0.0008 0.6371 +vn 0.7710 -0.0000 0.6369 +vn -0.0000 -0.5734 0.8193 +vn 0.7699 -0.0003 0.6382 +vn 0.7703 0.0003 0.6377 +vn 0.7704 -0.0000 0.6376 +vn -0.0000 -0.5727 0.8198 +vn -0.0004 -0.8551 0.5185 +vn 0.7700 0.0000 0.6381 +vn -0.8655 -0.5008 0.0000 +vn 0.7701 -0.0000 0.6379 +vn -0.7701 0.0000 -0.6379 +vn -0.0000 -0.5732 0.8194 +vn -0.0004 -0.8553 0.5182 +vn -0.7700 -0.0000 -0.6380 +vn 0.0070 -1.0000 0.0049 +vn 0.0005 0.0000 1.0000 +vn -0.0008 -1.0000 0.0000 +vn -0.0008 -1.0000 0.0003 +vn 0.9961 0.0882 0.0000 +vn 0.9865 -0.1635 -0.0000 +vn 0.8737 -0.4865 -0.0000 +vn 0.6256 -0.7802 -0.0000 +vn 0.2322 -0.9727 -0.0000 +vn -0.2322 -0.9727 -0.0000 +vn -0.6256 -0.7802 -0.0000 +vn -0.8737 -0.4865 -0.0000 +vn -0.9865 -0.1635 -0.0000 +vn -0.9961 0.0882 0.0000 +vn 0.1305 0.9914 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.6088 0.7934 0.0000 +vn 0.7933 0.6088 0.0000 +vn 0.9239 0.3827 0.0000 +vn 0.9914 0.1305 0.0000 +vn 0.9914 -0.1305 -0.0000 +vn 0.9239 -0.3827 -0.0000 +vn 0.7934 -0.6088 -0.0000 +vn 0.6088 -0.7934 -0.0000 +vn 0.3827 -0.9239 -0.0000 +vn 0.1305 -0.9914 -0.0000 +vn -0.1305 -0.9914 -0.0000 +vn -0.3827 -0.9239 -0.0000 +vn -0.6088 -0.7934 -0.0000 +vn -0.7934 -0.6088 -0.0000 +vn -0.7933 -0.6088 -0.0000 +vn -0.9239 -0.3827 -0.0000 +vn -0.9914 -0.1305 -0.0000 +vn -0.9914 0.1305 0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.7934 0.6088 0.0000 +vn -0.6088 0.7934 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.1305 0.9914 0.0000 +vn 0.3514 -0.8484 -0.3959 +vn 0.8484 -0.3514 -0.3959 +vn 0.8484 0.3514 -0.3959 +vn 0.3514 0.8484 -0.3959 +vn -0.3514 0.8484 -0.3959 +vn -0.8484 0.3514 -0.3959 +vn -0.8484 -0.3514 -0.3959 +vn -0.3514 -0.8484 -0.3959 +vn 0.7934 0.6088 0.0000 +vn -0.6088 -0.7933 0.0000 +vn 0.6088 0.7933 0.0000 +vn 0.6088 -0.7933 -0.0000 +vn 0.5314 0.1600 -0.8319 +vn 0.8527 -0.0000 -0.5224 +vn 0.5314 -0.1600 -0.8319 +vn -0.0001 0.0000 -1.0000 +vn 0.0001 0.0000 -1.0000 +vn 0.0001 0.0000 1.0000 +vn -0.0001 0.0000 1.0000 +vn 0.0000 -0.3784 -0.9256 +vn 0.0000 -0.0253 0.9997 +vn 0.0000 0.1422 -0.9898 +vn 0.0000 -0.9644 0.2643 +vn 0.0000 -0.9848 0.1739 +vn 0.0000 0.4185 0.9082 +vn 0.0000 0.9237 0.3831 +vn 0.0000 -0.8319 0.5549 +vn 0.0000 0.9997 0.0264 +vn 0.0000 -0.9997 -0.0249 +vn 0.0000 -0.9236 -0.3834 +vn 0.0001 0.6431 0.7658 +vn 0.0000 0.6432 0.7657 +vn 0.0000 -0.0909 0.9959 +vn 0.0000 0.9535 0.3014 +vn 0.0000 -0.8690 -0.4947 +vn 0.0000 0.9932 0.1168 +vn 0.0001 0.8691 0.4946 +vn 0.0002 0.8693 0.4944 +vn 0.0002 0.8693 0.4942 +vn 0.0000 0.9988 0.0480 +vn 0.0000 0.3739 -0.9275 +vn 0.0000 -0.8192 0.5735 +vn 0.0000 -0.5018 0.8650 +vn 0.0000 -0.3738 -0.9275 +vn 0.0000 0.9764 0.2159 +vn 0.0000 -0.5664 0.8241 +vn 0.0000 0.2951 0.9555 +vn 0.0000 -0.9028 -0.4301 +vn 0.0000 -0.6377 0.7703 +vn 0.0000 -0.6645 -0.7473 +vn 0.0000 -0.2686 0.9633 +vn 0.0000 0.2609 0.9654 +vn 0.0000 -0.9044 -0.4266 +vn 0.0000 0.7413 0.6712 +vn 0.0000 -0.9994 -0.0337 +vn 0.0000 -0.9729 -0.2312 +vn 0.0000 0.9943 0.1065 +vn 0.0000 -0.9039 0.4277 +vn 0.0000 0.9182 -0.3961 +vn 0.0000 -0.4423 0.8969 +vn 0.0000 0.4320 0.9019 +vn 0.0000 0.4842 -0.8749 +vn 0.0000 0.4261 0.9047 +vn 0.0000 0.1909 -0.9816 +vn 0.0000 0.9995 0.0318 +vn 0.0000 0.9918 -0.1277 +vn 0.0000 0.6918 0.7220 +vn 0.0000 0.8646 -0.5025 +vn 1.0000 -0.0010 0.0007 +vn 1.0000 -0.0019 0.0017 +vn 0.0000 -0.6430 -0.7658 +vn 0.0000 -0.6432 -0.7657 +vn 0.0000 -0.8693 -0.4942 +vn -0.5484 -0.0760 0.8328 +vn -0.7536 -0.6071 -0.2520 +vn -0.7698 0.6340 0.0745 +vn -0.7607 0.6189 0.1957 +vn -0.7402 0.5843 0.3326 +vn -0.6787 -0.4737 -0.5613 +vn -0.9730 -0.1947 -0.1237 +vn -0.6263 -0.5087 -0.5907 +vn 0.7982 0.5982 0.0703 +vn 0.7898 0.5848 0.1849 +vn 0.7709 0.5538 0.3148 +vn 0.5429 -0.7301 -0.4151 +vn 0.8868 -0.3899 -0.2481 +vn 0.3349 -0.6195 -0.7100 +vn 0.7699 -0.5824 -0.2610 +vn 0.7751 -0.5764 -0.2588 +vn 0.3897 -0.8505 -0.3533 +vn 0.5847 -0.0737 0.8079 +vn 0.9379 -0.3346 0.0917 +vn 0.9395 -0.3373 0.0596 +vn 0.8718 0.2050 0.4449 +vn 0.8298 -0.0141 0.5579 +vn 0.9258 -0.3144 0.2097 +vn 0.9344 0.3289 0.1364 +vn 0.9407 0.3392 0.0089 +vn 0.8657 -0.1894 -0.4633 +vn 0.8358 0.0781 -0.5434 +vn -0.9296 -0.3628 0.0641 +vn -0.9278 -0.3599 0.0986 +vn -0.8138 0.0826 -0.5752 +vn -0.8467 -0.2014 -0.4926 +vn -0.9310 0.3649 0.0096 +vn -0.9238 0.3536 0.1467 +vn -0.9140 -0.3374 0.2251 +vn -0.8072 -0.0149 0.5901 +vn -0.8534 0.2182 0.4735 +vn 0.0001 1.0000 0.0000 +vn 0.0002 1.0000 0.0000 +vn -0.0000 0.9998 0.0183 +vn -0.0001 0.9998 0.0183 +vn 1.0000 0.0015 0.0007 +vn 1.0000 -0.0020 0.0019 +vn 1.0000 -0.0005 0.0032 +vn 1.0000 -0.0000 0.0017 +vn -0.0000 -1.0000 0.0007 +vn 0.0000 0.0729 0.9973 +vn 0.0033 0.0732 -0.9973 +vn 0.0008 0.0725 -0.9974 +vn 0.0000 0.0722 -0.9974 +vn 1.0000 -0.0000 0.0026 +vn 0.0048 -0.0004 -1.0000 +vn 0.0056 -0.0009 -1.0000 +vn 0.0041 -0.0001 -1.0000 +vn 0.0000 1.0000 -0.0007 +vn 1.0000 0.0000 0.0052 +vn 1.0000 -0.0035 -0.0044 +vn 0.0002 0.6430 0.7658 +vn 0.0000 0.8690 0.4947 +vn 1.0000 -0.0055 0.0020 +vn 1.0000 -0.0005 0.0027 +vn 1.0000 -0.0090 -0.0003 +vn 1.0000 0.0001 0.0025 +vn -0.6788 -0.4722 -0.5624 +vn -0.5489 -0.5375 -0.6401 +vn 0.7982 0.5983 0.0703 +vn 0.4928 -0.5934 -0.6364 +vn 0.4171 -0.6319 -0.6532 +vn 0.3412 -0.6364 -0.6918 +vn 0.3227 -0.6087 -0.7248 +vn 0.3837 -0.8529 -0.3540 +vn 0.9999 0.0114 0.0035 +vn 0.0041 0.0735 -0.9973 +vn 0.0063 -0.0012 -1.0000 +vn 1.0000 0.0013 -0.0033 +vn 1.0000 0.0093 -0.0015 +vn 1.0000 -0.0055 -0.0032 +vn 1.0000 -0.0004 0.0052 +vn 0.7730 -0.6344 0.0000 +vn 0.8819 -0.4714 0.0000 +vn 0.9569 -0.2903 0.0000 +vn 0.9952 -0.0980 0.0000 +vn 0.9952 0.0980 0.0000 +vn 0.9569 0.2903 0.0000 +vn 0.8819 0.4714 0.0000 +vn 0.7730 0.6344 0.0000 +vn 0.6344 0.7730 0.0000 +vn 0.4714 0.8819 0.0000 +vn 0.2903 0.9569 0.0000 +vn 0.0980 0.9952 0.0000 +vn -0.0980 0.9952 0.0000 +vn -0.2903 0.9569 0.0000 +vn -0.4714 0.8819 0.0000 +vn -0.6344 0.7730 0.0000 +vn -0.7730 0.6344 0.0000 +vn -0.8819 0.4714 0.0000 +vn -0.9569 0.2903 0.0000 +vn -0.9952 0.0980 0.0000 +vn -0.9952 -0.0980 0.0000 +vn -0.9569 -0.2903 0.0000 +vn -0.8819 -0.4714 0.0000 +vn -0.7730 -0.6344 0.0000 +vn 0.4714 -0.8819 0.0000 +vn 0.6344 -0.7730 0.0000 +vn -0.6344 -0.7730 0.0000 +vn -0.4714 -0.8819 0.0000 +vn -0.2903 -0.9569 0.0000 +vn -0.0980 -0.9952 0.0000 +vn 0.0980 -0.9952 0.0000 +vn 0.2903 -0.9569 0.0000 +vn 0.0009 0.0000 1.0000 +vn -0.0008 0.0000 1.0000 +vn 0.6341 -0.7732 0.0000 +vn 0.6338 -0.7735 0.0000 +vn -0.6345 -0.7729 0.0000 +vn -0.0010 0.0000 1.0000 +vn 0.0012 0.0000 1.0000 +vn -0.9886 0.1508 0.0000 +vn 0.0000 0.7659 -0.6430 +vn 0.9886 0.1508 0.0000 +vn 0.0000 0.5850 0.8110 +vn -0.9980 0.0638 0.0000 +vn 0.0000 0.0992 -0.9951 +vn 0.9980 0.0638 0.0000 +vn 0.0000 0.0212 0.9998 +vn 0.0000 0.0211 0.9998 +vn -0.9692 -0.2464 0.0000 +vn -0.0424 0.1386 -0.9894 +vn 0.9412 0.3377 0.0000 +vn 0.9413 0.3377 0.0000 +vn -0.0091 0.0297 0.9995 +vn 0.2924 -0.9563 0.0000 +vn -0.2924 0.9563 0.0000 +vn -0.9412 0.3377 0.0000 +vn 0.0423 0.1385 -0.9895 +vn 0.9692 -0.2464 0.0000 +vn 0.0091 0.0297 0.9995 +vn -0.2924 -0.9563 0.0000 +vn 0.2924 0.9563 0.0000 +s 1 +f 1/1/1 2/2/2 3/3/3 +f 1/4/4 4/5/5 2/2/6 +f 5/6/2 6/7/2 7/8/2 +f 6/7/7 8/9/7 7/8/7 +f 8/9/8 9/10/8 10/11/8 +f 7/8/6 10/12/6 5/13/6 +f 5/14/9 6/7/9 9/10/9 +f 10/15/10 11/16/11 12/17/12 +f 3/18/13 9/10/13 6/7/13 +f 2/2/14 11/19/14 3/3/14 +f 12/17/15 11/19/15 4/5/15 +f 13/20/16 12/21/16 1/22/16 +f 6/7/17 1/23/1 3/24/3 +f 10/15/18 12/21/19 13/25/20 +f 12/26/21 13/27/22 11/28/23 +f 14/29/2 15/30/2 16/31/2 +f 15/30/24 17/32/24 16/31/24 +f 17/32/8 18/33/8 19/34/8 +f 14/35/25 17/32/25 19/36/25 +f 14/37/26 18/33/26 15/30/26 +f 20/38/2 21/39/2 22/40/2 +f 21/39/27 23/41/27 22/40/27 +f 23/41/8 24/42/8 25/43/8 +f 22/40/26 25/44/26 20/45/26 +f 20/46/9 24/42/9 21/39/9 +f 26/47/1 27/48/2 28/49/3 +f 26/50/4 29/51/5 27/48/6 +f 30/52/2 31/53/2 32/54/2 +f 31/53/7 33/55/7 32/54/7 +f 33/55/8 34/56/8 35/57/8 +f 32/54/6 35/58/6 30/59/6 +f 30/60/9 31/53/9 34/56/9 +f 35/61/10 36/62/11 37/63/12 +f 28/64/13 34/56/13 31/53/13 +f 27/48/14 36/65/14 28/49/14 +f 37/63/15 36/65/15 29/51/15 +f 38/66/16 37/67/16 26/68/16 +f 31/53/17 26/69/1 28/70/3 +f 35/61/18 37/67/28 38/71/29 +f 37/72/30 38/73/31 36/74/32 +f 39/75/1 40/76/2 41/77/3 +f 39/78/4 42/79/5 40/76/6 +f 43/80/2 44/81/2 45/82/2 +f 44/81/7 46/83/7 45/82/7 +f 46/83/8 47/84/8 48/85/8 +f 45/82/6 48/86/6 43/87/6 +f 43/88/9 44/81/9 47/84/9 +f 48/89/10 49/90/11 50/91/12 +f 41/92/13 47/84/13 44/81/13 +f 40/76/14 49/93/14 41/77/14 +f 50/91/15 49/93/15 42/79/15 +f 51/94/16 50/95/16 39/96/16 +f 44/81/17 39/97/1 41/98/3 +f 48/89/18 50/95/33 51/99/29 +f 50/100/30 51/101/31 49/102/32 +f 52/103/1 53/104/2 54/105/3 +f 52/106/4 55/107/5 53/104/6 +f 56/108/2 57/109/2 58/110/2 +f 57/109/7 59/111/7 58/110/7 +f 59/111/8 60/112/8 61/113/8 +f 58/110/6 61/114/6 56/115/6 +f 56/116/9 57/109/9 60/112/9 +f 61/117/10 62/118/11 63/119/12 +f 54/120/13 60/112/13 57/109/13 +f 53/104/14 62/121/14 54/105/14 +f 63/119/15 62/121/15 55/107/15 +f 64/122/16 63/123/16 52/124/16 +f 57/109/17 52/125/1 54/126/3 +f 61/117/18 63/123/28 64/127/29 +f 63/128/34 64/129/35 62/130/36 +f 65/131/1 66/132/2 67/133/3 +f 65/134/4 68/135/5 66/132/6 +f 69/136/2 70/137/2 71/138/2 +f 70/137/7 72/139/7 71/138/7 +f 72/139/8 73/140/8 74/141/8 +f 71/138/6 74/142/6 69/143/6 +f 69/144/9 70/137/9 73/140/9 +f 74/145/10 75/146/11 76/147/12 +f 67/148/13 73/140/13 70/137/13 +f 66/132/14 75/149/14 67/133/14 +f 76/147/15 75/149/15 68/135/15 +f 77/150/16 76/151/16 65/152/16 +f 70/137/17 65/153/1 67/154/3 +f 74/145/18 76/151/37 77/155/38 +f 76/156/34 77/157/35 75/158/36 +f 78/159/1 79/160/2 80/161/3 +f 78/162/4 81/163/5 79/160/6 +f 82/164/2 83/165/2 84/166/2 +f 83/165/7 85/167/7 84/166/7 +f 85/167/8 86/168/8 87/169/8 +f 84/166/6 87/170/6 82/171/6 +f 82/172/9 83/165/9 86/168/9 +f 87/173/10 88/174/11 89/175/12 +f 80/176/13 86/168/13 83/165/13 +f 79/160/14 88/177/14 80/161/14 +f 89/175/15 88/177/15 81/163/15 +f 90/178/16 89/179/16 78/180/16 +f 83/165/17 78/181/1 80/182/3 +f 87/173/18 89/179/19 90/183/20 +f 89/184/39 90/185/39 88/186/39 +f 91/187/1 92/188/2 93/189/3 +f 91/190/4 94/191/5 92/188/6 +f 95/192/2 96/193/2 97/194/2 +f 96/193/7 98/195/7 97/194/7 +f 98/195/8 99/196/8 100/197/8 +f 97/194/6 100/198/6 95/199/6 +f 95/200/9 96/193/9 99/196/9 +f 100/201/10 101/202/11 102/203/12 +f 93/204/13 99/196/13 96/193/13 +f 92/188/14 101/205/14 93/189/14 +f 102/203/15 101/205/15 94/191/15 +f 103/206/40 102/207/40 91/208/40 +f 96/193/17 91/209/1 93/210/3 +f 100/201/18 102/207/37 103/211/20 +f 102/212/21 103/213/22 101/214/23 +f 104/215/1 105/216/2 106/217/3 +f 104/218/4 107/219/5 105/216/6 +f 108/220/2 109/221/2 110/222/2 +f 109/221/7 111/223/7 110/222/7 +f 111/223/8 112/224/8 113/225/8 +f 110/222/6 113/226/6 108/227/6 +f 108/228/9 109/221/9 112/224/9 +f 113/229/10 114/230/11 115/231/12 +f 106/232/13 112/224/13 109/221/13 +f 105/216/14 114/233/14 106/217/14 +f 115/231/15 114/233/15 107/219/15 +f 116/234/16 115/235/16 104/236/16 +f 109/221/17 104/237/1 106/238/3 +f 113/229/18 115/235/19 116/239/20 +f 115/240/41 116/241/41 114/242/41 +f 117/243/1 118/244/2 119/245/3 +f 117/246/4 120/247/5 118/244/6 +f 121/248/2 122/249/2 123/250/2 +f 122/249/7 124/251/7 123/250/7 +f 124/251/8 125/252/8 126/253/8 +f 123/250/6 126/254/6 121/255/6 +f 121/256/9 122/249/9 125/252/9 +f 126/257/10 127/258/11 128/259/12 +f 119/260/13 125/252/13 122/249/13 +f 118/244/14 127/261/14 119/245/14 +f 128/259/15 127/261/15 120/247/15 +f 129/262/16 128/263/16 117/264/16 +f 122/249/17 117/265/1 119/266/3 +f 126/257/18 128/263/37 129/267/20 +f 128/268/42 127/269/42 129/270/42 +f 130/271/1 131/272/2 132/273/3 +f 130/274/4 133/275/5 131/272/6 +f 134/276/2 135/277/2 136/278/2 +f 135/277/7 137/279/7 136/278/7 +f 137/279/8 138/280/8 139/281/8 +f 136/278/6 139/282/6 134/283/6 +f 134/284/9 135/277/9 138/280/9 +f 139/285/10 140/286/11 141/287/12 +f 132/288/13 138/280/13 135/277/13 +f 131/272/14 140/289/14 132/273/14 +f 141/287/15 140/289/15 133/275/15 +f 142/290/16 141/291/16 130/292/16 +f 135/277/17 130/293/1 132/294/3 +f 139/285/18 141/291/19 142/295/20 +f 141/296/42 140/297/42 142/298/42 +f 143/299/1 144/300/2 145/301/3 +f 143/302/4 146/303/5 144/300/6 +f 147/304/2 148/305/2 149/306/2 +f 148/305/7 150/307/7 149/306/7 +f 150/307/8 151/308/8 152/309/8 +f 149/306/6 152/310/6 147/311/6 +f 147/312/9 148/305/9 151/308/9 +f 152/313/10 153/314/11 154/315/12 +f 145/316/13 151/308/13 148/305/13 +f 144/300/14 153/317/14 145/301/14 +f 154/315/15 153/317/15 146/303/15 +f 155/318/16 154/319/16 143/320/16 +f 148/305/17 143/321/1 145/322/3 +f 152/313/18 154/319/43 155/323/44 +f 154/324/45 153/325/45 155/326/45 +f 156/327/1 157/328/2 158/329/3 +f 156/330/4 159/331/5 157/328/6 +f 160/332/2 161/333/2 162/334/2 +f 161/333/7 163/335/7 162/334/7 +f 163/335/8 164/336/8 165/337/8 +f 162/334/6 165/338/6 160/339/6 +f 160/340/9 161/333/9 164/336/9 +f 165/341/10 166/342/11 167/343/12 +f 158/344/13 164/336/13 161/333/13 +f 157/328/14 166/345/14 158/329/14 +f 167/343/15 166/345/15 159/331/15 +f 168/346/16 167/347/16 156/348/16 +f 161/333/17 156/349/1 158/350/3 +f 165/341/18 167/347/37 168/351/38 +f 167/352/42 166/353/42 168/354/42 +f 1/4/4 12/355/46 4/5/5 +f 6/7/7 9/10/7 8/9/7 +f 7/8/6 8/9/6 10/12/6 +f 5/14/9 9/10/9 10/356/9 +f 10/15/10 9/10/47 11/16/11 +f 3/18/13 11/357/13 9/10/13 +f 2/2/14 4/5/14 11/19/14 +f 6/7/17 5/358/17 1/23/1 +f 13/25/20 1/22/48 10/15/18 +f 1/22/48 5/358/48 10/15/18 +f 15/30/24 18/33/24 17/32/24 +f 14/35/25 16/31/25 17/32/25 +f 14/37/26 19/359/26 18/33/26 +f 21/39/27 24/42/27 23/41/27 +f 22/40/26 23/41/26 25/44/26 +f 20/46/9 25/360/9 24/42/9 +f 26/50/4 37/361/46 29/51/5 +f 31/53/7 34/56/7 33/55/7 +f 32/54/6 33/55/6 35/58/6 +f 30/60/9 34/56/9 35/362/9 +f 35/61/10 34/56/47 36/62/11 +f 28/64/13 36/363/13 34/56/13 +f 27/48/14 29/51/14 36/65/14 +f 31/53/17 30/364/17 26/69/1 +f 38/71/29 26/68/48 35/61/18 +f 26/68/48 30/364/48 35/61/18 +f 39/78/4 50/365/46 42/79/5 +f 44/81/7 47/84/7 46/83/7 +f 45/82/6 46/83/6 48/86/6 +f 43/88/9 47/84/9 48/366/9 +f 48/89/10 47/84/47 49/90/11 +f 41/92/13 49/367/13 47/84/13 +f 40/76/14 42/79/14 49/93/14 +f 44/81/17 43/368/17 39/97/1 +f 51/99/29 39/96/48 48/89/18 +f 39/96/48 43/368/48 48/89/18 +f 52/106/4 63/369/46 55/107/5 +f 57/109/7 60/112/7 59/111/7 +f 58/110/6 59/111/6 61/114/6 +f 56/116/9 60/112/9 61/370/9 +f 61/117/10 60/112/47 62/118/11 +f 54/120/13 62/371/13 60/112/13 +f 53/104/14 55/107/14 62/121/14 +f 57/109/17 56/372/17 52/125/1 +f 64/127/29 52/124/48 61/117/18 +f 52/124/48 56/372/48 61/117/18 +f 65/134/4 76/373/46 68/135/5 +f 70/137/7 73/140/7 72/139/7 +f 71/138/6 72/139/6 74/142/6 +f 69/144/9 73/140/9 74/374/9 +f 74/145/10 73/140/47 75/146/11 +f 67/148/13 75/375/13 73/140/13 +f 66/132/14 68/135/14 75/149/14 +f 70/137/17 69/376/17 65/153/1 +f 77/155/38 65/152/48 74/145/18 +f 65/152/48 69/376/48 74/145/49 +f 78/162/4 89/377/46 81/163/5 +f 83/165/7 86/168/7 85/167/7 +f 84/166/6 85/167/6 87/170/6 +f 82/172/9 86/168/9 87/378/9 +f 87/173/10 86/168/47 88/174/11 +f 80/176/13 88/379/13 86/168/13 +f 79/160/14 81/163/14 88/177/14 +f 83/165/17 82/380/17 78/181/1 +f 90/183/20 78/180/48 87/173/18 +f 78/180/48 82/380/48 87/173/18 +f 91/190/4 102/381/46 94/191/5 +f 96/193/7 99/196/7 98/195/7 +f 97/194/6 98/195/6 100/198/6 +f 95/200/9 99/196/9 100/382/9 +f 100/201/10 99/196/47 101/202/11 +f 93/204/13 101/383/13 99/196/13 +f 92/188/14 94/191/14 101/205/14 +f 96/193/17 95/384/17 91/209/1 +f 103/211/20 91/208/48 100/201/18 +f 91/208/48 95/384/48 100/201/18 +f 104/218/4 115/385/46 107/219/5 +f 109/221/7 112/224/7 111/223/7 +f 110/222/6 111/223/6 113/226/6 +f 108/228/9 112/224/9 113/386/9 +f 113/229/10 112/224/47 114/230/11 +f 106/232/13 114/387/13 112/224/13 +f 105/216/14 107/219/14 114/233/14 +f 109/221/17 108/388/17 104/237/1 +f 116/239/20 104/236/48 113/229/18 +f 104/236/48 108/388/48 113/229/18 +f 117/246/4 128/389/46 120/247/5 +f 122/249/7 125/252/7 124/251/7 +f 123/250/6 124/251/6 126/254/6 +f 121/256/9 125/252/9 126/390/9 +f 126/257/10 125/252/47 127/258/11 +f 119/260/13 127/391/13 125/252/13 +f 118/244/14 120/247/14 127/261/14 +f 122/249/17 121/392/17 117/265/1 +f 129/267/20 117/264/48 126/257/18 +f 117/264/48 121/392/48 126/257/18 +f 130/274/4 141/393/46 133/275/5 +f 135/277/7 138/280/7 137/279/7 +f 136/278/6 137/279/6 139/282/6 +f 134/284/9 138/280/9 139/394/9 +f 139/285/10 138/280/47 140/286/11 +f 132/288/13 140/395/13 138/280/13 +f 131/272/14 133/275/14 140/289/14 +f 135/277/17 134/396/17 130/293/1 +f 142/295/20 130/292/48 139/285/18 +f 130/292/48 134/396/48 139/285/49 +f 143/302/4 154/397/46 146/303/5 +f 148/305/7 151/308/7 150/307/7 +f 149/306/6 150/307/6 152/310/6 +f 147/312/9 151/308/9 152/398/9 +f 152/313/10 151/308/47 153/314/11 +f 145/316/13 153/399/13 151/308/13 +f 144/300/14 146/303/14 153/317/14 +f 148/305/17 147/400/17 143/321/1 +f 155/323/44 143/320/48 152/313/18 +f 143/320/48 147/400/48 152/313/18 +f 156/330/4 167/401/46 159/331/5 +f 161/333/7 164/336/7 163/335/7 +f 162/334/6 163/335/6 165/338/6 +f 160/340/9 164/336/9 165/402/9 +f 165/341/10 164/336/47 166/342/11 +f 158/344/13 166/403/13 164/336/13 +f 157/328/14 159/331/14 166/345/14 +f 161/333/17 160/404/17 156/349/1 +f 168/351/38 156/348/48 165/341/18 +f 156/348/48 160/404/48 165/341/18 +f 169/405/2 170/406/2 171/407/2 +f 172/408/50 171/409/50 173/410/50 +f 174/411/51 175/412/51 171/409/51 +f 176/413/52 177/414/52 175/412/52 +f 178/415/53 179/416/53 177/414/53 +f 180/417/54 181/418/54 179/416/54 +f 182/419/55 183/420/55 181/418/55 +f 184/421/56 185/422/56 183/420/56 +f 186/423/57 187/424/57 185/422/57 +f 188/425/58 169/426/58 187/424/58 +f 189/427/59 170/428/59 169/426/59 +f 170/406/26 172/429/26 173/430/26 +f 178/431/8 176/432/8 186/433/8 +f 170/406/2 173/430/2 171/407/2 +f 171/407/2 175/434/2 187/435/2 +f 175/434/2 177/436/2 185/437/2 +f 177/436/2 179/438/2 185/437/2 +f 179/438/2 181/439/2 183/440/2 +f 185/437/2 179/438/2 183/440/2 +f 185/437/2 187/435/2 175/434/2 +f 187/435/2 169/405/2 171/407/2 +f 172/408/50 174/411/50 171/409/50 +f 174/411/51 176/413/51 175/412/51 +f 176/413/52 178/415/52 177/414/52 +f 178/415/53 180/417/53 179/416/53 +f 180/417/54 182/419/54 181/418/54 +f 182/419/55 184/421/55 183/420/55 +f 184/421/56 186/423/56 185/422/56 +f 186/423/57 188/425/57 187/424/57 +f 188/425/58 189/427/58 169/426/58 +f 189/427/59 190/441/59 170/428/59 +f 170/406/26 190/442/26 172/429/26 +f 176/432/8 174/443/8 189/444/8 +f 174/443/8 172/429/8 189/444/8 +f 172/429/8 190/442/8 189/444/8 +f 189/444/8 188/445/8 176/432/8 +f 188/445/8 186/433/8 176/432/8 +f 186/433/8 184/446/8 178/431/8 +f 184/446/8 182/447/8 180/448/8 +f 178/431/8 184/446/8 180/448/8 +f 191/449/60 192/450/60 193/451/60 +f 194/452/61 195/453/61 192/450/61 +f 196/454/62 197/455/62 195/453/62 +f 198/456/63 199/457/63 197/455/63 +f 200/458/64 201/459/64 199/457/64 +f 202/460/65 203/461/65 201/459/65 +f 204/462/66 205/463/66 203/461/66 +f 206/464/67 207/465/67 205/463/67 +f 208/466/68 209/467/68 207/465/68 +f 210/468/69 211/469/69 209/467/69 +f 212/470/70 213/471/70 211/469/70 +f 214/472/71 215/473/71 213/471/71 +f 216/474/72 217/475/72 215/473/72 +f 218/476/73 219/477/73 217/475/73 +f 220/478/74 221/479/74 219/477/74 +f 222/480/75 223/481/76 221/479/76 +f 224/482/77 225/483/77 223/481/77 +f 226/484/78 227/485/78 225/483/78 +f 228/486/79 229/487/79 227/485/79 +f 230/488/80 231/489/80 229/487/80 +f 232/490/81 233/491/81 231/489/81 +f 234/492/82 235/493/82 233/491/82 +f 212/494/8 204/495/8 196/496/8 +f 236/497/83 237/498/83 235/493/83 +f 238/499/84 193/500/84 237/498/84 +f 239/501/73 240/502/73 241/503/73 +f 242/504/61 243/505/61 244/506/61 +f 245/507/64 246/508/64 243/505/64 +f 247/509/67 248/510/67 246/508/67 +f 249/511/70 250/512/70 248/510/70 +f 251/513/73 252/514/73 250/512/73 +f 253/515/77 254/516/77 252/514/77 +f 247/517/8 242/518/8 255/519/8 +f 255/520/80 256/521/80 254/516/80 +f 257/522/83 244/523/83 256/521/83 +f 248/524/2 252/525/2 256/526/2 +f 250/527/85 258/528/85 248/529/85 +f 248/529/86 259/530/86 246/531/86 +f 246/531/87 260/532/87 243/533/87 +f 260/532/88 244/534/88 243/533/88 +f 261/535/89 256/536/89 244/534/89 +f 262/537/90 254/538/90 256/536/90 +f 263/539/91 252/540/91 254/538/91 +f 264/541/92 250/527/92 252/540/92 +f 265/542/80 259/543/80 258/544/80 +f 266/545/83 258/544/83 267/546/83 +f 268/547/70 262/548/70 261/549/70 +f 269/550/73 261/551/73 260/552/73 +f 270/553/77 260/552/77 259/543/77 +f 271/554/61 267/546/61 264/555/61 +f 272/556/60 273/557/60 274/558/60 +f 275/559/61 276/560/61 273/557/61 +f 277/561/62 278/562/62 276/560/62 +f 279/563/93 280/564/93 278/562/93 +f 281/565/64 282/566/64 280/564/64 +f 283/567/65 284/568/65 282/566/65 +f 285/569/66 286/570/66 284/568/66 +f 287/571/67 288/572/67 286/570/67 +f 289/573/68 290/574/68 288/572/68 +f 291/575/69 292/576/69 290/574/69 +f 293/577/70 294/578/70 292/576/70 +f 295/579/71 296/580/71 294/578/71 +f 297/581/72 298/582/72 296/580/72 +f 299/583/73 300/584/73 298/582/73 +f 301/585/74 302/586/74 300/584/74 +f 303/587/75 304/588/75 302/586/75 +f 305/589/77 306/590/77 304/588/77 +f 307/591/78 308/592/78 306/590/78 +f 309/593/79 310/594/79 308/592/79 +f 311/595/80 312/596/80 310/594/80 +f 313/597/81 314/598/81 312/596/81 +f 315/599/82 316/600/82 314/598/82 +f 309/601/8 293/602/8 277/603/8 +f 317/604/83 318/605/83 316/600/83 +f 319/606/84 274/607/84 318/605/84 +f 310/608/2 318/609/2 286/610/2 +f 320/611/60 321/612/60 322/613/60 +f 323/614/61 324/615/61 321/612/61 +f 325/616/62 326/617/62 324/615/62 +f 327/618/63 328/619/63 326/617/63 +f 329/620/64 330/621/64 328/619/64 +f 331/622/65 332/623/65 330/621/65 +f 333/624/66 334/625/66 332/623/66 +f 335/626/67 336/627/67 334/625/67 +f 337/628/68 338/629/68 336/627/68 +f 339/630/69 340/631/69 338/629/69 +f 341/632/70 342/633/70 340/631/70 +f 343/634/71 344/635/71 342/633/71 +f 345/636/72 346/637/72 344/635/72 +f 347/638/73 348/639/73 346/637/73 +f 349/640/74 350/641/74 348/639/94 +f 351/642/75 352/643/75 350/641/75 +f 353/644/77 354/645/77 352/643/77 +f 355/646/78 356/647/78 354/645/78 +f 357/648/79 358/649/79 356/647/79 +f 359/650/80 360/651/80 358/649/80 +f 361/652/81 362/653/81 360/651/81 +f 363/654/82 364/655/82 362/653/82 +f 341/656/8 333/657/8 325/658/8 +f 365/659/83 366/660/83 364/655/83 +f 367/661/84 322/662/84 366/660/84 +f 350/663/2 358/664/2 366/665/2 +f 368/666/60 369/667/60 370/668/60 +f 371/669/61 372/670/61 369/667/61 +f 373/671/62 374/672/62 372/670/62 +f 375/673/63 376/674/63 374/672/63 +f 377/675/64 378/676/64 376/674/64 +f 379/677/65 380/678/65 378/676/65 +f 381/679/66 382/680/66 380/678/66 +f 383/681/67 384/682/67 382/680/67 +f 385/683/68 386/684/68 384/682/68 +f 387/685/69 388/686/69 386/684/69 +f 389/687/70 390/688/70 388/686/70 +f 391/689/71 392/690/71 390/688/71 +f 393/691/72 394/692/72 392/690/72 +f 395/693/73 396/694/73 394/692/73 +f 397/695/74 398/696/74 396/694/74 +f 399/697/75 400/698/75 398/696/75 +f 401/699/77 402/700/77 400/698/77 +f 403/701/78 404/702/78 402/700/78 +f 405/703/79 406/704/79 404/702/79 +f 407/705/80 408/706/80 406/704/80 +f 409/707/81 410/708/81 408/706/81 +f 411/709/82 412/710/82 410/708/82 +f 389/711/8 381/712/8 373/713/8 +f 413/714/83 414/715/83 412/710/83 +f 415/716/84 370/717/84 414/715/84 +f 398/718/2 406/719/2 414/720/2 +f 416/721/60 417/722/60 418/723/60 +f 419/724/61 420/725/61 417/722/61 +f 421/726/62 422/727/62 420/725/62 +f 423/728/63 424/729/63 422/727/63 +f 425/730/64 426/731/64 424/729/64 +f 427/732/65 428/733/65 426/731/65 +f 429/734/66 430/735/66 428/733/66 +f 431/736/67 432/737/67 430/735/67 +f 433/738/68 434/739/68 432/737/68 +f 435/740/69 436/741/69 434/739/69 +f 437/742/70 438/743/70 436/741/70 +f 439/744/71 440/745/71 438/743/71 +f 441/746/72 442/747/72 440/745/72 +f 443/748/73 444/749/73 442/747/73 +f 445/750/74 446/751/74 444/749/74 +f 447/752/75 448/753/75 446/751/76 +f 449/754/77 450/755/77 448/753/77 +f 451/756/78 452/757/78 450/755/78 +f 453/758/79 454/759/79 452/757/79 +f 455/760/80 456/761/80 454/759/80 +f 457/762/81 458/763/81 456/761/81 +f 459/764/82 460/765/82 458/763/82 +f 437/766/8 429/767/8 421/768/8 +f 461/769/83 462/770/83 460/765/83 +f 463/771/84 418/772/84 462/770/84 +f 446/773/2 454/774/2 462/775/2 +f 464/776/60 465/777/60 466/778/60 +f 467/779/61 468/780/61 465/777/61 +f 469/781/95 470/782/62 468/780/62 +f 471/783/63 472/784/63 470/782/63 +f 473/785/64 474/786/64 472/784/64 +f 475/787/65 476/788/65 474/786/65 +f 477/789/66 478/790/66 476/788/66 +f 479/791/67 480/792/67 478/790/67 +f 481/793/68 482/794/68 480/792/68 +f 483/795/96 484/796/69 482/794/69 +f 485/797/70 486/798/70 484/796/70 +f 487/799/71 488/800/71 486/798/71 +f 489/801/72 490/802/72 488/800/72 +f 491/803/73 492/804/73 490/802/73 +f 493/805/74 494/806/94 492/804/94 +f 495/807/75 496/808/76 494/806/76 +f 497/809/77 498/810/77 496/808/77 +f 499/811/78 500/812/78 498/810/78 +f 501/813/79 502/814/79 500/812/79 +f 503/815/80 504/816/80 502/814/80 +f 505/817/81 506/818/81 504/816/81 +f 507/819/82 508/820/82 506/818/82 +f 485/821/8 477/822/8 469/823/8 +f 509/824/83 510/825/83 508/820/83 +f 511/826/84 466/827/84 510/825/84 +f 494/828/2 502/829/2 510/830/2 +f 512/831/2 192/832/2 241/503/2 +f 241/503/2 195/833/2 239/501/2 +f 239/501/2 197/834/2 513/835/2 +f 513/835/2 199/836/2 514/837/2 +f 514/837/2 201/838/2 515/839/2 +f 515/839/2 203/840/2 516/841/2 +f 517/842/2 203/840/2 205/843/2 +f 518/844/2 205/843/2 207/845/2 +f 519/846/2 207/845/2 209/847/2 +f 520/848/2 209/847/2 211/849/2 +f 521/850/2 211/849/2 213/851/2 +f 522/852/2 213/851/2 215/853/2 +f 522/852/2 217/854/2 523/855/2 +f 523/855/2 219/856/2 524/857/2 +f 524/857/2 221/858/2 525/859/2 +f 525/859/2 223/860/2 526/861/2 +f 526/861/2 225/862/2 527/863/2 +f 527/863/2 227/864/2 528/865/2 +f 529/866/2 227/864/2 229/867/2 +f 530/868/2 229/867/2 231/869/2 +f 531/870/2 231/869/2 233/871/2 +f 532/872/2 233/871/2 235/873/2 +f 533/874/2 235/873/2 237/875/2 +f 512/831/2 237/875/2 193/876/2 +f 534/877/2 535/878/2 536/879/2 +f 527/863/64 537/880/64 526/861/64 +f 520/848/82 538/881/82 519/846/82 +f 513/835/74 539/882/74 239/501/74 +f 528/865/65 540/883/65 527/863/65 +f 521/850/83 541/884/83 520/848/83 +f 514/837/75 542/885/75 513/835/75 +f 529/866/66 543/886/66 528/865/66 +f 522/852/84 544/887/84 521/850/84 +f 515/839/77 545/888/77 514/837/77 +f 530/868/67 546/889/67 529/866/67 +f 523/855/60 547/890/60 522/852/60 +f 516/841/78 548/891/78 515/839/78 +f 531/870/68 549/892/68 530/868/68 +f 524/857/61 550/893/61 523/855/61 +f 517/842/79 551/894/79 516/841/79 +f 532/872/69 534/877/69 531/870/69 +f 525/859/62 552/895/62 524/857/62 +f 518/844/80 553/896/80 517/842/80 +f 533/874/70 535/878/70 532/872/70 +f 241/503/72 554/897/72 512/831/72 +f 526/861/93 536/879/93 525/859/93 +f 519/846/81 555/898/81 518/844/81 +f 512/831/71 556/899/71 533/874/71 +f 271/554/97 263/539/98 557/900/99 +f 191/449/60 194/452/60 192/450/60 +f 194/452/61 196/454/61 195/453/61 +f 196/454/62 198/456/62 197/455/62 +f 198/456/63 200/458/63 199/457/63 +f 200/458/64 202/460/64 201/459/64 +f 202/460/65 204/462/65 203/461/65 +f 204/462/66 206/464/66 205/463/66 +f 206/464/67 208/466/67 207/465/67 +f 208/466/68 210/468/68 209/467/68 +f 210/468/69 212/470/69 211/469/69 +f 212/470/70 214/472/70 213/471/70 +f 214/472/71 216/474/71 215/473/71 +f 216/474/72 218/476/72 217/475/72 +f 218/476/73 220/478/73 219/477/73 +f 220/478/74 222/480/74 221/479/74 +f 222/480/75 224/482/75 223/481/76 +f 224/482/77 226/484/77 225/483/77 +f 226/484/78 228/486/78 227/485/78 +f 228/486/79 230/488/79 229/487/79 +f 230/488/80 232/490/80 231/489/80 +f 232/490/81 234/492/81 233/491/81 +f 234/492/82 236/497/82 235/493/82 +f 196/496/8 194/901/8 191/902/8 +f 191/902/8 238/903/8 196/496/8 +f 238/903/8 236/904/8 196/496/8 +f 236/904/8 234/905/8 232/906/8 +f 232/906/8 230/907/8 228/908/8 +f 228/908/8 226/909/8 224/910/8 +f 224/910/8 222/911/8 228/908/8 +f 222/911/8 220/912/8 228/908/8 +f 220/912/8 218/913/8 216/914/8 +f 216/914/8 214/915/8 212/494/8 +f 212/494/8 210/916/8 208/917/8 +f 208/917/8 206/918/8 204/495/8 +f 204/495/8 202/919/8 200/920/8 +f 200/920/8 198/921/8 204/495/8 +f 198/921/8 196/496/8 204/495/8 +f 236/904/8 232/906/8 228/908/8 +f 220/912/8 216/914/8 228/908/8 +f 216/914/8 212/494/8 228/908/8 +f 212/494/8 208/917/8 204/495/8 +f 196/496/8 236/904/8 212/494/8 +f 236/904/8 228/908/8 212/494/8 +f 236/497/83 238/499/83 237/498/83 +f 238/499/84 191/922/84 193/500/84 +f 239/501/73 539/882/73 240/502/73 +f 242/504/61 245/507/61 243/505/61 +f 245/507/64 247/509/64 246/508/64 +f 247/509/67 249/511/67 248/510/67 +f 249/511/70 251/513/70 250/512/70 +f 251/513/73 253/515/73 252/514/73 +f 253/515/77 255/520/77 254/516/77 +f 247/517/8 245/923/8 242/518/8 +f 242/518/8 257/924/8 255/519/8 +f 255/519/8 253/925/8 247/517/8 +f 253/925/8 251/926/8 247/517/8 +f 251/926/8 249/927/8 247/517/8 +f 255/520/80 257/522/80 256/521/80 +f 257/522/83 242/928/83 244/523/83 +f 256/526/2 244/929/2 248/524/2 +f 244/929/2 243/930/2 248/524/2 +f 243/930/2 246/931/2 248/524/2 +f 248/524/2 250/932/2 252/525/2 +f 252/525/2 254/933/2 256/526/2 +f 250/527/85 267/934/85 258/528/85 +f 248/529/86 258/528/86 259/530/86 +f 246/531/87 259/530/87 260/532/87 +f 260/532/88 261/535/88 244/534/88 +f 261/535/89 262/537/89 256/536/89 +f 262/537/90 263/539/90 254/538/90 +f 263/539/91 264/541/91 252/540/91 +f 264/541/92 267/934/92 250/527/92 +f 265/542/80 270/553/80 259/543/80 +f 266/545/83 265/542/83 258/544/83 +f 268/547/70 557/900/70 262/548/70 +f 269/550/73 268/935/73 261/551/73 +f 270/553/77 269/550/77 260/552/77 +f 271/554/61 266/545/61 267/546/61 +f 272/556/60 275/559/60 273/557/60 +f 275/559/61 277/561/61 276/560/61 +f 277/561/62 279/563/62 278/562/62 +f 279/563/93 281/565/93 280/564/93 +f 281/565/64 283/567/64 282/566/64 +f 283/567/65 285/569/65 284/568/65 +f 285/569/66 287/571/66 286/570/66 +f 287/571/67 289/573/67 288/572/67 +f 289/573/68 291/575/68 290/574/68 +f 291/575/69 293/577/69 292/576/69 +f 293/577/70 295/579/70 294/578/70 +f 295/579/71 297/581/71 296/580/71 +f 297/581/72 299/583/72 298/582/72 +f 299/583/73 301/585/73 300/584/73 +f 301/585/74 303/587/74 302/586/74 +f 303/587/75 305/589/75 304/588/75 +f 305/589/77 307/591/77 306/590/77 +f 307/591/78 309/593/78 308/592/78 +f 309/593/79 311/595/79 310/594/79 +f 311/595/80 313/597/80 312/596/80 +f 313/597/81 315/599/81 314/598/81 +f 315/599/82 317/604/82 316/600/82 +f 277/603/8 275/936/8 317/937/8 +f 275/936/8 272/938/8 317/937/8 +f 272/938/8 319/939/8 317/937/8 +f 317/937/8 315/940/8 313/941/8 +f 313/941/8 311/942/8 309/601/8 +f 309/601/8 307/943/8 305/944/8 +f 305/944/8 303/945/8 301/946/8 +f 301/946/8 299/947/8 297/948/8 +f 297/948/8 295/949/8 293/602/8 +f 293/602/8 291/950/8 289/951/8 +f 289/951/8 287/952/8 293/602/8 +f 287/952/8 285/953/8 293/602/8 +f 285/953/8 283/954/8 281/955/8 +f 281/955/8 279/956/8 277/603/8 +f 317/937/8 313/941/8 277/603/8 +f 313/941/8 309/601/8 277/603/8 +f 309/601/8 305/944/8 293/602/8 +f 305/944/8 301/946/8 293/602/8 +f 301/946/8 297/948/8 293/602/8 +f 285/953/8 281/955/8 293/602/8 +f 281/955/8 277/603/8 293/602/8 +f 317/604/83 319/606/83 318/605/83 +f 319/606/84 272/957/84 274/607/84 +f 318/609/2 274/958/2 273/959/2 +f 273/959/2 276/960/2 318/609/2 +f 276/960/2 278/961/2 318/609/2 +f 278/961/2 280/962/2 286/610/2 +f 280/962/2 282/963/100 286/610/2 +f 282/963/100 284/964/2 286/610/2 +f 286/610/2 288/965/101 290/966/2 +f 290/966/2 292/967/2 294/968/2 +f 294/968/2 296/969/2 298/970/2 +f 298/970/2 300/971/2 302/972/2 +f 302/972/2 304/973/2 306/974/2 +f 306/974/2 308/975/2 310/608/2 +f 310/608/2 312/976/2 314/977/101 +f 314/977/101 316/978/2 310/608/2 +f 316/978/2 318/609/2 310/608/2 +f 286/610/2 290/966/2 294/968/2 +f 294/968/2 298/970/2 286/610/2 +f 298/970/2 302/972/2 286/610/2 +f 302/972/2 306/974/2 310/608/2 +f 318/609/2 278/961/2 286/610/2 +f 302/972/2 310/608/2 286/610/2 +f 320/611/60 323/614/60 321/612/60 +f 323/614/61 325/616/61 324/615/61 +f 325/616/62 327/618/62 326/617/62 +f 327/618/63 329/620/63 328/619/63 +f 329/620/64 331/622/64 330/621/64 +f 331/622/65 333/624/65 332/623/65 +f 333/624/66 335/626/66 334/625/66 +f 335/626/67 337/628/67 336/627/67 +f 337/628/68 339/630/68 338/629/68 +f 339/630/69 341/632/69 340/631/69 +f 341/632/70 343/634/70 342/633/70 +f 343/634/71 345/636/71 344/635/71 +f 345/636/72 347/638/72 346/637/72 +f 347/638/73 349/640/73 348/639/73 +f 349/640/74 351/642/74 350/641/74 +f 351/642/75 353/644/75 352/643/75 +f 353/644/77 355/646/77 354/645/77 +f 355/646/78 357/648/78 356/647/78 +f 357/648/79 359/650/79 358/649/79 +f 359/650/80 361/652/80 360/651/80 +f 361/652/81 363/654/81 362/653/81 +f 363/654/82 365/659/82 364/655/82 +f 325/658/8 323/979/8 320/980/8 +f 320/980/8 367/981/8 365/982/8 +f 365/982/8 363/983/102 361/984/8 +f 361/984/8 359/985/8 365/982/8 +f 359/985/8 357/986/8 365/982/8 +f 357/986/8 355/987/102 353/988/8 +f 353/988/8 351/989/8 357/986/8 +f 351/989/8 349/990/8 357/986/8 +f 349/990/8 347/991/8 345/992/8 +f 345/992/8 343/993/8 341/656/8 +f 341/656/8 339/994/8 337/995/8 +f 337/995/8 335/996/8 341/656/8 +f 335/996/8 333/657/8 341/656/8 +f 333/657/8 331/997/8 329/998/8 +f 329/998/8 327/999/8 333/657/8 +f 327/999/8 325/658/8 333/657/8 +f 325/658/8 320/980/8 365/982/8 +f 349/990/8 345/992/8 357/986/8 +f 345/992/8 341/656/8 357/986/8 +f 325/658/8 365/982/8 341/656/8 +f 365/982/8 357/986/8 341/656/8 +f 365/659/83 367/661/83 366/660/83 +f 367/661/84 320/1000/84 322/662/84 +f 366/665/2 322/1001/2 321/1002/2 +f 321/1002/2 324/1003/2 366/665/2 +f 324/1003/2 326/1004/2 366/665/2 +f 326/1004/2 328/1005/100 330/1006/2 +f 330/1006/2 332/1007/101 326/1004/2 +f 332/1007/101 334/1008/2 326/1004/2 +f 334/1008/2 336/1009/101 338/1010/2 +f 338/1010/2 340/1011/2 342/1012/2 +f 342/1012/2 344/1013/2 350/663/2 +f 344/1013/2 346/1014/2 350/663/2 +f 346/1014/2 348/1015/101 350/663/2 +f 350/663/2 352/1016/101 354/1017/100 +f 354/1017/100 356/1018/2 350/663/2 +f 356/1018/2 358/664/2 350/663/2 +f 358/664/2 360/1019/101 362/1020/100 +f 362/1020/100 364/1021/2 358/664/2 +f 364/1021/2 366/665/2 358/664/2 +f 334/1008/2 338/1010/2 350/663/2 +f 338/1010/2 342/1012/2 350/663/2 +f 366/665/2 326/1004/2 350/663/2 +f 326/1004/2 334/1008/2 350/663/2 +f 368/666/60 371/669/60 369/667/60 +f 371/669/61 373/671/61 372/670/61 +f 373/671/62 375/673/62 374/672/62 +f 375/673/63 377/675/63 376/674/63 +f 377/675/64 379/677/64 378/676/64 +f 379/677/65 381/679/65 380/678/65 +f 381/679/66 383/681/66 382/680/66 +f 383/681/67 385/683/67 384/682/67 +f 385/683/68 387/685/68 386/684/68 +f 387/685/69 389/687/96 388/686/69 +f 389/687/70 391/689/70 390/688/70 +f 391/689/71 393/691/71 392/690/71 +f 393/691/72 395/693/72 394/692/72 +f 395/693/73 397/695/73 396/694/73 +f 397/695/74 399/697/74 398/696/74 +f 399/697/75 401/699/75 400/698/75 +f 401/699/77 403/701/77 402/700/77 +f 403/701/78 405/703/78 404/702/78 +f 405/703/79 407/705/79 406/704/79 +f 407/705/80 409/707/80 408/706/80 +f 409/707/81 411/709/81 410/708/81 +f 411/709/82 413/714/82 412/710/82 +f 373/713/8 371/1022/8 368/1023/8 +f 368/1023/8 415/1024/8 413/1025/8 +f 413/1025/8 411/1026/103 409/1027/8 +f 409/1027/8 407/1028/8 413/1025/8 +f 407/1028/8 405/1029/8 413/1025/8 +f 405/1029/8 403/1030/8 401/1031/8 +f 401/1031/8 399/1032/8 405/1029/8 +f 399/1032/8 397/1033/8 405/1029/8 +f 397/1033/8 395/1034/8 393/1035/8 +f 393/1035/8 391/1036/8 389/711/8 +f 389/711/8 387/1037/103 385/1038/8 +f 385/1038/8 383/1039/8 389/711/8 +f 383/1039/8 381/712/8 389/711/8 +f 381/712/8 379/1040/8 377/1041/102 +f 377/1041/102 375/1042/8 381/712/8 +f 375/1042/8 373/713/8 381/712/8 +f 373/713/8 368/1023/8 413/1025/8 +f 397/1033/8 393/1035/8 405/1029/8 +f 393/1035/8 389/711/8 405/1029/8 +f 373/713/8 413/1025/8 389/711/8 +f 413/1025/8 405/1029/8 389/711/8 +f 413/714/83 415/716/83 414/715/83 +f 415/716/84 368/1043/84 370/717/84 +f 414/720/2 370/1044/2 369/1045/2 +f 369/1045/2 372/1046/2 414/720/2 +f 372/1046/2 374/1047/2 414/720/2 +f 374/1047/2 376/1048/101 378/1049/2 +f 378/1049/2 380/1050/2 374/1047/2 +f 380/1050/2 382/1051/2 374/1047/2 +f 382/1051/2 384/1052/100 386/1053/2 +f 386/1053/2 388/1054/100 390/1055/2 +f 390/1055/2 392/1056/2 394/1057/2 +f 394/1057/2 396/1058/2 398/718/2 +f 398/718/2 400/1059/2 402/1060/2 +f 402/1060/2 404/1061/2 398/718/2 +f 404/1061/2 406/719/2 398/718/2 +f 406/719/2 408/1062/100 410/1063/101 +f 410/1063/101 412/1064/2 406/719/2 +f 412/1064/2 414/720/2 406/719/2 +f 382/1051/2 386/1053/2 390/1055/2 +f 390/1055/2 394/1057/2 382/1051/2 +f 394/1057/2 398/718/2 382/1051/2 +f 414/720/2 374/1047/2 398/718/2 +f 374/1047/2 382/1051/2 398/718/2 +f 416/721/60 419/724/60 417/722/60 +f 419/724/61 421/726/61 420/725/61 +f 421/726/62 423/728/62 422/727/62 +f 423/728/63 425/730/63 424/729/63 +f 425/730/64 427/732/64 426/731/64 +f 427/732/65 429/734/65 428/733/65 +f 429/734/66 431/736/66 430/735/66 +f 431/736/67 433/738/67 432/737/67 +f 433/738/68 435/740/68 434/739/68 +f 435/740/69 437/742/69 436/741/69 +f 437/742/70 439/744/70 438/743/70 +f 439/744/71 441/746/71 440/745/71 +f 441/746/72 443/748/72 442/747/72 +f 443/748/73 445/750/73 444/749/73 +f 445/750/74 447/752/74 446/751/74 +f 447/752/75 449/754/75 448/753/75 +f 449/754/77 451/756/77 450/755/77 +f 451/756/78 453/758/78 452/757/78 +f 453/758/79 455/760/79 454/759/79 +f 455/760/80 457/762/80 456/761/80 +f 457/762/81 459/764/81 458/763/81 +f 459/764/82 461/769/82 460/765/82 +f 421/768/8 419/1065/8 416/1066/8 +f 416/1066/8 463/1067/8 461/1068/8 +f 461/1068/8 459/1069/103 457/1070/8 +f 457/1070/8 455/1071/8 461/1068/8 +f 455/1071/8 453/1072/8 461/1068/8 +f 453/1072/8 451/1073/8 449/1074/8 +f 449/1074/8 447/1075/8 453/1072/8 +f 447/1075/8 445/1076/8 453/1072/8 +f 445/1076/8 443/1077/8 441/1078/8 +f 441/1078/8 439/1079/8 437/766/8 +f 437/766/8 435/1080/8 433/1081/8 +f 433/1081/8 431/1082/8 437/766/8 +f 431/1082/8 429/767/8 437/766/8 +f 429/767/8 427/1083/8 425/1084/8 +f 425/1084/8 423/1085/8 429/767/8 +f 423/1085/8 421/768/8 429/767/8 +f 421/768/8 416/1066/8 461/1068/8 +f 445/1076/8 441/1078/8 453/1072/8 +f 441/1078/8 437/766/8 453/1072/8 +f 421/768/8 461/1068/8 437/766/8 +f 461/1068/8 453/1072/8 437/766/8 +f 461/769/83 463/771/83 462/770/83 +f 463/771/84 416/1086/84 418/772/84 +f 462/775/2 418/1087/2 417/1088/2 +f 417/1088/2 420/1089/2 462/775/2 +f 420/1089/2 422/1090/2 462/775/2 +f 422/1090/2 424/1091/100 426/1092/101 +f 426/1092/101 428/1093/2 422/1090/2 +f 428/1093/2 430/1094/2 422/1090/2 +f 430/1094/2 432/1095/2 434/1096/2 +f 434/1096/2 436/1097/2 438/1098/2 +f 438/1098/2 440/1099/2 446/773/2 +f 440/1099/2 442/1100/2 446/773/2 +f 442/1100/2 444/1101/2 446/773/2 +f 446/773/2 448/1102/2 450/1103/2 +f 450/1103/2 452/1104/2 446/773/2 +f 452/1104/2 454/774/2 446/773/2 +f 454/774/2 456/1105/101 458/1106/2 +f 458/1106/2 460/1107/2 454/774/2 +f 460/1107/2 462/775/2 454/774/2 +f 430/1094/2 434/1096/2 446/773/2 +f 434/1096/2 438/1098/2 446/773/2 +f 462/775/2 422/1090/2 446/773/2 +f 422/1090/2 430/1094/2 446/773/2 +f 464/776/60 467/779/60 465/777/60 +f 467/779/61 469/781/61 468/780/61 +f 469/781/95 471/783/95 470/782/62 +f 471/783/63 473/785/63 472/784/63 +f 473/785/64 475/787/64 474/786/64 +f 475/787/65 477/789/65 476/788/65 +f 477/789/66 479/791/66 478/790/66 +f 479/791/67 481/793/67 480/792/67 +f 481/793/68 483/795/68 482/794/68 +f 483/795/96 485/797/96 484/796/69 +f 485/797/70 487/799/70 486/798/70 +f 487/799/71 489/801/71 488/800/71 +f 489/801/72 491/803/72 490/802/72 +f 491/803/73 493/805/73 492/804/73 +f 493/805/74 495/807/74 494/806/94 +f 495/807/75 497/809/75 496/808/76 +f 497/809/77 499/811/77 498/810/77 +f 499/811/78 501/813/78 500/812/78 +f 501/813/79 503/815/79 502/814/79 +f 503/815/80 505/817/80 504/816/80 +f 505/817/81 507/819/81 506/818/81 +f 507/819/82 509/824/82 508/820/82 +f 469/823/8 467/1108/8 464/1109/8 +f 464/1109/8 511/1110/8 469/823/8 +f 511/1110/8 509/1111/8 469/823/8 +f 509/1111/8 507/1112/8 505/1113/8 +f 505/1113/8 503/1114/8 509/1111/8 +f 503/1114/8 501/1115/8 509/1111/8 +f 501/1115/8 499/1116/8 497/1117/8 +f 497/1117/8 495/1118/8 501/1115/8 +f 495/1118/8 493/1119/8 501/1115/8 +f 493/1119/8 491/1120/8 489/1121/8 +f 489/1121/8 487/1122/8 485/821/8 +f 485/821/8 483/1123/8 481/1124/8 +f 481/1124/8 479/1125/8 485/821/8 +f 479/1125/8 477/822/8 485/821/8 +f 477/822/8 475/1126/8 473/1127/8 +f 473/1127/8 471/1128/8 477/822/8 +f 471/1128/8 469/823/8 477/822/8 +f 493/1119/8 489/1121/8 501/1115/8 +f 489/1121/8 485/821/8 501/1115/8 +f 469/823/8 509/1111/8 485/821/8 +f 509/1111/8 501/1115/8 485/821/8 +f 509/824/83 511/826/83 510/825/83 +f 511/826/84 464/1129/84 466/827/84 +f 510/830/2 466/1130/2 465/1131/2 +f 465/1131/2 468/1132/2 510/830/2 +f 468/1132/2 470/1133/2 510/830/2 +f 470/1133/2 472/1134/2 474/1135/2 +f 474/1135/2 476/1136/2 470/1133/2 +f 476/1136/2 478/1137/2 470/1133/2 +f 478/1137/2 480/1138/100 482/1139/2 +f 482/1139/2 484/1140/2 486/1141/2 +f 486/1141/2 488/1142/2 494/828/2 +f 488/1142/2 490/1143/2 494/828/2 +f 490/1143/2 492/1144/2 494/828/2 +f 494/828/2 496/1145/2 498/1146/2 +f 498/1146/2 500/1147/2 494/828/2 +f 500/1147/2 502/829/2 494/828/2 +f 502/829/2 504/1148/2 506/1149/2 +f 506/1149/2 508/1150/2 502/829/2 +f 508/1150/2 510/830/2 502/829/2 +f 478/1137/2 482/1139/2 494/828/2 +f 482/1139/2 486/1141/2 494/828/2 +f 510/830/2 470/1133/2 494/828/2 +f 470/1133/2 478/1137/2 494/828/2 +f 512/831/2 193/876/2 192/832/2 +f 241/503/2 192/832/2 195/833/2 +f 239/501/2 195/833/2 197/834/2 +f 513/835/2 197/834/2 199/836/2 +f 514/837/2 199/836/2 201/838/2 +f 515/839/2 201/838/2 203/840/2 +f 517/842/2 516/841/2 203/840/2 +f 518/844/2 517/842/2 205/843/2 +f 519/846/2 518/844/2 207/845/2 +f 520/848/2 519/846/2 209/847/2 +f 521/850/2 520/848/2 211/849/2 +f 522/852/2 521/850/2 213/851/2 +f 522/852/2 215/853/2 217/854/2 +f 523/855/2 217/854/2 219/856/2 +f 524/857/2 219/856/2 221/858/2 +f 525/859/2 221/858/2 223/860/2 +f 526/861/2 223/860/2 225/862/2 +f 527/863/2 225/862/2 227/864/2 +f 529/866/2 528/865/2 227/864/2 +f 530/868/2 529/866/2 229/867/2 +f 531/870/2 530/868/2 231/869/2 +f 532/872/2 531/870/2 233/871/2 +f 533/874/2 532/872/2 235/873/2 +f 512/831/2 533/874/2 237/875/2 +f 556/899/2 554/897/2 547/890/2 +f 554/897/2 240/502/2 544/887/2 +f 240/502/2 539/882/2 544/887/2 +f 539/882/2 542/885/2 541/884/2 +f 544/887/2 539/882/2 541/884/2 +f 542/885/2 545/888/2 555/898/2 +f 545/888/2 548/891/2 553/896/2 +f 548/891/2 551/894/2 553/896/2 +f 553/896/2 555/898/2 545/888/2 +f 555/898/2 538/881/2 542/885/2 +f 538/881/2 541/884/2 542/885/2 +f 544/887/2 547/890/2 554/897/2 +f 547/890/2 550/893/2 556/899/2 +f 550/893/2 552/895/2 556/899/2 +f 552/895/2 536/879/2 535/878/2 +f 556/899/2 552/895/2 535/878/2 +f 536/879/2 537/880/2 549/892/2 +f 537/880/2 540/883/2 546/889/2 +f 540/883/2 543/886/2 546/889/2 +f 546/889/2 549/892/2 537/880/2 +f 549/892/2 534/877/2 536/879/2 +f 527/863/64 540/883/64 537/880/64 +f 520/848/82 541/884/82 538/881/82 +f 513/835/74 542/885/74 539/882/74 +f 528/865/65 543/886/65 540/883/65 +f 521/850/83 544/887/83 541/884/83 +f 514/837/75 545/888/75 542/885/75 +f 529/866/66 546/889/66 543/886/66 +f 522/852/84 547/890/84 544/887/84 +f 515/839/77 548/891/77 545/888/77 +f 530/868/67 549/892/67 546/889/67 +f 523/855/60 550/893/60 547/890/60 +f 516/841/78 551/894/78 548/891/78 +f 531/870/68 534/877/68 549/892/68 +f 524/857/61 552/895/61 550/893/61 +f 517/842/79 553/896/79 551/894/79 +f 532/872/69 535/878/69 534/877/69 +f 525/859/62 536/879/62 552/895/62 +f 518/844/80 555/898/80 553/896/80 +f 533/874/70 556/899/70 535/878/70 +f 241/503/72 240/502/72 554/897/72 +f 526/861/93 537/880/93 536/879/93 +f 519/846/81 538/881/81 555/898/81 +f 512/831/71 554/897/71 556/899/71 +f 557/900/99 268/547/2 269/550/2 +f 269/550/2 270/553/2 557/900/99 +f 270/553/2 265/542/2 271/554/97 +f 557/900/99 270/553/2 271/554/97 +f 265/542/2 266/545/2 271/554/97 +f 271/554/97 264/541/64 263/539/98 +f 263/539/98 262/548/67 557/900/99 +f 558/1151/104 559/1152/104 560/1153/104 +f 561/1154/105 562/1155/105 563/1156/105 +f 564/1157/106 559/1158/106 565/1159/106 +f 566/1160/107 565/1159/107 567/1161/107 +f 568/1162/108 566/1163/108 567/1161/108 +f 569/1164/106 570/1165/106 571/1166/106 +f 572/1167/109 568/1162/109 573/1168/109 +f 574/1169/110 575/1170/110 576/1171/110 +f 573/1168/105 577/1172/105 572/1167/105 +f 578/1173/111 576/1174/111 577/1172/111 +f 579/1175/112 558/1176/112 575/1177/112 +f 580/1178/25 581/1179/25 582/1180/25 +f 583/1181/9 584/1182/9 585/1183/9 +f 586/1184/26 587/1185/26 580/1186/26 +f 588/1187/113 589/1188/113 590/1189/113 +f 591/1190/114 592/1191/114 589/1192/114 +f 589/1193/115 591/1194/116 593/1195/115 +f 594/1196/117 595/1197/117 592/1191/117 +f 596/1198/118 597/1199/118 598/1200/118 +f 599/1201/119 600/1202/119 601/1203/119 +f 595/1197/120 602/1204/120 603/1205/120 +f 604/1206/121 605/1207/122 593/1208/123 +f 605/1209/118 603/1210/118 602/1211/118 +f 606/1212/25 607/1213/25 608/1214/25 +f 609/1215/9 610/1216/9 611/1217/9 +f 612/1218/8 608/1219/8 610/1220/8 +f 611/1221/6 608/1222/6 607/1223/6 +f 613/1224/26 612/1225/26 609/1226/26 +f 614/1227/124 615/1228/124 616/1229/124 +f 617/1230/125 618/1231/125 619/1232/125 +f 618/1233/126 620/1234/126 619/1235/126 +f 621/1236/127 620/1237/127 622/1238/127 +f 616/1239/128 617/1240/128 614/1241/128 +f 623/1242/9 621/1243/9 624/1244/9 +f 625/1245/129 626/1246/129 615/1228/129 +f 621/1247/130 627/1248/130 628/1249/130 +f 629/1250/131 623/1251/131 626/1252/131 +f 625/1253/25 614/1254/25 617/1255/25 +f 630/1256/26 631/1257/26 632/1258/26 +f 630/1259/132 633/1260/132 634/1261/132 +f 635/1262/133 636/1263/133 631/1264/133 +f 637/1265/134 633/1266/134 638/1267/134 +f 636/1268/135 639/1269/135 640/1270/135 +f 641/1271/136 639/1272/136 642/1273/136 +f 638/1274/137 643/1275/137 637/1276/137 +f 642/1277/138 644/1278/138 641/1279/138 +f 645/1280/139 646/1281/139 647/1282/139 +f 648/1283/140 649/1284/140 646/1285/140 +f 650/1286/141 651/1287/141 652/1288/141 +f 649/1289/9 641/1290/9 644/1291/9 +f 653/1292/142 647/1293/142 654/1294/142 +f 651/1295/25 642/1296/25 643/1297/25 +f 652/1298/143 655/1299/143 650/1300/143 +f 654/1301/144 656/1302/144 653/1303/144 +f 657/1304/145 658/1305/145 656/1306/145 +f 659/1307/146 660/1308/146 658/1309/146 +f 661/1310/147 662/1311/147 663/1312/147 +f 664/1313/9 665/1314/9 666/1315/9 +f 667/1316/6 668/1317/6 669/1318/6 +f 670/1319/148 667/1320/148 669/1321/148 +f 671/1322/149 672/1323/149 673/1324/149 +f 666/1325/150 670/1326/150 674/1327/150 +f 663/1328/25 671/1329/25 675/1330/25 +f 676/1331/151 664/1332/151 677/1333/151 +f 678/1334/149 677/1335/149 679/1336/149 +f 680/1337/150 681/1338/150 682/1339/150 +f 683/1340/148 684/1341/148 685/1342/148 +f 685/1343/6 684/1344/6 686/1345/6 +f 687/1346/6 669/1318/6 668/1347/6 +f 674/1348/152 679/1349/152 666/1350/152 +f 662/1351/151 672/1352/151 688/1353/151 +f 680/1354/152 675/1355/152 671/1356/152 +f 689/1357/147 665/1358/147 664/1359/147 +f 689/1360/25 678/1361/25 674/1362/25 +f 690/1363/153 681/1364/9 691/1365/154 +f 587/1366/2 583/1367/2 581/1368/2 +f 613/1369/2 611/1370/2 607/1371/2 +f 692/1372/25 589/1373/25 592/1374/25 +f 692/1372/25 595/1375/25 693/1376/25 +f 693/1376/25 603/1377/25 694/1378/25 +f 599/1201/25 589/1379/25 695/1380/25 +f 599/1201/25 696/1381/25 604/1382/25 +f 601/1203/9 603/1210/25 696/1381/25 +f 697/1383/25 698/1384/25 699/1385/25 +f 694/1378/120 700/1386/120 693/1376/120 +f 692/1372/114 699/1385/114 695/1387/114 +f 601/1203/118 697/1388/118 694/1389/118 +f 695/1380/155 698/1390/155 599/1201/155 +f 693/1376/117 701/1391/117 692/1372/117 +f 702/1392/9 591/1393/9 593/1394/9 +f 703/1395/9 704/1396/9 594/1397/9 +f 703/1398/9 591/1190/9 705/1399/9 +f 598/1200/25 593/1394/9 605/1400/9 +f 598/1200/25 602/1211/9 596/1198/9 +f 706/1401/9 602/1402/9 704/1396/9 +f 707/1403/9 708/1404/9 709/1405/9 +f 705/1406/114 710/1407/114 703/1395/114 +f 702/1392/156 707/1408/156 705/1409/156 +f 706/1401/120 709/1405/120 596/1410/120 +f 598/1200/157 708/1411/157 702/1392/157 +f 703/1395/117 711/1412/117 706/1401/117 +f 595/1197/158 700/1413/158 701/1414/158 +f 589/1415/159 592/1416/159 701/1417/159 +f 603/1418/160 697/1419/160 700/1420/160 +f 600/1421/161 697/1422/161 603/1423/161 +f 604/1424/162 600/1425/162 696/1426/162 +f 589/1427/163 698/1428/164 600/1429/165 +f 602/1204/166 704/1430/166 711/1431/166 +f 602/1432/167 709/1433/167 597/1434/167 +f 593/1435/168 605/1436/168 597/1437/168 +f 597/1438/169 708/1439/170 579/1440/171 +f 710/1441/172 594/1442/173 579/1443/174 +f 710/1444/175 711/1445/175 704/1446/175 +f 712/1447/25 575/1177/25 558/1176/25 +f 712/1447/25 560/1448/25 713/1449/25 +f 714/1450/25 566/1451/25 715/1452/25 +f 716/1453/25 566/1451/25 717/1454/25 +f 714/1450/25 560/1448/25 564/1455/25 +f 718/1456/25 575/1177/25 719/1457/25 +f 563/1156/25 577/1458/25 561/1154/25 +f 718/1456/25 577/1458/25 576/1459/25 +f 716/1453/25 572/1460/25 563/1156/25 +f 720/1461/25 721/1462/25 562/1463/25 +f 716/1453/108 722/1464/108 715/1452/108 +f 712/1447/112 723/1465/112 719/1457/112 +f 718/1456/111 724/1466/111 561/1154/111 +f 714/1450/106 721/1467/106 713/1449/106 +f 713/1449/104 720/1468/104 712/1447/104 +f 563/1156/109 725/1469/109 716/1453/109 +f 719/1457/110 726/1470/110 718/1456/110 +f 715/1452/107 727/1471/107 714/1450/107 +f 728/1472/9 579/1175/9 729/1473/9 +f 728/1472/9 559/1474/9 730/1475/9 +f 571/1166/9 567/1476/9 565/1477/9 +f 731/1478/9 567/1476/9 732/1479/9 +f 571/1166/9 559/1474/9 569/1164/9 +f 733/1480/9 579/1175/9 574/1481/9 +f 734/1482/9 578/1483/9 573/1484/9 +f 733/1480/9 578/1483/9 735/1485/9 +f 731/1478/9 573/1484/9 568/1486/9 +f 736/1487/9 737/1488/9 738/1489/9 +f 728/1472/104 738/1490/104 569/1164/104 +f 731/1478/109 736/1491/109 734/1482/109 +f 733/1480/110 739/1492/110 729/1473/110 +f 571/1166/107 737/1493/107 732/1479/107 +f 734/1482/105 740/1494/105 735/1485/105 +f 732/1479/108 741/1495/108 731/1478/108 +f 729/1473/112 742/1496/112 728/1472/112 +f 735/1485/111 743/1497/111 733/1480/111 +f 567/1161/176 565/1159/176 570/1498/176 +f 567/1499/177 737/1500/177 741/1501/177 +f 741/1502/178 736/1503/178 573/1504/178 +f 736/1505/179 740/1506/179 578/1507/179 +f 578/1507/180 740/1506/180 743/1508/180 +f 743/1508/181 739/1509/181 579/1510/181 +f 742/1511/182 730/1512/182 579/1510/182 +f 742/1511/183 738/1513/183 559/1514/183 +f 559/1514/184 738/1513/184 570/1515/184 +f 566/1163/185 717/1516/185 725/1517/185 +f 566/1518/186 722/1519/186 727/1520/186 +f 727/1520/187 721/1521/187 560/1522/187 +f 720/1523/188 558/1524/188 560/1522/188 +f 575/1525/189 558/1524/189 720/1523/189 +f 575/1525/190 723/1526/190 726/1527/190 +f 726/1527/191 724/1528/191 577/1529/191 +f 577/1529/192 724/1528/192 562/1530/192 +f 572/1531/193 562/1530/193 725/1532/193 +f 583/1533/113 582/1534/113 581/1535/113 +f 744/1536/194 580/1537/26 745/1538/194 +f 745/1539/25 582/1180/25 590/1540/25 +f 604/1541/25 590/1540/25 589/1542/25 +f 593/1543/195 745/1544/195 604/1545/195 +f 746/1546/113 590/1189/113 582/1534/113 +f 747/1547/196 748/1548/197 749/1549/197 +f 749/1550/198 746/1551/9 747/1552/9 +f 750/1553/9 744/1554/199 751/1555/200 +f 752/1556/9 753/1557/9 754/1558/201 +f 754/1559/202 755/1560/202 756/1561/202 +f 750/1562/203 752/1563/203 585/1564/203 +f 751/1565/6 757/1566/6 750/1562/6 +f 585/1564/203 758/1567/203 747/1547/203 +f 759/1568/204 753/1569/205 751/1565/206 +f 758/1570/9 754/1571/201 748/1572/207 +f 755/1560/208 760/1573/209 756/1561/210 +f 749/1549/211 760/1573/211 761/1574/211 +f 754/1559/201 760/1573/212 748/1548/207 +f 751/1575/200 744/1576/199 755/1577/213 +f 558/1151/104 730/1578/104 559/1152/104 +f 561/1154/105 724/1466/105 562/1155/105 +f 564/1157/106 560/1579/106 559/1158/106 +f 566/1160/107 564/1157/107 565/1159/107 +f 568/1162/108 717/1516/108 566/1163/108 +f 569/1164/106 738/1490/106 570/1165/106 +f 572/1167/109 717/1516/109 568/1162/109 +f 574/1169/110 579/1580/110 575/1170/110 +f 573/1168/105 578/1173/105 577/1172/105 +f 578/1173/111 574/1581/111 576/1174/111 +f 579/1175/112 730/1475/112 558/1176/112 +f 580/1178/25 587/1582/25 581/1179/25 +f 586/1583/9 750/1584/9 584/1585/9 +f 750/1584/9 585/1586/9 584/1585/9 +f 585/1586/9 747/1587/9 583/1588/9 +f 747/1587/9 746/1589/9 583/1588/9 +f 586/1184/26 584/1590/26 587/1185/26 +f 588/1187/113 591/1591/113 589/1188/113 +f 591/1190/114 594/1196/114 592/1191/114 +f 589/1193/115 593/1195/115 604/1592/214 +f 594/1196/117 704/1430/117 595/1197/117 +f 596/1198/118 709/1593/118 597/1199/118 +f 599/1201/119 698/1390/119 600/1202/119 +f 595/1197/120 704/1430/120 602/1204/120 +f 604/1206/121 696/1594/215 605/1207/122 +f 605/1209/118 696/1381/118 603/1210/118 +f 606/1212/25 613/1595/25 607/1213/25 +f 609/1215/9 612/1596/9 610/1216/9 +f 612/1218/8 606/1597/8 608/1219/8 +f 611/1221/6 610/1598/6 608/1222/6 +f 613/1224/26 606/1599/26 612/1225/26 +f 614/1227/124 625/1245/124 615/1228/124 +f 617/1230/125 624/1600/125 618/1231/125 +f 618/1233/126 622/1601/126 620/1234/126 +f 621/1236/127 628/1602/127 620/1237/127 +f 616/1239/128 624/1603/128 617/1240/128 +f 622/1604/9 618/1605/9 624/1244/9 +f 624/1244/9 616/1606/9 615/1607/9 +f 615/1607/9 626/1608/9 623/1242/9 +f 621/1243/9 622/1604/9 624/1244/9 +f 615/1607/9 623/1242/9 624/1244/9 +f 625/1245/129 629/1609/129 626/1246/129 +f 621/1247/130 623/1610/130 627/1248/130 +f 629/1250/131 627/1611/131 623/1251/131 +f 619/1612/25 620/1613/25 617/1255/25 +f 620/1613/25 628/1614/25 617/1255/25 +f 628/1614/25 627/1615/25 617/1255/25 +f 627/1615/25 629/1616/25 625/1253/25 +f 617/1255/25 627/1615/25 625/1253/25 +f 630/1256/26 635/1617/26 631/1257/26 +f 630/1259/132 632/1618/132 633/1260/132 +f 635/1262/133 762/1619/133 636/1263/133 +f 637/1265/134 634/1620/134 633/1266/134 +f 636/1268/135 762/1621/135 639/1269/135 +f 641/1271/136 640/1622/136 639/1272/136 +f 638/1274/137 649/1623/137 643/1275/137 +f 642/1277/138 651/1624/138 644/1278/138 +f 645/1280/139 648/1625/139 646/1281/139 +f 648/1283/140 643/1626/140 649/1284/140 +f 650/1286/141 644/1627/141 651/1287/141 +f 647/1628/9 646/1629/9 650/1630/9 +f 646/1629/9 649/1289/9 644/1291/9 +f 649/1289/9 638/1631/9 641/1290/9 +f 638/1631/9 633/1632/9 641/1290/9 +f 633/1632/9 632/1633/9 631/1634/9 +f 633/1632/9 631/1634/9 636/1635/9 +f 659/1636/9 657/1637/9 655/1638/9 +f 657/1637/9 654/1639/9 655/1638/9 +f 633/1632/9 636/1635/9 640/1640/9 +f 633/1632/9 640/1640/9 641/1290/9 +f 655/1638/9 654/1639/9 647/1628/9 +f 650/1630/9 655/1638/9 647/1628/9 +f 644/1291/9 650/1630/9 646/1629/9 +f 653/1292/142 645/1641/142 647/1293/142 +f 653/1642/25 656/1643/25 660/1644/25 +f 656/1643/25 658/1645/25 660/1644/25 +f 643/1297/25 648/1646/25 651/1295/25 +f 648/1646/25 645/1647/25 652/1648/25 +f 634/1649/25 637/1650/25 642/1296/25 +f 637/1650/25 643/1297/25 642/1296/25 +f 635/1651/25 630/1652/25 634/1649/25 +f 762/1653/25 635/1651/25 634/1649/25 +f 645/1647/25 653/1642/25 660/1644/25 +f 645/1647/25 660/1644/25 652/1648/25 +f 639/1654/25 762/1653/25 634/1649/25 +f 642/1296/25 639/1654/25 634/1649/25 +f 648/1646/25 652/1648/25 651/1295/25 +f 652/1298/143 660/1655/143 655/1299/143 +f 654/1301/144 657/1656/144 656/1302/144 +f 657/1304/145 659/1657/145 658/1305/145 +f 659/1307/146 655/1658/146 660/1308/146 +f 661/1310/147 686/1659/147 662/1311/147 +f 665/1314/9 667/1660/9 666/1315/9 +f 667/1660/9 763/1661/9 666/1315/9 +f 666/1315/9 679/1662/9 664/1313/9 +f 679/1662/9 677/1663/9 664/1313/9 +f 667/1316/6 665/1664/6 668/1317/6 +f 670/1319/148 763/1665/148 667/1320/148 +f 671/1322/149 688/1666/149 672/1323/149 +f 666/1325/150 763/1667/150 670/1326/150 +f 685/1668/25 661/1669/25 675/1330/25 +f 661/1669/25 663/1328/25 675/1330/25 +f 663/1328/25 688/1670/25 671/1329/25 +f 675/1330/25 683/1671/25 685/1668/25 +f 676/1331/151 689/1672/151 664/1332/151 +f 678/1334/149 676/1673/149 677/1335/149 +f 682/1339/150 683/1674/150 675/1675/150 +f 680/1337/150 691/1676/150 681/1338/150 +f 682/1339/150 675/1675/150 680/1337/150 +f 683/1340/148 682/1677/148 684/1341/148 +f 686/1345/6 661/1678/6 685/1343/6 +f 684/1344/6 690/1679/6 686/1345/6 +f 674/1348/152 678/1680/152 679/1349/152 +f 688/1353/151 663/1681/151 662/1351/151 +f 662/1351/151 764/1682/151 672/1352/151 +f 671/1356/152 673/1683/152 680/1354/152 +f 673/1683/152 765/1684/152 680/1354/152 +f 765/1684/152 691/1685/152 680/1354/152 +f 689/1357/147 668/1686/147 665/1358/147 +f 669/1687/25 668/1688/25 674/1362/25 +f 668/1688/25 689/1360/25 674/1362/25 +f 689/1360/25 676/1689/25 678/1361/25 +f 674/1362/25 670/1690/25 669/1687/25 +f 691/1365/154 765/1691/216 662/1692/217 +f 765/1691/216 764/1693/218 662/1692/217 +f 662/1692/217 686/1694/219 691/1365/154 +f 686/1694/219 690/1363/153 691/1365/154 +f 587/1366/2 584/1695/2 583/1367/2 +f 613/1369/2 609/1696/2 611/1370/2 +f 692/1372/25 695/1387/25 589/1373/25 +f 692/1697/25 592/1191/25 595/1197/25 +f 693/1376/25 595/1375/25 603/1377/25 +f 599/1201/25 604/1382/25 589/1379/25 +f 599/1201/25 601/1203/9 696/1381/25 +f 601/1203/9 694/1389/25 603/1210/25 +f 699/1698/25 701/1414/25 700/1413/25 +f 697/1383/25 600/1699/25 698/1384/25 +f 699/1698/25 700/1413/25 697/1700/25 +f 694/1378/120 697/1383/120 700/1386/120 +f 692/1372/114 701/1391/114 699/1385/114 +f 601/1203/118 600/1202/118 697/1388/118 +f 695/1380/155 699/1701/155 698/1390/155 +f 693/1702/117 700/1413/117 701/1414/117 +f 702/1392/9 705/1409/9 591/1393/9 +f 703/1395/9 706/1401/9 704/1396/9 +f 703/1398/9 594/1196/9 591/1190/9 +f 598/1200/25 702/1392/9 593/1394/9 +f 598/1200/25 605/1400/9 602/1211/9 +f 706/1401/9 596/1410/9 602/1402/9 +f 708/1404/9 597/1703/9 709/1405/9 +f 709/1704/9 711/1431/9 707/1705/9 +f 711/1431/9 710/1706/9 707/1705/9 +f 705/1399/114 707/1705/114 710/1706/114 +f 702/1392/156 708/1411/156 707/1408/156 +f 706/1401/120 711/1412/120 709/1405/120 +f 598/1200/157 597/1199/157 708/1411/157 +f 703/1395/117 710/1407/117 711/1412/117 +f 595/1197/158 701/1414/158 592/1191/158 +f 589/1415/159 701/1417/159 699/1707/159 +f 603/1418/160 700/1420/160 595/1708/160 +f 600/1421/161 603/1423/161 696/1709/161 +f 698/1428/164 589/1427/163 699/1710/220 +f 589/1427/163 600/1429/165 604/1711/221 +f 602/1204/222 711/1431/222 709/1704/222 +f 602/1432/167 597/1434/167 605/1712/167 +f 593/1713/223 597/1438/224 579/1440/225 +f 579/1440/171 708/1439/170 707/1714/226 +f 710/1441/172 579/1443/174 707/1715/227 +f 710/1441/175 704/1716/175 594/1442/175 +f 712/1447/25 719/1457/25 575/1177/25 +f 712/1447/25 558/1176/25 560/1448/25 +f 714/1450/25 564/1455/25 566/1451/25 +f 716/1453/25 715/1452/25 566/1451/25 +f 714/1450/25 713/1449/25 560/1448/25 +f 718/1456/25 576/1459/25 575/1177/25 +f 563/1156/25 572/1460/25 577/1458/25 +f 718/1456/25 561/1154/25 577/1458/25 +f 716/1453/25 717/1454/25 572/1460/25 +f 722/1717/25 725/1517/25 562/1463/25 +f 724/1718/25 726/1719/25 723/1720/25 +f 727/1721/25 722/1717/25 721/1462/25 +f 722/1717/25 562/1463/25 721/1462/25 +f 562/1463/25 724/1718/25 720/1461/25 +f 724/1718/25 723/1720/25 720/1461/25 +f 716/1453/108 725/1469/108 722/1464/108 +f 712/1447/112 720/1468/112 723/1465/112 +f 718/1456/111 726/1470/111 724/1466/111 +f 714/1450/106 727/1471/106 721/1467/106 +f 713/1449/104 721/1467/104 720/1468/104 +f 563/1156/109 562/1155/109 725/1469/109 +f 719/1457/110 723/1465/110 726/1470/110 +f 715/1452/107 722/1464/107 727/1471/107 +f 728/1472/9 730/1475/9 579/1175/9 +f 728/1472/9 569/1164/9 559/1474/9 +f 571/1166/9 732/1479/9 567/1476/9 +f 731/1478/9 568/1486/9 567/1476/9 +f 571/1166/9 565/1477/9 559/1474/9 +f 733/1480/9 729/1473/9 579/1175/9 +f 734/1482/9 735/1485/9 578/1483/9 +f 733/1480/9 574/1481/9 578/1483/9 +f 731/1478/9 734/1482/9 573/1484/9 +f 737/1488/9 570/1498/9 738/1489/9 +f 738/1489/9 742/1722/9 736/1487/9 +f 742/1722/9 739/1723/9 740/1724/9 +f 736/1487/9 742/1722/9 740/1724/9 +f 739/1723/9 743/1725/9 740/1724/9 +f 736/1487/9 741/1726/9 737/1488/9 +f 728/1472/104 742/1496/104 738/1490/104 +f 731/1478/109 741/1495/109 736/1491/109 +f 733/1480/110 743/1497/110 739/1492/110 +f 571/1166/107 570/1165/107 737/1493/107 +f 734/1482/105 736/1491/105 740/1494/105 +f 732/1479/108 737/1493/108 741/1495/108 +f 729/1473/112 739/1492/112 742/1496/112 +f 735/1485/111 740/1494/111 743/1497/111 +f 567/1161/176 570/1498/176 737/1488/176 +f 567/1499/177 741/1501/177 568/1727/177 +f 741/1502/178 573/1504/178 568/1728/178 +f 736/1505/179 578/1507/179 573/1729/179 +f 578/1507/180 743/1508/180 574/1730/180 +f 743/1508/181 579/1510/181 574/1730/181 +f 742/1511/182 579/1510/182 739/1509/182 +f 742/1511/183 559/1514/183 730/1512/183 +f 559/1514/184 570/1515/184 565/1731/184 +f 566/1163/185 725/1517/185 722/1717/185 +f 566/1518/186 727/1520/186 564/1732/186 +f 727/1520/187 560/1522/187 564/1732/187 +f 720/1523/188 560/1522/188 721/1521/188 +f 575/1525/189 720/1523/189 723/1526/189 +f 575/1525/190 726/1527/190 576/1733/190 +f 726/1527/191 577/1529/191 576/1733/191 +f 577/1529/192 562/1530/192 572/1531/192 +f 572/1531/193 725/1532/193 717/1734/193 +f 583/1533/113 746/1546/113 582/1534/113 +f 744/1536/194 586/1735/26 580/1537/26 +f 745/1539/25 580/1178/25 582/1180/25 +f 604/1541/25 745/1539/25 590/1540/25 +f 593/1543/194 744/1736/194 745/1544/194 +f 746/1546/113 588/1187/113 590/1189/113 +f 747/1547/196 758/1567/196 748/1548/197 +f 749/1737/198 588/1738/228 746/1739/9 +f 750/1740/9 586/1741/9 744/1742/199 +f 752/1556/9 757/1743/9 753/1557/9 +f 754/1559/202 759/1568/202 755/1560/202 +f 750/1562/203 757/1566/203 752/1563/203 +f 751/1565/6 753/1569/6 757/1566/6 +f 585/1564/203 752/1563/203 758/1567/203 +f 759/1568/204 754/1559/229 753/1569/205 +f 758/1570/9 752/1744/9 754/1571/201 +f 755/1560/208 761/1574/230 760/1573/209 +f 749/1549/211 748/1548/211 760/1573/211 +f 754/1559/201 756/1561/212 760/1573/212 +f 591/1745/231 588/1746/228 761/1747/232 +f 588/1746/228 749/1748/198 761/1747/232 +f 744/1576/199 593/1749/233 755/1577/213 +f 593/1749/233 591/1745/231 761/1747/232 +f 755/1577/213 593/1749/233 761/1747/232 +f 759/1750/234 751/1575/200 755/1577/213 +f 766/1751/235 767/1752/235 768/1753/235 +f 769/1754/236 770/1755/236 767/1752/236 +f 771/1756/237 772/1757/237 770/1755/237 +f 773/1758/238 774/1759/238 772/1757/238 +f 775/1760/239 776/1761/239 774/1759/239 +f 777/1762/240 778/1763/240 776/1761/240 +f 779/1764/241 780/1765/241 778/1763/241 +f 781/1766/242 782/1767/242 780/1765/242 +f 783/1768/243 784/1769/243 782/1767/243 +f 785/1770/244 786/1771/244 784/1769/244 +f 787/1772/245 788/1773/245 786/1771/245 +f 789/1774/246 790/1775/246 788/1773/246 +f 791/1776/247 792/1777/247 790/1775/247 +f 793/1778/248 794/1779/248 792/1777/248 +f 795/1780/249 796/1781/249 794/1779/249 +f 797/1782/250 798/1783/250 796/1781/250 +f 799/1784/251 800/1785/251 798/1783/251 +f 801/1786/252 802/1787/252 800/1785/252 +f 803/1788/253 804/1789/253 802/1787/253 +f 805/1790/254 806/1791/254 804/1789/254 +f 807/1792/255 808/1793/255 806/1791/255 +f 809/1794/256 810/1795/256 808/1793/256 +f 811/1796/257 812/1797/257 810/1795/257 +f 813/1798/258 814/1799/258 812/1797/258 +f 815/1800/251 816/1801/251 817/1802/251 +f 815/1800/2 769/1803/2 766/1804/2 +f 817/1802/2 771/1805/2 769/1803/2 +f 818/1806/2 771/1805/2 819/1807/2 +f 820/1808/2 773/1809/2 818/1806/2 +f 820/1808/2 777/1810/2 775/1811/2 +f 821/1812/2 779/1813/2 777/1810/2 +f 822/1814/2 779/1813/2 823/1815/2 +f 824/1816/2 781/1817/2 822/1814/2 +f 824/1816/2 785/1818/2 783/1819/2 +f 825/1820/2 787/1821/2 785/1818/2 +f 826/1822/2 787/1821/2 827/1823/2 +f 828/1824/2 789/1825/2 826/1822/2 +f 828/1824/2 793/1826/2 791/1827/2 +f 829/1828/2 795/1829/2 793/1826/2 +f 830/1830/2 795/1829/2 831/1831/2 +f 832/1832/2 797/1833/2 830/1830/2 +f 832/1832/2 801/1834/2 799/1835/2 +f 833/1836/2 803/1837/2 801/1834/2 +f 834/1838/2 803/1837/2 835/1839/2 +f 836/1840/2 805/1841/2 834/1838/2 +f 836/1840/2 809/1842/2 807/1843/2 +f 837/1844/2 811/1845/2 809/1842/2 +f 838/1846/2 813/1847/2 811/1845/2 +f 839/1848/2 840/1849/2 813/1847/2 +f 841/1850/246 842/1851/246 843/1852/246 +f 831/1831/259 844/1853/259 830/1830/259 +f 817/1802/252 845/1854/252 819/1807/252 +f 830/1830/260 846/1855/260 832/1832/260 +f 819/1807/253 847/1856/253 818/1806/253 +f 832/1832/235 848/1857/235 833/1836/235 +f 818/1806/254 849/1858/254 820/1808/254 +f 833/1836/236 850/1859/236 835/1839/236 +f 820/1808/255 851/1860/255 821/1812/255 +f 835/1839/237 852/1861/237 834/1838/237 +f 821/1812/256 853/1862/256 823/1815/256 +f 834/1838/238 854/1863/238 836/1840/238 +f 823/1815/257 855/1864/257 822/1814/257 +f 836/1840/239 856/1865/239 837/1844/239 +f 822/1814/258 857/1866/258 824/1816/258 +f 837/1844/240 858/1867/240 838/1846/240 +f 824/1816/261 859/1868/261 825/1820/261 +f 838/1846/241 860/1869/241 839/1848/241 +f 825/1820/262 861/1870/262 827/1823/262 +f 843/1852/247 862/1871/247 863/1872/247 +f 839/1848/242 864/1873/242 865/1874/242 +f 827/1823/263 866/1875/263 826/1822/263 +f 863/1872/248 867/1876/248 868/1877/248 +f 865/1874/243 869/1878/243 870/1879/243 +f 826/1822/264 871/1880/264 828/1824/264 +f 868/1877/249 872/1881/249 873/1882/249 +f 870/1879/244 874/1883/244 875/1884/244 +f 828/1824/265 876/1885/265 829/1828/265 +f 873/1882/250 877/1886/250 815/1800/250 +f 875/1884/245 878/1887/245 841/1850/245 +f 829/1828/266 879/1888/266 831/1831/266 +f 880/1889/8 768/1890/267 767/1891/8 +f 880/1889/8 770/1892/8 881/1893/8 +f 882/1894/8 770/1892/8 772/1895/8 +f 882/1894/8 774/1896/8 883/1897/8 +f 884/1898/8 774/1896/8 776/1899/8 +f 884/1898/8 778/1900/8 885/1901/8 +f 885/1901/8 780/1902/8 886/1903/8 +f 886/1903/8 782/1904/8 887/1905/8 +f 888/1906/8 782/1904/8 784/1907/8 +f 888/1906/8 786/1908/8 889/1909/8 +f 890/1910/8 786/1908/8 788/1911/8 +f 890/1910/8 790/1912/8 891/1913/8 +f 892/1914/8 790/1912/8 792/1915/8 +f 892/1914/8 794/1916/8 893/1917/8 +f 894/1918/8 794/1916/8 796/1919/8 +f 894/1918/8 798/1920/8 895/1921/8 +f 896/1922/8 798/1920/8 800/1923/8 +f 896/1922/8 802/1924/8 897/1925/8 +f 898/1926/8 802/1924/8 804/1927/8 +f 898/1926/8 806/1928/8 899/1929/8 +f 900/1930/8 806/1928/8 808/1931/8 +f 900/1930/8 810/1932/8 901/1933/8 +f 902/1934/8 810/1932/8 812/1935/8 +f 902/1934/8 814/1936/268 903/1937/8 +f 904/1938/25 905/1939/25 906/1940/25 +f 907/1941/2 908/1942/2 905/1939/2 +f 909/1943/9 910/1944/9 908/1942/9 +f 911/1945/8 906/1946/8 910/1944/8 +f 908/1942/6 906/1947/6 905/1948/6 +f 766/1751/269 912/1949/270 913/1950/269 +f 814/1799/271 914/1951/261 915/1952/261 +f 863/1872/2 916/1953/2 843/1852/2 +f 868/1877/2 917/1954/2 863/1872/2 +f 873/1882/2 918/1955/2 868/1877/2 +f 815/1800/2 913/1956/2 919/1957/2 +f 865/1874/2 920/1958/2 914/1959/2 +f 870/1879/2 921/1960/2 920/1958/2 +f 875/1884/2 922/1961/2 921/1960/2 +f 841/1850/2 916/1953/2 922/1961/2 +f 923/1962/8 924/1963/8 925/1964/8 +f 926/1965/8 925/1964/8 927/1966/8 +f 928/1967/8 927/1966/8 929/1968/8 +f 930/1969/8 928/1967/8 929/1968/8 +f 903/1937/8 814/1936/268 915/1970/272 +f 931/1971/8 932/1972/8 933/1973/8 +f 934/1974/8 935/1975/8 931/1971/8 +f 924/1963/8 936/1976/8 934/1974/8 +f 912/1977/26 911/1945/26 909/1943/26 +f 907/1978/26 915/1979/26 914/1980/26 +f 766/1751/235 769/1754/235 767/1752/235 +f 769/1754/236 771/1756/236 770/1755/236 +f 771/1756/237 773/1758/237 772/1757/237 +f 773/1758/238 775/1760/238 774/1759/238 +f 775/1760/239 777/1762/239 776/1761/239 +f 777/1762/240 779/1764/240 778/1763/240 +f 779/1764/241 781/1766/241 780/1765/241 +f 781/1766/242 783/1768/242 782/1767/242 +f 783/1768/243 785/1770/243 784/1769/243 +f 785/1770/244 787/1772/244 786/1771/244 +f 787/1772/245 789/1774/245 788/1773/245 +f 789/1774/246 791/1776/246 790/1775/246 +f 791/1776/247 793/1778/247 792/1777/247 +f 793/1778/248 795/1780/248 794/1779/248 +f 795/1780/249 797/1782/249 796/1781/249 +f 797/1782/250 799/1784/250 798/1783/250 +f 799/1784/251 801/1786/251 800/1785/251 +f 801/1786/252 803/1788/252 802/1787/252 +f 803/1788/253 805/1790/253 804/1789/253 +f 805/1790/254 807/1792/254 806/1791/254 +f 807/1792/255 809/1794/255 808/1793/255 +f 809/1794/256 811/1796/256 810/1795/256 +f 811/1796/257 813/1798/257 812/1797/257 +f 813/1798/258 840/1981/258 814/1799/258 +f 815/1800/251 877/1886/251 816/1801/251 +f 815/1800/2 817/1802/2 769/1803/2 +f 817/1802/2 819/1807/2 771/1805/2 +f 818/1806/2 773/1809/2 771/1805/2 +f 820/1808/2 775/1811/2 773/1809/2 +f 820/1808/2 821/1812/2 777/1810/2 +f 821/1812/2 823/1815/2 779/1813/2 +f 822/1814/2 781/1817/2 779/1813/2 +f 824/1816/2 783/1819/2 781/1817/2 +f 824/1816/2 825/1820/2 785/1818/2 +f 825/1820/2 827/1823/2 787/1821/2 +f 826/1822/2 789/1825/2 787/1821/2 +f 828/1824/2 791/1827/2 789/1825/2 +f 828/1824/2 829/1828/2 793/1826/2 +f 829/1828/2 831/1831/2 795/1829/2 +f 830/1830/2 797/1833/2 795/1829/2 +f 832/1832/2 799/1835/2 797/1833/2 +f 832/1832/2 833/1836/2 801/1834/2 +f 833/1836/2 835/1839/2 803/1837/2 +f 834/1838/2 805/1841/2 803/1837/2 +f 836/1840/2 807/1843/2 805/1841/2 +f 836/1840/2 837/1844/2 809/1842/2 +f 837/1844/2 838/1846/2 811/1845/2 +f 838/1846/2 839/1848/2 813/1847/2 +f 839/1848/2 865/1874/2 840/1849/2 +f 841/1850/246 878/1887/246 842/1851/246 +f 831/1831/259 879/1888/259 844/1853/259 +f 817/1802/252 816/1801/252 845/1854/252 +f 830/1830/260 844/1853/260 846/1855/260 +f 819/1807/253 845/1854/253 847/1856/253 +f 832/1832/235 846/1855/235 848/1857/235 +f 818/1806/254 847/1856/254 849/1858/254 +f 833/1836/236 848/1857/236 850/1859/236 +f 820/1808/255 849/1858/255 851/1860/255 +f 835/1839/237 850/1859/237 852/1861/237 +f 821/1812/256 851/1860/256 853/1862/256 +f 834/1838/238 852/1861/238 854/1863/238 +f 823/1815/257 853/1862/257 855/1864/257 +f 836/1840/239 854/1863/239 856/1865/239 +f 822/1814/258 855/1864/258 857/1866/258 +f 837/1844/240 856/1865/240 858/1867/240 +f 824/1816/261 857/1866/261 859/1868/261 +f 838/1846/241 858/1867/241 860/1869/241 +f 825/1820/262 859/1868/262 861/1870/262 +f 843/1852/247 842/1851/247 862/1871/247 +f 839/1848/242 860/1869/242 864/1873/242 +f 827/1823/263 861/1870/263 866/1875/263 +f 863/1872/248 862/1871/248 867/1876/248 +f 865/1874/243 864/1873/243 869/1878/243 +f 826/1822/264 866/1875/264 871/1880/264 +f 868/1877/249 867/1876/249 872/1881/249 +f 870/1879/244 869/1878/244 874/1883/244 +f 828/1824/265 871/1880/265 876/1885/265 +f 873/1882/250 872/1881/250 877/1886/250 +f 875/1884/245 874/1883/245 878/1887/245 +f 829/1828/266 876/1885/266 879/1888/266 +f 880/1889/8 930/1969/8 768/1890/267 +f 880/1889/8 767/1891/8 770/1892/8 +f 882/1894/8 881/1893/8 770/1892/8 +f 882/1894/8 772/1895/8 774/1896/8 +f 884/1898/8 883/1897/8 774/1896/8 +f 884/1898/8 776/1899/8 778/1900/8 +f 885/1901/8 778/1900/8 780/1902/8 +f 886/1903/8 780/1902/8 782/1904/8 +f 888/1906/8 887/1905/8 782/1904/8 +f 888/1906/8 784/1907/8 786/1908/8 +f 890/1910/8 889/1909/8 786/1908/8 +f 890/1910/8 788/1911/8 790/1912/8 +f 892/1914/8 891/1913/8 790/1912/8 +f 892/1914/8 792/1915/8 794/1916/8 +f 894/1918/8 893/1917/8 794/1916/8 +f 894/1918/8 796/1919/8 798/1920/8 +f 896/1922/8 895/1921/8 798/1920/8 +f 896/1922/8 800/1923/8 802/1924/8 +f 898/1926/8 897/1925/8 802/1924/8 +f 898/1926/8 804/1927/8 806/1928/8 +f 900/1930/8 899/1929/8 806/1928/8 +f 900/1930/8 808/1931/8 810/1932/8 +f 902/1934/8 901/1933/8 810/1932/8 +f 902/1934/8 812/1935/8 814/1936/268 +f 904/1938/25 907/1941/25 905/1939/25 +f 907/1941/2 909/1943/2 908/1942/2 +f 909/1943/9 911/1945/9 910/1944/9 +f 911/1945/8 904/1982/8 906/1946/8 +f 908/1942/6 910/1944/6 906/1947/6 +f 766/1751/269 768/1753/270 912/1949/270 +f 814/1799/271 840/1981/261 914/1951/261 +f 863/1872/2 917/1954/2 916/1953/2 +f 868/1877/2 918/1955/2 917/1954/2 +f 873/1882/2 919/1957/2 918/1955/2 +f 919/1957/2 873/1882/2 815/1800/2 +f 815/1800/2 766/1804/2 913/1956/2 +f 914/1959/2 840/1849/2 865/1874/2 +f 865/1874/2 870/1879/2 920/1958/2 +f 870/1879/2 875/1884/2 921/1960/2 +f 875/1884/2 841/1850/2 922/1961/2 +f 841/1850/2 843/1852/2 916/1953/2 +f 923/1962/8 937/1983/8 924/1963/8 +f 926/1965/8 923/1962/8 925/1964/8 +f 928/1967/8 926/1965/8 927/1966/8 +f 929/1968/8 912/1984/273 930/1969/8 +f 912/1984/273 768/1890/267 930/1969/8 +f 915/1970/272 933/1973/8 903/1937/8 +f 933/1973/8 932/1972/8 903/1937/8 +f 931/1971/8 935/1975/8 932/1972/8 +f 934/1974/8 936/1976/8 935/1975/8 +f 924/1963/8 937/1983/8 936/1976/8 +f 933/1985/26 915/1979/26 904/1986/26 +f 909/1943/26 907/1978/26 916/1987/26 +f 907/1978/26 914/1980/26 920/1988/26 +f 920/1988/26 921/1989/26 907/1978/26 +f 921/1989/26 922/1990/26 907/1978/26 +f 907/1978/26 922/1990/26 916/1987/26 +f 933/1985/26 904/1986/26 931/1991/26 +f 904/1986/26 911/1945/26 924/1992/26 +f 931/1991/26 904/1986/26 934/1993/26 +f 924/1992/26 934/1993/26 904/1986/26 +f 916/1987/26 917/1994/26 909/1943/26 +f 917/1994/26 918/1995/26 909/1943/26 +f 929/1996/26 927/1997/26 911/1945/26 +f 927/1997/26 925/1998/26 911/1945/26 +f 925/1998/26 924/1992/26 911/1945/26 +f 918/1995/26 919/1999/26 909/1943/26 +f 919/1999/26 913/2000/26 909/1943/26 +f 912/1977/26 929/1996/26 911/1945/26 +f 913/2000/26 912/1977/26 909/1943/26 +f 907/1978/26 904/1986/26 915/1979/26 +f 938/2001/274 939/2002/274 940/2003/274 +f 939/2002/275 941/2004/275 940/2003/275 +f 942/2005/276 943/2006/276 941/2004/276 +f 944/2007/277 938/2008/277 943/2006/277 +f 941/2004/6 938/2009/6 940/2010/6 +f 939/2011/26 944/2007/26 942/2005/26 +f 945/2012/278 946/2013/278 947/2014/278 +f 946/2013/279 948/2015/279 947/2014/279 +f 949/2016/280 950/2017/280 948/2015/280 +f 951/2018/281 945/2019/282 950/2020/282 +f 952/2021/6 953/2022/6 954/2023/6 +f 946/2024/26 951/2025/26 949/2016/26 +f 950/2017/282 953/2026/282 955/2027/282 +f 948/2015/280 955/2027/280 952/2021/280 +f 947/2014/279 952/2021/279 954/2028/279 +f 953/2029/278 947/2014/278 954/2028/278 +f 956/2030/283 957/2031/283 958/2032/283 +f 958/2032/284 959/2033/284 960/2034/284 +f 959/2033/285 961/2035/285 960/2034/286 +f 962/2036/287 956/2037/287 961/2035/287 +f 960/2034/288 956/2038/288 958/2039/288 +f 957/2040/289 962/2036/289 959/2033/289 +f 963/2041/290 964/2042/290 965/2043/290 +f 964/2042/291 966/2044/291 965/2043/291 +f 967/2045/292 968/2046/292 966/2044/292 +f 969/2047/293 963/2048/293 968/2046/293 +f 966/2044/294 963/2049/294 965/2050/294 +f 964/2051/295 969/2047/295 967/2045/295 +f 938/2001/274 970/2052/274 939/2002/274 +f 939/2002/275 942/2005/275 941/2004/275 +f 942/2005/276 944/2007/276 943/2006/276 +f 944/2007/277 970/2053/277 938/2008/277 +f 941/2004/6 943/2006/6 938/2009/6 +f 939/2011/26 970/2054/26 944/2007/26 +f 945/2012/278 971/2055/278 946/2013/278 +f 946/2013/279 949/2016/279 948/2015/279 +f 949/2016/280 951/2025/280 950/2017/280 +f 951/2018/281 971/2056/281 945/2019/282 +f 952/2021/6 955/2027/6 953/2022/6 +f 946/2024/26 971/2057/26 951/2025/26 +f 950/2017/282 945/2058/282 953/2026/282 +f 948/2015/280 950/2017/280 955/2027/280 +f 947/2014/279 948/2015/279 952/2021/279 +f 953/2029/278 945/2012/278 947/2014/278 +f 956/2030/283 972/2059/283 957/2031/283 +f 958/2032/284 957/2031/284 959/2033/284 +f 959/2033/285 962/2036/285 961/2035/285 +f 962/2036/287 972/2060/287 956/2037/287 +f 960/2034/288 961/2035/288 956/2038/288 +f 957/2040/289 972/2061/289 962/2036/289 +f 963/2041/290 973/2062/290 964/2042/290 +f 964/2042/291 967/2045/291 966/2044/291 +f 967/2045/292 969/2047/292 968/2046/292 +f 969/2047/293 973/2063/293 963/2048/293 +f 966/2044/294 968/2046/294 963/2049/294 +f 964/2051/295 973/2064/295 969/2047/295 +o Slide_Cylinder +v 1.272063 1.594606 -0.244676 +v 1.272063 1.368420 -0.338365 +v 1.272063 1.462109 -0.564550 +v 0.647653 0.965039 -0.742828 +v 0.711569 1.012017 5.211916 +v 0.647653 0.965039 5.211916 +v 0.711569 1.012017 -0.742828 +v 0.770475 1.088305 5.211916 +v 0.770475 1.088305 -0.742828 +v 0.822106 1.190971 5.211916 +v 0.822106 1.190971 -0.742828 +v 0.864478 1.316070 5.211916 +v 0.921900 1.774713 -0.742828 +v 0.915353 1.918690 3.212208 +v 0.921900 1.774713 3.711916 +v 0.915353 1.935767 -0.742828 +v 0.895964 2.073555 3.212208 +v 0.895964 2.090632 -0.742828 +v 0.864478 2.216279 3.212208 +v 0.864478 2.233356 -0.742828 +v 0.822106 2.341378 3.212208 +v 0.822106 2.358455 -0.742828 +v 0.770475 2.444044 3.212208 +v 0.770475 2.461121 -0.742828 +v 0.711569 2.520332 3.212208 +v 0.711569 2.537409 -0.742828 +v 0.647653 2.567310 3.212208 +v 0.904673 1.528358 -0.577728 +v 1.272063 1.494584 -0.574402 +v 0.900445 1.494584 -0.574402 +v 0.896379 1.462109 -0.564550 +v 1.272063 1.432180 -0.548553 +v 0.890093 1.432180 -0.548553 +v 0.895964 1.458794 -0.562778 +v 1.272063 1.405947 -0.527024 +v 0.884306 1.405947 -0.527024 +v 1.272063 1.384418 -0.500791 +v 0.879556 1.384418 -0.500791 +v 1.272063 1.368420 -0.470861 +v 0.876027 1.368420 -0.470861 +v 1.272063 1.358569 -0.438386 +v 0.873854 1.358569 -0.438386 +v 1.272063 1.355243 -0.404613 +v 0.873120 1.355243 -0.404613 +v 0.873854 1.358569 -0.370840 +v 1.272063 1.358569 -0.370840 +v 0.876027 1.368420 -0.338365 +v 0.879556 1.384418 -0.308436 +v 1.272063 1.384418 -0.308436 +v 0.884306 1.405947 -0.282203 +v 1.272063 1.405947 -0.282203 +v 0.890093 1.432180 -0.260674 +v 1.272063 1.432180 -0.260674 +v 0.896379 1.462109 -0.244676 +v 0.895964 1.458794 -0.246449 +v 1.272063 1.462109 -0.244676 +v 0.900445 1.494585 -0.234825 +v 1.272063 1.494585 -0.234825 +v 0.904673 1.528358 -0.231499 +v 1.272063 1.528358 -0.231499 +v 0.908902 1.562131 -0.234825 +v 1.272063 1.562131 -0.234825 +v 0.912967 1.594606 -0.244676 +v 1.272063 1.624535 -0.260674 +v 0.915795 1.624535 -0.260674 +v 0.915353 1.613659 -0.254860 +v 0.916861 1.650768 -0.282203 +v 1.272063 1.650768 -0.282203 +v 0.917736 1.672297 -0.308436 +v 1.272063 1.672297 -0.308436 +v 0.918387 1.688295 -0.338366 +v 1.272063 1.688295 -0.338366 +v 0.918787 1.698146 -0.370841 +v 1.272063 1.698146 -0.370841 +v 0.918922 1.701472 -0.404613 +v 1.272063 1.698146 -0.438387 +v 0.918787 1.698146 -0.438387 +v 1.272063 1.688294 -0.470862 +v 0.918387 1.688294 -0.470862 +v 1.272063 1.672297 -0.500791 +v 0.917736 1.672297 -0.500791 +v 1.272063 1.650768 -0.527024 +v 0.916861 1.650768 -0.527024 +v 1.272063 1.624535 -0.548553 +v 0.915795 1.624535 -0.548553 +v 1.272063 1.594605 -0.564551 +v 0.912967 1.594605 -0.564551 +v 0.915353 1.613659 -0.554366 +v 1.272063 1.562130 -0.574402 +v 0.908902 1.562130 -0.574402 +v 1.272063 1.528358 -0.577728 +v 0.864478 1.316070 -0.742828 +v 0.895964 1.458794 5.211916 +v 0.915353 1.613659 -0.742828 +v 1.272063 1.701472 -0.404613 +v 0.647653 2.584387 -0.742828 +v 0.895964 1.458794 -0.742828 +v 0.915353 1.613659 5.211916 +v 0.581182 0.949177 5.211916 +v 0.581182 0.949177 -0.742828 +v 0.581182 2.583172 3.212208 +v 0.581182 2.600249 -0.742828 +vt 0.601212 0.686463 +vt 0.607212 0.688948 +vt 0.604727 0.694949 +vt 0.562350 0.784943 +vt 0.743961 0.782105 +vt 0.743961 0.784943 +vt 0.562350 0.782105 +vt 0.743961 0.779268 +vt 0.562350 0.779268 +vt 0.743961 0.776430 +vt 0.562350 0.776430 +vt 0.743961 0.773592 +vt 0.562350 0.765080 +vt 0.743961 0.762242 +vt 0.743961 0.765080 +vt 0.562350 0.762242 +vt 0.743961 0.759404 +vt 0.562350 0.759404 +vt 0.743961 0.756567 +vt 0.562350 0.756567 +vt 0.743961 0.753729 +vt 0.562350 0.753729 +vt 0.743961 0.750891 +vt 0.562350 0.750891 +vt 0.743961 0.748054 +vt 0.562350 0.748054 +vt 0.743961 0.745216 +vt 0.617321 0.697653 +vt 0.616723 0.705057 +vt 0.616723 0.697568 +vt 0.616125 0.705057 +vt 0.616125 0.697486 +vt 0.615527 0.705057 +vt 0.615527 0.697359 +vt 0.616059 0.697478 +vt 0.614929 0.705057 +vt 0.614929 0.697243 +vt 0.614331 0.705057 +vt 0.614331 0.697147 +vt 0.613733 0.705057 +vt 0.613733 0.697076 +vt 0.613135 0.705057 +vt 0.613135 0.697032 +vt 0.612537 0.705057 +vt 0.612537 0.697017 +vt 0.611939 0.697032 +vt 0.611939 0.705057 +vt 0.611341 0.697076 +vt 0.611341 0.705057 +vt 0.610743 0.697147 +vt 0.610743 0.705057 +vt 0.610145 0.697243 +vt 0.610145 0.705057 +vt 0.609547 0.697359 +vt 0.609547 0.705057 +vt 0.608949 0.697486 +vt 0.609015 0.697478 +vt 0.608949 0.705057 +vt 0.608351 0.697568 +vt 0.608351 0.705057 +vt 0.607753 0.697653 +vt 0.607753 0.705057 +vt 0.607155 0.697738 +vt 0.607155 0.705057 +vt 0.606557 0.697820 +vt 0.605959 0.705057 +vt 0.605959 0.697877 +vt 0.606177 0.697868 +vt 0.605361 0.697899 +vt 0.605361 0.705057 +vt 0.604763 0.697916 +vt 0.604763 0.705057 +vt 0.604165 0.697930 +vt 0.604165 0.705057 +vt 0.603567 0.697938 +vt 0.603567 0.705057 +vt 0.602969 0.697940 +vt 0.602372 0.705057 +vt 0.602372 0.697938 +vt 0.601774 0.705057 +vt 0.601774 0.697930 +vt 0.601176 0.705057 +vt 0.601176 0.697916 +vt 0.600578 0.705057 +vt 0.600578 0.697899 +vt 0.599980 0.705057 +vt 0.599980 0.697877 +vt 0.599382 0.705057 +vt 0.599382 0.697820 +vt 0.599762 0.697868 +vt 0.598784 0.705057 +vt 0.598784 0.697738 +vt 0.598186 0.705057 +vt 0.598186 0.697653 +vt 0.562350 0.773592 +vt 0.572667 0.772814 +vt 0.573697 0.772747 +vt 0.743961 0.770755 +vt 0.577845 0.770099 +vt 0.577947 0.769480 +vt 0.562350 0.767917 +vt 0.567489 0.768861 +vt 0.567387 0.769480 +vt 0.572667 0.766370 +vt 0.571637 0.766429 +vt 0.603865 0.695210 +vt 0.602969 0.695298 +vt 0.602074 0.695210 +vt 0.601212 0.694949 +vt 0.600418 0.694524 +vt 0.598727 0.692463 +vt 0.599722 0.693953 +vt 0.599151 0.693257 +vt 0.598465 0.691602 +vt 0.598377 0.690706 +vt 0.598465 0.689810 +vt 0.598727 0.688948 +vt 0.599151 0.688154 +vt 0.599722 0.687459 +vt 0.600418 0.686887 +vt 0.602074 0.686202 +vt 0.602969 0.686113 +vt 0.603865 0.686202 +vt 0.604727 0.686463 +vt 0.605521 0.686887 +vt 0.606217 0.687459 +vt 0.606788 0.688154 +vt 0.607474 0.689810 +vt 0.607562 0.690706 +vt 0.607474 0.691602 +vt 0.607212 0.692463 +vt 0.606788 0.693257 +vt 0.606217 0.693953 +vt 0.605521 0.694524 +vt 0.562350 0.745216 +vt 0.617321 0.705057 +vt 0.606557 0.705057 +vt 0.602969 0.705057 +vt 0.577057 0.771284 +vt 0.577491 0.770755 +vt 0.562350 0.770755 +vt 0.568277 0.771284 +vt 0.567842 0.770755 +vt 0.576399 0.771805 +vt 0.575599 0.772234 +vt 0.568932 0.771805 +vt 0.569733 0.772234 +vt 0.574686 0.772552 +vt 0.570646 0.772552 +vt 0.571637 0.772747 +vt 0.577545 0.768266 +vt 0.577233 0.767917 +vt 0.743961 0.767917 +vt 0.577545 0.770694 +vt 0.577845 0.768861 +vt 0.567789 0.770694 +vt 0.568098 0.767917 +vt 0.567789 0.768266 +vt 0.567489 0.770099 +vt 0.568277 0.767726 +vt 0.573697 0.766429 +vt 0.577057 0.767726 +vt 0.576399 0.767263 +vt 0.568932 0.767263 +vt 0.575599 0.766884 +vt 0.574686 0.766602 +vt 0.569733 0.766884 +vt 0.570646 0.766602 +vn 1.0000 0.0000 0.0000 +vn 0.5922 -0.8058 -0.0000 +vn 0.7915 -0.6112 -0.0000 +vn 0.8934 -0.4493 -0.0000 +vn 0.9471 -0.3208 -0.0000 +vn 0.9992 0.0407 0.0002 +vn 0.9990 0.0454 0.0000 +vn 0.9923 0.1242 0.0005 +vn 0.9765 0.2154 0.0009 +vn 0.9471 0.3208 0.0014 +vn 0.8934 0.4493 0.0019 +vn 0.7915 0.6112 0.0026 +vn 0.5922 0.8058 0.0035 +vn 0.0000 -0.0980 -0.9952 +vn 0.0000 -0.2903 -0.9569 +vn -0.0000 -0.4714 -0.8819 +vn 0.0000 -0.6344 -0.7730 +vn 0.0000 -0.7730 -0.6344 +vn 0.0000 -0.8819 -0.4714 +vn 0.0000 -0.9569 -0.2903 +vn 0.0000 -0.9952 -0.0980 +vn 0.0000 -0.9952 0.0980 +vn 0.0000 -0.9569 0.2903 +vn 0.0000 -0.8819 0.4714 +vn 0.0000 -0.7730 0.6344 +vn 0.0000 -0.6344 0.7730 +vn -0.0000 -0.4714 0.8819 +vn -0.0000 -0.4716 0.8818 +vn -0.0000 -0.4715 0.8819 +vn 0.0000 -0.2903 0.9569 +vn 0.0000 -0.0980 0.9952 +vn 0.0000 0.0980 0.9952 +vn 0.0000 0.2903 0.9569 +vn 0.0000 0.4714 0.8819 +vn 0.0000 0.6344 0.7730 +vn 0.0000 0.7730 0.6344 +vn 0.0000 0.8819 0.4714 +vn 0.0000 0.9569 0.2903 +vn 0.0000 0.9952 0.0980 +vn 0.0000 0.9952 -0.0980 +vn 0.0000 0.9569 -0.2903 +vn 0.0000 0.8819 -0.4714 +vn 0.0000 0.7730 -0.6344 +vn 0.0000 0.6344 -0.7730 +vn -0.0000 0.4714 -0.8819 +vn 0.0000 0.2903 -0.9569 +vn 0.0000 0.0980 -0.9952 +vn 0.9765 -0.2154 -0.0000 +vn 0.9766 -0.2150 -0.0000 +vn 0.9923 -0.1242 0.0000 +vn 0.9923 -0.1243 -0.0000 +vn 0.9992 -0.0406 0.0000 +vn 0.9992 -0.0407 -0.0000 +vn 0.9992 0.0406 0.0002 +vn 0.9765 -0.2155 0.0000 +s 1 +f 974/2065/296 975/2066/296 976/2067/296 +f 977/2068/297 978/2069/297 979/2070/297 +f 980/2071/298 981/2072/298 978/2069/298 +f 982/2073/299 983/2074/299 981/2072/299 +f 984/2075/300 985/2076/300 983/2074/300 +f 986/2077/301 987/2078/302 988/2079/302 +f 989/2080/303 990/2081/303 987/2078/303 +f 991/2082/304 992/2083/304 990/2081/304 +f 993/2084/305 994/2085/305 992/2083/305 +f 995/2086/306 996/2087/306 994/2085/306 +f 997/2088/307 998/2089/307 996/2087/307 +f 999/2090/308 1000/2091/308 998/2089/308 +f 1001/2092/309 1002/2093/309 1003/2094/309 +f 1003/2094/310 976/2095/310 1004/2096/310 +f 1005/2097/311 1006/2098/311 1007/2099/311 +f 1006/2098/312 1008/2100/312 1009/2101/312 +f 1009/2101/313 1010/2102/313 1011/2103/313 +f 1011/2103/314 1012/2104/314 1013/2105/314 +f 1013/2105/315 1014/2106/315 1015/2107/315 +f 1015/2107/316 1016/2108/316 1017/2109/316 +f 1016/2108/317 1018/2110/317 1017/2109/317 +f 1019/2111/318 1020/2112/318 1018/2110/318 +f 975/2113/319 1021/2114/319 1020/2112/319 +f 1022/2115/320 1023/2116/320 1021/2114/320 +f 1024/2117/321 1025/2118/321 1023/2116/321 +f 1026/2119/322 1027/2120/323 1028/2121/324 +f 1029/2122/325 1030/2123/325 1027/2120/325 +f 1031/2124/326 1032/2125/326 1030/2123/326 +f 1033/2126/327 1034/2127/327 1032/2125/327 +f 1035/2128/328 1036/2129/328 1034/2127/328 +f 1037/2130/329 1038/2131/329 1039/2132/329 +f 1037/2130/330 1040/2133/330 1038/2131/330 +f 1041/2134/331 1042/2135/331 1040/2133/331 +f 1043/2136/332 1044/2137/332 1042/2135/332 +f 1045/2138/333 1046/2139/333 1044/2137/333 +f 1047/2140/334 1048/2141/334 1046/2139/334 +f 1048/2141/335 1049/2142/335 1050/2143/335 +f 1050/2143/336 1051/2144/336 1052/2145/336 +f 1052/2145/337 1053/2146/337 1054/2147/337 +f 1054/2147/338 1055/2148/338 1056/2149/338 +f 1056/2149/339 1057/2150/339 1058/2151/339 +f 1059/2152/340 1060/2153/340 1061/2154/340 +f 1060/2153/341 1062/2155/341 1063/2156/341 +f 1063/2156/342 1064/2157/342 1001/2158/342 +f 1065/2159/343 1017/2160/344 1018/2161/343 +f 1066/2162/345 1030/2163/345 1032/2164/345 +f 1067/2165/345 1063/2166/345 1001/2167/346 +f 986/2077/347 1048/2168/348 1050/2169/347 +f 976/2067/296 1002/2170/296 1064/2171/296 +f 1064/2171/296 1062/2172/296 1059/2173/296 +f 1059/2173/296 1057/2174/296 1051/2175/296 +f 1057/2174/296 1055/2176/296 1051/2175/296 +f 1055/2176/296 1053/2177/296 1051/2175/296 +f 1051/2175/296 1049/2178/296 1068/2179/296 +f 1068/2179/296 1047/2180/296 1045/2181/296 +f 1045/2181/296 1043/2182/296 1041/2183/296 +f 1041/2183/296 1037/2184/296 974/2065/296 +f 974/2065/296 1035/2185/296 1033/2186/296 +f 1033/2186/296 1031/2187/296 1029/2188/296 +f 1029/2188/296 1026/2189/296 975/2066/296 +f 1026/2189/296 1024/2190/296 975/2066/296 +f 1024/2190/296 1022/2191/296 975/2066/296 +f 975/2066/296 1019/2192/296 1016/2193/296 +f 1016/2193/296 1014/2194/296 1012/2195/296 +f 1012/2195/296 1010/2196/296 976/2067/296 +f 1010/2196/296 1008/2197/296 976/2067/296 +f 1008/2197/296 1005/2198/296 976/2067/296 +f 976/2067/296 1064/2171/296 1051/2175/296 +f 1064/2171/296 1059/2173/296 1051/2175/296 +f 1051/2175/296 1068/2179/296 1045/2181/296 +f 1045/2181/296 1041/2183/296 1051/2175/296 +f 1041/2183/296 974/2065/296 1051/2175/296 +f 974/2065/296 1033/2186/296 975/2066/296 +f 1033/2186/296 1029/2188/296 975/2066/296 +f 975/2066/296 1016/2193/296 976/2067/296 +f 1016/2193/296 1012/2195/296 976/2067/296 +f 976/2067/296 1051/2175/296 974/2065/296 +f 977/2068/297 980/2071/297 978/2069/297 +f 980/2071/298 982/2073/298 981/2072/298 +f 982/2073/299 984/2075/299 983/2074/299 +f 984/2075/300 1065/2159/300 985/2076/300 +f 986/2077/301 989/2080/349 987/2078/302 +f 989/2080/303 991/2082/303 990/2081/303 +f 991/2082/304 993/2084/304 992/2083/304 +f 993/2084/305 995/2086/305 994/2085/305 +f 995/2086/306 997/2088/306 996/2087/306 +f 997/2088/307 999/2090/307 998/2089/307 +f 999/2090/308 1069/2199/308 1000/2091/308 +f 1001/2092/309 1064/2200/309 1002/2093/309 +f 1003/2094/310 1002/2093/310 976/2095/310 +f 1007/2099/311 1004/2096/311 1005/2097/311 +f 1004/2096/311 976/2095/311 1005/2097/311 +f 1006/2098/312 1005/2097/312 1008/2100/312 +f 1009/2101/313 1008/2100/313 1010/2102/313 +f 1011/2103/314 1010/2102/314 1012/2104/314 +f 1013/2105/315 1012/2104/315 1014/2106/315 +f 1015/2107/316 1014/2106/316 1016/2108/316 +f 1016/2108/317 1019/2111/317 1018/2110/317 +f 1019/2111/318 975/2113/318 1020/2112/318 +f 975/2113/319 1022/2115/319 1021/2114/319 +f 1022/2115/320 1024/2117/320 1023/2116/320 +f 1024/2117/321 1026/2119/321 1025/2118/321 +f 1028/2121/324 1025/2118/322 1026/2119/322 +f 1026/2119/322 1029/2122/322 1027/2120/323 +f 1029/2122/325 1031/2124/325 1030/2123/325 +f 1031/2124/326 1033/2126/326 1032/2125/326 +f 1033/2126/327 1035/2128/327 1034/2127/327 +f 1035/2128/328 974/2201/328 1036/2129/328 +f 1039/2132/329 1036/2129/329 974/2201/329 +f 974/2201/329 1037/2130/329 1039/2132/329 +f 1037/2130/330 1041/2134/330 1040/2133/330 +f 1041/2134/331 1043/2136/331 1042/2135/331 +f 1043/2136/332 1045/2138/332 1044/2137/332 +f 1045/2138/333 1047/2140/333 1046/2139/333 +f 1047/2140/334 1068/2202/334 1048/2141/334 +f 1048/2141/335 1068/2202/335 1049/2142/335 +f 1050/2143/336 1049/2142/336 1051/2144/336 +f 1052/2145/337 1051/2144/337 1053/2146/337 +f 1054/2147/338 1053/2146/338 1055/2148/338 +f 1056/2149/339 1055/2148/339 1057/2150/339 +f 1061/2154/340 1058/2151/340 1057/2150/340 +f 1057/2150/340 1059/2152/340 1061/2154/340 +f 1060/2153/341 1059/2152/341 1062/2155/341 +f 1063/2156/342 1062/2155/342 1064/2157/342 +f 1025/2203/343 1028/2204/343 985/2076/343 +f 1028/2204/343 1066/2162/343 985/2076/343 +f 985/2076/343 1065/2159/343 1018/2161/343 +f 1065/2159/343 1070/2205/343 1006/2206/343 +f 1070/2205/343 1007/2207/343 1006/2206/343 +f 1023/2208/343 1025/2203/343 985/2076/343 +f 1021/2209/343 1023/2208/343 985/2076/343 +f 1065/2159/343 1006/2206/343 1009/2210/343 +f 1065/2159/343 1009/2210/343 1011/2211/343 +f 1020/2212/343 1021/2209/343 985/2076/343 +f 1018/2161/343 1020/2212/343 985/2076/343 +f 1065/2159/343 1011/2211/343 1013/2213/343 +f 1065/2159/343 1013/2213/343 1015/2214/350 +f 1065/2159/343 1015/2214/350 1017/2160/344 +f 1036/2215/345 1039/2216/346 1071/2217/345 +f 1071/2217/345 1066/2162/345 1032/2164/346 +f 1066/2162/345 1028/2204/345 1027/2218/345 +f 1066/2162/345 1027/2218/345 1030/2163/345 +f 1034/2219/345 1036/2215/345 1071/2217/345 +f 1032/2164/346 1034/2219/345 1071/2217/345 +f 1004/2220/345 1007/2207/345 1070/2205/345 +f 1070/2205/345 1067/2165/345 1001/2167/345 +f 1067/2165/345 1061/2221/345 1060/2222/345 +f 1067/2165/345 1060/2222/345 1063/2166/345 +f 1003/2223/345 1004/2220/345 1070/2205/345 +f 1001/2167/345 1003/2223/345 1070/2205/345 +f 1058/2224/347 1061/2221/347 1067/2165/347 +f 986/2077/347 988/2079/347 1046/2225/347 +f 988/2079/347 1071/2217/347 1039/2216/347 +f 986/2077/347 1046/2225/347 1048/2168/348 +f 1039/2216/347 1038/2226/347 988/2079/347 +f 1038/2226/347 1040/2227/347 988/2079/347 +f 1058/2224/347 1067/2165/347 986/2077/347 +f 1056/2228/347 1058/2224/347 986/2077/347 +f 1040/2227/347 1042/2229/347 988/2079/347 +f 1042/2229/347 1044/2230/347 988/2079/347 +f 1054/2231/347 1056/2228/347 986/2077/347 +f 1052/2232/347 1054/2231/347 986/2077/347 +f 1044/2230/347 1046/2225/347 988/2079/347 +f 1050/2169/347 1052/2232/347 986/2077/347 +l 1075 1069 +l 1000 1074 +l 1072 979 +l 977 1073 +o Shell_Cylinder.002 +v -0.317579 2.171942 1.847565 +v 0.000000 2.303487 -0.098938 +v -0.317579 2.171942 -0.098938 +v 0.449124 1.854363 1.847565 +v 0.317579 1.536785 -0.098938 +v 0.449124 1.854363 -0.098938 +v 0.317579 1.536785 1.847565 +v 0.000000 1.405240 -0.098938 +v 0.000000 1.405239 1.847565 +v -0.317579 1.536785 -0.098938 +v -0.317579 1.536785 1.847565 +v -0.449124 1.854363 -0.098938 +v -0.449124 1.854363 1.847565 +v 0.000000 2.303487 1.847565 +v 0.317579 2.171942 -0.098938 +v 0.317579 2.171942 1.847565 +v 0.353356 2.207720 1.877207 +v 0.499721 1.854363 1.877207 +v 0.353356 1.501007 1.877207 +v 0.000000 1.354642 1.877207 +v -0.353356 1.501007 1.877207 +v -0.499721 1.854363 1.877207 +v -0.353356 2.207720 1.877207 +v 0.000000 2.354084 1.877207 +vt 0.125000 0.577656 +vt 0.000000 0.516094 +vt 0.125000 0.516094 +vt 0.750000 0.577656 +vt 0.625000 0.516094 +vt 0.750000 0.516094 +vt 0.625000 0.577656 +vt 0.500000 0.516094 +vt 0.500000 0.577656 +vt 0.375000 0.516094 +vt 0.375000 0.577656 +vt 0.250000 0.516094 +vt 0.250000 0.577656 +vt 1.000000 0.577656 +vt 0.875000 0.516094 +vt 1.000000 0.516094 +vt 0.875000 0.577656 +vt 0.707574 0.516599 +vt 0.690000 0.537812 +vt 0.707574 0.559026 +vt 0.218750 0.446250 +vt 0.195693 0.450000 +vt 0.195312 0.446250 +vt 0.172255 0.450000 +vt 0.171875 0.446250 +vt 0.148438 0.446250 +vt 0.171494 0.450000 +vt 0.148818 0.450000 +vt 0.125000 0.446250 +vt 0.148057 0.450000 +vt 0.125380 0.450000 +vt 0.101943 0.450000 +vt 0.101562 0.446250 +vt 0.078505 0.450000 +vt 0.078125 0.446250 +vt 0.054688 0.446250 +vt 0.077745 0.450000 +vt 0.055068 0.450000 +vt 0.031250 0.446250 +vt 0.054307 0.450000 +vt 0.031630 0.450000 +vt 0.013897 0.440000 +vt 0.130000 0.381948 +vt 0.246103 0.440000 +vt 0.000000 0.577656 +vt 0.750000 0.567813 +vt 0.792426 0.516599 +vt 0.792426 0.559026 +vt 0.810000 0.537812 +vt 0.750000 0.507812 +vt 0.218369 0.450000 +vt 0.194932 0.450000 +vt 0.124620 0.450000 +vt 0.101182 0.450000 +vt 0.212097 0.481049 +vt 0.130000 0.498052 +vt 0.047903 0.481049 +vt 0.047903 0.398951 +vt 0.212097 0.398951 +vn -0.3827 0.9239 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.9239 -0.3827 -0.0000 +vn -0.9239 0.3827 0.0000 +vn 0.3827 0.9239 0.0000 +vn 0.9239 0.3827 0.0000 +vn -0.0000 0.0000 -1.0000 +vn 0.2049 0.4948 -0.8445 +vn 0.4948 0.2049 -0.8445 +vn 0.4948 -0.2049 -0.8445 +vn 0.2049 -0.4948 -0.8445 +vn -0.2049 -0.4948 -0.8445 +vn -0.4948 -0.2049 -0.8445 +vn -0.4948 0.2049 -0.8445 +vn -0.2049 0.4948 -0.8445 +vn 0.0000 -0.0000 1.0000 +s 1 +f 1076/2233/351 1077/2234/351 1078/2235/351 +f 1079/2236/352 1080/2237/352 1081/2238/352 +f 1082/2239/353 1083/2240/353 1080/2237/353 +f 1084/2241/354 1085/2242/354 1083/2240/354 +f 1086/2243/355 1087/2244/355 1085/2242/355 +f 1088/2245/356 1078/2235/356 1087/2244/356 +f 1089/2246/357 1090/2247/357 1077/2248/357 +f 1091/2249/358 1081/2238/358 1090/2247/358 +f 1085/2250/359 1087/2251/359 1078/2252/359 +f 1089/2253/360 1092/2254/360 1091/2255/360 +f 1091/2255/361 1093/2256/361 1079/2257/361 +f 1082/2258/362 1093/2259/362 1094/2260/362 +f 1084/2261/363 1094/2262/363 1095/2263/363 +f 1084/2261/364 1096/2264/364 1086/2265/364 +f 1086/2265/365 1097/2266/365 1088/2267/365 +f 1076/2268/366 1097/2269/366 1098/2270/366 +f 1089/2271/367 1098/2272/367 1099/2273/367 +f 1097/2274/368 1095/2275/368 1093/2276/368 +f 1076/2233/351 1089/2277/351 1077/2234/351 +f 1079/2236/352 1082/2239/352 1080/2237/352 +f 1082/2239/353 1084/2241/353 1083/2240/353 +f 1084/2241/354 1086/2243/354 1085/2242/354 +f 1086/2243/355 1088/2245/355 1087/2244/355 +f 1088/2245/356 1076/2233/356 1078/2235/356 +f 1089/2246/357 1091/2249/357 1090/2247/357 +f 1091/2249/358 1079/2236/358 1081/2238/358 +f 1078/2252/359 1077/2278/359 1080/2279/359 +f 1077/2278/359 1090/2280/359 1080/2279/359 +f 1090/2280/359 1081/2281/359 1080/2279/359 +f 1080/2279/359 1083/2282/359 1078/2252/359 +f 1083/2282/359 1085/2250/359 1078/2252/359 +f 1089/2253/360 1099/2283/360 1092/2254/360 +f 1091/2255/361 1092/2284/361 1093/2256/361 +f 1082/2258/362 1079/2257/362 1093/2259/362 +f 1084/2261/363 1082/2258/363 1094/2262/363 +f 1084/2261/364 1095/2285/364 1096/2264/364 +f 1086/2265/365 1096/2286/365 1097/2266/365 +f 1076/2268/366 1088/2267/366 1097/2269/366 +f 1089/2271/367 1076/2268/367 1098/2272/367 +f 1093/2276/368 1092/2287/368 1099/2288/368 +f 1099/2288/368 1098/2289/368 1097/2274/368 +f 1097/2274/368 1096/2290/368 1095/2275/368 +f 1095/2275/368 1094/2291/368 1093/2276/368 +f 1093/2276/368 1099/2288/368 1097/2274/368 diff --git a/src/main/resources/assets/hbm/models/weapons/boltgun.obj b/src/main/resources/assets/hbm/models/weapons/boltgun.obj new file mode 100644 index 000000000..0d9de366c --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/boltgun.obj @@ -0,0 +1,2415 @@ +# Blender v2.79 (sub 0) OBJ File: 'boltgun.blend' +# www.blender.org +o Barrel +v 0.000000 2.250000 1.000000 +v -0.176777 2.176777 1.000000 +v -0.250000 2.000000 1.000000 +v -0.176777 1.823223 1.000000 +v 0.000000 1.750000 1.000000 +v 0.176777 1.823223 1.000000 +v 0.250000 2.000000 1.000000 +v 0.176777 2.176777 1.000000 +v 0.000000 2.250000 3.500000 +v -0.176777 2.176777 3.500000 +v -0.250000 2.000000 3.500000 +v -0.176777 1.823223 3.500000 +v 0.000000 1.750000 3.500000 +v 0.176777 1.823223 3.500000 +v 0.250000 2.000000 3.500000 +v 0.176777 2.176777 3.500000 +v 0.000000 2.375000 3.500000 +v -0.265165 2.265165 3.500000 +v -0.375000 2.000000 3.500000 +v -0.265165 1.734835 3.500000 +v 0.000000 1.625000 3.500000 +v 0.265165 1.734835 3.500000 +v 0.375000 2.000000 3.500000 +v 0.265165 2.265165 3.500000 +v 0.000000 2.500000 4.500000 +v -0.353553 2.353553 4.500000 +v -0.500000 2.000000 4.500000 +v -0.353553 1.646447 4.500000 +v 0.000000 1.500000 4.500000 +v 0.353553 1.646447 4.500000 +v 0.500000 2.000000 4.500000 +v 0.353553 2.353553 4.500000 +v 0.000000 2.250000 4.500000 +v -0.176777 2.176777 4.500000 +v -0.250000 2.000000 4.500000 +v -0.176777 1.823223 4.500000 +v 0.000000 1.750000 4.500000 +v 0.176777 1.823223 4.500000 +v 0.250000 2.000000 4.500000 +v 0.176777 2.176777 4.500000 +v 0.000000 2.250000 3.750000 +v -0.176777 2.176777 3.750000 +v -0.250000 2.000000 3.750000 +v -0.176777 1.823223 3.750000 +v 0.000000 1.750000 3.750000 +v 0.176777 1.823223 3.750000 +v 0.250000 2.000000 3.750000 +v 0.176777 2.176777 3.750000 +vt 0.517647 0.250000 +vt 0.511765 0.229167 +vt 0.517647 0.229167 +vt 0.517647 0.479167 +vt 0.511765 0.500000 +vt 0.511765 0.479167 +vt 0.517647 0.416667 +vt 0.511765 0.395833 +vt 0.517647 0.395833 +vt 0.517647 0.270833 +vt 0.511765 0.291667 +vt 0.511765 0.270833 +vt 0.517647 0.208333 +vt 0.511765 0.187500 +vt 0.517647 0.187500 +vt 0.517647 0.437500 +vt 0.511765 0.458333 +vt 0.511765 0.437500 +vt 0.517647 0.375000 +vt 0.511765 0.354167 +vt 0.517647 0.354167 +vt 0.517647 0.333333 +vt 0.511765 0.312500 +vt 0.517647 0.312500 +vt 0.464706 0.291667 +vt 0.452941 0.270833 +vt 0.464706 0.250000 +vt 0.464706 0.208333 +vt 0.452941 0.187500 +vt 0.464706 0.166667 +vt 0.464706 0.458333 +vt 0.452941 0.437500 +vt 0.464706 0.416667 +vt 0.464706 0.375000 +vt 0.452941 0.354167 +vt 0.464706 0.333333 +vt 0.452941 0.333333 +vt 0.452941 0.312500 +vt 0.452941 0.250000 +vt 0.452941 0.229167 +vt 0.452941 0.500000 +vt 0.452941 0.479167 +vt 0.452941 0.416667 +vt 0.452941 0.395833 +vt 0.514165 0.571002 +vt 0.505882 0.583153 +vt 0.505882 0.500181 +vt 0.511765 0.250000 +vt 0.517647 0.500000 +vt 0.511765 0.416667 +vt 0.517647 0.291667 +vt 0.511765 0.208333 +vt 0.517647 0.458333 +vt 0.511765 0.375000 +vt 0.511765 0.333333 +vt 0.452941 0.291667 +vt 0.452941 0.208333 +vt 0.452941 0.458333 +vt 0.452941 0.375000 +vt 0.464706 0.500000 +vt 0.497599 0.571002 +vt 0.494169 0.541667 +vt 0.497599 0.512332 +vt 0.514165 0.512332 +vt 0.517596 0.541667 +vt 0.517647 0.145833 +vt 0.400000 0.125000 +vt 0.517647 0.125000 +vt 0.517647 0.104167 +vt 0.400000 0.083333 +vt 0.517647 0.083333 +vt 0.400000 0.062500 +vt 0.517647 0.062500 +vt 0.517647 0.041667 +vt 0.400000 0.020833 +vt 0.517647 0.020833 +vt 0.517647 0.166667 +vt 0.400000 0.145833 +vt 0.400000 0.104167 +vt 0.400000 0.041667 +vt 0.400000 -0.000000 +vt 0.517647 -0.000000 +vt 0.417647 0.395833 +vt 0.417647 0.270833 +vt 0.417647 0.187500 +vt 0.417647 0.437500 +vt 0.417647 0.354167 +vt 0.417647 0.312500 +vt 0.417647 0.229167 +vt 0.417647 0.479167 +vt 0.400000 0.166667 +vt 0.417647 0.416667 +vt 0.417647 0.291667 +vt 0.417647 0.208333 +vt 0.417647 0.458333 +vt 0.417647 0.375000 +vt 0.417647 0.333333 +vt 0.417647 0.250000 +vt 0.417647 0.500000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 0.0000 1.0000 +vn -0.7071 -0.7071 0.0000 +vn -1.0000 0.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 1.0000 0.0000 0.0000 +vn 0.7071 -0.7071 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.9923 -0.1240 +vn 0.7016 0.7016 -0.1240 +vn 0.9923 0.0000 -0.1240 +vn 0.7016 -0.7016 -0.1240 +vn -0.0000 -0.9923 -0.1240 +vn -0.7016 -0.7016 -0.1240 +vn -0.9923 0.0000 -0.1240 +vn -0.7016 0.7016 -0.1240 +s off +f 15/1/1 22/2/1 14/3/1 +f 12/4/1 21/5/1 20/6/1 +f 11/7/1 18/8/1 10/9/1 +f 15/10/1 24/11/1 23/12/1 +f 14/13/1 21/14/1 13/15/1 +f 11/16/1 20/17/1 19/18/1 +f 10/19/1 17/20/1 9/21/1 +f 9/22/1 24/23/1 16/24/1 +f 32/25/2 39/26/2 31/27/2 +f 30/28/2 37/29/2 29/30/2 +f 28/31/2 35/32/2 27/33/2 +f 26/34/2 33/35/2 25/36/2 +f 32/25/2 33/37/2 40/38/2 +f 30/28/2 39/39/2 38/40/2 +f 28/31/2 37/41/2 36/42/2 +f 26/34/2 35/43/2 34/44/2 +f 48/45/2 41/46/2 45/47/2 +f 15/1/1 23/48/1 22/2/1 +f 12/4/1 13/49/1 21/5/1 +f 11/7/1 19/50/1 18/8/1 +f 15/10/1 16/51/1 24/11/1 +f 14/13/1 22/52/1 21/14/1 +f 11/16/1 12/53/1 20/17/1 +f 10/19/1 18/54/1 17/20/1 +f 9/22/1 17/55/1 24/23/1 +f 32/25/2 40/56/2 39/26/2 +f 30/28/2 38/57/2 37/29/2 +f 28/31/2 36/58/2 35/32/2 +f 26/34/2 34/59/2 33/35/2 +f 32/25/2 25/36/2 33/37/2 +f 30/28/2 31/27/2 39/39/2 +f 28/31/2 29/60/2 37/41/2 +f 26/34/2 27/33/2 35/43/2 +f 41/46/2 42/61/2 45/47/2 +f 42/61/2 43/62/2 45/47/2 +f 43/62/2 44/63/2 45/47/2 +f 45/47/2 46/64/2 47/65/2 +f 47/65/2 48/45/2 45/47/2 +s 1 +f 4/66/3 11/67/4 3/68/4 +f 2/69/5 9/70/6 1/71/6 +f 1/71/6 16/72/7 8/73/7 +f 7/74/8 14/75/9 6/76/9 +f 5/77/10 12/78/3 4/66/3 +f 3/68/4 10/79/5 2/69/5 +f 8/73/7 15/80/8 7/74/8 +f 6/76/9 13/81/10 5/82/10 +f 17/55/11 32/25/12 24/23/12 +f 23/12/13 32/25/12 31/27/13 +f 23/48/13 30/28/14 22/2/14 +f 22/52/14 29/30/15 21/14/15 +f 21/5/15 28/31/16 20/6/16 +f 19/18/17 28/31/16 27/33/17 +f 19/50/17 26/34/18 18/8/18 +f 17/20/11 26/34/18 25/36/11 +f 35/43/8 42/83/9 34/44/9 +f 40/56/3 47/84/4 39/26/4 +f 38/57/5 45/85/6 37/29/6 +f 36/58/7 43/86/8 35/32/8 +f 34/59/9 41/87/10 33/35/10 +f 33/37/10 48/88/3 40/38/3 +f 39/39/4 46/89/5 38/40/5 +f 37/41/6 44/90/7 36/42/7 +f 4/66/3 12/78/3 11/67/4 +f 2/69/5 10/79/5 9/70/6 +f 1/71/6 9/70/6 16/72/7 +f 7/74/8 15/80/8 14/75/9 +f 5/77/10 13/91/10 12/78/3 +f 3/68/4 11/67/4 10/79/5 +f 8/73/7 16/72/7 15/80/8 +f 6/76/9 14/75/9 13/81/10 +f 17/55/11 25/36/11 32/25/12 +f 23/12/13 24/11/12 32/25/12 +f 23/48/13 31/27/13 30/28/14 +f 22/52/14 30/28/14 29/30/15 +f 21/5/15 29/60/15 28/31/16 +f 19/18/17 20/17/16 28/31/16 +f 19/50/17 27/33/17 26/34/18 +f 17/20/11 18/54/18 26/34/18 +f 35/43/8 43/92/8 42/83/9 +f 40/56/3 48/93/3 47/84/4 +f 38/57/5 46/94/5 45/85/6 +f 36/58/7 44/95/7 43/86/8 +f 34/59/9 42/96/9 41/87/10 +f 33/37/10 41/97/10 48/88/3 +f 39/39/4 47/98/4 46/89/5 +f 37/41/6 45/99/6 44/90/7 +o Gun +v 0.000000 3.000000 0.000000 +v -0.382684 2.923880 0.000000 +v -0.707107 2.707107 0.000000 +v -0.923879 2.382684 0.000000 +v -1.000000 2.000000 -0.000000 +v -0.923879 1.617316 -0.000000 +v -0.707107 1.292893 -0.000000 +v -0.382684 1.076120 -0.000000 +v -0.000000 1.000000 0.000000 +v 0.382683 1.076120 -0.000000 +v 0.707107 1.292893 -0.000000 +v 0.923879 1.617316 -0.000000 +v 1.000000 2.000000 -0.000000 +v 0.923879 2.382684 0.000000 +v 0.707107 2.707107 0.000000 +v 0.382683 2.923880 0.000000 +v 0.000000 3.000000 -3.000000 +v -0.382684 2.923880 -3.000000 +v -0.707107 2.707107 -3.000000 +v -0.923879 2.382684 -3.000000 +v -1.000000 2.000000 -3.000000 +v -0.923879 1.617316 -3.000000 +v -0.707107 1.292893 -3.000000 +v -0.382684 1.076120 -3.000000 +v -0.000000 1.000000 -3.000000 +v 0.382683 1.076120 -3.000000 +v 0.707107 1.292893 -3.000000 +v 0.923879 1.617316 -3.000000 +v 1.000000 2.000000 -3.000000 +v 0.923879 2.382684 -3.000000 +v 0.707107 2.707107 -3.000000 +v 0.382683 2.923880 -3.000000 +v 0.000000 2.375000 1.000000 +v -0.143506 2.346455 1.000000 +v -0.265165 2.265165 1.000000 +v -0.346455 2.143506 1.000000 +v -0.375000 2.000000 1.000000 +v -0.346455 1.856494 1.000000 +v -0.265165 1.734835 1.000000 +v -0.143506 1.653545 1.000000 +v 0.000000 1.625000 1.000000 +v 0.143506 1.653545 1.000000 +v 0.265165 1.734835 1.000000 +v 0.346455 1.856494 1.000000 +v 0.375000 2.000000 1.000000 +v 0.346455 2.143506 1.000000 +v 0.265165 2.265165 1.000000 +v 0.143506 2.346455 1.000000 +v -0.250000 2.000000 3.000000 +v 0.250000 2.000000 3.000000 +v -0.250000 2.000000 1.000000 +v 0.250000 2.000000 1.000000 +v -0.250000 -3.000000 0.000000 +v -0.250000 -3.000000 2.000000 +v 0.250000 -3.000000 2.000000 +v 0.250000 -3.000000 0.000000 +v -0.375000 2.000000 2.750000 +v -0.250000 2.000000 2.750000 +v -0.375000 2.000000 2.250000 +v -0.250000 2.000000 2.250000 +v -0.375000 -2.000000 1.450000 +v -0.375000 -2.000000 1.950000 +v -0.250000 -2.000000 1.950000 +v -0.250000 -2.000000 1.450000 +v 0.000000 2.375000 2.250000 +v -0.265165 2.265165 2.250000 +v -0.265165 2.265165 2.750000 +v 0.000000 2.375000 2.750000 +v 0.000000 1.625000 2.250000 +v 0.265165 1.734835 2.250000 +v 0.375000 2.000000 2.250000 +v 0.265165 2.265165 2.250000 +v 0.000000 1.625000 2.750000 +v 0.265165 1.734835 2.750000 +v 0.375000 2.000000 2.750000 +v 0.265165 2.265165 2.750000 +v 0.000000 2.250000 2.250000 +v -0.176777 2.176777 2.250000 +v 0.176777 1.823223 2.750000 +v -0.176777 2.176777 2.750000 +v 0.000000 2.250000 2.750000 +v 0.176777 1.823223 2.250000 +v 0.250000 2.000000 2.250000 +v 0.176777 2.176777 2.250000 +v 0.250000 2.000000 2.750000 +v 0.176777 2.176777 2.750000 +v 0.000000 1.750000 2.750000 +v 0.000000 1.750000 2.250000 +v -0.375000 2.000000 1.750000 +v -0.250000 2.000000 1.750000 +v -0.375000 2.000000 1.250000 +v -0.250000 2.000000 1.250000 +v -0.375000 -2.000000 0.450000 +v -0.375000 -2.000000 0.950000 +v -0.250000 -2.000000 0.950000 +v -0.250000 -2.000000 0.450000 +v 0.000000 2.375000 1.250000 +v -0.265165 2.265165 1.250000 +v -0.265165 2.265165 1.750000 +v 0.000000 2.375000 1.750000 +v 0.000000 1.625000 1.250000 +v 0.265165 1.734835 1.250000 +v 0.375000 2.000000 1.250000 +v 0.265165 2.265165 1.250000 +v 0.000000 1.625000 1.750000 +v 0.265165 1.734835 1.750000 +v 0.375000 2.000000 1.750000 +v 0.265165 2.265165 1.750000 +v 0.000000 2.250000 1.250000 +v -0.176777 2.176777 1.250000 +v 0.176777 1.823223 1.750000 +v -0.176777 2.176777 1.750000 +v 0.000000 2.250000 1.750000 +v 0.176777 1.823223 1.250000 +v 0.250000 2.000000 1.250000 +v 0.176777 2.176777 1.250000 +v 0.250000 2.000000 1.750000 +v 0.176777 2.176777 1.750000 +v 0.000000 1.750000 1.750000 +v 0.000000 1.750000 1.250000 +v 0.000000 2.750000 -3.500000 +v -0.287013 2.692910 -3.500000 +v -0.530330 2.530330 -3.500000 +v -0.692910 2.287013 -3.500000 +v -0.750000 2.000000 -3.500000 +v -0.692910 1.712987 -3.500000 +v -0.530330 1.469670 -3.500000 +v -0.287013 1.307090 -3.500000 +v -0.000000 1.250000 -3.500000 +v 0.287012 1.307090 -3.500000 +v 0.530330 1.469670 -3.500000 +v 0.692909 1.712987 -3.500000 +v 0.750000 2.000000 -3.500000 +v 0.692909 2.287013 -3.500000 +v 0.530330 2.530330 -3.500000 +v 0.287012 2.692910 -3.500000 +v 0.707106 1.480393 -3.750000 +v 0.707106 1.667893 -3.500000 +v 0.972272 1.558058 -2.500000 +v 0.441941 1.558058 -3.500000 +v 1.082107 1.292893 -2.500000 +v 0.332107 1.292893 -3.500000 +v 0.972272 1.027728 -2.500000 +v 0.441941 1.027728 -3.500000 +v 0.707107 0.917893 -2.500000 +v 0.707107 0.917893 -3.500000 +v 0.441942 1.027728 -2.500000 +v 0.972272 1.027728 -3.500000 +v 0.332107 1.292893 -2.500000 +v 1.082106 1.292893 -3.500000 +v 0.707107 1.292893 -1.500000 +v 0.707107 1.667893 -2.500000 +v 0.972271 1.558058 -3.500000 +v 0.839689 1.425476 -3.750000 +v 0.574524 1.425476 -3.750000 +v 0.519607 1.292893 -3.750000 +v 0.574524 1.160311 -3.750000 +v 0.707107 1.105393 -3.750000 +v 0.839689 1.160311 -3.750000 +v 0.894606 1.292893 -3.750000 +v -0.519607 1.292893 -3.750000 +v -0.332107 1.292893 -3.500000 +v -0.441942 1.027728 -2.500000 +v -0.441942 1.558058 -3.500000 +v -0.707107 0.917893 -2.500000 +v -0.707107 1.667893 -3.500000 +v -0.972272 1.027728 -2.500000 +v -0.972272 1.558058 -3.500000 +v -1.082107 1.292893 -2.500000 +v -1.082107 1.292893 -3.500000 +v -0.972272 1.558058 -2.500000 +v -0.972272 1.027728 -3.500000 +v -0.707107 1.667893 -2.500000 +v -0.707107 0.917893 -3.500000 +v -0.707107 1.292893 -1.500000 +v -0.332107 1.292893 -2.500000 +v -0.441942 1.027728 -3.500000 +v -0.574525 1.160311 -3.750000 +v -0.574524 1.425476 -3.750000 +v -0.707107 1.480393 -3.750000 +v -0.839690 1.425476 -3.750000 +v -0.894607 1.292893 -3.750000 +v -0.839690 1.160311 -3.750000 +v -0.707107 1.105393 -3.750000 +v -0.707107 2.519607 -3.750000 +v -0.707107 2.332107 -3.500000 +v -0.972272 2.441942 -2.500000 +v -0.441942 2.441942 -3.500000 +v -1.082107 2.707107 -2.500000 +v -0.332107 2.707107 -3.500000 +v -0.972272 2.972272 -2.500000 +v -0.441942 2.972272 -3.500000 +v -0.707107 3.082108 -2.500000 +v -0.707107 3.082108 -3.500000 +v -0.441942 2.972272 -2.500000 +v -0.972272 2.972272 -3.500000 +v -0.332107 2.707107 -2.500000 +v -1.082107 2.707107 -3.500000 +v -0.707107 2.707107 -1.500000 +v -0.707107 2.332107 -2.500000 +v -0.972272 2.441942 -3.500000 +v -0.839689 2.574524 -3.750000 +v -0.574524 2.574524 -3.750000 +v -0.519607 2.707107 -3.750000 +v -0.574524 2.839689 -3.750000 +v -0.707107 2.894607 -3.750000 +v -0.839689 2.839689 -3.750000 +v -0.894607 2.707107 -3.750000 +v 0.519607 2.707107 -3.750000 +v 0.332107 2.707107 -3.500000 +v 0.441942 2.972272 -2.500000 +v 0.441942 2.441941 -3.500000 +v 0.707107 3.082107 -2.500000 +v 0.707107 2.332107 -3.500000 +v 0.972272 2.972272 -2.500000 +v 0.972272 2.441941 -3.500000 +v 1.082107 2.707107 -2.500000 +v 1.082107 2.707107 -3.500000 +v 0.972272 2.441942 -2.500000 +v 0.972272 2.972272 -3.500000 +v 0.707107 2.332107 -2.500000 +v 0.707107 3.082107 -3.500000 +v 0.707107 2.707107 -1.500000 +v 0.332107 2.707107 -2.500000 +v 0.441942 2.972272 -3.500000 +v 0.574524 2.839689 -3.750000 +v 0.574524 2.574524 -3.750000 +v 0.707107 2.519607 -3.750000 +v 0.839689 2.574524 -3.750000 +v 0.894607 2.707107 -3.750000 +v 0.839689 2.839689 -3.750000 +v 0.707107 2.894607 -3.750000 +v 0.250000 1.500000 2.650000 +v 0.250000 -2.500000 1.850000 +v 0.250000 1.500000 1.150000 +v 0.250000 -2.500000 0.350000 +v 0.250000 1.500000 1.775000 +v 0.250000 -2.500000 0.975000 +v 0.250000 1.500000 2.025000 +v 0.250000 -2.500000 1.225000 +v -0.125000 1.500000 2.650000 +v -0.125000 -2.500000 1.850000 +v -0.125000 -2.500000 0.350000 +v -0.125000 1.500000 1.150000 +v -0.125000 -2.500000 0.975000 +v -0.125000 1.500000 1.775000 +v -0.125000 1.500000 2.025000 +v -0.125000 -2.500000 1.225000 +v 0.000000 1.593750 2.525000 +v 0.066291 1.566291 2.525000 +v 0.000000 1.687500 1.025000 +v 0.000000 1.687500 2.400000 +v 0.132583 1.632583 1.025000 +v 0.132583 1.632582 2.400000 +v 0.187500 1.500000 1.025000 +v 0.187500 1.500000 2.400000 +v 0.132583 1.367418 1.025000 +v 0.132583 1.367417 2.400000 +v 0.000000 1.312500 1.025000 +v 0.000000 1.312500 2.400000 +v -0.132583 1.367418 1.025000 +v -0.132583 1.367417 2.400000 +v -0.187500 1.500000 1.025000 +v -0.187500 1.500000 2.400000 +v -0.132583 1.632583 1.025000 +v -0.132583 1.632582 2.400000 +v 0.093750 1.500000 2.525000 +v 0.066291 1.433709 2.525000 +v 0.000000 1.406250 2.525000 +v -0.066291 1.433709 2.525000 +v -0.093750 1.500000 2.525000 +v -0.066291 1.566291 2.525000 +v 0.000000 0.093750 2.225000 +v 0.066291 0.066291 2.225000 +v 0.000000 0.187500 0.725000 +v 0.000000 0.187500 2.100000 +v 0.132583 0.132583 0.725000 +v 0.132583 0.132582 2.100000 +v 0.187500 0.000000 0.725000 +v 0.187500 0.000000 2.100000 +v 0.132583 -0.132582 0.725000 +v 0.132583 -0.132583 2.100000 +v 0.000000 -0.187500 0.725000 +v 0.000000 -0.187500 2.100000 +v -0.132583 -0.132582 0.725000 +v -0.132583 -0.132583 2.100000 +v -0.187500 0.000000 0.725000 +v -0.187500 0.000000 2.100000 +v -0.132583 0.132583 0.725000 +v -0.132583 0.132582 2.100000 +v 0.093750 0.000000 2.225000 +v 0.066291 -0.066291 2.225000 +v 0.000000 -0.093750 2.225000 +v -0.066291 -0.066291 2.225000 +v -0.093750 0.000000 2.225000 +v -0.066291 0.066291 2.225000 +v 0.000000 0.593750 2.325000 +v 0.066291 0.566291 2.325000 +v 0.000000 0.687500 0.825000 +v 0.000000 0.687500 2.200000 +v 0.132583 0.632583 0.825000 +v 0.132583 0.632582 2.200000 +v 0.187500 0.500000 0.825000 +v 0.187500 0.500000 2.200000 +v 0.132583 0.367418 0.825000 +v 0.132583 0.367417 2.200000 +v 0.000000 0.312500 0.825000 +v 0.000000 0.312500 2.200000 +v -0.132583 0.367418 0.825000 +v -0.132583 0.367417 2.200000 +v -0.187500 0.500000 0.825000 +v -0.187500 0.500000 2.200000 +v -0.132583 0.632583 0.825000 +v -0.132583 0.632582 2.200000 +v 0.093750 0.500000 2.325000 +v 0.066291 0.433709 2.325000 +v 0.000000 0.406250 2.325000 +v -0.066291 0.433709 2.325000 +v -0.093750 0.500000 2.325000 +v -0.066291 0.566291 2.325000 +v -0.066291 1.066291 2.425000 +v -0.093750 1.000000 2.425000 +v -0.066291 0.933709 2.425000 +v 0.000000 0.906250 2.425000 +v 0.066291 0.933709 2.425000 +v 0.093750 1.000000 2.425000 +v -0.132583 1.132582 2.300000 +v -0.132583 1.132583 0.925000 +v -0.187500 1.000000 2.300000 +v -0.187500 1.000000 0.925000 +v -0.132583 0.867417 2.300000 +v -0.132583 0.867418 0.925000 +v 0.000000 0.812500 2.300000 +v 0.000000 0.812500 0.925000 +v 0.132583 0.867417 2.300000 +v 0.132583 0.867418 0.925000 +v 0.187500 1.000000 2.300000 +v 0.187500 1.000000 0.925000 +v 0.132583 1.132582 2.300000 +v 0.132583 1.132583 0.925000 +v 0.000000 1.187500 2.300000 +v 0.000000 1.187500 0.925000 +v 0.066291 1.066291 2.425000 +v 0.000000 1.093750 2.425000 +v 0.000000 -2.406250 1.725000 +v 0.066291 -2.433709 1.725000 +v 0.000000 -2.312500 0.225000 +v 0.000000 -2.312500 1.600000 +v 0.132583 -2.367417 0.225000 +v 0.132583 -2.367418 1.600000 +v 0.187500 -2.500000 0.225000 +v 0.187500 -2.500000 1.600000 +v 0.132583 -2.632582 0.225000 +v 0.132583 -2.632583 1.600000 +v 0.000000 -2.687500 0.225000 +v 0.000000 -2.687500 1.600000 +v -0.132583 -2.632582 0.225000 +v -0.132583 -2.632583 1.600000 +v -0.187500 -2.500000 0.225000 +v -0.187500 -2.500000 1.600000 +v -0.132583 -2.367417 0.225000 +v -0.132583 -2.367418 1.600000 +v 0.093750 -2.500000 1.725000 +v 0.066291 -2.566291 1.725000 +v 0.000000 -2.593750 1.725000 +v -0.066291 -2.566291 1.725000 +v -0.093750 -2.500000 1.725000 +v -0.066291 -2.433709 1.725000 +v -0.066291 -0.433709 2.125000 +v -0.093750 -0.500000 2.125000 +v -0.066291 -0.566291 2.125000 +v 0.000000 -0.593750 2.125000 +v 0.066291 -0.566291 2.125000 +v 0.093750 -0.500000 2.125000 +v -0.132583 -0.367418 2.000000 +v -0.132583 -0.367417 0.625000 +v -0.187500 -0.500000 2.000000 +v -0.187500 -0.500000 0.625000 +v -0.132583 -0.632583 2.000000 +v -0.132583 -0.632582 0.625000 +v 0.000000 -0.687500 2.000000 +v 0.000000 -0.687500 0.625000 +v 0.132583 -0.632583 2.000000 +v 0.132583 -0.632582 0.625000 +v 0.187500 -0.500000 2.000000 +v 0.187500 -0.500000 0.625000 +v 0.132583 -0.367418 2.000000 +v 0.132583 -0.367417 0.625000 +v 0.000000 -0.312500 2.000000 +v 0.000000 -0.312500 0.625000 +v 0.066291 -0.433709 2.125000 +v 0.000000 -0.406250 2.125000 +v 0.000000 -0.906250 2.025000 +v 0.066291 -0.933709 2.025000 +v 0.000000 -0.812500 0.525000 +v 0.000000 -0.812500 1.900000 +v 0.132583 -0.867417 0.525000 +v 0.132583 -0.867418 1.900000 +v 0.187500 -1.000000 0.525000 +v 0.187500 -1.000000 1.900000 +v 0.132583 -1.132582 0.525000 +v 0.132583 -1.132583 1.900000 +v 0.000000 -1.187500 0.525000 +v 0.000000 -1.187500 1.900000 +v -0.132583 -1.132582 0.525000 +v -0.132583 -1.132583 1.900000 +v -0.187500 -1.000000 0.525000 +v -0.187500 -1.000000 1.900000 +v -0.132583 -0.867417 0.525000 +v -0.132583 -0.867418 1.900000 +v 0.093750 -1.000000 2.025000 +v 0.066291 -1.066291 2.025000 +v 0.000000 -1.093750 2.025000 +v -0.066291 -1.066291 2.025000 +v -0.093750 -1.000000 2.025000 +v -0.066291 -0.933709 2.025000 +v -0.066291 -1.433709 1.925000 +v -0.093750 -1.500000 1.925000 +v -0.066291 -1.566291 1.925000 +v 0.000000 -1.593750 1.925000 +v 0.066291 -1.566291 1.925000 +v 0.093750 -1.500000 1.925000 +v -0.132583 -1.367418 1.800000 +v -0.132583 -1.367417 0.425000 +v -0.187500 -1.500000 1.800000 +v -0.187500 -1.500000 0.425000 +v -0.132583 -1.632583 1.800000 +v -0.132583 -1.632582 0.425000 +v 0.000000 -1.687500 1.800000 +v 0.000000 -1.687500 0.425000 +v 0.132583 -1.632583 1.800000 +v 0.132583 -1.632582 0.425000 +v 0.187500 -1.500000 1.800000 +v 0.187500 -1.500000 0.425000 +v 0.132583 -1.367418 1.800000 +v 0.132583 -1.367417 0.425000 +v 0.000000 -1.312500 1.800000 +v 0.000000 -1.312500 0.425000 +v 0.066291 -1.433709 1.925000 +v 0.000000 -1.406250 1.925000 +v -0.066291 -1.933709 1.825000 +v -0.093750 -2.000000 1.825000 +v -0.066291 -2.066291 1.825000 +v 0.000000 -2.093750 1.825000 +v 0.066291 -2.066291 1.825000 +v 0.093750 -2.000000 1.825000 +v -0.132583 -1.867418 1.700000 +v -0.132583 -1.867417 0.325000 +v -0.187500 -2.000000 1.700000 +v -0.187500 -2.000000 0.325000 +v -0.132583 -2.132583 1.700000 +v -0.132583 -2.132582 0.325000 +v 0.000000 -2.187500 1.700000 +v 0.000000 -2.187500 0.325000 +v 0.132583 -2.132583 1.700000 +v 0.132583 -2.132582 0.325000 +v 0.187500 -2.000000 1.700000 +v 0.187500 -2.000000 0.325000 +v 0.132583 -1.867418 1.700000 +v 0.132583 -1.867417 0.325000 +v 0.000000 -1.812500 1.700000 +v 0.000000 -1.812500 0.325000 +v 0.066291 -1.933709 1.825000 +v 0.000000 -1.906250 1.825000 +v -0.375000 1.125000 -1.250000 +v 0.375000 1.125000 -1.250000 +v -0.375000 1.125000 -2.250000 +v 0.375000 1.125000 -2.250000 +v -0.187500 1.125000 -1.000000 +v 0.187500 1.125000 -1.000000 +v -0.375000 -1.375000 -2.750000 +v -0.375000 -1.375000 -1.750000 +v 0.375000 -1.375000 -1.750000 +v 0.375000 -1.375000 -2.750000 +v -0.187500 -1.375000 -1.500000 +v 0.187500 -1.375000 -1.500000 +v -0.187500 1.125000 -0.875000 +v 0.187500 1.125000 -0.875000 +v -0.187500 0.875000 -0.875000 +v 0.187500 0.875000 -0.875000 +v -0.187500 1.125000 -0.625000 +v 0.187500 1.125000 -0.625000 +v -0.187500 0.875000 -0.625000 +v 0.187500 0.875000 -0.625000 +v -0.125000 0.875000 -0.687500 +v 0.125000 0.875000 -0.687500 +v -0.125000 0.875000 -0.812500 +v 0.125000 0.875000 -0.812500 +v -0.125000 -0.625000 -1.112500 +v -0.125000 -0.625000 -0.987500 +v 0.125000 -0.625000 -0.987500 +v 0.125000 -0.625000 -1.112500 +v -0.125000 -0.875000 -1.112500 +v -0.125000 -0.875000 -0.987500 +v 0.125000 -0.875000 -0.987500 +v 0.125000 -0.875000 -1.112500 +v -0.125000 -1.375000 -0.862500 +v -0.125000 -1.375000 -0.737500 +v 0.125000 -1.375000 -0.737500 +v 0.125000 -1.375000 -0.862500 +vt 0.752941 0.687653 +vt 0.770545 0.750000 +vt 0.752941 0.812347 +vt 0.341176 0.000000 +vt 0.247059 0.083333 +vt 0.247059 0.000000 +vt 0.300000 0.833333 +vt 0.288235 0.166667 +vt 0.300000 0.166667 +vt 0.129412 0.916667 +vt 0.223529 0.083333 +vt 0.223529 0.916667 +vt 0.341176 0.083333 +vt 0.364706 0.916667 +vt 0.341176 0.916667 +vt 0.247059 0.916667 +vt 0.370588 0.020833 +vt 0.394118 0.000000 +vt 0.394118 0.020833 +vt 0.394118 0.687500 +vt 0.400000 0.020833 +vt 0.400000 0.687500 +vt 0.364706 0.687500 +vt 0.370588 0.687500 +vt 0.394118 0.770833 +vt 0.400000 0.729167 +vt 0.400000 0.770833 +vt 0.400000 0.812500 +vt 0.394118 0.812500 +vt 0.400000 0.854167 +vt 0.394118 0.854167 +vt 0.400000 0.895833 +vt 0.394118 0.895833 +vt 0.394118 0.937500 +vt 0.400000 0.937500 +vt 0.370588 0.937500 +vt 0.364706 0.895833 +vt 0.370588 0.895833 +vt 0.370588 0.854167 +vt 0.364706 0.854167 +vt 0.370588 0.812500 +vt 0.364706 0.812500 +vt 0.370588 0.770833 +vt 0.364706 0.729167 +vt 0.364706 0.770833 +vt 0.370588 0.020833 +vt 0.394118 0.000000 +vt 0.394118 0.020833 +vt 0.394118 0.687500 +vt 0.400000 0.020833 +vt 0.400000 0.687500 +vt 0.364706 0.687500 +vt 0.370588 0.687500 +vt 0.394118 0.770833 +vt 0.400000 0.729167 +vt 0.400000 0.770833 +vt 0.400000 0.812500 +vt 0.394118 0.812500 +vt 0.400000 0.854167 +vt 0.394118 0.854167 +vt 0.400000 0.895833 +vt 0.394118 0.895833 +vt 0.394118 0.937500 +vt 0.400000 0.937500 +vt 0.370588 0.937500 +vt 0.364706 0.895833 +vt 0.370588 0.895833 +vt 0.370588 0.854167 +vt 0.364706 0.854167 +vt 0.370588 0.812500 +vt 0.364706 0.812500 +vt 0.370588 0.770833 +vt 0.364706 0.729167 +vt 0.364706 0.770833 +vt 0.795473 0.213133 +vt 0.745703 0.213133 +vt 0.745703 0.036867 +vt 0.738036 0.677788 +vt 0.738036 0.634712 +vt 0.750199 0.634712 +vt 0.738036 0.677788 +vt 0.738036 0.634712 +vt 0.750199 0.634712 +vt 0.750199 0.634712 +vt 0.750199 0.677788 +vt 0.738036 0.677788 +vt 0.750199 0.634712 +vt 0.750199 0.677788 +vt 0.738036 0.677788 +vt 0.329412 0.166667 +vt 0.329412 0.833333 +vt 0.258824 0.833333 +vt 0.258824 0.166667 +vt 0.047059 0.000000 +vt 0.017647 0.062500 +vt 0.017647 0.000000 +vt 0.064706 0.062500 +vt 0.082353 0.729167 +vt 0.064706 0.729167 +vt 0.047059 0.729167 +vt 0.017647 0.729167 +vt 0.111765 0.729167 +vt 0.082353 0.062500 +vt 0.111765 0.062500 +vt 0.017647 0.791667 +vt 0.047059 0.791667 +vt 0.064706 0.729167 +vt 0.047059 0.062500 +vt 0.064706 0.062500 +vt 0.129412 0.729167 +vt 0.129412 0.062500 +vt 0.111765 0.000000 +vt 0.082353 -0.000000 +vt 0.000000 0.062500 +vt 0.000000 0.729167 +vt 0.082353 0.791667 +vt 0.111765 0.791667 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.435382 0.770833 +vt 0.441176 0.750310 +vt 0.446971 0.770833 +vt 0.858823 0.541667 +vt 0.841176 0.583333 +vt 0.841176 0.541667 +vt 0.841176 0.625000 +vt 0.858823 0.666667 +vt 0.841176 0.666667 +vt 0.917647 -0.000000 +vt 0.870588 0.125000 +vt 0.870588 0.000000 +vt 0.858824 0.083333 +vt 0.829412 0.541667 +vt 0.841176 0.125000 +vt 0.841176 0.541667 +vt 0.858824 0.125000 +vt 0.858824 0.541667 +vt 0.917647 0.541667 +vt 0.917647 0.125000 +vt 0.952941 0.541667 +vt 1.000000 0.125000 +vt 1.000000 0.541667 +vt 0.870588 0.541667 +vt 0.952941 0.125000 +vt 0.829412 0.625000 +vt 0.858823 0.625000 +vt 0.870588 0.583333 +vt 0.870588 0.625000 +vt 0.858823 0.583333 +vt 0.888235 0.687500 +vt 0.894118 0.645833 +vt 0.894118 0.687500 +vt 0.894118 0.937500 +vt 0.870588 0.937500 +vt 0.876471 0.687500 +vt 0.876471 0.937500 +vt 0.870588 0.687500 +vt 0.876471 0.645833 +vt 0.905882 0.562500 +vt 0.894118 0.541667 +vt 0.905882 0.541667 +vt 0.888235 0.645833 +vt 0.894118 0.562500 +vt 0.870588 0.562500 +vt 0.876471 0.562500 +vt 0.746204 0.807601 +vt 0.740493 0.794086 +vt 0.736677 0.773859 +vt 0.735337 0.750000 +vt 0.736677 0.726141 +vt 0.740493 0.705914 +vt 0.746204 0.692399 +vt 0.759678 0.692399 +vt 0.765389 0.705914 +vt 0.769205 0.726141 +vt 0.769205 0.773859 +vt 0.765389 0.794086 +vt 0.759678 0.807601 +vt 0.288235 0.833333 +vt 0.129412 0.083333 +vt 0.364706 0.083333 +vt 0.370588 -0.000000 +vt 0.364706 0.020833 +vt 0.394118 0.729167 +vt 0.364706 0.937500 +vt 0.370588 0.729167 +vt 0.370588 -0.000000 +vt 0.364706 0.020833 +vt 0.394118 0.729167 +vt 0.364706 0.937500 +vt 0.370588 0.729167 +vt 0.784055 0.240151 +vt 0.770588 0.249639 +vt 0.757121 0.240151 +vt 0.738075 0.172697 +vt 0.735396 0.125000 +vt 0.738075 0.077303 +vt 0.757120 0.009849 +vt 0.770588 0.000361 +vt 0.784055 0.009849 +vt 0.795473 0.036867 +vt 0.803101 0.077303 +vt 0.805780 0.125000 +vt 0.803101 0.172697 +vt 0.752718 0.656250 +vt 0.750199 0.677788 +vt 0.744118 0.686710 +vt 0.735517 0.656250 +vt 0.744117 0.625790 +vt 0.752718 0.656250 +vt 0.750199 0.677788 +vt 0.744118 0.686710 +vt 0.735517 0.656250 +vt 0.744118 0.625790 +vt 0.752718 0.656250 +vt 0.744118 0.686710 +vt 0.735517 0.656250 +vt 0.738036 0.634712 +vt 0.744118 0.625790 +vt 0.752718 0.656250 +vt 0.744118 0.686710 +vt 0.735517 0.656250 +vt 0.738036 0.634712 +vt 0.744117 0.625790 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.445274 0.785345 +vt 0.441176 0.791356 +vt 0.437079 0.785345 +vt 0.437079 0.756321 +vt 0.445274 0.756321 +vt 0.858824 0.041667 +vt 0.829412 0.125000 +vt 0.829412 0.583333 +vt 0.888235 0.937500 +vt 0.870588 0.645833 +vt 0.888235 0.562500 +vt 0.711765 0.312500 +vt 0.570588 0.375000 +vt 0.570588 0.312500 +vt 0.711765 0.875000 +vt 0.570588 0.937500 +vt 0.570588 0.875000 +vt 0.711765 0.375000 +vt 0.570588 0.437500 +vt 0.711765 0.937500 +vt 0.570588 1.000000 +vt 0.711765 0.500000 +vt 0.570588 0.562500 +vt 0.570588 0.500000 +vt 0.711765 0.437500 +vt 0.711765 0.000000 +vt 0.570588 0.062500 +vt 0.570588 0.000000 +vt 0.711765 0.562500 +vt 0.570588 0.625000 +vt 0.711765 0.062500 +vt 0.570588 0.125000 +vt 0.711765 0.625000 +vt 0.570588 0.687500 +vt 0.711765 0.125000 +vt 0.570588 0.187500 +vt 0.711765 0.687500 +vt 0.570588 0.750000 +vt 0.711765 0.187500 +vt 0.570588 0.250000 +vt 0.711765 0.750000 +vt 0.570588 0.812500 +vt 0.711765 0.250000 +vt 0.711765 0.812500 +vt 0.517647 0.333333 +vt 0.517647 0.895833 +vt 0.517647 0.395833 +vt 0.517647 0.958333 +vt 0.517647 0.541667 +vt 0.517647 0.520833 +vt 0.517647 0.479167 +vt 0.517647 0.458333 +vt 0.517647 0.020833 +vt 0.517647 0.583333 +vt 0.517647 0.083333 +vt 0.517647 0.645833 +vt 0.517647 0.166667 +vt 0.517647 0.145833 +vt 0.517647 0.708333 +vt 0.517647 0.208333 +vt 0.517647 0.770833 +vt 0.517647 0.270833 +vt 0.517647 0.833333 +vt 0.735294 0.250000 +vt 0.735294 0.312500 +vt 0.735294 0.875000 +vt 0.735294 0.375000 +vt 0.735294 0.937500 +vt 0.735294 0.437500 +vt 0.735294 1.000000 +vt 0.711765 1.000000 +vt 0.735294 0.562500 +vt 0.735294 0.500000 +vt 0.735294 0.062500 +vt 0.735294 0.625000 +vt 0.735294 0.125000 +vt 0.735294 0.687500 +vt 0.735294 0.187500 +vt 0.735294 0.750000 +vt 0.735294 0.812500 +vt 0.770588 0.291667 +vt 0.782353 0.250000 +vt 0.782353 0.291667 +vt 0.758824 0.458333 +vt 0.770588 0.458333 +vt 0.805882 0.458333 +vt 0.800000 0.625000 +vt 0.794118 0.458333 +vt 0.735294 0.291667 +vt 0.747059 0.250000 +vt 0.747059 0.291667 +vt 0.788235 0.625000 +vt 0.782353 0.458333 +vt 0.758824 0.250000 +vt 0.758824 0.291667 +vt 0.776471 0.625000 +vt 0.770588 0.250000 +vt 0.817647 0.458333 +vt 0.805882 0.291667 +vt 0.817647 0.291667 +vt 0.764706 0.625000 +vt 0.805882 0.250000 +vt 0.817647 0.250000 +vt 0.752941 0.625000 +vt 0.747059 0.458333 +vt 0.794118 0.250000 +vt 0.794118 0.291667 +vt 0.829412 0.291667 +vt 0.829412 0.250000 +vt 0.811765 0.625000 +vt 0.770588 0.291667 +vt 0.782353 0.250000 +vt 0.782353 0.291667 +vt 0.770588 0.458333 +vt 0.758824 0.291667 +vt 0.805882 0.458333 +vt 0.800000 0.625000 +vt 0.794118 0.458333 +vt 0.747059 0.291667 +vt 0.735294 0.250000 +vt 0.747059 0.250000 +vt 0.788235 0.625000 +vt 0.782353 0.458333 +vt 0.758824 0.250000 +vt 0.776471 0.625000 +vt 0.770588 0.250000 +vt 0.817647 0.458333 +vt 0.805882 0.291667 +vt 0.817647 0.291667 +vt 0.764706 0.625000 +vt 0.758824 0.458333 +vt 0.805882 0.250000 +vt 0.817647 0.250000 +vt 0.752941 0.625000 +vt 0.747059 0.458333 +vt 0.794118 0.250000 +vt 0.794118 0.291667 +vt 0.829412 0.291667 +vt 0.829412 0.250000 +vt 0.811765 0.625000 +vt 0.782353 0.291667 +vt 0.770588 0.250000 +vt 0.782353 0.250000 +vt 0.758824 0.458333 +vt 0.770588 0.291667 +vt 0.770588 0.458333 +vt 0.805882 0.458333 +vt 0.800000 0.625000 +vt 0.794118 0.458333 +vt 0.735294 0.291667 +vt 0.747059 0.250000 +vt 0.747059 0.291667 +vt 0.788235 0.625000 +vt 0.782353 0.458333 +vt 0.758824 0.291667 +vt 0.758824 0.250000 +vt 0.776471 0.625000 +vt 0.817647 0.458333 +vt 0.805882 0.291667 +vt 0.817647 0.291667 +vt 0.764706 0.625000 +vt 0.805882 0.250000 +vt 0.817647 0.250000 +vt 0.752941 0.625000 +vt 0.747059 0.458333 +vt 0.794118 0.291667 +vt 0.794118 0.250000 +vt 0.829412 0.250000 +vt 0.829412 0.291667 +vt 0.811765 0.625000 +vt 0.770588 0.291667 +vt 0.782353 0.250000 +vt 0.782353 0.291667 +vt 0.758824 0.458333 +vt 0.770588 0.458333 +vt 0.805882 0.458333 +vt 0.800000 0.625000 +vt 0.794118 0.458333 +vt 0.747059 0.291667 +vt 0.735294 0.250000 +vt 0.747059 0.250000 +vt 0.788235 0.625000 +vt 0.782353 0.458333 +vt 0.758824 0.250000 +vt 0.758824 0.291667 +vt 0.776471 0.625000 +vt 0.770588 0.250000 +vt 0.817647 0.291667 +vt 0.817647 0.458333 +vt 0.764706 0.625000 +vt 0.805882 0.250000 +vt 0.817647 0.250000 +vt 0.752941 0.625000 +vt 0.747059 0.458333 +vt 0.794118 0.250000 +vt 0.794118 0.291667 +vt 0.805882 0.291667 +vt 0.829412 0.250000 +vt 0.829412 0.291667 +vt 0.811765 0.625000 +vt 0.452941 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.833333 +vt 0.452941 0.875000 +vt 0.517647 0.854167 +vt 0.517647 0.875000 +vt 0.452941 0.770833 +vt 0.447059 0.791667 +vt 0.447059 0.770833 +vt 0.517647 0.833333 +vt 0.452941 0.895833 +vt 0.447059 0.875000 +vt 0.517647 0.812500 +vt 0.452941 0.812500 +vt 0.452941 0.791667 +vt 0.517647 0.791667 +vt 0.447059 0.916667 +vt 0.447059 0.895833 +vt 0.517647 0.770833 +vt 0.447059 0.812500 +vt 0.517647 0.750000 +vt 0.452941 0.750000 +vt 0.447059 0.750000 +vt 0.447059 0.854167 +vt 0.452941 0.916667 +vt 0.517647 0.895833 +vt 0.517647 0.916667 +vt 0.452941 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.833333 +vt 0.452941 0.875000 +vt 0.517647 0.854167 +vt 0.517647 0.875000 +vt 0.452941 0.791667 +vt 0.447059 0.770833 +vt 0.452941 0.770833 +vt 0.517647 0.833333 +vt 0.447059 0.895833 +vt 0.447059 0.875000 +vt 0.517647 0.812500 +vt 0.447059 0.812500 +vt 0.447059 0.791667 +vt 0.452941 0.812500 +vt 0.517647 0.791667 +vt 0.452941 0.895833 +vt 0.447059 0.916667 +vt 0.517647 0.770833 +vt 0.517647 0.750000 +vt 0.452941 0.750000 +vt 0.447059 0.750000 +vt 0.447059 0.854167 +vt 0.452941 0.916667 +vt 0.517647 0.895833 +vt 0.517647 0.916667 +vt 0.452941 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.833333 +vt 0.452941 0.875000 +vt 0.517647 0.854167 +vt 0.517647 0.875000 +vt 0.452941 0.791667 +vt 0.447059 0.770833 +vt 0.452941 0.770833 +vt 0.517647 0.833333 +vt 0.452941 0.895833 +vt 0.447059 0.875000 +vt 0.517647 0.812500 +vt 0.447059 0.812500 +vt 0.447059 0.791667 +vt 0.452941 0.812500 +vt 0.517647 0.791667 +vt 0.447059 0.916667 +vt 0.447059 0.895833 +vt 0.517647 0.770833 +vt 0.517647 0.750000 +vt 0.452941 0.750000 +vt 0.447059 0.750000 +vt 0.447059 0.854167 +vt 0.517647 0.916667 +vt 0.517647 0.895833 +vt 0.517647 0.895833 +vt 0.452941 0.875000 +vt 0.517647 0.875000 +vt 0.452941 0.916667 +vt 0.517647 0.916667 +vt 0.447059 0.854167 +vt 0.452941 0.854167 +vt 0.452941 0.750000 +vt 0.447059 0.770833 +vt 0.447059 0.750000 +vt 0.452941 0.770833 +vt 0.517647 0.750000 +vt 0.517647 0.770833 +vt 0.452941 0.833333 +vt 0.447059 0.812500 +vt 0.452941 0.812500 +vt 0.517647 0.791667 +vt 0.447059 0.895833 +vt 0.452941 0.895833 +vt 0.517647 0.812500 +vt 0.452941 0.791667 +vt 0.447059 0.791667 +vt 0.517647 0.833333 +vt 0.447059 0.875000 +vt 0.517647 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.833333 +vt 0.452941 0.875000 +vt 0.517647 0.854167 +vt 0.517647 0.875000 +vt 0.517647 0.895833 +vt 0.452941 0.875000 +vt 0.517647 0.875000 +vt 0.452941 0.791667 +vt 0.447059 0.770833 +vt 0.452941 0.770833 +vt 0.517647 0.833333 +vt 0.452941 0.916667 +vt 0.517647 0.916667 +vt 0.452941 0.895833 +vt 0.447059 0.875000 +vt 0.517647 0.812500 +vt 0.447059 0.854167 +vt 0.452941 0.854167 +vt 0.447059 0.812500 +vt 0.447059 0.791667 +vt 0.517647 0.791667 +vt 0.452941 0.750000 +vt 0.447059 0.770833 +vt 0.447059 0.750000 +vt 0.452941 0.916667 +vt 0.447059 0.895833 +vt 0.517647 0.770833 +vt 0.452941 0.770833 +vt 0.517647 0.750000 +vt 0.517647 0.770833 +vt 0.452941 0.812500 +vt 0.517647 0.750000 +vt 0.452941 0.750000 +vt 0.447059 0.750000 +vt 0.447059 0.854167 +vt 0.517647 0.895833 +vt 0.517647 0.916667 +vt 0.452941 0.833333 +vt 0.447059 0.812500 +vt 0.452941 0.812500 +vt 0.517647 0.791667 +vt 0.447059 0.895833 +vt 0.452941 0.895833 +vt 0.517647 0.812500 +vt 0.452941 0.791667 +vt 0.447059 0.791667 +vt 0.517647 0.833333 +vt 0.447059 0.875000 +vt 0.517647 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.833333 +vt 0.452941 0.875000 +vt 0.517647 0.854167 +vt 0.517647 0.875000 +vt 0.452941 0.791667 +vt 0.447059 0.770833 +vt 0.452941 0.770833 +vt 0.517647 0.833333 +vt 0.447059 0.895833 +vt 0.447059 0.875000 +vt 0.517647 0.812500 +vt 0.447059 0.812500 +vt 0.447059 0.791667 +vt 0.452941 0.812500 +vt 0.517647 0.791667 +vt 0.452941 0.916667 +vt 0.452941 0.895833 +vt 0.517647 0.770833 +vt 0.517647 0.750000 +vt 0.452941 0.750000 +vt 0.447059 0.750000 +vt 0.447059 0.854167 +vt 0.517647 0.895833 +vt 0.517647 0.916667 +vt 0.452941 0.895833 +vt 0.517647 0.875000 +vt 0.517647 0.895833 +vt 0.452941 0.916667 +vt 0.517647 0.916667 +vt 0.452941 0.854167 +vt 0.447059 0.875000 +vt 0.447059 0.854167 +vt 0.452941 0.750000 +vt 0.447059 0.770833 +vt 0.447059 0.750000 +vt 0.452941 0.770833 +vt 0.517647 0.750000 +vt 0.517647 0.770833 +vt 0.452941 0.833333 +vt 0.447059 0.812500 +vt 0.452941 0.812500 +vt 0.452941 0.791667 +vt 0.517647 0.791667 +vt 0.447059 0.916667 +vt 0.447059 0.895833 +vt 0.517647 0.812500 +vt 0.447059 0.791667 +vt 0.517647 0.833333 +vt 0.452941 0.875000 +vt 0.517647 0.854167 +vt 0.447059 0.833333 +vt 0.452941 0.895833 +vt 0.517647 0.875000 +vt 0.517647 0.895833 +vt 0.452941 0.916667 +vt 0.517647 0.916667 +vt 0.452941 0.875000 +vt 0.447059 0.854167 +vt 0.452941 0.854167 +vt 0.452941 0.750000 +vt 0.447059 0.770833 +vt 0.447059 0.750000 +vt 0.452941 0.770833 +vt 0.517647 0.750000 +vt 0.517647 0.770833 +vt 0.452941 0.833333 +vt 0.447059 0.812500 +vt 0.452941 0.812500 +vt 0.452941 0.791667 +vt 0.517647 0.791667 +vt 0.447059 0.895833 +vt 0.517647 0.812500 +vt 0.447059 0.791667 +vt 0.517647 0.833333 +vt 0.447059 0.875000 +vt 0.517647 0.854167 +vt 0.447059 0.833333 +vt 0.905882 0.687500 +vt 0.905882 0.937500 +vt 0.905882 0.645833 +vt 0.517647 0.354167 +vt 0.517647 0.916667 +vt 0.517647 0.416667 +vt 0.517647 0.979167 +vt 0.517647 0.041667 +vt 0.517647 0.604167 +vt 0.517647 0.104167 +vt 0.517647 0.666667 +vt 0.517647 0.729167 +vt 0.517647 0.229167 +vt 0.517647 0.791667 +vt 0.517647 0.291667 +vt 0.517647 0.854167 +vt 0.735294 0.000000 +vt 0.735294 0.250000 +vt 0.735294 0.291667 +vt 0.735294 0.250000 +vt 0.735294 0.291667 +vt 0.452941 0.916667 +vt 0.447059 0.916667 +vt 0.447059 0.916667 +vt 0.447059 0.916667 +vt 0.447059 0.916667 +vt 0.447059 0.916667 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.1961 -0.9806 +vn 0.0000 -0.1961 0.9806 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 1.0000 0.0000 +vn -0.7943 -0.1191 0.5957 +vn 0.7943 -0.1191 0.5957 +vn 0.9239 0.3827 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 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.3827 -0.9239 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 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.5996 0.5996 0.5300 +vn 0.7834 0.3245 0.5300 +vn -0.3245 -0.7834 0.5300 +vn -0.5996 -0.5996 0.5300 +vn 0.3245 0.7834 0.5300 +vn -0.0000 -0.8480 0.5300 +vn 0.0000 0.8480 0.5300 +vn -0.3245 0.7834 0.5300 +vn 0.3245 -0.7834 0.5300 +vn -0.5996 0.5996 0.5300 +vn 0.5996 -0.5996 0.5300 +vn -0.7834 0.3245 0.5300 +vn 0.7834 -0.3245 0.5300 +vn -0.8480 -0.0000 0.5300 +vn 0.8480 -0.0000 0.5300 +vn -0.7834 -0.3245 0.5300 +vn 0.8263 0.3423 -0.4472 +vn 0.8944 0.0000 -0.4472 +vn -0.9830 0.1835 0.0000 +vn -0.9781 0.2082 0.0000 +vn -0.8263 -0.3423 -0.4472 +vn -0.6325 -0.6325 -0.4472 +vn 0.6325 0.6325 -0.4472 +vn -0.3423 -0.8263 -0.4472 +vn 0.3423 0.8263 -0.4472 +vn -0.0000 -0.8944 -0.4472 +vn 0.0000 0.8944 -0.4472 +vn -0.3423 0.8263 -0.4472 +vn 0.3423 -0.8263 -0.4472 +vn -0.6325 0.6325 -0.4472 +vn 0.6325 -0.6325 -0.4472 +vn -0.8263 0.3423 -0.4472 +vn 0.8263 -0.3423 -0.4472 +vn -0.8944 0.0000 -0.4472 +vn 0.0000 -0.8000 -0.6000 +vn 0.5657 -0.5657 -0.6000 +vn 0.6621 0.6621 0.3511 +vn 0.4698 -0.4698 0.7474 +vn 0.9363 0.0000 0.3511 +vn -0.5657 0.5657 -0.6000 +vn -0.8000 0.0000 -0.6000 +vn 0.6621 -0.6621 0.3511 +vn -0.5657 -0.5657 -0.6000 +vn -0.0000 -0.9363 0.3511 +vn -0.6621 -0.6621 0.3511 +vn -0.0000 0.8000 -0.6000 +vn 0.5657 0.5657 -0.6000 +vn -0.8730 -0.3616 0.3274 +vn 0.8000 -0.0000 -0.6000 +vn 0.3616 0.8730 0.3274 +vn -0.4698 -0.4698 0.7474 +vn -0.9363 0.0000 0.3511 +vn -0.6621 0.6621 0.3511 +vn -0.3616 0.8730 0.3274 +vn 0.8730 -0.3616 0.3274 +vn -0.4698 0.4698 0.7474 +vn 0.0000 0.9363 0.3511 +vn 0.8730 0.3616 0.3274 +vn -0.3616 -0.8730 0.3274 +vn 0.4698 0.4698 0.7474 +vn 0.3616 -0.8730 0.3274 +vn -0.8730 0.3616 0.3274 +vn 0.5657 0.5657 0.6000 +vn 0.8000 0.0000 0.6000 +vn -0.5657 -0.5657 0.6000 +vn -0.0000 -0.8000 0.6000 +vn -0.5657 0.5657 0.6000 +vn -0.0000 0.8000 0.6000 +vn 0.5657 -0.5657 0.6000 +vn -0.8000 0.0000 0.6000 +vn 0.0000 0.0985 -0.9951 +vn 0.0000 -0.0985 0.9951 +vn 0.0000 -0.2298 -0.9732 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 0.2298 0.9732 +vn 0.0000 0.4472 0.8944 +s off +f 89/100/19 93/101/19 81/102/19 +f 101/103/20 103/104/20 102/105/20 +f 285/106/21 288/107/21 286/108/21 +f 99/109/22 102/110/22 97/111/22 +f 104/112/23 99/113/23 100/114/23 +f 102/110/24 98/115/24 97/111/24 +f 109/116/20 111/117/20 110/118/20 +f 105/119/24 111/120/24 106/121/24 +f 108/122/23 109/116/23 107/123/23 +f 116/124/19 128/125/19 129/126/19 +f 128/125/19 105/119/19 106/121/19 +f 116/124/19 134/127/19 124/128/19 +f 124/128/19 133/129/19 123/130/19 +f 123/130/19 127/131/19 122/132/19 +f 121/133/19 127/131/19 135/134/19 +f 117/135/25 130/136/25 118/137/25 +f 130/136/25 119/138/25 118/137/25 +f 131/139/25 120/140/25 119/138/25 +f 132/141/25 113/142/25 120/140/25 +f 126/143/25 113/142/25 125/144/25 +f 107/123/25 126/143/25 108/122/25 +f 141/145/20 143/146/20 142/147/20 +f 137/148/24 143/149/24 138/150/24 +f 140/151/23 141/145/23 139/152/23 +f 148/153/19 160/154/19 161/155/19 +f 160/154/19 137/148/19 138/150/19 +f 148/153/19 166/156/19 156/157/19 +f 156/157/19 165/158/19 155/159/19 +f 155/159/19 159/160/19 154/161/19 +f 153/162/19 159/160/19 167/163/19 +f 149/164/25 162/165/25 150/166/25 +f 162/165/25 151/167/25 150/166/25 +f 163/168/25 152/169/25 151/167/25 +f 164/170/25 145/171/25 152/169/25 +f 158/172/25 145/171/25 157/173/25 +f 139/152/25 158/172/25 140/151/25 +f 171/174/25 183/175/25 179/176/25 +f 206/177/25 204/178/25 185/179/25 +f 230/180/25 228/181/25 209/182/25 +f 233/183/25 256/184/25 254/185/25 +f 257/186/25 280/187/25 278/188/25 +f 284/189/21 100/114/21 283/190/21 +f 281/191/21 103/104/21 282/192/21 +f 285/106/21 283/190/21 100/114/21 +f 104/112/21 284/189/21 286/108/21 +f 288/193/26 290/194/26 282/195/26 +f 286/196/23 294/197/23 285/198/23 +f 290/194/21 295/199/21 289/200/21 +f 292/201/21 293/202/21 291/203/21 +f 281/204/20 295/199/20 287/205/20 +f 287/206/24 296/207/24 288/208/24 +f 283/209/24 291/203/24 284/210/24 +f 284/211/26 293/202/26 286/212/26 +f 282/213/23 289/200/23 281/214/23 +f 285/215/20 292/201/20 283/216/20 +f 319/217/19 317/218/19 315/219/19 +f 343/220/19 341/221/19 339/222/19 +f 367/223/19 365/224/19 363/225/19 +f 370/226/19 372/227/19 374/228/19 +f 418/229/19 420/230/19 422/231/19 +f 415/232/19 413/233/19 411/234/19 +f 463/235/19 461/236/19 459/237/19 +f 466/238/19 468/239/19 470/240/19 +f 490/241/19 492/242/19 494/243/19 +f 529/244/19 532/245/19 530/246/19 +f 528/247/25 525/248/25 526/249/25 +f 519/250/20 521/251/20 520/252/20 +f 524/253/20 520/252/20 521/251/20 +f 513/254/27 523/255/27 517/256/27 +f 517/256/24 524/257/24 518/258/24 +f 516/259/21 521/251/21 522/260/21 +f 515/261/22 520/262/22 513/263/22 +f 514/264/28 524/257/28 521/251/28 +f 516/259/23 519/265/23 515/261/23 +f 526/266/21 532/245/21 528/247/21 +f 527/267/22 529/268/22 525/269/22 +f 528/247/20 531/270/20 527/267/20 +f 539/271/21 544/272/21 540/273/21 +f 536/274/21 539/271/21 540/273/21 +f 535/275/22 538/276/22 533/277/22 +f 537/278/22 542/279/22 538/276/22 +f 545/280/20 547/281/20 546/282/20 +f 543/283/21 548/284/21 544/272/21 +f 542/279/22 545/285/22 546/286/22 +f 81/102/19 82/287/19 83/288/19 +f 83/288/19 84/289/19 81/102/19 +f 84/289/19 85/290/19 81/102/19 +f 85/290/19 86/291/19 89/100/19 +f 86/291/19 87/292/19 89/100/19 +f 87/292/19 88/293/19 89/100/19 +f 89/100/19 90/294/19 91/295/19 +f 91/295/19 92/296/19 89/100/19 +f 92/296/19 93/101/19 89/100/19 +f 93/101/19 94/297/19 81/102/19 +f 94/297/19 95/298/19 81/102/19 +f 95/298/19 96/299/19 81/102/19 +f 81/102/19 85/290/19 89/100/19 +f 101/103/20 104/112/20 103/104/20 +f 285/106/21 287/300/21 288/107/21 +f 99/109/22 101/301/22 102/110/22 +f 104/112/23 101/302/23 99/113/23 +f 102/110/24 103/104/24 98/115/24 +f 109/116/20 112/303/20 111/117/20 +f 105/119/24 110/118/24 111/120/24 +f 108/122/23 112/304/23 109/116/23 +f 116/124/19 115/305/19 128/125/19 +f 128/125/19 115/305/19 105/119/19 +f 116/124/19 129/126/19 134/127/19 +f 124/128/19 134/127/19 133/129/19 +f 123/130/19 133/129/19 127/131/19 +f 121/133/19 122/132/19 127/131/19 +f 117/135/25 136/306/25 130/136/25 +f 130/136/25 131/139/25 119/138/25 +f 131/139/25 132/141/25 120/140/25 +f 132/141/25 125/144/25 113/142/25 +f 126/143/25 114/307/25 113/142/25 +f 107/123/25 114/307/25 126/143/25 +f 141/145/20 144/308/20 143/146/20 +f 137/148/24 142/147/24 143/149/24 +f 140/151/23 144/309/23 141/145/23 +f 148/153/19 147/310/19 160/154/19 +f 160/154/19 147/310/19 137/148/19 +f 148/153/19 161/155/19 166/156/19 +f 156/157/19 166/156/19 165/158/19 +f 155/159/19 165/158/19 159/160/19 +f 153/162/19 154/161/19 159/160/19 +f 149/164/25 168/311/25 162/165/25 +f 162/165/25 163/168/25 151/167/25 +f 163/168/25 164/170/25 152/169/25 +f 164/170/25 157/173/25 145/171/25 +f 158/172/25 146/312/25 145/171/25 +f 139/152/25 146/312/25 158/172/25 +f 171/174/25 170/313/25 169/314/25 +f 169/314/25 184/315/25 171/174/25 +f 184/315/25 183/175/25 171/174/25 +f 183/175/25 182/316/25 181/317/25 +f 181/317/25 180/318/25 183/175/25 +f 180/318/25 179/176/25 183/175/25 +f 179/176/25 178/319/25 177/320/25 +f 177/320/25 176/321/25 179/176/25 +f 176/321/25 175/322/25 179/176/25 +f 175/322/25 174/323/25 173/324/25 +f 173/324/25 172/325/25 171/174/25 +f 175/322/25 173/324/25 179/176/25 +f 173/324/25 171/174/25 179/176/25 +f 185/179/25 202/326/25 208/327/25 +f 208/327/25 207/328/25 206/177/25 +f 206/177/25 205/329/25 204/178/25 +f 204/178/25 203/330/25 185/179/25 +f 185/179/25 208/327/25 206/177/25 +f 209/182/25 226/331/25 232/332/25 +f 232/332/25 231/333/25 230/180/25 +f 230/180/25 229/334/25 228/181/25 +f 228/181/25 227/335/25 209/182/25 +f 209/182/25 232/332/25 230/180/25 +f 233/183/25 250/336/25 256/184/25 +f 256/184/25 255/337/25 254/185/25 +f 254/185/25 253/338/25 252/339/25 +f 252/339/25 251/340/25 254/185/25 +f 251/340/25 233/183/25 254/185/25 +f 257/186/25 274/341/25 280/187/25 +f 280/187/25 279/342/25 278/188/25 +f 278/188/25 277/343/25 257/186/25 +f 277/343/25 276/344/25 257/186/25 +f 276/344/25 275/345/25 257/186/25 +f 284/189/21 104/112/21 100/114/21 +f 281/191/21 98/115/21 103/104/21 +f 100/114/21 98/115/21 287/300/21 +f 98/115/21 281/191/21 287/300/21 +f 287/300/21 285/106/21 100/114/21 +f 282/192/21 103/104/21 288/107/21 +f 103/104/21 104/112/21 286/108/21 +f 288/107/21 103/104/21 286/108/21 +f 288/193/26 296/207/26 290/194/26 +f 286/196/23 293/202/23 294/197/23 +f 290/194/21 296/207/21 295/199/21 +f 292/201/21 294/197/21 293/202/21 +f 281/204/20 289/200/20 295/199/20 +f 287/206/24 295/199/24 296/207/24 +f 283/209/24 292/201/24 291/203/24 +f 284/211/26 291/203/26 293/202/26 +f 282/213/23 290/194/23 289/200/23 +f 285/215/20 294/197/20 292/201/20 +f 315/219/19 298/346/19 297/347/19 +f 297/347/19 320/348/19 319/217/19 +f 319/217/19 318/349/19 317/218/19 +f 317/218/19 316/350/19 315/219/19 +f 315/219/19 297/347/19 319/217/19 +f 339/222/19 322/351/19 321/352/19 +f 321/352/19 344/353/19 343/220/19 +f 343/220/19 342/354/19 341/221/19 +f 341/221/19 340/355/19 339/222/19 +f 339/222/19 321/352/19 343/220/19 +f 363/225/19 346/356/19 345/357/19 +f 345/357/19 368/358/19 367/223/19 +f 367/223/19 366/359/19 365/224/19 +f 365/224/19 364/360/19 363/225/19 +f 363/225/19 345/357/19 367/223/19 +f 374/228/19 391/361/19 392/362/19 +f 392/362/19 369/363/19 370/226/19 +f 370/226/19 371/364/19 372/227/19 +f 372/227/19 373/365/19 374/228/19 +f 374/228/19 392/362/19 370/226/19 +f 422/231/19 439/366/19 440/367/19 +f 440/367/19 417/368/19 418/229/19 +f 418/229/19 419/369/19 420/230/19 +f 420/230/19 421/370/19 422/231/19 +f 422/231/19 440/367/19 418/229/19 +f 411/234/19 394/371/19 393/372/19 +f 393/372/19 416/373/19 415/232/19 +f 415/232/19 414/374/19 413/233/19 +f 413/233/19 412/375/19 411/234/19 +f 411/234/19 393/372/19 415/232/19 +f 459/237/19 442/376/19 441/377/19 +f 441/377/19 464/378/19 463/235/19 +f 463/235/19 462/379/19 461/236/19 +f 461/236/19 460/380/19 459/237/19 +f 459/237/19 441/377/19 463/235/19 +f 470/240/19 487/381/19 488/382/19 +f 488/382/19 465/383/19 466/238/19 +f 466/238/19 467/384/19 468/239/19 +f 468/239/19 469/385/19 470/240/19 +f 470/240/19 488/382/19 466/238/19 +f 494/243/19 511/386/19 512/387/19 +f 512/387/19 489/388/19 490/241/19 +f 490/241/19 491/389/19 492/242/19 +f 492/242/19 493/390/19 494/243/19 +f 494/243/19 512/387/19 490/241/19 +f 529/244/19 531/270/19 532/245/19 +f 528/247/25 527/267/25 525/248/25 +f 519/250/20 522/260/20 521/251/20 +f 524/253/20 523/391/20 520/252/20 +f 513/254/27 520/392/27 523/255/27 +f 517/256/24 523/255/24 524/257/24 +f 516/259/21 514/264/21 521/251/21 +f 515/261/22 519/265/22 520/262/22 +f 514/264/28 518/258/28 524/257/28 +f 516/259/23 522/260/23 519/265/23 +f 526/266/21 530/393/21 532/245/21 +f 527/267/22 531/270/22 529/268/22 +f 528/247/20 532/245/20 531/270/20 +f 539/271/21 543/283/21 544/272/21 +f 536/274/21 534/394/21 539/271/21 +f 535/275/22 537/278/22 538/276/22 +f 537/278/22 541/395/22 542/279/22 +f 545/280/20 548/284/20 547/281/20 +f 543/283/21 547/396/21 548/284/21 +f 542/279/22 541/395/22 545/285/22 +s 1 +f 78/397/29 63/398/30 62/399/29 +f 71/400/31 56/401/32 55/402/31 +f 79/403/30 64/404/33 63/398/30 +f 72/405/32 57/406/20 56/401/32 +f 65/407/26 50/408/34 49/409/26 +f 80/410/33 49/409/26 64/404/33 +f 73/411/20 58/412/35 57/413/20 +f 66/414/34 51/415/36 50/408/34 +f 74/416/35 59/417/37 58/412/35 +f 67/418/36 52/419/38 51/415/36 +f 75/420/37 60/421/39 59/417/37 +f 68/422/38 53/423/22 52/419/38 +f 76/424/39 61/425/21 60/421/39 +f 69/426/22 54/427/40 53/423/22 +f 77/428/21 62/399/29 61/425/21 +f 70/429/40 55/402/31 54/427/40 +f 63/398/41 94/430/42 62/399/42 +f 56/401/43 87/431/44 55/402/44 +f 64/404/45 95/432/41 63/398/41 +f 57/406/46 88/433/43 56/401/43 +f 49/409/47 82/434/48 81/435/47 +f 64/404/45 81/436/47 96/437/45 +f 58/412/49 89/438/46 57/413/46 +f 51/415/50 82/439/48 50/408/48 +f 59/417/51 90/440/49 58/412/49 +f 52/419/52 83/441/50 51/415/50 +f 59/417/51 92/442/53 91/443/51 +f 53/423/54 84/444/52 52/419/52 +f 61/425/55 92/445/53 60/421/53 +f 54/427/56 85/446/54 53/423/54 +f 62/399/42 93/447/55 61/425/55 +f 55/402/44 86/448/56 54/427/56 +f 78/397/57 181/449/58 182/450/57 +f 107/123/59 110/118/22 105/119/60 +f 115/305/36 107/123/59 105/119/60 +f 114/307/36 116/124/26 113/142/26 +f 113/142/26 124/128/30 120/140/30 +f 120/140/30 123/130/21 119/138/21 +f 119/138/21 122/132/37 118/137/37 +f 121/133/35 118/137/37 122/132/37 +f 139/152/59 142/147/22 137/148/60 +f 147/310/36 139/152/59 137/148/60 +f 146/312/36 148/153/26 145/171/26 +f 145/171/26 156/157/30 152/169/30 +f 152/169/30 155/159/21 151/167/21 +f 151/167/21 154/161/37 150/166/37 +f 153/162/35 150/166/37 154/161/37 +f 70/429/61 175/451/62 71/400/62 +f 78/397/57 183/452/63 79/403/63 +f 72/405/64 175/451/62 176/453/64 +f 79/403/63 184/454/65 80/410/65 +f 72/405/64 177/455/66 73/456/66 +f 65/407/67 170/457/68 66/414/68 +f 80/410/65 169/458/67 65/407/67 +f 73/411/66 178/459/69 74/416/69 +f 66/414/68 171/460/70 67/418/70 +f 75/420/71 178/459/69 179/461/71 +f 68/422/72 171/460/70 172/462/72 +f 75/420/71 180/463/73 76/424/73 +f 69/426/74 172/462/72 173/464/74 +f 76/424/73 181/449/58 77/428/58 +f 69/426/74 174/465/61 70/429/61 +f 194/466/75 207/467/76 196/468/76 +f 195/469/31 194/466/20 193/470/20 +f 187/471/77 199/472/78 189/473/79 +f 188/474/80 204/475/81 190/476/81 +f 189/473/79 199/477/78 191/478/82 +f 190/476/81 205/479/83 192/480/83 +f 193/470/20 196/468/37 191/478/37 +f 191/478/82 199/481/78 193/470/84 +f 194/466/75 205/479/83 206/482/75 +f 200/483/33 201/484/30 186/485/33 +f 193/470/84 199/486/78 195/469/85 +f 186/485/86 202/487/87 185/488/86 +f 195/469/85 199/489/78 197/490/88 +f 196/468/76 208/491/89 198/492/89 +f 191/478/37 198/492/21 189/473/21 +f 189/473/21 201/484/30 187/471/30 +f 198/492/89 202/487/87 201/484/87 +f 188/493/80 185/488/86 203/494/80 +f 200/483/90 199/495/78 187/471/77 +f 197/490/40 192/480/31 195/469/31 +f 218/496/81 231/497/83 220/498/83 +f 217/499/22 216/500/36 218/496/22 +f 211/501/82 223/502/91 213/503/84 +f 214/504/86 227/505/87 228/506/86 +f 213/503/84 223/507/91 215/508/85 +f 214/504/86 229/509/80 216/500/80 +f 217/499/22 220/498/31 215/508/31 +f 215/508/85 223/510/91 217/499/92 +f 218/496/81 229/509/80 230/511/81 +f 224/512/39 225/513/37 210/514/39 +f 217/499/92 223/515/91 219/516/93 +f 210/514/89 226/517/76 209/518/89 +f 219/516/93 223/519/91 221/520/94 +f 220/498/83 232/521/75 222/522/75 +f 215/508/31 222/522/20 213/503/20 +f 213/503/20 225/513/37 211/501/37 +f 222/522/75 226/517/76 225/513/76 +f 212/523/87 209/518/89 227/524/87 +f 224/512/95 223/525/91 211/501/82 +f 221/520/34 216/500/36 219/516/36 +f 244/526/80 254/527/86 255/528/80 +f 243/529/30 242/530/26 241/531/26 +f 235/532/85 247/533/96 237/534/92 +f 236/535/76 252/536/89 238/537/89 +f 237/534/92 247/538/96 239/539/93 +f 240/540/87 252/536/89 253/541/87 +f 241/531/26 244/526/36 239/539/36 +f 239/539/93 247/542/96 241/531/97 +f 240/540/87 254/527/86 242/530/86 +f 248/543/32 249/544/31 234/545/32 +f 241/531/97 247/546/96 243/529/77 +f 234/545/75 250/547/83 233/548/75 +f 243/529/77 247/549/96 245/550/98 +f 246/551/81 255/528/80 256/552/81 +f 239/539/36 246/551/22 237/534/22 +f 237/534/22 249/544/31 235/532/31 +f 246/551/81 250/547/83 249/544/83 +f 234/545/75 251/553/76 236/554/76 +f 248/543/99 247/555/96 235/532/85 +f 245/550/29 240/540/30 243/529/30 +f 266/556/89 279/557/87 268/558/87 +f 267/559/37 266/556/21 265/560/21 +f 259/561/93 271/562/100 261/563/97 +f 262/564/75 275/565/83 276/566/75 +f 261/563/97 271/567/100 263/568/77 +f 262/564/75 277/569/76 264/570/76 +f 265/560/21 268/558/30 263/568/30 +f 263/568/77 271/571/100 265/560/79 +f 266/556/89 277/569/76 278/572/89 +f 259/561/36 258/573/38 272/574/38 +f 265/560/79 271/575/100 267/559/82 +f 258/573/81 274/576/80 257/577/81 +f 267/559/82 271/578/100 269/579/101 +f 268/558/87 280/580/86 270/581/86 +f 263/568/30 270/581/26 261/563/26 +f 261/563/26 273/582/36 259/561/36 +f 270/581/86 274/576/80 273/582/80 +f 258/573/81 275/583/83 260/584/83 +f 272/574/102 271/585/100 259/561/93 +f 269/579/35 264/570/37 267/559/37 +f 302/586/103 315/587/104 304/588/104 +f 300/589/26 301/590/30 299/591/26 +f 310/592/105 317/593/106 318/594/105 +f 302/586/30 303/595/21 301/590/30 +f 314/596/107 297/597/108 300/589/108 +f 304/588/21 305/598/37 303/595/21 +f 306/599/109 317/593/106 308/600/106 +f 306/599/37 307/601/20 305/598/37 +f 314/596/107 319/602/110 320/603/107 +f 308/600/20 309/604/31 307/601/20 +f 304/588/104 316/605/109 306/599/109 +f 310/592/31 311/606/22 309/604/31 +f 312/607/110 318/594/105 319/608/110 +f 300/589/108 298/609/103 302/586/103 +f 312/610/22 313/611/36 311/612/22 +f 314/596/36 299/591/26 313/611/36 +f 326/613/103 339/614/104 328/615/104 +f 324/616/26 325/617/30 323/618/26 +f 332/619/106 342/620/105 334/621/105 +f 325/617/30 328/615/21 327/622/21 +f 324/616/108 344/623/107 321/624/108 +f 328/615/21 329/625/37 327/622/21 +f 332/619/106 340/626/109 341/627/106 +f 330/628/37 331/629/20 329/625/37 +f 338/630/107 343/631/110 344/623/107 +f 332/619/20 333/632/31 331/629/20 +f 328/615/104 340/626/109 330/628/109 +f 334/621/31 335/633/22 333/632/31 +f 336/634/110 342/620/105 343/635/110 +f 324/616/108 322/636/103 326/613/103 +f 336/637/22 337/638/36 335/639/22 +f 338/630/36 323/618/26 337/638/36 +f 350/640/103 363/641/104 352/642/104 +f 348/643/26 349/644/30 347/645/26 +f 356/646/106 366/647/105 358/648/105 +f 350/640/30 351/649/21 349/644/30 +f 362/650/107 345/651/108 348/643/108 +f 352/642/21 353/652/37 351/649/21 +f 356/646/106 364/653/109 365/654/106 +f 354/655/37 355/656/20 353/652/37 +f 362/650/107 367/657/110 368/658/107 +f 356/646/20 357/659/31 355/656/20 +f 352/642/104 364/653/109 354/655/109 +f 358/648/31 359/660/22 357/659/31 +f 360/661/110 366/647/105 367/662/110 +f 348/643/108 346/663/103 350/640/103 +f 359/664/22 362/650/36 361/665/36 +f 361/665/36 348/643/26 347/645/26 +f 376/666/36 389/667/26 390/668/26 +f 377/669/22 376/666/36 378/670/22 +f 389/667/108 391/671/103 387/672/103 +f 377/673/110 371/674/105 370/675/110 +f 379/676/31 378/677/22 380/678/31 +f 385/679/104 373/680/109 383/681/109 +f 382/682/20 379/676/31 380/678/31 +f 377/669/110 369/683/107 375/684/107 +f 383/681/37 382/682/20 384/685/37 +f 381/686/106 373/680/109 372/687/106 +f 385/679/21 384/685/37 386/688/21 +f 375/684/107 392/689/108 389/667/108 +f 387/672/30 386/688/21 388/690/30 +f 381/686/106 371/674/105 379/676/105 +f 389/667/26 388/690/30 390/668/26 +f 387/672/103 374/691/104 385/679/104 +f 398/692/103 411/693/104 400/694/104 +f 396/695/26 397/696/30 395/697/26 +f 424/698/36 437/699/26 438/700/26 +f 404/701/106 414/702/105 406/703/105 +f 398/692/30 399/704/21 397/696/30 +f 425/705/22 424/698/36 426/706/22 +f 410/707/107 393/708/108 396/695/108 +f 400/694/21 401/709/37 399/704/21 +f 437/699/108 439/710/103 435/711/103 +f 404/701/106 412/712/109 413/713/106 +f 401/709/37 404/701/20 403/714/20 +f 425/715/110 419/716/105 418/717/110 +f 408/718/110 416/719/107 410/707/107 +f 404/701/20 405/720/31 403/714/20 +f 427/721/31 426/722/22 428/723/31 +f 400/694/104 412/712/109 402/724/109 +f 406/703/31 407/725/22 405/720/31 +f 408/726/110 414/702/105 415/727/110 +f 398/692/103 393/708/108 394/728/103 +f 408/718/22 409/729/36 407/730/22 +f 433/731/104 421/732/109 431/733/109 +f 430/734/20 427/721/31 428/723/31 +f 410/707/36 395/697/26 409/729/36 +f 425/705/110 417/735/107 423/736/107 +f 431/733/37 430/734/20 432/737/37 +f 429/738/106 421/732/109 420/739/106 +f 433/731/21 432/737/37 434/740/21 +f 437/699/108 417/735/107 440/741/108 +f 435/711/30 434/740/21 436/742/30 +f 429/738/106 419/716/105 427/721/105 +f 437/699/26 436/742/30 438/700/26 +f 435/711/103 422/743/104 433/731/104 +f 446/744/103 459/745/104 448/746/104 +f 444/747/26 445/748/30 443/749/26 +f 452/750/106 462/751/105 454/752/105 +f 446/744/30 447/753/21 445/748/30 +f 444/747/108 464/754/107 441/755/108 +f 448/746/21 449/756/37 447/753/21 +f 452/750/106 460/757/109 461/758/106 +f 450/759/37 451/760/20 449/756/37 +f 456/761/110 464/754/107 458/762/107 +f 452/750/20 453/763/31 451/760/20 +f 448/746/104 460/757/109 450/759/109 +f 454/752/31 455/764/22 453/763/31 +f 456/765/110 462/751/105 463/766/110 +f 444/747/108 442/767/103 446/744/103 +f 456/761/22 457/768/36 455/769/22 +f 458/762/36 443/749/26 457/768/36 +f 471/770/36 486/771/26 472/772/36 +f 473/773/22 472/772/36 474/774/22 +f 483/775/103 488/776/108 487/777/103 +f 473/778/110 467/779/105 466/780/110 +f 475/781/31 474/782/22 476/783/31 +f 481/784/104 469/785/109 479/786/109 +f 477/787/20 476/783/31 478/788/20 +f 471/770/107 466/789/110 465/790/107 +f 479/786/37 478/788/20 480/791/37 +f 477/787/106 469/785/109 468/792/106 +f 481/784/21 480/791/37 482/793/21 +f 471/770/107 488/776/108 485/794/108 +f 483/775/30 482/793/21 484/795/30 +f 477/787/106 467/779/105 475/781/105 +f 485/794/26 484/795/30 486/771/26 +f 483/775/103 470/796/104 481/784/104 +f 495/797/36 510/798/26 496/799/36 +f 497/800/22 496/799/36 498/801/22 +f 509/802/108 511/803/103 507/804/103 +f 497/805/110 491/806/105 490/807/110 +f 499/808/31 498/809/22 500/810/31 +f 505/811/104 493/812/109 503/813/109 +f 501/814/20 500/810/31 502/815/20 +f 497/800/110 489/816/107 495/797/107 +f 503/813/37 502/815/20 504/817/37 +f 501/814/106 493/812/109 492/818/106 +f 505/811/21 504/817/37 506/819/21 +f 509/802/108 489/816/107 512/820/108 +f 507/804/30 506/819/21 508/821/30 +f 501/814/106 491/806/105 499/808/105 +f 509/802/26 508/821/30 510/798/26 +f 505/811/104 511/803/103 494/822/104 +f 536/274/23 537/823/111 535/824/23 +f 533/277/24 539/271/112 534/394/24 +f 544/272/113 545/280/114 541/825/113 +f 540/273/111 541/825/113 537/823/111 +f 538/276/112 543/283/115 539/271/112 +f 542/279/115 547/396/116 543/283/115 +f 78/397/29 79/403/30 63/398/30 +f 71/400/31 72/405/32 56/401/32 +f 79/403/30 80/410/33 64/404/33 +f 72/405/32 73/456/20 57/406/20 +f 65/407/26 66/414/34 50/408/34 +f 80/410/33 65/407/26 49/409/26 +f 73/411/20 74/416/35 58/412/35 +f 66/414/34 67/418/36 51/415/36 +f 74/416/35 75/420/37 59/417/37 +f 67/418/36 68/422/38 52/419/38 +f 75/420/37 76/424/39 60/421/39 +f 68/422/38 69/426/22 53/423/22 +f 76/424/39 77/428/21 61/425/21 +f 69/426/22 70/429/40 54/427/40 +f 77/428/21 78/397/29 62/399/29 +f 70/429/40 71/400/31 55/402/31 +f 63/398/41 95/826/41 94/430/42 +f 56/401/43 88/827/43 87/431/44 +f 64/404/45 96/828/45 95/432/41 +f 57/406/46 89/829/46 88/433/43 +f 49/409/47 50/408/48 82/434/48 +f 64/404/45 49/409/47 81/436/47 +f 58/412/49 90/830/49 89/438/46 +f 51/415/50 83/831/50 82/439/48 +f 59/417/51 91/832/51 90/440/49 +f 52/419/52 84/833/52 83/441/50 +f 59/417/51 60/421/53 92/442/53 +f 53/423/54 85/834/54 84/444/52 +f 61/425/55 93/835/55 92/445/53 +f 54/427/56 86/836/56 85/446/54 +f 62/399/42 94/837/42 93/447/55 +f 55/402/44 87/838/44 86/448/56 +f 78/397/57 77/428/58 181/449/58 +f 107/123/59 109/116/22 110/118/22 +f 115/305/36 114/307/36 107/123/59 +f 114/307/36 115/305/36 116/124/26 +f 113/142/26 116/124/26 124/128/30 +f 120/140/30 124/128/30 123/130/21 +f 119/138/21 123/130/21 122/132/37 +f 121/133/35 117/135/35 118/137/37 +f 139/152/59 141/145/22 142/147/22 +f 147/310/36 146/312/36 139/152/59 +f 146/312/36 147/310/36 148/153/26 +f 145/171/26 148/153/26 156/157/30 +f 152/169/30 156/157/30 155/159/21 +f 151/167/21 155/159/21 154/161/37 +f 153/162/35 149/164/35 150/166/37 +f 70/429/61 174/465/61 175/451/62 +f 78/397/57 182/450/57 183/452/63 +f 72/405/64 71/400/62 175/451/62 +f 79/403/63 183/452/63 184/454/65 +f 72/405/64 176/453/64 177/455/66 +f 65/407/67 169/458/67 170/457/68 +f 80/410/65 184/454/65 169/458/67 +f 73/411/66 177/839/66 178/459/69 +f 66/414/68 170/457/68 171/460/70 +f 75/420/71 74/416/69 178/459/69 +f 68/422/72 67/418/70 171/460/70 +f 75/420/71 179/461/71 180/463/73 +f 69/426/74 68/422/72 172/462/72 +f 76/424/73 180/463/73 181/449/58 +f 69/426/74 173/464/74 174/465/61 +f 194/466/75 206/482/75 207/467/76 +f 195/469/31 192/480/31 194/466/20 +f 188/474/80 203/840/80 204/475/81 +f 190/476/81 204/475/81 205/479/83 +f 193/470/20 194/466/20 196/468/37 +f 194/466/75 192/480/83 205/479/83 +f 200/483/33 187/471/30 201/484/30 +f 186/485/86 201/484/87 202/487/87 +f 196/468/76 207/467/76 208/491/89 +f 191/478/37 196/468/37 198/492/21 +f 189/473/21 198/492/21 201/484/30 +f 198/492/89 208/491/89 202/487/87 +f 188/493/80 186/485/86 185/488/86 +f 197/490/40 190/476/40 192/480/31 +f 218/496/81 230/511/81 231/497/83 +f 217/499/22 219/516/36 216/500/36 +f 214/504/86 212/841/87 227/505/87 +f 214/504/86 228/506/86 229/509/80 +f 217/499/22 218/496/22 220/498/31 +f 218/496/81 216/500/80 229/509/80 +f 224/512/39 211/501/37 225/513/37 +f 210/514/89 225/513/76 226/517/76 +f 220/498/83 231/497/83 232/521/75 +f 215/508/31 220/498/31 222/522/20 +f 213/503/20 222/522/20 225/513/37 +f 222/522/75 232/521/75 226/517/76 +f 212/523/87 210/514/89 209/518/89 +f 221/520/34 214/504/34 216/500/36 +f 244/526/80 242/530/86 254/527/86 +f 243/529/30 240/540/30 242/530/26 +f 236/535/76 251/842/76 252/536/89 +f 240/540/87 238/537/89 252/536/89 +f 241/531/26 242/530/26 244/526/36 +f 240/540/87 253/541/87 254/527/86 +f 248/543/32 235/532/31 249/544/31 +f 234/545/75 249/544/83 250/547/83 +f 246/551/81 244/526/80 255/528/80 +f 239/539/36 244/526/36 246/551/22 +f 237/534/22 246/551/22 249/544/31 +f 246/551/81 256/552/81 250/547/83 +f 234/545/75 233/548/75 251/553/76 +f 245/550/29 238/537/29 240/540/30 +f 266/556/89 278/572/89 279/557/87 +f 267/559/37 264/570/37 266/556/21 +f 262/564/75 260/843/83 275/565/83 +f 262/564/75 276/566/75 277/569/76 +f 265/560/21 266/556/21 268/558/30 +f 266/556/89 264/570/76 277/569/76 +f 259/561/36 273/582/36 258/573/38 +f 258/573/81 273/582/80 274/576/80 +f 268/558/87 279/557/87 280/580/86 +f 263/568/30 268/558/30 270/581/26 +f 261/563/26 270/581/26 273/582/36 +f 270/581/86 280/580/86 274/576/80 +f 258/573/81 257/577/81 275/583/83 +f 269/579/35 262/564/35 264/570/37 +f 302/586/103 298/609/103 315/587/104 +f 300/589/26 302/586/30 301/590/30 +f 310/592/105 308/600/106 317/593/106 +f 302/586/30 304/588/21 303/595/21 +f 314/596/107 320/603/107 297/597/108 +f 304/588/21 306/599/37 305/598/37 +f 306/599/109 316/605/109 317/593/106 +f 306/599/37 308/600/20 307/601/20 +f 314/596/107 312/610/110 319/602/110 +f 308/600/20 310/592/31 309/604/31 +f 304/588/104 315/587/104 316/605/109 +f 310/592/31 312/607/22 311/606/22 +f 312/607/110 310/592/105 318/594/105 +f 300/589/108 297/597/108 298/609/103 +f 312/610/22 314/596/36 313/611/36 +f 314/596/36 300/589/26 299/591/26 +f 326/613/103 322/636/103 339/614/104 +f 324/616/26 326/613/30 325/617/30 +f 332/619/106 341/627/106 342/620/105 +f 325/617/30 326/613/30 328/615/21 +f 324/616/108 338/630/107 344/623/107 +f 328/615/21 330/628/37 329/625/37 +f 332/619/106 330/628/109 340/626/109 +f 330/628/37 332/619/20 331/629/20 +f 338/630/107 336/637/110 343/631/110 +f 332/619/20 334/621/31 333/632/31 +f 328/615/104 339/614/104 340/626/109 +f 334/621/31 336/634/22 335/633/22 +f 336/634/110 334/621/105 342/620/105 +f 324/616/108 321/624/108 322/636/103 +f 336/637/22 338/630/36 337/638/36 +f 338/630/36 324/616/26 323/618/26 +f 350/640/103 346/663/103 363/641/104 +f 348/643/26 350/640/30 349/644/30 +f 356/646/106 365/654/106 366/647/105 +f 350/640/30 352/642/21 351/649/21 +f 362/650/107 368/658/107 345/651/108 +f 352/642/21 354/655/37 353/652/37 +f 356/646/106 354/655/109 364/653/109 +f 354/655/37 356/646/20 355/656/20 +f 362/650/107 360/844/110 367/657/110 +f 356/646/20 358/648/31 357/659/31 +f 352/642/104 363/641/104 364/653/109 +f 358/648/31 360/661/22 359/660/22 +f 360/661/110 358/648/105 366/647/105 +f 348/643/108 345/651/108 346/663/103 +f 359/664/22 360/844/22 362/650/36 +f 361/665/36 362/650/36 348/643/26 +f 376/666/36 375/684/36 389/667/26 +f 377/669/22 375/684/36 376/666/36 +f 389/667/108 392/689/108 391/671/103 +f 377/673/110 379/676/105 371/674/105 +f 379/676/31 377/673/22 378/677/22 +f 385/679/104 374/691/104 373/680/109 +f 382/682/20 381/686/20 379/676/31 +f 377/669/110 370/845/110 369/683/107 +f 383/681/37 381/686/20 382/682/20 +f 381/686/106 383/681/109 373/680/109 +f 385/679/21 383/681/37 384/685/37 +f 375/684/107 369/683/107 392/689/108 +f 387/672/30 385/679/21 386/688/21 +f 381/686/106 372/687/106 371/674/105 +f 389/667/26 387/672/30 388/690/30 +f 387/672/103 391/671/103 374/691/104 +f 398/692/103 394/728/103 411/693/104 +f 396/695/26 398/692/30 397/696/30 +f 424/698/36 423/736/36 437/699/26 +f 404/701/106 413/713/106 414/702/105 +f 398/692/30 400/694/21 399/704/21 +f 425/705/22 423/736/36 424/698/36 +f 410/707/107 416/719/107 393/708/108 +f 400/694/21 402/724/37 401/709/37 +f 437/699/108 440/741/108 439/710/103 +f 404/701/106 402/724/109 412/712/109 +f 401/709/37 402/724/37 404/701/20 +f 425/715/110 427/721/105 419/716/105 +f 408/718/110 415/846/110 416/719/107 +f 404/701/20 406/703/31 405/720/31 +f 427/721/31 425/715/22 426/722/22 +f 400/694/104 411/693/104 412/712/109 +f 406/703/31 408/726/22 407/725/22 +f 408/726/110 406/703/105 414/702/105 +f 398/692/103 396/695/108 393/708/108 +f 408/718/22 410/707/36 409/729/36 +f 433/731/104 422/743/104 421/732/109 +f 430/734/20 429/738/20 427/721/31 +f 410/707/36 396/695/26 395/697/26 +f 425/705/110 418/847/110 417/735/107 +f 431/733/37 429/738/20 430/734/20 +f 429/738/106 431/733/109 421/732/109 +f 433/731/21 431/733/37 432/737/37 +f 437/699/108 423/736/107 417/735/107 +f 435/711/30 433/731/21 434/740/21 +f 429/738/106 420/739/106 419/716/105 +f 437/699/26 435/711/30 436/742/30 +f 435/711/103 439/710/103 422/743/104 +f 446/744/103 442/767/103 459/745/104 +f 444/747/26 446/744/30 445/748/30 +f 452/750/106 461/758/106 462/751/105 +f 446/744/30 448/746/21 447/753/21 +f 444/747/108 458/762/107 464/754/107 +f 448/746/21 450/759/37 449/756/37 +f 452/750/106 450/759/109 460/757/109 +f 450/759/37 452/750/20 451/760/20 +f 456/761/110 463/848/110 464/754/107 +f 452/750/20 454/752/31 453/763/31 +f 448/746/104 459/745/104 460/757/109 +f 454/752/31 456/765/22 455/764/22 +f 456/765/110 454/752/105 462/751/105 +f 444/747/108 441/755/108 442/767/103 +f 456/761/22 458/762/36 457/768/36 +f 458/762/36 444/747/26 443/749/26 +f 471/770/36 485/794/26 486/771/26 +f 473/773/22 471/770/36 472/772/36 +f 483/775/103 485/794/108 488/776/108 +f 473/778/110 475/781/105 467/779/105 +f 475/781/31 473/778/22 474/782/22 +f 481/784/104 470/796/104 469/785/109 +f 477/787/20 475/781/31 476/783/31 +f 471/770/107 473/773/110 466/789/110 +f 479/786/37 477/787/20 478/788/20 +f 477/787/106 479/786/109 469/785/109 +f 481/784/21 479/786/37 480/791/37 +f 471/770/107 465/790/107 488/776/108 +f 483/775/30 481/784/21 482/793/21 +f 477/787/106 468/792/106 467/779/105 +f 485/794/26 483/775/30 484/795/30 +f 483/775/103 487/777/103 470/796/104 +f 495/797/36 509/802/26 510/798/26 +f 497/800/22 495/797/36 496/799/36 +f 509/802/108 512/820/108 511/803/103 +f 497/805/110 499/808/105 491/806/105 +f 499/808/31 497/805/22 498/809/22 +f 505/811/104 494/822/104 493/812/109 +f 501/814/20 499/808/31 500/810/31 +f 497/800/110 490/849/110 489/816/107 +f 503/813/37 501/814/20 502/815/20 +f 501/814/106 503/813/109 493/812/109 +f 505/811/21 503/813/37 504/817/37 +f 509/802/108 495/797/107 489/816/107 +f 507/804/30 505/811/21 506/819/21 +f 501/814/106 492/818/106 491/806/105 +f 509/802/26 507/804/30 508/821/30 +f 505/811/104 507/804/103 511/803/103 +f 536/274/23 540/273/111 537/823/111 +f 533/277/24 538/276/112 539/271/112 +f 544/272/113 548/284/114 545/280/114 +f 540/273/111 544/272/113 541/825/113 +f 538/276/112 542/279/115 543/283/115 +f 542/279/115 546/286/116 547/396/116 diff --git a/src/main/resources/assets/hbm/models/weapons/coilgun.obj b/src/main/resources/assets/hbm/models/weapons/coilgun.obj new file mode 100644 index 000000000..849fa2f23 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/coilgun.obj @@ -0,0 +1,8489 @@ +# Blender v2.79 (sub 0) OBJ File: 'coilgun.blend' +# www.blender.org +o Coils_Cylinder.012 +v -0.463562 0.524760 -0.428106 +v -0.237813 0.524760 -0.428106 +v -0.237813 0.222044 -0.302716 +v -0.463562 0.222044 -0.302716 +v -0.237813 0.096655 0.000000 +v -0.463562 0.096655 0.000000 +v -0.237813 0.222044 0.302716 +v -0.463562 0.222044 0.302716 +v -0.237813 0.524760 0.428106 +v -0.463562 0.524760 0.428106 +v -0.237813 0.827477 0.302716 +v -0.463562 0.827477 0.302716 +v -0.237813 0.952866 0.000000 +v -0.463562 0.952866 0.000000 +v -0.237813 0.827477 -0.302716 +v -0.463562 0.827477 -0.302716 +v -0.170088 0.524760 -0.428106 +v 0.055660 0.524760 -0.428106 +v 0.055660 0.222044 -0.302716 +v -0.170088 0.222044 -0.302716 +v 0.055660 0.096655 0.000000 +v -0.170088 0.096655 0.000000 +v 0.055660 0.222044 0.302716 +v -0.170088 0.222044 0.302716 +v 0.055660 0.524760 0.428106 +v -0.170088 0.524760 0.428106 +v 0.055660 0.827477 0.302716 +v -0.170088 0.827477 0.302716 +v 0.055660 0.952866 0.000000 +v -0.170088 0.952866 0.000000 +v 0.055660 0.827477 -0.302716 +v -0.170088 0.827477 -0.302716 +v 0.123385 0.524760 -0.428106 +v 0.349134 0.524760 -0.428106 +v 0.349134 0.222044 -0.302716 +v 0.123385 0.222044 -0.302716 +v 0.349134 0.096655 0.000000 +v 0.123385 0.096655 0.000000 +v 0.349134 0.222044 0.302716 +v 0.123385 0.222044 0.302716 +v 0.349134 0.524760 0.428106 +v 0.123385 0.524760 0.428106 +v 0.349134 0.827477 0.302716 +v 0.123385 0.827477 0.302716 +v 0.349134 0.952866 0.000000 +v 0.123385 0.952866 0.000000 +v 0.349134 0.827477 -0.302716 +v 0.123385 0.827477 -0.302716 +v 0.416858 0.524760 -0.428106 +v 0.642607 0.524760 -0.428106 +v 0.642607 0.222044 -0.302716 +v 0.416858 0.222044 -0.302716 +v 0.642607 0.096655 0.000000 +v 0.416858 0.096655 0.000000 +v 0.642607 0.222044 0.302716 +v 0.416858 0.222044 0.302716 +v 0.642607 0.524760 0.428106 +v 0.416858 0.524760 0.428106 +v 0.642607 0.827477 0.302716 +v 0.416858 0.827477 0.302716 +v 0.642607 0.952866 0.000000 +v 0.416858 0.952866 0.000000 +v 0.642607 0.827477 -0.302716 +v 0.416858 0.827477 -0.302716 +v 0.710331 0.524760 -0.428106 +v 0.936080 0.524760 -0.428106 +v 0.936080 0.222044 -0.302716 +v 0.710331 0.222044 -0.302716 +v 0.936080 0.096655 0.000000 +v 0.710331 0.096655 0.000000 +v 0.936080 0.222044 0.302716 +v 0.710331 0.222044 0.302716 +v 0.936080 0.524760 0.428106 +v 0.710331 0.524760 0.428106 +v 0.936080 0.827477 0.302716 +v 0.710331 0.827477 0.302716 +v 0.936080 0.952866 0.000000 +v 0.710331 0.952866 0.000000 +v 0.936080 0.827477 -0.302716 +v 0.710331 0.827477 -0.302716 +v -1.457017 0.997796 0.139627 +v -1.457017 1.110929 0.189700 +v -1.405270 1.098405 0.216824 +v -1.405270 0.985272 0.166751 +v -1.405270 1.073357 0.271072 +v -1.405270 0.960224 0.220999 +v -1.457017 1.060833 0.298196 +v -1.457017 0.947700 0.248123 +v -1.508763 1.073357 0.271072 +v -1.508763 0.960224 0.220999 +v -1.508763 1.098405 0.216824 +v -1.508763 0.985272 0.166751 +v -1.322476 0.997796 0.139627 +v -1.322476 1.110929 0.189700 +v -1.270730 1.098405 0.216824 +v -1.270730 0.985272 0.166751 +v -1.270730 1.073357 0.271072 +v -1.270730 0.960224 0.220999 +v -1.322476 1.060833 0.298196 +v -1.322476 0.947700 0.248123 +v -1.374223 1.073357 0.271072 +v -1.374223 0.960224 0.220999 +v -1.374223 1.098405 0.216824 +v -1.374223 0.985272 0.166751 +v -1.187935 0.997796 0.139627 +v -1.187935 1.110929 0.189700 +v -1.136189 1.098405 0.216824 +v -1.136189 0.985272 0.166751 +v -1.136189 1.073357 0.271072 +v -1.136189 0.960224 0.220999 +v -1.187935 1.060833 0.298196 +v -1.187935 0.947700 0.248123 +v -1.239682 1.073357 0.271072 +v -1.239682 0.960224 0.220999 +v -1.239682 1.098405 0.216824 +v -1.239682 0.985272 0.166751 +v -1.551588 0.824089 0.270719 +v -1.551588 0.906574 0.321562 +v -1.551588 1.018668 0.066710 +v -1.551588 0.936183 0.015867 +v -1.097206 1.018668 0.066710 +v -1.097206 0.936183 0.015867 +v -1.097206 0.906574 0.321562 +v -1.097206 0.824089 0.270719 +v -1.521210 0.950031 0.320343 +v -1.521210 1.047137 0.099566 +v -1.127583 1.047137 0.099566 +v -1.127583 0.950031 0.320343 +v -1.457017 0.997796 -0.139627 +v -1.405271 0.985272 -0.166751 +v -1.405271 1.098405 -0.216824 +v -1.457017 1.110929 -0.189700 +v -1.405271 0.960224 -0.220999 +v -1.405271 1.073357 -0.271072 +v -1.457017 0.947700 -0.248123 +v -1.457017 1.060833 -0.298196 +v -1.508764 0.960224 -0.220999 +v -1.508764 1.073357 -0.271072 +v -1.508764 1.098405 -0.216824 +v -1.508764 0.985272 -0.166751 +v -1.322476 0.997796 -0.139627 +v -1.270730 0.985272 -0.166751 +v -1.270730 1.098405 -0.216824 +v -1.322476 1.110929 -0.189700 +v -1.270730 0.960224 -0.220999 +v -1.270730 1.073357 -0.271072 +v -1.322476 0.947700 -0.248123 +v -1.322476 1.060833 -0.298196 +v -1.374223 0.960224 -0.220999 +v -1.374223 1.073357 -0.271072 +v -1.374223 1.098405 -0.216824 +v -1.374223 0.985272 -0.166751 +v -1.187936 0.997796 -0.139627 +v -1.136189 0.985272 -0.166751 +v -1.136189 1.098405 -0.216824 +v -1.187936 1.110929 -0.189700 +v -1.136189 0.960224 -0.220999 +v -1.136189 1.073357 -0.271072 +v -1.187936 0.947700 -0.248123 +v -1.187936 1.060833 -0.298196 +v -1.239682 0.960224 -0.220999 +v -1.239682 1.073357 -0.271072 +v -1.239682 1.098405 -0.216824 +v -1.239682 0.985272 -0.166751 +v -1.551588 0.824089 -0.270719 +v -1.551588 0.936183 -0.015867 +v -1.551588 1.018668 -0.066710 +v -1.551588 0.906574 -0.321562 +v -1.097206 0.936183 -0.015867 +v -1.097206 1.018668 -0.066710 +v -1.097206 0.824089 -0.270719 +v -1.097206 0.906574 -0.321562 +v -1.521211 1.047137 -0.099566 +v -1.521211 0.950031 -0.320343 +v -1.127584 1.047137 -0.099566 +v -1.127584 0.950031 -0.320343 +v -1.552216 0.766425 0.449060 +v -1.552216 0.766425 0.324053 +v -1.613245 0.699098 0.324053 +v -1.613245 0.699098 0.449060 +v -1.552216 0.456014 0.324053 +v -1.048308 0.766425 0.449060 +v -1.048308 0.766425 0.324053 +v -1.552216 0.456014 0.449060 +v -1.048308 0.456014 0.324053 +v -1.041527 0.788142 0.315308 +v -1.041527 0.434297 0.315308 +v -1.048308 0.456014 0.449060 +v -1.041527 0.788142 0.457806 +v -1.041527 0.434297 0.457806 +v -0.900483 0.434297 0.457806 +v -0.900483 0.788142 0.457806 +v -0.900483 0.788142 0.315308 +v -0.896414 0.768510 0.449899 +v -0.896414 0.768510 0.323214 +v -0.900483 0.434297 0.315308 +v -0.896414 0.453929 0.449899 +v -0.817755 0.457256 0.449106 +v -0.817755 0.767895 0.449106 +v -0.896414 0.453929 0.323214 +v -0.817755 0.457256 0.324007 +v -0.817755 0.767895 0.324007 +v -1.613245 0.523341 0.449060 +v -1.613245 0.523341 0.324053 +v -1.552216 0.766425 -0.449060 +v -1.613245 0.699098 -0.449060 +v -1.613245 0.699098 -0.324053 +v -1.552216 0.766425 -0.324053 +v -1.552216 0.456014 -0.324053 +v -1.048308 0.766425 -0.324053 +v -1.048308 0.766425 -0.449060 +v -1.552216 0.456014 -0.449060 +v -1.048308 0.456014 -0.324053 +v -1.041528 0.434297 -0.315308 +v -1.041528 0.788142 -0.315308 +v -1.048308 0.456014 -0.449060 +v -1.041528 0.788142 -0.457806 +v -0.900483 0.788142 -0.457806 +v -0.900483 0.434297 -0.457806 +v -1.041528 0.434297 -0.457806 +v -0.900483 0.788142 -0.315308 +v -0.896414 0.768510 -0.323214 +v -0.896414 0.768510 -0.449899 +v -0.900483 0.434297 -0.315308 +v -0.817755 0.767895 -0.449106 +v -0.817755 0.457256 -0.449106 +v -0.896414 0.453929 -0.449899 +v -0.896414 0.453929 -0.323214 +v -0.817755 0.457256 -0.324007 +v -0.817755 0.767895 -0.324007 +v -1.613245 0.523341 -0.449060 +v -1.613245 0.523341 -0.324053 +v -2.170566 0.644712 -0.108739 +v -2.102717 0.644712 -0.108739 +v -2.102717 0.567822 -0.076890 +v -2.170566 0.567822 -0.076890 +v -2.102717 0.535974 0.000000 +v -2.170566 0.535974 0.000000 +v -2.102717 0.567822 0.076890 +v -2.170566 0.567822 0.076890 +v -2.102717 0.644712 0.108739 +v -2.170566 0.644712 0.108739 +v -2.102717 0.721602 0.076890 +v -2.170566 0.721602 0.076890 +v -2.102717 0.753451 0.000000 +v -2.170566 0.753451 0.000000 +v -2.102717 0.721602 -0.076890 +v -2.170566 0.721602 -0.076890 +v -2.209619 0.644712 0.088337 +v -2.209619 0.582248 0.062464 +v -2.209619 0.644712 -0.088337 +v -2.209619 0.582248 -0.062464 +v -2.209619 0.556375 0.000000 +v -2.209619 0.707176 0.062464 +v -2.209619 0.733049 0.000000 +v -2.209619 0.707176 -0.062464 +v -0.166791 0.038391 -0.117032 +v -0.166791 0.038391 0.117032 +v -0.118438 0.018363 0.117032 +v -0.118438 0.018363 -0.117032 +v -0.098409 -0.029991 0.117032 +v -0.098409 -0.029991 -0.117032 +v -0.118438 -0.078344 0.117032 +v -0.118438 -0.078344 -0.117032 +v -0.166791 -0.098373 0.117032 +v -0.166791 -0.098373 -0.117032 +v -0.215145 -0.078344 0.117032 +v -0.215145 -0.078344 -0.117032 +v -0.235173 -0.029991 0.117032 +v -0.235173 -0.029991 -0.117032 +v -0.215145 0.018363 0.117032 +v -0.215145 0.018363 -0.117032 +v -0.033837 0.094104 -0.072767 +v -0.033837 -0.016338 -0.072767 +v -0.115306 -0.142061 -0.072767 +v -0.115306 0.094104 -0.072767 +v 0.797049 0.094104 -0.072767 +v 0.797049 -0.016338 -0.072767 +v 0.796577 -0.079782 0.048582 +v 0.796577 -0.079782 -0.048582 +v 0.886076 -0.258069 -0.048582 +v 0.886076 -0.258069 0.048582 +v 0.797049 -0.016338 0.072767 +v 0.797049 0.094104 0.072767 +v -0.033837 0.094104 0.072767 +v -0.033837 -0.016338 0.072767 +v -0.026079 -0.079782 -0.048582 +v -0.115306 0.094104 0.072767 +v -0.272459 0.094104 -0.072767 +v -0.272459 0.094104 0.072767 +v -0.115306 -0.142061 0.072767 +v -0.272459 -0.098487 0.072767 +v -0.264701 -0.161930 0.048582 +v -0.107548 -0.205505 0.048582 +v -0.272459 -0.098487 -0.072767 +v -0.026079 -0.079782 0.048582 +v -0.107548 -0.205505 -0.048582 +v -0.264701 -0.161930 -0.048582 +v 0.886547 -0.194626 0.072767 +v 0.888072 -0.069961 0.072767 +v 0.917361 0.000750 0.072767 +v 0.988072 0.030039 0.072767 +v 1.058783 0.000750 0.072767 +v 1.088072 -0.069961 0.072767 +v 1.088250 -0.195375 0.072767 +v 0.886547 -0.194626 -0.072767 +v 1.088250 -0.195375 -0.072767 +v 1.087778 -0.258818 -0.048582 +v 1.087778 -0.258818 0.048582 +v 1.152616 -0.153109 -0.048582 +v 1.152616 -0.153109 0.048582 +v 1.153087 -0.089666 0.072767 +v 0.888072 -0.069961 -0.072767 +v 0.917362 -0.140671 -0.072767 +v 0.988072 -0.169961 -0.072767 +v 1.058783 -0.140671 -0.072767 +v 1.088072 -0.069961 -0.072767 +v 1.153087 -0.089666 -0.072767 +v 1.153087 0.092782 -0.072767 +v 1.153087 0.092782 0.072767 +v 0.917361 0.000750 -0.072767 +v 1.058783 0.000750 -0.072767 +v 1.058783 -0.140671 0.072767 +v 0.988072 -0.169961 0.072767 +v 0.917362 -0.140671 0.072767 +v 0.988072 0.030039 -0.072767 +v -1.185225 0.299229 -0.228225 +v -1.185225 0.078919 -0.228225 +v -1.579320 0.146982 -0.228225 +v -1.579320 0.299229 -0.228225 +v -0.726389 0.070637 -0.201417 +v -0.726389 0.299229 -0.201417 +v -0.726389 0.299229 0.201417 +v -0.726389 0.070637 0.201417 +v -0.770558 0.343398 -0.201417 +v -1.096886 0.343398 -0.201417 +v -1.096886 0.343398 0.201417 +v -0.770558 0.343398 0.201417 +v -1.185225 0.078919 0.228225 +v -1.185225 0.299229 0.228225 +v -1.579320 0.299229 0.228225 +v -1.579320 0.146982 0.228225 +v -1.185225 0.343398 0.201417 +v -1.185225 0.343398 -0.201417 +v -1.579320 0.343398 -0.201417 +v -1.579320 0.343398 0.201417 +v -1.096886 0.026467 -0.201417 +v -0.770558 0.026467 -0.201417 +v -0.770558 0.026467 0.201417 +v -1.096886 0.026467 0.201417 +v -1.096886 0.070637 -0.228225 +v -1.096886 0.299229 -0.228225 +v -0.770558 0.299229 -0.228225 +v -0.770558 0.070637 -0.228225 +v -0.770558 0.070637 0.228225 +v -0.770558 0.299229 0.228225 +v -1.096886 0.299229 0.228225 +v -1.096886 0.070637 0.228225 +v -1.690351 0.200246 0.201417 +v -1.690351 0.287913 0.201417 +v -1.690351 0.287913 -0.201417 +v -1.690351 0.200246 -0.201417 +v -1.184581 0.033984 0.201417 +v -1.184581 0.033984 -0.201417 +v -1.659805 0.134929 0.201417 +v -1.579964 0.102270 0.201417 +v -1.667659 0.194088 0.228225 +v -1.667659 0.291126 0.228225 +v -1.646801 0.339453 0.201417 +v -1.659805 0.134929 -0.201417 +v -1.667659 0.194088 -0.228225 +v -1.579964 0.102270 -0.201417 +v -1.667040 0.336028 -0.201417 +v -1.667659 0.291126 -0.228225 +v -0.991593 0.009137 0.090896 +v -0.991593 0.050129 0.090896 +v -0.991593 0.050129 -0.090896 +v -0.991593 0.009137 -0.090896 +v -0.359255 0.050129 -0.090896 +v -0.359255 0.009137 -0.090896 +v -0.359255 0.050129 0.090896 +v -0.359255 0.009137 0.090896 +v -0.952793 -0.032302 0.079741 +v -0.475801 -0.032302 0.079741 +v -0.398056 -0.032302 0.079741 +v -0.952793 -0.032302 -0.079741 +v -0.477062 -0.032302 -0.079741 +v -0.398056 -0.032302 -0.079741 +v -0.547697 -0.243266 -0.079741 +v -0.468691 -0.243266 -0.079741 +v -0.417833 -0.308250 -0.079741 +v -0.496840 -0.308250 -0.079741 +v -0.468691 -0.243266 0.079741 +v -0.546437 -0.243266 0.079741 +v -0.495579 -0.308250 0.079741 +v -0.884730 -0.317360 -0.073714 +v -0.883469 -0.317360 0.085769 +v -0.417833 -0.308250 0.079741 +v -0.548320 -0.390292 0.079741 +v -0.549581 -0.390292 -0.079741 +v -0.470574 -0.390292 -0.079741 +v -0.470574 -0.390292 0.079741 +v -0.933383 -0.398929 -0.073714 +v -0.932122 -0.398929 0.085769 +v -1.071287 -0.315922 0.087949 +v -1.072548 -0.315922 -0.071533 +v -1.022634 -0.234353 0.087949 +v -1.023895 -0.234353 -0.071533 +v -0.906556 -0.031746 0.035327 +v -0.906556 -0.031746 -0.035327 +v -0.750972 -0.031746 -0.035327 +v -0.750972 -0.031746 0.035327 +v -0.891840 -0.172320 -0.035327 +v -0.891840 -0.172320 0.035327 +v -0.858049 -0.254618 0.035327 +v -0.773318 -0.237178 0.035327 +v -0.781494 -0.172320 0.035327 +v -0.781494 -0.172320 -0.035327 +v -0.752234 -0.268743 0.035327 +v -0.752234 -0.268743 -0.035327 +v -0.773318 -0.237178 -0.035327 +v -0.858049 -0.254618 -0.035327 +v -0.786277 -0.298175 0.035327 +v -0.786277 -0.298175 -0.035327 +v -0.654718 0.939467 0.338343 +v -0.745955 0.781575 0.338343 +v -0.745839 1.097427 0.338343 +v -0.757348 1.077508 0.380293 +v -0.677723 0.939476 0.380293 +v -1.019432 0.939601 0.338343 +v -0.928196 1.097493 0.338343 +v -0.928312 0.781642 0.338343 +v -0.916701 1.077567 0.380293 +v -0.996428 0.939592 0.380293 +v -0.949024 0.939575 0.380293 +v -0.893014 1.036505 0.380293 +v -0.916802 0.801560 0.380293 +v -0.757450 0.801501 0.380293 +v -0.781065 1.036464 0.380293 +v -0.884357 1.021497 0.419074 +v -0.789734 1.021463 0.419074 +v -0.781137 0.842563 0.380293 +v -0.893085 0.842604 0.380293 +v -0.725127 0.939493 0.380293 +v -0.931698 0.939569 0.419074 +v -0.877029 0.939549 0.419074 +v -0.857040 0.974142 0.419074 +v -0.884417 0.857606 0.419074 +v -0.742452 0.939499 0.419074 +v -0.789794 0.857571 0.419074 +v -0.817086 0.974128 0.419074 +v -0.857040 0.974142 0.317496 +v -0.817086 0.974128 0.317496 +v -0.817111 0.904926 0.419074 +v -0.857065 0.904940 0.419074 +v -0.797122 0.939519 0.419074 +v -0.797122 0.939519 0.317496 +v -0.877029 0.939549 0.317496 +v -0.857065 0.904940 0.317496 +v -0.817111 0.904926 0.317496 +v -0.745955 0.781575 -0.338343 +v -0.654718 0.939467 -0.338343 +v -0.677723 0.939476 -0.380293 +v -0.757348 1.077508 -0.380293 +v -0.745839 1.097427 -0.338343 +v -0.928196 1.097493 -0.338343 +v -1.019432 0.939601 -0.338343 +v -0.928312 0.781642 -0.338343 +v -0.916701 1.077567 -0.380293 +v -0.893014 1.036505 -0.380293 +v -0.949024 0.939575 -0.380293 +v -0.996428 0.939593 -0.380293 +v -0.916802 0.801560 -0.380293 +v -0.757450 0.801502 -0.380293 +v -0.781065 1.036464 -0.380293 +v -0.789734 1.021463 -0.419074 +v -0.884357 1.021497 -0.419074 +v -0.893085 0.842604 -0.380293 +v -0.781137 0.842563 -0.380293 +v -0.725127 0.939493 -0.380293 +v -0.857040 0.974142 -0.419074 +v -0.877029 0.939549 -0.419074 +v -0.931698 0.939569 -0.419074 +v -0.884417 0.857606 -0.419074 +v -0.789794 0.857571 -0.419074 +v -0.742452 0.939499 -0.419074 +v -0.817086 0.974128 -0.419074 +v -0.817086 0.974128 -0.317496 +v -0.857040 0.974142 -0.317496 +v -0.857065 0.904940 -0.419074 +v -0.817111 0.904926 -0.419074 +v -0.797122 0.939519 -0.419074 +v -0.797122 0.939519 -0.317496 +v -0.817111 0.904926 -0.317496 +v -0.857065 0.904940 -0.317496 +v -0.877029 0.939549 -0.317496 +v 0.990151 -0.648179 -0.190841 +v 0.990151 -0.321606 -0.374799 +v 1.068843 -0.322088 -0.329369 +v 1.068843 -0.609076 -0.167709 +v 1.068843 -0.323051 -0.238509 +v 1.068843 -0.530870 -0.121444 +v 0.990151 -0.323533 -0.193078 +v 0.990151 -0.491768 -0.098312 +v 0.911459 -0.323051 -0.238509 +v 0.911459 -0.530870 -0.121444 +v 0.911459 -0.322088 -0.329369 +v 0.911459 -0.609076 -0.167709 +v 0.990151 0.000993 -0.183958 +v 1.068843 -0.038592 -0.161660 +v 1.068843 -0.117761 -0.117064 +v 0.990151 -0.157346 -0.094766 +v 0.911459 -0.117761 -0.117064 +v 0.911459 -0.038592 -0.161660 +v 0.990151 -0.002981 0.190841 +v 1.068843 -0.042084 0.167709 +v 1.068843 -0.120290 0.121444 +v 0.990151 -0.159393 0.098312 +v 0.911459 -0.120290 0.121444 +v 0.911459 -0.042084 0.167709 +v 0.990151 -0.329554 0.374799 +v 1.068843 -0.329073 0.329369 +v 1.068843 -0.328109 0.238509 +v 0.990151 -0.327627 0.193079 +v 0.911459 -0.328109 0.238509 +v 0.911459 -0.329073 0.329369 +v 0.990151 -0.652153 0.183958 +v 1.068843 -0.612568 0.161660 +v 1.068843 -0.533399 0.117064 +v 0.990151 -0.493815 0.094766 +v 0.911459 -0.533399 0.117064 +v 0.911459 -0.612568 0.161660 +v -0.972691 1.166717 0.278124 +v -0.972691 1.166717 -0.278124 +v -0.987438 1.166717 -0.260322 +v -0.987438 1.166717 0.260322 +v -0.934937 1.102284 0.278124 +v -0.934937 1.102284 -0.278124 +v -0.971860 1.037372 0.278124 +v -0.971860 1.037372 -0.278124 +v -1.046537 1.036892 0.278124 +v -1.046537 1.036892 -0.278124 +v -1.047369 1.166237 0.278124 +v -1.084291 1.101324 0.278124 +v -1.084291 1.101324 -0.278124 +v -1.047368 1.166237 -0.278124 +v -1.032621 1.166237 -0.260322 +v -1.032621 1.166237 0.260322 +v -1.033084 1.202181 0.260322 +v -1.033084 1.202181 -0.260322 +v -0.987902 1.202661 0.260322 +v -0.987902 1.202661 -0.260322 +v -1.464091 -0.996279 -0.140051 +v -1.457375 -0.967729 -0.140051 +v -1.339310 -0.995504 -0.070026 +v -1.346026 -1.024054 -0.070026 +v -1.339310 -0.995504 0.070026 +v -1.346026 -1.024054 0.070026 +v -1.457375 -0.967729 0.140051 +v -1.464091 -0.996279 0.140051 +v -1.575440 -0.939954 0.070026 +v -1.582156 -0.968503 0.070026 +v -1.343945 -0.917630 -0.057125 +v -1.343945 -0.917630 0.057125 +v -1.575440 -0.939954 -0.070026 +v -1.582156 -0.968503 -0.070026 +v -1.482215 -1.073316 0.113549 +v -1.386492 -1.095835 0.056774 +v -1.440258 -0.894971 -0.114249 +v -1.536572 -0.872313 -0.057125 +v -1.536572 -0.872313 0.057125 +v -1.440258 -0.894971 0.114249 +v -1.577937 -1.050797 0.056774 +v -1.577937 -1.050797 -0.056774 +v -1.539716 -1.059789 -0.034105 +v -1.539716 -1.059789 0.034105 +v -1.482215 -1.073316 -0.113549 +v -1.386492 -1.095835 -0.056774 +v -1.482215 -1.073316 -0.068210 +v -1.487302 -1.094942 -0.059778 +v -1.537696 -1.083087 -0.029889 +v -1.482215 -1.073316 0.068210 +v -1.424713 -1.086844 0.034105 +v -1.424713 -1.086844 -0.034105 +v -1.436908 -1.106798 -0.029889 +v -1.436908 -1.106798 0.029889 +v -1.487302 -1.094942 0.059778 +v -1.537696 -1.083087 0.029889 +v -1.508359 -0.214874 0.108693 +v -1.504838 -0.215309 -0.106817 +v -1.564296 -0.274102 -0.089219 +v -1.567402 -0.273718 0.089973 +v -1.348484 -0.928894 -0.174279 +v -1.331423 -0.813343 -0.174279 +v -1.263873 -0.855085 -0.182453 +v -1.262042 -0.949106 -0.182453 +v -1.263873 -0.855085 0.182453 +v -1.207149 -0.865197 0.174081 +v -1.207149 -0.865197 -0.174081 +v -1.570189 -0.877055 0.143835 +v -1.435938 -0.379825 0.163084 +v -1.622805 -0.828855 0.096503 +v -1.262042 -0.949106 0.182453 +v -1.348484 -0.928894 0.174279 +v -1.435938 -0.379825 -0.163084 +v -1.112852 -0.829663 0.130793 +v -1.112852 -0.829663 -0.130793 +v -1.205319 -0.959218 -0.174081 +v -1.205319 -0.959218 0.174081 +v -1.111021 -0.923684 0.130793 +v -1.072210 -0.848373 0.087270 +v -1.073111 -0.802094 0.087270 +v -1.111021 -0.923684 -0.130793 +v -1.072210 -0.848373 -0.087270 +v -1.073111 -0.802094 -0.087270 +v -1.681696 -0.766817 -0.072169 +v -1.689936 -0.702839 -0.059605 +v -1.640119 -0.414721 -0.072179 +v -1.619700 -0.829239 -0.095954 +v -1.684682 -0.766448 0.071709 +v -1.643105 -0.414353 0.071698 +v -1.666879 -0.498637 -0.059615 +v -1.669865 -0.498268 0.058900 +v -1.692922 -0.702470 0.058910 +v -1.690559 -0.607421 0.054481 +v -1.687573 -0.607789 -0.055307 +v -1.331423 -0.813343 0.174279 +v -1.416650 -0.767127 -0.178303 +v -1.416650 -0.767127 0.178303 +v -1.469005 -0.685482 -0.171908 +v -1.469005 -0.685482 0.171908 +v -1.542909 -0.883434 -0.161182 +v -1.516768 -0.889546 -0.174389 +v -1.516768 -0.889546 0.174389 +v -1.542909 -0.883434 0.161182 +v -1.432626 -0.909220 -0.178303 +v -1.432626 -0.909220 0.178303 +v -1.484962 -0.656299 -0.158888 +v -1.570189 -0.877055 -0.143835 +v -1.484962 -0.656299 0.158888 +v -1.325666 -0.019640 0.170554 +v -1.325666 0.137146 0.170554 +v -1.472478 0.148884 0.071087 +v -1.472478 -0.007902 0.071087 +v -1.325666 -0.019640 -0.170554 +v -1.325666 0.137146 -0.170554 +v -1.062875 0.137146 -0.170554 +v -1.062875 -0.019640 -0.170554 +v -1.130714 -0.142396 -0.170554 +v -0.914155 -0.020276 -0.107189 +v -0.981994 -0.143031 -0.107189 +v -1.062875 -0.019640 0.170554 +v -1.062875 0.137146 0.170554 +v -0.914155 0.136510 -0.107189 +v -1.259746 -0.728734 -0.170554 +v -1.147611 -0.221161 -0.170554 +v -0.998891 -0.221796 -0.107189 +v -1.111026 -0.729370 -0.107189 +v -1.346664 -0.179545 0.170554 +v -1.130714 -0.142396 0.170554 +v -1.346664 -0.179545 -0.170554 +v -1.447785 -0.735647 0.170554 +v -1.363562 -0.258310 0.170554 +v -1.510373 -0.246572 0.071087 +v -1.594597 -0.723909 0.071087 +v -0.981994 -0.143031 0.107189 +v -0.914155 -0.020276 0.107189 +v -1.363562 -0.258310 -0.170554 +v -1.447785 -0.735647 -0.170554 +v -1.594597 -0.723909 -0.071087 +v -1.510373 -0.246572 -0.071087 +v -1.147611 -0.221161 0.170554 +v -1.259746 -0.728734 0.170554 +v -1.483874 -0.874924 0.170554 +v -1.219691 -0.868011 0.170554 +v -1.493475 -0.167807 0.071087 +v -1.219691 -0.868011 -0.170554 +v -0.914155 0.136510 0.107189 +v -1.472478 -0.007902 -0.071087 +v -1.472478 0.148884 -0.071087 +v -1.493475 -0.167807 -0.071087 +v -1.630686 -0.740134 -0.071087 +v -1.630686 -0.740134 0.071087 +v -0.998891 -0.221796 0.107189 +v -1.111026 -0.729370 0.107189 +v -1.100054 -0.868647 0.107189 +v -1.100054 -0.868647 -0.107189 +v -1.483874 -0.874924 -0.170554 +v -1.114931 0.645018 -0.394257 +v -0.705608 0.645018 -0.392564 +v -0.705608 0.367434 -0.277584 +v -1.115595 0.367434 -0.277584 +v -0.705608 0.252454 0.000000 +v -1.115595 0.252454 0.000000 +v -0.705608 0.367434 0.277584 +v -1.115595 0.367434 0.277584 +v -0.705608 0.645018 0.392564 +v -1.115595 0.645018 0.392564 +v -0.705608 0.922602 0.277584 +v -1.115595 0.922602 0.277584 +v -0.705608 1.037581 0.000000 +v -1.115595 1.037581 0.000000 +v -0.705608 0.922602 -0.277584 +v -1.115595 0.922602 -0.277584 +v -1.680468 0.367434 -0.277584 +v -1.680468 0.252454 0.000000 +v -1.696762 0.326183 0.000000 +v -1.696762 0.419567 -0.225451 +v -1.696762 0.645018 0.318835 +v -1.696762 0.870468 0.225451 +v -1.717499 0.922175 0.277157 +v -1.717499 0.645018 0.391959 +v -1.680468 0.645018 0.392564 +v -1.680468 0.922602 0.277584 +v -1.680468 0.922602 -0.277584 +v -1.680468 0.645018 -0.392564 +v -1.696762 0.645018 -0.318835 +v -1.696762 0.870469 -0.225450 +v -1.680468 0.367434 0.277584 +v -1.696762 0.419567 0.225451 +v -1.680468 1.037582 0.000000 +v -1.696762 0.963853 0.000000 +v -1.717499 1.036977 0.000000 +v -1.717499 0.922175 -0.277157 +v -1.807855 0.922175 -0.277157 +v -1.807855 1.036977 0.000000 +v -1.717499 0.367861 0.277157 +v -1.717499 0.253059 0.000000 +v -1.717499 0.367861 -0.277157 +v -1.717499 0.645018 -0.391959 +v -1.807855 0.922175 0.277157 +v -1.827112 0.964049 0.000000 +v -1.827112 0.870607 0.225589 +v -1.807856 0.645018 0.391959 +v -1.807856 0.367861 0.277157 +v -1.807856 0.253059 0.000000 +v -1.807856 0.367861 -0.277157 +v -1.807856 0.645018 -0.391959 +v -1.827112 0.645018 -0.319031 +v -1.827112 0.419429 -0.225589 +v -1.850272 0.367220 -0.277798 +v -1.850272 0.645018 -0.392866 +v -1.827112 0.645018 0.319031 +v -1.827112 0.419429 0.225589 +v -1.827112 0.325987 0.000000 +v -1.827112 0.870607 -0.225589 +v -1.850272 1.037884 0.000000 +v -1.850272 0.922816 -0.277798 +v -1.929992 0.922816 -0.277798 +v -1.929992 1.037884 0.000000 +v -1.850272 0.922816 0.277798 +v -1.850272 0.645018 0.392866 +v -1.850272 0.367220 0.277798 +v -1.850272 0.252152 0.000000 +v -1.929992 0.367220 -0.277798 +v -1.929992 0.252152 0.000000 +v -2.043752 0.321683 0.000000 +v -2.043752 0.416385 -0.228633 +v -1.929992 0.922816 0.277798 +v -1.929992 0.645018 0.392866 +v -1.929992 0.367220 0.277798 +v -1.929992 0.645018 -0.392866 +v -2.043752 0.873651 -0.228633 +v -2.043752 0.645018 -0.323335 +v -2.121962 0.645018 -0.225354 +v -2.121962 0.804367 -0.159349 +v -2.043752 0.968353 0.000000 +v -2.043752 0.873651 0.228633 +v -2.043752 0.645018 0.323335 +v -2.043752 0.416385 0.228633 +v -2.121962 0.870372 0.000000 +v -2.179800 0.787147 -0.142129 +v -2.179800 0.846019 0.000000 +v -2.121962 0.804367 0.159349 +v -2.121962 0.645018 0.225354 +v -2.121962 0.485669 0.159349 +v -2.121962 0.419664 0.000000 +v -2.121962 0.485669 -0.159349 +v -2.179800 0.787147 0.142129 +v -2.179800 0.817735 0.000000 +v -2.179800 0.767148 0.122130 +v -2.179800 0.645018 0.201001 +v -2.179800 0.502889 0.142129 +v -2.179800 0.444017 0.000000 +v -2.179800 0.502889 -0.142129 +v -2.179800 0.645018 -0.201001 +v -2.179800 0.645018 -0.172717 +v -2.179800 0.522888 -0.122130 +v -2.139229 0.522888 -0.122130 +v -2.139229 0.645018 -0.172717 +v -2.179800 0.645018 0.172717 +v -2.179800 0.522888 0.122130 +v -2.179800 0.472301 0.000000 +v -2.179800 0.767148 -0.122130 +v -2.139229 0.472301 0.000000 +v -2.139229 0.522888 0.122130 +v -2.139229 0.645018 0.172717 +v -2.139229 0.767148 0.122130 +v -2.139229 0.817735 0.000000 +v -2.139229 0.767148 -0.122130 +v -1.416219 0.923800 -0.278782 +v -1.416219 0.645018 -0.394257 +v -1.415588 1.037581 0.000000 +v -1.416219 0.923800 0.278782 +v -1.416219 0.645018 0.394257 +v -1.416219 0.366236 0.278782 +v -1.415589 0.252454 0.000000 +v -1.416219 0.366236 -0.278782 +v -1.161507 0.923800 -0.278782 +v -1.161507 0.645018 -0.394257 +v -1.161507 1.039275 0.000000 +v -1.161507 0.923800 0.278782 +v -1.161507 0.645018 0.394257 +v -1.161507 0.366236 0.278782 +v -1.161507 0.250761 0.000000 +v -1.161507 0.366236 -0.278782 +v -1.379544 0.645018 -0.394257 +v -1.379545 0.366236 -0.278782 +v -1.379545 1.039275 0.000000 +v -1.379545 0.923800 0.278782 +v -1.382795 0.953877 0.308859 +v -1.382795 1.081811 0.000000 +v -1.319287 0.645018 -0.409318 +v -1.221764 0.645018 -0.409318 +v -1.221764 0.355586 -0.289432 +v -1.319287 0.355586 -0.289432 +v -1.158621 0.950501 -0.305483 +v -1.158621 1.077036 0.000000 +v -1.379545 0.250761 0.000000 +v -1.319287 0.235700 0.000000 +v -1.316037 0.208225 0.000000 +v -1.316037 0.336159 -0.308859 +v -1.221764 0.235700 0.000000 +v -1.158621 0.950501 0.305483 +v -1.158621 0.645018 0.432019 +v -1.379545 0.366236 0.278782 +v -1.379545 0.645018 0.394257 +v -1.382795 0.336159 0.308859 +v -1.382795 0.645018 0.436793 +v -1.221764 0.355586 0.289432 +v -1.319287 0.355586 0.289432 +v -1.221764 0.934450 -0.289432 +v -1.221764 1.054336 0.000000 +v -1.224650 1.077036 0.000000 +v -1.224650 0.950501 -0.305483 +v -1.382795 0.336159 -0.308859 +v -1.382795 0.208225 0.000000 +v -1.221764 0.645018 0.409318 +v -1.319287 0.645018 0.409318 +v -1.158621 0.339535 0.305483 +v -1.158621 0.212999 0.000000 +v -1.319287 1.054336 0.000000 +v -1.319287 0.934450 -0.289432 +v -1.316037 0.953877 -0.308859 +v -1.316037 1.081811 0.000000 +v -1.221764 0.934450 0.289432 +v -1.319287 0.934450 0.289432 +v -1.224650 0.645018 0.432019 +v -1.224650 0.950501 0.305483 +v -1.316037 0.953877 0.308859 +v -1.316037 0.645018 0.436793 +v -1.158621 0.339535 -0.305483 +v -1.158621 0.645018 -0.432019 +v -1.379545 0.923800 -0.278782 +v -1.382795 0.953877 -0.308859 +v -1.224650 0.212999 0.000000 +v -1.224650 0.339535 0.305483 +v -1.316037 0.336159 0.308859 +v -1.224650 0.645018 -0.432019 +v -1.224650 0.339535 -0.305483 +v -1.382795 0.645018 -0.436793 +v -1.316036 0.645018 -0.436793 +v -0.419369 0.526526 -0.206986 +v 0.947632 0.526526 -0.206986 +v 0.947632 0.380164 -0.146361 +v -0.419369 0.380164 -0.146361 +v 0.947632 0.319540 0.000000 +v -0.419369 0.319540 0.000000 +v 0.947632 0.380164 0.146361 +v -0.419369 0.380164 0.146361 +v 0.947632 0.526526 0.206986 +v -0.419369 0.526526 0.206986 +v 0.947632 0.672887 0.146361 +v -0.419369 0.672887 0.146361 +v 0.947632 0.733512 0.000000 +v -0.419369 0.733512 0.000000 +v 0.947632 0.672887 -0.146361 +v -0.419369 0.672887 -0.146361 +v 1.384588 0.551670 0.654257 +v 1.384588 0.551670 0.449972 +v 1.139921 0.531994 0.449972 +v 1.139921 0.531994 0.558806 +v 1.384588 0.408111 0.449972 +v 1.504148 0.551670 0.449972 +v 1.504148 0.408111 0.449972 +v 1.504148 0.551670 0.654257 +v 1.577323 0.529883 0.613238 +v 1.577323 0.529883 0.449972 +v 1.504148 0.408111 0.654257 +v 1.384588 0.408111 0.654257 +v 1.577323 0.429898 0.449972 +v 1.577323 0.429898 0.613238 +v 1.139921 0.427787 0.558806 +v 1.139921 0.427787 0.449972 +v 1.384588 0.551670 -0.654257 +v 1.139921 0.531994 -0.558805 +v 1.139921 0.531994 -0.449972 +v 1.384588 0.551670 -0.449972 +v 1.384588 0.408111 -0.449972 +v 1.504148 0.408111 -0.449972 +v 1.504148 0.551670 -0.449972 +v 1.577323 0.529883 -0.449972 +v 1.577323 0.529883 -0.613238 +v 1.504148 0.551670 -0.654257 +v 1.504148 0.408111 -0.654257 +v 1.384588 0.408111 -0.654257 +v 1.577323 0.429898 -0.449972 +v 1.577323 0.429898 -0.613238 +v 1.139921 0.427787 -0.558805 +v 1.139921 0.427787 -0.449972 +v 1.310526 -0.082794 0.073582 +v 1.384588 0.101767 0.073582 +v 1.139921 0.101767 0.053905 +v 1.144858 -0.044123 0.053905 +v 1.384588 0.101767 -0.069977 +v 1.504148 0.101767 0.073582 +v 1.504148 0.101767 -0.069977 +v 1.430086 -0.082794 0.073582 +v 1.608182 -0.022025 0.051795 +v 1.577323 0.101767 0.051795 +v 1.430086 -0.082794 -0.069977 +v 1.310526 -0.082794 -0.069977 +v 1.577323 0.101767 -0.048191 +v 1.608182 -0.022025 -0.048191 +v 1.144858 -0.044123 -0.050301 +v 1.139921 0.101767 -0.050301 +v -1.606489 0.994589 0.070837 +v -1.606489 1.084445 0.070837 +v -1.606489 1.084277 -0.070837 +v -1.606489 0.994589 -0.070837 +v -0.511384 1.084480 -0.070837 +v -0.514357 1.052983 -0.070837 +v -0.549767 1.006668 -0.070837 +v -0.549767 0.994589 -0.070837 +v 1.313063 1.160981 0.058974 +v 1.498769 1.160981 0.058974 +v 1.498532 1.230366 0.031927 +v 1.312826 1.230366 0.031927 +v 1.225298 0.994589 0.070837 +v 1.225298 1.084445 0.070837 +v 0.962233 1.084445 0.070837 +v 0.964610 1.052983 0.070837 +v 1.000021 1.006668 0.070837 +v 1.000021 0.994589 0.070837 +v -0.197543 0.994589 -0.070837 +v 0.049014 0.994589 -0.070837 +v 0.049014 0.994589 0.070837 +v -0.197543 0.994589 0.070837 +v 0.401239 0.994589 -0.070837 +v 0.647796 0.994589 -0.070837 +v 0.647796 0.994589 0.070837 +v 0.401239 0.994589 0.070837 +v 1.000021 0.994589 -0.070837 +v 1.225298 0.994589 -0.070837 +v -0.549767 0.994589 0.070837 +v 1.225298 1.143051 -0.043128 +v -1.531817 1.143051 -0.043128 +v -1.531817 1.143051 0.043128 +v 1.225298 1.143051 0.043128 +v 1.313063 0.996053 0.070837 +v 1.498769 0.996053 0.070837 +v 1.313063 1.160981 -0.058974 +v 1.313063 0.996053 -0.070837 +v 1.225298 1.084802 -0.070837 +v 1.269521 1.219445 0.031927 +v 1.498769 0.996053 -0.070837 +v 1.498769 1.160981 -0.058974 +v 1.312826 1.230366 -0.031927 +v 1.498532 1.230366 -0.031927 +v 1.575087 0.954078 -0.070837 +v 1.575087 1.119006 -0.070837 +v 1.575087 1.119006 0.070837 +v 1.575087 0.954078 0.070837 +v 1.269521 1.219445 -0.031927 +v 1.554546 1.188392 0.031927 +v 1.554546 1.188392 -0.031927 +v -0.514597 1.084445 0.070837 +v -0.234129 1.084445 0.070837 +v 0.083877 1.084445 0.070837 +v 0.364860 1.084445 0.070837 +v 0.682044 1.084445 0.070837 +v 0.964998 1.084754 -0.070837 +v 0.683980 1.084702 -0.070837 +v 0.366670 1.084643 -0.070837 +v 0.084942 1.084590 -0.070837 +v -0.230760 1.084532 -0.070837 +v -0.232953 1.052983 -0.070837 +v -0.232953 1.052983 0.070837 +v -0.514357 1.052983 0.070837 +v -0.197543 1.006668 0.070837 +v -0.197543 1.006668 -0.070837 +v -0.549767 1.006668 0.070837 +v 0.084425 1.052983 -0.070837 +v 0.365828 1.052983 -0.070837 +v 0.365828 1.052983 0.070837 +v 0.084425 1.052983 0.070837 +v 0.401239 1.006668 0.070837 +v 0.401239 1.006668 -0.070837 +v 0.049014 1.006668 -0.070837 +v 0.049014 1.006668 0.070837 +v 0.683207 1.052983 -0.070837 +v 0.964610 1.052983 -0.070837 +v 0.683207 1.052983 0.070837 +v 1.000021 1.006668 -0.070837 +v 0.647796 1.006668 -0.070837 +v 0.647796 1.006668 0.070837 +v 1.103664 0.525584 -0.500000 +v 1.292985 0.525584 -0.500000 +v 1.292985 0.172030 -0.353553 +v 1.103664 0.172030 -0.353553 +v 1.103664 0.525584 0.500000 +v 1.292985 0.525584 0.500000 +v 1.292985 0.879137 0.353553 +v 1.103664 0.879137 0.353553 +v 1.292985 1.025584 0.000000 +v 1.103664 1.025584 0.000000 +v 1.503651 1.012795 0.000000 +v 1.503651 0.870094 -0.344510 +v 1.509822 0.895986 -0.370402 +v 1.509822 1.049411 0.000000 +v 1.080568 0.851567 0.325983 +v 1.080568 0.525584 0.461010 +v 1.292985 0.879137 -0.353553 +v 1.286814 0.905708 -0.380125 +v 1.286814 0.525584 -0.537577 +v 1.286814 0.525584 0.537577 +v 1.286814 0.905708 0.380125 +v 1.503651 0.038372 0.000000 +v 1.503651 0.181073 0.344510 +v 1.509822 0.155181 0.370402 +v 1.509822 0.001756 0.000000 +v 1.503651 0.870094 0.344510 +v 1.509822 0.895986 0.370402 +v 1.503651 0.525584 0.487211 +v 1.669294 0.525584 0.401911 +v 1.669294 0.809777 0.284194 +v 1.503651 0.181073 -0.344510 +v 1.503651 0.525584 -0.487211 +v 1.669294 0.525584 -0.401911 +v 1.669294 0.241390 -0.284194 +v 1.669294 0.809777 -0.284194 +v 1.669294 0.927494 0.000000 +v 1.669294 0.241390 0.284194 +v -0.603601 0.525584 -0.500000 +v 1.044523 0.525584 -0.500000 +v 1.044523 0.172030 -0.353553 +v -0.603601 0.172030 -0.353553 +v -0.603601 0.025584 0.000000 +v 1.044523 0.025584 0.000000 +v 1.044523 0.172030 0.353553 +v -0.603601 0.172030 0.353553 +v 0.951045 0.197436 0.364077 +v -0.460212 0.197436 0.364077 +v 1.044523 0.879137 0.353553 +v 0.899442 0.953734 0.173461 +v 0.899442 0.879137 0.353553 +v 1.044523 0.525584 0.500000 +v 1.068921 0.199748 0.325836 +v 1.068921 0.525584 0.460801 +v 1.044523 0.879137 -0.353553 +v 0.899442 0.735289 -0.413137 +v 0.899442 0.879137 -0.353553 +v 1.068921 0.986385 0.000000 +v 1.068921 0.851420 -0.325836 +v 1.044523 1.025584 0.000000 +v 0.985768 0.843292 0.316901 +v 0.899442 0.843292 0.316901 +v 0.899442 0.918248 0.161081 +v 1.068921 0.525584 -0.460801 +v 1.068921 0.199748 -0.325836 +v 1.068921 0.851420 0.325836 +v 1.080568 0.851567 -0.325983 +v 1.080568 0.525584 -0.461010 +v 1.080568 0.199600 -0.325983 +v 1.080568 0.064574 0.000000 +v 1.080568 0.199600 0.325983 +v 1.080568 0.986594 0.000000 +v 1.103664 0.172030 0.353553 +v 1.068921 0.064782 0.000000 +v -0.603601 1.025584 0.000000 +v 0.810528 0.997935 -0.101577 +v -0.388078 0.997935 -0.101577 +v 0.810528 0.952228 0.101577 +v 0.969099 0.952228 0.101577 +v 0.899442 0.719760 0.368080 +v 0.810528 0.997935 0.101577 +v -0.388078 0.997935 0.101577 +v 0.810528 0.655494 -0.446189 +v 1.286814 1.063161 0.000000 +v 1.320923 0.951339 0.425755 +v 1.320923 1.127692 0.000000 +v 1.286814 0.145459 -0.380125 +v 1.320923 0.525584 -0.602109 +v 1.320923 0.099829 -0.425755 +v 1.509822 0.525584 -0.523828 +v 1.475712 0.525584 -0.586708 +v 1.475712 0.940449 -0.414865 +v 1.286814 -0.011994 -0.000000 +v 1.320923 -0.076525 -0.000000 +v 1.509822 0.525584 0.523828 +v 1.475712 0.940449 0.414865 +v 1.475712 0.525584 0.586708 +v 1.509822 0.155181 -0.370402 +v 1.320923 0.525584 0.602109 +v 1.320923 0.951339 -0.425755 +v 1.475712 0.110718 -0.414866 +v 1.475712 1.112292 0.000000 +v 1.475712 0.110718 0.414866 +v 1.669294 0.271118 -0.254466 +v 1.669294 0.525584 -0.359869 +v 1.423236 0.525584 -0.300328 +v 1.423236 0.313220 -0.212364 +v 1.669294 0.780049 -0.254466 +v 1.669294 0.885452 0.000000 +v 1.669294 0.525584 0.359869 +v 1.669294 0.780049 0.254466 +v 1.669294 0.271118 0.254466 +v 1.423236 0.737947 -0.212364 +v 1.423236 0.825911 0.000000 +v 1.657500 0.838523 0.000000 +v 1.657500 0.746865 -0.221281 +v 1.423236 0.525584 0.300328 +v 1.423236 0.737947 0.212364 +v 1.657500 0.746865 0.221281 +v 1.657500 0.525584 0.312939 +v 1.657500 0.525584 0.252281 +v 1.657500 0.703973 0.178389 +v 1.657500 0.525584 -0.312939 +v 1.657500 0.304302 -0.221282 +v 1.423236 0.313220 0.212364 +v 1.657500 0.304302 0.221282 +v 1.657500 0.703973 -0.178389 +v 1.657500 0.525584 -0.252281 +v 1.657500 0.347194 -0.178389 +v 1.657500 0.347194 0.178389 +v 1.432520 0.525584 -0.169385 +v 1.432520 0.645357 -0.119773 +v 1.651829 0.645357 -0.119773 +v 1.651829 0.525584 -0.169385 +v 1.657500 0.777864 0.000000 +v 1.432520 0.645357 0.119773 +v 1.432520 0.694968 0.000000 +v 1.432520 0.405810 -0.119773 +v 1.432520 0.405810 0.119773 +v 1.432520 0.525584 0.169385 +v 1.657500 0.273303 0.000000 +v 1.432520 0.356199 0.000000 +v 1.651829 0.431184 0.000000 +v 1.651829 0.356199 0.000000 +v 1.651829 0.405810 -0.119773 +v 1.651829 0.525394 -0.094211 +v 1.651829 0.458777 -0.066617 +v 1.651829 0.405810 0.119773 +v 1.651829 0.525584 0.169385 +v 1.651829 0.645357 0.119773 +v 1.127542 0.525394 -0.094211 +v 1.127542 0.458777 -0.066617 +v 1.127542 0.431184 0.000000 +v 1.127542 0.525394 0.094211 +v 1.127542 0.592011 0.066617 +v 1.651829 0.592011 0.066617 +v 1.651829 0.525394 0.094211 +v 1.651829 0.619605 0.000000 +v 1.127542 0.619605 0.000000 +v 1.127542 0.592011 -0.066617 +v 1.651829 0.592011 -0.066617 +v 1.127542 0.458777 0.066617 +v -0.476991 0.837264 -0.291860 +v -0.476991 0.714942 -0.357372 +v -0.476991 0.735289 -0.413137 +v -0.476991 0.879137 -0.353553 +v -0.476991 0.879137 0.353553 +v -0.476991 0.953734 0.173461 +v -0.603601 0.879137 0.353553 +v 0.899442 0.735289 0.413137 +v -0.603601 0.879137 -0.353553 +v -0.724548 0.869896 -0.337068 +v -0.476991 0.953734 -0.173461 +v -0.476991 0.735289 0.413137 +v -0.388078 0.655494 0.446189 +v -0.388078 0.655494 -0.446189 +v 0.810528 0.655494 0.446189 +v -0.603601 0.525584 0.500000 +v 1.651829 0.458777 0.066617 +v -0.388078 0.633076 0.392654 +v -0.476991 0.714942 0.357372 +v -0.476991 0.837264 0.291860 +v -0.388078 0.944133 0.101577 +v -0.388078 0.944133 -0.101577 +v 0.810528 0.952228 -0.101577 +v 1.657500 0.212644 0.000000 +v 1.651829 0.694968 0.000000 +v -0.476991 0.926475 0.173461 +v 0.899442 0.843292 -0.316901 +v 0.899442 0.918248 -0.161081 +v 0.899442 0.953734 -0.173461 +v 0.899442 0.719760 -0.368080 +v 0.810528 0.655494 -0.378684 +v 0.810528 0.655494 0.378684 +v -0.388078 0.633076 -0.392654 +v 1.669294 0.123673 0.000000 +v 1.669294 0.165715 0.000000 +v 0.985768 0.843292 -0.316901 +v 0.969099 0.952228 -0.101577 +v 1.475712 -0.061125 -0.000000 +v 1.423236 0.225256 0.000000 +v 0.984259 0.528318 -0.436781 +v 0.984259 0.228435 -0.325032 +v 0.984259 0.095638 0.005025 +v 0.984259 0.228435 0.325032 +v 0.984259 0.528318 0.436781 +v 1.103664 0.025584 0.000000 +v -0.534084 0.903408 0.173461 +v -0.534084 0.903408 -0.173461 +v -0.476991 0.926475 -0.173461 +v -0.548068 0.837264 0.291860 +v -0.548068 0.837264 -0.291860 +v 1.292985 0.025584 0.000000 +v -0.550334 0.529772 0.433593 +v -0.550334 0.236472 0.339820 +v -0.550334 0.062663 0.005342 +v -0.550334 0.236472 -0.339820 +v -0.550334 0.529772 -0.433593 +v -0.388078 0.540720 0.422003 +v -0.388078 0.540720 -0.422003 +v 0.810528 0.526819 -0.419828 +v 0.810528 0.526819 0.419828 +v -0.388078 0.088709 0.007100 +v -0.388078 0.229035 -0.323350 +v -0.388078 0.229035 0.323350 +v 0.810528 0.240010 -0.300109 +v 0.810528 0.100279 0.006216 +v 0.810528 0.240010 0.300109 +v -0.460212 0.500178 0.489476 +v 0.678212 0.092276 -0.724878 +v 0.648869 0.138277 -0.701704 +v 0.951045 0.500178 0.489476 +v 0.646934 0.318302 -0.775205 +v 0.641987 0.458293 -0.590595 +v 0.671568 0.425284 -0.596467 +v 0.673140 0.318430 -0.775219 +v 0.003785 0.107850 -0.712878 +v 0.003776 0.311542 -0.796039 +v 0.286340 0.110829 -0.713675 +v 0.335441 0.111139 -0.713708 +v 0.137117 0.111516 -0.714176 +v 0.181234 0.111785 -0.714205 +v 0.643209 0.321800 -0.818636 +v 0.285150 0.311362 -0.795548 +v 0.335438 0.311680 -0.795582 +v 0.346589 0.320346 -0.818478 +v 0.273733 0.319982 -0.818438 +v 0.137105 0.309206 -0.794886 +v 0.180025 0.309468 -0.794915 +v 0.188876 0.319558 -0.818392 +v 0.127999 0.319254 -0.818359 +v 0.051715 0.318872 -0.818317 +v 0.044163 0.311789 -0.796066 +v 0.045414 0.108104 -0.712906 +v 0.949896 0.093608 -0.725023 +v 0.645678 0.092117 -0.724860 +v 0.346592 0.090651 -0.724701 +v 0.275455 0.090295 -0.724662 +v 0.190590 0.089871 -0.724616 +v 0.128016 0.089558 -0.724582 +v 0.053442 0.089185 -0.724541 +v -0.004002 0.088898 -0.724510 +v -0.004015 0.318594 -0.818287 +v -0.060217 0.318313 -0.818256 +v -0.059018 0.088623 -0.724480 +v 0.678557 0.155552 -0.465195 +v 0.649846 0.155552 -0.465195 +v 0.951045 0.155552 -0.465195 +v 0.674638 0.458293 -0.590595 +v 0.676644 0.321964 -0.818654 +v 0.948697 0.323297 -0.818799 +v 0.951045 0.458293 -0.590595 +v 0.641563 0.500178 -0.489476 +v 0.674042 0.500178 -0.489476 +v 0.951045 0.500178 -0.489476 +v -0.460212 0.155552 -0.465195 +v -0.460212 0.458293 -0.590595 +v -0.460212 0.500178 -0.489476 +v 0.951045 0.197436 -0.364077 +v -0.460212 0.197436 -0.364077 +v 1.292985 0.172030 0.353553 +v 1.103664 0.879137 -0.353553 +v -0.460212 0.197436 -0.364077 +v 0.951045 0.197436 -0.364077 +v 1.286814 0.145459 0.380125 +v 1.320923 0.099829 0.425755 +v -0.460212 0.500178 -0.489476 +v 0.951045 0.500178 -0.489476 +v -0.724548 0.532825 -0.476687 +v -0.724548 0.195753 -0.337068 +v -0.724548 0.056134 0.000004 +v -0.724548 0.195753 0.337075 +v -0.724548 0.532825 0.476694 +v -0.724548 0.869896 0.337075 +v -0.724548 1.009515 0.000004 +v 0.951045 0.197436 0.364077 +v -0.460212 0.197436 0.364077 +v -0.460212 0.500178 0.489476 +v -0.460212 0.155552 0.465195 +v -0.460212 0.458293 0.590595 +v 0.641563 0.500178 0.489476 +v 0.674042 0.500178 0.489476 +v 0.951045 0.500178 0.489476 +v 0.951045 0.458293 0.590595 +v 0.674638 0.458293 0.590595 +v 0.676644 0.321964 0.818654 +v 0.948697 0.323297 0.818799 +v 0.951045 0.155552 0.465195 +v 0.678557 0.155552 0.465195 +v 0.649846 0.155552 0.465195 +v -0.059018 0.088623 0.724480 +v -0.004002 0.088898 0.724510 +v -0.004015 0.318594 0.818287 +v -0.060217 0.318313 0.818256 +v 0.645678 0.092117 0.724860 +v 0.346592 0.090651 0.724701 +v 0.275455 0.090295 0.724662 +v 0.190590 0.089871 0.724616 +v 0.128016 0.089558 0.724582 +v 0.053442 0.089185 0.724541 +v 0.949896 0.093608 0.725023 +v 0.051715 0.318872 0.818317 +v 0.044163 0.311789 0.796066 +v 0.045414 0.108104 0.712906 +v 0.127999 0.319254 0.818359 +v 0.188876 0.319558 0.818392 +v 0.137105 0.309206 0.794886 +v 0.180025 0.309468 0.794915 +v 0.273733 0.319982 0.818438 +v 0.346589 0.320346 0.818478 +v 0.285150 0.311362 0.795548 +v 0.335438 0.311680 0.795582 +v 0.643209 0.321800 0.818636 +v 0.137117 0.111516 0.714176 +v 0.181234 0.111785 0.714205 +v 0.286340 0.110829 0.713675 +v 0.335441 0.111139 0.713708 +v 0.003776 0.311542 0.796039 +v 0.003785 0.107850 0.712878 +v 0.671568 0.425284 0.596467 +v 0.673140 0.318430 0.775219 +v 0.641987 0.458293 0.590595 +v 0.648869 0.138277 0.701704 +v 0.646934 0.318302 0.775205 +v 0.678212 0.092276 0.724878 +v 0.674369 0.138402 0.701718 +v 0.645976 0.425284 0.596467 +v 0.645644 0.458113 0.517211 +v 0.671101 0.458113 0.517211 +v 0.652136 0.187997 0.498180 +v 0.674639 0.187997 0.498180 +v 0.674369 0.138402 -0.701718 +v 0.645644 0.458113 -0.517211 +v 0.645976 0.425284 -0.596467 +v 0.671101 0.458113 -0.517211 +v 0.674639 0.187997 -0.498180 +v 0.652136 0.187997 -0.498180 +v -0.436383 0.265019 0.509254 +v 1.004741 0.265019 0.509254 +v 1.004741 0.179718 0.544586 +v -0.436383 0.179718 0.544586 +v 1.004741 0.144386 0.629887 +v -0.436383 0.144385 0.629887 +v 1.004741 0.179718 0.715187 +v -0.436383 0.179718 0.715187 +v 1.004741 0.265019 0.750520 +v -0.436383 0.265019 0.750520 +v 1.004741 0.350319 0.715187 +v -0.436383 0.350319 0.715187 +v 1.004741 0.385652 0.629887 +v -0.436383 0.385652 0.629887 +v 1.088061 0.265019 0.750520 +v 1.088061 0.350319 0.715187 +v 1.004741 0.350319 0.544586 +v -0.436383 0.350319 0.544586 +v -0.513171 0.364069 0.629887 +v -0.513171 0.335058 0.699926 +v -0.513171 0.265019 0.530836 +v -0.513171 0.194979 0.559848 +v -0.513171 0.165968 0.629887 +v -0.513171 0.194979 0.699926 +v -0.513171 0.265019 0.728937 +v -0.513171 0.335058 0.559848 +v 1.088061 0.265019 0.509254 +v 1.088061 0.350319 0.544586 +v 1.100404 0.336110 0.558795 +v 1.100404 0.265019 0.529348 +v 1.088061 0.179718 0.544586 +v 1.088061 0.144386 0.629887 +v 1.088061 0.179718 0.715187 +v 1.088061 0.385652 0.629887 +v 1.100404 0.336110 0.700979 +v 1.100404 0.365558 0.629887 +v 1.100404 0.193927 0.700979 +v 1.100404 0.265019 0.730426 +v 1.100404 0.193927 0.558795 +v 1.100404 0.164480 0.629887 +v 1.127149 0.181939 0.629887 +v 1.127149 0.206273 0.688633 +v 1.127149 0.206273 0.571141 +v 1.127149 0.265019 0.546807 +v 1.127149 0.323765 0.571141 +v 1.127149 0.348098 0.629887 +v 1.127149 0.323765 0.688633 +v 1.127149 0.265019 0.712966 +v -0.436384 0.265019 -0.509254 +v -0.436384 0.179718 -0.544586 +v 1.004741 0.179718 -0.544586 +v 1.004741 0.265019 -0.509254 +v -0.436384 0.144385 -0.629887 +v 1.004741 0.144386 -0.629887 +v -0.436384 0.179718 -0.715187 +v 1.004741 0.179718 -0.715187 +v -0.436384 0.265019 -0.750520 +v 1.004741 0.265019 -0.750520 +v -0.436384 0.350319 -0.715187 +v 1.004741 0.350319 -0.715187 +v -0.436384 0.385652 -0.629887 +v 1.004741 0.385652 -0.629887 +v 1.088061 0.350319 -0.715187 +v 1.088061 0.265019 -0.750520 +v -0.436384 0.350319 -0.544586 +v 1.004741 0.350319 -0.544586 +v -0.513171 0.335058 -0.699926 +v -0.513171 0.364069 -0.629887 +v -0.513171 0.265019 -0.530836 +v -0.513171 0.335058 -0.559848 +v -0.513171 0.265019 -0.728937 +v -0.513171 0.194979 -0.699926 +v -0.513171 0.165968 -0.629887 +v -0.513171 0.194979 -0.559848 +v 1.088061 0.265019 -0.509254 +v 1.100404 0.265019 -0.529348 +v 1.100404 0.336111 -0.558795 +v 1.088061 0.350319 -0.544586 +v 1.088061 0.179718 -0.544586 +v 1.088061 0.179718 -0.715187 +v 1.088061 0.144386 -0.629887 +v 1.088061 0.385652 -0.629887 +v 1.100404 0.365558 -0.629887 +v 1.100404 0.336110 -0.700979 +v 1.100404 0.265019 -0.730426 +v 1.100404 0.193927 -0.700979 +v 1.100404 0.164480 -0.629887 +v 1.100404 0.193927 -0.558795 +v 1.127149 0.206273 -0.688633 +v 1.127149 0.181939 -0.629887 +v 1.127149 0.206273 -0.571141 +v 1.127149 0.265019 -0.712966 +v 1.127149 0.323765 -0.688633 +v 1.127149 0.348098 -0.629887 +v 1.127149 0.323765 -0.571141 +v 1.127149 0.265019 -0.546807 +v -2.120991 0.943304 0.035550 +v -2.158085 0.862576 0.035550 +v -2.120991 0.943304 -0.035550 +v -2.158085 0.862576 -0.035550 +v -2.003111 1.008603 0.035550 +v -2.003111 1.008603 -0.035550 +v -1.938336 0.967051 0.035550 +v -1.938336 0.967051 -0.035550 +v -2.111712 0.819430 0.035550 +v -2.111712 0.819430 -0.035550 +v -2.120991 0.346120 -0.035550 +v -2.158085 0.426848 -0.035550 +v -2.120991 0.346120 0.035550 +v -2.158085 0.426848 0.035550 +v -2.003111 0.280821 -0.035550 +v -2.003111 0.280821 0.035550 +v -1.938336 0.322373 -0.035550 +v -1.938336 0.322373 0.035550 +v -2.111712 0.469994 -0.035550 +v -2.111712 0.469994 0.035550 +v -2.120991 0.609162 0.298592 +v -2.158085 0.609162 0.217864 +v -2.120991 0.680262 0.298592 +v -2.158085 0.680262 0.217864 +v -2.003111 0.609162 0.363891 +v -2.003111 0.680262 0.363891 +v -1.938336 0.609162 0.322339 +v -1.938336 0.680262 0.322339 +v -2.111712 0.609162 0.174718 +v -2.111712 0.680262 0.174718 +v -2.120991 0.680262 -0.298592 +v -2.158085 0.680262 -0.217864 +v -2.120991 0.609162 -0.298592 +v -2.158085 0.609162 -0.217864 +v -2.003111 0.680262 -0.363891 +v -2.003111 0.609162 -0.363891 +v -1.938336 0.680262 -0.322339 +v -1.938336 0.609162 -0.322339 +v -2.111712 0.680262 -0.174718 +v -2.111712 0.609162 -0.174718 +v -2.120991 0.830711 0.236274 +v -2.158085 0.773628 0.179191 +v -2.120991 0.880986 0.185999 +v -2.158085 0.823903 0.128916 +v -2.003111 0.876884 0.282447 +v -2.003111 0.927159 0.232172 +v -1.938336 0.847503 0.253066 +v -1.938336 0.897778 0.202791 +v -2.111712 0.743119 0.148682 +v -2.111712 0.793394 0.098407 +v -2.120991 0.458713 -0.236274 +v -2.158085 0.515796 -0.179191 +v -2.120991 0.408438 -0.185999 +v -2.158085 0.465521 -0.128916 +v -2.003111 0.412540 -0.282447 +v -2.003111 0.362265 -0.232172 +v -1.938336 0.441921 -0.253066 +v -1.938336 0.391646 -0.202791 +v -2.111712 0.546305 -0.148682 +v -2.111712 0.496030 -0.098407 +v -2.120991 0.408438 0.185999 +v -2.158085 0.465521 0.128916 +v -2.120991 0.458713 0.236274 +v -2.158085 0.515796 0.179191 +v -2.003111 0.362265 0.232172 +v -2.003111 0.412540 0.282447 +v -1.938336 0.391646 0.202791 +v -1.938336 0.441921 0.253066 +v -2.111712 0.496030 0.098407 +v -2.111712 0.546305 0.148682 +v -2.120991 0.880986 -0.185999 +v -2.158085 0.823903 -0.128916 +v -2.120991 0.830711 -0.236274 +v -2.158085 0.773628 -0.179191 +v -2.003111 0.927159 -0.232172 +v -2.003111 0.876884 -0.282447 +v -1.938336 0.897778 -0.202791 +v -1.938336 0.847503 -0.253066 +v -2.111712 0.793394 -0.098407 +v -2.111712 0.743119 -0.148682 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.822057 0.744753 +vt 0.801034 0.723730 +vt 0.872812 0.693998 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.944804 0.723730 +vt 0.894049 0.744753 +vt 0.873025 0.693998 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.750065 0.816745 +vt 0.729042 0.795722 +vt 0.800820 0.765990 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.872812 0.867713 +vt 0.822057 0.888737 +vt 0.801034 0.837982 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.678074 0.744753 +vt 0.657050 0.723730 +vt 0.728829 0.693998 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.728829 0.939705 +vt 0.678074 0.960729 +vt 0.657050 0.909974 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.750065 0.744753 +vt 0.729042 0.723730 +vt 0.800820 0.693998 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.728829 0.867713 +vt 0.678074 0.888737 +vt 0.657050 0.837982 +vt 0.500000 0.265625 +vt 0.531250 0.226562 +vt 0.531250 0.265625 +vt 0.500000 0.226562 +vt 0.531250 0.187500 +vt 0.500000 0.500000 +vt 0.531250 0.460938 +vt 0.531250 0.500000 +vt 0.500000 0.460938 +vt 0.531250 0.421875 +vt 0.500000 0.421875 +vt 0.531250 0.382812 +vt 0.500000 0.382812 +vt 0.531250 0.343750 +vt 0.678074 0.816745 +vt 0.657050 0.795722 +vt 0.728829 0.765990 +vt 0.500000 0.343750 +vt 0.531250 0.304688 +vt 0.500000 0.304688 +vt 0.872812 0.795722 +vt 0.822057 0.816745 +vt 0.801034 0.765990 +vt 0.792241 0.765292 +vt 0.806786 0.772343 +vt 0.792185 0.772343 +vt 0.806674 0.779394 +vt 0.792073 0.779394 +vt 0.806618 0.786445 +vt 0.792017 0.786445 +vt 0.792073 0.793497 +vt 0.710865 0.890954 +vt 0.707339 0.884848 +vt 0.717917 0.878741 +vt 0.806674 0.793497 +vt 0.792185 0.800547 +vt 0.806786 0.800547 +vt 0.792241 0.807599 +vt 0.792241 0.807743 +vt 0.806786 0.814794 +vt 0.792185 0.814794 +vt 0.806674 0.821845 +vt 0.792073 0.821845 +vt 0.806618 0.828896 +vt 0.792017 0.828896 +vt 0.792073 0.835947 +vt 0.602536 0.912132 +vt 0.596430 0.908607 +vt 0.602536 0.898029 +vt 0.806674 0.835947 +vt 0.792185 0.842998 +vt 0.806786 0.842998 +vt 0.792241 0.850049 +vt 0.797635 0.690671 +vt 0.812180 0.697723 +vt 0.797579 0.697723 +vt 0.812068 0.704773 +vt 0.797468 0.704773 +vt 0.812012 0.711825 +vt 0.797412 0.711825 +vt 0.797468 0.718876 +vt 0.713446 0.905202 +vt 0.707339 0.901676 +vt 0.713446 0.891099 +vt 0.812068 0.718876 +vt 0.797579 0.725927 +vt 0.812180 0.725927 +vt 0.797635 0.732978 +vt 0.725698 0.877553 +vt 0.737025 0.908837 +vt 0.725698 0.910410 +vt 0.739301 0.911771 +vt 0.792924 0.923206 +vt 0.739301 0.923206 +vt 0.795200 0.908837 +vt 0.806526 0.877554 +vt 0.806526 0.910410 +vt 0.792924 0.873046 +vt 0.739301 0.861611 +vt 0.792924 0.861611 +vt 0.737025 0.875980 +vt 0.742886 0.906641 +vt 0.789339 0.878177 +vt 0.789339 0.906641 +vt 0.742886 0.878177 +vt 0.739301 0.873046 +vt 0.792924 0.911771 +vt 0.795200 0.875980 +vt 0.692595 0.878597 +vt 0.707139 0.871545 +vt 0.707195 0.878597 +vt 0.692539 0.871545 +vt 0.707027 0.864495 +vt 0.692427 0.864495 +vt 0.706971 0.857444 +vt 0.692427 0.850392 +vt 0.692371 0.857444 +vt 0.809625 0.750895 +vt 0.809625 0.757947 +vt 0.803518 0.761472 +vt 0.692539 0.843341 +vt 0.707027 0.850392 +vt 0.692595 0.836290 +vt 0.707139 0.843341 +vt 0.677626 0.878597 +vt 0.692171 0.871545 +vt 0.692227 0.878597 +vt 0.677570 0.871545 +vt 0.692059 0.864495 +vt 0.677458 0.864495 +vt 0.692003 0.857443 +vt 0.677458 0.850392 +vt 0.677402 0.857443 +vt 0.809625 0.736648 +vt 0.809625 0.743699 +vt 0.803518 0.747225 +vt 0.677570 0.843341 +vt 0.692059 0.850392 +vt 0.677626 0.836290 +vt 0.692171 0.843341 +vt 0.707563 0.878597 +vt 0.722108 0.871545 +vt 0.722164 0.878597 +vt 0.707507 0.871545 +vt 0.721996 0.864495 +vt 0.707395 0.864495 +vt 0.721940 0.857443 +vt 0.707395 0.850392 +vt 0.707339 0.857443 +vt 0.790935 0.847539 +vt 0.790935 0.854590 +vt 0.784828 0.858116 +vt 0.707507 0.843341 +vt 0.721996 0.850392 +vt 0.707563 0.836290 +vt 0.722108 0.843341 +vt 0.596430 0.881943 +vt 0.607756 0.850659 +vt 0.607756 0.883516 +vt 0.663656 0.836290 +vt 0.610032 0.847725 +vt 0.610032 0.836290 +vt 0.677258 0.881943 +vt 0.665931 0.850659 +vt 0.677258 0.849086 +vt 0.610032 0.897885 +vt 0.663656 0.886450 +vt 0.663656 0.897885 +vt 0.613617 0.852856 +vt 0.660071 0.881319 +vt 0.660071 0.852856 +vt 0.610032 0.886450 +vt 0.663656 0.847725 +vt 0.665932 0.883516 +vt 0.815201 0.764122 +vt 0.805115 0.750247 +vt 0.815201 0.750247 +vt 0.817141 0.641039 +vt 0.870476 0.653777 +vt 0.814975 0.653777 +vt 0.609375 0.500000 +vt 0.667969 0.464844 +vt 0.667969 0.500000 +vt 0.871129 0.715795 +vt 0.815201 0.701921 +vt 0.871129 0.701921 +vt 0.871129 0.798574 +vt 0.871129 0.764122 +vt 0.854479 0.926427 +vt 0.891341 0.925198 +vt 0.888931 0.926427 +vt 0.796980 0.925198 +vt 0.836253 0.909544 +vt 0.836253 0.925198 +vt 0.799390 0.926427 +vt 0.833842 0.926427 +vt 0.796009 0.927723 +vt 0.781164 0.925198 +vt 0.837223 0.927723 +vt 0.852068 0.925198 +vt 0.851098 0.927723 +vt 0.852068 0.909544 +vt 0.837130 0.907319 +vt 0.851191 0.907319 +vt 0.796980 0.909544 +vt 0.891341 0.909544 +vt 0.634130 0.888554 +vt 0.669086 0.895466 +vt 0.634655 0.897270 +vt 0.854247 0.908557 +vt 0.889162 0.908557 +vt 0.834073 0.908557 +vt 0.781164 0.909544 +vt 0.796102 0.907319 +vt 0.682970 0.929943 +vt 0.682970 0.895466 +vt 0.683058 0.886728 +vt 0.668998 0.886728 +vt 0.620805 0.898244 +vt 0.620104 0.889541 +vt 0.586461 0.901279 +vt 0.585325 0.892614 +vt 0.785608 0.715795 +vt 0.805115 0.701921 +vt 0.805115 0.715795 +vt 0.815201 0.715795 +vt 0.815201 0.798574 +vt 0.808427 0.771594 +vt 0.808427 0.742775 +vt 0.808427 0.723268 +vt 0.804494 0.651062 +vt 0.870476 0.687966 +vt 0.814975 0.701735 +vt 0.814975 0.687966 +vt 0.866125 0.600252 +vt 0.807497 0.609109 +vt 0.667969 0.464844 +vt 0.609375 0.500000 +vt 0.609375 0.464844 +vt 0.783574 0.905836 +vt 0.820437 0.904607 +vt 0.818026 0.905836 +vt 0.836253 0.888953 +vt 0.875526 0.904607 +vt 0.836253 0.904607 +vt 0.873115 0.905836 +vt 0.838663 0.905836 +vt 0.876496 0.907133 +vt 0.891341 0.904607 +vt 0.890371 0.907133 +vt 0.835282 0.907133 +vt 0.821407 0.907133 +vt 0.820437 0.888953 +vt 0.835375 0.886728 +vt 0.875526 0.888953 +vt 0.781164 0.888953 +vt 0.781164 0.904607 +vt 0.732050 0.928117 +vt 0.767005 0.921205 +vt 0.766917 0.929943 +vt 0.818258 0.887966 +vt 0.838432 0.887966 +vt 0.876403 0.886728 +vt 0.891341 0.888953 +vt 0.780890 0.886728 +vt 0.780890 0.921205 +vt 0.780978 0.929943 +vt 0.718724 0.918427 +vt 0.718024 0.927130 +vt 0.684381 0.915392 +vt 0.683244 0.924057 +vt 0.804966 0.701735 +vt 0.785608 0.687966 +vt 0.804966 0.687966 +vt 0.808774 0.637292 +vt 0.808253 0.661193 +vt 0.871129 0.750247 +vt 0.791853 0.824225 +vt 0.783842 0.834044 +vt 0.783845 0.824223 +vt 0.791849 0.834047 +vt 0.783839 0.843866 +vt 0.791873 0.765295 +vt 0.783862 0.775114 +vt 0.783866 0.765292 +vt 0.791869 0.775116 +vt 0.783859 0.784935 +vt 0.791866 0.784938 +vt 0.783855 0.794757 +vt 0.791863 0.794760 +vt 0.783852 0.804579 +vt 0.791859 0.804582 +vt 0.783849 0.814401 +vt 0.791856 0.814404 +vt 0.778742 0.784012 +vt 0.778744 0.776033 +vt 0.677402 0.884383 +vt 0.683044 0.878741 +vt 0.691023 0.898004 +vt 0.778734 0.805499 +vt 0.778724 0.834964 +vt 0.778741 0.785855 +vt 0.778728 0.823299 +vt 0.778731 0.815320 +vt 0.778728 0.825142 +vt 0.778745 0.774191 +vt 0.778748 0.766212 +vt 0.778735 0.803656 +vt 0.778738 0.795677 +vt 0.271409 0.769029 +vt 0.265832 0.744085 +vt 0.271409 0.744085 +vt 0.265832 0.769029 +vt 0.260254 0.744085 +vt 0.260254 0.769029 +vt 0.254677 0.744085 +vt 0.254677 0.769029 +vt 0.249099 0.744085 +vt 0.249099 0.769029 +vt 0.243522 0.744085 +vt 0.243522 0.769029 +vt 0.237944 0.744085 +vt 0.261888 0.772973 +vt 0.275353 0.778551 +vt 0.237944 0.769029 +vt 0.232367 0.744085 +vt 0.232367 0.769029 +vt 0.226789 0.744085 +vt 0.275353 0.734564 +vt 0.275353 0.740142 +vt 0.261888 0.734564 +vt 0.712227 0.691554 +vt 0.724024 0.700800 +vt 0.715450 0.703178 +vt 0.507381 0.846904 +vt 0.598130 0.858967 +vt 0.507381 0.858967 +vt 0.569512 0.785553 +vt 0.590950 0.795995 +vt 0.569512 0.795995 +vt 0.598131 0.896473 +vt 0.507381 0.884411 +vt 0.598131 0.884410 +vt 0.508228 0.866382 +vt 0.678632 0.902783 +vt 0.769382 0.886888 +vt 0.769382 0.902783 +vt 0.669734 0.902783 +vt 0.652570 0.886888 +vt 0.669734 0.886888 +vt 0.712227 0.635780 +vt 0.724025 0.626533 +vt 0.717132 0.651390 +vt 0.678632 0.886888 +vt 0.732276 0.658361 +vt 0.714464 0.658361 +vt 0.760292 0.655719 +vt 0.739257 0.671614 +vt 0.739257 0.655719 +vt 0.708871 0.642447 +vt 0.734944 0.675944 +vt 0.740565 0.696214 +vt 0.734944 0.651390 +vt 0.598079 0.866382 +vt 0.508228 0.876995 +vt 0.698102 0.658361 +vt 0.714464 0.668973 +vt 0.698102 0.668973 +vt 0.732276 0.668973 +vt 0.808269 0.886888 +vt 0.717132 0.675944 +vt 0.708871 0.684886 +vt 0.713777 0.669277 +vt 0.598079 0.876995 +vt 0.591132 0.778095 +vt 0.612625 0.785553 +vt 0.590950 0.785553 +vt 0.578532 0.766460 +vt 0.578532 0.815089 +vt 0.591132 0.803454 +vt 0.578698 0.823250 +vt 0.625952 0.795995 +vt 0.612625 0.795995 +vt 0.612587 0.803625 +vt 0.621392 0.807294 +vt 0.621466 0.815543 +vt 0.594762 0.825013 +vt 0.579217 0.836399 +vt 0.652377 0.782955 +vt 0.632770 0.798594 +vt 0.632770 0.782955 +vt 0.625952 0.785554 +vt 0.601835 0.823468 +vt 0.620002 0.835136 +vt 0.612587 0.777924 +vt 0.621392 0.774255 +vt 0.739899 0.703371 +vt 0.748258 0.719266 +vt 0.739899 0.719266 +vt 0.714821 0.703371 +vt 0.723180 0.719266 +vt 0.714821 0.719266 +vt 0.748258 0.703371 +vt 0.756618 0.719266 +vt 0.706461 0.703371 +vt 0.706461 0.719266 +vt 0.698102 0.703371 +vt 0.698102 0.719266 +vt 0.731539 0.703371 +vt 0.731539 0.719266 +vt 0.723180 0.703371 +vt 0.756618 0.703371 +vt 0.764977 0.719266 +vt 0.601585 0.811408 +vt 0.588652 0.817689 +vt 0.609226 0.824945 +vt 0.609027 0.809728 +vt 0.615013 0.817143 +vt 0.601835 0.758080 +vt 0.579217 0.745150 +vt 0.620002 0.746413 +vt 0.621466 0.766005 +vt 0.609226 0.756604 +vt 0.609027 0.771821 +vt 0.615013 0.764406 +vt 0.594762 0.756536 +vt 0.578698 0.758299 +vt 0.588652 0.763859 +vt 0.594100 0.771488 +vt 0.601585 0.770141 +vt 0.167826 0.637345 +vt 0.114215 0.658256 +vt 0.114130 0.637792 +vt 0.232537 0.630625 +vt 0.263917 0.575325 +vt 0.263918 0.630625 +vt 0.179850 0.630269 +vt 0.223962 0.575325 +vt 0.223962 0.630625 +vt 0.167952 0.568476 +vt 0.114311 0.547378 +vt 0.168353 0.538018 +vt 0.167800 0.630285 +vt 0.113693 0.574921 +vt 0.167898 0.575574 +vt 0.272493 0.630625 +vt 0.317290 0.575325 +vt 0.317290 0.630625 +vt 0.179863 0.637263 +vt 0.223367 0.666831 +vt 0.180317 0.668668 +vt 0.223276 0.568399 +vt 0.180494 0.537066 +vt 0.224230 0.538894 +vt 0.094978 0.574829 +vt 0.081998 0.630460 +vt 0.082831 0.574648 +vt 0.168405 0.530773 +vt 0.180051 0.568560 +vt 0.168173 0.674993 +vt 0.180473 0.675838 +vt 0.225140 0.532000 +vt 0.231072 0.538436 +vt 0.230294 0.569140 +vt 0.224302 0.673691 +vt 0.230365 0.667318 +vt 0.230075 0.636801 +vt 0.223301 0.637495 +vt 0.102583 0.545262 +vt 0.103033 0.554042 +vt 0.114158 0.567779 +vt 0.104111 0.573586 +vt 0.102879 0.566036 +vt 0.102508 0.660379 +vt 0.113614 0.665427 +vt 0.101567 0.632630 +vt 0.102656 0.639463 +vt 0.098126 0.554394 +vt 0.098359 0.566372 +vt 0.098030 0.651303 +vt 0.102915 0.651612 +vt 0.098072 0.639307 +vt 0.329373 0.630625 +vt 0.180014 0.575685 +vt 0.168140 0.667731 +vt 0.272492 0.575325 +vt 0.180648 0.529997 +vt 0.060889 0.574321 +vt 0.072008 0.630311 +vt 0.060057 0.630133 +vt 0.113750 0.630739 +vt 0.104327 0.574930 +vt 0.113715 0.540194 +vt 0.072841 0.574499 +vt 0.101552 0.630752 +vt 0.005298 0.573491 +vt 0.004465 0.629303 +vt 0.423560 0.873494 +vt 0.420121 0.888745 +vt 0.420121 0.873494 +vt 0.341393 0.820409 +vt 0.338027 0.873463 +vt 0.337954 0.820414 +vt 0.405973 0.888777 +vt 0.402533 0.904028 +vt 0.402534 0.888777 +vt 0.356717 0.873437 +vt 0.360083 0.820384 +vt 0.360156 0.873433 +vt 0.363688 0.823634 +vt 0.363743 0.863650 +vt 0.341466 0.873458 +vt 0.375447 0.887810 +vt 0.415358 0.874430 +vt 0.415358 0.887810 +vt 0.334422 0.870213 +vt 0.334413 0.863585 +vt 0.397771 0.889712 +vt 0.676091 0.758842 +vt 0.670636 0.756488 +vt 0.676082 0.752214 +vt 0.757146 0.797623 +vt 0.738482 0.784243 +vt 0.757146 0.784243 +vt 0.723118 0.758182 +vt 0.740817 0.758754 +vt 0.723127 0.764704 +vt 0.734822 0.782341 +vt 0.716053 0.769156 +vt 0.734717 0.768961 +vt 0.693788 0.758116 +vt 0.709131 0.769177 +vt 0.676682 0.782565 +vt 0.676576 0.769186 +vt 0.738482 0.797622 +vt 0.731559 0.784242 +vt 0.709236 0.782556 +vt 0.746266 0.756491 +vt 0.746275 0.763013 +vt 0.716854 0.797621 +vt 0.723377 0.784242 +vt 0.723377 0.797622 +vt 0.753151 0.758579 +vt 0.663756 0.758701 +vt 0.663747 0.752073 +vt 0.731559 0.797622 +vt 0.684647 0.798126 +vt 0.670948 0.784944 +vt 0.684542 0.784746 +vt 0.669829 0.723944 +vt 0.753143 0.752057 +vt 0.746983 0.723944 +vt 0.753821 0.719853 +vt 0.716749 0.784242 +vt 0.662981 0.785039 +vt 0.671054 0.798323 +vt 0.663086 0.798418 +vt 0.669929 0.708186 +vt 0.676778 0.712259 +vt 0.663087 0.782582 +vt 0.662981 0.769203 +vt 0.740003 0.712277 +vt 0.746840 0.708186 +vt 0.742675 0.732079 +vt 0.725698 0.723741 +vt 0.742675 0.723741 +vt 0.750354 0.690671 +vt 0.750039 0.712874 +vt 0.736464 0.702680 +vt 0.750039 0.742945 +vt 0.750354 0.765148 +vt 0.736464 0.753139 +vt 0.763226 0.714312 +vt 0.759890 0.704357 +vt 0.754869 0.723741 +vt 0.750389 0.732079 +vt 0.750389 0.723741 +vt 0.763226 0.741507 +vt 0.759890 0.751462 +vt 0.770088 0.732079 +vt 0.780587 0.723741 +vt 0.780587 0.732079 +vt 0.760180 0.732079 +vt 0.754869 0.732079 +vt 0.770088 0.723741 +vt 0.760180 0.723741 +vt 0.754315 0.719295 +vt 0.754315 0.736524 +vt 0.797267 0.732079 +vt 0.660992 0.723479 +vt 0.639471 0.803338 +vt 0.639471 0.723479 +vt 0.617951 0.803338 +vt 0.617950 0.723479 +vt 0.638114 0.808819 +vt 0.619308 0.808819 +vt 0.704033 0.723479 +vt 0.682513 0.803338 +vt 0.682513 0.723479 +vt 0.725554 0.723479 +vt 0.704033 0.803338 +vt 0.662350 0.808819 +vt 0.678358 0.813663 +vt 0.665147 0.813663 +vt 0.659635 0.808819 +vt 0.640829 0.808819 +vt 0.683870 0.808819 +vt 0.596430 0.803338 +vt 0.616593 0.808819 +vt 0.597787 0.808819 +vt 0.660992 0.803338 +vt 0.725554 0.803338 +vt 0.705391 0.808819 +vt 0.656838 0.813663 +vt 0.644648 0.818571 +vt 0.643626 0.813663 +vt 0.724197 0.808819 +vt 0.708188 0.813663 +vt 0.635317 0.813663 +vt 0.622105 0.813664 +vt 0.702676 0.808819 +vt 0.686667 0.813663 +vt 0.613796 0.813663 +vt 0.600584 0.813664 +vt 0.677336 0.818571 +vt 0.669395 0.824158 +vt 0.666169 0.818571 +vt 0.698857 0.818571 +vt 0.687690 0.818571 +vt 0.601607 0.818571 +vt 0.720377 0.818571 +vt 0.709210 0.818571 +vt 0.623128 0.818571 +vt 0.652589 0.824158 +vt 0.647874 0.836146 +vt 0.647874 0.824158 +vt 0.712436 0.824158 +vt 0.631069 0.824158 +vt 0.626354 0.824158 +vt 0.655815 0.818571 +vt 0.695631 0.824158 +vt 0.690916 0.824158 +vt 0.612774 0.818571 +vt 0.604833 0.824158 +vt 0.792017 0.852551 +vt 0.796100 0.850193 +vt 0.800184 0.852551 +vt 0.690916 0.836146 +vt 0.609548 0.824158 +vt 0.604833 0.836146 +vt 0.674110 0.824158 +vt 0.669395 0.836146 +vt 0.717151 0.824158 +vt 0.712436 0.836146 +vt 0.626354 0.836146 +vt 0.638114 0.717999 +vt 0.596430 0.723479 +vt 0.665147 0.713154 +vt 0.681155 0.717999 +vt 0.662349 0.717999 +vt 0.659635 0.717999 +vt 0.702676 0.717999 +vt 0.597787 0.717999 +vt 0.705391 0.717999 +vt 0.644648 0.708247 +vt 0.656837 0.713154 +vt 0.643626 0.713154 +vt 0.721400 0.713154 +vt 0.724197 0.717999 +vt 0.619308 0.717999 +vt 0.635317 0.713154 +vt 0.640829 0.717999 +vt 0.686667 0.713154 +vt 0.683870 0.717999 +vt 0.613796 0.713154 +vt 0.616593 0.717999 +vt 0.669395 0.702659 +vt 0.677336 0.708246 +vt 0.666169 0.708246 +vt 0.698856 0.708246 +vt 0.699879 0.713154 +vt 0.601607 0.708247 +vt 0.600584 0.713154 +vt 0.678358 0.713154 +vt 0.708188 0.713154 +vt 0.720377 0.708246 +vt 0.623127 0.708247 +vt 0.622105 0.713154 +vt 0.647874 0.690671 +vt 0.652589 0.702659 +vt 0.647874 0.702659 +vt 0.712436 0.702659 +vt 0.709210 0.708246 +vt 0.631068 0.702659 +vt 0.634294 0.708247 +vt 0.655815 0.708246 +vt 0.687690 0.708246 +vt 0.695631 0.702659 +vt 0.609547 0.702659 +vt 0.612773 0.708247 +vt 0.696809 0.885813 +vt 0.696809 0.881098 +vt 0.700893 0.878741 +vt 0.690916 0.690671 +vt 0.690915 0.702659 +vt 0.604832 0.690672 +vt 0.604832 0.702659 +vt 0.669395 0.690672 +vt 0.674110 0.702659 +vt 0.712436 0.690672 +vt 0.717151 0.702659 +vt 0.626354 0.690671 +vt 0.626353 0.702659 +vt 0.539489 0.662552 +vt 0.530537 0.626566 +vt 0.541470 0.624156 +vt 0.521994 0.657280 +vt 0.522018 0.631474 +vt 0.512477 0.654813 +vt 0.512497 0.633922 +vt 0.567104 0.656501 +vt 0.559023 0.632614 +vt 0.568376 0.635647 +vt 0.557452 0.658376 +vt 0.550823 0.627189 +vt 0.548654 0.662764 +vt 0.527522 0.698874 +vt 0.530503 0.662204 +vt 0.521331 0.666550 +vt 0.519173 0.693104 +vt 0.511331 0.668282 +vt 0.567457 0.691304 +vt 0.557405 0.667647 +vt 0.567145 0.670010 +vt 0.549187 0.699089 +vt 0.537876 0.738665 +vt 0.538860 0.699091 +vt 0.518013 0.733188 +vt 0.518013 0.704364 +vt 0.507381 0.707109 +vt 0.569318 0.707322 +vt 0.558690 0.733388 +vt 0.558691 0.704578 +vt 0.537662 0.775156 +vt 0.527522 0.738678 +vt 0.519390 0.770224 +vt 0.518914 0.743857 +vt 0.509619 0.767888 +vt 0.509234 0.746544 +vt 0.565380 0.769400 +vt 0.557526 0.744628 +vt 0.567103 0.747937 +vt 0.555399 0.771140 +vt 0.549185 0.738876 +vt 0.536415 0.808349 +vt 0.528179 0.775090 +vt 0.519937 0.803468 +vt 0.520232 0.779548 +vt 0.511381 0.781718 +vt 0.562846 0.782540 +vt 0.553741 0.804033 +vt 0.554066 0.780145 +vt 0.546247 0.775488 +vt 0.534853 0.846711 +vt 0.527772 0.808121 +vt 0.517338 0.838217 +vt 0.518971 0.812483 +vt 0.509324 0.814332 +vt 0.563947 0.815884 +vt 0.554383 0.839383 +vt 0.554368 0.813416 +vt 0.545798 0.808475 +vt 0.743325 0.846202 +vt 0.734511 0.780557 +vt 0.743325 0.780557 +vt 0.734511 0.846202 +vt 0.725698 0.780557 +vt 0.778577 0.846202 +vt 0.769764 0.780557 +vt 0.778577 0.780557 +vt 0.752138 0.861467 +vt 0.743325 0.861467 +vt 0.738918 0.853835 +vt 0.769764 0.846202 +vt 0.760951 0.780557 +vt 0.760951 0.846202 +vt 0.752138 0.780557 +vt 0.743325 0.765292 +vt 0.752138 0.765292 +vt 0.756544 0.772924 +vt 0.598904 0.450451 +vt 0.597400 0.428674 +vt 0.598904 0.428674 +vt 0.752138 0.846202 +vt 0.597400 0.450451 +vt 0.595510 0.428674 +vt 0.597397 0.427170 +vt 0.595507 0.427170 +vt 0.594007 0.428674 +vt 0.595510 0.450451 +vt 0.594007 0.450451 +vt 0.597397 0.451954 +vt 0.172227 0.765938 +vt 0.166938 0.740681 +vt 0.172228 0.740681 +vt 0.172227 0.715424 +vt 0.166938 0.866966 +vt 0.172227 0.841709 +vt 0.172228 0.866966 +vt 0.166938 0.841709 +vt 0.172227 0.816452 +vt 0.152869 0.717751 +vt 0.166938 0.715424 +vt 0.166938 0.816452 +vt 0.172227 0.791195 +vt 0.166938 0.765938 +vt 0.187088 0.864576 +vt 0.216258 0.756632 +vt 0.198414 0.746330 +vt 0.216258 0.715424 +vt 0.166938 0.791195 +vt 0.152869 0.814126 +vt 0.152869 0.793522 +vt 0.152870 0.743008 +vt 0.152870 0.864640 +vt 0.152869 0.844036 +vt 0.152869 0.788868 +vt 0.152869 0.768265 +vt 0.152869 0.818779 +vt 0.187087 0.814062 +vt 0.194168 0.797673 +vt 0.194168 0.809974 +vt 0.187088 0.768328 +vt 0.187087 0.788806 +vt 0.187088 0.839319 +vt 0.187088 0.717814 +vt 0.187088 0.738291 +vt 0.187088 0.743071 +vt 0.187088 0.763549 +vt 0.708834 0.775416 +vt 0.713051 0.763876 +vt 0.713051 0.774656 +vt 0.187088 0.844099 +vt 0.194169 0.860488 +vt 0.194169 0.747160 +vt 0.194169 0.759461 +vt 0.194169 0.772417 +vt 0.194168 0.784717 +vt 0.187087 0.818842 +vt 0.194169 0.835231 +vt 0.194169 0.721902 +vt 0.194169 0.734203 +vt 0.722416 0.768920 +vt 0.713080 0.763529 +vt 0.713080 0.752749 +vt 0.708834 0.813629 +vt 0.713051 0.825169 +vt 0.708834 0.825930 +vt 0.708834 0.712601 +vt 0.713051 0.724142 +vt 0.708834 0.724902 +vt 0.708834 0.788372 +vt 0.713051 0.799913 +vt 0.708834 0.800673 +vt 0.708834 0.851187 +vt 0.713051 0.839646 +vt 0.713051 0.850427 +vt 0.708834 0.737858 +vt 0.713051 0.749399 +vt 0.708834 0.750159 +vt 0.294370 0.288682 +vt 0.282009 0.316260 +vt 0.282523 0.290958 +vt 0.111872 0.368366 +vt 0.117819 0.383109 +vt 0.105182 0.379030 +vt 0.244750 0.469833 +vt 0.236614 0.419488 +vt 0.244750 0.418305 +vt 0.291396 0.345771 +vt 0.296207 0.414923 +vt 0.284577 0.418229 +vt 0.142062 0.327911 +vt 0.154598 0.277537 +vt 0.154598 0.326756 +vt 0.352881 0.428986 +vt 0.327695 0.467098 +vt 0.327695 0.421040 +vt 0.236614 0.468651 +vt 0.222384 0.425600 +vt 0.113833 0.390300 +vt 0.101197 0.386221 +vt 0.239145 0.411717 +vt 0.236151 0.397828 +vt 0.244213 0.399443 +vt 0.142062 0.276383 +vt 0.133926 0.326728 +vt 0.133926 0.277565 +vt 0.224344 0.387806 +vt 0.215554 0.387155 +vt 0.218049 0.381113 +vt 0.101197 0.401708 +vt 0.219277 0.400080 +vt 0.119696 0.283678 +vt 0.101197 0.314470 +vt 0.107733 0.289824 +vt 0.107733 0.314470 +vt 0.119696 0.320616 +vt 0.222384 0.462538 +vt 0.215554 0.431746 +vt 0.113834 0.405787 +vt 0.108641 0.412910 +vt 0.151062 0.327987 +vt 0.195826 0.350407 +vt 0.210708 0.367530 +vt 0.196826 0.288518 +vt 0.208893 0.312342 +vt 0.196468 0.315696 +vt 0.139544 0.333726 +vt 0.215478 0.378614 +vt 0.316497 0.338796 +vt 0.308068 0.409865 +vt 0.259909 0.292936 +vt 0.247128 0.311195 +vt 0.247433 0.294457 +vt 0.319951 0.361232 +vt 0.312942 0.401961 +vt 0.259522 0.313253 +vt 0.209234 0.292024 +vt 0.218022 0.310674 +vt 0.231455 0.310275 +vt 0.231736 0.294769 +vt 0.218322 0.293936 +vt 0.160233 0.329406 +vt 0.186236 0.342290 +vt 0.319951 0.373800 +vt 0.317454 0.389300 +vt 0.255963 0.419460 +vt 0.269653 0.418891 +vt 0.255963 0.468679 +vt 0.283349 0.419794 +vt 0.269653 0.469247 +vt 0.179002 0.326772 +vt 0.182793 0.279386 +vt 0.182793 0.324907 +vt 0.166800 0.327325 +vt 0.179002 0.277522 +vt 0.166800 0.276969 +vt 0.251604 0.413517 +vt 0.255306 0.397444 +vt 0.263694 0.415262 +vt 0.268904 0.395754 +vt 0.275783 0.417007 +vt 0.127120 0.344105 +vt 0.149936 0.363391 +vt 0.124858 0.347674 +vt 0.136609 0.366672 +vt 0.118365 0.358020 +vt 0.126522 0.375945 +vt 0.189270 0.381869 +vt 0.129617 0.340179 +vt 0.154838 0.362201 +vt 0.186749 0.281836 +vt 0.186749 0.322457 +vt 0.288046 0.466506 +vt 0.283349 0.468344 +vt 0.288046 0.421633 +vt 0.280030 0.387717 +vt 0.279968 0.417592 +vt 0.284109 0.384750 +vt 0.736257 0.749904 +vt 0.720981 0.735530 +vt 0.737601 0.735936 +vt 0.692257 0.749976 +vt 0.667660 0.739250 +vt 0.690864 0.735991 +vt 0.656960 0.729484 +vt 0.671630 0.727494 +vt 0.759218 0.752722 +vt 0.760973 0.739048 +vt 0.655240 0.754127 +vt 0.654630 0.741140 +vt 0.699236 0.763166 +vt 0.729711 0.786304 +vt 0.699401 0.786517 +vt 0.672000 0.720136 +vt 0.659437 0.673315 +vt 0.674733 0.671568 +vt 0.756640 0.727337 +vt 0.690778 0.721089 +vt 0.737245 0.669306 +vt 0.720921 0.712637 +vt 0.721119 0.668222 +vt 0.770995 0.729067 +vt 0.775102 0.740741 +vt 0.691946 0.668674 +vt 0.707690 0.712575 +vt 0.691181 0.713632 +vt 0.737660 0.721120 +vt 0.756168 0.720079 +vt 0.759698 0.661123 +vt 0.754034 0.672902 +vt 0.737267 0.713753 +vt 0.721068 0.720172 +vt 0.708242 0.664474 +vt 0.730412 0.646622 +vt 0.721161 0.664626 +vt 0.693252 0.655628 +vt 0.708200 0.668070 +vt 0.773373 0.754463 +vt 0.707499 0.735519 +vt 0.707983 0.750017 +vt 0.720616 0.749928 +vt 0.276862 0.356559 +vt 0.290431 0.341211 +vt 0.290344 0.356570 +vt 0.707508 0.720200 +vt 0.307023 0.342159 +vt 0.730695 0.622609 +vt 0.699417 0.646258 +vt 0.699700 0.622244 +vt 0.729546 0.762953 +vt 0.260141 0.342128 +vt 0.260227 0.357030 +vt 0.669837 0.659434 +vt 0.736442 0.656278 +vt 0.718696 0.665604 +vt 0.637125 0.740104 +vt 0.638041 0.728257 +vt 0.657420 0.722230 +vt 0.638442 0.721194 +vt 0.639290 0.674330 +vt 0.657986 0.660330 +vt 0.768416 0.675386 +vt 0.770534 0.721953 +vt 0.705585 0.611441 +vt 0.725065 0.611670 +vt 0.705124 0.799693 +vt 0.468409 0.803653 +vt 0.432321 0.777944 +vt 0.468147 0.777333 +vt 0.467547 0.751090 +vt 0.431825 0.960571 +vt 0.468094 0.935326 +vt 0.467293 0.961486 +vt 0.432446 0.934600 +vt 0.468625 0.909056 +vt 0.432887 0.908590 +vt 0.468914 0.882722 +vt 0.433124 0.882534 +vt 0.469005 0.856330 +vt 0.252713 0.926008 +vt 0.234184 0.907479 +vt 0.297448 0.881274 +vt 0.433163 0.856431 +vt 0.468870 0.829966 +vt 0.433008 0.830309 +vt 0.402012 0.955428 +vt 0.397300 0.927800 +vt 0.404066 0.928173 +vt 0.687720 0.750985 +vt 0.680145 0.726425 +vt 0.686631 0.726623 +vt 0.405324 0.800871 +vt 0.399383 0.825394 +vt 0.398294 0.801032 +vt 0.405388 0.876012 +vt 0.397510 0.901583 +vt 0.399024 0.875931 +vt 0.397503 0.901726 +vt 0.405036 0.901915 +vt 0.403269 0.751934 +vt 0.398317 0.776869 +vt 0.397135 0.754788 +vt 0.405529 0.825455 +vt 0.398520 0.850403 +vt 0.399381 0.825522 +vt 0.404431 0.776697 +vt 0.398295 0.800898 +vt 0.398319 0.776992 +vt 0.405807 0.850546 +vt 0.399030 0.875799 +vt 0.398516 0.850542 +vt 0.680386 0.801069 +vt 0.672012 0.775951 +vt 0.680120 0.775770 +vt 0.686654 0.702459 +vt 0.680397 0.678377 +vt 0.685472 0.680379 +vt 0.685647 0.853251 +vt 0.678903 0.826776 +vt 0.685839 0.827317 +vt 0.685847 0.827174 +vt 0.687361 0.801521 +vt 0.686856 0.775994 +vt 0.680970 0.750833 +vt 0.687717 0.751113 +vt 0.686655 0.702582 +vt 0.680400 0.702433 +vt 0.685636 0.853391 +vt 0.676386 0.880012 +vt 0.678246 0.852673 +vt 0.687366 0.801389 +vt 0.686852 0.776133 +vt 0.666018 0.750825 +vt 0.672677 0.751098 +vt 0.672359 0.726775 +vt 0.672420 0.678157 +vt 0.670576 0.826799 +vt 0.671795 0.801161 +vt 0.672599 0.702801 +vt 0.669799 0.852532 +vt 0.375392 0.900738 +vt 0.367298 0.925768 +vt 0.368419 0.900106 +vt 0.665917 0.702651 +vt 0.667453 0.879204 +vt 0.663024 0.851996 +vt 0.664913 0.800603 +vt 0.665347 0.775609 +vt 0.666024 0.750692 +vt 0.665933 0.726588 +vt 0.665920 0.702524 +vt 0.666176 0.680584 +vt 0.663728 0.826328 +vt 0.664905 0.800741 +vt 0.369605 0.874566 +vt 0.363323 0.849412 +vt 0.370241 0.849510 +vt 0.375402 0.900600 +vt 0.376568 0.875150 +vt 0.377018 0.849885 +vt 0.370951 0.824801 +vt 0.377682 0.825235 +vt 0.377601 0.800869 +vt 0.371383 0.776907 +vt 0.377581 0.777061 +vt 0.373635 0.950910 +vt 0.374687 0.926405 +vt 0.377011 0.850018 +vt 0.377688 0.825102 +vt 0.371077 0.800659 +vt 0.377597 0.800998 +vt 0.377839 0.754993 +vt 0.371413 0.752320 +vt 0.360267 0.925582 +vt 0.347083 0.950103 +vt 0.348183 0.927438 +vt 0.364418 0.800713 +vt 0.364200 0.752350 +vt 0.361297 0.899912 +vt 0.362552 0.874407 +vt 0.364148 0.824770 +vt 0.364611 0.776997 +vt 0.366231 0.953475 +vt 0.350327 0.897110 +vt 0.341055 0.878800 +vt 0.351359 0.876119 +vt 0.352395 0.851288 +vt 0.353941 0.802724 +vt 0.353528 0.754710 +vt 0.350053 0.901736 +vt 0.353368 0.826592 +vt 0.354131 0.798530 +vt 0.354290 0.779011 +vt 0.341912 0.868436 +vt 0.337171 0.854714 +vt 0.342354 0.854099 +vt 0.352689 0.846873 +vt 0.343461 0.829337 +vt 0.344830 0.781891 +vt 0.337060 0.930341 +vt 0.344181 0.819416 +vt 0.344336 0.805617 +vt 0.344009 0.772085 +vt 0.343773 0.757947 +vt 0.339120 0.919252 +vt 0.339711 0.904527 +vt 0.337928 0.842538 +vt 0.336179 0.830746 +vt 0.338350 0.829930 +vt 0.339363 0.806307 +vt 0.338699 0.758796 +vt 0.334381 0.905110 +vt 0.335110 0.892381 +vt 0.335752 0.879332 +vt 0.339831 0.794720 +vt 0.339930 0.782587 +vt 0.330651 0.945008 +vt 0.331335 0.930918 +vt 0.331660 0.917230 +vt 0.328650 0.905805 +vt 0.332113 0.905944 +vt 0.337862 0.783423 +vt 0.328894 0.931793 +vt 0.334633 0.866535 +vt 0.334971 0.855547 +vt 0.337144 0.817725 +vt 0.337262 0.807149 +vt 0.336753 0.770554 +vt 0.336572 0.759719 +vt 0.333490 0.880141 +vt 0.941898 0.795080 +vt 0.941898 0.783551 +vt 0.969733 0.795080 +vt 0.332939 0.891354 +vt 0.330049 0.879972 +vt 0.335816 0.841579 +vt 0.332854 0.830634 +vt 0.337776 0.793850 +vt 0.334662 0.783397 +vt 0.328306 0.943900 +vt 0.325178 0.931613 +vt 0.331599 0.855443 +vt 0.334017 0.807113 +vt 0.333246 0.759774 +vt 0.428276 0.902463 +vt 0.428438 0.850443 +vt 0.427095 0.800329 +vt 0.425262 0.751105 +vt 0.426477 0.956538 +vt 0.673824 0.788881 +vt 0.671595 0.810654 +vt 0.670524 0.788997 +vt 0.673367 0.767296 +vt 0.670065 0.767319 +vt 0.670218 0.745637 +vt 0.670983 0.723967 +vt 0.673519 0.745706 +vt 0.675650 0.702584 +vt 0.672358 0.702328 +vt 0.674344 0.680736 +vt 0.675956 0.832101 +vt 0.674339 0.853928 +vt 0.672662 0.832310 +vt 0.678391 0.810766 +vt 0.680639 0.832492 +vt 0.678004 0.832445 +vt 0.661211 0.777994 +vt 0.658377 0.800847 +vt 0.658377 0.776825 +vt 0.796315 0.870850 +vt 0.818826 0.877857 +vt 0.796315 0.877857 +vt 0.661248 0.753053 +vt 0.663763 0.775775 +vt 0.661247 0.774736 +vt 0.677663 0.854079 +vt 0.651742 0.681492 +vt 0.653581 0.704758 +vt 0.651742 0.704003 +vt 0.818826 0.870850 +vt 0.841337 0.877858 +vt 0.661247 0.822256 +vt 0.663763 0.799534 +vt 0.663763 0.823294 +vt 0.677663 0.680829 +vt 0.680639 0.702416 +vt 0.678004 0.702463 +vt 0.661211 0.826039 +vt 0.658377 0.848891 +vt 0.658377 0.824869 +vt 0.661247 0.870850 +vt 0.683759 0.877858 +vt 0.661247 0.877858 +vt 0.670029 0.775151 +vt 0.668508 0.752015 +vt 0.670029 0.752639 +vt 0.678391 0.724142 +vt 0.661211 0.681906 +vt 0.658378 0.704758 +vt 0.658378 0.680736 +vt 0.683759 0.870850 +vt 0.706270 0.877857 +vt 0.661247 0.848092 +vt 0.663763 0.870813 +vt 0.661247 0.869775 +vt 0.681026 0.724095 +vt 0.678778 0.745822 +vt 0.651742 0.776069 +vt 0.653580 0.752802 +vt 0.653580 0.776825 +vt 0.706270 0.870850 +vt 0.728781 0.877857 +vt 0.670029 0.822670 +vt 0.668508 0.799534 +vt 0.670029 0.800159 +vt 0.681413 0.745775 +vt 0.679210 0.767454 +vt 0.651742 0.801602 +vt 0.653580 0.824869 +vt 0.651742 0.824113 +vt 0.728781 0.870850 +vt 0.751292 0.877857 +vt 0.661247 0.727217 +vt 0.663763 0.704496 +vt 0.663763 0.728256 +vt 0.681413 0.789133 +vt 0.678778 0.789086 +vt 0.661211 0.753972 +vt 0.658377 0.752802 +vt 0.751292 0.870850 +vt 0.773803 0.877857 +vt 0.670029 0.870189 +vt 0.668507 0.847054 +vt 0.670029 0.847678 +vt 0.651742 0.872158 +vt 0.653580 0.848891 +vt 0.653580 0.872914 +vt 0.773803 0.870850 +vt 0.670029 0.727631 +vt 0.668508 0.704496 +vt 0.670029 0.705120 +vt 0.668508 0.728256 +vt 0.668508 0.680736 +vt 0.668507 0.870813 +vt 0.663763 0.847054 +vt 0.668508 0.823294 +vt 0.668508 0.775775 +vt 0.663763 0.752015 +vt 0.670029 0.703872 +vt 0.670029 0.681360 +vt 0.670029 0.823918 +vt 0.661248 0.703457 +vt 0.663763 0.680736 +vt 0.670029 0.798910 +vt 0.670029 0.776399 +vt 0.661247 0.824332 +vt 0.661247 0.846015 +vt 0.670029 0.728880 +vt 0.661247 0.798496 +vt 0.661248 0.729294 +vt 0.661248 0.750977 +vt 0.658377 0.728780 +vt 0.658378 0.872914 +vt 0.653580 0.800847 +vt 0.651742 0.848136 +vt 0.661211 0.751633 +vt 0.661211 0.729950 +vt 0.651742 0.777580 +vt 0.651742 0.800091 +vt 0.651742 0.752047 +vt 0.653580 0.728780 +vt 0.661211 0.727611 +vt 0.661211 0.705928 +vt 0.661211 0.871744 +vt 0.661211 0.850061 +vt 0.651742 0.705514 +vt 0.651742 0.728025 +vt 0.661211 0.823699 +vt 0.661211 0.802016 +vt 0.593987 0.466928 +vt 0.536809 0.473554 +vt 0.536809 0.466928 +vt 0.593987 0.473554 +vt 0.536809 0.480180 +vt 0.593987 0.427170 +vt 0.536809 0.433796 +vt 0.536809 0.427170 +vt 0.593987 0.433796 +vt 0.536809 0.440423 +vt 0.593987 0.440423 +vt 0.536809 0.447049 +vt 0.593987 0.447049 +vt 0.536809 0.453675 +vt 0.564138 0.496197 +vt 0.557512 0.496197 +vt 0.552826 0.491512 +vt 0.593987 0.453675 +vt 0.536809 0.460302 +vt 0.593987 0.460302 +vt 0.548121 0.480200 +vt 0.552807 0.484886 +vt 0.552807 0.491512 +vt 0.657338 0.624156 +vt 0.684146 0.636043 +vt 0.657338 0.646468 +vt 0.596234 0.646468 +vt 0.609293 0.662148 +vt 0.596234 0.662148 +vt 0.644279 0.624156 +vt 0.635940 0.641988 +vt 0.635940 0.624156 +vt 0.644279 0.646468 +vt 0.657338 0.662148 +vt 0.644279 0.662148 +vt 0.644279 0.684460 +vt 0.657338 0.684460 +vt 0.617285 0.648848 +vt 0.635117 0.659768 +vt 0.617285 0.659768 +vt 0.609293 0.646468 +vt 0.635117 0.648848 +vt 0.635940 0.666628 +vt 0.686022 0.648617 +vt 0.697909 0.659999 +vt 0.686022 0.659999 +vt 0.684146 0.672573 +vt 0.684146 0.684460 +vt 0.569512 0.659999 +vt 0.569512 0.648617 +vt 0.684146 0.733070 +vt 0.657338 0.744957 +vt 0.657338 0.722645 +vt 0.609293 0.706965 +vt 0.596234 0.722645 +vt 0.596234 0.706965 +vt 0.644279 0.744957 +vt 0.635940 0.727125 +vt 0.644279 0.722645 +vt 0.657338 0.706965 +vt 0.644279 0.706965 +vt 0.644279 0.684653 +vt 0.657338 0.684653 +vt 0.635117 0.709345 +vt 0.617285 0.720265 +vt 0.617285 0.709345 +vt 0.609293 0.722645 +vt 0.635940 0.702485 +vt 0.697909 0.709114 +vt 0.686022 0.720496 +vt 0.686022 0.709114 +vt 0.684146 0.696540 +vt 0.569512 0.709114 +vt 0.687094 0.850835 +vt 0.668374 0.871028 +vt 0.668880 0.855092 +vt 0.755690 0.850835 +vt 0.742632 0.835156 +vt 0.755690 0.835156 +vt 0.708241 0.870993 +vt 0.719772 0.857405 +vt 0.716580 0.870969 +vt 0.700152 0.850835 +vt 0.687094 0.835156 +vt 0.700152 0.835156 +vt 0.695183 0.814998 +vt 0.695183 0.870993 +vt 0.734640 0.848456 +vt 0.720705 0.837535 +vt 0.734640 0.837535 +vt 0.720705 0.848456 +vt 0.708242 0.814998 +vt 0.719772 0.828586 +vt 0.668513 0.848686 +vt 0.652570 0.837305 +vt 0.668513 0.837305 +vt 0.668374 0.814963 +vt 0.782413 0.848686 +vt 0.507381 0.592589 +vt 0.517080 0.607896 +vt 0.507387 0.607900 +vt 0.650947 0.611955 +vt 0.650586 0.616094 +vt 0.646319 0.621727 +vt 0.666752 0.768747 +vt 0.686764 0.776291 +vt 0.667308 0.776511 +vt 0.803577 0.589880 +vt 0.803817 0.587267 +vt 0.806813 0.583472 +vt 0.841024 0.871221 +vt 0.814095 0.886695 +vt 0.814095 0.871221 +vt 0.914062 0.871221 +vt 0.887133 0.886695 +vt 0.887133 0.871221 +vt 0.984776 0.871221 +vt 0.960171 0.886695 +vt 0.960171 0.871221 +vt 0.652570 0.871221 +vt 0.767986 0.886695 +vt 0.652570 0.886695 +vt 0.527349 0.604901 +vt 0.825309 0.595589 +vt 0.825308 0.604911 +vt 0.665637 0.750916 +vt 0.686629 0.768163 +vt 0.665076 0.808360 +vt 0.655487 0.808168 +vt 0.655848 0.798318 +vt 0.656852 0.767886 +vt 0.656097 0.760783 +vt 0.760863 0.788053 +vt 0.751192 0.772277 +vt 0.760938 0.772323 +vt 0.662462 0.776147 +vt 0.751117 0.788007 +vt 0.730573 0.772179 +vt 0.666572 0.790660 +vt 0.686731 0.783381 +vt 0.686464 0.791526 +vt 0.685418 0.809662 +vt 0.702516 0.787776 +vt 0.720903 0.772133 +vt 0.720828 0.787863 +vt 0.694600 0.796708 +vt 0.693495 0.814770 +vt 0.685873 0.750109 +vt 0.694810 0.763131 +vt 0.730498 0.787909 +vt 0.667168 0.782974 +vt 0.662462 0.783303 +vt 0.694502 0.783418 +vt 0.693012 0.771912 +vt 0.694536 0.776328 +vt 0.702591 0.772046 +vt 0.652570 0.774891 +vt 0.652570 0.784558 +vt 0.692927 0.787866 +vt 0.753166 0.589107 +vt 0.780211 0.589523 +vt 0.517091 0.592585 +vt 0.780716 0.610920 +vt 0.753871 0.611342 +vt 0.806408 0.871221 +vt 0.775673 0.886695 +vt 0.775673 0.871221 +vt 0.812776 0.886695 +vt 0.769305 0.871221 +vt 0.767986 0.871221 +vt 0.769305 0.886695 +vt 0.806408 0.886695 +vt 0.879446 0.871221 +vt 0.848711 0.886695 +vt 0.848711 0.871221 +vt 0.885814 0.886695 +vt 0.842343 0.871221 +vt 0.841024 0.886695 +vt 0.842343 0.886695 +vt 0.885814 0.871221 +vt 0.952484 0.871221 +vt 0.921749 0.886695 +vt 0.921749 0.871221 +vt 0.958852 0.871221 +vt 0.958852 0.886695 +vt 0.915381 0.871221 +vt 0.914062 0.886695 +vt 0.915381 0.886695 +vt 0.952484 0.886695 +vt 0.727505 0.585511 +vt 0.753313 0.586332 +vt 0.756417 0.582443 +vt 0.777420 0.582866 +vt 0.780357 0.586873 +vt 0.727356 0.588687 +vt 0.695088 0.579087 +vt 0.723588 0.580023 +vt 0.690554 0.588399 +vt 0.648787 0.584252 +vt 0.690717 0.584368 +vt 0.518329 0.577020 +vt 0.644354 0.577019 +vt 0.645688 0.577706 +vt 0.825516 0.617637 +vt 0.806985 0.617940 +vt 0.806095 0.617494 +vt 0.803990 0.613178 +vt 0.780699 0.613575 +vt 0.777810 0.617541 +vt 0.756950 0.617979 +vt 0.728182 0.611771 +vt 0.753871 0.614124 +vt 0.728190 0.614946 +vt 0.691930 0.612062 +vt 0.724388 0.620358 +vt 0.695957 0.621276 +vt 0.691701 0.616067 +vt 0.074863 0.862419 +vt 0.041487 0.845907 +vt 0.074863 0.845907 +vt 0.208370 0.862419 +vt 0.174994 0.845907 +vt 0.208370 0.845907 +vt 0.174994 0.862419 +vt 0.141617 0.845907 +vt 0.759121 0.703643 +vt 0.763396 0.737251 +vt 0.760353 0.736143 +vt 0.207069 0.842175 +vt 0.786226 0.661385 +vt 0.787099 0.696141 +vt 0.783028 0.660488 +vt 0.786226 0.816865 +vt 0.787099 0.782109 +vt 0.790012 0.783704 +vt 0.738082 0.887901 +vt 0.749823 0.856123 +vt 0.740656 0.889867 +vt 0.760353 0.742107 +vt 0.762071 0.775942 +vt 0.759121 0.774607 +vt 0.130251 0.752410 +vt 0.117722 0.721111 +vt 0.133940 0.720097 +vt 0.129350 0.599029 +vt 0.108048 0.572898 +vt 0.123224 0.567088 +vt 0.130250 0.604925 +vt 0.117722 0.636224 +vt 0.114678 0.609569 +vt 0.134392 0.714149 +vt 0.119529 0.683889 +vt 0.135624 0.681650 +vt 0.129350 0.758306 +vt 0.108048 0.784437 +vt 0.113101 0.758089 +vt 0.323543 0.521306 +vt 0.178785 0.553868 +vt 0.179016 0.520310 +vt 0.323312 0.554864 +vt 0.191344 0.556367 +vt 0.188700 0.636714 +vt 0.196375 0.643810 +vt 0.177885 0.652869 +vt 0.208370 0.837350 +vt 0.240439 0.841159 +vt 0.209679 0.841159 +vt 0.302524 0.704634 +vt 0.178557 0.718309 +vt 0.196859 0.706096 +vt 0.109548 0.841159 +vt 0.141617 0.837350 +vt 0.140309 0.841159 +vt 0.459954 0.627010 +vt 0.454058 0.621089 +vt 0.461711 0.606364 +vt 0.076172 0.841159 +vt 0.108240 0.837350 +vt 0.106932 0.841159 +vt 0.074863 0.837350 +vt 0.042795 0.841159 +vt 0.041487 0.837350 +vt 0.173685 0.841159 +vt 0.174994 0.837350 +vt 0.241747 0.845907 +vt 0.209672 0.842175 +vt 0.240446 0.842175 +vt 0.073562 0.842175 +vt 0.073555 0.841159 +vt 0.106939 0.842175 +vt 0.076165 0.842175 +vt 0.176295 0.842175 +vt 0.207062 0.841159 +vt 0.009418 0.841159 +vt 0.040185 0.842175 +vt 0.009411 0.842175 +vt 0.311616 0.697812 +vt 0.323085 0.717307 +vt 0.446749 0.682132 +vt 0.454484 0.676563 +vt 0.461983 0.693911 +vt 0.454365 0.665148 +vt 0.461754 0.665035 +vt 0.324265 0.685344 +vt 0.313007 0.685763 +vt 0.788819 0.741504 +vt 0.781391 0.779289 +vt 0.782914 0.739125 +vt 0.782310 0.655784 +vt 0.769261 0.619554 +vt 0.775550 0.620541 +vt 0.757821 0.663828 +vt 0.767863 0.699988 +vt 0.761788 0.698570 +vt 0.765070 0.581275 +vt 0.758724 0.580767 +vt 0.757821 0.814422 +vt 0.767863 0.778262 +vt 0.763420 0.817174 +vt 0.747953 0.627546 +vt 0.757255 0.660122 +vt 0.754079 0.659487 +vt 0.790580 0.776227 +vt 0.791845 0.742874 +vt 0.758669 0.780554 +vt 0.754980 0.812868 +vt 0.758669 0.697696 +vt 0.747953 0.850704 +vt 0.757255 0.818128 +vt 0.750668 0.852470 +vt 0.785094 0.653973 +vt 0.778807 0.621194 +vt 0.776832 0.819223 +vt 0.781391 0.698961 +vt 0.763420 0.661076 +vt 0.776832 0.659028 +vt 0.756044 0.622613 +vt 0.769347 0.739125 +vt 0.756044 0.855638 +vt 0.109510 0.598506 +vt 0.083763 0.581008 +vt 0.104985 0.574914 +vt 0.111471 0.611347 +vt 0.113101 0.599246 +vt 0.119529 0.673446 +vt 0.115180 0.648167 +vt 0.118512 0.646637 +vt 0.114678 0.747766 +vt 0.114197 0.722120 +vt 0.104985 0.782421 +vt 0.109510 0.758829 +vt 0.718770 0.731477 +vt 0.697552 0.711798 +vt 0.718010 0.711444 +vt 0.111471 0.745988 +vt 0.092123 0.721600 +vt 0.116090 0.672172 +vt 0.093281 0.650986 +vt 0.116090 0.685162 +vt 0.093281 0.706349 +vt 0.094040 0.686315 +vt 0.114197 0.635214 +vt 0.089849 0.615816 +vt 0.696575 0.779319 +vt 0.689578 0.797508 +vt 0.691489 0.780776 +vt 0.718770 0.746773 +vt 0.697552 0.766452 +vt 0.698343 0.745577 +vt 0.716852 0.696192 +vt 0.694205 0.678176 +vt 0.714578 0.676274 +vt 0.708492 0.641465 +vt 0.692256 0.665421 +vt 0.688321 0.644905 +vt 0.708492 0.836785 +vt 0.692256 0.812829 +vt 0.712268 0.817096 +vt 0.716852 0.782058 +vt 0.694205 0.800074 +vt 0.696575 0.698931 +vt 0.689578 0.680743 +vt 0.687075 0.664353 +vt 0.683902 0.647814 +vt 0.688321 0.833345 +vt 0.687074 0.813897 +vt 0.670581 0.697077 +vt 0.650294 0.688013 +vt 0.669298 0.685843 +vt 0.693382 0.747415 +vt 0.672136 0.760694 +vt 0.672564 0.749395 +vt 0.666196 0.665540 +vt 0.664067 0.654436 +vt 0.683902 0.830436 +vt 0.666196 0.812710 +vt 0.675750 0.862842 +vt 0.659437 0.843826 +vt 0.680165 0.846590 +vt 0.669298 0.792407 +vt 0.670581 0.781173 +vt 0.645281 0.658038 +vt 0.664067 0.823815 +vt 0.647411 0.809107 +vt 0.651576 0.779003 +vt 0.792170 0.858787 +vt 0.837897 0.852498 +vt 0.837897 0.858787 +vt 0.792170 0.846209 +vt 0.792170 0.852498 +vt 0.792170 0.877654 +vt 0.837897 0.883942 +vt 0.792170 0.883942 +vt 0.792170 0.871365 +vt 0.837897 0.865076 +vt 0.837897 0.871365 +vt 0.792170 0.865076 +vt 0.881564 0.850656 +vt 0.877117 0.861392 +vt 0.866381 0.856945 +vt 0.314719 0.975612 +vt 0.326762 0.982391 +vt 0.313189 0.981932 +vt 0.301347 0.662214 +vt 0.196376 0.661927 +vt 0.324264 0.620387 +vt 0.311614 0.607920 +vt 0.323082 0.588424 +vt 0.177947 0.620066 +vt 0.168091 0.588566 +vt 0.178554 0.587429 +vt 0.176302 0.841159 +vt 0.167501 0.684689 +vt 0.167441 0.653416 +vt 0.189059 0.698860 +vt 0.188700 0.669022 +vt 0.177948 0.685671 +vt 0.634488 0.638596 +vt 0.638014 0.628528 +vt 0.640978 0.639439 +vt 0.837897 0.890231 +vt 0.173982 0.975612 +vt 0.184794 0.980700 +vt 0.173813 0.980786 +vt 0.161783 0.982106 +vt 0.186232 0.966456 +vt 0.290702 0.960924 +vt 0.290761 0.964910 +vt 0.340529 0.645113 +vt 0.446339 0.626918 +vt 0.446326 0.644424 +vt 0.679936 0.866077 +vt 0.685412 0.845918 +vt 0.653022 0.759969 +vt 0.176204 0.962749 +vt 0.186163 0.961764 +vt 0.314189 0.952419 +vt 0.300675 0.944255 +vt 0.317014 0.948953 +vt 0.109541 0.842175 +vt 0.140316 0.842175 +vt 0.452576 0.982507 +vt 0.463142 0.975612 +vt 0.465756 0.979239 +vt 0.788819 0.736746 +vt 0.787459 0.700886 +vt 0.659437 0.634425 +vt 0.656472 0.623513 +vt 0.442243 0.979216 +vt 0.442081 0.985101 +vt 0.290702 0.944238 +vt 0.299950 0.947451 +vt 0.300675 0.960908 +vt 0.299950 0.957711 +vt 0.314189 0.952744 +vt 0.299764 0.978453 +vt 0.310165 0.985594 +vt 0.298915 0.982521 +vt 0.289357 0.981499 +vt 0.289333 0.975612 +vt 0.337691 0.977558 +vt 0.098660 0.820501 +vt 0.102057 0.795077 +vt 0.105694 0.794611 +vt 0.446810 0.693938 +vt 0.454466 0.594878 +vt 0.446757 0.589328 +vt 0.461939 0.577590 +vt 0.745776 0.584818 +vt 0.080315 0.566105 +vt 0.095759 0.539076 +vt 0.102057 0.562258 +vt 0.691489 0.697474 +vt 0.638014 0.849722 +vt 0.656472 0.854737 +vt 0.446820 0.577560 +vt 0.738082 0.590349 +vt 0.749823 0.622128 +vt 0.746608 0.621735 +vt 0.121879 0.561277 +vt 0.098660 0.536834 +vt 0.113353 0.529892 +vt 0.243049 0.842175 +vt 0.273816 0.841159 +vt 0.273823 0.842175 +vt 0.740656 0.588383 +vt 0.083763 0.776327 +vt 0.693382 0.730835 +vt 0.692744 0.714006 +vt 0.337571 0.982619 +vt 0.160078 0.901277 +vt 0.122340 0.938934 +vt 0.085257 0.909698 +vt 0.275124 0.845907 +vt 0.705044 0.851687 +vt 0.699788 0.871034 +vt 0.142918 0.842175 +vt 0.326037 0.620144 +vt 0.331671 0.650833 +vt 0.326267 0.651299 +vt 0.330650 0.663037 +vt 0.324656 0.663275 +vt 0.330614 0.608328 +vt 0.324590 0.608016 +vt 0.332277 0.596183 +vt 0.327061 0.578210 +vt 0.340693 0.588559 +vt 0.331583 0.620575 +vt 0.326731 0.693126 +vt 0.332160 0.675176 +vt 0.041487 0.862419 +vt 0.008110 0.845907 +vt 0.777117 0.613889 +vt 0.768366 0.581679 +vt 0.121879 0.796058 +vt 0.134392 0.643185 +vt 0.745776 0.893432 +vt 0.705044 0.626563 +vt 0.679936 0.612173 +vt 0.699788 0.607216 +vt 0.680165 0.631660 +vt 0.675750 0.615409 +vt 0.008110 0.837350 +vt 0.790580 0.702023 +vt 0.634488 0.839654 +vt 0.632839 0.845723 +vt 0.233859 0.885432 +vt 0.175562 0.930199 +vt 0.175562 0.870923 +vt 0.340483 0.682895 +vt 0.340659 0.691513 +vt 0.454069 0.650265 +vt 0.328705 0.520310 +vt 0.341652 0.551659 +vt 0.327962 0.552552 +vt 0.340925 0.579939 +vt 0.327513 0.718940 +vt 0.341269 0.719879 +vt 0.459642 0.520310 +vt 0.446460 0.550286 +vt 0.445095 0.521164 +vt 0.459703 0.750615 +vt 0.446433 0.721309 +vt 0.461634 0.721227 +vt 0.341884 0.749217 +vt 0.445110 0.749566 +vt 0.342347 0.521361 +vt 0.672376 0.760954 +vt 0.666688 0.725988 +vt 0.672622 0.721033 +vt 0.315098 0.557219 +vt 0.191146 0.585104 +vt 0.404923 0.830258 +vt 0.398083 0.826306 +vt 0.404970 0.825822 +vt 0.672968 0.644290 +vt 0.668770 0.634152 +vt 0.673046 0.627943 +vt 0.171673 0.707536 +vt 0.175271 0.737367 +vt 0.171994 0.741994 +vt 0.296421 0.825822 +vt 0.302713 0.829258 +vt 0.296390 0.829743 +vt 0.177592 0.778384 +vt 0.173180 0.808813 +vt 0.172380 0.774160 +vt 0.331325 0.829448 +vt 0.302737 0.826185 +vt 0.331355 0.825966 +vt 0.386366 0.826227 +vt 0.398046 0.829783 +vt 0.386329 0.829722 +vt 0.357915 0.826055 +vt 0.357884 0.829634 +vt 0.175295 0.698725 +vt 0.171551 0.693345 +vt 0.713201 0.721362 +vt 0.713498 0.684307 +vt 0.672864 0.683977 +vt 0.666824 0.715921 +vt 0.177390 0.769698 +vt 0.028764 0.708208 +vt 0.124089 0.742320 +vt 0.113087 0.742395 +vt 0.669066 0.678666 +vt 0.327662 0.716011 +vt 0.296421 0.712823 +vt 0.331088 0.713489 +vt 0.331126 0.724012 +vt 0.299814 0.721363 +vt 0.296421 0.724239 +vt 0.300232 0.715750 +vt 0.296421 0.675999 +vt 0.299809 0.685664 +vt 0.296421 0.688736 +vt 0.327449 0.685745 +vt 0.331241 0.688518 +vt 0.327754 0.678912 +vt 0.331208 0.676084 +vt 0.300160 0.679045 +vt 0.296421 0.700860 +vt 0.300021 0.709721 +vt 0.296421 0.712663 +vt 0.327040 0.709681 +vt 0.331091 0.712270 +vt 0.327366 0.703877 +vt 0.331046 0.701249 +vt 0.300401 0.703801 +vt 0.133601 0.774424 +vt 0.133535 0.742255 +vt 0.113373 0.774562 +vt 0.095303 0.742516 +vt 0.105260 0.774617 +vt 0.095591 0.774683 +vt 0.327298 0.721488 +vt 0.080790 0.742616 +vt 0.018656 0.779631 +vt 0.018657 0.737143 +vt 0.124377 0.774487 +vt 0.088143 0.774734 +vt 0.081010 0.774783 +vt 0.454347 0.606253 +vt 0.714417 0.628363 +vt 0.714251 0.644710 +vt 0.004465 0.737143 +vt 0.004465 0.779631 +vt 0.108240 0.845907 +vt 0.108240 0.862419 +vt 0.178790 0.751868 +vt 0.323550 0.784426 +vt 0.179022 0.785426 +vt 0.191348 0.749370 +vt 0.323317 0.750868 +vt 0.769261 0.858696 +vt 0.782310 0.822466 +vt 0.775550 0.857709 +vt 0.765070 0.896975 +vt 0.774478 0.862345 +vt 0.785094 0.824277 +vt 0.778807 0.857057 +vt 0.763396 0.741000 +vt 0.115180 0.709168 +vt 0.118512 0.710698 +vt 0.672136 0.717557 +vt 0.792170 0.896520 +vt 0.792170 0.890231 +vt 0.837897 0.877654 +vt 0.176169 0.960371 +vt 0.160403 0.956475 +vt 0.165729 0.952744 +vt 0.176169 0.944787 +vt 0.160403 0.948683 +vt 0.176205 0.942410 +vt 0.186233 0.938703 +vt 0.186163 0.943395 +vt 0.672564 0.728855 +vt 0.653022 0.718281 +vt 0.173692 0.842175 +vt 0.142925 0.841159 +vt 0.095759 0.818259 +vt 0.080315 0.791229 +vt 0.340119 0.626273 +vt 0.241747 0.862419 +vt 0.777117 0.864362 +vt 0.768366 0.896571 +vt 0.241747 0.837350 +vt 0.243056 0.841159 +vt 0.328195 0.750550 +vt 0.461603 0.550382 +vt 0.191149 0.720633 +vt 0.315102 0.748513 +vt 0.752577 0.727783 +vt 0.769071 0.678888 +vt 0.768925 0.727831 +vt 0.008110 0.885244 +vt 0.062431 0.862744 +vt 0.084932 0.917065 +vt 0.168124 0.784477 +vt 0.167902 0.752483 +vt 0.321232 0.652866 +vt 0.309396 0.669478 +vt 0.168118 0.521260 +vt 0.167500 0.621048 +vt 0.167962 0.750574 +vt 0.167740 0.718579 +vt 0.167957 0.555163 +vt 0.168094 0.717172 +vt 0.647287 0.750954 +vt 0.647048 0.757238 +vt 0.647287 0.727296 +vt 0.653450 0.729580 +vt 0.645265 0.697427 +vt 0.651576 0.699247 +vt 0.640993 0.667804 +vt 0.647411 0.669143 +vt 0.640993 0.810447 +vt 0.645281 0.820212 +vt 0.639808 0.816623 +vt 0.650294 0.790237 +vt 0.645265 0.780824 +vt 0.752690 0.827705 +vt 0.769039 0.876649 +vt 0.752691 0.876650 +vt 0.752723 0.678839 +vt 0.188734 0.685530 +vt 0.309395 0.636254 +vt 0.301347 0.643518 +vt 0.302522 0.601098 +vt 0.196857 0.599641 +vt 0.189057 0.606877 +vt 0.004465 0.913646 +vt 0.018781 0.871200 +vt 0.018657 0.913687 +vt 0.672835 0.910963 +vt 0.713482 0.871066 +vt 0.714119 0.910665 +vt 0.714237 0.927013 +vt 0.240401 0.825822 +vt 0.199776 0.842354 +vt 0.173390 0.842473 +vt 0.088253 0.876301 +vt 0.080806 0.908398 +vt 0.081120 0.876231 +vt 0.095701 0.876374 +vt 0.029467 0.840968 +vt 0.105370 0.876468 +vt 0.296421 0.724400 +vt 0.327298 0.727151 +vt 0.299814 0.727276 +vt 0.095318 0.908540 +vt 0.105209 0.908637 +vt 0.331091 0.689289 +vt 0.327366 0.697682 +vt 0.327040 0.691878 +vt 0.113483 0.876547 +vt 0.124104 0.908821 +vt 0.113102 0.908714 +vt 0.331210 0.835232 +vt 0.327723 0.844838 +vt 0.327418 0.838005 +vt 0.133710 0.876745 +vt 0.172008 0.909288 +vt 0.133550 0.908914 +vt 0.300021 0.691838 +vt 0.296421 0.700699 +vt 0.331046 0.700311 +vt 0.296421 0.688896 +vt 0.300401 0.697758 +vt 0.299777 0.838086 +vt 0.296390 0.847752 +vt 0.331177 0.847666 +vt 0.296390 0.835015 +vt 0.300129 0.844706 +vt 0.327662 0.732627 +vt 0.296421 0.735815 +vt 0.300232 0.732889 +vt 0.331126 0.724626 +vt 0.331088 0.735149 +vt 0.669034 0.876576 +vt 0.672848 0.871276 +vt 0.171585 0.943745 +vt 0.171421 0.957935 +vt 0.028679 0.942652 +vt 0.177485 0.881600 +vt 0.177108 0.906811 +vt 0.666901 0.839315 +vt 0.672715 0.834220 +vt 0.672586 0.794298 +vt 0.713295 0.834010 +vt 0.175181 0.952567 +vt 0.331337 0.834362 +vt 0.357883 0.830819 +vt 0.357897 0.834398 +vt 0.386328 0.830866 +vt 0.398045 0.830860 +vt 0.386349 0.834361 +vt 0.302720 0.834007 +vt 0.331324 0.830879 +vt 0.177713 0.872915 +vt 0.172488 0.877123 +vt 0.296402 0.834340 +vt 0.302711 0.830933 +vt 0.175271 0.913925 +vt 0.174940 0.940932 +vt 0.668607 0.921090 +vt 0.668584 0.908276 +vt 0.404924 0.830418 +vt 0.398066 0.834337 +vt 0.666796 0.829248 +vt 0.666694 0.797957 +vt 0.240142 0.825662 +vt 0.029359 0.824084 +vt 0.459981 0.644320 +vt 0.938208 0.866046 +vt 0.778259 0.876294 +vt 0.778259 0.866046 +vt 0.938208 0.876294 +vt 0.778259 0.886541 +vt 0.938208 0.804562 +vt 0.778259 0.814809 +vt 0.778259 0.804562 +vt 0.938208 0.814809 +vt 0.778259 0.825057 +vt 0.938208 0.825057 +vt 0.778259 0.835304 +vt 0.938208 0.835304 +vt 0.778259 0.845551 +vt 0.947456 0.835304 +vt 0.938208 0.845551 +vt 0.778259 0.855799 +vt 0.938208 0.855799 +vt 0.769454 0.844635 +vt 0.769454 0.836221 +vt 0.890976 0.635115 +vt 0.876612 0.641065 +vt 0.870662 0.626701 +vt 0.769454 0.824140 +vt 0.769454 0.815726 +vt 0.769454 0.854882 +vt 0.769454 0.846468 +vt 0.769454 0.877211 +vt 0.769454 0.825973 +vt 0.769454 0.865130 +vt 0.769454 0.856716 +vt 0.769454 0.866963 +vt 0.769454 0.805478 +vt 0.947456 0.866046 +vt 0.949930 0.856652 +vt 0.949930 0.865193 +vt 0.947456 0.876294 +vt 0.947456 0.814809 +vt 0.947456 0.845551 +vt 0.947456 0.825057 +vt 0.947456 0.855799 +vt 0.947456 0.886541 +vt 0.938208 0.886541 +vt 0.949930 0.844698 +vt 0.949930 0.815663 +vt 0.949930 0.824203 +vt 0.949930 0.877147 +vt 0.949930 0.885688 +vt 0.949930 0.846405 +vt 0.949930 0.854946 +vt 0.949930 0.834450 +vt 0.949930 0.805415 +vt 0.949930 0.813956 +vt 0.949930 0.875440 +vt 0.953397 0.813214 +vt 0.875653 0.675513 +vt 0.870662 0.670523 +vt 0.887700 0.663466 +vt 0.949930 0.866900 +vt 0.953397 0.874699 +vt 0.953397 0.864451 +vt 0.953397 0.836899 +vt 0.953397 0.843956 +vt 0.953397 0.816404 +vt 0.953397 0.823462 +vt 0.953397 0.877889 +vt 0.953397 0.884946 +vt 0.953397 0.854204 +vt 0.953397 0.826652 +vt 0.953397 0.833709 +vt 0.594130 0.814809 +vt 0.754079 0.825057 +vt 0.594130 0.825057 +vt 0.754079 0.804562 +vt 0.754079 0.814809 +vt 0.594130 0.876294 +vt 0.754079 0.886541 +vt 0.594130 0.886541 +vt 0.594130 0.866046 +vt 0.754079 0.876294 +vt 0.594130 0.855799 +vt 0.754079 0.866046 +vt 0.594130 0.845552 +vt 0.754079 0.855799 +vt 0.763327 0.855799 +vt 0.594130 0.835304 +vt 0.754079 0.845552 +vt 0.754079 0.835304 +vt 0.585325 0.846468 +vt 0.870662 0.606202 +vt 0.885026 0.600252 +vt 0.890976 0.614616 +vt 0.585325 0.866963 +vt 0.585325 0.836221 +vt 0.585325 0.813892 +vt 0.594130 0.804562 +vt 0.585325 0.865130 +vt 0.585325 0.825973 +vt 0.585325 0.824140 +vt 0.585325 0.885625 +vt 0.765801 0.825910 +vt 0.763327 0.835304 +vt 0.763327 0.825057 +vt 0.763327 0.814809 +vt 0.763327 0.876294 +vt 0.763327 0.845551 +vt 0.763327 0.866046 +vt 0.763327 0.804562 +vt 0.765801 0.846405 +vt 0.765801 0.875440 +vt 0.765801 0.813956 +vt 0.765801 0.836158 +vt 0.765801 0.856652 +vt 0.765801 0.885688 +vt 0.763327 0.886541 +vt 0.765801 0.815663 +vt 0.769268 0.877889 +vt 0.765801 0.877147 +vt 0.887700 0.653299 +vt 0.882710 0.658289 +vt 0.875653 0.641251 +vt 0.769268 0.816404 +vt 0.765801 0.824203 +vt 0.769268 0.833709 +vt 0.765801 0.834451 +vt 0.769268 0.854204 +vt 0.765801 0.854946 +vt 0.765801 0.866900 +vt 0.769267 0.874699 +vt 0.765801 0.805415 +vt 0.769268 0.813214 +vt 0.769267 0.836899 +vt 0.765801 0.844698 +vt 0.769268 0.864451 +vt 0.765801 0.865193 +vt 0.683708 0.729337 +vt 0.660202 0.741608 +vt 0.680517 0.745595 +vt 0.711332 0.751643 +vt 0.728929 0.755097 +vt 0.714523 0.735385 +vt 0.666440 0.724518 +vt 0.669643 0.729946 +vt 0.652965 0.726115 +vt 0.695887 0.785671 +vt 0.701756 0.768726 +vt 0.803080 0.643478 +vt 0.790810 0.619972 +vt 0.786822 0.640287 +vt 0.780775 0.671102 +vt 0.777321 0.688699 +vt 0.797033 0.674292 +vt 0.802472 0.629412 +vt 0.806303 0.612735 +vt 0.807899 0.626210 +vt 0.746746 0.655656 +vt 0.763692 0.661526 +vt 0.604415 0.743826 +vt 0.580909 0.756097 +vt 0.601224 0.760084 +vt 0.632039 0.766132 +vt 0.649636 0.769586 +vt 0.635230 0.749874 +vt 0.587148 0.739007 +vt 0.590350 0.744435 +vt 0.573672 0.740604 +vt 0.616594 0.800160 +vt 0.622463 0.783215 +vt 0.706533 0.664337 +vt 0.690884 0.675212 +vt 0.702546 0.684653 +vt 0.712581 0.633523 +vt 0.690275 0.661147 +vt 0.716034 0.615926 +vt 0.696322 0.630332 +vt 0.685456 0.678415 +vt 0.687052 0.691890 +vt 0.746609 0.648968 +vt 0.729663 0.643099 +vt 0.759810 0.745595 +vt 0.748935 0.729946 +vt 0.739495 0.741608 +vt 0.790624 0.751643 +vt 0.763001 0.729337 +vt 0.808222 0.755097 +vt 0.793815 0.735385 +vt 0.732258 0.726115 +vt 0.745733 0.724518 +vt 0.775179 0.785671 +vt 0.781049 0.768726 +vt 0.785825 0.837412 +vt 0.770176 0.848286 +vt 0.781838 0.857727 +vt 0.791873 0.806597 +vt 0.769567 0.834221 +vt 0.779069 0.785809 +vt 0.775615 0.803406 +vt 0.764748 0.851489 +vt 0.766345 0.864964 +vt 0.825901 0.822042 +vt 0.808956 0.816173 +vt 0.683708 0.823119 +vt 0.660202 0.835390 +vt 0.680517 0.839377 +vt 0.714523 0.829166 +vt 0.711332 0.845425 +vt 0.732120 0.832620 +vt 0.669642 0.823728 +vt 0.652965 0.819896 +vt 0.666440 0.818300 +vt 0.695887 0.879453 +vt 0.701756 0.862507 +vt 0.604415 0.650045 +vt 0.580909 0.662315 +vt 0.601224 0.666303 +vt 0.635230 0.656092 +vt 0.632039 0.672350 +vt 0.652827 0.659546 +vt 0.587147 0.645226 +vt 0.590350 0.650653 +vt 0.573672 0.646822 +vt 0.616594 0.706379 +vt 0.622463 0.689433 +vt 0.500000 0.187500 +vt 0.801034 0.693998 +vt 0.822057 0.672975 +vt 0.851789 0.672975 +vt 0.872812 0.723730 +vt 0.851789 0.744753 +vt 0.894049 0.672975 +vt 0.923781 0.672975 +vt 0.944804 0.693998 +vt 0.923781 0.744753 +vt 0.873025 0.723730 +vt 0.500000 0.187500 +vt 0.729042 0.765990 +vt 0.750065 0.744967 +vt 0.779797 0.744967 +vt 0.800820 0.795722 +vt 0.779797 0.816745 +vt 0.822057 0.816958 +vt 0.851789 0.816958 +vt 0.872812 0.837982 +vt 0.851789 0.888737 +vt 0.801034 0.867713 +vt 0.500000 0.187500 +vt 0.657050 0.693998 +vt 0.678074 0.672975 +vt 0.707805 0.672975 +vt 0.728829 0.723730 +vt 0.707805 0.744753 +vt 0.678074 0.888950 +vt 0.707805 0.888950 +vt 0.728829 0.909974 +vt 0.707805 0.960729 +vt 0.657050 0.939705 +vt 0.500000 0.187500 +vt 0.729042 0.693998 +vt 0.750065 0.672975 +vt 0.779797 0.672975 +vt 0.800820 0.723730 +vt 0.779797 0.744753 +vt 0.678074 0.816958 +vt 0.707805 0.816958 +vt 0.728829 0.837982 +vt 0.707805 0.888737 +vt 0.657050 0.867713 +vt 0.500000 0.187500 +vt 0.657050 0.765990 +vt 0.678074 0.744967 +vt 0.707805 0.744967 +vt 0.728829 0.795722 +vt 0.707805 0.816745 +vt 0.822057 0.744967 +vt 0.851789 0.744967 +vt 0.872812 0.765990 +vt 0.851789 0.816745 +vt 0.801034 0.795722 +vt 0.806841 0.765292 +vt 0.710865 0.878741 +vt 0.721442 0.884848 +vt 0.717917 0.890954 +vt 0.806842 0.807599 +vt 0.806842 0.807743 +vt 0.596430 0.901555 +vt 0.608643 0.901555 +vt 0.608643 0.908607 +vt 0.806842 0.850049 +vt 0.812236 0.690671 +vt 0.707339 0.894624 +vt 0.719553 0.894624 +vt 0.719553 0.901676 +vt 0.812236 0.732978 +vt 0.797412 0.757947 +vt 0.797412 0.750895 +vt 0.803518 0.747369 +vt 0.707195 0.836290 +vt 0.797412 0.743699 +vt 0.797412 0.736648 +vt 0.803518 0.733122 +vt 0.692227 0.836290 +vt 0.778722 0.854590 +vt 0.778722 0.847539 +vt 0.784828 0.844013 +vt 0.722164 0.836290 +vt 0.596430 0.849086 +vt 0.613617 0.881319 +vt 0.805115 0.764122 +vt 0.870166 0.638468 +vt 0.609375 0.464844 +vt 0.782135 0.927723 +vt 0.799159 0.908557 +vt 0.782041 0.907319 +vt 0.669086 0.929943 +vt 0.785608 0.701921 +vt 0.808427 0.791102 +vt 0.870476 0.701735 +vt 0.667969 0.500000 +vt 0.821314 0.886728 +vt 0.732575 0.919401 +vt 0.783343 0.887966 +vt 0.873347 0.887966 +vt 0.890464 0.886728 +vt 0.767005 0.886728 +vt 0.785608 0.701735 +vt 0.803093 0.618341 +vt 0.808253 0.680551 +vt 0.791846 0.843869 +vt 0.691023 0.878741 +vt 0.696665 0.884383 +vt 0.696665 0.892362 +vt 0.683044 0.898004 +vt 0.677402 0.892362 +vt 0.778732 0.813478 +vt 0.778722 0.842943 +vt 0.778738 0.793834 +vt 0.778725 0.833121 +vt 0.275353 0.772973 +vt 0.271410 0.782495 +vt 0.265832 0.782495 +vt 0.261888 0.778551 +vt 0.226789 0.769029 +vt 0.261888 0.740142 +vt 0.265832 0.730620 +vt 0.271410 0.730620 +vt 0.598130 0.846904 +vt 0.507381 0.896473 +vt 0.652570 0.902783 +vt 0.715450 0.624156 +vt 0.760292 0.671614 +vt 0.713777 0.658057 +vt 0.740565 0.631120 +vt 0.808269 0.902783 +vt 0.652377 0.798594 +vt 0.764977 0.703371 +vt 0.594100 0.810061 +vt 0.232537 0.575325 +vt 0.094145 0.630642 +vt 0.329373 0.575325 +vt 0.423560 0.888745 +vt 0.405972 0.904028 +vt 0.356644 0.820388 +vt 0.363752 0.870173 +vt 0.375342 0.874430 +vt 0.334359 0.823674 +vt 0.397771 0.903092 +vt 0.670645 0.763117 +vt 0.740808 0.752231 +vt 0.716159 0.782535 +vt 0.693797 0.764744 +vt 0.662981 0.719872 +vt 0.725698 0.732079 +vt 0.797267 0.723741 +vt 0.681156 0.808819 +vt 0.721400 0.813663 +vt 0.699879 0.813663 +vt 0.634295 0.818571 +vt 0.652589 0.836146 +vt 0.800184 0.857266 +vt 0.796100 0.859624 +vt 0.792017 0.857266 +vt 0.695631 0.836146 +vt 0.609548 0.836146 +vt 0.674110 0.836146 +vt 0.717151 0.836146 +vt 0.631069 0.836146 +vt 0.652589 0.690671 +vt 0.704976 0.881099 +vt 0.704976 0.885814 +vt 0.700892 0.888171 +vt 0.695631 0.690671 +vt 0.609547 0.690672 +vt 0.674110 0.690672 +vt 0.717151 0.690671 +vt 0.631069 0.690672 +vt 0.509584 0.689778 +vt 0.557791 0.693952 +vt 0.507381 0.730443 +vt 0.569317 0.730645 +vt 0.511142 0.801081 +vt 0.562583 0.801877 +vt 0.525516 0.843657 +vt 0.508001 0.835164 +vt 0.563960 0.836904 +vt 0.545819 0.844334 +vt 0.725698 0.846202 +vt 0.756544 0.853835 +vt 0.738918 0.772924 +vt 0.595507 0.451954 +vt 0.152870 0.738355 +vt 0.198414 0.725726 +vt 0.234101 0.725726 +vt 0.234101 0.746330 +vt 0.152869 0.763611 +vt 0.152869 0.839383 +vt 0.187087 0.793585 +vt 0.708834 0.763115 +vt 0.194169 0.848187 +vt 0.194168 0.822930 +vt 0.722416 0.747359 +vt 0.731752 0.752749 +vt 0.731752 0.763529 +vt 0.713051 0.814389 +vt 0.713051 0.713361 +vt 0.713051 0.789132 +vt 0.708834 0.838886 +vt 0.713051 0.738618 +vt 0.293733 0.319111 +vt 0.311139 0.327987 +vt 0.353135 0.459421 +vt 0.231084 0.410102 +vt 0.101197 0.289824 +vt 0.215554 0.456392 +vt 0.114861 0.414917 +vt 0.172800 0.334169 +vt 0.669208 0.752748 +vt 0.710714 0.665515 +vt 0.276871 0.341239 +vt 0.306964 0.356975 +vt 0.636756 0.753622 +vt 0.638459 0.661605 +vt 0.771586 0.663320 +vt 0.724173 0.799559 +vt 0.432714 0.804124 +vt 0.431825 0.751766 +vt 0.234184 0.881274 +vt 0.252713 0.862744 +vt 0.278918 0.862744 +vt 0.297448 0.907478 +vt 0.278918 0.926008 +vt 0.395286 0.952106 +vt 0.397311 0.927660 +vt 0.686631 0.726489 +vt 0.683623 0.877696 +vt 0.665355 0.775475 +vt 0.374699 0.926265 +vt 0.665938 0.726460 +vt 0.661972 0.876500 +vt 0.663035 0.851856 +vt 0.663739 0.826191 +vt 0.376577 0.875013 +vt 0.377583 0.776933 +vt 0.358930 0.953121 +vt 0.340336 0.893430 +vt 0.351760 0.871860 +vt 0.353719 0.822524 +vt 0.353866 0.774995 +vt 0.349205 0.922863 +vt 0.336777 0.867502 +vt 0.342988 0.843472 +vt 0.344719 0.795495 +vt 0.336293 0.946137 +vt 0.339225 0.818615 +vt 0.338909 0.771406 +vt 0.333854 0.918244 +vt 0.328196 0.917091 +vt 0.950051 0.775398 +vt 0.961580 0.775398 +vt 0.969733 0.783551 +vt 0.961580 0.803233 +vt 0.950051 0.803233 +vt 0.329498 0.891185 +vt 0.332491 0.841468 +vt 0.334577 0.793824 +vt 0.324590 0.943720 +vt 0.331260 0.866431 +vt 0.333898 0.817689 +vt 0.333427 0.770610 +vt 0.428333 0.876211 +vt 0.427678 0.825096 +vt 0.426153 0.775763 +vt 0.427557 0.929224 +vt 0.674938 0.810489 +vt 0.674280 0.724130 +vt 0.677627 0.681085 +vt 0.677627 0.853626 +vt 0.681026 0.810813 +vt 0.661211 0.799677 +vt 0.680254 0.854172 +vt 0.653581 0.680736 +vt 0.841337 0.870850 +vt 0.661247 0.800573 +vt 0.680254 0.680736 +vt 0.661211 0.847722 +vt 0.661211 0.703589 +vt 0.651742 0.753558 +vt 0.681803 0.767454 +vt 0.661248 0.705534 +vt 0.661211 0.775655 +vt 0.651742 0.849647 +vt 0.670029 0.846430 +vt 0.661248 0.681775 +vt 0.670029 0.751391 +vt 0.661247 0.776813 +vt 0.651742 0.825625 +vt 0.651742 0.729536 +vt 0.593987 0.480180 +vt 0.552826 0.484886 +vt 0.557512 0.480200 +vt 0.564138 0.480200 +vt 0.568824 0.484886 +vt 0.568824 0.491512 +vt 0.548121 0.496197 +vt 0.541495 0.496197 +vt 0.536809 0.491512 +vt 0.536809 0.484886 +vt 0.541495 0.480200 +vt 0.684147 0.624156 +vt 0.635940 0.684460 +vt 0.697909 0.648617 +vt 0.684146 0.744957 +vt 0.635940 0.744957 +vt 0.635117 0.720265 +vt 0.635940 0.684653 +vt 0.697909 0.720496 +vt 0.684146 0.684653 +vt 0.569512 0.720496 +vt 0.742632 0.850835 +vt 0.716580 0.815022 +vt 0.652570 0.848686 +vt 0.668880 0.830898 +vt 0.782413 0.837305 +vt 0.646322 0.623963 +vt 0.518241 0.623753 +vt 0.518193 0.612882 +vt 0.806829 0.582470 +vt 0.825511 0.582762 +vt 0.825394 0.590214 +vt 0.984776 0.886695 +vt 0.527350 0.595580 +vt 0.656765 0.791330 +vt 0.655965 0.750883 +vt 0.693984 0.745150 +vt 0.518329 0.587736 +vt 0.648803 0.588527 +vt 0.825394 0.610216 +vt 0.803979 0.610554 +vt 0.812776 0.871221 +vt 0.879446 0.886695 +vt 0.756437 0.581414 +vt 0.777441 0.581837 +vt 0.695134 0.577691 +vt 0.723634 0.578627 +vt 0.777831 0.618563 +vt 0.756971 0.619001 +vt 0.724433 0.621751 +vt 0.696002 0.622669 +vt 0.141617 0.862419 +vt 0.762071 0.702308 +vt 0.790012 0.694547 +vt 0.783028 0.817762 +vt 0.746608 0.856516 +vt 0.133940 0.637238 +vt 0.123224 0.790247 +vt 0.042788 0.842175 +vt 0.040178 0.841159 +vt 0.787459 0.777364 +vt 0.774478 0.615905 +vt 0.761788 0.779680 +vt 0.750668 0.625780 +vt 0.754979 0.665383 +vt 0.754079 0.818764 +vt 0.087539 0.600697 +vt 0.698343 0.732673 +vt 0.089849 0.741519 +vt 0.094040 0.671020 +vt 0.092123 0.635735 +vt 0.718010 0.766806 +vt 0.712268 0.661154 +vt 0.714578 0.801976 +vt 0.692744 0.764244 +vt 0.837897 0.846209 +vt 0.866381 0.850656 +vt 0.870828 0.846209 +vt 0.877117 0.846209 +vt 0.881564 0.856945 +vt 0.870828 0.861392 +vt 0.326715 0.977214 +vt 0.313006 0.619968 +vt 0.167512 0.619681 +vt 0.632839 0.632527 +vt 0.184793 0.975638 +vt 0.160403 0.975751 +vt 0.653450 0.748670 +vt 0.451822 0.978419 +vt 0.290761 0.940252 +vt 0.317014 0.956210 +vt 0.312864 0.982029 +vt 0.075059 0.546759 +vt 0.640978 0.838811 +vt 0.105694 0.562724 +vt 0.087539 0.756638 +vt 0.094869 0.873199 +vt 0.122340 0.862744 +vt 0.085257 0.891980 +vt 0.148495 0.872490 +vt 0.148495 0.929187 +vt 0.094869 0.928478 +vt 0.008110 0.862419 +vt 0.113353 0.827443 +vt 0.135624 0.675685 +vt 0.685412 0.632333 +vt 0.791845 0.735376 +vt 0.201143 0.862744 +vt 0.227962 0.875106 +vt 0.233859 0.915690 +vt 0.227962 0.926016 +vt 0.201143 0.938378 +vt 0.160403 0.901027 +vt 0.666495 0.757277 +vt 0.314900 0.585956 +vt 0.668710 0.646965 +vt 0.175019 0.710358 +vt 0.178219 0.805544 +vt 0.175390 0.709847 +vt 0.713074 0.761258 +vt 0.667013 0.686876 +vt 0.177087 0.744486 +vt 0.028698 0.694017 +vt 0.088077 0.742566 +vt 0.105193 0.742449 +vt 0.669147 0.647559 +vt 0.029253 0.809894 +vt 0.758724 0.897483 +vt 0.837897 0.896520 +vt 0.165729 0.952414 +vt 0.075059 0.810576 +vt 0.275124 0.862419 +vt 0.275124 0.837350 +vt 0.314904 0.719775 +vt 0.062431 0.939566 +vt 0.030611 0.939566 +vt 0.008110 0.917065 +vt 0.030610 0.862744 +vt 0.084932 0.885244 +vt 0.167898 0.553254 +vt 0.167441 0.652321 +vt 0.167737 0.587159 +vt 0.167514 0.686056 +vt 0.647048 0.721012 +vt 0.644552 0.691178 +vt 0.639808 0.661627 +vt 0.644552 0.787072 +vt 0.769038 0.827705 +vt 0.188732 0.620207 +vt 0.004590 0.871159 +vt 0.672864 0.927311 +vt 0.029615 0.826778 +vt 0.240475 0.842169 +vt 0.088093 0.908469 +vt 0.124486 0.876655 +vt 0.669023 0.907683 +vt 0.028571 0.956843 +vt 0.667005 0.868360 +vt 0.713285 0.794113 +vt 0.175310 0.941445 +vt 0.178419 0.845756 +vt 0.296390 0.830418 +vt 0.404951 0.834854 +vt 0.199566 0.809010 +vt 0.240264 0.809314 +vt 0.885026 0.641065 +vt 0.870662 0.635115 +vt 0.876612 0.620751 +vt 0.885026 0.620751 +vt 0.890976 0.626701 +vt 0.769454 0.885625 +vt 0.769454 0.834387 +vt 0.769454 0.875377 +vt 0.769454 0.813893 +vt 0.947456 0.804562 +vt 0.949930 0.836157 +vt 0.949930 0.825910 +vt 0.953397 0.806157 +vt 0.870662 0.663466 +vt 0.875653 0.658475 +vt 0.882710 0.658475 +vt 0.887700 0.670523 +vt 0.882710 0.675513 +vt 0.953397 0.867641 +vt 0.953397 0.857394 +vt 0.953397 0.847147 +vt 0.585325 0.854882 +vt 0.876612 0.600252 +vt 0.890976 0.606202 +vt 0.885026 0.620565 +vt 0.876612 0.620565 +vt 0.870662 0.614616 +vt 0.585325 0.875377 +vt 0.585325 0.844635 +vt 0.585325 0.805478 +vt 0.585325 0.856716 +vt 0.585325 0.834387 +vt 0.585325 0.815726 +vt 0.585325 0.877211 +vt 0.769268 0.884946 +vt 0.875653 0.658289 +vt 0.870662 0.653299 +vt 0.870662 0.646241 +vt 0.882710 0.641251 +vt 0.887700 0.646241 +vt 0.769268 0.823462 +vt 0.769268 0.826652 +vt 0.769268 0.847147 +vt 0.769268 0.867642 +vt 0.769268 0.806157 +vt 0.769268 0.843956 +vt 0.769268 0.857394 +vt 0.732120 0.738839 +vt 0.694552 0.704387 +vt 0.682426 0.692028 +vt 0.652965 0.754472 +vt 0.793579 0.691890 +vt 0.828030 0.654322 +vt 0.840390 0.642196 +vt 0.777945 0.612735 +vt 0.652827 0.753327 +vt 0.615259 0.718876 +vt 0.603134 0.706516 +vt 0.573672 0.768961 +vt 0.699776 0.612735 +vt 0.665325 0.650303 +vt 0.652965 0.662428 +vt 0.715410 0.691890 +vt 0.811413 0.738839 +vt 0.773845 0.704387 +vt 0.761719 0.692028 +vt 0.732258 0.754472 +vt 0.795327 0.789000 +vt 0.744617 0.823377 +vt 0.732258 0.835503 +vt 0.794703 0.864964 +vt 0.728929 0.848878 +vt 0.694552 0.798169 +vt 0.682426 0.785809 +vt 0.652965 0.848254 +vt 0.649636 0.675804 +vt 0.615259 0.625094 +vt 0.603133 0.612735 +vt 0.573672 0.675180 +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 1.0000 0.0000 0.0000 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 0.3827 -0.9239 +vn -1.0000 -0.0000 0.0000 +vn 0.4999 0.3505 -0.7920 +vn 0.4999 -0.3505 0.7920 +vn -0.5000 -0.3505 0.7919 +vn 0.0000 0.9079 0.4192 +vn -0.5000 0.3505 -0.7919 +vn 0.5000 0.3505 -0.7919 +vn 0.5000 -0.3505 0.7919 +vn -0.4999 -0.3505 0.7920 +vn -0.4999 0.3505 -0.7920 +vn 0.0000 0.5247 -0.8513 +vn 0.0000 -0.5247 0.8513 +vn -0.7911 0.5599 0.2463 +vn 0.0000 0.9154 0.4026 +vn 0.0000 0.0280 0.9996 +vn 0.0000 0.7558 -0.6548 +vn 0.7911 0.5599 0.2463 +vn 0.5000 0.3505 0.7919 +vn 0.5000 -0.3505 -0.7919 +vn -0.4999 -0.3505 -0.7920 +vn 0.0000 0.9079 -0.4192 +vn -0.4999 0.3505 0.7920 +vn 0.4999 0.3505 0.7920 +vn 0.5000 -0.3505 -0.7920 +vn -0.5000 -0.3505 -0.7919 +vn -0.5000 0.3505 0.7919 +vn 0.0000 0.5247 0.8513 +vn 0.0000 -0.5247 -0.8513 +vn -0.7911 0.5599 -0.2463 +vn 0.0000 0.9154 -0.4026 +vn 0.0000 0.0280 -0.9996 +vn 0.0000 0.7558 0.6548 +vn 0.7911 0.5599 -0.2463 +vn -0.7409 0.6716 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -1.0000 -0.0000 +vn -0.7903 0.0000 -0.6128 +vn 0.0000 0.0000 1.0000 +vn -0.7903 0.0000 0.6127 +vn -0.9545 -0.2981 -0.0000 +vn -0.9546 0.2980 0.0000 +vn 0.9792 0.2029 0.0000 +vn 0.0101 0.0000 0.9999 +vn 0.8891 0.0000 -0.4576 +vn 0.8892 0.0000 0.4576 +vn 0.9792 -0.2030 -0.0000 +vn 0.0423 -0.9991 0.0000 +vn 0.0078 1.0000 0.0000 +vn 0.0101 0.0000 -0.9999 +vn -0.7409 -0.6716 0.0000 +vn -0.7903 0.0000 -0.6127 +vn -0.9546 -0.2980 0.0000 +vn 0.9792 0.2030 0.0000 +vn 0.8891 0.0000 0.4576 +vn 0.8892 0.0000 -0.4576 +vn -0.4347 -0.3446 0.8320 +vn -0.4347 0.8320 -0.3446 +vn -0.4347 -0.8320 -0.3446 +vn -0.4347 0.3446 0.8320 +vn -0.4347 0.3446 -0.8320 +vn -0.4347 -0.3446 -0.8320 +vn -0.4347 -0.8320 0.3446 +vn -0.4347 0.8320 0.3446 +vn 0.3827 0.9239 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.9239 -0.3827 -0.0000 +vn -0.9239 0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn -0.8937 -0.4486 0.0000 +vn 0.0000 -0.3562 -0.9344 +vn -0.1012 -0.3652 0.9254 +vn 0.4263 -0.2762 0.8614 +vn 0.8392 -0.5438 0.0000 +vn -0.2672 -0.9636 0.0000 +vn -0.9926 -0.1214 0.0000 +vn 0.0037 1.0000 0.0000 +vn -0.1012 -0.3652 -0.9254 +vn 0.4263 -0.2762 -0.8614 +vn 0.0000 -0.3562 0.9344 +vn -0.0013 -0.3562 -0.9344 +vn -0.5737 -0.2880 -0.7667 +vn -0.5737 -0.2880 0.7667 +vn 0.8524 -0.5228 0.0000 +vn 0.5062 -0.3105 0.8046 +vn 0.5044 -0.3120 0.8051 +vn -0.0013 -0.3562 0.9344 +vn -0.0037 -1.0000 0.0000 +vn 1.0000 -0.0009 -0.0023 +vn 1.0000 -0.0023 -0.0008 +vn 1.0000 -0.0093 -0.0016 +vn 1.0000 -0.0074 0.0000 +vn 1.0000 -0.0072 -0.0024 +vn 0.5062 -0.3105 -0.8046 +vn 0.0009 0.0023 1.0000 +vn -0.0019 0.0015 1.0000 +vn 0.0020 -0.0014 -1.0000 +vn 0.0020 0.0015 -1.0000 +vn -0.0480 -0.5123 0.8575 +vn 0.0000 0.5189 0.8549 +vn -0.0444 -0.5183 -0.8540 +vn 0.0000 0.5189 -0.8549 +vn 0.4606 -0.4605 0.7588 +vn 0.4606 0.4606 0.7588 +vn 0.4606 -0.4605 -0.7588 +vn 0.4606 0.4606 -0.7588 +vn -0.2276 -0.4268 0.8752 +vn -0.0458 0.4996 0.8650 +vn -0.2050 -0.5011 -0.8407 +vn -0.0470 0.5125 -0.8574 +vn -0.7527 -0.3520 0.5563 +vn -0.6638 0.5609 0.4947 +vn -0.7527 -0.3520 -0.5563 +vn -0.7340 0.3556 -0.5787 +vn -0.0854 -0.9963 -0.0000 +vn 0.0000 -0.5188 -0.8549 +vn 0.5189 0.0000 -0.8549 +vn 0.7071 -0.7071 -0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.5189 0.0000 0.8549 +vn 0.0000 -0.5188 0.8549 +vn -0.3786 -0.9256 -0.0000 +vn -0.0584 0.9983 0.0000 +vn -0.0883 -0.5113 0.8549 +vn -0.0883 -0.5113 -0.8549 +vn -0.9058 -0.4236 -0.0000 +vn -0.7633 0.0000 0.6461 +vn -0.7634 0.6451 0.0329 +vn -0.7633 0.0000 -0.6461 +vn -0.1702 -0.9854 -0.0000 +vn 0.0000 -0.2599 0.9656 +vn 0.0000 -0.2599 -0.9656 +vn -0.7300 -0.6835 -0.0000 +vn 0.7300 -0.6835 -0.0000 +vn 0.9483 -0.3175 0.0000 +vn -0.9482 0.3175 0.0075 +vn -0.0235 0.9997 0.0002 +vn -0.0233 0.9997 0.0014 +vn -0.0222 0.9998 0.0003 +vn 0.7875 0.6163 0.0000 +vn -0.7875 -0.6163 0.0062 +vn 0.8412 -0.5408 0.0000 +vn -0.5133 -0.8582 0.0037 +vn -0.5122 -0.8589 0.0040 +vn -0.5122 -0.8588 0.0053 +vn -0.0158 0.0101 -0.9998 +vn -0.0145 0.0101 -0.9998 +vn 0.0159 -0.0095 0.9998 +vn 0.0152 -0.0106 0.9998 +vn 0.0171 -0.0100 0.9998 +vn 0.0225 -0.9997 -0.0002 +vn 0.0238 -0.9997 -0.0002 +vn -0.8588 0.5123 0.0068 +vn -0.0128 0.0070 -0.9999 +vn -0.0116 0.0069 -0.9999 +vn 0.5115 0.8593 -0.0050 +vn 0.5122 0.8589 -0.0040 +vn 0.0115 -0.0056 0.9999 +vn 0.0116 -0.0069 0.9999 +vn 0.9772 -0.2122 0.0000 +vn 0.8316 0.5554 0.0000 +vn 0.9921 0.1251 0.0000 +vn -0.9251 -0.3798 0.0000 +vn 0.6540 -0.7565 0.0000 +vn -0.5188 -0.8549 0.0000 +vn -0.9946 -0.1041 0.0000 +vn 0.0004 1.0000 0.0000 +vn 0.8662 0.4997 0.0000 +vn 0.7825 0.4514 0.4290 +vn -0.8662 -0.4997 0.0000 +vn -0.0004 -1.0000 0.0000 +vn -0.8658 0.5003 0.0000 +vn 0.0003 0.9033 0.4290 +vn -0.7825 -0.4514 0.4290 +vn 0.7821 -0.4519 0.4290 +vn -0.7821 0.4519 0.4290 +vn -0.0003 -0.9033 0.4290 +vn 0.0003 0.9326 0.3608 +vn -0.8079 -0.4660 0.3608 +vn 0.8075 -0.4666 0.3608 +vn -0.8075 0.4666 0.3608 +vn -0.0003 -0.9326 0.3609 +vn 0.8079 0.4660 0.3608 +vn 0.8658 -0.5003 0.0000 +vn 0.7825 0.4514 -0.4290 +vn 0.0003 0.9033 -0.4290 +vn -0.7825 -0.4514 -0.4290 +vn 0.7821 -0.4519 -0.4290 +vn -0.7821 0.4519 -0.4290 +vn -0.0003 -0.9033 -0.4290 +vn 0.0003 0.9326 -0.3608 +vn -0.8079 -0.4660 -0.3608 +vn 0.8075 -0.4666 -0.3608 +vn -0.8075 0.4666 -0.3608 +vn -0.0003 -0.9326 -0.3608 +vn 0.8079 0.4660 -0.3608 +vn 0.4472 -0.4390 -0.7793 +vn 0.4472 0.4390 0.7793 +vn -0.4472 0.4390 0.7793 +vn -0.4472 -0.4390 -0.7793 +vn 0.4472 0.4554 -0.7698 +vn 0.4472 -0.4554 0.7698 +vn -0.4472 -0.4554 0.7698 +vn -0.4472 0.4554 -0.7698 +vn 0.4472 0.8944 0.0095 +vn 0.4472 -0.8944 -0.0095 +vn -0.4472 -0.8944 -0.0095 +vn -0.4472 0.8944 0.0095 +vn 0.8637 0.5040 -0.0008 +vn 0.8628 0.5055 0.0000 +vn 0.8618 0.5073 0.0000 +vn 0.8692 -0.4944 0.0000 +vn 0.0064 -1.0000 0.0000 +vn -0.8628 -0.5056 0.0000 +vn -0.8692 0.4944 0.0000 +vn -0.8700 0.4931 0.0013 +vn -0.9999 -0.0128 -0.0020 +vn -0.9999 -0.0129 0.0000 +vn -0.9999 -0.0119 0.0017 +vn -0.0052 1.0000 -0.0016 +vn -0.0063 1.0000 0.0020 +vn -0.0044 1.0000 0.0000 +vn -0.0106 0.9999 0.0000 +vn 0.0018 0.0009 -1.0000 +vn -0.0014 0.0014 -1.0000 +vn 0.9999 0.0130 0.0020 +vn 0.9999 0.0129 0.0000 +vn 0.9999 0.0129 -0.0020 +vn 0.0014 0.0015 1.0000 +vn 0.4867 -0.1145 -0.8660 +vn 0.9734 -0.2290 0.0000 +vn 0.4867 -0.1145 0.8660 +vn -0.4867 0.1145 0.8660 +vn 0.9982 0.0594 0.0000 +vn -0.9734 0.2290 0.0000 +vn -0.4867 0.1145 -0.8660 +vn 0.4037 -0.3811 0.8318 +vn 0.2290 0.9734 0.0000 +vn -0.8670 0.4982 0.0000 +vn 0.5319 0.1691 -0.8297 +vn 0.5319 0.1691 0.8297 +vn -0.4007 0.3885 -0.8297 +vn -0.4007 0.3885 0.8297 +vn -0.2290 -0.9734 0.0000 +vn -0.5312 -0.1612 -0.8317 +vn -0.5312 -0.1612 0.8318 +vn 0.8711 -0.4911 0.0000 +vn -0.9987 -0.0512 0.0000 +vn 0.4037 -0.3811 -0.8318 +vn -0.5339 -0.1952 -0.8227 +vn -0.5339 -0.1952 0.8227 +vn 0.8533 -0.5215 0.0000 +vn -0.9963 -0.0864 0.0000 +vn 0.3909 -0.4127 0.8227 +vn 0.3909 -0.4127 -0.8227 +vn -0.7037 0.7104 -0.0137 +vn -0.0946 -0.0018 -0.9955 +vn 0.1755 0.9845 0.0000 +vn -0.5947 0.1299 0.7934 +vn -0.2277 -0.9737 0.0000 +vn 0.9224 0.3863 0.0000 +vn -0.3526 0.9358 0.0000 +vn 0.1465 0.0029 -0.9892 +vn 0.1465 0.0029 0.9892 +vn -0.1755 -0.9845 0.0000 +vn 0.7339 0.0143 0.6791 +vn 0.4147 0.0081 -0.9099 +vn 0.4147 0.0081 0.9099 +vn 0.3526 -0.9358 0.0000 +vn 0.9998 0.0195 0.0000 +vn 0.8889 -0.4581 0.0000 +vn -0.5700 0.8216 0.0000 +vn 0.7339 0.0143 -0.6791 +vn -0.2763 0.0326 -0.9605 +vn -0.7114 -0.7027 -0.0101 +vn -0.3230 0.0437 -0.9454 +vn -0.3328 0.0443 0.9420 +vn -0.9513 0.3072 -0.0249 +vn -0.6278 0.0742 0.7748 +vn -0.8793 0.4759 -0.0195 +vn -0.9921 -0.1238 -0.0203 +vn -0.9819 0.1873 -0.0273 +vn -0.9993 0.0260 -0.0253 +vn -0.5866 0.0662 -0.8072 +vn -0.4667 0.0527 0.8828 +vn 0.5257 0.8507 0.0000 +vn 0.4767 0.8791 0.0000 +vn 0.8418 0.5398 0.0000 +vn -0.0946 -0.0018 0.9955 +vn 0.0462 -0.0068 0.9989 +vn -0.0453 0.0051 0.9990 +vn -0.4274 0.1109 -0.8972 +vn -0.0453 0.0051 -0.9990 +vn 0.0462 -0.0068 -0.9989 +vn -0.6173 0.1367 -0.7748 +vn -0.5082 0.1382 -0.8501 +vn -0.6709 -0.7415 -0.0093 +vn 0.8774 0.4798 0.0000 +vn 0.9846 -0.1746 0.0000 +vn -0.4274 0.1109 0.8972 +vn -0.5082 0.1382 0.8501 +vn -0.5609 0.0000 0.8279 +vn 0.3824 -0.2113 -0.8995 +vn -0.0010 -0.0003 1.0000 +vn 0.3920 0.0000 -0.9200 +vn 0.0003 1.0000 -0.0010 +vn 0.0005 1.0000 -0.0009 +vn 0.3904 -0.0867 -0.9166 +vn 0.3902 -0.0862 -0.9167 +vn -0.5529 0.0976 0.8275 +vn 0.3824 -0.2113 0.8995 +vn -0.5529 0.0976 -0.8275 +vn 0.0004 -0.0004 1.0000 +vn -0.0005 -0.0002 -1.0000 +vn -0.5505 0.1181 0.8264 +vn 0.0003 0.0005 1.0000 +vn -0.6763 -0.7366 0.0000 +vn -0.5474 0.1418 -0.8247 +vn 0.3920 0.0000 0.9200 +vn 0.3917 -0.0010 0.9201 +vn -0.5609 -0.0000 -0.8279 +vn -0.9915 0.1302 0.0000 +vn -0.9778 0.2098 0.0000 +vn -0.9848 0.1738 0.0000 +vn -0.4100 0.9121 0.0000 +vn -0.5554 0.0729 0.8284 +vn 0.0262 -0.9997 0.0000 +vn 0.0797 0.9968 0.0000 +vn -0.5554 0.0729 -0.8284 +vn -0.5505 0.1181 -0.8264 +vn -0.1957 0.4353 0.8788 +vn 0.8752 -0.4837 -0.0000 +vn 0.9778 -0.2098 0.0000 +vn 0.9779 -0.2091 -0.0001 +vn 0.9765 -0.2154 0.0006 +vn 0.9765 -0.2157 0.0000 +vn 0.9765 -0.2157 0.0006 +vn 0.9969 0.0785 0.0000 +vn 0.3899 0.1121 0.9140 +vn 0.3903 -0.0837 0.9169 +vn 0.3906 -0.0843 0.9167 +vn -0.0053 -1.0000 0.0000 +vn 0.4679 0.0369 -0.8830 +vn 0.3903 -0.0837 -0.9169 +vn 0.3897 -0.0838 -0.9171 +vn 0.3903 -0.0832 -0.9169 +vn 0.0050 1.0000 -0.0007 +vn 0.0043 1.0000 0.0000 +vn 0.0035 1.0000 -0.0007 +vn 0.3898 -0.0859 0.9169 +vn 0.3902 -0.0862 0.9167 +vn 0.3906 -0.0858 0.9165 +vn 0.0000 -0.3875 -0.9219 +vn 0.0000 0.3875 -0.9219 +vn -0.9726 -0.2149 -0.0890 +vn 0.9560 0.1123 0.2711 +vn -0.9726 0.0890 0.2149 +vn -0.9726 0.0890 -0.2149 +vn -0.9726 -0.0890 -0.2149 +vn -0.9726 -0.2149 0.0890 +vn -0.9726 0.2149 0.0890 +vn -0.9726 -0.0890 0.2149 +vn -0.9726 0.2149 -0.0890 +vn 0.9560 -0.2711 0.1123 +vn 0.9560 -0.1123 -0.2711 +vn 0.9560 0.1123 -0.2711 +vn 0.9560 0.2711 0.1123 +vn 0.9560 -0.1123 0.2711 +vn 0.9560 -0.2711 -0.1123 +vn 0.9560 0.2711 -0.1123 +vn -0.9615 0.2539 0.1052 +vn 0.9469 -0.1230 -0.2970 +vn -0.9615 -0.1052 0.2539 +vn -0.9615 -0.2539 -0.1052 +vn -0.9615 0.2539 -0.1052 +vn -0.9615 0.1052 0.2539 +vn -0.9615 -0.2539 0.1052 +vn -0.9615 -0.1052 -0.2539 +vn -0.9615 0.1052 -0.2539 +vn 0.9469 0.1230 -0.2970 +vn 0.9469 0.2970 0.1230 +vn 0.9469 -0.1230 0.2970 +vn 0.9469 -0.2970 -0.1230 +vn 0.9469 0.2970 -0.1230 +vn 0.9469 0.1230 0.2970 +vn 0.9469 -0.2970 0.1230 +vn -0.4917 -0.8045 -0.3332 +vn -0.7567 0.2502 -0.6040 +vn -0.4917 0.8045 -0.3332 +vn -0.4917 0.3332 0.8045 +vn -0.4917 -0.8045 0.3332 +vn -0.4917 -0.3332 -0.8045 +vn -0.4917 0.3332 -0.8045 +vn -0.4917 0.8045 0.3332 +vn -0.4917 -0.3332 0.8045 +vn -0.3625 0.8610 -0.3567 +vn -0.7567 0.6040 0.2502 +vn -0.7567 -0.2502 0.6040 +vn -0.7567 -0.6040 -0.2502 +vn -0.7567 0.6040 -0.2502 +vn -0.7567 0.2502 0.6040 +vn -0.7567 -0.6040 0.2502 +vn -0.7567 -0.2502 -0.6040 +vn -0.3625 0.3567 0.8610 +vn -0.3625 -0.8610 0.3567 +vn -0.3625 -0.3567 -0.8610 +vn -0.3625 0.3567 -0.8610 +vn -0.3625 0.8610 0.3567 +vn -0.3625 -0.3567 0.8610 +vn -0.3625 -0.8610 -0.3567 +vn -0.0059 0.3827 -0.9239 +vn -0.0059 0.3827 0.9239 +vn -0.0059 -0.3827 0.9239 +vn -0.0059 -0.3827 -0.9239 +vn 0.0341 0.3825 -0.9233 +vn 0.0341 0.9233 -0.3825 +vn 0.0341 0.9233 0.3825 +vn 0.0341 0.3825 0.9233 +vn 0.0341 -0.3825 0.9233 +vn 0.0341 -0.9233 0.3825 +vn 0.0341 -0.9233 -0.3825 +vn 0.0341 -0.3825 -0.9233 +vn -0.9966 -0.0761 -0.0315 +vn 0.9966 -0.0762 0.0316 +vn 0.0000 -0.9259 -0.3779 +vn 0.9919 0.1173 0.0486 +vn 0.9966 -0.0316 -0.0762 +vn 0.0000 -0.9259 0.3779 +vn -0.9966 0.0315 -0.0761 +vn -0.9907 -0.1260 0.0522 +vn -0.9966 0.0761 0.0315 +vn 0.9966 0.0762 -0.0315 +vn 0.9919 -0.1173 0.0486 +vn -0.9907 -0.0522 -0.1260 +vn 0.0000 0.9259 0.3779 +vn 0.9919 -0.0486 -0.1173 +vn 0.9966 0.0316 0.0762 +vn 0.0000 0.9259 -0.3779 +vn -0.9966 -0.0761 0.0315 +vn -0.9907 0.1259 -0.0522 +vn 0.9919 0.1173 -0.0486 +vn -0.9907 0.0522 0.1260 +vn -0.9907 0.1259 0.0522 +vn -0.9907 0.0522 -0.1259 +vn 0.9966 0.0762 0.0316 +vn -0.9907 -0.1259 -0.0522 +vn 0.9966 0.0316 -0.0762 +vn -0.9907 -0.0522 0.1259 +vn 0.9966 -0.0762 -0.0316 +vn 0.9966 -0.0316 0.0762 +vn 0.9919 0.0486 -0.1173 +vn -0.9966 -0.0316 0.0762 +vn 0.9919 -0.1173 -0.0486 +vn 0.9919 -0.0486 0.1173 +vn -0.9966 0.0315 0.0761 +vn -0.9966 0.0762 -0.0315 +vn 0.9919 0.0486 0.1174 +vn -0.9966 -0.0315 -0.0761 +vn -0.0802 0.9968 0.0000 +vn 0.2854 0.9584 0.0000 +vn 0.4890 0.0000 0.8723 +vn 0.2854 -0.9584 0.0000 +vn -0.0802 -0.9968 0.0000 +vn -0.3634 0.0000 0.9316 +vn 0.4890 0.0000 -0.8723 +vn -0.3635 0.0000 -0.9316 +vn -0.1189 -0.0040 0.9929 +vn 0.2846 0.0710 0.9560 +vn 0.9703 0.2419 0.0000 +vn 0.3229 -0.9464 0.0000 +vn 0.1401 -0.0562 -0.9885 +vn -0.9994 -0.0338 -0.0000 +vn -0.0801 0.0322 -0.9963 +vn -0.2273 -0.9738 0.0000 +vn 0.0000 0.3632 0.9317 +vn 0.0000 0.0717 0.9974 +vn -0.2430 0.4146 0.8769 +vn 0.0167 -0.9999 0.0000 +vn -0.2238 0.2670 0.9374 +vn 0.0000 0.3632 -0.9317 +vn 0.0000 0.0717 -0.9974 +vn -0.1148 0.0713 0.9908 +vn -0.4819 -0.8762 0.0000 +vn -0.2445 0.9696 0.0000 +vn 0.5997 0.8003 0.0000 +vn 0.2631 0.3512 0.8986 +vn 0.9589 0.2839 0.0000 +vn -0.8655 0.5010 0.0000 +vn -0.0911 0.3614 -0.9279 +vn 0.1538 0.5175 -0.8417 +vn 0.0000 0.4274 0.9040 +vn -0.6183 0.7860 -0.0009 +vn -0.0001 0.4296 -0.9030 +vn 0.7944 -0.6074 0.0000 +vn -0.7944 -0.6074 0.0000 +vn 0.9838 -0.1658 0.0687 +vn -0.8418 0.2066 0.4987 +vn -0.9846 -0.0670 0.1617 +vn -0.9846 -0.0670 -0.1617 +vn 0.9838 0.1658 -0.0687 +vn 0.9838 -0.1658 -0.0687 +vn 0.4296 0.3456 0.8343 +vn 0.4296 -0.3456 -0.8343 +vn 0.4296 0.3456 -0.8343 +vn 0.4296 0.8343 0.3456 +vn 0.4296 -0.3456 0.8343 +vn -0.0913 0.8947 0.4372 +vn 0.8293 -0.2138 0.5162 +vn 0.8293 0.5162 -0.2138 +vn 0.0464 -0.8899 0.4538 +vn 0.8293 0.2138 -0.5162 +vn 0.8293 -0.2138 -0.5162 +vn 0.8293 0.5162 0.2138 +vn -0.8418 -0.2066 0.4987 +vn -0.0166 -0.3826 -0.9238 +vn -0.0166 0.3826 -0.9238 +vn -0.0166 0.3826 0.9238 +vn -0.0165 -0.9238 -0.3826 +vn 0.1008 -0.2962 -0.9498 +vn 0.0000 -0.3828 -0.9239 +vn -0.8680 0.4588 0.1900 +vn -0.8680 -0.1900 -0.4588 +vn 0.8623 0.1938 -0.4678 +vn -0.8680 -0.4588 -0.1900 +vn 0.8623 0.1938 0.4678 +vn 0.9838 0.0687 0.1658 +vn -0.9846 -0.1617 -0.0670 +vn 0.9838 -0.0687 -0.1658 +vn 0.9838 -0.0687 0.1658 +vn 0.9838 0.0687 -0.1658 +vn -0.9846 0.0670 0.1617 +vn 0.0915 0.3811 0.9200 +vn 0.0915 0.3811 -0.9200 +vn 0.0915 -0.3811 -0.9200 +vn -0.8680 0.1900 -0.4588 +vn -0.8680 0.1900 0.4588 +vn 0.8623 0.4678 -0.1938 +vn 0.8623 -0.1938 0.4678 +vn 0.8623 -0.1938 -0.4678 +vn 0.2182 0.3735 0.9016 +vn -0.0497 0.9227 -0.3822 +vn 0.2182 -0.3735 -0.9016 +vn 0.2182 -0.9016 0.3735 +vn 0.2182 -0.9016 -0.3735 +vn 0.2182 -0.3735 0.9016 +vn -0.0497 0.9227 0.3822 +vn -0.0497 0.3822 -0.9227 +vn -0.0497 -0.3822 -0.9227 +vn -0.0497 -0.3822 0.9227 +vn -0.0497 0.3822 0.9227 +vn 0.3223 -0.8746 -0.3623 +vn 0.3223 0.3623 0.8746 +vn 0.3223 0.3623 -0.8746 +vn 0.3223 0.8746 -0.3623 +vn 0.3223 -0.3623 -0.8746 +vn 0.0000 0.9649 -0.2626 +vn -0.1533 0.3782 0.9130 +vn 0.8293 0.2138 0.5162 +vn -0.1218 0.9170 -0.3798 +vn 0.7075 0.6639 -0.2423 +vn 0.0068 -1.0000 0.0000 +vn 0.6287 0.0000 0.7776 +vn -0.0166 0.9238 -0.3826 +vn -0.8680 0.4588 -0.1900 +vn -0.6679 0.7442 0.0000 +vn -0.6040 -0.2625 -0.7525 +vn -0.6040 -0.2625 0.7525 +vn -0.0187 0.9998 0.0000 +vn -0.0453 -0.3552 -0.9337 +vn 0.0951 -0.3032 -0.9482 +vn 0.1008 -0.2962 0.9498 +vn 0.0915 -0.9200 -0.3811 +vn 0.2182 0.9016 0.3735 +vn 0.3223 -0.3623 0.8746 +vn 0.0951 -0.3032 0.9482 +vn 0.9838 0.1658 0.0687 +vn 0.4296 -0.8343 -0.3456 +vn -0.0165 -0.3826 0.9238 +vn -0.0165 -0.9238 0.3826 +vn 0.8623 -0.4678 -0.1938 +vn 0.2182 0.3735 -0.9016 +vn 0.6968 0.6616 0.2771 +vn -0.9996 -0.0199 0.0200 +vn 0.0915 0.9200 -0.3811 +vn -0.0453 -0.3552 0.9337 +vn -0.8418 -0.4987 0.2066 +vn -0.0497 -0.9227 0.3822 +vn -0.8418 0.4987 0.2066 +vn 0.3746 -0.9272 0.0000 +vn 0.0000 -0.8730 -0.4877 +vn 0.0000 -0.4721 0.8815 +vn 0.0120 -0.3847 0.9230 +vn 0.3071 -0.7601 0.5727 +vn 0.1144 -0.4166 0.9019 +vn 0.1144 -0.4166 -0.9019 +vn -0.9846 0.1617 0.0670 +vn 0.4296 -0.8343 0.3456 +vn 0.0915 0.9200 0.3811 +vn 0.4296 0.8343 -0.3456 +vn 0.8623 -0.4678 0.1938 +vn -0.0497 -0.9227 -0.3822 +vn 0.3223 0.8746 0.3623 +vn 0.8293 -0.5162 -0.2138 +vn -0.9846 -0.1617 0.0670 +vn 0.9997 -0.0244 0.0000 +vn -0.0476 -0.3025 -0.9520 +vn 0.0120 -0.3847 -0.9230 +vn 0.0000 -0.9012 -0.4335 +vn 0.0000 -0.8684 0.4959 +vn -0.0054 -0.3046 0.9525 +vn -0.0054 -0.3046 -0.9525 +vn -0.0047 0.8931 0.4497 +vn -0.0882 0.3033 0.9488 +vn -0.0827 0.3007 -0.9501 +vn 0.0271 0.9095 0.4149 +vn 0.1157 0.9174 -0.3807 +vn 0.0881 0.3478 -0.9334 +vn 0.0018 0.3018 -0.9534 +vn -0.0090 0.9031 -0.4294 +vn -0.0160 0.9203 0.3908 +vn -0.0214 0.3851 0.9226 +vn -0.9952 -0.0952 0.0245 +vn 0.0000 0.5505 -0.8349 +vn -0.9938 0.1009 -0.0477 +vn 0.9884 0.1326 -0.0741 +vn 0.0000 -0.7129 -0.7012 +vn 0.9976 -0.0694 0.0010 +vn 0.0049 -0.9714 0.2372 +vn -0.0045 0.8583 -0.5131 +vn 0.0014 -0.3780 -0.9258 +vn 0.9905 0.1284 -0.0490 +vn 0.0049 -0.9716 0.2367 +vn -0.9957 -0.0410 -0.0837 +vn 0.9959 -0.0250 -0.0874 +vn -0.0046 0.8581 -0.5135 +vn -0.9919 0.1050 -0.0715 +vn 0.9172 -0.1506 -0.3689 +vn 0.0046 -0.9528 -0.3036 +vn -0.0031 0.5229 -0.8524 +vn 0.0017 -0.3780 -0.9258 +vn -0.0028 0.4716 -0.8818 +vn -0.8491 -0.1997 -0.4891 +vn 0.8460 -0.1961 -0.4958 +vn 0.0018 -0.3780 -0.9258 +vn -0.0026 0.4282 -0.9037 +vn -0.8941 -0.1750 -0.4123 +vn 0.8917 -0.1711 -0.4191 +vn 0.0045 -0.9351 -0.3544 +vn 0.0044 -0.9187 -0.3950 +vn -0.9196 -0.1544 -0.3613 +vn -0.5507 -0.3194 -0.7712 +vn 0.0050 -0.9715 0.2371 +vn 0.0000 -0.9012 0.4335 +vn 0.0000 0.8607 -0.5091 +vn 0.0015 0.8611 -0.5085 +vn -0.8418 0.2066 -0.4987 +vn -0.8418 -0.2066 -0.4987 +vn -0.8680 -0.1900 0.4588 +vn -0.8680 -0.4588 0.1900 +vn -0.9846 0.0670 -0.1617 +vn 0.0915 -0.3811 0.9200 +vn 0.8623 0.4678 0.1938 +vn 0.3223 -0.8746 0.3623 +vn 0.6287 0.0000 -0.7776 +vn -0.0165 0.9238 0.3826 +vn 0.0915 -0.9200 0.3811 +vn 0.2182 0.9016 -0.3735 +vn 0.1948 -0.9808 0.0000 +vn -0.8418 -0.4987 -0.2066 +vn -0.8418 0.4987 -0.2066 +vn -0.9846 0.1617 -0.0670 +vn 0.8293 -0.5162 0.2138 +vn -0.1409 0.9049 -0.4015 +vn 0.1561 0.3805 0.9115 +vn 1.0000 0.0017 -0.0001 +vn -0.2273 -0.8997 -0.3727 +vn -0.0913 0.8947 -0.4372 +vn 0.0864 0.8928 -0.4421 +vn -0.2272 -0.8997 0.3727 +vn -0.1218 0.9170 0.3798 +vn -0.1971 -0.3752 -0.9058 +vn -0.1970 -0.3752 0.9058 +vn -0.1533 0.3782 -0.9130 +vn 1.0000 0.0017 0.0004 +vn 1.0000 -0.0017 -0.0001 +vn 1.0000 0.0017 -0.0093 +vn 0.9999 0.0008 -0.0108 +vn 0.0864 0.8928 0.4421 +vn 0.0000 0.9649 0.2626 +vn 0.0000 0.8607 0.5091 +vn -0.0016 0.8610 0.5087 +vn 0.0005 0.9245 0.3812 +vn 0.0014 -0.3780 0.9258 +vn 0.0050 -0.9664 -0.2571 +vn -0.5507 -0.3194 0.7712 +vn -0.9140 -0.1581 0.3736 +vn 0.0053 -0.9195 0.3932 +vn 0.0057 -0.9362 0.3516 +vn 0.0017 -0.3780 0.9258 +vn 0.8917 -0.1711 0.4191 +vn -0.8883 -0.1782 0.4232 +vn -0.0032 0.4293 0.9031 +vn 0.0018 -0.3780 0.9258 +vn 0.8460 -0.1961 0.4958 +vn -0.8491 -0.1997 0.4891 +vn -0.0036 0.4732 0.8809 +vn -0.0038 0.5242 0.8516 +vn 0.0056 -0.9534 0.3016 +vn 0.9172 -0.1506 0.3689 +vn -0.9919 0.1050 0.0715 +vn -0.0046 0.8581 0.5135 +vn 0.9959 -0.0250 0.0874 +vn -0.9957 -0.0410 0.0837 +vn 0.0049 -0.9716 -0.2367 +vn 0.9905 0.1284 0.0490 +vn -0.0045 0.8583 0.5131 +vn 0.0049 -0.9714 -0.2372 +vn 0.9976 -0.0694 -0.0010 +vn 0.0000 -0.7129 0.7012 +vn 0.9884 0.1326 0.0741 +vn -0.9938 0.1009 0.0476 +vn 0.0000 0.5505 0.8349 +vn -0.9952 -0.0952 -0.0245 +vn 1.0000 -0.0030 0.0052 +vn 1.0000 -0.0017 0.0040 +vn 1.0000 -0.0008 0.0055 +vn 0.0464 -0.8899 -0.4538 +vn 0.0000 -0.8684 -0.4959 +vn -0.0476 -0.3025 0.9520 +vn 0.0000 -0.4721 -0.8815 +vn -0.2513 0.8942 0.3704 +vn -0.2513 -0.3704 0.8942 +vn -0.2513 0.8942 -0.3704 +vn -0.2513 -0.8942 -0.3704 +vn -0.2513 0.3704 0.8942 +vn -0.2513 0.3704 -0.8942 +vn -0.2513 -0.3704 -0.8942 +vn -0.2513 -0.8942 0.3704 +vn 0.8327 0.2119 -0.5115 +vn 0.8327 0.5115 0.2119 +vn 0.8327 -0.2119 0.5115 +vn 0.8327 -0.5115 -0.2119 +vn 0.8328 0.5115 -0.2119 +vn 0.8327 0.2119 0.5115 +vn 0.8327 -0.5115 0.2119 +vn 0.8327 -0.2119 -0.5115 +vn 0.5165 -0.7911 0.3277 +vn 0.5165 -0.3277 -0.7911 +vn 0.5164 0.3277 -0.7911 +vn 0.5165 0.7911 0.3277 +vn 0.5165 -0.3277 0.7911 +vn 0.5164 -0.7911 -0.3277 +vn 0.5164 0.7911 -0.3277 +vn 0.5165 0.3277 0.7911 +vn 0.8327 0.5115 -0.2119 +vn 0.5165 -0.7911 -0.3277 +vn 0.5165 0.3277 -0.7911 +vn -0.9087 0.4175 0.0000 +vn -0.4846 0.8748 0.0000 +vn 0.5399 0.8417 0.0000 +vn -0.6812 -0.7321 0.0000 +vn 0.9972 0.0747 0.0000 +vn -0.9087 -0.4175 0.0000 +vn -0.4846 -0.8748 0.0000 +vn 0.5399 -0.8417 0.0000 +vn -0.6812 0.7321 0.0000 +vn 0.9972 -0.0747 0.0000 +vn -0.9087 0.0000 0.4175 +vn -0.4846 0.0000 0.8748 +vn 0.5399 0.0000 0.8417 +vn -0.6812 -0.0000 -0.7321 +vn 0.9972 0.0000 0.0747 +vn -0.9087 0.0000 -0.4175 +vn -0.4846 0.0000 -0.8748 +vn 0.5399 0.0000 -0.8417 +vn -0.6812 -0.0000 0.7321 +vn 0.9972 0.0000 -0.0747 +vn -0.9087 0.2952 0.2952 +vn -0.4846 0.6185 0.6185 +vn 0.5399 0.5952 0.5952 +vn -0.6812 -0.5177 -0.5177 +vn 0.9972 0.0528 0.0528 +vn 0.0000 -0.7071 0.7071 +vn -0.9087 -0.2952 -0.2952 +vn -0.4846 -0.6185 -0.6185 +vn 0.5399 -0.5952 -0.5952 +vn -0.6812 0.5177 0.5177 +vn 0.9972 -0.0528 -0.0528 +vn 0.0000 0.7071 -0.7071 +vn -0.9087 -0.2952 0.2952 +vn -0.4846 -0.6185 0.6185 +vn 0.5399 -0.5952 0.5952 +vn -0.6812 0.5177 -0.5177 +vn 0.9972 -0.0528 0.0528 +vn 0.0000 -0.7071 -0.7071 +vn -0.9087 0.2952 -0.2952 +vn -0.4846 0.6185 -0.6185 +vn 0.5399 0.5952 -0.5952 +vn -0.6812 -0.5177 0.5177 +vn 0.9972 0.0528 -0.0528 +vn -0.0000 0.7071 0.7071 +vn -0.5000 -0.3505 0.7920 +vn -0.5000 -0.3505 -0.7920 +vn 0.4999 -0.3505 -0.7920 +vn 0.0000 0.7558 0.6549 +vn -0.9545 0.2981 0.0000 +vn 0.9792 -0.2029 -0.0000 +vn 1.0000 0.0012 -0.0021 +vn 1.0000 -0.0099 0.0001 +vn 0.5057 -0.3083 -0.8057 +vn -0.0010 0.0022 1.0000 +vn -0.0024 -0.0002 1.0000 +vn 0.0024 0.0001 -1.0000 +vn 0.0006 0.0024 -1.0000 +vn -0.0444 -0.5183 0.8540 +vn -0.0480 -0.5123 -0.8575 +vn -0.2050 -0.5011 0.8407 +vn -0.0303 0.5186 0.8545 +vn -0.2276 -0.4268 -0.8752 +vn -0.0436 0.5184 -0.8541 +vn -0.0837 0.9965 -0.0043 +vn -0.8999 0.4360 0.0000 +vn -0.0223 0.9998 0.0006 +vn -0.5132 -0.8583 0.0046 +vn -0.0159 0.0095 -0.9998 +vn -0.0152 0.0106 -0.9998 +vn -0.0148 0.0090 -0.9999 +vn 0.0158 -0.0101 0.9998 +vn 0.0170 -0.0105 0.9998 +vn 0.0220 -0.9998 -0.0014 +vn 0.0237 -0.9997 0.0003 +vn -0.8588 0.5122 0.0068 +vn -0.0123 0.0059 -0.9999 +vn -0.0127 0.0076 -0.9999 +vn 0.5123 0.8588 -0.0053 +vn 0.5112 0.8595 -0.0039 +vn 0.0126 -0.0062 0.9999 +vn 0.0105 -0.0062 0.9999 +vn -0.0003 -0.9326 0.3608 +vn 0.8078 0.4660 0.3608 +vn -0.0003 -0.9326 -0.3609 +vn 0.8078 0.4660 -0.3608 +vn 0.8635 0.5043 0.0015 +vn -0.0016 0.0013 1.0000 +vn 0.0017 -0.0010 1.0000 +vn -0.0010 -0.0018 1.0000 +vn -0.8692 0.4944 -0.0020 +vn -0.8693 0.4943 0.0020 +vn 0.0010 -0.0017 -1.0000 +vn 0.0016 -0.0013 -1.0000 +vn 0.0017 0.0010 -1.0000 +vn -0.9999 -0.0109 -0.0005 +vn -0.0047 1.0000 -0.0010 +vn -0.0064 1.0000 -0.0020 +vn -0.0049 1.0000 0.0013 +vn 0.0006 0.0019 -1.0000 +vn 0.9999 0.0143 0.0013 +vn 0.0020 0.0002 1.0000 +vn -0.0000 0.0020 1.0000 +vn -0.5312 -0.1612 -0.8318 +vn -0.5312 -0.1612 0.8317 +vn -0.7050 0.7091 -0.0129 +vn -0.1102 0.0163 -0.9938 +vn -0.4866 0.0734 0.8705 +vn 0.9138 0.4059 0.0141 +vn -0.6209 0.0733 -0.7804 +vn -0.7075 -0.7066 -0.0129 +vn -0.3195 0.0434 -0.9466 +vn -0.3426 0.0452 0.9384 +vn -0.9534 0.3010 -0.0206 +vn -0.2953 0.0349 0.9548 +vn -0.8809 0.4730 -0.0163 +vn -0.9909 -0.1325 -0.0246 +vn -0.9824 0.1852 -0.0253 +vn -0.9994 0.0236 -0.0273 +vn -0.4566 0.0515 -0.8882 +vn -0.5938 0.0671 0.8018 +vn -0.1102 0.0163 0.9938 +vn 0.0445 -0.0050 0.9990 +vn -0.0753 0.0298 0.9967 +vn -0.4737 0.1296 -0.8711 +vn -0.0753 0.0298 -0.9967 +vn 0.0445 -0.0050 -0.9990 +vn -0.5089 0.0800 -0.8571 +vn -0.2460 0.0289 -0.9688 +vn -0.6947 -0.7193 0.0000 +vn -0.4737 0.1296 0.8711 +vn -0.2460 0.0289 0.9688 +vn 0.0009 0.0005 -1.0000 +vn -0.0010 0.0003 1.0000 +vn 0.3915 0.0009 -0.9202 +vn -0.0004 1.0000 -0.0010 +vn 0.3907 -0.0861 -0.9165 +vn 0.3901 -0.0868 -0.9167 +vn 0.0006 0.0001 1.0000 +vn -0.0006 0.0000 -1.0000 +vn -0.0000 -0.0006 -1.0000 +vn -0.1957 0.4353 -0.8788 +vn -0.5474 0.1418 0.8247 +vn 0.9777 -0.2102 0.0004 +vn 0.9778 -0.2095 0.0005 +vn 0.9766 -0.2151 0.0002 +vn 0.4679 0.0369 0.8830 +vn 0.3899 -0.0842 0.9170 +vn 0.3909 -0.0838 0.9166 +vn 0.3899 0.1121 -0.9140 +vn 0.3898 -0.0835 -0.9171 +vn 0.0053 1.0000 -0.0001 +vn 0.3901 -0.0856 0.9168 +vn 0.0038 -0.3827 -0.9239 +vn 0.0038 0.3827 -0.9239 +vn -0.0059 0.9258 -0.3779 +vn -0.0059 0.9258 0.3779 +vn -0.0059 -0.9258 0.3779 +vn -0.0059 -0.9258 -0.3779 +vn 0.0340 0.3825 0.9233 +vn 0.0340 -0.3825 0.9233 +vn 0.0340 -0.9233 0.3825 +vn 0.0340 -0.9233 -0.3825 +vn -0.0434 -0.9230 -0.3823 +vn -0.0434 -0.9230 0.3823 +vn -0.9907 -0.1259 0.0522 +vn -0.9966 0.0762 0.0315 +vn 0.9966 0.0762 -0.0316 +vn -0.9907 -0.0522 -0.1259 +vn -0.0434 0.9230 0.3823 +vn -0.0434 0.9230 -0.3823 +vn -0.9907 0.1260 -0.0522 +vn -0.9907 0.0522 0.1259 +vn -0.9907 0.1260 0.0522 +vn -0.9907 0.0522 -0.1260 +vn 0.9966 0.0762 0.0315 +vn -0.9907 -0.1260 -0.0522 +vn 0.9966 0.0315 -0.0762 +vn -0.9907 -0.0522 0.1260 +vn -0.9966 -0.0315 0.0761 +vn 0.9919 -0.0486 0.1174 +vn -0.9966 0.0315 0.0762 +vn -0.9966 0.0761 -0.0315 +vn 0.9919 0.0486 0.1173 +vn -0.0801 0.0322 0.9963 +vn 0.1401 -0.0562 0.9885 +vn 0.2846 0.0710 -0.9560 +vn -0.1189 -0.0040 -0.9929 +vn -0.2433 0.4167 -0.8759 +vn 0.0724 0.0716 -0.9948 +vn 0.0721 0.0716 0.9948 +vn -0.0911 0.3614 0.9279 +vn -0.1148 0.0713 -0.9908 +vn 0.5997 0.8002 0.0000 +vn 0.1538 0.5175 0.8417 +vn -0.2238 0.2670 -0.9374 +vn 0.2631 0.3512 -0.8986 +vn -0.6174 0.7866 0.0000 +vn -0.0001 0.4265 -0.9045 +vn 0.0000 0.4280 -0.9038 +vn -0.0165 -0.3826 -0.9238 +vn -0.0165 0.3826 -0.9238 +vn -0.0165 0.3826 0.9238 +vn -0.0166 -0.9238 -0.3826 +vn 0.6968 0.6616 -0.2771 +vn -0.0165 0.9238 -0.3826 +vn -0.5855 0.7664 0.2642 +vn -0.6287 0.0000 -0.7776 +vn -0.6287 0.0000 0.7776 +vn -0.5855 0.7664 -0.2642 +vn 0.0000 0.9224 -0.3863 +vn 0.0000 0.9224 0.3863 +vn -0.0166 -0.3826 0.9238 +vn -0.0166 -0.9238 0.3826 +vn 0.7075 0.6639 0.2423 +vn -0.9943 0.0422 -0.0983 +vn -0.9996 -0.0201 -0.0197 +vn -0.9998 -0.0177 0.0000 +vn -0.9943 0.0422 0.0983 +vn 0.3071 -0.7601 -0.5727 +vn 0.0000 -0.8730 0.4877 +vn 0.9865 0.0625 -0.1514 +vn 0.9865 0.0625 0.1514 +vn 0.9990 -0.0137 0.0428 +vn 0.9990 -0.0137 -0.0428 +vn -0.0052 -0.3029 0.9530 +vn -0.0052 -0.3029 -0.9530 +vn -0.1503 0.9100 0.3864 +vn -0.0827 0.3007 0.9501 +vn -0.0882 0.3033 -0.9488 +vn 0.1146 0.9216 0.3708 +vn 0.0212 0.9029 -0.4293 +vn 0.1561 0.3805 -0.9115 +vn -0.0214 0.3851 -0.9226 +vn -0.0162 0.9139 -0.4055 +vn -0.0085 0.9098 0.4150 +vn 0.0018 0.3018 0.9534 +vn -0.9938 0.1009 -0.0476 +vn 0.0000 -0.9716 0.2367 +vn 0.0000 0.8580 -0.5136 +vn 0.0013 -0.3780 -0.9258 +vn 0.0000 -0.9727 0.2319 +vn -0.0017 -0.9728 0.2318 +vn -0.0045 0.8580 -0.5136 +vn -0.0045 0.8483 -0.5295 +vn 0.0000 0.8535 -0.5210 +vn 0.9172 -0.1505 -0.3688 +vn 0.0056 -0.9534 -0.3016 +vn -0.0038 0.5242 -0.8516 +vn -0.0036 0.4732 -0.8809 +vn 0.8531 -0.1929 -0.4848 +vn -0.0032 0.4293 -0.9031 +vn -0.8883 -0.1782 -0.4232 +vn 0.8917 -0.1710 -0.4190 +vn 0.0057 -0.9361 -0.3516 +vn 0.0053 -0.9195 -0.3932 +vn -0.9140 -0.1581 -0.3736 +vn -0.5515 -0.3178 -0.7713 +vn 0.0000 -0.9691 0.2466 +vn 0.0050 -0.9664 0.2571 +vn 0.0008 0.9233 -0.3841 +vn -0.0166 0.9238 0.3826 +vn -0.0061 0.8873 -0.4611 +vn 0.0881 0.3478 0.9334 +vn 1.0000 0.0016 -0.0006 +vn 1.0000 0.0011 -0.0013 +vn -0.1970 -0.3752 -0.9058 +vn 1.0000 0.0014 -0.0009 +vn 1.0000 -0.0000 -0.0034 +vn 1.0000 -0.0020 -0.0057 +vn 1.0000 -0.0017 -0.0040 +vn -0.0013 -0.9234 -0.3838 +vn 0.0000 -0.9691 -0.2466 +vn 0.0050 -0.9715 -0.2371 +vn -0.5515 -0.3178 0.7713 +vn -0.9196 -0.1544 0.3613 +vn 0.0044 -0.9187 0.3950 +vn 0.0045 -0.9351 0.3544 +vn 0.8917 -0.1710 0.4190 +vn -0.8941 -0.1750 0.4123 +vn -0.0026 0.4282 0.9037 +vn 0.8531 -0.1929 0.4848 +vn -0.0028 0.4716 0.8818 +vn -0.0031 0.5229 0.8524 +vn 0.0046 -0.9528 0.3036 +vn 0.9172 -0.1505 0.3688 +vn -0.0045 0.8580 0.5136 +vn 0.0000 0.8535 0.5210 +vn -0.0045 0.8483 0.5295 +vn 0.0000 -0.9727 -0.2319 +vn -0.0012 -0.9730 -0.2307 +vn 0.0013 -0.3780 0.9258 +vn 0.0000 0.8580 0.5136 +vn 0.0000 -0.9716 -0.2367 +vn 0.9999 0.0005 0.0125 +vn 0.9999 0.0008 0.0108 +vn -0.0001 -0.9232 0.3843 +vn 0.5164 -0.7911 0.3277 +vn 0.5164 -0.3277 -0.7911 +vn 0.5164 0.7911 0.3277 +vn 0.5165 0.7911 -0.3277 +vn 0.5164 -0.3277 0.7911 +vn 0.0641 -0.4932 -0.8676 +vn 0.0641 0.4932 0.8676 +vn 0.0641 0.8676 -0.4932 +vn 0.0641 -0.8676 0.4932 +vn 0.0641 0.2648 -0.9622 +vn 0.0641 -0.2648 0.9622 +vn 0.0641 0.9622 0.2648 +vn 0.0641 -0.9622 -0.2648 +s off +f 2/1/1 4/2/1 1/3/1 +f 3/4/2 6/5/2 4/2/2 +f 5/6/3 8/7/3 6/8/3 +f 7/9/4 10/10/4 8/7/4 +f 9/11/5 12/12/5 10/10/5 +f 11/13/6 14/14/6 12/12/6 +f 7/15/7 5/16/7 13/17/7 +f 13/18/8 16/19/8 14/14/8 +f 15/20/9 1/3/9 16/19/9 +f 8/21/10 12/22/10 16/23/10 +f 18/24/1 20/25/1 17/26/1 +f 19/27/2 22/28/2 20/25/2 +f 21/29/3 24/30/3 22/31/3 +f 23/32/4 26/33/4 24/30/4 +f 25/34/5 28/35/5 26/33/5 +f 27/36/6 30/37/6 28/35/6 +f 23/38/7 21/39/7 29/40/7 +f 29/41/8 32/42/8 30/37/8 +f 31/43/9 17/26/9 32/42/9 +f 24/44/10 28/45/10 32/46/10 +f 34/47/1 36/48/1 33/49/1 +f 35/50/2 38/51/2 36/48/2 +f 37/52/3 40/53/3 38/54/3 +f 39/55/4 42/56/4 40/53/4 +f 41/57/5 44/58/5 42/56/5 +f 43/59/6 46/60/6 44/58/6 +f 39/61/7 37/62/7 45/63/7 +f 45/64/8 48/65/8 46/60/8 +f 47/66/9 33/49/9 48/65/9 +f 40/67/10 44/68/10 48/69/10 +f 50/70/1 52/71/1 49/72/1 +f 51/73/2 54/74/2 52/71/2 +f 53/75/3 56/76/3 54/77/3 +f 55/78/4 58/79/4 56/76/4 +f 57/80/5 60/81/5 58/79/5 +f 59/82/6 62/83/6 60/81/6 +f 55/84/7 53/85/7 61/86/7 +f 61/87/8 64/88/8 62/83/8 +f 63/89/9 49/72/9 64/88/9 +f 56/90/10 60/91/10 64/92/10 +f 66/93/1 68/94/1 65/95/1 +f 67/96/2 70/97/2 68/94/2 +f 69/98/3 72/99/3 70/100/3 +f 71/101/4 74/102/4 72/99/4 +f 73/103/5 76/104/5 74/102/5 +f 75/105/6 78/106/6 76/104/6 +f 71/107/7 69/108/7 77/109/7 +f 77/110/8 80/111/8 78/106/8 +f 79/112/9 65/95/9 80/111/9 +f 72/113/10 76/114/10 80/115/10 +f 81/116/11 83/117/11 84/118/11 +f 84/118/7 85/119/7 86/120/7 +f 86/120/12 87/121/12 88/122/12 +f 87/121/13 90/123/13 88/122/13 +f 87/124/14 85/125/14 82/126/14 +f 89/127/10 92/128/10 90/123/10 +f 91/129/15 81/130/15 92/128/15 +f 93/131/16 95/132/16 96/133/16 +f 96/133/7 97/134/7 98/135/7 +f 98/135/17 99/136/17 100/137/17 +f 99/136/18 102/138/18 100/137/18 +f 99/139/14 97/140/14 94/141/14 +f 101/142/10 104/143/10 102/138/10 +f 103/144/19 93/145/19 104/143/19 +f 105/146/16 107/147/16 108/148/16 +f 108/148/7 109/149/7 110/150/7 +f 110/150/17 111/151/17 112/152/17 +f 111/151/18 114/153/18 112/152/18 +f 111/154/14 109/155/14 106/156/14 +f 113/157/10 116/158/10 114/153/10 +f 115/159/19 105/160/19 116/158/19 +f 117/161/10 119/162/10 120/163/10 +f 119/164/20 122/165/20 120/166/20 +f 121/167/7 124/168/7 122/169/7 +f 123/170/21 117/171/21 124/172/21 +f 118/173/22 126/174/22 119/162/22 +f 126/174/23 128/175/23 127/176/23 +f 123/170/24 125/177/24 118/178/24 +f 121/179/25 126/174/25 127/176/25 +f 123/180/26 127/176/26 128/175/26 +f 129/181/27 131/182/27 132/183/27 +f 130/184/7 134/185/7 131/182/7 +f 133/186/28 136/187/28 134/185/28 +f 137/188/29 136/187/29 135/189/29 +f 138/190/30 139/191/30 132/192/30 +f 140/193/10 138/194/10 137/188/10 +f 129/195/31 139/196/31 140/193/31 +f 141/197/27 143/198/27 144/199/27 +f 142/200/7 146/201/7 143/198/7 +f 145/202/28 148/203/28 146/201/28 +f 149/204/29 148/203/29 147/205/29 +f 150/206/30 151/207/30 144/208/30 +f 152/209/10 150/210/10 149/204/10 +f 141/211/31 151/212/31 152/209/31 +f 153/213/32 155/214/32 156/215/32 +f 154/216/7 158/217/7 155/214/7 +f 157/218/33 160/219/33 158/217/33 +f 161/220/34 160/219/34 159/221/34 +f 162/222/30 163/223/30 156/224/30 +f 164/225/10 162/226/10 161/220/10 +f 153/227/35 163/228/35 164/225/35 +f 165/229/10 167/230/10 168/231/10 +f 169/232/36 167/233/36 166/234/36 +f 171/235/7 170/236/7 169/237/7 +f 165/238/37 172/239/37 171/240/37 +f 173/241/38 168/231/38 167/230/38 +f 176/242/39 173/241/39 175/243/39 +f 168/244/40 176/242/40 172/239/40 +f 175/243/41 167/233/41 170/245/41 +f 172/246/42 175/243/42 170/236/42 +f 178/247/43 180/248/43 177/249/43 +f 208/250/44 211/251/44 205/252/44 +f 211/253/45 212/254/45 205/255/45 +f 188/256/46 181/257/46 185/258/46 +f 185/259/45 178/247/45 183/260/45 +f 183/261/47 187/262/47 185/263/47 +f 190/264/48 192/265/48 189/266/48 +f 188/267/49 189/266/49 182/268/49 +f 188/269/50 187/270/50 190/264/50 +f 182/271/51 186/272/51 183/273/51 +f 193/274/52 194/275/52 195/276/52 +f 187/270/46 191/277/46 190/264/46 +f 189/266/44 193/274/44 186/272/44 +f 186/272/45 196/278/45 187/262/45 +f 194/279/53 198/280/53 199/281/53 +f 196/278/54 195/282/54 200/283/54 +f 191/277/55 194/284/55 192/265/55 +f 196/285/56 197/286/56 191/277/56 +f 202/287/7 198/280/7 201/288/7 +f 200/289/57 198/280/57 197/290/57 +f 194/279/58 202/291/58 195/292/58 +f 195/292/59 201/293/59 200/294/59 +f 180/295/10 204/296/10 203/297/10 +f 184/298/60 204/296/60 181/257/60 +f 181/299/45 179/300/45 178/247/45 +f 184/298/48 180/301/48 203/302/48 +f 206/303/43 208/250/43 205/252/43 +f 216/304/46 209/305/46 212/306/46 +f 213/307/48 208/250/48 209/308/48 +f 188/309/48 177/310/48 184/311/48 +f 213/312/49 215/313/49 210/314/49 +f 218/315/45 220/316/45 217/317/45 +f 217/317/61 216/318/61 211/319/61 +f 216/320/62 214/321/62 213/322/62 +f 215/313/51 211/323/51 210/324/51 +f 221/325/63 223/326/63 218/315/63 +f 219/327/46 214/321/46 220/316/46 +f 221/325/44 217/317/44 215/313/44 +f 224/328/48 215/313/48 214/329/48 +f 223/330/59 226/331/59 227/332/59 +f 224/328/64 222/333/64 221/325/64 +f 223/334/65 219/327/65 218/315/65 +f 227/335/56 224/336/56 219/327/56 +f 226/331/7 230/337/7 229/338/7 +f 226/331/57 228/339/57 227/332/57 +f 230/340/58 223/330/58 222/341/58 +f 229/342/53 222/341/53 228/343/53 +f 232/344/10 206/345/10 231/346/10 +f 232/344/60 212/306/60 209/305/60 +f 207/347/48 209/308/48 208/250/48 +f 212/306/45 206/348/45 205/252/45 +f 178/247/44 182/349/44 183/260/44 +f 234/350/1 236/351/1 233/352/1 +f 235/353/2 238/354/2 236/351/2 +f 237/355/3 240/356/3 238/357/3 +f 239/358/4 242/359/4 240/356/4 +f 241/360/5 244/361/5 242/359/5 +f 243/362/6 246/363/6 244/361/6 +f 245/364/8 248/365/8 246/363/8 +f 247/366/9 233/352/9 248/365/9 +f 240/356/66 249/367/66 250/368/66 +f 255/369/10 256/370/10 250/371/10 +f 248/365/67 255/372/67 246/363/67 +f 238/354/68 252/373/68 236/351/68 +f 244/361/69 249/374/69 242/359/69 +f 248/365/70 251/375/70 256/376/70 +f 236/351/71 251/377/71 233/352/71 +f 238/357/72 250/378/72 253/379/72 +f 244/361/73 255/380/73 254/381/73 +f 258/382/74 260/383/74 257/384/74 +f 259/385/75 262/386/75 260/383/75 +f 261/387/76 264/388/76 262/386/76 +f 263/389/77 266/390/77 264/388/77 +f 265/391/78 268/392/78 266/390/78 +f 267/393/79 270/394/79 268/392/79 +f 261/395/48 258/382/48 269/396/48 +f 269/397/80 272/398/80 270/394/80 +f 271/399/81 257/400/81 272/398/81 +f 270/401/45 272/402/45 264/403/45 +f 274/404/45 276/405/45 273/406/45 +f 273/407/45 278/408/45 274/409/45 +f 280/410/82 282/411/82 279/412/82 +f 284/413/48 286/414/48 283/415/48 +f 278/408/83 287/416/83 274/409/83 +f 273/417/44 284/418/44 277/419/44 +f 276/420/44 290/421/44 288/422/44 +f 286/423/48 288/424/48 291/425/48 +f 273/417/44 288/422/44 285/426/44 +f 291/425/84 293/427/84 294/428/84 +f 290/429/10 295/430/10 292/431/10 +f 291/425/85 296/432/85 286/423/85 +f 276/405/45 295/433/45 289/434/45 +f 288/424/48 292/435/48 291/425/48 +f 280/436/46 296/437/46 287/416/46 +f 296/438/86 297/439/86 287/440/86 +f 294/428/87 298/441/87 297/439/87 +f 295/430/88 293/427/88 292/431/88 +f 320/442/89 277/419/89 284/418/89 +f 275/443/90 298/441/90 295/433/90 +f 275/443/91 287/444/91 297/445/91 +f 283/415/92 296/437/92 279/446/92 +f 306/447/93 308/448/93 281/449/93 +f 280/450/94 306/447/94 281/449/94 +f 279/451/95 299/452/95 283/453/95 +f 308/448/96 311/454/96 309/455/96 +f 305/456/97 311/457/97 312/458/98 +f 299/452/99 309/455/99 305/456/99 +f 281/449/100 309/455/100 282/411/100 +f 283/453/48 301/459/48 284/460/48 +f 319/461/7 312/462/101 318/463/102 +f 312/462/103 310/464/104 318/463/105 +f 284/460/48 302/465/48 320/466/48 +f 307/467/106 310/468/106 308/448/106 +f 301/469/76 313/470/76 321/471/76 +f 304/472/79 322/473/79 317/474/79 +f 300/475/75 314/476/75 313/470/75 +f 323/477/80 317/474/80 316/478/80 +f 324/479/81 316/478/81 315/480/81 +f 302/481/77 321/471/77 326/482/77 +f 303/483/78 326/482/78 322/473/78 +f 325/484/74 315/485/74 314/476/74 +f 299/452/48 305/456/48 324/486/48 +f 299/452/48 300/487/48 283/453/48 +f 303/488/48 312/458/107 320/466/48 +f 323/489/48 312/458/108 304/490/48 +f 326/491/45 277/492/45 319/493/45 +f 318/494/109 322/495/45 319/493/45 +f 318/494/110 316/496/45 317/497/45 +f 321/498/45 278/499/45 277/492/45 +f 306/447/45 313/500/45 314/501/45 +f 307/467/45 306/447/45 315/502/45 +f 327/503/45 329/504/45 330/505/45 +f 332/506/7 334/507/7 331/508/7 +f 336/509/44 338/510/44 335/511/44 +f 340/512/48 342/513/48 339/514/48 +f 344/515/44 346/516/44 343/517/44 +f 348/518/46 350/519/46 347/520/46 +f 352/521/45 354/522/45 351/523/45 +f 356/524/48 358/525/48 355/526/48 +f 360/527/10 362/528/10 359/529/10 +f 363/530/111 358/525/111 339/514/111 +f 357/531/112 343/517/112 340/512/112 +f 364/532/113 351/523/113 347/533/113 +f 336/509/114 327/503/114 344/515/114 +f 349/534/115 334/535/115 355/526/115 +f 338/510/116 356/524/116 333/536/116 +f 348/537/117 354/522/117 331/538/117 +f 335/511/118 332/539/118 353/540/118 +f 365/541/119 342/513/119 367/542/119 +f 341/543/120 369/544/120 368/545/120 +f 370/546/121 329/504/121 372/547/121 +f 373/548/122 330/505/122 374/549/122 +f 365/541/123 367/542/123 359/550/123 +f 368/545/124 369/544/124 360/551/124 +f 370/546/125 362/552/125 371/553/125 +f 373/548/126 374/549/126 361/554/126 +f 350/519/127 364/555/127 347/520/127 +f 357/531/48 339/514/48 358/525/48 +f 336/509/44 343/517/44 337/556/44 +f 352/521/45 328/557/45 327/503/45 +f 347/533/128 354/522/128 348/537/128 +f 335/511/114 352/521/114 336/509/114 +f 331/538/129 353/540/129 332/539/129 +f 348/518/130 334/507/130 349/558/130 +f 338/510/131 332/506/131 335/511/131 +f 355/526/132 333/536/132 356/524/132 +f 349/534/133 358/525/133 350/559/133 +f 337/556/112 356/524/112 338/510/112 +f 366/560/134 370/561/134 372/562/134 +f 341/543/48 367/542/48 342/513/48 +f 345/563/135 369/564/135 346/516/135 +f 330/505/45 371/553/45 374/549/45 +f 330/505/114 344/515/114 327/503/114 +f 340/512/112 346/516/112 341/543/112 +f 339/514/136 366/565/136 363/530/136 +f 328/557/137 372/547/137 329/504/137 +f 365/566/138 362/528/138 370/561/138 +f 368/545/139 359/550/139 367/542/139 +f 373/567/140 360/527/140 369/564/140 +f 374/549/141 362/552/141 361/554/141 +f 363/568/142 372/562/142 364/569/142 +f 376/570/10 378/571/10 375/572/10 +f 377/573/45 380/574/45 378/575/45 +f 379/576/7 382/577/7 380/578/7 +f 381/579/48 375/580/48 382/581/48 +f 375/580/143 383/582/143 384/583/143 +f 377/573/44 381/579/44 379/584/44 +f 387/585/46 383/586/46 386/587/46 +f 380/574/144 388/588/144 387/589/144 +f 378/571/145 383/586/145 375/572/145 +f 382/577/146 388/590/146 380/578/146 +f 390/591/45 392/592/45 389/593/45 +f 385/594/147 390/595/147 388/596/147 +f 384/597/48 393/598/48 385/599/48 +f 387/600/148 394/601/148 384/602/148 +f 387/603/45 390/591/45 389/593/45 +f 395/604/149 396/605/150 397/606/151 +f 393/607/152 391/608/152 390/595/152 +f 394/601/153 392/609/153 395/604/153 +f 393/598/48 395/610/48 398/611/48 +f 399/612/46 401/613/46 402/614/46 +f 395/610/48 402/615/48 398/611/48 +f 392/592/45 401/616/45 400/617/45 +f 398/618/154 401/613/154 391/608/154 +f 404/619/155 406/620/156 403/621/157 +f 400/617/158 396/622/159 392/592/158 +f 399/623/160 397/624/161 404/625/162 +f 399/612/163 403/621/164 400/626/163 +f 408/627/165 405/628/165 407/629/165 +f 396/622/166 406/630/167 408/631/167 +f 397/606/168 408/632/169 407/633/169 +f 404/625/170 407/634/171 405/635/171 +f 418/636/172 412/637/172 417/638/172 +f 409/639/48 417/640/48 412/641/48 +f 418/642/45 410/643/45 411/644/45 +f 415/645/48 417/640/48 414/646/48 +f 419/647/173 421/648/173 416/649/173 +f 418/642/45 422/650/45 413/651/45 +f 416/649/174 418/636/174 417/638/174 +f 422/652/175 414/653/175 413/654/175 +f 419/647/176 424/655/176 420/656/176 +f 424/655/177 415/657/177 422/652/177 +f 423/658/48 416/659/48 415/645/48 +f 421/660/45 424/655/45 422/650/45 +f 414/653/178 410/661/178 413/654/178 +f 466/662/179 427/663/179 465/664/179 +f 465/664/180 425/665/180 462/666/180 +f 425/665/181 428/667/181 429/668/181 +f 468/669/182 430/670/182 467/671/182 +f 461/672/183 432/673/183 468/669/183 +f 430/670/184 466/662/184 467/671/184 +f 433/674/48 435/675/48 436/676/48 +f 427/663/185 433/677/185 428/678/185 +f 432/673/186 434/679/186 430/670/186 +f 426/680/187 429/681/187 438/682/187 +f 430/670/188 433/674/188 431/683/188 +f 426/684/189 437/685/189 432/673/189 +f 436/686/190 441/687/190 439/688/190 +f 438/689/48 443/690/48 437/685/48 +f 429/668/48 439/691/48 444/692/48 +f 433/677/48 439/688/48 428/678/48 +f 437/693/48 435/694/48 434/679/48 +f 438/682/48 444/695/48 442/696/48 +f 445/697/48 447/698/48 440/699/48 +f 435/694/191 448/700/191 445/701/191 +f 444/695/192 450/702/192 442/696/192 +f 435/675/193 440/699/193 436/676/193 +f 443/690/194 450/703/194 448/704/194 +f 439/691/195 449/705/195 444/692/195 +f 447/706/183 453/707/183 451/708/183 +f 450/703/48 455/709/48 448/704/48 +f 449/705/48 451/710/48 456/711/48 +f 440/712/48 451/708/48 441/687/48 +f 445/701/48 455/713/48 446/714/48 +f 449/715/48 454/716/48 450/702/48 +f 458/717/48 459/718/48 460/719/48 +f 455/713/180 458/720/180 446/714/180 +f 456/721/184 460/722/184 454/716/184 +f 446/723/196 452/724/196 447/698/196 +f 454/725/179 459/726/179 455/709/179 +f 451/710/182 457/727/182 456/711/182 +f 462/666/197 464/728/197 465/664/197 +f 462/666/196 426/680/196 461/729/196 +f 470/730/45 472/731/45 469/732/45 +f 465/664/198 469/733/198 466/662/198 +f 467/671/199 473/734/199 468/669/199 +f 474/735/200 462/666/200 461/729/200 +f 466/662/201 472/731/201 467/671/201 +f 473/736/202 461/672/202 468/669/202 +f 476/737/203 470/738/203 475/739/203 +f 473/736/45 479/740/45 474/741/45 +f 463/742/45 475/743/45 464/728/45 +f 475/739/45 469/733/45 464/744/45 +f 471/745/45 473/734/45 472/746/45 +f 474/735/45 480/747/45 463/748/45 +f 481/749/45 483/750/45 477/751/45 +f 471/745/204 484/752/204 478/753/204 +f 485/754/205 480/747/205 479/755/205 +f 470/730/206 483/750/206 471/756/206 +f 478/757/207 485/758/207 479/740/207 +f 486/759/208 475/743/208 480/760/208 +f 488/761/183 481/762/183 487/763/183 +f 490/764/45 485/758/45 484/765/45 +f 486/759/45 487/766/45 476/767/45 +f 487/763/45 477/768/45 476/737/45 +f 483/769/45 490/770/45 484/752/45 +f 485/754/45 492/771/45 486/772/45 +f 496/773/45 489/774/45 488/775/45 +f 496/776/180 490/770/180 482/777/180 +f 494/778/184 492/771/184 491/779/184 +f 489/780/196 482/781/196 481/749/196 +f 495/782/179 491/783/179 490/764/179 +f 493/784/182 487/766/182 492/785/182 +f 498/786/209 500/787/209 497/788/209 +f 500/787/7 501/789/7 502/790/7 +f 502/790/210 503/791/210 504/792/210 +f 503/793/211 506/794/211 504/795/211 +f 505/796/10 508/797/10 506/794/10 +f 507/798/212 497/788/212 508/797/212 +f 498/786/213 510/799/213 499/800/213 +f 510/799/7 501/801/7 499/800/7 +f 511/802/214 503/803/214 501/801/214 +f 512/804/215 505/805/215 503/806/215 +f 505/805/10 514/807/10 507/798/10 +f 514/807/216 498/786/216 507/798/216 +f 515/808/217 510/799/217 509/809/217 +f 510/799/7 517/810/7 511/811/7 +f 517/810/218 512/812/218 511/811/218 +f 512/813/219 519/814/219 513/815/219 +f 519/814/10 514/807/10 513/815/10 +f 514/807/220 515/808/220 509/809/220 +f 521/816/210 516/817/210 515/808/210 +f 516/817/7 523/818/7 517/819/7 +f 517/819/209 524/820/209 518/821/209 +f 524/822/212 519/823/212 518/824/212 +f 525/825/10 520/826/10 519/823/10 +f 520/826/211 521/816/211 515/808/211 +f 527/827/214 522/828/214 521/816/214 +f 522/828/7 529/829/7 523/830/7 +f 529/829/213 524/831/213 523/830/213 +f 524/832/216 531/833/216 525/834/216 +f 531/833/10 526/835/10 525/834/10 +f 526/835/215 527/827/215 521/816/215 +f 497/836/218 528/837/218 527/827/218 +f 528/837/7 502/838/7 529/839/7 +f 502/838/217 530/840/217 529/839/217 +f 530/841/220 506/842/220 531/843/220 +f 506/842/10 532/844/10 531/843/10 +f 532/844/219 497/836/219 527/827/219 +f 533/845/221 538/846/222 534/847/223 +f 537/848/224 540/849/224 538/846/224 +f 539/850/225 542/851/225 540/852/225 +f 541/853/48 539/854/48 537/855/48 +f 541/856/226 545/857/226 542/851/226 +f 544/858/227 546/859/228 545/857/227 +f 540/860/45 542/861/45 545/862/45 +f 548/863/229 550/864/230 547/865/231 +f 533/845/232 546/859/233 543/866/234 +f 549/867/235 552/868/235 550/864/235 +f 547/869/236 552/868/45 535/870/237 +f 535/871/238 551/872/239 536/873/240 +f 548/874/241 551/872/48 549/867/48 +f 553/875/242 555/876/242 556/877/242 +f 555/876/243 558/878/243 556/877/243 +f 557/879/244 560/880/244 558/881/244 +f 559/882/245 562/883/245 560/880/245 +f 555/876/246 564/884/246 557/885/246 +f 561/886/247 566/887/247 562/883/247 +f 566/887/248 554/888/248 553/875/248 +f 560/880/249 568/889/249 558/881/249 +f 572/890/250 564/891/250 569/892/250 +f 565/893/251 571/894/251 570/895/251 +f 554/888/252 563/896/252 555/876/252 +f 559/882/253 564/897/253 572/898/253 +f 554/888/254 570/899/254 569/900/254 +f 559/882/255 571/901/255 561/886/255 +f 573/902/256 575/903/256 576/904/256 +f 566/887/257 577/905/257 574/906/257 +f 562/883/258 567/907/258 560/880/258 +f 556/877/259 568/908/259 578/909/259 +f 566/887/260 573/902/260 562/883/260 +f 553/875/261 578/910/261 577/911/261 +f 575/912/262 580/913/262 581/914/262 +f 567/915/256 583/916/256 568/889/256 +f 577/911/256 584/917/256 579/918/256 +f 574/906/256 579/919/256 575/920/256 +f 573/921/256 582/922/256 567/907/256 +f 578/909/256 583/923/256 584/924/256 +f 587/925/256 588/926/256 581/927/256 +f 576/928/263 587/929/263 582/930/263 +f 583/931/264 585/932/264 584/933/264 +f 575/934/265 588/935/265 576/936/265 +f 583/937/266 587/938/266 586/939/266 +f 584/940/267 580/941/267 579/942/267 +f 589/943/268 591/944/268 592/945/268 +f 593/946/269 595/947/269 596/948/269 +f 597/949/270 599/950/270 595/951/270 +f 601/952/271 602/953/271 600/954/271 +f 596/955/272 604/956/272 593/957/272 +f 590/958/273 601/959/273 605/960/273 +f 598/961/274 607/962/274 599/950/274 +f 596/948/275 599/963/275 608/964/275 +f 603/965/276 598/966/276 597/967/276 +f 603/968/277 608/969/277 609/970/277 +f 606/971/278 611/972/278 612/973/278 +f 599/963/279 613/974/279 608/964/279 +f 598/966/280 610/975/280 606/971/280 +f 608/969/281 610/976/281 609/970/281 +f 615/977/282 611/978/282 614/979/282 +f 613/980/283 611/978/283 610/976/283 +f 606/981/284 615/982/284 607/962/284 +f 607/983/285 614/984/285 613/974/285 +f 616/985/286 618/986/286 591/987/286 +f 602/988/287 616/989/287 619/990/287 +f 619/991/288 591/987/288 590/992/288 +f 602/953/289 592/993/289 620/994/289 +f 621/995/290 622/996/290 623/997/290 +f 620/994/291 621/998/291 624/999/291 +f 592/945/292 618/1000/292 621/995/292 +f 620/1001/293 617/1002/293 616/989/293 +f 623/997/294 626/1003/294 625/1004/294 +f 624/1005/295 626/1003/295 617/1002/295 +f 617/1006/296 622/1007/296 618/986/296 +f 624/999/297 623/1008/297 625/1009/297 +f 594/1010/298 597/949/298 595/951/298 +f 628/1011/299 627/1012/299 594/1010/299 +f 630/1013/300 629/1014/300 628/1011/300 +f 633/1015/272 635/1016/272 632/1017/272 +f 636/1018/272 634/1019/272 633/1015/272 +f 593/957/272 637/1020/272 636/1018/272 +f 597/967/301 604/1021/301 603/965/301 +f 627/1022/302 637/1023/302 604/1021/302 +f 629/1024/303 634/1025/303 637/1023/303 +f 632/1026/304 630/1027/304 633/1028/304 +f 633/1028/305 628/1029/305 636/1030/305 +f 636/1030/306 594/1031/306 593/946/306 +f 619/991/307 605/1032/307 639/1033/307 +f 639/1033/308 638/1034/308 632/1026/308 +f 619/990/309 600/1035/309 602/988/309 +f 632/1017/272 600/1035/272 639/1036/272 +f 630/1013/310 640/1037/310 631/1038/310 +f 605/960/311 640/1037/311 638/1039/311 +f 631/1040/312 635/1041/312 634/1025/312 +f 640/1042/313 600/954/313 635/1041/313 +f 642/1043/314 644/1044/314 641/1045/314 +f 646/1046/45 648/1047/45 645/1048/45 +f 648/1047/315 651/1049/315 649/1050/315 +f 653/1051/316 641/1045/48 652/1052/48 +f 648/1047/317 654/1053/317 650/1054/317 +f 646/1055/44 653/1056/318 647/1057/319 +f 656/1058/320 658/1059/321 655/1060/321 +f 641/1045/48 660/1061/48 652/1052/48 +f 645/1048/45 649/1050/45 661/1062/45 +f 662/1063/322 664/1064/322 665/1065/322 +f 652/1052/323 666/1066/323 667/1067/323 +f 669/1068/324 671/1069/324 668/1070/324 +f 659/1071/48 672/1072/325 660/1061/48 +f 661/1062/45 656/1058/326 668/1070/45 +f 662/1063/48 675/1073/48 673/1074/48 +f 663/1075/327 676/1076/327 664/1064/327 +f 663/1075/48 673/1074/48 672/1072/328 +f 668/1070/45 655/1060/45 669/1068/45 +f 682/1077/329 674/1078/329 683/1079/329 +f 688/1080/330 670/1081/330 669/1068/330 +f 652/1052/331 678/1082/331 653/1051/332 +f 646/1046/333 679/1083/333 680/1084/333 +f 643/1085/10 679/1083/10 644/1044/10 +f 679/1086/334 676/1087/334 644/1088/334 +f 681/1089/335 664/1064/335 676/1076/335 +f 671/1069/336 665/1065/336 664/1064/336 +f 670/1081/337 683/1079/337 665/1065/337 +f 659/1090/338 644/1088/338 676/1087/338 +f 675/1091/339 688/1092/339 677/1093/339 +f 646/1055/340 643/1085/340 642/1094/340 +f 661/1095/341 679/1086/341 645/1096/341 +f 669/1068/45 677/1097/45 688/1080/45 +f 668/1070/342 681/1089/342 661/1062/342 +f 674/1098/343 665/1065/343 683/1099/343 +f 654/1053/7 667/1100/7 650/1054/7 +f 667/1100/344 651/1049/344 650/1054/344 +f 666/1101/345 657/1102/346 651/1049/345 +f 684/1103/347 658/1059/348 657/1102/349 +f 685/1104/350 687/1105/350 658/1059/350 +f 675/1073/351 685/1106/351 673/1074/351 +f 660/1061/352 684/1107/353 666/1066/352 +f 675/1091/354 687/1108/354 686/1109/354 +f 677/1097/355 658/1059/355 687/1105/355 +f 649/1050/356 657/1102/357 656/1058/358 +f 653/1056/359 654/1110/360 647/1057/361 +f 672/1072/362 685/1106/363 684/1107/364 +f 689/1111/365 691/1112/365 692/1113/365 +f 691/1112/2 694/1114/2 692/1113/2 +f 693/1115/3 696/1116/3 694/1117/3 +f 695/1118/4 698/1119/4 696/1116/4 +f 697/1120/5 700/1121/5 698/1119/5 +f 699/1122/6 702/1123/6 700/1121/6 +f 695/1124/7 693/1125/7 701/1126/7 +f 701/1127/8 704/1128/8 702/1123/8 +f 703/1129/366 689/1111/366 704/1128/366 +f 706/1130/367 708/1131/367 705/1132/367 +f 710/1133/368 712/1134/368 709/1135/368 +f 713/1136/369 710/1137/369 709/1138/369 +f 715/1139/370 717/1140/370 718/1141/370 +f 705/1132/371 717/1142/371 716/1143/371 +f 706/1144/372 720/1145/372 707/1146/372 +f 714/1147/373 722/1148/373 710/1149/373 +f 719/1150/374 709/1151/374 720/1152/374 +f 721/1153/375 718/1154/375 722/1155/375 +f 724/1156/8 726/1157/8 723/1158/8 +f 720/1159/376 728/1160/376 707/1161/376 +f 708/1162/377 730/1163/377 717/1164/377 +f 717/1165/378 724/1156/378 718/1166/378 +f 722/1167/379 711/1168/379 710/1169/379 +f 720/1170/380 712/1134/380 727/1171/380 +f 708/1172/381 728/1173/381 729/1174/381 +f 718/1175/382 723/1158/382 722/1176/382 +f 726/1157/383 733/1177/383 731/1178/383 +f 712/1134/5 731/1178/5 734/1179/5 +f 727/1171/3 736/1180/3 728/1160/3 +f 729/1174/1 738/1181/1 730/1163/1 +f 730/1163/9 725/1182/9 724/1156/9 +f 723/1158/6 731/1178/6 711/1168/6 +f 712/1134/4 735/1183/4 727/1171/4 +f 728/1173/2 737/1184/2 729/1174/2 +f 739/1185/384 741/1186/384 742/1187/384 +f 734/1179/385 744/1188/385 735/1183/385 +f 736/1189/386 740/1190/386 737/1184/386 +f 726/1157/387 746/1191/387 732/1192/387 +f 734/1179/388 733/1193/388 743/1194/388 +f 736/1180/389 744/1195/389 745/1196/389 +f 737/1184/390 739/1197/390 738/1181/390 +f 738/1181/391 746/1198/391 725/1182/391 +f 748/1199/8 750/1200/8 747/1201/8 +f 739/1202/392 748/1199/392 746/1203/392 +f 732/1204/393 751/1205/393 733/1206/393 +f 743/1207/394 753/1208/394 744/1209/394 +f 745/1210/395 741/1186/395 740/1211/395 +f 732/1212/396 748/1199/396 747/1201/396 +f 733/1213/397 752/1214/397 743/1215/397 +f 745/1216/398 753/1208/398 754/1217/398 +f 755/1218/399 757/1219/399 758/1220/399 +f 751/1205/5 760/1221/5 752/1214/5 +f 753/1208/3 756/1222/3 754/1217/3 +f 741/1186/1 762/1223/1 742/1187/1 +f 742/1187/9 749/1224/9 748/1199/9 +f 747/1201/6 759/1225/6 751/1205/6 +f 752/1214/4 761/1226/4 753/1208/4 +f 754/1227/2 755/1218/2 741/1186/2 +f 764/1228/400 766/1229/400 763/1230/400 +f 749/1224/401 767/1231/401 750/1200/401 +f 759/1225/402 769/1232/402 760/1221/402 +f 761/1226/403 757/1233/403 756/1222/403 +f 755/1218/404 764/1234/404 762/1223/404 +f 749/1224/405 764/1228/405 763/1230/405 +f 750/1200/406 768/1235/406 759/1225/406 +f 761/1226/407 769/1236/407 770/1237/407 +f 766/1238/408 773/1239/408 771/1240/408 +f 767/1241/409 774/1242/409 768/1235/409 +f 769/1236/410 776/1243/410 770/1237/410 +f 757/1219/411 778/1244/411 758/1220/411 +f 767/1231/412 766/1238/412 771/1240/412 +f 769/1232/413 774/1245/413 775/1246/413 +f 757/1233/414 776/1247/414 777/1248/414 +f 764/1234/415 778/1249/415 765/1250/415 +f 773/1251/10 781/1252/10 779/1253/10 +f 774/1245/416 782/1254/416 775/1246/416 +f 776/1247/417 784/1255/417 777/1248/417 +f 778/1249/418 786/1256/418 765/1250/418 +f 766/1229/419 786/1257/419 772/1258/419 +f 774/1242/420 773/1251/420 779/1253/420 +f 776/1243/421 782/1259/421 783/1260/421 +f 778/1244/422 784/1261/422 785/1262/422 +f 788/1263/5 790/1264/5 787/1265/5 +f 782/1259/10 792/1266/10 783/1260/10 +f 784/1261/10 788/1267/10 785/1262/10 +f 773/1239/10 794/1268/10 780/1269/10 +f 782/1254/10 781/1270/10 791/1271/10 +f 784/1255/10 792/1272/10 793/1273/10 +f 786/1256/10 788/1263/10 787/1265/10 +f 786/1257/10 794/1274/10 772/1258/10 +f 799/1275/10 800/1276/10 796/1277/10 +f 787/1278/4 800/1279/4 794/1274/4 +f 780/1280/2 798/1281/2 781/1252/2 +f 791/1282/9 796/1283/9 792/1266/9 +f 793/1284/6 789/1285/6 788/1267/6 +f 794/1268/3 799/1286/3 780/1269/3 +f 781/1270/1 797/1287/1 791/1271/1 +f 792/1272/8 795/1288/8 793/1273/8 +f 715/1139/423 802/1289/423 716/1143/423 +f 803/1290/8 715/1139/8 721/1153/8 +f 714/1147/6 803/1290/6 721/1153/6 +f 805/1291/424 714/1147/424 713/1136/424 +f 719/1150/425 805/1291/425 713/1136/425 +f 807/1292/3 719/1150/3 706/1144/3 +f 705/1132/2 807/1293/2 706/1130/2 +f 802/1289/426 705/1132/426 716/1143/426 +f 704/1294/427 810/1295/427 809/1296/427 +f 702/1297/428 809/1296/428 811/1298/428 +f 812/1299/429 702/1297/429 811/1298/429 +f 813/1300/430 700/1301/430 812/1299/430 +f 696/1302/431 813/1300/431 814/1303/431 +f 815/1304/432 696/1302/432 814/1303/432 +f 692/1305/433 815/1306/433 816/1307/433 +f 810/1295/434 692/1305/434 816/1307/434 +f 802/1308/1 818/1309/1 808/1310/1 +f 819/1311/435 821/1312/435 822/1313/435 +f 824/1314/1 826/1315/1 823/1316/1 +f 809/1317/436 828/1318/436 811/1319/436 +f 818/1309/437 807/1320/437 808/1310/437 +f 830/1321/438 832/1322/438 826/1323/438 +f 825/1324/2 830/1325/2 826/1315/2 +f 813/1326/439 834/1327/439 835/1328/439 +f 807/1329/440 836/1330/440 806/1331/440 +f 837/1332/441 838/1333/441 839/1334/441 +f 833/1335/3 841/1336/3 830/1337/3 +f 843/1338/442 845/1339/442 842/1340/442 +f 836/1330/4 805/1341/4 806/1331/4 +f 829/1342/443 846/1343/443 847/1344/443 +f 840/1345/4 849/1346/4 841/1336/4 +f 814/1347/444 851/1348/444 815/1349/444 +f 837/1350/5 804/1351/5 805/1341/5 +f 852/1352/445 854/1353/445 855/1354/445 +f 848/1355/5 857/1356/5 849/1346/5 +f 848/1357/446 859/1358/446 856/1359/446 +f 820/1360/447 803/1361/447 804/1351/447 +f 857/1362/448 861/1363/448 849/1364/448 +f 856/1365/6 852/1366/6 857/1356/6 +f 810/1367/449 862/1368/449 863/1369/449 +f 803/1361/450 864/1370/450 801/1371/450 +f 864/1372/451 822/1313/451 865/1373/451 +f 843/1374/8 853/1375/8 852/1366/8 +f 833/1376/452 867/1377/452 840/1378/452 +f 864/1370/9 802/1308/9 801/1371/9 +f 830/1379/453 868/1380/453 831/1381/453 +f 842/1382/9 823/1316/9 853/1375/9 +f 824/1383/454 870/1384/454 825/1385/454 +f 863/1369/1 870/1384/1 869/1386/1 +f 862/1368/2 866/1387/2 870/1384/2 +f 851/1348/3 867/1377/3 866/1388/3 +f 850/1389/4 858/1390/4 867/1377/4 +f 835/1328/5 859/1358/5 858/1390/5 +f 834/1327/6 844/1391/6 859/1358/6 +f 828/1318/8 845/1339/8 844/1391/8 +f 827/1392/9 869/1386/9 845/1339/9 +f 825/1393/455 866/1387/455 833/1394/455 +f 848/1395/456 867/1377/456 858/1390/456 +f 816/1396/457 851/1397/457 862/1368/457 +f 856/1398/458 844/1391/458 843/1399/458 +f 813/1400/459 850/1389/459 814/1401/459 +f 824/1402/460 845/1339/460 869/1386/460 +f 812/1403/461 828/1318/461 834/1327/461 +f 810/1404/462 827/1392/462 809/1405/462 +f 871/1406/1 832/1322/1 846/1343/1 +f 832/1322/2 847/1344/2 846/1343/2 +f 831/1381/3 838/1333/3 847/1407/3 +f 868/1380/4 839/1334/4 838/1333/4 +f 861/1363/5 821/1312/5 839/1334/5 +f 860/1408/6 822/1313/6 821/1312/6 +f 855/1354/8 865/1373/8 822/1313/8 +f 854/1353/9 871/1406/9 865/1373/9 +f 841/1409/463 861/1363/463 868/1380/463 +f 864/1410/464 871/1406/464 817/1411/464 +f 852/1412/465 860/1408/465 857/1413/465 +f 853/1414/466 872/1415/466 854/1353/466 +f 817/1416/467 846/1343/467 818/1417/467 +f 829/1418/468 838/1333/468 836/1419/468 +f 826/1420/469 872/1415/469 823/1421/469 +f 837/1422/470 821/1312/470 820/1423/470 +f 874/1424/1 876/1425/1 873/1426/1 +f 875/1427/2 878/1428/2 876/1425/2 +f 877/1429/3 880/1430/3 878/1431/3 +f 879/1432/4 882/1433/4 880/1430/4 +f 881/1434/5 884/1435/5 882/1433/5 +f 883/1436/6 886/1437/6 884/1435/6 +f 881/1438/7 879/1439/7 877/1440/7 +f 885/1441/8 888/1442/8 886/1437/8 +f 887/1443/9 873/1426/9 888/1442/9 +f 884/1444/10 886/1445/10 888/1446/10 +f 890/1447/471 892/1448/471 889/1449/471 +f 890/1450/45 895/1451/45 893/1452/45 +f 894/1453/472 897/1454/472 898/1455/472 +f 896/1456/48 900/1457/48 899/1458/48 +f 895/1459/46 900/1457/46 893/1460/46 +f 890/1447/44 896/1456/44 894/1453/44 +f 898/1461/7 902/1462/7 901/1463/7 +f 894/1464/45 901/1463/45 895/1451/45 +f 899/1458/473 897/1465/473 896/1456/473 +f 895/1459/474 902/1466/474 899/1458/474 +f 892/1467/10 904/1468/10 903/1469/10 +f 893/1460/475 903/1470/475 904/1471/475 +f 890/1450/45 904/1472/45 891/1473/45 +f 889/1449/476 903/1469/476 900/1457/476 +f 906/1474/471 908/1475/471 905/1476/471 +f 910/1477/48 908/1478/48 909/1479/48 +f 911/1480/472 913/1481/472 914/1482/472 +f 916/1483/45 914/1482/45 915/1484/45 +f 916/1483/46 910/1485/46 909/1486/46 +f 914/1482/44 908/1475/44 911/1480/44 +f 918/1487/7 912/1488/7 917/1489/7 +f 917/1489/48 911/1490/48 910/1477/48 +f 914/1482/477 918/1487/477 915/1484/477 +f 918/1491/474 910/1485/474 915/1484/474 +f 920/1492/10 906/1493/10 919/1494/10 +f 909/1486/475 919/1495/475 916/1483/475 +f 908/1478/48 920/1496/48 909/1479/48 +f 916/1483/478 906/1493/478 905/1476/478 +f 921/1497/479 923/1498/479 924/1499/479 +f 922/1500/44 927/1501/44 925/1502/44 +f 926/1503/480 929/1504/480 930/1505/480 +f 928/1506/46 932/1507/46 931/1508/46 +f 925/1509/45 931/1508/45 932/1507/45 +f 922/1510/48 928/1506/48 926/1503/48 +f 930/1511/481 934/1512/481 933/1513/481 +f 927/1501/44 930/1511/44 933/1513/44 +f 931/1508/482 929/1514/482 928/1506/482 +f 927/1515/483 934/1516/483 931/1508/483 +f 924/1517/484 936/1518/484 935/1519/484 +f 932/1507/485 936/1520/485 925/1509/485 +f 925/1502/44 923/1521/44 922/1500/44 +f 932/1507/486 924/1517/486 935/1519/486 +f 937/1522/10 939/1523/10 940/1524/10 +f 941/1525/45 942/1526/45 943/1527/45 +f 945/1528/487 947/1529/487 948/1530/487 +f 951/1531/48 952/1532/48 953/1533/48 +f 956/1534/46 958/1535/46 955/1536/46 +f 960/1537/46 962/1538/46 959/1539/46 +f 964/1540/46 954/1541/46 963/1542/46 +f 940/1543/46 965/1544/46 937/1545/46 +f 967/1546/44 969/1547/44 966/1548/44 +f 970/1549/488 946/1550/488 945/1528/488 +f 973/1551/45 964/1552/45 974/1553/45 +f 945/1528/489 969/1554/489 950/1555/489 +f 964/1556/490 970/1557/490 949/1558/490 +f 945/1528/491 975/1559/491 969/1554/491 +f 973/1560/46 971/1561/46 970/1557/46 +f 972/1562/492 979/1563/492 977/1564/492 +f 972/1562/493 976/1565/493 973/1551/493 +f 981/1566/7 983/1567/7 980/1568/7 +f 976/1565/45 981/1569/45 980/1570/45 +f 971/1571/494 982/1572/494 946/1550/494 +f 976/1573/495 983/1567/495 971/1561/495 +f 975/1559/496 978/1574/496 984/1575/496 +f 947/1529/497 986/1576/497 979/1563/497 +f 948/1530/44 979/1563/44 978/1574/44 +f 946/1550/498 985/1577/498 947/1529/498 +f 981/1566/499 985/1578/499 982/1579/499 +f 969/1580/500 984/1575/500 966/1581/500 +f 972/1562/501 984/1575/501 978/1574/501 +f 977/1564/502 986/1582/502 981/1569/502 +f 990/1583/503 991/1584/503 969/1547/503 +f 938/1585/504 967/1546/504 939/1523/504 +f 966/1548/505 993/1586/505 994/1587/505 +f 997/1588/46 999/1589/46 942/1590/46 +f 1000/1591/10 955/1536/10 958/1535/10 +f 943/1592/7 965/1544/7 944/1593/7 +f 942/1590/506 1002/1594/506 943/1592/506 +f 997/1588/507 1000/1591/507 998/1595/507 +f 1004/1596/46 1006/1597/46 1003/1598/46 +f 1007/1599/10 959/1539/10 962/1538/10 +f 1009/1600/7 957/1601/7 956/1534/7 +f 1003/1598/506 1010/1602/506 1009/1600/506 +f 1007/1599/507 1004/1596/507 1008/1603/507 +f 1012/1604/46 1013/1605/46 1011/1606/46 +f 1014/1607/10 954/1541/10 953/1608/10 +f 1015/1609/7 961/1610/7 960/1537/7 +f 1015/1609/506 1013/1605/506 1016/1611/506 +f 1012/1604/507 953/1608/507 952/1612/507 +f 990/1583/48 1006/1613/48 1005/1614/48 +f 991/1584/48 1007/1615/48 1016/1616/48 +f 951/1531/48 1013/1617/48 952/1532/48 +f 989/1618/48 1000/1619/48 1010/1620/48 +f 988/1621/48 999/1622/48 998/1623/48 +f 937/1624/48 965/1625/48 1002/1626/48 +f 964/1627/45 963/1628/45 1014/1629/45 +f 993/1586/45 1012/1630/45 1011/1631/45 +f 994/1587/45 1015/1632/45 1008/1633/45 +f 995/1634/45 1004/1635/45 1003/1636/45 +f 996/1637/45 1009/1638/45 1001/1639/45 +f 941/1525/45 997/1640/45 942/1526/45 +f 1018/1641/1 1020/1642/1 1017/1643/1 +f 1022/1644/5 1024/1645/5 1021/1646/5 +f 1023/1647/6 1026/1648/6 1024/1645/6 +f 1028/1649/508 1030/1650/508 1027/1651/508 +f 1024/1645/509 1032/1652/509 1021/1646/509 +f 1018/1653/510 1034/1654/510 1035/1655/510 +f 1022/1656/511 1037/1657/511 1023/1658/511 +f 1038/1659/512 1040/1660/512 1041/1661/512 +f 1027/1662/513 1043/1663/513 1042/1664/513 +f 1044/1665/514 1046/1666/514 1042/1667/514 +f 1048/1668/515 1050/1669/515 1047/1670/515 +f 1048/1671/516 1051/1672/516 1049/1673/516 +f 1042/1674/517 1052/1675/517 1027/1676/517 +f 1044/1677/518 1053/1678/518 1045/1679/518 +f 1059/1680/3 1061/1681/3 1058/1682/3 +f 1060/1683/4 1063/1684/4 1061/1681/4 +f 1183/1685/519 1097/1686/519 1090/1687/519 +f 1067/1688/520 1068/1689/520 1069/1690/520 +f 1098/1691/9 1054/1692/9 1191/1693/9 +f 1074/1694/521 1075/1695/521 1073/1696/521 +f 1214/1697/522 1205/1698/522 1213/1699/522 +f 1079/1700/523 1070/1701/523 1074/1702/523 +f 1055/1703/524 1080/1704/524 1056/1705/524 +f 1081/1706/525 1075/1695/525 1064/1707/525 +f 1088/1708/526 1032/1709/526 1086/1710/526 +f 1083/1711/527 1080/1704/527 1079/1712/527 +f 1079/1700/528 1082/1713/528 1083/1714/528 +f 1031/1715/529 1069/1716/529 1032/1652/529 +f 1089/1717/530 1084/1718/530 1085/1719/530 +f 1071/1720/9 1055/1721/9 1098/1691/9 +f 1209/1722/531 1095/1723/531 1221/1724/531 +f 1095/1723/532 1077/1725/532 1076/1726/532 +f 1070/1727/9 1071/1720/9 1072/1728/9 +f 1099/1729/533 1100/1730/533 1101/1731/533 +f 1035/1732/534 1104/1733/534 1102/1734/534 +f 1105/1735/535 1107/1736/535 1029/1737/535 +f 1108/1738/536 1104/1733/536 1109/1739/536 +f 1110/1740/537 1111/1741/537 1112/1742/537 +f 1047/1743/538 1105/1744/538 1048/1745/538 +f 1023/1746/539 1099/1729/539 1025/1747/539 +f 1042/1748/540 1110/1740/540 1044/1749/540 +f 1028/1750/541 1105/1735/541 1029/1737/541 +f 1039/1751/542 1110/1752/542 1040/1753/542 +f 1018/1754/543 1102/1734/543 1019/1755/543 +f 1114/1756/544 1111/1741/544 1100/1730/544 +f 1115/1757/545 1106/1758/545 1103/1759/545 +f 1104/1733/546 1106/1758/546 1116/1760/546 +f 1034/1654/547 1103/1759/547 1035/1655/547 +f 1037/1657/548 1114/1756/548 1100/1730/548 +f 1030/1650/549 1107/1736/549 1117/1761/549 +f 1110/1752/550 1118/1762/550 1040/1753/550 +f 1105/1744/551 1116/1760/551 1106/1758/551 +f 1120/1763/552 1122/1764/552 1119/1765/552 +f 1051/1672/7 1120/1766/7 1049/1673/7 +f 1049/1767/7 1119/1765/7 1050/1669/7 +f 1052/1768/7 1123/1769/7 1051/1770/7 +f 1045/1771/7 1126/1772/7 1046/1666/7 +f 1045/1679/7 1127/1773/7 1125/1774/7 +f 1129/1775/553 1131/1776/553 1128/1777/553 +f 1125/1778/554 1133/1779/554 1126/1772/554 +f 1124/1780/555 1128/1781/555 1123/1769/555 +f 1124/1782/556 1133/1783/556 1129/1784/556 +f 1123/1785/557 1121/1786/557 1120/1766/557 +f 1134/1787/7 1136/1788/7 1137/1789/7 +f 1129/1790/558 1134/1791/558 1130/1792/558 +f 1128/1793/559 1138/1794/559 1121/1795/559 +f 1122/1796/560 1138/1797/560 1139/1798/560 +f 1140/1799/561 1135/1800/561 1132/1801/561 +f 1133/1802/562 1135/1803/562 1134/1787/562 +f 1131/1804/7 1143/1805/7 1138/1794/7 +f 1139/1798/7 1143/1806/7 1144/1807/7 +f 1141/1808/7 1136/1809/7 1135/1800/7 +f 1147/1810/9 1149/1811/9 1146/1812/9 +f 1150/1813/563 1151/1814/563 1152/1815/563 +f 1144/1807/564 1146/1816/564 1153/1817/564 +f 1145/1818/565 1155/1819/565 1136/1809/565 +f 1156/1820/566 1154/1821/566 1145/1822/566 +f 1137/1789/567 1155/1823/567 1151/1824/567 +f 1146/1816/1 1160/1825/1 1153/1817/1 +f 1154/1826/4 1164/1827/4 1155/1819/4 +f 1155/1823/5 1165/1828/5 1151/1824/5 +f 1166/1829/5 1162/1830/5 1161/1831/5 +f 1168/1832/6 1162/1830/6 1167/1833/6 +f 1170/1834/1 1172/1835/1 1169/1836/1 +f 1174/1837/3 1176/1838/3 1173/1839/3 +f 1175/1840/4 1161/1831/4 1176/1838/4 +f 1175/1841/7 1170/1842/7 1177/1843/7 +f 1178/1844/7 1180/1845/7 1181/1846/7 +f 1090/1687/568 1091/1847/568 1092/1848/568 +f 1064/1849/5 1185/1850/5 1067/1851/5 +f 1184/1852/569 1308/1853/569 1193/1854/569 +f 1064/1707/570 1069/1716/570 1081/1855/570 +f 1090/1687/571 1187/1856/571 1310/1857/571 +f 1191/1693/9 1054/1692/9 1180/1858/9 +f 1188/1859/8 1186/1860/8 1090/1687/8 +f 1162/1861/7 1159/1862/7 1160/1863/7 +f 1194/1864/9 1169/1836/9 1172/1835/9 +f 1189/1865/572 1195/1866/572 1196/1867/572 +f 1197/1868/7 1189/1865/7 1196/1867/7 +f 1097/1869/48 1093/1870/48 1096/1871/48 +f 1198/1872/573 1200/1873/573 1093/1874/573 +f 1201/1875/7 1145/1822/7 1141/1876/7 +f 1165/1877/6 1152/1815/6 1151/1814/6 +f 1183/1878/574 1198/1879/574 1097/1869/574 +f 1204/1880/10 1206/1881/10 1072/1882/10 +f 1082/1883/575 1073/1696/575 1087/1884/575 +f 1071/1885/10 1204/1886/10 1072/1887/10 +f 1099/1888/576 1115/1757/576 1034/1889/576 +f 1153/1890/2 1159/1862/2 1157/1891/2 +f 1208/1892/577 1071/1885/577 1098/1893/577 +f 1200/1894/578 1206/1881/578 1205/1895/578 +f 1065/1896/579 1093/1870/579 1078/1897/579 +f 1077/1898/10 1065/1896/10 1078/1897/10 +f 1185/1899/10 1077/1900/10 1095/1901/10 +f 1185/1899/577 1209/1902/577 1192/1903/577 +f 1195/1866/580 1192/1903/580 1209/1902/580 +f 1098/1893/580 1210/1904/580 1208/1892/580 +f 1211/1905/7 1127/1906/7 1053/1907/7 +f 1076/1726/581 1221/1724/581 1095/1723/581 +f 1237/1908/582 1209/1722/582 1221/1724/582 +f 1207/1909/583 1208/1910/583 1217/1911/583 +f 1104/1733/584 1215/1912/584 1109/1739/584 +f 1122/1913/585 1212/1914/585 1119/1915/585 +f 1142/1916/586 1146/1812/586 1143/1805/586 +f 1159/1917/3 1154/1821/3 1157/1918/3 +f 1236/1919/587 1217/1911/587 1208/1910/587 +f 1214/1697/46 1093/1874/46 1200/1873/46 +f 1038/1920/588 1113/1921/588 1047/1922/588 +f 1047/1923/589 1211/1924/589 1038/1925/589 +f 1032/1709/590 1068/1689/590 1086/1710/590 +f 1086/1926/591 1089/1927/591 1085/1928/591 +f 1215/1912/592 1113/1921/592 1041/1929/592 +f 1140/1930/593 1125/1774/593 1127/1773/593 +f 1131/1776/7 1150/1931/7 1142/1932/7 +f 1180/1845/594 1210/1904/594 1191/1933/594 +f 1219/1934/595 1221/1935/595 1094/1936/595 +f 1211/1924/7 1119/1915/7 1212/1914/7 +f 1101/1731/596 1107/1736/596 1115/1757/596 +f 1217/1911/597 1213/1699/597 1207/1909/597 +f 1086/1926/598 1222/1937/598 1088/1708/598 +f 1201/1875/599 1140/1938/599 1216/1939/599 +f 1134/1791/7 1150/1813/7 1130/1792/7 +f 1087/1940/600 1024/1645/600 1026/1648/600 +f 1224/1941/601 1203/1942/601 1223/1943/601 +f 1223/1943/602 1197/1944/602 1226/1945/602 +f 1178/1946/603 1227/1947/603 1179/1948/603 +f 1233/1949/604 1210/1950/604 1179/1948/604 +f 1224/1941/605 1178/1946/605 1225/1951/605 +f 1227/1947/606 1233/1949/606 1179/1948/606 +f 1229/1952/607 1226/1945/607 1196/1953/607 +f 1019/1954/2 1222/1955/2 1020/1642/2 +f 1019/1956/608 1108/1738/608 1228/1957/608 +f 1039/1958/609 1211/1905/609 1053/1907/609 +f 1111/1741/610 1101/1731/610 1100/1730/610 +f 1028/1959/611 1052/1768/611 1051/1770/611 +f 1040/1660/612 1215/1960/612 1041/1661/612 +f 1122/1961/613 1201/1962/613 1216/1963/613 +f 1201/1962/7 1144/1964/7 1156/1965/7 +f 1156/1965/614 1153/1890/614 1157/1891/614 +f 1056/1705/615 1089/1717/615 1059/1966/615 +f 1033/1967/616 1099/1888/616 1034/1889/616 +f 1194/1968/7 1159/1917/7 1158/1969/7 +f 1224/1970/617 1230/1971/617 1232/1972/617 +f 1195/1973/618 1234/1974/618 1229/1952/618 +f 1196/1953/619 1195/1973/619 1229/1952/619 +f 1076/1726/620 1077/1725/620 1078/1975/620 +f 1214/1697/621 1200/1873/621 1205/1698/621 +f 1210/1950/622 1236/1919/622 1208/1910/622 +f 1237/1908/623 1195/1973/623 1209/1722/623 +f 1231/1976/624 1239/1977/624 1232/1978/624 +f 1232/1978/625 1235/1979/625 1233/1949/625 +f 1230/1980/626 1234/1974/626 1240/1981/626 +f 1219/1982/627 1241/1983/627 1242/1984/627 +f 1219/1985/628 1243/1986/628 1220/1987/628 +f 1220/1987/629 1237/1908/629 1221/1724/629 +f 1237/1908/630 1240/1981/630 1234/1974/630 +f 1238/1988/631 1243/1986/631 1242/1989/631 +f 1238/1990/632 1241/1983/632 1239/1977/632 +f 1236/1919/633 1239/1977/633 1241/1983/633 +f 1281/1991/634 1367/1992/634 1245/1993/634 +f 1067/1851/4 1062/1994/4 1060/1683/4 +f 1061/1681/4 1244/1995/4 1193/1854/4 +f 1289/1996/635 1368/1997/635 1288/1998/635 +f 1284/1999/636 1370/2000/636 1289/2001/636 +f 1249/2002/637 1248/2003/637 1258/2004/637 +f 1282/2005/638 1371/2006/638 1281/2007/638 +f 1246/2008/639 1282/2009/639 1271/2010/639 +f 1367/2011/640 1372/2012/640 1246/2013/640 +f 1369/2014/8 1370/2015/8 1250/2016/8 +f 1248/2017/641 1250/2016/641 1251/2018/641 +f 1251/2018/642 1246/2013/642 1248/2017/642 +f 1368/2019/643 1249/2002/643 1288/2020/643 +f 1270/2021/644 1281/1991/644 1245/1993/644 +f 1286/2022/642 1245/1993/642 1285/2023/642 +f 1367/2024/645 1285/2023/645 1245/1993/645 +f 1258/2004/646 1246/2025/646 1271/2010/646 +f 1292/2026/8 1288/2020/8 1249/2002/8 +f 1249/2002/647 1262/2027/647 1265/2028/647 +f 1251/2029/648 1284/1999/648 1285/2023/648 +f 1253/2030/649 1277/2031/649 1278/2032/649 +f 1267/2033/650 1253/2030/650 1278/2032/650 +f 1277/2031/651 1269/2034/651 1276/2035/651 +f 1253/2030/652 1269/2034/652 1252/2036/652 +f 1273/2037/653 1255/2038/653 1272/2039/653 +f 1272/2039/654 1260/2040/654 1261/2041/654 +f 1259/2042/655 1273/2037/655 1262/2043/655 +f 1259/2042/656 1255/2038/656 1254/2044/656 +f 1275/2045/657 1257/2046/657 1274/2047/657 +f 1274/2047/658 1264/2048/658 1265/2049/658 +f 1263/2050/659 1275/2045/659 1266/2051/659 +f 1263/2050/652 1257/2046/652 1256/2052/652 +f 1258/2004/642 1272/2053/642 1261/2054/642 +f 1261/2041/660 1259/2042/660 1262/2043/660 +f 1262/2027/642 1274/2055/642 1265/2028/642 +f 1265/2049/661 1263/2050/661 1266/2051/661 +f 1267/2056/642 1275/2057/642 1276/2058/642 +f 1276/2035/662 1268/2059/662 1267/2033/662 +f 1279/2060/663 1291/2061/663 1292/2062/663 +f 1273/2063/664 1272/2053/664 1282/2009/664 +f 1279/2060/642 1277/2064/642 1280/2065/642 +f 1205/1698/665 1204/2066/665 1213/1699/665 +f 1290/2067/8 1284/1999/8 1289/2001/8 +f 1286/2022/666 1284/1999/666 1287/2068/667 +f 1293/2069/10 1291/2061/10 1295/2070/10 +f 1088/1708/4 1022/1644/4 1021/1646/4 +f 1297/2071/9 1018/1641/9 1017/1643/9 +f 1026/1648/8 1033/2072/8 1297/2071/8 +f 1083/1714/668 1297/2071/668 1017/1643/668 +f 1057/2073/2 1059/2074/2 1058/2075/2 +f 1298/2076/1 1056/2077/1 1057/2073/1 +f 1020/1642/669 1083/1711/669 1017/1643/669 +f 1301/2078/670 1036/2079/670 1300/2080/670 +f 1108/2081/671 1301/2078/671 1300/2082/671 +f 1300/2080/672 1022/2083/672 1296/2084/672 +f 1301/2078/673 1112/1742/673 1114/1756/673 +f 1117/1761/674 1043/1663/674 1030/2085/674 +f 1126/2086/7 1052/1675/7 1046/2087/7 +f 1150/1931/675 1147/2088/675 1142/1932/675 +f 1194/1864/8 1168/2089/8 1177/2090/8 +f 1171/2091/2 1174/1837/2 1173/1839/2 +f 1203/2092/7 1182/2093/7 1197/2094/7 +f 1225/2095/7 1181/2096/7 1188/2097/7 +f 1092/2098/45 1200/1894/45 1199/2099/45 +f 1152/2100/8 1148/2101/8 1147/2088/8 +f 1199/2099/676 1188/2097/676 1092/2098/676 +f 1031/2102/677 1073/2103/677 1081/1706/677 +f 1301/2078/678 1215/1960/678 1118/1762/678 +f 1212/2104/679 1140/2105/679 1127/1906/679 +f 1198/1872/680 1225/1951/680 1199/2106/680 +f 1222/1955/681 1084/1718/681 1020/1642/681 +f 1297/2071/682 1087/1884/682 1026/1648/682 +f 1222/1937/3 1296/2107/3 1088/1708/3 +f 1108/2081/683 1296/2108/683 1228/2109/683 +f 1060/2110/684 1089/1927/684 1068/2111/684 +f 1231/2112/685 1240/1981/685 1238/1988/685 +f 1218/2113/686 1236/1919/686 1241/1983/686 +f 1055/1721/1 1302/2114/1 1054/1692/1 +f 1299/2115/1 1055/1721/1 1056/2077/1 +f 1054/1692/1 1298/2076/1 1057/2073/1 +f 1283/2116/687 1290/2117/7 1294/2118/7 +f 1306/2119/10 1308/2120/10 1310/2121/10 +f 1057/2073/688 1306/2122/688 1305/2123/688 +f 1090/1687/689 1092/1848/689 1188/1859/689 +f 1091/1847/690 1075/2124/690 1206/2125/690 +f 1061/1681/691 1306/2126/691 1058/1682/691 +f 1090/1687/692 1309/2127/692 1184/1852/692 +f 1054/1692/693 1305/2128/693 1304/2129/693 +f 1193/1854/694 1307/2130/694 1061/1681/694 +f 1304/2131/695 1186/1860/695 1054/1692/695 +f 1206/2125/8 1070/1727/8 1072/1728/8 +f 1173/2132/7 1165/1877/7 1171/2133/7 +f 1173/2134/7 1148/2101/7 1202/2135/7 +f 1176/2136/7 1149/1811/7 1148/2137/7 +f 1161/2138/7 1160/1825/7 1149/2139/7 +f 1172/2140/7 1163/2141/7 1194/2142/7 +f 1164/2143/7 1171/2144/7 1165/1828/7 +f 1323/2145/696 1318/2146/7 1319/2147/697 +f 1287/2148/698 1270/2021/699 1286/2022/699 +f 1180/1858/9 1186/1860/9 1181/2149/9 +f 1065/2150/6 1064/1849/6 1075/2124/6 +f 1065/2150/700 1075/2124/700 1096/2151/700 +f 1185/1850/5 1192/2152/5 1067/1851/5 +f 1192/2152/5 1193/1854/5 1067/1851/5 +f 1193/1854/5 1190/2153/5 1189/2154/5 +f 1189/2154/5 1184/1852/5 1193/1854/5 +f 1090/1687/701 1096/2151/701 1075/2124/701 +f 1184/1852/6 1183/1685/6 1090/1687/6 +f 1244/1995/4 1067/1851/4 1193/1854/4 +f 1313/2155/10 1314/2156/10 1315/2157/10 +f 1320/2158/702 1322/2159/702 1319/2160/703 +f 1318/2161/6 1320/2158/6 1319/2160/704 +f 1311/2162/2 1324/2163/2 1325/2164/2 +f 1327/2165/705 1329/2166/705 1326/2167/705 +f 1335/2168/706 1314/2169/706 1334/2170/706 +f 1314/2156/707 1329/2166/707 1315/2157/707 +f 1335/2171/708 1338/2172/708 1339/2173/708 +f 1337/2174/705 1334/2170/705 1340/2175/705 +f 1341/2176/709 1342/2177/709 1343/2178/709 +f 1333/2179/705 1344/2180/705 1341/2181/705 +f 1345/2182/710 1346/2183/710 1347/2184/710 +f 1331/2185/705 1348/2186/705 1345/2187/705 +f 1342/2177/711 1350/2188/711 1343/2178/711 +f 1334/2189/712 1342/2177/712 1340/2190/712 +f 1333/2191/713 1343/2178/713 1350/2188/713 +f 1334/2189/714 1350/2188/714 1349/2192/714 +f 1346/2183/715 1352/2193/715 1347/2184/715 +f 1332/2194/716 1346/2183/716 1344/2195/716 +f 1331/2196/717 1347/2184/717 1352/2193/717 +f 1332/2194/718 1352/2193/718 1351/2197/718 +f 1353/2198/711 1339/2173/711 1338/2172/711 +f 1327/2199/719 1339/2173/719 1354/2200/719 +f 1337/2201/720 1353/2198/720 1338/2172/720 +f 1327/2199/721 1353/2198/721 1328/2202/721 +f 1320/2158/722 1356/2203/722 1321/2204/722 +f 1341/2181/723 1344/2180/723 1357/2205/723 +f 1316/2206/6 1315/2207/6 1357/2205/6 +f 1348/2186/724 1358/2208/724 1359/2209/724 +f 1321/2204/725 1361/2210/725 1360/2211/725 +f 1360/2211/705 1322/2159/705 1321/2204/705 +f 1324/2212/726 1336/2213/726 1360/2211/726 +f 1357/2205/727 1363/2214/727 1316/2206/727 +f 1358/2215/705 1356/2216/705 1359/2217/705 +f 1355/2218/728 1359/2217/728 1356/2216/728 +f 1364/2219/6 1362/2220/6 1355/2218/6 +f 1365/2221/729 1361/2222/729 1358/2215/729 +f 1325/2164/730 1358/2223/730 1330/2224/730 +f 1325/2225/731 1366/2226/731 1365/2221/731 +f 1357/2205/732 1359/2227/732 1362/2228/732 +f 1320/2158/733 1364/2229/733 1355/2230/733 +f 1317/2231/734 1363/2232/734 1364/2219/734 +f 1324/2212/735 1361/2233/735 1366/2234/735 +f 1319/2147/736 1336/2213/737 1323/2145/738 +f 1213/1699/4 1204/2066/4 1207/1909/4 +f 1294/2235/3 1295/2236/3 1282/2009/3 +f 1094/2237/739 1076/1726/739 1078/1975/739 +f 1078/1975/740 1093/1874/740 1094/2237/740 +f 1233/1949/741 1235/1979/741 1210/1950/741 +f 1226/1945/742 1197/1944/742 1196/1953/742 +f 1374/2238/1 1376/2239/1 1373/2240/1 +f 1375/2241/2 1378/2242/2 1376/2239/2 +f 1377/2243/3 1380/2244/3 1378/2245/3 +f 1379/2246/4 1382/2247/4 1380/2244/4 +f 1381/2248/5 1384/2249/5 1382/2247/5 +f 1383/2250/6 1386/2251/6 1384/2249/6 +f 1381/2248/5 1388/2252/5 1383/2250/5 +f 1385/2253/8 1390/2254/8 1386/2251/8 +f 1389/2255/9 1373/2240/9 1390/2254/9 +f 1384/2249/743 1391/2256/743 1392/2257/743 +f 1398/2258/10 1394/2259/10 1396/2260/10 +f 1380/2244/744 1397/2261/744 1396/2262/744 +f 1386/2251/745 1398/2263/745 1391/2264/745 +f 1378/2242/746 1394/2265/746 1376/2239/746 +f 1384/2249/747 1397/2266/747 1382/2247/747 +f 1390/2254/748 1393/2267/748 1398/2268/748 +f 1376/2239/749 1393/2269/749 1373/2240/749 +f 1380/2244/750 1395/2270/750 1378/2245/750 +f 1399/2271/751 1401/2272/751 1402/2273/751 +f 1389/2255/9 1399/2271/9 1374/2238/9 +f 1374/2238/1 1403/2274/1 1375/2241/1 +f 1377/2243/3 1405/2275/3 1379/2246/3 +f 1383/2250/6 1406/2276/6 1385/2253/6 +f 1379/2246/4 1387/2277/4 1381/2248/4 +f 1385/2253/8 1400/2278/8 1389/2255/8 +f 1375/2241/2 1404/2279/2 1377/2280/2 +f 1388/2252/752 1408/2281/752 1406/2276/752 +f 1387/2277/753 1409/2282/753 1410/2283/753 +f 1404/2279/754 1411/2284/754 1412/2285/754 +f 1400/2278/755 1408/2286/755 1401/2287/755 +f 1387/2277/756 1407/2288/756 1388/2252/756 +f 1405/2275/757 1412/2289/757 1409/2290/757 +f 1399/2271/758 1411/2291/758 1403/2274/758 +f 1412/2289/759 1414/2292/759 1409/2290/759 +f 1414/2293/7 1413/2294/7 1418/2295/7 +f 1402/2296/760 1415/2297/760 1411/2291/760 +f 1401/2272/761 1416/2298/761 1402/2273/761 +f 1408/2281/762 1419/2299/762 1418/2300/762 +f 1410/2283/763 1414/2301/763 1420/2302/763 +f 1412/2285/764 1415/2303/764 1413/2304/764 +f 1408/2286/765 1417/2305/765 1401/2287/765 +f 1407/2288/766 1420/2306/766 1419/2307/766 +f 1422/2308/4 1424/2309/4 1421/2310/4 +f 1422/2308/3 1426/2311/3 1423/2312/3 +f 1427/2313/2 1426/2314/2 1425/2315/2 +f 1429/2316/1 1428/2317/1 1427/2313/1 +f 1431/2318/9 1430/2319/9 1429/2316/9 +f 1433/2320/8 1432/2321/8 1431/2318/8 +f 1435/2322/9 1430/2319/9 1432/2321/9 +f 1437/2323/6 1434/2324/6 1433/2320/6 +f 1421/2310/5 1438/2325/5 1437/2323/5 +f 1431/2318/745 1440/2326/745 1433/2320/745 +f 1446/2327/10 1442/2328/10 1439/2329/10 +f 1427/2313/749 1443/2330/749 1429/2316/749 +f 1433/2320/743 1442/2331/743 1437/2323/743 +f 1446/2332/750 1425/2333/750 1422/2308/750 +f 1443/2334/748 1431/2318/748 1429/2316/748 +f 1437/2323/747 1441/2335/747 1421/2310/747 +f 1441/2336/744 1422/2308/744 1421/2310/744 +f 1445/2337/746 1427/2313/746 1425/2315/746 +f 1448/2338/756 1450/2339/756 1447/2340/756 +f 1447/2340/5 1438/2325/5 1424/2309/5 +f 1451/2341/4 1424/2309/4 1423/2312/4 +f 1452/2342/2 1426/2314/2 1428/2317/2 +f 1454/2343/8 1432/2321/8 1434/2324/8 +f 1436/2344/1 1428/2317/1 1430/2319/1 +f 1450/2339/6 1434/2324/6 1438/2325/6 +f 1453/2345/3 1423/2312/3 1426/2311/3 +f 1455/2346/767 1435/2322/767 1454/2343/767 +f 1436/2344/758 1458/2347/758 1452/2342/758 +f 1453/2345/757 1460/2348/757 1451/2341/757 +f 1449/2349/752 1454/2343/752 1450/2339/752 +f 1456/2350/751 1436/2344/751 1435/2322/751 +f 1452/2342/754 1459/2351/754 1453/2352/754 +f 1460/2353/753 1447/2340/753 1451/2341/753 +f 1461/2354/768 1459/2351/768 1458/2355/768 +f 1467/2356/7 1468/2357/7 1464/2358/7 +f 1463/2359/763 1448/2360/763 1460/2353/763 +f 1448/2338/766 1467/2361/766 1449/2362/766 +f 1455/2346/765 1465/2363/765 1456/2364/765 +f 1457/2365/760 1461/2366/760 1458/2347/760 +f 1459/2367/759 1463/2368/759 1460/2348/759 +f 1467/2369/762 1455/2370/762 1449/2349/762 +f 1456/2350/769 1464/2371/769 1457/2372/769 +f 1471/2373/770 1470/2374/770 1469/2375/770 +f 1473/2376/771 1471/2373/771 1469/2375/771 +f 1475/2377/772 1474/2378/772 1473/2376/772 +f 1478/2379/773 1470/2374/773 1472/2380/773 +f 1477/2381/774 1478/2379/774 1471/2373/774 +f 1475/2382/48 1473/2383/48 1469/2375/48 +f 1481/2384/775 1480/2385/775 1479/2386/775 +f 1483/2387/776 1481/2384/776 1479/2386/776 +f 1485/2388/777 1484/2389/777 1483/2387/777 +f 1482/2390/778 1487/2391/778 1480/2385/778 +f 1487/2391/779 1488/2392/779 1481/2384/779 +f 1485/2393/45 1483/2394/45 1479/2386/45 +f 1491/2395/780 1490/2396/780 1489/2397/780 +f 1493/2398/781 1491/2395/781 1489/2397/781 +f 1495/2399/782 1494/2400/782 1493/2398/782 +f 1498/2401/783 1490/2396/783 1492/2402/783 +f 1497/2403/784 1498/2401/784 1491/2395/784 +f 1495/2404/46 1493/2405/46 1489/2397/46 +f 1499/2406/785 1502/2407/785 1500/2408/785 +f 1503/2409/786 1501/2410/786 1499/2406/786 +f 1505/2411/787 1504/2412/787 1503/2409/787 +f 1508/2413/788 1500/2408/788 1502/2407/788 +f 1507/2414/789 1508/2413/789 1501/2410/789 +f 1505/2415/44 1503/2416/44 1499/2406/44 +f 1509/2417/790 1512/2418/790 1510/2419/790 +f 1513/2420/791 1511/2421/791 1509/2417/791 +f 1515/2422/792 1514/2423/792 1513/2420/792 +f 1512/2418/793 1517/2424/793 1510/2419/793 +f 1517/2424/794 1518/2425/794 1511/2421/794 +f 1515/2426/795 1513/2427/795 1509/2417/795 +f 1519/2428/796 1522/2429/796 1520/2430/796 +f 1523/2431/797 1521/2432/797 1519/2428/797 +f 1523/2431/798 1526/2433/798 1524/2434/798 +f 1528/2435/799 1520/2430/799 1522/2429/799 +f 1527/2436/800 1528/2435/800 1521/2432/800 +f 1525/2437/801 1523/2438/801 1519/2428/801 +f 1531/2439/802 1530/2440/802 1529/2441/802 +f 1529/2441/803 1534/2442/803 1531/2439/803 +f 1533/2443/804 1536/2444/804 1534/2442/804 +f 1532/2445/805 1537/2446/805 1530/2440/805 +f 1537/2446/806 1538/2447/806 1531/2439/806 +f 1535/2448/807 1533/2449/807 1529/2441/807 +f 1541/2450/808 1540/2451/808 1539/2452/808 +f 1539/2452/809 1544/2453/809 1541/2450/809 +f 1543/2454/810 1546/2455/810 1544/2453/810 +f 1548/2456/811 1540/2451/811 1542/2457/811 +f 1547/2458/812 1548/2456/812 1541/2450/812 +f 1545/2459/813 1543/2460/813 1539/2452/813 +f 2/1/1 3/4/1 4/2/1 +f 3/4/2 5/2461/2 6/5/2 +f 5/6/3 7/9/3 8/7/3 +f 7/9/4 9/11/4 10/10/4 +f 9/11/5 11/13/5 12/12/5 +f 11/13/6 13/18/6 14/14/6 +f 5/16/7 3/2462/7 2/2463/7 +f 2/2463/7 15/2464/7 5/16/7 +f 15/2464/7 13/17/7 5/16/7 +f 13/17/7 11/2465/7 9/2466/7 +f 9/2466/7 7/15/7 13/17/7 +f 13/18/8 15/20/8 16/19/8 +f 15/20/9 2/1/9 1/3/9 +f 16/23/10 1/2467/10 4/2468/10 +f 4/2468/10 6/2469/10 8/21/10 +f 8/21/10 10/2470/10 12/22/10 +f 12/22/10 14/2471/10 16/23/10 +f 16/23/10 4/2468/10 8/21/10 +f 18/24/1 19/27/1 20/25/1 +f 19/27/2 21/2472/2 22/28/2 +f 21/29/3 23/32/3 24/30/3 +f 23/32/4 25/34/4 26/33/4 +f 25/34/5 27/36/5 28/35/5 +f 27/36/6 29/41/6 30/37/6 +f 21/39/7 19/2473/7 18/2474/7 +f 18/2474/7 31/2475/7 21/39/7 +f 31/2475/7 29/40/7 21/39/7 +f 29/40/7 27/2476/7 25/2477/7 +f 25/2477/7 23/38/7 29/40/7 +f 29/41/8 31/43/8 32/42/8 +f 31/43/9 18/24/9 17/26/9 +f 32/46/10 17/2478/10 20/2479/10 +f 20/2479/10 22/2480/10 24/44/10 +f 24/44/10 26/2481/10 28/45/10 +f 28/45/10 30/2482/10 32/46/10 +f 32/46/10 20/2479/10 24/44/10 +f 34/47/1 35/50/1 36/48/1 +f 35/50/2 37/2483/2 38/51/2 +f 37/52/3 39/55/3 40/53/3 +f 39/55/4 41/57/4 42/56/4 +f 41/57/5 43/59/5 44/58/5 +f 43/59/6 45/64/6 46/60/6 +f 37/62/7 35/2484/7 34/2485/7 +f 34/2485/7 47/2486/7 37/62/7 +f 47/2486/7 45/63/7 37/62/7 +f 45/63/7 43/2487/7 41/2488/7 +f 41/2488/7 39/61/7 45/63/7 +f 45/64/8 47/66/8 48/65/8 +f 47/66/9 34/47/9 33/49/9 +f 48/69/10 33/2489/10 36/2490/10 +f 36/2490/10 38/2491/10 40/67/10 +f 40/67/10 42/2492/10 44/68/10 +f 44/68/10 46/2493/10 48/69/10 +f 48/69/10 36/2490/10 40/67/10 +f 50/70/1 51/73/1 52/71/1 +f 51/73/2 53/2494/2 54/74/2 +f 53/75/3 55/78/3 56/76/3 +f 55/78/4 57/80/4 58/79/4 +f 57/80/5 59/82/5 60/81/5 +f 59/82/6 61/87/6 62/83/6 +f 53/85/7 51/2495/7 50/2496/7 +f 50/2496/7 63/2497/7 53/85/7 +f 63/2497/7 61/86/7 53/85/7 +f 61/86/7 59/2498/7 57/2499/7 +f 57/2499/7 55/84/7 61/86/7 +f 61/87/8 63/89/8 64/88/8 +f 63/89/9 50/70/9 49/72/9 +f 64/92/10 49/2500/10 52/2501/10 +f 52/2501/10 54/2502/10 56/90/10 +f 56/90/10 58/2503/10 60/91/10 +f 60/91/10 62/2504/10 64/92/10 +f 64/92/10 52/2501/10 56/90/10 +f 66/93/1 67/96/1 68/94/1 +f 67/96/2 69/2505/2 70/97/2 +f 69/98/3 71/101/3 72/99/3 +f 71/101/4 73/103/4 74/102/4 +f 73/103/5 75/105/5 76/104/5 +f 75/105/6 77/110/6 78/106/6 +f 69/108/7 67/2506/7 66/2507/7 +f 66/2507/7 79/2508/7 69/108/7 +f 79/2508/7 77/109/7 69/108/7 +f 77/109/7 75/2509/7 73/2510/7 +f 73/2510/7 71/107/7 77/109/7 +f 77/110/8 79/112/8 80/111/8 +f 79/112/9 66/93/9 65/95/9 +f 80/115/10 65/2511/10 68/2512/10 +f 68/2512/10 70/2513/10 72/113/10 +f 72/113/10 74/2514/10 76/114/10 +f 76/114/10 78/2515/10 80/115/10 +f 80/115/10 68/2512/10 72/113/10 +f 81/116/11 82/2516/11 83/117/11 +f 84/118/7 83/117/7 85/119/7 +f 86/120/12 85/119/12 87/121/12 +f 87/121/13 89/127/13 90/123/13 +f 85/125/14 83/2517/14 82/126/14 +f 82/126/14 91/2518/14 89/2519/14 +f 89/2519/14 87/124/14 82/126/14 +f 89/127/10 91/129/10 92/128/10 +f 91/129/15 82/2520/15 81/130/15 +f 93/131/16 94/2521/16 95/132/16 +f 96/133/7 95/132/7 97/134/7 +f 98/135/17 97/134/17 99/136/17 +f 99/136/814 101/142/814 102/138/814 +f 97/140/14 95/2522/14 94/141/14 +f 94/141/14 103/2523/14 101/2524/14 +f 101/2524/14 99/139/14 94/141/14 +f 101/142/10 103/144/10 104/143/10 +f 103/144/19 94/2525/19 93/145/19 +f 105/146/16 106/2526/16 107/147/16 +f 108/148/7 107/147/7 109/149/7 +f 110/150/17 109/149/17 111/151/17 +f 111/151/814 113/157/814 114/153/814 +f 109/155/14 107/2527/14 106/156/14 +f 106/156/14 115/2528/14 113/2529/14 +f 113/2529/14 111/154/14 106/156/14 +f 113/157/10 115/159/10 116/158/10 +f 115/159/19 106/2530/19 105/160/19 +f 117/161/10 118/173/10 119/162/10 +f 119/164/20 121/179/20 122/165/20 +f 121/167/7 123/180/7 124/168/7 +f 123/170/21 118/178/21 117/171/21 +f 118/173/22 125/177/22 126/174/22 +f 126/174/23 125/177/23 128/175/23 +f 123/170/24 128/175/24 125/177/24 +f 121/179/25 119/164/25 126/174/25 +f 123/180/26 121/167/26 127/176/26 +f 129/181/27 130/184/27 131/182/27 +f 130/184/7 133/186/7 134/185/7 +f 133/186/28 135/189/28 136/187/28 +f 137/188/29 138/194/29 136/187/29 +f 132/192/30 131/2531/30 134/2532/30 +f 134/2532/30 136/2533/30 132/192/30 +f 136/2533/30 138/190/30 132/192/30 +f 140/193/10 139/196/10 138/194/10 +f 129/195/31 132/2534/31 139/196/31 +f 141/197/27 142/200/27 143/198/27 +f 142/200/7 145/202/7 146/201/7 +f 145/202/28 147/205/28 148/203/28 +f 149/204/815 150/210/815 148/203/815 +f 144/208/30 143/2535/30 146/2536/30 +f 146/2536/30 148/2537/30 144/208/30 +f 148/2537/30 150/206/30 144/208/30 +f 152/209/10 151/212/10 150/210/10 +f 141/211/31 144/2538/31 151/212/31 +f 153/213/32 154/216/32 155/214/32 +f 154/216/7 157/218/7 158/217/7 +f 157/218/816 159/221/816 160/219/816 +f 161/220/34 162/226/34 160/219/34 +f 156/224/30 155/2539/30 158/2540/30 +f 158/2540/30 160/2541/30 156/224/30 +f 160/2541/30 162/222/30 156/224/30 +f 164/225/10 163/228/10 162/226/10 +f 153/227/35 156/2542/35 163/228/35 +f 165/229/10 166/2543/10 167/230/10 +f 169/232/36 170/245/36 167/233/36 +f 171/235/7 172/246/7 170/236/7 +f 165/238/37 168/244/37 172/239/37 +f 173/241/38 174/2544/38 168/231/38 +f 176/242/39 174/2544/39 173/241/39 +f 168/244/40 174/2544/40 176/242/40 +f 175/243/817 173/241/817 167/233/817 +f 172/246/42 176/242/42 175/243/42 +f 178/247/43 179/2545/43 180/248/43 +f 208/250/44 210/2546/44 211/251/44 +f 211/253/45 216/2547/45 212/254/45 +f 188/256/46 184/298/46 181/257/46 +f 185/259/45 181/299/45 178/247/45 +f 183/261/47 186/272/47 187/262/47 +f 190/264/48 191/277/48 192/265/48 +f 188/267/49 190/264/49 189/266/49 +f 188/269/62 185/2548/62 187/270/62 +f 182/271/818 189/266/818 186/272/818 +f 193/274/63 192/265/63 194/275/63 +f 187/270/46 196/285/46 191/277/46 +f 189/266/44 192/265/44 193/274/44 +f 186/272/45 193/274/45 196/278/45 +f 194/279/53 197/290/53 198/280/53 +f 196/278/54 193/274/54 195/282/54 +f 191/277/55 197/2549/55 194/284/55 +f 196/285/819 200/2550/819 197/286/819 +f 202/287/7 199/2551/7 198/280/7 +f 200/289/57 201/288/57 198/280/57 +f 194/279/58 199/281/58 202/291/58 +f 195/292/59 202/291/59 201/293/59 +f 180/295/10 179/2552/10 204/296/10 +f 184/298/60 203/297/60 204/296/60 +f 181/299/45 204/2553/45 179/300/45 +f 184/298/48 177/249/48 180/301/48 +f 206/303/43 207/347/43 208/250/43 +f 216/304/46 213/2554/46 209/305/46 +f 213/307/48 210/2546/48 208/250/48 +f 188/309/48 182/2555/48 177/310/48 +f 213/312/49 214/329/49 215/313/49 +f 218/315/45 219/327/45 220/316/45 +f 217/317/61 220/316/61 216/318/61 +f 216/320/62 220/316/62 214/321/62 +f 215/313/51 217/317/51 211/323/51 +f 221/325/52 222/2556/52 223/326/52 +f 219/327/46 224/336/46 214/321/46 +f 221/325/44 218/315/44 217/317/44 +f 224/328/48 221/325/48 215/313/48 +f 223/330/59 225/2557/59 226/331/59 +f 224/328/64 228/2558/64 222/333/64 +f 223/334/65 227/2559/65 219/327/65 +f 227/335/819 228/2560/819 224/336/819 +f 226/331/7 225/2561/7 230/337/7 +f 226/331/57 229/338/57 228/339/57 +f 230/340/58 225/2557/58 223/330/58 +f 229/342/53 230/340/53 222/341/53 +f 232/344/10 207/2562/10 206/345/10 +f 232/344/60 231/346/60 212/306/60 +f 207/347/48 232/2563/48 209/308/48 +f 212/306/45 231/2564/45 206/348/45 +f 178/247/44 177/249/44 182/349/44 +f 234/350/1 235/353/1 236/351/1 +f 235/353/2 237/2565/2 238/354/2 +f 237/355/3 239/358/3 240/356/3 +f 239/358/4 241/360/4 242/359/4 +f 241/360/5 243/362/5 244/361/5 +f 243/362/6 245/364/6 246/363/6 +f 245/364/8 247/366/8 248/365/8 +f 247/366/9 234/350/9 233/352/9 +f 240/356/66 242/359/66 249/367/66 +f 256/370/10 251/2566/10 252/2567/10 +f 252/2567/10 253/2568/10 256/370/10 +f 253/2568/10 250/371/10 256/370/10 +f 250/371/10 249/2569/10 254/2570/10 +f 254/2570/10 255/369/10 250/371/10 +f 248/365/67 256/2571/67 255/372/67 +f 238/354/68 253/2572/68 252/373/68 +f 244/361/69 254/2573/69 249/374/69 +f 248/365/70 233/352/70 251/375/70 +f 236/351/71 252/2574/71 251/377/71 +f 238/357/72 240/356/72 250/378/72 +f 244/361/73 246/363/73 255/380/73 +f 258/382/74 259/385/74 260/383/74 +f 259/385/75 261/387/75 262/386/75 +f 261/387/76 263/389/76 264/388/76 +f 263/389/77 265/391/77 266/390/77 +f 265/391/78 267/393/78 268/392/78 +f 267/393/79 269/397/79 270/394/79 +f 261/395/48 259/385/48 258/382/48 +f 258/382/48 271/2575/48 269/396/48 +f 269/396/48 267/2576/48 265/2577/48 +f 265/2577/48 263/2578/48 269/396/48 +f 263/2578/48 261/395/48 269/396/48 +f 269/397/80 271/399/80 272/398/80 +f 271/399/81 258/2579/81 257/400/81 +f 272/402/45 257/384/45 264/403/45 +f 257/384/45 260/383/45 264/403/45 +f 260/383/45 262/2580/45 264/403/45 +f 264/403/45 266/2581/45 268/2582/45 +f 268/2582/45 270/401/45 264/403/45 +f 274/404/45 275/443/45 276/405/45 +f 273/407/45 277/2583/45 278/408/45 +f 280/410/82 281/449/82 282/411/82 +f 284/413/48 285/2584/48 286/414/48 +f 278/408/83 280/436/83 287/416/83 +f 273/417/44 285/426/44 284/418/44 +f 276/420/44 289/2585/44 290/421/44 +f 286/423/48 285/2586/48 288/424/48 +f 273/417/44 276/420/44 288/422/44 +f 291/425/84 292/435/84 293/427/84 +f 290/429/10 289/2587/10 295/430/10 +f 291/425/85 294/2588/85 296/432/85 +f 276/405/45 275/443/45 295/433/45 +f 288/424/48 290/2589/48 292/435/48 +f 280/436/46 279/446/46 296/437/46 +f 296/438/86 294/428/86 297/439/86 +f 294/428/87 293/427/87 298/441/87 +f 295/430/88 298/441/88 293/427/88 +f 320/442/89 319/2590/89 277/419/89 +f 275/443/90 297/439/90 298/441/90 +f 275/443/91 274/404/91 287/444/91 +f 283/415/92 286/414/92 296/437/92 +f 306/447/93 307/467/93 308/448/93 +f 280/450/94 278/499/94 306/447/94 +f 279/451/95 282/411/95 299/452/95 +f 308/448/96 310/464/96 311/454/96 +f 305/456/97 309/455/97 311/457/97 +f 299/452/99 282/411/99 309/455/99 +f 281/449/100 308/448/100 309/455/100 +f 283/453/48 300/487/48 301/459/48 +f 319/461/7 320/2591/7 312/462/820 +f 312/462/821 311/454/104 310/464/104 +f 284/460/48 301/459/48 302/465/48 +f 302/465/48 303/488/48 320/466/48 +f 307/467/106 318/494/822 310/468/106 +f 301/469/76 300/475/76 313/470/76 +f 304/472/79 303/483/79 322/473/79 +f 300/475/75 325/484/75 314/476/75 +f 323/477/80 304/472/80 317/474/80 +f 324/479/81 323/477/81 316/478/81 +f 302/481/77 301/469/77 321/471/77 +f 303/483/78 302/481/78 326/482/78 +f 325/484/74 324/2592/74 315/485/74 +f 305/456/48 323/489/48 324/486/48 +f 324/486/48 325/2593/48 299/452/48 +f 299/452/48 325/2593/48 300/487/48 +f 303/488/48 304/490/48 312/458/823 +f 323/489/48 305/456/48 312/458/824 +f 319/493/45 322/495/45 326/491/45 +f 326/491/45 321/498/45 277/492/45 +f 318/494/825 317/497/45 322/495/45 +f 318/494/826 307/467/45 316/496/45 +f 321/498/45 313/500/45 278/499/45 +f 306/447/45 278/499/45 313/500/45 +f 306/447/45 314/501/45 315/502/45 +f 315/502/45 316/496/45 307/467/45 +f 327/503/45 328/557/45 329/504/45 +f 332/506/7 333/2594/7 334/507/7 +f 336/509/44 337/556/44 338/510/44 +f 340/512/48 341/543/48 342/513/48 +f 344/515/44 345/563/44 346/516/44 +f 348/518/46 349/558/46 350/519/46 +f 352/521/45 353/540/45 354/522/45 +f 356/524/48 357/531/48 358/525/48 +f 360/527/10 361/2595/10 362/528/10 +f 363/530/827 350/559/827 358/525/827 +f 357/531/112 337/556/112 343/517/112 +f 364/532/828 328/557/828 351/523/828 +f 336/509/114 352/521/114 327/503/114 +f 365/541/829 366/565/829 342/513/829 +f 341/543/830 346/516/830 369/544/830 +f 370/546/831 371/553/831 329/504/831 +f 373/548/832 345/563/832 330/505/832 +f 350/519/127 363/2596/127 364/555/127 +f 357/531/48 340/512/48 339/514/48 +f 336/509/44 344/515/44 343/517/44 +f 352/521/45 351/523/45 328/557/45 +f 347/533/128 351/523/128 354/522/128 +f 335/511/114 353/540/114 352/521/114 +f 331/538/129 354/522/129 353/540/129 +f 348/518/130 331/508/130 334/507/130 +f 338/510/131 333/2594/131 332/506/131 +f 355/526/132 334/535/132 333/536/132 +f 349/534/133 355/526/133 358/525/133 +f 337/556/112 357/531/112 356/524/112 +f 366/560/134 365/566/134 370/561/134 +f 341/543/48 368/545/48 367/542/48 +f 345/563/833 373/567/833 369/564/833 +f 330/505/45 329/504/45 371/553/45 +f 330/505/114 345/563/114 344/515/114 +f 340/512/112 343/517/112 346/516/112 +f 339/514/136 342/513/136 366/565/136 +f 328/557/137 364/532/137 372/547/137 +f 365/566/138 359/529/138 362/528/138 +f 368/545/139 360/551/139 359/550/139 +f 373/567/834 361/2595/834 360/527/834 +f 374/549/141 371/553/141 362/552/141 +f 363/568/142 366/560/142 372/562/142 +f 376/570/10 377/2597/10 378/571/10 +f 377/573/45 379/584/45 380/574/45 +f 379/576/7 381/2598/7 382/577/7 +f 381/579/48 376/2599/48 375/580/48 +f 385/2600/143 382/581/143 384/583/143 +f 382/581/143 375/580/143 384/583/143 +f 377/573/44 376/2599/44 381/579/44 +f 387/585/46 384/2601/46 383/586/46 +f 386/2602/144 378/575/144 387/589/144 +f 378/575/144 380/574/144 387/589/144 +f 378/571/145 386/587/145 383/586/145 +f 382/577/146 385/2603/146 388/590/146 +f 390/591/45 391/2604/45 392/592/45 +f 385/594/147 393/607/147 390/595/147 +f 384/597/48 394/2605/48 393/598/48 +f 387/600/148 389/2606/148 394/601/148 +f 387/603/45 388/2607/45 390/591/45 +f 395/604/149 392/609/149 396/605/835 +f 393/607/152 398/618/152 391/608/152 +f 394/601/153 389/2606/153 392/609/153 +f 393/598/48 394/2605/48 395/610/48 +f 399/612/46 400/626/46 401/613/46 +f 395/610/48 399/623/48 402/615/48 +f 392/592/45 391/2604/45 401/616/45 +f 398/618/154 402/614/154 401/613/154 +f 404/619/836 405/628/156 406/620/156 +f 400/617/837 403/2608/838 396/622/839 +f 399/623/840 395/610/840 397/624/841 +f 399/612/163 404/619/842 403/621/843 +f 408/627/844 406/620/844 405/628/844 +f 396/622/845 403/2608/846 406/630/167 +f 397/606/847 396/605/848 408/632/169 +f 404/625/849 397/624/850 407/634/171 +f 418/636/172 411/2609/172 412/637/172 +f 409/639/48 414/646/48 417/640/48 +f 418/642/45 413/651/45 410/643/45 +f 415/645/48 416/659/48 417/640/48 +f 419/647/173 420/656/173 421/648/173 +f 418/642/45 421/660/45 422/650/45 +f 416/649/174 421/648/174 418/636/174 +f 422/652/175 415/657/175 414/653/175 +f 419/647/176 423/658/176 424/655/176 +f 424/655/177 423/658/177 415/657/177 +f 423/658/48 419/647/48 416/659/48 +f 421/660/45 420/656/45 424/655/45 +f 414/653/178 409/2610/178 410/661/178 +f 466/662/179 431/683/179 427/663/179 +f 465/664/180 427/663/180 425/665/180 +f 425/665/181 427/663/181 428/667/181 +f 468/669/182 432/673/182 430/670/182 +f 461/672/183 426/684/183 432/673/183 +f 430/670/184 431/683/184 466/662/184 +f 433/674/48 434/2611/48 435/675/48 +f 427/663/185 431/683/185 433/677/185 +f 432/673/186 437/693/186 434/679/186 +f 426/680/187 425/665/187 429/681/187 +f 430/670/188 434/2611/188 433/674/188 +f 426/684/189 438/689/189 437/685/189 +f 436/686/190 440/712/190 441/687/190 +f 438/689/48 442/2612/48 443/690/48 +f 429/668/48 428/667/48 439/691/48 +f 433/677/48 436/686/48 439/688/48 +f 437/693/48 443/2613/48 435/694/48 +f 438/682/48 429/681/48 444/695/48 +f 445/697/48 446/723/48 447/698/48 +f 435/694/191 443/2613/191 448/700/191 +f 444/695/192 449/715/192 450/702/192 +f 435/675/193 445/697/193 440/699/193 +f 443/690/851 442/2612/851 450/703/851 +f 439/691/852 441/2614/852 449/705/852 +f 447/706/183 452/2615/183 453/707/183 +f 450/703/48 454/725/48 455/709/48 +f 449/705/48 441/2614/48 451/710/48 +f 440/712/48 447/706/48 451/708/48 +f 445/701/48 448/700/48 455/713/48 +f 449/715/48 456/721/48 454/716/48 +f 460/719/48 457/2616/48 458/717/48 +f 457/2616/48 453/2617/48 458/717/48 +f 453/2617/48 452/2618/48 458/717/48 +f 455/713/180 459/2619/180 458/720/180 +f 456/721/184 457/2620/184 460/722/184 +f 446/723/196 458/2621/196 452/724/196 +f 454/725/179 460/2622/179 459/726/179 +f 451/710/182 453/2623/182 457/727/182 +f 462/666/197 463/742/197 464/728/197 +f 462/666/196 425/665/196 426/680/196 +f 470/730/45 471/756/45 472/731/45 +f 465/664/198 464/744/198 469/733/198 +f 467/671/199 472/746/199 473/734/199 +f 474/735/200 463/748/200 462/666/200 +f 466/662/201 469/732/201 472/731/201 +f 473/736/202 474/741/202 461/672/202 +f 476/737/203 477/768/203 470/738/203 +f 473/736/45 478/757/45 479/740/45 +f 463/742/45 480/760/45 475/743/45 +f 475/739/45 470/738/45 469/733/45 +f 471/745/45 478/753/45 473/734/45 +f 474/735/45 479/755/45 480/747/45 +f 481/749/45 482/781/45 483/750/45 +f 471/745/204 483/769/204 484/752/204 +f 485/754/205 486/772/205 480/747/205 +f 470/730/206 477/751/206 483/750/206 +f 478/757/853 484/765/853 485/758/853 +f 486/759/854 476/767/854 475/743/854 +f 488/761/183 489/2624/183 481/762/183 +f 490/764/45 491/783/45 485/758/45 +f 486/759/45 492/785/45 487/766/45 +f 487/763/45 481/762/45 477/768/45 +f 483/769/45 482/777/45 490/770/45 +f 485/754/45 491/779/45 492/771/45 +f 488/775/45 493/2625/45 496/773/45 +f 493/2625/45 494/2626/45 496/773/45 +f 494/2626/45 495/2627/45 496/773/45 +f 496/776/180 495/2628/180 490/770/180 +f 494/778/184 493/2629/184 492/771/184 +f 489/780/196 496/2630/196 482/781/196 +f 495/782/179 494/2631/179 491/783/179 +f 493/784/182 488/2632/182 487/766/182 +f 498/786/209 499/800/209 500/787/209 +f 500/787/7 499/800/7 501/789/7 +f 502/790/210 501/789/210 503/791/210 +f 503/793/211 505/796/211 506/794/211 +f 505/796/10 507/798/10 508/797/10 +f 507/798/212 498/786/212 497/788/212 +f 498/786/213 509/809/213 510/799/213 +f 510/799/7 511/802/7 501/801/7 +f 511/802/214 512/2633/214 503/803/214 +f 512/804/215 513/2634/215 505/805/215 +f 505/805/10 513/2634/10 514/807/10 +f 514/807/216 509/809/216 498/786/216 +f 515/808/217 516/817/217 510/799/217 +f 510/799/7 516/817/7 517/810/7 +f 517/810/218 518/2635/218 512/812/218 +f 512/813/219 518/2636/219 519/814/219 +f 519/814/10 520/826/10 514/807/10 +f 514/807/220 520/826/220 515/808/220 +f 521/816/210 522/828/210 516/817/210 +f 516/817/7 522/828/7 523/818/7 +f 517/819/209 523/818/209 524/820/209 +f 524/822/212 525/825/212 519/823/212 +f 525/825/10 526/835/10 520/826/10 +f 520/826/211 526/835/211 521/816/211 +f 527/827/214 528/837/214 522/828/214 +f 522/828/7 528/837/7 529/829/7 +f 529/829/213 530/2637/213 524/831/213 +f 524/832/216 530/2638/216 531/833/216 +f 531/833/10 532/844/10 526/835/10 +f 526/835/215 532/844/215 527/827/215 +f 497/836/218 500/2639/218 528/837/218 +f 528/837/7 500/2639/7 502/838/7 +f 502/838/217 504/2640/217 530/840/217 +f 530/841/220 504/2641/220 506/842/220 +f 506/842/10 508/2642/10 532/844/10 +f 532/844/219 508/2642/219 497/836/219 +f 533/845/855 537/848/222 538/846/222 +f 537/848/224 539/2643/224 540/849/224 +f 539/850/225 541/856/225 542/851/225 +f 537/855/48 533/845/856 543/866/857 +f 543/866/858 544/2644/48 537/855/48 +f 544/2644/48 541/853/48 537/855/48 +f 541/856/226 544/858/226 545/857/226 +f 544/858/227 543/866/859 546/859/860 +f 545/862/45 546/859/861 534/847/862 +f 534/847/863 538/2645/45 545/862/45 +f 538/2645/45 540/860/45 545/862/45 +f 548/863/864 549/867/230 550/864/230 +f 533/845/865 534/847/866 546/859/867 +f 549/867/235 551/872/235 552/868/235 +f 547/869/868 550/864/45 552/868/45 +f 535/871/869 552/868/239 551/872/239 +f 548/874/870 536/2646/871 551/872/48 +f 553/875/242 554/888/242 555/876/242 +f 555/876/243 557/885/243 558/878/243 +f 557/879/244 559/882/244 560/880/244 +f 559/882/245 561/886/245 562/883/245 +f 555/876/246 563/2647/246 564/884/246 +f 561/886/247 565/893/247 566/887/247 +f 566/887/248 565/893/248 554/888/248 +f 560/880/249 567/915/249 568/889/249 +f 564/891/250 563/2648/250 569/892/250 +f 569/892/250 570/2649/250 571/2650/250 +f 571/2650/250 572/890/250 569/892/250 +f 565/893/251 561/886/251 571/894/251 +f 554/888/252 569/2651/252 563/896/252 +f 559/882/253 557/879/253 564/897/253 +f 554/888/254 565/893/254 570/899/254 +f 559/882/255 572/2652/255 571/901/255 +f 573/902/256 574/2653/256 575/903/256 +f 566/887/872 553/875/872 577/905/872 +f 562/883/873 573/921/873 567/907/873 +f 556/877/259 558/878/259 568/908/259 +f 566/887/260 574/2653/260 573/902/260 +f 553/875/261 556/877/261 578/910/261 +f 575/912/262 579/2654/262 580/913/262 +f 567/915/256 582/2655/256 583/916/256 +f 577/911/256 578/910/256 584/917/256 +f 574/906/256 577/905/256 579/919/256 +f 573/921/256 576/2656/256 582/922/256 +f 578/909/256 568/908/256 583/923/256 +f 581/927/256 580/2657/256 587/925/256 +f 580/2657/256 585/2658/256 587/925/256 +f 585/2658/256 586/2659/256 587/925/256 +f 576/928/263 588/2660/263 587/929/263 +f 583/931/264 586/2661/264 585/932/264 +f 575/934/265 581/2662/265 588/935/265 +f 583/937/266 582/2663/266 587/938/266 +f 584/940/267 585/2664/267 580/941/267 +f 589/943/874 590/2665/874 591/944/874 +f 593/946/875 594/1031/875 595/947/875 +f 597/949/270 598/961/270 599/950/270 +f 601/952/876 589/2666/876 602/953/876 +f 596/955/272 603/968/272 604/956/272 +f 590/958/877 589/2667/877 601/959/877 +f 598/961/274 606/981/274 607/962/274 +f 596/948/275 595/947/275 599/963/275 +f 603/965/276 609/2668/276 598/966/276 +f 603/968/277 596/955/277 608/969/277 +f 606/971/278 610/975/278 611/972/278 +f 599/963/279 607/983/279 613/974/279 +f 598/966/280 609/2668/280 610/975/280 +f 608/969/281 613/980/281 610/976/281 +f 615/977/282 612/2669/282 611/978/282 +f 613/980/283 614/979/283 611/978/283 +f 606/981/284 612/2670/284 615/982/284 +f 607/983/285 615/2671/285 614/984/285 +f 616/985/878 617/1006/878 618/986/878 +f 602/988/879 620/1001/879 616/989/879 +f 619/991/880 616/985/880 591/987/880 +f 602/953/881 589/2666/881 592/993/881 +f 621/995/882 618/1000/882 622/996/882 +f 620/994/883 592/993/883 621/998/883 +f 592/945/884 591/944/884 618/1000/884 +f 620/1001/885 624/1005/885 617/1002/885 +f 623/997/886 622/996/886 626/1003/886 +f 624/1005/887 625/1004/887 626/1003/887 +f 617/1006/888 626/2672/888 622/1007/888 +f 624/999/889 621/998/889 623/1008/889 +f 594/1010/298 627/1012/298 597/949/298 +f 628/1011/299 629/1014/299 627/1012/299 +f 630/1013/300 631/1038/300 629/1014/300 +f 633/1015/272 634/1019/272 635/1016/272 +f 636/1018/272 637/1020/272 634/1019/272 +f 593/957/272 604/956/272 637/1020/272 +f 597/967/890 627/1022/890 604/1021/890 +f 627/1022/891 629/1024/891 637/1023/891 +f 629/1024/892 631/1040/892 634/1025/892 +f 632/1026/893 638/1034/893 630/1027/893 +f 633/1028/894 630/1027/894 628/1029/894 +f 636/1030/895 628/1029/895 594/1031/895 +f 619/991/896 590/992/896 605/1032/896 +f 639/1033/897 605/1032/897 638/1034/897 +f 619/990/898 639/1036/898 600/1035/898 +f 632/1017/272 635/1016/272 600/1035/272 +f 630/1013/310 638/1039/310 640/1037/310 +f 605/960/311 601/959/311 640/1037/311 +f 631/1040/899 640/1042/899 635/1041/899 +f 640/1042/900 601/952/900 600/954/900 +f 642/1043/314 643/1085/314 644/1044/314 +f 646/1046/45 647/2673/901 648/1047/45 +f 648/1047/315 650/1054/315 651/1049/315 +f 653/1051/902 642/1043/48 641/1045/48 +f 648/1047/317 647/2673/903 654/1053/317 +f 646/1055/44 642/1094/44 653/1056/904 +f 656/1058/905 657/1102/906 658/1059/321 +f 641/1045/48 659/1071/48 660/1061/48 +f 645/1048/45 648/1047/45 649/1050/45 +f 662/1063/322 663/1075/322 664/1064/322 +f 652/1052/323 660/1061/323 666/1066/323 +f 669/1068/324 670/1081/324 671/1069/324 +f 659/1071/48 663/1075/48 672/1072/907 +f 661/1062/45 649/1050/45 656/1058/908 +f 662/1063/48 674/1098/48 675/1073/48 +f 663/1075/327 659/1071/327 676/1076/327 +f 663/1075/48 662/1063/48 673/1074/48 +f 668/1070/45 656/1058/909 655/1060/45 +f 682/1077/329 688/1092/329 674/1078/329 +f 688/1080/910 682/2674/910 670/1081/910 +f 652/1052/331 667/1067/331 678/1082/331 +f 646/1046/333 645/1048/333 679/1083/333 +f 643/1085/10 680/1084/10 679/1083/10 +f 679/1086/334 681/2675/334 676/1087/334 +f 681/1089/335 671/1069/335 664/1064/335 +f 671/1069/336 670/1081/336 665/1065/336 +f 670/1081/337 682/1077/337 683/1079/337 +f 659/1090/338 641/2676/338 644/1088/338 +f 675/1091/339 674/1078/339 688/1092/339 +f 646/1055/340 680/1084/340 643/1085/340 +f 661/1095/341 681/2675/341 679/1086/341 +f 669/1068/45 655/1060/45 677/1097/45 +f 668/1070/342 671/1069/342 681/1089/342 +f 674/1098/911 662/1063/911 665/1065/911 +f 654/1053/7 678/2677/7 667/1100/7 +f 667/1100/344 666/1101/344 651/1049/344 +f 666/1101/345 684/1103/912 657/1102/913 +f 684/1103/914 685/1104/348 658/1059/348 +f 685/1104/350 686/2678/350 687/1105/350 +f 675/1073/915 686/2679/915 685/1106/915 +f 660/1061/352 672/1072/916 684/1107/917 +f 675/1091/354 677/1093/354 687/1108/354 +f 677/1097/918 655/1060/918 658/1059/918 +f 649/1050/356 651/1049/356 657/1102/919 +f 653/1056/920 678/2680/360 654/1110/360 +f 672/1072/921 673/1074/363 685/1106/363 +f 689/1111/922 690/2681/922 691/1112/922 +f 691/1112/2 693/2682/2 694/1114/2 +f 693/1115/3 695/1118/3 696/1116/3 +f 695/1118/4 697/1120/4 698/1119/4 +f 697/1120/5 699/1122/5 700/1121/5 +f 699/1122/6 701/1127/6 702/1123/6 +f 693/1125/7 691/2683/7 701/1126/7 +f 691/2683/7 690/2684/7 701/1126/7 +f 690/2684/7 703/2685/7 701/1126/7 +f 701/1126/7 699/2686/7 697/2687/7 +f 697/2687/7 695/1124/7 701/1126/7 +f 701/1127/8 703/1129/8 704/1128/8 +f 703/1129/923 690/2681/923 689/1111/923 +f 706/1130/367 707/2688/367 708/1131/367 +f 710/1133/368 711/1168/368 712/1134/368 +f 713/1136/369 714/1147/369 710/1137/369 +f 715/1139/370 716/1143/370 717/1140/370 +f 705/1132/371 708/2689/371 717/1142/371 +f 706/1144/372 719/1150/372 720/1145/372 +f 714/1147/373 721/1153/373 722/1148/373 +f 719/1150/374 713/1136/374 709/1151/374 +f 721/1153/375 715/1139/375 718/1154/375 +f 724/1156/8 725/1182/8 726/1157/8 +f 720/1159/376 727/1171/376 728/1160/376 +f 708/1162/377 729/1174/377 730/1163/377 +f 717/1165/378 730/1163/378 724/1156/378 +f 722/1167/379 723/1158/379 711/1168/379 +f 720/1170/380 709/2690/380 712/1134/380 +f 708/1172/381 707/2691/381 728/1173/381 +f 718/1175/382 724/1156/382 723/1158/382 +f 726/1157/383 732/2692/383 733/1177/383 +f 712/1134/5 711/1168/5 731/1178/5 +f 727/1171/3 735/1183/3 736/1180/3 +f 729/1174/1 737/1184/1 738/1181/1 +f 730/1163/9 738/1181/9 725/1182/9 +f 723/1158/6 726/1157/6 731/1178/6 +f 712/1134/4 734/1179/4 735/1183/4 +f 728/1173/2 736/1189/2 737/1184/2 +f 739/1185/384 740/2693/384 741/1186/384 +f 734/1179/385 743/2694/385 744/1188/385 +f 736/1189/386 745/2695/386 740/1190/386 +f 726/1157/387 725/1182/387 746/1191/387 +f 734/1179/388 731/1178/388 733/1193/388 +f 736/1180/389 735/1183/389 744/1195/389 +f 737/1184/390 740/2696/390 739/1197/390 +f 738/1181/391 739/2697/391 746/1198/391 +f 748/1199/8 749/1224/8 750/1200/8 +f 739/1202/392 742/1187/392 748/1199/392 +f 732/1204/393 747/1201/393 751/1205/393 +f 743/1207/394 752/1214/394 753/1208/394 +f 745/1210/395 754/1227/395 741/1186/395 +f 732/1212/396 746/2698/396 748/1199/396 +f 733/1213/397 751/1205/397 752/1214/397 +f 745/1216/398 744/2699/398 753/1208/398 +f 755/1218/399 756/2700/399 757/1219/399 +f 751/1205/5 759/1225/5 760/1221/5 +f 753/1208/3 761/1226/3 756/1222/3 +f 741/1186/1 755/1218/1 762/1223/1 +f 742/1187/9 762/1223/9 749/1224/9 +f 747/1201/6 750/1200/6 759/1225/6 +f 752/1214/4 760/1221/4 761/1226/4 +f 754/1227/2 756/2700/2 755/1218/2 +f 764/1228/400 765/2701/400 766/1229/400 +f 749/1224/401 763/2702/401 767/1231/401 +f 759/1225/402 768/2703/402 769/1232/402 +f 761/1226/403 770/2704/403 757/1233/403 +f 755/1218/404 758/2705/404 764/1234/404 +f 749/1224/405 762/1223/405 764/1228/405 +f 750/1200/406 767/1241/406 768/1235/406 +f 761/1226/407 760/1221/407 769/1236/407 +f 766/1238/408 772/2706/408 773/1239/408 +f 767/1241/409 771/2707/409 774/1242/409 +f 769/1236/410 775/2708/410 776/1243/410 +f 757/1219/411 777/2709/411 778/1244/411 +f 767/1231/412 763/2702/412 766/1238/412 +f 769/1232/413 768/2703/413 774/1245/413 +f 757/1233/414 770/2704/414 776/1247/414 +f 764/1234/415 758/2705/415 778/1249/415 +f 773/1251/10 780/1280/10 781/1252/10 +f 774/1245/416 779/2710/416 782/1254/416 +f 776/1247/417 783/2711/417 784/1255/417 +f 778/1249/418 785/2712/418 786/1256/418 +f 766/1229/419 765/2701/419 786/1257/419 +f 774/1242/420 771/2707/420 773/1251/420 +f 776/1243/421 775/2708/421 782/1259/421 +f 778/1244/422 777/2709/422 784/1261/422 +f 788/1263/5 789/2713/5 790/1264/5 +f 782/1259/10 791/1282/10 792/1266/10 +f 784/1261/10 793/1284/10 788/1267/10 +f 773/1239/10 772/2706/10 794/1268/10 +f 782/1254/10 779/2710/10 781/1270/10 +f 784/1255/10 783/2711/10 792/1272/10 +f 786/1256/10 785/2712/10 788/1263/10 +f 786/1257/10 787/1278/10 794/1274/10 +f 800/1276/10 790/2714/10 789/2715/10 +f 789/2715/10 795/2716/10 800/1276/10 +f 795/2716/10 796/1277/10 800/1276/10 +f 796/1277/10 797/2717/10 798/2718/10 +f 798/2718/10 799/1275/10 796/1277/10 +f 787/1278/4 790/2719/4 800/1279/4 +f 780/1280/2 799/2720/2 798/1281/2 +f 791/1282/9 797/2721/9 796/1283/9 +f 793/1284/6 795/2722/6 789/1285/6 +f 794/1268/3 800/2723/3 799/1286/3 +f 781/1270/1 798/2724/1 797/1287/1 +f 792/1272/8 796/2725/8 795/1288/8 +f 715/1139/423 801/2726/423 802/1289/423 +f 803/1290/924 801/2726/924 715/1139/924 +f 714/1147/925 804/2727/925 803/1290/925 +f 805/1291/424 804/2727/424 714/1147/424 +f 719/1150/425 806/2728/425 805/1291/425 +f 807/1292/926 806/2728/926 719/1150/926 +f 705/1132/927 808/2729/927 807/1293/927 +f 802/1289/426 808/2729/426 705/1132/426 +f 704/1294/366 689/2730/366 810/1295/366 +f 702/1297/428 704/1294/428 809/1296/428 +f 812/1299/429 700/1301/429 702/1297/429 +f 813/1300/928 698/2731/928 700/1301/928 +f 696/1302/929 698/2731/929 813/1300/929 +f 815/1304/930 694/2732/930 696/1302/930 +f 692/1305/931 694/2733/931 815/1306/931 +f 810/1295/365 689/2730/365 692/1305/365 +f 802/1308/1 817/2734/1 818/1309/1 +f 819/1311/435 820/2735/435 821/1312/435 +f 824/1314/1 825/1324/1 826/1315/1 +f 809/1317/436 827/1392/436 828/1318/436 +f 818/1309/932 829/2736/932 807/1320/932 +f 830/1321/438 831/2737/438 832/1322/438 +f 825/1324/2 833/2738/2 830/1325/2 +f 813/1326/439 812/2739/439 834/1327/439 +f 807/1329/933 829/2740/933 836/1330/933 +f 837/1332/441 836/2741/441 838/1333/441 +f 833/1335/3 840/1345/3 841/1336/3 +f 843/1338/934 844/1391/934 845/1339/934 +f 836/1330/4 837/1350/4 805/1341/4 +f 829/1342/935 818/2742/935 846/1343/935 +f 840/1345/4 848/1355/4 849/1346/4 +f 814/1347/936 850/1389/936 851/1348/936 +f 837/1350/5 820/1360/5 804/1351/5 +f 852/1352/445 853/2743/445 854/1353/445 +f 848/1355/5 856/1365/5 857/1356/5 +f 848/1357/937 858/1390/937 859/1358/937 +f 820/1360/938 819/2744/938 803/1361/938 +f 857/1362/448 860/1408/448 861/1363/448 +f 856/1365/6 843/1374/6 852/1366/6 +f 810/1367/449 816/2745/449 862/1368/449 +f 803/1361/939 819/2744/939 864/1370/939 +f 864/1372/451 819/2746/451 822/1313/451 +f 843/1374/8 842/1382/8 853/1375/8 +f 833/1376/940 866/1388/940 867/1377/940 +f 864/1370/9 817/2734/9 802/1308/9 +f 830/1379/453 841/2747/453 868/1380/453 +f 842/1382/9 824/1314/9 823/1316/9 +f 824/1383/941 869/1386/941 870/1384/941 +f 863/1369/1 862/1368/1 870/1384/1 +f 862/1368/2 851/1397/2 866/1387/2 +f 851/1348/3 850/1389/3 867/1377/3 +f 850/1389/4 835/1328/4 858/1390/4 +f 835/1328/5 834/1327/5 859/1358/5 +f 834/1327/6 828/1318/6 844/1391/6 +f 828/1318/8 827/1392/8 845/1339/8 +f 827/1392/9 863/1369/9 869/1386/9 +f 825/1393/942 870/1384/942 866/1387/942 +f 848/1395/943 840/2748/943 867/1377/943 +f 816/1396/944 815/2749/944 851/1397/944 +f 856/1398/945 859/1358/945 844/1391/945 +f 813/1400/946 835/1328/946 850/1389/946 +f 824/1402/947 842/2750/947 845/1339/947 +f 812/1403/461 811/2751/461 828/1318/461 +f 810/1404/462 863/1369/462 827/1392/462 +f 871/1406/1 872/1415/1 832/1322/1 +f 832/1322/2 831/2737/2 847/1344/2 +f 831/1381/3 868/1380/3 838/1333/3 +f 868/1380/4 861/1363/4 839/1334/4 +f 861/1363/5 860/1408/5 821/1312/5 +f 860/1408/6 855/1354/6 822/1313/6 +f 855/1354/8 854/1353/8 865/1373/8 +f 854/1353/9 872/1415/9 871/1406/9 +f 841/1409/463 849/2752/463 861/1363/463 +f 864/1410/948 865/1373/948 871/1406/948 +f 852/1412/465 855/1354/465 860/1408/465 +f 853/1414/949 823/2753/949 872/1415/949 +f 817/1416/950 871/1406/950 846/1343/950 +f 829/1418/951 847/1407/951 838/1333/951 +f 826/1420/952 832/1322/952 872/1415/952 +f 837/1422/470 839/1334/470 821/1312/470 +f 874/1424/1 875/1427/1 876/1425/1 +f 875/1427/2 877/2754/2 878/1428/2 +f 877/1429/3 879/1432/3 880/1430/3 +f 879/1432/4 881/1434/4 882/1433/4 +f 881/1434/5 883/1436/5 884/1435/5 +f 883/1436/6 885/1441/6 886/1437/6 +f 877/1440/7 875/2755/7 874/2756/7 +f 874/2756/7 887/2757/7 877/1440/7 +f 887/2757/7 885/2758/7 877/1440/7 +f 885/2758/7 883/2759/7 877/1440/7 +f 883/2759/7 881/1438/7 877/1440/7 +f 885/1441/8 887/1443/8 888/1442/8 +f 887/1443/9 874/1424/9 873/1426/9 +f 888/1446/10 873/2760/10 876/2761/10 +f 876/2761/10 878/2762/10 888/1446/10 +f 878/2762/10 880/2763/10 888/1446/10 +f 880/2763/10 882/2764/10 888/1446/10 +f 882/2764/10 884/1444/10 888/1446/10 +f 890/1447/471 891/2765/471 892/1448/471 +f 890/1450/45 894/1464/45 895/1451/45 +f 894/1453/472 896/1456/472 897/1454/472 +f 896/1456/48 889/1449/48 900/1457/48 +f 895/1459/46 899/1458/46 900/1457/46 +f 890/1447/44 889/1449/44 896/1456/44 +f 898/1461/7 897/1465/7 902/1462/7 +f 894/1464/45 898/1461/45 901/1463/45 +f 899/1458/473 902/1462/473 897/1465/473 +f 895/1459/474 901/2766/474 902/1466/474 +f 892/1467/10 891/2767/10 904/1468/10 +f 893/1460/475 900/1457/475 903/1470/475 +f 890/1450/45 893/1452/45 904/1472/45 +f 889/1449/476 892/1467/476 903/1469/476 +f 906/1474/471 907/2768/471 908/1475/471 +f 910/1477/48 911/1490/48 908/1478/48 +f 911/1480/472 912/2769/472 913/1481/472 +f 916/1483/45 905/1476/45 914/1482/45 +f 916/1483/46 915/1484/46 910/1485/46 +f 914/1482/44 905/1476/44 908/1475/44 +f 918/1487/7 913/2770/7 912/1488/7 +f 917/1489/48 912/1488/48 911/1490/48 +f 914/1482/477 913/2770/477 918/1487/477 +f 918/1491/474 917/2771/474 910/1485/474 +f 920/1492/10 907/2772/10 906/1493/10 +f 909/1486/475 920/2773/475 919/1495/475 +f 908/1478/48 907/2774/48 920/1496/48 +f 916/1483/478 919/1494/478 906/1493/478 +f 921/1497/953 922/1510/953 923/1498/953 +f 922/1500/44 926/2775/44 927/1501/44 +f 926/1503/954 928/1506/954 929/1504/954 +f 928/1506/46 921/1497/46 932/1507/46 +f 925/1509/45 927/1515/45 931/1508/45 +f 922/1510/48 921/1497/48 928/1506/48 +f 930/1511/481 929/1514/481 934/1512/481 +f 927/1501/44 926/2775/44 930/1511/44 +f 931/1508/482 934/1512/482 929/1514/482 +f 927/1515/955 933/2776/955 934/1516/955 +f 924/1517/484 923/2777/484 936/1518/484 +f 932/1507/956 935/2778/956 936/1520/956 +f 925/1502/44 936/2779/44 923/1521/44 +f 932/1507/486 921/1497/486 924/1517/486 +f 937/1522/10 938/1585/10 939/1523/10 +f 944/2780/45 940/2781/45 943/1527/45 +f 940/2781/45 939/2782/45 943/1527/45 +f 939/2782/45 941/1525/45 943/1527/45 +f 945/1528/487 946/1550/487 947/1529/487 +f 954/2783/48 949/2784/48 953/1533/48 +f 949/2784/48 950/2785/48 953/1533/48 +f 950/2785/48 951/1531/48 953/1533/48 +f 956/1534/46 957/1601/46 958/1535/46 +f 960/1537/46 961/1610/46 962/1538/46 +f 964/1540/46 949/2786/46 954/1541/46 +f 940/1543/46 944/1593/46 965/1544/46 +f 967/1546/44 968/2787/44 969/1547/44 +f 970/1549/488 971/1571/488 946/1550/488 +f 966/2788/957 972/1562/957 974/1553/957 +f 972/1562/958 973/1551/958 974/1553/958 +f 950/1555/48 949/2789/48 970/1549/48 +f 970/1549/959 945/1528/959 950/1555/959 +f 964/1556/490 973/1560/490 970/1557/490 +f 945/1528/960 948/1530/960 975/1559/960 +f 973/1560/46 976/1573/46 971/1561/46 +f 972/1562/492 978/1574/492 979/1563/492 +f 972/1562/493 977/1564/493 976/1565/493 +f 981/1566/7 982/1579/7 983/1567/7 +f 976/1565/961 977/1564/961 981/1569/961 +f 971/1571/48 983/2790/48 982/1572/48 +f 976/1573/495 980/1568/495 983/1567/495 +f 975/1559/496 948/1530/496 978/1574/496 +f 947/1529/962 985/1578/962 986/1576/962 +f 948/1530/44 947/1529/44 979/1563/44 +f 946/1550/963 982/1572/963 985/1577/963 +f 981/1566/499 986/1576/499 985/1578/499 +f 969/1580/500 975/1559/500 984/1575/500 +f 972/1562/964 966/2788/964 984/1575/964 +f 977/1564/965 979/1563/965 986/1582/965 +f 968/2787/503 938/2791/503 987/2792/503 +f 988/1621/503 989/1618/503 969/1547/503 +f 989/1618/503 990/1583/503 969/1547/503 +f 988/1621/503 969/1547/503 968/2787/503 +f 968/2787/503 987/2792/503 988/1621/503 +f 950/2785/503 969/1547/503 951/1531/503 +f 951/1531/503 969/1547/503 991/1584/503 +f 938/1585/966 968/2787/966 967/1546/966 +f 966/1548/505 974/2793/505 992/2794/505 +f 966/1548/505 992/2794/505 993/1586/505 +f 939/2782/967 967/1546/967 941/1525/967 +f 967/1546/968 966/1548/968 996/1637/968 +f 996/1637/967 941/1525/967 967/1546/967 +f 994/1587/505 995/1634/505 966/1548/505 +f 995/1634/505 996/1637/505 966/1548/505 +f 997/1588/46 998/1595/46 999/1589/46 +f 1000/1591/10 1001/2795/10 955/1536/10 +f 943/1592/7 1002/1594/7 965/1544/7 +f 942/1590/506 999/1589/506 1002/1594/506 +f 997/1588/507 1001/2795/507 1000/1591/507 +f 1004/1596/46 1005/2796/46 1006/1597/46 +f 1007/1599/10 1008/1603/10 959/1539/10 +f 1009/1600/7 1010/1602/7 957/1601/7 +f 1003/1598/506 1006/1597/506 1010/1602/506 +f 1007/1599/507 1005/2796/507 1004/1596/507 +f 1012/1604/46 952/1612/46 1013/1605/46 +f 1014/1607/10 963/1542/10 954/1541/10 +f 1015/1609/7 1016/1611/7 961/1610/7 +f 1015/1609/506 1011/1606/506 1013/1605/506 +f 1012/1604/507 1014/1607/507 953/1608/507 +f 990/1583/48 989/1618/48 1006/1613/48 +f 1016/1616/48 1013/1617/48 991/1584/48 +f 991/1584/48 990/1583/48 1007/1615/48 +f 990/1583/48 1005/1614/48 1007/1615/48 +f 1007/1615/48 962/2797/48 961/2798/48 +f 1007/1615/48 961/2798/48 1016/1616/48 +f 951/1531/48 991/1584/48 1013/1617/48 +f 1010/1620/48 1006/1613/48 989/1618/48 +f 989/1618/48 988/1621/48 1000/1619/48 +f 988/1621/48 998/1623/48 1000/1619/48 +f 1000/1619/48 958/2799/48 957/2800/48 +f 1000/1619/48 957/2800/48 1010/1620/48 +f 988/1621/48 987/2792/48 999/1622/48 +f 1002/1626/48 999/1622/48 987/2792/48 +f 987/2792/48 938/2791/48 1002/1626/48 +f 938/2791/48 937/1624/48 1002/1626/48 +f 1014/1629/45 1012/1630/45 992/2794/45 +f 992/2794/45 974/2793/45 1014/1629/45 +f 974/2793/45 964/1627/45 1014/1629/45 +f 993/1586/45 992/2794/45 1012/1630/45 +f 1008/1633/45 1004/1635/45 994/1587/45 +f 994/1587/45 993/1586/45 1015/1632/45 +f 993/1586/45 1011/1631/45 1015/1632/45 +f 1015/1632/45 960/2801/45 959/2802/45 +f 1015/1632/45 959/2802/45 1008/1633/45 +f 995/1634/45 994/1587/45 1004/1635/45 +f 1001/1639/45 997/1640/45 996/1637/45 +f 996/1637/45 995/1634/45 1009/1638/45 +f 995/1634/45 1003/1636/45 1009/1638/45 +f 1009/1638/45 956/2803/45 955/2804/45 +f 1009/1638/45 955/2804/45 1001/1639/45 +f 941/1525/45 996/1637/45 997/1640/45 +f 1018/1641/1 1019/1954/1 1020/1642/1 +f 1022/1644/5 1023/1647/5 1024/1645/5 +f 1023/1647/6 1025/2805/6 1026/1648/6 +f 1028/1649/508 1029/2806/508 1030/1650/508 +f 1024/1645/509 1031/1715/509 1032/1652/509 +f 1018/1653/510 1033/2807/510 1034/1654/510 +f 1022/1656/511 1036/2808/511 1037/1657/511 +f 1038/1659/512 1039/2809/512 1040/1660/512 +f 1027/1662/513 1030/2085/513 1043/1663/513 +f 1044/1665/514 1045/1771/514 1046/1666/514 +f 1048/1668/515 1049/1767/515 1050/1669/515 +f 1048/1671/516 1028/2810/516 1051/1672/516 +f 1042/1674/517 1046/2087/517 1052/1675/517 +f 1044/1677/518 1039/2811/518 1053/1678/518 +f 1059/1680/3 1060/1683/3 1061/1681/3 +f 1060/1683/4 1062/1994/4 1063/1684/4 +f 1067/1688/520 1060/2110/520 1068/1689/520 +f 1098/1691/9 1055/1721/9 1054/1692/9 +f 1074/1694/521 1070/1701/521 1075/1695/521 +f 1079/1700/523 1055/1703/523 1070/1701/523 +f 1055/1703/524 1079/1712/524 1080/1704/524 +f 1081/1706/525 1073/2103/525 1075/1695/525 +f 1088/1708/526 1021/1646/526 1032/1709/526 +f 1083/1711/969 1084/2812/969 1080/1704/969 +f 1079/1700/970 1074/1702/970 1082/1713/970 +f 1031/1715/971 1081/1855/971 1069/1716/971 +f 1089/1717/972 1080/2813/972 1084/1718/972 +f 1070/1727/9 1055/1721/9 1071/1720/9 +f 1099/1729/533 1037/2814/533 1100/1730/533 +f 1035/1732/534 1103/1759/534 1104/1733/534 +f 1105/1735/535 1106/1758/535 1107/1736/535 +f 1108/1738/536 1102/2815/536 1104/1733/536 +f 1110/1740/537 1043/2816/537 1111/1741/537 +f 1047/1743/538 1113/2817/538 1105/1744/538 +f 1023/1746/539 1037/2814/539 1099/1729/539 +f 1042/1748/540 1043/2816/540 1110/1740/540 +f 1028/1750/541 1048/2818/541 1105/1735/541 +f 1039/1751/542 1044/2819/542 1110/1752/542 +f 1018/1754/543 1035/1732/543 1102/1734/543 +f 1114/1756/544 1112/1742/544 1111/1741/544 +f 1115/1757/545 1107/1736/545 1106/1758/545 +f 1104/1733/546 1103/1759/546 1106/1758/546 +f 1034/1654/547 1115/1757/547 1103/1759/547 +f 1037/1657/548 1036/2808/548 1114/1756/548 +f 1030/1650/549 1029/2806/549 1107/1736/549 +f 1110/1752/550 1112/1742/550 1118/1762/550 +f 1105/1744/551 1113/2817/551 1116/1760/551 +f 1120/1763/552 1121/2820/552 1122/1764/552 +f 1051/1672/7 1123/1785/7 1120/1766/7 +f 1049/1767/7 1120/1763/7 1119/1765/7 +f 1052/1768/7 1124/1780/7 1123/1769/7 +f 1045/1771/7 1125/1778/7 1126/1772/7 +f 1045/1679/7 1053/1678/7 1127/1773/7 +f 1129/1775/553 1130/2821/553 1131/1776/553 +f 1125/1778/554 1132/2822/554 1133/1779/554 +f 1124/1780/555 1129/2823/555 1128/1781/555 +f 1124/1782/556 1126/2086/556 1133/1783/556 +f 1123/1785/557 1128/2824/557 1121/1786/557 +f 1134/1787/7 1135/1803/7 1136/1788/7 +f 1129/1790/558 1133/2825/558 1134/1791/558 +f 1128/1793/559 1131/1804/559 1138/1794/559 +f 1122/1796/560 1121/2826/560 1138/1797/560 +f 1140/1799/561 1141/1808/561 1135/1800/561 +f 1133/1802/562 1132/2827/562 1135/1803/562 +f 1131/1804/7 1142/1916/7 1143/1805/7 +f 1139/1798/7 1138/1797/7 1143/1806/7 +f 1141/1808/7 1145/1818/7 1136/1809/7 +f 1147/1810/9 1148/2137/9 1149/1811/9 +f 1150/1813/563 1137/2828/563 1151/1814/563 +f 1144/1807/564 1143/1806/564 1146/1816/564 +f 1145/1818/565 1154/1826/565 1155/1819/565 +f 1156/1820/566 1157/1918/566 1154/1821/566 +f 1137/1789/567 1136/1788/567 1155/1823/567 +f 1146/1816/1 1149/2139/1 1160/1825/1 +f 1154/1826/4 1163/2141/4 1164/1827/4 +f 1155/1823/5 1164/2143/5 1165/1828/5 +f 1166/1829/5 1167/1833/5 1162/1830/5 +f 1168/1832/6 1158/2829/6 1162/1830/6 +f 1170/1834/1 1171/2091/1 1172/1835/1 +f 1174/1837/3 1175/1840/3 1176/1838/3 +f 1175/1840/4 1166/1829/4 1161/1831/4 +f 1177/1843/7 1168/2830/7 1175/1841/7 +f 1168/2830/7 1167/2831/7 1175/1841/7 +f 1167/2831/7 1166/2832/7 1175/1841/7 +f 1175/1841/7 1174/2833/7 1170/1842/7 +f 1170/1842/7 1169/2834/7 1177/1843/7 +f 1178/1844/7 1179/2835/7 1180/1845/7 +f 1090/1687/568 1075/2124/568 1091/1847/568 +f 1064/1849/5 1066/2836/5 1185/1850/5 +f 1184/1852/569 1309/2837/569 1308/1853/569 +f 1064/1707/570 1067/1688/570 1069/1716/570 +f 1090/1687/571 1186/1860/571 1187/1856/571 +f 1188/1859/8 1181/2149/8 1186/1860/8 +f 1162/1861/7 1158/2838/7 1159/1862/7 +f 1194/1864/9 1177/2090/9 1169/1836/9 +f 1189/1865/973 1190/2839/973 1195/1866/973 +f 1197/1868/7 1182/2840/7 1189/1865/7 +f 1097/1869/48 1198/1879/48 1093/1870/48 +f 1198/1872/573 1199/2106/573 1200/1873/573 +f 1201/1875/7 1156/1820/7 1145/1822/7 +f 1165/1877/6 1202/2841/6 1152/1815/6 +f 1183/1878/574 1203/2092/574 1198/1879/574 +f 1204/1880/10 1205/1895/10 1206/1881/10 +f 1082/1883/974 1074/1694/974 1073/1696/974 +f 1071/1885/10 1207/2842/10 1204/1886/10 +f 1099/1888/576 1101/1731/576 1115/1757/576 +f 1153/1890/2 1160/1863/2 1159/1862/2 +f 1208/1892/975 1207/2842/975 1071/1885/975 +f 1200/1894/976 1091/2843/976 1206/1881/976 +f 1065/1896/977 1096/1871/977 1093/1870/977 +f 1077/1898/10 1066/2844/10 1065/1896/10 +f 1185/1899/10 1066/2845/10 1077/1900/10 +f 1185/1899/978 1095/1901/978 1209/1902/978 +f 1195/1866/979 1190/2839/979 1192/1903/979 +f 1098/1893/980 1191/1933/980 1210/1904/980 +f 1211/1905/7 1212/2104/7 1127/1906/7 +f 1104/1733/584 1116/1760/584 1215/1912/584 +f 1122/1913/585 1216/2846/585 1212/1914/585 +f 1142/1916/586 1147/1810/586 1146/1812/586 +f 1159/1917/3 1163/2847/3 1154/1821/3 +f 1214/1697/46 1094/2237/46 1093/1874/46 +f 1038/1920/588 1041/1929/588 1113/1921/588 +f 1047/1923/589 1050/2848/589 1211/1924/589 +f 1032/1709/981 1069/1690/981 1068/1689/981 +f 1086/1926/982 1068/2111/982 1089/1927/982 +f 1215/1912/592 1116/1760/592 1113/1921/592 +f 1140/1930/593 1132/2849/593 1125/1774/593 +f 1131/1776/7 1130/2821/7 1150/1931/7 +f 1180/1845/983 1179/2835/983 1210/1904/983 +f 1213/2850/984 1217/2851/984 1214/2852/984 +f 1217/2851/10 1218/2853/10 1219/1934/10 +f 1214/2852/985 1217/2851/985 1219/1934/985 +f 1219/1934/10 1220/2854/10 1221/1935/10 +f 1219/1934/986 1094/1936/986 1214/2852/986 +f 1221/1935/987 1076/2855/987 1094/1936/987 +f 1211/1924/7 1050/2848/7 1119/1915/7 +f 1101/1731/596 1117/1761/596 1107/1736/596 +f 1086/1926/598 1085/1928/598 1222/1937/598 +f 1201/1875/599 1141/1876/599 1140/1938/599 +f 1134/1791/7 1137/2828/7 1150/1813/7 +f 1087/1940/600 1031/2102/600 1024/1645/600 +f 1224/1941/601 1225/1951/601 1203/1942/601 +f 1223/1943/988 1203/1942/988 1197/1944/988 +f 1224/1941/989 1227/1947/989 1178/1946/989 +f 1019/1954/2 1228/2856/2 1222/1955/2 +f 1019/1956/608 1102/2815/608 1108/1738/608 +f 1039/1958/609 1038/2857/609 1211/1905/609 +f 1111/1741/610 1117/1761/610 1101/1731/610 +f 1028/1959/611 1027/2858/611 1052/1768/611 +f 1040/1660/612 1118/1762/612 1215/1960/612 +f 1122/1961/613 1139/2859/613 1201/1962/613 +f 1201/1962/7 1139/2859/7 1144/1964/7 +f 1156/1965/614 1144/1964/614 1153/1890/614 +f 1056/1705/615 1080/2813/615 1089/1717/615 +f 1033/1967/616 1025/2860/616 1099/1888/616 +f 1194/1968/7 1163/2847/7 1159/1917/7 +f 1233/2861/990 1227/2862/990 1224/1970/990 +f 1224/1970/617 1223/2863/617 1230/1971/617 +f 1223/2863/991 1226/2864/991 1229/2865/991 +f 1230/1971/992 1223/2863/992 1229/2865/992 +f 1230/1971/7 1231/2866/7 1232/1972/7 +f 1232/1972/993 1233/2861/993 1224/1970/993 +f 1210/1950/994 1235/1979/994 1236/1919/994 +f 1237/1908/995 1234/1974/995 1195/1973/995 +f 1231/1976/996 1238/1990/996 1239/1977/996 +f 1232/1978/997 1239/1977/997 1235/1979/997 +f 1230/1980/998 1229/1952/998 1234/1974/998 +f 1219/1982/999 1218/2113/999 1241/1983/999 +f 1219/1985/1000 1242/1989/1000 1243/1986/1000 +f 1220/1987/1001 1243/1986/1001 1237/1908/1001 +f 1237/1908/1002 1243/1986/1002 1240/1981/1002 +f 1238/1988/1003 1240/1981/1003 1243/1986/1003 +f 1238/1990/1004 1242/1984/1004 1241/1983/1004 +f 1236/1919/1005 1235/1979/1005 1239/1977/1005 +f 1281/1991/634 1371/2867/634 1367/1992/634 +f 1067/1851/4 1247/2868/4 1062/1994/4 +f 1061/1681/4 1063/1684/4 1244/1995/4 +f 1289/1996/635 1370/2015/635 1368/1997/635 +f 1284/1999/1006 1250/2869/1006 1370/2000/1006 +f 1249/2002/637 1369/2870/637 1248/2003/637 +f 1282/2005/638 1372/2012/638 1371/2006/638 +f 1246/2008/639 1372/2871/639 1282/2009/639 +f 1367/2011/1007 1371/2006/1007 1372/2012/1007 +f 1369/2014/8 1368/1997/8 1370/2015/8 +f 1248/2017/1008 1369/2014/1008 1250/2016/1008 +f 1251/2018/1009 1367/2011/1009 1246/2013/1009 +f 1368/2019/643 1369/2872/643 1249/2002/643 +f 1270/2021/1010 1283/2873/1011 1281/1991/1010 +f 1286/2022/642 1270/2021/642 1245/1993/642 +f 1367/2024/645 1251/2874/645 1285/2023/645 +f 1258/2004/646 1248/2875/646 1246/2025/646 +f 1292/2026/8 1293/2876/8 1288/2020/8 +f 1249/2002/1012 1258/2004/1012 1261/2054/1012 +f 1249/2002/647 1261/2054/647 1262/2027/647 +f 1279/2060/1013 1292/2026/1013 1278/2877/1013 +f 1292/2026/1014 1249/2002/1014 1266/2878/1014 +f 1267/2056/1013 1292/2026/1013 1266/2878/1013 +f 1267/2056/1013 1278/2877/1013 1292/2026/1013 +f 1265/2028/647 1266/2878/647 1249/2002/647 +f 1251/2029/648 1250/2879/648 1284/1999/648 +f 1253/2030/1015 1252/2036/1015 1277/2031/1015 +f 1267/2033/1016 1268/2059/1016 1253/2030/1016 +f 1277/2031/1017 1252/2036/1017 1269/2034/1017 +f 1253/2030/652 1268/2059/652 1269/2034/652 +f 1273/2037/1018 1254/2044/1018 1255/2038/1018 +f 1272/2039/654 1255/2038/654 1260/2040/654 +f 1259/2042/1019 1254/2044/1019 1273/2037/1019 +f 1259/2042/656 1260/2040/656 1255/2038/656 +f 1275/2045/1020 1256/2052/1020 1257/2046/1020 +f 1274/2047/1021 1257/2046/1021 1264/2048/1021 +f 1263/2050/1022 1256/2052/1022 1275/2045/1022 +f 1263/2050/652 1264/2048/652 1257/2046/652 +f 1258/2004/642 1271/2010/642 1272/2053/642 +f 1261/2041/1023 1260/2040/1023 1259/2042/1023 +f 1262/2027/642 1273/2063/642 1274/2055/642 +f 1265/2049/1024 1264/2048/1024 1263/2050/1024 +f 1267/2056/642 1266/2878/642 1275/2057/642 +f 1276/2035/1025 1269/2034/1025 1268/2059/1025 +f 1279/2060/1026 1280/2065/1026 1291/2061/1026 +f 1282/2009/1027 1291/2880/1027 1275/2057/1027 +f 1291/2880/1028 1280/2065/1028 1277/2064/1028 +f 1276/2058/1028 1291/2880/1028 1277/2064/1028 +f 1276/2058/1028 1275/2057/1028 1291/2880/1028 +f 1275/2057/664 1274/2055/664 1282/2009/664 +f 1274/2055/664 1273/2063/664 1282/2009/664 +f 1272/2053/640 1271/2010/640 1282/2009/640 +f 1279/2060/642 1278/2877/642 1277/2064/642 +f 1290/2067/8 1287/2068/1029 1284/1999/8 +f 1286/2022/641 1285/2023/641 1284/1999/641 +f 1293/2069/10 1292/2062/10 1291/2061/10 +f 1088/1708/4 1296/2107/4 1022/1644/4 +f 1297/2071/9 1033/2072/9 1018/1641/9 +f 1026/1648/8 1025/2805/8 1033/2072/8 +f 1083/1714/668 1082/1713/668 1297/2071/668 +f 1057/2073/2 1056/2077/2 1059/2074/2 +f 1298/2076/1 1299/2115/1 1056/2077/1 +f 1020/1642/669 1084/2812/669 1083/1711/669 +f 1301/2078/670 1114/1756/670 1036/2079/670 +f 1108/2081/671 1109/2881/671 1301/2078/671 +f 1300/2080/672 1036/2079/672 1022/2083/672 +f 1301/2078/673 1118/1762/673 1112/1742/673 +f 1117/1761/674 1111/1741/674 1043/1663/674 +f 1126/2086/7 1124/1782/7 1052/1675/7 +f 1150/1931/675 1152/2100/675 1147/2088/675 +f 1194/1864/8 1158/2882/8 1168/2089/8 +f 1171/2091/2 1170/1834/2 1174/1837/2 +f 1203/2092/7 1183/1878/7 1182/2093/7 +f 1225/2095/7 1178/2883/7 1181/2096/7 +f 1092/2098/45 1091/2843/45 1200/1894/45 +f 1152/2100/8 1202/2135/8 1148/2101/8 +f 1199/2099/676 1225/2095/676 1188/2097/676 +f 1031/2102/1030 1087/1940/1030 1073/2103/1030 +f 1301/2078/678 1109/2881/678 1215/1960/678 +f 1212/2104/679 1216/2884/679 1140/2105/679 +f 1198/1872/680 1203/1942/680 1225/1951/680 +f 1222/1955/681 1085/1719/681 1084/1718/681 +f 1297/2071/682 1082/1883/682 1087/1884/682 +f 1222/1937/3 1228/2885/3 1296/2107/3 +f 1108/2081/683 1300/2082/683 1296/2108/683 +f 1060/2110/684 1059/2886/684 1089/1927/684 +f 1231/2112/1031 1230/1980/1031 1240/1981/1031 +f 1218/2113/1032 1217/1911/1032 1236/1919/1032 +f 1055/1721/1 1303/2887/1 1302/2114/1 +f 1299/2115/1 1303/2887/1 1055/1721/1 +f 1054/1692/1 1302/2114/1 1298/2076/1 +f 1283/2116/1033 1287/2148/1034 1290/2117/7 +f 1310/2121/10 1187/2888/10 1304/2889/10 +f 1304/2889/10 1305/2890/10 1306/2119/10 +f 1306/2119/10 1307/2891/10 1308/2120/10 +f 1308/2120/10 1309/2892/10 1310/2121/10 +f 1310/2121/10 1304/2889/10 1306/2119/10 +f 1057/2073/688 1058/2075/688 1306/2122/688 +f 1061/1681/691 1307/2893/691 1306/2126/691 +f 1090/1687/692 1310/2894/692 1309/2127/692 +f 1054/1692/1035 1057/2073/1035 1305/2128/1035 +f 1193/1854/694 1308/2895/694 1307/2130/694 +f 1304/2131/695 1187/2896/695 1186/1860/695 +f 1206/2125/8 1075/2124/8 1070/1727/8 +f 1173/2132/7 1202/2841/7 1165/1877/7 +f 1173/2134/7 1176/2897/7 1148/2101/7 +f 1176/2136/7 1161/2898/7 1149/1811/7 +f 1161/2138/7 1162/2899/7 1160/1825/7 +f 1172/2140/7 1164/1827/7 1163/2141/7 +f 1164/2143/7 1172/2900/7 1171/2144/7 +f 1323/2145/1036 1311/2901/7 1318/2146/7 +f 1287/2148/1037 1283/2116/1038 1270/2021/1039 +f 1180/1858/9 1054/1692/9 1186/1860/9 +f 1065/2150/6 1066/2836/6 1064/1849/6 +f 1192/2152/5 1190/2153/5 1193/1854/5 +f 1189/2154/5 1182/2902/5 1184/1852/5 +f 1090/1687/701 1097/1686/701 1096/2151/701 +f 1184/1852/6 1182/2902/6 1183/1685/6 +f 1244/1995/4 1247/2868/4 1067/1851/4 +f 1313/2155/10 1312/2903/10 1314/2156/10 +f 1320/2158/728 1321/2204/728 1322/2159/728 +f 1318/2161/6 1317/2904/6 1320/2158/6 +f 1314/2169/2 1312/2905/2 1325/2164/2 +f 1312/2905/2 1311/2162/2 1325/2164/2 +f 1311/2162/2 1323/2906/1040 1324/2163/2 +f 1327/2165/705 1328/2907/705 1329/2166/705 +f 1326/2167/706 1314/2169/706 1327/2165/706 +f 1314/2169/1041 1325/2164/1041 1334/2170/1041 +f 1327/2165/706 1314/2169/706 1335/2168/706 +f 1325/2164/729 1330/2224/729 1331/2185/729 +f 1332/2908/1042 1333/2179/1042 1325/2164/1042 +f 1333/2179/1042 1334/2170/1042 1325/2164/1042 +f 1325/2164/1042 1331/2185/1042 1332/2908/1042 +f 1314/2156/1043 1326/2167/1043 1329/2166/1043 +f 1335/2171/1044 1337/2201/1044 1338/2172/1044 +f 1337/2174/705 1335/2168/705 1334/2170/705 +f 1341/2176/1045 1340/2190/1045 1342/2177/1045 +f 1333/2179/705 1332/2908/705 1344/2180/705 +f 1345/2182/1046 1344/2195/1046 1346/2183/1046 +f 1331/2185/705 1330/2224/705 1348/2186/705 +f 1342/2177/711 1349/2192/711 1350/2188/711 +f 1334/2189/1047 1349/2192/1047 1342/2177/1047 +f 1333/2191/1048 1341/2176/1048 1343/2178/1048 +f 1334/2189/1049 1333/2191/1049 1350/2188/1049 +f 1346/2183/715 1351/2197/715 1352/2193/715 +f 1332/2194/1050 1351/2197/1050 1346/2183/1050 +f 1331/2196/717 1345/2182/717 1347/2184/717 +f 1332/2194/1051 1331/2196/1051 1352/2193/1051 +f 1353/2198/711 1354/2200/711 1339/2173/711 +f 1327/2199/1052 1335/2171/1052 1339/2173/1052 +f 1337/2201/1053 1328/2202/1053 1353/2198/1053 +f 1327/2199/1054 1354/2200/1054 1353/2198/1054 +f 1320/2158/722 1355/2909/722 1356/2203/722 +f 1345/2187/1055 1348/2186/1055 1357/2205/1055 +f 1357/2205/1056 1315/2207/1056 1340/2175/1056 +f 1315/2207/1057 1329/2166/1057 1328/2907/1057 +f 1340/2175/1057 1315/2207/1057 1337/2174/1057 +f 1328/2907/1057 1337/2174/1057 1315/2207/1057 +f 1344/2180/723 1345/2187/723 1357/2205/723 +f 1340/2175/723 1341/2181/723 1357/2205/723 +f 1316/2206/6 1313/2910/6 1315/2207/6 +f 1348/2186/724 1330/2224/724 1358/2208/724 +f 1321/2204/725 1356/2911/725 1361/2210/725 +f 1360/2211/705 1336/2213/705 1322/2159/705 +f 1324/2212/1058 1323/2912/1059 1336/2213/1058 +f 1357/2205/727 1362/2913/727 1363/2214/727 +f 1358/2215/1060 1361/2222/1060 1356/2216/1060 +f 1355/2218/1061 1362/2220/1061 1359/2217/1061 +f 1364/2219/6 1363/2232/6 1362/2220/6 +f 1365/2221/1062 1366/2226/1062 1361/2222/1062 +f 1325/2164/730 1365/2914/730 1358/2223/730 +f 1325/2225/731 1324/2915/731 1366/2226/731 +f 1357/2205/732 1348/2186/732 1359/2227/732 +f 1320/2158/733 1317/2904/733 1364/2229/733 +f 1317/2231/734 1316/2916/734 1363/2232/734 +f 1324/2212/735 1360/2211/735 1361/2233/735 +f 1319/2147/1063 1322/2159/1064 1336/2213/1064 +f 1291/2880/3 1282/2009/3 1295/2236/3 +f 1282/2009/3 1281/2917/3 1294/2235/3 +f 1281/2917/3 1283/2918/1065 1294/2235/3 +f 1374/2238/1 1375/2241/1 1376/2239/1 +f 1375/2241/2 1377/2280/2 1378/2242/2 +f 1377/2243/3 1379/2246/3 1380/2244/3 +f 1379/2246/4 1381/2248/4 1382/2247/4 +f 1381/2248/5 1383/2250/5 1384/2249/5 +f 1383/2250/6 1385/2253/6 1386/2251/6 +f 1381/2248/5 1387/2277/5 1388/2252/5 +f 1385/2253/8 1389/2255/8 1390/2254/8 +f 1389/2255/9 1374/2238/9 1373/2240/9 +f 1384/2249/743 1386/2251/743 1391/2256/743 +f 1398/2258/10 1393/2919/10 1394/2259/10 +f 1394/2259/10 1395/2920/10 1396/2260/10 +f 1396/2260/10 1397/2921/10 1398/2258/10 +f 1397/2921/10 1392/2922/10 1398/2258/10 +f 1392/2922/10 1391/2923/10 1398/2258/10 +f 1380/2244/744 1382/2247/744 1397/2261/744 +f 1386/2251/745 1390/2254/745 1398/2263/745 +f 1378/2242/746 1395/2924/746 1394/2265/746 +f 1384/2249/747 1392/2925/747 1397/2266/747 +f 1390/2254/748 1373/2240/748 1393/2267/748 +f 1376/2239/749 1394/2926/749 1393/2269/749 +f 1380/2244/750 1396/2927/750 1395/2270/750 +f 1399/2271/751 1400/2278/751 1401/2272/751 +f 1389/2255/9 1400/2278/9 1399/2271/9 +f 1374/2238/1 1399/2271/1 1403/2274/1 +f 1377/2243/3 1404/2928/3 1405/2275/3 +f 1383/2250/6 1388/2252/6 1406/2276/6 +f 1379/2246/4 1405/2275/4 1387/2277/4 +f 1385/2253/8 1406/2276/8 1400/2278/8 +f 1375/2241/2 1403/2274/2 1404/2279/2 +f 1388/2252/752 1407/2929/752 1408/2281/752 +f 1387/2277/753 1405/2275/753 1409/2282/753 +f 1404/2279/754 1403/2274/754 1411/2284/754 +f 1400/2278/767 1406/2276/767 1408/2286/767 +f 1387/2277/756 1410/2930/756 1407/2288/756 +f 1405/2275/757 1404/2928/757 1412/2289/757 +f 1399/2271/758 1402/2296/758 1411/2291/758 +f 1412/2289/1066 1413/2931/1066 1414/2292/1066 +f 1413/2294/7 1415/2932/7 1418/2295/7 +f 1415/2932/7 1416/2933/7 1418/2295/7 +f 1416/2933/7 1417/2934/7 1418/2295/7 +f 1418/2295/7 1419/2935/7 1420/2936/7 +f 1420/2936/7 1414/2293/7 1418/2295/7 +f 1402/2296/1067 1416/2937/1067 1415/2297/1067 +f 1401/2272/769 1417/2938/769 1416/2298/769 +f 1408/2281/1068 1407/2929/1068 1419/2299/1068 +f 1410/2283/763 1409/2282/763 1414/2301/763 +f 1412/2285/768 1411/2284/768 1415/2303/768 +f 1408/2286/1069 1418/2939/1069 1417/2305/1069 +f 1407/2288/766 1410/2930/766 1420/2306/766 +f 1422/2308/4 1423/2312/4 1424/2309/4 +f 1422/2308/3 1425/2333/3 1426/2311/3 +f 1427/2313/2 1428/2317/2 1426/2314/2 +f 1429/2316/1 1430/2319/1 1428/2317/1 +f 1431/2318/9 1432/2321/9 1430/2319/9 +f 1433/2320/8 1434/2324/8 1432/2321/8 +f 1435/2322/9 1436/2344/9 1430/2319/9 +f 1437/2323/6 1438/2325/6 1434/2324/6 +f 1421/2310/5 1424/2309/5 1438/2325/5 +f 1431/2318/745 1439/2940/745 1440/2326/745 +f 1446/2327/10 1441/2941/10 1442/2328/10 +f 1442/2328/10 1440/2942/10 1439/2329/10 +f 1439/2329/10 1443/2943/10 1446/2327/10 +f 1443/2943/10 1444/2944/10 1446/2327/10 +f 1444/2944/10 1445/2945/10 1446/2327/10 +f 1427/2313/749 1444/2946/749 1443/2330/749 +f 1433/2320/743 1440/2947/743 1442/2331/743 +f 1446/2332/750 1445/2948/750 1425/2333/750 +f 1443/2334/748 1439/2949/748 1431/2318/748 +f 1437/2323/747 1442/2950/747 1441/2335/747 +f 1441/2336/744 1446/2951/744 1422/2308/744 +f 1445/2337/746 1444/2952/746 1427/2313/746 +f 1448/2338/756 1449/2362/756 1450/2339/756 +f 1447/2340/5 1450/2339/5 1438/2325/5 +f 1451/2341/4 1447/2340/4 1424/2309/4 +f 1452/2342/2 1453/2352/2 1426/2314/2 +f 1454/2343/8 1435/2322/8 1432/2321/8 +f 1436/2344/1 1452/2342/1 1428/2317/1 +f 1450/2339/6 1454/2343/6 1434/2324/6 +f 1453/2345/3 1451/2341/3 1423/2312/3 +f 1455/2346/767 1456/2364/767 1435/2322/767 +f 1436/2344/758 1457/2365/758 1458/2347/758 +f 1453/2345/757 1459/2367/757 1460/2348/757 +f 1449/2349/752 1455/2370/752 1454/2343/752 +f 1456/2350/751 1457/2372/751 1436/2344/751 +f 1452/2342/754 1458/2355/754 1459/2351/754 +f 1460/2353/753 1448/2360/753 1447/2340/753 +f 1461/2354/764 1462/2953/764 1459/2351/764 +f 1468/2357/7 1463/2954/7 1464/2358/7 +f 1463/2954/7 1462/2955/7 1464/2358/7 +f 1462/2955/7 1461/2956/7 1464/2358/7 +f 1464/2358/7 1465/2957/7 1466/2958/7 +f 1466/2958/7 1467/2356/7 1464/2358/7 +f 1463/2359/1070 1468/2959/1070 1448/2360/1070 +f 1448/2338/766 1468/2960/766 1467/2361/766 +f 1455/2346/1069 1466/2961/1069 1465/2363/1069 +f 1457/2365/760 1464/2962/760 1461/2366/760 +f 1459/2367/1066 1462/2963/1066 1463/2368/1066 +f 1467/2369/762 1466/2964/762 1455/2370/762 +f 1456/2350/769 1465/2965/769 1464/2371/769 +f 1471/2373/770 1472/2380/770 1470/2374/770 +f 1473/2376/771 1474/2378/771 1471/2373/771 +f 1475/2377/772 1476/2966/772 1474/2378/772 +f 1478/2379/773 1477/2381/773 1470/2374/773 +f 1478/2379/45 1472/2380/45 1471/2373/45 +f 1471/2373/45 1474/2967/45 1476/2968/45 +f 1476/2968/1071 1477/2381/1071 1471/2373/1071 +f 1469/2375/48 1470/2374/48 1477/2969/48 +f 1477/2969/48 1475/2382/48 1469/2375/48 +f 1481/2384/775 1482/2390/775 1480/2385/775 +f 1483/2387/776 1484/2389/776 1481/2384/776 +f 1485/2388/777 1486/2970/777 1484/2389/777 +f 1482/2390/778 1488/2392/778 1487/2391/778 +f 1488/2392/48 1482/2390/48 1481/2384/48 +f 1481/2384/48 1484/2971/48 1486/2972/48 +f 1486/2972/1072 1487/2391/1072 1481/2384/1072 +f 1479/2386/45 1480/2385/45 1487/2973/45 +f 1487/2973/45 1485/2393/45 1479/2386/45 +f 1491/2395/780 1492/2402/780 1490/2396/780 +f 1493/2398/781 1494/2400/781 1491/2395/781 +f 1495/2399/782 1496/2974/782 1494/2400/782 +f 1498/2401/783 1497/2403/783 1490/2396/783 +f 1498/2401/44 1492/2402/44 1491/2395/44 +f 1491/2395/44 1494/2975/44 1496/2976/44 +f 1496/2976/1073 1497/2403/1073 1491/2395/1073 +f 1489/2397/46 1490/2396/46 1497/2977/46 +f 1497/2977/46 1495/2404/46 1489/2397/46 +f 1499/2406/785 1501/2410/785 1502/2407/785 +f 1503/2409/786 1504/2412/786 1501/2410/786 +f 1505/2411/787 1506/2978/787 1504/2412/787 +f 1508/2413/788 1507/2414/788 1500/2408/788 +f 1508/2413/46 1502/2407/46 1501/2410/46 +f 1501/2410/46 1504/2979/46 1506/2980/46 +f 1506/2980/1074 1507/2414/1074 1501/2410/1074 +f 1499/2406/44 1500/2408/44 1507/2981/44 +f 1507/2981/44 1505/2415/44 1499/2406/44 +f 1509/2417/790 1511/2421/790 1512/2418/790 +f 1513/2420/791 1514/2423/791 1511/2421/791 +f 1515/2422/792 1516/2982/792 1514/2423/792 +f 1512/2418/793 1518/2425/793 1517/2424/793 +f 1518/2425/801 1512/2418/801 1511/2421/801 +f 1511/2421/801 1514/2983/801 1516/2984/801 +f 1516/2984/1075 1517/2424/1075 1511/2421/1075 +f 1509/2417/795 1510/2419/795 1517/2985/795 +f 1517/2985/795 1515/2426/795 1509/2417/795 +f 1519/2428/796 1521/2432/796 1522/2429/796 +f 1523/2431/797 1524/2434/797 1521/2432/797 +f 1523/2431/798 1525/2986/798 1526/2433/798 +f 1528/2435/799 1527/2436/799 1520/2430/799 +f 1528/2435/795 1522/2429/795 1521/2432/795 +f 1521/2432/795 1524/2987/795 1526/2988/795 +f 1526/2988/1076 1527/2436/1076 1521/2432/1076 +f 1519/2428/801 1520/2430/801 1527/2989/801 +f 1527/2989/801 1525/2437/801 1519/2428/801 +f 1531/2439/802 1532/2445/802 1530/2440/802 +f 1529/2441/803 1533/2443/803 1534/2442/803 +f 1533/2443/804 1535/2990/804 1536/2444/804 +f 1532/2445/805 1538/2447/805 1537/2446/805 +f 1538/2447/813 1532/2445/813 1531/2439/813 +f 1531/2439/813 1534/2991/813 1536/2992/813 +f 1536/2992/1077 1537/2446/1077 1531/2439/1077 +f 1529/2441/807 1530/2440/807 1537/2993/807 +f 1537/2993/807 1535/2448/807 1529/2441/807 +f 1541/2450/808 1542/2457/808 1540/2451/808 +f 1539/2452/809 1543/2454/809 1544/2453/809 +f 1543/2454/810 1545/2994/810 1546/2455/810 +f 1548/2456/811 1547/2458/811 1540/2451/811 +f 1548/2456/807 1542/2457/807 1541/2450/807 +f 1541/2450/807 1544/2995/807 1546/2996/807 +f 1546/2996/1078 1547/2458/1078 1541/2450/1078 +f 1539/2452/813 1540/2451/813 1547/2997/813 +f 1547/2997/813 1545/2459/813 1539/2452/813 diff --git a/src/main/resources/assets/hbm/models/weapons/cryo_cannon.obj b/src/main/resources/assets/hbm/models/weapons/cryo_cannon.obj new file mode 100644 index 000000000..8f4413807 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/cryo_cannon.obj @@ -0,0 +1,8221 @@ +# Blender v2.79 (sub 0) OBJ File: 'cryo_cannon.blend' +# www.blender.org +o Gun +v -1.312500 0.501000 -2.750000 +v -1.312500 0.626000 -3.500000 +v -1.312500 0.501000 -3.500000 +v -1.312500 0.751000 -2.750000 +v -1.312500 0.876000 -3.500000 +v -1.312500 0.751000 -3.500000 +v -1.312500 1.001000 -2.750000 +v -1.312500 1.126000 -3.500000 +v -1.312500 1.001000 -3.500000 +v -1.312500 1.251000 -3.500000 +v -1.312500 1.376000 -2.625000 +v -1.312500 1.376000 -3.625000 +v -1.312500 0.251000 -2.625000 +v -1.312500 0.376000 -3.500000 +v -1.312500 0.251000 -3.625000 +v -1.312500 0.626000 -2.750000 +v -1.187500 1.001000 -2.750000 +v -1.187500 1.001000 -3.500000 +v -1.187500 0.626000 -3.500000 +v -1.187500 0.751000 -3.500000 +v -1.187500 1.126000 -3.500000 +v -1.187500 1.251000 -2.750000 +v -1.187500 1.251000 -3.500000 +v -1.187500 0.876000 -2.750000 +v -1.187500 0.876000 -3.500000 +v -1.187500 0.751000 -2.750000 +v -1.187500 0.376000 -2.750000 +v -1.187500 0.501000 -3.500000 +v -1.187500 0.376000 -3.500000 +v -1.312500 1.126000 -2.750000 +v -1.312500 1.251000 -2.750000 +v -1.187500 1.126000 -2.750000 +v -1.312500 0.876000 -2.750000 +v -1.187500 0.626000 -2.750000 +v -1.312500 0.376000 -2.750000 +v -1.187500 0.501000 -2.750000 +v -0.344030 0.708152 -0.175597 +v -0.388541 0.618205 -0.128904 +v -0.328091 0.674453 -0.163924 +v -0.334466 0.442528 -0.062870 +v -0.385571 0.535686 -0.093884 +v -0.420670 0.523129 -0.082211 +v -0.216518 0.438567 -0.082211 +v -0.172007 0.528513 -0.128904 +v -0.232457 0.472265 -0.093884 +v -0.135918 0.513565 -0.128904 +v -0.174978 0.611032 -0.163924 +v -0.226082 0.704190 -0.194938 +v -0.239630 0.671482 -0.178429 +v -0.424630 0.633153 -0.128904 +v -0.320918 0.475236 -0.079378 +v -0.139879 0.623590 -0.175597 +v -0.248396 0.505963 -0.105557 +v -0.210077 0.598474 -0.152250 +v -0.312152 0.640755 -0.152250 +v -0.161900 0.552916 -0.072260 +v -0.238288 0.530366 -0.048913 +v -0.222349 0.496668 -0.037240 +v -0.199968 0.622877 -0.095606 +v -0.197989 0.567865 -0.072260 +v -0.229523 0.695885 -0.121785 +v -0.164869 0.635435 -0.107280 +v -0.317984 0.698857 -0.107280 +v -0.243071 0.663178 -0.105277 +v -0.378433 0.642608 -0.072260 +v -0.302044 0.665158 -0.095606 +v -0.340364 0.572647 -0.048913 +v -0.342344 0.627659 -0.072260 +v -0.375462 0.560089 -0.037240 +v -0.297262 0.532347 -0.039243 +v -0.310810 0.499639 -0.022734 +v -0.014465 0.192905 0.136894 +v -0.349313 0.368885 -0.081856 +v -0.391169 0.267836 0.136894 +v -0.025414 0.247242 -0.109375 +v -0.014465 0.302280 -0.081856 +v -0.025414 0.137868 0.109375 +v -0.402117 0.212799 0.109375 +v -0.360261 0.313848 -0.109375 +v 0.095671 1.480970 -0.500000 +v 0.173227 1.321753 -0.500000 +v 0.230970 1.345671 -0.500000 +v 0.115485 1.202165 -0.500000 +v 0.115485 1.297835 -0.500000 +v 0.047834 1.365485 -0.500000 +v 0.173227 1.178247 -0.500000 +v 0.230970 1.154329 -0.500000 +v 0.095671 1.019030 -0.500000 +v 0.071753 1.076773 -0.500000 +v -0.071753 1.076773 -0.500000 +v -0.095671 1.019030 -0.500000 +v -0.173227 1.178247 -0.500000 +v -0.230970 1.154329 -0.500000 +v -0.173227 1.321753 -0.500000 +v -0.230970 1.345671 -0.500000 +v -0.095671 1.480970 -0.500000 +v -0.071753 1.423227 -0.500000 +v 0.071753 1.423227 -0.500000 +v 0.115485 1.297835 -0.375000 +v 0.071753 1.423227 -0.375000 +v 0.047834 1.365485 -0.375000 +v 0.115485 1.202165 -0.375000 +v 0.173227 1.321753 -0.375000 +v 0.071753 1.076773 -0.375000 +v 0.047834 1.134515 -0.375000 +v -0.071753 1.076773 -0.375000 +v -0.047836 1.134515 -0.375000 +v -0.173227 1.178247 -0.375000 +v -0.115485 1.202165 -0.375000 +v -0.115485 1.297835 -0.375000 +v -0.047836 1.365485 -0.375000 +v -0.173227 1.321753 -0.375000 +v -0.071753 1.423227 -0.375000 +v -1.000000 0.938500 -4.125000 +v -1.000000 -0.061500 -3.125000 +v -1.000000 0.938500 -2.125000 +v -1.000000 1.376000 -2.625000 +v -1.000000 0.251000 -2.625000 +v -1.000000 0.251000 -3.625000 +v -1.000000 1.376000 -3.625000 +v 1.000000 0.938500 -2.125000 +v 1.000000 -0.061500 -3.125000 +v 1.000000 0.938500 -4.125000 +v -1.000000 0.231393 -3.832107 +v -1.000000 0.231393 -2.417893 +v 1.000000 1.938500 -3.125000 +v -1.000000 1.645607 -3.832107 +v -1.000000 1.938500 -3.125000 +v 1.000000 0.231393 -3.832107 +v 1.000000 0.231393 -2.417893 +v 1.000000 1.645607 -2.417893 +v -1.000000 1.645607 -2.417893 +v 1.000000 1.645607 -3.832107 +v 0.731694 2.179917 0.187500 +v 0.643306 2.445082 0.187500 +v 0.554916 2.356694 0.187500 +v 0.643306 2.445082 -0.312500 +v 0.731694 2.179917 -0.312500 +v 0.554916 2.356694 -0.312500 +v 0.820084 2.268306 -0.312500 +v 0.820084 2.268306 0.187500 +v -1.106694 0.695083 0.187500 +v -1.018306 0.429918 0.187500 +v -0.929916 0.518306 0.187500 +v -1.018306 0.429918 -0.312500 +v -1.106694 0.695083 -0.312500 +v -0.929916 0.518306 -0.312500 +v -1.195084 0.606694 -0.312500 +v -1.195084 0.606694 0.187500 +v 1.106694 0.695082 0.187500 +v 1.018306 0.429917 0.187500 +v 1.195082 0.606694 0.187500 +v 1.106694 0.695082 -0.312500 +v 1.018306 0.429917 -0.312500 +v 0.929916 0.518306 -0.312500 +v 0.929916 0.518306 0.187500 +v 1.195082 0.606694 -0.312500 +v -0.731694 2.179918 0.187500 +v -0.643306 2.445083 0.187500 +v -0.820082 2.268306 0.187500 +v -0.731694 2.179918 -0.312500 +v -0.643306 2.445083 -0.312500 +v -0.554916 2.356694 -0.312500 +v -0.554916 2.356694 0.187500 +v -0.820082 2.268306 -0.312500 +v 0.731694 2.179917 -2.375000 +v 0.643306 2.445082 -2.375000 +v 0.554916 2.356694 -2.375000 +v 0.643306 2.445082 -2.750000 +v 0.731694 2.179917 -2.875000 +v 0.554916 2.356694 -2.750000 +v 0.820084 2.268306 -2.875000 +v 0.820084 2.268306 -2.375000 +v 0.750000 1.887724 -3.247583 +v -0.750000 2.039915 -3.445922 +v -0.750000 1.887724 -3.247583 +v 0.750000 1.696383 -3.709523 +v 0.750000 2.039915 -3.445922 +v 0.750000 1.639863 -3.280215 +v -0.750000 1.944244 -3.676892 +v 0.750000 1.944244 -3.676892 +v -0.750000 1.696383 -3.709523 +v 0.500000 0.125000 -2.750000 +v -0.500000 0.125000 -1.750000 +v -0.500000 0.125000 -2.750000 +v 0.500000 0.500000 -1.750000 +v 0.500000 0.125000 -1.750000 +v -0.500000 0.500000 -2.750000 +v -0.625000 1.687500 -4.125000 +v 0.625000 0.187500 -4.125000 +v -0.625000 0.187500 -4.125000 +v 0.625000 0.187500 -3.625000 +v 0.625000 1.687500 -4.125000 +v 0.625000 1.687500 -3.625000 +v -0.625000 1.687500 -3.625000 +v -0.625000 0.187500 -3.625000 +v 0.875000 1.658494 -2.187500 +v 1.375000 1.658494 -2.437500 +v 1.375000 1.658494 -2.187500 +v 0.875000 2.091506 -2.187500 +v 1.375000 1.875000 -2.062500 +v 1.375000 2.091506 -2.187500 +v 0.875000 1.875000 -2.562500 +v 1.375000 2.091506 -2.437500 +v 1.375000 1.875000 -2.562500 +v 0.875000 1.658494 -2.437500 +v 0.875000 1.875000 -2.062500 +v 0.875000 2.091506 -2.437500 +v 1.375000 1.983253 -2.250000 +v 1.562500 1.983253 -2.375000 +v 1.375000 1.983253 -2.375000 +v 1.375000 1.766747 -2.375000 +v 1.562500 1.766747 -2.250000 +v 1.375000 1.766747 -2.250000 +v 1.375000 1.875000 -2.187500 +v 1.562500 1.983253 -2.250000 +v 1.562500 1.875000 -2.437500 +v 1.375000 1.875000 -2.437500 +v 1.562500 1.766747 -2.375000 +v 1.562500 1.875000 -2.187500 +v 1.562500 1.712620 -2.218750 +v 1.562500 1.875000 -2.125000 +v 1.562500 2.037380 -2.218750 +v 1.562500 1.875000 -2.500000 +v 1.562500 1.712620 -2.406250 +v 1.562500 2.037380 -2.406250 +v 2.312500 1.712620 -2.406250 +v 2.312500 1.875000 -2.125000 +v 2.312500 2.037380 -2.406250 +v 2.312500 1.712620 -2.218750 +v 2.312500 2.037380 -2.218750 +v 2.312500 1.875000 -2.500000 +v 2.312500 1.983253 -2.250000 +v 2.312500 1.983253 -2.375000 +v 2.312500 1.875000 -2.437500 +v 2.312500 1.766747 -2.375000 +v 2.312500 1.766747 -2.250000 +v 2.312500 1.875000 -2.187500 +v 2.500000 1.875000 -2.187500 +v 2.500000 1.983253 -2.375000 +v 2.500000 1.766747 -2.250000 +v 2.500000 1.983253 -2.250000 +v 2.500000 1.875000 -2.437500 +v 2.500000 1.766747 -2.375000 +v 2.500000 2.091506 -2.187500 +v 2.500000 2.091506 -2.437500 +v 2.500000 1.875000 -2.562500 +v 2.500000 1.658494 -2.437500 +v 2.500000 1.658494 -2.187500 +v 2.500000 1.875000 -2.062500 +v 2.625000 2.091506 -2.437500 +v 2.625000 1.658494 -2.187500 +v 2.625000 2.091506 -2.187500 +v 2.625000 1.875000 -2.562500 +v 2.625000 1.658494 -2.437500 +v 2.625000 1.875000 -2.062500 +v 2.750000 1.875000 -2.437500 +v 2.750000 1.766747 -2.375000 +v 2.750000 1.766747 -2.250000 +v 2.750000 1.875000 -2.187500 +v 2.750000 1.983253 -2.375000 +v 2.750000 1.983253 -2.250000 +v 0.125000 1.625000 -4.734835 +v -0.125000 1.978553 -5.088388 +v -0.125000 1.625000 -4.734835 +v -0.125000 1.713388 -5.353553 +v -0.125000 1.359835 -5.000000 +v 0.125000 1.713388 -5.353553 +v 0.125000 1.359835 -5.000000 +v 0.125000 1.978553 -5.088388 +v 0.062500 2.597272 -4.558058 +v -0.062500 2.774049 -4.734835 +v -0.062500 2.597272 -4.558058 +v 0.062500 2.066942 -5.088388 +v 0.062500 2.774049 -4.734835 +v -0.062500 2.066942 -5.088388 +v -0.062500 2.243718 -5.265165 +v 0.062500 2.243718 -5.265165 +v -0.137500 2.062500 -3.749900 +v -0.137500 2.062500 -3.437400 +v -0.137500 2.187500 -3.437400 +v -0.012500 1.937500 -3.749900 +v -0.137500 1.937500 -3.749900 +v 0.137500 2.062500 -3.749900 +v 0.137500 2.062500 -3.437400 +v 0.137500 1.937500 -3.749900 +v -0.012500 2.187500 -3.437400 +v -0.012500 2.062500 -3.749900 +v 0.137500 2.134191 -3.062400 +v 0.137500 2.009191 -3.062400 +v -0.012500 2.062500 -3.437400 +v -0.137500 2.009191 -3.062400 +v -0.012500 1.937500 -3.874900 +v -0.137500 1.937500 -3.874900 +v 0.137500 1.937500 -3.874900 +v 0.012500 1.937500 -3.874900 +v 0.012500 1.937500 -3.749900 +v 0.012500 2.062500 -3.749900 +v -0.137500 1.687500 -3.874900 +v -0.012500 1.687500 -3.874900 +v -0.012500 1.687500 -3.749900 +v -0.137500 1.687500 -3.749900 +v 0.137500 1.687500 -3.874900 +v 0.137500 1.687500 -3.749900 +v 0.012500 1.687500 -3.749900 +v 0.012500 1.687500 -3.874900 +v 0.012500 2.062500 -3.437400 +v 0.625000 2.001000 -3.062500 +v 0.875000 2.001000 -3.187500 +v 0.625000 2.001000 -3.187500 +v 0.012500 2.187500 -3.437400 +v 0.137500 2.187500 -3.437400 +v 0.012500 2.134191 -3.062400 +v -0.137500 2.134191 -3.062400 +v 0.012500 2.009191 -3.062400 +v -0.012500 2.134191 -3.062400 +v -0.012500 2.009191 -3.062400 +v 0.625000 1.938500 -3.250000 +v -0.625000 1.830247 -3.187500 +v -0.625000 1.938500 -3.250000 +v 0.625000 1.876000 -3.062500 +v 0.875000 2.001000 -3.062500 +v 0.625000 1.830247 -3.187500 +v -0.625000 1.830247 -3.062500 +v 0.625000 1.876000 -3.187500 +v 0.875000 1.876000 -3.062500 +v 0.625000 1.830247 -3.062500 +v -0.625000 1.938500 -3.000000 +v 0.875000 1.876000 -3.187500 +v 0.625000 1.938500 -3.000000 +v -0.625000 2.046753 -3.062500 +v 0.625000 2.046753 -3.062500 +v -0.625000 2.046753 -3.187500 +v 0.625000 2.046753 -3.187500 +v 1.000000 2.001000 -3.062500 +v 1.000000 2.001000 -3.187500 +v 1.000000 2.126000 -3.187500 +v 0.875000 2.126000 -3.187500 +v 1.000000 2.126000 -3.312500 +v 1.000000 2.126000 -3.062500 +v 0.875000 2.126000 -3.062500 +v 1.000000 2.251000 -3.187500 +v 0.875000 2.251000 -3.187500 +v 1.000000 2.251000 -3.312500 +v 0.875000 2.001000 -3.937500 +v 0.875000 2.251000 -3.312500 +v 0.875000 2.126000 -3.312500 +v 1.000000 1.876000 -3.937500 +v 1.000000 1.876000 -4.062500 +v 1.000000 2.001000 -3.937500 +v 0.875000 1.876000 -3.937500 +v 0.875000 1.876000 -4.062500 +v 0.875000 1.626000 -3.937500 +v 0.625000 1.501000 -3.937500 +v 0.875000 1.501000 -3.937500 +v 1.000000 1.626000 -3.937500 +v 1.000000 1.626000 -4.062500 +v 0.875000 1.626000 -4.062500 +v 0.875000 1.501000 -4.062500 +v 0.625000 1.626000 -3.937500 +v 0.625000 1.626000 -4.062500 +v 0.625000 1.501000 -4.062500 +v 0.344030 1.791848 -0.175597 +v 0.388541 1.881795 -0.128904 +v 0.328091 1.825547 -0.163924 +v 0.334466 2.057472 -0.062870 +v 0.385571 1.964314 -0.093884 +v 0.420670 1.976871 -0.082211 +v 0.216518 2.061433 -0.082211 +v 0.172007 1.971487 -0.128904 +v 0.232457 2.027735 -0.093884 +v 0.135918 1.986435 -0.128904 +v 0.174978 1.888968 -0.163924 +v 0.226082 1.795810 -0.194938 +v 0.239630 1.828518 -0.178429 +v 0.424630 1.866847 -0.128904 +v 0.320918 2.024764 -0.079378 +v 0.139879 1.876410 -0.175597 +v 0.248396 1.994037 -0.105557 +v 0.210077 1.901526 -0.152250 +v 0.312152 1.859245 -0.152250 +v 0.161900 1.947084 -0.072260 +v 0.238288 1.969634 -0.048913 +v 0.222349 2.003332 -0.037240 +v 0.199968 1.877123 -0.095606 +v 0.197989 1.932135 -0.072260 +v 0.229523 1.804115 -0.121785 +v 0.164869 1.864565 -0.107280 +v 0.317984 1.801143 -0.107280 +v 0.243071 1.836822 -0.105277 +v 0.342344 1.872341 -0.072260 +v 0.302044 1.834842 -0.095606 +v 0.378433 1.857392 -0.072260 +v 0.340365 1.927353 -0.048913 +v 0.375462 1.939911 -0.037240 +v 0.297262 1.967653 -0.039243 +v 0.310810 2.000361 -0.022734 +v -0.541848 1.594031 -0.175597 +v -0.631795 1.638541 -0.128904 +v -0.575547 1.578091 -0.163924 +v -0.807472 1.584466 -0.062870 +v -0.714314 1.635571 -0.093884 +v -0.726871 1.670670 -0.082211 +v -0.811433 1.466519 -0.082211 +v -0.721487 1.422007 -0.128904 +v -0.777735 1.482457 -0.093884 +v -0.736435 1.385918 -0.128904 +v -0.638968 1.424978 -0.163924 +v -0.545810 1.476082 -0.194938 +v -0.578518 1.489630 -0.178429 +v -0.616847 1.674630 -0.128904 +v -0.774764 1.570918 -0.079378 +v -0.626410 1.389879 -0.175597 +v -0.744037 1.498396 -0.105557 +v -0.651526 1.460078 -0.152250 +v -0.609245 1.562152 -0.152250 +v -0.697084 1.411900 -0.072260 +v -0.719634 1.488288 -0.048913 +v -0.753332 1.472349 -0.037240 +v -0.627123 1.449969 -0.095606 +v -0.682135 1.447989 -0.072260 +v -0.554115 1.479523 -0.121785 +v -0.614565 1.414870 -0.107280 +v -0.551143 1.567984 -0.107280 +v -0.586822 1.493071 -0.105277 +v -0.607392 1.628433 -0.072260 +v -0.584842 1.552044 -0.095606 +v -0.677353 1.590365 -0.048913 +v -0.622341 1.592345 -0.072260 +v -0.689911 1.625462 -0.037240 +v -0.717653 1.547262 -0.039243 +v -0.750361 1.560810 -0.022734 +v 0.541848 0.905970 -0.175597 +v 0.631795 0.861459 -0.128904 +v 0.575547 0.921909 -0.163924 +v 0.807472 0.915534 -0.062870 +v 0.714314 0.864429 -0.093884 +v 0.726871 0.829330 -0.082211 +v 0.811433 1.033482 -0.082211 +v 0.721487 1.077993 -0.128904 +v 0.777735 1.017543 -0.093884 +v 0.736435 1.114082 -0.128904 +v 0.638968 1.075022 -0.163924 +v 0.545810 1.023918 -0.194938 +v 0.578518 1.010370 -0.178429 +v 0.616847 0.825370 -0.128904 +v 0.774764 0.929082 -0.079378 +v 0.626410 1.110121 -0.175597 +v 0.744037 1.001604 -0.105557 +v 0.651526 1.039923 -0.152250 +v 0.609245 0.937848 -0.152250 +v 0.697084 1.088100 -0.072260 +v 0.719634 1.011712 -0.048913 +v 0.753332 1.027651 -0.037240 +v 0.627123 1.050032 -0.095606 +v 0.682135 1.052011 -0.072260 +v 0.554115 1.020477 -0.121785 +v 0.614565 1.085131 -0.107280 +v 0.551143 0.932016 -0.107280 +v 0.586822 1.006929 -0.105277 +v 0.607392 0.871567 -0.072260 +v 0.584842 0.947956 -0.095606 +v 0.677353 0.909636 -0.048913 +v 0.622341 0.907656 -0.072260 +v 0.689911 0.874539 -0.037240 +v 0.717653 0.952738 -0.039243 +v 0.750361 0.939190 -0.022734 +v -0.626411 1.110122 -0.175597 +v -0.721487 1.077994 -0.128904 +v -0.638968 1.075022 -0.163924 +v -0.807472 0.915534 -0.062870 +v -0.777736 1.017543 -0.093884 +v -0.811434 1.033483 -0.082211 +v -0.726871 0.829332 -0.082211 +v -0.631795 0.861459 -0.128904 +v -0.714314 0.864430 -0.093884 +v -0.616847 0.825370 -0.128904 +v -0.575547 0.921910 -0.163924 +v -0.545810 1.023918 -0.194938 +v -0.578518 1.010370 -0.178429 +v -0.736436 1.114082 -0.128904 +v -0.774764 0.929083 -0.079378 +v -0.541848 0.905971 -0.175597 +v -0.701756 0.899529 -0.105557 +v -0.609246 0.937849 -0.152250 +v -0.651526 1.039924 -0.152250 +v -0.607393 0.871567 -0.072260 +v -0.677353 0.909637 -0.048913 +v -0.689911 0.874538 -0.037240 +v -0.584842 0.947956 -0.095606 +v -0.622341 0.907657 -0.072260 +v -0.554116 1.020479 -0.121785 +v -0.551143 0.932017 -0.107280 +v -0.614565 1.085132 -0.107280 +v -0.586823 1.006931 -0.105277 +v -0.697084 1.088102 -0.072260 +v -0.627123 1.050032 -0.095606 +v -0.719635 1.011713 -0.048913 +v -0.682136 1.052012 -0.072260 +v -0.753332 1.027651 -0.037240 +v -0.717654 0.952739 -0.039243 +v -0.750361 0.939191 -0.022734 +v 0.626411 1.389878 -0.175597 +v 0.721487 1.422006 -0.128904 +v 0.638968 1.424978 -0.163924 +v 0.807472 1.584466 -0.062870 +v 0.777736 1.482457 -0.093884 +v 0.811434 1.466517 -0.082211 +v 0.726872 1.670668 -0.082211 +v 0.631796 1.638541 -0.128904 +v 0.714314 1.635570 -0.093884 +v 0.616847 1.674630 -0.128904 +v 0.575547 1.578090 -0.163924 +v 0.545810 1.476082 -0.194938 +v 0.578518 1.489630 -0.178429 +v 0.736436 1.385918 -0.128904 +v 0.774764 1.570918 -0.079378 +v 0.541848 1.594029 -0.175597 +v 0.701756 1.600471 -0.105557 +v 0.609246 1.562152 -0.152250 +v 0.651526 1.460077 -0.152250 +v 0.607393 1.628433 -0.072260 +v 0.677353 1.590363 -0.048913 +v 0.689911 1.625462 -0.037240 +v 0.584842 1.552044 -0.095606 +v 0.622342 1.592343 -0.072260 +v 0.554116 1.479522 -0.121785 +v 0.551144 1.567983 -0.107280 +v 0.614566 1.414869 -0.107280 +v 0.586823 1.493069 -0.105277 +v 0.697084 1.411898 -0.072260 +v 0.627123 1.449969 -0.095606 +v 0.719635 1.488287 -0.048913 +v 0.682136 1.447988 -0.072260 +v 0.753332 1.472350 -0.037240 +v 0.717654 1.547261 -0.039243 +v 0.750361 1.560810 -0.022734 +v -0.139878 1.876411 -0.175597 +v -0.172006 1.971487 -0.128904 +v -0.174978 1.888969 -0.163924 +v -0.334466 2.057472 -0.062870 +v -0.232457 2.027736 -0.093884 +v -0.216517 2.061434 -0.082211 +v -0.420668 1.976872 -0.082211 +v -0.388541 1.881796 -0.128904 +v -0.385570 1.964314 -0.093884 +v -0.424630 1.866847 -0.128904 +v -0.328090 1.825547 -0.163924 +v -0.226082 1.795810 -0.194938 +v -0.239630 1.828518 -0.178429 +v -0.135918 1.986436 -0.128904 +v -0.320918 2.024765 -0.079378 +v -0.344029 1.791849 -0.175597 +v -0.350471 1.951756 -0.105557 +v -0.312151 1.859246 -0.152250 +v -0.210077 1.901526 -0.152250 +v -0.378433 1.857393 -0.072260 +v -0.340363 1.927353 -0.048913 +v -0.375462 1.939911 -0.037240 +v -0.302044 1.834842 -0.095606 +v -0.342343 1.872342 -0.072260 +v -0.229521 1.804116 -0.121785 +v -0.317983 1.801144 -0.107280 +v -0.164869 1.864566 -0.107280 +v -0.243069 1.836823 -0.105277 +v -0.161898 1.947084 -0.072260 +v -0.199968 1.877123 -0.095606 +v -0.238287 1.969635 -0.048913 +v -0.197988 1.932136 -0.072260 +v -0.222349 2.003333 -0.037240 +v -0.297261 1.967654 -0.039243 +v -0.310809 2.000361 -0.022734 +v 0.139878 0.623589 -0.175597 +v 0.172006 0.528513 -0.128904 +v 0.174978 0.611032 -0.163924 +v 0.334466 0.442528 -0.062870 +v 0.232457 0.472264 -0.093884 +v 0.216517 0.438566 -0.082211 +v 0.420668 0.523129 -0.082211 +v 0.388541 0.618205 -0.128904 +v 0.385570 0.535686 -0.093884 +v 0.344029 0.708152 -0.175597 +v 0.424630 0.633153 -0.128904 +v 0.226082 0.704190 -0.194938 +v 0.239630 0.671482 -0.178429 +v 0.135918 0.513564 -0.128904 +v 0.320918 0.475236 -0.079378 +v 0.328090 0.674453 -0.163924 +v 0.350471 0.548244 -0.105557 +v 0.312151 0.640754 -0.152250 +v 0.210077 0.598474 -0.152250 +v 0.378433 0.642607 -0.072260 +v 0.340363 0.572647 -0.048913 +v 0.375462 0.560089 -0.037240 +v 0.302044 0.665158 -0.095606 +v 0.342343 0.627659 -0.072260 +v 0.229521 0.695884 -0.121785 +v 0.317983 0.698857 -0.107280 +v 0.164869 0.635435 -0.107280 +v 0.243069 0.663177 -0.105277 +v 0.161898 0.552916 -0.072260 +v 0.199969 0.622877 -0.095606 +v 0.238287 0.530365 -0.048913 +v 0.197988 0.567865 -0.072260 +v 0.222349 0.496668 -0.037240 +v 0.297261 0.532347 -0.039243 +v 0.310809 0.499639 -0.022734 +v 0.391169 2.232164 0.136894 +v 0.014465 2.197720 -0.081856 +v 0.349313 2.131115 -0.081856 +v 0.025414 2.252758 -0.109375 +v 0.025414 2.362132 0.109375 +v 0.014465 2.307096 0.136894 +v 0.402117 2.287201 0.109375 +v 0.360261 2.186152 -0.109375 +v -1.057095 1.264466 0.136894 +v -0.881115 1.599313 -0.081856 +v -0.982164 1.641169 0.136894 +v -1.002758 1.275414 -0.109375 +v -0.947720 1.264466 -0.081856 +v -1.112132 1.275414 0.109375 +v -1.037201 1.652117 0.109375 +v -0.936152 1.610261 -0.109375 +v 0.982164 0.858831 0.136894 +v 0.947720 1.235535 -0.081856 +v 0.881115 0.900687 -0.081856 +v 1.002758 1.224586 -0.109375 +v 1.112132 1.224586 0.109375 +v 1.057095 1.235535 0.136894 +v 1.037201 0.847883 0.109375 +v 0.936152 0.889739 -0.109375 +v -0.971093 0.832103 0.136894 +v -0.680368 0.590089 -0.081856 +v -0.870044 0.873959 -0.081856 +v -0.727027 0.558913 -0.109375 +v -0.804366 0.481574 0.109375 +v -0.757708 0.512749 0.136894 +v -1.017751 0.800928 0.109375 +v -0.916702 0.842784 -0.109375 +v 0.971093 1.667897 0.136894 +v 0.680368 1.909911 -0.081856 +v 0.870044 1.626041 -0.081856 +v 0.727027 1.941087 -0.109375 +v 0.804366 2.018426 0.109375 +v 0.757708 1.987251 0.136894 +v 1.017752 1.699073 0.109375 +v 0.916703 1.657217 -0.109375 +v -0.737251 2.007708 0.136894 +v -0.376041 2.120044 -0.081856 +v -0.417897 2.221093 0.136894 +v -0.691087 1.977027 -0.109375 +v -0.659911 1.930368 -0.081856 +v -0.768426 2.054366 0.109375 +v -0.449072 2.267752 0.109375 +v -0.407216 2.166703 -0.109375 +v 0.417897 0.278907 0.136894 +v 0.659911 0.569632 -0.081856 +v 0.376041 0.379956 -0.081856 +v 0.691087 0.522973 -0.109375 +v 0.768426 0.445634 0.109375 +v 0.737251 0.492292 0.136894 +v 0.449072 0.232249 0.109375 +v 0.407216 0.333298 -0.109375 +v -0.417897 0.278907 0.136894 +v -0.659911 0.569632 -0.081856 +v -0.737251 0.492293 0.136894 +v -0.407218 0.333298 -0.109375 +v -0.376041 0.379957 -0.081856 +v -0.449074 0.232249 0.109375 +v -0.768427 0.445635 0.109375 +v -0.691088 0.522974 -0.109375 +v 0.737251 2.007708 0.136894 +v 0.376041 2.120044 -0.081856 +v 0.659911 1.930368 -0.081856 +v 0.407218 2.166703 -0.109375 +v 0.449074 2.267751 0.109375 +v 0.417897 2.221093 0.136894 +v 0.768427 2.054366 0.109375 +v 0.691088 1.977026 -0.109375 +v -0.757708 1.987251 0.136894 +v -0.870044 1.626041 -0.081856 +v -0.680368 1.909911 -0.081856 +v -0.916702 1.657218 -0.109375 +v -1.017751 1.699074 0.109375 +v -0.971093 1.667897 0.136894 +v -0.804365 2.018427 0.109375 +v -0.727026 1.941088 -0.109375 +v 0.757708 0.512749 0.136894 +v 0.870044 0.873959 -0.081856 +v 0.680368 0.590089 -0.081856 +v 0.916702 0.842782 -0.109375 +v 1.017751 0.800926 0.109375 +v 0.971093 0.832103 0.136894 +v 0.804366 0.481573 0.109375 +v 0.727026 0.558912 -0.109375 +v -1.057095 1.235535 0.136894 +v -0.881115 0.900688 -0.081856 +v -0.947720 1.235535 -0.081856 +v -0.936153 0.889740 -0.109375 +v -1.037201 0.847885 0.109375 +v -0.982164 0.858832 0.136894 +v -1.112132 1.224588 0.109375 +v -1.002758 1.224588 -0.109375 +v 1.057095 1.264465 0.136894 +v 0.881115 1.599313 -0.081856 +v 0.947720 1.264465 -0.081856 +v 0.936153 1.610260 -0.109375 +v 1.037202 1.652116 0.109375 +v 0.982164 1.641169 0.136894 +v 1.112132 1.275412 0.109375 +v 1.002758 1.275412 -0.109375 +v -0.391168 2.232164 0.136894 +v -0.014465 2.197721 -0.081856 +v -0.014465 2.307096 0.136894 +v -0.360260 2.186153 -0.109375 +v -0.349312 2.131115 -0.081856 +v -0.402115 2.287201 0.109375 +v -0.025412 2.362133 0.109375 +v -0.025412 2.252758 -0.109375 +v 0.014465 0.192905 0.136894 +v 0.349312 0.368885 -0.081856 +v 0.014465 0.302280 -0.081856 +v 0.360260 0.313847 -0.109375 +v 0.402115 0.212799 0.109375 +v 0.391169 0.267836 0.136894 +v 0.025412 0.137868 0.109375 +v 0.025412 0.247242 -0.109375 +v 1.125000 1.875000 -0.625000 +v 0.625000 2.375000 -0.875000 +v 0.625000 2.375000 -0.625000 +v -0.375000 2.500000 -0.875000 +v 0.375000 2.500000 -0.625000 +v 0.375000 2.500000 -0.875000 +v -0.625000 2.375000 -0.625000 +v -1.125000 1.875000 -0.875000 +v -1.125000 1.875000 -0.625000 +v -0.208096 0.543462 -0.128904 +v -0.253178 0.638775 -0.161921 +v -0.352451 0.603256 -0.128904 +v -0.350471 0.548244 -0.105557 +v -0.307370 0.507944 -0.095887 +v -0.047836 1.365485 -0.500000 +v -0.115485 1.297835 -0.500000 +v -0.115485 1.202165 -0.500000 +v -0.047836 1.134515 -0.500000 +v 0.047834 1.134515 -0.500000 +v 0.173227 1.178247 -0.375000 +v 0.750000 1.544192 -3.511185 +v -0.750000 1.544192 -3.511185 +v -0.750000 1.639863 -3.280215 +v 0.500000 0.500000 -2.750000 +v -0.500000 0.500000 -1.750000 +v 0.208096 1.956538 -0.128904 +v 0.253178 1.861225 -0.161921 +v 0.352451 1.896744 -0.128904 +v 0.350472 1.951756 -0.105557 +v 0.307370 1.992056 -0.095887 +v -0.706538 1.458096 -0.128904 +v -0.611225 1.503178 -0.161921 +v -0.646744 1.602452 -0.128904 +v -0.701756 1.600472 -0.105557 +v -0.742056 1.557370 -0.095887 +v 0.706538 1.041904 -0.128904 +v 0.611225 0.996822 -0.161921 +v 0.646744 0.897549 -0.128904 +v 0.701756 0.899529 -0.105557 +v 0.742056 0.942630 -0.095887 +v -0.646744 0.897548 -0.128904 +v -0.611225 0.996822 -0.161921 +v -0.706538 1.041904 -0.128904 +v -0.744037 1.001604 -0.105557 +v -0.742056 0.942631 -0.095887 +v 0.646744 1.602452 -0.128904 +v 0.611225 1.503178 -0.161921 +v 0.706538 1.458097 -0.128904 +v 0.744037 1.498396 -0.105557 +v 0.742057 1.557369 -0.095887 +v -0.352452 1.896744 -0.128904 +v -0.253178 1.861225 -0.161921 +v -0.208096 1.956538 -0.128904 +v -0.248396 1.994038 -0.105557 +v -0.307369 1.992057 -0.095887 +v 0.352452 0.603256 -0.128904 +v 0.253178 0.638775 -0.161921 +v 0.208096 0.543462 -0.128904 +v 0.248396 0.505963 -0.105557 +v 0.307369 0.507944 -0.095887 +v 1.125000 1.875000 -0.875000 +v -0.375000 2.500000 -0.625000 +v -0.625000 2.375000 -0.875000 +v 0.110485 0.764515 -0.750000 +v 0.156250 0.737706 -0.418544 +v 0.110485 0.659581 -0.496669 +v 0.000000 1.031250 -0.750000 +v 0.110485 0.815831 -0.340419 +v 0.110485 0.985485 -0.750000 +v -0.156250 0.875000 -0.750000 +v -0.110486 0.815831 -0.340419 +v -0.110486 0.985485 -0.750000 +v -0.110486 0.764515 -0.750000 +v -0.156250 0.737706 -0.418544 +v 0.000000 0.718750 -0.750000 +v 0.000000 0.627221 -0.529029 +v 0.156250 0.875000 -0.750000 +v 0.000000 0.848192 -0.308058 +v -0.110486 0.659581 -0.496669 +v -0.156250 0.585633 -0.316931 +v -0.110486 0.627914 -0.214856 +v 0.110485 0.627914 -0.214856 +v 0.110485 0.543352 -0.419007 +v -0.110486 0.543352 -0.419007 +v 0.000000 0.645427 -0.172575 +v 0.156250 0.585633 -0.316931 +v 0.000000 0.525838 -0.461288 +v 0.110485 0.406250 -0.391735 +v 0.000000 0.406250 -0.437500 +v -0.110486 0.406250 -0.391735 +v -0.156250 0.406250 -0.281250 +v -0.110486 0.406250 -0.170765 +v 0.110485 0.406250 -0.170765 +v 0.000000 0.406250 -0.125000 +v 0.156250 0.406250 -0.281250 +v 0.000000 0.167073 -0.172575 +v 0.110485 0.184586 -0.214856 +v 0.156250 0.226867 -0.316932 +v 0.110485 0.269148 -0.419007 +v 0.000000 0.286661 -0.461288 +v -0.156250 0.226867 -0.316932 +v -0.110486 0.184586 -0.214856 +v -0.110486 0.269148 -0.419007 +v -0.200528 0.477172 -0.515462 +v -0.196566 0.367147 -0.468769 +v -0.404678 0.561734 -0.515462 +v -0.286731 0.557772 -0.534803 +v -0.485279 0.486735 -0.468769 +v -0.277166 0.292148 -0.422076 +v -0.395115 0.296110 -0.402735 +v -0.481318 0.376710 -0.422076 +v 0.095671 1.480970 -0.750000 +v 0.230970 1.345671 -0.750000 +v 0.230970 1.154329 -0.750000 +v 0.095671 1.019030 -0.750000 +v -0.095671 1.019030 -0.750000 +v -0.230970 1.154329 -0.750000 +v -0.230970 1.345671 -0.750000 +v -0.095671 1.480970 -0.750000 +v 0.875000 2.125000 -1.125000 +v 0.867418 1.992418 -0.974112 +v 0.911612 2.036612 -1.125000 +v 0.698223 2.125000 -1.125000 +v 0.742418 2.117417 -0.974112 +v 0.786612 2.161612 -1.125000 +v -0.742418 2.117417 -0.974112 +v -0.698223 2.125000 -1.125000 +v -0.786612 2.161612 -1.125000 +v -0.867418 1.992418 -0.974112 +v -0.875000 2.125000 -1.125000 +v -0.911612 2.036612 -1.125000 +v -0.875000 1.948223 -1.125000 +v -0.823223 2.073223 -0.948223 +v -0.635723 2.010723 -0.911612 +v -0.849112 1.922335 -1.036612 +v -0.760723 1.885723 -0.911612 +v -0.609835 2.036612 -1.000000 +v -0.672335 2.099112 -1.036612 +v -0.565641 2.294194 -0.974112 +v -0.521447 2.301777 -1.125000 +v -0.609835 2.338388 -1.125000 +v -0.690641 2.169194 -0.974112 +v -0.698223 2.301777 -1.125000 +v -0.734835 2.213388 -1.125000 +v -0.672335 2.099112 -1.036612 +v -0.698223 2.125000 -1.125000 +v -0.646447 2.250000 -0.948223 +v -0.458947 2.187500 -0.911612 +v -0.583947 2.062500 -0.911612 +v -0.495558 2.275888 -1.036612 +v -0.919194 1.940641 -0.974112 +v -0.875000 1.948223 -1.125000 +v -0.963388 1.984835 -1.125000 +v -1.044194 1.815641 -0.974112 +v -1.051777 1.948223 -1.125000 +v -1.088388 1.859835 -1.125000 +v -1.025888 1.745558 -1.036612 +v -1.051777 1.771446 -1.125000 +v -1.000000 1.896446 -0.948223 +v -0.812500 1.833946 -0.911612 +v -0.963388 1.683058 -1.000000 +v -0.786612 1.859835 -1.000000 +v -0.849112 1.922335 -1.036612 +v -0.937500 1.708946 -0.911612 +v -0.786612 2.161612 -1.812500 +v -0.609835 2.338388 -1.875000 +v -0.875000 2.125000 -1.812500 +v -0.911612 2.036612 -1.812500 +v -0.963388 1.984835 -1.750000 +v -0.698223 2.301777 -1.875000 +v -0.875000 1.948223 -1.812500 +v -0.734835 2.213388 -1.875000 +v -1.051777 1.948223 -1.750000 +v -1.088388 1.859835 -1.750000 +v -0.698223 2.125000 -1.875000 +v -1.051777 1.771446 -1.750000 +v 0.823223 2.073223 -0.948223 +v 0.875000 1.948223 -1.125000 +v 0.849112 1.922335 -1.036612 +v 0.635723 2.010723 -0.911612 +v 0.698223 1.948223 -0.875000 +v 0.760723 1.885723 -0.911612 +v 0.786612 1.859835 -1.000000 +v 0.609835 2.036612 -1.000000 +v 0.521447 2.301777 -1.125000 +v 0.565641 2.294194 -0.974112 +v 0.609835 2.338388 -1.125000 +v 0.698223 2.301777 -1.125000 +v 0.690641 2.169194 -0.974112 +v 0.734835 2.213388 -1.125000 +v 0.646447 2.250000 -0.948223 +v 0.672335 2.099112 -1.036612 +v 0.698223 2.125000 -1.125000 +v 0.458947 2.187500 -0.911612 +v 0.521447 2.125000 -0.875000 +v 0.583947 2.062500 -0.911612 +v 0.609835 2.036612 -1.000000 +v 0.495558 2.275888 -1.036612 +v 0.875000 1.948223 -1.125000 +v 0.919194 1.940641 -0.974112 +v 0.963388 1.984835 -1.125000 +v 1.051777 1.948223 -1.125000 +v 1.044194 1.815641 -0.974112 +v 1.088388 1.859835 -1.125000 +v 1.000000 1.896446 -0.948223 +v 1.025888 1.745558 -1.036612 +v 1.051777 1.771446 -1.125000 +v 0.812500 1.833946 -0.911612 +v 0.875000 1.771446 -0.875000 +v 0.963388 1.683058 -1.000000 +v 0.786612 1.859835 -1.000000 +v 0.937500 1.708946 -0.911612 +v 0.786612 2.161612 -1.812500 +v 0.609835 2.338388 -1.875000 +v 0.875000 2.125000 -1.812500 +v 0.911612 2.036612 -1.812500 +v 0.963388 1.984835 -1.750000 +v 0.698223 2.301777 -1.875000 +v 0.875000 1.948223 -1.812500 +v 0.734835 2.213388 -1.875000 +v 1.051777 1.948223 -1.750000 +v 1.088388 1.859835 -1.750000 +v 0.698223 2.125000 -1.875000 +v 1.051777 1.771446 -1.750000 +v -0.110485 1.735485 -0.750000 +v -0.156250 1.762294 -0.418544 +v -0.110485 1.840419 -0.496669 +v 0.000000 1.468750 -0.750000 +v -0.110485 1.684169 -0.340419 +v -0.110485 1.514515 -0.750000 +v 0.156250 1.625000 -0.750000 +v 0.110486 1.684169 -0.340419 +v 0.110486 1.514515 -0.750000 +v 0.110486 1.735485 -0.750000 +v 0.156250 1.762294 -0.418544 +v 0.000000 1.781250 -0.750000 +v 0.000000 1.872779 -0.529029 +v -0.156250 1.625000 -0.750000 +v 0.000000 1.651808 -0.308058 +v 0.110486 1.840419 -0.496669 +v 0.156250 1.914367 -0.316931 +v 0.110486 1.872086 -0.214856 +v -0.110485 1.872086 -0.214856 +v -0.110485 1.956648 -0.419007 +v 0.110486 1.956648 -0.419007 +v 0.000000 1.854573 -0.172575 +v -0.156250 1.914367 -0.316931 +v 0.000000 1.974162 -0.461288 +v -0.110485 2.093750 -0.391735 +v 0.000000 2.093750 -0.437500 +v 0.110486 2.093750 -0.391735 +v 0.156250 2.093750 -0.281250 +v 0.110486 2.093750 -0.170765 +v -0.110485 2.093750 -0.170765 +v 0.000000 2.093750 -0.125000 +v -0.156250 2.093750 -0.281250 +v 0.000000 2.332927 -0.172575 +v -0.110485 2.315414 -0.214856 +v -0.156250 2.273133 -0.316932 +v -0.110485 2.230852 -0.419007 +v 0.000000 2.213339 -0.461288 +v 0.156250 2.273133 -0.316932 +v 0.110486 2.315414 -0.214856 +v 0.110486 2.230852 -0.419007 +v 0.200528 2.022828 -0.515462 +v 0.196566 2.132853 -0.468769 +v 0.404678 1.938266 -0.515462 +v 0.286731 1.942228 -0.534803 +v 0.485279 2.013265 -0.468769 +v 0.277166 2.207852 -0.422076 +v 0.395115 2.203890 -0.402735 +v 0.481318 2.123290 -0.422076 +v -0.485485 1.139515 -0.750000 +v -0.512294 1.093750 -0.418544 +v -0.590419 1.139515 -0.496669 +v -0.218750 1.250000 -0.750000 +v -0.434169 1.139515 -0.340419 +v -0.264515 1.139515 -0.750000 +v -0.375000 1.406250 -0.750000 +v -0.434169 1.360486 -0.340419 +v -0.264515 1.360486 -0.750000 +v -0.485485 1.360486 -0.750000 +v -0.512294 1.406250 -0.418544 +v -0.531250 1.250000 -0.750000 +v -0.622779 1.250000 -0.529029 +v -0.375000 1.093750 -0.750000 +v -0.401808 1.250000 -0.308058 +v -0.590419 1.360486 -0.496669 +v -0.664367 1.406250 -0.316931 +v -0.622086 1.360486 -0.214856 +v -0.622086 1.139515 -0.214856 +v -0.706648 1.139515 -0.419007 +v -0.706648 1.360486 -0.419007 +v -0.604573 1.250000 -0.172575 +v -0.664367 1.093750 -0.316931 +v -0.724162 1.250000 -0.461288 +v -0.843750 1.139515 -0.391735 +v -0.843750 1.250000 -0.437500 +v -0.843750 1.360486 -0.391735 +v -0.843750 1.406250 -0.281250 +v -0.843750 1.360486 -0.170765 +v -0.843750 1.139515 -0.170765 +v -0.843750 1.250000 -0.125000 +v -0.843750 1.093750 -0.281250 +v -1.082927 1.250000 -0.172575 +v -1.065414 1.139515 -0.214856 +v -1.023133 1.093750 -0.316932 +v -0.980852 1.139515 -0.419007 +v -0.963339 1.250000 -0.461288 +v -1.023133 1.406250 -0.316932 +v -1.065414 1.360486 -0.214856 +v -0.980852 1.360486 -0.419007 +v -0.772828 1.450528 -0.515462 +v -0.882853 1.446566 -0.468769 +v -0.688266 1.654678 -0.515462 +v -0.692228 1.536731 -0.534803 +v -0.763265 1.735279 -0.468769 +v -0.957852 1.527166 -0.422076 +v -0.953890 1.645115 -0.402735 +v -0.873290 1.731318 -0.422076 +v 0.485485 1.360485 -0.750000 +v 0.512294 1.406250 -0.418544 +v 0.590419 1.360485 -0.496669 +v 0.218750 1.250000 -0.750000 +v 0.434169 1.360485 -0.340419 +v 0.264515 1.360485 -0.750000 +v 0.375000 1.093750 -0.750000 +v 0.434169 1.139514 -0.340419 +v 0.264515 1.139514 -0.750000 +v 0.485485 1.139514 -0.750000 +v 0.512294 1.093750 -0.418544 +v 0.531250 1.250000 -0.750000 +v 0.622779 1.250000 -0.529029 +v 0.375000 1.406250 -0.750000 +v 0.401808 1.250000 -0.308058 +v 0.590419 1.139514 -0.496669 +v 0.664367 1.093750 -0.316931 +v 0.622086 1.139514 -0.214856 +v 0.622086 1.360485 -0.214856 +v 0.706648 1.360485 -0.419007 +v 0.706648 1.139514 -0.419007 +v 0.604573 1.250000 -0.172575 +v 0.664367 1.406250 -0.316931 +v 0.724162 1.250000 -0.461288 +v 0.843750 1.360485 -0.391735 +v 0.843750 1.250000 -0.437500 +v 0.843750 1.139514 -0.391735 +v 0.843750 1.093750 -0.281250 +v 0.843750 1.139514 -0.170765 +v 0.843750 1.360485 -0.170765 +v 0.843750 1.250000 -0.125000 +v 0.843750 1.406250 -0.281250 +v 1.082927 1.250000 -0.172575 +v 1.065414 1.360485 -0.214856 +v 1.023133 1.406250 -0.316932 +v 0.980852 1.360485 -0.419007 +v 0.963339 1.250000 -0.461288 +v 1.023133 1.093750 -0.316932 +v 1.065414 1.139514 -0.214856 +v 0.980852 1.139514 -0.419007 +v 0.772828 1.049472 -0.515462 +v 0.882853 1.053434 -0.468769 +v 0.688266 0.845322 -0.515462 +v 0.692228 0.963269 -0.534803 +v 0.763265 0.764721 -0.468769 +v 0.953890 0.854885 -0.402735 +v 0.873290 0.768682 -0.422076 +v 0.957852 0.972834 -0.422076 +v -0.265165 0.828586 -0.750000 +v -0.251761 0.777268 -0.418544 +v -0.339365 0.754386 -0.496669 +v -0.154680 1.095320 -0.750000 +v -0.228879 0.864871 -0.340419 +v -0.108916 0.984835 -0.750000 +v -0.375651 1.095320 -0.750000 +v -0.385129 1.021122 -0.340419 +v -0.265166 1.141085 -0.750000 +v -0.421415 0.984836 -0.750000 +v -0.472732 0.998239 -0.418544 +v -0.375651 0.874350 -0.750000 +v -0.440371 0.809629 -0.529029 +v -0.154680 0.874350 -0.750000 +v -0.284121 0.965879 -0.308058 +v -0.495615 0.910636 -0.496669 +v -0.580264 0.890707 -0.316931 +v -0.518007 0.888244 -0.214856 +v -0.361757 0.731994 -0.214856 +v -0.421551 0.672200 -0.419007 +v -0.577801 0.828450 -0.419007 +v -0.427498 0.822502 -0.172575 +v -0.359293 0.669736 -0.316931 +v -0.512060 0.737940 -0.461288 +v -0.518497 0.575254 -0.391735 +v -0.596621 0.653379 -0.437500 +v -0.674747 0.731504 -0.391735 +v -0.707107 0.763864 -0.281250 +v -0.674747 0.731504 -0.170765 +v -0.518497 0.575254 -0.170765 +v -0.596621 0.653379 -0.125000 +v -0.486136 0.542893 -0.281250 +v -0.765745 0.484255 -0.172575 +v -0.675237 0.418514 -0.214856 +v -0.612979 0.416050 -0.316932 +v -0.615442 0.478308 -0.419007 +v -0.681184 0.568817 -0.461288 +v -0.833950 0.637021 -0.316932 +v -0.831487 0.574764 -0.214856 +v -0.771693 0.634558 -0.419007 +v -0.688267 0.845323 -0.515462 +v -0.763264 0.764722 -0.468769 +v -0.772828 1.049473 -0.515462 +v -0.692228 0.963270 -0.534803 +v -0.882854 1.053434 -0.468769 +v -0.873290 0.768683 -0.422076 +v -0.953891 0.854886 -0.402735 +v -0.957852 0.972834 -0.422076 +v 0.265165 1.671415 -0.750000 +v 0.251761 1.722732 -0.418544 +v 0.339365 1.745614 -0.496669 +v 0.154680 1.404680 -0.750000 +v 0.228879 1.635129 -0.340419 +v 0.108916 1.515165 -0.750000 +v 0.375651 1.404680 -0.750000 +v 0.385129 1.478879 -0.340419 +v 0.265166 1.358915 -0.750000 +v 0.421415 1.515165 -0.750000 +v 0.472732 1.501761 -0.418544 +v 0.375651 1.625651 -0.750000 +v 0.440371 1.690371 -0.529029 +v 0.154680 1.625651 -0.750000 +v 0.284121 1.534121 -0.308058 +v 0.495615 1.589364 -0.496669 +v 0.580264 1.609293 -0.316931 +v 0.518007 1.611756 -0.214856 +v 0.361757 1.768006 -0.214856 +v 0.421551 1.827801 -0.419007 +v 0.577801 1.671550 -0.419007 +v 0.427498 1.677498 -0.172575 +v 0.359293 1.830264 -0.316931 +v 0.512060 1.762060 -0.461288 +v 0.596621 1.846622 -0.437500 +v 0.674747 1.768496 -0.391735 +v 0.707107 1.736136 -0.281250 +v 0.674747 1.768496 -0.170765 +v 0.518497 1.924746 -0.170765 +v 0.518497 1.924746 -0.391735 +v 0.596621 1.846622 -0.125000 +v 0.486136 1.957107 -0.281250 +v 0.765745 2.015745 -0.172575 +v 0.675237 2.081486 -0.214856 +v 0.612979 2.083950 -0.316932 +v 0.615442 2.021692 -0.419007 +v 0.681184 1.931184 -0.461288 +v 0.833950 1.862979 -0.316932 +v 0.831487 1.925236 -0.214856 +v 0.771693 1.865442 -0.419007 +v 0.688267 1.654677 -0.515462 +v 0.763264 1.735279 -0.468769 +v 0.772828 1.450527 -0.515462 +v 0.692229 1.536730 -0.534803 +v 0.882854 1.446566 -0.468769 +v 0.873290 1.731318 -0.422076 +v 0.953891 1.645114 -0.402735 +v 0.957852 1.527166 -0.422076 +v -0.421415 1.515165 -0.750000 +v -0.472732 1.501761 -0.418544 +v -0.495614 1.589365 -0.496669 +v -0.154680 1.404680 -0.750000 +v -0.385129 1.478879 -0.340419 +v -0.265165 1.358916 -0.750000 +v -0.154680 1.625651 -0.750000 +v -0.228879 1.635129 -0.340419 +v -0.108915 1.515166 -0.750000 +v -0.265164 1.671415 -0.750000 +v -0.251761 1.722732 -0.418544 +v -0.375651 1.625651 -0.750000 +v -0.440371 1.690372 -0.529029 +v -0.375651 1.404680 -0.750000 +v -0.284121 1.534121 -0.308058 +v -0.339364 1.745615 -0.496669 +v -0.359293 1.830264 -0.316931 +v -0.361756 1.768007 -0.214856 +v -0.518006 1.611757 -0.214856 +v -0.577800 1.671551 -0.419007 +v -0.421550 1.827801 -0.419007 +v -0.427498 1.677498 -0.172575 +v -0.580264 1.609293 -0.316931 +v -0.512060 1.762060 -0.461288 +v -0.674746 1.768497 -0.391735 +v -0.596621 1.846622 -0.437500 +v -0.518496 1.924747 -0.391735 +v -0.486136 1.957107 -0.281250 +v -0.518496 1.924747 -0.170765 +v -0.674746 1.768497 -0.170765 +v -0.596621 1.846622 -0.125000 +v -0.707107 1.736136 -0.281250 +v -0.765745 2.015745 -0.172575 +v -0.831486 1.925237 -0.214856 +v -0.833950 1.862979 -0.316932 +v -0.771692 1.865443 -0.419007 +v -0.681184 1.931184 -0.461288 +v -0.612979 2.083950 -0.316932 +v -0.675236 2.081487 -0.214856 +v -0.615442 2.021693 -0.419007 +v -0.404677 1.938267 -0.515462 +v -0.485278 2.013265 -0.468769 +v -0.200527 2.022829 -0.515462 +v -0.286730 1.942229 -0.534803 +v -0.196566 2.132854 -0.468769 +v -0.481318 2.123290 -0.422076 +v -0.395114 2.203891 -0.402735 +v -0.277167 2.207852 -0.422076 +v 0.421415 0.984835 -0.750000 +v 0.472732 0.998239 -0.418544 +v 0.495614 0.910635 -0.496669 +v 0.154680 1.095320 -0.750000 +v 0.385129 1.021121 -0.340419 +v 0.265165 1.141084 -0.750000 +v 0.154680 0.874350 -0.750000 +v 0.228879 0.864871 -0.340419 +v 0.108915 0.984834 -0.750000 +v 0.265164 0.828585 -0.750000 +v 0.251761 0.777268 -0.418544 +v 0.375650 0.874350 -0.750000 +v 0.440371 0.809629 -0.529029 +v 0.375651 1.095320 -0.750000 +v 0.284121 0.965879 -0.308058 +v 0.339364 0.754385 -0.496669 +v 0.359293 0.669736 -0.316931 +v 0.361756 0.731993 -0.214856 +v 0.518006 0.888243 -0.214856 +v 0.577800 0.828449 -0.419007 +v 0.421550 0.672199 -0.419007 +v 0.427498 0.822502 -0.172575 +v 0.580264 0.890707 -0.316931 +v 0.512060 0.737940 -0.461288 +v 0.674746 0.731503 -0.391735 +v 0.596621 0.653379 -0.437500 +v 0.518496 0.575253 -0.391735 +v 0.486136 0.542893 -0.281250 +v 0.518496 0.575253 -0.170765 +v 0.674746 0.731503 -0.170765 +v 0.596621 0.653379 -0.125000 +v 0.707107 0.763864 -0.281250 +v 0.765745 0.484255 -0.172575 +v 0.831486 0.574763 -0.214856 +v 0.833950 0.637021 -0.316932 +v 0.771692 0.634558 -0.419007 +v 0.681184 0.568816 -0.461288 +v 0.612979 0.416050 -0.316932 +v 0.675236 0.418513 -0.214856 +v 0.615442 0.478308 -0.419007 +v 0.404677 0.561733 -0.515462 +v 0.485278 0.486736 -0.468769 +v 0.200527 0.477172 -0.515462 +v 0.286730 0.557772 -0.534803 +v 0.196566 0.367146 -0.468769 +v 0.395114 0.296109 -0.402735 +v 0.277166 0.292148 -0.422076 +v 0.481317 0.376710 -0.422076 +v 0.000000 2.500000 -1.875000 +v 0.088388 2.463388 -1.125000 +v 0.088388 2.463388 -1.875000 +v -0.125000 2.375000 -1.875000 +v -0.088388 2.463388 -1.125000 +v -0.088388 2.463388 -1.875000 +v 0.125000 2.375000 -1.125000 +v 0.125000 2.375000 -1.875000 +v 0.000000 2.500000 -1.125000 +v -0.125000 2.338388 -1.036612 +v -0.088388 2.400888 -0.974111 +v 0.125000 2.338388 -1.036612 +v 0.000000 2.426777 -0.948223 +v 0.088388 2.400888 -0.974111 +v 0.088388 2.250000 -0.911611 +v -0.125000 2.250000 -1.000000 +v -0.088388 2.250000 -0.911611 +v 0.125000 2.250000 -1.000000 +v 0.000000 2.250000 -0.875000 +v 0.250000 2.500000 -1.875000 +v 0.338388 2.463388 -1.125000 +v 0.338388 2.463388 -1.875000 +v 0.125000 2.375000 -1.875000 +v 0.161612 2.463388 -1.125000 +v 0.161612 2.463388 -1.875000 +v 0.375000 2.375000 -1.125000 +v 0.375000 2.375000 -1.875000 +v 0.250000 2.500000 -1.125000 +v 0.125000 2.338388 -1.036612 +v 0.161612 2.400888 -0.974111 +v 0.375000 2.338388 -1.036612 +v 0.250000 2.426777 -0.948223 +v 0.338388 2.400888 -0.974111 +v 0.338388 2.250000 -0.911611 +v 0.125000 2.250000 -1.000000 +v 0.161612 2.250000 -0.911611 +v 0.375000 2.250000 -1.000000 +v 0.250000 2.250000 -0.875000 +v -0.250000 2.500000 -1.875000 +v -0.161612 2.463388 -1.125000 +v -0.161612 2.463388 -1.875000 +v -0.375000 2.375000 -1.875000 +v -0.338388 2.463388 -1.125000 +v -0.338388 2.463388 -1.875000 +v -0.125000 2.375000 -1.125000 +v -0.125000 2.375000 -1.875000 +v -0.250000 2.500000 -1.125000 +v -0.375000 2.338388 -1.036612 +v -0.338388 2.400888 -0.974111 +v -0.125000 2.338388 -1.036612 +v -0.250000 2.426777 -0.948223 +v -0.161612 2.400888 -0.974111 +v -0.161612 2.250000 -0.911611 +v -0.375000 2.250000 -1.000000 +v -0.338388 2.250000 -0.911611 +v -0.125000 2.250000 -1.000000 +v -0.250000 2.250000 -0.875000 +v 0.672335 2.099112 -1.036612 +v -0.698223 1.948223 -0.875000 +v -0.786612 1.859835 -1.000000 +v -0.521447 2.125000 -0.875000 +v -0.609835 2.036612 -1.000000 +v -0.433058 2.213388 -1.000000 +v -0.875000 1.771446 -0.875000 +v -0.698223 2.125000 -1.812500 +v -0.521447 2.301777 -1.875000 +v -0.875000 1.948223 -1.750000 +v 0.433058 2.213388 -1.000000 +v 0.849112 1.922335 -1.036612 +v 0.698223 2.125000 -1.812500 +v 0.521447 2.301777 -1.875000 +v 0.875000 1.948223 -1.750000 +v -0.125000 2.375000 -1.125000 +v 0.125000 2.375000 -1.125000 +v -0.375000 2.375000 -1.125000 +v -1.250000 1.376000 -2.625000 +v -1.250000 0.751000 -2.625000 +v -1.250000 0.750000 -0.625000 +v 1.000000 0.500000 -2.125000 +v 1.250000 0.750000 -3.750000 +v 1.250000 0.750000 -0.625000 +v 1.250000 1.625000 -3.750000 +v 1.250000 1.750000 -3.375000 +v -0.500000 0.000000 -1.625000 +v 0.500000 0.000000 -0.625000 +v -0.500000 0.000000 -0.625000 +v -1.000000 0.500000 -2.125000 +v 0.500000 0.000000 -1.625000 +v 1.000000 1.750000 -3.000000 +v 1.000000 1.750000 -3.375000 +v -1.250000 0.750000 -3.750000 +v -1.250000 1.376000 -3.625000 +v -1.250000 1.625000 -3.750000 +v -1.250000 1.750000 -3.000000 +v -1.000000 0.501000 -3.625000 +v -1.250000 0.751000 -3.625000 +v 1.000000 1.625000 -3.750000 +v 1.000000 0.500000 -3.750000 +v 1.000000 0.750000 -3.750000 +v -1.000000 0.750000 -3.750000 +v -1.000000 0.500000 -3.750000 +v -1.000000 1.625000 -3.750000 +v -1.250000 1.750000 -3.375000 +v -1.000000 1.750000 -3.375000 +v -1.000000 1.750000 -3.000000 +v 0.500000 2.500000 -2.625000 +v -0.500000 2.250000 -2.750000 +v -0.500000 2.500000 -2.625000 +v 1.250000 1.750000 -3.000000 +v 0.500000 2.250000 -2.750000 +v 0.948223 1.698223 -0.875000 +v 0.536612 2.286612 -0.875000 +v 1.036612 1.786612 -0.875000 +v -1.036612 1.786612 -0.875000 +v -0.536612 2.286612 -0.625000 +v -0.536612 2.286612 -0.875000 +v 1.250000 1.750000 -0.625000 +v 1.039364 1.680519 -0.625000 +v 1.125000 1.250000 -0.625000 +v 1.039364 0.819481 -0.625000 +v 0.795495 0.454505 -0.625000 +v 0.430519 0.210635 -0.625000 +v 0.000000 0.125000 -0.625000 +v -0.430519 0.210636 -0.625000 +v -0.795495 0.454505 -0.625000 +v -1.039364 0.819481 -0.625000 +v -1.125000 1.250000 -0.625000 +v -0.375000 2.375000 -0.875000 +v 0.375000 2.375000 -0.625000 +v 0.375000 2.375000 -0.875000 +v -1.000000 1.750000 -2.875000 +v 1.000000 1.750000 -2.875000 +v 0.500000 2.250000 -2.625000 +v -0.500000 2.250000 -2.625000 +v 0.500000 1.819230 -2.900848 +v 0.500000 2.268567 -2.829241 +v 0.500000 2.215740 -2.715952 +v -0.500000 2.268567 -2.829241 +v -0.500000 1.819230 -2.900848 +v -0.500000 2.215740 -2.715952 +v 0.312500 2.438500 -2.750000 +v -0.500000 1.872057 -3.014137 +v -0.312500 2.438500 -2.750000 +v 0.312500 2.385673 -2.636712 +v -0.312500 2.385673 -2.636712 +v 1.000000 0.500000 -2.625000 +v 0.500000 1.562500 -4.875000 +v -0.500000 0.312500 -4.875000 +v -0.500000 1.562500 -4.875000 +v -0.500000 0.312500 -4.125000 +v 0.500000 0.312500 -4.875000 +v 0.500000 0.312500 -4.125000 +v 0.500000 1.562500 -4.125000 +v -0.500000 1.562500 -4.125000 +v 0.187500 1.625000 -4.125000 +v -0.187500 1.625000 -5.000000 +v -0.187500 1.625000 -4.125000 +v -0.187500 2.022748 -5.044194 +v -0.187500 2.022748 -5.574524 +v -0.187500 1.845971 -5.574524 +v 0.187500 1.625000 -5.000000 +v -0.187500 1.250000 -5.000000 +v 0.187500 1.250000 -5.000000 +v -0.187500 1.250000 -4.125000 +v -0.187500 1.669194 -5.397748 +v 0.187500 2.022748 -5.044194 +v 0.187500 1.845971 -5.574524 +v 0.187500 1.669194 -5.397748 +v 0.187500 2.022748 -5.574524 +v -0.187500 2.287913 -5.309359 +v 0.187500 2.287913 -5.309359 +v 0.000000 2.453697 -2.948062 +v 0.000000 2.487745 -2.725302 +v 0.000000 2.566986 -2.895234 +v 0.324759 1.977947 -2.963025 +v 0.216506 2.113832 -3.106544 +v 0.324759 2.057188 -3.132957 +v 0.000000 2.374456 -2.778129 +v 0.187500 2.442212 -2.746534 +v -0.500000 2.500000 -0.625000 +v -0.375000 2.500000 -1.875000 +v -1.125000 1.875000 -1.875000 +v -0.625000 2.375000 -1.875000 +v -0.625000 2.375000 -2.125000 +v 1.036612 1.786612 -0.625000 +v -1.125000 1.875000 -2.625000 +v -0.625000 2.375000 -2.375000 +v -0.625000 2.375000 -0.625000 +v -0.625000 2.375000 -0.875000 +v 1.125000 1.875000 -1.625000 +v 0.625000 2.375000 -1.875000 +v 0.500000 2.500000 -0.625000 +v 0.448223 2.198223 -1.875000 +v 0.948223 1.698223 -1.625000 +v -1.036612 1.786612 -2.625000 +v -1.125000 1.875000 -1.625000 +v -0.448223 2.198223 -1.875000 +v -0.536612 2.286612 -2.125000 +v -0.536612 2.286612 -2.375000 +v -0.448223 2.198223 -0.875000 +v 0.448223 2.198223 -0.875000 +v -1.036612 1.786612 -1.875000 +v -0.948223 1.698223 -1.625000 +v 0.625000 2.375000 -0.875000 +v 1.125000 1.875000 -0.875000 +v 0.375000 2.500000 -0.625000 +v 0.375000 2.500000 -0.875000 +v 0.536612 2.286612 -0.625000 +v 0.430518 2.289365 -0.625000 +v -1.039364 1.680519 -0.625000 +v -1.036612 1.786612 -0.625000 +v 0.625000 2.375000 -0.625000 +v -0.375000 2.375000 -0.625000 +v -0.430519 2.289364 -0.625000 +v 0.187500 1.250000 -4.125000 +v 0.375000 2.250000 -1.875000 +v 0.375000 2.250000 -0.875000 +v 0.375000 2.500000 -1.875000 +v -1.125000 1.875000 -0.875000 +v -0.375000 2.250000 -0.875000 +v -0.375000 2.250000 -1.875000 +v -0.375000 2.500000 -0.875000 +v 1.125000 1.875000 -0.625000 +v -0.375000 2.500000 -0.625000 +v -1.250000 1.750000 -0.625000 +v -1.125000 1.875000 -0.625000 +v -0.500000 0.000000 -0.375000 +v 0.500000 -0.000000 0.125000 +v -0.500000 -0.000000 0.125000 +v 0.500000 2.500000 0.125000 +v -0.500000 2.500000 -0.375000 +v -0.500000 2.500000 0.125000 +v -1.250000 1.750000 -0.375000 +v -1.250000 0.750000 0.125000 +v -1.250000 1.750000 0.125000 +v 1.250000 0.750000 0.125000 +v 1.250000 1.750000 -0.375000 +v 1.250000 1.750000 0.125000 +v 0.500000 2.500000 -0.375000 +v 1.250000 0.750000 -0.375000 +v 0.500000 0.000000 -0.375000 +v -1.250000 0.750000 -0.375000 +v 1.039364 1.680519 0.125000 +v 1.125000 1.250000 0.125000 +v 0.430518 2.289365 0.125000 +v 0.795495 2.045496 0.125000 +v -0.430519 2.289364 0.125000 +v 0.000000 2.375000 0.125000 +v -1.039364 1.680519 0.125000 +v -0.795495 2.045495 0.125000 +v -1.039364 0.819481 0.125000 +v -1.125000 1.250000 0.125000 +v -0.430519 0.210636 0.125000 +v -0.795495 0.454505 0.125000 +v 0.430519 0.210635 0.125000 +v 0.000000 0.125000 0.125000 +v 1.039364 0.819481 0.125000 +v 0.795495 0.454505 0.125000 +v 0.000000 0.750000 -0.750000 +v 0.500000 1.250000 -0.750000 +v 0.000000 1.750000 -0.750000 +v 0.795495 2.045496 -0.375000 +v 0.430518 2.289365 -0.375000 +v 1.125000 1.250000 -0.375000 +v 1.039364 1.680519 -0.375000 +v 0.795495 0.454505 -0.375000 +v 1.039364 0.819481 -0.375000 +v 0.000000 0.125000 -0.375000 +v 0.430519 0.210635 -0.375000 +v -0.795495 0.454505 -0.375000 +v -0.430519 0.210636 -0.375000 +v -1.125000 1.250000 -0.375000 +v -1.039364 0.819481 -0.375000 +v -0.795495 2.045495 -0.375000 +v -1.039364 1.680519 -0.375000 +v 0.000000 2.375000 -0.375000 +v -0.430519 2.289364 -0.375000 +v -1.000000 0.500000 -2.625000 +v 0.500000 1.872057 -3.014137 +v 0.216506 2.034591 -2.936611 +v 0.324760 2.317812 -2.804543 +v -0.948223 1.698223 -0.875000 +v -0.191341 1.711940 -0.750000 +v -0.353553 1.603553 -0.750000 +v -0.461940 1.441342 -0.750000 +v -0.500000 1.250000 -0.750000 +v -0.461940 1.058658 -0.750000 +v -0.353553 0.896447 -0.750000 +v -0.191341 0.788060 -0.750000 +v 0.191341 0.788060 -0.750000 +v 0.353553 0.896446 -0.750000 +v 0.461940 1.058658 -0.750000 +v 0.461940 1.441342 -0.750000 +v 0.353553 1.603554 -0.750000 +v 0.191341 1.711940 -0.750000 +v 0.000000 1.921303 -2.989438 +v -0.125000 2.030899 -3.145216 +v 0.000000 2.000544 -3.159371 +v -0.250000 2.147880 -2.883784 +v -0.216506 2.340409 -3.000889 +v -0.250000 2.227120 -3.053716 +v 0.187500 2.521452 -2.916467 +v 0.125000 2.030899 -3.145216 +v 0.125000 1.951658 -2.975283 +v -0.216506 2.034591 -2.936611 +v -0.216506 2.113832 -3.106544 +v 0.324760 2.397053 -2.974475 +v -0.125000 2.344101 -2.792284 +v -0.125000 2.423342 -2.962217 +v -0.125000 1.951658 -2.975283 +v 0.375000 2.227120 -3.053716 +v -0.216506 2.261168 -2.830956 +v 0.375000 2.147880 -2.883783 +v -0.312500 2.245990 -2.838034 +v -0.375000 2.313995 -2.944245 +v -0.375000 2.261168 -2.830956 +v -0.500000 2.147880 -2.883784 +v -0.483253 2.257351 -2.970659 +v -0.500000 2.200707 -2.997072 +v -0.266747 2.091235 -2.910197 +v -0.312500 2.102596 -3.042822 +v -0.266747 2.144063 -3.023486 +v -0.375000 2.034591 -2.936611 +v -0.437500 2.102596 -3.042822 +v -0.375000 2.087419 -3.049900 +v -0.266747 2.257351 -2.970659 +v -0.312500 2.298818 -2.951323 +v -0.437500 2.245990 -2.838034 +v -0.483253 2.204524 -2.857370 +v -0.312500 2.049769 -2.929533 +v -0.483253 2.091235 -2.910197 +v -0.437500 2.049769 -2.929533 +v -0.250000 2.147880 -2.883784 +v -0.266747 2.204524 -2.857370 +v -0.437500 2.298818 -2.951323 +v -0.483253 2.144063 -3.023486 +v -0.250000 2.200707 -2.997072 +v -0.382683 2.173880 -0.125000 +v 0.000000 2.250000 -0.125000 +v 0.382683 2.173880 -0.125000 +v 0.707106 1.957107 -0.125000 +v 0.923880 1.632684 -0.125000 +v 1.000000 1.250000 -0.125000 +v 0.923880 0.867316 -0.125000 +v 0.707106 0.542893 -0.125000 +v 0.382683 0.326120 -0.125000 +v 0.000000 0.250000 -0.125000 +v -0.382684 0.326120 -0.125000 +v -0.707108 0.542893 -0.125000 +v -0.923880 0.867316 -0.125000 +v -1.000000 1.250000 -0.125000 +v -0.923880 1.632683 -0.125000 +v -0.707108 1.957107 -0.125000 +v 0.000000 2.250000 -0.500000 +v 0.382683 2.173880 -0.500000 +v 0.000000 0.250000 -0.500000 +v -0.382683 2.173880 -0.500000 +v 0.382683 0.326120 -0.500000 +v -0.707108 1.957107 -0.500000 +v 0.707106 0.542893 -0.500000 +v -0.923880 1.632683 -0.500000 +v 0.923880 0.867316 -0.500000 +v -1.000000 1.250000 -0.500000 +v 1.000000 1.250000 -0.500000 +v -0.923880 0.867316 -0.500000 +v 0.923880 1.632684 -0.500000 +v -0.707108 0.542893 -0.500000 +v 0.707106 1.957107 -0.500000 +v -0.382684 0.326120 -0.500000 +v 0.000000 0.125000 -0.625000 +v -0.430519 2.289364 -0.625000 +v 0.000000 2.375000 -0.625000 +v 0.430519 0.210635 -0.625000 +v -0.795495 2.045495 -0.625000 +v 0.795495 0.454505 -0.625000 +v -1.039364 1.680519 -0.625000 +v 1.039364 0.819481 -0.625000 +v -1.125000 1.250000 -0.625000 +v 1.125000 1.250000 -0.625000 +v -1.039364 0.819481 -0.625000 +v 1.039364 1.680519 -0.625000 +v -0.795495 0.454505 -0.625000 +v 0.795495 2.045496 -0.625000 +v -0.430519 0.210636 -0.625000 +v 0.430518 2.289365 -0.625000 +vt 0.324138 0.796875 +vt 0.282759 0.812500 +vt 0.282759 0.796875 +vt 0.324138 0.828125 +vt 0.282759 0.843750 +vt 0.282759 0.828125 +vt 0.324138 0.859375 +vt 0.282759 0.875000 +vt 0.282759 0.859375 +vt 0.282759 0.890625 +vt 0.331034 0.906250 +vt 0.275862 0.906250 +vt 0.331034 0.765625 +vt 0.282759 0.781250 +vt 0.275862 0.765625 +vt 0.324138 0.812500 +vt 0.282759 1.000000 +vt 0.324138 0.984375 +vt 0.324138 1.000000 +vt 0.275862 0.968750 +vt 0.282759 0.984375 +vt 0.275862 0.984375 +vt 0.324138 0.953125 +vt 0.282759 0.968750 +vt 0.282759 0.953125 +vt 0.275862 0.968750 +vt 0.282759 0.984375 +vt 0.275862 0.984375 +vt 0.282759 0.968750 +vt 0.324138 0.984375 +vt 0.282759 0.984375 +vt 0.324138 0.968750 +vt 0.282759 0.968750 +vt 0.324138 0.984375 +vt 0.324138 0.968750 +vt 0.282759 0.984375 +vt 0.282759 0.968750 +vt 0.275862 0.968750 +vt 0.275862 0.984375 +vt 0.324138 0.953125 +vt 0.282759 0.953125 +vt 0.331034 0.984375 +vt 0.324138 0.968750 +vt 0.331034 0.968750 +vt 0.282759 1.000000 +vt 0.324138 1.000000 +vt 0.331034 0.984375 +vt 0.331034 0.968750 +vt 0.324138 0.953125 +vt 0.282759 0.953125 +vt 0.331034 0.984375 +vt 0.324138 0.968750 +vt 0.331034 0.968750 +vt 0.282759 1.000000 +vt 0.324138 1.000000 +vt 0.331034 0.984375 +vt 0.331034 0.968750 +vt 0.324138 0.953125 +vt 0.282759 0.953125 +vt 0.275862 0.968750 +vt 0.275862 0.984375 +vt 0.282759 1.000000 +vt 0.324138 0.984375 +vt 0.324138 1.000000 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.310345 0.031250 +vt 0.296552 0.046875 +vt 0.296552 0.031250 +vt 0.268584 0.103261 +vt 0.268584 0.115489 +vt 0.264768 0.124136 +vt 0.282759 0.046875 +vt 0.282759 0.031250 +vt 0.268966 0.031250 +vt 0.275862 0.046875 +vt 0.268966 0.046875 +vt 0.255172 0.046875 +vt 0.255172 0.031250 +vt 0.365517 0.031250 +vt 0.351724 0.046875 +vt 0.351724 0.031250 +vt 0.337931 0.046875 +vt 0.337931 0.031250 +vt 0.324138 0.031250 +vt 0.331034 0.046875 +vt 0.324138 0.046875 +vt 0.310345 0.046875 +vt 0.296552 0.078125 +vt 0.303448 0.062500 +vt 0.303448 0.078125 +vt 0.282759 0.078125 +vt 0.289655 0.062500 +vt 0.289655 0.078125 +vt 0.268966 0.062500 +vt 0.275862 0.078125 +vt 0.268966 0.078125 +vt 0.255172 0.062500 +vt 0.262069 0.078125 +vt 0.255172 0.078125 +vt 0.351724 0.062500 +vt 0.358621 0.078125 +vt 0.351724 0.078125 +vt 0.337931 0.078125 +vt 0.344828 0.062500 +vt 0.344828 0.078125 +vt 0.324138 0.078125 +vt 0.331034 0.062500 +vt 0.331034 0.078125 +vt 0.310345 0.078125 +vt 0.317241 0.062500 +vt 0.317241 0.078125 +vt 0.848515 0.125000 +vt 0.903448 0.000542 +vt 0.958382 0.125000 +vt 0.351724 0.906250 +vt 0.331034 0.718750 +vt 0.255172 0.765625 +vt 0.275862 0.953125 +vt 0.848515 0.375000 +vt 0.903448 0.250541 +vt 0.958382 0.375000 +vt 0.737931 0.375000 +vt 0.848276 0.281250 +vt 0.848276 0.375000 +vt 0.737931 0.187500 +vt 0.848276 0.093750 +vt 0.848276 0.187500 +vt 0.737931 0.562500 +vt 0.848276 0.468750 +vt 0.848276 0.562500 +vt 0.737931 0.281250 +vt 0.737931 0.093750 +vt 0.848276 -0.000000 +vt 0.737931 0.656250 +vt 0.848276 0.656250 +vt 0.737931 0.468750 +vt 0.262069 0.140625 +vt 0.268966 0.171875 +vt 0.262069 0.171875 +vt 0.296552 0.171875 +vt 0.303448 0.140625 +vt 0.303448 0.171875 +vt 0.268966 0.125000 +vt 0.296552 0.140625 +vt 0.268966 0.140625 +vt 0.296552 0.187500 +vt 0.268966 0.187500 +vt 0.268966 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.171875 +vt 0.296552 0.140625 +vt 0.303448 0.140625 +vt 0.268966 0.140625 +vt 0.262069 0.171875 +vt 0.262069 0.140625 +vt 0.296552 0.187500 +vt 0.268966 0.171875 +vt 0.296552 0.171875 +vt 0.268966 0.125000 +vt 0.296552 0.125000 +vt 0.268966 0.093750 +vt 0.296552 0.093750 +vt 0.262069 0.171875 +vt 0.268966 0.140625 +vt 0.268966 0.171875 +vt 0.303448 0.171875 +vt 0.296552 0.140625 +vt 0.303448 0.140625 +vt 0.268966 0.125000 +vt 0.296552 0.187500 +vt 0.268966 0.187500 +vt 0.296552 0.171875 +vt 0.268966 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.140625 +vt 0.296552 0.171875 +vt 0.296552 0.140625 +vt 0.262069 0.140625 +vt 0.268966 0.171875 +vt 0.262069 0.171875 +vt 0.296552 0.187500 +vt 0.268966 0.125000 +vt 0.296552 0.125000 +vt 0.268966 0.140625 +vt 0.268966 0.093750 +vt 0.296552 0.093750 +vt 0.317241 0.140625 +vt 0.324138 0.171875 +vt 0.317241 0.171875 +vt 0.344828 0.171875 +vt 0.358621 0.187500 +vt 0.344828 0.187500 +vt 0.324138 0.125000 +vt 0.351724 0.140625 +vt 0.324138 0.140625 +vt 0.324138 0.187500 +vt 0.344828 0.093750 +vt 0.351724 0.125000 +vt 0.255172 0.343750 +vt 0.337931 0.312500 +vt 0.337931 0.343750 +vt 0.363190 0.328752 +vt 0.351724 0.373746 +vt 0.340258 0.328752 +vt 0.255172 0.312500 +vt 0.337931 0.281250 +vt 0.255172 0.281250 +vt 0.337931 0.250000 +vt 0.363190 0.296248 +vt 0.351724 0.311246 +vt 0.340258 0.296248 +vt 0.868966 0.625000 +vt 0.924138 0.500000 +vt 0.924138 0.625000 +vt 0.848276 0.500000 +vt 0.868966 0.500000 +vt 0.944828 0.625000 +vt 0.834483 0.906250 +vt 0.765517 0.718750 +vt 0.834483 0.718750 +vt 0.737931 0.718750 +vt 0.765517 0.906250 +vt 0.737931 0.906250 +vt 0.862069 0.906250 +vt 0.862069 0.718750 +vt 0.765517 0.968750 +vt 0.834483 0.968750 +vt 0.834483 0.656250 +vt 0.765517 0.656250 +vt 0.958621 0.187500 +vt 0.986207 0.156250 +vt 0.986207 0.187500 +vt 0.958621 0.062500 +vt 0.986207 0.031250 +vt 0.986207 0.062500 +vt 0.958621 0.125000 +vt 0.986207 0.093750 +vt 0.986207 0.125000 +vt 0.958621 0.156250 +vt 0.958621 0.031250 +vt 0.986207 0.000000 +vt 0.958621 0.093750 +vt 0.965937 0.193335 +vt 0.978890 0.193335 +vt 0.985367 0.218750 +vt 0.737931 0.109375 +vt 0.724138 0.093750 +vt 0.737931 0.093750 +vt 0.737931 0.015625 +vt 0.724138 0.000000 +vt 0.737931 0.000000 +vt 0.737931 0.140625 +vt 0.724138 0.125000 +vt 0.737931 0.125000 +vt 0.737931 0.078125 +vt 0.724138 0.062500 +vt 0.737931 0.062500 +vt 0.737931 0.046875 +vt 0.724138 0.031250 +vt 0.737931 0.031250 +vt 0.737931 0.171875 +vt 0.724138 0.156250 +vt 0.737931 0.156250 +vt 0.724138 0.015625 +vt 0.717241 0.000000 +vt 0.717241 0.156250 +vt 0.717241 0.125000 +vt 0.724138 0.078125 +vt 0.717241 0.062500 +vt 0.717241 0.031250 +vt 0.724138 0.171875 +vt 0.724138 0.109375 +vt 0.717241 0.093750 +vt 0.675862 0.031250 +vt 0.717241 0.187500 +vt 0.675862 0.156250 +vt 0.675862 0.093750 +vt 0.675862 0.000000 +vt 0.675862 0.125000 +vt 0.675862 0.062500 +vt 0.668966 0.125000 +vt 0.668966 0.093750 +vt 0.668966 0.078125 +vt 0.668966 0.062500 +vt 0.668966 0.031250 +vt 0.668966 0.000000 +vt 0.668966 0.171875 +vt 0.668966 0.156250 +vt 0.655172 0.156250 +vt 0.668966 0.109375 +vt 0.655172 0.093750 +vt 0.668966 0.015625 +vt 0.655172 0.000000 +vt 0.668966 0.140625 +vt 0.655172 0.125000 +vt 0.655172 0.062500 +vt 0.668966 0.046875 +vt 0.655172 0.031250 +vt 0.655172 0.140625 +vt 0.648276 0.125000 +vt 0.655172 0.109375 +vt 0.648276 0.093750 +vt 0.648276 0.062500 +vt 0.655172 0.046875 +vt 0.648276 0.031250 +vt 0.655172 0.015625 +vt 0.648276 0.000000 +vt 0.648276 0.187500 +vt 0.648276 0.156250 +vt 0.641379 0.093750 +vt 0.641379 -0.000000 +vt 0.641379 0.125000 +vt 0.641379 0.062500 +vt 0.641379 0.031250 +vt 0.641379 0.156250 +vt 0.634483 0.062500 +vt 0.634483 0.031250 +vt 0.634483 0.171875 +vt 0.634483 0.156250 +vt 0.634483 0.093750 +vt 0.634483 0.000000 +vt 0.634483 0.140625 +vt 0.634483 0.125000 +vt 0.624290 0.002689 +vt 0.630883 0.002689 +vt 0.634179 0.015625 +vt 0.496552 0.187500 +vt 0.468966 0.156250 +vt 0.496552 0.156250 +vt 0.496552 0.312500 +vt 0.468966 0.265625 +vt 0.496552 0.265625 +vt 0.468966 0.234375 +vt 0.496552 0.234375 +vt 0.468966 0.187500 +vt 0.537931 0.828125 +vt 0.524138 0.812500 +vt 0.537931 0.812500 +vt 0.503448 0.718750 +vt 0.517241 0.812500 +vt 0.503448 0.812500 +vt 0.537931 0.718750 +vt 0.524138 0.718750 +vt 0.517241 0.718750 +vt 0.496552 0.812500 +vt 0.496552 0.718750 +vt 0.544828 0.203125 +vt 0.551724 0.250000 +vt 0.544828 0.250000 +vt 0.531034 0.203125 +vt 0.524138 0.250000 +vt 0.524138 0.203125 +vt 0.510345 0.203125 +vt 0.503448 0.250000 +vt 0.503448 0.203125 +vt 0.537931 0.250000 +vt 0.537931 0.203125 +vt 0.510345 0.296875 +vt 0.503448 0.296875 +vt 0.531034 0.250000 +vt 0.524138 0.296875 +vt 0.531034 0.203125 +vt 0.531034 0.187500 +vt 0.537931 0.187500 +vt 0.544828 0.187500 +vt 0.551724 0.187500 +vt 0.551724 0.203125 +vt 0.503448 0.203125 +vt 0.503448 0.187500 +vt 0.510345 0.187500 +vt 0.517241 0.187500 +vt 0.524138 0.187500 +vt 0.524138 0.203125 +vt 0.544828 0.156250 +vt 0.537931 0.156250 +vt 0.531034 0.156250 +vt 0.524138 0.187500 +vt 0.524138 0.156250 +vt 0.510345 0.156250 +vt 0.503448 0.156250 +vt 0.524138 0.156250 +vt 0.517241 0.156250 +vt 0.551724 0.156250 +vt 0.496552 0.187500 +vt 0.496552 0.156250 +vt 0.496552 0.250000 +vt 0.496552 0.203125 +vt 0.979310 0.515625 +vt 0.986207 0.484375 +vt 0.986207 0.515625 +vt 0.517241 0.250000 +vt 0.510345 0.250000 +vt 0.524138 0.250000 +vt 0.517241 0.296875 +vt 0.544828 0.296875 +vt 0.496552 0.296875 +vt 0.537931 0.296875 +vt 0.531034 0.296875 +vt 0.517241 0.203125 +vt 0.213793 0.109375 +vt 0.220690 0.265625 +vt 0.213793 0.265625 +vt 0.972414 0.515625 +vt 0.979310 0.484375 +vt 0.220690 0.109375 +vt 0.227586 0.265625 +vt 0.965517 0.515625 +vt 0.972414 0.484375 +vt 0.186207 0.109375 +vt 0.193103 0.265625 +vt 0.186207 0.265625 +vt 0.958621 0.515625 +vt 0.965517 0.484375 +vt 0.193103 0.109375 +vt 0.200000 0.265625 +vt 0.198836 0.288749 +vt 0.193103 0.296248 +vt 0.187370 0.288749 +vt 0.200000 0.109375 +vt 0.206897 0.265625 +vt 0.206897 0.109375 +vt 0.201164 0.288749 +vt 0.201164 0.273751 +vt 0.212630 0.273751 +vt 0.972414 0.468750 +vt 0.979310 0.484375 +vt 0.979310 0.468750 +vt 0.958621 0.468750 +vt 0.965517 0.468750 +vt 0.958621 0.484375 +vt 0.965517 0.453125 +vt 0.958621 0.437500 +vt 0.965517 0.421875 +vt 0.965517 0.437500 +vt 0.972414 0.453125 +vt 0.979310 0.453125 +vt 0.986207 0.453125 +vt 0.986207 0.468750 +vt 0.972414 0.437500 +vt 0.965517 0.453125 +vt 0.986207 0.453125 +vt 0.979310 0.437500 +vt 0.986207 0.437500 +vt 0.972414 0.421875 +vt 0.979310 0.343750 +vt 0.979310 0.421875 +vt 0.986207 0.421875 +vt 0.965517 0.328125 +vt 0.972414 0.328125 +vt 0.965517 0.343750 +vt 0.986207 0.343750 +vt 0.958621 0.421875 +vt 0.965517 0.343750 +vt 0.972414 0.343750 +vt 0.979310 0.328125 +vt 0.986207 0.296875 +vt 0.986207 0.328125 +vt 0.986207 0.343750 +vt 0.958621 0.281250 +vt 0.965517 0.250000 +vt 0.965517 0.281250 +vt 0.958621 0.328125 +vt 0.965517 0.296875 +vt 0.972414 0.296875 +vt 0.979310 0.296875 +vt 0.979310 0.296875 +vt 0.972414 0.281250 +vt 0.979310 0.281250 +vt 0.958621 0.296875 +vt 0.986207 0.250000 +vt 0.986207 0.281250 +vt 0.979310 0.250000 +vt 0.972414 0.250000 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.093750 +vt 0.151724 0.093750 +vt 0.158621 0.078125 +vt 0.165517 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.186207 0.046875 +vt 0.193103 0.062500 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.193103 0.046875 +vt 0.200000 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.151724 0.046875 +vt 0.158621 0.062500 +vt 0.151724 0.062500 +vt 0.172414 0.046875 +vt 0.165517 0.062500 +vt 0.165517 0.046875 +vt 0.179310 0.046875 +vt 0.186207 0.062500 +vt 0.179310 0.062500 +vt 0.193103 0.046875 +vt 0.186207 0.046875 +vt 0.144828 0.046875 +vt 0.144828 0.062500 +vt 0.158621 0.046875 +vt 0.172414 0.062500 +vt 0.200000 0.062500 +vt 0.193103 0.062500 +vt 0.170248 0.114281 +vt 0.170248 0.135718 +vt 0.160786 0.135718 +vt 0.186207 0.078125 +vt 0.179310 0.093750 +vt 0.179310 0.078125 +vt 0.193103 0.093750 +vt 0.186207 0.093750 +vt 0.200000 0.078125 +vt 0.193103 0.078125 +vt 0.151724 0.078125 +vt 0.144828 0.093750 +vt 0.144828 0.078125 +vt 0.158621 0.078125 +vt 0.151724 0.093750 +vt 0.165517 0.093750 +vt 0.158621 0.093750 +vt 0.165517 0.078125 +vt 0.172414 0.093750 +vt 0.172414 0.078125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.117241 0.296875 +vt 0.096552 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.343750 +vt 0.117241 0.328125 +vt 0.124138 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.096552 0.296875 +vt 0.117241 0.328125 +vt 0.096552 0.328125 +vt 0.117241 0.343750 +vt 0.124138 0.296875 +vt 0.117241 0.296875 +vt 0.117241 0.281250 +vt 0.096552 0.281250 +vt 0.089655 0.296875 +vt 0.089655 0.328125 +vt 0.551724 0.390625 +vt 0.565517 0.484375 +vt 0.551724 0.484375 +vt 0.565517 0.609375 +vt 0.551724 0.515625 +vt 0.565517 0.515625 +vt 0.551724 0.640625 +vt 0.565517 0.734375 +vt 0.551724 0.734375 +vt 0.324138 0.843750 +vt 0.324138 0.875000 +vt 0.324138 0.890625 +vt 0.324138 0.781250 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.303448 0.046875 +vt 0.259370 0.124136 +vt 0.255554 0.115489 +vt 0.255554 0.103261 +vt 0.259370 0.094614 +vt 0.264768 0.094614 +vt 0.289655 0.046875 +vt 0.262069 0.046875 +vt 0.358621 0.046875 +vt 0.344828 0.046875 +vt 0.317241 0.046875 +vt 0.296552 0.062500 +vt 0.282759 0.062500 +vt 0.275862 0.062500 +vt 0.262069 0.062500 +vt 0.358621 0.062500 +vt 0.337931 0.062500 +vt 0.324138 0.062500 +vt 0.310345 0.062500 +vt 0.903448 0.249458 +vt 0.864604 0.213006 +vt 0.864604 0.036995 +vt 0.942292 0.036994 +vt 0.942292 0.213005 +vt 0.351724 0.765625 +vt 0.275862 0.718750 +vt 0.255172 0.906250 +vt 0.331034 0.953125 +vt 0.942292 0.463005 +vt 0.903448 0.499458 +vt 0.864604 0.463005 +vt 0.864604 0.286994 +vt 0.942292 0.286994 +vt 0.737931 -0.000000 +vt 0.296552 0.093750 +vt 0.268966 0.187500 +vt 0.262069 0.140625 +vt 0.296552 0.093750 +vt 0.303448 0.171875 +vt 0.268966 0.187500 +vt 0.358621 0.171875 +vt 0.324138 0.093750 +vt 0.351724 0.313754 +vt 0.363190 0.358748 +vt 0.340258 0.358748 +vt 0.255172 0.250000 +vt 0.340258 0.266252 +vt 0.351724 0.251254 +vt 0.363190 0.266252 +vt 0.848276 0.625000 +vt 0.944828 0.500000 +vt 0.958621 0.000000 +vt 0.978890 0.244165 +vt 0.965937 0.244165 +vt 0.959461 0.218750 +vt 0.724138 0.140625 +vt 0.724138 0.046875 +vt 0.675862 0.187500 +vt 0.655172 0.171875 +vt 0.655172 0.078125 +vt 0.641379 0.187500 +vt 0.634483 0.078125 +vt 0.634483 0.046875 +vt 0.634483 0.109375 +vt 0.634483 0.015625 +vt 0.630883 0.028561 +vt 0.624290 0.028561 +vt 0.620993 0.015625 +vt 0.468966 0.312500 +vt 0.524138 0.828125 +vt 0.551724 0.203125 +vt 0.524138 0.296875 +vt 0.551724 0.296875 +vt 0.524138 0.203125 +vt 0.227586 0.109375 +vt 0.958621 0.484375 +vt 0.187370 0.273751 +vt 0.193103 0.266252 +vt 0.198836 0.273751 +vt 0.206897 0.266252 +vt 0.212630 0.288749 +vt 0.206897 0.296248 +vt 0.958621 0.453125 +vt 0.958621 0.343750 +vt 0.958621 0.250000 +vt 0.958621 0.296875 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.200000 0.046875 +vt 0.172208 0.125000 +vt 0.165517 0.140158 +vt 0.158827 0.125000 +vt 0.160786 0.114281 +vt 0.165517 0.109842 +vt 0.200000 0.093750 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.096552 0.343750 +vt 0.124138 0.328125 +vt 0.565517 0.390625 +vt 0.551724 0.609375 +vt 0.565517 0.640625 +vt 0.662069 0.796875 +vt 0.662069 0.875000 +vt 0.551724 0.875000 +vt 0.634483 0.218750 +vt 0.724138 0.250000 +vt 0.551724 0.250000 +vt 0.724138 0.359375 +vt 0.703448 0.375000 +vt 0.606897 -0.000000 +vt 0.551724 0.125000 +vt 0.551724 -0.000000 +vt 0.634483 0.906250 +vt 0.606897 1.000000 +vt 0.413793 0.062500 +vt 0.441379 0.250000 +vt 0.413793 0.187500 +vt 0.682759 0.406250 +vt 0.703448 0.406250 +vt 0.724138 0.875000 +vt 0.717241 0.796875 +vt 0.724138 0.765625 +vt 0.682759 0.750000 +vt 0.717241 0.906250 +vt 0.717241 0.875000 +vt 0.737931 0.359375 +vt 0.737931 0.218750 +vt 0.737931 0.250000 +vt 0.737931 0.875000 +vt 0.737931 0.906250 +vt 0.724138 0.375000 +vt 0.724138 0.718750 +vt 0.703448 0.750000 +vt 0.703448 0.718750 +vt 0.682759 0.718750 +vt 0.662069 0.500000 +vt 0.675862 0.625000 +vt 0.662069 0.625000 +vt 0.696552 0.421875 +vt 0.675862 0.500000 +vt 0.696552 0.703125 +vt 0.020690 0.781250 +vt 0.013793 0.875000 +vt 0.013793 0.781250 +vt 0.213793 0.781250 +vt 0.227586 0.875000 +vt 0.213793 0.875000 +vt 0.510209 0.406422 +vt 0.506394 0.432721 +vt 0.482676 0.422118 +vt 0.455123 0.406613 +vt 0.458988 0.432863 +vt 0.438078 0.465736 +vt 0.414116 0.500678 +vt 0.425220 0.509148 +vt 0.420595 0.561221 +vt 0.413934 0.622365 +vt 0.425067 0.614088 +vt 0.437826 0.657998 +vt 0.454859 0.718112 +vt 0.458836 0.691761 +vt 0.482625 0.702699 +vt 0.455172 0.609375 +vt 0.441379 0.515625 +vt 0.455172 0.515625 +vt 0.696552 0.625000 +vt 0.703448 0.687500 +vt 0.696552 0.687500 +vt 0.696552 0.500000 +vt 0.703448 0.437500 +vt 0.703448 0.500000 +vt 0.703448 0.625000 +vt 0.731034 0.687500 +vt 0.413793 0.859375 +vt 0.420690 0.914062 +vt 0.413793 0.914062 +vt 0.475862 0.914062 +vt 0.482759 0.859375 +vt 0.482759 0.914062 +vt 0.431034 0.937500 +vt 0.475862 0.859375 +vt 0.465517 0.937500 +vt 0.431034 0.953125 +vt 0.479310 0.937500 +vt 0.465517 0.953125 +vt 0.417241 0.937500 +vt 0.417241 0.953125 +vt 0.441379 -0.000000 +vt 0.468966 0.250000 +vt 0.903448 0.875000 +vt 0.958621 0.718750 +vt 0.958621 0.875000 +vt 0.958621 0.625000 +vt 0.903448 0.718750 +vt 0.903448 0.625000 +vt 0.903448 0.968750 +vt 0.958621 0.968750 +vt 0.862069 0.718750 +vt 0.862069 0.875000 +vt 1.000000 0.875000 +vt 1.000000 0.718750 +vt 0.489655 0.156250 +vt 0.510345 0.046875 +vt 0.510345 0.156250 +vt 0.434483 0.812500 +vt 0.413793 0.765625 +vt 0.420690 0.750000 +vt 0.489655 0.046875 +vt 0.510345 0.000000 +vt 0.468966 0.046875 +vt 0.531034 0.156250 +vt 0.434483 0.750000 +vt 0.455172 0.812500 +vt 0.496552 0.765625 +vt 0.475862 0.750000 +vt 0.496552 0.750000 +vt 0.455172 0.750000 +vt 0.468966 0.750000 +vt 0.475862 0.765625 +vt 0.434483 0.859375 +vt 0.475862 0.812500 +vt 0.496552 0.812500 +vt 0.455172 0.718750 +vt 0.986207 0.609375 +vt 0.979310 0.593750 +vt 0.986207 0.593750 +vt 0.979310 0.531250 +vt 0.986207 0.515625 +vt 0.986207 0.531250 +vt 0.972414 0.593750 +vt 0.979310 0.578125 +vt 0.551724 0.625000 +vt 0.620690 0.609375 +vt 0.620690 0.734375 +vt 0.620690 0.640625 +vt 0.634483 0.640625 +vt 0.020690 0.875000 +vt 0.006897 0.781250 +vt 0.020690 0.781250 +vt 0.662069 0.734375 +vt 0.648276 0.640625 +vt 0.565517 0.640625 +vt 0.551724 0.625000 +vt 0.565517 0.625000 +vt 0.606897 0.390625 +vt 0.551724 0.375000 +vt 0.682759 0.375000 +vt 0.662069 0.375000 +vt 0.620690 0.484375 +vt 0.551724 0.500000 +vt 0.117241 0.906250 +vt 0.075862 0.875000 +vt 0.117241 0.875000 +vt 0.158621 0.125000 +vt 0.117241 0.156250 +vt 0.117241 0.125000 +vt 0.117241 0.906250 +vt 0.158621 0.875000 +vt 0.158621 0.906250 +vt 0.144828 0.250000 +vt 0.131034 0.250000 +vt 0.213793 0.875000 +vt 0.220690 0.781250 +vt 0.220690 0.875000 +vt 0.062069 0.781250 +vt 0.020690 0.875000 +vt 0.144828 0.281250 +vt 0.186207 0.250000 +vt 0.186207 0.281250 +vt 0.213793 0.765625 +vt 0.172414 0.781250 +vt 0.172414 0.750000 +vt 0.131034 0.281250 +vt 0.089655 0.250000 +vt 0.075862 0.906250 +vt 0.020690 0.906250 +vt 0.020690 0.890625 +vt 0.020690 0.765625 +vt 0.020690 0.750000 +vt 0.062069 0.750000 +vt 0.213793 0.890625 +vt 0.565517 0.515625 +vt 0.551724 0.500000 +vt 0.565517 0.500000 +vt 0.539805 0.495450 +vt 0.539959 0.508696 +vt 0.506403 0.692192 +vt 0.539824 0.629444 +vt 0.512254 0.691859 +vt 0.544674 0.484410 +vt 0.551565 0.500009 +vt 0.544695 0.609268 +vt 0.539977 0.616199 +vt 0.489655 0.156250 +vt 0.510345 0.046875 +vt 0.510345 0.156250 +vt 0.510345 0.562500 +vt 0.455172 0.562500 +vt 0.455172 0.546875 +vt 0.620690 0.515625 +vt 0.565517 0.515625 +vt 0.565517 0.750000 +vt 0.551724 0.734375 +vt 0.565517 0.734375 +vt 0.620690 0.515625 +vt 0.565517 0.609375 +vt 0.565517 0.515625 +vt 0.448276 0.515625 +vt 0.455172 0.609375 +vt 0.448276 0.609375 +vt 0.524138 0.609375 +vt 0.510345 0.515625 +vt 0.524138 0.515625 +vt 0.455172 0.578125 +vt 0.455172 0.562500 +vt 0.510345 0.562500 +vt 0.565517 0.625000 +vt 0.551724 0.609375 +vt 0.565517 0.609375 +vt 0.565517 0.500000 +vt 0.551724 0.484375 +vt 0.565517 0.484375 +vt 0.565517 0.390625 +vt 0.551724 0.375000 +vt 0.565517 0.375000 +vt 0.565517 0.484375 +vt 0.551724 0.484375 +vt 0.551724 0.515625 +vt 0.565517 0.609375 +vt 0.551724 0.609375 +vt 0.565517 0.640625 +vt 0.551724 0.640625 +vt 0.565517 0.390625 +vt 0.551724 0.390625 +vt 0.565517 0.734375 +vt 0.551724 0.750000 +vt 0.551724 0.734375 +vt 0.551583 0.624874 +vt 0.510212 0.718578 +vt 0.512238 0.433055 +vt 0.255172 -0.000000 +vt 0.227586 0.125000 +vt 0.227586 -0.000000 +vt 0.227586 0.500000 +vt 0.255172 0.625000 +vt 0.227586 0.625000 +vt 0.255172 0.750000 +vt 0.227586 0.875000 +vt 0.227586 0.750000 +vt 0.227586 0.250000 +vt 0.255172 0.375000 +vt 0.227586 0.375000 +vt 0.255172 0.500000 +vt 0.255172 0.250000 +vt 0.255172 0.125000 +vt 0.227586 1.000000 +vt 0.255172 0.875000 +vt 0.255172 1.000000 +vt 0.185647 0.407982 +vt 0.181809 0.433762 +vt 0.158206 0.423338 +vt 0.227246 0.501121 +vt 0.215680 0.509781 +vt 0.201106 0.462288 +vt 0.226770 0.624909 +vt 0.215543 0.616068 +vt 0.220300 0.563004 +vt 0.185661 0.717018 +vt 0.181941 0.690910 +vt 0.202736 0.659045 +vt 0.131028 0.716313 +vt 0.134829 0.690268 +vt 0.158386 0.701199 +vt 0.089995 0.623885 +vt 0.101155 0.615205 +vt 0.113984 0.658150 +vt 0.089997 0.501305 +vt 0.101178 0.509856 +vt 0.096611 0.562314 +vt 0.130816 0.408077 +vt 0.134644 0.434152 +vt 0.113890 0.466628 +vt 0.117241 0.000640 +vt 0.144545 0.062500 +vt 0.117241 0.124360 +vt 0.282000 0.461238 +vt 0.267164 0.508207 +vt 0.255663 0.499249 +vt 0.324503 0.423194 +vt 0.301337 0.432859 +vt 0.297766 0.407469 +vt 0.368692 0.466561 +vt 0.347882 0.434234 +vt 0.351705 0.408442 +vt 0.386036 0.561123 +vt 0.381418 0.509360 +vt 0.392481 0.500826 +vt 0.368830 0.657546 +vt 0.381587 0.613816 +vt 0.392687 0.622102 +vt 0.324106 0.701882 +vt 0.347834 0.691162 +vt 0.351758 0.717531 +vt 0.279544 0.658120 +vt 0.300333 0.691179 +vt 0.296432 0.717486 +vt 0.262317 0.561201 +vt 0.266830 0.614350 +vt 0.255589 0.622775 +vt 0.606897 0.125000 +vt 0.662069 0.218750 +vt 0.724138 0.218750 +vt 0.551724 1.000000 +vt 0.662069 0.906250 +vt 0.724138 0.906250 +vt 0.737931 0.765625 +vt 0.724138 0.406250 +vt 0.724138 0.750000 +vt 0.696552 0.453125 +vt 0.696552 0.671875 +vt 0.227586 0.781250 +vt 0.441379 0.609375 +vt 0.696552 0.437500 +vt 0.731034 0.437500 +vt 0.420690 0.859375 +vt 0.479310 0.953125 +vt 0.468966 -0.000000 +vt 0.413793 0.812500 +vt 0.489655 0.000000 +vt 0.468966 0.156250 +vt 0.531034 0.046875 +vt 0.455172 0.859375 +vt 0.434483 0.718750 +vt 0.979310 0.609375 +vt 0.979310 0.515625 +vt 0.972414 0.562500 +vt 0.606897 0.734375 +vt 0.006897 0.875000 +vt 0.551724 0.640625 +vt 0.158621 0.156250 +vt 0.117241 0.875000 +vt 0.213793 0.781250 +vt 0.213793 0.750000 +vt 0.089655 0.281250 +vt 0.213793 0.906250 +vt 0.551724 0.515625 +vt 0.551568 0.515616 +vt 0.544680 0.515623 +vt 0.489655 0.046875 +vt 0.455172 0.531250 +vt 0.510345 0.531250 +vt 0.551724 0.750000 +vt 0.620690 0.609375 +vt 0.455172 0.515625 +vt 0.510345 0.609375 +vt 0.510345 0.593750 +vt 0.455172 0.593750 +vt 0.551724 0.625000 +vt 0.551724 0.500000 +vt 0.551724 0.390625 +vt 0.551583 0.609269 +vt 0.544695 0.640480 +vt 0.517133 0.702938 +vt 0.517104 0.422013 +vt 0.106793 0.119651 +vt 0.097935 0.106242 +vt 0.092016 0.086173 +vt 0.089938 0.062500 +vt 0.092016 0.038827 +vt 0.097935 0.018758 +vt 0.106793 0.005349 +vt 0.127690 0.005349 +vt 0.136548 0.018758 +vt 0.142467 0.038827 +vt 0.142467 0.086173 +vt 0.136548 0.106242 +vt 0.127690 0.119651 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.310345 0.000000 +vt 0.296552 0.000000 +vt 0.282759 0.000000 +vt 0.268966 0.000000 +vt 0.365517 0.000000 +vt 0.351724 0.000000 +vt 0.337931 0.000000 +vt 0.324138 0.000000 +vt 0.255172 0.000000 +vt 0.310345 0.093750 +vt 0.317241 0.093750 +vt 0.296552 0.093750 +vt 0.303448 0.093750 +vt 0.282759 0.093750 +vt 0.289655 0.093750 +vt 0.268966 0.093750 +vt 0.275862 0.093750 +vt 0.324138 0.093750 +vt 0.331034 0.093750 +vt 0.337931 0.093750 +vt 0.344828 0.093750 +vt 0.351724 0.093750 +vt 0.358621 0.093750 +vt 0.255172 0.093750 +vt 0.262069 0.093750 +vt 0.296552 0.218750 +vt 0.310345 0.234375 +vt 0.296552 0.234375 +vt 0.296552 0.187500 +vt 0.310345 0.203125 +vt 0.296552 0.203125 +vt 0.310345 0.234375 +vt 0.296552 0.250000 +vt 0.296552 0.234375 +vt 0.310345 0.203125 +vt 0.296552 0.218750 +vt 0.296552 0.203125 +vt 0.296552 0.187500 +vt 0.310345 0.218750 +vt 0.324138 0.234375 +vt 0.310345 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.310345 0.250000 +vt 0.310345 0.234375 +vt 0.296552 0.250000 +vt 0.296552 0.234375 +vt 0.310345 0.203125 +vt 0.296552 0.218750 +vt 0.296552 0.203125 +vt 0.310345 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.234375 +vt 0.296552 0.250000 +vt 0.296552 0.234375 +vt 0.310345 0.203125 +vt 0.296552 0.218750 +vt 0.296552 0.203125 +vt 0.310345 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.250000 +vt 0.310345 0.250000 +vt 0.324138 0.203125 +vt 0.255172 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.218750 +vt 0.255172 0.203125 +vt 0.255172 0.234375 +vt 0.255172 0.218750 +vt 0.255172 0.187500 +vt 0.255172 0.203125 +vt 0.255172 0.218750 +vt 0.255172 0.203125 +vt 0.255172 0.187500 +vt 0.255172 0.187500 +vt 0.310345 0.218750 +vt 0.296552 0.250000 +vt 0.310345 0.250000 +vt 0.324138 0.203125 +vt 0.324138 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.250000 +vt 0.324138 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.203125 +vt 0.296552 0.203125 +vt 0.296552 0.218750 +vt 0.310345 0.234375 +vt 0.296552 0.234375 +vt 0.310345 0.218750 +vt 0.310345 0.250000 +vt 0.296552 0.250000 +vt 0.324138 0.203125 +vt 0.324138 0.218750 +vt 0.324138 0.234375 +vt 0.324138 0.250000 +vt 0.310345 0.187500 +vt 0.296552 0.187500 +vt 0.310345 0.203125 +vt 0.296552 0.203125 +vt 0.296552 0.218750 +vt 0.310345 0.234375 +vt 0.296552 0.234375 +vt 0.310345 0.218750 +vt 0.310345 0.250000 +vt 0.296552 0.250000 +vt 0.324138 0.203125 +vt 0.324138 0.218750 +vt 0.324138 0.250000 +vt 0.324138 0.187500 +vt 0.324138 0.234375 +vt 0.255172 0.203125 +vt 0.255172 0.203125 +vt 0.255172 0.218750 +vt 0.255172 0.234375 +vt 0.255172 0.203125 +vt 0.255172 0.218750 +vt 0.255172 0.250000 +vt 0.255172 0.234375 +vt 0.255172 0.218750 +vt 0.255172 0.234375 +vt 0.255172 0.250000 +vt 0.255172 0.250000 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.179310 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.172414 0.390625 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.179310 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.124138 0.390625 +vt 0.144828 0.375000 +vt 0.144828 0.390625 +vt 0.124138 0.343750 +vt 0.144828 0.359375 +vt 0.124138 0.359375 +vt 0.124138 0.312500 +vt 0.144828 0.328125 +vt 0.124138 0.328125 +vt 0.124138 0.296875 +vt 0.144828 0.312500 +vt 0.124138 0.406250 +vt 0.144828 0.406250 +vt 0.124138 0.375000 +vt 0.144828 0.343750 +vt 0.124138 0.281250 +vt 0.144828 0.296875 +vt 0.158621 0.312500 +vt 0.158621 0.328125 +vt 0.158621 0.359375 +vt 0.158621 0.390625 +vt 0.144828 0.281250 +vt 0.158621 0.296875 +vt 0.158621 0.343750 +vt 0.158621 0.375000 +vt 0.158621 0.406250 +vt 0.172414 0.390625 +vt 0.172414 0.406250 +vt 0.172414 0.296875 +vt 0.172414 0.312500 +vt 0.172414 0.328125 +vt 0.172414 0.359375 +vt 0.158621 0.281250 +vt 0.172414 0.343750 +vt 0.172414 0.375000 +vt 0.186207 0.343750 +vt 0.186207 0.359375 +vt 0.186207 0.375000 +vt 0.186207 0.390625 +vt 0.186207 0.406250 +vt 0.186207 0.312500 +vt 0.186207 0.328125 +vt 0.172414 0.281250 +vt 0.186207 0.296875 +vt 0.193103 -0.000000 +vt 0.186207 -0.000000 +vt 0.151724 -0.000000 +vt 0.144828 -0.000000 +vt 0.158621 -0.000000 +vt 0.172414 -0.000000 +vt 0.165517 -0.000000 +vt 0.179310 -0.000000 +vt 0.193103 0.109375 +vt 0.200000 0.109375 +vt 0.151724 0.109375 +vt 0.158621 0.109375 +vt 0.179310 0.109375 +vt 0.186207 0.109375 +vt 0.165517 0.109375 +vt 0.172414 0.109375 +vt 0.255172 0.218750 +vt 0.296552 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.187500 +vt 0.296552 0.203125 +vt 0.255172 0.203125 +vt 0.296552 0.250000 +vt 0.255172 0.250000 +vt 0.296552 0.218750 +vt 0.310345 0.187500 +vt 0.310345 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.218750 +vt 0.310345 0.234375 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.255172 0.218750 +vt 0.296552 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.187500 +vt 0.296552 0.203125 +vt 0.255172 0.203125 +vt 0.296552 0.250000 +vt 0.255172 0.250000 +vt 0.296552 0.218750 +vt 0.310345 0.187500 +vt 0.310345 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.218750 +vt 0.310345 0.234375 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.255172 0.218750 +vt 0.296552 0.234375 +vt 0.255172 0.234375 +vt 0.255172 0.187500 +vt 0.296552 0.203125 +vt 0.255172 0.203125 +vt 0.296552 0.250000 +vt 0.255172 0.250000 +vt 0.296552 0.218750 +vt 0.310345 0.187500 +vt 0.310345 0.203125 +vt 0.310345 0.250000 +vt 0.310345 0.218750 +vt 0.310345 0.234375 +vt 0.324138 0.234375 +vt 0.324138 0.187500 +vt 0.324138 0.203125 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.310345 0.187500 +vt 0.324138 0.218750 +vt 0.324138 0.187500 +vt 0.324138 0.218750 +vt 0.324138 0.187500 +vt 0.324138 0.250000 +vt 0.324138 0.218750 +vt 0.255172 0.250000 +vt 0.255172 0.250000 +vt 0.255172 0.250000 +vt 0.324138 0.187500 +vt 0.310345 0.187500 +vt 0.255172 0.187500 +vt 0.255172 0.187500 +vt 0.255172 0.187500 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.186207 0.281250 +vt 0.200000 -0.000000 +vt 0.144828 0.109375 +vt 0.296552 0.187500 +vt 0.296552 0.187500 +vt 0.296552 0.187500 +vt 0.958621 0.609375 +vt 0.965517 0.593750 +vt 0.965517 0.609375 +vt 0.958621 0.562500 +vt 0.965517 0.546875 +vt 0.965517 0.562500 +vt 0.986207 0.578125 +vt 0.965517 0.625000 +vt 0.958621 0.625000 +vt 0.958621 0.578125 +vt 0.965517 0.578125 +vt 0.986207 0.562500 +vt 0.958621 0.531250 +vt 0.965517 0.515625 +vt 0.965517 0.531250 +vt 0.958621 0.640625 +vt 0.965517 0.640625 +vt 0.958621 0.593750 +vt 0.979310 0.562500 +vt 0.986207 0.546875 +vt 0.958621 0.546875 +vt 0.979310 0.546875 +vt 0.965517 0.593750 +vt 0.972414 0.609375 +vt 0.965517 0.609375 +vt 0.965517 0.656250 +vt 0.972414 0.640625 +vt 0.972414 0.656250 +vt 0.965517 0.546875 +vt 0.972414 0.531250 +vt 0.972414 0.546875 +vt 0.965517 0.703125 +vt 0.972414 0.687500 +vt 0.972414 0.703125 +vt 0.972414 0.578125 +vt 0.972414 0.593750 +vt 0.965517 0.625000 +vt 0.965517 0.640625 +vt 0.965517 0.515625 +vt 0.965517 0.531250 +vt 0.965517 0.671875 +vt 0.965517 0.687500 +vt 0.965517 0.562500 +vt 0.965517 0.578125 +vt 0.972414 0.625000 +vt 0.972414 0.671875 +vt 0.972414 0.562500 +vt 0.089655 0.375000 +vt 0.075862 0.421875 +vt 0.075862 0.375000 +vt 0.075862 0.328125 +vt 0.089655 0.328125 +vt 0.075862 0.281250 +vt 0.089655 0.281250 +vt 0.075862 0.234375 +vt 0.089655 0.234375 +vt 0.075862 0.187500 +vt 0.089655 0.187500 +vt 0.089655 0.140625 +vt 0.075862 0.140625 +vt 0.089655 0.093750 +vt 0.075862 0.093750 +vt 0.089655 0.046875 +vt 0.075862 0.046875 +vt 0.089655 -0.000000 +vt 0.075862 0.000000 +vt 0.089655 0.750000 +vt 0.075862 0.703125 +vt 0.089655 0.703125 +vt 0.075862 0.656250 +vt 0.089655 0.656250 +vt 0.089655 0.609375 +vt 0.075862 0.609375 +vt 0.075862 0.562500 +vt 0.089655 0.562500 +vt 0.075862 0.515625 +vt 0.089655 0.515625 +vt 0.075862 0.468750 +vt 0.089655 0.468750 +vt 0.089655 0.421875 +vt 0.055172 0.375000 +vt 0.055172 0.328125 +vt 0.055172 -0.000000 +vt 0.055172 0.421875 +vt 0.055172 0.046875 +vt 0.055172 0.468750 +vt 0.055172 0.093750 +vt 0.055172 0.515625 +vt 0.055172 0.140625 +vt 0.055172 0.562500 +vt 0.055172 0.187500 +vt 0.055172 0.609375 +vt 0.055172 0.234375 +vt 0.055172 0.656250 +vt 0.055172 0.281250 +vt 0.075862 0.750000 +vt 0.055172 0.703125 +vt 0.000000 0.125000 +vt 0.000000 0.093750 +vt -0.000000 0.546875 +vt 0.000000 0.515625 +vt -0.000000 0.140625 +vt -0.000000 0.593750 +vt -0.000000 0.562500 +vt 0.000000 0.218750 +vt 0.000000 0.187500 +vt 0.000000 0.609375 +vt -0.000000 0.234375 +vt 0.000000 0.687500 +vt 0.000000 0.656250 +vt -0.000000 0.281250 +vt 0.055172 0.750000 +vt 0.000000 0.703125 +vt -0.000000 0.406250 +vt -0.000000 0.375000 +vt 0.000000 0.328125 +vt 0.000000 0.031250 +vt -0.000000 0.000000 +vt 0.000000 0.421875 +vt -0.000000 0.046875 +vt -0.000000 0.500000 +vt 0.000000 0.468750 +vt 0.393103 0.937500 +vt 0.413793 1.000000 +vt 0.393103 1.000000 +vt 0.393103 0.500000 +vt 0.413793 0.562500 +vt 0.393103 0.562500 +vt 0.393103 0.437500 +vt 0.413793 0.500000 +vt 0.393103 -0.000000 +vt 0.413793 0.062500 +vt 0.393103 0.062500 +vt 0.413793 0.625000 +vt 0.393103 0.625000 +vt 0.413793 0.125000 +vt 0.393103 0.125000 +vt 0.413793 0.687500 +vt 0.393103 0.687500 +vt 0.413793 0.187500 +vt 0.393103 0.187500 +vt 0.413793 0.750000 +vt 0.393103 0.750000 +vt 0.413793 0.250000 +vt 0.393103 0.250000 +vt 0.413793 0.812500 +vt 0.393103 0.812500 +vt 0.413793 0.312500 +vt 0.393103 0.312500 +vt 0.413793 0.875000 +vt 0.393103 0.875000 +vt 0.413793 0.375000 +vt 0.393103 0.375000 +vt 0.413793 0.937500 +vt 0.413793 0.437500 +vt 0.958621 0.515625 +vt 0.972414 0.515625 +vt -0.000000 0.171875 +vt 0.000000 0.640625 +vt -0.000000 0.265625 +vt -0.000000 0.312500 +vt -0.000000 0.734375 +vt 0.000000 0.359375 +vt -0.000000 0.453125 +vt -0.000000 0.078125 +vt 0.413793 -0.000000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.1617 0.3904 0.9063 +vn 0.1617 0.3905 0.9063 +vn 0.1752 0.8806 0.4403 +vn 0.0859 0.4318 -0.8979 +vn 0.9845 -0.1567 -0.0783 +vn -0.0859 -0.4318 0.8978 +vn -0.9695 0.2320 -0.0783 +vn 1.0000 0.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.9239 -0.3827 +vn 0.0000 -0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.0000 0.3827 -0.9239 +vn 0.7071 -0.7071 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn -0.3162 0.3162 -0.8944 +vn 0.0000 0.7934 0.6088 +vn 0.0000 0.1305 -0.9914 +vn 0.0000 0.5000 0.8660 +vn 0.0000 0.5000 -0.8660 +vn 0.0000 -0.5000 -0.8660 +vn 0.0000 -0.5000 0.8660 +vn 0.6547 0.3780 -0.6547 +vn 0.6547 -0.3780 -0.6547 +vn 0.6547 -0.3780 0.6547 +vn 0.6547 0.7559 0.0000 +vn 0.6547 -0.7559 0.0000 +vn 0.6547 0.3780 0.6547 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0000 -0.9285 0.3714 +vn 0.0000 0.9285 -0.3714 +vn 0.0000 -0.9900 -0.1407 +vn 0.0000 0.9900 0.1407 +vn -0.1617 -0.3904 0.9063 +vn -0.1617 -0.3905 0.9063 +vn 0.3904 -0.1617 0.9063 +vn 0.3905 -0.1617 0.9063 +vn -0.3904 0.1617 0.9063 +vn -0.3905 0.1617 0.9063 +vn 0.3905 0.1617 0.9063 +vn 0.3904 0.1617 0.9063 +vn 0.3905 0.1618 0.9063 +vn -0.3904 -0.1617 0.9063 +vn -0.3905 -0.1617 0.9063 +vn 0.1617 -0.3905 0.9063 +vn 0.1617 -0.3904 0.9063 +vn 0.1618 -0.3905 0.9063 +vn -0.1617 0.3904 0.9063 +vn -0.1617 0.3905 0.9063 +vn -0.1752 -0.8806 0.4403 +vn -0.0859 -0.4318 -0.8979 +vn -0.9845 0.1567 -0.0783 +vn 0.0859 0.4318 0.8978 +vn 0.9695 -0.2320 -0.0783 +vn 0.8806 -0.1752 0.4403 +vn 0.4318 -0.0859 -0.8979 +vn -0.1567 -0.9845 -0.0783 +vn -0.4318 0.0859 0.8978 +vn 0.2320 0.9695 -0.0783 +vn -0.8806 0.1752 0.4403 +vn -0.4318 0.0859 -0.8979 +vn 0.1567 0.9845 -0.0783 +vn 0.4318 -0.0859 0.8978 +vn -0.2320 -0.9695 -0.0783 +vn 0.7465 0.4988 0.4403 +vn 0.3661 0.2446 -0.8979 +vn 0.5854 -0.8070 -0.0783 +vn -0.3661 -0.2446 0.8978 +vn -0.5215 0.8496 -0.0783 +vn -0.7465 -0.4988 0.4403 +vn -0.3661 -0.2446 -0.8979 +vn -0.5854 0.8070 -0.0783 +vn 0.3661 0.2446 0.8978 +vn 0.5215 -0.8496 -0.0783 +vn 0.4988 -0.7465 0.4403 +vn 0.2446 -0.3661 -0.8978 +vn -0.8070 -0.5854 -0.0783 +vn -0.2446 0.3661 0.8978 +vn 0.8497 0.5215 -0.0783 +vn -0.4988 0.7465 0.4403 +vn -0.2446 0.3661 -0.8979 +vn 0.8070 0.5854 -0.0783 +vn 0.2446 -0.3661 0.8978 +vn -0.8496 -0.5215 -0.0783 +vn 0.4988 0.7465 0.4403 +vn 0.2446 0.3661 -0.8979 +vn 0.8496 -0.5215 -0.0783 +vn -0.2446 -0.3661 0.8978 +vn -0.8069 0.5854 -0.0783 +vn -0.4988 -0.7465 0.4403 +vn -0.2446 -0.3661 -0.8979 +vn -0.8496 0.5215 -0.0783 +vn 0.2446 0.3661 0.8978 +vn 0.8069 -0.5854 -0.0783 +vn 0.7465 -0.4988 0.4403 +vn 0.3661 -0.2446 -0.8978 +vn -0.5215 -0.8496 -0.0783 +vn -0.3661 0.2446 0.8978 +vn 0.5854 0.8069 -0.0783 +vn -0.7465 0.4988 0.4403 +vn -0.3661 0.2446 -0.8978 +vn 0.5215 0.8496 -0.0783 +vn 0.3661 -0.2446 0.8978 +vn -0.5854 -0.8069 -0.0783 +vn 0.8806 0.1752 0.4403 +vn 0.4318 0.0859 -0.8979 +vn 0.2320 -0.9696 -0.0783 +vn -0.4318 -0.0859 0.8978 +vn -0.1567 0.9845 -0.0783 +vn -0.8806 -0.1752 0.4403 +vn -0.4318 -0.0859 -0.8979 +vn -0.2320 0.9696 -0.0783 +vn 0.4318 0.0859 0.8978 +vn 0.1567 -0.9845 -0.0783 +vn 0.1752 -0.8806 0.4403 +vn 0.0859 -0.4318 -0.8979 +vn -0.9696 -0.2320 -0.0783 +vn -0.0859 0.4318 0.8978 +vn 0.9845 0.1567 -0.0783 +vn -0.1752 0.8806 0.4403 +vn -0.0859 0.4318 -0.8979 +vn 0.9696 0.2320 -0.0783 +vn 0.0859 -0.4318 0.8978 +vn -0.9845 -0.1567 -0.0783 +vn 0.0859 0.4318 -0.8978 +vn -0.0859 -0.4318 -0.8978 +vn 0.4318 -0.0859 -0.8978 +vn -0.4318 0.0859 -0.8978 +vn 0.3661 0.2446 -0.8978 +vn -0.3661 -0.2446 -0.8978 +vn -0.2446 0.3661 -0.8978 +vn 0.2446 0.3661 -0.8978 +vn -0.8070 0.5854 -0.0783 +vn 0.8070 -0.5854 -0.0783 +vn 0.5854 0.8070 -0.0783 +vn -0.5854 -0.8070 -0.0783 +vn 0.4318 0.0859 0.8979 +vn 0.0859 -0.4318 -0.8978 +vn -0.7071 -0.7071 0.0057 +vn 0.0000 0.9487 -0.3162 +vn 0.0000 0.4472 -0.8944 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 0.9063 0.4226 +vn -0.7071 0.6409 0.2988 +vn 0.7071 0.6409 0.2988 +vn -0.5000 -0.7849 -0.3660 +vn -0.0000 -0.4226 0.9063 +vn -0.2357 0.2357 0.9428 +vn 0.2357 0.2357 0.9428 +vn -0.2357 -0.2357 -0.9428 +vn -0.2357 -0.2357 0.9428 +vn -0.7082 -0.7060 -0.0004 +vn -0.7085 -0.7057 0.0000 +vn 0.7311 -0.6303 -0.2611 +vn 0.9973 0.0609 0.0399 +vn 0.7430 -0.5190 -0.4226 +vn 0.6721 0.5735 0.4683 +vn 0.6333 0.7150 0.2962 +vn -0.9947 0.0948 0.0393 +vn -0.6721 0.5735 0.4683 +vn -0.6333 0.7150 0.2962 +vn -0.7311 -0.6303 -0.2611 +vn -0.9973 0.0609 0.0399 +vn 0.0000 -0.7779 -0.6284 +vn 0.9947 0.0948 0.0393 +vn 0.0000 0.7690 0.6392 +vn -0.7430 -0.5190 -0.4226 +vn -0.9989 0.0183 0.0441 +vn -0.6840 0.2791 0.6739 +vn 0.6840 0.2791 0.6739 +vn 0.7317 -0.2608 -0.6297 +vn -0.7317 -0.2608 -0.6297 +vn 0.0000 0.3827 0.9239 +vn 0.9989 0.0183 0.0441 +vn 0.7317 0.0000 -0.6816 +vn -0.7317 0.0000 -0.6816 +vn -0.9989 0.0000 0.0477 +vn -0.6841 0.0000 0.7294 +vn 0.6840 -0.0000 0.7294 +vn 0.9989 0.0000 0.0477 +vn 0.0000 -0.1951 0.9808 +vn 0.6770 -0.1436 0.7219 +vn 0.9988 -0.0095 0.0477 +vn 0.7251 0.1344 -0.6754 +vn 0.0000 0.1951 -0.9808 +vn -0.9988 -0.0095 0.0477 +vn -0.6770 -0.1436 0.7219 +vn -0.7251 0.1344 -0.6754 +vn 0.8985 0.3215 -0.2988 +vn 0.9239 -0.3827 -0.0000 +vn -0.4080 0.8627 -0.2988 +vn 0.3468 0.8373 -0.4226 +vn -0.9239 0.3827 0.0000 +vn -0.8985 -0.3215 0.2988 +vn 0.4080 -0.8627 0.2988 +vn -0.3468 -0.8373 0.4226 +vn -0.4080 0.8627 -0.2989 +vn 0.3827 0.9239 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.9239 -0.3827 0.0000 +vn -0.3827 0.9239 0.0000 +vn 0.6947 0.6947 0.1866 +vn 0.8431 -0.0945 0.5294 +vn 0.9891 0.0283 0.1448 +vn -0.3812 0.9204 0.0866 +vn -0.0945 0.8431 0.5294 +vn 0.0283 0.9891 0.1448 +vn 0.0945 0.8431 0.5294 +vn 0.3812 0.9204 0.0866 +vn -0.0283 0.9891 0.1448 +vn -0.8431 -0.0945 0.5294 +vn -0.6947 0.6947 0.1866 +vn -0.9891 0.0283 0.1448 +vn -0.9204 -0.3812 0.0866 +vn -0.5000 0.5000 0.7071 +vn 0.2384 0.6572 0.7150 +vn -0.8446 -0.4619 0.2706 +vn -0.6572 -0.2384 0.7150 +vn 0.5345 0.7559 0.3780 +vn 0.4619 0.8446 0.2706 +vn 0.0945 0.8431 0.5293 +vn -0.8431 -0.0945 0.5293 +vn -0.9204 -0.3813 0.0866 +vn -0.7559 -0.5345 0.3780 +vn 0.5000 0.5000 0.7071 +vn 0.9204 -0.3812 0.0866 +vn 0.8446 -0.4619 0.2706 +vn -0.2384 0.6572 0.7150 +vn 0.2706 0.2706 0.9239 +vn 0.6572 -0.2384 0.7150 +vn 0.7559 -0.5345 0.3780 +vn -0.5345 0.7559 0.3780 +vn -0.0945 0.8431 0.5293 +vn 0.8431 -0.0945 0.5293 +vn 0.9204 -0.3813 0.0866 +vn -0.4619 0.8446 0.2706 +vn -0.7311 0.6303 -0.2611 +vn -0.9973 -0.0609 0.0399 +vn -0.7430 0.5190 -0.4226 +vn -0.6721 -0.5735 0.4683 +vn -0.6333 -0.7150 0.2962 +vn 0.9947 -0.0948 0.0393 +vn 0.6721 -0.5735 0.4683 +vn 0.6333 -0.7150 0.2962 +vn 0.7311 0.6303 -0.2611 +vn 0.9973 -0.0609 0.0399 +vn -0.0000 0.7779 -0.6284 +vn -0.9947 -0.0948 0.0393 +vn -0.0000 -0.7690 0.6392 +vn 0.7430 0.5190 -0.4226 +vn 0.9989 -0.0183 0.0441 +vn 0.6840 -0.2791 0.6739 +vn -0.6840 -0.2791 0.6739 +vn -0.7317 0.2608 -0.6297 +vn 0.7317 0.2608 -0.6297 +vn -0.9989 -0.0183 0.0441 +vn 0.6841 -0.0000 0.7294 +vn -0.6840 -0.0000 0.7294 +vn -0.0000 0.1951 0.9808 +vn -0.6770 0.1436 0.7219 +vn -0.9988 0.0095 0.0477 +vn -0.7251 -0.1344 -0.6754 +vn -0.0000 -0.1951 -0.9808 +vn 0.9988 0.0095 0.0477 +vn 0.6770 0.1436 0.7219 +vn 0.7251 -0.1344 -0.6754 +vn -0.8985 -0.3215 -0.2988 +vn 0.4080 -0.8627 -0.2988 +vn -0.3468 -0.8373 -0.4226 +vn 0.8985 0.3215 0.2988 +vn -0.4080 0.8627 0.2988 +vn 0.3468 0.8373 0.4226 +vn 0.4080 -0.8627 -0.2989 +vn -0.6303 -0.7311 -0.2611 +vn 0.0609 -0.9973 0.0399 +vn -0.5190 -0.7430 -0.4226 +vn 0.9239 -0.0000 0.3827 +vn 0.5735 -0.6721 0.4683 +vn 0.7150 -0.6333 0.2962 +vn 0.0948 0.9947 0.0393 +vn 0.5735 0.6721 0.4683 +vn 0.7150 0.6333 0.2962 +vn -0.6303 0.7311 -0.2611 +vn 0.0609 0.9973 0.0399 +vn -0.9239 -0.0000 -0.3827 +vn -0.7779 -0.0000 -0.6284 +vn 0.0948 -0.9947 0.0393 +vn 0.7690 -0.0000 0.6392 +vn -0.5190 0.7430 -0.4226 +vn 0.0183 0.9989 0.0441 +vn 0.2791 0.6841 0.6739 +vn 0.2791 -0.6840 0.6739 +vn -0.2608 -0.7317 -0.6297 +vn -0.2608 0.7317 -0.6297 +vn 0.3827 -0.0000 0.9239 +vn 0.0183 -0.9989 0.0441 +vn -0.3827 -0.0000 -0.9239 +vn 0.0000 -0.7317 -0.6816 +vn 0.0000 0.7317 -0.6816 +vn 0.0000 0.9989 0.0477 +vn 0.0000 0.6841 0.7294 +vn 0.0000 -0.6840 0.7294 +vn 0.0000 -0.9989 0.0477 +vn -0.1951 -0.0000 0.9808 +vn -0.1436 -0.6770 0.7219 +vn -0.0095 -0.9988 0.0477 +vn 0.1344 -0.7251 -0.6754 +vn 0.1951 -0.0000 -0.9808 +vn -0.0095 0.9988 0.0477 +vn -0.1436 0.6770 0.7219 +vn 0.1344 0.7251 -0.6754 +vn 0.3215 -0.8985 -0.2988 +vn 0.8627 0.4080 -0.2988 +vn 0.8373 -0.3468 -0.4226 +vn -0.3215 0.8985 0.2988 +vn -0.8627 -0.4080 0.2988 +vn -0.8373 0.3468 0.4226 +vn 0.8627 0.4080 -0.2989 +vn -0.3215 0.8985 0.2989 +vn 0.6303 0.7311 -0.2611 +vn -0.0609 0.9973 0.0399 +vn 0.5190 0.7430 -0.4226 +vn -0.9239 0.0000 0.3827 +vn -0.5735 0.6721 0.4683 +vn -0.7150 0.6333 0.2962 +vn -0.0948 -0.9947 0.0393 +vn -0.5735 -0.6721 0.4683 +vn -0.7150 -0.6333 0.2962 +vn 0.6303 -0.7311 -0.2611 +vn -0.0609 -0.9973 0.0399 +vn 0.9239 0.0000 -0.3827 +vn 0.7779 0.0000 -0.6284 +vn -0.0948 0.9947 0.0393 +vn -0.7690 0.0000 0.6392 +vn 0.5190 -0.7430 -0.4226 +vn -0.0183 -0.9989 0.0441 +vn -0.2791 -0.6841 0.6739 +vn -0.2791 0.6840 0.6739 +vn 0.2608 0.7317 -0.6297 +vn 0.2608 -0.7317 -0.6297 +vn -0.3827 0.0000 0.9239 +vn -0.0183 0.9989 0.0441 +vn 0.3827 0.0000 -0.9239 +vn -0.0000 -0.6841 0.7294 +vn -0.0000 0.6840 0.7294 +vn 0.1951 0.0000 0.9808 +vn 0.1436 0.6770 0.7219 +vn 0.0095 0.9988 0.0477 +vn -0.1344 0.7251 -0.6754 +vn -0.1951 0.0000 -0.9808 +vn 0.0095 -0.9988 0.0477 +vn 0.1436 -0.6770 0.7219 +vn -0.1344 -0.7251 -0.6754 +vn -0.3215 0.8985 -0.2988 +vn -0.8627 -0.4080 -0.2988 +vn -0.8373 0.3468 -0.4226 +vn 0.3215 -0.8985 0.2988 +vn 0.8373 -0.3468 0.4226 +vn 0.8627 0.4080 0.2988 +vn -0.8627 -0.4080 -0.2989 +vn 0.3215 -0.8985 0.2989 +vn 0.0712 -0.9627 -0.2611 +vn 0.7483 -0.6622 0.0399 +vn 0.1584 -0.8924 -0.4226 +vn 0.6533 0.6533 0.3827 +vn 0.8808 -0.0697 0.4683 +vn 0.9534 0.0578 0.2962 +vn -0.6364 0.7704 0.0393 +vn -0.0697 0.8808 0.4683 +vn 0.0578 0.9534 0.2962 +vn -0.9627 0.0713 -0.2611 +vn -0.6622 0.7483 0.0399 +vn -0.6533 -0.6533 -0.3827 +vn -0.5501 -0.5501 -0.6284 +vn 0.7704 -0.6363 0.0393 +vn 0.5438 0.5438 0.6392 +vn -0.8924 0.1584 -0.4226 +vn -0.6934 0.7192 0.0441 +vn -0.2863 0.6811 0.6739 +vn 0.6811 -0.2863 0.6739 +vn 0.3330 -0.7018 -0.6297 +vn -0.7018 0.3330 -0.6297 +vn 0.7192 -0.6934 0.0441 +vn -0.2706 -0.2706 -0.9239 +vn 0.5174 -0.5174 -0.6816 +vn -0.5174 0.5174 -0.6816 +vn -0.7063 0.7063 0.0477 +vn -0.4837 0.4837 0.7294 +vn 0.4837 -0.4837 0.7294 +vn 0.7063 -0.7063 0.0477 +vn -0.1379 -0.1379 0.9808 +vn 0.3772 -0.5802 0.7219 +vn 0.6996 -0.7130 0.0477 +vn 0.6077 -0.4177 -0.6754 +vn 0.1379 0.1380 -0.9808 +vn -0.7130 0.6996 0.0477 +vn -0.5802 0.3772 0.7219 +vn -0.4177 0.6077 -0.6754 +vn 0.8627 -0.4080 -0.2988 +vn 0.3215 0.8985 -0.2988 +vn 0.8373 0.3468 -0.4226 +vn -0.8627 0.4080 0.2988 +vn -0.3215 -0.8985 0.2988 +vn -0.8373 -0.3468 0.4226 +vn -0.8627 0.4080 0.2989 +vn 0.3215 0.8985 -0.2989 +vn -0.0712 0.9627 -0.2611 +vn -0.7483 0.6622 0.0399 +vn -0.1584 0.8924 -0.4226 +vn -0.6533 -0.6533 0.3827 +vn -0.8808 0.0697 0.4683 +vn -0.9534 -0.0578 0.2962 +vn 0.6364 -0.7704 0.0393 +vn 0.0697 -0.8808 0.4683 +vn -0.0578 -0.9534 0.2962 +vn 0.9627 -0.0712 -0.2611 +vn 0.6622 -0.7483 0.0399 +vn 0.6533 0.6533 -0.3827 +vn 0.5501 0.5501 -0.6284 +vn -0.7704 0.6363 0.0393 +vn -0.5438 -0.5438 0.6392 +vn 0.8924 -0.1584 -0.4226 +vn 0.6934 -0.7192 0.0441 +vn 0.2863 -0.6811 0.6739 +vn -0.6811 0.2863 0.6739 +vn -0.3330 0.7018 -0.6297 +vn 0.7018 -0.3330 -0.6297 +vn -0.2706 -0.2706 0.9239 +vn -0.7192 0.6934 0.0441 +vn 0.2706 0.2706 -0.9239 +vn 0.1379 0.1379 0.9808 +vn -0.3772 0.5802 0.7219 +vn -0.6996 0.7130 0.0477 +vn -0.6077 0.4177 -0.6754 +vn -0.1379 -0.1380 -0.9808 +vn 0.7130 -0.6996 0.0477 +vn 0.5802 -0.3772 0.7219 +vn 0.4177 -0.6077 -0.6754 +vn -0.8627 0.4080 -0.2988 +vn -0.3215 -0.8985 -0.2988 +vn -0.8373 -0.3468 -0.4226 +vn 0.8627 -0.4080 0.2988 +vn 0.3215 0.8985 0.2988 +vn 0.8373 0.3468 0.4226 +vn 0.8627 -0.4080 0.2989 +vn -0.9627 -0.0712 -0.2611 +vn -0.6622 -0.7483 0.0399 +vn -0.8924 -0.1584 -0.4226 +vn 0.6533 -0.6533 0.3827 +vn -0.0697 -0.8808 0.4683 +vn 0.0578 -0.9534 0.2962 +vn 0.7704 0.6364 0.0393 +vn 0.8808 0.0697 0.4683 +vn 0.9534 -0.0578 0.2962 +vn 0.0713 0.9627 -0.2611 +vn 0.7483 0.6622 0.0399 +vn -0.6533 0.6533 -0.3827 +vn -0.5501 0.5501 -0.6284 +vn -0.6363 -0.7704 0.0393 +vn 0.5438 -0.5438 0.6392 +vn 0.1584 0.8924 -0.4226 +vn 0.7192 0.6934 0.0441 +vn 0.6811 0.2863 0.6739 +vn -0.2863 -0.6811 0.6739 +vn -0.7018 -0.3330 -0.6297 +vn 0.3330 0.7018 -0.6297 +vn 0.2706 -0.2706 0.9239 +vn -0.6934 -0.7192 0.0441 +vn -0.2706 0.2706 -0.9239 +vn -0.5174 -0.5174 -0.6816 +vn 0.5174 0.5174 -0.6816 +vn 0.7063 0.7063 0.0477 +vn 0.4837 0.4837 0.7294 +vn -0.4837 -0.4837 0.7294 +vn -0.7063 -0.7063 0.0477 +vn -0.1379 0.1379 0.9808 +vn -0.5802 -0.3772 0.7219 +vn -0.7130 -0.6996 0.0477 +vn -0.4177 -0.6077 -0.6754 +vn 0.1379 -0.1380 -0.9808 +vn 0.6996 0.7130 0.0477 +vn 0.3772 0.5802 0.7219 +vn 0.6077 0.4177 -0.6754 +vn -0.4080 -0.8627 -0.2988 +vn 0.8985 -0.3215 -0.2988 +vn 0.3468 -0.8373 -0.4226 +vn 0.4080 0.8627 0.2988 +vn -0.8985 0.3215 0.2988 +vn -0.3468 0.8373 0.4226 +vn 0.4081 0.8627 0.2989 +vn 0.9627 0.0712 -0.2611 +vn 0.6622 0.7483 0.0399 +vn 0.8924 0.1584 -0.4226 +vn -0.6533 0.6533 0.3827 +vn 0.0697 0.8808 0.4683 +vn -0.0578 0.9534 0.2962 +vn -0.7704 -0.6364 0.0393 +vn -0.8808 -0.0697 0.4683 +vn -0.9534 0.0578 0.2962 +vn -0.0713 -0.9627 -0.2611 +vn -0.7483 -0.6622 0.0399 +vn 0.6533 -0.6533 -0.3827 +vn 0.5501 -0.5501 -0.6284 +vn 0.6363 0.7704 0.0393 +vn -0.5438 0.5438 0.6392 +vn -0.1584 -0.8924 -0.4226 +vn -0.7192 -0.6934 0.0441 +vn -0.6811 -0.2863 0.6739 +vn 0.2863 0.6811 0.6739 +vn 0.7018 0.3330 -0.6297 +vn -0.3330 -0.7018 -0.6297 +vn -0.2706 0.2706 0.9239 +vn 0.6934 0.7192 0.0441 +vn 0.2706 -0.2706 -0.9239 +vn 0.1379 -0.1379 0.9808 +vn 0.5802 0.3772 0.7219 +vn 0.7130 0.6996 0.0477 +vn 0.4177 0.6077 -0.6754 +vn -0.1379 0.1380 -0.9808 +vn -0.6996 -0.7130 0.0477 +vn -0.3772 -0.5802 0.7219 +vn -0.6077 -0.4177 -0.6754 +vn 0.4080 0.8627 -0.2988 +vn -0.8985 0.3215 -0.2988 +vn -0.3468 0.8373 -0.4226 +vn -0.4080 -0.8627 0.2988 +vn 0.3468 -0.8373 0.4226 +vn 0.8985 -0.3215 0.2988 +vn -0.4080 -0.8627 0.2989 +vn 0.4080 0.8627 -0.2989 +vn -0.8985 0.3215 -0.2989 +vn 0.6794 0.7194 0.1448 +vn -0.6794 0.7194 0.1448 +vn 0.9204 0.3812 0.0866 +vn 0.0000 0.9824 0.1866 +vn -0.9239 0.2706 0.2706 +vn -0.6630 0.5294 0.5294 +vn 0.9239 0.2706 0.2706 +vn 0.6630 0.5294 0.5294 +vn 0.6333 0.2962 0.7150 +vn -0.9125 0.1566 0.3780 +vn -0.6333 0.2962 0.7150 +vn 0.9125 0.1566 0.3780 +vn -0.9204 0.3812 0.0866 +vn 0.0000 -0.9063 -0.4226 +vn -0.8660 0.4532 0.2113 +vn 0.2588 0.8754 0.4082 +vn 0.5000 0.7849 0.3660 +vn 0.5000 -0.7849 -0.3660 +vn -0.8660 -0.4532 -0.2113 +vn 0.8660 0.4532 0.2113 +vn -0.5000 0.7849 0.3660 +vn -0.2588 0.8754 0.4082 +vn 0.7071 -0.6409 -0.2988 +vn 0.9659 -0.2346 -0.1094 +vn 0.8660 -0.4532 -0.2113 +vn 0.0000 -0.8944 0.4472 +vn 0.3423 -0.8263 0.4472 +vn -0.3423 -0.8263 0.4472 +vn -0.6325 -0.6325 0.4472 +vn -0.8263 -0.3423 0.4472 +vn -0.8944 -0.0000 0.4472 +vn -0.8263 0.3423 0.4472 +vn -0.6325 0.6325 0.4472 +vn -0.3423 0.8263 0.4472 +vn 0.0000 0.8944 0.4472 +vn 0.3423 0.8263 0.4472 +vn 0.6325 0.6325 0.4472 +vn 0.8263 0.3423 0.4472 +vn 0.8944 0.0000 0.4472 +vn 0.8263 -0.3423 0.4472 +vn 0.6325 -0.6325 0.4472 +vn -0.3162 0.3162 0.8944 +vn -0.4132 0.1711 0.8944 +vn 0.4132 -0.1711 0.8944 +vn 0.4472 -0.0000 0.8944 +vn -0.4472 -0.0000 0.8944 +vn 0.4132 0.1711 0.8944 +vn -0.4132 -0.1711 0.8944 +vn 0.3162 0.3162 0.8944 +vn -0.3162 -0.3162 0.8944 +vn 0.1711 0.4132 0.8944 +vn -0.1711 -0.4132 0.8944 +vn -0.0000 0.4472 0.8944 +vn 0.0000 -0.4472 0.8944 +vn 0.1711 -0.4132 0.8944 +vn -0.1711 0.4132 0.8944 +vn 0.3162 -0.3162 0.8944 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 5/5/1 6/6/1 +f 7/7/1 8/8/1 9/9/1 +f 10/10/1 11/11/1 12/12/1 +f 13/13/1 14/14/1 15/15/1 +f 9/9/1 12/12/1 5/5/1 +f 16/16/1 1/1/1 13/13/1 +f 9/17/2 17/18/2 7/19/2 +f 5/20/3 18/21/3 9/22/3 +f 16/23/4 19/24/4 2/25/4 +f 2/26/3 20/27/3 6/28/3 +f 21/29/1 22/30/1 23/31/1 +f 24/32/1 18/21/1 25/33/1 +f 19/24/1 26/34/1 20/27/1 +f 27/35/1 28/36/1 29/37/1 +f 8/38/3 23/31/3 10/39/3 +f 30/40/4 21/29/4 8/41/4 +f 31/42/5 32/43/5 30/44/5 +f 6/45/2 26/34/2 4/46/2 +f 7/47/5 24/32/5 33/48/5 +f 33/49/4 25/33/4 5/50/4 +f 4/51/5 34/52/5 16/53/5 +f 10/54/2 22/30/2 31/55/2 +f 1/56/5 27/35/5 35/57/5 +f 35/58/4 29/37/4 14/59/4 +f 14/60/3 28/36/3 3/61/3 +f 3/62/2 36/63/2 1/64/2 +f 37/65/6 38/66/6 39/67/6 +f 40/68/6 41/69/6 42/70/6 +f 43/71/6 44/72/6 45/73/6 +f 46/74/6 47/75/6 44/72/6 +f 48/76/7 39/67/7 49/77/7 +f 50/78/6 41/69/6 38/66/6 +f 43/71/6 51/79/6 40/68/6 +f 52/80/6 49/81/6 47/75/6 +f 53/82/6 54/83/6 55/84/6 +f 56/85/6 57/86/6 58/87/6 +f 56/85/6 59/88/6 60/89/6 +f 61/90/7 59/88/7 62/91/7 +f 63/92/6 64/93/6 61/94/6 +f 65/95/7 66/96/7 63/92/7 +f 65/95/7 67/97/7 68/98/7 +f 69/99/6 70/100/6 67/97/6 +f 71/101/7 57/86/7 70/100/7 +f 72/102/8 73/103/8 74/104/8 +f 75/105/9 73/103/9 76/106/9 +f 77/107/10 76/106/10 72/102/10 +f 77/108/11 74/104/11 78/109/11 +f 78/110/12 73/103/12 79/111/12 +f 80/112/3 81/113/3 82/114/3 +f 83/115/3 84/116/3 85/117/3 +f 82/114/3 86/118/3 87/119/3 +f 88/120/3 86/121/3 89/122/3 +f 88/120/3 90/123/3 91/124/3 +f 91/125/3 92/126/3 93/127/3 +f 93/127/3 94/128/3 95/129/3 +f 96/130/3 94/131/3 97/132/3 +f 96/130/3 98/133/3 80/112/3 +f 99/134/3 100/135/3 101/136/3 +f 102/137/3 103/138/3 99/139/3 +f 104/140/3 102/141/3 105/142/3 +f 106/143/3 105/144/3 107/145/3 +f 108/146/3 107/147/3 109/148/3 +f 110/149/3 108/150/3 109/151/3 +f 111/152/3 112/153/3 110/154/3 +f 101/155/3 113/156/3 111/157/3 +f 114/158/1 115/159/1 116/160/1 +f 13/13/3 117/161/3 11/11/3 +f 15/15/2 118/162/2 13/13/2 +f 12/12/5 119/163/5 15/15/5 +f 11/11/4 120/164/4 12/12/4 +f 121/165/13 122/166/13 123/167/13 +f 123/168/14 124/169/14 114/170/14 +f 122/171/15 125/172/15 115/173/15 +f 126/174/16 127/175/16 128/176/16 +f 129/177/17 115/173/17 124/169/17 +f 130/178/18 116/179/18 125/172/18 +f 131/180/19 128/176/19 132/181/19 +f 133/182/20 114/170/20 127/175/20 +f 134/183/3 135/184/3 136/185/3 +f 137/186/5 138/187/5 139/188/5 +f 134/189/21 140/190/21 141/191/21 +f 135/184/22 139/192/22 136/193/22 +f 141/191/23 137/186/23 135/184/23 +f 136/194/24 138/195/24 134/189/24 +f 142/196/3 143/197/3 144/198/3 +f 145/199/5 146/200/5 147/201/5 +f 142/202/22 148/203/22 149/204/22 +f 143/197/21 147/205/21 144/206/21 +f 149/204/24 145/199/24 143/197/24 +f 144/206/23 146/207/23 142/208/23 +f 150/209/3 151/210/3 152/211/3 +f 153/212/5 154/213/5 155/214/5 +f 156/215/24 154/213/24 151/210/24 +f 152/211/23 153/216/23 150/217/23 +f 151/210/21 157/218/21 152/211/21 +f 150/219/22 155/220/22 156/215/22 +f 158/221/3 159/222/3 160/223/3 +f 161/224/5 162/225/5 163/226/5 +f 164/227/23 162/225/23 159/222/23 +f 160/223/24 161/228/24 158/229/24 +f 159/222/22 165/230/22 160/223/22 +f 158/229/21 163/231/21 164/232/21 +f 166/233/3 167/234/3 168/235/3 +f 169/236/25 170/237/25 171/238/25 +f 166/239/21 172/240/21 173/241/21 +f 167/234/22 171/238/22 168/242/22 +f 173/241/23 169/236/23 167/234/23 +f 166/239/24 171/243/24 170/244/24 +f 174/245/26 175/246/26 176/247/26 +f 177/248/13 178/249/13 179/250/13 +f 178/251/16 180/252/16 175/246/16 +f 181/253/27 182/254/27 180/252/27 +f 176/255/1 175/256/1 180/257/1 +f 183/258/2 184/259/2 185/260/2 +f 183/258/13 186/261/13 187/262/13 +f 184/259/1 188/263/1 185/260/1 +f 189/264/5 190/265/5 191/266/5 +f 192/267/13 193/268/13 194/269/13 +f 195/270/1 191/266/1 196/271/1 +f 194/272/4 189/264/4 195/273/4 +f 196/274/2 190/265/2 192/275/2 +f 197/276/2 198/277/2 199/278/2 +f 200/279/28 201/280/28 202/281/28 +f 203/282/29 204/283/29 205/284/29 +f 206/285/30 205/284/30 198/277/30 +f 207/286/31 199/287/31 201/280/31 +f 208/288/4 202/281/4 204/283/4 +f 199/289/13 198/290/13 205/291/13 +f 209/292/4 210/293/4 211/294/4 +f 212/295/2 213/296/2 214/297/2 +f 215/298/28 216/299/28 209/300/28 +f 211/301/29 217/302/29 218/303/29 +f 218/304/30 219/305/30 212/306/30 +f 214/307/31 220/308/31 215/309/31 +f 219/310/1 221/311/1 213/296/1 +f 216/299/1 222/312/1 223/313/1 +f 210/314/1 224/315/1 217/302/1 +f 219/305/1 224/315/1 225/316/1 +f 213/317/1 222/312/1 220/308/1 +f 216/318/1 226/319/1 210/293/1 +f 224/315/30 227/320/30 225/316/30 +f 221/321/31 228/322/31 222/312/31 +f 223/313/4 229/323/4 226/319/4 +f 225/316/2 230/324/2 221/311/2 +f 222/312/28 231/325/28 223/313/28 +f 226/319/29 232/326/29 224/315/29 +f 228/322/13 233/327/13 231/325/13 +f 231/325/13 234/328/13 229/323/13 +f 232/326/13 234/329/13 235/330/13 +f 232/326/13 236/331/13 227/320/13 +f 227/320/13 237/332/13 230/324/13 +f 228/322/13 237/333/13 238/334/13 +f 237/333/31 239/335/31 238/334/31 +f 233/336/4 240/337/4 234/328/4 +f 236/338/2 241/339/2 237/332/2 +f 238/340/28 242/341/28 233/327/28 +f 234/329/29 243/342/29 235/330/29 +f 235/343/30 244/344/30 236/331/30 +f 239/345/1 245/346/1 242/341/1 +f 242/347/1 246/348/1 240/337/1 +f 243/342/1 246/348/1 247/349/1 +f 243/350/1 248/351/1 244/344/1 +f 244/352/1 249/353/1 241/339/1 +f 239/335/1 249/354/1 250/355/1 +f 245/346/4 251/356/4 246/348/4 +f 248/351/2 252/357/2 249/353/2 +f 250/355/28 253/358/28 245/346/28 +f 246/348/29 254/359/29 247/349/29 +f 247/349/30 255/360/30 248/351/30 +f 249/354/31 256/361/31 250/355/31 +f 251/356/32 257/362/32 254/359/32 +f 254/359/33 258/363/33 255/360/33 +f 256/361/34 259/364/34 260/365/34 +f 253/358/35 261/366/35 251/356/35 +f 255/360/36 259/367/36 252/357/36 +f 253/358/37 260/368/37 262/369/37 +f 259/370/13 258/371/13 257/372/13 +f 263/373/38 264/374/38 265/375/38 +f 265/376/1 266/377/1 267/378/1 +f 267/378/39 268/379/39 269/380/39 +f 263/373/13 268/379/13 270/381/13 +f 271/382/38 272/383/38 273/384/38 +f 274/385/13 275/386/13 271/387/13 +f 276/388/1 272/383/1 277/389/1 +f 277/389/40 275/386/40 278/390/40 +f 274/385/41 273/391/41 276/392/41 +f 279/393/1 280/394/1 281/395/1 +f 282/396/42 280/397/42 283/398/42 +f 284/399/13 285/400/13 286/401/13 +f 279/393/43 287/402/43 288/403/43 +f 285/400/13 289/404/13 290/405/13 +f 291/406/44 292/407/44 280/397/44 +f 288/408/13 282/409/13 293/410/13 +f 294/411/40 288/403/40 293/410/40 +f 294/411/1 283/412/1 279/413/1 +f 284/414/13 286/415/13 295/416/13 +f 296/417/40 284/399/40 295/416/40 +f 296/417/1 297/418/1 298/419/1 +f 299/420/5 293/410/5 300/421/5 +f 301/422/3 283/423/3 302/424/3 +f 303/425/13 286/415/13 304/426/13 +f 305/427/1 296/417/1 306/428/1 +f 302/429/1 294/411/1 299/420/1 +f 306/428/5 295/416/5 303/425/5 +f 304/426/3 297/430/3 305/431/3 +f 300/421/13 282/409/13 301/422/13 +f 286/401/42 307/432/42 297/433/42 +f 288/403/13 291/406/13 282/396/13 +f 308/434/4 309/435/4 310/436/4 +f 311/437/45 289/404/45 312/438/45 +f 307/439/1 313/440/1 311/437/1 +f 280/394/1 314/441/1 281/395/1 +f 285/400/44 315/442/44 307/432/44 +f 291/406/13 316/443/13 317/444/13 +f 281/395/45 316/443/45 287/402/45 +f 298/445/1 307/439/1 311/437/1 +f 298/445/43 312/438/43 284/399/43 +f 318/446/30 319/447/30 320/448/30 +f 321/449/3 322/450/3 308/434/3 +f 323/451/2 324/452/2 319/447/2 +f 325/453/2 326/454/2 321/449/2 +f 327/455/31 328/456/31 324/457/31 +f 310/458/5 329/459/5 325/453/5 +f 330/460/28 331/461/28 328/456/28 +f 332/462/13 330/463/13 327/464/13 +f 332/465/4 333/466/4 331/461/4 +f 334/467/29 320/448/29 333/466/29 +f 331/468/1 333/469/1 319/470/1 +f 329/459/21 335/471/21 326/454/21 +f 326/472/3 335/471/3 322/473/3 +f 309/474/5 336/475/5 329/476/5 +f 309/474/5 337/477/5 336/475/5 +f 338/478/2 339/479/2 337/480/2 +f 336/475/13 340/481/13 335/471/13 +f 335/471/3 341/482/3 322/473/3 +f 322/473/1 338/483/1 309/484/1 +f 337/480/13 342/485/13 340/486/13 +f 341/487/1 343/488/1 338/489/1 +f 342/485/38 341/482/38 340/481/38 +f 344/490/43 345/491/43 346/492/43 +f 337/480/13 344/490/13 342/485/13 +f 342/485/4 346/492/4 343/488/4 +f 343/488/1 347/493/1 338/489/1 +f 348/494/13 349/495/13 350/496/13 +f 347/493/1 345/491/1 351/497/1 +f 347/498/42 348/499/42 339/479/42 +f 339/479/13 350/500/13 344/490/13 +f 349/495/40 345/491/40 350/500/40 +f 352/501/1 353/502/1 351/503/1 +f 351/503/1 345/504/1 352/501/1 +f 353/505/3 354/506/3 355/507/3 +f 351/508/3 356/509/3 348/494/3 +f 348/494/13 357/510/13 349/495/13 +f 349/495/5 358/511/5 352/501/5 +f 357/512/5 359/513/5 358/514/5 +f 355/507/21 357/510/21 356/509/21 +f 353/505/3 355/507/3 356/515/3 +f 358/514/4 360/516/4 353/517/4 +f 359/513/5 361/518/5 358/514/5 +f 355/507/2 362/519/2 359/513/2 +f 363/520/46 364/521/46 365/522/46 +f 366/523/46 367/524/46 368/525/46 +f 369/526/46 370/527/46 371/528/46 +f 372/529/46 373/530/46 370/527/46 +f 374/531/47 365/522/47 375/532/47 +f 376/533/46 367/524/46 364/521/46 +f 366/523/46 371/528/46 377/534/46 +f 378/535/46 375/536/46 373/530/46 +f 379/537/46 380/538/46 381/539/46 +f 382/540/46 383/541/46 384/542/46 +f 382/540/46 385/543/46 386/544/46 +f 387/545/47 385/543/47 388/546/47 +f 389/547/46 390/548/46 387/549/46 +f 389/547/47 391/550/47 392/551/47 +f 393/552/47 394/553/47 391/550/47 +f 395/554/46 396/555/46 394/553/46 +f 397/556/47 383/541/47 396/555/47 +f 398/557/48 399/558/48 400/559/48 +f 401/560/48 402/561/48 403/562/48 +f 404/563/48 405/564/48 406/565/48 +f 407/566/48 408/567/48 405/564/48 +f 409/568/49 400/559/49 410/569/49 +f 411/570/48 402/561/48 399/558/48 +f 404/563/48 412/571/48 401/560/48 +f 413/572/48 410/573/48 408/567/48 +f 414/574/48 415/575/48 416/576/48 +f 417/577/48 418/578/48 419/579/48 +f 417/577/48 420/580/48 421/581/48 +f 422/582/49 420/580/49 423/583/49 +f 424/584/48 425/585/48 422/586/48 +f 426/587/49 427/588/49 424/584/49 +f 426/587/49 428/589/49 429/590/49 +f 430/591/48 431/592/48 428/589/48 +f 432/593/49 418/578/49 431/592/49 +f 433/594/50 434/595/50 435/596/50 +f 436/597/50 437/598/50 438/599/50 +f 439/600/50 440/601/50 441/602/50 +f 442/603/50 443/604/50 440/601/50 +f 444/605/51 435/596/51 445/606/51 +f 446/607/50 437/598/50 434/595/50 +f 439/600/50 447/608/50 436/597/50 +f 448/609/50 445/610/50 443/604/50 +f 449/611/50 450/612/50 451/613/50 +f 452/614/50 453/615/50 454/616/50 +f 452/614/50 455/617/50 456/618/50 +f 457/619/51 455/617/51 458/620/51 +f 459/621/50 460/622/50 457/623/50 +f 461/624/51 462/625/51 459/621/51 +f 461/624/51 463/626/51 464/627/51 +f 465/628/50 466/629/50 463/626/50 +f 467/630/51 453/615/51 466/629/51 +f 468/631/52 469/632/52 470/633/52 +f 471/634/53 472/635/53 473/636/53 +f 474/637/53 475/638/53 476/639/53 +f 477/640/52 478/641/52 475/638/52 +f 479/642/52 470/633/52 480/643/52 +f 481/644/53 472/635/53 469/632/53 +f 474/637/53 482/645/53 471/634/53 +f 483/646/53 480/647/53 478/641/53 +f 484/648/52 485/649/52 486/650/52 +f 487/651/52 488/652/52 489/653/52 +f 487/651/52 490/654/52 491/655/52 +f 492/656/52 490/654/52 493/657/52 +f 494/658/53 495/659/53 492/660/53 +f 496/661/53 497/662/53 494/658/53 +f 496/661/52 498/663/52 499/664/52 +f 500/665/53 501/666/53 498/663/53 +f 502/667/54 488/652/54 501/666/54 +f 503/668/55 504/669/55 505/670/55 +f 506/671/55 507/672/55 508/673/55 +f 509/674/56 510/675/56 511/676/56 +f 512/677/55 513/678/55 510/675/55 +f 514/679/56 505/670/56 515/680/56 +f 516/681/55 507/672/55 504/669/55 +f 509/674/55 517/682/55 506/671/55 +f 518/683/55 515/684/55 513/678/55 +f 519/685/56 520/686/56 521/687/56 +f 522/688/56 523/689/56 524/690/56 +f 522/688/55 525/691/55 526/692/55 +f 527/693/56 525/691/56 528/694/56 +f 529/695/55 530/696/55 527/697/55 +f 531/698/56 532/699/56 529/695/56 +f 531/698/56 533/700/56 534/701/56 +f 535/702/55 536/703/55 533/700/55 +f 537/704/56 523/689/56 536/703/56 +f 538/705/57 539/706/57 540/707/57 +f 541/708/58 542/709/58 543/710/58 +f 544/711/57 545/712/57 546/713/57 +f 547/714/58 548/715/58 545/712/58 +f 549/716/57 540/707/57 550/717/57 +f 551/718/58 542/709/58 539/706/58 +f 541/708/58 546/713/58 552/719/58 +f 553/720/58 550/721/58 548/715/58 +f 554/722/57 555/723/57 556/724/57 +f 557/725/57 558/726/57 559/727/57 +f 557/725/58 560/728/58 561/729/58 +f 562/730/57 560/728/57 563/731/57 +f 564/732/58 565/733/58 562/734/58 +f 566/735/57 567/736/57 564/732/57 +f 566/735/57 568/737/57 569/738/57 +f 570/739/58 571/740/58 568/737/58 +f 572/741/59 558/726/59 571/740/59 +f 573/742/60 574/743/60 575/744/60 +f 576/745/60 577/746/60 578/747/60 +f 579/748/60 580/749/60 581/750/60 +f 582/751/60 580/749/60 583/752/60 +f 584/753/61 575/744/61 585/754/61 +f 586/755/60 577/746/60 574/743/60 +f 579/748/60 587/756/60 576/745/60 +f 582/751/60 585/757/60 588/758/60 +f 589/759/61 590/760/61 591/761/61 +f 592/762/61 593/763/61 594/764/61 +f 592/762/61 595/765/61 596/766/61 +f 597/767/61 595/765/61 598/768/61 +f 599/769/60 600/770/60 597/771/60 +f 601/772/60 602/773/60 599/769/60 +f 601/772/61 603/774/61 604/775/61 +f 605/776/61 606/777/61 603/774/61 +f 607/778/61 593/763/61 606/777/61 +f 608/779/62 609/780/62 610/781/62 +f 611/782/63 610/781/63 609/780/63 +f 612/783/64 609/780/64 613/784/64 +f 612/785/65 608/779/65 614/786/65 +f 614/787/66 610/781/66 615/788/66 +f 616/789/67 617/790/67 618/791/67 +f 619/792/68 617/790/68 620/793/68 +f 621/794/69 620/793/69 616/789/69 +f 621/795/70 618/791/70 622/796/70 +f 622/797/71 617/790/71 623/798/71 +f 624/799/72 625/800/72 626/801/72 +f 627/802/73 626/801/73 625/800/73 +f 628/803/74 625/800/74 629/804/74 +f 628/805/75 624/799/75 630/806/75 +f 630/807/76 626/801/76 631/808/76 +f 632/809/77 633/810/77 634/811/77 +f 635/812/78 634/811/78 633/810/78 +f 636/813/79 633/810/79 637/814/79 +f 636/815/80 632/809/80 638/816/80 +f 638/817/81 634/811/81 639/818/81 +f 640/819/82 641/820/82 642/821/82 +f 643/822/83 642/821/83 641/820/83 +f 644/823/84 641/820/84 645/824/84 +f 644/825/85 640/819/85 646/826/85 +f 646/827/86 642/821/86 647/828/86 +f 648/829/87 649/830/87 650/831/87 +f 651/832/88 649/830/88 652/833/88 +f 653/834/89 652/833/89 648/829/89 +f 653/835/90 650/831/90 654/836/90 +f 654/837/91 649/830/91 655/838/91 +f 656/839/92 657/840/92 658/841/92 +f 659/842/93 658/841/93 657/840/93 +f 660/843/94 657/840/94 661/844/94 +f 660/845/95 656/839/95 662/846/95 +f 662/847/96 658/841/96 663/848/96 +f 664/849/97 665/850/97 666/851/97 +f 667/852/98 665/850/98 668/853/98 +f 669/854/99 668/853/99 664/849/99 +f 669/855/100 666/851/100 670/856/100 +f 670/857/101 665/850/101 671/858/101 +f 672/859/102 673/860/102 674/861/102 +f 675/862/103 674/861/103 673/860/103 +f 676/863/104 673/860/104 677/864/104 +f 676/865/105 672/859/105 678/866/105 +f 678/867/106 674/861/106 679/868/106 +f 680/869/107 681/870/107 682/871/107 +f 683/872/108 682/871/108 681/870/108 +f 684/873/109 681/870/109 685/874/109 +f 684/875/110 680/869/110 686/876/110 +f 686/877/111 682/871/111 687/878/111 +f 688/879/112 689/880/112 690/881/112 +f 691/882/113 690/881/113 689/880/113 +f 692/883/114 689/880/114 693/884/114 +f 692/885/115 688/879/115 694/886/115 +f 694/887/116 690/881/116 695/888/116 +f 696/889/117 697/890/117 698/891/117 +f 699/892/118 698/891/118 697/890/118 +f 700/893/119 697/890/119 701/894/119 +f 700/895/120 696/889/120 702/896/120 +f 702/897/121 698/891/121 703/898/121 +f 704/899/122 705/900/122 706/901/122 +f 707/902/123 706/901/123 705/900/123 +f 708/903/124 705/900/124 709/904/124 +f 708/905/125 704/899/125 710/906/125 +f 710/907/126 706/901/126 711/908/126 +f 712/909/127 713/910/127 714/911/127 +f 715/912/128 713/910/128 716/913/128 +f 717/914/129 716/913/129 712/909/129 +f 717/915/130 714/911/130 718/916/130 +f 718/917/131 713/910/131 719/918/131 +f 720/919/132 721/920/132 722/921/132 +f 723/922/133 722/921/133 721/920/133 +f 724/923/134 721/920/134 725/924/134 +f 724/925/135 720/919/135 726/926/135 +f 726/927/136 722/921/136 727/928/136 +f 728/929/23 729/930/23 730/931/23 +f 731/932/4 732/933/4 733/934/4 +f 734/935/22 735/936/22 736/937/22 +f 1/1/1 16/16/1 2/2/1 +f 4/4/1 33/938/1 5/5/1 +f 7/7/1 30/939/1 8/8/1 +f 10/10/1 31/940/1 11/11/1 +f 13/13/1 35/941/1 14/14/1 +f 10/10/1 12/12/1 8/8/1 +f 12/12/1 15/15/1 5/5/1 +f 8/8/1 12/12/1 9/9/1 +f 15/15/1 14/14/1 3/3/1 +f 2/2/1 6/6/1 15/15/1 +f 6/6/1 5/5/1 15/15/1 +f 15/15/1 3/3/1 2/2/1 +f 13/13/1 11/11/1 33/938/1 +f 11/11/1 31/940/1 30/939/1 +f 30/939/1 7/7/1 11/11/1 +f 7/7/1 33/938/1 11/11/1 +f 1/1/1 35/941/1 13/13/1 +f 33/938/1 4/4/1 13/13/1 +f 4/4/1 16/16/1 13/13/1 +f 9/17/2 18/21/2 17/18/2 +f 5/20/3 25/33/3 18/21/3 +f 16/23/4 34/52/4 19/24/4 +f 2/26/3 19/24/3 20/27/3 +f 21/29/1 32/43/1 22/30/1 +f 24/32/1 17/18/1 18/21/1 +f 19/24/1 34/52/1 26/34/1 +f 27/35/1 36/63/1 28/36/1 +f 8/38/3 21/29/3 23/31/3 +f 30/40/4 32/43/4 21/29/4 +f 31/42/5 22/30/5 32/43/5 +f 6/45/2 20/27/2 26/34/2 +f 7/47/5 17/18/5 24/32/5 +f 33/49/4 24/32/4 25/33/4 +f 4/51/5 26/34/5 34/52/5 +f 10/54/2 23/31/2 22/30/2 +f 1/56/5 36/63/5 27/35/5 +f 35/58/4 27/35/4 29/37/4 +f 14/60/3 29/37/3 28/36/3 +f 3/62/2 28/36/2 36/63/2 +f 37/65/6 50/78/6 38/66/6 +f 40/68/6 51/79/6 41/69/6 +f 43/71/7 46/74/7 44/72/7 +f 46/74/6 52/80/6 47/75/6 +f 48/76/6 37/65/6 39/67/6 +f 50/78/6 42/70/6 41/69/6 +f 43/71/6 45/73/6 51/79/6 +f 52/80/7 48/942/7 49/81/7 +f 53/82/6 737/943/6 54/83/6 +f 54/83/7 738/944/7 55/84/7 +f 55/84/6 739/945/6 53/82/6 +f 739/945/7 740/946/7 53/82/7 +f 740/946/6 741/947/6 53/82/6 +f 56/85/7 60/89/7 57/86/7 +f 56/85/6 62/91/6 59/88/6 +f 61/90/6 64/948/6 59/88/6 +f 63/92/7 66/96/7 64/93/7 +f 65/95/6 68/98/6 66/96/6 +f 65/95/6 69/99/6 67/97/6 +f 69/99/7 71/101/7 70/100/7 +f 71/101/6 58/87/6 57/86/6 +f 72/102/8 76/106/8 73/103/8 +f 75/105/137 79/949/137 73/103/137 +f 77/107/10 75/950/10 76/106/10 +f 77/108/11 72/102/11 74/104/11 +f 78/110/12 74/104/12 73/103/12 +f 80/112/3 98/951/3 81/113/3 +f 85/117/3 742/952/3 743/953/3 +f 743/953/3 744/954/3 85/117/3 +f 744/954/3 745/955/3 85/117/3 +f 745/955/3 746/956/3 85/117/3 +f 746/956/3 83/115/3 85/117/3 +f 82/114/3 81/957/3 86/118/3 +f 88/120/3 87/119/3 86/121/3 +f 88/120/3 89/958/3 90/123/3 +f 91/125/3 90/959/3 92/126/3 +f 93/127/3 92/960/3 94/128/3 +f 96/130/3 95/129/3 94/131/3 +f 96/130/3 97/961/3 98/133/3 +f 99/134/3 103/962/3 100/135/3 +f 102/137/3 747/963/3 103/138/3 +f 104/140/3 747/964/3 102/141/3 +f 106/143/3 104/965/3 105/144/3 +f 108/146/3 106/966/3 107/147/3 +f 110/149/3 112/967/3 108/150/3 +f 111/152/3 113/968/3 112/153/3 +f 101/155/3 100/969/3 113/156/3 +f 128/970/1 127/971/1 114/158/1 +f 114/158/1 124/972/1 115/159/1 +f 115/159/1 125/973/1 116/160/1 +f 116/160/1 132/974/1 128/970/1 +f 128/970/1 114/158/1 116/160/1 +f 13/13/3 118/975/3 117/161/3 +f 15/15/2 119/976/2 118/162/2 +f 12/12/5 120/977/5 119/163/5 +f 11/11/4 117/978/4 120/164/4 +f 123/167/13 133/979/13 126/980/13 +f 126/980/13 131/981/13 121/165/13 +f 121/165/13 130/982/13 122/166/13 +f 122/166/13 129/983/13 123/167/13 +f 123/167/13 126/980/13 121/165/13 +f 123/168/14 129/177/14 124/169/14 +f 122/171/15 130/178/15 125/172/15 +f 126/174/16 133/182/16 127/175/16 +f 129/177/17 122/171/17 115/173/17 +f 130/178/18 121/984/18 116/179/18 +f 131/180/19 126/174/19 128/176/19 +f 133/182/20 123/168/20 114/170/20 +f 134/183/3 141/191/3 135/184/3 +f 137/186/5 140/190/5 138/187/5 +f 134/189/21 138/195/21 140/190/21 +f 135/184/22 137/186/22 139/192/22 +f 141/191/23 140/190/23 137/186/23 +f 136/194/24 139/985/24 138/195/24 +f 142/196/3 149/204/3 143/197/3 +f 145/199/5 148/203/5 146/200/5 +f 142/202/22 146/986/22 148/203/22 +f 143/197/21 145/199/21 147/205/21 +f 149/204/24 148/203/24 145/199/24 +f 144/206/23 147/205/23 146/207/23 +f 150/209/3 156/987/3 151/210/3 +f 153/212/5 157/218/5 154/213/5 +f 156/215/24 155/220/24 154/213/24 +f 152/211/23 157/218/23 153/216/23 +f 151/210/21 154/213/21 157/218/21 +f 150/219/22 153/988/22 155/220/22 +f 158/221/3 164/989/3 159/222/3 +f 161/224/5 165/230/5 162/225/5 +f 164/227/23 163/990/23 162/225/23 +f 160/223/24 165/230/24 161/228/24 +f 159/222/22 162/225/22 165/230/22 +f 158/229/21 161/228/21 163/231/21 +f 166/233/3 173/241/3 167/234/3 +f 169/236/25 172/991/25 170/237/25 +f 166/239/21 170/244/21 172/240/21 +f 167/234/22 169/236/22 171/238/22 +f 173/241/23 172/240/23 169/236/23 +f 166/239/24 168/992/24 171/243/24 +f 174/245/26 178/251/26 175/246/26 +f 179/250/13 748/993/13 177/248/13 +f 177/248/13 181/994/13 178/249/13 +f 178/249/13 174/995/13 179/250/13 +f 178/251/16 181/253/16 180/252/16 +f 181/253/27 177/996/27 182/254/27 +f 180/257/1 182/997/1 176/255/1 +f 182/997/1 749/998/1 176/255/1 +f 749/998/1 750/999/1 176/255/1 +f 183/258/2 187/262/2 184/259/2 +f 183/258/13 751/1000/13 186/261/13 +f 184/259/1 752/1001/1 188/263/1 +f 189/264/5 193/268/5 190/265/5 +f 192/267/13 190/265/13 193/268/13 +f 195/270/1 189/264/1 191/266/1 +f 194/272/4 193/268/4 189/264/4 +f 196/274/2 191/266/2 190/265/2 +f 197/276/2 206/285/2 198/277/2 +f 200/279/28 207/286/28 201/280/28 +f 203/282/29 208/288/29 204/283/29 +f 206/285/30 203/282/30 205/284/30 +f 207/286/31 197/1002/31 199/287/31 +f 208/288/4 200/279/4 202/281/4 +f 205/291/13 204/1003/13 199/289/13 +f 204/1003/13 202/1004/13 199/289/13 +f 202/1004/13 201/1005/13 199/289/13 +f 209/292/4 216/318/4 210/293/4 +f 212/295/2 219/310/2 213/296/2 +f 215/298/28 220/1006/28 216/299/28 +f 211/301/29 210/314/29 217/302/29 +f 218/304/30 217/1007/30 219/305/30 +f 214/307/31 213/317/31 220/308/31 +f 219/310/1 225/316/1 221/311/1 +f 216/299/1 220/1006/1 222/312/1 +f 210/314/1 226/319/1 224/315/1 +f 219/305/1 217/1007/1 224/315/1 +f 213/317/1 221/321/1 222/312/1 +f 216/318/1 223/313/1 226/319/1 +f 224/315/30 232/326/30 227/320/30 +f 221/321/31 230/1008/31 228/322/31 +f 223/313/4 231/325/4 229/323/4 +f 225/316/2 227/320/2 230/324/2 +f 222/312/28 228/322/28 231/325/28 +f 226/319/29 229/323/29 232/326/29 +f 228/322/13 238/340/13 233/327/13 +f 231/325/13 233/336/13 234/328/13 +f 232/326/13 229/323/13 234/329/13 +f 232/326/13 235/343/13 236/331/13 +f 227/320/13 236/338/13 237/332/13 +f 228/322/13 230/1008/13 237/333/13 +f 237/333/31 241/1009/31 239/335/31 +f 233/336/4 242/347/4 240/337/4 +f 236/338/2 244/352/2 241/339/2 +f 238/340/28 239/345/28 242/341/28 +f 234/329/29 240/1010/29 243/342/29 +f 235/343/30 243/350/30 244/344/30 +f 239/345/1 250/355/1 245/346/1 +f 242/347/1 245/346/1 246/348/1 +f 243/342/1 240/1010/1 246/348/1 +f 243/350/1 247/349/1 248/351/1 +f 244/352/1 248/351/1 249/353/1 +f 239/335/1 241/1009/1 249/354/1 +f 245/346/4 253/358/4 251/356/4 +f 248/351/2 255/360/2 252/357/2 +f 250/355/28 256/361/28 253/358/28 +f 246/348/29 251/356/29 254/359/29 +f 247/349/30 254/359/30 255/360/30 +f 249/354/31 252/1011/31 256/361/31 +f 251/356/32 261/1012/32 257/362/32 +f 254/359/33 257/1013/33 258/363/33 +f 256/361/34 252/1011/34 259/364/34 +f 253/358/35 262/1014/35 261/366/35 +f 255/360/36 258/1015/36 259/367/36 +f 253/358/37 256/361/37 260/368/37 +f 257/372/13 261/1016/13 259/370/13 +f 261/1016/13 262/1017/13 259/370/13 +f 262/1017/13 260/1018/13 259/370/13 +f 263/373/38 270/381/38 264/374/38 +f 265/376/1 264/1019/1 266/377/1 +f 267/378/39 266/377/39 268/379/39 +f 263/373/13 269/380/13 268/379/13 +f 271/382/38 275/1020/38 272/383/38 +f 274/385/13 278/390/13 275/386/13 +f 276/388/1 273/384/1 272/383/1 +f 277/389/40 272/383/40 275/386/40 +f 274/385/41 271/387/41 273/391/41 +f 279/393/1 283/1021/1 280/394/1 +f 282/396/42 291/406/42 280/397/42 +f 284/399/13 312/438/13 285/400/13 +f 279/393/43 281/395/43 287/402/43 +f 285/400/13 312/438/13 289/404/13 +f 291/406/44 317/444/44 292/407/44 +f 294/411/40 279/393/40 288/403/40 +f 296/417/40 298/445/40 284/399/40 +f 299/420/5 294/411/5 293/410/5 +f 301/422/3 282/409/3 283/423/3 +f 303/425/13 295/416/13 286/415/13 +f 305/427/1 297/418/1 296/417/1 +f 302/429/1 283/412/1 294/411/1 +f 306/428/5 296/417/5 295/416/5 +f 304/426/3 286/415/3 297/430/3 +f 300/421/13 293/410/13 282/409/13 +f 286/401/42 285/400/42 307/432/42 +f 288/403/13 287/402/13 291/406/13 +f 308/434/4 322/450/4 309/435/4 +f 311/437/45 313/440/45 289/404/45 +f 307/439/1 315/1022/1 313/440/1 +f 280/394/1 292/1023/1 314/441/1 +f 285/400/44 290/405/44 315/442/44 +f 291/406/13 287/402/13 316/443/13 +f 281/395/45 314/441/45 316/443/45 +f 298/445/1 297/1024/1 307/439/1 +f 298/445/43 311/437/43 312/438/43 +f 318/446/30 323/451/30 319/447/30 +f 321/449/3 326/454/3 322/450/3 +f 323/451/2 327/1025/2 324/452/2 +f 325/453/2 329/459/2 326/454/2 +f 327/455/31 330/460/31 328/456/31 +f 310/458/5 309/1026/5 329/459/5 +f 330/460/28 332/465/28 331/461/28 +f 327/464/13 323/1027/13 318/1028/13 +f 318/1028/13 334/1029/13 327/464/13 +f 334/1029/13 332/462/13 327/464/13 +f 332/465/4 334/467/4 333/466/4 +f 334/467/29 318/446/29 320/448/29 +f 333/469/1 320/1030/1 319/470/1 +f 319/470/1 324/1031/1 328/1032/1 +f 328/1032/1 331/468/1 319/470/1 +f 329/459/21 336/475/21 335/471/21 +f 309/474/5 338/1033/5 337/477/5 +f 338/478/2 347/498/2 339/479/2 +f 336/475/13 337/477/13 340/481/13 +f 335/471/3 340/481/3 341/482/3 +f 322/473/1 341/482/1 338/483/1 +f 342/485/38 343/488/38 341/482/38 +f 344/490/43 350/500/43 345/491/43 +f 337/480/13 339/479/13 344/490/13 +f 342/485/4 344/490/4 346/492/4 +f 343/488/1 346/492/1 347/493/1 +f 347/493/1 346/492/1 345/491/1 +f 347/498/42 351/1034/42 348/499/42 +f 339/479/13 348/499/13 350/500/13 +f 349/495/40 352/501/40 345/491/40 +f 352/501/1 358/511/1 353/502/1 +f 353/505/3 360/1035/3 354/506/3 +f 351/508/3 353/1036/3 356/509/3 +f 348/494/13 356/509/13 357/510/13 +f 349/495/5 357/510/5 358/511/5 +f 355/507/21 359/513/21 357/510/21 +f 358/514/4 361/518/4 360/516/4 +f 359/513/5 362/519/5 361/518/5 +f 355/507/2 354/506/2 362/519/2 +f 363/520/46 376/533/46 364/521/46 +f 366/523/46 377/534/46 367/524/46 +f 369/526/47 372/529/47 370/527/47 +f 372/529/46 378/535/46 373/530/46 +f 374/531/46 363/520/46 365/522/46 +f 376/533/46 368/525/46 367/524/46 +f 366/523/46 369/526/46 371/528/46 +f 378/535/47 374/1037/47 375/536/47 +f 379/537/46 753/1038/46 380/538/46 +f 380/538/47 754/1039/47 381/539/47 +f 381/539/47 755/1040/47 756/1041/47 +f 756/1041/46 757/1042/46 381/539/46 +f 757/1042/46 379/537/46 381/539/46 +f 382/540/47 386/544/47 383/541/47 +f 382/540/46 388/546/46 385/543/46 +f 387/545/46 390/1043/46 385/543/46 +f 389/547/47 392/551/47 390/548/47 +f 389/547/46 393/552/46 391/550/46 +f 393/552/46 395/554/46 394/553/46 +f 395/554/47 397/556/47 396/555/47 +f 397/556/46 384/542/46 383/541/46 +f 398/557/49 411/570/49 399/558/49 +f 401/560/48 412/571/48 402/561/48 +f 404/563/49 407/566/49 405/564/49 +f 407/566/48 413/572/48 408/567/48 +f 409/568/48 398/557/48 400/559/48 +f 411/570/48 403/562/48 402/561/48 +f 404/563/48 406/565/48 412/571/48 +f 413/572/49 409/1044/49 410/573/49 +f 414/574/48 758/1045/48 415/575/48 +f 415/575/49 759/1046/49 416/576/49 +f 416/576/48 760/1047/48 414/574/48 +f 760/1047/49 761/1048/49 414/574/49 +f 761/1048/48 762/1049/48 414/574/48 +f 417/577/49 421/581/49 418/578/49 +f 417/577/48 423/583/48 420/580/48 +f 422/582/48 425/1050/48 420/580/48 +f 424/584/49 427/588/49 425/585/49 +f 426/587/48 429/590/48 427/588/48 +f 426/587/49 430/591/49 428/589/49 +f 430/591/49 432/593/49 431/592/49 +f 432/593/48 419/579/48 418/578/48 +f 433/594/50 446/607/50 434/595/50 +f 436/597/50 447/608/50 437/598/50 +f 439/600/51 442/603/51 440/601/51 +f 442/603/50 448/609/50 443/604/50 +f 444/605/50 433/594/50 435/596/50 +f 446/607/50 438/599/50 437/598/50 +f 439/600/50 441/602/50 447/608/50 +f 448/609/51 444/1051/51 445/610/51 +f 449/611/50 763/1052/50 450/612/50 +f 450/612/51 764/1053/51 451/613/51 +f 451/613/50 765/1054/50 449/611/50 +f 765/1054/51 766/1055/51 449/611/51 +f 766/1055/50 767/1056/50 449/611/50 +f 452/614/51 456/618/51 453/615/51 +f 452/614/50 458/620/50 455/617/50 +f 457/619/50 460/1057/50 455/617/50 +f 459/621/51 462/625/51 460/622/51 +f 461/624/50 464/627/50 462/625/50 +f 461/624/50 465/628/50 463/626/50 +f 465/628/51 467/630/51 466/629/51 +f 467/630/50 454/616/50 453/615/50 +f 468/631/53 481/644/53 469/632/53 +f 471/634/53 482/645/53 472/635/53 +f 474/637/52 477/640/52 475/638/52 +f 477/640/53 483/646/53 478/641/53 +f 479/642/53 468/631/53 470/633/53 +f 481/644/53 473/636/53 472/635/53 +f 474/637/52 476/639/52 482/645/52 +f 483/646/52 479/1058/52 480/647/52 +f 484/648/52 768/1059/52 485/649/52 +f 485/649/52 769/1060/52 486/650/52 +f 486/650/53 770/1061/53 484/648/53 +f 770/1061/52 771/1062/52 484/648/52 +f 771/1062/53 772/1063/53 484/648/53 +f 487/651/52 491/655/52 488/652/52 +f 487/651/52 493/657/52 490/654/52 +f 492/656/53 495/1064/53 490/654/53 +f 494/658/52 497/662/52 495/659/52 +f 496/661/53 499/664/53 497/662/53 +f 496/661/53 500/665/53 498/663/53 +f 500/665/52 502/667/52 501/666/52 +f 502/667/53 489/653/53 488/652/53 +f 503/668/55 516/681/55 504/669/55 +f 506/671/55 517/682/55 507/672/55 +f 509/674/55 512/677/55 510/675/55 +f 512/677/55 518/683/55 513/678/55 +f 514/679/55 503/668/55 505/670/55 +f 516/681/55 508/673/55 507/672/55 +f 509/674/55 511/676/55 517/682/55 +f 518/683/56 514/1065/56 515/684/56 +f 519/685/56 773/1066/56 520/686/56 +f 520/686/55 774/1067/55 521/687/55 +f 521/687/55 775/1068/55 519/685/55 +f 775/1068/56 776/1069/56 519/685/56 +f 776/1069/55 777/1070/55 519/685/55 +f 522/688/56 526/692/56 523/689/56 +f 522/688/56 528/694/56 525/691/56 +f 527/693/55 530/1071/55 525/691/55 +f 529/695/56 532/699/56 530/696/56 +f 531/698/55 534/701/55 532/699/55 +f 531/698/55 535/702/55 533/700/55 +f 535/702/56 537/704/56 536/703/56 +f 537/704/55 524/690/55 523/689/55 +f 538/705/58 551/718/58 539/706/58 +f 541/708/58 552/719/58 542/709/58 +f 544/711/58 547/714/58 545/712/58 +f 547/714/58 553/720/58 548/715/58 +f 549/716/58 538/705/58 540/707/58 +f 551/718/58 543/710/58 542/709/58 +f 541/708/58 544/711/58 546/713/58 +f 553/720/57 549/1072/57 550/721/57 +f 554/722/57 778/1073/57 555/723/57 +f 555/723/58 779/1074/58 556/724/58 +f 556/724/58 780/1075/58 781/1076/58 +f 781/1076/58 782/1077/58 556/724/58 +f 782/1077/58 554/722/58 556/724/58 +f 557/725/57 561/729/57 558/726/57 +f 557/725/57 563/731/57 560/728/57 +f 562/730/58 565/1078/58 560/728/58 +f 564/732/57 567/736/57 565/733/57 +f 566/735/58 569/738/58 567/736/58 +f 566/735/58 570/739/58 568/737/58 +f 570/739/57 572/741/57 571/740/57 +f 572/741/58 559/727/58 558/726/58 +f 573/742/60 586/755/60 574/743/60 +f 576/745/60 587/756/60 577/746/60 +f 579/748/61 583/752/61 580/749/61 +f 582/751/60 588/758/60 580/749/60 +f 584/753/60 573/742/60 575/744/60 +f 586/755/60 578/747/60 577/746/60 +f 579/748/61 581/750/61 587/756/61 +f 582/751/61 584/1079/61 585/757/61 +f 589/759/61 783/1080/61 590/760/61 +f 590/760/61 784/1081/61 591/761/61 +f 591/761/60 785/1082/60 589/759/60 +f 785/1082/61 786/1083/61 589/759/61 +f 786/1083/60 787/1084/60 589/759/60 +f 592/762/61 596/766/61 593/763/61 +f 592/762/61 598/768/61 595/765/61 +f 597/767/60 600/1085/60 595/765/60 +f 599/769/61 602/773/61 600/770/61 +f 601/772/60 604/775/60 602/773/60 +f 601/772/61 605/776/61 603/774/61 +f 605/776/61 607/778/61 606/777/61 +f 607/778/60 594/764/60 593/763/60 +f 608/779/62 613/784/62 609/780/62 +f 611/782/138 615/1086/138 610/781/138 +f 612/783/64 611/1087/64 609/780/64 +f 612/785/65 613/784/65 608/779/65 +f 614/787/66 608/779/66 610/781/66 +f 616/789/67 620/793/67 617/790/67 +f 619/792/139 623/1088/139 617/790/139 +f 621/794/69 619/1089/69 620/793/69 +f 621/795/70 616/789/70 618/791/70 +f 622/797/71 618/791/71 617/790/71 +f 624/799/72 629/804/72 625/800/72 +f 627/802/140 631/1090/140 626/801/140 +f 628/803/74 627/1091/74 625/800/74 +f 628/805/75 629/804/75 624/799/75 +f 630/807/76 624/799/76 626/801/76 +f 632/809/77 637/814/77 633/810/77 +f 635/812/141 639/1092/141 634/811/141 +f 636/813/79 635/1093/79 633/810/79 +f 636/815/80 637/814/80 632/809/80 +f 638/817/81 632/809/81 634/811/81 +f 640/819/82 645/824/82 641/820/82 +f 643/822/142 647/1094/142 642/821/142 +f 644/823/84 643/1095/84 641/820/84 +f 644/825/85 645/824/85 640/819/85 +f 646/827/86 640/819/86 642/821/86 +f 648/829/87 652/833/87 649/830/87 +f 651/832/88 655/1096/88 649/830/88 +f 653/834/89 651/1097/89 652/833/89 +f 653/835/90 648/829/90 650/831/90 +f 654/837/91 650/831/91 649/830/91 +f 656/839/92 661/844/92 657/840/92 +f 659/842/143 663/1098/143 658/841/143 +f 660/843/94 659/1099/94 657/840/94 +f 660/845/95 661/844/95 656/839/95 +f 662/847/96 656/839/96 658/841/96 +f 664/849/97 668/853/97 665/850/97 +f 667/852/144 671/1100/144 665/850/144 +f 669/854/99 667/1101/99 668/853/99 +f 669/855/100 664/849/100 666/851/100 +f 670/857/145 666/851/145 665/850/145 +f 672/859/102 677/864/102 673/860/102 +f 675/862/103 679/1102/103 674/861/103 +f 676/863/104 675/1103/104 673/860/104 +f 676/865/105 677/864/105 672/859/105 +f 678/867/146 672/859/146 674/861/146 +f 680/869/107 685/874/107 681/870/107 +f 683/872/108 687/1104/108 682/871/108 +f 684/873/109 683/1105/109 681/870/109 +f 684/875/110 685/874/110 680/869/110 +f 686/877/147 680/869/147 682/871/147 +f 688/879/112 693/884/112 689/880/112 +f 691/882/113 695/1106/113 690/881/113 +f 692/883/114 691/1107/114 689/880/114 +f 692/885/115 693/884/115 688/879/115 +f 694/887/148 688/879/148 690/881/148 +f 696/889/117 701/894/117 697/890/117 +f 699/892/118 703/1108/118 698/891/118 +f 700/893/119 699/1109/119 697/890/119 +f 700/895/120 701/894/120 696/889/120 +f 702/897/121 696/889/121 698/891/121 +f 704/899/122 709/904/122 705/900/122 +f 707/902/123 711/1110/123 706/901/123 +f 708/903/124 707/1111/124 705/900/124 +f 708/905/149 709/904/149 704/899/149 +f 710/907/126 704/899/126 706/901/126 +f 712/909/127 716/913/127 713/910/127 +f 715/912/150 719/1112/150 713/910/150 +f 717/914/129 715/1113/129 716/913/129 +f 717/915/130 712/909/130 714/911/130 +f 718/917/131 714/911/131 713/910/131 +f 720/919/132 725/924/132 721/920/132 +f 723/922/133 727/1114/133 722/921/133 +f 724/923/134 723/1115/134 721/920/134 +f 724/925/135 725/924/135 720/919/135 +f 726/927/136 720/919/136 722/921/136 +f 728/929/23 788/1116/23 729/930/23 +f 731/932/4 789/1117/4 732/933/4 +f 734/935/22 790/1118/22 735/936/22 +f 1363/1119/1 1364/1120/1 1365/1121/1 +f 1366/1122/21 1367/1123/21 1368/1124/21 +f 1367/1123/13 1369/1125/13 1370/1126/13 +f 1371/1127/2 1372/1128/2 1373/1129/2 +f 1374/1130/24 1371/1131/24 1365/1121/24 +f 1371/1132/39 1366/1133/39 1375/1134/39 +f 1376/1135/4 1370/1126/4 1377/1136/4 +f 1378/1137/1 1379/1138/1 1380/1139/1 +f 1379/1138/1 1363/1119/1 1381/1140/1 +f 1378/1137/151 1382/1141/151 1383/1142/151 +f 1367/1123/5 1384/1143/5 1369/1125/5 +f 1367/1123/5 1385/1144/5 1386/1145/5 +f 1380/1139/5 1387/1146/5 1378/1137/5 +f 1378/1137/5 1387/1146/5 1388/1147/5 +f 1369/1148/152 1377/1136/152 1370/1126/152 +f 1389/1149/152 1390/1150/152 1391/1151/152 +f 1391/1151/4 1381/1140/4 1392/1152/4 +f 1393/1153/153 1394/1154/153 1395/1155/153 +f 1396/1156/153 1397/1157/153 1393/1153/153 +f 1394/1154/153 1381/1158/153 1395/1155/153 +f 1398/1159/5 1399/1160/5 1400/1161/5 +f 1401/1162/22 1402/1163/22 1403/1164/22 +f 1404/1165/3 1405/1166/3 1406/1167/3 +f 1368/1168/3 1407/1169/3 1408/1170/3 +f 1372/1171/3 1409/1172/3 1410/1173/3 +f 1373/1174/3 1411/1175/3 1412/1176/3 +f 1365/1177/3 1413/1178/3 1414/1179/3 +f 1415/1180/4 1416/1181/4 1417/1182/4 +f 1394/1183/21 1418/1184/21 1392/1185/21 +f 1397/1186/24 1419/1187/24 1420/1188/24 +f 1397/1186/2 1421/1189/2 1394/1183/2 +f 1420/1188/153 1418/1190/153 1421/1189/153 +f 1422/1191/13 1423/1192/13 1424/1193/13 +f 1425/1194/1 1426/1195/1 1427/1196/1 +f 1428/1197/154 1429/1198/154 1430/1199/154 +f 1430/1199/155 1431/1200/155 1428/1197/155 +f 1425/1201/156 1432/1202/156 1430/1199/156 +f 1423/1203/157 1431/1200/157 1424/1204/157 +f 1374/1205/2 1433/1206/2 1366/1133/2 +f 1434/1207/5 1435/1208/5 1436/1209/5 +f 1437/1210/2 1438/1211/2 1439/1212/2 +f 1440/1213/4 1436/1209/4 1441/1214/4 +f 1439/1215/13 1434/1207/13 1440/1216/13 +f 1441/1217/1 1435/1208/1 1437/1218/1 +f 1442/1219/4 1443/1220/4 1444/1221/4 +f 1445/1222/1 1446/1223/1 1447/1224/1 +f 1448/1225/5 1449/1226/5 1443/1220/5 +f 1442/1219/13 1450/1227/13 1448/1225/13 +f 1443/1220/1 1451/1228/1 1444/1221/1 +f 1452/1229/41 1453/1230/41 1445/1222/41 +f 1446/1231/5 1454/1232/5 1447/1233/5 +f 1455/1234/13 1454/1235/13 1456/1236/13 +f 1453/1230/38 1457/1237/38 1445/1222/38 +f 1458/1238/40 1446/1231/40 1457/1239/40 +f 1452/1229/39 1454/1240/39 1455/1234/39 +f 1459/1241/1 1460/1242/1 1461/1243/1 +f 1462/1244/158 1463/1245/158 1464/1246/158 +f 1465/1247/159 1466/1248/159 1460/1242/159 +f 1467/1249/4 1468/1250/4 1395/1155/4 +f 1469/1251/22 1470/1252/22 1471/1253/22 +f 1399/1254/23 1472/1255/23 1400/1256/23 +f 1395/1155/22 1473/1257/22 1474/1258/22 +f 1469/1251/22 1473/1257/22 1381/1140/22 +f 1395/1155/22 1471/1253/22 1470/1252/22 +f 1403/1259/24 1475/1260/24 1476/1261/24 +f 1477/1262/23 1404/1263/23 1396/1264/23 +f 1396/1265/23 1478/1266/23 1477/1262/23 +f 1479/1267/23 1478/1266/23 1393/1153/23 +f 1477/1268/160 1480/1269/160 1481/1270/160 +f 1469/1271/23 1482/1272/23 1473/1273/23 +f 1483/1274/161 1484/1275/161 1470/1276/161 +f 1482/1272/22 1485/1277/22 1486/1278/22 +f 1487/1279/5 1401/1280/5 1403/1281/5 +f 1481/1282/23 1488/1283/23 1398/1159/23 +f 1471/1284/162 1489/1285/162 1469/1286/162 +f 1401/1287/23 1490/1288/23 1483/1289/23 +f 1474/1290/163 1482/1291/163 1486/1278/163 +f 1474/1290/24 1485/1277/24 1471/1284/24 +f 1478/1292/21 1491/1293/21 1399/1294/21 +f 1400/1295/22 1492/1296/22 1477/1297/22 +f 1490/1288/22 1487/1279/22 1484/1275/22 +f 1484/1275/24 1487/1279/24 1403/1298/24 +f 1417/1299/1 1493/1300/1 1494/1301/1 +f 1405/1166/3 1495/1302/3 1496/1303/3 +f 1497/1304/3 1402/1305/3 1498/1306/3 +f 1495/1302/3 1499/1307/3 1479/1308/3 +f 1496/1303/3 1500/1309/3 1501/1310/3 +f 1451/1311/2 1450/1312/2 1502/1313/2 +f 1503/1314/1 1504/1315/1 1417/1316/1 +f 1395/1155/4 1505/1317/4 1393/1153/4 +f 1479/1267/4 1505/1317/4 1494/1318/4 +f 1506/1319/23 1498/1320/23 1401/1321/23 +f 1503/1322/4 1507/1323/4 1504/1324/4 +f 1417/1325/5 1507/1326/5 1415/1327/5 +f 1468/1328/3 1503/1329/3 1505/1330/3 +f 1415/1331/13 1507/1332/13 1508/1333/13 +f 1509/1334/13 1500/1335/13 1415/1336/13 +f 1491/1337/21 1495/1338/21 1399/1339/21 +f 1400/1340/22 1510/1341/22 1492/1342/22 +f 1491/1343/23 1479/1267/23 1499/1344/23 +f 1494/1318/4 1493/1345/4 1479/1267/4 +f 1509/1346/4 1467/1249/4 1511/1347/4 +f 1476/1348/22 1475/1349/22 1467/1249/22 +f 1492/1350/23 1510/1351/23 1404/1263/23 +f 1506/1352/22 1512/1353/22 1513/1354/22 +f 1467/1355/3 1402/1305/3 1500/1309/3 +f 1498/1306/3 1512/1356/3 1497/1304/3 +f 1404/1165/3 1472/1357/3 1405/1166/3 +f 1514/1358/2 1515/1359/2 1516/1360/2 +f 1517/1361/4 1518/1362/4 1519/1363/4 +f 1520/1364/1 1521/1365/1 1522/1366/1 +f 1523/1367/13 1524/1368/13 1525/1369/13 +f 1525/1369/23 1526/1370/23 1517/1361/23 +f 1527/1371/21 1515/1359/21 1528/1372/21 +f 1516/1373/24 1529/1374/24 1514/1375/24 +f 1518/1362/22 1522/1366/22 1519/1363/22 +f 1525/1376/3 1530/1377/3 1531/1378/3 +f 1517/1379/3 1532/1380/3 1533/1381/3 +f 1519/1382/3 1534/1383/3 1535/1384/3 +f 1522/1385/3 1536/1386/3 1537/1387/3 +f 1521/1388/3 1538/1389/3 1539/1390/3 +f 1516/1391/3 1540/1392/3 1541/1393/3 +f 1515/1394/3 1542/1395/3 1543/1396/3 +f 1523/1397/3 1544/1398/3 1545/1399/3 +f 1546/1400/3 1547/1401/3 1548/1402/3 +f 1549/1403/5 1550/1404/5 1526/1405/5 +f 1551/1406/5 1552/1407/5 1524/1408/5 +f 1553/1409/5 1554/1410/5 1527/1411/5 +f 1555/1412/5 1556/1413/5 1528/1414/5 +f 1557/1415/5 1558/1416/5 1514/1417/5 +f 1559/1418/5 1560/1419/5 1529/1420/5 +f 1561/1421/5 1562/1422/5 1520/1423/5 +f 1563/1424/5 1564/1425/5 1518/1426/5 +f 1365/1121/1 1512/1353/1 1363/1119/1 +f 1512/1353/1 1381/1140/1 1363/1119/1 +f 1372/1128/21 1375/1427/21 1368/1124/21 +f 1375/1427/21 1366/1122/21 1368/1124/21 +f 1433/1428/21 1385/1429/21 1367/1123/21 +f 1366/1122/21 1433/1428/21 1367/1123/21 +f 1370/1126/13 1396/1264/13 1367/1123/13 +f 1396/1264/13 1404/1263/13 1368/1124/13 +f 1367/1123/13 1396/1264/13 1368/1124/13 +f 1371/1127/2 1375/1427/2 1372/1128/2 +f 1373/1430/24 1365/1121/24 1371/1131/24 +f 1365/1121/164 1364/1120/164 1374/1130/164 +f 1364/1120/165 1565/1431/165 1374/1130/165 +f 1371/1132/39 1374/1205/39 1366/1133/39 +f 1376/1135/4 1396/1264/4 1370/1126/4 +f 1378/1137/1 1383/1142/1 1379/1138/1 +f 1381/1140/1 1390/1150/1 1379/1138/1 +f 1390/1150/1 1380/1139/1 1379/1138/1 +f 1378/1137/151 1388/1432/151 1382/1141/151 +f 1367/1123/5 1386/1145/5 1384/1143/5 +f 1380/1139/5 1389/1433/5 1387/1146/5 +f 1369/1148/152 1384/1434/152 1377/1136/152 +f 1389/1149/152 1380/1435/152 1390/1150/152 +f 1391/1151/4 1390/1150/4 1381/1140/4 +f 1393/1153/153 1397/1157/153 1394/1154/153 +f 1396/1156/153 1376/1436/153 1397/1157/153 +f 1394/1154/153 1392/1437/153 1381/1158/153 +f 1398/1159/5 1488/1283/5 1399/1160/5 +f 1401/1162/22 1498/1438/22 1402/1163/22 +f 1407/1169/3 1368/1168/3 1406/1167/3 +f 1368/1168/3 1404/1165/3 1406/1167/3 +f 1409/1172/3 1372/1171/3 1408/1170/3 +f 1372/1171/3 1368/1168/3 1408/1170/3 +f 1411/1175/3 1373/1174/3 1410/1173/3 +f 1373/1174/3 1372/1171/3 1410/1173/3 +f 1413/1178/3 1365/1177/3 1412/1176/3 +f 1365/1177/3 1373/1174/3 1412/1176/3 +f 1497/1304/3 1512/1356/3 1414/1179/3 +f 1512/1356/3 1365/1177/3 1414/1179/3 +f 1415/1180/4 1500/1439/4 1416/1181/4 +f 1394/1183/21 1421/1189/21 1418/1184/21 +f 1397/1186/24 1376/1440/24 1419/1187/24 +f 1397/1186/2 1420/1188/2 1421/1189/2 +f 1420/1188/153 1419/1441/153 1418/1190/153 +f 1422/1191/13 1566/1442/13 1423/1192/13 +f 1425/1194/1 1429/1198/1 1426/1195/1 +f 1428/1197/154 1423/1192/154 1566/1442/154 +f 1566/1442/154 1429/1198/154 1428/1197/154 +f 1429/1198/154 1425/1194/154 1430/1199/154 +f 1430/1199/155 1432/1202/155 1431/1200/155 +f 1425/1201/156 1427/1443/156 1432/1202/156 +f 1423/1203/157 1428/1197/157 1431/1200/157 +f 1374/1205/2 1565/1444/2 1433/1206/2 +f 1434/1207/5 1438/1211/5 1435/1208/5 +f 1437/1210/2 1435/1208/2 1438/1211/2 +f 1440/1213/4 1434/1207/4 1436/1209/4 +f 1439/1215/13 1438/1211/13 1434/1207/13 +f 1441/1217/1 1436/1209/1 1435/1208/1 +f 1442/1219/4 1448/1225/4 1443/1220/4 +f 1447/1224/1 1452/1229/1 1445/1222/1 +f 1445/1222/1 1457/1445/1 1446/1223/1 +f 1448/1225/5 1450/1446/5 1449/1226/5 +f 1442/1219/13 1502/1447/13 1450/1227/13 +f 1443/1220/1 1449/1448/1 1451/1228/1 +f 1452/1229/41 1455/1234/41 1453/1230/41 +f 1446/1231/5 1456/1236/5 1454/1232/5 +f 1458/1238/13 1453/1230/13 1456/1236/13 +f 1453/1230/13 1455/1234/13 1456/1236/13 +f 1453/1230/38 1458/1449/38 1457/1237/38 +f 1458/1238/40 1456/1236/40 1446/1231/40 +f 1452/1229/39 1447/1450/39 1454/1240/39 +f 1459/1241/1 1465/1451/1 1460/1242/1 +f 1462/1244/158 1567/1452/158 1463/1245/158 +f 1465/1247/159 1568/1453/159 1466/1248/159 +f 1467/1249/4 1509/1346/4 1468/1250/4 +f 1469/1251/22 1483/1454/22 1470/1252/22 +f 1399/1254/23 1495/1455/23 1472/1255/23 +f 1395/1155/22 1381/1140/22 1473/1257/22 +f 1381/1140/22 1512/1353/22 1469/1251/22 +f 1512/1353/22 1506/1352/22 1483/1454/22 +f 1483/1454/22 1469/1251/22 1512/1353/22 +f 1476/1348/22 1467/1249/22 1470/1252/22 +f 1467/1249/22 1395/1155/22 1470/1252/22 +f 1395/1155/22 1474/1258/22 1471/1253/22 +f 1403/1259/24 1402/1456/24 1475/1260/24 +f 1477/1262/23 1492/1350/23 1404/1263/23 +f 1396/1265/23 1393/1153/23 1478/1266/23 +f 1479/1267/23 1491/1343/23 1478/1266/23 +f 1477/1268/160 1478/1292/160 1480/1269/160 +f 1469/1271/23 1489/1457/23 1482/1272/23 +f 1483/1274/161 1490/1458/161 1484/1275/161 +f 1482/1272/22 1489/1457/22 1485/1277/22 +f 1487/1279/5 1569/1459/5 1401/1280/5 +f 1481/1282/23 1480/1269/23 1488/1283/23 +f 1471/1284/162 1485/1277/162 1489/1285/162 +f 1483/1289/23 1506/1460/23 1401/1287/23 +f 1401/1287/23 1569/1459/23 1490/1288/23 +f 1474/1290/163 1473/1461/163 1482/1291/163 +f 1474/1290/24 1486/1278/24 1485/1277/24 +f 1399/1294/21 1488/1283/21 1480/1269/21 +f 1480/1269/21 1478/1292/21 1399/1294/21 +f 1477/1297/22 1481/1282/22 1400/1295/22 +f 1481/1282/22 1398/1159/22 1400/1295/22 +f 1490/1288/22 1569/1459/22 1487/1279/22 +f 1476/1462/24 1470/1276/24 1403/1298/24 +f 1470/1276/24 1484/1275/24 1403/1298/24 +f 1417/1299/1 1416/1463/1 1493/1300/1 +f 1405/1166/3 1472/1357/3 1495/1302/3 +f 1497/1304/3 1501/1310/3 1402/1305/3 +f 1493/1464/3 1416/1465/3 1479/1308/3 +f 1416/1465/3 1496/1303/3 1495/1302/3 +f 1479/1308/3 1416/1465/3 1495/1302/3 +f 1496/1303/3 1416/1465/3 1500/1309/3 +f 1451/1311/2 1449/1466/2 1450/1312/2 +f 1417/1316/1 1494/1467/1 1505/1468/1 +f 1505/1468/1 1503/1314/1 1417/1316/1 +f 1395/1155/4 1468/1250/4 1505/1317/4 +f 1479/1267/4 1393/1153/4 1505/1317/4 +f 1506/1319/23 1513/1469/23 1498/1320/23 +f 1503/1322/4 1508/1470/4 1507/1323/4 +f 1417/1325/5 1504/1471/5 1507/1326/5 +f 1468/1328/3 1508/1472/3 1503/1329/3 +f 1508/1333/13 1468/1473/13 1415/1331/13 +f 1468/1473/13 1509/1474/13 1415/1331/13 +f 1509/1334/13 1511/1475/13 1500/1335/13 +f 1491/1337/21 1499/1476/21 1495/1338/21 +f 1400/1340/22 1472/1477/22 1510/1341/22 +f 1501/1310/3 1500/1309/3 1402/1305/3 +f 1500/1309/3 1511/1478/3 1467/1355/3 +f 1467/1355/3 1475/1479/3 1402/1305/3 +f 1498/1306/3 1513/1480/3 1512/1356/3 +f 1404/1165/3 1510/1481/3 1472/1357/3 +f 1514/1358/2 1528/1372/2 1515/1359/2 +f 1517/1361/4 1526/1370/4 1518/1362/4 +f 1520/1364/1 1529/1374/1 1521/1365/1 +f 1523/1367/13 1527/1371/13 1524/1368/13 +f 1525/1369/23 1524/1368/23 1526/1370/23 +f 1527/1371/21 1523/1367/21 1515/1359/21 +f 1516/1373/24 1521/1365/24 1529/1374/24 +f 1518/1362/22 1520/1364/22 1522/1366/22 +f 1544/1398/3 1523/1397/3 1531/1378/3 +f 1523/1397/3 1525/1376/3 1531/1378/3 +f 1530/1377/3 1525/1376/3 1533/1381/3 +f 1525/1376/3 1517/1379/3 1533/1381/3 +f 1532/1380/3 1517/1379/3 1535/1384/3 +f 1517/1379/3 1519/1382/3 1535/1384/3 +f 1534/1383/3 1519/1382/3 1537/1387/3 +f 1519/1382/3 1522/1385/3 1537/1387/3 +f 1536/1386/3 1522/1385/3 1539/1390/3 +f 1522/1385/3 1521/1388/3 1539/1390/3 +f 1538/1389/3 1521/1388/3 1541/1393/3 +f 1521/1388/3 1516/1391/3 1541/1393/3 +f 1540/1392/3 1516/1391/3 1543/1396/3 +f 1516/1391/3 1515/1394/3 1543/1396/3 +f 1542/1395/3 1515/1394/3 1545/1399/3 +f 1515/1394/3 1523/1397/3 1545/1399/3 +f 1548/1402/3 1570/1482/3 1571/1483/3 +f 1571/1483/3 1572/1484/3 1573/1485/3 +f 1573/1485/3 1574/1486/3 1575/1487/3 +f 1575/1487/3 1576/1488/3 1546/1400/3 +f 1546/1400/3 1577/1489/3 1578/1490/3 +f 1578/1490/3 1579/1491/3 1547/1401/3 +f 1547/1401/3 1580/1492/3 1581/1493/3 +f 1581/1493/3 1582/1494/3 1548/1402/3 +f 1548/1402/3 1571/1483/3 1546/1400/3 +f 1571/1483/3 1573/1485/3 1546/1400/3 +f 1573/1485/3 1575/1487/3 1546/1400/3 +f 1546/1400/3 1578/1490/3 1547/1401/3 +f 1547/1401/3 1581/1493/3 1548/1402/3 +f 1526/1405/5 1524/1408/5 1549/1403/5 +f 1524/1408/5 1552/1407/5 1549/1403/5 +f 1524/1408/5 1527/1411/5 1551/1406/5 +f 1527/1411/5 1554/1410/5 1551/1406/5 +f 1527/1411/5 1528/1414/5 1553/1409/5 +f 1528/1414/5 1556/1413/5 1553/1409/5 +f 1528/1414/5 1514/1417/5 1555/1412/5 +f 1514/1417/5 1558/1416/5 1555/1412/5 +f 1514/1417/5 1529/1420/5 1557/1415/5 +f 1529/1420/5 1560/1419/5 1557/1415/5 +f 1529/1420/5 1520/1423/5 1559/1418/5 +f 1520/1423/5 1562/1422/5 1559/1418/5 +f 1520/1423/5 1518/1426/5 1561/1421/5 +f 1518/1426/5 1564/1425/5 1561/1421/5 +f 1518/1426/5 1526/1405/5 1563/1424/5 +f 1526/1405/5 1550/1404/5 1563/1424/5 +s 1 +f 791/1495/166 792/1496/167 793/1497/168 +f 794/1498/19 795/1499/169 796/1500/170 +f 797/1501/171 798/1502/172 799/1503/173 +f 800/1504/174 801/1505/175 797/1501/171 +f 802/1506/17 793/1497/168 803/1507/176 +f 804/1508/177 795/1499/169 792/1496/167 +f 794/1498/19 798/1502/172 805/1509/178 +f 802/1510/17 806/1511/179 800/1504/174 +f 798/1502/172 807/1512/180 808/1513/181 +f 805/1509/178 809/1514/182 795/1499/169 +f 792/1496/167 810/1515/183 793/1497/168 +f 803/1516/176 811/1517/184 806/1511/179 +f 805/1509/178 808/1513/181 812/1518/185 +f 795/1499/169 813/1519/186 792/1496/167 +f 803/1507/176 810/1515/183 814/1520/14 +f 801/1505/175 811/1517/184 807/1512/180 +f 814/1520/14 815/1521/187 816/1522/5 +f 807/1512/180 817/1523/188 818/1524/189 +f 807/1512/180 819/1525/190 808/1513/181 +f 812/1518/185 820/1526/191 809/1514/182 +f 813/1519/186 815/1521/187 810/1515/183 +f 814/1527/14 817/1523/188 811/1517/184 +f 812/1518/185 819/1525/190 821/1528/3 +f 813/1519/186 820/1526/191 822/1529/192 +f 819/1525/190 823/1530/193 821/1528/3 +f 822/1529/192 824/1531/194 825/1532/195 +f 816/1522/5 826/1533/196 827/1534/197 +f 817/1523/188 828/1535/198 818/1524/189 +f 818/1524/189 829/1536/199 819/1525/190 +f 820/1526/191 823/1530/193 824/1531/194 +f 815/1521/187 825/1532/195 826/1533/196 +f 816/1537/5 830/1538/200 817/1523/188 +f 831/1539/201 46/74/202 832/1540/202 +f 833/1541/203 48/76/204 834/1542/204 +f 835/1543/205 42/70/206 50/78/205 +f 836/1544/207 40/68/208 837/1545/208 +f 831/1539/201 48/942/204 52/80/201 +f 833/1541/203 50/78/205 37/65/203 +f 837/1545/208 42/70/206 838/1546/206 +f 832/1540/202 43/71/207 836/1544/207 +f 54/1547/206 60/89/205 59/88/206 +f 45/73/207 56/85/202 58/87/207 +f 54/1547/206 64/948/208 738/1548/208 +f 47/75/201 56/85/202 44/72/202 +f 55/1549/207 64/93/208 66/96/207 +f 49/81/204 62/91/201 47/75/201 +f 55/1549/207 68/98/202 739/1550/202 +f 39/67/209 61/94/204 49/77/204 +f 51/79/208 58/87/207 71/101/208 +f 53/1551/203 60/89/205 737/1552/205 +f 51/79/208 69/99/206 41/69/206 +f 53/1551/203 70/100/204 57/86/203 +f 38/66/205 69/99/206 65/95/205 +f 740/1553/201 70/100/204 741/1554/204 +f 38/66/205 63/92/209 39/67/209 +f 740/1553/201 68/98/202 67/97/201 +f 839/1555/210 82/114/211 840/1556/211 +f 841/1557/202 88/120/212 842/1558/212 +f 843/1559/213 93/127/214 844/1560/214 +f 845/1561/205 96/130/215 846/1562/215 +f 840/1556/211 87/119/202 841/1557/202 +f 842/1558/212 91/124/213 843/1563/213 +f 844/1560/214 95/129/205 845/1561/205 +f 846/1562/215 80/112/210 839/1555/210 +f 98/951/210 103/962/211 81/113/211 +f 85/1564/213 111/157/212 742/1565/212 +f 84/1566/214 101/136/213 85/1567/213 +f 81/957/211 747/963/202 86/118/202 +f 83/1568/205 99/139/214 84/1569/214 +f 86/121/202 104/140/212 89/122/212 +f 746/1570/215 102/141/205 83/1571/205 +f 89/958/212 106/143/213 90/123/213 +f 97/961/215 100/969/210 98/133/210 +f 742/1572/212 110/154/202 743/1573/202 +f 94/131/205 113/968/215 97/132/215 +f 743/1574/202 109/151/211 744/1575/211 +f 92/960/214 112/967/205 94/128/205 +f 744/1576/211 107/147/210 745/1577/210 +f 90/959/213 108/146/214 92/126/214 +f 745/1578/210 105/144/215 746/1579/215 +f 847/1580/216 848/1581/217 849/1582/218 +f 850/1583/219 851/1584/220 852/1585/221 +f 853/1586/222 854/1587/223 855/1588/224 +f 856/1589/225 857/1590/226 858/1591/227 +f 857/1590/226 853/1586/222 855/1588/224 +f 859/1592/228 856/1589/225 858/1591/227 +f 860/1593/229 861/1594/230 853/1586/222 +f 862/1595/231 863/1596/232 856/1589/225 +f 853/1586/222 864/1597/233 865/1598/234 +f 863/1596/232 860/1593/229 856/1589/225 +f 866/1599/235 867/1600/223 868/1601/224 +f 869/1602/236 870/1603/226 871/1604/227 +f 870/1603/226 866/1599/235 868/1601/224 +f 872/1605/231 871/1604/227 873/1606/237 +f 874/1607/229 875/1608/230 866/1599/235 +f 872/1605/231 876/1609/232 869/1602/236 +f 875/1608/230 877/1610/234 866/1599/235 +f 876/1609/232 874/1607/229 869/1602/236 +f 878/1611/222 879/1612/223 880/1613/224 +f 881/1614/236 882/1615/226 883/1616/227 +f 882/1615/226 878/1611/222 880/1613/224 +f 884/1617/231 883/1616/227 885/1618/228 +f 886/1619/229 887/1620/230 878/1611/222 +f 888/1621/238 881/1614/236 884/1617/231 +f 878/1611/222 889/1622/233 890/1623/234 +f 891/1624/232 886/1619/229 881/1614/236 +f 854/1587/223 892/1625/4 855/1588/224 +f 867/1600/223 893/1626/4 868/1601/224 +f 855/1588/224 894/1627/22 857/1590/226 +f 857/1590/226 895/1628/1 858/1591/227 +f 879/1612/223 896/1629/4 880/1613/224 +f 868/1601/224 897/1630/22 870/1603/226 +f 858/1591/227 898/1631/214 859/1592/228 +f 870/1603/226 899/1632/1 871/1604/227 +f 880/1613/224 900/1633/22 882/1615/226 +f 882/1615/226 901/1634/1 883/1616/227 +f 871/1604/227 902/1635/214 873/1606/237 +f 883/1616/227 903/1636/214 885/1618/228 +f 847/1580/216 851/1584/220 904/1637/239 +f 905/1638/240 848/1581/217 906/1639/241 +f 904/1637/239 907/1640/242 908/1641/243 +f 906/1639/241 909/1642/244 910/1643/245 +f 851/1584/220 911/1644/246 907/1640/242 +f 904/1637/239 909/1642/244 848/1581/217 +f 912/1645/219 913/1646/247 914/1647/221 +f 915/1648/216 916/1649/248 917/1650/218 +f 915/1648/216 913/1646/247 918/1651/239 +f 917/1650/218 919/1652/241 920/1653/249 +f 918/1651/239 921/1654/242 922/1655/243 +f 919/1652/241 923/1656/244 924/1657/245 +f 925/1658/250 921/1654/242 913/1646/247 +f 918/1651/239 923/1656/244 916/1649/248 +f 926/1659/219 927/1660/220 928/1661/221 +f 929/1662/216 930/1663/248 931/1664/218 +f 929/1662/216 927/1660/220 932/1665/239 +f 931/1664/218 933/1666/241 934/1667/240 +f 932/1665/239 935/1668/242 936/1669/243 +f 930/1663/248 937/1670/245 933/1666/241 +f 927/1660/220 938/1671/246 935/1668/242 +f 932/1665/239 939/1672/244 930/1663/248 +f 940/1673/4 850/1583/219 852/1585/221 +f 941/1674/4 912/1645/219 914/1647/221 +f 942/1675/23 852/1585/221 847/1580/216 +f 943/1676/13 847/1580/216 849/1582/218 +f 944/1677/4 926/1659/219 928/1661/221 +f 945/1678/23 914/1647/221 915/1648/216 +f 946/1679/202 849/1582/218 905/1638/240 +f 947/1680/13 915/1648/216 917/1650/218 +f 948/1681/23 928/1661/221 929/1662/216 +f 949/1682/13 929/1662/216 931/1664/218 +f 950/1683/202 917/1650/218 920/1653/249 +f 951/1684/202 931/1664/218 934/1667/240 +f 952/1685/251 953/1686/252 954/1687/253 +f 955/1688/15 956/1689/254 957/1690/255 +f 958/1691/256 959/1692/257 960/1693/258 +f 961/1694/259 962/1695/260 958/1691/256 +f 963/1696/16 954/1687/253 964/1697/261 +f 957/1690/255 953/1686/252 965/1698/262 +f 955/1688/15 959/1692/257 966/1699/263 +f 963/1700/16 967/1701/264 961/1694/259 +f 959/1692/257 968/1702/265 969/1703/266 +f 966/1699/263 970/1704/267 956/1689/254 +f 953/1686/252 971/1705/268 954/1687/253 +f 964/1706/261 972/1707/269 967/1701/264 +f 966/1699/263 969/1703/266 973/1708/18 +f 956/1689/254 974/1709/270 953/1686/252 +f 964/1697/261 971/1705/268 975/1710/20 +f 962/1695/260 972/1707/269 968/1702/265 +f 975/1710/20 976/1711/188 977/1712/5 +f 968/1702/265 978/1713/187 979/1714/192 +f 968/1702/265 980/1715/271 969/1703/266 +f 973/1708/18 981/1716/272 970/1704/267 +f 974/1709/270 976/1711/188 971/1705/268 +f 975/1717/20 978/1713/187 972/1707/269 +f 973/1708/18 980/1715/271 982/1718/3 +f 974/1709/270 981/1716/272 983/1719/189 +f 980/1715/271 984/1720/273 982/1718/3 +f 983/1719/189 985/1721/274 986/1722/275 +f 977/1712/5 987/1723/276 988/1724/277 +f 978/1713/187 989/1725/278 979/1714/192 +f 979/1714/192 990/1726/279 980/1715/271 +f 981/1716/272 984/1720/273 985/1721/274 +f 976/1711/188 986/1722/275 987/1723/276 +f 977/1727/5 991/1728/280 978/1713/187 +f 992/1729/281 372/529/205 993/1730/205 +f 994/1731/282 374/531/283 995/1732/283 +f 996/1733/202 368/525/284 376/533/202 +f 997/1734/285 366/523/286 998/1735/286 +f 992/1729/281 374/1037/283 378/535/281 +f 994/1731/282 376/533/202 363/520/282 +f 998/1735/286 368/525/284 999/1736/284 +f 993/1730/205 369/526/285 997/1734/285 +f 380/1737/284 386/544/202 385/543/284 +f 371/528/285 382/540/205 384/542/285 +f 380/1737/284 390/1043/286 754/1738/286 +f 373/530/281 382/540/205 370/527/205 +f 381/1739/285 390/548/286 392/551/285 +f 375/536/283 388/546/281 373/530/281 +f 381/1739/285 391/550/205 755/1740/205 +f 365/522/287 387/549/283 375/532/283 +f 377/534/286 384/542/285 397/556/286 +f 379/1741/282 386/544/202 753/1742/202 +f 377/534/286 395/554/284 367/524/284 +f 379/1741/282 396/555/283 383/541/282 +f 364/521/202 395/554/284 393/552/202 +f 756/1743/281 396/555/283 757/1744/283 +f 364/521/202 389/547/287 365/522/287 +f 756/1743/281 391/550/205 394/553/281 +f 1000/1745/288 1001/1746/289 1002/1747/290 +f 1003/1748/291 1004/1749/292 1005/1750/293 +f 1006/1751/294 1007/1752/295 1008/1753/296 +f 1009/1754/297 1010/1755/298 1006/1751/294 +f 1011/1756/299 1002/1747/290 1012/1757/300 +f 1005/1750/293 1001/1746/289 1013/1758/301 +f 1003/1748/291 1007/1752/295 1014/1759/302 +f 1011/1760/299 1015/1761/303 1009/1754/297 +f 1007/1752/295 1016/1762/304 1017/1763/305 +f 1014/1759/302 1018/1764/306 1004/1749/292 +f 1001/1746/289 1019/1765/307 1002/1747/290 +f 1012/1766/300 1020/1767/308 1015/1761/303 +f 1014/1759/302 1017/1763/305 1021/1768/309 +f 1004/1749/292 1022/1769/310 1001/1746/289 +f 1012/1757/300 1019/1765/307 1023/1770/311 +f 1010/1755/298 1020/1767/308 1016/1762/304 +f 1023/1770/311 1024/1771/312 1025/1772/5 +f 1016/1762/304 1026/1773/313 1027/1774/314 +f 1016/1762/304 1028/1775/315 1017/1763/305 +f 1021/1768/309 1029/1776/316 1018/1764/306 +f 1022/1769/310 1024/1771/312 1019/1765/307 +f 1023/1777/311 1026/1773/313 1020/1767/308 +f 1021/1768/309 1028/1775/315 1030/1778/3 +f 1022/1769/310 1029/1776/316 1031/1779/317 +f 1028/1775/315 1032/1780/318 1030/1778/3 +f 1031/1779/317 1033/1781/319 1034/1782/320 +f 1025/1772/5 1035/1783/321 1036/1784/322 +f 1026/1773/313 1037/1785/323 1027/1774/314 +f 1027/1774/314 1038/1786/324 1028/1775/315 +f 1029/1776/316 1032/1780/318 1033/1781/319 +f 1024/1771/312 1034/1782/320 1035/1783/321 +f 1025/1787/5 1039/1788/325 1026/1773/313 +f 1040/1789/326 407/566/213 1041/1790/213 +f 1042/1791/327 409/568/328 1043/1792/328 +f 1044/1793/210 403/562/329 411/570/210 +f 1045/1794/330 401/560/331 1046/1795/331 +f 1040/1789/326 409/1044/328 413/572/326 +f 1042/1791/327 411/570/210 398/557/327 +f 1047/1796/329 401/560/331 403/562/329 +f 1041/1790/213 404/563/330 1045/1794/330 +f 415/1797/329 421/581/210 420/580/329 +f 406/565/330 417/577/213 419/579/330 +f 415/1797/329 425/1050/331 759/1798/331 +f 408/567/326 417/577/213 405/564/213 +f 416/1799/330 425/585/331 427/588/330 +f 410/573/328 423/583/326 408/567/326 +f 416/1799/330 429/590/213 760/1800/213 +f 400/559/332 422/586/328 410/569/328 +f 412/571/331 419/579/330 432/593/331 +f 414/1801/327 421/581/210 758/1802/210 +f 412/571/331 430/591/333 402/561/329 +f 414/1801/327 431/592/328 418/578/327 +f 402/561/329 426/587/210 399/558/210 +f 761/1803/326 431/592/328 762/1804/328 +f 399/558/210 424/584/332 400/559/332 +f 761/1803/326 429/590/213 428/589/326 +f 1048/1805/334 1049/1806/335 1050/1807/336 +f 1051/1808/337 1052/1809/338 1053/1810/339 +f 1054/1811/340 1055/1812/341 1056/1813/342 +f 1057/1814/343 1058/1815/344 1054/1811/340 +f 1059/1816/345 1050/1807/336 1060/1817/346 +f 1061/1818/347 1052/1809/338 1049/1806/335 +f 1051/1808/337 1055/1812/341 1062/1819/348 +f 1059/1820/345 1063/1821/349 1057/1814/343 +f 1055/1812/341 1064/1822/350 1065/1823/351 +f 1062/1819/348 1066/1824/352 1052/1809/338 +f 1049/1806/335 1067/1825/353 1050/1807/336 +f 1060/1826/346 1068/1827/354 1063/1821/349 +f 1062/1819/348 1065/1823/351 1069/1828/355 +f 1052/1809/338 1070/1829/356 1049/1806/335 +f 1060/1817/346 1067/1825/353 1071/1830/357 +f 1058/1815/344 1068/1827/354 1064/1822/350 +f 1071/1830/357 1072/1831/313 1073/1832/5 +f 1064/1822/350 1074/1833/312 1075/1834/317 +f 1064/1822/350 1076/1835/358 1065/1823/351 +f 1069/1828/355 1077/1836/359 1066/1824/352 +f 1070/1829/356 1072/1831/313 1067/1825/353 +f 1071/1837/357 1074/1833/312 1068/1827/354 +f 1069/1828/355 1076/1835/358 1078/1838/3 +f 1070/1829/356 1077/1836/359 1079/1839/314 +f 1076/1835/358 1080/1840/360 1078/1838/3 +f 1079/1839/314 1081/1841/361 1082/1842/362 +f 1073/1832/5 1083/1843/363 1084/1844/364 +f 1074/1833/312 1085/1845/365 1075/1834/317 +f 1075/1834/317 1086/1846/366 1076/1835/358 +f 1077/1836/359 1080/1840/360 1081/1841/361 +f 1072/1831/313 1082/1842/362 1083/1843/363 +f 1073/1847/5 1087/1848/367 1074/1833/312 +f 1088/1849/368 442/603/210 1089/1850/210 +f 1090/1851/369 444/605/370 1091/1852/370 +f 1092/1853/213 438/599/371 446/607/213 +f 1093/1854/372 439/600/373 436/597/372 +f 1088/1849/368 444/1051/370 448/609/368 +f 1090/1851/369 446/607/213 433/594/369 +f 1093/1854/372 438/599/371 1094/1855/371 +f 1089/1850/210 439/600/373 1095/1856/373 +f 450/1857/371 456/618/213 455/617/371 +f 441/602/373 452/614/210 454/616/373 +f 450/1857/371 460/1057/372 764/1858/372 +f 443/604/368 452/614/210 440/601/210 +f 451/1859/373 460/622/372 462/625/373 +f 445/610/370 458/620/368 443/604/368 +f 451/1859/373 464/627/210 765/1860/210 +f 435/596/374 457/623/370 445/606/370 +f 447/608/372 454/616/373 467/630/372 +f 449/1861/369 456/618/213 763/1862/213 +f 447/608/372 465/628/375 437/598/375 +f 449/1861/369 466/629/370 453/615/369 +f 437/598/375 461/624/213 434/595/213 +f 766/1863/368 466/629/370 767/1864/370 +f 434/595/213 459/621/374 435/596/374 +f 766/1863/368 464/627/210 463/626/368 +f 1096/1865/376 1097/1866/377 1098/1867/378 +f 1099/1868/379 1100/1869/380 1101/1870/381 +f 1102/1871/382 1103/1872/383 1104/1873/384 +f 1105/1874/385 1106/1875/386 1102/1871/382 +f 1107/1876/387 1098/1867/378 1108/1877/388 +f 1109/1878/389 1100/1869/380 1097/1866/377 +f 1099/1868/379 1103/1872/383 1110/1879/390 +f 1107/1880/387 1111/1881/391 1105/1874/385 +f 1103/1872/383 1112/1882/392 1113/1883/393 +f 1110/1879/390 1114/1884/394 1100/1869/380 +f 1097/1866/377 1115/1885/395 1098/1867/378 +f 1108/1886/388 1116/1887/396 1111/1881/391 +f 1110/1879/390 1113/1883/393 1117/1888/243 +f 1100/1869/380 1118/1889/397 1097/1866/377 +f 1108/1877/388 1115/1885/395 1119/1890/398 +f 1106/1875/386 1116/1887/396 1112/1882/392 +f 1119/1890/398 1120/1891/399 1121/1892/5 +f 1112/1882/392 1122/1893/400 1123/1894/401 +f 1112/1882/392 1124/1895/402 1113/1883/393 +f 1117/1888/243 1125/1896/403 1114/1884/394 +f 1118/1889/397 1120/1891/399 1115/1885/395 +f 1119/1897/398 1122/1893/400 1116/1887/396 +f 1117/1888/243 1124/1895/402 1126/1898/3 +f 1118/1889/397 1125/1896/403 1127/1899/404 +f 1124/1895/402 1128/1900/405 1126/1898/3 +f 1127/1899/404 1129/1901/406 1130/1902/407 +f 1121/1892/5 1131/1903/408 1132/1904/409 +f 1122/1893/400 1133/1905/410 1123/1894/401 +f 1123/1894/401 1134/1906/411 1124/1895/402 +f 1125/1896/403 1128/1900/405 1129/1901/406 +f 1120/1891/399 1130/1902/407 1131/1903/408 +f 1121/1907/5 1135/1908/412 1122/1893/400 +f 1136/1909/413 477/640/212 1137/1910/212 +f 1138/1911/414 479/642/415 1139/1912/415 +f 1140/1913/215 473/636/416 481/644/215 +f 1141/1914/417 471/634/418 1142/1915/418 +f 1136/1909/413 479/1058/415 483/646/413 +f 1138/1911/414 481/644/215 468/631/414 +f 1143/1916/416 471/634/418 473/636/416 +f 1137/1910/212 474/637/417 1141/1914/417 +f 485/1917/416 491/655/215 490/654/419 +f 476/639/417 487/651/212 489/653/417 +f 485/1917/416 495/1064/418 769/1918/418 +f 478/641/413 487/651/212 475/638/212 +f 486/1919/417 495/659/418 497/662/417 +f 480/647/415 493/657/413 478/641/413 +f 486/1919/417 499/664/212 770/1920/212 +f 470/633/420 492/660/415 480/643/415 +f 482/645/418 489/653/417 502/667/418 +f 484/1921/414 491/655/215 768/1922/215 +f 482/645/418 500/665/416 472/635/419 +f 484/1921/414 501/666/415 488/652/414 +f 472/635/419 496/661/215 469/632/215 +f 771/1923/413 501/666/415 772/1924/415 +f 469/632/215 494/658/420 470/633/420 +f 771/1923/413 499/664/212 498/663/413 +f 1144/1925/421 1145/1926/422 1146/1927/423 +f 1147/1928/424 1148/1929/425 1149/1930/426 +f 1150/1931/427 1151/1932/428 1152/1933/429 +f 1153/1934/430 1154/1935/431 1150/1931/427 +f 1155/1936/432 1146/1927/423 1156/1937/433 +f 1157/1938/434 1148/1929/425 1145/1926/422 +f 1152/1933/429 1158/1939/435 1147/1928/424 +f 1155/1940/432 1159/1941/436 1153/1934/430 +f 1151/1932/428 1160/1942/437 1161/1943/438 +f 1158/1939/435 1162/1944/439 1148/1929/425 +f 1145/1926/422 1163/1945/440 1146/1927/423 +f 1156/1946/433 1164/1947/441 1159/1941/436 +f 1158/1939/435 1161/1943/438 1165/1948/442 +f 1148/1929/425 1166/1949/443 1145/1926/422 +f 1156/1937/433 1163/1945/440 1167/1950/444 +f 1154/1935/431 1164/1947/441 1160/1942/437 +f 1163/1945/440 1168/1951/5 1167/1950/444 +f 1160/1942/437 1169/1952/399 1170/1953/404 +f 1160/1942/437 1171/1954/403 1161/1943/438 +f 1165/1948/442 1172/1955/402 1162/1944/439 +f 1166/1949/443 1173/1956/400 1163/1945/440 +f 1167/1957/444 1169/1952/399 1164/1947/441 +f 1165/1948/442 1171/1954/403 1174/1958/3 +f 1166/1949/443 1172/1955/402 1175/1959/401 +f 1171/1954/403 1176/1960/445 1174/1958/3 +f 1175/1959/401 1177/1961/446 1178/1962/447 +f 1168/1951/5 1179/1963/448 1180/1964/449 +f 1169/1952/399 1181/1965/450 1170/1953/404 +f 1170/1953/404 1182/1966/451 1171/1954/403 +f 1172/1955/402 1176/1960/445 1177/1961/446 +f 1173/1956/400 1178/1962/447 1179/1963/448 +f 1168/1967/5 1183/1968/452 1169/1952/399 +f 1184/1969/453 512/677/215 1185/1970/215 +f 1186/1971/454 514/679/455 1187/1972/455 +f 1188/1973/212 508/673/456 516/681/212 +f 1189/1974/457 506/671/458 1190/1975/458 +f 1184/1969/453 514/1065/455 518/683/453 +f 1186/1971/454 516/681/212 503/668/454 +f 1190/1975/458 508/673/456 1191/1976/456 +f 1185/1970/215 509/674/457 1189/1974/457 +f 520/1977/456 526/692/212 525/691/456 +f 511/676/457 522/688/215 524/690/457 +f 520/1977/456 530/1071/458 774/1978/458 +f 510/675/215 528/694/453 522/688/215 +f 521/1979/457 530/696/458 532/699/457 +f 515/684/455 528/694/453 513/678/453 +f 521/1979/457 534/701/215 775/1980/215 +f 505/670/454 527/697/455 515/680/455 +f 517/682/458 524/690/457 537/704/458 +f 519/1981/454 526/692/212 773/1982/212 +f 517/682/458 535/702/459 507/672/459 +f 519/1981/454 536/703/455 523/689/454 +f 507/672/459 531/698/212 504/669/212 +f 776/1983/453 536/703/455 777/1984/455 +f 504/669/212 529/695/454 505/670/454 +f 776/1983/453 534/701/215 533/700/453 +f 1192/1985/460 1193/1986/461 1194/1987/462 +f 1195/1988/463 1196/1989/464 1197/1990/465 +f 1198/1991/466 1199/1992/467 1200/1993/468 +f 1201/1994/469 1202/1995/470 1198/1991/466 +f 1203/1996/471 1194/1987/462 1204/1997/472 +f 1197/1990/465 1193/1986/461 1205/1998/473 +f 1195/1988/463 1199/1992/467 1206/1999/474 +f 1203/2000/471 1207/2001/475 1201/1994/469 +f 1199/1992/467 1208/2002/476 1209/2003/477 +f 1206/1999/474 1210/2004/478 1196/1989/464 +f 1193/1986/461 1211/2005/479 1194/1987/462 +f 1204/2006/472 1212/2007/480 1207/2001/475 +f 1206/1999/474 1209/2003/477 1213/2008/481 +f 1196/1989/464 1214/2009/482 1193/1986/461 +f 1204/1997/472 1211/2005/479 1215/2010/483 +f 1202/1995/470 1212/2007/480 1208/2002/476 +f 1215/2010/483 1216/2011/484 1217/2012/5 +f 1208/2002/476 1218/2013/485 1219/2014/486 +f 1208/2002/476 1220/2015/487 1209/2003/477 +f 1213/2008/481 1221/2016/488 1210/2004/478 +f 1214/2009/482 1216/2011/484 1211/2005/479 +f 1215/2017/483 1218/2013/485 1212/2007/480 +f 1213/2008/481 1220/2015/487 1222/2018/3 +f 1214/2009/482 1221/2016/488 1223/2019/489 +f 1220/2015/487 1224/2020/490 1222/2018/3 +f 1223/2019/489 1225/2021/491 1226/2022/492 +f 1217/2012/5 1227/2023/493 1228/2024/494 +f 1218/2013/485 1229/2025/495 1219/2014/486 +f 1219/2014/486 1230/2026/496 1220/2015/487 +f 1221/2016/488 1224/2020/490 1225/2021/491 +f 1216/2011/484 1226/2022/492 1227/2023/493 +f 1217/2027/5 1231/2028/497 1218/2013/485 +f 1232/2029/498 547/714/214 1233/2030/214 +f 1234/2031/499 549/716/500 1235/2032/500 +f 1236/2033/211 543/710/501 551/718/211 +f 1237/2034/502 541/708/503 1238/2035/503 +f 1232/2029/498 549/1072/500 553/720/498 +f 1234/2031/499 551/718/211 538/705/499 +f 1238/2035/503 543/710/501 1239/2036/501 +f 1233/2030/214 544/711/502 1237/2034/502 +f 555/2037/501 561/729/211 560/728/504 +f 546/713/502 557/725/214 559/727/502 +f 555/2037/501 565/1078/503 779/2038/503 +f 548/715/498 557/725/214 545/712/214 +f 556/2039/502 565/733/503 567/736/502 +f 550/721/500 563/731/498 548/715/498 +f 556/2039/502 569/738/214 780/2040/214 +f 540/707/499 562/734/500 550/717/500 +f 552/719/503 559/727/502 572/741/503 +f 554/2041/499 561/729/211 778/2042/211 +f 552/719/503 570/739/501 542/709/501 +f 554/2041/499 571/740/500 558/726/499 +f 542/709/501 566/735/211 539/706/211 +f 781/2043/498 571/740/500 782/2044/500 +f 539/706/211 564/732/499 540/707/499 +f 781/2043/498 569/738/214 568/737/498 +f 1240/2045/505 1241/2046/506 1242/2047/507 +f 1243/2048/508 1244/2049/509 1245/2050/510 +f 1246/2051/511 1247/2052/512 1248/2053/513 +f 1249/2054/514 1250/2055/515 1246/2051/511 +f 1251/2056/516 1242/2047/507 1252/2057/517 +f 1253/2058/518 1244/2049/509 1241/2046/506 +f 1243/2048/508 1247/2052/512 1254/2059/519 +f 1251/2060/516 1255/2061/520 1249/2054/514 +f 1247/2052/512 1256/2062/521 1257/2063/522 +f 1254/2059/519 1258/2064/523 1244/2049/509 +f 1241/2046/506 1259/2065/524 1242/2047/507 +f 1252/2066/517 1260/2067/525 1255/2061/520 +f 1247/2052/512 1261/2068/526 1254/2059/519 +f 1244/2049/509 1262/2069/527 1241/2046/506 +f 1252/2057/517 1259/2065/524 1263/2070/528 +f 1250/2055/515 1260/2067/525 1256/2062/521 +f 1263/2070/528 1264/2071/485 1265/2072/5 +f 1256/2062/521 1266/2073/484 1267/2074/489 +f 1256/2062/521 1268/2075/488 1257/2063/522 +f 1261/2068/526 1269/2076/487 1258/2064/523 +f 1262/2069/527 1264/2071/485 1259/2065/524 +f 1263/2077/528 1266/2073/484 1260/2067/525 +f 1261/2068/526 1268/2075/488 1270/2078/3 +f 1262/2069/527 1269/2076/487 1271/2079/486 +f 1268/2075/488 1272/2080/529 1270/2078/3 +f 1271/2079/486 1273/2081/530 1274/2082/531 +f 1265/2072/5 1275/2083/532 1276/2084/533 +f 1266/2073/484 1277/2085/534 1267/2074/489 +f 1267/2074/489 1278/2086/535 1268/2075/488 +f 1269/2076/487 1272/2080/529 1273/2081/530 +f 1264/2071/485 1274/2082/531 1275/2083/532 +f 1265/2087/5 1279/2088/536 1266/2073/484 +f 1280/2089/537 583/752/211 1281/2090/211 +f 1282/2091/538 584/753/539 1283/2092/539 +f 1284/2093/214 578/747/540 586/755/214 +f 1285/2094/541 579/748/542 576/745/541 +f 1280/2089/537 584/1079/539 582/751/537 +f 1282/2091/538 586/755/214 573/742/538 +f 1286/2095/540 576/745/541 578/747/540 +f 1281/2090/211 579/748/542 1287/2096/542 +f 590/2097/540 596/766/214 595/765/543 +f 581/750/542 592/762/211 594/764/542 +f 590/2097/540 600/1085/541 784/2098/541 +f 580/749/211 598/768/537 592/762/211 +f 591/2099/542 600/770/541 602/773/542 +f 585/757/539 598/768/537 588/758/544 +f 591/2099/542 604/775/211 785/2100/211 +f 575/744/545 597/771/539 585/754/539 +f 587/756/541 594/764/542 607/778/541 +f 589/2101/538 596/766/214 783/2102/214 +f 587/756/541 605/776/540 577/746/543 +f 589/2101/538 606/777/539 593/763/538 +f 577/746/543 601/772/214 574/743/214 +f 786/2103/537 606/777/539 787/2104/539 +f 574/743/214 599/769/538 575/744/545 +f 786/2103/537 604/775/211 603/774/537 +f 1288/2105/4 1289/2106/546 1290/2107/23 +f 1291/2108/205 1292/2109/547 1293/2110/22 +f 1290/2107/23 1294/2111/548 1295/2112/211 +f 1293/2110/22 1296/2113/549 1288/2105/4 +f 1292/2109/547 1297/2114/550 1298/2115/551 +f 1289/2106/546 1299/2116/552 1294/2111/548 +f 1292/2109/547 1300/2117/38 1296/2113/549 +f 1289/2106/546 1300/2117/38 1301/2118/553 +f 1300/2117/38 1302/2119/554 1301/2118/553 +f 1298/2115/551 1303/2120/555 1304/2121/556 +f 1301/2118/553 1305/2122/557 1299/2116/552 +f 1300/2117/38 1304/2121/556 1306/2123/185 +f 1307/2124/4 1308/2125/546 1309/2126/23 +f 1310/2127/205 1311/2128/547 1312/2129/22 +f 1309/2126/23 1313/2130/548 1314/2131/211 +f 1312/2129/22 1315/2132/549 1307/2124/4 +f 1311/2128/547 1316/2133/550 1317/2134/551 +f 1308/2125/546 1318/2135/552 1313/2130/548 +f 1311/2128/547 1319/2136/38 1315/2132/549 +f 1308/2125/546 1319/2136/38 1320/2137/553 +f 1319/2136/38 1321/2138/554 1320/2137/553 +f 1317/2134/551 1322/2139/555 1323/2140/556 +f 1320/2137/553 1324/2141/557 1318/2135/552 +f 1317/2134/551 1325/2142/185 1319/2136/38 +f 1326/2143/4 1327/2144/546 1328/2145/23 +f 1329/2146/205 1330/2147/547 1331/2148/22 +f 1328/2145/23 1332/2149/548 1333/2150/211 +f 1331/2148/22 1334/2151/549 1326/2143/4 +f 1330/2147/547 1335/2152/550 1336/2153/551 +f 1327/2144/546 1337/2154/552 1332/2149/548 +f 1330/2147/547 1338/2155/38 1334/2151/549 +f 1327/2144/546 1338/2155/38 1339/2156/553 +f 1338/2155/38 1340/2157/554 1339/2156/553 +f 1336/2153/551 1341/2158/555 1342/2159/556 +f 1339/2156/553 1343/2160/557 1337/2154/552 +f 1336/2153/551 1344/2161/185 1338/2155/38 +f 791/1495/166 804/1508/177 792/1496/167 +f 794/1498/19 805/1509/178 795/1499/169 +f 797/1501/171 801/1505/175 798/1502/172 +f 800/1504/174 806/1511/179 801/1505/175 +f 802/1506/17 791/1495/166 793/1497/168 +f 804/1508/177 796/1500/170 795/1499/169 +f 794/1498/19 799/1503/173 798/1502/172 +f 802/1510/17 803/1516/176 806/1511/179 +f 798/1502/172 801/1505/175 807/1512/180 +f 805/1509/178 812/1518/185 809/1514/182 +f 792/1496/167 813/1519/186 810/1515/183 +f 803/1516/176 814/1527/14 811/1517/184 +f 805/1509/178 798/1502/172 808/1513/181 +f 795/1499/169 809/1514/182 813/1519/186 +f 803/1507/176 793/1497/168 810/1515/183 +f 801/1505/175 806/1511/179 811/1517/184 +f 814/1520/14 810/1515/183 815/1521/187 +f 807/1512/180 811/1517/184 817/1523/188 +f 807/1512/180 818/1524/189 819/1525/190 +f 812/1518/185 821/1528/3 820/1526/191 +f 813/1519/186 822/1529/192 815/1521/187 +f 814/1527/14 816/1537/5 817/1523/188 +f 812/1518/185 808/1513/181 819/1525/190 +f 813/1519/186 809/1514/182 820/1526/191 +f 819/1525/190 829/1536/199 823/1530/193 +f 822/1529/192 820/1526/191 824/1531/194 +f 816/1522/5 815/1521/187 826/1533/196 +f 817/1523/188 830/1538/200 828/1535/198 +f 818/1524/189 828/1535/198 829/1536/199 +f 820/1526/191 821/1528/3 823/1530/193 +f 815/1521/187 822/1529/192 825/1532/195 +f 816/1537/5 827/2162/197 830/1538/200 +f 831/1539/201 52/80/201 46/74/202 +f 833/1541/203 37/65/203 48/76/204 +f 835/1543/205 838/1546/206 42/70/206 +f 836/1544/207 43/71/207 40/68/208 +f 831/1539/201 834/2163/204 48/942/204 +f 833/1541/203 835/1543/205 50/78/205 +f 837/1545/208 40/68/208 42/70/206 +f 832/1540/202 46/74/202 43/71/207 +f 54/1547/206 737/1552/205 60/89/205 +f 45/73/207 44/72/202 56/85/202 +f 54/1547/206 59/88/206 64/948/208 +f 47/75/201 62/91/201 56/85/202 +f 55/1549/207 738/2164/208 64/93/208 +f 49/81/204 61/90/204 62/91/201 +f 55/1549/207 66/96/207 68/98/202 +f 39/67/209 63/92/209 61/94/204 +f 51/79/208 45/73/207 58/87/207 +f 53/1551/203 57/86/203 60/89/205 +f 51/79/208 71/101/208 69/99/206 +f 53/1551/203 741/1554/204 70/100/204 +f 38/66/205 41/69/206 69/99/206 +f 740/1553/201 67/97/201 70/100/204 +f 38/66/205 65/95/205 63/92/209 +f 740/1553/201 739/1550/202 68/98/202 +f 839/1555/210 80/112/210 82/114/211 +f 841/1557/202 87/119/202 88/120/212 +f 843/1559/213 91/125/213 93/127/214 +f 845/1561/205 95/129/205 96/130/215 +f 840/1556/211 82/114/211 87/119/202 +f 842/1558/212 88/120/212 91/124/213 +f 844/1560/214 93/127/214 95/129/205 +f 846/1562/215 96/130/215 80/112/210 +f 98/951/210 100/135/210 103/962/211 +f 85/1564/213 101/155/213 111/157/212 +f 84/1566/214 99/134/214 101/136/213 +f 81/957/211 103/138/211 747/963/202 +f 83/1568/205 102/137/205 99/139/214 +f 86/121/202 747/964/202 104/140/212 +f 746/1570/215 105/142/215 102/141/205 +f 89/958/212 104/965/212 106/143/213 +f 97/961/215 113/156/215 100/969/210 +f 742/1572/212 111/152/212 110/154/202 +f 94/131/205 112/153/205 113/968/215 +f 743/1574/202 110/149/202 109/151/211 +f 92/960/214 108/150/214 112/967/205 +f 744/1576/211 109/148/211 107/147/210 +f 90/959/213 106/966/213 108/146/214 +f 745/1578/210 107/145/210 105/144/215 +f 847/1580/216 904/1637/239 848/1581/217 +f 850/1583/219 1345/2165/250 851/1584/220 +f 853/1586/222 865/1598/234 854/1587/223 +f 856/1589/225 860/1593/229 857/1590/226 +f 857/1590/226 860/1593/229 853/1586/222 +f 859/1592/228 862/1595/231 856/1589/225 +f 860/1593/229 1346/2166/526 861/1594/230 +f 862/1595/231 1347/2167/238 863/1596/232 +f 853/1586/222 861/1594/230 864/1597/233 +f 863/1596/232 1346/2166/526 860/1593/229 +f 866/1599/235 877/1610/234 867/1600/223 +f 869/1602/236 874/1607/229 870/1603/226 +f 870/1603/226 874/1607/229 866/1599/235 +f 872/1605/231 869/1602/236 871/1604/227 +f 874/1607/229 1348/2168/526 875/1608/230 +f 872/1605/231 1349/2169/238 876/1609/232 +f 875/1608/230 1350/2170/233 877/1610/234 +f 876/1609/232 1348/2168/526 874/1607/229 +f 878/1611/222 890/1623/234 879/1612/223 +f 881/1614/236 886/1619/229 882/1615/226 +f 882/1615/226 886/1619/229 878/1611/222 +f 884/1617/231 881/1614/236 883/1616/227 +f 886/1619/229 1351/2171/526 887/1620/230 +f 888/1621/238 891/1624/232 881/1614/236 +f 878/1611/222 887/1620/230 889/1622/233 +f 891/1624/232 1351/2171/526 886/1619/229 +f 854/1587/223 1352/2172/210 892/1625/4 +f 867/1600/223 1353/2173/210 893/1626/4 +f 855/1588/224 892/1625/4 894/1627/22 +f 857/1590/226 894/1627/22 895/1628/1 +f 879/1612/223 1354/2174/210 896/1629/4 +f 868/1601/224 893/1626/4 897/1630/22 +f 858/1591/227 895/1628/1 898/1631/214 +f 870/1603/226 897/1630/22 899/1632/1 +f 880/1613/224 896/1629/4 900/1633/22 +f 882/1615/226 900/1633/22 901/1634/1 +f 871/1604/227 899/1632/1 902/1635/214 +f 883/1616/227 901/1634/1 903/1636/214 +f 847/1580/216 852/1585/221 851/1584/220 +f 905/1638/240 849/1582/218 848/1581/217 +f 904/1637/239 851/1584/220 907/1640/242 +f 906/1639/241 848/1581/217 909/1642/244 +f 851/1584/220 1345/2165/250 911/1644/246 +f 904/1637/239 908/1641/243 909/1642/244 +f 912/1645/219 925/1658/250 913/1646/247 +f 915/1648/216 918/1651/239 916/1649/248 +f 915/1648/216 914/1647/221 913/1646/247 +f 917/1650/218 916/1649/248 919/1652/241 +f 918/1651/239 913/1646/247 921/1654/242 +f 919/1652/241 916/1649/248 923/1656/244 +f 925/1658/250 1355/2175/246 921/1654/242 +f 918/1651/239 922/1655/243 923/1656/244 +f 926/1659/219 1356/2176/250 927/1660/220 +f 929/1662/216 932/1665/239 930/1663/248 +f 929/1662/216 928/1661/221 927/1660/220 +f 931/1664/218 930/1663/248 933/1666/241 +f 932/1665/239 927/1660/220 935/1668/242 +f 930/1663/248 939/1672/244 937/1670/245 +f 927/1660/220 1356/2176/250 938/1671/246 +f 932/1665/239 936/1669/243 939/1672/244 +f 940/1673/4 1357/2177/215 850/1583/219 +f 941/1674/4 1358/2178/215 912/1645/219 +f 942/1675/23 940/1673/4 852/1585/221 +f 943/1676/13 942/1675/23 847/1580/216 +f 944/1677/4 1359/2179/215 926/1659/219 +f 945/1678/23 941/1674/4 914/1647/221 +f 946/1679/202 943/1676/13 849/1582/218 +f 947/1680/13 945/1678/23 915/1648/216 +f 948/1681/23 944/1677/4 928/1661/221 +f 949/1682/13 948/1681/23 929/1662/216 +f 950/1683/202 947/1680/13 917/1650/218 +f 951/1684/202 949/1682/13 931/1664/218 +f 952/1685/251 965/1698/262 953/1686/252 +f 955/1688/15 966/1699/263 956/1689/254 +f 958/1691/256 962/1695/260 959/1692/257 +f 961/1694/259 967/1701/264 962/1695/260 +f 963/1696/16 952/1685/251 954/1687/253 +f 957/1690/255 956/1689/254 953/1686/252 +f 955/1688/15 960/1693/258 959/1692/257 +f 963/1700/16 964/1706/261 967/1701/264 +f 959/1692/257 962/1695/260 968/1702/265 +f 966/1699/263 973/1708/18 970/1704/267 +f 953/1686/252 974/1709/270 971/1705/268 +f 964/1706/261 975/1717/20 972/1707/269 +f 966/1699/263 959/1692/257 969/1703/266 +f 956/1689/254 970/1704/267 974/1709/270 +f 964/1697/261 954/1687/253 971/1705/268 +f 962/1695/260 967/1701/264 972/1707/269 +f 975/1710/20 971/1705/268 976/1711/188 +f 968/1702/265 972/1707/269 978/1713/187 +f 968/1702/265 979/1714/192 980/1715/271 +f 973/1708/18 982/1718/3 981/1716/272 +f 974/1709/270 983/1719/189 976/1711/188 +f 975/1717/20 977/1727/5 978/1713/187 +f 973/1708/18 969/1703/266 980/1715/271 +f 974/1709/270 970/1704/267 981/1716/272 +f 980/1715/271 990/1726/279 984/1720/273 +f 983/1719/189 981/1716/272 985/1721/274 +f 977/1712/5 976/1711/188 987/1723/276 +f 978/1713/187 991/1728/280 989/1725/278 +f 979/1714/192 989/1725/278 990/1726/279 +f 981/1716/272 982/1718/3 984/1720/273 +f 976/1711/188 983/1719/189 986/1722/275 +f 977/1727/5 988/2180/277 991/1728/280 +f 992/1729/281 378/535/281 372/529/205 +f 994/1731/282 363/520/282 374/531/283 +f 996/1733/202 999/1736/284 368/525/284 +f 997/1734/285 369/526/285 366/523/286 +f 992/1729/281 995/2181/283 374/1037/283 +f 994/1731/282 996/1733/202 376/533/202 +f 998/1735/286 366/523/286 368/525/284 +f 993/1730/205 372/529/205 369/526/285 +f 380/1737/284 753/1742/202 386/544/202 +f 371/528/285 370/527/205 382/540/205 +f 380/1737/284 385/543/284 390/1043/286 +f 373/530/281 388/546/281 382/540/205 +f 381/1739/285 754/2182/286 390/548/286 +f 375/536/283 387/545/283 388/546/281 +f 381/1739/285 392/551/285 391/550/205 +f 365/522/287 389/547/287 387/549/283 +f 377/534/286 371/528/285 384/542/285 +f 379/1741/282 383/541/282 386/544/202 +f 377/534/286 397/556/286 395/554/284 +f 379/1741/282 757/1744/283 396/555/283 +f 364/521/202 367/524/284 395/554/284 +f 756/1743/281 394/553/281 396/555/283 +f 364/521/202 393/552/202 389/547/287 +f 756/1743/281 755/1740/205 391/550/205 +f 1000/1745/288 1013/1758/301 1001/1746/289 +f 1003/1748/291 1014/1759/302 1004/1749/292 +f 1006/1751/294 1010/1755/298 1007/1752/295 +f 1009/1754/297 1015/1761/303 1010/1755/298 +f 1011/1756/299 1000/1745/288 1002/1747/290 +f 1005/1750/293 1004/1749/292 1001/1746/289 +f 1003/1748/291 1008/1753/296 1007/1752/295 +f 1011/1760/299 1012/1766/300 1015/1761/303 +f 1007/1752/295 1010/1755/298 1016/1762/304 +f 1014/1759/302 1021/1768/309 1018/1764/306 +f 1001/1746/289 1022/1769/310 1019/1765/307 +f 1012/1766/300 1023/1777/311 1020/1767/308 +f 1014/1759/302 1007/1752/295 1017/1763/305 +f 1004/1749/292 1018/1764/306 1022/1769/310 +f 1012/1757/300 1002/1747/290 1019/1765/307 +f 1010/1755/298 1015/1761/303 1020/1767/308 +f 1023/1770/311 1019/1765/307 1024/1771/312 +f 1016/1762/304 1020/1767/308 1026/1773/313 +f 1016/1762/304 1027/1774/314 1028/1775/315 +f 1021/1768/309 1030/1778/3 1029/1776/316 +f 1022/1769/310 1031/1779/317 1024/1771/312 +f 1023/1777/311 1025/1787/5 1026/1773/313 +f 1021/1768/309 1017/1763/305 1028/1775/315 +f 1022/1769/310 1018/1764/306 1029/1776/316 +f 1028/1775/315 1038/1786/324 1032/1780/318 +f 1031/1779/317 1029/1776/316 1033/1781/319 +f 1025/1772/5 1024/1771/312 1035/1783/321 +f 1026/1773/313 1039/1788/325 1037/1785/323 +f 1027/1774/314 1037/1785/323 1038/1786/324 +f 1029/1776/316 1030/1778/3 1032/1780/318 +f 1024/1771/312 1031/1779/317 1034/1782/320 +f 1025/1787/5 1036/2183/322 1039/1788/325 +f 1040/1789/326 413/572/326 407/566/213 +f 1042/1791/327 398/557/327 409/568/328 +f 1044/1793/210 1047/1796/329 403/562/329 +f 1045/1794/330 404/563/330 401/560/331 +f 1040/1789/326 1043/2184/328 409/1044/328 +f 1042/1791/327 1044/1793/210 411/570/210 +f 1047/1796/329 1046/1795/331 401/560/331 +f 1041/1790/213 407/566/213 404/563/330 +f 415/1797/329 758/1802/210 421/581/210 +f 406/565/330 405/564/213 417/577/213 +f 415/1797/329 420/580/329 425/1050/331 +f 408/567/326 423/583/326 417/577/213 +f 416/1799/330 759/2185/331 425/585/331 +f 410/573/328 422/582/328 423/583/326 +f 416/1799/330 427/588/330 429/590/213 +f 400/559/332 424/584/332 422/586/328 +f 412/571/331 406/565/330 419/579/330 +f 414/1801/327 418/578/327 421/581/210 +f 412/571/331 432/593/331 430/591/333 +f 414/1801/327 762/1804/328 431/592/328 +f 402/561/329 430/591/333 426/587/210 +f 761/1803/326 428/589/326 431/592/328 +f 399/558/210 426/587/210 424/584/332 +f 761/1803/326 760/1800/213 429/590/213 +f 1048/1805/334 1061/1818/347 1049/1806/335 +f 1051/1808/337 1062/1819/348 1052/1809/338 +f 1054/1811/340 1058/1815/344 1055/1812/341 +f 1057/1814/343 1063/1821/349 1058/1815/344 +f 1059/1816/345 1048/1805/334 1050/1807/336 +f 1061/1818/347 1053/1810/339 1052/1809/338 +f 1051/1808/337 1056/1813/342 1055/1812/341 +f 1059/1820/345 1060/1826/346 1063/1821/349 +f 1055/1812/341 1058/1815/344 1064/1822/350 +f 1062/1819/348 1069/1828/355 1066/1824/352 +f 1049/1806/335 1070/1829/356 1067/1825/353 +f 1060/1826/346 1071/1837/357 1068/1827/354 +f 1062/1819/348 1055/1812/341 1065/1823/351 +f 1052/1809/338 1066/1824/352 1070/1829/356 +f 1060/1817/346 1050/1807/336 1067/1825/353 +f 1058/1815/344 1063/1821/349 1068/1827/354 +f 1071/1830/357 1067/1825/353 1072/1831/313 +f 1064/1822/350 1068/1827/354 1074/1833/312 +f 1064/1822/350 1075/1834/317 1076/1835/358 +f 1069/1828/355 1078/1838/3 1077/1836/359 +f 1070/1829/356 1079/1839/314 1072/1831/313 +f 1071/1837/357 1073/1847/5 1074/1833/312 +f 1069/1828/355 1065/1823/351 1076/1835/358 +f 1070/1829/356 1066/1824/352 1077/1836/359 +f 1076/1835/358 1086/1846/366 1080/1840/360 +f 1079/1839/314 1077/1836/359 1081/1841/361 +f 1073/1832/5 1072/1831/313 1083/1843/363 +f 1074/1833/312 1087/1848/367 1085/1845/365 +f 1075/1834/317 1085/1845/365 1086/1846/366 +f 1077/1836/359 1078/1838/3 1080/1840/360 +f 1072/1831/313 1079/1839/314 1082/1842/362 +f 1073/1847/5 1084/2186/364 1087/1848/367 +f 1088/1849/368 448/609/368 442/603/210 +f 1090/1851/369 433/594/369 444/605/370 +f 1092/1853/213 1094/1855/371 438/599/371 +f 1093/1854/372 1095/1856/373 439/600/373 +f 1088/1849/368 1091/2187/370 444/1051/370 +f 1090/1851/369 1092/1853/213 446/607/213 +f 1093/1854/372 436/597/372 438/599/371 +f 1089/1850/210 442/603/210 439/600/373 +f 450/1857/371 763/1862/213 456/618/213 +f 441/602/373 440/601/210 452/614/210 +f 450/1857/371 455/617/371 460/1057/372 +f 443/604/368 458/620/368 452/614/210 +f 451/1859/373 764/2188/372 460/622/372 +f 445/610/370 457/619/370 458/620/368 +f 451/1859/373 462/625/373 464/627/210 +f 435/596/374 459/621/374 457/623/370 +f 447/608/372 441/602/373 454/616/373 +f 449/1861/369 453/615/369 456/618/213 +f 447/608/372 467/630/372 465/628/375 +f 449/1861/369 767/1864/370 466/629/370 +f 437/598/375 465/628/375 461/624/213 +f 766/1863/368 463/626/368 466/629/370 +f 434/595/213 461/624/213 459/621/374 +f 766/1863/368 765/1860/210 464/627/210 +f 1096/1865/376 1109/1878/389 1097/1866/377 +f 1099/1868/379 1110/1879/390 1100/1869/380 +f 1102/1871/382 1106/1875/386 1103/1872/383 +f 1105/1874/385 1111/1881/391 1106/1875/386 +f 1107/1876/387 1096/1865/376 1098/1867/378 +f 1109/1878/389 1101/1870/381 1100/1869/380 +f 1099/1868/379 1104/1873/384 1103/1872/383 +f 1107/1880/387 1108/1886/388 1111/1881/391 +f 1103/1872/383 1106/1875/386 1112/1882/392 +f 1110/1879/390 1117/1888/243 1114/1884/394 +f 1097/1866/377 1118/1889/397 1115/1885/395 +f 1108/1886/388 1119/1897/398 1116/1887/396 +f 1110/1879/390 1103/1872/383 1113/1883/393 +f 1100/1869/380 1114/1884/394 1118/1889/397 +f 1108/1877/388 1098/1867/378 1115/1885/395 +f 1106/1875/386 1111/1881/391 1116/1887/396 +f 1119/1890/398 1115/1885/395 1120/1891/399 +f 1112/1882/392 1116/1887/396 1122/1893/400 +f 1112/1882/392 1123/1894/401 1124/1895/402 +f 1117/1888/243 1126/1898/3 1125/1896/403 +f 1118/1889/397 1127/1899/404 1120/1891/399 +f 1119/1897/398 1121/1907/5 1122/1893/400 +f 1117/1888/243 1113/1883/393 1124/1895/402 +f 1118/1889/397 1114/1884/394 1125/1896/403 +f 1124/1895/402 1134/1906/411 1128/1900/405 +f 1127/1899/404 1125/1896/403 1129/1901/406 +f 1121/1892/5 1120/1891/399 1131/1903/408 +f 1122/1893/400 1135/1908/412 1133/1905/410 +f 1123/1894/401 1133/1905/410 1134/1906/411 +f 1125/1896/403 1126/1898/3 1128/1900/405 +f 1120/1891/399 1127/1899/404 1130/1902/407 +f 1121/1907/5 1132/2189/409 1135/1908/412 +f 1136/1909/413 483/646/413 477/640/212 +f 1138/1911/414 468/631/414 479/642/415 +f 1140/1913/215 1143/1916/416 473/636/416 +f 1141/1914/417 474/637/417 471/634/418 +f 1136/1909/413 1139/2190/415 479/1058/415 +f 1138/1911/414 1140/1913/215 481/644/215 +f 1143/1916/416 1142/1915/418 471/634/418 +f 1137/1910/212 477/640/212 474/637/417 +f 485/1917/416 768/1922/215 491/655/215 +f 476/639/417 475/638/212 487/651/212 +f 485/1917/416 490/654/419 495/1064/418 +f 478/641/413 493/657/413 487/651/212 +f 486/1919/417 769/2191/418 495/659/418 +f 480/647/415 492/656/415 493/657/413 +f 486/1919/417 497/662/417 499/664/212 +f 470/633/420 494/658/420 492/660/415 +f 482/645/418 476/639/417 489/653/417 +f 484/1921/414 488/652/414 491/655/215 +f 482/645/418 502/667/418 500/665/416 +f 484/1921/414 772/1924/415 501/666/415 +f 472/635/419 500/665/416 496/661/215 +f 771/1923/413 498/663/413 501/666/415 +f 469/632/215 496/661/215 494/658/420 +f 771/1923/413 770/1920/212 499/664/212 +f 1144/1925/421 1157/1938/434 1145/1926/422 +f 1147/1928/424 1158/1939/435 1148/1929/425 +f 1150/1931/427 1154/1935/431 1151/1932/428 +f 1153/1934/430 1159/1941/436 1154/1935/431 +f 1155/1936/432 1144/1925/421 1146/1927/423 +f 1157/1938/434 1149/1930/426 1148/1929/425 +f 1152/1933/429 1151/1932/428 1158/1939/435 +f 1155/1940/432 1156/1946/433 1159/1941/436 +f 1151/1932/428 1154/1935/431 1160/1942/437 +f 1158/1939/435 1165/1948/442 1162/1944/439 +f 1145/1926/422 1166/1949/443 1163/1945/440 +f 1156/1946/433 1167/1957/444 1164/1947/441 +f 1158/1939/435 1151/1932/428 1161/1943/438 +f 1148/1929/425 1162/1944/439 1166/1949/443 +f 1156/1937/433 1146/1927/423 1163/1945/440 +f 1154/1935/431 1159/1941/436 1164/1947/441 +f 1163/1945/440 1173/1956/400 1168/1951/5 +f 1160/1942/437 1164/1947/441 1169/1952/399 +f 1160/1942/437 1170/1953/404 1171/1954/403 +f 1165/1948/442 1174/1958/3 1172/1955/402 +f 1166/1949/443 1175/1959/401 1173/1956/400 +f 1167/1957/444 1168/1967/5 1169/1952/399 +f 1165/1948/442 1161/1943/438 1171/1954/403 +f 1166/1949/443 1162/1944/439 1172/1955/402 +f 1171/1954/403 1182/1966/451 1176/1960/445 +f 1175/1959/401 1172/1955/402 1177/1961/446 +f 1168/1951/5 1173/1956/400 1179/1963/448 +f 1169/1952/399 1183/1968/452 1181/1965/450 +f 1170/1953/404 1181/1965/450 1182/1966/451 +f 1172/1955/402 1174/1958/3 1176/1960/445 +f 1173/1956/400 1175/1959/401 1178/1962/447 +f 1168/1967/5 1180/2192/449 1183/1968/452 +f 1184/1969/453 518/683/453 512/677/215 +f 1186/1971/454 503/668/454 514/679/455 +f 1188/1973/212 1191/1976/456 508/673/456 +f 1189/1974/457 509/674/457 506/671/458 +f 1184/1969/453 1187/2193/455 514/1065/455 +f 1186/1971/454 1188/1973/212 516/681/212 +f 1190/1975/458 506/671/458 508/673/456 +f 1185/1970/215 512/677/215 509/674/457 +f 520/1977/456 773/1982/212 526/692/212 +f 511/676/457 510/675/215 522/688/215 +f 520/1977/456 525/691/456 530/1071/458 +f 510/675/215 513/678/453 528/694/453 +f 521/1979/457 774/2194/458 530/696/458 +f 515/684/455 527/693/455 528/694/453 +f 521/1979/457 532/699/457 534/701/215 +f 505/670/454 529/695/454 527/697/455 +f 517/682/458 511/676/457 524/690/457 +f 519/1981/454 523/689/454 526/692/212 +f 517/682/458 537/704/458 535/702/459 +f 519/1981/454 777/1984/455 536/703/455 +f 507/672/459 535/702/459 531/698/212 +f 776/1983/453 533/700/453 536/703/455 +f 504/669/212 531/698/212 529/695/454 +f 776/1983/453 775/1980/215 534/701/215 +f 1192/1985/460 1205/1998/473 1193/1986/461 +f 1195/1988/463 1206/1999/474 1196/1989/464 +f 1198/1991/466 1202/1995/470 1199/1992/467 +f 1201/1994/469 1207/2001/475 1202/1995/470 +f 1203/1996/471 1192/1985/460 1194/1987/462 +f 1197/1990/465 1196/1989/464 1193/1986/461 +f 1195/1988/463 1200/1993/468 1199/1992/467 +f 1203/2000/471 1204/2006/472 1207/2001/475 +f 1199/1992/467 1202/1995/470 1208/2002/476 +f 1206/1999/474 1213/2008/481 1210/2004/478 +f 1193/1986/461 1214/2009/482 1211/2005/479 +f 1204/2006/472 1215/2017/483 1212/2007/480 +f 1206/1999/474 1199/1992/467 1209/2003/477 +f 1196/1989/464 1210/2004/478 1214/2009/482 +f 1204/1997/472 1194/1987/462 1211/2005/479 +f 1202/1995/470 1207/2001/475 1212/2007/480 +f 1215/2010/483 1211/2005/479 1216/2011/484 +f 1208/2002/476 1212/2007/480 1218/2013/485 +f 1208/2002/476 1219/2014/486 1220/2015/487 +f 1213/2008/481 1222/2018/3 1221/2016/488 +f 1214/2009/482 1223/2019/489 1216/2011/484 +f 1215/2017/483 1217/2027/5 1218/2013/485 +f 1213/2008/481 1209/2003/477 1220/2015/487 +f 1214/2009/482 1210/2004/478 1221/2016/488 +f 1220/2015/487 1230/2026/496 1224/2020/490 +f 1223/2019/489 1221/2016/488 1225/2021/491 +f 1217/2012/5 1216/2011/484 1227/2023/493 +f 1218/2013/485 1231/2028/497 1229/2025/495 +f 1219/2014/486 1229/2025/495 1230/2026/496 +f 1221/2016/488 1222/2018/3 1224/2020/490 +f 1216/2011/484 1223/2019/489 1226/2022/492 +f 1217/2027/5 1228/2195/494 1231/2028/497 +f 1232/2029/498 553/720/498 547/714/214 +f 1234/2031/499 538/705/499 549/716/500 +f 1236/2033/211 1239/2036/501 543/710/501 +f 1237/2034/502 544/711/502 541/708/503 +f 1232/2029/498 1235/2196/500 549/1072/500 +f 1234/2031/499 1236/2033/211 551/718/211 +f 1238/2035/503 541/708/503 543/710/501 +f 1233/2030/214 547/714/214 544/711/502 +f 555/2037/501 778/2042/211 561/729/211 +f 546/713/502 545/712/214 557/725/214 +f 555/2037/501 560/728/504 565/1078/503 +f 548/715/498 563/731/498 557/725/214 +f 556/2039/502 779/2197/503 565/733/503 +f 550/721/500 562/730/500 563/731/498 +f 556/2039/502 567/736/502 569/738/214 +f 540/707/499 564/732/499 562/734/500 +f 552/719/503 546/713/502 559/727/502 +f 554/2041/499 558/726/499 561/729/211 +f 552/719/503 572/741/503 570/739/501 +f 554/2041/499 782/2044/500 571/740/500 +f 542/709/501 570/739/501 566/735/211 +f 781/2043/498 568/737/498 571/740/500 +f 539/706/211 566/735/211 564/732/499 +f 781/2043/498 780/2040/214 569/738/214 +f 1240/2045/505 1253/2058/518 1241/2046/506 +f 1243/2048/508 1254/2059/519 1244/2049/509 +f 1246/2051/511 1250/2055/515 1247/2052/512 +f 1249/2054/514 1255/2061/520 1250/2055/515 +f 1251/2056/516 1240/2045/505 1242/2047/507 +f 1253/2058/518 1245/2050/510 1244/2049/509 +f 1243/2048/508 1248/2053/513 1247/2052/512 +f 1251/2060/516 1252/2066/517 1255/2061/520 +f 1247/2052/512 1250/2055/515 1256/2062/521 +f 1254/2059/519 1261/2068/526 1258/2064/523 +f 1241/2046/506 1262/2069/527 1259/2065/524 +f 1252/2066/517 1263/2077/528 1260/2067/525 +f 1247/2052/512 1257/2063/522 1261/2068/526 +f 1244/2049/509 1258/2064/523 1262/2069/527 +f 1252/2057/517 1242/2047/507 1259/2065/524 +f 1250/2055/515 1255/2061/520 1260/2067/525 +f 1263/2070/528 1259/2065/524 1264/2071/485 +f 1256/2062/521 1260/2067/525 1266/2073/484 +f 1256/2062/521 1267/2074/489 1268/2075/488 +f 1261/2068/526 1270/2078/3 1269/2076/487 +f 1262/2069/527 1271/2079/486 1264/2071/485 +f 1263/2077/528 1265/2087/5 1266/2073/484 +f 1261/2068/526 1257/2063/522 1268/2075/488 +f 1262/2069/527 1258/2064/523 1269/2076/487 +f 1268/2075/488 1278/2086/535 1272/2080/529 +f 1271/2079/486 1269/2076/487 1273/2081/530 +f 1265/2072/5 1264/2071/485 1275/2083/532 +f 1266/2073/484 1279/2088/536 1277/2085/534 +f 1267/2074/489 1277/2085/534 1278/2086/535 +f 1269/2076/487 1270/2078/3 1272/2080/529 +f 1264/2071/485 1271/2079/486 1274/2082/531 +f 1265/2087/5 1276/2198/533 1279/2088/536 +f 1280/2089/537 582/751/537 583/752/211 +f 1282/2091/538 573/742/538 584/753/539 +f 1284/2093/214 1286/2095/540 578/747/540 +f 1285/2094/541 1287/2096/542 579/748/542 +f 1280/2089/537 1283/2199/539 584/1079/539 +f 1282/2091/538 1284/2093/214 586/755/214 +f 1286/2095/540 1285/2094/541 576/745/541 +f 1281/2090/211 583/752/211 579/748/542 +f 590/2097/540 783/2102/214 596/766/214 +f 581/750/542 580/749/211 592/762/211 +f 590/2097/540 595/765/543 600/1085/541 +f 580/749/211 588/758/544 598/768/537 +f 591/2099/542 784/2200/541 600/770/541 +f 585/757/539 597/767/539 598/768/537 +f 591/2099/542 602/773/542 604/775/211 +f 575/744/545 599/769/538 597/771/539 +f 587/756/541 581/750/542 594/764/542 +f 589/2101/538 593/763/538 596/766/214 +f 587/756/541 607/778/541 605/776/540 +f 589/2101/538 787/2104/539 606/777/539 +f 577/746/543 605/776/540 601/772/214 +f 786/2103/537 603/774/537 606/777/539 +f 574/743/214 601/772/214 599/769/538 +f 786/2103/537 785/2100/211 604/775/211 +f 1288/2105/4 1296/2113/549 1289/2106/546 +f 1291/2108/205 1360/2201/558 1292/2109/547 +f 1290/2107/23 1289/2106/546 1294/2111/548 +f 1293/2110/22 1292/2109/547 1296/2113/549 +f 1292/2109/547 1360/2201/558 1297/2114/550 +f 1289/2106/546 1301/2118/553 1299/2116/552 +f 1292/2109/547 1298/2115/551 1300/2117/38 +f 1289/2106/546 1296/2113/549 1300/2117/38 +f 1300/2117/38 1306/2123/185 1302/2119/554 +f 1298/2115/551 1297/2114/550 1303/2120/555 +f 1301/2118/553 1302/2119/554 1305/2122/557 +f 1300/2117/38 1298/2115/551 1304/2121/556 +f 1307/2124/4 1315/2132/549 1308/2125/546 +f 1310/2127/205 1361/2202/558 1311/2128/547 +f 1309/2126/23 1308/2125/546 1313/2130/548 +f 1312/2129/22 1311/2128/547 1315/2132/549 +f 1311/2128/547 1361/2202/558 1316/2133/550 +f 1308/2125/546 1320/2137/553 1318/2135/552 +f 1311/2128/547 1317/2134/551 1319/2136/38 +f 1308/2125/546 1315/2132/549 1319/2136/38 +f 1319/2136/38 1325/2142/185 1321/2138/554 +f 1317/2134/551 1316/2133/550 1322/2139/555 +f 1320/2137/553 1321/2138/554 1324/2141/557 +f 1317/2134/551 1323/2140/556 1325/2142/185 +f 1326/2143/4 1334/2151/549 1327/2144/546 +f 1329/2146/205 1362/2203/558 1330/2147/547 +f 1328/2145/23 1327/2144/546 1332/2149/548 +f 1331/2148/22 1330/2147/547 1334/2151/549 +f 1330/2147/547 1362/2203/558 1335/2152/550 +f 1327/2144/546 1339/2156/553 1337/2154/552 +f 1330/2147/547 1336/2153/551 1338/2155/38 +f 1327/2144/546 1334/2151/549 1338/2155/38 +f 1338/2155/38 1344/2161/185 1340/2157/554 +f 1336/2153/551 1335/2152/550 1341/2158/555 +f 1339/2156/553 1340/2157/554 1343/2160/557 +f 1336/2153/551 1342/2159/556 1344/2161/185 +f 1583/2204/559 1584/2205/158 1585/2206/559 +f 1586/2207/1 1587/2208/560 1588/2209/1 +f 1460/1242/561 1589/2210/562 1461/1243/561 +f 1583/2204/559 1590/2211/563 1591/2212/563 +f 1592/2213/564 1588/2209/1 1593/2214/564 +f 1466/1248/562 1594/2215/565 1589/2210/562 +f 1595/2216/566 1459/2217/567 1596/2218/566 +f 1567/2219/568 1590/2211/563 1463/2220/568 +f 1592/2213/564 1584/2205/158 1597/2221/158 +f 1568/2222/565 1598/2223/13 1594/2215/565 +f 1595/2216/566 1587/2208/560 1599/2224/560 +f 1462/1244/569 1598/2223/13 1600/2225/13 +f 1601/2226/562 1602/2227/155 1603/2228/155 +f 1604/2229/1 1605/2230/560 1606/2231/1 +f 1607/2232/570 1608/2233/563 1609/2234/570 +f 1610/2235/559 1611/2236/158 1612/2237/559 +f 1601/2226/562 1613/2238/565 1614/2239/562 +f 1615/2240/566 1605/2230/560 1616/2241/560 +f 1610/2242/559 1608/2233/563 1617/2243/563 +f 1618/2244/564 1611/2236/158 1619/2245/158 +f 1620/2246/13 1613/2238/565 1621/2247/565 +f 1615/2240/566 1602/2227/155 1622/2248/566 +f 1604/2229/1 1623/2249/564 1618/2244/564 +f 1620/2246/13 1609/2234/570 1624/2250/13 +f 1535/2251/571 1625/2252/572 1626/2253/571 +f 1535/2251/571 1627/2254/573 1532/2255/573 +f 1532/2255/573 1628/2256/574 1533/2257/574 +f 1533/2257/574 1629/2258/575 1530/2259/575 +f 1530/2259/575 1630/2260/576 1531/2261/576 +f 1544/2262/577 1630/2260/576 1631/2263/577 +f 1545/2264/578 1631/2263/577 1632/2265/578 +f 1542/2266/579 1632/2265/578 1633/2267/579 +f 1543/2268/580 1633/2267/579 1634/2269/580 +f 1543/2270/580 1635/2271/581 1540/2272/581 +f 1540/2272/581 1636/2273/582 1541/2274/582 +f 1538/2275/583 1636/2273/582 1637/2276/583 +f 1538/2275/583 1638/2277/584 1539/2278/584 +f 1539/2278/584 1639/2279/585 1536/2280/585 +f 1536/2280/585 1640/2281/586 1537/2282/586 +f 1534/2283/572 1640/2281/586 1625/2252/572 +f 1625/2252/212 1641/2284/2 1626/2253/2 +f 1626/2253/2 1642/2285/213 1627/2254/213 +f 1633/2267/215 1643/2286/4 1634/2269/4 +f 1640/2281/21 1644/2287/212 1625/2252/212 +f 1632/2265/22 1645/2288/215 1633/2267/215 +f 1639/2279/202 1646/2289/21 1640/2281/21 +f 1631/2263/205 1647/2290/22 1632/2265/22 +f 1638/2277/13 1648/2291/202 1639/2279/202 +f 1630/2260/1 1649/2292/205 1631/2263/205 +f 1637/2276/211 1650/2293/13 1638/2277/13 +f 1629/2258/214 1651/2294/1 1630/2260/1 +f 1636/2273/23 1652/2295/211 1637/2276/211 +f 1628/2256/24 1653/2296/214 1629/2258/214 +f 1635/2271/210 1654/2297/23 1636/2273/23 +f 1627/2254/213 1655/2298/24 1628/2256/24 +f 1634/2299/4 1656/2300/210 1635/2271/210 +f 1647/2290/587 1579/2301/588 1578/2302/587 +f 1648/2291/589 1573/2303/590 1572/2304/589 +f 1651/2294/591 1579/2305/588 1649/2292/588 +f 1650/2293/590 1574/2306/592 1573/2307/590 +f 1651/2294/591 1580/2308/593 1547/2309/591 +f 1654/2297/594 1574/2310/592 1652/2295/592 +f 1655/2298/595 1580/2311/593 1653/2296/593 +f 1654/2297/594 1576/2312/596 1575/2313/594 +f 1642/2285/597 1581/2314/595 1655/2298/595 +f 1643/2315/598 1576/2316/596 1656/2300/596 +f 1641/2284/599 1570/2317/600 1548/2318/599 +f 1641/2284/599 1582/2319/597 1642/2285/597 +f 1643/2286/598 1577/2320/601 1546/2321/598 +f 1646/2289/602 1570/2322/600 1644/2287/600 +f 1647/2290/587 1577/2323/601 1645/2288/601 +f 1646/2289/602 1572/2324/589 1571/2325/602 +f 1558/2326/213 1657/2327/2 1555/2328/2 +f 1563/2329/4 1658/2330/215 1564/2331/215 +f 1550/2332/210 1659/2333/4 1563/2329/4 +f 1555/2334/2 1660/2335/212 1556/2336/212 +f 1564/2331/215 1661/2337/22 1561/2338/22 +f 1556/2336/212 1662/2339/21 1553/2340/21 +f 1561/2338/22 1663/2341/205 1562/2342/205 +f 1553/2340/21 1664/2343/202 1554/2344/202 +f 1562/2342/205 1665/2345/1 1559/2346/1 +f 1554/2344/202 1666/2347/13 1551/2348/13 +f 1559/2346/1 1667/2349/214 1560/2350/214 +f 1551/2348/13 1668/2351/211 1552/2352/211 +f 1560/2350/214 1669/2353/24 1557/2354/24 +f 1552/2352/211 1670/2355/23 1549/2356/23 +f 1557/2354/24 1671/2357/213 1558/2326/213 +f 1549/2356/23 1672/2358/210 1550/2332/210 +f 1583/2204/559 1597/2221/158 1584/2205/158 +f 1586/2207/1 1599/2224/560 1587/2208/560 +f 1460/1242/561 1466/1248/562 1589/2210/562 +f 1583/2204/559 1585/2206/559 1590/2211/563 +f 1592/2213/564 1586/2207/1 1588/2209/1 +f 1466/1248/562 1568/2222/565 1594/2215/565 +f 1595/2216/566 1465/2359/567 1459/2217/567 +f 1567/2219/568 1591/2212/563 1590/2211/563 +f 1592/2213/564 1593/2214/564 1584/2205/158 +f 1568/2222/565 1600/2225/13 1598/2223/13 +f 1595/2216/566 1596/2218/566 1587/2208/560 +f 1462/1244/569 1464/1246/569 1598/2223/13 +f 1601/2226/562 1614/2239/562 1602/2227/155 +f 1604/2229/1 1616/2241/560 1605/2230/560 +f 1607/2232/570 1617/2243/563 1608/2233/563 +f 1610/2235/559 1619/2245/158 1611/2236/158 +f 1601/2226/562 1621/2247/565 1613/2238/565 +f 1615/2240/566 1622/2248/566 1605/2230/560 +f 1610/2242/559 1612/2360/559 1608/2233/563 +f 1618/2244/564 1623/2249/564 1611/2236/158 +f 1620/2246/13 1624/2250/13 1613/2238/565 +f 1615/2240/566 1603/2228/155 1602/2227/155 +f 1604/2229/1 1606/2231/1 1623/2249/564 +f 1620/2246/13 1607/2232/570 1609/2234/570 +f 1535/2251/571 1534/2283/572 1625/2252/572 +f 1535/2251/571 1626/2253/571 1627/2254/573 +f 1532/2255/573 1627/2254/573 1628/2256/574 +f 1533/2257/574 1628/2256/574 1629/2258/575 +f 1530/2259/575 1629/2258/575 1630/2260/576 +f 1544/2262/577 1531/2261/576 1630/2260/576 +f 1545/2264/578 1544/2262/577 1631/2263/577 +f 1542/2266/579 1545/2264/578 1632/2265/578 +f 1543/2268/580 1542/2266/579 1633/2267/579 +f 1543/2270/580 1634/2299/580 1635/2271/581 +f 1540/2272/581 1635/2271/581 1636/2273/582 +f 1538/2275/583 1541/2274/582 1636/2273/582 +f 1538/2275/583 1637/2276/583 1638/2277/584 +f 1539/2278/584 1638/2277/584 1639/2279/585 +f 1536/2280/585 1639/2279/585 1640/2281/586 +f 1534/2283/572 1537/2282/586 1640/2281/586 +f 1625/2252/212 1644/2287/212 1641/2284/2 +f 1626/2253/2 1641/2284/2 1642/2285/213 +f 1633/2267/215 1645/2288/215 1643/2286/4 +f 1640/2281/21 1646/2289/21 1644/2287/212 +f 1632/2265/22 1647/2290/22 1645/2288/215 +f 1639/2279/202 1648/2291/202 1646/2289/21 +f 1631/2263/205 1649/2292/205 1647/2290/22 +f 1638/2277/13 1650/2293/13 1648/2291/202 +f 1630/2260/1 1651/2294/1 1649/2292/205 +f 1637/2276/211 1652/2295/211 1650/2293/13 +f 1629/2258/214 1653/2296/214 1651/2294/1 +f 1636/2273/23 1654/2297/23 1652/2295/211 +f 1628/2256/24 1655/2298/24 1653/2296/214 +f 1635/2271/210 1656/2300/210 1654/2297/23 +f 1627/2254/213 1642/2285/213 1655/2298/24 +f 1634/2299/4 1643/2315/4 1656/2300/210 +f 1647/2290/587 1649/2292/588 1579/2301/588 +f 1648/2291/589 1650/2293/590 1573/2303/590 +f 1651/2294/591 1547/2361/591 1579/2305/588 +f 1650/2293/590 1652/2295/592 1574/2306/592 +f 1651/2294/591 1653/2296/593 1580/2308/593 +f 1654/2297/594 1575/2362/594 1574/2310/592 +f 1655/2298/595 1581/2363/595 1580/2311/593 +f 1654/2297/594 1656/2300/596 1576/2312/596 +f 1642/2285/597 1582/2364/597 1581/2314/595 +f 1643/2315/598 1546/2365/598 1576/2316/596 +f 1641/2284/599 1644/2287/600 1570/2317/600 +f 1641/2284/599 1548/2366/599 1582/2319/597 +f 1643/2286/598 1645/2288/601 1577/2320/601 +f 1646/2289/602 1571/2367/602 1570/2322/600 +f 1647/2290/587 1578/2368/587 1577/2323/601 +f 1646/2289/602 1648/2291/589 1572/2324/589 +f 1558/2326/213 1671/2357/213 1657/2327/2 +f 1563/2329/4 1659/2333/4 1658/2330/215 +f 1550/2332/210 1672/2358/210 1659/2333/4 +f 1555/2334/2 1657/2369/2 1660/2335/212 +f 1564/2331/215 1658/2330/215 1661/2337/22 +f 1556/2336/212 1660/2335/212 1662/2339/21 +f 1561/2338/22 1661/2337/22 1663/2341/205 +f 1553/2340/21 1662/2339/21 1664/2343/202 +f 1562/2342/205 1663/2341/205 1665/2345/1 +f 1554/2344/202 1664/2343/202 1666/2347/13 +f 1559/2346/1 1665/2345/1 1667/2349/214 +f 1551/2348/13 1666/2347/13 1668/2351/211 +f 1560/2350/214 1667/2349/214 1669/2353/24 +f 1552/2352/211 1668/2351/211 1670/2355/23 +f 1557/2354/24 1669/2353/24 1671/2357/213 +f 1549/2356/23 1670/2355/23 1672/2358/210 +o Fuel +v 0.250000 2.227120 -3.053716 +v 0.324759 2.057188 -3.132957 +v 0.216506 2.113832 -3.106544 +v 0.324760 2.397053 -2.974475 +v 0.375000 2.227120 -3.053716 +v 0.216506 2.340409 -3.000889 +v 0.187500 2.521452 -2.916467 +v 0.000000 2.566986 -2.895234 +v 0.125000 2.423342 -2.962217 +v 0.000000 2.453697 -2.948062 +vt 1.000000 0.250000 +vt -0.000000 -0.000000 +vt 1.000000 0.000000 +vt -0.000000 0.500000 +vt 0.000000 0.250000 +vt 1.000000 0.500000 +vt -0.000000 0.750000 +vt 0.000000 1.000000 +vt 1.000000 0.750000 +vt 1.000000 1.000000 +vn 0.0000 0.4226 -0.9063 +s off +f 1673/2370/603 1674/2371/603 1675/2372/603 +f 1673/2370/603 1676/2373/603 1677/2374/603 +f 1678/2375/603 1679/2376/603 1676/2373/603 +f 1680/2377/603 1681/2378/603 1682/2379/603 +f 1673/2370/603 1677/2374/603 1674/2371/603 +f 1673/2370/603 1678/2375/603 1676/2373/603 +f 1678/2375/603 1681/2378/603 1679/2376/603 +f 1680/2377/603 1679/2376/603 1681/2378/603 +o Rotor +v 0.003817 2.437500 -0.360298 +v -0.003817 2.437500 -0.639702 +v -0.109472 2.437500 -0.413125 +v 0.109472 2.437500 -0.586875 +v -0.003817 2.312500 -0.639702 +v 0.003817 2.312500 -0.360298 +v 0.109472 2.312500 -0.586875 +v -0.109472 2.312500 -0.413125 +v -0.003817 0.062500 -0.360298 +v 0.003816 0.062500 -0.639702 +v 0.109472 0.062500 -0.413125 +v -0.109472 0.062500 -0.586875 +v 0.003816 0.187500 -0.639702 +v -0.003817 0.187500 -0.360298 +v -0.109472 0.187500 -0.586875 +v 0.109472 0.187500 -0.413125 +v 1.187500 1.246183 -0.360298 +v 1.187500 1.253817 -0.639702 +v 1.187500 1.359472 -0.413125 +v 1.187500 1.140528 -0.586875 +v 1.062500 1.253817 -0.639702 +v 1.062500 1.246183 -0.360298 +v 1.062500 1.140528 -0.586875 +v 1.062500 1.359472 -0.413125 +v -1.187500 1.253817 -0.360298 +v -1.187500 1.246184 -0.639702 +v -1.187500 1.140528 -0.413125 +v -1.062500 1.359473 -0.586875 +v -1.062500 1.246184 -0.639702 +v -1.062500 1.253817 -0.360298 +v -1.187500 1.359473 -0.586875 +v -1.062500 1.140528 -0.413125 +v 0.842388 2.086991 -0.360298 +v 0.836990 2.092388 -0.639702 +v 0.762281 2.167098 -0.413125 +v 0.917098 2.012281 -0.586875 +v 0.748602 2.004000 -0.639702 +v 0.673892 2.078710 -0.413125 +v 0.754000 1.998602 -0.360298 +v 0.828709 1.923892 -0.586875 +v -0.842388 0.413010 -0.360298 +v -0.836991 0.407612 -0.639702 +v -0.762281 0.332902 -0.413125 +v -0.828710 0.576108 -0.586875 +v -0.748602 0.496001 -0.639702 +v -0.673892 0.421291 -0.413125 +v -0.754000 0.501398 -0.360298 +v -0.917098 0.487720 -0.586875 +v 0.836990 0.407612 -0.360298 +v 0.842388 0.413010 -0.639702 +v 0.917098 0.487720 -0.413125 +v 0.762280 0.332902 -0.586875 +v 0.753999 0.501398 -0.639702 +v 0.748602 0.496001 -0.360298 +v 0.673892 0.421291 -0.586875 +v 0.828709 0.576108 -0.413125 +v -0.836990 2.092388 -0.360298 +v -0.842388 2.086991 -0.639702 +v -0.917098 2.012281 -0.413125 +v -0.673892 2.078710 -0.586875 +v -0.754000 1.998602 -0.639702 +v -0.748602 2.004000 -0.360298 +v -0.762281 2.167098 -0.586875 +v -0.828709 1.923893 -0.413125 +v 1.026497 0.652945 -0.360298 +v 1.030313 0.659555 -0.639702 +v 1.083141 0.751056 -0.413125 +v 0.973669 0.561444 -0.586875 +v 0.922060 0.722055 -0.639702 +v 0.918243 0.715445 -0.360298 +v 0.865416 0.623944 -0.586875 +v 0.974888 0.813556 -0.413125 +v -1.026497 1.847056 -0.360298 +v -1.030313 1.840445 -0.639702 +v -1.083141 1.748945 -0.413125 +v -0.865416 1.876056 -0.586875 +v -0.922060 1.777945 -0.639702 +v -0.974888 1.686445 -0.413125 +v -0.918244 1.784556 -0.360298 +v -0.973669 1.938556 -0.586875 +v -0.597055 0.223504 -0.360298 +v -0.590445 0.219687 -0.639702 +v -0.498944 0.166859 -0.413125 +v -0.688556 0.276331 -0.586875 +v -0.527945 0.327940 -0.639702 +v -0.534555 0.331757 -0.360298 +v -0.626056 0.384585 -0.586875 +v -0.436444 0.275112 -0.413125 +v 0.597055 2.276497 -0.360298 +v 0.590445 2.280313 -0.639702 +v 0.498944 2.333141 -0.413125 +v 0.688556 2.223669 -0.586875 +v 0.527945 2.172060 -0.639702 +v 0.436444 2.224888 -0.413125 +v 0.534555 2.168244 -0.360298 +v 0.626056 2.115416 -0.586875 +v 0.303661 0.101975 -0.360298 +v 0.311034 0.103951 -0.639702 +v 0.413089 0.131297 -0.413125 +v 0.201605 0.074630 -0.586875 +v 0.278682 0.224692 -0.639702 +v 0.271308 0.222716 -0.360298 +v 0.169253 0.195371 -0.586875 +v 0.380737 0.252038 -0.413125 +v -0.303661 2.398025 -0.360298 +v -0.311034 2.396049 -0.639702 +v -0.413090 2.368703 -0.413125 +v -0.169253 2.304630 -0.586875 +v -0.278682 2.275309 -0.639702 +v -0.271308 2.277284 -0.360298 +v -0.201605 2.425371 -0.586875 +v -0.380737 2.247963 -0.413125 +v -1.148025 0.946339 -0.360298 +v -1.146049 0.938966 -0.639702 +v -1.118703 0.836911 -0.413125 +v -1.054630 1.080747 -0.586875 +v -1.025308 0.971319 -0.639702 +v -1.027284 0.978692 -0.360298 +v -1.175370 1.048395 -0.586875 +v -0.997963 0.869263 -0.413125 +v 1.148025 1.553661 -0.360298 +v 1.146049 1.561034 -0.639702 +v 1.118703 1.663090 -0.413125 +v 1.175370 1.451605 -0.586875 +v 1.025308 1.528682 -0.639702 +v 1.027284 1.521308 -0.360298 +v 1.054630 1.419253 -0.586875 +v 0.997963 1.630737 -0.413125 +v -1.030313 0.659556 -0.360298 +v -1.026497 0.652945 -0.639702 +v -0.973669 0.561445 -0.413125 +v -0.974888 0.813556 -0.586875 +v -0.918244 0.715445 -0.639702 +v -0.922060 0.722056 -0.360298 +v -1.083141 0.751056 -0.586875 +v -0.865416 0.623945 -0.413125 +v 1.030313 1.840445 -0.360298 +v 1.026497 1.847055 -0.639702 +v 0.973669 1.938556 -0.413125 +v 0.974888 1.686444 -0.586875 +v 0.918244 1.784555 -0.639702 +v 0.922060 1.777945 -0.360298 +v 1.083141 1.748944 -0.586875 +v 0.865416 1.876056 -0.413125 +v -0.590444 2.280313 -0.360298 +v -0.597055 2.276497 -0.639702 +v -0.688556 2.223669 -0.413125 +v -0.498944 2.333141 -0.586875 +v -0.534555 2.168244 -0.639702 +v -0.527944 2.172060 -0.360298 +v -0.436444 2.224888 -0.586875 +v -0.626056 2.115416 -0.413125 +v 0.590444 0.219687 -0.360298 +v 0.597055 0.223503 -0.639702 +v 0.688555 0.276331 -0.413125 +v 0.498944 0.166859 -0.586875 +v 0.534555 0.331756 -0.639702 +v 0.626055 0.384584 -0.413125 +v 0.527944 0.327940 -0.360298 +v 0.436444 0.275112 -0.586875 +v -1.146049 1.561034 -0.360298 +v -1.148025 1.553661 -0.639702 +v -1.175370 1.451606 -0.413125 +v -1.118703 1.663090 -0.586875 +v -1.027284 1.521309 -0.639702 +v -1.054630 1.419253 -0.413125 +v -1.025308 1.528682 -0.360298 +v -0.997963 1.630738 -0.586875 +v 1.146049 0.938966 -0.360298 +v 1.148024 0.946339 -0.639702 +v 1.175370 1.048394 -0.413125 +v 0.997963 0.869263 -0.586875 +v 1.027284 0.978691 -0.639702 +v 1.054630 1.080747 -0.413125 +v 1.025308 0.971318 -0.360298 +v 1.118703 0.836910 -0.586875 +v 0.311034 2.396049 -0.360298 +v 0.303661 2.398025 -0.639702 +v 0.201606 2.425370 -0.413125 +v 0.413090 2.368703 -0.586875 +v 0.271309 2.277284 -0.639702 +v 0.169253 2.304630 -0.413125 +v 0.278682 2.275308 -0.360298 +v 0.380738 2.247962 -0.586875 +v -0.311035 0.103951 -0.360298 +v -0.303662 0.101975 -0.639702 +v -0.201606 0.074630 -0.413125 +v -0.413090 0.131297 -0.586875 +v -0.271309 0.222716 -0.639702 +v -0.169254 0.195371 -0.413125 +v -0.278682 0.224692 -0.360298 +v -0.380738 0.252038 -0.586875 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.296552 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.303448 0.125000 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.303448 0.140625 +vt 0.317241 0.093750 +vt 0.317241 0.125000 +vt 0.303448 0.109375 +vt 0.317241 0.109375 +vt 0.303448 0.125000 +vt 0.296552 0.109375 +vt 0.324138 0.109375 +vt 0.324138 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.324138 0.109375 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.324138 0.109375 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vt 0.317241 0.140625 +vt 0.303448 0.093750 +vt 0.296552 0.125000 +vn 0.0000 1.0000 0.0000 +vn 0.4226 0.0000 -0.9063 +vn -0.4226 -0.0000 0.9063 +vn 0.9063 0.0000 0.4226 +vn -0.9063 0.0000 -0.4226 +vn -0.0000 -1.0000 -0.0000 +vn -0.4226 0.0000 -0.9063 +vn 0.4226 0.0000 0.9063 +vn -0.9063 0.0000 0.4226 +vn 0.9063 0.0000 -0.4226 +vn 1.0000 0.0000 0.0000 +vn 0.0000 -0.4226 -0.9063 +vn 0.0000 0.4226 0.9063 +vn 0.0000 -0.9063 0.4226 +vn 0.0000 0.9063 -0.4226 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.4226 -0.9063 +vn 0.0000 -0.4226 0.9063 +vn 0.0000 0.9063 0.4226 +vn 0.0000 -0.9063 -0.4226 +vn 0.7071 0.7071 -0.0000 +vn 0.2988 -0.2988 -0.9063 +vn -0.2988 0.2988 0.9063 +vn 0.6409 -0.6409 0.4226 +vn -0.6409 0.6409 -0.4226 +vn -0.7071 -0.7071 0.0000 +vn -0.2988 0.2988 -0.9063 +vn 0.2988 -0.2988 0.9063 +vn -0.6409 0.6409 0.4226 +vn 0.6409 -0.6409 -0.4226 +vn 0.7071 -0.7071 0.0000 +vn -0.2988 -0.2988 -0.9063 +vn 0.2988 0.2988 0.9063 +vn -0.6409 -0.6409 0.4226 +vn 0.6409 0.6409 -0.4226 +vn -0.7071 0.7071 0.0000 +vn 0.2988 0.2988 -0.9063 +vn -0.2988 -0.2988 0.9063 +vn 0.6409 0.6409 0.4226 +vn -0.6409 -0.6409 -0.4226 +vn 0.8660 -0.5000 -0.0000 +vn -0.2113 -0.3660 -0.9063 +vn 0.2113 0.3660 0.9063 +vn -0.4532 -0.7849 0.4226 +vn 0.4532 0.7849 -0.4226 +vn -0.8660 0.5000 -0.0000 +vn 0.2113 0.3660 -0.9063 +vn -0.2113 -0.3660 0.9063 +vn 0.4532 0.7849 0.4226 +vn -0.4532 -0.7849 -0.4226 +vn -0.5000 -0.8660 0.0000 +vn -0.3660 0.2113 -0.9063 +vn 0.3660 -0.2113 0.9063 +vn -0.7849 0.4532 0.4226 +vn 0.7849 -0.4532 -0.4226 +vn 0.5000 0.8660 -0.0000 +vn 0.3660 -0.2113 -0.9063 +vn -0.3660 0.2113 0.9063 +vn 0.7849 -0.4532 0.4226 +vn -0.7849 0.4532 -0.4226 +vn 0.2588 -0.9659 -0.0000 +vn -0.4082 -0.1094 -0.9063 +vn 0.4082 0.1094 0.9063 +vn -0.8754 -0.2346 0.4226 +vn 0.8754 0.2346 -0.4226 +vn -0.2588 0.9659 -0.0000 +vn 0.4082 0.1094 -0.9063 +vn -0.4082 -0.1094 0.9063 +vn 0.8754 0.2346 0.4226 +vn -0.8754 -0.2346 -0.4226 +vn -0.9659 -0.2588 -0.0000 +vn -0.1094 0.4082 -0.9063 +vn 0.1094 -0.4082 0.9063 +vn -0.2346 0.8754 0.4226 +vn 0.2346 -0.8754 -0.4226 +vn 0.9659 0.2588 -0.0000 +vn 0.1094 -0.4082 -0.9063 +vn -0.1094 0.4082 0.9063 +vn 0.2346 -0.8754 0.4226 +vn -0.2346 0.8754 -0.4226 +vn -0.8660 -0.5000 0.0000 +vn -0.2113 0.3660 -0.9063 +vn 0.2113 -0.3660 0.9063 +vn -0.4532 0.7849 0.4226 +vn 0.4532 -0.7849 -0.4226 +vn 0.8660 0.5000 0.0000 +vn 0.2113 -0.3660 -0.9063 +vn -0.2113 0.3660 0.9063 +vn 0.4532 -0.7849 0.4226 +vn -0.4532 0.7849 -0.4226 +vn -0.5000 0.8660 0.0000 +vn 0.3660 0.2113 -0.9063 +vn -0.3660 -0.2113 0.9063 +vn 0.7849 0.4532 0.4226 +vn -0.7849 -0.4532 -0.4226 +vn 0.5000 -0.8660 0.0000 +vn -0.3660 -0.2113 -0.9063 +vn 0.3660 0.2113 0.9063 +vn -0.7849 -0.4532 0.4226 +vn 0.7849 0.4532 -0.4226 +vn -0.9659 0.2588 0.0000 +vn 0.1094 0.4082 -0.9063 +vn -0.1094 -0.4082 0.9063 +vn 0.2346 0.8754 0.4226 +vn -0.2346 -0.8754 -0.4226 +vn 0.9659 -0.2588 -0.0000 +vn -0.1094 -0.4082 -0.9063 +vn 0.1094 0.4082 0.9063 +vn -0.2346 -0.8754 0.4226 +vn 0.2346 0.8754 -0.4226 +vn 0.2588 0.9659 0.0000 +vn 0.4082 -0.1094 -0.9063 +vn -0.4082 0.1094 0.9063 +vn 0.8754 -0.2346 0.4226 +vn -0.8754 0.2346 -0.4226 +vn -0.2588 -0.9659 0.0000 +vn -0.4082 0.1094 -0.9063 +vn 0.4082 -0.1094 0.9063 +vn -0.8754 0.2346 0.4226 +vn 0.8754 -0.2346 -0.4226 +s off +f 1683/2380/604 1684/2381/604 1685/2382/604 +f 1686/2383/605 1687/2384/605 1684/2381/605 +f 1685/2382/606 1688/2385/606 1683/2380/606 +f 1683/2380/607 1689/2386/607 1686/2383/607 +f 1684/2381/608 1690/2387/608 1685/2382/608 +f 1691/2388/609 1692/2389/609 1693/2390/609 +f 1694/2391/610 1695/2392/610 1692/2389/610 +f 1693/2390/611 1696/2393/611 1691/2388/611 +f 1694/2391/612 1696/2394/612 1697/2395/612 +f 1692/2389/613 1698/2396/613 1693/2390/613 +f 1699/2397/614 1700/2398/614 1701/2399/614 +f 1702/2400/615 1703/2401/615 1700/2398/615 +f 1701/2399/616 1704/2402/616 1699/2397/616 +f 1699/2397/617 1705/2403/617 1702/2400/617 +f 1700/2398/618 1706/2404/618 1701/2399/618 +f 1707/2405/619 1708/2406/619 1709/2407/619 +f 1708/2406/620 1710/2408/620 1711/2409/620 +f 1709/2407/621 1712/2410/621 1707/2405/621 +f 1707/2405/622 1710/2411/622 1713/2412/622 +f 1708/2406/623 1714/2413/623 1709/2407/623 +f 1715/2414/624 1716/2415/624 1717/2416/624 +f 1718/2417/625 1719/2418/625 1716/2415/625 +f 1715/2414/626 1720/2419/626 1721/2420/626 +f 1715/2414/627 1722/2421/627 1718/2417/627 +f 1716/2415/628 1720/2422/628 1717/2416/628 +f 1723/2423/629 1724/2424/629 1725/2425/629 +f 1724/2424/630 1726/2426/630 1727/2427/630 +f 1723/2423/631 1728/2428/631 1729/2429/631 +f 1723/2423/632 1726/2430/632 1730/2431/632 +f 1724/2424/633 1728/2432/633 1725/2425/633 +f 1731/2433/634 1732/2434/634 1733/2435/634 +f 1734/2436/635 1735/2437/635 1732/2434/635 +f 1733/2435/636 1736/2438/636 1731/2433/636 +f 1734/2436/637 1736/2439/637 1737/2440/637 +f 1732/2434/638 1738/2441/638 1733/2435/638 +f 1739/2442/639 1740/2443/639 1741/2444/639 +f 1740/2443/640 1742/2445/640 1743/2446/640 +f 1741/2444/641 1744/2447/641 1739/2442/641 +f 1745/2448/642 1744/2449/642 1742/2450/642 +f 1740/2443/643 1746/2451/643 1741/2444/643 +f 1747/2452/644 1748/2453/644 1749/2454/644 +f 1750/2455/645 1751/2456/645 1748/2453/645 +f 1749/2454/646 1752/2457/646 1747/2452/646 +f 1747/2452/647 1753/2458/647 1750/2455/647 +f 1748/2453/648 1754/2459/648 1749/2454/648 +f 1755/2460/649 1756/2461/649 1757/2462/649 +f 1756/2461/650 1758/2463/650 1759/2464/650 +f 1755/2460/651 1760/2465/651 1761/2466/651 +f 1755/2460/652 1758/2467/652 1762/2468/652 +f 1756/2461/653 1760/2469/653 1757/2462/653 +f 1763/2470/654 1764/2471/654 1765/2472/654 +f 1766/2473/655 1767/2474/655 1764/2471/655 +f 1765/2472/656 1768/2475/656 1763/2470/656 +f 1763/2470/657 1769/2476/657 1766/2473/657 +f 1764/2471/658 1770/2477/658 1765/2472/658 +f 1771/2478/659 1772/2479/659 1773/2480/659 +f 1774/2481/660 1775/2482/660 1772/2479/660 +f 1771/2478/661 1776/2483/661 1777/2484/661 +f 1774/2481/662 1777/2485/662 1778/2486/662 +f 1772/2479/663 1776/2487/663 1773/2480/663 +f 1779/2488/664 1780/2489/664 1781/2490/664 +f 1782/2491/665 1783/2492/665 1780/2489/665 +f 1781/2490/666 1784/2493/666 1779/2488/666 +f 1782/2491/667 1784/2494/667 1785/2495/667 +f 1781/2490/668 1783/2496/668 1786/2497/668 +f 1787/2498/669 1788/2499/669 1789/2500/669 +f 1788/2499/670 1790/2501/670 1791/2502/670 +f 1789/2500/671 1792/2503/671 1787/2498/671 +f 1787/2498/672 1790/2504/672 1793/2505/672 +f 1788/2499/673 1794/2506/673 1789/2500/673 +f 1795/2507/674 1796/2508/674 1797/2509/674 +f 1796/2508/675 1798/2510/675 1799/2511/675 +f 1797/2509/676 1800/2512/676 1795/2507/676 +f 1795/2507/677 1798/2513/677 1801/2514/677 +f 1796/2508/678 1802/2515/678 1797/2509/678 +f 1803/2516/679 1804/2517/679 1805/2518/679 +f 1806/2519/680 1807/2520/680 1804/2517/680 +f 1805/2518/681 1808/2521/681 1803/2516/681 +f 1806/2519/682 1808/2522/682 1809/2523/682 +f 1804/2517/683 1810/2524/683 1805/2518/683 +f 1811/2525/684 1812/2526/684 1813/2527/684 +f 1812/2526/685 1814/2528/685 1815/2529/685 +f 1813/2527/686 1816/2530/686 1811/2525/686 +f 1811/2525/687 1814/2531/687 1817/2532/687 +f 1812/2526/688 1818/2533/688 1813/2527/688 +f 1819/2534/689 1820/2535/689 1821/2536/689 +f 1820/2535/690 1822/2537/690 1823/2538/690 +f 1821/2536/691 1824/2539/691 1819/2534/691 +f 1825/2540/692 1824/2541/692 1822/2542/692 +f 1820/2535/693 1826/2543/693 1821/2536/693 +f 1827/2544/694 1828/2545/694 1829/2546/694 +f 1830/2547/695 1831/2548/695 1828/2545/695 +f 1829/2546/696 1832/2549/696 1827/2544/696 +f 1827/2544/697 1833/2550/697 1830/2547/697 +f 1828/2545/698 1834/2551/698 1829/2546/698 +f 1835/2552/699 1836/2553/699 1837/2554/699 +f 1838/2555/700 1839/2556/700 1836/2553/700 +f 1835/2552/701 1840/2557/701 1841/2558/701 +f 1838/2555/702 1841/2559/702 1842/2560/702 +f 1836/2553/703 1840/2561/703 1837/2554/703 +f 1843/2562/704 1844/2563/704 1845/2564/704 +f 1846/2565/705 1847/2566/705 1844/2563/705 +f 1843/2562/706 1848/2567/706 1849/2568/706 +f 1846/2565/707 1849/2569/707 1850/2570/707 +f 1845/2564/708 1847/2571/708 1848/2572/708 +f 1851/2573/709 1852/2574/709 1853/2575/709 +f 1852/2574/710 1854/2576/710 1855/2577/710 +f 1851/2573/711 1856/2578/711 1857/2579/711 +f 1851/2573/712 1854/2580/712 1858/2581/712 +f 1852/2574/713 1856/2582/713 1853/2575/713 +f 1859/2583/714 1860/2584/714 1861/2585/714 +f 1862/2586/715 1863/2587/715 1860/2584/715 +f 1859/2583/716 1864/2588/716 1865/2589/716 +f 1859/2583/717 1866/2590/717 1862/2586/717 +f 1860/2584/718 1864/2591/718 1861/2585/718 +f 1867/2592/719 1868/2593/719 1869/2594/719 +f 1870/2595/720 1871/2596/720 1868/2593/720 +f 1867/2592/721 1872/2597/721 1873/2598/721 +f 1870/2595/722 1873/2599/722 1874/2600/722 +f 1869/2594/723 1871/2601/723 1872/2602/723 +f 1683/2380/604 1686/2383/604 1684/2381/604 +f 1686/2383/605 1689/2603/605 1687/2384/605 +f 1685/2382/606 1690/2604/606 1688/2385/606 +f 1683/2380/607 1688/2605/607 1689/2386/607 +f 1684/2381/608 1687/2606/608 1690/2387/608 +f 1691/2388/609 1694/2391/609 1692/2389/609 +f 1694/2391/610 1697/2607/610 1695/2392/610 +f 1693/2390/611 1698/2608/611 1696/2393/611 +f 1694/2391/612 1691/2388/612 1696/2394/612 +f 1692/2389/613 1695/2609/613 1698/2396/613 +f 1699/2397/614 1702/2400/614 1700/2398/614 +f 1702/2400/615 1705/2610/615 1703/2401/615 +f 1701/2399/616 1706/2611/616 1704/2402/616 +f 1699/2397/617 1704/2612/617 1705/2403/617 +f 1700/2398/618 1703/2613/618 1706/2404/618 +f 1707/2405/619 1713/2412/619 1708/2406/619 +f 1708/2406/620 1713/2412/620 1710/2408/620 +f 1709/2407/621 1714/2614/621 1712/2410/621 +f 1707/2405/622 1712/2615/622 1710/2411/622 +f 1708/2406/623 1711/2616/623 1714/2413/623 +f 1715/2414/624 1718/2417/624 1716/2415/624 +f 1718/2417/625 1722/2617/625 1719/2418/625 +f 1715/2414/626 1717/2416/626 1720/2419/626 +f 1715/2414/627 1721/2618/627 1722/2421/627 +f 1716/2415/628 1719/2619/628 1720/2422/628 +f 1723/2423/629 1730/2431/629 1724/2424/629 +f 1724/2424/630 1730/2431/630 1726/2426/630 +f 1723/2423/631 1725/2425/631 1728/2428/631 +f 1723/2423/632 1729/2620/632 1726/2430/632 +f 1724/2424/633 1727/2621/633 1728/2432/633 +f 1731/2433/634 1734/2436/634 1732/2434/634 +f 1734/2436/635 1737/2622/635 1735/2437/635 +f 1733/2435/636 1738/2623/636 1736/2438/636 +f 1734/2436/637 1731/2433/637 1736/2439/637 +f 1732/2434/638 1735/2624/638 1738/2441/638 +f 1739/2442/639 1745/2448/639 1740/2443/639 +f 1740/2443/640 1745/2448/640 1742/2445/640 +f 1741/2444/641 1746/2625/641 1744/2447/641 +f 1745/2448/642 1739/2442/642 1744/2449/642 +f 1740/2443/643 1743/2626/643 1746/2451/643 +f 1747/2452/644 1750/2455/644 1748/2453/644 +f 1750/2455/645 1753/2627/645 1751/2456/645 +f 1749/2454/646 1754/2628/646 1752/2457/646 +f 1747/2452/647 1752/2629/647 1753/2458/647 +f 1748/2453/648 1751/2630/648 1754/2459/648 +f 1755/2460/649 1762/2468/649 1756/2461/649 +f 1756/2461/650 1762/2468/650 1758/2463/650 +f 1755/2460/651 1757/2462/651 1760/2465/651 +f 1755/2460/652 1761/2631/652 1758/2467/652 +f 1756/2461/653 1759/2632/653 1760/2469/653 +f 1763/2470/654 1766/2473/654 1764/2471/654 +f 1766/2473/655 1769/2633/655 1767/2474/655 +f 1765/2472/656 1770/2634/656 1768/2475/656 +f 1763/2470/657 1768/2635/657 1769/2476/657 +f 1764/2471/658 1767/2636/658 1770/2477/658 +f 1771/2478/659 1774/2481/659 1772/2479/659 +f 1774/2481/660 1778/2637/660 1775/2482/660 +f 1771/2478/661 1773/2480/661 1776/2483/661 +f 1774/2481/662 1771/2478/662 1777/2485/662 +f 1772/2479/663 1775/2638/663 1776/2487/663 +f 1779/2488/664 1782/2491/664 1780/2489/664 +f 1782/2491/665 1785/2639/665 1783/2492/665 +f 1781/2490/666 1786/2640/666 1784/2493/666 +f 1782/2491/667 1779/2488/667 1784/2494/667 +f 1781/2490/668 1780/2489/668 1783/2496/668 +f 1787/2498/669 1793/2505/669 1788/2499/669 +f 1788/2499/670 1793/2505/670 1790/2501/670 +f 1789/2500/671 1794/2641/671 1792/2503/671 +f 1787/2498/672 1792/2642/672 1790/2504/672 +f 1788/2499/673 1791/2643/673 1794/2506/673 +f 1795/2507/674 1801/2514/674 1796/2508/674 +f 1796/2508/675 1801/2514/675 1798/2510/675 +f 1797/2509/676 1802/2644/676 1800/2512/676 +f 1795/2507/677 1800/2645/677 1798/2513/677 +f 1796/2508/678 1799/2646/678 1802/2515/678 +f 1803/2516/679 1806/2519/679 1804/2517/679 +f 1806/2519/680 1809/2647/680 1807/2520/680 +f 1805/2518/681 1810/2648/681 1808/2521/681 +f 1806/2519/682 1803/2516/682 1808/2522/682 +f 1804/2517/683 1807/2649/683 1810/2524/683 +f 1811/2525/684 1817/2532/684 1812/2526/684 +f 1812/2526/685 1817/2532/685 1814/2528/685 +f 1813/2527/686 1818/2650/686 1816/2530/686 +f 1811/2525/687 1816/2651/687 1814/2531/687 +f 1812/2526/688 1815/2652/688 1818/2533/688 +f 1819/2534/689 1825/2540/689 1820/2535/689 +f 1820/2535/690 1825/2540/690 1822/2537/690 +f 1821/2536/691 1826/2653/691 1824/2539/691 +f 1825/2540/692 1819/2534/692 1824/2541/692 +f 1820/2535/693 1823/2654/693 1826/2543/693 +f 1827/2544/694 1830/2547/694 1828/2545/694 +f 1830/2547/695 1833/2655/695 1831/2548/695 +f 1829/2546/696 1834/2656/696 1832/2549/696 +f 1827/2544/697 1832/2657/697 1833/2550/697 +f 1828/2545/698 1831/2658/698 1834/2551/698 +f 1835/2552/699 1838/2555/699 1836/2553/699 +f 1838/2555/700 1842/2659/700 1839/2556/700 +f 1835/2552/701 1837/2554/701 1840/2557/701 +f 1838/2555/702 1835/2552/702 1841/2559/702 +f 1836/2553/703 1839/2660/703 1840/2561/703 +f 1843/2562/704 1846/2565/704 1844/2563/704 +f 1846/2565/705 1850/2661/705 1847/2566/705 +f 1843/2562/706 1845/2564/706 1848/2567/706 +f 1846/2565/707 1843/2562/707 1849/2569/707 +f 1845/2564/708 1844/2563/708 1847/2571/708 +f 1851/2573/709 1858/2581/709 1852/2574/709 +f 1852/2574/710 1858/2581/710 1854/2576/710 +f 1851/2573/711 1853/2575/711 1856/2578/711 +f 1851/2573/712 1857/2662/712 1854/2580/712 +f 1852/2574/713 1855/2663/713 1856/2582/713 +f 1859/2583/714 1862/2586/714 1860/2584/714 +f 1862/2586/715 1866/2664/715 1863/2587/715 +f 1859/2583/716 1861/2585/716 1864/2588/716 +f 1859/2583/717 1865/2665/717 1866/2590/717 +f 1860/2584/718 1863/2666/718 1864/2591/718 +f 1867/2592/719 1870/2595/719 1868/2593/719 +f 1870/2595/720 1874/2667/720 1871/2596/720 +f 1867/2592/721 1869/2594/721 1872/2597/721 +f 1870/2595/722 1867/2592/722 1873/2599/722 +f 1869/2594/723 1868/2593/723 1871/2601/723 +o Pressure +v 0.000000 2.000544 -3.159371 +v -0.216506 2.113832 -3.106544 +v -0.216506 2.340409 -3.000889 +v -0.125000 2.423342 -2.962217 +v 0.000000 2.453697 -2.948062 +v 0.125000 2.423342 -2.962217 +v 0.216506 2.340409 -3.000889 +v 0.250000 2.227120 -3.053716 +v 0.216506 2.113832 -3.106544 +v 0.125000 2.030899 -3.145216 +v -0.125000 2.030899 -3.145216 +v -0.250000 2.227120 -3.053716 +vt 0.500000 0.000000 +vt 0.066987 0.250000 +vt 0.066987 0.750000 +vt 0.250000 0.933013 +vt 0.500000 1.000000 +vt 0.750000 0.933013 +vt 0.933013 0.750000 +vt 1.000000 0.500000 +vt 0.933013 0.250000 +vt 0.750000 0.066987 +vt 0.250000 0.066987 +vt 0.000000 0.500000 +vn 0.0000 0.4226 -0.9063 +s off +f 1875/2668/724 1876/2669/724 1877/2670/724 +f 1877/2670/724 1878/2671/724 1879/2672/724 +f 1879/2672/724 1880/2673/724 1881/2674/724 +f 1881/2674/724 1882/2675/724 1883/2676/724 +f 1883/2676/724 1884/2677/724 1875/2668/724 +f 1875/2668/724 1885/2678/724 1876/2669/724 +f 1876/2669/724 1886/2679/724 1877/2670/724 +f 1877/2670/724 1879/2672/724 1875/2668/724 +f 1879/2672/724 1881/2674/724 1875/2668/724 +f 1881/2674/724 1883/2676/724 1875/2668/724 +o Spin +v -0.375000 2.313995 -2.944245 +v -0.266747 2.257351 -2.970659 +v -0.375000 2.087419 -3.049900 +v -0.437500 2.102596 -3.042822 +v -0.483253 2.144063 -3.023486 +v -0.500000 2.200707 -2.997072 +v -0.483253 2.257351 -2.970659 +v -0.437500 2.298818 -2.951323 +v -0.312500 2.298818 -2.951323 +v -0.250000 2.200707 -2.997072 +v -0.266747 2.144063 -3.023486 +v -0.312500 2.102596 -3.042822 +vt 0.500000 0.000000 +vt 0.066987 0.250000 +vt 0.500000 1.000000 +vt 0.750000 0.933013 +vt 0.933013 0.750000 +vt 1.000000 0.500000 +vt 0.933013 0.250000 +vt 0.750000 0.066987 +vt 0.250000 0.066987 +vt 0.000000 0.500000 +vt 0.066987 0.750000 +vt 0.250000 0.933013 +vn -0.0000 0.4226 -0.9063 +s off +f 1887/2680/725 1888/2681/725 1889/2682/725 +f 1889/2682/725 1890/2683/725 1891/2684/725 +f 1891/2684/725 1892/2685/725 1889/2682/725 +f 1892/2685/725 1893/2686/725 1889/2682/725 +f 1893/2686/725 1894/2687/725 1887/2680/725 +f 1887/2680/725 1895/2688/725 1888/2681/725 +f 1888/2681/725 1896/2689/725 1889/2682/725 +f 1896/2689/725 1897/2690/725 1889/2682/725 +f 1897/2690/725 1898/2691/725 1889/2682/725 +f 1893/2686/725 1887/2680/725 1889/2682/725 diff --git a/src/main/resources/assets/hbm/models/weapons/remington.obj b/src/main/resources/assets/hbm/models/weapons/remington.obj new file mode 100644 index 000000000..6a4a0996a --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/remington.obj @@ -0,0 +1,1397 @@ +# Blender v2.79 (sub 0) OBJ File: 'remington.blend' +# www.blender.org +o Pump +v 4.470348 4.051385 0.238853 +v 4.464032 4.375494 0.170446 +v 4.517191 4.375128 0.170446 +v 4.516782 4.097449 0.238853 +v 2.114282 4.046224 0.238853 +v 2.115330 4.391657 0.170446 +v 1.935458 3.997166 0.238853 +v 1.938089 4.280882 0.170446 +v 1.743975 3.978176 0.238853 +v 1.754518 4.246067 0.170446 +v 1.292959 3.962351 0.238853 +v 1.298755 4.214417 0.170446 +v 4.470348 4.051385 -0.248818 +v 4.516782 4.097449 -0.248818 +v 4.517191 4.375128 -0.180411 +v 4.464032 4.375494 -0.180411 +v 2.114282 4.046224 -0.248818 +v 2.115330 4.391657 -0.180411 +v 1.938089 4.280882 -0.180411 +v 1.935458 3.997166 -0.248818 +v 1.754518 4.246067 -0.180411 +v 1.743975 3.978176 -0.248818 +v 1.298755 4.214416 -0.180411 +v 1.292959 3.962351 -0.248818 +v 2.113234 3.792164 0.170446 +v 4.476664 3.818649 0.170446 +v 4.476664 3.818649 -0.180410 +v 2.113234 3.792164 -0.180410 +v 4.516372 3.911143 0.170446 +v 4.516372 3.911143 -0.180410 +v 1.932828 3.804824 0.170446 +v 1.932828 3.804824 -0.180410 +v 1.733431 3.801659 0.170446 +v 1.733431 3.801659 -0.180410 +v 1.287163 3.801659 0.170446 +v 1.287163 3.801659 -0.180410 +vt 0.864829 0.032779 +vt 0.823320 0.058384 +vt 0.817558 0.031254 +vt 0.815862 0.381968 +vt 0.858642 0.397274 +vt 0.823150 0.398077 +vt 0.857696 0.355504 +vt 0.822205 0.356307 +vt 0.858781 0.014506 +vt 0.824771 0.013409 +vt 0.857330 0.059481 +vt 0.865193 0.380852 +vt 0.796575 0.058190 +vt 0.823225 0.063426 +vt 0.792403 0.062566 +vt 0.793538 0.277032 +vt 0.824707 0.270438 +vt 0.821187 0.290152 +vt 0.791601 0.294748 +vt 0.820728 0.309376 +vt 0.792296 0.314027 +vt 0.795819 0.359768 +vt 0.856967 0.064571 +vt 0.884708 0.062410 +vt 0.888162 0.067556 +vt 0.883401 0.276703 +vt 0.856989 0.289393 +vt 0.853394 0.271357 +vt 0.885748 0.293777 +vt 0.857549 0.308583 +vt 0.885593 0.312538 +vt 0.907260 0.278504 +vt 0.940020 0.062713 +vt 0.940017 0.280374 +vt 0.909753 0.072431 +vt 0.935924 0.052137 +vt 0.905408 0.295551 +vt 0.939146 0.297544 +vt 0.904106 0.314997 +vt 0.938208 0.316923 +vt 0.901397 0.359208 +vt 0.936004 0.360941 +vt 0.884004 0.357643 +vt 0.904099 0.065820 +vt 0.773406 0.317183 +vt 0.778246 0.362247 +vt 0.771554 0.297195 +vt 0.768662 0.279468 +vt 0.778275 0.057591 +vt 0.770061 0.061917 +vn 1.0000 -0.0015 0.0000 +vn -0.9994 0.0360 0.0000 +vn -0.9997 0.0230 0.0000 +vn 1.0000 -0.0022 0.0000 +vn -0.0495 0.0646 0.9967 +vn -0.0019 0.7811 0.6244 +vn 0.1091 -0.1147 0.9874 +vn -0.0095 -0.0064 0.9999 +vn -0.2170 0.7834 0.5825 +vn -0.2719 0.7024 0.6578 +vn -0.0040 -0.0512 0.9987 +vn -0.0978 0.7738 0.6258 +vn -0.0011 -0.0608 0.9982 +vn -0.0502 0.7782 0.6260 +vn -0.0029 -0.0777 0.9970 +vn -0.0019 0.7811 -0.6244 +vn -0.0495 0.0646 -0.9967 +vn 0.1091 -0.1147 -0.9874 +vn -0.0095 -0.0064 -0.9999 +vn -0.2719 0.7024 -0.6578 +vn -0.2170 0.7834 -0.5825 +vn -0.0040 -0.0512 -0.9987 +vn -0.0978 0.7738 -0.6258 +vn -0.0011 -0.0608 -0.9982 +vn -0.0502 0.7782 -0.6260 +vn -0.0123 -0.8056 -0.5923 +vn 0.4607 -0.7282 0.5074 +vn -0.0123 -0.8056 0.5923 +vn 0.4607 -0.7282 -0.5074 +vn 0.7415 -0.3337 0.5821 +vn -0.0176 -0.8135 -0.5812 +vn -0.0176 -0.8135 0.5812 +vn 0.0054 0.7863 -0.6178 +vn 0.0054 0.7863 0.6178 +vn 0.0095 -0.8271 -0.5619 +vn 0.0095 -0.8271 0.5619 +vn 0.0000 -0.8380 -0.5456 +vn 0.0000 -0.8380 0.5456 +vn -0.0029 -0.0777 -0.9970 +vn 0.7415 -0.3337 -0.5821 +s off +f 14/1/1 3/2/1 4/3/1 +f 11/4/2 36/5/2 35/6/2 +f 23/7/3 11/4/3 12/8/3 +f 30/9/4 4/3/4 29/10/4 +f 14/1/1 15/11/1 3/2/1 +f 11/4/2 24/12/2 36/5/2 +f 23/7/3 24/12/3 11/4/3 +f 30/9/4 14/1/4 4/3/4 +s 1 +f 4/13/5 2/14/6 1/15/7 +f 5/16/8 2/14/6 6/17/9 +f 5/16/8 8/18/10 7/19/11 +f 7/19/11 10/20/12 9/21/13 +f 9/21/13 12/8/14 11/22/15 +f 16/23/16 14/24/17 13/25/18 +f 17/26/19 16/23/16 13/25/18 +f 17/26/19 19/27/20 18/28/21 +f 20/29/22 21/30/23 19/27/20 +f 22/31/24 23/7/25 21/30/23 +f 28/32/26 26/33/27 25/34/28 +f 16/23/16 6/17/9 2/14/6 +f 18/28/21 8/18/10 6/17/9 +f 27/35/29 29/36/30 26/33/27 +f 32/37/31 25/34/28 31/38/32 +f 15/11/33 2/14/6 3/2/34 +f 19/27/20 10/20/12 8/18/10 +f 34/39/35 31/38/32 33/40/36 +f 21/30/23 12/8/14 10/20/12 +f 36/41/37 33/40/36 35/42/38 +f 34/39/35 24/43/39 22/31/24 +f 32/37/31 22/31/24 20/29/22 +f 28/32/26 20/29/22 17/26/19 +f 28/32/26 13/25/18 27/35/29 +f 13/25/18 30/44/40 27/35/29 +f 33/45/36 11/22/15 35/46/38 +f 31/47/32 9/21/13 33/45/36 +f 25/48/28 7/19/11 31/47/32 +f 25/48/28 1/15/7 5/16/8 +f 29/49/30 1/15/7 26/50/27 +f 4/13/5 3/2/34 2/14/6 +f 5/16/8 1/15/7 2/14/6 +f 5/16/8 6/17/9 8/18/10 +f 7/19/11 8/18/10 10/20/12 +f 9/21/13 10/20/12 12/8/14 +f 16/23/16 15/11/33 14/24/17 +f 17/26/19 18/28/21 16/23/16 +f 17/26/19 20/29/22 19/27/20 +f 20/29/22 22/31/24 21/30/23 +f 22/31/24 24/43/39 23/7/25 +f 28/32/26 27/35/29 26/33/27 +f 16/23/16 18/28/21 6/17/9 +f 18/28/21 19/27/20 8/18/10 +f 27/35/29 30/44/40 29/36/30 +f 32/37/31 28/32/26 25/34/28 +f 15/11/33 16/23/16 2/14/6 +f 19/27/20 21/30/23 10/20/12 +f 34/39/35 32/37/31 31/38/32 +f 21/30/23 23/7/25 12/8/14 +f 36/41/37 34/39/35 33/40/36 +f 34/39/35 36/41/37 24/43/39 +f 32/37/31 34/39/35 22/31/24 +f 28/32/26 32/37/31 20/29/22 +f 28/32/26 17/26/19 13/25/18 +f 13/25/18 14/24/17 30/44/40 +f 33/45/36 9/21/13 11/22/15 +f 31/47/32 7/19/11 9/21/13 +f 25/48/28 5/16/8 7/19/11 +f 25/48/28 26/50/27 1/15/7 +f 29/49/30 4/13/5 1/15/7 +o Gun +v -5.112951 4.013554 -0.065163 +v -5.105778 3.902181 -0.180411 +v -5.105778 3.902181 0.170446 +v -5.112951 4.013554 0.055197 +v 0.602908 3.893884 0.084710 +v 0.602236 4.009133 0.200229 +v 0.599076 4.551005 0.200230 +v 0.598345 4.676232 0.084971 +v 0.598345 4.676232 -0.094936 +v 0.599076 4.551005 -0.210195 +v 0.602236 4.009133 -0.210195 +v 0.602908 3.893884 -0.094675 +v -1.666145 4.663572 0.054192 +v -1.857614 4.621053 0.055192 +v -1.857614 4.621053 -0.065157 +v -1.666145 4.663572 -0.064157 +v -2.478364 3.807992 0.054210 +v -2.213445 3.836719 0.041686 +v -2.213445 3.836719 -0.051651 +v -2.478364 3.807992 -0.064175 +v -2.906781 3.570996 0.054613 +v -2.665227 3.748743 0.054442 +v -2.665227 3.748743 -0.064407 +v -2.906781 3.570996 -0.064578 +v -3.143145 4.117467 0.055195 +v -3.193279 4.111999 0.055196 +v -3.193279 4.111999 -0.065161 +v -3.143145 4.117467 -0.065161 +v -3.160185 3.084241 0.054826 +v -3.033484 3.404187 0.054738 +v -3.033484 3.404187 -0.064703 +v -3.160185 3.084241 -0.064791 +v -6.301458 3.916862 0.055197 +v -6.301458 3.916862 -0.065163 +v -3.924444 4.110246 0.055196 +v -3.924444 4.110246 -0.065161 +v -5.033370 2.777969 0.054928 +v -3.810306 3.255416 0.054917 +v -3.810306 3.255416 -0.064883 +v -5.033370 2.777969 -0.065163 +v -6.545590 2.203708 0.055197 +v -6.141582 2.333336 0.055197 +v -6.141582 2.333336 -0.065163 +v -6.545590 2.203708 -0.065163 +v -3.477396 3.188155 0.054884 +v -3.477396 3.188155 -0.064849 +v -6.950308 2.039633 0.055197 +v -6.843499 2.082934 0.055197 +v -6.843499 2.082934 -0.065163 +v -6.950308 2.039633 -0.065163 +v -1.514214 4.676232 0.054190 +v -1.514214 4.676232 -0.064155 +v -2.438198 3.938664 0.170446 +v -2.678900 3.863265 0.170446 +v -2.715178 4.167140 0.170446 +v -2.308827 4.359546 0.170446 +v -0.826960 3.892838 0.109936 +v -0.811455 3.840602 0.089794 +v -0.933279 3.774469 0.065189 +v -1.393356 3.767455 0.065189 +v -1.519956 3.881396 0.109936 +v -0.711728 3.894740 -0.005583 +v -0.711728 3.894740 -0.004382 +v -0.811455 3.840602 -0.099759 +v -0.933279 3.774469 -0.075154 +v -1.186481 3.660529 0.065189 +v -1.339550 3.666174 0.065189 +v -1.382712 3.511773 0.065189 +v -1.437666 3.539574 0.065189 +v -1.696049 3.426317 0.065189 +v -1.694033 3.479438 0.065189 +v -1.974571 3.467462 0.065189 +v -1.959894 3.517418 0.065189 +v -2.091677 3.552918 0.065189 +v -1.994710 3.593379 0.065189 +v -2.132822 3.625713 0.065189 +v -1.975719 3.710485 0.065189 +v -2.145482 3.761809 0.065189 +v -1.947234 3.808600 0.065189 +v -1.733595 3.844998 0.065189 +v -1.841206 3.740552 0.065189 +v -1.899759 3.745300 0.065189 +v -1.834876 3.658262 0.065189 +v -1.868109 3.647184 0.065189 +v -1.812721 3.572806 0.065189 +v -1.833293 3.545904 0.065189 +v 0.598663 4.464297 -0.179291 +v 7.053775 4.464296 -0.179291 +v 7.053775 4.337518 -0.126778 +v 0.598663 4.337519 -0.126778 +v 7.053775 4.285005 0.000000 +v 0.598663 4.285006 0.000000 +v 7.053775 4.337518 0.126778 +v 0.598663 4.337519 0.126778 +v 7.053775 4.464296 0.179291 +v 0.598663 4.464297 0.179291 +v 7.053775 4.591074 0.126778 +v 0.598663 4.591074 0.126778 +v 7.053775 4.643588 0.000000 +v 0.598663 4.643588 0.000000 +v 7.053775 4.591074 -0.126778 +v 0.598663 4.591074 -0.126778 +v 0.598663 4.231049 -0.126778 +v 4.738556 4.231049 -0.126778 +v 4.738556 4.104270 -0.179291 +v 0.598663 4.104271 -0.179291 +v 0.598663 3.924980 0.000000 +v 4.738556 3.924979 0.000000 +v 4.738556 3.977493 0.126778 +v 0.598663 3.977493 0.126778 +v 4.738556 4.104270 0.179291 +v 0.598663 4.104271 0.179291 +v 4.738556 4.231049 0.126778 +v 0.598663 4.231049 0.126778 +v 4.738556 4.283562 0.000000 +v 0.598663 4.283562 0.000000 +v 4.738556 3.977493 -0.126778 +v 0.598663 3.977493 -0.126778 +v -2.145515 3.761845 -0.075167 +v -2.100131 3.849006 -0.090017 +v -1.519956 3.881396 -0.119901 +v -1.515127 4.549832 -0.169949 +v -1.737748 4.529163 -0.169593 +v -2.154962 3.965629 -0.115909 +v -1.918767 4.486259 -0.167145 +v -2.308827 4.359546 -0.180411 +v -2.438198 3.938664 -0.180411 +v -2.678900 3.863265 -0.180411 +v -2.715178 4.167140 -0.180411 +v -3.057939 4.018990 -0.180411 +v -2.940559 3.671105 -0.180411 +v -3.126581 4.009727 -0.180411 +v -3.051667 3.522461 -0.180411 +v -3.480488 3.321639 -0.180411 +v -3.496978 4.033666 -0.180411 +v -3.909676 3.999638 -0.180411 +v -3.828276 3.390000 -0.180411 +v -3.189723 4.001576 -0.180411 +v -3.164598 3.221291 -0.180411 +v -5.042223 2.915424 -0.180411 +v -6.857377 2.201114 -0.180411 +v -7.035906 3.721401 -0.180411 +v -7.105495 3.463608 -0.180411 +v -6.963232 2.158221 -0.180411 +v -6.289105 3.794504 -0.180411 +v -6.153575 2.452128 -0.180411 +v -6.558358 2.322273 -0.180411 +v -6.713084 3.759094 -0.180411 +v -0.826960 3.892838 -0.119901 +v -0.685173 4.009406 -0.133150 +v -0.559645 4.551436 -0.195776 +v -1.393356 3.767455 -0.075154 +v -1.947234 3.808600 -0.075154 +v -1.733595 3.844998 -0.075154 +v -1.339550 3.666174 -0.075154 +v -1.186481 3.660529 -0.075154 +v -1.437666 3.539574 -0.075154 +v -1.382712 3.511773 -0.075154 +v -1.694033 3.479438 -0.075154 +v -1.696049 3.426317 -0.075154 +v -1.959894 3.517418 -0.075154 +v -1.974571 3.467462 -0.075154 +v -1.994710 3.593379 -0.075154 +v -2.091677 3.552918 -0.075154 +v -1.975719 3.710485 -0.075154 +v -2.132822 3.625713 -0.075154 +v -1.899759 3.745300 -0.075154 +v -1.841206 3.740552 -0.075154 +v -1.868109 3.647184 -0.075154 +v -1.834876 3.658262 -0.075154 +v -1.833293 3.545904 -0.075154 +v -1.812721 3.572806 -0.075154 +v -6.857377 2.201114 0.170445 +v -6.963232 2.158221 0.170445 +v -7.105495 3.463608 0.170445 +v -7.035906 3.721401 0.170446 +v -7.050545 3.846062 0.055197 +v -7.120131 3.597898 0.055197 +v -7.120131 3.597898 -0.065163 +v -7.050545 3.846062 -0.065163 +v -1.515127 4.549832 0.159984 +v -0.559645 4.551436 0.185811 +v -0.685173 4.009405 0.123185 +v -6.153575 2.452128 0.170445 +v -6.558358 2.322273 0.170445 +v -6.713084 3.759094 0.170446 +v -6.289105 3.794504 0.170446 +v -5.041132 2.910362 0.170445 +v -2.100131 3.849006 0.080052 +v -1.737748 4.529163 0.159628 +v -3.828276 3.390000 0.170445 +v -3.909676 3.999638 0.170446 +v -2.154962 3.965629 0.105944 +v -1.918767 4.486259 0.157180 +v -0.530743 4.676232 0.084970 +v -0.530743 4.676232 -0.094935 +v -2.940559 3.671105 0.170446 +v -3.057939 4.018990 0.170446 +v -6.726351 3.882294 0.055197 +v -6.726351 3.882294 -0.065163 +v -2.268081 4.492105 0.055193 +v -2.268081 4.492105 -0.065158 +v -2.728401 4.277896 0.055194 +v -2.728401 4.277896 -0.065159 +v -3.051667 3.522461 0.170445 +v -3.126581 4.009727 0.170446 +v -3.093011 4.122937 0.055195 +v -3.093011 4.122937 -0.065160 +v -3.499552 4.144814 0.055196 +v -3.499552 4.144814 -0.065161 +v -3.480488 3.321639 0.170445 +v -3.496978 4.033666 0.170446 +v -3.164598 3.221291 0.170445 +v -3.189723 4.001576 0.170446 +v -0.452439 4.315853 0.162668 +v 0.430686 4.315853 0.191772 +v -0.452439 4.519165 0.186038 +v 0.430686 4.519165 0.198078 +vt 0.810585 0.462900 +vt 0.810585 0.567026 +vt 0.731720 0.462900 +vt 0.917774 0.422399 +vt 0.968228 0.472853 +vt 0.917774 0.523308 +vt 0.459182 0.923197 +vt 0.479882 0.923197 +vt 0.479881 0.943896 +vt 0.891510 0.620277 +vt 0.896272 0.640007 +vt 0.891510 0.640007 +vt 0.703125 0.921875 +vt 0.523438 0.960938 +vt 0.523438 0.921875 +vt 0.788387 0.589172 +vt 0.753918 0.589172 +vt 0.731720 0.567026 +vt 0.753867 0.438837 +vt 0.788437 0.438837 +vt 0.867320 0.472853 +vt 0.882097 0.437177 +vt 0.953450 0.437177 +vt 0.953450 0.508530 +vt 0.882097 0.508530 +vt 0.459182 0.943896 +vt 0.454895 0.933547 +vt 0.469532 0.918910 +vt 0.484169 0.933547 +vt 0.469532 0.948183 +vt 0.896272 0.620277 +vt 0.703125 0.960938 +vt 0.265217 0.603645 +vt 0.227917 0.624794 +vt 0.265076 0.625865 +vt 0.062957 0.466013 +vt 0.109501 0.425991 +vt 0.056471 0.442087 +vt 0.658552 0.151318 +vt 0.707840 0.161074 +vt 0.669941 0.136406 +vt 0.629331 0.281703 +vt 0.620680 0.262350 +vt 0.621490 0.281989 +vt 0.602836 0.100498 +vt 0.645468 0.115288 +vt 0.607139 0.085117 +vt 0.633240 0.129305 +vt 0.308914 0.288450 +vt 0.119382 0.326891 +vt 0.310691 0.307902 +vt 0.503112 0.272396 +vt 0.504518 0.291958 +vt 0.286925 0.055937 +vt 0.504299 0.110636 +vt 0.504983 0.090153 +vt 0.030596 0.030829 +vt 0.100246 0.021875 +vt 0.033433 0.011876 +vt 0.560482 0.103717 +vt 0.559295 0.086301 +vt 0.909966 0.772776 +vt 0.895143 0.761855 +vt 0.907688 0.759674 +vt 0.897484 0.774987 +vt 0.859844 0.768146 +vt 0.293603 0.603181 +vt 0.294138 0.625696 +vt 0.090847 0.510531 +vt 0.046548 0.563242 +vt 0.042879 0.504327 +vt 0.386403 0.434406 +vt 0.412361 0.457082 +vt 0.294234 0.444144 +vt 0.295057 0.700286 +vt 0.316422 0.674877 +vt 0.316414 0.704083 +vt 0.333051 0.417789 +vt 0.302618 0.422567 +vt 0.290402 0.392766 +vt 0.280079 0.399575 +vt 0.225893 0.382844 +vt 0.175132 0.407271 +vt 0.170951 0.397657 +vt 0.149810 0.417672 +vt 0.170146 0.423220 +vt 0.143502 0.433240 +vt 0.176883 0.445919 +vt 0.144614 0.460700 +vt 0.850837 0.680302 +vt 0.860705 0.665594 +vt 0.880427 0.673045 +vt 0.852012 0.655056 +vt 0.856918 0.654626 +vt 0.854995 0.642365 +vt 0.727911 0.837417 +vt 0.022087 0.852422 +vt 0.022087 0.837415 +vt 0.727911 0.852422 +vt 0.022087 0.867430 +vt 0.727913 0.747390 +vt 0.022089 0.762379 +vt 0.022089 0.747371 +vt 0.727912 0.762395 +vt 0.022088 0.777386 +vt 0.727912 0.777399 +vt 0.022088 0.792393 +vt 0.727912 0.792404 +vt 0.022088 0.807400 +vt 0.727911 0.807408 +vt 0.022088 0.822408 +vt 0.727911 0.822413 +vt 0.474785 0.942561 +vt 0.022088 0.957569 +vt 0.022088 0.942564 +vt 0.474785 0.867534 +vt 0.022088 0.882546 +vt 0.022087 0.867541 +vt 0.474785 0.882540 +vt 0.022088 0.897550 +vt 0.474785 0.897545 +vt 0.022088 0.912555 +vt 0.474785 0.912551 +vt 0.022088 0.927559 +vt 0.474785 0.927556 +vt 0.474785 0.957567 +vt 0.022088 0.972573 +vt 0.474786 0.972572 +vt 0.022088 0.987578 +vt 0.141775 0.430009 +vt 0.122000 0.408061 +vt 0.248277 0.573554 +vt 0.271138 0.443328 +vt 0.151148 0.447865 +vt 0.143827 0.475073 +vt 0.135316 0.565877 +vt 0.212560 0.572296 +vt 0.694597 0.199946 +vt 0.640565 0.235479 +vt 0.699482 0.245226 +vt 0.649731 0.175629 +vt 0.629334 0.235727 +vt 0.503237 0.141466 +vt 0.568999 0.243384 +vt 0.559631 0.130404 +vt 0.627151 0.155114 +vt 0.619063 0.235893 +vt 0.601524 0.119228 +vt 0.306201 0.262489 +vt 0.502376 0.246265 +vt 0.897420 0.793191 +vt 0.895298 0.927965 +vt 0.882382 0.950618 +vt 0.285598 0.103345 +vt 0.115128 0.280588 +vt 0.861789 0.799940 +vt 0.850682 0.955557 +vt 0.290740 0.571758 +vt 0.445893 0.447827 +vt 0.412664 0.427645 +vt 0.097500 0.066951 +vt 0.047160 0.287302 +vt 0.082675 0.495928 +vt 0.050147 0.558151 +vt 0.294505 0.415662 +vt 0.225672 0.436728 +vt 0.182426 0.435035 +vt 0.333623 0.388990 +vt 0.386762 0.405287 +vt 0.290803 0.363616 +vt 0.303025 0.393785 +vt 0.225553 0.352973 +vt 0.280317 0.370421 +vt 0.173771 0.376849 +vt 0.227081 0.363707 +vt 0.147974 0.386830 +vt 0.169746 0.367041 +vt 0.141286 0.402377 +vt 0.168368 0.392882 +vt 0.174660 0.416001 +vt 0.907629 0.653134 +vt 0.919563 0.640046 +vt 0.919563 0.670514 +vt 0.895324 0.647201 +vt 0.909669 0.645131 +vt 0.883708 0.653121 +vt 0.896075 0.652068 +vt 0.499507 0.703859 +vt 0.476989 0.684128 +vt 0.499507 0.684128 +vt 0.815297 0.780573 +vt 0.807303 0.914495 +vt 0.803560 0.777502 +vt 0.876454 0.620277 +vt 0.876454 0.640007 +vt 0.214339 0.678639 +vt 0.252275 0.700274 +vt 0.214333 0.700264 +vt 0.884379 0.964703 +vt 0.909966 0.956254 +vt 0.890143 0.974636 +vt 0.908683 0.640007 +vt 0.445680 0.477727 +vt 0.475655 0.589140 +vt 0.286353 0.602104 +vt 0.476989 0.703859 +vt 0.439969 0.684128 +vt 0.164295 0.678625 +vt 0.164289 0.700250 +vt 0.101585 0.084926 +vt 0.050621 0.307480 +vt 0.033882 0.075621 +vt 0.439969 0.703859 +vt 0.402213 0.684128 +vt 0.120913 0.678613 +vt 0.120907 0.700238 +vt 0.708036 0.482915 +vt 0.475645 0.589132 +vt 0.291238 0.124486 +vt 0.118928 0.300851 +vt 0.271116 0.471283 +vt 0.243054 0.602496 +vt 0.155545 0.477278 +vt 0.402213 0.703859 +vt 0.390466 0.684128 +vt 0.500926 0.164420 +vt 0.309814 0.283356 +vt 0.147680 0.502653 +vt 0.129911 0.584896 +vt 0.098575 0.678607 +vt 0.098569 0.700232 +vt 0.097152 0.040725 +vt 0.207386 0.598906 +vt 0.933875 0.960964 +vt 0.933875 0.773016 +vt 0.984094 0.960964 +vt 0.704517 0.588195 +vt 0.483981 0.624209 +vt 0.704653 0.623356 +vt 0.390466 0.703859 +vt 0.373787 0.684128 +vt 0.085691 0.678604 +vt 0.085685 0.700228 +vt 0.694311 0.214929 +vt 0.639302 0.249556 +vt 0.649024 0.190576 +vt 0.227005 0.465484 +vt 0.117466 0.307614 +vt 0.051220 0.333640 +vt 0.228956 0.602159 +vt 0.147373 0.619440 +vt 0.373787 0.703859 +vt 0.359424 0.684128 +vt 0.024062 0.473973 +vt 0.018614 0.451028 +vt 0.054106 0.588288 +vt 0.052076 0.611133 +vt 0.064624 0.700223 +vt 0.855397 0.973903 +vt 0.859323 0.985274 +vt 0.476566 0.557773 +vt 0.704652 0.449581 +vt 0.628182 0.249803 +vt 0.627142 0.169560 +vt 0.849691 0.789654 +vt 0.818207 0.938125 +vt 0.701244 0.269589 +vt 0.637111 0.281729 +vt 0.699202 0.288452 +vt 0.570043 0.703859 +vt 0.539575 0.677838 +vt 0.570043 0.684128 +vt 0.539575 0.710150 +vt 0.515630 0.684128 +vt 0.570783 0.268520 +vt 0.572559 0.287373 +vt 0.850837 0.620277 +vt 0.861960 0.640007 +vt 0.850837 0.640007 +vt 0.483190 0.589185 +vt 0.637577 0.262089 +vt 0.920286 0.620277 +vt 0.941368 0.640007 +vt 0.920286 0.640007 +vt 0.515630 0.703859 +vt 0.569403 0.260726 +vt 0.556346 0.147731 +vt 0.861960 0.620277 +vt 0.252281 0.678650 +vt 0.617998 0.250101 +vt 0.601853 0.130295 +vt 0.908683 0.620277 +vt 0.442348 0.442476 +vt 0.131775 0.476132 +vt 0.442260 0.412978 +vt 0.121740 0.443383 +vt 0.707582 0.451210 +vt 0.706507 0.589839 +vt 0.482023 0.620911 +vt 0.221637 0.630474 +vt 0.045642 0.594178 +vt 0.080339 0.477749 +vt 0.697412 0.262019 +vt 0.636347 0.274750 +vt 0.697961 0.190099 +vt 0.620447 0.275434 +vt 0.657530 0.167173 +vt 0.553439 0.119252 +vt 0.634596 0.144122 +vt 0.121211 0.327943 +vt 0.312574 0.309128 +vt 0.504549 0.291471 +vt 0.503318 0.265598 +vt 0.500243 0.135119 +vt 0.289904 0.095967 +vt 0.101358 0.058225 +vt 0.052780 0.334691 +vt 0.816460 0.762701 +vt 0.800971 0.932061 +vt 0.850639 0.942092 +vt 0.814503 0.954710 +vt 0.850639 0.771435 +vt 0.259126 0.634289 +vt 0.288602 0.634277 +vt 0.139959 0.617855 +vt 0.703805 0.418329 +vt 0.704542 0.554851 +vt 0.149094 0.596839 +vt 0.033762 0.503191 +vt 0.698403 0.175955 +vt 0.629106 0.262193 +vt 0.283705 0.074790 +vt 0.030597 0.057430 +vt 0.909490 0.790948 +vt 0.900406 0.946851 +vt 0.862199 0.781355 +vt 0.441465 0.408469 +vt 0.702092 0.382759 +vt 0.334395 0.689295 +vt 0.333901 0.689392 +vt 0.413080 0.444871 +vt 0.295063 0.678662 +vt 0.227537 0.393431 +vt 0.184966 0.464482 +vt 0.853419 0.669482 +vt 0.850837 0.640046 +vt 0.727911 0.867426 +vt 0.474786 0.987578 +vt 0.413306 0.415532 +vt 0.880466 0.649634 +vt 0.950371 0.753681 +vt 0.967598 0.753681 +vt 0.984094 0.773016 +vt 0.967598 0.978039 +vt 0.950371 0.978039 +vt 0.049316 0.314394 +vt 0.359424 0.703859 +vt 0.064624 0.678596 +vt 0.941368 0.620277 +vt 0.705958 0.623592 +vt 0.042879 0.472796 +vt 0.697262 0.287188 +vt 0.628409 0.275077 +vt 0.572536 0.286039 +vt 0.603637 0.104124 +vt 0.033645 0.048906 +vt 0.804432 0.759674 +vt 0.848172 0.959565 +vn 1.0000 0.0058 0.0000 +vn 1.0000 0.0000 0.0000 +vn 0.7944 -0.6075 0.0000 +vn -0.0327 -0.1141 0.9929 +vn -0.0136 -0.0310 0.9994 +vn -0.1304 0.9023 -0.4109 +vn -0.2342 0.8849 0.4026 +vn -0.1304 0.9023 0.4109 +vn 0.2058 -0.8940 -0.3981 +vn -0.2341 -0.7665 0.5980 +vn 0.2058 -0.8940 0.3981 +vn 0.6693 -0.6596 -0.3420 +vn 0.4302 -0.8198 0.3779 +vn 0.6693 -0.6596 0.3420 +vn -0.1008 0.9237 0.3696 +vn -0.0017 0.9245 -0.3812 +vn -0.0017 0.9245 0.3812 +vn 0.3707 -0.8580 -0.3555 +vn 0.8547 -0.4470 0.2640 +vn 0.3707 -0.8580 0.3555 +vn 0.8547 -0.4470 -0.2640 +vn -0.8323 0.5302 -0.1618 +vn -0.0763 0.9147 0.3969 +vn -0.0701 0.8617 -0.5025 +vn -0.0754 0.9240 -0.3748 +vn -0.0754 0.9240 0.3748 +vn 0.7016 -0.6308 0.3314 +vn 0.0750 -0.8892 -0.4513 +vn 0.0758 -0.8893 0.4510 +vn 0.3158 -0.8664 -0.3869 +vn 0.3122 -0.8703 0.3810 +vn 0.3158 -0.8664 0.3869 +vn -0.2339 -0.8802 -0.4130 +vn -0.2339 -0.8802 0.4130 +vn -0.4413 -0.8413 -0.3122 +vn 0.3473 -0.8566 0.3817 +vn -0.4413 -0.8413 0.3122 +vn 0.3473 -0.8566 -0.3817 +vn -0.0434 0.9086 -0.4154 +vn -0.0434 0.9086 0.4154 +vn 0.1326 -0.3338 0.9333 +vn -0.1617 0.3620 0.9181 +vn 0.1559 -0.3255 0.9326 +vn 0.0048 -0.3123 0.9500 +vn 0.0058 -0.3583 0.9336 +vn 0.0041 -0.2491 0.9685 +vn 0.4458 -0.8951 0.0000 +vn 0.4771 -0.8789 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0152 -0.0645 0.9978 +vn 0.0000 -0.0000 -1.0000 +vn -0.0000 -0.7071 -0.7071 +vn -0.0000 -1.0000 -0.0000 +vn -0.0000 -0.7071 0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 1.0000 0.0000 +vn 0.0000 0.7071 -0.7071 +vn -0.6836 -0.4365 -0.5850 +vn -0.6835 -0.4366 0.5850 +vn -0.0709 0.3152 -0.9464 +vn -0.0178 -0.0817 -0.9965 +vn -0.1499 -0.1597 -0.9757 +vn 0.1132 -0.2336 -0.9657 +vn -0.1095 0.3455 -0.9320 +vn -0.0866 0.2995 -0.9502 +vn 0.1559 -0.3255 -0.9326 +vn -0.0987 0.3510 -0.9312 +vn -0.1617 0.3620 -0.9181 +vn 0.2686 -0.2850 -0.9201 +vn -0.0500 0.3921 -0.9186 +vn 0.0271 -0.2871 -0.9575 +vn 0.0057 0.4105 -0.9118 +vn -0.0843 -0.3364 -0.9379 +vn 0.3700 -0.2289 -0.9004 +vn -0.0048 0.3673 -0.9301 +vn 0.3388 -0.4105 -0.8465 +vn 0.5809 0.3581 -0.7310 +vn -0.0319 0.3890 -0.9207 +vn 0.1441 -0.3556 -0.9234 +vn -0.7116 -0.0174 -0.7024 +vn -0.4518 0.3360 -0.8264 +vn -0.2668 -0.0410 -0.9629 +vn -0.0319 0.3655 -0.9303 +vn 0.1259 -0.3517 -0.9276 +vn -0.0358 0.3672 -0.9294 +vn -0.0238 0.3123 -0.9497 +vn 0.0462 -0.3931 -0.9183 +vn 0.3189 -0.2434 -0.9160 +vn 0.1337 -0.3654 -0.9212 +vn 0.1326 -0.3338 -0.9333 +vn 0.0041 -0.2491 -0.9685 +vn 0.0059 -0.3598 -0.9330 +vn 0.0058 -0.3583 -0.9336 +vn 0.0431 -0.2297 -0.9723 +vn 0.0165 -0.7847 -0.6196 +vn 0.0290 -0.1615 -0.9864 +vn 0.0048 -0.3123 -0.9500 +vn 0.0153 -0.0645 -0.9978 +vn -0.9963 0.0854 0.0000 +vn -0.5404 0.8414 0.0000 +vn 0.1441 -0.3556 0.9234 +vn -0.7116 -0.0174 0.7024 +vn -0.5443 -0.4088 0.7326 +vn -0.9487 -0.3161 0.0000 +vn -0.9457 -0.3251 0.0000 +vn 0.4417 -0.8972 0.0000 +vn 0.5105 -0.8599 0.0000 +vn -0.5806 0.7420 -0.3353 +vn -0.9803 0.1251 0.1531 +vn -0.5806 0.7420 0.3353 +vn 0.9680 0.2510 0.0000 +vn 0.9864 0.1645 0.0000 +vn 0.0462 -0.3932 0.9183 +vn -0.0305 0.2919 0.9560 +vn -0.0238 0.3123 0.9497 +vn -0.0442 0.9990 0.0000 +vn 0.0598 -0.9982 0.0000 +vn 0.1337 -0.3655 0.9212 +vn -0.0358 0.3672 0.9294 +vn 0.1259 -0.3517 0.9276 +vn 0.5984 0.8012 0.0000 +vn -0.3788 -0.9255 0.0000 +vn -0.0365 -0.3922 0.9192 +vn -0.2698 -0.0565 0.9612 +vn -0.0319 0.3655 0.9303 +vn -0.0178 -0.0817 0.9965 +vn -0.0709 0.3152 0.9464 +vn -0.1499 -0.1597 0.9757 +vn 0.9910 0.1341 0.0000 +vn 0.0276 -0.2866 0.9576 +vn 0.0096 -0.2507 0.9680 +vn 0.1132 -0.2336 0.9657 +vn -0.1095 0.3455 0.9320 +vn -0.7469 -0.6649 0.0000 +vn 0.3122 -0.8703 -0.3810 +vn -0.0866 0.2995 0.9502 +vn -0.5443 -0.4088 -0.7326 +vn -0.0000 0.9155 -0.4023 +vn -0.0087 0.9019 0.4318 +vn -0.0000 0.9155 0.4023 +vn 0.9755 -0.2199 0.0000 +vn -0.9543 -0.2990 0.0001 +vn -0.9543 -0.2990 0.0000 +vn -0.0987 0.3510 0.9312 +vn 0.2686 -0.2850 0.9201 +vn 0.0165 -0.7847 0.6196 +vn 0.0150 -0.8094 0.5870 +vn 0.0430 -0.2297 0.9723 +vn -0.0763 0.9147 -0.3969 +vn -0.0882 0.9132 0.3979 +vn -0.2342 0.8849 -0.4026 +vn -0.3245 0.8695 0.3725 +vn 0.1795 -0.9838 0.0000 +vn 0.4302 -0.8198 -0.3779 +vn -0.3805 0.8498 -0.3647 +vn -0.3805 0.8498 0.3647 +vn -0.9957 -0.0927 0.0001 +vn -0.0882 0.9132 -0.3979 +vn -0.0305 0.2919 -0.9560 +vn -0.0365 -0.3922 -0.9192 +vn -0.0500 0.3921 0.9186 +vn 0.3700 -0.2289 0.9004 +vn -0.4518 0.3360 0.8264 +vn -0.2336 0.8933 0.3840 +vn 0.1680 -0.9858 0.0000 +vn -0.2691 -0.9631 0.0000 +vn -0.7798 -0.6261 0.0000 +vn 0.0114 0.9303 -0.3667 +vn 0.0114 0.9303 0.3667 +vn -0.8880 -0.4598 0.0000 +vn -0.0087 0.9019 -0.4318 +vn -0.2336 0.8933 -0.3840 +vn 0.9353 -0.3539 0.0000 +vn 0.6965 -0.7176 0.0000 +vn 0.0057 0.4105 0.9118 +vn -0.0843 -0.3364 0.9379 +vn -0.0048 0.3673 0.9301 +vn 0.3388 -0.4105 0.8465 +vn 0.3189 -0.2434 0.9160 +vn 0.2033 0.2380 0.9497 +vn 0.2034 0.2380 -0.9497 +vn -0.2342 -0.7665 -0.5980 +vn -0.0243 -0.9190 0.3936 +vn -0.0072 0.3586 0.9335 +vn -0.0319 0.3890 0.9207 +vn -0.0243 -0.9190 -0.3936 +vn -0.0072 0.3586 -0.9335 +vn -0.3245 0.8695 -0.3725 +vn -0.1008 0.9237 -0.3696 +vn -0.0947 -0.9218 -0.3758 +vn -0.9803 0.1251 -0.1531 +vn 0.7372 -0.4050 0.5409 +vn 0.0059 -0.3582 0.9336 +vn 0.0059 -0.3598 0.9330 +vn 0.0290 -0.1615 0.9864 +vn 0.0059 -0.3582 -0.9336 +vn 0.0150 -0.8094 -0.5870 +vn -0.9957 -0.0928 0.0002 +vn 0.7372 -0.4050 -0.5409 +s off +f 43/51/41 42/52/41 46/53/41 +f 124/54/42 135/55/42 131/56/42 +f 141/57/42 151/58/42 147/59/42 +f 207/60/43 121/61/43 122/62/43 +f 252/63/44 253/64/44 251/65/44 +f 42/52/41 41/66/41 48/67/41 +f 48/67/41 47/68/41 42/52/41 +f 47/68/41 46/53/41 42/52/41 +f 46/53/41 45/69/41 44/70/41 +f 44/70/41 43/51/41 46/53/41 +f 127/71/42 125/72/42 124/54/42 +f 124/54/42 137/73/42 135/55/42 +f 135/55/42 133/74/42 131/56/42 +f 131/56/42 129/75/42 127/71/42 +f 127/71/42 124/54/42 131/56/42 +f 144/76/42 153/77/42 141/57/42 +f 141/57/42 140/78/42 151/58/42 +f 151/58/42 149/79/42 147/59/42 +f 147/59/42 145/80/42 144/76/42 +f 144/76/42 141/57/42 147/59/42 +f 207/60/43 208/81/43 121/61/43 +f 252/63/45 254/82/45 253/64/45 +s 1 +f 52/83/46 50/84/47 49/85/48 +f 56/86/49 54/87/50 53/88/51 +f 60/89/52 58/90/53 57/91/54 +f 61/92/55 63/93/56 62/94/57 +f 68/95/58 66/96/59 65/97/60 +f 67/98/61 57/91/54 66/96/59 +f 37/99/62 69/100/63 40/101/64 +f 72/102/65 40/101/64 71/103/66 +f 73/104/67 75/105/68 74/106/69 +f 80/107/70 78/108/71 77/109/72 +f 74/106/69 82/110/73 81/111/74 +f 86/112/75 84/113/76 83/114/77 +f 85/115/78 77/116/72 84/113/76 +f 88/117/79 49/85/48 87/118/80 +f 89/119/81 91/120/82 90/121/83 +f 95/122/84 93/123/85 96/124/86 +f 95/125/87 100/126/88 94/127/88 +f 96/124/86 102/128/89 95/122/84 +f 103/129/89 104/130/89 102/128/89 +f 105/131/89 106/132/89 104/130/89 +f 106/132/89 109/133/89 108/134/89 +f 109/133/89 110/135/89 108/134/89 +f 111/136/89 112/137/89 110/135/89 +f 113/138/89 114/139/90 112/137/89 +f 115/140/89 117/141/89 116/142/89 +f 117/141/89 120/143/89 119/144/89 +f 120/143/89 121/145/89 119/144/89 +f 124/146/91 126/147/92 123/148/91 +f 125/149/92 128/150/93 126/147/92 +f 127/151/93 130/152/94 128/153/93 +f 129/154/94 132/155/89 130/152/94 +f 131/156/89 134/157/95 132/155/89 +f 133/158/95 136/159/96 134/157/95 +f 135/160/96 138/161/97 136/159/96 +f 137/162/97 123/148/91 138/161/97 +f 140/163/97 142/164/91 139/165/97 +f 144/166/93 146/167/94 143/168/93 +f 145/169/94 148/170/89 146/167/94 +f 147/171/89 150/172/95 148/170/89 +f 149/173/95 152/174/96 150/172/95 +f 151/175/96 139/165/97 152/174/96 +f 141/176/91 154/177/92 142/164/91 +f 153/178/92 143/179/93 154/177/92 +f 54/87/50 155/180/98 114/181/99 +f 159/182/100 157/183/101 156/184/102 +f 160/185/103 162/186/104 161/187/105 +f 164/188/106 166/189/107 165/190/108 +f 167/191/109 168/192/110 166/189/107 +f 173/193/111 171/194/112 170/195/113 +f 169/196/114 174/197/115 168/192/110 +f 170/195/113 174/197/115 175/198/116 +f 173/193/111 38/199/117 172/200/118 +f 177/201/119 179/202/120 178/203/121 +f 176/204/122 181/205/123 38/199/117 +f 183/206/124 178/203/121 184/207/125 +f 158/208/126 186/209/127 185/210/128 +f 182/211/129 184/212/125 181/205/123 +f 156/184/102 161/187/105 159/182/100 +f 163/213/130 165/214/108 162/186/104 +f 188/215/131 157/183/132 185/210/133 +f 156/184/134 190/216/135 189/217/136 +f 192/218/91 188/215/131 101/219/137 +f 194/220/91 191/221/91 192/218/91 +f 196/222/91 193/223/91 194/220/91 +f 196/222/91 197/224/91 195/225/91 +f 200/226/91 197/224/91 198/227/91 +f 202/228/91 199/229/91 200/226/91 +f 155/180/138 201/230/91 202/228/91 +f 204/231/91 189/232/91 190/233/91 +f 204/231/91 205/234/91 203/235/91 +f 208/236/91 205/234/91 206/237/91 +f 191/238/139 105/239/140 103/240/139 +f 209/241/141 211/242/142 210/243/143 +f 82/110/73 65/97/60 81/111/74 +f 205/244/144 122/62/145 120/245/144 +f 194/246/146 102/247/147 104/248/146 +f 216/249/148 214/250/149 213/251/150 +f 208/81/151 119/252/152 121/61/151 +f 219/253/153 218/254/154 217/255/155 +f 193/256/140 107/257/156 105/239/140 +f 196/258/157 104/248/146 106/259/157 +f 220/260/158 222/261/159 221/262/160 +f 195/263/156 109/264/161 107/257/156 +f 198/265/162 106/259/157 108/266/162 +f 42/267/163 218/268/154 219/253/153 +f 224/269/164 223/270/165 220/260/158 +f 97/271/166 226/272/167 225/273/168 +f 197/274/161 111/275/169 109/264/161 +f 227/276/170 39/277/171 224/269/164 +f 229/278/172 92/279/173 89/119/81 +f 200/280/174 108/266/162 110/281/174 +f 79/282/175 73/104/67 78/108/71 +f 225/273/168 230/283/176 229/278/172 +f 210/284/143 211/285/142 180/286/177 +f 45/287/178 231/288/179 44/289/180 +f 199/290/169 113/291/181 111/275/169 +f 202/292/182 110/281/174 112/293/183 +f 90/294/83 234/295/184 233/296/185 +f 116/297/186 97/271/187 225/273/188 +f 70/298/189 235/299/190 69/100/63 +f 51/300/191 237/301/192 50/84/47 +f 201/302/181 115/303/193 113/291/181 +f 59/304/194 53/88/51 58/305/53 +f 237/301/192 240/306/195 239/307/196 +f 114/308/197 202/292/182 112/293/183 +f 236/309/198 213/251/150 235/310/190 +f 187/311/199 47/312/200 186/209/127 +f 233/296/185 242/313/201 241/314/202 +f 221/315/160 212/316/203 209/241/141 +f 240/317/195 243/318/204 239/319/196 +f 190/320/205 97/321/206 116/322/205 +f 157/323/206 96/324/207 97/321/206 +f 246/325/208 71/103/66 245/326/209 +f 63/93/56 245/326/209 62/94/57 +f 189/327/193 118/328/210 115/329/193 +f 232/330/211 87/118/80 231/288/179 +f 244/331/212 61/92/55 243/318/204 +f 204/332/213 116/333/214 117/334/213 +f 188/335/207 103/240/139 96/324/207 +f 248/336/215 227/276/170 247/337/216 +f 203/338/210 120/245/144 118/328/210 +f 192/339/147 95/125/87 102/247/147 +f 241/314/202 250/340/217 249/341/218 +f 206/342/152 117/334/213 119/252/152 +f 250/340/217 247/337/216 249/341/218 +f 93/123/219 98/343/220 219/253/153 +f 54/344/50 225/273/168 229/278/172 +f 99/345/221 185/210/128 186/209/127 +f 156/184/102 55/346/222 160/185/103 +f 219/253/153 41/347/223 42/267/163 +f 43/348/224 231/349/179 218/254/154 +f 226/272/167 50/350/47 230/283/176 +f 92/279/173 239/351/196 91/120/82 +f 90/121/83 53/352/51 89/119/81 +f 91/353/82 243/354/204 234/295/184 +f 233/296/185 58/355/53 90/294/83 +f 242/313/201 62/356/57 250/340/217 +f 241/314/202 57/357/54 233/296/185 +f 62/356/57 248/336/215 250/340/217 +f 81/358/74 249/341/218 247/337/216 +f 243/354/204 242/313/201 234/295/184 +f 249/341/218 66/359/59 241/314/202 +f 69/360/63 39/277/171 40/361/64 +f 71/362/66 39/277/171 228/363/225 +f 74/364/69 224/269/164 73/365/67 +f 220/260/158 73/365/67 224/269/164 +f 221/262/160 78/366/71 220/260/158 +f 222/261/159 69/360/63 235/367/190 +f 248/336/215 71/362/66 228/363/225 +f 247/337/216 74/364/69 81/358/74 +f 210/243/143 84/368/76 209/241/141 +f 212/316/203 214/369/149 211/242/142 +f 222/370/159 213/371/150 212/316/203 +f 77/372/72 209/241/141 84/368/76 +f 49/373/48 217/255/155 87/374/80 +f 237/375/192 230/283/176 50/350/47 +f 218/254/154 87/374/80 217/255/155 +f 89/119/81 54/344/50 229/278/172 +f 186/209/127 48/376/226 99/345/221 +f 46/377/227 232/330/211 45/287/178 +f 159/182/100 51/300/191 52/83/46 +f 162/186/104 240/306/195 238/378/228 +f 164/379/106 56/86/49 59/304/194 +f 165/190/108 244/331/212 240/317/195 +f 167/191/109 59/380/194 60/89/52 +f 168/192/110 63/93/56 64/381/229 +f 169/196/114 60/89/52 67/98/61 +f 63/93/56 171/194/112 246/325/208 +f 82/110/73 175/198/116 68/95/58 +f 244/331/212 168/192/110 64/381/229 +f 175/198/116 67/98/61 68/95/58 +f 70/298/189 38/199/117 181/205/123 +f 72/102/65 38/199/117 37/99/62 +f 75/105/68 176/204/122 173/193/111 +f 182/211/129 76/382/230 79/282/175 +f 183/383/124 79/282/175 80/107/70 +f 184/212/125 70/298/189 181/205/123 +f 171/194/112 72/102/65 246/325/208 +f 170/195/113 75/105/68 173/193/111 +f 180/384/177 85/115/78 86/112/75 +f 178/203/121 215/385/231 216/249/148 +f 184/207/125 216/249/148 236/309/198 +f 80/386/70 177/201/119 183/206/124 +f 52/83/46 158/208/126 159/182/100 +f 238/378/228 161/187/105 162/186/104 +f 187/311/199 88/117/79 232/330/211 +f 163/213/130 55/346/222 56/86/49 +f 98/387/220 48/376/226 41/388/223 +f 94/127/232 99/389/221 98/390/220 +f 52/83/46 51/300/191 50/84/47 +f 56/86/49 55/346/222 54/87/50 +f 60/89/52 59/380/194 58/90/53 +f 61/92/55 64/381/229 63/93/56 +f 68/95/58 67/98/61 66/96/59 +f 67/98/61 60/89/52 57/91/54 +f 37/99/62 70/298/189 69/100/63 +f 72/102/65 37/99/62 40/101/64 +f 73/104/67 76/382/230 75/105/68 +f 80/107/70 79/282/175 78/108/71 +f 74/106/69 75/105/68 82/110/73 +f 86/112/75 85/115/78 84/113/76 +f 85/115/78 80/386/70 77/116/72 +f 88/117/79 52/83/46 49/85/48 +f 89/119/81 92/279/173 91/120/82 +f 94/391/233 93/123/85 95/122/84 +f 93/123/85 97/271/234 96/124/86 +f 95/125/87 101/392/87 100/126/88 +f 96/124/86 103/129/89 102/128/89 +f 103/129/89 105/131/89 104/130/89 +f 105/131/89 107/393/89 106/132/89 +f 106/132/89 107/393/89 109/133/89 +f 109/133/89 111/136/89 110/135/89 +f 111/136/89 113/138/89 112/137/89 +f 113/138/89 115/394/235 114/139/90 +f 115/140/89 118/395/89 117/141/89 +f 117/141/89 118/395/89 120/143/89 +f 120/143/89 122/396/89 121/145/89 +f 124/146/91 125/149/92 126/147/92 +f 125/149/92 127/397/93 128/150/93 +f 127/151/93 129/154/94 130/152/94 +f 129/154/94 131/156/89 132/155/89 +f 131/156/89 133/158/95 134/157/95 +f 133/158/95 135/160/96 136/159/96 +f 135/160/96 137/162/97 138/161/97 +f 137/162/97 124/146/91 123/148/91 +f 140/163/97 141/176/91 142/164/91 +f 144/166/93 145/169/94 146/167/94 +f 145/169/94 147/171/89 148/170/89 +f 147/171/89 149/173/95 150/172/95 +f 149/173/95 151/175/96 152/174/96 +f 151/175/96 140/163/97 139/165/97 +f 141/176/91 153/178/92 154/177/92 +f 153/178/92 144/398/93 143/179/93 +f 54/87/50 55/346/222 155/180/98 +f 159/182/100 158/208/126 157/183/101 +f 160/185/103 163/213/130 162/186/104 +f 164/188/106 167/191/109 166/189/107 +f 167/191/109 169/196/114 168/192/110 +f 173/193/111 172/200/118 171/194/112 +f 169/196/114 175/198/116 174/197/115 +f 170/195/113 171/194/112 174/197/115 +f 173/193/111 176/204/122 38/199/117 +f 177/201/119 180/384/177 179/202/120 +f 176/204/122 182/211/129 181/205/123 +f 183/206/124 177/201/119 178/203/121 +f 185/210/128 157/183/101 158/208/126 +f 158/208/126 187/311/199 186/209/127 +f 182/211/129 183/383/124 184/212/125 +f 156/184/102 160/185/103 161/187/105 +f 163/213/130 164/379/106 165/214/108 +f 185/210/133 100/399/236 101/219/137 +f 101/219/137 188/215/131 185/210/133 +f 156/184/134 157/183/237 190/216/135 +f 189/217/136 155/180/138 156/184/134 +f 192/218/91 191/221/91 188/215/131 +f 194/220/91 193/223/91 191/221/91 +f 196/222/91 195/225/91 193/223/91 +f 196/222/91 198/227/91 197/224/91 +f 200/226/91 199/229/91 197/224/91 +f 202/228/91 201/230/91 199/229/91 +f 155/180/138 189/217/136 201/230/91 +f 204/231/91 203/235/91 189/232/91 +f 204/231/91 206/237/91 205/234/91 +f 208/236/91 207/400/91 205/234/91 +f 191/238/139 193/256/140 105/239/140 +f 209/241/141 212/316/203 211/242/142 +f 82/110/73 68/95/58 65/97/60 +f 205/244/144 207/60/145 122/62/145 +f 194/246/146 192/339/147 102/247/147 +f 216/249/148 215/385/231 214/250/149 +f 208/81/151 206/342/152 119/252/152 +f 217/255/155 97/271/166 93/123/219 +f 93/123/219 219/253/153 217/255/155 +f 193/256/140 195/263/156 107/257/156 +f 196/258/157 194/246/146 104/248/146 +f 220/260/158 223/270/165 222/261/159 +f 195/263/156 197/274/161 109/264/161 +f 198/265/162 196/258/157 106/259/157 +f 42/267/163 43/348/224 218/268/154 +f 224/269/164 39/277/171 223/270/165 +f 97/271/166 217/255/155 226/272/167 +f 197/274/161 199/290/169 111/275/169 +f 227/276/170 228/363/225 39/277/171 +f 229/278/172 230/283/176 92/279/173 +f 200/280/174 198/265/162 108/266/162 +f 79/282/175 76/382/230 73/104/67 +f 225/273/168 226/272/167 230/283/176 +f 211/285/142 214/401/149 215/402/231 +f 215/402/231 179/403/120 211/285/142 +f 179/403/120 180/286/177 211/285/142 +f 180/286/177 86/404/75 83/405/77 +f 83/405/77 210/284/143 180/286/177 +f 45/287/178 232/330/211 231/288/179 +f 199/290/169 201/302/181 113/291/181 +f 202/292/182 200/280/174 110/281/174 +f 90/294/83 91/353/82 234/295/184 +f 225/273/188 114/139/90 115/394/235 +f 115/394/235 116/297/186 225/273/188 +f 70/298/189 236/406/198 235/299/190 +f 51/300/191 238/378/228 237/301/192 +f 201/302/181 189/407/193 115/303/193 +f 59/304/194 56/86/49 53/88/51 +f 237/301/192 238/378/228 240/306/195 +f 114/308/197 155/408/238 202/292/182 +f 236/309/198 216/249/148 213/251/150 +f 187/311/199 46/377/227 47/312/200 +f 233/296/185 234/295/184 242/313/201 +f 221/315/160 222/370/159 212/316/203 +f 240/317/195 244/331/212 243/318/204 +f 190/320/205 157/323/206 97/321/206 +f 157/323/206 188/335/207 96/324/207 +f 246/325/208 72/102/65 71/103/66 +f 63/93/56 246/325/208 245/326/209 +f 189/327/193 203/338/210 118/328/210 +f 232/330/211 88/117/79 87/118/80 +f 244/331/212 64/381/229 61/92/55 +f 204/332/213 190/409/214 116/333/214 +f 188/335/207 191/238/139 103/240/139 +f 248/336/215 228/363/225 227/276/170 +f 203/338/210 205/244/144 120/245/144 +f 192/339/147 101/392/87 95/125/87 +f 241/314/202 242/313/201 250/340/217 +f 206/342/152 204/332/213 117/334/213 +f 250/340/217 248/336/215 247/337/216 +f 93/123/219 94/391/232 98/343/220 +f 54/344/50 114/139/99 225/273/168 +f 99/345/221 100/399/239 185/210/128 +f 156/184/102 155/180/98 55/346/222 +f 219/253/153 98/343/220 41/347/223 +f 43/348/224 44/410/180 231/349/179 +f 226/272/167 49/373/48 50/350/47 +f 92/279/173 237/375/192 239/351/196 +f 90/121/83 58/411/53 53/352/51 +f 91/353/82 239/412/196 243/354/204 +f 233/296/185 57/357/54 58/355/53 +f 242/313/201 61/413/55 62/356/57 +f 241/314/202 66/359/59 57/357/54 +f 62/356/57 245/414/209 248/336/215 +f 81/358/74 65/415/60 249/341/218 +f 243/354/204 61/413/55 242/313/201 +f 249/341/218 65/415/60 66/359/59 +f 69/360/63 223/270/165 39/277/171 +f 71/362/66 40/361/64 39/277/171 +f 74/364/69 227/276/170 224/269/164 +f 220/260/158 78/366/71 73/365/67 +f 221/262/160 77/416/72 78/366/71 +f 222/261/159 223/270/165 69/360/63 +f 248/336/215 245/414/209 71/362/66 +f 247/337/216 227/276/170 74/364/69 +f 210/243/143 83/417/77 84/368/76 +f 212/316/203 213/371/150 214/369/149 +f 222/370/159 235/418/190 213/371/150 +f 77/372/72 221/315/160 209/241/141 +f 49/373/48 226/272/167 217/255/155 +f 237/375/192 92/279/173 230/283/176 +f 218/254/154 231/349/179 87/374/80 +f 89/119/81 53/352/51 54/344/50 +f 186/209/127 47/312/200 48/376/226 +f 46/377/227 187/311/199 232/330/211 +f 159/182/100 161/187/105 51/300/191 +f 162/186/104 165/214/108 240/306/195 +f 164/379/106 163/213/130 56/86/49 +f 165/190/108 166/189/107 244/331/212 +f 167/191/109 164/188/106 59/380/194 +f 168/192/110 174/197/115 63/93/56 +f 169/196/114 167/191/109 60/89/52 +f 63/93/56 174/197/115 171/194/112 +f 82/110/73 170/195/113 175/198/116 +f 244/331/212 166/189/107 168/192/110 +f 175/198/116 169/196/114 67/98/61 +f 70/298/189 37/99/62 38/199/117 +f 72/102/65 172/200/118 38/199/117 +f 75/105/68 76/382/230 176/204/122 +f 182/211/129 176/204/122 76/382/230 +f 183/383/124 182/211/129 79/282/175 +f 184/212/125 236/406/198 70/298/189 +f 171/194/112 172/200/118 72/102/65 +f 170/195/113 82/110/73 75/105/68 +f 180/384/177 177/201/119 85/115/78 +f 178/203/121 179/202/120 215/385/231 +f 184/207/125 178/203/121 216/249/148 +f 80/386/70 85/115/78 177/201/119 +f 52/83/46 88/117/79 158/208/126 +f 238/378/228 51/300/191 161/187/105 +f 187/311/199 158/208/126 88/117/79 +f 163/213/130 160/185/103 55/346/222 +f 98/387/220 99/345/221 48/376/226 +f 94/127/232 100/126/239 99/389/221 diff --git a/src/main/resources/assets/hbm/models/weapons/tau.obj b/src/main/resources/assets/hbm/models/weapons/tau.obj new file mode 100644 index 000000000..f0f981346 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/tau.obj @@ -0,0 +1,5293 @@ +# Blender v2.79 (sub 0) OBJ File: 'tau.blend' +# www.blender.org +o Body +v 0.551005 -0.364964 2.574621 +v 0.525250 -0.409266 2.523377 +v 0.515690 -0.425405 2.453378 +v 0.524887 -0.409056 2.383378 +v 0.550376 -0.364602 2.332135 +v 0.585327 -0.303952 2.313378 +v 0.620376 -0.243358 2.332134 +v 0.646131 -0.199057 2.383378 +v 0.655690 -0.182918 2.453377 +v 0.646494 -0.199266 2.523377 +v 0.621005 -0.243721 2.574621 +v 0.586053 -0.304371 2.593377 +v 0.876733 -0.551959 2.548175 +v 0.843024 -0.591668 2.497790 +v 0.822599 -0.601533 2.428962 +v 0.820930 -0.578912 2.360134 +v 0.838465 -0.529865 2.309748 +v 0.870505 -0.467534 2.291306 +v 0.908465 -0.408621 2.309748 +v 0.942174 -0.368912 2.360134 +v 0.962599 -0.359046 2.428962 +v 0.964268 -0.381668 2.497789 +v 0.946733 -0.430715 2.548175 +v 0.914693 -0.493046 2.566617 +v 1.101227 -0.681570 2.469018 +v 1.055429 -0.714300 2.423376 +v 1.018491 -0.714631 2.361029 +v 1.000308 -0.682476 2.298681 +v 1.005754 -0.626449 2.253039 +v 1.033369 -0.561564 2.236333 +v 1.075754 -0.505206 2.253039 +v 1.121552 -0.472476 2.298681 +v 1.158491 -0.472144 2.361028 +v 1.176673 -0.504300 2.423376 +v 1.171227 -0.560327 2.469018 +v 1.143612 -0.625212 2.485724 +v 1.256243 -0.771069 2.330546 +v 1.196166 -0.795555 2.298250 +v 1.139721 -0.784624 2.254134 +v 1.102032 -0.741206 2.210018 +v 1.093198 -0.676935 2.177722 +v 1.115587 -0.609032 2.165901 +v 1.163198 -0.555691 2.177722 +v 1.223275 -0.531206 2.210018 +v 1.279721 -0.542137 2.254134 +v 1.317410 -0.585554 2.298250 +v 1.326243 -0.649825 2.330546 +v 1.303855 -0.717729 2.342367 +v 1.334899 -0.816481 2.142498 +v 1.266247 -0.836016 2.129960 +v 1.198090 -0.818323 2.112834 +v 1.148689 -0.768143 2.095708 +v 1.131281 -0.698922 2.083170 +v 1.150531 -0.629207 2.078581 +v 1.201281 -0.577679 2.083170 +v 1.269932 -0.558143 2.095708 +v 1.338090 -0.575836 2.112834 +v 1.387491 -0.626016 2.129960 +v 1.404899 -0.695237 2.142498 +v 1.385649 -0.764952 2.147086 +v 1.345154 -0.822402 1.933423 +v 1.275257 -0.841218 1.936914 +v 1.205398 -0.822543 1.941684 +v 1.154295 -0.771381 1.946454 +v 1.135642 -0.701440 1.949945 +v 1.154436 -0.631462 1.951223 +v 1.205642 -0.580197 1.949945 +v 1.275539 -0.561381 1.946454 +v 1.345398 -0.580056 1.941684 +v 1.396501 -0.631218 1.936914 +v 1.415154 -0.701158 1.933423 +v 1.396360 -0.771136 1.932145 +v 1.310290 -0.802273 1.715737 +v 1.241624 -0.821800 1.728206 +v 1.173446 -0.804095 1.745240 +v 1.124025 -0.753904 1.762273 +v 1.106602 -0.684674 1.774743 +v 1.125847 -0.614956 1.779307 +v 1.176602 -0.563430 1.774743 +v 1.245268 -0.543904 1.762273 +v 1.313446 -0.561608 1.745240 +v 1.362868 -0.611800 1.728206 +v 1.380290 -0.681030 1.715737 +v 1.361046 -0.750748 1.711173 +v 1.248342 -0.766507 1.488676 +v 1.180748 -0.786653 1.505321 +v 1.114035 -0.769794 1.528057 +v 1.066078 -0.720448 1.550794 +v 1.049728 -0.651837 1.567438 +v 1.069365 -0.582346 1.573530 +v 1.119728 -0.530594 1.567438 +v 1.187322 -0.510448 1.550794 +v 1.254035 -0.527307 1.528057 +v 1.301991 -0.576653 1.505321 +v 1.318342 -0.645263 1.488676 +v 1.298705 -0.714755 1.482584 +v 1.172383 -0.722653 1.252446 +v 1.105165 -0.743015 1.270301 +v 1.038964 -0.726452 1.294692 +v 0.991519 -0.677402 1.319082 +v 0.975544 -0.609007 1.336938 +v 0.995318 -0.539595 1.343473 +v 1.045544 -0.487764 1.336938 +v 1.112763 -0.467401 1.319082 +v 1.178964 -0.483964 1.294692 +v 1.226408 -0.533015 1.270301 +v 1.242383 -0.601409 1.252446 +v 1.222609 -0.670821 1.245910 +v 1.094187 -0.677506 1.009806 +v 1.026658 -0.697689 1.026667 +v 0.960034 -0.680881 1.049699 +v 0.912166 -0.631587 1.072732 +v 0.895880 -0.563013 1.089593 +v 0.915541 -0.493536 1.095764 +v 0.965880 -0.441770 1.089593 +v 1.033409 -0.421587 1.072732 +v 1.100034 -0.438394 1.049699 +v 1.147902 -0.487689 1.026667 +v 1.164187 -0.556262 1.009806 +v 1.144526 -0.625740 1.003635 +v 1.025202 -0.637677 0.765133 +v 0.956826 -0.657371 0.778870 +v 0.889045 -0.639896 0.797636 +v 0.840020 -0.589934 0.816401 +v 0.822888 -0.520871 0.830139 +v 0.842239 -0.451215 0.835167 +v 0.892888 -0.399628 0.830139 +v 0.961264 -0.379933 0.816401 +v 1.029045 -0.397409 0.797636 +v 1.078070 -0.447371 0.778870 +v 1.095202 -0.516433 0.765133 +v 1.075851 -0.586090 0.760105 +v 0.976472 -0.609543 0.523846 +v 0.907032 -0.628623 0.531965 +v 0.837798 -0.610309 0.543057 +v 0.787320 -0.559507 0.554148 +v 0.769125 -0.489831 0.562268 +v 0.788086 -0.419949 0.565239 +v 0.839124 -0.368587 0.562268 +v 0.908564 -0.349507 0.554148 +v 0.977798 -0.367821 0.543057 +v 1.028276 -0.418623 0.531965 +v 1.046472 -0.488299 0.523846 +v 1.027510 -0.558181 0.520874 +v 0.958094 -0.598932 0.290518 +v 0.888094 -0.617689 0.290518 +v 0.818094 -0.598932 0.290518 +v 0.766850 -0.547689 0.290518 +v 0.748094 -0.477689 0.290518 +v 0.766850 -0.407689 0.290518 +v 0.818094 -0.356445 0.290518 +v 0.888094 -0.337689 0.290518 +v 0.958094 -0.356445 0.290518 +v 1.009338 -0.407689 0.290518 +v 1.028094 -0.477689 0.290518 +v 1.009338 -0.547689 0.290518 +v 0.000000 0.244981 -0.368932 +v 0.000000 0.244981 0.368932 +v 0.173227 0.173227 -0.368932 +v 0.173227 0.173227 0.368932 +v 0.244981 -0.000000 -0.368932 +v 0.244981 -0.000000 0.368932 +v 0.173227 -0.173227 -0.368932 +v 0.173227 -0.173227 0.368932 +v 0.000000 -0.244981 -0.368932 +v 0.000000 -0.244981 0.368932 +v -0.173227 -0.173227 -0.368932 +v -0.173227 -0.173228 0.368932 +v -0.244981 0.000000 -0.368932 +v -0.244981 0.000000 0.368932 +v -0.173227 0.173227 -0.368932 +v -0.173227 0.173227 0.368932 +v 0.825075 0.000002 0.000002 +v 0.722677 0.000002 0.247212 +v 0.475467 0.000002 0.349610 +v 0.228257 0.000002 0.247212 +v 0.125859 0.000002 0.000002 +v 0.228257 0.000002 -0.247208 +v 0.475467 0.000002 -0.349606 +v 0.722678 0.000002 -0.247208 +v 0.714536 0.412539 0.000002 +v 0.625857 0.361341 0.247212 +v 0.411767 0.237735 0.349610 +v 0.197676 0.114130 0.247212 +v 0.108997 0.062931 0.000002 +v 0.197676 0.114130 -0.247208 +v 0.411767 0.237735 -0.349606 +v 0.625857 0.361341 -0.247208 +v 0.412538 0.714538 0.000002 +v 0.361339 0.625859 0.247212 +v 0.237734 0.411769 0.349610 +v 0.114128 0.197678 0.247212 +v 0.062930 0.108999 0.000002 +v 0.114129 0.197678 -0.247208 +v 0.237734 0.411769 -0.349606 +v 0.361339 0.625859 -0.247208 +v 0.000000 0.825077 0.000002 +v 0.000000 0.722679 0.247212 +v 0.000000 0.475469 0.349610 +v 0.000000 0.228258 0.247212 +v 0.000000 0.125861 0.000002 +v 0.000000 0.228259 -0.247208 +v 0.000000 0.475469 -0.349606 +v 0.000000 0.722679 -0.247208 +v -0.412537 0.714538 0.000002 +v -0.361338 0.625859 0.247212 +v -0.237733 0.411769 0.349610 +v -0.114128 0.197678 0.247212 +v -0.062929 0.108999 0.000002 +v -0.114128 0.197678 -0.247208 +v -0.237733 0.411769 -0.349606 +v -0.361338 0.625859 -0.247208 +v -0.714536 0.412540 0.000002 +v -0.625857 0.361341 0.247212 +v -0.411766 0.237735 0.349610 +v -0.197676 0.114130 0.247212 +v -0.108997 0.062932 0.000002 +v -0.197676 0.114130 -0.247208 +v -0.411766 0.237735 -0.349606 +v -0.625857 0.361341 -0.247208 +v -0.825075 0.000002 0.000002 +v -0.722677 0.000002 0.247212 +v -0.475467 0.000002 0.349610 +v -0.228257 0.000002 0.247212 +v -0.125859 0.000002 0.000002 +v -0.228257 0.000002 -0.247208 +v -0.475467 0.000002 -0.349606 +v -0.722677 0.000002 -0.247208 +v -0.714536 -0.412536 0.000002 +v -0.625857 -0.361336 0.247212 +v -0.411766 -0.237732 0.349610 +v -0.197676 -0.114127 0.247212 +v -0.108997 -0.062928 0.000002 +v -0.197676 -0.114127 -0.247208 +v -0.411767 -0.237732 -0.349606 +v -0.625857 -0.361336 -0.247208 +v -0.412537 -0.714534 0.000002 +v -0.361338 -0.625855 0.247212 +v -0.237733 -0.411765 0.349610 +v -0.114128 -0.197675 0.247212 +v -0.062929 -0.108995 0.000002 +v -0.114128 -0.197674 -0.247208 +v -0.237733 -0.411765 -0.349606 +v -0.361338 -0.625855 -0.247208 +v 0.000000 -0.825073 0.000002 +v 0.000000 -0.722675 0.247212 +v 0.000000 -0.475466 0.349610 +v 0.000000 -0.228255 0.247212 +v 0.000000 -0.125858 0.000002 +v 0.000000 -0.228255 -0.247208 +v 0.000000 -0.475465 -0.349606 +v 0.000000 -0.722675 -0.247208 +v 0.412538 -0.714534 0.000002 +v 0.361339 -0.625855 0.247212 +v 0.237734 -0.411765 0.349610 +v 0.114128 -0.197675 0.247212 +v 0.062930 -0.108995 0.000002 +v 0.114129 -0.197675 -0.247208 +v 0.237734 -0.411765 -0.349606 +v 0.361339 -0.625855 -0.247208 +v 0.714536 -0.412536 0.000002 +v 0.625857 -0.361337 0.247212 +v 0.411767 -0.237732 0.349610 +v 0.197676 -0.114126 0.247212 +v 0.108997 -0.062928 0.000002 +v 0.197676 -0.114127 -0.247208 +v 0.411767 -0.237732 -0.349606 +v 0.625857 -0.361337 -0.247208 +v -0.375000 -1.363814 -2.375000 +v -0.375000 -0.863814 -2.375000 +v -0.375000 -1.363814 -3.124999 +v -0.375000 -0.863814 -3.124999 +v 0.375000 -1.363814 -2.375000 +v 0.375000 -0.863814 -2.375000 +v 0.375000 -1.363814 -3.124999 +v 0.375000 -0.863814 -3.124999 +v -0.375000 -0.496790 -5.624999 +v -0.375000 -1.746790 -5.624999 +v 0.375000 -1.746790 -5.624999 +v 0.375000 -0.496790 -5.624999 +v -0.249981 1.031888 -2.749502 +v 0.249981 1.031888 -2.749502 +v -0.249981 0.945274 -2.713625 +v 0.249981 0.945274 -2.713625 +v -0.249981 0.909398 -2.627011 +v 0.249981 0.909398 -2.627011 +v -0.249981 0.945275 -2.540398 +v 0.249981 0.945274 -2.540397 +v -0.249981 1.031888 -2.504521 +v 0.249981 1.031888 -2.504521 +v -0.249981 1.118502 -2.540398 +v 0.249981 1.118502 -2.540397 +v -0.249981 1.154378 -2.627011 +v 0.249981 1.154378 -2.627011 +v -0.249980 1.118502 -2.713625 +v 0.249981 1.118502 -2.713625 +v -0.249981 1.031888 -2.994483 +v 0.249981 1.031888 -2.994483 +v -0.249981 0.945274 -2.958606 +v 0.249981 0.945274 -2.958606 +v -0.249981 0.909398 -2.871992 +v 0.249981 0.909398 -2.871992 +v -0.249981 0.945274 -2.785378 +v 0.249981 0.945274 -2.785378 +v -0.249981 1.031888 -2.749502 +v 0.249981 1.031888 -2.749502 +v -0.249980 1.118502 -2.785378 +v 0.249981 1.118502 -2.785378 +v -0.249980 1.154378 -2.871992 +v 0.249981 1.154378 -2.871992 +v -0.249980 1.118502 -2.958606 +v 0.249981 1.118502 -2.958606 +v -0.250000 0.863920 -2.500000 +v -0.250000 0.926420 -2.500000 +v -0.250000 0.863920 -2.999999 +v -0.250000 0.926420 -2.999999 +v 0.250000 0.863920 -2.500000 +v 0.250000 0.926420 -2.500000 +v 0.312500 0.863920 -2.999999 +v 0.312500 0.926420 -2.999999 +v -0.312500 0.863920 -2.999999 +v -0.312500 0.863920 -2.500000 +v -0.312500 0.926420 -2.500000 +v -0.312500 0.926420 -2.999999 +v 0.250000 0.926420 -2.999999 +v 0.250000 0.863920 -2.999999 +v 0.312500 0.863920 -2.500000 +v 0.312500 0.926420 -2.500000 +v -0.312500 1.051420 -2.500000 +v -0.312500 1.051420 -2.999999 +v 0.312500 1.051420 -2.999999 +v 0.312500 1.051420 -2.500000 +v -0.250000 1.051420 -2.500000 +v -0.250000 1.051420 -2.999999 +v 0.250000 1.051420 -2.999999 +v 0.250000 1.051420 -2.500000 +v 0.207317 0.989929 -0.750546 +v 0.269079 0.989930 -0.750546 +v 0.207317 0.966012 -0.808289 +v 0.269079 0.966012 -0.808289 +v 0.207317 0.908269 -0.832206 +v 0.269079 0.908269 -0.832206 +v 0.207317 0.850527 -0.808289 +v 0.269079 0.850527 -0.808289 +v 0.207317 0.826609 -0.750546 +v 0.269079 0.826609 -0.750546 +v 0.207317 0.850527 -0.692804 +v 0.269079 0.850527 -0.692804 +v 0.207317 0.908269 -0.668886 +v 0.269079 0.908269 -0.668886 +v 0.207317 0.966012 -0.692804 +v 0.269079 0.966012 -0.692804 +v 0.295772 0.955105 -0.797381 +v 0.295772 0.974504 -0.750546 +v 0.295772 0.908269 -0.816781 +v 0.295772 0.861434 -0.797381 +v 0.295772 0.842034 -0.750546 +v 0.295772 0.861434 -0.703711 +v 0.295772 0.908269 -0.684311 +v 0.295772 0.955105 -0.703711 +v 0.207317 0.989929 -1.158847 +v 0.269080 0.989930 -1.158847 +v 0.207317 0.966012 -1.216590 +v 0.269079 0.966012 -1.216590 +v 0.207317 0.908269 -1.240508 +v 0.269080 0.908269 -1.240508 +v 0.207317 0.850527 -1.216590 +v 0.269080 0.850527 -1.216590 +v 0.207317 0.826609 -1.158848 +v 0.269080 0.826609 -1.158848 +v 0.207317 0.850527 -1.101105 +v 0.269080 0.850527 -1.101105 +v 0.207317 0.908269 -1.077187 +v 0.269079 0.908269 -1.077187 +v 0.207317 0.966012 -1.101105 +v 0.269080 0.966012 -1.101105 +v 0.295772 0.955105 -1.205683 +v 0.295772 0.974504 -1.158847 +v 0.295772 0.908269 -1.225083 +v 0.295772 0.861434 -1.205683 +v 0.295772 0.842034 -1.158848 +v 0.295772 0.861434 -1.112013 +v 0.295772 0.908269 -1.092613 +v 0.295772 0.955104 -1.112013 +v 0.207317 0.989929 -1.567149 +v 0.269079 0.989929 -1.567149 +v 0.207317 0.966012 -1.624892 +v 0.269079 0.966012 -1.624892 +v 0.207317 0.908269 -1.648810 +v 0.269080 0.908269 -1.648810 +v 0.207317 0.850527 -1.624892 +v 0.269080 0.850527 -1.624892 +v 0.207317 0.826609 -1.567149 +v 0.269079 0.826609 -1.567149 +v 0.207317 0.850527 -1.509407 +v 0.269079 0.850527 -1.509407 +v 0.207317 0.908269 -1.485489 +v 0.269080 0.908269 -1.485489 +v 0.207317 0.966012 -1.509406 +v 0.269079 0.966012 -1.509407 +v 0.295772 0.955105 -1.613984 +v 0.295772 0.974504 -1.567149 +v 0.295772 0.908269 -1.633384 +v 0.295772 0.861434 -1.613984 +v 0.295772 0.842034 -1.567149 +v 0.295772 0.861434 -1.520314 +v 0.295772 0.908269 -1.500914 +v 0.295772 0.955105 -1.520314 +v 0.207317 0.989929 -1.975451 +v 0.269079 0.989930 -1.975451 +v 0.207317 0.966012 -2.033194 +v 0.269079 0.966012 -2.033194 +v 0.207317 0.908269 -2.057111 +v 0.269079 0.908269 -2.057111 +v 0.207317 0.850527 -2.033194 +v 0.269079 0.850527 -2.033194 +v 0.207317 0.826609 -1.975451 +v 0.269079 0.826609 -1.975451 +v 0.207317 0.850527 -1.917708 +v 0.269079 0.850527 -1.917708 +v 0.207317 0.908269 -1.893791 +v 0.269079 0.908269 -1.893791 +v 0.207317 0.966012 -1.917708 +v 0.269079 0.966012 -1.917708 +v 0.295772 0.955105 -2.022286 +v 0.295772 0.974504 -1.975451 +v 0.295772 0.908269 -2.041686 +v 0.295772 0.861434 -2.022286 +v 0.295772 0.842034 -1.975451 +v 0.295772 0.861434 -1.928616 +v 0.295772 0.908269 -1.909216 +v 0.295772 0.955105 -1.928616 +v 0.567829 -0.284546 2.199322 +v 0.784319 -0.409536 2.199322 +v 0.481215 -0.434565 2.271075 +v 0.697705 -0.559556 2.271075 +v 0.445338 -0.496705 2.444303 +v 0.661828 -0.621696 2.444303 +v 0.481215 -0.434565 2.617530 +v 0.697705 -0.559556 2.617530 +v 0.567829 -0.284546 2.689283 +v 0.784319 -0.409536 2.689283 +v 0.654443 -0.134526 2.617530 +v 0.870933 -0.259516 2.617530 +v 0.690319 -0.072386 2.444303 +v 0.906809 -0.197376 2.444303 +v 0.654443 -0.134526 2.271075 +v 0.870933 -0.259517 2.271075 +v 0.872283 -0.218575 -0.312500 +v 0.872283 -0.218575 0.312500 +v 1.088790 -0.343575 -0.312500 +v 1.088789 -0.343575 0.312500 +v 1.088790 -0.593575 -0.312500 +v 1.088790 -0.593575 0.312500 +v 0.872283 -0.718575 -0.312500 +v 0.872283 -0.718575 0.312500 +v 0.655777 -0.593575 -0.312500 +v 0.655777 -0.593575 0.312500 +v 0.655777 -0.343575 -0.312500 +v 0.655777 -0.343575 0.312500 +v -0.475030 0.750921 1.869728 +v -0.475030 0.813421 1.869728 +v -0.475030 0.750921 0.369728 +v -0.475030 0.813420 0.369728 +v -0.412530 0.750921 1.869728 +v -0.412530 0.813421 1.869728 +v -0.412530 0.750921 0.369728 +v -0.412530 0.813420 0.369728 +v -0.475030 0.750921 1.932228 +v -0.412530 0.250921 1.869728 +v -0.412530 0.750921 1.932228 +v -0.475030 0.250921 1.869728 +v -0.475030 0.250921 1.932228 +v -0.412530 0.250921 1.932228 +v 0.475030 0.750921 1.869728 +v 0.475030 0.813421 1.869728 +v 0.475030 0.750921 0.369728 +v 0.475030 0.813420 0.369728 +v 0.412530 0.750921 1.869728 +v 0.412530 0.813420 1.869728 +v 0.412530 0.750920 0.369728 +v 0.412530 0.813420 0.369728 +v 0.475030 0.750921 1.932228 +v 0.412530 0.250921 1.869728 +v 0.412530 0.750921 1.932228 +v 0.475030 0.250921 1.869728 +v 0.475030 0.250921 1.932228 +v 0.412530 0.250921 1.932228 +v -0.475030 -0.750921 1.869728 +v -0.475030 -0.813421 1.869728 +v -0.475030 -0.750921 0.369728 +v -0.475030 -0.813421 0.369728 +v -0.412530 -0.750921 1.869728 +v -0.412530 -0.813421 1.869728 +v -0.412530 -0.750921 0.369728 +v -0.412530 -0.813421 0.369728 +v -0.475030 -0.750921 1.932228 +v -0.412530 -0.250921 1.869728 +v -0.412530 -0.750921 1.932228 +v -0.475030 -0.250921 1.869728 +v -0.475030 -0.250921 1.932228 +v -0.412530 -0.250921 1.932228 +v 0.475030 -0.750921 1.869728 +v 0.475030 -0.813421 1.869728 +v 0.475030 -0.750921 0.369728 +v 0.475030 -0.813421 0.369728 +v 0.412530 -0.750921 1.869728 +v 0.412530 -0.813421 1.869728 +v 0.412530 -0.750921 0.369728 +v 0.412530 -0.813421 0.369728 +v 0.475030 -0.750921 1.932228 +v 0.412530 -0.250921 1.869728 +v 0.412530 -0.750921 1.932228 +v 0.475030 -0.250921 1.869728 +v 0.475030 -0.250921 1.932228 +v 0.412530 -0.250921 1.932228 +v 0.536184 0.986795 -0.674615 +v 0.536184 0.611795 -0.674615 +v 0.531041 0.986795 -0.612327 +v 0.531041 0.611795 -0.612327 +v 0.473896 0.986795 -0.679757 +v 0.473896 0.611795 -0.679757 +v 0.468753 0.986795 -0.617469 +v 0.468753 0.611795 -0.617469 +v 0.531041 1.049295 -0.612327 +v 0.468753 1.049295 -0.617469 +v 0.304755 0.986795 2.128347 +v 0.242467 0.986795 2.123204 +v 0.304755 1.049295 2.128347 +v 0.242467 1.049295 2.123204 +v 0.299613 0.986795 2.190635 +v 0.237324 0.986795 2.185492 +v 0.242467 0.611795 2.123204 +v 0.304755 0.611795 2.128347 +v 0.299613 0.611795 2.190635 +v 0.237325 0.611795 2.185492 +v 0.500000 -0.500000 -0.889991 +v 0.500000 0.500000 -0.889991 +v 0.673228 -0.500000 -0.818238 +v 0.673228 0.500000 -0.818238 +v 0.744981 -0.500000 -0.645011 +v 0.744981 0.500000 -0.645011 +v 0.673228 -0.500000 -0.471783 +v 0.673228 0.500000 -0.471783 +v 0.500000 -0.500000 -0.400030 +v 0.500000 0.500000 -0.400030 +v 0.326772 -0.500000 -0.471783 +v 0.326772 0.500000 -0.471783 +v 0.255019 -0.500000 -0.645011 +v 0.255019 0.500000 -0.645011 +v 0.326772 -0.500000 -0.818238 +v 0.326773 0.500000 -0.818238 +v 0.586614 0.625000 -0.731624 +v 0.500000 0.625000 -0.767501 +v 0.622490 0.625000 -0.645011 +v 0.586614 0.625000 -0.558397 +v 0.500000 0.625000 -0.522520 +v 0.413386 0.625000 -0.558397 +v 0.377510 0.625000 -0.645011 +v 0.413386 0.625000 -0.731624 +v -0.250000 -0.750000 -0.375000 +v -0.250000 0.687500 -1.375000 +v -0.250000 -0.750000 -2.375000 +v -0.250000 0.750000 -2.375000 +v 0.250000 -0.750000 -0.375000 +v 0.250000 0.750000 -0.375000 +v 0.250000 -0.750000 -2.125000 +v 0.250000 0.687500 -2.125000 +v -0.250000 0.687500 -2.125000 +v -0.250000 -0.750000 -2.125000 +v 0.250000 -0.750000 -2.375000 +v 0.250000 0.687500 -2.375000 +v -0.250000 -0.750000 -1.375000 +v -0.250000 0.750000 -0.375000 +v 0.250000 0.687500 -1.375000 +v 0.250000 -0.750000 -1.375000 +v -0.250000 0.750000 -1.375000 +v -0.250000 0.750000 -2.125000 +v -0.250000 0.687500 -2.375000 +v 0.250000 0.750000 -2.375000 +v 0.250000 0.750000 -2.125000 +v 0.250000 0.750000 -1.375000 +v 0.250000 0.687500 -0.375000 +v -0.250000 0.687500 -0.375000 +v -0.250000 1.062500 -1.375000 +v -0.250000 1.062500 -1.937500 +v -0.250000 1.062500 -2.125000 +v 0.250000 1.062500 -2.125000 +v 0.250000 1.062500 -1.937499 +v 0.250000 1.062500 -1.375000 +v 0.250000 1.062500 -0.625000 +v -0.250000 1.062500 -0.625000 +v 0.000000 0.724446 2.000000 +v 0.000000 0.599488 3.000000 +v 0.362223 0.627389 2.000000 +v 0.299744 0.519172 3.000000 +v 0.627389 0.362223 2.000000 +v 0.519172 0.299744 3.000000 +v 0.724446 0.000000 2.000000 +v 0.599488 0.000000 3.000000 +v 0.627388 -0.362223 2.000000 +v 0.519172 -0.299744 3.000000 +v 0.362223 -0.627388 2.000000 +v 0.299744 -0.519172 3.000000 +v 0.000000 -0.724446 2.000000 +v 0.000000 -0.599488 3.000000 +v -0.362223 -0.627389 2.000000 +v -0.299744 -0.519172 3.000000 +v -0.627389 -0.362223 2.000000 +v -0.519172 -0.299744 3.000000 +v -0.724446 -0.000000 2.000000 +v -0.599488 -0.000000 3.000000 +v -0.627389 0.362223 2.000000 +v -0.519172 0.299744 3.000000 +v -0.362223 0.627388 2.000000 +v -0.299745 0.519172 3.000000 +v 0.000000 0.650771 1.803562 +v 0.325386 0.563584 1.803562 +v 0.563584 0.325386 1.803562 +v 0.650771 0.000000 1.803562 +v 0.563584 -0.325386 1.803562 +v 0.325386 -0.563584 1.803562 +v 0.000000 -0.650771 1.803562 +v -0.325385 -0.563585 1.803562 +v -0.563584 -0.325386 1.803562 +v -0.650771 -0.000000 1.803562 +v -0.563585 0.325385 1.803562 +v -0.325386 0.563584 1.803562 +v 0.000000 0.484842 1.637495 +v 0.242421 0.419886 1.637495 +v 0.419886 0.242421 1.637495 +v 0.484842 0.000000 1.637495 +v 0.419886 -0.242421 1.637495 +v 0.242421 -0.419886 1.637495 +v 0.000000 -0.484842 1.637495 +v -0.242421 -0.419886 1.637495 +v -0.419886 -0.242421 1.637495 +v -0.484842 -0.000000 1.637495 +v -0.419886 0.242421 1.637495 +v -0.242421 0.419886 1.637495 +v 0.000000 0.089117 1.515425 +v 0.044558 0.077177 1.515425 +v 0.077177 0.044558 1.515425 +v 0.089117 -0.000000 1.515425 +v 0.077177 -0.044558 1.515425 +v 0.044558 -0.077177 1.515425 +v 0.000000 -0.089117 1.515425 +v -0.044558 -0.077177 1.515425 +v -0.077177 -0.044558 1.515425 +v -0.089117 -0.000000 1.515425 +v -0.077177 0.044558 1.515425 +v -0.044558 0.077177 1.515425 +v 0.000000 0.170159 1.515425 +v 0.085079 0.147362 1.515425 +v 0.147362 0.085079 1.515425 +v 0.170159 -0.000000 1.515425 +v 0.147362 -0.085079 1.515425 +v 0.085079 -0.147362 1.515425 +v 0.000000 -0.170159 1.515425 +v -0.085079 -0.147362 1.515425 +v -0.147362 -0.085079 1.515425 +v -0.170159 -0.000000 1.515425 +v -0.147362 0.085079 1.515425 +v -0.085079 0.147362 1.515425 +v 0.000000 0.089118 0.220095 +v 0.044559 0.077178 0.220095 +v 0.077177 0.044559 0.220095 +v 0.089117 0.000001 0.220095 +v 0.077177 -0.044557 0.220095 +v 0.044558 -0.077176 0.220095 +v 0.000000 -0.089116 0.220095 +v -0.044558 -0.077177 0.220095 +v -0.077177 -0.044558 0.220095 +v -0.089117 0.000001 0.220095 +v -0.077177 0.044559 0.220095 +v -0.044559 0.077178 0.220095 +v 0.362223 0.627389 3.000000 +v 0.000000 0.724446 3.000000 +v 0.627388 0.362223 3.000000 +v 0.724446 0.000000 3.000000 +v 0.627389 -0.362223 3.000000 +v 0.362223 -0.627389 3.000000 +v 0.000000 -0.724446 3.000000 +v -0.362223 -0.627389 3.000000 +v -0.627389 -0.362223 3.000000 +v -0.724446 -0.000000 3.000000 +v -0.627389 0.362223 3.000000 +v -0.362223 0.627388 3.000000 +v 0.050433 0.087352 2.000000 +v 0.000000 0.100865 2.000000 +v 0.087351 0.050433 2.000000 +v 0.100865 0.000001 2.000000 +v 0.087351 -0.050432 2.000000 +v 0.050432 -0.087351 2.000000 +v 0.000000 -0.100864 2.000000 +v -0.050432 -0.087351 2.000000 +v -0.087352 -0.050432 2.000000 +v -0.100865 0.000001 2.000000 +v -0.087352 0.050433 2.000000 +v -0.050433 0.087352 2.000000 +v 0.362223 0.627389 4.000000 +v 0.000000 0.724446 4.000000 +v 0.627388 0.362223 4.000000 +v 0.724446 0.000000 4.000000 +v 0.627388 -0.362223 4.000000 +v 0.362223 -0.627389 4.000000 +v 0.000000 -0.724446 4.000000 +v -0.362223 -0.627389 4.000000 +v -0.627389 -0.362223 4.000000 +v -0.724446 -0.000000 4.000000 +v -0.627389 0.362223 4.000000 +v -0.362223 0.627388 4.000000 +v 0.299744 0.519172 4.000000 +v 0.000000 0.599488 4.000000 +v 0.519172 0.299744 4.000000 +v 0.599488 0.000000 4.000000 +v 0.519172 -0.299744 4.000000 +v 0.299744 -0.519172 4.000000 +v 0.000000 -0.599488 4.000000 +v -0.299744 -0.519172 4.000000 +v -0.519172 -0.299744 4.000000 +v -0.599488 -0.000000 4.000000 +v -0.519172 0.299744 4.000000 +v -0.299745 0.519172 4.000000 +v 0.299744 0.519173 2.000000 +v 0.000000 0.599489 2.000000 +v 0.519172 0.299745 2.000000 +v 0.599488 0.000001 2.000000 +v 0.519172 -0.299744 2.000000 +v 0.299744 -0.519171 2.000000 +v 0.000000 -0.599488 2.000000 +v -0.299744 -0.519171 2.000000 +v -0.519172 -0.299744 2.000000 +v -0.599488 0.000000 2.000000 +v -0.519172 0.299744 2.000000 +v -0.299744 0.519172 2.000000 +v 0.050432 0.087353 5.611448 +v 0.000000 0.100866 5.611448 +v 0.087351 0.050434 5.611448 +v 0.100865 0.000002 5.611448 +v 0.087351 -0.050431 5.611448 +v 0.050432 -0.087350 5.611448 +v 0.000000 -0.100863 5.611448 +v -0.050432 -0.087350 5.611448 +v -0.087352 -0.050431 5.611448 +v -0.100865 0.000002 5.611448 +v -0.087352 0.050434 5.611448 +v -0.050433 0.087353 5.611448 +v 0.500000 0.866025 -0.375000 +v 0.500000 0.866025 0.375000 +v 1.000000 -0.000000 -0.375000 +v 1.000000 -0.000000 0.375000 +v 0.500000 -0.866025 -0.375000 +v 0.500000 -0.866025 0.375000 +v -0.500000 -0.866025 -0.375000 +v -0.500000 -0.866025 0.375000 +v -1.000000 0.000000 -0.375000 +v -1.000000 -0.000000 0.375000 +v -0.500000 0.866025 -0.375000 +v -0.500000 0.866025 0.375000 +v 0.500000 0.866025 -3.125000 +v 0.500000 0.866025 -2.375000 +v 1.000000 -0.000000 -3.125000 +v 1.000000 -0.000000 -2.375000 +v 0.500000 -0.866026 -3.125000 +v 0.500000 -0.866025 -2.375000 +v -0.500000 -0.866025 -3.125000 +v -0.500000 -0.866025 -2.375000 +v -1.000000 -0.000000 -3.125000 +v -1.000000 -0.000000 -2.375000 +v -0.500000 0.866025 -3.125000 +v -0.500000 0.866025 -2.375000 +v -0.479958 0.986795 -0.679582 +v -0.479958 0.611795 -0.679582 +v -0.474815 0.986795 -0.617294 +v -0.474815 0.611795 -0.617294 +v -0.542246 0.986795 -0.674439 +v -0.542247 0.611795 -0.674439 +v -0.537103 0.986795 -0.612151 +v -0.537104 0.611795 -0.612151 +v -0.474816 1.049295 -0.617294 +v -0.537104 1.049295 -0.612151 +v -0.248530 0.986795 2.123379 +v -0.310818 0.986795 2.128522 +v -0.248530 1.049295 2.123379 +v -0.310818 1.049295 2.128522 +v -0.243387 0.986795 2.185668 +v -0.305675 0.986795 2.190811 +v -0.310818 0.611795 2.128522 +v -0.248530 0.611795 2.123379 +v -0.243387 0.611795 2.185668 +v -0.305675 0.611795 2.190811 +v -0.500000 -0.500000 -0.400030 +v -0.500000 0.500000 -0.400030 +v -0.673227 -0.500000 -0.471783 +v -0.673227 0.500000 -0.471783 +v -0.744981 -0.500000 -0.645011 +v -0.744981 0.500000 -0.645011 +v -0.673228 -0.500000 -0.818238 +v -0.673227 0.500000 -0.818238 +v -0.500000 -0.500000 -0.889992 +v -0.500000 0.500000 -0.889992 +v -0.326772 -0.500000 -0.818238 +v -0.326772 0.500000 -0.818238 +v -0.255019 -0.500000 -0.645011 +v -0.255019 0.500000 -0.645011 +v -0.326772 -0.500000 -0.471783 +v -0.326772 0.500000 -0.471783 +v -0.586614 0.625000 -0.558397 +v -0.500000 0.625000 -0.522520 +v -0.622490 0.625000 -0.645011 +v -0.586614 0.625000 -0.731624 +v -0.500000 0.625000 -0.767501 +v -0.413386 0.625000 -0.731625 +v -0.377510 0.625000 -0.645011 +v -0.413386 0.625000 -0.558397 +v -0.207317 0.989930 -0.750546 +v -0.269079 0.989930 -0.750546 +v -0.207317 0.966012 -0.808289 +v -0.269079 0.966012 -0.808289 +v -0.207317 0.908269 -0.832207 +v -0.269079 0.908269 -0.832207 +v -0.207317 0.850527 -0.808289 +v -0.269079 0.850527 -0.808289 +v -0.207317 0.826609 -0.750546 +v -0.269079 0.826609 -0.750546 +v -0.207317 0.850527 -0.692804 +v -0.269079 0.850527 -0.692804 +v -0.207317 0.908269 -0.668886 +v -0.269079 0.908269 -0.668886 +v -0.207317 0.966012 -0.692804 +v -0.269079 0.966012 -0.692804 +v -0.295772 0.955105 -0.797381 +v -0.295772 0.974504 -0.750546 +v -0.295772 0.908269 -0.816781 +v -0.295772 0.861434 -0.797381 +v -0.295772 0.842034 -0.750546 +v -0.295772 0.861434 -0.703711 +v -0.295772 0.908269 -0.684311 +v -0.295772 0.955105 -0.703711 +v -0.207317 0.989929 -1.158848 +v -0.269079 0.989929 -1.158848 +v -0.207317 0.966012 -1.216590 +v -0.269079 0.966012 -1.216590 +v -0.207317 0.908269 -1.240508 +v -0.269079 0.908269 -1.240508 +v -0.207317 0.850527 -1.216591 +v -0.269079 0.850527 -1.216591 +v -0.207317 0.826609 -1.158848 +v -0.269079 0.826609 -1.158848 +v -0.207317 0.850527 -1.101105 +v -0.269079 0.850527 -1.101106 +v -0.207317 0.908269 -1.077188 +v -0.269079 0.908269 -1.077188 +v -0.207317 0.966012 -1.101105 +v -0.269079 0.966012 -1.101105 +v -0.295772 0.955104 -1.205683 +v -0.295772 0.974504 -1.158848 +v -0.295772 0.908269 -1.225083 +v -0.295772 0.861434 -1.205683 +v -0.295772 0.842034 -1.158848 +v -0.295772 0.861434 -1.112013 +v -0.295772 0.908269 -1.092613 +v -0.295772 0.955104 -1.112013 +v -0.207317 0.989929 -1.567149 +v -0.269079 0.989929 -1.567149 +v -0.207317 0.966012 -1.624892 +v -0.269079 0.966012 -1.624892 +v -0.207317 0.908269 -1.648810 +v -0.269079 0.908269 -1.648810 +v -0.207317 0.850527 -1.624892 +v -0.269079 0.850527 -1.624892 +v -0.207317 0.826609 -1.567150 +v -0.269079 0.826609 -1.567150 +v -0.207317 0.850527 -1.509407 +v -0.269079 0.850527 -1.509407 +v -0.207317 0.908269 -1.485489 +v -0.269079 0.908269 -1.485489 +v -0.207317 0.966012 -1.509407 +v -0.269079 0.966012 -1.509407 +v -0.295772 0.955104 -1.613984 +v -0.295772 0.974504 -1.567149 +v -0.295772 0.908269 -1.633385 +v -0.295772 0.861434 -1.613985 +v -0.295772 0.842034 -1.567150 +v -0.295772 0.861434 -1.520314 +v -0.295772 0.908269 -1.500914 +v -0.295772 0.955104 -1.520314 +v -0.207317 0.989930 -1.975451 +v -0.269079 0.989930 -1.975451 +v -0.207317 0.966012 -2.033194 +v -0.269079 0.966012 -2.033194 +v -0.207317 0.908269 -2.057111 +v -0.269079 0.908269 -2.057111 +v -0.207317 0.850527 -2.033194 +v -0.269079 0.850527 -2.033194 +v -0.207317 0.826609 -1.975451 +v -0.269079 0.826609 -1.975451 +v -0.207317 0.850527 -1.917709 +v -0.269079 0.850527 -1.917709 +v -0.207317 0.908269 -1.893791 +v -0.269079 0.908269 -1.893791 +v -0.207317 0.966012 -1.917708 +v -0.269079 0.966012 -1.917708 +v -0.295772 0.955105 -2.022286 +v -0.295772 0.974504 -1.975451 +v -0.295772 0.908269 -2.041686 +v -0.295772 0.861434 -2.022286 +v -0.295772 0.842034 -1.975451 +v -0.295772 0.861434 -1.928616 +v -0.295772 0.908269 -1.909216 +v -0.295772 0.955105 -1.928616 +v 0.825075 0.000002 -2.749997 +v 0.722677 0.000002 -2.502787 +v 0.475467 0.000002 -2.400389 +v 0.228257 0.000002 -2.502787 +v 0.125859 0.000002 -2.749997 +v 0.228257 0.000002 -2.997207 +v 0.475467 0.000002 -3.099605 +v 0.722678 0.000002 -2.997207 +v 0.714536 0.412540 -2.749997 +v 0.625857 0.361341 -2.502787 +v 0.411767 0.237735 -2.400389 +v 0.197676 0.114130 -2.502787 +v 0.108997 0.062932 -2.749997 +v 0.197676 0.114130 -2.997207 +v 0.411767 0.237735 -3.099605 +v 0.625857 0.361341 -2.997207 +v 0.412538 0.714538 -2.749997 +v 0.361339 0.625859 -2.502787 +v 0.237734 0.411769 -2.400389 +v 0.114128 0.197678 -2.502787 +v 0.062930 0.108999 -2.749997 +v 0.114128 0.197678 -2.997207 +v 0.237734 0.411769 -3.099605 +v 0.361339 0.625859 -2.997207 +v 0.000000 0.825077 -2.749997 +v 0.000000 0.722679 -2.502787 +v 0.000000 0.475469 -2.400389 +v 0.000000 0.228259 -2.502787 +v 0.000000 0.125861 -2.749997 +v 0.000000 0.228259 -2.997207 +v 0.000000 0.475469 -3.099605 +v 0.000000 0.722679 -2.997207 +v -0.412537 0.714538 -2.749997 +v -0.361338 0.625859 -2.502788 +v -0.237733 0.411769 -2.400390 +v -0.114128 0.197678 -2.502787 +v -0.062929 0.108999 -2.749997 +v -0.114128 0.197678 -2.997207 +v -0.237733 0.411769 -3.099605 +v -0.361338 0.625859 -2.997207 +v -0.714536 0.412540 -2.749997 +v -0.625857 0.361341 -2.502788 +v -0.411767 0.237735 -2.400390 +v -0.197676 0.114130 -2.502787 +v -0.108997 0.062932 -2.749997 +v -0.197676 0.114130 -2.997207 +v -0.411766 0.237735 -3.099605 +v -0.625857 0.361341 -2.997207 +v -0.825075 0.000002 -2.749997 +v -0.722677 0.000002 -2.502788 +v -0.475467 0.000002 -2.400390 +v -0.228257 0.000002 -2.502787 +v -0.125859 0.000002 -2.749997 +v -0.228257 0.000002 -2.997207 +v -0.475467 0.000002 -3.099605 +v -0.722677 0.000002 -2.997207 +v -0.714536 -0.412536 -2.749997 +v -0.625857 -0.361336 -2.502787 +v -0.411767 -0.237732 -2.400389 +v -0.197676 -0.114126 -2.502787 +v -0.108997 -0.062928 -2.749997 +v -0.197676 -0.114127 -2.997207 +v -0.411767 -0.237732 -3.099605 +v -0.625857 -0.361336 -2.997207 +v -0.412537 -0.714534 -2.749997 +v -0.361338 -0.625855 -2.502787 +v -0.237733 -0.411765 -2.400389 +v -0.114128 -0.197674 -2.502787 +v -0.062929 -0.108995 -2.749997 +v -0.114128 -0.197675 -2.997207 +v -0.237733 -0.411765 -3.099605 +v -0.361338 -0.625855 -2.997207 +v 0.000000 -0.825073 -2.749997 +v 0.000000 -0.722675 -2.502787 +v 0.000000 -0.475466 -2.400389 +v 0.000000 -0.228255 -2.502787 +v 0.000000 -0.125858 -2.749997 +v 0.000000 -0.228255 -2.997207 +v 0.000000 -0.475465 -3.099605 +v 0.000000 -0.722675 -2.997207 +v 0.412538 -0.714534 -2.749997 +v 0.361339 -0.625855 -2.502787 +v 0.237734 -0.411765 -2.400389 +v 0.114129 -0.197675 -2.502787 +v 0.062930 -0.108995 -2.749997 +v 0.114128 -0.197674 -2.997207 +v 0.237734 -0.411765 -3.099605 +v 0.361339 -0.625855 -2.997207 +v 0.714536 -0.412536 -2.749997 +v 0.625857 -0.361337 -2.502787 +v 0.411767 -0.237732 -2.400389 +v 0.197676 -0.114126 -2.502787 +v 0.108997 -0.062928 -2.749997 +v 0.197676 -0.114126 -2.997207 +v 0.411767 -0.237732 -3.099605 +v 0.625857 -0.361337 -2.997207 +v 0.000000 0.244981 -2.381067 +v 0.000000 0.244981 -3.118932 +v -0.173227 0.173227 -2.381067 +v -0.173227 0.173227 -3.118932 +v -0.244980 -0.000000 -2.381067 +v -0.244981 -0.000000 -3.118932 +v -0.173227 -0.173228 -2.381067 +v -0.173227 -0.173228 -3.118932 +v 0.000000 -0.244981 -2.381067 +v 0.000000 -0.244981 -3.118932 +v 0.173228 -0.173228 -2.381067 +v 0.173228 -0.173228 -3.118932 +v 0.244981 -0.000000 -2.381067 +v 0.244981 -0.000000 -3.118932 +v 0.173228 0.173227 -2.381067 +v 0.173228 0.173227 -3.118932 +vt 0.246892 0.529648 +vt 0.264843 0.500743 +vt 0.282793 0.529648 +vt 0.456621 0.176471 +vt 0.511416 0.235294 +vt 0.456621 0.235294 +vt 0.817352 0.000000 +vt 1.000000 0.088235 +vt 0.817352 0.088235 +vt 0.511416 0.235294 +vt 0.456621 0.176471 +vt 0.511416 0.176471 +vt 0.762557 0.000000 +vt 0.726027 0.088235 +vt 0.726027 0.000000 +vt 0.452055 0.088235 +vt 0.397260 0.000000 +vt 0.452055 0.000000 +vt 0.726027 0.000000 +vt 0.634703 0.088235 +vt 0.634703 0.000000 +vt 0.694064 0.132353 +vt 0.694064 0.279412 +vt 0.694064 0.279412 +vt 0.118683 0.139406 +vt 0.109709 0.124955 +vt 0.118683 0.110505 +vt 0.125030 0.144208 +vt 0.118661 0.168966 +vt 0.112292 0.164718 +vt 0.118683 0.139406 +vt 0.109709 0.124955 +vt 0.118683 0.110505 +vt 0.125030 0.144208 +vt 0.118661 0.168966 +vt 0.112292 0.164718 +vt 0.063927 0.110294 +vt 0.059361 0.169118 +vt 0.059361 0.110294 +vt 0.004566 0.022059 +vt 0.041096 0.029412 +vt 0.004566 0.029412 +vt 0.009132 0.169118 +vt 0.013699 0.110294 +vt 0.013699 0.169118 +vt 0.041096 0.036765 +vt 0.004566 0.029412 +vt 0.041096 0.029412 +vt 0.018265 0.169118 +vt 0.054795 0.110294 +vt 0.054795 0.169118 +vt 0.013699 0.110294 +vt 0.050228 0.051471 +vt 0.050228 0.110294 +vt 0.000000 0.036765 +vt 0.000000 0.029412 +vt 0.041096 0.022059 +vt 0.045662 0.007353 +vt 0.045662 0.022059 +vt -0.000000 0.022059 +vt 0.045662 0.029412 +vt 0.018265 0.110294 +vt 0.045662 0.051471 +vt 0.041096 0.051471 +vt 0.045662 0.036765 +vt 0.004566 0.110294 +vt -0.000000 0.051471 +vt 0.004566 0.051471 +vt 0.059361 0.051471 +vt 0.063927 0.110294 +vt 0.059361 0.110294 +vt 0.013699 0.051471 +vt 0.004566 0.007353 +vt 0.000000 0.110294 +vt 0.009132 0.110294 +vt 0.073059 0.169118 +vt 0.063927 0.169118 +vt 0.004566 0.036765 +vt 0.223744 0.441176 +vt 0.219178 0.448529 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.455882 +vt 0.223744 0.463235 +vt 0.219178 0.463235 +vt 0.219178 0.470588 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.419118 +vt 0.223744 0.426471 +vt 0.219178 0.426471 +vt 0.219178 0.433824 +vt 0.223744 0.433824 +vt 0.228371 0.463247 +vt 0.232881 0.455984 +vt 0.237391 0.463247 +vt 0.223744 0.441176 +vt 0.219178 0.448529 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.455882 +vt 0.223744 0.455882 +vt 0.219178 0.463235 +vt 0.223744 0.463235 +vt 0.219178 0.470588 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.419118 +vt 0.223744 0.426471 +vt 0.219178 0.426471 +vt 0.223744 0.433824 +vt 0.219178 0.433824 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.223744 0.441176 +vt 0.219178 0.448529 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.455882 +vt 0.223744 0.455882 +vt 0.219178 0.463235 +vt 0.223744 0.463235 +vt 0.219178 0.470588 +vt 0.223744 0.411765 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.426471 +vt 0.223744 0.433824 +vt 0.219178 0.433824 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.219178 0.463235 +vt 0.223744 0.463235 +vt 0.219178 0.470588 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.419118 +vt 0.219178 0.426471 +vt 0.223744 0.426471 +vt 0.219178 0.433824 +vt 0.223744 0.433824 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.365020 0.831345 +vt 0.346991 0.860377 +vt 0.346991 0.802313 +vt 0.347070 0.860426 +vt 0.328954 0.831254 +vt 0.365186 0.831254 +vt 0.397260 0.573529 +vt 0.415525 0.500000 +vt 0.415525 0.573529 +vt 0.433790 0.573529 +vt 0.452055 0.500000 +vt 0.452055 0.573529 +vt 0.342466 0.500000 +vt 0.360731 0.573529 +vt 0.342466 0.573529 +vt 0.360782 0.632318 +vt 0.360782 0.573830 +vt 0.376509 0.588452 +vt 0.360731 0.500000 +vt 0.378995 0.573529 +vt 0.378995 0.500000 +vt 0.345129 0.617702 +vt 0.360810 0.573965 +vt 0.360810 0.632280 +vt 0.301370 0.617647 +vt 0.296804 0.794118 +vt 0.296804 0.617647 +vt 0.305936 0.794118 +vt 0.310502 0.617647 +vt 0.310502 0.794118 +vt 0.296804 0.801471 +vt 0.293547 0.797798 +vt 0.296804 0.794118 +vt 0.292237 0.794118 +vt 0.301370 0.794118 +vt 0.305936 0.617647 +vt 0.296804 0.860294 +vt 0.301370 0.801471 +vt 0.301370 0.860294 +vt 0.301370 0.794118 +vt 0.301370 0.801471 +vt 0.304551 0.797798 +vt 0.292237 0.801471 +vt 0.296804 0.801471 +vt 0.305936 0.860294 +vt 0.310502 0.801471 +vt 0.310502 0.860294 +vt 0.305936 0.801471 +vt 0.296804 0.617647 +vt 0.301370 0.794118 +vt 0.296804 0.794118 +vt 0.310502 0.794118 +vt 0.305936 0.617647 +vt 0.310502 0.617647 +vt 0.301370 0.801471 +vt 0.301370 0.794118 +vt 0.304551 0.797798 +vt 0.292237 0.617647 +vt 0.305936 0.794118 +vt 0.301370 0.617647 +vt 0.301370 0.860294 +vt 0.296804 0.801471 +vt 0.301370 0.801471 +vt 0.296804 0.794118 +vt 0.296804 0.801471 +vt 0.293547 0.797798 +vt 0.296804 0.860294 +vt 0.292237 0.801471 +vt 0.310502 0.860294 +vt 0.305936 0.801471 +vt 0.310502 0.801471 +vt 0.305936 0.860294 +vt 0.296804 0.617647 +vt 0.301370 0.794118 +vt 0.296804 0.794118 +vt 0.310502 0.794118 +vt 0.305936 0.617647 +vt 0.310502 0.617647 +vt 0.296804 0.794118 +vt 0.296804 0.801471 +vt 0.296804 0.801471 +vt 0.292237 0.617647 +vt 0.305936 0.794118 +vt 0.301370 0.617647 +vt 0.301370 0.860294 +vt 0.301370 0.801471 +vt 0.301370 0.794118 +vt 0.304566 0.797886 +vt 0.301370 0.801471 +vt 0.296804 0.860294 +vt 0.292237 0.801471 +vt 0.310502 0.860294 +vt 0.305936 0.801471 +vt 0.310502 0.801471 +vt 0.305936 0.860294 +vt 0.301370 0.617647 +vt 0.296804 0.794118 +vt 0.296804 0.617647 +vt 0.305936 0.794118 +vt 0.310502 0.617647 +vt 0.310502 0.794118 +vt 0.296804 0.801471 +vt 0.293547 0.797798 +vt 0.296804 0.794118 +vt 0.292237 0.794118 +vt 0.301370 0.794118 +vt 0.305936 0.617647 +vt 0.296804 0.860294 +vt 0.301370 0.801471 +vt 0.301370 0.860294 +vt 0.301370 0.794118 +vt 0.301370 0.801471 +vt 0.304551 0.797798 +vt 0.292237 0.860294 +vt 0.296804 0.801471 +vt 0.305936 0.860294 +vt 0.310502 0.801471 +vt 0.310502 0.860294 +vt 0.305936 0.801471 +vt 0.438356 0.617647 +vt 0.442922 0.573529 +vt 0.442922 0.617647 +vt 0.433790 0.573529 +vt 0.433790 0.617647 +vt 0.447489 0.573529 +vt 0.452055 0.617647 +vt 0.447489 0.617647 +vt 0.442922 0.955882 +vt 0.447489 0.948529 +vt 0.447489 0.955882 +vt 0.449793 0.952194 +vt 0.447489 0.948529 +vt 0.442922 0.625000 +vt 0.447489 0.625000 +vt 0.440661 0.952194 +vt 0.442922 0.948529 +vt 0.449728 0.621287 +vt 0.447489 0.625000 +vt 0.447489 0.617647 +vt 0.452055 0.948529 +vt 0.452055 0.625000 +vt 0.438356 0.948529 +vt 0.433790 0.625000 +vt 0.438356 0.625000 +vt 0.442922 0.948529 +vt 0.447489 1.000000 +vt 0.442922 0.955882 +vt 0.447489 0.955882 +vt 0.442922 0.625000 +vt 0.440640 0.621287 +vt 0.442922 0.617647 +vt 0.452055 0.955882 +vt 0.452055 1.000000 +vt 0.438356 1.000000 +vt 0.433790 0.955882 +vt 0.438356 0.955882 +vt 0.442922 1.000000 +vt 0.311363 0.491158 +vt 0.311363 0.449920 +vt 0.336973 0.449920 +vt 0.461174 0.389597 +vt 0.454794 0.364793 +vt 0.461174 0.360537 +vt 0.397260 0.183824 +vt 0.292237 0.242647 +vt 0.292237 0.183824 +vt 0.397260 0.301471 +vt 0.452055 0.242647 +vt 0.452055 0.301471 +vt 0.292237 0.301471 +vt 0.397260 0.242647 +vt 0.164384 0.345588 +vt 0.164384 0.382353 +vt 0.146119 0.345588 +vt 0.164384 0.338235 +vt 0.146119 0.169118 +vt 0.164384 0.169118 +vt 0.456621 0.183824 +vt 0.438356 0.125000 +vt 0.456621 0.125000 +vt 0.073059 0.345588 +vt 0.114155 0.382353 +vt 0.073059 0.382353 +vt 0.127854 0.169118 +vt 0.146119 0.338235 +vt 0.127854 0.338235 +vt 0.219178 0.169118 +vt 0.292237 0.338235 +vt 0.219178 0.338235 +vt 0.073059 0.338235 +vt 0.000000 0.169118 +vt 0.073059 0.169118 +vt 0.365297 0.183824 +vt 0.292237 0.125000 +vt 0.365297 0.125000 +vt 0.127854 0.345588 +vt 0.127854 0.382353 +vt 0.146119 0.338235 +vt 0.219178 0.345588 +vt 0.000000 0.345588 +vt 0.000000 0.338235 +vt 0.415525 0.360294 +vt 0.374429 0.301471 +vt 0.415525 0.301471 +vt 0.429224 0.360294 +vt 0.374429 0.360294 +vt 0.319635 0.301471 +vt 0.273973 0.382353 +vt 0.219178 0.382353 +vt 0.178082 0.382353 +vt 0.292237 0.301471 +vt 0.319635 0.360294 +vt 0.292237 0.360294 +vt 0.018265 0.382353 +vt 0.456621 0.360294 +vt 0.429224 0.301471 +vt 0.456621 0.301471 +vt 0.136986 0.709860 +vt 0.132428 0.718583 +vt 0.132428 0.708120 +vt 0.136986 0.671709 +vt 0.132428 0.663573 +vt 0.136986 0.665350 +vt 0.136986 0.620841 +vt 0.132428 0.629490 +vt 0.132428 0.619027 +vt 0.136986 0.576331 +vt 0.132428 0.584943 +vt 0.132428 0.574480 +vt 0.136986 0.538180 +vt 0.132428 0.529933 +vt 0.136986 0.531821 +vt 0.136986 0.493670 +vt 0.132428 0.485387 +vt 0.136986 0.487312 +vt 0.136986 0.983277 +vt 0.132428 0.975400 +vt 0.136986 0.976918 +vt 0.136986 0.938767 +vt 0.132428 0.930853 +vt 0.136986 0.932409 +vt 0.136986 0.894257 +vt 0.132428 0.886307 +vt 0.136986 0.887899 +vt 0.136986 0.843389 +vt 0.132428 0.852223 +vt 0.132428 0.841760 +vt 0.136986 0.798879 +vt 0.132428 0.807676 +vt 0.132428 0.797213 +vt 0.136986 0.760728 +vt 0.132428 0.752667 +vt 0.136986 0.754370 +vt 0.283105 1.000000 +vt 0.292237 0.963235 +vt 0.292237 1.000000 +vt 0.283105 0.889706 +vt 0.292237 0.926471 +vt 0.283105 0.926471 +vt 0.292237 0.852941 +vt 0.292237 0.889706 +vt 0.283105 0.816176 +vt 0.292237 0.779412 +vt 0.292237 0.816176 +vt 0.283105 0.742647 +vt 0.283105 0.779412 +vt 0.283105 0.705882 +vt 0.292237 0.669118 +vt 0.292237 0.705882 +vt 0.283105 0.669118 +vt 0.292237 0.632353 +vt 0.283105 0.558824 +vt 0.292237 0.595588 +vt 0.283105 0.595588 +vt 0.333333 0.750000 +vt 0.356164 0.764706 +vt 0.333333 0.764706 +vt 0.333333 0.764706 +vt 0.356164 0.779412 +vt 0.333333 0.779412 +vt 0.333333 0.779412 +vt 0.356164 0.794118 +vt 0.333333 0.794118 +vt 0.333333 0.735294 +vt 0.356164 0.750000 +vt 0.333333 0.750000 +vt 0.339272 0.940257 +vt 0.335669 0.999174 +vt 0.335669 0.941811 +vt 0.341909 0.936009 +vt 0.357083 0.989934 +vt 0.342874 0.930207 +vt 0.372759 0.964691 +vt 0.372759 0.895724 +vt 0.378497 0.930207 +vt 0.339272 0.920158 +vt 0.341909 0.924405 +vt 0.335669 0.861240 +vt 0.357083 0.870480 +vt 0.332065 0.920158 +vt 0.335669 0.918603 +vt 0.329428 0.924405 +vt 0.314254 0.870480 +vt 0.292840 0.930207 +vt 0.298578 0.895724 +vt 0.329428 0.936009 +vt 0.328463 0.930207 +vt 0.314254 0.989934 +vt 0.298578 0.964691 +vt 0.332065 0.940257 +vt 0.366313 0.854637 +vt 0.377921 0.843846 +vt 0.377921 0.854637 +vt 0.598173 0.647059 +vt 0.652968 0.529412 +vt 0.652968 0.647059 +vt 0.598173 0.411765 +vt 0.652968 0.411765 +vt 0.652968 0.294118 +vt 0.652968 1.000000 +vt 0.598173 0.882353 +vt 0.652968 0.882353 +vt 0.689694 0.984059 +vt 0.653239 0.882380 +vt 0.762606 0.780702 +vt 0.598173 0.764706 +vt 0.652968 0.764706 +vt 0.653606 0.647052 +vt 0.799654 0.647052 +vt 0.763142 0.748889 +vt 0.799087 0.647059 +vt 0.853881 0.529412 +vt 0.853881 0.647059 +vt 0.799087 0.529412 +vt 0.853881 0.411765 +vt 0.799087 0.411765 +vt 0.853881 0.294118 +vt 0.799087 1.000000 +vt 0.853881 0.882353 +vt 0.853881 1.000000 +vt 0.890927 0.983706 +vt 0.854535 0.882203 +vt 0.963713 0.780700 +vt 0.799087 0.764706 +vt 0.853881 0.764706 +vt 0.999895 0.647212 +vt 0.853771 0.647212 +vt 0.890302 0.545323 +vt 0.447489 0.955882 +vt 0.442922 1.000000 +vt 0.442922 0.955882 +vt 0.438356 1.000000 +vt 0.438356 0.955882 +vt 0.433790 1.000000 +vt 0.433790 0.955882 +vt 0.447489 0.948529 +vt 0.442922 0.955882 +vt 0.442922 0.948529 +vt 0.452055 1.000000 +vt 0.447489 1.000000 +vt 0.449775 0.952245 +vt 0.447489 0.955882 +vt 0.433790 0.625000 +vt 0.438356 0.948529 +vt 0.433790 0.948529 +vt 0.440634 0.952245 +vt 0.449814 0.621500 +vt 0.447489 0.625000 +vt 0.447489 0.617647 +vt 0.447489 0.625000 +vt 0.452055 0.948529 +vt 0.447489 0.948529 +vt 0.442922 0.625000 +vt 0.442922 0.948529 +vt 0.438356 0.625000 +vt 0.433790 0.573529 +vt 0.438356 0.617647 +vt 0.433790 0.617647 +vt 0.442922 0.617647 +vt 0.442922 0.625000 +vt 0.440812 0.621442 +vt 0.447489 0.617647 +vt 0.452055 0.573529 +vt 0.452055 0.617647 +vt 0.442922 0.573529 +vt 0.442922 0.617647 +vt 0.311363 0.491158 +vt 0.324168 0.441379 +vt 0.336973 0.449920 +vt 0.461174 0.389597 +vt 0.454794 0.364793 +vt 0.461174 0.360537 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.223744 0.463235 +vt 0.219178 0.463235 +vt 0.219178 0.470588 +vt 0.223744 0.411765 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.426471 +vt 0.223744 0.433824 +vt 0.219178 0.433824 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.223744 0.441176 +vt 0.219178 0.448529 +vt 0.219178 0.441176 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.223744 0.463235 +vt 0.219178 0.463235 +vt 0.223744 0.470588 +vt 0.219178 0.470588 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.419118 +vt 0.223744 0.426471 +vt 0.219178 0.426471 +vt 0.219178 0.433824 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.223744 0.455882 +vt 0.219178 0.455882 +vt 0.219178 0.463235 +vt 0.223744 0.470588 +vt 0.219178 0.470588 +vt 0.223744 0.411765 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.223744 0.426471 +vt 0.219178 0.426471 +vt 0.219178 0.433824 +vt 0.223744 0.433824 +vt 0.228371 0.463247 +vt 0.236070 0.458111 +vt 0.237391 0.463247 +vt 0.219178 0.441176 +vt 0.223744 0.448529 +vt 0.219178 0.448529 +vt 0.219178 0.455882 +vt 0.223744 0.455882 +vt 0.219178 0.463235 +vt 0.223744 0.470588 +vt 0.219178 0.470588 +vt 0.223744 0.411765 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.223744 0.419118 +vt 0.219178 0.426471 +vt 0.223744 0.426471 +vt 0.219178 0.433824 +vt 0.223744 0.433824 +vt 0.228371 0.463247 +vt 0.232881 0.455984 +vt 0.232881 0.470509 +vt 0.252150 0.509209 +vt 0.264843 0.500743 +vt 0.282793 0.529648 +vt 0.277535 0.550087 +vt 0.264843 0.558553 +vt 0.252150 0.550087 +vt 0.252150 0.509209 +vt 0.277535 0.509209 +vt 0.511416 0.176471 +vt 1.000000 0.000000 +vt 0.456621 0.235294 +vt 0.762557 0.088235 +vt 0.397260 0.088235 +vt 0.726027 0.088235 +vt 0.694064 0.132353 +vt 0.125028 0.114737 +vt 0.127657 0.124955 +vt 0.125028 0.135173 +vt 0.112337 0.135173 +vt 0.112337 0.114737 +vt 0.041096 0.007353 +vt -0.000000 0.029412 +vt 0.045662 0.029412 +vt -0.000000 0.110294 +vt 0.063927 0.051471 +vt 0.000000 0.007353 +vt 0.000000 0.169118 +vt 0.073059 0.110294 +vt 0.223744 0.455882 +vt 0.223744 0.470588 +vt 0.223744 0.411765 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.236070 0.458111 +vt 0.223744 0.470588 +vt 0.223744 0.411765 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.223744 0.470588 +vt 0.223744 0.426471 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.223744 0.441176 +vt 0.223744 0.470588 +vt 0.223744 0.411765 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.328962 0.831345 +vt 0.334242 0.810816 +vt 0.359739 0.810816 +vt 0.359739 0.851874 +vt 0.334242 0.851874 +vt 0.347070 0.802082 +vt 0.359880 0.810626 +vt 0.359880 0.851882 +vt 0.334260 0.851882 +vt 0.334260 0.810626 +vt 0.397260 0.500000 +vt 0.433790 0.500000 +vt 0.376509 0.617696 +vt 0.345054 0.617696 +vt 0.345054 0.588452 +vt 0.376492 0.617702 +vt 0.345129 0.588544 +vt 0.376492 0.588544 +vt 0.438356 0.573529 +vt 0.452055 0.573529 +vt 0.433790 0.948529 +vt 0.433790 1.000000 +vt 0.342277 0.470539 +vt 0.336973 0.491158 +vt 0.324168 0.499699 +vt 0.306060 0.470539 +vt 0.324168 0.441379 +vt 0.467554 0.364793 +vt 0.470197 0.375067 +vt 0.467554 0.385341 +vt 0.454794 0.385341 +vt 0.452151 0.375067 +vt 0.397260 0.242647 +vt 0.292237 0.242647 +vt 0.438356 0.183824 +vt 0.146119 0.169118 +vt 0.292237 0.169118 +vt 0.292237 0.183824 +vt 0.146119 0.345588 +vt 0.292237 0.345588 +vt 0.136986 0.716219 +vt 0.132428 0.674036 +vt 0.136986 0.627199 +vt 0.136986 0.582690 +vt 0.132428 0.540397 +vt 0.132428 0.495850 +vt 0.132428 0.985863 +vt 0.132428 0.941316 +vt 0.132428 0.896770 +vt 0.136986 0.849748 +vt 0.136986 0.805238 +vt 0.132428 0.763130 +vt 0.283105 0.963235 +vt 0.283105 0.852941 +vt 0.292237 0.742647 +vt 0.283105 0.632353 +vt 0.292237 0.558824 +vt 0.356164 0.750000 +vt 0.356164 0.764706 +vt 0.356164 0.779412 +vt 0.356164 0.735294 +vt 0.375468 0.858587 +vt 0.372117 0.860033 +vt 0.368766 0.858587 +vt 0.365415 0.849241 +vt 0.372117 0.838450 +vt 0.366313 0.843846 +vt 0.368766 0.839896 +vt 0.375468 0.839895 +vt 0.378819 0.849241 +vt 0.598173 0.529412 +vt 0.598173 0.294118 +vt 0.598173 1.000000 +vt 0.799061 0.882380 +vt 0.762606 0.984059 +vt 0.689694 0.780702 +vt 0.690118 0.748889 +vt 0.690118 0.545216 +vt 0.763142 0.545216 +vt 0.799087 0.294118 +vt 0.799087 0.882353 +vt 1.000105 0.882203 +vt 0.963713 0.983706 +vt 0.890927 0.780700 +vt 0.963364 0.545323 +vt 0.963364 0.749101 +vt 0.890302 0.749101 +vt 0.452055 0.955882 +vt 0.452055 0.625000 +vt 0.438356 0.573529 +vt 0.447489 0.573529 +vt 0.342277 0.470539 +vt 0.336973 0.491158 +vt 0.324168 0.499699 +vt 0.306060 0.470539 +vt 0.311363 0.449920 +vt 0.467554 0.364793 +vt 0.470197 0.375067 +vt 0.467554 0.385341 +vt 0.454794 0.385341 +vt 0.452151 0.375067 +vt 0.223744 0.441176 +vt 0.223744 0.470588 +vt 0.223744 0.426471 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.223744 0.448529 +vt 0.223744 0.411765 +vt 0.223744 0.433824 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.223744 0.441176 +vt 0.223744 0.463235 +vt 0.223744 0.419118 +vt 0.236070 0.468382 +vt 0.232881 0.470509 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.232881 0.455984 +vt 0.223744 0.441176 +vt 0.223744 0.463235 +vt 0.237391 0.463247 +vt 0.236070 0.468382 +vt 0.229692 0.468382 +vt 0.229692 0.458111 +vt 0.236070 0.458111 +vt 0.277535 0.550087 +vt 0.264843 0.558553 +vt 0.252150 0.550087 +vt 0.246892 0.529648 +vt 0.277535 0.509209 +vt 0.125028 0.114737 +vt 0.127657 0.124955 +vt 0.125028 0.135173 +vt 0.112337 0.135173 +vt 0.112337 0.114737 +vt 0.109654 0.154463 +vt 0.112292 0.144208 +vt 0.118661 0.139960 +vt 0.127667 0.154463 +vt 0.125030 0.164718 +vt 0.109654 0.154463 +vt 0.112292 0.144208 +vt 0.118661 0.139960 +vt 0.127667 0.154463 +vt 0.125030 0.164718 +vt 0.292237 0.617647 +vt 0.292237 0.860294 +vt 0.292237 0.794118 +vt 0.292237 0.860294 +vt 0.292237 0.794118 +vt 0.292237 0.860294 +vt 0.292237 0.617647 +vt 0.292237 0.801471 +vt 0.027397 0.419118 +vt -0.000000 0.426471 +vt -0.000000 0.419118 +vt 0.027397 0.411765 +vt -0.000000 0.411765 +vt 0.027397 0.404412 +vt -0.000000 0.404412 +vt 0.027397 0.397059 +vt -0.000000 0.397059 +vt 0.027397 0.389706 +vt -0.000000 0.389706 +vt 0.027397 0.382353 +vt -0.000000 0.382353 +vt -0.000000 0.463235 +vt 0.027397 0.470588 +vt -0.000000 0.470588 +vt -0.000000 0.455882 +vt 0.027397 0.463235 +vt -0.000000 0.448529 +vt 0.027397 0.455882 +vt -0.000000 0.441176 +vt 0.027397 0.448529 +vt -0.000000 0.433824 +vt 0.027397 0.441176 +vt 0.027397 0.433824 +vt 0.045662 0.419118 +vt 0.027397 0.426471 +vt 0.045662 0.411765 +vt 0.045662 0.404412 +vt 0.045662 0.397059 +vt 0.045662 0.389706 +vt 0.045662 0.382353 +vt 0.045662 0.470588 +vt 0.045662 0.463235 +vt 0.045662 0.455882 +vt 0.045662 0.448529 +vt 0.045662 0.441176 +vt 0.045662 0.433824 +vt 0.059361 0.419118 +vt 0.045662 0.426471 +vt 0.059361 0.411765 +vt 0.059361 0.404412 +vt 0.059361 0.397059 +vt 0.059361 0.389706 +vt 0.059361 0.382353 +vt 0.059361 0.470588 +vt 0.059361 0.463235 +vt 0.059361 0.455882 +vt 0.059361 0.448529 +vt 0.059361 0.441176 +vt 0.059361 0.433824 +vt 0.068493 0.426471 +vt 0.059361 0.426471 +vt 0.068493 0.419118 +vt 0.068493 0.411765 +vt 0.068493 0.404412 +vt 0.068493 0.397059 +vt 0.068493 0.389706 +vt 0.068493 0.463235 +vt 0.068493 0.455882 +vt 0.068493 0.448529 +vt 0.068493 0.441176 +vt 0.068493 0.433824 +vt 0.082192 0.426471 +vt 0.082192 0.419118 +vt 0.082192 0.411765 +vt 0.082192 0.404412 +vt 0.082192 0.397059 +vt 0.068493 0.382353 +vt 0.082192 0.389706 +vt 0.082192 0.463235 +vt 0.068493 0.470588 +vt 0.082192 0.455882 +vt 0.082192 0.448529 +vt 0.082192 0.441176 +vt 0.082192 0.433824 +vt 0.100457 0.426471 +vt 0.100457 0.419118 +vt 0.100457 0.411765 +vt 0.100457 0.404412 +vt 0.100457 0.397059 +vt 0.082192 0.382353 +vt 0.100457 0.389706 +vt 0.100457 0.463235 +vt 0.082192 0.470588 +vt 0.100457 0.455882 +vt 0.100457 0.448529 +vt 0.100457 0.441176 +vt 0.100457 0.433824 +vt 0.118721 0.426471 +vt 0.118721 0.419118 +vt 0.118721 0.411765 +vt 0.118721 0.404412 +vt 0.118721 0.397059 +vt 0.100457 0.382353 +vt 0.118721 0.389706 +vt 0.118721 0.463235 +vt 0.100457 0.470588 +vt 0.118721 0.455882 +vt 0.118721 0.448529 +vt 0.118721 0.441176 +vt 0.118721 0.433824 +vt 0.136986 0.426471 +vt 0.136986 0.419118 +vt 0.136986 0.411765 +vt 0.136986 0.404412 +vt 0.136986 0.397059 +vt 0.118721 0.382353 +vt 0.136986 0.389706 +vt 0.136986 0.463235 +vt 0.118721 0.470588 +vt 0.136986 0.455882 +vt 0.136986 0.448529 +vt 0.136986 0.441176 +vt 0.136986 0.433824 +vt 0.159817 0.426471 +vt 0.159817 0.419118 +vt 0.159817 0.411765 +vt 0.159817 0.404412 +vt 0.159817 0.397059 +vt 0.136986 0.382353 +vt 0.159817 0.389706 +vt 0.159817 0.463235 +vt 0.136986 0.470588 +vt 0.159817 0.455882 +vt 0.159817 0.448529 +vt 0.159817 0.441176 +vt 0.159817 0.433824 +vt 0.178082 0.426471 +vt 0.178082 0.419118 +vt 0.178082 0.411765 +vt 0.178082 0.404412 +vt 0.178082 0.397059 +vt 0.159817 0.382353 +vt 0.178082 0.389706 +vt 0.178082 0.463235 +vt 0.159817 0.470588 +vt 0.178082 0.455882 +vt 0.178082 0.448529 +vt 0.178082 0.441176 +vt 0.178082 0.433824 +vt 0.200913 0.426471 +vt 0.200913 0.419118 +vt 0.200913 0.411765 +vt 0.200913 0.404412 +vt 0.200913 0.397059 +vt 0.178082 0.382353 +vt 0.200913 0.389706 +vt 0.200913 0.463235 +vt 0.178082 0.470588 +vt 0.200913 0.455882 +vt 0.200913 0.448529 +vt 0.200913 0.441176 +vt 0.200913 0.433824 +vt 0.219178 0.426471 +vt 0.219178 0.419118 +vt 0.219178 0.411765 +vt 0.219178 0.404412 +vt 0.219178 0.397059 +vt 0.200913 0.382353 +vt 0.219178 0.389706 +vt 0.219178 0.463235 +vt 0.200913 0.470588 +vt 0.219178 0.455882 +vt 0.219178 0.448529 +vt 0.219178 0.441176 +vt 0.219178 0.433824 +vt 0.191781 0.470588 +vt 0.178082 0.558824 +vt 0.178082 0.470588 +vt 0.164384 0.470588 +vt 0.164384 0.558824 +vt 0.150685 0.470588 +vt 0.150685 0.558824 +vt 0.136986 0.470588 +vt 0.246575 0.558824 +vt 0.232877 0.470588 +vt 0.246575 0.470588 +vt 0.232877 0.558824 +vt 0.219178 0.470588 +vt 0.219178 0.558824 +vt 0.205479 0.470588 +vt 0.205479 0.558824 +vt 0.525114 0.588235 +vt 0.506849 0.536765 +vt 0.525114 0.536765 +vt 0.488584 0.580882 +vt 0.488584 0.544118 +vt 0.470320 0.551471 +vt 0.470320 0.573529 +vt 0.452055 0.558824 +vt 0.598173 0.558824 +vt 0.579909 0.573529 +vt 0.579909 0.551471 +vt 0.561644 0.580882 +vt 0.561644 0.544118 +vt 0.543379 0.536765 +vt 0.525114 0.639706 +vt 0.506849 0.588235 +vt 0.488584 0.632353 +vt 0.488584 0.595588 +vt 0.470320 0.625000 +vt 0.470320 0.602941 +vt 0.452055 0.610294 +vt 0.598173 0.617647 +vt 0.579909 0.602941 +vt 0.598173 0.610294 +vt 0.579909 0.625000 +vt 0.561644 0.595588 +vt 0.561644 0.632353 +vt 0.543379 0.588235 +vt 0.506849 0.691176 +vt 0.506849 0.639706 +vt 0.488584 0.647059 +vt 0.488584 0.683824 +vt 0.470320 0.654412 +vt 0.470320 0.676471 +vt 0.452055 0.661765 +vt 0.598173 0.661765 +vt 0.579909 0.676471 +vt 0.579909 0.654412 +vt 0.561644 0.683824 +vt 0.561644 0.647059 +vt 0.543379 0.691176 +vt 0.543379 0.639706 +vt 0.525114 0.691176 +vt 0.525114 0.742647 +vt 0.488584 0.735294 +vt 0.488584 0.698529 +vt 0.470320 0.727941 +vt 0.470320 0.705882 +vt 0.452055 0.713235 +vt 0.598173 0.713235 +vt 0.579909 0.727941 +vt 0.579909 0.705882 +vt 0.561644 0.698529 +vt 0.561644 0.735294 +vt 0.506849 0.794118 +vt 0.506849 0.742647 +vt 0.488584 0.750000 +vt 0.488584 0.786765 +vt 0.470320 0.757353 +vt 0.452055 0.772059 +vt 0.452055 0.764706 +vt 0.598173 0.772059 +vt 0.579909 0.757353 +vt 0.598173 0.764706 +vt 0.561644 0.786765 +vt 0.561644 0.750000 +vt 0.543379 0.794118 +vt 0.543379 0.742647 +vt 0.525114 0.845588 +vt 0.525114 0.794118 +vt 0.506849 0.845588 +vt 0.488584 0.801471 +vt 0.470320 0.830882 +vt 0.470320 0.808824 +vt 0.452055 0.816176 +vt 0.598173 0.823529 +vt 0.579909 0.808824 +vt 0.598173 0.816176 +vt 0.579909 0.830882 +vt 0.561644 0.801471 +vt 0.543379 0.845588 +vt 0.506849 0.897059 +vt 0.488584 0.852941 +vt 0.470320 0.882353 +vt 0.470320 0.860294 +vt 0.452055 0.867647 +vt 0.598173 0.875000 +vt 0.579909 0.860294 +vt 0.598173 0.867647 +vt 0.579909 0.882353 +vt 0.561644 0.852941 +vt 0.543379 0.897059 +vt 0.525114 0.897059 +vt 0.506849 0.948529 +vt 0.488584 0.904412 +vt 0.470320 0.933824 +vt 0.470320 0.911765 +vt 0.452055 0.919118 +vt 0.598173 0.919118 +vt 0.579909 0.933824 +vt 0.579909 0.911765 +vt 0.561644 0.904412 +vt 0.543379 0.948529 +vt 0.525114 0.948529 +vt 0.506849 1.000000 +vt 0.488584 0.955882 +vt 0.488584 0.992647 +vt 0.470320 0.963235 +vt 0.470320 0.985294 +vt 0.452055 0.970588 +vt 0.598173 0.970588 +vt 0.579909 0.985294 +vt 0.579909 0.963235 +vt 0.561644 0.955882 +vt 0.543379 1.000000 +vt 0.525114 0.433824 +vt 0.506849 0.382353 +vt 0.525114 0.382353 +vt 0.488584 0.426471 +vt 0.488584 0.389706 +vt 0.470320 0.419118 +vt 0.470320 0.397059 +vt 0.452055 0.404412 +vt 0.598173 0.411765 +vt 0.579909 0.397059 +vt 0.598173 0.404412 +vt 0.579909 0.419118 +vt 0.561644 0.389706 +vt 0.561644 0.426471 +vt 0.543379 0.382353 +vt 0.506849 0.485294 +vt 0.506849 0.433824 +vt 0.488584 0.441176 +vt 0.488584 0.477941 +vt 0.470320 0.448529 +vt 0.470320 0.470588 +vt 0.452055 0.455882 +vt 0.598173 0.463235 +vt 0.579909 0.448529 +vt 0.598173 0.455882 +vt 0.561644 0.477941 +vt 0.561644 0.441176 +vt 0.543379 0.485294 +vt 0.543379 0.433824 +vt 0.525114 0.485294 +vt 0.488584 0.492647 +vt 0.470320 0.522059 +vt 0.470320 0.500000 +vt 0.452055 0.507353 +vt 0.598173 0.514706 +vt 0.579909 0.500000 +vt 0.598173 0.507353 +vt 0.579909 0.522059 +vt 0.561644 0.492647 +vt 0.109589 0.154412 +vt 0.073059 0.161765 +vt 0.073059 0.154412 +vt 0.109589 0.161765 +vt 0.073059 0.169118 +vt 0.109589 0.110294 +vt 0.073059 0.117647 +vt 0.073059 0.110294 +vt 0.109589 0.117647 +vt 0.073059 0.125000 +vt 0.109589 0.132353 +vt 0.073059 0.132353 +vt 0.109589 0.139706 +vt 0.073059 0.139706 +vt 0.109589 0.147059 +vt 0.073059 0.147059 +vt 0.073059 0.154412 +vt 0.109589 0.161765 +vt 0.073059 0.161765 +vt 0.073059 0.169118 +vt 0.073059 0.110294 +vt 0.109589 0.117647 +vt 0.073059 0.117647 +vt 0.073059 0.125000 +vt 0.109589 0.125000 +vt 0.073059 0.132353 +vt 0.109589 0.139706 +vt 0.073059 0.139706 +vt 0.109589 0.147059 +vt 0.073059 0.147059 +vt 0.109589 0.154412 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.463235 +vt 0.228310 0.419118 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.433824 +vt 0.228310 0.455882 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.463235 +vt 0.228310 0.419118 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.455882 +vt 0.228310 0.411765 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.463235 +vt 0.228310 0.419118 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.455882 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.463235 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.455882 +vt 0.228310 0.419118 +vt 0.310502 0.816176 +vt 0.328767 0.838235 +vt 0.310502 0.838235 +vt 0.310502 0.860294 +vt 0.328767 0.683824 +vt 0.310502 0.705882 +vt 0.310502 0.683824 +vt 0.328767 0.727941 +vt 0.310502 0.727941 +vt 0.310502 0.750000 +vt 0.328767 0.750000 +vt 0.310502 0.772059 +vt 0.328767 0.772059 +vt 0.310502 0.794118 +vt 0.328767 0.816176 +vt 0.369863 0.382353 +vt 0.383562 0.500000 +vt 0.369863 0.500000 +vt 0.383562 0.382353 +vt 0.397260 0.500000 +vt 0.410959 0.382353 +vt 0.410959 0.500000 +vt 0.424658 0.500000 +vt 0.424658 0.382353 +vt 0.438356 0.500000 +vt 0.438356 0.382353 +vt 0.452055 0.500000 +vt 0.415525 0.360294 +vt 0.420091 0.360294 +vt 0.342466 0.382353 +vt 0.356164 0.500000 +vt 0.342466 0.500000 +vt 0.356164 0.382353 +vt 0.351598 0.360294 +vt 0.397260 0.382353 +vt 0.388128 0.360294 +vt 0.392694 0.360294 +vt 0.433790 0.360294 +vt 0.360731 0.360294 +vt 0.365297 0.360294 +vt 0.378995 0.360294 +vt 0.401826 0.360294 +vt 0.406393 0.360294 +vt 0.447489 0.360294 +vt 0.452055 0.382353 +vt -0.000000 0.735294 +vt 0.073059 0.691176 +vt 0.073059 0.735294 +vt -0.000000 0.691176 +vt 0.073059 0.647059 +vt -0.000000 0.647059 +vt 0.073059 0.602941 +vt -0.000000 0.602941 +vt 0.073059 0.558824 +vt -0.000000 0.558824 +vt 0.073059 0.514706 +vt -0.000000 0.514706 +vt 0.073059 0.470588 +vt -0.000000 1.000000 +vt 0.073059 0.955882 +vt 0.073059 1.000000 +vt -0.000000 0.955882 +vt 0.073059 0.911765 +vt -0.000000 0.911765 +vt 0.073059 0.867647 +vt -0.000000 0.867647 +vt 0.073059 0.823529 +vt 0.210046 0.926471 +vt 0.136986 0.889706 +vt 0.210046 0.889706 +vt -0.000000 0.823529 +vt 0.073059 0.779412 +vt -0.000000 0.779412 +vt 0.091317 0.954077 +vt 0.091317 0.560601 +vt 0.109598 0.595434 +vt 0.091317 0.600323 +vt 0.091317 0.998296 +vt 0.091317 0.511885 +vt 0.091317 0.516382 +vt 0.091317 0.556104 +vt 0.091317 0.777200 +vt 0.091317 0.693259 +vt 0.091317 0.732981 +vt 0.091317 0.644543 +vt 0.091317 0.821420 +vt 0.091317 0.688762 +vt 0.091317 0.825917 +vt 0.091317 0.865639 +vt 0.091317 0.909858 +vt 0.109598 0.991683 +vt 0.109598 0.786106 +vt 0.109599 0.815572 +vt 0.109598 0.698051 +vt 0.109598 0.727517 +vt 0.109598 0.918189 +vt 0.109599 0.947655 +vt 0.109598 0.551406 +vt 0.091317 0.737478 +vt 0.109598 0.771545 +vt 0.091317 0.649040 +vt 0.109598 0.683489 +vt 0.091317 0.870136 +vt 0.109599 0.903628 +vt 0.091317 0.472163 +vt 0.109598 0.507378 +vt 0.091317 0.604820 +vt 0.109598 0.639461 +vt 0.109599 0.859600 +vt 0.109599 0.962217 +vt 0.420091 0.779412 +vt 0.415525 0.573529 +vt 0.420091 0.573529 +vt 0.109598 0.565968 +vt 0.109598 0.521940 +vt 0.109598 0.742078 +vt 0.109598 0.654023 +vt 0.109599 0.874162 +vt 0.109598 0.477913 +vt 0.109598 0.609995 +vt 0.429224 0.779412 +vt 0.433790 0.573529 +vt 0.433790 0.779412 +vt 0.392694 0.779412 +vt 0.388128 0.573529 +vt 0.392694 0.573529 +vt 0.410959 0.779412 +vt 0.415525 0.779412 +vt 0.401826 0.779412 +vt 0.406393 0.573529 +vt 0.406393 0.779412 +vt 0.424658 0.779412 +vt 0.429224 0.573529 +vt 0.388128 0.779412 +vt 0.383562 0.573529 +vt 0.410959 0.573529 +vt 0.397260 0.573529 +vt 0.401826 0.573529 +vt 0.424658 0.573529 +vt 0.383562 0.779412 +vt 0.378995 0.573529 +vt 0.397260 0.779412 +vt 0.392694 0.573529 +vt 0.388128 1.000000 +vt 0.388128 0.573529 +vt 0.210046 0.632353 +vt 0.136986 0.669118 +vt 0.136986 0.632353 +vt 0.210046 0.742647 +vt 0.136986 0.779412 +vt 0.136986 0.742647 +vt 0.136986 0.852941 +vt 0.210046 0.852941 +vt 0.210046 0.595588 +vt 0.136986 0.595588 +vt 0.210046 1.000000 +vt 0.136986 0.963235 +vt 0.210046 0.963235 +vt 0.210046 0.705882 +vt 0.136986 0.705882 +vt 0.136986 0.816176 +vt 0.210046 0.816176 +vt 0.136986 0.558824 +vt 0.210046 0.558824 +vt 0.136986 0.926471 +vt 0.210046 0.669118 +vt 0.210046 0.779412 +vt 0.283105 0.742647 +vt 0.210046 0.779412 +vt 0.210046 0.742647 +vt 0.283105 0.705882 +vt 0.210046 0.669118 +vt 0.283105 0.669118 +vt 0.210046 0.632353 +vt 0.283105 0.632353 +vt 0.210046 0.595588 +vt 0.283105 0.558824 +vt 0.210046 0.558824 +vt 0.210046 1.000000 +vt 0.283105 0.963235 +vt 0.210046 0.963235 +vt 0.283105 0.926471 +vt 0.210046 0.889706 +vt 0.283105 0.889706 +vt 0.210046 0.852941 +vt 0.283105 0.852941 +vt 0.283105 0.816176 +vt 0.283105 0.779412 +vt 0.283105 0.617647 +vt 0.283105 0.610294 +vt 0.283105 0.948529 +vt 0.283105 0.941176 +vt 0.283105 0.838235 +vt 0.283105 0.830882 +vt 0.283105 0.720588 +vt 0.283105 0.727941 +vt 0.415525 0.573529 +vt 0.410959 1.000000 +vt 0.410959 0.573529 +vt 0.406393 0.573529 +vt 0.401826 1.000000 +vt 0.401826 0.573529 +vt 0.429224 0.573529 +vt 0.424658 1.000000 +vt 0.424658 0.573529 +vt 0.383562 1.000000 +vt 0.383562 0.573529 +vt 0.406393 1.000000 +vt 0.397260 0.573529 +vt 0.397260 1.000000 +vt 0.420091 1.000000 +vt 0.420091 0.573529 +vt 0.378995 1.000000 +vt 0.378995 0.573529 +vt 0.392694 1.000000 +vt 0.415525 1.000000 +vt 0.433790 0.573529 +vt 0.429224 1.000000 +vt 0.369863 0.382353 +vt 0.383562 0.500000 +vt 0.369863 0.500000 +vt 0.397260 0.382353 +vt 0.397260 0.500000 +vt 0.410959 0.500000 +vt 0.424658 0.382353 +vt 0.424658 0.500000 +vt 0.438356 0.500000 +vt 0.452055 0.382353 +vt 0.452055 0.500000 +vt 0.410959 0.382353 +vt 0.420091 0.360294 +vt 0.342466 0.382353 +vt 0.356164 0.500000 +vt 0.342466 0.500000 +vt 0.351598 0.360294 +vt 0.356164 0.382353 +vt 0.383562 0.382353 +vt 0.392694 0.360294 +vt 0.433790 0.360294 +vt 0.438356 0.382353 +vt 0.360731 0.360294 +vt 0.365297 0.360294 +vt 0.378995 0.360294 +vt 0.406393 0.360294 +vt 0.442922 0.360294 +vt 0.447489 0.360294 +vt 0.228310 0.433824 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.463235 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.455882 +vt 0.228310 0.411765 +vt 0.228310 0.419118 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.455882 +vt 0.228310 0.463235 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.433824 +vt 0.228310 0.419118 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.455882 +vt 0.228310 0.463235 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.433824 +vt 0.228310 0.419118 +vt 0.228310 0.441176 +vt 0.228310 0.448529 +vt 0.228310 0.455882 +vt 0.228310 0.463235 +vt 0.228310 0.426471 +vt 0.228310 0.470588 +vt 0.228310 0.433824 +vt 0.228310 0.419118 +vt 0.525114 0.588235 +vt 0.506849 0.536765 +vt 0.525114 0.536765 +vt 0.488584 0.580882 +vt 0.488584 0.544118 +vt 0.470320 0.551471 +vt 0.470320 0.573529 +vt 0.452055 0.558824 +vt 0.598173 0.558824 +vt 0.579909 0.573529 +vt 0.579909 0.551471 +vt 0.561644 0.580882 +vt 0.561644 0.544118 +vt 0.543379 0.536765 +vt 0.525114 0.639706 +vt 0.506849 0.588235 +vt 0.488584 0.632353 +vt 0.488584 0.595588 +vt 0.470320 0.625000 +vt 0.470320 0.602941 +vt 0.452055 0.617647 +vt 0.452055 0.610294 +vt 0.598173 0.617647 +vt 0.579909 0.602941 +vt 0.598173 0.610294 +vt 0.579909 0.625000 +vt 0.561644 0.595588 +vt 0.561644 0.632353 +vt 0.543379 0.588235 +vt 0.525114 0.691176 +vt 0.506849 0.639706 +vt 0.506849 0.691176 +vt 0.488584 0.647059 +vt 0.488584 0.683824 +vt 0.470320 0.654412 +vt 0.470320 0.676471 +vt 0.452055 0.661765 +vt 0.598173 0.661765 +vt 0.579909 0.676471 +vt 0.579909 0.654412 +vt 0.561644 0.683824 +vt 0.561644 0.647059 +vt 0.543379 0.691176 +vt 0.543379 0.639706 +vt 0.506849 0.742647 +vt 0.488584 0.735294 +vt 0.488584 0.698529 +vt 0.470320 0.727941 +vt 0.470320 0.705882 +vt 0.452055 0.713235 +vt 0.598173 0.713235 +vt 0.579909 0.727941 +vt 0.579909 0.705882 +vt 0.561644 0.698529 +vt 0.561644 0.735294 +vt 0.543379 0.742647 +vt 0.525114 0.742647 +vt 0.506849 0.794118 +vt 0.488584 0.750000 +vt 0.488584 0.786765 +vt 0.470320 0.757353 +vt 0.470320 0.779412 +vt 0.452055 0.764706 +vt 0.598173 0.772059 +vt 0.579909 0.757353 +vt 0.598173 0.764706 +vt 0.561644 0.786765 +vt 0.561644 0.750000 +vt 0.543379 0.794118 +vt 0.525114 0.845588 +vt 0.525114 0.794118 +vt 0.506849 0.845588 +vt 0.488584 0.801471 +vt 0.470320 0.830882 +vt 0.470320 0.808824 +vt 0.452055 0.823529 +vt 0.452055 0.816176 +vt 0.598173 0.823529 +vt 0.579909 0.808824 +vt 0.598173 0.816176 +vt 0.579909 0.830882 +vt 0.561644 0.801471 +vt 0.543379 0.845588 +vt 0.506849 0.897059 +vt 0.488584 0.852941 +vt 0.470320 0.882353 +vt 0.470320 0.860294 +vt 0.452055 0.867647 +vt 0.598173 0.867647 +vt 0.579909 0.882353 +vt 0.579909 0.860294 +vt 0.561644 0.852941 +vt 0.543379 0.897059 +vt 0.525114 0.897059 +vt 0.506849 0.948529 +vt 0.488584 0.904412 +vt 0.470320 0.933824 +vt 0.470320 0.911765 +vt 0.452055 0.926471 +vt 0.452055 0.919118 +vt 0.598173 0.919118 +vt 0.579909 0.933824 +vt 0.579909 0.911765 +vt 0.561644 0.904412 +vt 0.543379 0.948529 +vt 0.525114 0.948529 +vt 0.506849 1.000000 +vt 0.488584 0.955882 +vt 0.488584 0.992647 +vt 0.470320 0.963235 +vt 0.470320 0.985294 +vt 0.452055 0.970588 +vt 0.598173 0.977941 +vt 0.579909 0.963235 +vt 0.598173 0.970588 +vt 0.561644 0.992647 +vt 0.561644 0.955882 +vt 0.543379 1.000000 +vt 0.525114 0.433824 +vt 0.506849 0.382353 +vt 0.525114 0.382353 +vt 0.488584 0.426471 +vt 0.488584 0.389706 +vt 0.470320 0.419118 +vt 0.470320 0.397059 +vt 0.452055 0.404412 +vt 0.598173 0.404412 +vt 0.579909 0.419118 +vt 0.579909 0.397059 +vt 0.561644 0.389706 +vt 0.561644 0.426471 +vt 0.543379 0.382353 +vt 0.506849 0.485294 +vt 0.506849 0.433824 +vt 0.488584 0.441176 +vt 0.488584 0.477941 +vt 0.470320 0.448529 +vt 0.452055 0.463235 +vt 0.452055 0.455882 +vt 0.598173 0.463235 +vt 0.579909 0.448529 +vt 0.598173 0.455882 +vt 0.561644 0.477941 +vt 0.561644 0.441176 +vt 0.543379 0.485294 +vt 0.543379 0.433824 +vt 0.525114 0.485294 +vt 0.488584 0.492647 +vt 0.470320 0.522059 +vt 0.470320 0.500000 +vt 0.452055 0.507353 +vt 0.598173 0.514706 +vt 0.579909 0.500000 +vt 0.598173 0.507353 +vt 0.579909 0.522059 +vt 0.561644 0.492647 +vt 0.191781 0.470588 +vt 0.178082 0.558824 +vt 0.178082 0.470588 +vt 0.164384 0.470588 +vt 0.150685 0.558824 +vt 0.150685 0.470588 +vt 0.136986 0.470588 +vt 0.246575 0.558824 +vt 0.232877 0.470588 +vt 0.246575 0.470588 +vt 0.232877 0.558824 +vt 0.219178 0.470588 +vt 0.219178 0.558824 +vt 0.205479 0.470588 +vt 0.191781 0.558824 +vt 0.219178 0.382353 +vt 0.219178 0.470588 +vt 0.191781 0.558824 +vt 0.136986 0.558824 +vt 0.452055 0.566176 +vt 0.598173 0.566176 +vt 0.452055 0.617647 +vt 0.452055 0.669118 +vt 0.598173 0.669118 +vt 0.452055 0.720588 +vt 0.598173 0.720588 +vt 0.470320 0.779412 +vt 0.579909 0.779412 +vt 0.488584 0.838235 +vt 0.452055 0.823529 +vt 0.561644 0.838235 +vt 0.488584 0.889706 +vt 0.452055 0.875000 +vt 0.561644 0.889706 +vt 0.488584 0.941176 +vt 0.452055 0.926471 +vt 0.598173 0.926471 +vt 0.561644 0.941176 +vt 0.525114 1.000000 +vt 0.452055 0.977941 +vt 0.598173 0.977941 +vt 0.561644 0.992647 +vt 0.452055 0.411765 +vt 0.452055 0.463235 +vt 0.579909 0.470588 +vt 0.488584 0.529412 +vt 0.452055 0.514706 +vt 0.561644 0.529412 +vt 0.228310 0.411765 +vt 0.228310 0.411765 +vt 0.228310 0.411765 +vt 0.328767 0.860294 +vt 0.328767 0.705882 +vt 0.328767 0.794118 +vt 0.347032 0.360294 +vt 0.429224 0.360294 +vt 0.374429 0.360294 +vt 0.442922 0.360294 +vt -0.000000 0.470588 +vt 0.091317 0.914355 +vt 0.091317 0.958574 +vt 0.091317 0.781697 +vt 0.109599 0.830134 +vt 0.378995 0.779412 +vt 0.136986 1.000000 +vt 0.210046 0.705882 +vt 0.283105 0.595588 +vt 0.283105 1.000000 +vt 0.210046 0.926471 +vt 0.210046 0.816176 +vt 0.210046 0.617647 +vt 0.210046 0.610294 +vt 0.210046 0.948529 +vt 0.210046 0.941176 +vt 0.210046 0.838235 +vt 0.210046 0.830882 +vt 0.210046 0.720588 +vt 0.210046 0.727941 +vt 0.433790 1.000000 +vt 0.415525 0.360294 +vt 0.347032 0.360294 +vt 0.388128 0.360294 +vt 0.429224 0.360294 +vt 0.374429 0.360294 +vt 0.401826 0.360294 +vt 0.228310 0.411765 +vt 0.228310 0.411765 +vt 0.228310 0.411765 +vt 0.452055 0.566176 +vt 0.598173 0.566176 +vt 0.452055 0.669118 +vt 0.598173 0.669118 +vt 0.452055 0.720588 +vt 0.598173 0.720588 +vt 0.452055 0.772059 +vt 0.579909 0.779412 +vt 0.488584 0.838235 +vt 0.561644 0.838235 +vt 0.488584 0.889706 +vt 0.452055 0.875000 +vt 0.598173 0.875000 +vt 0.561644 0.889706 +vt 0.488584 0.941176 +vt 0.598173 0.926471 +vt 0.561644 0.941176 +vt 0.525114 1.000000 +vt 0.452055 0.977941 +vt 0.579909 0.985294 +vt 0.452055 0.411765 +vt 0.598173 0.411765 +vt 0.470320 0.470588 +vt 0.579909 0.470588 +vt 0.488584 0.529412 +vt 0.452055 0.514706 +vt 0.561644 0.529412 +vt 0.164384 0.558824 +vt 0.136986 0.558824 +vt 0.205479 0.558824 +vt 0.109589 0.169118 +vt 0.109589 0.125000 +vt 0.109589 0.169118 +vt 0.109589 0.110294 +vt 0.109589 0.132353 +vn 0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.9894 0.1453 +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.0000 -1.0000 +vn 0.0000 -0.9885 0.1514 +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 0.0000 0.3827 0.9239 +vn 0.0000 0.9239 0.3827 +vn 0.8660 -0.5000 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.5000 -0.8660 0.0000 +vn -0.5000 0.8660 0.0000 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.0823 0.0000 -0.9966 +vn -0.9966 0.0000 -0.0823 +vn -0.0823 0.0000 0.9966 +vn 0.0582 0.7071 -0.7047 +vn 0.9966 0.0000 0.0823 +vn -0.0582 0.7071 0.7047 +vn 0.0000 0.6247 0.7809 +vn 0.0000 0.6247 -0.7809 +vn 0.8660 0.5000 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.0823 -0.0000 0.9966 +vn 0.9966 -0.0000 -0.0823 +vn -0.0823 0.0000 -0.9966 +vn 0.0582 -0.7071 0.7047 +vn -0.9966 0.0000 0.0823 +vn -0.0582 -0.7071 -0.7047 +vn -0.1081 -0.5055 0.8560 +vn 0.0606 -0.0355 0.9975 +vn -0.1935 -0.4594 0.8669 +vn -0.3475 -0.7900 0.5051 +vn -0.3979 -0.7642 0.5076 +vn -0.4958 -0.8682 0.0176 +vn -0.4969 -0.8677 0.0107 +vn -0.5103 -0.7142 -0.4790 +vn -0.4619 -0.7382 -0.4915 +vn -0.3840 -0.3645 -0.8483 +vn -0.3011 -0.4083 -0.8617 +vn -0.1512 0.0876 -0.9846 +vn -0.0582 0.0331 -0.9977 +vn 0.2003 0.4657 -0.8620 +vn 0.4041 0.7712 -0.4918 +vn 0.1226 0.5158 -0.8479 +vn 0.4984 0.8668 0.0108 +vn 0.3615 0.8003 -0.4784 +vn 0.4591 0.7288 0.5080 +vn 0.5018 0.8648 0.0181 +vn 0.2987 0.3980 0.8674 +vn 0.5087 0.6971 0.5053 +vn 0.3828 0.3472 0.8561 +vn 0.1036 -0.6226 0.7756 +vn 0.1581 -0.0910 0.9832 +vn -0.2196 -0.8583 0.4636 +vn -0.4879 -0.8725 0.0259 +vn -0.6254 -0.6534 -0.4265 +vn -0.5886 -0.2525 -0.7679 +vn -0.3856 0.2226 -0.8954 +vn -0.0756 0.6360 -0.7679 +vn 0.2531 0.8683 -0.4265 +vn 0.5116 0.8588 0.0259 +vn 0.6335 0.6194 0.4636 +vn 0.5910 0.2216 0.7756 +vn 0.3463 -0.7594 0.5508 +vn 0.3981 -0.2298 0.8881 +vn -0.0701 -0.9406 0.3320 +vn -0.4736 -0.8804 0.0243 +vn -0.7567 -0.5832 -0.2954 +vn -0.8340 -0.1183 -0.5389 +vn -0.6720 0.3880 -0.6308 +vn -0.3146 0.7814 -0.5389 +vn 0.1267 0.9469 -0.2954 +vn 0.5257 0.8503 0.0243 +vn 0.7796 0.5310 0.3320 +vn 0.8308 0.0797 0.5508 +vn 0.8383 -0.4840 0.2508 +vn 0.6728 -0.3884 0.6296 +vn 0.4892 -0.8442 0.2188 +vn 0.0129 -0.9914 0.1305 +vn -0.4728 -0.8811 0.0083 +vn -0.8393 -0.5316 -0.1137 +vn -0.9791 -0.0293 -0.2012 +vn -0.4642 0.8625 -0.2012 +vn 0.0407 0.9927 -0.1137 +vn 0.5267 0.8500 0.0083 +vn 0.8650 0.4845 0.1305 +vn 0.9757 -0.0016 0.2188 +vn 0.8643 -0.4990 -0.0629 +vn 0.5070 -0.8602 -0.0552 +vn 0.0158 -0.9993 -0.0334 +vn -0.4834 -0.8754 -0.0009 +vn -0.8567 -0.5146 0.0355 +vn -0.8423 0.4863 -0.2324 +vn -0.9978 -0.0106 0.0653 +vn -0.4897 0.8694 0.0653 +vn 0.0173 0.9992 0.0355 +vn 0.5164 0.8563 -0.0009 +vn 0.8733 0.4859 -0.0334 +vn 0.9984 -0.0089 -0.0552 +vn 0.8404 -0.4852 -0.2415 +vn 0.4821 -0.8506 -0.2100 +vn -0.0045 -0.9924 -0.1230 +vn -0.4917 -0.8708 -0.0023 +vn -0.8488 -0.5147 0.1206 +vn -0.8634 0.4985 0.0770 +vn -0.9771 -0.0181 0.2120 +vn -0.4729 0.8552 0.2120 +vn 0.0214 0.9925 0.1206 +vn 0.5082 0.8612 -0.0023 +vn 0.8572 0.5000 -0.1230 +vn 0.9777 0.0078 -0.2100 +vn 0.8192 -0.4729 -0.3244 +vn 0.4612 -0.8415 -0.2813 +vn -0.0200 -0.9864 -0.1633 +vn -0.4966 -0.8679 -0.0013 +vn -0.8409 -0.5165 0.1616 +vn -0.8394 0.4847 0.2457 +vn -0.9592 -0.0255 0.2814 +vn -0.4575 0.8435 0.2814 +vn 0.0269 0.9865 0.1616 +vn 0.5033 0.8641 -0.0013 +vn 0.8442 0.5105 -0.1633 +vn 0.9594 0.0213 -0.2813 +vn 0.8117 -0.4686 -0.3484 +vn 0.4530 -0.8389 -0.3017 +vn -0.0271 -0.9843 -0.1742 +vn -0.8389 -0.5157 0.1742 +vn -0.8189 0.4728 0.3253 +vn -0.9530 -0.0271 0.3018 +vn -0.4530 0.8389 0.3018 +vn 0.0271 0.9843 0.1742 +vn 0.8389 0.5156 -0.1742 +vn 0.9530 0.0271 -0.3017 +vn 0.8177 -0.4721 -0.3293 +vn 0.4567 -0.8427 -0.2848 +vn -0.0269 -0.9861 -0.1637 +vn -0.5028 -0.8644 0.0011 +vn -0.8433 -0.5114 0.1653 +vn -0.8117 0.4686 0.3485 +vn -0.9582 -0.0224 0.2851 +vn -0.4597 0.8410 0.2851 +vn 0.0212 0.9860 0.1653 +vn 0.4972 0.8676 0.0011 +vn 0.8405 0.5164 -0.1637 +vn 0.9582 0.0258 -0.2848 +vn 0.8342 -0.4816 -0.2686 +vn 0.4694 -0.8519 -0.2321 +vn -0.0218 -0.9909 -0.1328 +vn -0.5059 -0.8626 0.0019 +vn -0.8531 -0.5039 0.1353 +vn -0.8179 0.4722 0.3288 +vn -0.9726 -0.0123 0.2322 +vn -0.4756 0.8484 0.2322 +vn 0.0099 0.9908 0.1353 +vn 0.4941 0.8694 0.0019 +vn 0.8472 0.5144 -0.1328 +vn 0.9725 0.0194 -0.2321 +vn 0.8549 -0.4936 -0.1593 +vn 0.4854 -0.8634 -0.1374 +vn -0.0153 -0.9968 -0.0781 +vn -0.5097 -0.8603 0.0017 +vn -0.8653 -0.4947 0.0803 +vn -0.8344 0.4818 0.2676 +vn -0.9905 0.0002 0.1371 +vn -0.4954 0.8577 0.1371 +vn -0.0042 0.9967 0.0803 +vn 0.4902 0.8716 0.0017 +vn 0.8556 0.5117 -0.0781 +vn 0.9904 0.0113 -0.1374 +vn 0.8625 -0.4979 -0.0906 +vn 0.4918 -0.8672 -0.0780 +vn -0.0130 -0.9989 -0.0441 +vn -0.5127 -0.8585 0.0013 +vn -0.8713 -0.4886 0.0457 +vn -0.8552 0.4937 0.1577 +vn -0.9969 0.0071 0.0774 +vn -0.5047 0.8598 0.0774 +vn -0.0125 0.9989 0.0457 +vn 0.4871 0.8733 0.0013 +vn 0.8586 0.5108 -0.0441 +vn 0.9969 0.0077 -0.0780 +vn 0.5490 0.5490 0.6302 +vn 0.7071 0.7071 0.0000 +vn 0.7764 0.0000 0.6302 +vn 0.7071 -0.7071 0.0000 +vn 0.5490 -0.5490 0.6302 +vn 0.0000 -0.7764 0.6302 +vn -0.7071 -0.7071 0.0000 +vn -0.5490 -0.5490 0.6302 +vn -0.7764 0.0000 0.6302 +vn -0.7071 0.7071 0.0000 +vn -0.5490 0.5490 0.6302 +vn 0.7362 0.0000 0.6768 +vn 0.0550 0.0318 0.9980 +vn 0.0635 0.0000 0.9980 +vn -0.6724 0.0000 0.7402 +vn -0.5823 -0.3362 0.7402 +vn -0.5823 -0.3362 -0.7402 +vn -0.6724 0.0000 -0.7402 +vn 0.0550 0.0318 -0.9980 +vn 0.0635 0.0000 -0.9980 +vn 0.7362 0.0000 -0.6768 +vn 0.6375 0.3681 0.6768 +vn 0.0318 0.0550 0.9980 +vn -0.3362 -0.5823 0.7402 +vn -0.3362 -0.5823 -0.7402 +vn 0.0318 0.0550 -0.9980 +vn 0.6375 0.3681 -0.6768 +vn 0.0000 0.7362 0.6768 +vn 0.3681 0.6375 0.6768 +vn 0.0000 0.0635 0.9980 +vn 0.0000 -0.6724 0.7402 +vn 0.0000 -0.6724 -0.7402 +vn 0.0000 0.0635 -0.9980 +vn 0.0000 0.7362 -0.6768 +vn 0.3681 0.6375 -0.6768 +vn -0.0318 0.0550 0.9980 +vn 0.3362 -0.5823 0.7402 +vn 0.3362 -0.5823 -0.7402 +vn -0.0318 0.0550 -0.9980 +vn -0.6375 0.3681 0.6768 +vn -0.3681 0.6375 0.6768 +vn -0.0550 0.0318 0.9980 +vn -0.0550 0.0318 -0.9980 +vn -0.6375 0.3681 -0.6768 +vn -0.3681 0.6375 -0.6768 +vn -0.7362 0.0000 0.6768 +vn 0.6724 0.0000 0.7402 +vn 0.5823 -0.3362 0.7402 +vn 0.5823 -0.3362 -0.7402 +vn 0.6724 0.0000 -0.7402 +vn -0.7362 0.0000 -0.6768 +vn -0.6375 -0.3681 0.6768 +vn -0.0635 0.0000 0.9980 +vn 0.5823 0.3362 0.7402 +vn 0.5823 0.3362 -0.7402 +vn -0.0635 0.0000 -0.9980 +vn -0.6375 -0.3681 -0.6768 +vn -0.3681 -0.6375 0.6768 +vn -0.0550 -0.0318 0.9980 +vn 0.3362 0.5823 0.7402 +vn 0.3362 0.5823 -0.7402 +vn -0.0550 -0.0318 -0.9980 +vn -0.3681 -0.6375 -0.6768 +vn 0.0000 -0.7362 0.6768 +vn -0.0318 -0.0550 0.9980 +vn 0.0000 -0.0635 0.9980 +vn 0.0000 0.6724 0.7402 +vn 0.0000 0.6724 -0.7402 +vn -0.0318 -0.0550 -0.9980 +vn 0.0000 -0.7362 -0.6768 +vn 0.0318 -0.0550 0.9980 +vn -0.3362 0.5823 0.7402 +vn -0.3362 0.5823 -0.7402 +vn 0.0000 -0.0635 -0.9980 +vn 0.0318 -0.0550 -0.9980 +vn 0.6375 -0.3681 0.6768 +vn 0.3681 -0.6375 0.6768 +vn 0.0550 -0.0318 0.9980 +vn -0.5823 0.3362 0.7402 +vn 0.0550 -0.0318 -0.9980 +vn 0.6375 -0.3681 -0.6768 +vn 0.3681 -0.6375 -0.6768 +vn -0.5823 0.3362 -0.7402 +vn 0.6302 0.0000 -0.7764 +vn -0.6302 -0.5490 -0.5490 +vn -0.6302 0.0000 -0.7764 +vn 0.6302 -0.5490 -0.5490 +vn -0.6302 -0.7764 0.0000 +vn 0.6302 -0.7764 0.0000 +vn -0.6302 -0.5490 0.5490 +vn 0.6302 -0.5490 0.5490 +vn -0.6302 0.0000 0.7764 +vn 0.6302 0.5490 0.5490 +vn -0.6302 0.5490 0.5490 +vn 0.6302 0.7764 0.0000 +vn -0.6302 0.7764 0.0000 +vn 0.6302 0.5490 -0.5490 +vn -0.6302 0.5490 -0.5490 +vn 0.6302 0.0000 0.7764 +vn 0.2445 0.6856 0.6856 +vn 0.8133 0.5819 0.0000 +vn 0.2445 0.9696 0.0000 +vn 0.2445 0.6856 -0.6856 +vn 0.8133 0.4115 -0.4115 +vn 0.2445 0.0000 -0.9696 +vn 0.8133 -0.4115 -0.4115 +vn 0.2445 -0.6856 -0.6856 +vn 0.2445 0.0000 0.9696 +vn 0.8133 -0.4115 0.4115 +vn 0.8133 0.0000 0.5819 +vn 0.2445 -0.9696 0.0000 +vn 0.8133 -0.5819 0.0000 +vn 0.8133 0.4115 0.4115 +vn 0.8133 0.0000 -0.5819 +vn 0.2445 -0.6856 0.6856 +vn -0.5458 0.3151 -0.7764 +vn 0.2713 -0.7906 -0.5490 +vn -0.8203 -0.1603 -0.5490 +vn -0.9340 -0.3572 0.0000 +vn 0.1576 -0.9875 0.0000 +vn -0.8203 -0.1603 0.5490 +vn 0.5458 -0.3151 0.7764 +vn -0.5458 0.3151 0.7764 +vn -0.2713 0.7906 0.5490 +vn 0.8203 0.1603 0.5490 +vn -0.1576 0.9875 0.0000 +vn 0.9340 0.3572 0.0000 +vn -0.2713 0.7906 -0.5490 +vn 0.5458 -0.3151 -0.7764 +vn 0.0000 0.3491 -0.9371 +vn 0.5490 -0.6302 -0.5490 +vn 0.0000 -0.6302 -0.7764 +vn 0.6626 0.3491 -0.6626 +vn 0.7764 -0.6302 0.0000 +vn 0.6626 0.3491 0.6626 +vn 0.5490 -0.6302 0.5490 +vn 0.0000 -0.6302 0.7764 +vn 0.0000 0.3491 0.9371 +vn -0.5490 -0.6302 0.5490 +vn -0.6626 0.3491 0.6626 +vn -0.7764 -0.6302 0.0000 +vn 0.3275 0.8863 0.3275 +vn 0.0000 0.8863 0.4631 +vn -0.9371 0.3491 0.0000 +vn -0.5490 -0.6302 -0.5490 +vn -0.6626 0.3491 -0.6626 +vn -0.3275 0.8863 -0.3275 +vn 0.9371 0.3491 0.0000 +vn 0.3275 0.8863 -0.3275 +vn 0.4631 0.8863 0.0000 +vn -0.3275 0.8863 0.3275 +vn 0.0000 0.8863 -0.4631 +vn -0.4631 0.8863 0.0000 +vn 0.4924 0.8529 -0.1735 +vn 0.0000 0.9848 -0.1735 +vn 0.6733 0.6889 0.2684 +vn 0.8529 0.4924 -0.1735 +vn 0.6889 0.6733 0.2684 +vn 0.9848 0.0000 -0.1735 +vn 0.8529 -0.4924 -0.1735 +vn 0.6889 -0.6733 0.2684 +vn 0.4924 -0.8529 -0.1735 +vn 0.6733 -0.6889 0.2684 +vn 0.0000 -0.9848 -0.1735 +vn -0.4924 -0.8529 -0.1735 +vn -0.6733 -0.6889 0.2684 +vn -0.8529 -0.4924 -0.1735 +vn -0.6889 -0.6733 0.2684 +vn -0.9848 0.0000 -0.1735 +vn -0.8529 0.4924 -0.1735 +vn -0.9320 -0.1065 0.3464 +vn -0.7571 0.0000 0.6532 +vn -0.6889 0.6733 0.2684 +vn -0.4924 0.8529 -0.1735 +vn -0.6733 0.6889 0.2684 +vn -0.4252 -0.7366 -0.5259 +vn 0.7366 -0.4252 -0.5259 +vn 0.5694 0.0000 -0.8220 +vn 0.8505 0.0000 -0.5259 +vn 0.0000 -0.8505 -0.5259 +vn 0.4252 -0.7366 -0.5259 +vn -0.4252 0.7366 -0.5259 +vn 0.4252 0.7366 -0.5259 +vn 0.0000 0.8505 -0.5259 +vn 0.7366 0.4252 -0.5259 +vn -0.7366 0.4252 -0.5259 +vn -0.8505 0.0000 -0.5259 +vn -0.7366 -0.4252 -0.5259 +vn 0.0000 -0.5694 -0.8220 +vn -0.1066 -0.1846 -0.9770 +vn 0.0000 -0.2132 -0.9770 +vn -0.2847 0.4931 -0.8220 +vn -0.4931 0.2847 -0.8220 +vn 0.2847 0.4931 -0.8220 +vn 0.0000 0.5694 -0.8220 +vn -0.4931 -0.2847 -0.8220 +vn -0.2847 -0.4931 -0.8220 +vn 0.4931 -0.2847 -0.8220 +vn 0.2847 -0.4931 -0.8220 +vn 0.4931 0.2847 -0.8220 +vn -0.5694 0.0000 -0.8220 +vn -0.6377 0.0000 -0.7703 +vn 0.2132 0.0000 -0.9770 +vn -0.1846 0.1066 -0.9770 +vn 0.1066 0.1846 -0.9770 +vn 0.0000 0.2132 -0.9770 +vn 0.1846 -0.1066 -0.9770 +vn -0.1066 0.1846 -0.9770 +vn -0.1846 -0.1066 -0.9770 +vn 0.1066 -0.1846 -0.9770 +vn 0.1846 0.1066 -0.9770 +vn -0.2132 0.0000 -0.9770 +vn -0.3189 -0.5523 -0.7703 +vn 0.0000 -0.6377 -0.7703 +vn 0.6377 0.0000 -0.7703 +vn -0.3189 0.5523 -0.7703 +vn -0.5523 0.3189 -0.7703 +vn 0.3189 0.5523 -0.7703 +vn 0.0000 0.6377 -0.7703 +vn -0.5523 -0.3189 -0.7703 +vn 0.5523 -0.3189 -0.7703 +vn 0.3189 -0.5523 -0.7703 +vn 0.5523 0.3189 -0.7703 +vn 0.6377 0.0000 0.7703 +vn 0.6557 -0.3786 0.6532 +vn 0.5523 -0.3189 0.7703 +vn 0.9320 -0.1065 0.3464 +vn 0.7571 0.0000 0.6532 +vn 0.1065 0.9320 0.3464 +vn 0.0000 0.7571 0.6532 +vn 0.3786 0.6557 0.6532 +vn -0.6557 0.3786 0.6532 +vn -0.9320 0.1065 0.3464 +vn 0.1065 -0.9320 0.3464 +vn 0.3786 -0.6557 0.6532 +vn -0.3786 -0.6557 0.6532 +vn -0.1065 -0.9320 0.3464 +vn 0.9320 0.1065 0.3464 +vn 0.6557 0.3786 0.6532 +vn -0.3786 0.6557 0.6532 +vn -0.1065 0.9320 0.3464 +vn 0.0000 -0.7571 0.6532 +vn -0.6557 -0.3786 0.6532 +vn 0.7624 0.3158 0.5648 +vn 0.3158 -0.7624 0.5648 +vn -0.7624 -0.3158 0.5648 +vn -0.3158 0.7624 0.5648 +vn 0.3083 -0.7443 0.5924 +vn 0.0000 -0.6377 0.7703 +vn -0.7443 0.3083 0.5924 +vn -0.6377 0.0000 0.7703 +vn 0.3083 0.7443 0.5924 +vn -0.3083 0.7443 0.5924 +vn 0.0000 0.6377 0.7703 +vn 0.7443 -0.3083 0.5924 +vn -0.3083 -0.7443 0.5924 +vn 0.7443 0.3083 0.5924 +vn -0.7624 0.3158 0.5648 +vn 0.3158 0.7624 0.5648 +vn -0.7443 -0.3083 0.5924 +vn 0.7624 -0.3158 0.5648 +vn -0.3158 -0.7624 0.5648 +vn -0.5523 0.3189 0.7703 +vn -0.3189 0.5523 0.7703 +vn 0.3189 0.5523 0.7703 +vn -0.3189 -0.5523 0.7703 +vn -0.5523 -0.3189 0.7703 +vn 0.3189 -0.5523 0.7703 +vn 0.5523 0.3189 0.7703 +vn -0.7572 0.0000 0.6532 +vn -0.5490 0.5490 -0.6302 +vn -0.5490 -0.5490 -0.6302 +vn 0.0000 -0.7764 -0.6302 +vn 0.5490 -0.5490 -0.6302 +vn 0.7764 0.0000 -0.6302 +vn 0.0000 0.7764 -0.6302 +vn -0.8626 0.4980 0.0889 +vn 0.0000 0.7764 0.6302 +vn 0.2713 -0.7906 0.5490 +vn 0.8203 0.1603 -0.5490 +vn -0.7764 0.0000 -0.6302 +vn 0.5490 0.5490 -0.6302 +usemtl None +s off +f 170/1/1 166/2/1 162/3/1 +f 270/4/2 271/5/2 269/6/2 +f 276/7/3 277/8/3 272/9/3 +f 276/10/4 273/11/4 275/12/4 +f 274/13/1 269/14/1 273/15/1 +f 275/16/5 269/17/5 271/18/5 +f 272/9/6 274/13/6 276/7/6 +f 277/19/7 279/20/7 278/21/7 +f 271/5/2 277/22/2 278/23/2 +f 275/12/4 280/24/4 276/10/4 +f 271/18/8 279/20/8 275/16/8 +f 294/25/4 290/26/4 286/27/4 +f 287/28/2 293/29/2 295/30/2 +f 310/31/4 306/32/4 302/33/4 +f 303/34/2 309/35/2 311/36/2 +f 323/37/2 321/38/2 322/39/2 +f 316/40/7 326/41/7 315/42/7 +f 320/43/4 327/44/4 319/45/4 +f 318/46/1 313/47/1 317/48/1 +f 326/49/5 313/50/5 315/51/5 +f 316/52/6 318/53/6 325/54/6 +f 313/50/5 321/38/5 315/51/5 +f 313/47/1 323/55/1 322/56/1 +f 325/57/7 331/58/7 320/59/7 +f 315/42/7 324/60/7 316/40/7 +f 325/57/7 319/61/7 326/41/7 +f 326/49/5 327/44/5 317/62/5 +f 318/46/1 332/63/1 336/64/1 +f 317/48/1 328/65/1 318/46/1 +f 334/66/6 329/67/6 333/68/6 +f 336/69/6 331/70/6 335/71/6 +f 316/52/4 333/68/4 314/72/4 +f 324/60/7 334/73/7 316/40/7 +f 320/43/4 332/74/4 328/75/4 +f 323/37/2 330/76/2 324/77/2 +f 314/78/1 329/67/1 323/55/1 +f 318/53/2 335/71/2 325/54/2 +f 338/79/9 339/80/9 337/81/9 +f 340/82/10 341/83/10 339/80/10 +f 341/83/11 344/84/11 343/85/11 +f 344/84/12 345/86/12 343/85/12 +f 345/87/13 348/88/13 347/89/13 +f 347/89/14 350/90/14 349/91/14 +f 350/90/15 351/92/15 349/91/15 +f 352/93/16 337/81/16 351/92/16 +f 359/94/4 357/95/4 355/96/4 +f 362/97/9 363/98/9 361/99/9 +f 364/100/10 365/101/10 363/98/10 +f 366/102/11 367/103/11 365/101/11 +f 368/104/12 369/105/12 367/103/12 +f 369/106/13 372/107/13 371/108/13 +f 371/108/14 374/109/14 373/110/14 +f 373/110/15 376/111/15 375/112/15 +f 375/112/16 362/97/16 361/99/16 +f 383/113/4 380/114/4 379/115/4 +f 386/116/9 387/117/9 385/118/9 +f 388/119/10 389/120/10 387/117/10 +f 390/121/11 391/122/11 389/120/11 +f 392/123/12 393/124/12 391/122/12 +f 394/125/13 395/126/13 393/127/13 +f 396/128/14 397/129/14 395/126/14 +f 397/129/15 400/130/15 399/131/15 +f 400/130/16 385/118/16 399/131/16 +f 407/132/4 404/133/4 403/134/4 +f 409/135/9 412/136/9 411/137/9 +f 411/137/10 414/138/10 413/139/10 +f 414/138/11 415/140/11 413/139/11 +f 416/141/12 417/142/12 415/140/12 +f 417/143/13 420/144/13 419/145/13 +f 420/144/14 421/146/14 419/145/14 +f 422/147/15 423/148/15 421/146/15 +f 424/149/16 409/135/16 423/148/16 +f 431/150/4 428/151/4 427/152/4 +f 446/153/17 442/154/17 434/155/17 +f 439/156/18 443/157/18 435/158/18 +f 449/159/19 452/160/19 451/161/19 +f 452/160/4 453/162/4 451/161/4 +f 453/162/20 456/163/20 455/164/20 +f 456/165/21 457/166/21 455/167/21 +f 450/168/1 456/169/1 454/170/1 +f 458/171/2 459/172/2 457/166/2 +f 460/173/22 449/159/22 459/172/22 +f 451/174/7 455/175/7 449/176/7 +f 462/177/2 463/178/2 461/179/2 +f 468/180/4 465/181/4 467/182/4 +f 462/183/2 461/184/2 469/185/2 +f 467/186/5 461/179/5 463/178/5 +f 464/187/6 466/188/6 468/180/6 +f 461/189/2 473/190/2 469/191/2 +f 462/183/23 471/192/23 466/193/23 +f 465/194/4 466/193/4 471/192/4 +f 461/189/7 470/195/7 472/196/7 +f 471/197/4 470/198/4 465/199/4 +f 469/191/1 474/200/1 471/197/1 +f 477/201/4 476/202/4 475/203/4 +f 479/204/2 482/205/2 481/206/2 +f 476/207/4 483/208/4 475/209/4 +f 475/203/5 481/210/5 477/201/5 +f 480/211/6 478/212/6 482/205/6 +f 487/213/4 475/214/4 483/215/4 +f 485/216/23 476/207/23 480/217/23 +f 479/218/2 485/216/2 480/217/2 +f 486/219/7 479/220/7 475/214/7 +f 484/221/2 485/222/2 479/223/2 +f 488/224/1 483/215/1 485/222/1 +f 491/225/2 490/226/2 489/227/2 +f 493/228/4 496/229/4 495/230/4 +f 490/231/2 497/232/2 489/233/2 +f 489/227/6 495/234/6 491/225/6 +f 494/235/5 492/236/5 496/229/5 +f 501/237/2 489/233/2 497/238/2 +f 494/239/24 497/232/24 490/231/24 +f 493/240/4 499/241/4 494/239/4 +f 500/242/7 493/243/7 489/233/7 +f 498/244/4 499/245/4 493/246/4 +f 502/247/1 497/238/1 499/245/1 +f 504/248/4 505/249/4 503/250/4 +f 510/251/2 507/252/2 509/253/2 +f 504/254/4 503/255/4 511/256/4 +f 509/257/6 503/250/6 505/249/6 +f 506/258/5 508/259/5 510/251/5 +f 503/260/4 515/261/4 511/262/4 +f 504/254/24 513/263/24 508/264/24 +f 507/265/2 508/264/2 513/263/2 +f 507/266/7 514/267/7 503/260/7 +f 513/268/2 512/269/2 507/270/2 +f 511/262/1 516/271/1 513/268/1 +f 522/272/25 517/273/25 518/274/25 +f 523/275/26 522/272/26 524/276/26 +f 519/277/27 524/278/27 520/279/27 +f 521/280/28 525/281/28 517/282/28 +f 518/274/29 519/277/29 520/279/29 +f 519/283/29 517/282/29 525/281/29 +f 519/284/29 529/285/29 527/286/29 +f 521/280/26 523/287/26 526/288/26 +f 527/289/29 529/290/29 531/291/29 +f 523/292/5 527/286/5 528/293/5 +f 526/294/26 528/295/26 530/296/26 +f 526/294/6 529/285/6 525/297/6 +f 527/298/29 535/299/29 534/300/29 +f 530/301/26 528/302/26 532/303/26 +f 530/301/30 531/291/30 529/290/30 +f 527/298/25 533/304/25 528/305/25 +f 532/306/26 533/307/26 536/308/26 +f 532/306/27 535/299/27 531/309/27 +f 543/310/5 547/311/5 551/312/5 +f 559/313/6 556/314/6 555/315/6 +f 570/316/1 568/317/1 569/318/1 +f 575/319/5 569/320/5 568/321/5 +f 576/322/7 562/323/7 575/319/7 +f 578/324/2 587/325/2 564/326/2 +f 569/327/2 563/328/2 570/329/2 +f 570/330/5 571/331/5 567/332/5 +f 582/333/4 589/334/4 590/335/4 +f 567/336/4 572/337/4 568/338/4 +f 573/339/2 584/340/2 562/341/2 +f 575/342/4 565/343/4 576/344/4 +f 576/345/5 561/346/5 573/347/5 +f 581/348/4 588/349/4 589/334/4 +f 562/341/2 578/324/2 569/327/2 +f 568/338/4 582/333/4 575/342/4 +f 569/327/2 564/326/2 579/350/2 +f 572/337/4 581/348/4 568/338/4 +f 584/340/2 577/351/2 562/341/2 +f 575/342/4 566/352/4 583/353/4 +f 586/354/6 590/355/6 589/356/6 +f 589/356/6 587/357/6 586/354/6 +f 585/358/6 591/359/6 590/355/6 +f 577/351/2 592/360/2 585/361/2 +f 577/351/2 586/362/2 578/324/2 +f 566/363/31 592/364/31 574/365/31 +f 582/333/4 591/366/4 566/352/4 +f 564/367/32 588/368/32 580/369/32 +f 642/370/7 653/371/7 654/372/7 +f 642/373/7 655/374/7 643/375/7 +f 644/376/7 655/377/7 656/378/7 +f 645/379/7 656/380/7 657/381/7 +f 645/382/7 658/383/7 646/384/7 +f 646/385/7 659/386/7 647/387/7 +f 647/388/7 660/389/7 648/390/7 +f 648/391/7 661/392/7 649/393/7 +f 649/394/7 662/395/7 650/396/7 +f 651/397/7 662/398/7 663/399/7 +f 652/400/7 663/401/7 664/402/7 +f 652/403/7 653/404/7 641/405/7 +f 714/406/1 701/407/1 702/408/1 +f 716/409/1 703/410/1 715/411/1 +f 716/409/1 705/412/1 704/413/1 +f 718/414/1 707/415/1 706/416/1 +f 720/417/1 707/415/1 719/418/1 +f 721/419/1 710/420/1 709/421/1 +f 722/422/1 711/423/1 710/420/1 +f 714/424/1 712/425/1 724/426/1 +f 614/427/1 688/428/1 687/429/1 +f 596/430/1 679/431/1 677/432/1 +f 602/433/1 682/434/1 681/435/1 +f 608/436/1 685/437/1 684/438/1 +f 689/439/1 726/440/1 690/441/1 +f 691/442/1 725/443/1 689/439/1 +f 692/444/1 727/445/1 691/442/1 +f 692/444/1 729/446/1 728/447/1 +f 694/448/1 729/446/1 693/449/1 +f 694/448/1 731/450/1 730/451/1 +f 696/452/1 731/450/1 695/453/1 +f 697/454/1 732/455/1 696/452/1 +f 697/454/1 734/456/1 733/457/1 +f 699/458/1 734/456/1 698/459/1 +f 699/458/1 736/460/1 735/461/1 +f 700/462/1 726/440/1 736/460/1 +f 747/463/1 741/464/1 739/465/1 +f 750/466/33 751/467/33 749/468/33 +f 751/467/17 754/469/17 753/470/17 +f 754/469/5 755/471/5 753/470/5 +f 755/472/34 758/473/34 757/474/34 +f 760/475/1 758/476/1 754/477/1 +f 757/474/18 760/478/18 759/479/18 +f 759/479/6 750/466/6 749/468/6 +f 751/480/7 757/481/7 759/482/7 +f 762/483/33 763/484/33 761/485/33 +f 764/486/17 765/487/17 763/484/17 +f 766/488/5 767/489/5 765/487/5 +f 768/490/34 769/491/34 767/492/34 +f 772/493/1 770/494/1 766/495/1 +f 769/491/18 772/496/18 771/497/18 +f 772/496/6 761/485/6 771/497/6 +f 763/498/7 769/499/7 771/500/7 +f 774/501/35 777/502/35 778/503/35 +f 778/503/36 779/504/36 780/505/36 +f 780/505/37 775/506/37 776/507/37 +f 773/508/38 782/509/38 777/510/38 +f 774/501/39 775/511/39 773/512/39 +f 775/513/39 781/514/39 773/508/39 +f 783/515/39 781/516/39 775/517/39 +f 777/510/36 782/509/36 779/518/36 +f 783/519/39 787/520/39 785/521/39 +f 784/522/6 775/523/6 779/524/6 +f 786/525/36 779/524/36 782/526/36 +f 785/527/5 782/526/5 781/516/5 +f 790/528/39 787/529/39 783/530/39 +f 786/531/36 788/532/36 784/533/36 +f 787/520/40 786/531/40 785/521/40 +f 784/534/35 790/535/35 783/536/35 +f 792/537/36 784/534/36 788/538/36 +f 787/529/37 792/537/37 788/538/37 +f 799/539/5 805/540/5 807/541/5 +f 815/542/6 812/543/6 811/544/6 +f 817/545/13 820/546/13 819/547/13 +f 819/547/14 822/548/14 821/549/14 +f 821/549/15 824/550/15 823/551/15 +f 824/550/16 825/552/16 823/551/16 +f 826/553/9 827/554/9 825/555/9 +f 828/556/10 829/557/10 827/554/10 +f 829/557/11 832/558/11 831/559/11 +f 832/558/12 817/545/12 831/559/12 +f 839/560/4 836/561/4 835/562/4 +f 842/563/13 843/564/13 841/565/13 +f 843/564/14 846/566/14 845/567/14 +f 845/567/15 848/568/15 847/569/15 +f 847/569/16 850/570/16 849/571/16 +f 849/572/9 852/573/9 851/574/9 +f 851/574/10 854/575/10 853/576/10 +f 854/575/11 855/577/11 853/576/11 +f 855/577/12 842/563/12 841/565/12 +f 863/578/4 860/579/4 859/580/4 +f 865/581/13 868/582/13 867/583/13 +f 867/583/14 870/584/14 869/585/14 +f 870/584/15 871/586/15 869/585/15 +f 871/586/16 874/587/16 873/588/16 +f 874/589/9 875/590/9 873/591/9 +f 875/590/10 878/592/10 877/593/10 +f 878/592/11 879/594/11 877/593/11 +f 880/595/12 865/581/12 879/594/12 +f 887/596/4 884/597/4 883/598/4 +f 889/599/13 892/600/13 891/601/13 +f 892/600/14 893/602/14 891/601/14 +f 894/603/15 895/604/15 893/602/15 +f 895/604/16 898/605/16 897/606/16 +f 898/607/9 899/608/9 897/609/9 +f 900/610/10 901/611/10 899/608/10 +f 902/612/11 903/613/11 901/611/11 +f 904/614/12 889/599/12 903/613/12 +f 911/615/4 909/616/4 906/617/4 +f 1020/618/7 1018/619/7 1014/620/7 +f 162/3/1 160/621/1 158/622/1 +f 158/622/1 172/623/1 162/3/1 +f 170/1/1 168/624/1 166/2/1 +f 166/2/1 164/625/1 162/3/1 +f 162/3/1 172/623/1 170/1/1 +f 270/4/2 272/626/2 271/5/2 +f 276/7/3 280/627/3 277/8/3 +f 276/10/4 274/628/4 273/11/4 +f 274/13/1 270/629/1 269/14/1 +f 275/16/5 273/630/5 269/17/5 +f 272/9/6 270/629/6 274/13/6 +f 277/19/7 280/631/7 279/20/7 +f 271/5/2 272/626/2 277/22/2 +f 275/12/4 279/632/4 280/24/4 +f 271/18/8 278/21/8 279/20/8 +f 302/33/4 300/633/4 310/31/4 +f 298/634/4 312/635/4 310/31/4 +f 310/31/4 308/636/4 306/32/4 +f 306/32/4 304/637/4 302/33/4 +f 300/633/4 298/634/4 310/31/4 +f 323/37/2 324/77/2 321/38/2 +f 316/40/7 325/57/7 326/41/7 +f 320/43/4 328/75/4 327/44/4 +f 318/46/1 314/78/1 313/47/1 +f 326/49/5 317/62/5 313/50/5 +f 316/52/6 314/72/6 318/53/6 +f 313/50/5 322/39/5 321/38/5 +f 313/47/1 314/78/1 323/55/1 +f 325/57/7 335/638/7 331/58/7 +f 315/42/7 321/639/7 324/60/7 +f 325/57/7 320/59/7 319/61/7 +f 326/49/5 319/45/5 327/44/5 +f 318/46/1 328/65/1 332/63/1 +f 317/48/1 327/640/1 328/65/1 +f 334/66/6 330/641/6 329/67/6 +f 336/69/6 332/642/6 331/70/6 +f 316/52/4 334/66/4 333/68/4 +f 324/60/7 330/643/7 334/73/7 +f 320/43/4 331/644/4 332/74/4 +f 323/37/2 329/645/2 330/76/2 +f 314/78/1 333/68/1 329/67/1 +f 318/53/2 336/69/2 335/71/2 +f 338/79/9 340/82/9 339/80/9 +f 340/82/10 342/646/10 341/83/10 +f 341/83/11 342/646/11 344/84/11 +f 344/84/12 346/647/12 345/86/12 +f 345/87/13 346/648/13 348/88/13 +f 347/89/14 348/88/14 350/90/14 +f 350/90/15 352/93/15 351/92/15 +f 352/93/16 338/79/16 337/81/16 +f 355/96/4 353/649/4 359/94/4 +f 354/650/4 360/651/4 359/94/4 +f 359/94/4 358/652/4 357/95/4 +f 357/95/4 356/653/4 355/96/4 +f 353/649/4 354/650/4 359/94/4 +f 362/97/9 364/100/9 363/98/9 +f 364/100/10 366/102/10 365/101/10 +f 366/102/11 368/104/11 367/103/11 +f 368/104/12 370/654/12 369/105/12 +f 369/106/13 370/655/13 372/107/13 +f 371/108/14 372/107/14 374/109/14 +f 373/110/15 374/109/15 376/111/15 +f 375/112/16 376/111/16 362/97/16 +f 379/115/4 377/656/4 383/113/4 +f 378/657/4 384/658/4 383/113/4 +f 383/113/4 382/659/4 381/660/4 +f 381/660/4 380/114/4 383/113/4 +f 377/656/4 378/657/4 383/113/4 +f 386/116/9 388/119/9 387/117/9 +f 388/119/10 390/121/10 389/120/10 +f 390/121/11 392/123/11 391/122/11 +f 392/123/12 394/661/12 393/124/12 +f 394/125/13 396/128/13 395/126/13 +f 396/128/14 398/662/14 397/129/14 +f 397/129/15 398/662/15 400/130/15 +f 400/130/16 386/116/16 385/118/16 +f 403/134/4 401/663/4 407/132/4 +f 402/664/4 408/665/4 407/132/4 +f 407/132/4 406/666/4 405/667/4 +f 405/667/4 404/133/4 407/132/4 +f 401/663/4 402/664/4 407/132/4 +f 409/135/9 410/668/9 412/136/9 +f 411/137/10 412/136/10 414/138/10 +f 414/138/11 416/141/11 415/140/11 +f 416/141/12 418/669/12 417/142/12 +f 417/143/13 418/670/13 420/144/13 +f 420/144/14 422/147/14 421/146/14 +f 422/147/15 424/149/15 423/148/15 +f 424/149/16 410/668/16 409/135/16 +f 427/152/4 425/671/4 426/672/4 +f 426/672/4 432/673/4 427/152/4 +f 431/150/4 430/674/4 429/675/4 +f 429/675/4 428/151/4 431/150/4 +f 427/152/4 432/673/4 431/150/4 +f 438/676/17 436/677/17 434/155/17 +f 434/155/17 448/678/17 446/153/17 +f 446/153/17 444/679/17 442/154/17 +f 442/154/17 440/680/17 438/676/17 +f 438/676/17 434/155/17 442/154/17 +f 447/681/18 433/682/18 435/158/18 +f 435/158/18 437/683/18 439/156/18 +f 439/156/18 441/684/18 443/157/18 +f 443/157/18 445/685/18 447/681/18 +f 447/681/18 435/158/18 443/157/18 +f 449/159/19 450/686/19 452/160/19 +f 452/160/4 454/687/4 453/162/4 +f 453/162/20 454/687/20 456/163/20 +f 456/165/21 458/171/21 457/166/21 +f 454/170/1 452/688/1 450/168/1 +f 450/168/1 460/689/1 458/690/1 +f 458/690/1 456/169/1 450/168/1 +f 458/171/2 460/173/2 459/172/2 +f 460/173/22 450/686/22 449/159/22 +f 459/691/7 449/176/7 455/175/7 +f 451/174/7 453/692/7 455/175/7 +f 455/175/7 457/693/7 459/691/7 +f 522/272/25 521/694/25 517/273/25 +f 523/275/26 521/694/26 522/272/26 +f 519/277/27 523/695/27 524/278/27 +f 521/280/28 526/288/28 525/281/28 +f 518/274/29 517/273/29 519/277/29 +f 519/284/29 525/297/29 529/285/29 +f 523/292/5 519/284/5 527/286/5 +f 526/294/26 523/696/26 528/295/26 +f 526/294/6 530/296/6 529/285/6 +f 527/298/29 531/309/29 535/299/29 +f 530/301/30 532/303/30 531/291/30 +f 527/298/25 534/300/25 533/304/25 +f 532/306/26 528/697/26 533/307/26 +f 532/306/27 536/308/27 535/299/27 +f 551/312/5 537/698/5 543/310/5 +f 539/699/5 541/700/5 543/310/5 +f 543/310/5 545/701/5 547/311/5 +f 547/311/5 549/702/5 551/312/5 +f 537/698/5 539/699/5 543/310/5 +f 555/315/6 553/703/6 554/704/6 +f 554/704/6 560/705/6 559/313/6 +f 559/313/6 558/706/6 557/707/6 +f 557/707/6 556/314/6 559/313/6 +f 555/315/6 554/704/6 559/313/6 +f 570/316/1 567/708/1 568/317/1 +f 575/319/5 562/323/5 569/320/5 +f 576/322/7 573/709/7 562/323/7 +f 578/324/2 586/362/2 587/325/2 +f 569/327/2 579/350/2 563/328/2 +f 570/330/5 563/710/5 571/331/5 +f 582/333/4 581/348/4 589/334/4 +f 567/336/4 571/711/4 572/337/4 +f 573/339/2 561/712/2 584/340/2 +f 575/342/4 583/353/4 565/343/4 +f 576/345/5 565/713/5 561/346/5 +f 581/348/4 580/714/4 588/349/4 +f 562/341/2 577/351/2 578/324/2 +f 568/338/4 581/348/4 582/333/4 +f 569/327/2 578/324/2 564/326/2 +f 572/337/4 580/714/4 581/348/4 +f 584/340/2 574/715/2 577/351/2 +f 575/342/4 582/333/4 566/352/4 +f 586/354/6 585/358/6 590/355/6 +f 589/356/6 588/368/6 587/357/6 +f 585/358/6 592/364/6 591/359/6 +f 577/351/2 574/715/2 592/360/2 +f 577/351/2 585/361/2 586/362/2 +f 566/363/31 591/359/31 592/364/31 +f 582/333/4 590/335/4 591/366/4 +f 564/367/32 587/357/32 588/368/32 +f 642/370/7 641/716/7 653/371/7 +f 642/373/7 654/717/7 655/374/7 +f 644/376/7 643/718/7 655/377/7 +f 645/379/7 644/719/7 656/380/7 +f 645/382/7 657/720/7 658/383/7 +f 646/385/7 658/721/7 659/386/7 +f 647/388/7 659/722/7 660/389/7 +f 648/391/7 660/723/7 661/392/7 +f 649/394/7 661/724/7 662/395/7 +f 651/397/7 650/725/7 662/398/7 +f 652/400/7 651/726/7 663/401/7 +f 652/403/7 664/727/7 653/404/7 +f 714/406/1 713/728/1 701/407/1 +f 716/409/1 704/413/1 703/410/1 +f 716/409/1 717/729/1 705/412/1 +f 718/414/1 719/418/1 707/415/1 +f 720/417/1 708/730/1 707/415/1 +f 721/419/1 722/422/1 710/420/1 +f 722/422/1 723/731/1 711/423/1 +f 714/424/1 702/732/1 712/425/1 +f 614/427/1 616/733/1 688/428/1 +f 596/430/1 598/734/1 679/431/1 +f 602/433/1 604/735/1 682/434/1 +f 608/436/1 610/736/1 685/437/1 +f 689/439/1 725/443/1 726/440/1 +f 691/442/1 727/445/1 725/443/1 +f 692/444/1 728/447/1 727/445/1 +f 692/444/1 693/449/1 729/446/1 +f 694/448/1 730/451/1 729/446/1 +f 694/448/1 695/453/1 731/450/1 +f 696/452/1 732/455/1 731/450/1 +f 697/454/1 733/457/1 732/455/1 +f 697/454/1 698/459/1 734/456/1 +f 699/458/1 735/461/1 734/456/1 +f 699/458/1 700/462/1 736/460/1 +f 700/462/1 690/441/1 726/440/1 +f 739/465/1 737/737/1 738/738/1 +f 738/738/1 748/739/1 739/465/1 +f 747/463/1 746/740/1 743/741/1 +f 745/742/1 744/743/1 743/741/1 +f 743/741/1 742/744/1 741/464/1 +f 741/464/1 740/745/1 739/465/1 +f 739/465/1 748/739/1 747/463/1 +f 746/740/1 745/742/1 743/741/1 +f 743/741/1 741/464/1 747/463/1 +f 750/466/33 752/746/33 751/467/33 +f 751/467/17 752/746/17 754/469/17 +f 754/469/5 756/747/5 755/471/5 +f 755/472/34 756/748/34 758/473/34 +f 754/477/1 752/749/1 750/750/1 +f 750/750/1 760/475/1 754/477/1 +f 758/476/1 756/751/1 754/477/1 +f 757/474/18 758/473/18 760/478/18 +f 759/479/6 760/478/6 750/466/6 +f 759/482/7 749/752/7 751/480/7 +f 751/480/7 753/753/7 755/754/7 +f 755/754/7 757/481/7 751/480/7 +f 762/483/33 764/486/33 763/484/33 +f 764/486/17 766/488/17 765/487/17 +f 766/488/5 768/755/5 767/489/5 +f 768/490/34 770/756/34 769/491/34 +f 766/495/1 764/757/1 762/758/1 +f 762/758/1 772/493/1 766/495/1 +f 770/494/1 768/759/1 766/495/1 +f 769/491/18 770/756/18 772/496/18 +f 772/496/6 762/483/6 761/485/6 +f 771/500/7 761/760/7 763/498/7 +f 763/498/7 765/761/7 767/762/7 +f 767/762/7 769/499/7 763/498/7 +f 774/501/35 773/512/35 777/502/35 +f 778/503/36 777/502/36 779/504/36 +f 780/505/37 779/504/37 775/506/37 +f 773/508/38 781/514/38 782/509/38 +f 774/501/39 776/763/39 775/511/39 +f 783/515/39 785/527/39 781/516/39 +f 784/522/6 783/764/6 775/523/6 +f 786/525/36 784/522/36 779/524/36 +f 785/527/5 786/525/5 782/526/5 +f 790/528/39 791/765/39 787/529/39 +f 787/520/40 788/532/40 786/531/40 +f 784/534/35 789/766/35 790/535/35 +f 792/537/36 789/766/36 784/534/36 +f 787/529/37 791/765/37 792/537/37 +f 807/541/5 793/767/5 799/539/5 +f 795/768/5 797/769/5 799/539/5 +f 799/539/5 801/770/5 803/771/5 +f 803/771/5 805/540/5 799/539/5 +f 793/767/5 795/768/5 799/539/5 +f 811/544/6 809/772/6 810/773/6 +f 810/773/6 816/774/6 815/542/6 +f 815/542/6 814/775/6 813/776/6 +f 813/776/6 812/543/6 815/542/6 +f 811/544/6 810/773/6 815/542/6 +f 817/545/13 818/777/13 820/546/13 +f 819/547/14 820/546/14 822/548/14 +f 821/549/15 822/548/15 824/550/15 +f 824/550/16 826/778/16 825/552/16 +f 826/553/9 828/556/9 827/554/9 +f 828/556/10 830/779/10 829/557/10 +f 829/557/11 830/779/11 832/558/11 +f 832/558/12 818/777/12 817/545/12 +f 835/562/4 833/780/4 839/560/4 +f 834/781/4 840/782/4 839/560/4 +f 839/560/4 838/783/4 837/784/4 +f 837/784/4 836/561/4 839/560/4 +f 833/780/4 834/781/4 839/560/4 +f 842/563/13 844/785/13 843/564/13 +f 843/564/14 844/785/14 846/566/14 +f 845/567/15 846/566/15 848/568/15 +f 847/569/16 848/568/16 850/570/16 +f 849/572/9 850/786/9 852/573/9 +f 851/574/10 852/573/10 854/575/10 +f 854/575/11 856/787/11 855/577/11 +f 855/577/12 856/787/12 842/563/12 +f 859/580/4 857/788/4 863/578/4 +f 858/789/4 864/790/4 863/578/4 +f 863/578/4 862/791/4 861/792/4 +f 861/792/4 860/579/4 863/578/4 +f 857/788/4 858/789/4 863/578/4 +f 865/581/13 866/793/13 868/582/13 +f 867/583/14 868/582/14 870/584/14 +f 870/584/15 872/794/15 871/586/15 +f 871/586/16 872/794/16 874/587/16 +f 874/589/9 876/795/9 875/590/9 +f 875/590/10 876/795/10 878/592/10 +f 878/592/11 880/595/11 879/594/11 +f 880/595/12 866/793/12 865/581/12 +f 883/598/4 881/796/4 887/596/4 +f 882/797/4 888/798/4 887/596/4 +f 887/596/4 886/799/4 885/800/4 +f 885/800/4 884/597/4 887/596/4 +f 881/796/4 882/797/4 887/596/4 +f 889/599/13 890/801/13 892/600/13 +f 892/600/14 894/603/14 893/602/14 +f 894/603/15 896/802/15 895/604/15 +f 895/604/16 896/802/16 898/605/16 +f 898/607/9 900/610/9 899/608/9 +f 900/610/10 902/612/10 901/611/10 +f 902/612/11 904/614/11 903/613/11 +f 904/614/12 890/801/12 889/599/12 +f 907/803/4 905/804/4 906/617/4 +f 906/617/4 912/805/4 911/615/4 +f 911/615/4 910/806/4 909/616/4 +f 909/616/4 908/807/4 907/803/4 +f 907/803/4 906/617/4 909/616/4 +f 1014/620/7 1012/808/7 1010/809/7 +f 1010/809/7 1024/810/7 1014/620/7 +f 1022/811/7 1020/618/7 1014/620/7 +f 1018/619/7 1016/812/7 1014/620/7 +f 1014/620/7 1024/810/7 1022/811/7 +f 286/27/4 284/813/4 294/25/4 +f 282/814/4 296/815/4 294/25/4 +f 294/25/4 292/816/4 290/26/4 +f 290/26/4 288/817/4 286/27/4 +f 284/813/4 282/814/4 294/25/4 +f 295/30/2 281/818/2 283/819/2 +f 283/819/2 285/820/2 295/30/2 +f 287/28/2 289/821/2 291/822/2 +f 291/822/2 293/29/2 287/28/2 +f 295/30/2 285/820/2 287/28/2 +f 311/36/2 297/823/2 299/824/2 +f 299/824/2 301/825/2 311/36/2 +f 303/34/2 305/826/2 307/827/2 +f 307/827/2 309/35/2 303/34/2 +f 311/36/2 301/825/2 303/34/2 +f 462/177/2 464/187/2 463/178/2 +f 468/180/4 466/188/4 465/181/4 +f 467/186/5 465/828/5 461/179/5 +f 464/187/6 462/177/6 466/188/6 +f 461/189/2 472/196/2 473/190/2 +f 462/183/23 469/185/23 471/192/23 +f 461/189/7 465/829/7 470/195/7 +f 471/197/4 474/200/4 470/198/4 +f 469/191/1 473/190/1 474/200/1 +f 477/201/4 478/212/4 476/202/4 +f 479/204/2 480/211/2 482/205/2 +f 475/203/5 479/830/5 481/210/5 +f 480/211/6 476/202/6 478/212/6 +f 487/213/4 486/219/4 475/214/4 +f 485/216/23 483/208/23 476/207/23 +f 486/219/7 484/831/7 479/220/7 +f 484/221/2 488/224/2 485/222/2 +f 488/224/1 487/213/1 483/215/1 +f 491/225/2 492/236/2 490/226/2 +f 493/228/4 494/235/4 496/229/4 +f 489/227/6 493/832/6 495/234/6 +f 494/235/5 490/226/5 492/236/5 +f 501/237/2 500/242/2 489/233/2 +f 494/239/24 499/241/24 497/232/24 +f 500/242/7 498/833/7 493/243/7 +f 498/244/4 502/247/4 499/245/4 +f 502/247/1 501/237/1 497/238/1 +f 504/248/4 506/258/4 505/249/4 +f 510/251/2 508/259/2 507/252/2 +f 509/257/6 507/834/6 503/250/6 +f 506/258/5 504/248/5 508/259/5 +f 503/260/4 514/267/4 515/261/4 +f 504/254/24 511/256/24 513/263/24 +f 507/266/7 512/835/7 514/267/7 +f 513/268/2 516/271/2 512/269/2 +f 511/262/1 515/261/1 516/271/1 +s 1 +f 13/836/41 12/837/42 1/838/43 +f 14/839/44 1/838/43 2/840/45 +f 15/841/46 2/840/45 3/842/47 +f 16/843/48 3/842/47 4/844/49 +f 17/845/50 4/844/49 5/846/51 +f 18/847/52 5/846/51 6/848/53 +f 7/849/54 18/850/52 6/851/53 +f 8/852/55 19/853/56 7/849/54 +f 9/854/57 20/855/58 8/852/55 +f 10/856/59 21/857/60 9/854/57 +f 11/858/61 22/859/62 10/856/59 +f 12/837/42 23/860/63 11/858/61 +f 25/861/64 24/862/65 13/836/41 +f 26/863/66 13/836/41 14/839/44 +f 27/864/67 14/839/44 15/841/46 +f 28/865/68 15/841/46 16/843/48 +f 29/866/69 16/843/48 17/845/50 +f 30/867/70 17/845/50 18/847/52 +f 19/853/56 30/868/70 18/850/52 +f 20/855/58 31/869/71 19/853/56 +f 21/857/60 32/870/72 20/855/58 +f 22/859/62 33/871/73 21/857/60 +f 23/860/63 34/872/74 22/859/62 +f 24/862/65 35/873/75 23/860/63 +f 37/874/76 36/875/77 25/861/64 +f 38/876/78 25/861/64 26/863/66 +f 39/877/79 26/863/66 27/864/67 +f 40/878/80 27/864/67 28/865/68 +f 41/879/81 28/865/68 29/866/69 +f 42/880/82 29/866/69 30/867/70 +f 31/869/71 42/881/82 30/868/70 +f 32/870/72 43/882/83 31/869/71 +f 33/871/73 44/883/84 32/870/72 +f 34/872/74 45/884/85 33/871/73 +f 35/873/75 46/885/86 34/872/74 +f 36/875/77 47/886/87 35/873/75 +f 37/874/76 60/887/88 48/888/89 +f 38/876/78 49/889/90 37/874/76 +f 39/877/79 50/890/91 38/876/78 +f 40/878/80 51/891/92 39/877/79 +f 41/879/81 52/892/93 40/878/80 +f 42/880/82 53/893/94 41/879/81 +f 55/894/95 42/881/82 43/882/83 +f 56/895/96 43/882/83 44/883/84 +f 57/896/97 44/883/84 45/884/85 +f 58/897/98 45/884/85 46/885/86 +f 59/898/99 46/885/86 47/886/87 +f 60/887/88 47/886/87 48/888/89 +f 49/889/90 72/899/100 60/887/88 +f 50/890/91 61/900/101 49/889/90 +f 51/891/92 62/901/102 50/890/91 +f 52/892/93 63/902/103 51/891/92 +f 53/893/94 64/903/104 52/892/93 +f 54/904/105 65/905/106 53/893/94 +f 67/906/107 54/907/105 55/894/95 +f 68/908/108 55/894/95 56/895/96 +f 69/909/109 56/895/96 57/896/97 +f 70/910/110 57/896/97 58/897/98 +f 71/911/111 58/897/98 59/898/99 +f 72/899/100 59/898/99 60/887/88 +f 61/900/101 84/912/112 72/899/100 +f 62/901/102 73/913/113 61/900/101 +f 63/902/103 74/914/114 62/901/102 +f 64/903/104 75/915/115 63/902/103 +f 65/905/106 76/916/116 64/903/104 +f 66/917/117 77/918/118 65/905/106 +f 79/919/119 66/920/117 67/906/107 +f 80/921/120 67/906/107 68/908/108 +f 81/922/121 68/908/108 69/909/109 +f 82/923/122 69/909/109 70/910/110 +f 83/924/123 70/910/110 71/911/111 +f 84/912/112 71/911/111 72/899/100 +f 73/913/113 96/925/124 84/912/112 +f 74/914/114 85/926/125 73/913/113 +f 75/915/115 86/927/126 74/914/114 +f 76/916/116 87/928/127 75/915/115 +f 77/918/118 88/929/128 76/916/116 +f 78/930/129 89/931/130 77/918/118 +f 91/932/131 78/933/129 79/919/119 +f 92/934/132 79/919/119 80/921/120 +f 93/935/133 80/921/120 81/922/121 +f 94/936/134 81/922/121 82/923/122 +f 95/937/135 82/923/122 83/924/123 +f 96/925/124 83/924/123 84/912/112 +f 85/926/125 108/938/136 96/925/124 +f 86/927/126 97/939/137 85/926/125 +f 87/928/127 98/940/138 86/927/126 +f 88/929/128 99/941/21 87/928/127 +f 89/931/130 100/942/139 88/929/128 +f 90/943/140 101/944/141 89/931/130 +f 103/945/142 90/946/140 91/932/131 +f 104/947/143 91/932/131 92/934/132 +f 105/948/19 92/934/132 93/935/133 +f 106/949/144 93/935/133 94/936/134 +f 107/950/145 94/936/134 95/937/135 +f 108/938/136 95/937/135 96/925/124 +f 97/939/137 120/951/146 108/938/136 +f 98/940/138 109/952/147 97/939/137 +f 99/941/21 110/953/148 98/940/138 +f 100/942/139 111/954/149 99/941/21 +f 101/944/141 112/955/150 100/942/139 +f 102/956/151 113/957/152 101/944/141 +f 115/958/153 102/959/151 103/945/142 +f 116/960/154 103/945/142 104/947/143 +f 117/961/155 104/947/143 105/948/19 +f 118/962/156 105/948/19 106/949/144 +f 119/963/157 106/949/144 107/950/145 +f 120/951/146 107/950/145 108/938/136 +f 109/952/147 132/964/158 120/951/146 +f 110/953/148 121/965/159 109/952/147 +f 111/954/149 122/966/160 110/953/148 +f 112/955/150 123/967/161 111/954/149 +f 113/957/152 124/968/162 112/955/150 +f 114/969/163 125/970/164 113/957/152 +f 127/971/165 114/972/163 115/958/153 +f 128/973/166 115/958/153 116/960/154 +f 129/974/167 116/960/154 117/961/155 +f 130/975/168 117/961/155 118/962/156 +f 131/976/169 118/962/156 119/963/157 +f 132/964/158 119/963/157 120/951/146 +f 121/965/159 144/977/170 132/964/158 +f 122/966/160 133/978/171 121/965/159 +f 123/967/161 134/979/172 122/966/160 +f 124/968/162 135/980/173 123/967/161 +f 125/970/164 136/981/174 124/968/162 +f 126/982/175 137/983/176 125/970/164 +f 139/984/177 126/985/175 127/971/165 +f 140/986/178 127/971/165 128/973/166 +f 141/987/179 128/973/166 129/974/167 +f 142/988/180 129/974/167 130/975/168 +f 143/989/181 130/975/168 131/976/169 +f 144/977/170 131/976/169 132/964/158 +f 133/978/171 156/990/182 144/977/170 +f 134/979/172 145/991/183 133/978/171 +f 135/980/173 146/992/184 134/979/172 +f 136/981/174 147/993/185 135/980/173 +f 137/983/176 148/994/186 136/981/174 +f 138/995/187 149/996/188 137/983/176 +f 151/997/189 138/998/187 139/984/177 +f 152/999/190 139/984/177 140/986/178 +f 153/1000/191 140/986/178 141/987/179 +f 154/1001/192 141/987/179 142/988/180 +f 155/1002/193 142/988/180 143/989/181 +f 156/990/182 143/989/181 144/977/170 +f 157/1003/6 160/1004/194 159/1005/195 +f 160/1004/194 161/1006/4 159/1005/195 +f 162/1007/196 163/1008/197 161/1006/4 +f 164/1009/198 165/1010/5 163/1008/197 +f 166/1011/199 167/1012/200 165/1013/5 +f 168/1014/201 169/1015/2 167/1012/200 +f 170/1016/202 171/1017/203 169/1015/2 +f 172/1018/204 157/1003/6 171/1017/203 +f 181/1019/33 174/1020/205 173/1021/4 +f 174/1020/205 183/1022/206 175/1023/207 +f 183/1022/206 176/1024/208 175/1023/207 +f 184/1025/209 177/1026/2 176/1024/208 +f 177/1027/2 186/1028/210 178/1029/211 +f 178/1029/211 187/1030/212 179/1031/213 +f 187/1030/212 180/1032/214 179/1031/213 +f 180/1032/214 181/1019/33 173/1021/4 +f 189/1033/19 182/1034/215 181/1019/33 +f 182/1034/215 191/1035/216 183/1036/206 +f 183/1036/206 192/1037/217 184/1038/209 +f 192/1037/217 185/1039/34 184/1038/209 +f 193/1040/21 186/1041/210 185/1042/34 +f 194/1043/218 187/1044/212 186/1041/210 +f 195/1045/219 188/1046/220 187/1044/212 +f 188/1046/220 189/1033/19 181/1019/33 +f 189/1033/19 198/1047/221 190/1048/222 +f 198/1047/221 191/1049/216 190/1048/222 +f 199/1050/223 192/1051/217 191/1049/216 +f 200/1052/224 193/1053/21 192/1051/217 +f 193/1054/21 202/1055/225 194/1056/218 +f 194/1056/218 203/1057/226 195/1058/219 +f 195/1058/219 204/1059/227 196/1060/228 +f 196/1060/228 197/1061/6 189/1033/19 +f 205/1062/22 198/1047/221 197/1061/6 +f 198/1047/221 207/1063/229 199/1064/223 +f 199/1064/223 208/1065/230 200/1066/224 +f 208/1065/230 201/1067/5 200/1066/224 +f 201/1068/5 210/1069/231 202/1070/225 +f 210/1069/231 203/1071/226 202/1070/225 +f 211/1072/232 204/1059/227 203/1071/226 +f 204/1059/227 205/1062/22 197/1061/6 +f 205/1062/22 214/1073/233 206/1074/234 +f 214/1073/233 207/1075/229 206/1074/234 +f 215/1076/235 208/1077/230 207/1075/229 +f 208/1077/230 217/1078/17 209/1079/20 +f 217/1080/17 210/1081/231 209/1082/20 +f 210/1081/231 219/1083/236 211/1084/232 +f 211/1084/232 220/1085/237 212/1086/238 +f 220/1085/237 205/1062/22 212/1086/238 +f 221/1087/2 214/1073/233 213/1088/18 +f 222/1089/239 215/1090/235 214/1073/233 +f 215/1090/235 224/1091/240 216/1092/241 +f 224/1091/240 217/1093/17 216/1092/241 +f 225/1094/4 218/1095/242 217/1096/17 +f 226/1097/243 219/1098/236 218/1095/242 +f 219/1098/236 228/1099/244 220/1085/237 +f 228/1099/244 213/1088/18 220/1085/237 +f 221/1087/2 230/1100/245 222/1089/239 +f 230/1100/245 223/1101/246 222/1089/239 +f 223/1101/246 232/1102/247 224/1103/240 +f 232/1102/247 225/1104/4 224/1103/240 +f 233/1105/33 226/1106/243 225/1107/4 +f 234/1108/248 227/1109/249 226/1106/243 +f 227/1109/249 236/1110/250 228/1099/244 +f 236/1110/250 221/1087/2 228/1099/244 +f 229/1111/34 238/1112/251 230/1100/245 +f 238/1112/251 231/1113/252 230/1100/245 +f 231/1113/252 240/1114/253 232/1115/247 +f 240/1114/253 233/1116/33 232/1115/247 +f 233/1117/33 242/1118/254 234/1119/248 +f 242/1118/254 235/1120/255 234/1119/248 +f 235/1120/255 244/1121/256 236/1110/250 +f 244/1121/256 229/1111/34 236/1110/250 +f 237/1122/21 246/1123/257 238/1112/251 +f 246/1123/257 239/1124/258 238/1112/251 +f 247/1125/259 240/1126/253 239/1124/258 +f 248/1127/260 241/1128/19 240/1126/253 +f 241/1129/19 250/1130/261 242/1131/254 +f 250/1130/261 243/1132/262 242/1131/254 +f 243/1132/262 252/1133/263 244/1121/256 +f 252/1133/263 237/1122/21 244/1121/256 +f 253/1134/20 246/1135/257 245/1136/5 +f 246/1135/257 255/1137/264 247/1138/259 +f 247/1138/259 256/1139/265 248/1140/260 +f 256/1139/265 249/1141/6 248/1140/260 +f 257/1142/22 250/1143/261 249/1144/6 +f 258/1145/266 251/1146/267 250/1143/261 +f 259/1147/268 252/1148/263 251/1146/267 +f 252/1148/263 253/1134/20 245/1136/5 +f 253/1134/20 262/1149/269 254/1150/270 +f 262/1149/269 255/1151/264 254/1150/270 +f 263/1152/271 256/1153/265 255/1151/264 +f 264/1154/272 257/1155/22 256/1153/265 +f 265/1156/18 258/1157/266 257/1158/22 +f 258/1157/266 267/1159/273 259/1160/268 +f 259/1160/268 268/1161/274 260/1162/275 +f 268/1161/274 253/1134/20 260/1162/275 +f 261/1163/17 174/1020/205 262/1149/269 +f 174/1020/205 263/1164/271 262/1149/269 +f 263/1164/271 176/1165/208 264/1166/272 +f 176/1165/208 265/1167/18 264/1166/272 +f 177/1168/2 266/1169/276 265/1170/18 +f 178/1171/211 267/1172/273 266/1169/276 +f 267/1172/273 180/1032/214 268/1161/274 +f 180/1032/214 261/1163/17 268/1161/274 +f 282/1173/277 283/1174/278 281/1175/279 +f 284/1176/280 285/1177/281 283/1174/278 +f 286/1178/282 287/1179/283 285/1180/281 +f 288/1181/284 289/1182/285 287/1179/283 +f 289/1182/285 292/1183/286 291/1184/287 +f 291/1184/287 294/1185/288 293/1186/289 +f 293/1186/289 296/1187/290 295/1188/291 +f 295/1188/291 282/1173/277 281/1175/279 +f 297/1189/279 300/1190/280 299/1191/278 +f 300/1190/280 301/1192/281 299/1191/278 +f 301/1193/281 304/1194/284 303/1195/283 +f 304/1194/284 305/1196/285 303/1195/283 +f 306/1197/292 307/1198/287 305/1196/285 +f 307/1198/287 310/1199/288 309/1200/289 +f 309/1200/289 312/1201/290 311/1202/291 +f 311/1202/291 298/1203/277 297/1189/279 +f 352/93/293 354/1204/294 338/79/295 +f 340/82/296 354/1204/294 353/1205/297 +f 342/646/298 356/1206/299 344/84/300 +f 350/90/301 358/1207/302 359/1208/303 +f 346/647/304 356/1206/299 357/1209/305 +f 350/90/301 360/1210/306 352/93/293 +f 340/82/296 355/1211/307 342/646/298 +f 346/648/304 358/1207/302 348/88/308 +f 362/97/295 384/1212/306 378/1213/294 +f 364/100/296 378/1213/294 377/1214/297 +f 366/102/298 380/1215/299 368/104/300 +f 374/109/301 382/1216/302 383/1217/303 +f 370/654/304 380/1215/299 381/1218/305 +f 374/109/301 384/1212/306 376/111/293 +f 364/100/296 379/1219/307 366/102/298 +f 372/107/308 381/1220/305 382/1216/302 +f 386/116/295 408/1221/306 402/1222/294 +f 386/116/295 401/1223/297 388/119/296 +f 390/121/298 404/1224/299 392/123/300 +f 398/662/301 406/1225/302 407/1226/303 +f 394/661/304 404/1224/299 405/1227/305 +f 400/130/293 407/1226/303 408/1221/306 +f 388/119/296 403/1228/307 390/121/298 +f 394/125/304 406/1225/302 396/128/308 +f 410/668/295 432/1229/306 426/1230/294 +f 412/136/296 426/1230/294 425/1231/297 +f 414/138/298 428/1232/299 416/141/300 +f 420/144/308 431/1233/303 422/147/301 +f 418/669/304 428/1232/299 429/1234/305 +f 424/149/293 431/1233/303 432/1229/306 +f 412/136/296 427/1235/307 414/138/298 +f 418/670/304 430/1236/302 420/144/308 +f 433/1237/309 436/1238/310 435/1239/311 +f 436/1238/310 437/1240/312 435/1239/311 +f 438/1241/313 439/1242/314 437/1243/312 +f 439/1242/314 442/1244/315 441/1245/316 +f 442/1244/315 443/1246/317 441/1245/316 +f 444/1247/318 445/1248/319 443/1246/317 +f 446/1249/320 447/1250/321 445/1248/319 +f 447/1250/321 434/1251/322 433/1237/309 +f 538/1252/323 539/1253/324 537/1254/325 +f 540/1255/326 541/1256/327 539/1253/324 +f 541/1256/327 544/1257/328 543/1258/329 +f 544/1257/328 545/1259/330 543/1258/329 +f 546/1260/331 547/1261/332 545/1259/330 +f 548/1262/333 549/1263/334 547/1261/332 +f 546/1260/331 556/1264/335 557/1265/336 +f 550/1266/337 551/1267/338 549/1268/334 +f 552/1269/339 537/1254/325 551/1267/338 +f 550/1266/337 560/1270/340 552/1269/339 +f 542/1271/341 553/1272/342 555/1273/343 +f 546/1260/331 558/1274/344 548/1262/333 +f 538/1252/323 560/1275/340 554/1276/345 +f 538/1252/323 553/1277/342 540/1255/326 +f 544/1257/328 555/1278/343 556/1279/335 +f 548/1262/333 559/1280/346 550/1281/337 +f 678/1282/6 595/1283/347 593/1284/348 +f 677/1285/349 597/1286/350 595/1283/347 +f 679/1287/351 599/1288/352 597/1286/350 +f 680/1289/4 601/1290/353 599/1288/352 +f 681/1291/354 603/1292/355 601/1290/353 +f 682/1293/356 605/1294/357 603/1292/355 +f 683/1295/5 607/1296/358 605/1297/357 +f 684/1298/359 609/1299/360 607/1296/358 +f 685/1300/361 611/1301/362 609/1299/360 +f 686/1302/2 613/1303/363 611/1301/362 +f 598/1304/364 728/1305/365 600/1306/2 +f 687/1307/366 615/1308/367 613/1303/363 +f 688/1309/368 593/1284/348 615/1308/367 +f 609/1299/360 624/1310/369 607/1296/358 +f 621/1311/370 632/1312/371 620/1313/372 +f 607/1296/358 623/1314/373 605/1297/357 +f 605/1294/357 622/1315/374 603/1292/355 +f 601/1290/353 622/1316/374 621/1317/370 +f 601/1290/353 620/1313/372 599/1288/352 +f 593/1284/348 628/1318/375 615/1308/367 +f 593/1284/348 618/1319/376 617/1320/377 +f 599/1288/352 619/1321/378 597/1286/350 +f 615/1308/367 627/1322/379 613/1303/363 +f 597/1286/350 618/1323/376 595/1283/347 +f 611/1301/362 627/1324/379 626/1325/380 +f 611/1301/362 625/1326/381 609/1299/360 +f 635/1327/382 660/389/383 659/722/384 +f 627/1322/379 640/1328/385 639/1329/386 +f 617/1320/377 630/1330/387 629/1331/388 +f 624/1310/369 637/1332/389 636/1333/390 +f 622/1316/374 633/1334/391 621/1317/370 +f 617/1335/377 640/1336/385 628/1318/375 +f 619/1337/378 630/1338/387 618/1323/376 +f 626/1339/380 637/1340/389 625/1326/381 +f 623/1341/373 634/1342/392 622/1315/374 +f 620/1343/372 631/1344/393 619/1321/378 +f 627/1324/379 638/1345/394 626/1325/380 +f 623/1314/373 636/1346/390 635/1327/382 +f 650/1347/395 675/1348/18 674/1349/2 +f 633/1350/391 656/380/396 632/1312/371 +f 640/1328/385 663/401/397 639/1329/386 +f 629/1331/388 654/372/398 653/371/399 +f 637/1332/389 660/723/383 636/1333/390 +f 634/1351/392 657/720/400 633/1334/391 +f 629/1352/388 664/727/401 640/1336/385 +f 631/1353/393 654/717/398 630/1338/387 +f 638/1354/394 661/724/402 637/1340/389 +f 635/1355/382 658/721/403 634/1342/392 +f 632/1356/371 655/377/404 631/1344/393 +f 638/1345/394 663/399/397 662/398/405 +f 648/1357/406 671/1358/5 647/1359/407 +f 644/1360/408 669/1361/17 668/1362/4 +f 652/1363/409 675/1348/18 651/1364/410 +f 642/1365/411 665/1366/6 641/1367/412 +f 649/1368/413 672/1369/21 648/1357/406 +f 645/1370/414 670/1371/20 669/1361/17 +f 641/1367/412 676/1372/22 652/1363/409 +f 642/1365/411 667/1373/33 666/1374/19 +f 650/1347/395 673/1375/34 649/1368/413 +f 646/1376/415 671/1377/5 670/1371/20 +f 643/1378/416 668/1362/4 667/1373/33 +f 692/1379/417 741/1380/418 693/1381/419 +f 614/1382/420 734/1383/421 735/1384/418 +f 608/1385/422 731/1386/423 732/1387/424 +f 600/1306/2 729/1388/425 602/1389/426 +f 616/1390/427 735/1384/418 736/1391/428 +f 594/1392/5 725/1393/429 596/1394/430 +f 610/1395/431 732/1387/424 733/1396/432 +f 602/1389/426 730/1397/433 604/1398/434 +f 616/1390/427 726/1399/435 594/1400/5 +f 596/1394/430 727/1401/436 598/1304/364 +f 612/1402/4 733/1396/432 734/1383/421 +f 604/1398/434 731/1386/423 606/1403/6 +f 677/1404/349 702/1405/423 701/1406/437 +f 679/1407/351 704/1408/421 680/1409/4 +f 680/1409/4 705/1410/438 681/1411/354 +f 682/1412/356 707/1413/435 683/1414/5 +f 683/1415/5 708/1416/439 684/1417/359 +f 685/1418/361 710/1419/365 686/1420/2 +f 686/1420/2 711/1421/440 687/1422/366 +f 688/1423/368 702/1405/423 678/1424/6 +f 594/1392/5 713/728/441 714/406/442 +f 600/1306/2 715/411/443 598/1304/364 +f 602/1389/426 716/409/444 600/1306/2 +f 606/1403/6 718/414/445 604/1398/434 +f 606/1403/6 720/417/446 719/418/447 +f 610/1395/431 722/422/417 721/419/448 +f 614/1382/420 722/422/417 612/1402/4 +f 594/1400/5 724/426/449 616/1390/427 +f 614/1382/420 711/1425/440 723/731/450 +f 712/1426/451 616/1390/427 724/426/449 +f 596/1394/430 701/1427/437 713/728/441 +f 703/1428/452 598/1304/364 715/411/443 +f 602/1389/426 705/1429/438 717/729/453 +f 706/1430/454 604/1398/434 718/414/445 +f 709/1431/455 610/1395/431 721/419/448 +f 608/1385/422 708/1432/439 720/417/446 +f 699/1433/456 748/1434/433 700/1435/457 +f 690/1436/447 737/1437/424 689/1438/458 +f 696/1439/459 745/1440/436 697/1441/460 +f 693/1381/419 742/1442/428 694/1443/461 +f 700/1435/457 738/1444/423 690/1436/447 +f 691/1445/462 737/1437/424 739/1446/432 +f 697/1441/460 746/1447/463 698/1448/444 +f 694/1443/461 743/1449/435 695/1450/442 +f 691/1445/462 740/1451/421 692/1379/417 +f 698/1448/444 747/1452/425 699/1433/456 +f 695/1453/442 744/1454/429 696/1439/459 +f 794/1455/331 795/1456/332 793/1457/330 +f 795/1456/332 798/1458/337 797/1459/334 +f 798/1458/337 799/1460/338 797/1459/334 +f 799/1460/338 802/1461/323 801/1462/325 +f 802/1461/323 803/1463/324 801/1462/325 +f 803/1463/324 806/1464/341 805/1465/327 +f 800/1466/339 813/1467/345 802/1461/323 +f 806/1468/341 807/1469/329 805/1470/327 +f 807/1469/329 794/1455/331 793/1457/330 +f 806/1468/341 816/1471/335 808/1472/328 +f 796/1473/333 811/1474/346 798/1458/337 +f 802/1461/323 814/1475/342 804/1476/326 +f 794/1455/331 816/1477/335 810/1478/336 +f 794/1455/331 809/1479/344 796/1473/333 +f 798/1458/337 812/1480/340 800/1466/339 +f 806/1464/341 814/1481/342 815/1482/343 +f 818/777/304 840/1483/299 834/1484/305 +f 818/777/304 833/1485/302 820/546/308 +f 822/548/301 836/1486/306 824/550/293 +f 828/556/296 839/1487/307 830/779/298 +f 826/778/295 836/1486/306 837/1488/294 +f 832/558/300 839/1487/307 840/1483/299 +f 820/546/308 835/1489/303 822/548/301 +f 828/556/296 837/1490/294 838/1491/297 +f 856/787/300 858/1492/305 842/563/304 +f 844/785/308 858/1492/305 857/1493/302 +f 848/568/293 859/1494/303 860/1495/306 +f 852/573/296 863/1496/307 854/575/298 +f 848/568/293 861/1497/294 850/570/295 +f 854/575/298 864/1498/299 856/787/300 +f 844/785/308 859/1494/303 846/566/301 +f 850/786/295 862/1499/297 852/573/296 +f 880/595/300 882/1500/305 866/793/304 +f 866/793/304 881/1501/302 868/582/308 +f 872/794/293 883/1502/303 884/1503/306 +f 876/795/296 887/1504/307 878/592/298 +f 872/794/293 885/1505/294 874/587/295 +f 878/592/298 888/1506/299 880/595/300 +f 870/584/301 881/1501/302 883/1502/303 +f 874/589/295 886/1507/297 876/795/296 +f 904/614/300 906/1508/305 890/801/304 +f 890/801/304 905/1509/302 892/600/308 +f 896/802/293 907/1510/303 908/1511/306 +f 900/610/296 911/1512/307 902/612/298 +f 898/605/295 908/1511/306 909/1513/294 +f 904/614/300 911/1512/307 912/1514/299 +f 892/600/308 907/1510/303 894/603/301 +f 898/607/295 910/1515/297 900/610/296 +f 921/1516/33 914/1517/205 913/1518/4 +f 914/1517/205 923/1519/206 915/1520/207 +f 923/1519/206 916/1521/208 915/1520/207 +f 924/1522/209 917/1523/2 916/1521/208 +f 917/1524/2 926/1525/210 918/1526/211 +f 918/1526/211 927/1527/212 919/1528/213 +f 927/1527/212 920/1529/214 919/1528/213 +f 920/1529/214 921/1516/33 913/1518/4 +f 929/1530/19 922/1531/215 921/1516/33 +f 922/1531/215 931/1532/216 923/1533/206 +f 923/1533/206 932/1534/217 924/1535/209 +f 924/1535/209 933/1536/21 925/1537/34 +f 933/1538/21 926/1539/210 925/1540/34 +f 934/1541/218 927/1542/212 926/1539/210 +f 935/1543/219 928/1544/220 927/1542/212 +f 928/1544/220 929/1530/19 921/1516/33 +f 937/1545/6 930/1546/222 929/1530/19 +f 938/1547/221 931/1548/216 930/1546/222 +f 939/1549/223 932/1550/217 931/1548/216 +f 940/1551/224 933/1552/21 932/1550/217 +f 933/1553/21 942/1554/225 934/1555/218 +f 934/1555/218 943/1556/226 935/1557/219 +f 935/1557/219 944/1558/227 936/1559/228 +f 944/1558/227 929/1530/19 936/1559/228 +f 937/1545/6 946/1560/234 938/1547/221 +f 938/1547/221 947/1561/229 939/1562/223 +f 939/1562/223 948/1563/230 940/1564/224 +f 948/1563/230 941/1565/5 940/1564/224 +f 941/1566/5 950/1567/231 942/1568/225 +f 950/1567/231 943/1569/226 942/1568/225 +f 951/1570/232 944/1558/227 943/1569/226 +f 952/1571/238 937/1545/6 944/1558/227 +f 945/1572/22 954/1573/233 946/1560/234 +f 954/1573/233 947/1574/229 946/1560/234 +f 955/1575/235 948/1576/230 947/1574/229 +f 956/1577/241 949/1578/20 948/1576/230 +f 957/1579/17 950/1580/231 949/1581/20 +f 950/1580/231 959/1582/236 951/1583/232 +f 951/1583/232 960/1584/237 952/1571/238 +f 960/1584/237 945/1572/22 952/1571/238 +f 961/1585/2 954/1573/233 953/1586/18 +f 962/1587/239 955/1588/235 954/1573/233 +f 955/1588/235 964/1589/240 956/1590/241 +f 956/1590/241 965/1591/4 957/1592/17 +f 965/1593/4 958/1594/242 957/1595/17 +f 966/1596/243 959/1597/236 958/1594/242 +f 959/1597/236 968/1598/244 960/1584/237 +f 968/1598/244 953/1586/18 960/1584/237 +f 961/1585/2 970/1599/245 962/1587/239 +f 970/1599/245 963/1600/246 962/1587/239 +f 963/1600/246 972/1601/247 964/1602/240 +f 972/1601/247 965/1603/4 964/1602/240 +f 965/1604/4 974/1605/248 966/1606/243 +f 974/1605/248 967/1607/249 966/1606/243 +f 967/1607/249 976/1608/250 968/1598/244 +f 976/1608/250 961/1585/2 968/1598/244 +f 969/1609/34 978/1610/251 970/1599/245 +f 978/1610/251 971/1611/252 970/1599/245 +f 971/1611/252 980/1612/253 972/1613/247 +f 972/1613/247 981/1614/19 973/1615/33 +f 973/1616/33 982/1617/254 974/1618/248 +f 982/1617/254 975/1619/255 974/1618/248 +f 975/1619/255 984/1620/256 976/1608/250 +f 984/1620/256 969/1609/34 976/1608/250 +f 977/1621/21 986/1622/257 978/1610/251 +f 986/1622/257 979/1623/258 978/1610/251 +f 987/1624/259 980/1625/253 979/1623/258 +f 988/1626/260 981/1627/19 980/1625/253 +f 989/1628/6 982/1629/254 981/1630/19 +f 982/1629/254 991/1631/267 983/1632/262 +f 983/1632/262 992/1633/263 984/1620/256 +f 992/1633/263 977/1621/21 984/1620/256 +f 993/1634/20 986/1635/257 985/1636/5 +f 986/1635/257 995/1637/264 987/1638/259 +f 987/1638/259 996/1639/265 988/1640/260 +f 996/1639/265 989/1641/6 988/1640/260 +f 989/1642/6 998/1643/266 990/1644/261 +f 998/1643/266 991/1645/267 990/1644/261 +f 999/1646/268 992/1647/263 991/1645/267 +f 992/1647/263 993/1634/20 985/1636/5 +f 993/1634/20 1002/1648/269 994/1649/270 +f 1002/1648/269 995/1650/264 994/1649/270 +f 1003/1651/271 996/1652/265 995/1650/264 +f 996/1652/265 1005/1653/18 997/1654/22 +f 1005/1655/18 998/1656/266 997/1657/22 +f 998/1656/266 1007/1658/273 999/1659/268 +f 999/1659/268 1008/1660/274 1000/1661/275 +f 1008/1660/274 993/1634/20 1000/1661/275 +f 1001/1662/17 914/1517/205 1002/1648/269 +f 914/1517/205 1003/1663/271 1002/1648/269 +f 1003/1663/271 916/1664/208 1004/1665/272 +f 916/1664/208 1005/1666/18 1004/1665/272 +f 917/1667/2 1006/1668/276 1005/1669/18 +f 918/1670/211 1007/1671/273 1006/1668/276 +f 1007/1671/273 920/1529/214 1008/1660/274 +f 920/1529/214 1001/1662/17 1008/1660/274 +f 1009/1672/6 1012/1673/464 1011/1674/203 +f 1012/1673/464 1013/1675/2 1011/1674/203 +f 1013/1675/2 1016/1676/465 1015/1677/200 +f 1016/1676/465 1017/1678/5 1015/1677/200 +f 1018/1679/466 1019/1680/197 1017/1681/5 +f 1020/1682/467 1021/1683/4 1019/1680/197 +f 1022/1684/468 1023/1685/195 1021/1683/4 +f 1023/1685/195 1010/1686/469 1009/1672/6 +f 13/836/41 24/862/65 12/837/42 +f 14/839/44 13/836/41 1/838/43 +f 15/841/46 14/839/44 2/840/45 +f 16/843/48 15/841/46 3/842/47 +f 17/845/50 16/843/48 4/844/49 +f 18/847/52 17/845/50 5/846/51 +f 7/849/54 19/853/56 18/850/52 +f 8/852/55 20/855/58 19/853/56 +f 9/854/57 21/857/60 20/855/58 +f 10/856/59 22/859/62 21/857/60 +f 11/858/61 23/860/63 22/859/62 +f 12/837/42 24/862/65 23/860/63 +f 25/861/64 36/875/77 24/862/65 +f 26/863/66 25/861/64 13/836/41 +f 27/864/67 26/863/66 14/839/44 +f 28/865/68 27/864/67 15/841/46 +f 29/866/69 28/865/68 16/843/48 +f 30/867/70 29/866/69 17/845/50 +f 19/853/56 31/869/71 30/868/70 +f 20/855/58 32/870/72 31/869/71 +f 21/857/60 33/871/73 32/870/72 +f 22/859/62 34/872/74 33/871/73 +f 23/860/63 35/873/75 34/872/74 +f 24/862/65 36/875/77 35/873/75 +f 37/874/76 48/888/89 36/875/77 +f 38/876/78 37/874/76 25/861/64 +f 39/877/79 38/876/78 26/863/66 +f 40/878/80 39/877/79 27/864/67 +f 41/879/81 40/878/80 28/865/68 +f 42/880/82 41/879/81 29/866/69 +f 31/869/71 43/882/83 42/881/82 +f 32/870/72 44/883/84 43/882/83 +f 33/871/73 45/884/85 44/883/84 +f 34/872/74 46/885/86 45/884/85 +f 35/873/75 47/886/87 46/885/86 +f 36/875/77 48/888/89 47/886/87 +f 37/874/76 49/889/90 60/887/88 +f 38/876/78 50/890/91 49/889/90 +f 39/877/79 51/891/92 50/890/91 +f 40/878/80 52/892/93 51/891/92 +f 41/879/81 53/893/94 52/892/93 +f 42/880/82 54/904/105 53/893/94 +f 55/894/95 54/907/105 42/881/82 +f 56/895/96 55/894/95 43/882/83 +f 57/896/97 56/895/96 44/883/84 +f 58/897/98 57/896/97 45/884/85 +f 59/898/99 58/897/98 46/885/86 +f 60/887/88 59/898/99 47/886/87 +f 49/889/90 61/900/101 72/899/100 +f 50/890/91 62/901/102 61/900/101 +f 51/891/92 63/902/103 62/901/102 +f 52/892/93 64/903/104 63/902/103 +f 53/893/94 65/905/106 64/903/104 +f 54/904/105 66/917/117 65/905/106 +f 67/906/107 66/920/117 54/907/105 +f 68/908/108 67/906/107 55/894/95 +f 69/909/109 68/908/108 56/895/96 +f 70/910/110 69/909/109 57/896/97 +f 71/911/111 70/910/110 58/897/98 +f 72/899/100 71/911/111 59/898/99 +f 61/900/101 73/913/113 84/912/112 +f 62/901/102 74/914/114 73/913/113 +f 63/902/103 75/915/115 74/914/114 +f 64/903/104 76/916/116 75/915/115 +f 65/905/106 77/918/118 76/916/116 +f 66/917/117 78/930/129 77/918/118 +f 79/919/119 78/933/129 66/920/117 +f 80/921/120 79/919/119 67/906/107 +f 81/922/121 80/921/120 68/908/108 +f 82/923/122 81/922/121 69/909/109 +f 83/924/123 82/923/122 70/910/110 +f 84/912/112 83/924/123 71/911/111 +f 73/913/113 85/926/125 96/925/124 +f 74/914/114 86/927/126 85/926/125 +f 75/915/115 87/928/127 86/927/126 +f 76/916/116 88/929/128 87/928/127 +f 77/918/118 89/931/130 88/929/128 +f 78/930/129 90/943/140 89/931/130 +f 91/932/131 90/946/140 78/933/129 +f 92/934/132 91/932/131 79/919/119 +f 93/935/133 92/934/132 80/921/120 +f 94/936/134 93/935/133 81/922/121 +f 95/937/135 94/936/134 82/923/122 +f 96/925/124 95/937/135 83/924/123 +f 85/926/125 97/939/137 108/938/136 +f 86/927/126 98/940/138 97/939/137 +f 87/928/127 99/941/21 98/940/138 +f 88/929/128 100/942/139 99/941/21 +f 89/931/130 101/944/141 100/942/139 +f 90/943/140 102/956/151 101/944/141 +f 103/945/142 102/959/151 90/946/140 +f 104/947/143 103/945/142 91/932/131 +f 105/948/19 104/947/143 92/934/132 +f 106/949/144 105/948/19 93/935/133 +f 107/950/145 106/949/144 94/936/134 +f 108/938/136 107/950/145 95/937/135 +f 97/939/137 109/952/147 120/951/146 +f 98/940/138 110/953/148 109/952/147 +f 99/941/21 111/954/149 110/953/148 +f 100/942/139 112/955/150 111/954/149 +f 101/944/141 113/957/152 112/955/150 +f 102/956/151 114/969/163 113/957/152 +f 115/958/153 114/972/163 102/959/151 +f 116/960/154 115/958/153 103/945/142 +f 117/961/155 116/960/154 104/947/143 +f 118/962/156 117/961/155 105/948/19 +f 119/963/157 118/962/156 106/949/144 +f 120/951/146 119/963/157 107/950/145 +f 109/952/147 121/965/159 132/964/158 +f 110/953/148 122/966/160 121/965/159 +f 111/954/149 123/967/161 122/966/160 +f 112/955/150 124/968/162 123/967/161 +f 113/957/152 125/970/164 124/968/162 +f 114/969/163 126/982/175 125/970/164 +f 127/971/165 126/985/175 114/972/163 +f 128/973/166 127/971/165 115/958/153 +f 129/974/167 128/973/166 116/960/154 +f 130/975/168 129/974/167 117/961/155 +f 131/976/169 130/975/168 118/962/156 +f 132/964/158 131/976/169 119/963/157 +f 121/965/159 133/978/171 144/977/170 +f 122/966/160 134/979/172 133/978/171 +f 123/967/161 135/980/173 134/979/172 +f 124/968/162 136/981/174 135/980/173 +f 125/970/164 137/983/176 136/981/174 +f 126/982/175 138/995/187 137/983/176 +f 139/984/177 138/998/187 126/985/175 +f 140/986/178 139/984/177 127/971/165 +f 141/987/179 140/986/178 128/973/166 +f 142/988/180 141/987/179 129/974/167 +f 143/989/181 142/988/180 130/975/168 +f 144/977/170 143/989/181 131/976/169 +f 133/978/171 145/991/183 156/990/182 +f 134/979/172 146/992/184 145/991/183 +f 135/980/173 147/993/185 146/992/184 +f 136/981/174 148/994/186 147/993/185 +f 137/983/176 149/996/188 148/994/186 +f 138/995/187 150/1687/470 149/996/188 +f 151/997/189 150/1688/470 138/998/187 +f 152/999/190 151/997/189 139/984/177 +f 153/1000/191 152/999/190 140/986/178 +f 154/1001/192 153/1000/191 141/987/179 +f 155/1002/193 154/1001/192 142/988/180 +f 156/990/182 155/1002/193 143/989/181 +f 157/1003/6 158/1689/471 160/1004/194 +f 160/1004/194 162/1007/196 161/1006/4 +f 162/1007/196 164/1009/198 163/1008/197 +f 164/1009/198 166/1690/199 165/1010/5 +f 166/1011/199 168/1014/201 167/1012/200 +f 168/1014/201 170/1016/202 169/1015/2 +f 170/1016/202 172/1018/204 171/1017/203 +f 172/1018/204 158/1689/471 157/1003/6 +f 181/1019/33 182/1034/215 174/1020/205 +f 174/1020/205 182/1034/215 183/1022/206 +f 183/1022/206 184/1025/209 176/1024/208 +f 184/1025/209 185/1691/34 177/1026/2 +f 177/1027/2 185/1692/34 186/1028/210 +f 178/1029/211 186/1028/210 187/1030/212 +f 187/1030/212 188/1046/220 180/1032/214 +f 180/1032/214 188/1046/220 181/1019/33 +f 189/1033/19 190/1048/222 182/1034/215 +f 182/1034/215 190/1048/222 191/1035/216 +f 183/1036/206 191/1035/216 192/1037/217 +f 192/1037/217 193/1693/21 185/1039/34 +f 193/1040/21 194/1043/218 186/1041/210 +f 194/1043/218 195/1045/219 187/1044/212 +f 195/1045/219 196/1060/228 188/1046/220 +f 188/1046/220 196/1060/228 189/1033/19 +f 189/1033/19 197/1061/6 198/1047/221 +f 198/1047/221 199/1050/223 191/1049/216 +f 199/1050/223 200/1052/224 192/1051/217 +f 200/1052/224 201/1694/5 193/1053/21 +f 193/1054/21 201/1695/5 202/1055/225 +f 194/1056/218 202/1055/225 203/1057/226 +f 195/1058/219 203/1057/226 204/1059/227 +f 196/1060/228 204/1059/227 197/1061/6 +f 205/1062/22 206/1074/234 198/1047/221 +f 198/1047/221 206/1074/234 207/1063/229 +f 199/1064/223 207/1063/229 208/1065/230 +f 208/1065/230 209/1696/20 201/1067/5 +f 201/1068/5 209/1697/20 210/1069/231 +f 210/1069/231 211/1072/232 203/1071/226 +f 211/1072/232 212/1086/238 204/1059/227 +f 204/1059/227 212/1086/238 205/1062/22 +f 205/1062/22 213/1088/18 214/1073/233 +f 214/1073/233 215/1076/235 207/1075/229 +f 215/1076/235 216/1698/241 208/1077/230 +f 208/1077/230 216/1698/241 217/1078/17 +f 217/1080/17 218/1699/242 210/1081/231 +f 210/1081/231 218/1699/242 219/1083/236 +f 211/1084/232 219/1083/236 220/1085/237 +f 220/1085/237 213/1088/18 205/1062/22 +f 221/1087/2 222/1089/239 214/1073/233 +f 222/1089/239 223/1700/246 215/1090/235 +f 215/1090/235 223/1700/246 224/1091/240 +f 224/1091/240 225/1701/4 217/1093/17 +f 225/1094/4 226/1097/243 218/1095/242 +f 226/1097/243 227/1702/249 219/1098/236 +f 219/1098/236 227/1702/249 228/1099/244 +f 228/1099/244 221/1087/2 213/1088/18 +f 221/1087/2 229/1111/34 230/1100/245 +f 230/1100/245 231/1703/252 223/1101/246 +f 223/1101/246 231/1703/252 232/1102/247 +f 232/1102/247 233/1704/33 225/1104/4 +f 233/1105/33 234/1108/248 226/1106/243 +f 234/1108/248 235/1705/255 227/1109/249 +f 227/1109/249 235/1705/255 236/1110/250 +f 236/1110/250 229/1111/34 221/1087/2 +f 229/1111/34 237/1122/21 238/1112/251 +f 238/1112/251 239/1706/258 231/1113/252 +f 231/1113/252 239/1706/258 240/1114/253 +f 240/1114/253 241/1707/19 233/1116/33 +f 233/1117/33 241/1708/19 242/1118/254 +f 242/1118/254 243/1709/262 235/1120/255 +f 235/1120/255 243/1709/262 244/1121/256 +f 244/1121/256 237/1122/21 229/1111/34 +f 237/1122/21 245/1710/5 246/1123/257 +f 246/1123/257 247/1125/259 239/1124/258 +f 247/1125/259 248/1127/260 240/1126/253 +f 248/1127/260 249/1711/6 241/1128/19 +f 241/1129/19 249/1712/6 250/1130/261 +f 250/1130/261 251/1713/267 243/1132/262 +f 243/1132/262 251/1713/267 252/1133/263 +f 252/1133/263 245/1710/5 237/1122/21 +f 253/1134/20 254/1150/270 246/1135/257 +f 246/1135/257 254/1150/270 255/1137/264 +f 247/1138/259 255/1137/264 256/1139/265 +f 256/1139/265 257/1714/22 249/1141/6 +f 257/1142/22 258/1145/266 250/1143/261 +f 258/1145/266 259/1147/268 251/1146/267 +f 259/1147/268 260/1162/275 252/1148/263 +f 252/1148/263 260/1162/275 253/1134/20 +f 253/1134/20 261/1163/17 262/1149/269 +f 262/1149/269 263/1152/271 255/1151/264 +f 263/1152/271 264/1154/272 256/1153/265 +f 264/1154/272 265/1715/18 257/1155/22 +f 265/1156/18 266/1716/276 258/1157/266 +f 258/1157/266 266/1716/276 267/1159/273 +f 259/1160/268 267/1159/273 268/1161/274 +f 268/1161/274 261/1163/17 253/1134/20 +f 261/1163/17 173/1021/4 174/1020/205 +f 174/1020/205 175/1717/207 263/1164/271 +f 263/1164/271 175/1717/207 176/1165/208 +f 176/1165/208 177/1718/2 265/1167/18 +f 177/1168/2 178/1171/211 266/1169/276 +f 178/1171/211 179/1719/213 267/1172/273 +f 267/1172/273 179/1719/213 180/1032/214 +f 180/1032/214 173/1021/4 261/1163/17 +f 352/93/293 360/1210/306 354/1204/294 +f 340/82/296 338/79/295 354/1204/294 +f 342/646/298 355/1211/307 356/1206/299 +f 350/90/301 348/88/308 358/1207/302 +f 346/647/304 344/84/300 356/1206/299 +f 350/90/301 359/1208/303 360/1210/306 +f 340/82/296 353/1205/297 355/1211/307 +f 346/648/304 357/1720/305 358/1207/302 +f 362/97/295 376/111/293 384/1212/306 +f 364/100/296 362/97/295 378/1213/294 +f 366/102/298 379/1219/307 380/1215/299 +f 374/109/301 372/107/308 382/1216/302 +f 370/654/304 368/104/300 380/1215/299 +f 374/109/301 383/1217/303 384/1212/306 +f 364/100/296 377/1214/297 379/1219/307 +f 372/107/308 370/655/304 381/1220/305 +f 386/116/295 400/130/293 408/1221/306 +f 386/116/295 402/1222/294 401/1223/297 +f 390/121/298 403/1228/307 404/1224/299 +f 398/662/301 396/128/308 406/1225/302 +f 394/661/304 392/123/300 404/1224/299 +f 400/130/293 398/662/301 407/1226/303 +f 388/119/296 401/1223/297 403/1228/307 +f 394/125/304 405/1721/305 406/1225/302 +f 410/668/295 424/149/293 432/1229/306 +f 412/136/296 410/668/295 426/1230/294 +f 414/138/298 427/1235/307 428/1232/299 +f 420/144/308 430/1236/302 431/1233/303 +f 418/669/304 416/141/300 428/1232/299 +f 424/149/293 422/147/301 431/1233/303 +f 412/136/296 425/1231/297 427/1235/307 +f 418/670/304 429/1722/305 430/1236/302 +f 433/1237/309 434/1251/322 436/1238/310 +f 436/1238/310 438/1723/313 437/1240/312 +f 438/1241/313 440/1724/472 439/1242/314 +f 439/1242/314 440/1724/472 442/1244/315 +f 442/1244/315 444/1247/318 443/1246/317 +f 444/1247/318 446/1249/320 445/1248/319 +f 446/1249/320 448/1725/473 447/1250/321 +f 447/1250/321 448/1725/473 434/1251/322 +f 538/1252/323 540/1255/326 539/1253/324 +f 540/1255/326 542/1271/341 541/1256/327 +f 541/1256/327 542/1271/341 544/1257/328 +f 544/1257/328 546/1260/331 545/1259/330 +f 546/1260/331 548/1262/333 547/1261/332 +f 548/1262/333 550/1281/337 549/1263/334 +f 546/1260/331 544/1257/328 556/1264/335 +f 550/1266/337 552/1269/339 551/1267/338 +f 552/1269/339 538/1252/323 537/1254/325 +f 550/1266/337 559/1726/346 560/1270/340 +f 542/1271/341 540/1255/326 553/1272/342 +f 546/1260/331 557/1727/336 558/1274/344 +f 538/1252/323 552/1269/339 560/1275/340 +f 538/1252/323 554/1728/345 553/1277/342 +f 544/1257/328 542/1271/341 555/1278/343 +f 548/1262/333 558/1729/344 559/1280/346 +f 678/1282/6 677/1285/349 595/1283/347 +f 677/1285/349 679/1287/351 597/1286/350 +f 679/1287/351 680/1289/4 599/1288/352 +f 680/1289/4 681/1291/354 601/1290/353 +f 681/1291/354 682/1293/356 603/1292/355 +f 682/1293/356 683/1730/5 605/1294/357 +f 683/1295/5 684/1298/359 607/1296/358 +f 684/1298/359 685/1300/361 609/1299/360 +f 685/1300/361 686/1302/2 611/1301/362 +f 686/1302/2 687/1307/366 613/1303/363 +f 598/1304/364 727/1401/436 728/1305/365 +f 687/1307/366 688/1309/368 615/1308/367 +f 688/1309/368 678/1282/6 593/1284/348 +f 609/1299/360 625/1731/381 624/1310/369 +f 621/1311/370 633/1350/391 632/1312/371 +f 607/1296/358 624/1732/369 623/1314/373 +f 605/1294/357 623/1341/373 622/1315/374 +f 601/1290/353 603/1292/355 622/1316/374 +f 601/1290/353 621/1311/370 620/1313/372 +f 593/1284/348 617/1335/377 628/1318/375 +f 593/1284/348 595/1283/347 618/1319/376 +f 599/1288/352 620/1343/372 619/1321/378 +f 615/1308/367 628/1733/375 627/1322/379 +f 597/1286/350 619/1337/378 618/1323/376 +f 611/1301/362 613/1303/363 627/1324/379 +f 611/1301/362 626/1339/380 625/1326/381 +f 635/1327/382 636/1346/390 660/389/383 +f 627/1322/379 628/1733/375 640/1328/385 +f 617/1320/377 618/1319/376 630/1330/387 +f 624/1310/369 625/1731/381 637/1332/389 +f 622/1316/374 634/1351/392 633/1334/391 +f 617/1335/377 629/1352/388 640/1336/385 +f 619/1337/378 631/1353/393 630/1338/387 +f 626/1339/380 638/1354/394 637/1340/389 +f 623/1341/373 635/1355/382 634/1342/392 +f 620/1343/372 632/1356/371 631/1344/393 +f 627/1324/379 639/1734/386 638/1345/394 +f 623/1314/373 624/1732/369 636/1346/390 +f 650/1347/395 651/1364/410 675/1348/18 +f 633/1350/391 657/381/400 656/380/396 +f 640/1328/385 664/402/401 663/401/397 +f 629/1331/388 630/1330/387 654/372/398 +f 637/1332/389 661/392/402 660/723/383 +f 634/1351/392 658/383/403 657/720/400 +f 629/1352/388 653/404/399 664/727/401 +f 631/1353/393 655/374/404 654/717/398 +f 638/1354/394 662/395/405 661/724/402 +f 635/1355/382 659/386/384 658/721/403 +f 632/1356/371 656/378/396 655/377/404 +f 638/1345/394 639/1734/386 663/399/397 +f 648/1357/406 672/1369/21 671/1358/5 +f 644/1360/408 645/1370/414 669/1361/17 +f 652/1363/409 676/1372/22 675/1348/18 +f 642/1365/411 666/1374/19 665/1366/6 +f 649/1368/413 673/1375/34 672/1369/21 +f 645/1370/414 646/1376/415 670/1371/20 +f 641/1367/412 665/1366/6 676/1372/22 +f 642/1365/411 643/1378/416 667/1373/33 +f 650/1347/395 674/1349/2 673/1375/34 +f 646/1376/415 647/1735/407 671/1377/5 +f 643/1378/416 644/1360/408 668/1362/4 +f 692/1379/417 740/1451/421 741/1380/418 +f 614/1382/420 612/1402/4 734/1383/421 +f 608/1385/422 606/1403/6 731/1386/423 +f 600/1306/2 728/1305/365 729/1388/425 +f 616/1390/427 614/1382/420 735/1384/418 +f 594/1392/5 726/1736/435 725/1393/429 +f 610/1395/431 608/1385/422 732/1387/424 +f 602/1389/426 729/1388/425 730/1397/433 +f 616/1390/427 736/1391/428 726/1399/435 +f 596/1394/430 725/1393/429 727/1401/436 +f 612/1402/4 610/1395/431 733/1396/432 +f 604/1398/434 730/1397/433 731/1386/423 +f 677/1404/349 678/1424/6 702/1405/423 +f 679/1407/351 703/1737/452 704/1408/421 +f 680/1409/4 704/1408/421 705/1410/438 +f 682/1412/356 706/1738/454 707/1413/435 +f 683/1415/5 707/1739/435 708/1416/439 +f 685/1418/361 709/1740/455 710/1419/365 +f 686/1420/2 710/1419/365 711/1421/440 +f 688/1423/368 712/1741/451 702/1405/423 +f 594/1392/5 596/1394/430 713/728/441 +f 600/1306/2 716/409/444 715/411/443 +f 602/1389/426 717/729/453 716/409/444 +f 606/1403/6 719/418/447 718/414/445 +f 606/1403/6 608/1385/422 720/417/446 +f 610/1395/431 612/1402/4 722/422/417 +f 614/1382/420 723/731/450 722/422/417 +f 594/1400/5 714/424/442 724/426/449 +f 614/1382/420 687/1742/366 711/1425/440 +f 712/1426/451 688/1743/368 616/1390/427 +f 596/1394/430 677/1744/349 701/1427/437 +f 703/1428/452 679/1745/351 598/1304/364 +f 602/1389/426 681/1746/354 705/1429/438 +f 706/1430/454 682/1747/356 604/1398/434 +f 709/1431/455 685/1748/361 610/1395/431 +f 608/1385/422 684/1749/359 708/1432/439 +f 699/1433/456 747/1452/425 748/1434/433 +f 690/1436/447 738/1444/423 737/1437/424 +f 696/1439/459 744/1454/429 745/1440/436 +f 693/1381/419 741/1380/418 742/1442/428 +f 700/1435/457 748/1434/433 738/1444/423 +f 691/1445/462 689/1438/458 737/1437/424 +f 697/1441/460 745/1440/436 746/1447/463 +f 694/1443/461 742/1442/428 743/1449/435 +f 691/1445/462 739/1446/432 740/1451/421 +f 698/1448/444 746/1447/463 747/1452/425 +f 695/1453/442 743/1750/435 744/1454/429 +f 794/1455/331 796/1473/333 795/1456/332 +f 795/1456/332 796/1473/333 798/1458/337 +f 798/1458/337 800/1466/339 799/1460/338 +f 799/1460/338 800/1466/339 802/1461/323 +f 802/1461/323 804/1476/326 803/1463/324 +f 803/1463/324 804/1476/326 806/1464/341 +f 800/1466/339 812/1751/340 813/1467/345 +f 806/1468/341 808/1472/328 807/1469/329 +f 807/1469/329 808/1472/328 794/1455/331 +f 806/1468/341 815/1752/343 816/1471/335 +f 796/1473/333 809/1753/344 811/1474/346 +f 802/1461/323 813/1754/345 814/1475/342 +f 794/1455/331 808/1472/328 816/1477/335 +f 794/1455/331 810/1755/336 809/1479/344 +f 798/1458/337 811/1756/346 812/1480/340 +f 806/1464/341 804/1476/326 814/1481/342 +f 818/777/304 832/558/300 840/1483/299 +f 818/777/304 834/1484/305 833/1485/302 +f 822/548/301 835/1489/303 836/1486/306 +f 828/556/296 838/1491/297 839/1487/307 +f 826/778/295 824/550/293 836/1486/306 +f 832/558/300 830/779/298 839/1487/307 +f 820/546/308 833/1485/302 835/1489/303 +f 828/556/296 826/553/295 837/1490/294 +f 856/787/300 864/1498/299 858/1492/305 +f 844/785/308 842/563/304 858/1492/305 +f 848/568/293 846/566/301 859/1494/303 +f 852/573/296 862/1499/297 863/1496/307 +f 848/568/293 860/1495/306 861/1497/294 +f 854/575/298 863/1496/307 864/1498/299 +f 844/785/308 857/1493/302 859/1494/303 +f 850/786/295 861/1757/294 862/1499/297 +f 880/595/300 888/1506/299 882/1500/305 +f 866/793/304 882/1500/305 881/1501/302 +f 872/794/293 870/584/301 883/1502/303 +f 876/795/296 886/1507/297 887/1504/307 +f 872/794/293 884/1503/306 885/1505/294 +f 878/592/298 887/1504/307 888/1506/299 +f 870/584/301 868/582/308 881/1501/302 +f 874/589/295 885/1758/294 886/1507/297 +f 904/614/300 912/1514/299 906/1508/305 +f 890/801/304 906/1508/305 905/1509/302 +f 896/802/293 894/603/301 907/1510/303 +f 900/610/296 910/1515/297 911/1512/307 +f 898/605/295 896/802/293 908/1511/306 +f 904/614/300 902/612/298 911/1512/307 +f 892/600/308 905/1509/302 907/1510/303 +f 898/607/295 909/1759/294 910/1515/297 +f 921/1516/33 922/1531/215 914/1517/205 +f 914/1517/205 922/1531/215 923/1519/206 +f 923/1519/206 924/1522/209 916/1521/208 +f 924/1522/209 925/1760/34 917/1523/2 +f 917/1524/2 925/1761/34 926/1525/210 +f 918/1526/211 926/1525/210 927/1527/212 +f 927/1527/212 928/1544/220 920/1529/214 +f 920/1529/214 928/1544/220 921/1516/33 +f 929/1530/19 930/1546/222 922/1531/215 +f 922/1531/215 930/1546/222 931/1532/216 +f 923/1533/206 931/1532/216 932/1534/217 +f 924/1535/209 932/1534/217 933/1536/21 +f 933/1538/21 934/1541/218 926/1539/210 +f 934/1541/218 935/1543/219 927/1542/212 +f 935/1543/219 936/1559/228 928/1544/220 +f 928/1544/220 936/1559/228 929/1530/19 +f 937/1545/6 938/1547/221 930/1546/222 +f 938/1547/221 939/1549/223 931/1548/216 +f 939/1549/223 940/1551/224 932/1550/217 +f 940/1551/224 941/1762/5 933/1552/21 +f 933/1553/21 941/1763/5 942/1554/225 +f 934/1555/218 942/1554/225 943/1556/226 +f 935/1557/219 943/1556/226 944/1558/227 +f 944/1558/227 937/1545/6 929/1530/19 +f 937/1545/6 945/1572/22 946/1560/234 +f 938/1547/221 946/1560/234 947/1561/229 +f 939/1562/223 947/1561/229 948/1563/230 +f 948/1563/230 949/1764/20 941/1565/5 +f 941/1566/5 949/1765/20 950/1567/231 +f 950/1567/231 951/1570/232 943/1569/226 +f 951/1570/232 952/1571/238 944/1558/227 +f 952/1571/238 945/1572/22 937/1545/6 +f 945/1572/22 953/1586/18 954/1573/233 +f 954/1573/233 955/1575/235 947/1574/229 +f 955/1575/235 956/1577/241 948/1576/230 +f 956/1577/241 957/1766/17 949/1578/20 +f 957/1579/17 958/1767/242 950/1580/231 +f 950/1580/231 958/1767/242 959/1582/236 +f 951/1583/232 959/1582/236 960/1584/237 +f 960/1584/237 953/1586/18 945/1572/22 +f 961/1585/2 962/1587/239 954/1573/233 +f 962/1587/239 963/1768/246 955/1588/235 +f 955/1588/235 963/1768/246 964/1589/240 +f 956/1590/241 964/1589/240 965/1591/4 +f 965/1593/4 966/1596/243 958/1594/242 +f 966/1596/243 967/1769/249 959/1597/236 +f 959/1597/236 967/1769/249 968/1598/244 +f 968/1598/244 961/1585/2 953/1586/18 +f 961/1585/2 969/1609/34 970/1599/245 +f 970/1599/245 971/1770/252 963/1600/246 +f 963/1600/246 971/1770/252 972/1601/247 +f 972/1601/247 973/1771/33 965/1603/4 +f 965/1604/4 973/1772/33 974/1605/248 +f 974/1605/248 975/1773/255 967/1607/249 +f 967/1607/249 975/1773/255 976/1608/250 +f 976/1608/250 969/1609/34 961/1585/2 +f 969/1609/34 977/1621/21 978/1610/251 +f 978/1610/251 979/1774/258 971/1611/252 +f 971/1611/252 979/1774/258 980/1612/253 +f 972/1613/247 980/1612/253 981/1614/19 +f 973/1616/33 981/1775/19 982/1617/254 +f 982/1617/254 983/1776/262 975/1619/255 +f 975/1619/255 983/1776/262 984/1620/256 +f 984/1620/256 977/1621/21 969/1609/34 +f 977/1621/21 985/1777/5 986/1622/257 +f 986/1622/257 987/1624/259 979/1623/258 +f 987/1624/259 988/1626/260 980/1625/253 +f 988/1626/260 989/1778/6 981/1627/19 +f 989/1628/6 990/1779/261 982/1629/254 +f 982/1629/254 990/1779/261 991/1631/267 +f 983/1632/262 991/1631/267 992/1633/263 +f 992/1633/263 985/1777/5 977/1621/21 +f 993/1634/20 994/1649/270 986/1635/257 +f 986/1635/257 994/1649/270 995/1637/264 +f 987/1638/259 995/1637/264 996/1639/265 +f 996/1639/265 997/1780/22 989/1641/6 +f 989/1642/6 997/1781/22 998/1643/266 +f 998/1643/266 999/1646/268 991/1645/267 +f 999/1646/268 1000/1661/275 992/1647/263 +f 992/1647/263 1000/1661/275 993/1634/20 +f 993/1634/20 1001/1662/17 1002/1648/269 +f 1002/1648/269 1003/1651/271 995/1650/264 +f 1003/1651/271 1004/1782/272 996/1652/265 +f 996/1652/265 1004/1782/272 1005/1653/18 +f 1005/1655/18 1006/1783/276 998/1656/266 +f 998/1656/266 1006/1783/276 1007/1658/273 +f 999/1659/268 1007/1658/273 1008/1660/274 +f 1008/1660/274 1001/1662/17 993/1634/20 +f 1001/1662/17 913/1518/4 914/1517/205 +f 914/1517/205 915/1784/207 1003/1663/271 +f 1003/1663/271 915/1784/207 916/1664/208 +f 916/1664/208 917/1785/2 1005/1666/18 +f 917/1667/2 918/1670/211 1006/1668/276 +f 918/1670/211 919/1786/213 1007/1671/273 +f 1007/1671/273 919/1786/213 920/1529/214 +f 920/1529/214 913/1518/4 1001/1662/17 +f 1009/1672/6 1010/1686/469 1012/1673/464 +f 1012/1673/464 1014/1787/474 1013/1675/2 +f 1013/1675/2 1014/1787/474 1016/1676/465 +f 1016/1676/465 1018/1788/466 1017/1678/5 +f 1018/1679/466 1020/1682/467 1019/1680/197 +f 1020/1682/467 1022/1684/468 1021/1683/4 +f 1022/1684/468 1024/1789/475 1023/1685/195 +f 1023/1685/195 1024/1789/475 1010/1686/469 +f 282/1173/277 284/1176/280 283/1174/278 +f 284/1176/280 286/1790/282 285/1177/281 +f 286/1178/282 288/1181/284 287/1179/283 +f 288/1181/284 290/1791/292 289/1182/285 +f 289/1182/285 290/1791/292 292/1183/286 +f 291/1184/287 292/1183/286 294/1185/288 +f 293/1186/289 294/1185/288 296/1187/290 +f 295/1188/291 296/1187/290 282/1173/277 +f 297/1189/279 298/1203/277 300/1190/280 +f 300/1190/280 302/1792/282 301/1192/281 +f 301/1193/281 302/1793/282 304/1194/284 +f 304/1194/284 306/1197/292 305/1196/285 +f 306/1197/292 308/1794/286 307/1198/287 +f 307/1198/287 308/1794/286 310/1199/288 +f 309/1200/289 310/1199/288 312/1201/290 +f 311/1202/291 312/1201/290 298/1203/277 +o Rotor +v -0.250000 -0.105662 -2.125000 +v -0.250000 -0.105662 -1.375000 +v 0.250000 -0.105663 -2.125000 +v 0.250000 -0.105663 -1.375000 +v -0.000000 -0.538675 -2.125000 +v -0.000000 -0.538675 -1.375000 +v -0.375000 0.144338 -2.125000 +v -0.375000 0.144338 -1.375000 +v 0.375000 0.144337 -1.375000 +v 0.375000 0.144337 -2.125000 +v 0.529006 -0.122410 -2.125000 +v 0.529006 -0.122410 -1.375000 +v 0.154006 -0.771928 -1.375000 +v 0.154006 -0.771928 -2.125000 +v -0.154007 -0.771928 -2.125000 +v -0.154007 -0.771928 -1.375000 +v -0.529006 -0.122409 -1.375000 +v -0.529006 -0.122409 -2.125000 +v -0.187500 0.644338 -2.125000 +v -0.187500 0.644338 -1.375000 +v 0.187500 0.644337 -1.375000 +v 0.187500 0.644337 -2.125000 +v 0.868269 -0.534790 -2.125000 +v 0.868269 -0.534790 -1.375000 +v 0.680769 -0.859549 -1.375000 +v 0.680769 -0.859549 -2.125000 +v -0.680769 -0.859548 -2.125000 +v -0.680769 -0.859548 -1.375000 +v -0.868269 -0.534789 -1.375000 +v -0.868269 -0.534789 -2.125000 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.182648 0.066176 +vt 0.237443 0.036765 +vt 0.200913 0.125000 +vt 0.200913 0.036765 +vt 0.353940 0.111230 +vt 0.321932 0.111230 +vt 0.337936 0.066594 +vt 0.264840 0.125000 +vt 0.237443 0.125000 +vt 0.353901 0.111151 +vt 0.322070 0.111151 +vt 0.337986 0.066761 +vt 0.182648 0.125000 +vt 0.182648 0.036765 +vt 0.173516 0.036765 +vt 0.136986 0.036765 +vt 0.301370 0.125000 +vt 0.319635 0.036765 +vt 0.319635 0.125000 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.200913 0.036765 +vt 0.182648 0.125000 +vt 0.182648 0.036765 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.301370 0.125000 +vt 0.319635 0.036765 +vt 0.319635 0.125000 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.200913 0.036765 +vt 0.182648 0.125000 +vt 0.182648 0.036765 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.301370 0.125000 +vt 0.319635 0.036765 +vt 0.319635 0.125000 +vt 0.182648 0.066176 +vt 0.136986 0.036765 +vt 0.173516 0.036765 +vt 0.301370 0.036765 +vt 0.141553 0.125000 +vt 0.127854 0.066176 +vt 0.237443 0.036765 +vt 0.264840 0.125000 +vt 0.237443 0.125000 +vt 0.200913 0.125000 +vt 0.141553 0.125000 +vt 0.127854 0.066176 +vt 0.301370 0.036765 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.237443 0.036765 +vt 0.264840 0.125000 +vt 0.237443 0.125000 +vt 0.200913 0.125000 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.301370 0.036765 +vt 0.168950 0.125000 +vt 0.127854 0.066176 +vt 0.141553 0.125000 +vt 0.264840 0.036765 +vt 0.168950 0.125000 +vt 0.264840 0.036765 +vt 0.168950 0.125000 +vt 0.141553 0.125000 +vt 0.264840 0.036765 +vt 0.141553 0.125000 +vt 0.141553 0.125000 +vn -0.0000 0.0000 1.0000 +vn -0.9363 0.3511 0.0000 +vn 0.0000 1.0000 0.0000 +vn -0.0000 0.0000 -1.0000 +vn -0.8944 -0.4472 0.0000 +vn 0.8944 -0.4472 -0.0000 +vn 0.0599 0.9982 0.0000 +vn -0.8345 -0.5510 0.0000 +vn 0.8345 -0.5510 -0.0000 +vn -0.0599 0.9982 0.0000 +vn 0.9363 0.3511 0.0000 +vn 0.8660 -0.5000 0.0000 +vn 0.7722 0.6353 0.0000 +vn -0.1641 -0.9864 0.0000 +vn -0.8660 -0.5000 0.0000 +vn 0.1641 -0.9864 0.0000 +vn -0.7722 0.6353 0.0000 +usemtl None +s off +f 1045/1795/476 1032/1796/476 1033/1797/476 +f 1044/1798/477 1031/1799/477 1032/1800/477 +f 1028/1801/476 1026/1802/476 1030/1803/476 +f 1044/1798/478 1046/1804/478 1043/1805/478 +f 1025/1806/479 1027/1807/479 1029/1808/479 +f 1032/1800/480 1025/1809/480 1026/1810/480 +f 1028/1811/476 1032/1796/476 1026/1812/476 +f 1034/1813/481 1028/1814/481 1027/1815/481 +f 1031/1816/479 1027/1817/479 1025/1818/479 +f 1036/1819/482 1027/1820/482 1028/1821/482 +f 1037/1822/476 1028/1823/476 1030/1824/476 +f 1038/1825/483 1030/1826/483 1029/1827/483 +f 1035/1828/479 1029/1829/479 1027/1830/479 +f 1040/1831/484 1029/1832/484 1030/1833/484 +f 1041/1834/476 1030/1835/476 1026/1836/476 +f 1042/1837/485 1026/1838/485 1025/1839/485 +f 1039/1840/479 1025/1841/479 1029/1842/479 +f 1046/1804/486 1033/1843/486 1034/1813/486 +f 1031/1816/479 1046/1844/479 1034/1845/479 +f 1048/1846/487 1050/1847/487 1047/1848/487 +f 1048/1846/488 1035/1849/488 1036/1819/488 +f 1037/1822/476 1048/1850/476 1036/1851/476 +f 1050/1847/489 1037/1852/489 1038/1825/489 +f 1047/1853/479 1038/1854/479 1035/1828/479 +f 1052/1855/490 1054/1856/490 1051/1857/490 +f 1052/1855/491 1039/1858/491 1040/1831/491 +f 1053/1859/476 1040/1860/476 1041/1834/476 +f 1054/1856/492 1041/1861/492 1042/1837/492 +f 1051/1862/479 1042/1863/479 1039/1840/479 +f 1045/1795/476 1044/1864/476 1032/1796/476 +f 1044/1798/477 1043/1805/477 1031/1799/477 +f 1044/1798/478 1045/1865/478 1046/1804/478 +f 1032/1800/480 1031/1799/480 1025/1809/480 +f 1028/1811/476 1033/1797/476 1032/1796/476 +f 1034/1813/481 1033/1843/481 1028/1814/481 +f 1031/1816/479 1034/1845/479 1027/1817/479 +f 1036/1819/482 1035/1849/482 1027/1820/482 +f 1037/1822/476 1036/1851/476 1028/1823/476 +f 1038/1825/483 1037/1852/483 1030/1826/483 +f 1035/1828/479 1038/1854/479 1029/1829/479 +f 1040/1831/484 1039/1858/484 1029/1832/484 +f 1041/1834/476 1040/1860/476 1030/1835/476 +f 1042/1837/485 1041/1861/485 1026/1838/485 +f 1039/1840/479 1042/1863/479 1025/1841/479 +f 1046/1804/486 1045/1865/486 1033/1843/486 +f 1031/1816/479 1043/1866/479 1046/1844/479 +f 1048/1846/487 1049/1867/487 1050/1847/487 +f 1048/1846/488 1047/1848/488 1035/1849/488 +f 1037/1822/476 1049/1868/476 1048/1850/476 +f 1050/1847/489 1049/1867/489 1037/1852/489 +f 1047/1853/479 1050/1869/479 1038/1854/479 +f 1052/1855/490 1053/1870/490 1054/1856/490 +f 1052/1855/491 1051/1857/491 1039/1858/491 +f 1053/1859/476 1052/1871/476 1040/1860/476 +f 1054/1856/492 1053/1870/492 1041/1861/492 +f 1051/1862/479 1054/1872/479 1042/1863/479 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 6458aa7fc..647cf0296 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -52,11 +52,16 @@ "block.turbinegasRunning": {"category": "block", "sounds": [{"name": "block/turbinegasRunning", "stream": false}]}, "block.turbinegasShutdown": {"category": "block", "sounds": [{"name": "block/turbinegasShutdown", "stream": true}]}, "block.damage": {"category": "block", "sounds": ["block/dam1", "block/dam2", "block/dam3", "block/dam4"]}, + "block.electricHum": {"category": "block", "sounds": [{"name": "block/electricHum", "stream": false}]}, + "block.boiler": {"category": "block", "sounds": [{"name": "block/boiler", "stream": false}]}, "door.TransitionSealOpen": {"category": "block", "sounds": [{"name": "block/door/transition_seal_open", "stream": true}]}, "door.wghStart": {"category": "block", "sounds": [{"name": "block/door/wgh_start", "stream": true}]}, "door.wghStop": {"category": "block", "sounds": [{"name": "block/door/wgh_stop", "stream": true}]}, "door.alarm6": {"category": "block", "sounds": [{"name": "block/door/alarm6", "stream": true}]}, + "door.sliding_door_shut": {"category": "block", "sounds": [{"name": "block/door/sliding_door_shut", "stream": false}]}, + "door.sliding_door_opened": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opened", "stream": false}]}, + "door.sliding_door_opening": {"category": "block", "sounds": [{"name": "block/door/sliding_door_opening", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, @@ -78,6 +83,7 @@ "item.vice": {"category": "player", "sounds": [{"name": "tool/vice", "stream": false}]}, "item.upgradePlug": {"category": "player", "sounds": [{"name": "tool/upgradePlug", "stream": false}]}, "item.battery": {"category": "player", "sounds": [{"name": "tool/battery", "stream": false}]}, + "item.boltgun": {"category": "player", "sounds": [{"name": "tool/boltgun", "stream": false}]}, "music.recordLambdaCore": {"category": "record", "sounds": [{"name": "music/recordLambdaCore", "stream": true}]}, "music.recordSectorSweep": {"category": "record", "sounds": [{"name": "music/recordSectorSweep", "stream": true}]}, @@ -172,6 +178,8 @@ "weapon.shotgunPump": {"category": "player", "sounds": [{"name": "weapon/shotgunShootPump", "stream": false}]}, "weapon.explosionMedium": {"category": "player", "sounds": [{"name": "weapon/explosion_medium", "stream": false}]}, "weapon.hicalShot": {"category": "player", "sounds": [{"name": "weapon/hicalShot", "stream": false}]}, + "weapon.coilgunReload": {"category": "player", "sounds": [{"name": "weapon/coilgunReload", "stream": false}]}, + "weapon.coilgunShoot": {"category": "player", "sounds": [{"name": "weapon/coilgunShoot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/block/boiler.ogg b/src/main/resources/assets/hbm/sounds/block/boiler.ogg new file mode 100644 index 000000000..c35d584f3 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/boiler.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opened.ogg b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opened.ogg new file mode 100644 index 000000000..4e9f5cd4e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opened.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opening.ogg b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opening.ogg new file mode 100644 index 000000000..ded65d1a1 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_opening.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/door/sliding_door_shut.ogg b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_shut.ogg new file mode 100644 index 000000000..d3dd53ceb Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/door/sliding_door_shut.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/electricHum.ogg b/src/main/resources/assets/hbm/sounds/block/electricHum.ogg new file mode 100644 index 000000000..2d6a77653 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/electricHum.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornFarDual.ogg b/src/main/resources/assets/hbm/sounds/block/hornFarDual.ogg new file mode 100644 index 000000000..f92fc5014 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornFarDual.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornFarSingle.ogg b/src/main/resources/assets/hbm/sounds/block/hornFarSingle.ogg new file mode 100644 index 000000000..d77e3f57e Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornFarSingle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornNearDual.ogg b/src/main/resources/assets/hbm/sounds/block/hornNearDual.ogg new file mode 100644 index 000000000..26c030954 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornNearDual.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/block/hornNearSingle.ogg b/src/main/resources/assets/hbm/sounds/block/hornNearSingle.ogg new file mode 100644 index 000000000..5a66bc414 Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/block/hornNearSingle.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/tool/boltgun.ogg b/src/main/resources/assets/hbm/sounds/tool/boltgun.ogg new file mode 100644 index 000000000..98356b58b Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/tool/boltgun.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/coilgunReload.ogg b/src/main/resources/assets/hbm/sounds/weapon/coilgunReload.ogg new file mode 100644 index 000000000..d17beefde Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/coilgunReload.ogg differ diff --git a/src/main/resources/assets/hbm/sounds/weapon/coilgunShoot.ogg b/src/main/resources/assets/hbm/sounds/weapon/coilgunShoot.ogg new file mode 100644 index 000000000..8d2503e2d Binary files /dev/null and b/src/main/resources/assets/hbm/sounds/weapon/coilgunShoot.ogg differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_arm.png b/src/main/resources/assets/hbm/textures/armor/envsuit_arm.png new file mode 100644 index 000000000..9c7d6ec9a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_arm.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_chest.png b/src/main/resources/assets/hbm/textures/armor/envsuit_chest.png new file mode 100644 index 000000000..9f4c8b0f1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_chest.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_helmet.png b/src/main/resources/assets/hbm/textures/armor/envsuit_helmet.png new file mode 100644 index 000000000..5849c62c5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_helmet.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_leg.png b/src/main/resources/assets/hbm/textures/armor/envsuit_leg.png new file mode 100644 index 000000000..7dbe96988 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_leg.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/envsuit_tail.png b/src/main/resources/assets/hbm/textures/armor/envsuit_tail.png new file mode 100644 index 000000000..81d1aa345 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/envsuit_tail.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/grenade_nan.png b/src/main/resources/assets/hbm/textures/armor/grenade_nan.png deleted file mode 100644 index b07dad82c..000000000 Binary files a/src/main/resources/assets/hbm/textures/armor/grenade_nan.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png b/src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png new file mode 100644 index 000000000..4b93264c6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_cdalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png b/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png new file mode 100644 index 000000000..97f12ce5d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_slag_broken.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/block_tcalloy.png new file mode 100644 index 000000000..22fc05fa5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png new file mode 100644 index 000000000..ab1816ba5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png new file mode 100644 index 000000000..48dc1e6b8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_bl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png new file mode 100644 index 000000000..51129d041 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_br.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png new file mode 100644 index 000000000..6a7379597 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tl.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png new file mode 100644 index 000000000..846ec559e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_curve_tr.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png new file mode 100644 index 000000000..2065be57b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_end.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction.png new file mode 100644 index 000000000..8019ad543 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_junction.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png new file mode 100644 index 000000000..f6a5ed43e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/boxduct_exhaust_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_out.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_out.png new file mode 100644 index 000000000..2cb5d7131 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_out.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_side.png new file mode 100644 index 000000000..ae4dbc278 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_bus_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_bottom.png new file mode 100644 index 000000000..32987415c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_side.png new file mode 100644 index 000000000..554d60816 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_top.png new file mode 100644 index 000000000..e1c904d6a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_side.png new file mode 100644 index 000000000..4fd7aa4d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_top.png new file mode 100644 index 000000000..42a14038a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_copper_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_bottom.png new file mode 100644 index 000000000..bac7489b5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_side.png new file mode 100644 index 000000000..44987bdc6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_top.png new file mode 100644 index 000000000..52ffe26c5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_side.png new file mode 100644 index 000000000..07812057c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_top.png new file mode 100644 index 000000000..698c605be Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_gold_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_bottom.png new file mode 100644 index 000000000..63aa94178 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_side.png new file mode 100644 index 000000000..a91a791a5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_top.png new file mode 100644 index 000000000..59d978cfc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_side.png new file mode 100644 index 000000000..121a437c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_top.png new file mode 100644 index 000000000..1a02b2e46 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_niobium_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_bottom.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_bottom.png new file mode 100644 index 000000000..c8b942875 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_side.png new file mode 100644 index 000000000..659311429 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_top.png new file mode 100644 index 000000000..cc9a64624 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_inner_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_side.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_side.png new file mode 100644 index 000000000..ec7eb74da Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_top.png b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_top.png new file mode 100644 index 000000000..50d472365 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/capacitor_tantalium_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_alloy.png new file mode 100644 index 000000000..af14c2675 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_base.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_base.png new file mode 100644 index 000000000..ce60d26f2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_desh.png new file mode 100644 index 000000000..73f09cf61 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_steel.png new file mode 100644 index 000000000..05180ac75 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_block_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_block_tcalloy.png new file mode 100644 index 000000000..1ba202798 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_block_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_aluminium.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_aluminium.png new file mode 100644 index 000000000..8e44446d3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_aluminium.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_copper.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_copper.png new file mode 100644 index 000000000..7217056b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_gold.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_gold.png new file mode 100644 index 000000000..4c5bed684 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_red_copper.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_red_copper.png new file mode 100644 index 000000000..f7df862cf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_red_copper.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_circuit_schrabidium.png b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_schrabidium.png new file mode 100644 index 000000000..da97f4286 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_circuit_schrabidium.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_engine_bismuth.png b/src/main/resources/assets/hbm/textures/blocks/cm_engine_bismuth.png new file mode 100644 index 000000000..c61aa02bd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_engine_bismuth.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_engine_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_engine_desh.png new file mode 100644 index 000000000..ff2e71fff Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_engine_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_engine_standard.png b/src/main/resources/assets/hbm/textures/blocks/cm_engine_standard.png new file mode 100644 index 000000000..a629ff54d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_engine_standard.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_alloy.png new file mode 100644 index 000000000..5fb09e5bc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_desh.png new file mode 100644 index 000000000..fe18d8e6f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_steel.png new file mode 100644 index 000000000..a7c997edb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_port_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_port_tcalloy.png new file mode 100644 index 000000000..e06654337 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_port_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_alloy.png new file mode 100644 index 000000000..3cee48d8f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_base.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_base.png new file mode 100644 index 000000000..8f6382d01 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_desh.png new file mode 100644 index 000000000..b68c2850f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_steel.png new file mode 100644 index 000000000..e1a1160bb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_sheet_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_tcalloy.png new file mode 100644 index 000000000..5fa07c692 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_sheet_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_alloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_alloy.png new file mode 100644 index 000000000..189361a5c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_alloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_desh.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_desh.png new file mode 100644 index 000000000..97d667b6d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_desh.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_steel.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_steel.png new file mode 100644 index 000000000..e0d207b55 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_steel.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_tank_tcalloy.png b/src/main/resources/assets/hbm/textures/blocks/cm_tank_tcalloy.png new file mode 100644 index 000000000..8b5444a3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_tank_tcalloy.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_terminal_front.png b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_front.png new file mode 100644 index 000000000..bbf5d2338 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_front.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/cm_terminal_side.png b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_side.png new file mode 100644 index 000000000..24a880774 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/cm_terminal_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.hazard.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.hazard.png new file mode 100644 index 000000000..50ce195a5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.hazard.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.indigo.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.indigo.png new file mode 100644 index 000000000..25df4b96d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.indigo.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine.png new file mode 100644 index 000000000..53406350f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine_stripe.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine_stripe.png new file mode 100644 index 000000000..e60525931 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.machine_stripe.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.pink.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.pink.png new file mode 100644 index 000000000..bf6c79fab Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.pink.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.purple.png b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.purple.png new file mode 100644 index 000000000..10101f3fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/concrete_colored_ext.purple.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/coolant_duct.png b/src/main/resources/assets/hbm/textures/blocks/coolant_duct.png deleted file mode 100644 index d7ba4a2de..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/coolant_duct.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/coolant_duct_icon.png b/src/main/resources/assets/hbm/textures/blocks/coolant_duct_icon.png deleted file mode 100644 index bbade3f2b..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/coolant_duct_icon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/coolant_duct_solid.png b/src/main/resources/assets/hbm/textures/blocks/coolant_duct_solid.png deleted file mode 100644 index a08eca758..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/coolant_duct_solid.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down.png new file mode 100644 index 000000000..6266209fd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_down.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up.png new file mode 100644 index 000000000..7b615b1cb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_side_up.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top.png b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top.png new file mode 100644 index 000000000..5d66fffd1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_grabber_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_pull.png b/src/main/resources/assets/hbm/textures/blocks/crane_pull.png new file mode 100644 index 000000000..a99dd262e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_pull.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_side_pull.png b/src/main/resources/assets/hbm/textures/blocks/crane_side_pull.png new file mode 100644 index 000000000..ff732c720 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_side_pull.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_back_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_back_left.png new file mode 100644 index 000000000..1ed0fa151 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_back_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_back_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_back_right.png new file mode 100644 index 000000000..7e5fb324e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_back_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_front_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_front_left.png new file mode 100644 index 000000000..1fd473e55 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_front_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_front_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_front_right.png new file mode 100644 index 000000000..a1c38b5cf Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_front_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_inner.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_inner.png new file mode 100644 index 000000000..9a6d83c4a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_inner.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_inner_side.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_inner_side.png new file mode 100644 index 000000000..f2a582e65 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_inner_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_left.png new file mode 100644 index 000000000..a545cccbd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_right.png new file mode 100644 index 000000000..dffb10346 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_top_left.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_top_left.png new file mode 100644 index 000000000..821df0203 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_top_left.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_splitter_top_right.png b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_top_right.png new file mode 100644 index 000000000..7d072091f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_splitter_top_right.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crane_top_wide.png b/src/main/resources/assets/hbm/textures/blocks/crane_top_wide.png new file mode 100644 index 000000000..029550db4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crane_top_wide.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/crate_template.png b/src/main/resources/assets/hbm/textures/blocks/crate_template.png new file mode 100644 index 000000000..2ae4399fc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/crate_template.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/deco_steel_blank_outer.png b/src/main/resources/assets/hbm/textures/blocks/deco_steel_blank_outer.png new file mode 100644 index 000000000..6602a5474 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/deco_steel_blank_outer.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_switch_off.png b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_off.png new file mode 100644 index 000000000..b12413cf5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_off.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_switch_on.png b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_on.png new file mode 100644 index 000000000..46c641f19 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fluid_switch_on.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png index 62e2dc7cf..fcf1d2a54 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png and b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_off.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png index 4bb093842..19c8bec2a 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png and b/src/main/resources/assets/hbm/textures/blocks/fluid_valve_on.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_bottom.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_bottom.png new file mode 100644 index 000000000..07af75aca Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_bottom.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_front.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_front.png new file mode 100644 index 000000000..230a6894f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_front.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_inner.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_inner.png new file mode 100644 index 000000000..a474e0f5f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_inner.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_side.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_side.png new file mode 100644 index 000000000..ce3162bec Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_top.png b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_top.png new file mode 100644 index 000000000..945bb0bbd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/foundry_slagtap_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png index 1db5c40d0..82452e86d 100644 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png and b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt.png deleted file mode 100644 index 82452e86d..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png deleted file mode 100644 index 72bfdc87d..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt2.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png deleted file mode 100644 index ea4392947..000000000 Binary files a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_alt3.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png new file mode 100644 index 000000000..adbd7c637 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_side_welded.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_alt.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top.png similarity index 100% rename from src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_alt.png rename to src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top.png diff --git a/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png new file mode 100644 index 000000000..8257cb294 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/fusion_conductor_top_welded.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass.png b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass.png new file mode 100644 index 000000000..d003abb6c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass_ct.png b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass_ct.png new file mode 100644 index 000000000..2105d94d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glass/reinforced_glass_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png new file mode 100644 index 000000000..ef6bca815 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png new file mode 100644 index 000000000..541a53c5f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/glyphid_base_2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/hadron_cooler.png b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler.png new file mode 100644 index 000000000..04e264932 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/hadron_cooler_mk2.png b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler_mk2.png new file mode 100644 index 000000000..63c994f68 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/hadron_cooler_mk2.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/mass_storage_side_wood.png b/src/main/resources/assets/hbm/textures/blocks/mass_storage_side_wood.png new file mode 100644 index 000000000..d71ef7d61 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/mass_storage_side_wood.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/mass_storage_top_wood.png b/src/main/resources/assets/hbm/textures/blocks/mass_storage_top_wood.png new file mode 100644 index 000000000..ba3c9d9f7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/mass_storage_top_wood.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/part_top.png b/src/main/resources/assets/hbm/textures/blocks/part_top.png new file mode 100644 index 000000000..8df82ffed Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/part_top.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_narrow_neo.png b/src/main/resources/assets/hbm/textures/blocks/rail_narrow_neo.png new file mode 100644 index 000000000..b00f01978 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rail_narrow_neo.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png b/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png new file mode 100644 index 000000000..a8943aaf8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rail_standard_buffer.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rail_standard_straight.png b/src/main/resources/assets/hbm/textures/blocks/rail_standard_straight.png new file mode 100644 index 000000000..649fbd388 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rail_standard_straight.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane.png new file mode 100644 index 000000000..157496351 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane_edge.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane_edge.png new file mode 100644 index 000000000..9c2ff4dd1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_glass_pane_edge.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate.png new file mode 100644 index 000000000..d003abb6c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_ct.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_ct.png new file mode 100644 index 000000000..2105d94d4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_ct.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane.png new file mode 100644 index 000000000..d003abb6c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane_edge.png b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane_edge.png new file mode 100644 index 000000000..aeaf7b907 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/reinforced_laminate_pane_edge.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/rtty_counter.png b/src/main/resources/assets/hbm/textures/blocks/rtty_counter.png new file mode 100644 index 000000000..f00b829ac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/rtty_counter.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/slag.png b/src/main/resources/assets/hbm/textures/blocks/slag.png new file mode 100644 index 000000000..6b39d33d5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/slag.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/sliding_blast_door.png b/src/main/resources/assets/hbm/textures/blocks/sliding_blast_door.png new file mode 100644 index 000000000..752aa7567 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/sliding_blast_door.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png new file mode 100644 index 000000000..5d121421f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome.desert.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png new file mode 100644 index 000000000..d0e122c48 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome.woodland.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png new file mode 100644 index 000000000..ab84f7807 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.desert.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png new file mode 100644 index 000000000..1ff0e0593 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_layer.woodland.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png new file mode 100644 index 000000000..1c05ff0d1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.desert.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png new file mode 100644 index 000000000..e758050f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_biome_top.woodland.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png b/src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png new file mode 100644 index 000000000..0800acb0c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_deep_base.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/stone_resource.bauxite.png b/src/main/resources/assets/hbm/textures/blocks/stone_resource.bauxite.png new file mode 100644 index 000000000..d2b38295d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/stone_resource.bauxite.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/struct_watz_core.png b/src/main/resources/assets/hbm/textures/blocks/struct_watz_core.png new file mode 100644 index 000000000..b1680dbe3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/struct_watz_core.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vent.png b/src/main/resources/assets/hbm/textures/blocks/vent.png new file mode 100644 index 000000000..e8e689ef9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vent.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/vent_side.png b/src/main/resources/assets/hbm/textures/blocks/vent_side.png new file mode 100644 index 000000000..51f0e451f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/vent_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_casing_bolted.png b/src/main/resources/assets/hbm/textures/blocks/watz_casing_bolted.png new file mode 100644 index 000000000..a52fac3c7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/watz_casing_bolted.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_cooler_side.png b/src/main/resources/assets/hbm/textures/blocks/watz_cooler_side.png new file mode 100644 index 000000000..346ddad5a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/watz_cooler_side.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/watz_cooler_top.png b/src/main/resources/assets/hbm/textures/blocks/watz_cooler_top.png new file mode 100644 index 000000000..e8f445868 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/watz_cooler_top.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_base.png b/src/main/resources/assets/hbm/textures/entity/creeper_base.png new file mode 100644 index 000000000..abdb54008 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_base.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_gold.png b/src/main/resources/assets/hbm/textures/entity/creeper_gold.png new file mode 100644 index 000000000..8f20dd3f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_gold.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_mustard.png b/src/main/resources/assets/hbm/textures/entity/creeper_mustard.png new file mode 100644 index 000000000..7d2016173 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_mustard.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_phosgene.png b/src/main/resources/assets/hbm/textures/entity/creeper_phosgene.png new file mode 100644 index 000000000..da0cb9d93 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_phosgene.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png b/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png new file mode 100644 index 000000000..b26401539 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/creeper_volatile.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid.png b/src/main/resources/assets/hbm/textures/entity/glyphid.png new file mode 100644 index 000000000..5294c0dc7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_behemoth.png b/src/main/resources/assets/hbm/textures/entity/glyphid_behemoth.png new file mode 100644 index 000000000..b59f6e251 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_behemoth.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_blaster.png b/src/main/resources/assets/hbm/textures/entity/glyphid_blaster.png new file mode 100644 index 000000000..f99440f7b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_blaster.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_bombardier.png b/src/main/resources/assets/hbm/textures/entity/glyphid_bombardier.png new file mode 100644 index 000000000..172b05b28 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_bombardier.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_brawler.png b/src/main/resources/assets/hbm/textures/entity/glyphid_brawler.png new file mode 100644 index 000000000..420a0a60c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_brawler.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_brenda.png b/src/main/resources/assets/hbm/textures/entity/glyphid_brenda.png new file mode 100644 index 000000000..b831b1a1f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_brenda.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_nuclear.png b/src/main/resources/assets/hbm/textures/entity/glyphid_nuclear.png new file mode 100644 index 000000000..af7c50fbc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_nuclear.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/glyphid_scout.png b/src/main/resources/assets/hbm/textures/entity/glyphid_scout.png new file mode 100644 index 000000000..23a2eee98 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/glyphid_scout.png differ diff --git a/src/main/resources/assets/hbm/textures/entity/quadcopter.png b/src/main/resources/assets/hbm/textures/entity/quadcopter.png new file mode 100644 index 000000000..26d6b5518 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/quadcopter.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/book/book_lore.png b/src/main/resources/assets/hbm/textures/gui/book/book_lore.png new file mode 100644 index 000000000..c5f8a4284 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/book/book_lore.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/hotblood.png b/src/main/resources/assets/hbm/textures/gui/fluids/blood_hot.png similarity index 100% rename from src/main/resources/assets/hbm/textures/gui/fluids/hotblood.png rename to src/main/resources/assets/hbm/textures/gui/fluids/blood_hot.png diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/calcium_chloride.png b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_chloride.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_chloride.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/calcium_solution.png b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_solution.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/calcium_solution.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_cleaned.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_cleaned.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_cleaned.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_mix.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_mix.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_mix.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_solution.png b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_solution.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/chlorocalcite_solution.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/cholesterol.png b/src/main/resources/assets/hbm/textures/gui/fluids/cholesterol.png new file mode 100644 index 000000000..0581aa3b0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/cholesterol.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/egg.png b/src/main/resources/assets/hbm/textures/gui/fluids/egg.png new file mode 100644 index 000000000..9474e08f6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/egg.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/estradiol.png b/src/main/resources/assets/hbm/textures/gui/fluids/estradiol.png new file mode 100644 index 000000000..3d491b0a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/estradiol.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/fishoil.png b/src/main/resources/assets/hbm/textures/gui/fluids/fishoil.png new file mode 100644 index 000000000..59a2057bd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/fishoil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/gas_coker.png b/src/main/resources/assets/hbm/textures/gui/fluids/gas_coker.png new file mode 100644 index 000000000..8c2466512 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/gas_coker.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/helium4.png b/src/main/resources/assets/hbm/textures/gui/fluids/helium4.png new file mode 100644 index 000000000..bbf8ac23c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/helium4.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/naphtha_coker.png b/src/main/resources/assets/hbm/textures/gui/fluids/naphtha_coker.png new file mode 100644 index 000000000..a95110b3a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/naphtha_coker.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/nitroglycerin.png b/src/main/resources/assets/hbm/textures/gui/fluids/nitroglycerin.png new file mode 100644 index 000000000..7ce138094 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/nitroglycerin.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/oil_coker.png b/src/main/resources/assets/hbm/textures/gui/fluids/oil_coker.png new file mode 100644 index 000000000..bac4e6011 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/oil_coker.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/potassium_chloride.png b/src/main/resources/assets/hbm/textures/gui/fluids/potassium_chloride.png new file mode 100644 index 000000000..f1ebd5aba Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/potassium_chloride.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/redmud.png b/src/main/resources/assets/hbm/textures/gui/fluids/redmud.png new file mode 100644 index 000000000..05e3c75c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/redmud.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/smoke.png b/src/main/resources/assets/hbm/textures/gui/fluids/smoke.png new file mode 100644 index 000000000..1e275e7d3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/smoke.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/smoke_leaded.png b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_leaded.png new file mode 100644 index 000000000..cd66e88d7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_leaded.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/smoke_poison.png b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_poison.png new file mode 100644 index 000000000..4af9e9028 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/smoke_poison.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/fluids/sunfloweroil.png b/src/main/resources/assets/hbm/textures/gui/fluids/sunfloweroil.png new file mode 100644 index 000000000..533362c50 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/fluids/sunfloweroil.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_counter.png b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_counter.png new file mode 100644 index 000000000..70c49adf4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/machine/gui_rtty_counter.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_custom.png b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_custom.png new file mode 100644 index 000000000..c28a69cf4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/nei/gui_nei_custom.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png new file mode 100644 index 000000000..3a8854ed2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_coker.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_compressor.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_compressor.png new file mode 100644 index 000000000..0a0179680 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_compressor.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_custom.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_custom.png new file mode 100644 index 000000000..7b47cbfac Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_custom.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png index 7a250f025..3f28a4951 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_fluid.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_fluid.png new file mode 100644 index 000000000..30b63b55e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_fluid.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_metal.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_metal.png new file mode 100644 index 000000000..0de879b3d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_electrolyser_metal.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png index 3645fbfd5..9db29bd5f 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_furnace_combination.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png index dae113415..a04e3e7a7 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png and b/src/main/resources/assets/hbm/textures/gui/processing/gui_mixer.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/reactors/gui_watz.png b/src/main/resources/assets/hbm/textures/gui/reactors/gui_watz.png index 861c7678a..975289a43 100644 Binary files a/src/main/resources/assets/hbm/textures/gui/reactors/gui_watz.png and b/src/main/resources/assets/hbm/textures/gui/reactors/gui_watz.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_grabber.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_grabber.png new file mode 100644 index 000000000..fda167041 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_crane_grabber.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_template.png b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_template.png new file mode 100644 index 000000000..c82ad403b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/storage/gui_crate_template.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram.png b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram.png new file mode 100644 index 000000000..21f3bf5a2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram.png differ diff --git a/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram_trailer.png b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram_trailer.png new file mode 100644 index 000000000..5e7ed2762 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/vehicles/gui_cargo_tram_trailer.png differ diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.acid.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.acid.png new file mode 100644 index 000000000..e83e786e3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.acid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.balls.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.balls.png new file mode 100644 index 000000000..569a248c0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.balls.png differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_feel.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammafeel.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_feel.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammafeel.png diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaforourright.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaforourright.png new file mode 100644 index 000000000..bccb7255a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaforourright.png differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_kauai_moho.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammakauaimoho.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_kauai_moho.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammakauaimoho.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_know.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaknow.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_know.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammaknow.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_see.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammasee.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_see.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammasee.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_unity.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaunity.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_unity.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammaunity.png diff --git a/src/main/resources/assets/hbm/textures/items/digamma_up_on_top.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.digammaupontop.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/digamma_up_on_top.png rename to src/main/resources/assets/hbm/textures/items/achievement_icon.digammaupontop.png diff --git a/src/main/resources/assets/hbm/textures/items/achievement_icon.gofish.png b/src/main/resources/assets/hbm/textures/items/achievement_icon.gofish.png new file mode 100644 index 000000000..f6622381a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/achievement_icon.gofish.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_coilgun.png b/src/main/resources/assets/hbm/textures/items/ammo_coilgun.png new file mode 100644 index 000000000..5e6692fb6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_coilgun.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_coilgun_du.png b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_du.png new file mode 100644 index 000000000..a8bb6196c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_du.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_coilgun_rubber.png b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_rubber.png new file mode 100644 index 000000000..265c2b866 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_coilgun_rubber.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png index d9e92ed00..96af24f72 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png index b0db61103..ab884158d 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png index b35ac6882..fe84f7e26 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_cell_4.png differ diff --git a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png index 46d944174..55b08bbac 100644 Binary files a/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png and b/src/main/resources/assets/hbm/textures/items/battery_schrabidium_new.png differ diff --git a/src/main/resources/assets/hbm/textures/items/bdcl.png b/src/main/resources/assets/hbm/textures/items/bdcl.png new file mode 100644 index 000000000..999de5f90 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/bdcl.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_cover.png b/src/main/resources/assets/hbm/textures/items/book_cover.png new file mode 100644 index 000000000..81dfcd45d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_cover.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_pages.png b/src/main/resources/assets/hbm/textures/items/book_pages.png new file mode 100644 index 000000000..73a98d544 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_pages.png differ diff --git a/src/main/resources/assets/hbm/textures/items/book_title.png b/src/main/resources/assets/hbm/textures/items/book_title.png new file mode 100644 index 000000000..9513bc51b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/book_title.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_CC_CENTRIFUGE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_CENTRIFUGE.png new file mode 100644 index 000000000..bd40743a8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_CENTRIFUGE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_CC_ELECTROLYSIS.png b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_ELECTROLYSIS.png new file mode 100644 index 000000000..fd9229fc2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_CC_ELECTROLYSIS.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_LAMINATE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_LAMINATE.png new file mode 100644 index 000000000..545b791dd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_LAMINATE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_PC_ELECTROLYSIS.png b/src/main/resources/assets/hbm/textures/items/chem_icon_PC_ELECTROLYSIS.png new file mode 100644 index 000000000..7d41a1928 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_PC_ELECTROLYSIS.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_CHLORINE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_CHLORINE.png new file mode 100644 index 000000000..21ce59d82 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_CHLORINE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_MUSTARD.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_MUSTARD.png new file mode 100644 index 000000000..dd8ee6c2a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_MUSTARD.png differ diff --git a/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_PHOSGENE.png b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_PHOSGENE.png new file mode 100644 index 000000000..36509d7c4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/chem_icon_SHELL_PHOSGENE.png differ diff --git a/src/main/resources/assets/hbm/textures/items/coupling_tool.png b/src/main/resources/assets/hbm/textures/items/coupling_tool.png new file mode 100644 index 000000000..54fa74781 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/coupling_tool.png differ diff --git a/src/main/resources/assets/hbm/textures/items/crystal_energy.png b/src/main/resources/assets/hbm/textures/items/crystal_energy.png deleted file mode 100644 index f4d48089a..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/crystal_energy.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_128kbps.png b/src/main/resources/assets/hbm/textures/items/digamma_128kbps.png deleted file mode 100644 index 67fa5529e..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/digamma_128kbps.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/digamma_event_horizon.png b/src/main/resources/assets/hbm/textures/items/digamma_event_horizon.png deleted file mode 100644 index 11a7ae960..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/digamma_event_horizon.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/egg_glyphid.png b/src/main/resources/assets/hbm/textures/items/egg_glyphid.png new file mode 100644 index 000000000..e7f1bd148 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/egg_glyphid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/egg_glyphid_base.png b/src/main/resources/assets/hbm/textures/items/egg_glyphid_base.png new file mode 100644 index 000000000..87082894f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/egg_glyphid_base.png differ diff --git a/src/main/resources/assets/hbm/textures/items/glyphid_meat.png b/src/main/resources/assets/hbm/textures/items/glyphid_meat.png new file mode 100644 index 000000000..a94ea0561 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/glyphid_meat.png differ diff --git a/src/main/resources/assets/hbm/textures/items/glyphid_meat_grilled.png b/src/main/resources/assets/hbm/textures/items/glyphid_meat_grilled.png new file mode 100644 index 000000000..d611bc741 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/glyphid_meat_grilled.png differ diff --git a/src/main/resources/assets/hbm/textures/items/grenade_cats.png b/src/main/resources/assets/hbm/textures/items/grenade_cats.png new file mode 100644 index 000000000..e800e9e77 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/grenade_cats.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ingot_mud.png b/src/main/resources/assets/hbm/textures/items/ingot_mud.png new file mode 100644 index 000000000..e18313181 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ingot_mud.png differ diff --git a/src/main/resources/assets/hbm/textures/items/motor_bismuth.png b/src/main/resources/assets/hbm/textures/items/motor_bismuth.png new file mode 100644 index 000000000..404e935e1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/motor_bismuth.png differ diff --git a/src/main/resources/assets/hbm/textures/items/night_vision.png b/src/main/resources/assets/hbm/textures/items/night_vision.png new file mode 100644 index 000000000..fe10b140c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/night_vision.png differ diff --git a/src/main/resources/assets/hbm/textures/items/nightmare_vision.png b/src/main/resources/assets/hbm/textures/items/nightmare_vision.png new file mode 100644 index 000000000..5d03c6236 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/nightmare_vision.png differ diff --git a/src/main/resources/assets/hbm/textures/items/oil_tar.paraffin.png b/src/main/resources/assets/hbm/textures/items/oil_tar.paraffin.png new file mode 100644 index 000000000..4a452460f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/oil_tar.paraffin.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pellet_coolant.png b/src/main/resources/assets/hbm/textures/items/pellet_coolant.png deleted file mode 100644 index 59c00dec4..000000000 Binary files a/src/main/resources/assets/hbm/textures/items/pellet_coolant.png and /dev/null differ diff --git a/src/main/resources/assets/hbm/textures/items/pill_red.png b/src/main/resources/assets/hbm/textures/items/pill_red.png new file mode 100644 index 000000000..838c093f7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pill_red.png differ diff --git a/src/main/resources/assets/hbm/textures/items/pollution_detector.png b/src/main/resources/assets/hbm/textures/items/pollution_detector.png new file mode 100644 index 000000000..b926f8086 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/pollution_detector.png differ diff --git a/src/main/resources/assets/hbm/textures/items/powder_chlorocalcite.png b/src/main/resources/assets/hbm/textures/items/powder_chlorocalcite.png new file mode 100644 index 000000000..901a98e2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/powder_chlorocalcite.png differ diff --git a/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png b/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png new file mode 100644 index 000000000..269a3d930 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/rbmk_component_card.png differ diff --git a/src/main/resources/assets/hbm/textures/items/scraps_additive.png b/src/main/resources/assets/hbm/textures/items/scraps_additive.png new file mode 100644 index 000000000..3d41c7920 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/scraps_additive.png differ diff --git a/src/main/resources/assets/hbm/textures/items/scraps_liquid.png b/src/main/resources/assets/hbm/textures/items/scraps_liquid.png new file mode 100644 index 000000000..5ce7cd523 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/scraps_liquid.png differ diff --git a/src/main/resources/assets/hbm/textures/items/sliding_blast_door_default.png b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_default.png new file mode 100644 index 000000000..752aa7567 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_default.png differ diff --git a/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant1.png b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant1.png new file mode 100644 index 000000000..5bbe67b45 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant1.png differ diff --git a/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant2.png b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant2.png new file mode 100644 index 000000000..bceea2601 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/sliding_blast_door_variant2.png differ diff --git a/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png new file mode 100644 index 000000000..973506281 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/stick_dynamite_fishing.png differ diff --git a/src/main/resources/assets/hbm/textures/items/train.cargo_tram.png b/src/main/resources/assets/hbm/textures/items/train.cargo_tram.png new file mode 100644 index 000000000..dc08307e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/train.cargo_tram.png differ diff --git a/src/main/resources/assets/hbm/textures/items/train.cargo_tram_trailer.png b/src/main/resources/assets/hbm/textures/items/train.cargo_tram_trailer.png new file mode 100644 index 000000000..8783c427d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/train.cargo_tram_trailer.png differ diff --git a/src/main/resources/assets/hbm/textures/items/train.tunnel_bore.png b/src/main/resources/assets/hbm/textures/items/train.tunnel_bore.png new file mode 100644 index 000000000..b115e28a0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/train.tunnel_bore.png differ diff --git a/src/main/resources/assets/hbm/textures/misc/scope_bolt.png b/src/main/resources/assets/hbm/textures/misc/scope_bolt.png new file mode 100644 index 000000000..2c40eeb66 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/misc/scope_bolt.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door.png new file mode 100644 index 000000000..20d572d21 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant1.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant1.png new file mode 100644 index 000000000..9d10aa5e5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant2.png b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant2.png new file mode 100644 index 000000000..8a327955d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/doors/sliding_blast_door_variant2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/chimney_brick.png b/src/main/resources/assets/hbm/textures/models/machines/chimney_brick.png new file mode 100644 index 000000000..104edc2b4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/chimney_brick.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/coker.png b/src/main/resources/assets/hbm/textures/models/machines/coker.png new file mode 100644 index 000000000..3c0bf7e5b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/coker.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/compressor.png b/src/main/resources/assets/hbm/textures/models/machines/compressor.png new file mode 100644 index 000000000..2b26f107a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/compressor.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png b/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png index 09c84e5ee..cc54a4622 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png and b/src/main/resources/assets/hbm/textures/models/machines/electrolyser.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/fan.png b/src/main/resources/assets/hbm/textures/models/machines/fan.png index 003223c2f..a2abda82d 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/fan.png and b/src/main/resources/assets/hbm/textures/models/machines/fan.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/industrial_boiler.png b/src/main/resources/assets/hbm/textures/models/machines/industrial_boiler.png new file mode 100644 index 000000000..92c535e6e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/industrial_boiler.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/piston_inserter.png b/src/main/resources/assets/hbm/textures/models/machines/piston_inserter.png new file mode 100644 index 000000000..86e8b0b8a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/piston_inserter.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png b/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png new file mode 100644 index 000000000..ce0ae052e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/steamhammer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/watz_pump.png b/src/main/resources/assets/hbm/textures/models/machines/watz_pump.png new file mode 100644 index 000000000..6f2582f83 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/machines/watz_pump.png differ diff --git a/src/main/resources/assets/hbm/textures/models/projectiles/himars_single_lava.png b/src/main/resources/assets/hbm/textures/models/projectiles/himars_single_lava.png new file mode 100644 index 000000000..f0b669169 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/projectiles/himars_single_lava.png differ diff --git a/src/main/resources/assets/hbm/textures/models/projectiles/himars_standard_lava.png b/src/main/resources/assets/hbm/textures/models/projectiles/himars_standard_lava.png new file mode 100644 index 000000000..312172141 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/projectiles/himars_standard_lava.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png new file mode 100644 index 000000000..586ddc6ff Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_CHOLESTEROL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_EGG.png b/src/main/resources/assets/hbm/textures/models/tank/tank_EGG.png new file mode 100644 index 000000000..ce463919b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_EGG.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_ESTRADIOL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_ESTRADIOL.png new file mode 100644 index 000000000..26ed97dd2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_ESTRADIOL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_FISHOIL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_FISHOIL.png new file mode 100644 index 000000000..5b9c063b5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_FISHOIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_GAS_COKER.png b/src/main/resources/assets/hbm/textures/models/tank/tank_GAS_COKER.png new file mode 100644 index 000000000..f73b4bd4d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_GAS_COKER.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_HELIUM4.png b/src/main/resources/assets/hbm/textures/models/tank/tank_HELIUM4.png new file mode 100644 index 000000000..8ca2d648f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_HELIUM4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_IONGEL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_IONGEL.png new file mode 100644 index 000000000..174c13aaa Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_IONGEL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_NAPHTHA_COKER.png b/src/main/resources/assets/hbm/textures/models/tank/tank_NAPHTHA_COKER.png new file mode 100644 index 000000000..1e8d34ac0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_NAPHTHA_COKER.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_NITROGLYCERIN.png b/src/main/resources/assets/hbm/textures/models/tank/tank_NITROGLYCERIN.png new file mode 100644 index 000000000..afc63209a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_NITROGLYCERIN.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_OIL_COKER.png b/src/main/resources/assets/hbm/textures/models/tank/tank_OIL_COKER.png new file mode 100644 index 000000000..06c2aedbd Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_OIL_COKER.png differ diff --git a/src/main/resources/assets/hbm/textures/models/tank/tank_SUNFLOWEROIL.png b/src/main/resources/assets/hbm/textures/models/tank/tank_SUNFLOWEROIL.png new file mode 100644 index 000000000..abcc1ad09 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/tank/tank_SUNFLOWEROIL.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trains/ow.png b/src/main/resources/assets/hbm/textures/models/trains/ow.png new file mode 100644 index 000000000..3ba1a9767 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trains/ow.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trains/tram.png b/src/main/resources/assets/hbm/textures/models/trains/tram.png new file mode 100644 index 000000000..58721d316 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trains/tram.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trains/tram_trailer.png b/src/main/resources/assets/hbm/textures/models/trains/tram_trailer.png new file mode 100644 index 000000000..382be5124 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trains/tram_trailer.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png b/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png index bab400b53..0aa2f83cc 100644 Binary files a/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png and b/src/main/resources/assets/hbm/textures/models/trinkets/adam29.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png b/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png new file mode 100644 index 000000000..82a5c22a4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/microwave.png differ diff --git a/src/main/resources/assets/hbm/textures/models/trinkets/peep.png b/src/main/resources/assets/hbm/textures/models/trinkets/peep.png new file mode 100644 index 000000000..9e8551ba8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/trinkets/peep.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/benelli_tex.png b/src/main/resources/assets/hbm/textures/models/weapons/benelli_tex.png new file mode 100644 index 000000000..2381fab49 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/benelli_tex.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/boltgun.png b/src/main/resources/assets/hbm/textures/models/weapons/boltgun.png new file mode 100644 index 000000000..2ec8e52bc Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/boltgun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/coilgun.png b/src/main/resources/assets/hbm/textures/models/weapons/coilgun.png new file mode 100644 index 000000000..8dfb5eaa8 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/coilgun.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon.png new file mode 100644 index 000000000..b72c6d3fe Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_0.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_0.png new file mode 100644 index 000000000..7650662e7 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_1.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_1.png new file mode 100644 index 000000000..e73121b40 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_10.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_10.png new file mode 100644 index 000000000..6dc466718 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_10.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_11.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_11.png new file mode 100644 index 000000000..351ac3108 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_11.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_12.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_12.png new file mode 100644 index 000000000..ccacf821c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_12.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_13.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_13.png new file mode 100644 index 000000000..47a8d042a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_13.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_14.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_14.png new file mode 100644 index 000000000..a1938e8e9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_14.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_2.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_2.png new file mode 100644 index 000000000..b01baf16b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_3.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_3.png new file mode 100644 index 000000000..16bdc3c2d Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_4.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_4.png new file mode 100644 index 000000000..ce4d89448 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_5.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_5.png new file mode 100644 index 000000000..0a2f9cfc5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_5.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_6.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_6.png new file mode 100644 index 000000000..c94c65d92 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_6.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_7.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_7.png new file mode 100644 index 000000000..322a8e4d5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_7.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_8.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_8.png new file mode 100644 index 000000000..92bbb9308 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_8.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_9.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_9.png new file mode 100644 index 000000000..363f9131f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/fill_9.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_0.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_0.png new file mode 100644 index 000000000..be363f2a3 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_1.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_1.png new file mode 100644 index 000000000..d1c5435fb Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_10.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_10.png new file mode 100644 index 000000000..32aeaa2ed Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_10.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_11.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_11.png new file mode 100644 index 000000000..79dd01984 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_11.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_2.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_2.png new file mode 100644 index 000000000..f64127298 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_3.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_3.png new file mode 100644 index 000000000..766391aa5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_4.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_4.png new file mode 100644 index 000000000..9992b7619 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_5.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_5.png new file mode 100644 index 000000000..203848086 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_5.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_6.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_6.png new file mode 100644 index 000000000..c6d3580f4 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_6.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_7.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_7.png new file mode 100644 index 000000000..938405d7c Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_7.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_8.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_8.png new file mode 100644 index 000000000..a70ceb815 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_8.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_9.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_9.png new file mode 100644 index 000000000..3a12cf680 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_9.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_empty.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_empty.png new file mode 100644 index 000000000..a78876d6e Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/pressure_empty.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_0.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_0.png new file mode 100644 index 000000000..bc3d6c1d6 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_0.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_1.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_1.png new file mode 100644 index 000000000..7e13ddbe0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_1.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_2.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_2.png new file mode 100644 index 000000000..f24edf0d9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_2.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_3.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_3.png new file mode 100644 index 000000000..0a41c0947 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_3.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_4.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_4.png new file mode 100644 index 000000000..9bba0a39f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_4.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_5.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_5.png new file mode 100644 index 000000000..3fd5fbf76 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_5.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_6.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_6.png new file mode 100644 index 000000000..9efec8e0a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_6.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_7.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_7.png new file mode 100644 index 000000000..e8db8d13a Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_7.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_8.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_8.png new file mode 100644 index 000000000..9a30a70c1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_8.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_empty.png b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_empty.png new file mode 100644 index 000000000..493a027f2 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/cryo_cannon/turbine_empty.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/ipleaker.png b/src/main/resources/assets/hbm/textures/models/weapons/ipleaker.png new file mode 100644 index 000000000..ca0c36889 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/ipleaker.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png b/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png new file mode 100644 index 000000000..926d076b9 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/pistol_texture.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/remington.png b/src/main/resources/assets/hbm/textures/models/weapons/remington.png new file mode 100644 index 000000000..01935ed26 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/remington.png differ