diff --git a/gradle.properties b/gradle.properties index 9383abbe4..697f43ef4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4578 +mod_build_number=4592 credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models, porting),\ @@ -11,4 +11,4 @@ credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion al \ 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 + \ Pvndols (thorium fuel recipe, gas turbine), JamesH2 (blood mechanics, nitric acid), sdddddf80 (recipe configs), SuperCraftAlex (tooltips) 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/com/hbm/blocks/BlockEnums.java b/src/main/java/com/hbm/blocks/BlockEnums.java index 99d7edadf..5a8e89122 100644 --- a/src/main/java/com/hbm/blocks/BlockEnums.java +++ b/src/main/java/com/hbm/blocks/BlockEnums.java @@ -10,6 +10,11 @@ public class BlockEnums { LIMESTONE } + public static enum EnumBiomeType { + DESERT, + WOODLAND + } + public static enum EnumStalagmiteType { SULFUR, ASBESTOS diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 4e7c82139..0a0df5800 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -11,6 +11,8 @@ 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.RailStandardCurve; +import com.hbm.blocks.rail.RailStandardStraight; import com.hbm.blocks.siege.*; import com.hbm.blocks.test.*; import com.hbm.blocks.turret.*; @@ -136,6 +138,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; @@ -928,6 +931,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; @@ -1083,6 +1087,9 @@ public class ModBlocks { public static Block rail_narrow; public static Block rail_highspeed; public static Block rail_booster; + + public static Block rail_large_straight; + public static Block rail_large_curve; public static Block statue_elb; public static Block statue_elb_g; @@ -1312,6 +1319,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"); @@ -1437,7 +1445,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"); @@ -2108,6 +2116,8 @@ 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_large_straight = new RailStandardStraight().setBlockName("rail_large_straight").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel"); + rail_large_curve = new RailStandardCurve().setBlockName("rail_large_curve").setHardness(5.0F).setResistance(10.0F).setCreativeTab(CreativeTabs.tabTransport).setBlockTextureName(RefStrings.MODID + ":block_steel"); 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"); @@ -2139,6 +2149,7 @@ public class ModBlocks { 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"); @@ -2452,9 +2463,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()); @@ -3186,12 +3198,13 @@ public class ModBlocks { register(machine_flare); 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); @@ -3323,6 +3336,8 @@ 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_large_straight); + register(rail_large_curve); //Crate GameRegistry.registerBlock(crate, crate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java index 3d24353aa..3b92192de 100644 --- a/src/main/java/com/hbm/blocks/bomb/BlockTaint.java +++ b/src/main/java/com/hbm/blocks/bomb/BlockTaint.java @@ -185,7 +185,7 @@ public class BlockTaint extends Block/*Container*/ { } } - if(entity instanceof EntityCreeper) { + 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); 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..a53cce92d --- /dev/null +++ b/src/main/java/com/hbm/blocks/generic/BlockBiomeStone.java @@ -0,0 +1,53 @@ +package com.hbm.blocks.generic; + +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()); + this.iconsTop[i] = reg.registerIcon(this.getTextureName() + "_top." + num.name().toLowerCase()); + this.iconsLayer[i] = reg.registerIcon(this.getTextureName() + "_layer." + num.name().toLowerCase()); + } + } + + @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..0757002f9 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() { @@ -191,7 +190,8 @@ public class BlockBobble extends BlockContainer implements IGUIProvider { 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); + CIRNO( "Cirno", "Cirno", "the only multi layered skin i had", "No brain. Head empty.", true, ScrapType.BOARD_BLANK), + MICROWAVE( "Microwave", "Microwave", "adding OC compat", "they call me the food heater", true, ScrapType.BRIDGE_BIOS); 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/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/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/Watz.java b/src/main/java/com/hbm/blocks/machine/Watz.java index 8a975bbc2..4f195b722 100644 --- a/src/main/java/com/hbm/blocks/machine/Watz.java +++ b/src/main/java/com/hbm/blocks/machine/Watz.java @@ -1,5 +1,7 @@ package com.hbm.blocks.machine; +import java.util.Random; + import com.hbm.blocks.BlockDummyable; import com.hbm.blocks.ModBlocks; import com.hbm.handler.MultiblockHandlerXR; @@ -11,6 +13,7 @@ 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; @@ -29,6 +32,11 @@ public class Watz extends BlockDummyable { 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) { 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..430395012 --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/IRailNTM.java @@ -0,0 +1,43 @@ +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); + + /** 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 + } + + /** 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; } + } +} 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..46bc0bf4d --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardCurve.java @@ -0,0 +1,141 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +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; + } + + @Override + public int getRenderType() { + return 0; + } + + @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) { + 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.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); + } +} 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..1c8889b0b --- /dev/null +++ b/src/main/java/com/hbm/blocks/rail/RailStandardStraight.java @@ -0,0 +1,116 @@ +package com.hbm.blocks.rail; + +import com.hbm.blocks.BlockDummyable; +import com.hbm.lib.Library; +import com.hbm.util.fauxpointtwelve.BlockPos; + +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; + } + + @Override + public int getRenderType() { + return 0; + } + + @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) { + 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(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; + 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.STANDARD; + } +} diff --git a/src/main/java/com/hbm/crafting/RodRecipes.java b/src/main/java/com/hbm/crafting/RodRecipes.java index 77e6a2aa5..06f29fb44 100644 --- a/src/main/java/com/hbm/crafting/RodRecipes.java +++ b/src/main/java/com/hbm/crafting/RodRecipes.java @@ -136,6 +136,9 @@ public class RodRecipes { 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); diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 9b740413a..72585ccb7 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -156,6 +156,7 @@ 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 }); //Ammo assemblies CraftingManager.addRecipeAuto(new ItemStack(ModItems.pellet_flechette, 1), new Object[] { " L ", " L ", "LLL", 'L', PB.nugget() }); @@ -187,7 +188,6 @@ 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 }); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 4d56ebc9b..d5354b59a 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -14,11 +14,17 @@ 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.EntityRailCarRidable.SeatDummyEntity; +import com.hbm.entity.train.TrainCargoTram; 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 { @@ -204,10 +210,15 @@ public class EntityMappings { addEntity(EntitySawblade.class, "entity_stray_saw", 1000); addEntity(EntityChemical.class, "entity_chemthrower_splash", 1000); addEntity(EntityMist.class, "entity_mist", 1000); + + addEntity(SeatDummyEntity.class, "entity_ntm_seat_dummy", 250, false); + addEntity(TrainCargoTram.class, "entity_ntm_cargo_tram", 250, false); 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); @@ -221,6 +232,10 @@ public class EntityMappings { addMob(EntitySiegeSkeleton.class, "entity_meme_skeleton", 0x303030, 0x000080); addMob(EntitySiegeUFO.class, "entity_meme_ufo", 0x303030, 0x800000); addMob(EntitySiegeCraft.class, "entity_meme_craft", 0x303030, 0x808000); + + 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 +258,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/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/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/projectile/EntityBulletBase.java b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java index 81e67cac1..76f9340b0 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java +++ b/src/main/java/com/hbm/entity/projectile/EntityBulletBase.java @@ -1,6 +1,7 @@ package com.hbm.entity.projectile; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.List; import com.hbm.blocks.ModBlocks; @@ -22,6 +23,7 @@ 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; @@ -50,6 +52,11 @@ public class EntityBulletBase extends Entity implements IProjectile { private BulletConfiguration config; public EntityLivingBase shooter; public float overrideDamage; + + public double prevRenderX; + public double prevRenderY; + public double prevRenderZ; + public final List> trailNodes = new ArrayList(); public BulletConfiguration getConfig() { return config; @@ -236,6 +243,15 @@ public class EntityBulletBase extends Entity implements IProjectile { 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(this.config.blackPowder && this.ticksExisted == 1) { for(int i = 0; i < 15; i++) { 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..39a31c625 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarBase.java @@ -0,0 +1,199 @@ +package com.hbm.entity.train; + +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.RailContext; +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.util.fauxpointtwelve.BlockPos; + +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.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public abstract class EntityRailCarBase extends Entity { + + public boolean isOnRail = true; + private int turnProgress; + private double trainX; + private double trainY; + private double trainZ; + private double trainYaw; + private double trainPitch; + private float movementYaw; + @SideOnly(Side.CLIENT) private double velocityX; + @SideOnly(Side.CLIENT) private double velocityY; + @SideOnly(Side.CLIENT) private double velocityZ; + + 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 canBePushed() { + return true; + } + + @Override + public boolean canBeCollidedWith() { + return !this.isDead; + } + + @Override + public void onUpdate() { + + if(this.worldObj.isRemote) { + + 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); + } + } else { + + BlockPos anchor = this.getCurentAnchorPos(); + Vec3 corePos = getRelPosAlongRail(anchor, this.getCurrentSpeed()); + + if(corePos == null) { + this.derail(); + } else { + this.setPosition(corePos.xCoord, corePos.yCoord, corePos.zCoord); + anchor = this.getCurentAnchorPos(); //reset origin to new position + Vec3 frontPos = getRelPosAlongRail(anchor, this.getLengthSpan()); + Vec3 backPos = getRelPosAlongRail(anchor, -this.getLengthSpan()); + + if(frontPos == null || backPos == null) { + this.derail(); + } else { + this.prevRotationYaw = this.rotationYaw; + this.rotationYaw = this.movementYaw = generateYaw(frontPos, backPos); + this.motionX = this.rotationYaw / 360D; // hijacking this crap for easy syncing + this.velocityChanged = true; + } + } + } + } + + public Vec3 getRelPosAlongRail(BlockPos anchor, double distanceToCover) { + + float yaw = this.rotationYaw; + + if(distanceToCover < 0) { + distanceToCover *= -1; + yaw += 180; + } + + Vec3 next = Vec3.createVectorHelper(posX, posY, posZ); + int it = 0; + + do { + + it++; + + if(it > 30) { + worldObj.createExplosion(this, posX, posY, posZ, 5F, false); + this.derail(); + 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()); + } + + boolean flip = distanceToCover < 0; + + if(rail.getGauge(worldObj, x, y, z) == this.getGauge()) { + 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); + 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 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); + } + + /** Returns the amount of blocks that the train should move per tick */ + public abstract double getCurrentSpeed(); + /** 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 "true" position of the train, i.e. the block it wants to snap to */ + public BlockPos getCurentAnchorPos() { + return new BlockPos(posX, posY, 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; + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double mX, double mY, double mZ) { + this.movementYaw = (float) this.motionX * 360F; + this.velocityX = this.motionX = mX; + this.velocityY = this.motionY = mY; + this.velocityZ = this.motionZ = mZ; + } +} 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..2e41f6d4d --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarCargo.java @@ -0,0 +1,141 @@ +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 + 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; + } + + return itemstack; + } + } else { + return null; + } + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) { + if(this.slots[slot] != null) { + ItemStack itemstack = this.slots[slot]; + this.slots[slot] = null; + return itemstack; + } else { + 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(); + } + } + + @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); + } + } + } + + @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/EntityRailCarRidable.java b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java new file mode 100644 index 000000000..3d2f6805b --- /dev/null +++ b/src/main/java/com/hbm/entity/train/EntityRailCarRidable.java @@ -0,0 +1,137 @@ +package com.hbm.entity.train; + +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; + +public abstract class EntityRailCarRidable extends EntityRailCarCargo { + + public SeatDummyEntity[] passengerSeats; + + public EntityRailCarRidable(World world) { + super(world); + this.passengerSeats = new SeatDummyEntity[this.getPassengerSeats().length]; + } + + @Override + public boolean interactFirst(EntityPlayer player) { + + if(worldObj.isRemote) return true; + + double nearestDist = Double.POSITIVE_INFINITY; + int nearestSeat = -1; + + Vec3[] seats = getPassengerSeats(); + 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 = posX + seat.xCoord; + double y = posY + seat.yCoord; + double z = posZ + seat.zCoord; + double dist = Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).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 = posX + seat.xCoord; + double y = posY + seat.yCoord; + double z = posZ + seat.zCoord; + double dist = Vec3.createVectorHelper(player.posX - x, player.posY - y, player.posZ - z).lengthVector(); + + if(dist < nearestDist) { + nearestDist = dist; + nearestSeat = -1; + } + } + + if(nearestDist > 20) return true; + + if(nearestSeat == -1) { + player.mountEntity(this); + } else { + SeatDummyEntity dummySeat = new SeatDummyEntity(worldObj); + Vec3 passengerSeat = this.getPassengerSeats()[nearestSeat]; + passengerSeat.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + passengerSeat.xCoord; + double y = posY + passengerSeat.yCoord; + double z = posZ + passengerSeat.zCoord; + dummySeat.setPosition(x, y - 1, z); + passengerSeats[nearestSeat] = dummySeat; + worldObj.spawnEntityInWorld(dummySeat); + player.mountEntity(dummySeat); + } + + return true; + } + + @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.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + double x = posX + rot.xCoord; + double y = posY + rot.yCoord; + double z = posZ + rot.zCoord; + seat.setPosition(x, y - 1, z); + seat.updateRiderPosition(); + } + } + } + } + } + + @Override + public void updateRiderPosition() { + + Vec3 offset = getRiderSeatPosition(); + offset.rotateAroundY((float) (-this.rotationYaw * Math.PI / 180)); + + if(this.riddenByEntity != null) { + this.riddenByEntity.setPosition(this.posX + offset.xCoord, this.posY + offset.yCoord, this.posZ + offset.zCoord); + } + } + + /** Returns a Vec3 showing the relative position from the driver to the core */ + public abstract Vec3 getRiderSeatPosition(); + + public abstract Vec3[] getPassengerSeats(); + + public static class SeatDummyEntity extends Entity { + public SeatDummyEntity(World world) { super(world); this.setSize(0.5F, 0.1F);} + @Override protected void entityInit() { } + @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 updateRiderPosition() { + if(this.riddenByEntity != null) { + this.riddenByEntity.setPosition(this.posX, this.posY + 1, this.posZ); + } + } + } +} 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..5dcff8b21 --- /dev/null +++ b/src/main/java/com/hbm/entity/train/TrainCargoTram.java @@ -0,0 +1,124 @@ +package com.hbm.entity.train; + +import com.hbm.blocks.rail.IRailNTM.TrackGauge; +import com.hbm.tileentity.IGUIProvider; + +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.util.DamageSource; +import net.minecraft.util.MathHelper; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class TrainCargoTram extends EntityRailCarRidable implements IGUIProvider { + + /* + * + * _________ + * | | \ <-- + * | | |___ + * | | | | | + * _O\|_|_______|__|_____________________________|/O_ + * |____| |____| + * \__________________________________________/ + * '( + )' '( + )' + * + */ + + public TrainCargoTram(World world) { + super(world); + this.setSize(2F, 1F); + } + + public double speed = 0; + public static final double maxSpeed = 0.5; + public static final double acceleration = 0.01; + public static final double deceleration = 0.95; + + @Override + public double getCurrentSpeed() { // in its current form, only call once per tick + + if(this.riddenByEntity instanceof EntityPlayer) { + + EntityPlayer player = (EntityPlayer) this.riddenByEntity; + + if(player.moveForward > 0) { + speed += acceleration; + } else if(player.moveForward < 0) { + speed -= acceleration; + } else { + speed *= deceleration; + } + + } else { + speed *= deceleration; + } + + speed = MathHelper.clamp_double(speed, -maxSpeed, maxSpeed); + + return speed; + } + + @Override + public TrackGauge getGauge() { + return TrackGauge.STANDARD; + } + + @Override + public double getLengthSpan() { + return 1.5; + } + + @Override + public Vec3 getRiderSeatPosition() { + return Vec3.createVectorHelper(0.375, 2.25, 0.5); + } + + @Override + public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_) { + if(!this.worldObj.isRemote && !this.isDead) { + this.setDead(); + } + + return true; + } + + @Override + public boolean shouldRiderSit() { + return false; + } + + @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 int getSizeInventory() { + return 27; + } + + @Override + public String getInventoryName() { + return this.hasCustomInventoryName() ? this.getEntityName() : "container.trainTram"; + } + + @Override + public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { + //return new ContainerTrainCargoTram(player.inventory, (TrainCargoTram)player.worldObj.getEntityByID(x)); + return null; + } + + @Override + @SideOnly(Side.CLIENT) + public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { + //return new GUITrainCargoTram(player.inventory, (TrainCargoTram) player.worldObj.getEntityByID(x)); + return null; + } +} 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/BlockProcessorStandard.java b/src/main/java/com/hbm/explosion/vanillant/standard/BlockProcessorStandard.java index ac1fcd7be..a6da1e153 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,7 @@ 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); } } @@ -78,7 +79,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/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 06d4afa91..7e7af9633 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++; @@ -359,6 +367,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()); diff --git a/src/main/java/com/hbm/handler/BulletConfiguration.java b/src/main/java/com/hbm/handler/BulletConfiguration.java index 71c208daa..a55ffe030 100644 --- a/src/main/java/com/hbm/handler/BulletConfiguration.java +++ b/src/main/java/com/hbm/handler/BulletConfiguration.java @@ -137,6 +137,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; 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/guncfg/Gun12GaugeFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java index 12bf84902..e5f851c48 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun12GaugeFactory.java @@ -48,6 +48,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 +147,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 +175,7 @@ public class Gun12GaugeFactory { config.name = "uboinik"; config.manufacturer = EnumGunManufacturer.METRO; - config.config = HbmCollection.g12; + config.config = HbmCollection.g12hs; config.ejector = EJECTOR_UBOINIK; @@ -190,7 +228,7 @@ 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; @@ -346,5 +384,4 @@ public class Gun12GaugeFactory { return bullet; } - } 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/nei/CokingHandler.java b/src/main/java/com/hbm/handler/nei/CokingHandler.java new file mode 100644 index 000000000..da3cb101d --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/CokingHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +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"; + } +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index 8bd6b507a..fb39122a5 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -553,6 +553,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); 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/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d8666118d..bf2ce2575 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -7,6 +7,7 @@ import java.util.List; import com.hbm.inventory.fluid.trait.*; import com.hbm.inventory.fluid.trait.FluidTraitSimple.*; import com.hbm.lib.ModDamageSource; +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; @@ -123,6 +124,12 @@ 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; private static final HashMap idMapping = new HashMap(); private static final HashMap nameMapping = new HashMap(); @@ -257,7 +264,13 @@ public class Fluids { 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, VISCOUS); + 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(109, "ESTRADIOL", 0xCDD5D8, 0, 0, 0, EnumSymbol.NONE).addTraits(LIQUID); // ^ ^ ^ ^ ^ ^ ^ ^ //ADD NEW FLUIDS HERE @@ -298,12 +311,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); @@ -315,6 +330,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); @@ -360,11 +376,14 @@ public class Fluids { metaOrder.add(PAIN); metaOrder.add(DEATH); metaOrder.add(WATZ); + metaOrder.add(EGG); + metaOrder.add(CHOLESTEROL); //solutions and working fluids metaOrder.add(FRACKSOL); //the fun guys metaOrder.add(PHOSGENE); metaOrder.add(MUSTARDGAS); + metaOrder.add(ESTRADIOL); //antimatter metaOrder.add(AMAT); metaOrder.add(ASCHRAB); @@ -386,6 +405,7 @@ public class Fluids { 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)))); double eff_steam_boil = 1.0D; double eff_steam_heatex = 0.25D; @@ -437,6 +457,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; @@ -449,7 +470,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); @@ -458,6 +481,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); 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/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 383e87b4b..5464b4581 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,6 +279,7 @@ 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_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); 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..1c74b406c --- /dev/null +++ b/src/main/java/com/hbm/inventory/recipes/CokerRecipes.java @@ -0,0 +1,149 @@ +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); + + registerSFAuto(WOODOIL, 340_000L, new ItemStack(Items.coal, 1, 1), GAS_COKER); + + registerRecipe(WATZ, 4_000, new ItemStack(ModItems.ingot_mud, 4), null); + 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)); + } + + 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/CrystallizerRecipes.java b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java index 070e9f221..933a7c970 100644 --- a/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/CrystallizerRecipes.java @@ -134,9 +134,10 @@ public class CrystallizerRecipes extends SerializableRecipe { 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); - 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.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)); diff --git a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java index 95e8a5f86..00f49aeae 100644 --- a/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/FractionRecipes.java @@ -47,18 +47,22 @@ 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))); } public static Pair getFractions(FluidType oil) { diff --git a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java index bd29e55bf..9e79c597a 100644 --- a/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/MixerRecipes.java @@ -21,6 +21,8 @@ import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ModItems; import com.hbm.items.machine.ItemFluidIcon; +import net.minecraft.init.Items; + public class MixerRecipes extends SerializableRecipe { public static HashMap recipes = new HashMap(); @@ -37,6 +39,7 @@ public class MixerRecipes extends SerializableRecipe { 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))); + recipes.put(Fluids.EGG, new MixerRecipe(1_000, 50).setStack1(new FluidStack(Fluids.RADIOSOLVENT, 500)).setSolid(new ComparableStack(Items.egg))); 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()))); 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/SolidificationRecipes.java b/src/main/java/com/hbm/inventory/recipes/SolidificationRecipes.java index 91940bef6..38f618aea 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; @@ -76,6 +76,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); @@ -94,13 +95,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); @@ -111,7 +112,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/loader/SerializableRecipe.java b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java index dd64e10ca..92e378ef2 100644 --- a/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java +++ b/src/main/java/com/hbm/inventory/recipes/loader/SerializableRecipe.java @@ -53,6 +53,7 @@ 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()); diff --git a/src/main/java/com/hbm/items/IAnimatedItem.java b/src/main/java/com/hbm/items/IAnimatedItem.java index 1457b72a2..e92ffa459 100644 --- a/src/main/java/com/hbm/items/IAnimatedItem.java +++ b/src/main/java/com/hbm/items/IAnimatedItem.java @@ -7,8 +7,8 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -@SideOnly(Side.CLIENT) public interface IAnimatedItem { + @SideOnly(Side.CLIENT) public BusAnimation getAnimation(NBTTagCompound data, ItemStack stack); } diff --git a/src/main/java/com/hbm/items/ItemEnums.java b/src/main/java/com/hbm/items/ItemEnums.java index 5db68070c..a15664ddb 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 { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index fbfec83a4..79043e1e0 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -949,6 +949,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; @@ -1545,6 +1546,7 @@ 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_ks23; @@ -3312,6 +3314,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"); @@ -4154,6 +4157,7 @@ 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_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"); @@ -5441,6 +5445,7 @@ public class ModItems { nothing = new Item().setUnlocalizedName("nothing").setTextureName(RefStrings.MODID + ":nothing"); void_anim = new Item().setUnlocalizedName("void_anim").setTextureName(RefStrings.MODID + ":void_anim"); + 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"); @@ -5455,11 +5460,11 @@ public class ModItems { 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); @@ -6958,6 +6963,7 @@ 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_supershotgun, gun_supershotgun.getUnlocalizedName()); GameRegistry.registerItem(gun_ks23, gun_ks23.getUnlocalizedName()); @@ -7448,6 +7454,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()); 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/ItemWatzPellet.java b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java index c8e31a111..be5e0ad7f 100644 --- a/src/main/java/com/hbm/items/machine/ItemWatzPellet.java +++ b/src/main/java/com/hbm/items/machine/ItemWatzPellet.java @@ -135,7 +135,7 @@ public class ItemWatzPellet extends ItemEnumMulti { if(num.passive > 0){ list.add(color + "Base fission rate: " + reset + num.passive); - list.add(EnumChatFormatting.RED + "Self-ingiting!"); + list.add(EnumChatFormatting.RED + "Self-igniting!"); } if(num.heatEmission > 0) list.add(color + "Heat per flux: " + reset + num.heatEmission + " TU"); if(num.burnFunc != null) { diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index 9401b7b76..7ea8ad8b7 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -2,13 +2,33 @@ package com.hbm.items.tool; import java.util.List; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.rail.IRailNTM; +import com.hbm.blocks.rail.IRailNTM.RailContext; +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorBulkie; +import com.hbm.explosion.vanillant.standard.BlockMutatorBulkie; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorStandard; +import com.hbm.explosion.vanillant.standard.ExplosionEffectStandard; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.lib.Library; +import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.PlayerInformPacket; +import com.hbm.util.ParticleUtil; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.world.feature.OilSpot; +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; import net.minecraft.world.World; public class ItemWandD extends Item { @@ -23,6 +43,14 @@ 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(); + /*TimeAnalyzer.startCount("setBlock"); world.setBlock(pos.blockX, pos.blockY, pos.blockZ, Blocks.dirt); TimeAnalyzer.startEndCount("getBlock"); @@ -58,8 +86,6 @@ public class ItemWandD extends Item { //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/weapon/ItemGunBase.java b/src/main/java/com/hbm/items/weapon/ItemGunBase.java index 347570496..065dcf6f4 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunBase.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunBase.java @@ -229,7 +229,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 +263,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); @@ -458,6 +458,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)); diff --git a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java index 63f347527..4db1ce526 100644 --- a/src/main/java/com/hbm/items/weapon/ItemGunGauss.java +++ b/src/main/java/com/hbm/items/weapon/ItemGunGauss.java @@ -5,9 +5,13 @@ 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; + 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); } } @@ -107,7 +114,7 @@ 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); } } diff --git a/src/main/java/com/hbm/lib/HbmCollection.java b/src/main/java/com/hbm/lib/HbmCollection.java index 2e037769a..a0d1efc1e 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 **/ @@ -140,6 +141,8 @@ public class HbmCollection { LUNA, /**Raytheon Missile Systems**/ RAYTHEON, + /**Remingotn Arms**/ + REMINGTON, /**Rockwell International Corporation**/ ROCKWELL, /**Rockwell International Corporation?**/ @@ -181,6 +184,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/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 0a206e0f1..79c7e3689 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 (4578)"; + public static final String VERSION = "1.0.27 BETA (4592)"; //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 3115a9386..8143d4828 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -60,6 +60,8 @@ 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.EntityRailCarRidable.SeatDummyEntity; import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds; import com.hbm.handler.ImpactWorldHandler; @@ -273,6 +275,7 @@ 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()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); @@ -448,7 +451,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()); @@ -501,6 +504,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()); @@ -679,6 +683,9 @@ 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(TrainCargoTram.class, new RenderTrainCargoTram()); //items RenderingRegistry.registerEntityRenderingHandler(EntityMovingItem.class, new RenderMovingItem()); RenderingRegistry.registerEntityRenderingHandler(EntityMovingPackage.class, new RenderMovingPackage()); @@ -687,6 +694,8 @@ public class ClientProxy extends ServerProxy { 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()); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index e9908af75..d2806ca03 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -49,6 +49,7 @@ import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.blocks.generic.BlockToolConversion; 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.*; @@ -254,7 +255,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 { @@ -637,6 +637,8 @@ 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(); @@ -845,6 +847,7 @@ 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 BiomeCave().setThreshold(1.5D).setRangeMult(20).setYLevel(40).setMaxRange(20); //new OreLayer(Blocks.coal_ore, 0.2F).setThreshold(4).setRangeMult(3).setYLevel(70); Compat.handleRailcraftNonsense(); diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index c78c63b76..81bb45c51 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -574,7 +574,7 @@ 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 ) { EntityCreeperNuclear creep = new EntityCreeperNuclear(event.world); diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index 9e8872aec..2af37c069 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -16,6 +16,7 @@ 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; @@ -84,12 +85,14 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent; 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.ScaledResolution; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.client.multiplayer.WorldClient; @@ -103,6 +106,8 @@ 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; @@ -200,6 +205,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); + 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); + 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 /// @@ -1092,4 +1162,21 @@ 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)); + } + } + } } diff --git a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java index 5ab4434c7..1c629ee3f 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerRenderer.java +++ b/src/main/java/com/hbm/main/ModEventHandlerRenderer.java @@ -5,7 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ICustomBlockHighlight; 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; @@ -36,7 +36,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 +78,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 +117,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; diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index bbfea592a..a1b32bf65 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -63,6 +63,7 @@ public class NEIConfig implements IConfigureNEI { } registerHandler(new LiquefactionHandler()); registerHandler(new SolidificationHandler()); + registerHandler(new CokingHandler()); registerHandler(new FractioningHandler()); registerHandler(new BoilingHandler()); registerHandler(new CombinationHandler()); @@ -72,8 +73,6 @@ public class NEIConfig implements IConfigureNEI { //fluids registerHandler(new FluidRecipeHandler()); - - //registerHandler(new ChunkyHandler()); //Some things are even beyond my control...or are they? API.hideItem(ItemBattery.getEmptyBattery(ModItems.memory)); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b442588d3..64c2e280d 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -76,6 +76,7 @@ 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 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")); @@ -401,6 +402,7 @@ 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 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"); @@ -706,6 +708,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")); @@ -715,6 +718,7 @@ 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 lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); @@ -791,6 +795,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"); @@ -803,6 +808,7 @@ 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 lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); @@ -999,6 +1005,7 @@ 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")); ////Texture Entities @@ -1272,6 +1279,7 @@ 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"); //ISBRHs public static final IModelCustom scaffold = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/blocks/scaffold.obj")); diff --git a/src/main/java/com/hbm/packet/PermaSyncHandler.java b/src/main/java/com/hbm/packet/PermaSyncHandler.java index a3db60ecf..6d15243be 100644 --- a/src/main/java/com/hbm/packet/PermaSyncHandler.java +++ b/src/main/java/com/hbm/packet/PermaSyncHandler.java @@ -1,6 +1,11 @@ package com.hbm.packet; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; + import com.hbm.handler.ImpactWorldHandler; +import com.hbm.potion.HbmPotion; import com.hbm.saveddata.TomSaveData; import io.netty.buffer.ByteBuf; @@ -14,6 +19,8 @@ import net.minecraft.world.World; * @author hbm */ public class PermaSyncHandler { + + public static HashSet boykissers = new HashSet(); public static void writePacket(ByteBuf buf, World world, EntityPlayerMP player) { @@ -23,6 +30,18 @@ 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 /// } public static void readPacket(ByteBuf buf, World world, EntityPlayer player) { @@ -33,5 +52,11 @@ 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 /// } } 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..36a19e415 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/item/RenderTrainCargoTram.java @@ -0,0 +1,37 @@ +package com.hbm.render.entity.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.MainRegistry; +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(); + GL11.glTranslated(x, y, z); + + GL11.glRotated( -entity.rotationYaw, 0, 1, 0); + GL11.glRotated(-entity.rotationPitch, 0, 0, 1); + + MainRegistry.proxy.displayTooltip("Render Yaw: " + entity.rotationYaw, 666); + MainRegistry.proxy.displayTooltip("Render Pitch: " + entity.rotationPitch, 667); + + 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/projectile/RenderBullet.java b/src/main/java/com/hbm/render/entity/projectile/RenderBullet.java index 3d11f351c..0c8f15481 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.EntityBulletBase; 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((EntityBulletBase) 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,111 @@ public class RenderBullet extends Render { GL11.glPopMatrix(); } + private void renderTau(EntityBulletBase 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; + + if(bullet.prevRenderY == 0) { + bullet.prevRenderX = pX; + bullet.prevRenderY = pY; + bullet.prevRenderZ = pZ; + } + + double deltaX = bullet.prevRenderX - pX; + double deltaY = bullet.prevRenderY - pY; + double deltaZ = bullet.prevRenderZ - 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 : bullet.trailNodes) { + 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 < bullet.trailNodes.size() - 1; i++) { + final Pair node = bullet.trailNodes.get(i), past = bullet.trailNodes.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); + + bullet.prevRenderX = pX; + bullet.prevRenderY = pY; + bullet.prevRenderZ = 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/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/tileentity/RenderBobble.java b/src/main/java/com/hbm/render/tileentity/RenderBobble.java index 58f96d995..649bd7ce5 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderBobble.java +++ b/src/main/java/com/hbm/render/tileentity/RenderBobble.java @@ -45,6 +45,7 @@ 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"); @Override public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float intero) { @@ -94,6 +95,7 @@ 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; default: bindTexture(ResourceManager.universal); } @@ -311,19 +313,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); 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/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index e8d059972..4426db9ed 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -306,6 +306,7 @@ 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(TileEntityReactorZirnox.class, "tileentity_zirnox"); put(TileEntityZirnoxDestroyed.class, "tileentity_zirnox_destroyed"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 5dd663165..085f1d9ad 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -1,7 +1,8 @@ package com.hbm.tileentity.machine; -import java.util.List; - +import api.hbm.block.ILaserable; +import api.hbm.energy.IEnergyUser; +import api.hbm.fluid.IFluidStandardReceiver; import com.hbm.interfaces.IFluidAcceptor; import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.inventory.fluid.FluidType; @@ -11,10 +12,6 @@ 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,6 +32,8 @@ 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 { @@ -311,50 +310,50 @@ 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()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { return new Object[] {getMaxPower()}; } - @Callback + @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..7285639bd 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreInjector.java @@ -200,19 +200,19 @@ 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()}; } - @Callback + @Callback(direct = true, limit = 2) @Optional.Method(modid = "OpenComputers") public Object[] getSecondFuel(Context context, Arguments args) { return new Object[] {tanks[1].getFill()}; } - @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()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index d3e203e67..51b79e242 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -191,25 +191,25 @@ 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}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getOutput(Context context, Arguments args) { return new Object[] {power}; } - @Callback + @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()}; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 27f060d89..de41bd82a 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -173,25 +173,25 @@ 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}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { return new Object[] {maxPower}; } - @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[] 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 +200,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 +212,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 bc44e2653..3581d35b4 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCrucible.java @@ -545,7 +545,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro int matMaximum = recipeInputRequired * this.recipeZCapacity / recipeContent; int amountStored = getQuantaFromType(recipeStack, stack.material); - return amountStored < matMaximum; + return amountStored < matMaximum && getQuantaFromType(this.recipeStack, null) < this.recipeZCapacity; } @Override @@ -577,6 +577,7 @@ public class TileEntityCrucible extends TileEntityMachineBase implements IGUIPro } 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); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java index 3ca96f521..3295b6b0c 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceCombination.java @@ -215,12 +215,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 diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java index 96e338e2a..d92976d5f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMixer.java @@ -185,9 +185,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), }; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachinePress.java index 354fef320..599287701 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(); } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java index 8812d1714..12ec35a76 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRadiolysis.java @@ -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/TileEntityTesla.java b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java index fcab378f7..f3c930d3e 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityTesla.java @@ -125,14 +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)); - } - double offset = 0; if(source != null && e instanceof EntityPlayer && worldObj.isRemote) 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..7aaf0ed3a 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticReformer.java @@ -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..fa5ee1a72 --- /dev/null +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCoker.java @@ -0,0 +1,286 @@ +package com.hbm.tileentity.machine.oil; + +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); + } + } + } + + for(DirPos pos : getConPos()) { + if(this.tanks[1].getFill() > 0) this.sendFluid(tanks[1].getTankType(), 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/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/TileEntityRBMKAbsorber.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java index 20512c206..69610b38f 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKAbsorber.java @@ -2,8 +2,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; 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; -public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKAbsorber extends TileEntityRBMKBase implements SimpleComponent { @Override public void onMelt(int reduce) { @@ -17,6 +23,24 @@ public class TileEntityRBMKAbsorber extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public String getComponentName() { + return "rbmk_absorber_rod"; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + @Override public ColumnType getConsoleType() { return ColumnType.ABSORBER; 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..bd46536de 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 { @@ -333,35 +332,41 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I return "rbmk_boiler"; } - @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[] getSteam(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSteamMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getWater(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getWaterMax(Context context, Arguments args) { return new Object[] {feed.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) { FluidType type = steam.getTankType(); @@ -370,11 +375,11 @@ 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 = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSteamType(Context context, Arguments args) { FluidType type = steam.getTankType(); @@ -385,6 +390,8 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I else {return new Object[] {"Unknown Error"};} } + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") public Object[] setSteamType(Context context, Arguments args) { int type = args.checkInteger(0); if(type > 3) { 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..8f23e5555 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 = 8) @Optional.Method(modid = "OpenComputers") public Object[] getLevel(Context context, Arguments args) { return new Object[] {getMult() * 100}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getTargetLevel(Context context, Arguments args) { return new Object[] {targetLevel * 100}; } + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } - @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[] 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 = 8) @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/TileEntityRBMKCooler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKCooler.java index 476c0d967..b82bc546b 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 = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[]{heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryo(Context context, Arguments args) { return new Object[]{tank.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getCryoMax(Context context, Arguments args) { return new Object[]{tank.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 4) @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..3ddb02d04 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 { @@ -281,51 +280,57 @@ public class TileEntityRBMKHeater extends TileEntityRBMKSlottedBase implements I return "rbmk_heater"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getHeat(Context context, Arguments args) { return new Object[] {heat}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFill(Context context, Arguments args) { return new Object[] {feed.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFillMax(Context context, Arguments args) { return new Object[] {feed.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getExport(Context context, Arguments args) { return new Object[] {steam.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getExportMax(Context context, Arguments args) { return new Object[] {steam.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getFillType(Context context, Arguments args) { return new Object[] {feed.getTankType().getID()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getExportType(Context context, Arguments args) { return new Object[] {steam.getTankType().getID()}; } - @Callback + @Callback(direct = true, limit = 4) @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().getID(), steam.getTankType().getID(), xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 4) + @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..bbb5ff2e0 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; @@ -227,28 +226,34 @@ public class TileEntityRBMKOutgasser extends TileEntityRBMKSlottedBase implement return "rbmk_outgasser"; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getGas(Context context, Arguments args) { return new Object[] {gas.getFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getGasMax(Context context, Arguments args) { return new Object[] {gas.getMaxFill()}; } - @Callback + @Callback(direct = true, limit = 4) @Optional.Method(modid = "OpenComputers") public Object[] getProgress(Context context, Arguments args) { return new Object[] {progress}; } - @Callback + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 4) @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, xCoord, yCoord, zCoord}; } @Override diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java index ed5b1afc0..91ab94a89 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKReflector.java @@ -2,8 +2,14 @@ package com.hbm.tileentity.machine.rbmk; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; 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; -public class TileEntityRBMKReflector extends TileEntityRBMKBase { +@Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) +public class TileEntityRBMKReflector extends TileEntityRBMKBase implements SimpleComponent { @Override public void onMelt(int reduce) { @@ -16,6 +22,22 @@ public class TileEntityRBMKReflector extends TileEntityRBMKBase { super.onMelt(reduce); } + @Override + public String getComponentName() { + return "rbmk_reflector_rod"; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } @Override public ColumnType getConsoleType() { 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 c9b3f22e8..7c161a15e 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 = 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[] getFluxSlow(Context context, Arguments args) { return new Object[] {fluxSlow}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getFluxFast(Context context, Arguments args) { return new Object[] {fluxFast}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getDepletion(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -412,7 +411,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getXenonPoison(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -421,7 +420,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getCoreHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -430,7 +429,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getSkinHeat(Context context, Arguments args) { if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { @@ -439,7 +438,7 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM return new Object[] {"N/A"}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getInfo(Context context, Arguments args) { Object OC_enrich_buf; @@ -451,7 +450,19 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM OC_enrich_buf = "N/A"; OC_poison_buf = "N/A"; } - return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf}; + return new Object[] {heat, fluxSlow, fluxFast, OC_enrich_buf, OC_poison_buf, ((RBMKRod)this.getBlockType()).moderated, xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 8) + @Optional.Method(modid = "OpenComputers") + public Object[] getModerated(Context context, Arguments args) { + return new Object[] {((RBMKRod)this.getBlockType()).moderated}; + } + + @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/TileEntityRBMKStorage.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKStorage.java index 1806d06a7..11fba927a 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 = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getCoordinates(Context context, Arguments args) { + return new Object[] {xCoord, yCoord, zCoord}; + } + + @Callback(direct = true, limit = 4) + @Optional.Method(modid = "OpenComputers") + public Object[] getHeat(Context context, Arguments args) { + return new Object[] {heat}; + } + + + @Callback(direct = true, limit = 4) + @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 = 4) + @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..d6957ce01 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; @@ -21,14 +17,13 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IPersistentNBT; import com.hbm.tileentity.TileEntityMachineBase; 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; @@ -39,7 +34,13 @@ import net.minecraft.tileentity.TileEntity; 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; @@ -349,4 +350,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/TileEntityMachineBattery.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineBattery.java index 1043fb572..a0463756c 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,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.energy.*; import com.hbm.blocks.machine.MachineBattery; import com.hbm.inventory.container.ContainerMachineBattery; import com.hbm.inventory.gui.GUIMachineBattery; @@ -12,13 +8,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; @@ -36,6 +25,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 { @@ -379,19 +373,19 @@ public class TileEntityMachineBattery extends TileEntityMachineBase implements I 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 } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getEnergyStored(Context context, Arguments args) { return new Object[] {getPower()}; } - @Callback + @Callback(direct = true, limit = 8) @Optional.Method(modid = "OpenComputers") public Object[] getMaxEnergy(Context context, Arguments args) { return new Object[] {getMaxPower()}; } - @Callback + @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/TileEntityMachineFluidTank.java b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java index 0036b77d2..91174eb4a 100644 --- a/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java +++ b/src/main/java/com/hbm/tileentity/machine/storage/TileEntityMachineFluidTank.java @@ -1,9 +1,6 @@ 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; @@ -35,11 +32,14 @@ import com.hbm.tileentity.IRepairable; import com.hbm.tileentity.TileEntityMachineBase; 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; @@ -50,7 +50,12 @@ 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; @@ -438,4 +443,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/turret/TileEntityTurretBaseNT.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java index 568431479..ef43786c1 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretBaseNT.java @@ -272,17 +272,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 diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 5863b119f..3121134f9 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -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/world/feature/BiomeCave.java b/src/main/java/com/hbm/world/feature/BiomeCave.java new file mode 100644 index 000000000..9d297778e --- /dev/null +++ b/src/main/java/com/hbm/world/feature/BiomeCave.java @@ -0,0 +1,126 @@ +package com.hbm.world.feature; + +import java.util.Random; + +import com.hbm.blocks.BlockEnums.EnumBiomeType; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockStalagmite; + +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +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/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index eb0dbc7e7..ad9fb7d74 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -326,6 +326,7 @@ container.leadBox=Sicherheitsbehälter container.machineBoiler=Ölwärmer container.machineCMB=CMB-Stahl Hochofen container.machineCoal=Verbrennungsgenerator +container.machineCoker=Koker-Anlage container.machineCrucible=Schmelztiegel container.machineDiesel=Dieselgenerator container.machineElectricBoiler=Elektrischer Ölwärmer @@ -503,9 +504,11 @@ 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 @@ -601,6 +604,7 @@ hbmfluid.blood=Blut hbmfluid.blood_hot=Heißes Blut hbmfluid.carbondioxide=Kohlenstoffdioxid hbmfluid.chlorine=Chlorgas +hbmfluid.cholesterol=Cholesterinlösung hbmfluid.coalcreosote=Kohleteer-Kreosot hbmfluid.coalgas=Kohlebenzin hbmfluid.coalgas_leaded=Bleikohlebenzin @@ -616,10 +620,13 @@ 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.fracksol=Frackinglösung hbmfluid.gas=Erdgas +hbmfluid.gas_coker=Koker-Gas hbmfluid.gasoline=Benzin hbmfluid.gasoline_leaded=Bleibenzin hbmfluid.heatingoil=Heizöl @@ -646,11 +653,13 @@ 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.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 @@ -1874,6 +1883,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 @@ -2448,6 +2458,7 @@ 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 @@ -2555,6 +2566,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 @@ -3294,7 +3306,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 @@ -3865,6 +3877,8 @@ 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_condenser.name=Dampfkondensierer diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 97050a4fb..e2b518d48 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -618,6 +618,7 @@ container.leadBox=Containment Box container.machineBoiler=Oil Heater container.machineCMB=CMB Steel Furnace container.machineCoal=Combustion Generator +container.machineCoker=Coker Unit container.machineCrucible=Crucible container.machineDiesel=Diesel Generator container.machineElectricBoiler=Electric Oil Heater @@ -908,6 +909,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. @@ -948,9 +950,11 @@ 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 @@ -1011,6 +1015,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 @@ -1077,6 +1082,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 @@ -1170,6 +1176,7 @@ hbmfluid.blood=Blood hbmfluid.blood_hot=Hot Blood hbmfluid.carbondioxide=Carbon Dioxide hbmfluid.chlorine=Chlorine Gas +hbmfluid.cholesterol=Cholesterol Solution hbmfluid.coalcreosote=Coal Tar Creosote hbmfluid.coalgas=Coal Gasoline hbmfluid.coalgas_leaded=Leaded Coal Gasoline @@ -1185,10 +1192,13 @@ 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.fracksol=Fracking Solution hbmfluid.gas=Natural Gas +hbmfluid.gas_coker=Coker Gas hbmfluid.gasoline=Gasoline hbmfluid.gasoline_leaded=Leaded Gasoline hbmfluid.heatingoil=Heating Oil @@ -1215,11 +1225,13 @@ 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.none=None hbmfluid.oil=Crude Oil +hbmfluid.oil_coker=Coker Oil hbmfluid.oxygen=Liquid Oxygen hbmfluid.oxyhydrogen=Oxyhydrogen hbmfluid.pain=Pandemonium(III)tantalite Solution @@ -2513,6 +2525,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 @@ -3124,6 +3137,7 @@ 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 @@ -3266,6 +3280,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 @@ -4087,7 +4102,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 @@ -4678,6 +4693,8 @@ 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_condenser.name=Steam Condenser diff --git a/src/main/resources/assets/hbm/lang/ru_RU.lang b/src/main/resources/assets/hbm/lang/ru_RU.lang index eace51f10..f1d124f2e 100644 --- a/src/main/resources/assets/hbm/lang/ru_RU.lang +++ b/src/main/resources/assets/hbm/lang/ru_RU.lang @@ -236,7 +236,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=Зона действия @@ -641,6 +641,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 +736,7 @@ 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.name.ar15_50=Модификация AR-15 под .50 BMG gun.name.baeAR=Стандартная винтовка британнской армии @@ -804,6 +806,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] @@ -1169,6 +1172,12 @@ hbmfluid.colloid=Коллоидный раствор hbmfluid.mustardgas=Горчичный газ hbmfluid.phosgene=Фосген hbmfluid.iongel=Ионный гель +hbmfluid.gas_coker=Коксовый газ +hbmfluid.naphtha_coker=Коксовая нафта +hbmfluid.oil_coker=Коксовая нефть +hbmfluid.cholesterol=Раствор холестерина +hbmfluid.egg=Растворенное яйцо +hbmfluid.estradiol=Раствор эстрадиола hbmmat.actinium227=Актиний-227 hbmmat.advancedalloy=Продвинутый сплав @@ -2099,6 +2108,9 @@ 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.hadron=Ускоритель частиц tile.hadron_access.name=Терминал доступа ускорителя частиц @@ -3439,6 +3451,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) @@ -4027,6 +4040,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 @@ -4360,6 +4374,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=Препарат "НАКСА" против дигаммы @@ -4415,6 +4430,8 @@ 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=...Оно не отвечает @@ -5100,7 +5117,7 @@ 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.hen.name=Ватцз-пеллета из высокообогащенного нептуния item.watz_pellet.schrabidium.name=Ватцз-пеллета из чистого шрабидия item.watz_pellet_depleted.boron.name=Поглощающая Ватцз-пеллета из бора (Обедненная) item.watz_pellet_depleted.du.name=Поглощающая Ватцз-пеллета из обедненного урана (Обедненная) @@ -5112,7 +5129,7 @@ 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.hen.name=Ватцз-пеллета из высокообогащенного нептуния (Обедненная) item.watz_pellet_depleted.schrabidium.name=Ватцз-пеллета из чистого шрабидия (Обедненная) item.titanium_filter.name=Титановый фильтр diff --git a/src/main/resources/assets/hbm/lang/zh_CN.lang b/src/main/resources/assets/hbm/lang/zh_CN.lang index e880a8360..a8de55f52 100644 --- a/src/main/resources/assets/hbm/lang/zh_CN.lang +++ b/src/main/resources/assets/hbm/lang/zh_CN.lang @@ -358,50 +358,7 @@ book_lore.memo_schrab_nuke.page.1=我们最近的调查使我们了 解了核爆 book_lore.memo_schrab_nuke.page.2=以前只有我们的回旋加速 器真正创造了saralloy. 然而,在我们在埃弗沃彭 的地下拍摄中,在现场的 铀矿中发现了微量的saralloy. 附近所有纯金属铀都发生了 裂变. book_lore.memo_schrab_nuke.page.3=因此,如果有足够多的铀 矿石集中在炸药周围, 甚至可能是一枚富含可裂 变材料的脏弹,人们可以 理论上制造出足够多的 saralloy来人工收集. -book_lore.insanity_1.name=撕裂的书页 -book_lore.insanity_1.author=Ferguson博士 -book_lore.insanity_1.page.1=8月6日$ $几个月,不,几年来, 为了与投资者角力和运营 北半球最大的能源市场而 讨价还价,终于有了回报. -book_lore.insanity_1.page.2=虽然我们不能完全确定 我们到底发现了什么—— 考虑到我们在粒子上进行了 千兆伏特的碰撞,而这些 粒子的记录仍然很差—— 但结果再令人兴奋不过了. -book_lore.insanity_1.page.3=我们还没有为我们发现的 这东西找到一个名字, 也不确定我们是否在寻找 一种新的粒子, 一个通向另一个维度的虫洞, 或者撒旦的肛门, 但我相信我们的公关人员 可以想出一些办法. - -book_lore.insanity_2.name=撕裂的书页 -book_lore.insanity_2.author=Ferguson博士 -book_lore.insanity_2.page.1=8月8日$ $过去几天,我们一直将 “The Thing” (是的,我们现在就是 这么称呼这玩意的) 保持在磁隔离状态。 光谱测试最终搞坏了 我们的光谱仪,但我们 设法获得了一些有用的数据. -book_lore.insanity_2.page.2=首先,这东西像圣诞树 一样发光,你能想到的 每种波长的辐射光子都被 强大的红外日冕所包围。 逻辑上的结论是, 用肉眼看它很可能会杀死你。 -book_lore.insanity_2.page.3=这就引出了一个问题: 这么小的粒子怎么能辐射 出如此巨大的能量? 你隐藏了些什么,小家伙? - -book_lore.insanity_3.name=撕裂的书页 -book_lore.insanity_3.author=Ferguson博士 -book_lore.insanity_3.page.1=8月22日 $ $ 我已经好几天没睡好了。 医生说他什么毛病都找不到。 现在我正在服用各种药物, 但头痛只会加重。 实验室工作人员怀疑这 可能是两周前的事件造成 的污染. -book_lore.insanity_3.page.2=医生说不太可能, 这症状和急性放射病不同。 如果这种情况持续下去, 我可能需要休息一段时间。 实验人员推测, 如果约束磁场下降, 整个综合体建筑群就会变成 蘑菇云. -book_lore.insanity_3.page.3=我不知道行政部门如何 保持冷静,但我没有被 支付足够的薪水来浪费时间. - -book_lore.insanity_4.name=撕裂的书页 -book_lore.insanity_4.author=Ferguson博士 -book_lore.insanity_4.page.1=8月28日 $ $ 他们拒绝了我的请假请求, 过去几天我一直在努力。 头痛越来越严重了。 我也不是唯一有这种感 觉的人。一些实验室的人员 也有类似的情况. -book_lore.insanity_4.page.2=The Thing终于离开了综合体 -真tm棒。 昨天有几套西装运过来, 天知道在哪里。 一名实验室人员扎卡里说, 他们可能正在把密封装置 埋在沙漠里, -book_lore.insanity_4.page.3=慢慢地试图让The Thing 远离文明来“虎头蛇尾 地结束”。要我说我们应 把它射向太空。 不用说,我们的投资者 暂时削减了所有资金。 我应该开始找另一份工作了. - -book_lore.insanity_5.name=撕裂的书页 -book_lore.insanity_5.author=Ferguson博士 -book_lore.insanity_5.page.1=9月11日 $ $ 我正在反复做一场噩梦。 我在一块空地上走来走去, 到处都是这些人, 穿着橡胶服和长着畸形的脸。 总是一样的噩梦, -book_lore.insanity_5.page.2=和我最近交谈过的一个实验 室的同事也做了同样的梦。 与此同时,我的工作已经 相当枯燥了,加速器已经 关闭,所有正在进行的 项目都停止了,我们的 预算也在慢慢减少. -book_lore.insanity_5.page.3=有某种东西在告诉我 The Thing还在某处。 我能感觉到. - -book_lore.insanity_6.name=撕裂的书页 -book_lore.insanity_6.author=Ferguson博士 -book_lore.insanity_6.page.1=10月3日 $ $ 一半的工作人员已经死亡, 其余大部分在ICU。 我的病情在过去几周里 没有改变,无论是好是坏. -book_lore.insanity_6.page.2=然而,现实开始变得越来越 不真实。 有时我会在夜晚仰望天空, 幻想着我们在几个星期前 发现的东西. -book_lore.insanity_6.page.3=我们的分光计吐出的同样 灿烂的深红光泽。 我的医生说这是由这起事件 引起的精神错乱和压力, 也许他是对的, 但药物根本不起作用. - -book_lore.insanity_7.name=撕裂的书页 -book_lore.insanity_7.author=Ferguson博士 -book_lore.insanity_7.page.1=12月12日 $ $ 我已经失业了,但老实说, 我对此有些感激。 我以前的工作场所已经 付之一炬了 ——他们这么说的. -book_lore.insanity_7.page.2=南部几英里处的地震观测站 连续几天记录到持续不断的 地震,而其他任何人都不会 注意到沙漠深处. -book_lore.insanity_7.page.3=我的结论是,这个地方被 诅咒了,让每个人都感到恶心, 然后像埃德加·爱伦·坡 (Edgar Allan Poe)的故事 一样坠入地狱。 谢天谢地. - cannery.f1=[ 按下 F1 思索 ] - cannery.centrifuge=气体离心机 cannery.centrifuge.0=气体离心机可以使用常规流体管道提供流体. cannery.centrifuge.1=大多数配方需要多台离心机. 中间产物不能通过管道运输. @@ -1134,7 +1091,6 @@ gun.name.win20Poly=温彻斯特拉栓步枪(绿) gun.name.win20Satur=D-25A星辉金属温彻斯特来复枪 gun.name.zomg=EMC101棱镜负能量加农炮 - hadron.analysis=分析中... hadron.buttonOn=分析室(如有)开启 hadron.buttonOff=分析室关闭 @@ -1219,6 +1175,8 @@ hbmfluid.diesel_reform=高辛烷值柴油 hbmfluid.egg=蛋溶解液 hbmfluid.estradiol=雌二醇溶液 hbmfluid.diesel_crack=裂化柴油 +hbmfluid.diesel_crack_reform=高辛烷值裂解柴油 +hbmfluid.diesel_reform=高辛烷值柴油 hbmfluid.ethanol=乙醇 hbmfluid.enderjuice=末影液 hbmfluid.fracksol=压裂液 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/vehicles/tram.obj b/src/main/resources/assets/hbm/models/vehicles/tram.obj new file mode 100644 index 000000000..7ec0c8733 --- /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.534091 +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.534091 +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.534091 +vt 0.796296 0.318182 +vt 0.864198 0.534091 +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/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/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/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/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_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/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/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/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/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/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/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/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/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/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/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_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_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_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/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..51683c637 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/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/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